* In theory, we should support getting the video aspect from the current stream.
* Added "Force Aspect Ratio" to Video menu and context menu. * Removed some code duplication in handling the video size messages. * Added track selection sub-menus to the context menu, replacing the IMHO not so important interface settings items. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31302 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
parent
07cad22ee7
commit
1f3691df0f
|
@ -359,7 +359,7 @@ Controller::PlayerActivated(bool active)
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
Controller::GetSize(int *width, int *height)
|
Controller::GetSize(int *width, int *height, float* widthToHeightRatio)
|
||||||
{
|
{
|
||||||
BAutolock _(this);
|
BAutolock _(this);
|
||||||
|
|
||||||
|
@ -368,9 +368,17 @@ Controller::GetSize(int *width, int *height)
|
||||||
// TODO: take aspect ratio into account!
|
// TODO: take aspect ratio into account!
|
||||||
*height = format.u.raw_video.display.line_count;
|
*height = format.u.raw_video.display.line_count;
|
||||||
*width = format.u.raw_video.display.line_width;
|
*width = format.u.raw_video.display.line_width;
|
||||||
|
if (widthToHeightRatio != NULL) {
|
||||||
|
printf("pixel_width_aspect: %d\n", format.u.raw_video.pixel_width_aspect);
|
||||||
|
printf("pixel_height_aspect: %d\n", format.u.raw_video.pixel_height_aspect);
|
||||||
|
*widthToHeightRatio = (float)format.u.raw_video.pixel_width_aspect
|
||||||
|
/ format.u.raw_video.pixel_height_aspect;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
*height = 0;
|
*height = 0;
|
||||||
*width = 0;
|
*width = 0;
|
||||||
|
if (widthToHeightRatio != NULL)
|
||||||
|
*widthToHeightRatio = 0.0f;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -85,7 +85,8 @@ public:
|
||||||
{ return fItem.Get(); }
|
{ return fItem.Get(); }
|
||||||
void PlayerActivated(bool active);
|
void PlayerActivated(bool active);
|
||||||
|
|
||||||
void GetSize(int *width, int *height);
|
void GetSize(int *width, int *height,
|
||||||
|
float* widthToHeightRatio = NULL);
|
||||||
|
|
||||||
int AudioTrackCount();
|
int AudioTrackCount();
|
||||||
int VideoTrackCount();
|
int VideoTrackCount();
|
||||||
|
|
|
@ -66,11 +66,7 @@ enum {
|
||||||
M_FILE_PLAYLIST,
|
M_FILE_PLAYLIST,
|
||||||
M_FILE_CLOSE,
|
M_FILE_CLOSE,
|
||||||
M_FILE_QUIT,
|
M_FILE_QUIT,
|
||||||
M_VIEW_50,
|
M_VIEW_SIZE,
|
||||||
M_VIEW_100,
|
|
||||||
M_VIEW_200,
|
|
||||||
M_VIEW_300,
|
|
||||||
M_VIEW_400,
|
|
||||||
M_TOGGLE_FULLSCREEN,
|
M_TOGGLE_FULLSCREEN,
|
||||||
M_TOGGLE_NO_BORDER,
|
M_TOGGLE_NO_BORDER,
|
||||||
M_TOGGLE_NO_MENU,
|
M_TOGGLE_NO_MENU,
|
||||||
|
@ -562,45 +558,19 @@ MainWin::MessageReceived(BMessage *msg)
|
||||||
_ToggleNoBorderNoMenu();
|
_ToggleNoBorderNoMenu();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case M_VIEW_50:
|
case M_VIEW_SIZE:
|
||||||
|
{
|
||||||
|
int32 size;
|
||||||
|
if (msg->FindInt32("size", &size) == B_OK) {
|
||||||
if (!fHasVideo)
|
if (!fHasVideo)
|
||||||
break;
|
break;
|
||||||
if (fIsFullscreen)
|
if (fIsFullscreen)
|
||||||
_ToggleFullscreen();
|
_ToggleFullscreen();
|
||||||
_ResizeWindow(50);
|
_ResizeWindow(size);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case M_VIEW_100:
|
|
||||||
if (!fHasVideo)
|
|
||||||
break;
|
|
||||||
if (fIsFullscreen)
|
|
||||||
_ToggleFullscreen();
|
|
||||||
_ResizeWindow(100);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case M_VIEW_200:
|
|
||||||
if (!fHasVideo)
|
|
||||||
break;
|
|
||||||
if (fIsFullscreen)
|
|
||||||
_ToggleFullscreen();
|
|
||||||
_ResizeWindow(200);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case M_VIEW_300:
|
|
||||||
if (!fHasVideo)
|
|
||||||
break;
|
|
||||||
if (fIsFullscreen)
|
|
||||||
_ToggleFullscreen();
|
|
||||||
_ResizeWindow(300);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case M_VIEW_400:
|
|
||||||
if (!fHasVideo)
|
|
||||||
break;
|
|
||||||
if (fIsFullscreen)
|
|
||||||
_ToggleFullscreen();
|
|
||||||
_ResizeWindow(400);
|
|
||||||
break;
|
|
||||||
/*
|
/*
|
||||||
case B_ACQUIRE_OVERLAY_LOCK:
|
case B_ACQUIRE_OVERLAY_LOCK:
|
||||||
printf("B_ACQUIRE_OVERLAY_LOCK\n");
|
printf("B_ACQUIRE_OVERLAY_LOCK\n");
|
||||||
|
@ -641,31 +611,31 @@ MainWin::MessageReceived(BMessage *msg)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case M_ASPECT_100000_1:
|
case M_ASPECT_100000_1:
|
||||||
VideoFormatChange(fSourceWidth, fSourceHeight, 1.0, 1.0);
|
VideoFormatChange(fSourceWidth, fSourceHeight, 1.0);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case M_ASPECT_106666_1:
|
case M_ASPECT_106666_1:
|
||||||
VideoFormatChange(fSourceWidth, fSourceHeight, 1.06666, 1.0);
|
VideoFormatChange(fSourceWidth, fSourceHeight, 1.06666);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case M_ASPECT_109091_1:
|
case M_ASPECT_109091_1:
|
||||||
VideoFormatChange(fSourceWidth, fSourceHeight, 1.09091, 1.0);
|
VideoFormatChange(fSourceWidth, fSourceHeight, 1.09091);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case M_ASPECT_141176_1:
|
case M_ASPECT_141176_1:
|
||||||
VideoFormatChange(fSourceWidth, fSourceHeight, 1.41176, 1.0);
|
VideoFormatChange(fSourceWidth, fSourceHeight, 1.41176);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case M_ASPECT_720_576:
|
case M_ASPECT_720_576:
|
||||||
VideoFormatChange(720, 576, 1.06666, 1.0);
|
VideoFormatChange(720, 576, 1.06666);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case M_ASPECT_704_576:
|
case M_ASPECT_704_576:
|
||||||
VideoFormatChange(704, 576, 1.09091, 1.0);
|
VideoFormatChange(704, 576, 1.09091);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case M_ASPECT_544_576:
|
case M_ASPECT_544_576:
|
||||||
VideoFormatChange(544, 576, 1.41176, 1.0);
|
VideoFormatChange(544, 576, 1.41176);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case M_SET_PLAYLIST_POSITION:
|
case M_SET_PLAYLIST_POSITION:
|
||||||
|
@ -825,25 +795,17 @@ MainWin::ShowPlaylistWindow()
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
MainWin::VideoFormatChange(int width, int height, float width_scale,
|
MainWin::VideoFormatChange(int width, int height, float widthToHeightRatio)
|
||||||
float height_scale)
|
|
||||||
{
|
{
|
||||||
// called when video format or aspect ratio changes
|
// called when video format or aspect ratio changes
|
||||||
|
|
||||||
printf("VideoFormatChange enter: width %d, height %d, width_scale %.6f, "
|
printf("VideoFormatChange enter: width %d, height %d, "
|
||||||
"height_scale %.6f\n", width, height, width_scale, height_scale);
|
"widthToHeightRatio %.6f\n", width, height, widthToHeightRatio);
|
||||||
|
|
||||||
if (width_scale < 1.0 && height_scale >= 1.0) {
|
|
||||||
width_scale = 1.0 / width_scale;
|
|
||||||
height_scale = 1.0 / height_scale;
|
|
||||||
printf("inverting! new values: width_scale %.6f, height_scale %.6f\n",
|
|
||||||
width_scale, height_scale);
|
|
||||||
}
|
|
||||||
|
|
||||||
fSourceWidth = width;
|
fSourceWidth = width;
|
||||||
fSourceHeight = height;
|
fSourceHeight = height;
|
||||||
fWidthScale = width_scale;
|
fWidthScale = widthToHeightRatio;
|
||||||
fHeightScale = height_scale;
|
fHeightScale = 1.0f;
|
||||||
|
|
||||||
FrameResized(Bounds().Width(), Bounds().Height());
|
FrameResized(Bounds().Width(), Bounds().Height());
|
||||||
|
|
||||||
|
@ -876,21 +838,18 @@ MainWin::_SetupWindow()
|
||||||
{
|
{
|
||||||
// printf("MainWin::_SetupWindow\n");
|
// printf("MainWin::_SetupWindow\n");
|
||||||
// Populate the track menus
|
// Populate the track menus
|
||||||
_SetupTrackMenus();
|
_SetupTrackMenus(fAudioTrackMenu, fVideoTrackMenu);
|
||||||
// Enable both if a file was loaded
|
// Enable both if a file was loaded
|
||||||
fAudioTrackMenu->SetEnabled(fHasFile);
|
fAudioTrackMenu->SetEnabled(fHasFile);
|
||||||
fVideoTrackMenu->SetEnabled(fHasFile);
|
fVideoTrackMenu->SetEnabled(fHasFile);
|
||||||
|
|
||||||
fVideoMenu->SetEnabled(fHasVideo);
|
fVideoMenu->SetEnabled(fHasVideo);
|
||||||
fAudioMenu->SetEnabled(fHasAudio);
|
fAudioMenu->SetEnabled(fHasAudio);
|
||||||
// fDebugMenu->SetEnabled(fHasVideo);
|
|
||||||
int previousSourceWidth = fSourceWidth;
|
int previousSourceWidth = fSourceWidth;
|
||||||
int previousSourceHeight = fSourceHeight;
|
int previousSourceHeight = fSourceHeight;
|
||||||
if (fHasVideo) {
|
if (fHasVideo) {
|
||||||
fController->GetSize(&fSourceWidth, &fSourceHeight);
|
fController->GetSize(&fSourceWidth, &fSourceHeight, &fWidthScale);
|
||||||
fWidthScale = 1.0;
|
|
||||||
fHeightScale = 1.0;
|
fHeightScale = 1.0;
|
||||||
// TODO: implement aspect ratio
|
|
||||||
} else {
|
} else {
|
||||||
fSourceWidth = 0;
|
fSourceWidth = 0;
|
||||||
fSourceHeight = 0;
|
fSourceHeight = 0;
|
||||||
|
@ -916,16 +875,15 @@ MainWin::_CreateMenu()
|
||||||
fPlaylistMenu = new BMenu("Playlist"B_UTF8_ELLIPSIS);
|
fPlaylistMenu = new BMenu("Playlist"B_UTF8_ELLIPSIS);
|
||||||
fAudioMenu = new BMenu("Audio");
|
fAudioMenu = new BMenu("Audio");
|
||||||
fVideoMenu = new BMenu("Video");
|
fVideoMenu = new BMenu("Video");
|
||||||
|
fVideoAspectMenu = new BMenu("Aspect Ratio");
|
||||||
fSettingsMenu = new BMenu("Settings");
|
fSettingsMenu = new BMenu("Settings");
|
||||||
fAudioTrackMenu = new BMenu("Track");
|
fAudioTrackMenu = new BMenu("Track");
|
||||||
fVideoTrackMenu = new BMenu("Track");
|
fVideoTrackMenu = new BMenu("Track");
|
||||||
// fDebugMenu = new BMenu("Debug");
|
|
||||||
|
|
||||||
fMenuBar->AddItem(fFileMenu);
|
fMenuBar->AddItem(fFileMenu);
|
||||||
fMenuBar->AddItem(fAudioMenu);
|
fMenuBar->AddItem(fAudioMenu);
|
||||||
fMenuBar->AddItem(fVideoMenu);
|
fMenuBar->AddItem(fVideoMenu);
|
||||||
fMenuBar->AddItem(fSettingsMenu);
|
fMenuBar->AddItem(fSettingsMenu);
|
||||||
// fMenuBar->AddItem(fDebugMenu);
|
|
||||||
|
|
||||||
fFileMenu->AddItem(new BMenuItem("New Player"B_UTF8_ELLIPSIS,
|
fFileMenu->AddItem(new BMenuItem("New Player"B_UTF8_ELLIPSIS,
|
||||||
new BMessage(M_FILE_NEWPLAYER), 'N'));
|
new BMessage(M_FILE_NEWPLAYER), 'N'));
|
||||||
|
@ -960,21 +918,39 @@ MainWin::_CreateMenu()
|
||||||
|
|
||||||
fVideoMenu->AddItem(fVideoTrackMenu);
|
fVideoMenu->AddItem(fVideoTrackMenu);
|
||||||
fVideoMenu->AddSeparatorItem();
|
fVideoMenu->AddSeparatorItem();
|
||||||
fVideoMenu->AddItem(new BMenuItem("50% scale",
|
BMessage* resizeMessage = new BMessage(M_VIEW_SIZE);
|
||||||
new BMessage(M_VIEW_50), '0'));
|
resizeMessage->AddInt32("size", 50);
|
||||||
fVideoMenu->AddItem(new BMenuItem("100% scale",
|
fVideoMenu->AddItem(new BMenuItem("50% scale", resizeMessage, '0'));
|
||||||
new BMessage(M_VIEW_100), '1'));
|
|
||||||
fVideoMenu->AddItem(new BMenuItem("200% scale",
|
resizeMessage = new BMessage(M_VIEW_SIZE);
|
||||||
new BMessage(M_VIEW_200), '2'));
|
resizeMessage->AddInt32("size", 100);
|
||||||
fVideoMenu->AddItem(new BMenuItem("300% scale",
|
fVideoMenu->AddItem(new BMenuItem("100% scale", resizeMessage, '1'));
|
||||||
new BMessage(M_VIEW_300), '3'));
|
|
||||||
fVideoMenu->AddItem(new BMenuItem("400% scale",
|
resizeMessage = new BMessage(M_VIEW_SIZE);
|
||||||
new BMessage(M_VIEW_400), '4'));
|
resizeMessage->AddInt32("size", 200);
|
||||||
|
fVideoMenu->AddItem(new BMenuItem("200% scale", resizeMessage, '2'));
|
||||||
|
|
||||||
|
resizeMessage = new BMessage(M_VIEW_SIZE);
|
||||||
|
resizeMessage->AddInt32("size", 300);
|
||||||
|
fVideoMenu->AddItem(new BMenuItem("300% scale", resizeMessage, '3'));
|
||||||
|
|
||||||
|
resizeMessage = new BMessage(M_VIEW_SIZE);
|
||||||
|
resizeMessage->AddInt32("size", 400);
|
||||||
|
fVideoMenu->AddItem(new BMenuItem("400% scale", resizeMessage, '4'));
|
||||||
|
|
||||||
fVideoMenu->AddSeparatorItem();
|
fVideoMenu->AddSeparatorItem();
|
||||||
|
|
||||||
fVideoMenu->AddItem(new BMenuItem("Full Screen",
|
fVideoMenu->AddItem(new BMenuItem("Full Screen",
|
||||||
new BMessage(M_TOGGLE_FULLSCREEN), 'F'));
|
new BMessage(M_TOGGLE_FULLSCREEN), 'F'));
|
||||||
fVideoMenu->AddItem(new BMenuItem("Keep Aspect Ratio",
|
|
||||||
new BMessage(M_TOGGLE_KEEP_ASPECT_RATIO), 'K'));
|
fVideoMenu->AddSeparatorItem();
|
||||||
|
|
||||||
|
_SetupVideoAspectItems(fVideoAspectMenu);
|
||||||
|
fVideoMenu->AddItem(fVideoAspectMenu);
|
||||||
|
item = new BMenuItem("Keep Aspect Ratio",
|
||||||
|
new BMessage(M_TOGGLE_KEEP_ASPECT_RATIO), 'K');
|
||||||
|
item->SetMarked(fKeepAspectRatio);
|
||||||
|
fVideoMenu->AddItem(item);
|
||||||
|
|
||||||
fSettingsMenu->AddItem(new BMenuItem("No Menu",
|
fSettingsMenu->AddItem(new BMenuItem("No Menu",
|
||||||
new BMessage(M_TOGGLE_NO_MENU), 'M'));
|
new BMessage(M_TOGGLE_NO_MENU), 'M'));
|
||||||
|
@ -989,29 +965,34 @@ MainWin::_CreateMenu()
|
||||||
new BMessage(M_SETTINGS), 'S');
|
new BMessage(M_SETTINGS), 'S');
|
||||||
fSettingsMenu->AddItem(item);
|
fSettingsMenu->AddItem(item);
|
||||||
item->SetTarget(be_app);
|
item->SetTarget(be_app);
|
||||||
|
|
||||||
// fDebugMenu->AddItem(new BMenuItem("pixel aspect ratio 1.00000:1",
|
|
||||||
// new BMessage(M_ASPECT_100000_1)));
|
|
||||||
// fDebugMenu->AddItem(new BMenuItem("pixel aspect ratio 1.06666:1",
|
|
||||||
// new BMessage(M_ASPECT_106666_1)));
|
|
||||||
// fDebugMenu->AddItem(new BMenuItem("pixel aspect ratio 1.09091:1",
|
|
||||||
// new BMessage(M_ASPECT_109091_1)));
|
|
||||||
// fDebugMenu->AddItem(new BMenuItem("pixel aspect ratio 1.41176:1",
|
|
||||||
// new BMessage(M_ASPECT_141176_1)));
|
|
||||||
// fDebugMenu->AddItem(new BMenuItem("force 720 x 576, display aspect 4:3",
|
|
||||||
// new BMessage(M_ASPECT_720_576)));
|
|
||||||
// fDebugMenu->AddItem(new BMenuItem("force 704 x 576, display aspect 4:3",
|
|
||||||
// new BMessage(M_ASPECT_704_576)));
|
|
||||||
// fDebugMenu->AddItem(new BMenuItem("force 544 x 576, display aspect 4:3",
|
|
||||||
// new BMessage(M_ASPECT_544_576)));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
MainWin::_SetupTrackMenus()
|
MainWin::_SetupVideoAspectItems(BMenu* menu)
|
||||||
{
|
{
|
||||||
fAudioTrackMenu->RemoveItems(0, fAudioTrackMenu->CountItems(), true);
|
menu->AddItem(new BMenuItem("1 : 1",
|
||||||
fVideoTrackMenu->RemoveItems(0, fVideoTrackMenu->CountItems(), true);
|
new BMessage(M_ASPECT_100000_1)));
|
||||||
|
menu->AddItem(new BMenuItem("1.06666 : 1",
|
||||||
|
new BMessage(M_ASPECT_106666_1)));
|
||||||
|
menu->AddItem(new BMenuItem("1.09091 : 1",
|
||||||
|
new BMessage(M_ASPECT_109091_1)));
|
||||||
|
menu->AddItem(new BMenuItem("1.41176 : 1",
|
||||||
|
new BMessage(M_ASPECT_141176_1)));
|
||||||
|
menu->AddItem(new BMenuItem("Force 720 x 576, Aspect 4:3",
|
||||||
|
new BMessage(M_ASPECT_720_576)));
|
||||||
|
menu->AddItem(new BMenuItem("Force 704 x 576, Aspect 4:3",
|
||||||
|
new BMessage(M_ASPECT_704_576)));
|
||||||
|
menu->AddItem(new BMenuItem("Force 544 x 576, Aspect 4:3",
|
||||||
|
new BMessage(M_ASPECT_544_576)));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
MainWin::_SetupTrackMenus(BMenu* audioTrackMenu, BMenu* videoTrackMenu)
|
||||||
|
{
|
||||||
|
audioTrackMenu->RemoveItems(0, audioTrackMenu->CountItems(), true);
|
||||||
|
videoTrackMenu->RemoveItems(0, videoTrackMenu->CountItems(), true);
|
||||||
|
|
||||||
char s[100];
|
char s[100];
|
||||||
|
|
||||||
|
@ -1022,11 +1003,11 @@ MainWin::_SetupTrackMenus()
|
||||||
BMenuItem* item = new BMenuItem(s,
|
BMenuItem* item = new BMenuItem(s,
|
||||||
new BMessage(M_SELECT_AUDIO_TRACK + i));
|
new BMessage(M_SELECT_AUDIO_TRACK + i));
|
||||||
item->SetMarked(i == current);
|
item->SetMarked(i == current);
|
||||||
fAudioTrackMenu->AddItem(item);
|
audioTrackMenu->AddItem(item);
|
||||||
}
|
}
|
||||||
if (!count) {
|
if (!count) {
|
||||||
fAudioTrackMenu->AddItem(new BMenuItem("none", new BMessage(M_DUMMY)));
|
audioTrackMenu->AddItem(new BMenuItem("none", new BMessage(M_DUMMY)));
|
||||||
fAudioTrackMenu->ItemAt(0)->SetMarked(true);
|
audioTrackMenu->ItemAt(0)->SetMarked(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1037,11 +1018,11 @@ MainWin::_SetupTrackMenus()
|
||||||
BMenuItem* item = new BMenuItem(s,
|
BMenuItem* item = new BMenuItem(s,
|
||||||
new BMessage(M_SELECT_VIDEO_TRACK + i));
|
new BMessage(M_SELECT_VIDEO_TRACK + i));
|
||||||
item->SetMarked(i == current);
|
item->SetMarked(i == current);
|
||||||
fVideoTrackMenu->AddItem(item);
|
videoTrackMenu->AddItem(item);
|
||||||
}
|
}
|
||||||
if (!count) {
|
if (!count) {
|
||||||
fVideoTrackMenu->AddItem(new BMenuItem("none", new BMessage(M_DUMMY)));
|
videoTrackMenu->AddItem(new BMenuItem("none", new BMessage(M_DUMMY)));
|
||||||
fVideoTrackMenu->ItemAt(0)->SetMarked(true);
|
videoTrackMenu->ItemAt(0)->SetMarked(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1240,44 +1221,41 @@ MainWin::_ShowContextMenu(const BPoint &screen_point)
|
||||||
new BMessage(M_TOGGLE_FULLSCREEN), 'F'));
|
new BMessage(M_TOGGLE_FULLSCREEN), 'F'));
|
||||||
item->SetMarked(fIsFullscreen);
|
item->SetMarked(fIsFullscreen);
|
||||||
item->SetEnabled(fHasVideo);
|
item->SetEnabled(fHasVideo);
|
||||||
|
|
||||||
|
BMenu* aspectSubMenu = new BMenu("Aspect Ratio");
|
||||||
|
_SetupVideoAspectItems(aspectSubMenu);
|
||||||
|
aspectSubMenu->SetTargetForItems(this);
|
||||||
|
menu->AddItem(item = new BMenuItem(aspectSubMenu));
|
||||||
|
item->SetEnabled(fHasVideo);
|
||||||
|
|
||||||
menu->AddItem(item = new BMenuItem("Keep Aspect Ratio",
|
menu->AddItem(item = new BMenuItem("Keep Aspect Ratio",
|
||||||
new BMessage(M_TOGGLE_KEEP_ASPECT_RATIO), 'K'));
|
new BMessage(M_TOGGLE_KEEP_ASPECT_RATIO), 'K'));
|
||||||
item->SetMarked(fKeepAspectRatio);
|
item->SetMarked(fKeepAspectRatio);
|
||||||
item->SetEnabled(fHasVideo);
|
item->SetEnabled(fHasVideo);
|
||||||
|
|
||||||
menu->AddSeparatorItem();
|
menu->AddSeparatorItem();
|
||||||
menu->AddItem(item = new BMenuItem("No Menu",
|
|
||||||
new BMessage(M_TOGGLE_NO_MENU), 'M'));
|
// Add track selector menus
|
||||||
item->SetMarked(fNoMenu);
|
BMenu* audioTrackMenu = new BMenu("Audio Track");
|
||||||
menu->AddItem(item = new BMenuItem("No Border",
|
BMenu* videoTrackMenu = new BMenu("Video Track");
|
||||||
new BMessage(M_TOGGLE_NO_BORDER), 'B'));
|
_SetupTrackMenus(audioTrackMenu, videoTrackMenu);
|
||||||
item->SetMarked(fNoBorder);
|
|
||||||
menu->AddItem(item = new BMenuItem("Always on Top",
|
audioTrackMenu->SetTargetForItems(this);
|
||||||
new BMessage(M_TOGGLE_ALWAYS_ON_TOP), 'T'));
|
videoTrackMenu->SetTargetForItems(this);
|
||||||
item->SetMarked(fAlwaysOnTop);
|
|
||||||
|
menu->AddItem(item = new BMenuItem(audioTrackMenu));
|
||||||
|
item->SetEnabled(fHasAudio);
|
||||||
|
|
||||||
|
menu->AddItem(item = new BMenuItem(videoTrackMenu));
|
||||||
|
item->SetEnabled(fHasVideo);
|
||||||
|
|
||||||
menu->AddSeparatorItem();
|
menu->AddSeparatorItem();
|
||||||
|
|
||||||
menu->AddItem(new BMenuItem("About " NAME B_UTF8_ELLIPSIS,
|
menu->AddItem(new BMenuItem("About " NAME B_UTF8_ELLIPSIS,
|
||||||
new BMessage(B_ABOUT_REQUESTED)));
|
new BMessage(B_ABOUT_REQUESTED)));
|
||||||
menu->AddSeparatorItem();
|
menu->AddSeparatorItem();
|
||||||
menu->AddItem(new BMenuItem("Quit", new BMessage(M_FILE_QUIT), 'Q'));
|
menu->AddItem(new BMenuItem("Quit", new BMessage(M_FILE_QUIT), 'Q'));
|
||||||
|
|
||||||
menu->AddSeparatorItem();
|
|
||||||
menu->AddItem(new BMenuItem("pixel aspect ratio 1.00000:1",
|
|
||||||
new BMessage(M_ASPECT_100000_1)));
|
|
||||||
menu->AddItem(new BMenuItem("pixel aspect ratio 1.06666:1",
|
|
||||||
new BMessage(M_ASPECT_106666_1)));
|
|
||||||
menu->AddItem(new BMenuItem("pixel aspect ratio 1.09091:1",
|
|
||||||
new BMessage(M_ASPECT_109091_1)));
|
|
||||||
menu->AddItem(new BMenuItem("pixel aspect ratio 1.41176:1",
|
|
||||||
new BMessage(M_ASPECT_141176_1)));
|
|
||||||
menu->AddItem(new BMenuItem("force 720 x 576, display aspect 4:3",
|
|
||||||
new BMessage(M_ASPECT_720_576)));
|
|
||||||
menu->AddItem(new BMenuItem("force 704 x 576, display aspect 4:3",
|
|
||||||
new BMessage(M_ASPECT_704_576)));
|
|
||||||
menu->AddItem(new BMenuItem("force 544 x 576, display aspect 4:3",
|
|
||||||
new BMessage(M_ASPECT_544_576)));
|
|
||||||
|
|
||||||
menu->SetTargetForItems(this);
|
menu->SetTargetForItems(this);
|
||||||
BRect r(screen_point.x - 5, screen_point.y - 5, screen_point.x + 5,
|
BRect r(screen_point.x - 5, screen_point.y - 5, screen_point.x + 5,
|
||||||
screen_point.y + 5);
|
screen_point.y + 5);
|
||||||
|
@ -1480,7 +1458,7 @@ MainWin::_ToggleFullscreen()
|
||||||
|
|
||||||
fVideoView->SetFullscreen(fIsFullscreen);
|
fVideoView->SetFullscreen(fIsFullscreen);
|
||||||
|
|
||||||
_MarkSettingsItem(M_TOGGLE_FULLSCREEN, fIsFullscreen);
|
_MarkItem(fSettingsMenu, M_TOGGLE_FULLSCREEN, fIsFullscreen);
|
||||||
|
|
||||||
printf("_ToggleFullscreen leave\n");
|
printf("_ToggleFullscreen leave\n");
|
||||||
}
|
}
|
||||||
|
@ -1505,7 +1483,7 @@ MainWin::_ToggleNoControls()
|
||||||
ResizeBy(0, fControlsHeight);
|
ResizeBy(0, fControlsHeight);
|
||||||
}
|
}
|
||||||
|
|
||||||
_MarkSettingsItem(M_TOGGLE_NO_CONTROLS, fNoControls);
|
_MarkItem(fSettingsMenu, M_TOGGLE_NO_CONTROLS, fNoControls);
|
||||||
|
|
||||||
printf("_ToggleNoControls leave\n");
|
printf("_ToggleNoControls leave\n");
|
||||||
}
|
}
|
||||||
|
@ -1532,7 +1510,7 @@ MainWin::_ToggleNoMenu()
|
||||||
ResizeBy(0, fMenuBarHeight);
|
ResizeBy(0, fMenuBarHeight);
|
||||||
}
|
}
|
||||||
|
|
||||||
_MarkSettingsItem(M_TOGGLE_NO_MENU, fNoMenu);
|
_MarkItem(fSettingsMenu, M_TOGGLE_NO_MENU, fNoMenu);
|
||||||
|
|
||||||
printf("_ToggleNoMenu leave\n");
|
printf("_ToggleNoMenu leave\n");
|
||||||
}
|
}
|
||||||
|
@ -1544,7 +1522,7 @@ MainWin::_ToggleNoBorder()
|
||||||
fNoBorder = !fNoBorder;
|
fNoBorder = !fNoBorder;
|
||||||
SetLook(fNoBorder ? B_BORDERED_WINDOW_LOOK : B_TITLED_WINDOW_LOOK);
|
SetLook(fNoBorder ? B_BORDERED_WINDOW_LOOK : B_TITLED_WINDOW_LOOK);
|
||||||
|
|
||||||
_MarkSettingsItem(M_TOGGLE_NO_BORDER, fNoBorder);
|
_MarkItem(fSettingsMenu, M_TOGGLE_NO_BORDER, fNoBorder);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1554,7 +1532,7 @@ MainWin::_ToggleAlwaysOnTop()
|
||||||
fAlwaysOnTop = !fAlwaysOnTop;
|
fAlwaysOnTop = !fAlwaysOnTop;
|
||||||
SetFeel(fAlwaysOnTop ? B_FLOATING_ALL_WINDOW_FEEL : B_NORMAL_WINDOW_FEEL);
|
SetFeel(fAlwaysOnTop ? B_FLOATING_ALL_WINDOW_FEEL : B_NORMAL_WINDOW_FEEL);
|
||||||
|
|
||||||
_MarkSettingsItem(M_TOGGLE_ALWAYS_ON_TOP, fAlwaysOnTop);
|
_MarkItem(fSettingsMenu, M_TOGGLE_ALWAYS_ON_TOP, fAlwaysOnTop);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1564,7 +1542,7 @@ MainWin::_ToggleKeepAspectRatio()
|
||||||
fKeepAspectRatio = !fKeepAspectRatio;
|
fKeepAspectRatio = !fKeepAspectRatio;
|
||||||
FrameResized(Bounds().Width(), Bounds().Height());
|
FrameResized(Bounds().Width(), Bounds().Height());
|
||||||
|
|
||||||
_MarkSettingsItem(M_TOGGLE_KEEP_ASPECT_RATIO, fKeepAspectRatio);
|
_MarkItem(fVideoMenu, M_TOGGLE_KEEP_ASPECT_RATIO, fKeepAspectRatio);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1647,9 +1625,9 @@ MainWin::_MarkPlaylistItem(int32 index)
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
MainWin::_MarkSettingsItem(uint32 command, bool mark)
|
MainWin::_MarkItem(BMenu* menu, uint32 command, bool mark)
|
||||||
{
|
{
|
||||||
if (BMenuItem* item = fSettingsMenu->FindItem(command))
|
if (BMenuItem* item = menu->FindItem(command))
|
||||||
item->SetMarked(mark);
|
item->SetMarked(mark);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -59,14 +59,16 @@ public:
|
||||||
void ShowSettingsWindow();
|
void ShowSettingsWindow();
|
||||||
|
|
||||||
void VideoFormatChange(int width, int height,
|
void VideoFormatChange(int width, int height,
|
||||||
float widthScale, float heightScale);
|
float widthToHeightRatio);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void _RefsReceived(BMessage* message);
|
void _RefsReceived(BMessage* message);
|
||||||
|
|
||||||
void _SetupWindow();
|
void _SetupWindow();
|
||||||
void _CreateMenu();
|
void _CreateMenu();
|
||||||
void _SetupTrackMenus();
|
void _SetupVideoAspectItems(BMenu* menu);
|
||||||
|
void _SetupTrackMenus(BMenu* audioTrackMenu,
|
||||||
|
BMenu* videoTrackMenu);
|
||||||
void _SetWindowSizeLimits();
|
void _SetWindowSizeLimits();
|
||||||
void _ResizeWindow(int percent);
|
void _ResizeWindow(int percent);
|
||||||
void _ResizeVideoView(int x, int y, int width,
|
void _ResizeVideoView(int x, int y, int width,
|
||||||
|
@ -94,7 +96,8 @@ private:
|
||||||
int32 index);
|
int32 index);
|
||||||
void _RemovePlaylistItem(int32 index);
|
void _RemovePlaylistItem(int32 index);
|
||||||
void _MarkPlaylistItem(int32 index);
|
void _MarkPlaylistItem(int32 index);
|
||||||
void _MarkSettingsItem(uint32 command, bool mark);
|
void _MarkItem(BMenu* menu, uint32 command,
|
||||||
|
bool mark);
|
||||||
|
|
||||||
void _AdoptGlobalSettings();
|
void _AdoptGlobalSettings();
|
||||||
|
|
||||||
|
@ -108,11 +111,11 @@ private:
|
||||||
BMenu* fFileMenu;
|
BMenu* fFileMenu;
|
||||||
BMenu* fAudioMenu;
|
BMenu* fAudioMenu;
|
||||||
BMenu* fVideoMenu;
|
BMenu* fVideoMenu;
|
||||||
|
BMenu* fVideoAspectMenu;
|
||||||
BMenu* fAudioTrackMenu;
|
BMenu* fAudioTrackMenu;
|
||||||
BMenu* fVideoTrackMenu;
|
BMenu* fVideoTrackMenu;
|
||||||
BMenu* fSettingsMenu;
|
BMenu* fSettingsMenu;
|
||||||
BMenu* fPlaylistMenu;
|
BMenu* fPlaylistMenu;
|
||||||
BMenu* fDebugMenu;
|
|
||||||
|
|
||||||
bool fHasFile;
|
bool fHasFile;
|
||||||
bool fHasVideo;
|
bool fHasVideo;
|
||||||
|
|
|
@ -103,11 +103,13 @@ VideoView::Pulse()
|
||||||
BPoint where;
|
BPoint where;
|
||||||
uint32 buttons;
|
uint32 buttons;
|
||||||
GetMouse(&where, &buttons, false);
|
GetMouse(&where, &buttons, false);
|
||||||
|
if (buttons == 0) {
|
||||||
set_mouse_position((int32)where.x, (int32)where.y);
|
set_mouse_position((int32)where.x, (int32)where.y);
|
||||||
// hide the mouse cursor until the user moves it
|
// hide the mouse cursor until the user moves it
|
||||||
be_app->ObscureCursor();
|
be_app->ObscureCursor();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
Loading…
Reference in New Issue