# HG changeset patch # User nplourde # Date 1117064339 0 # Node ID f197f4a60b20e625dcac980d8f7694ee84924b6f # Parent dff7e79b194fb0ed5e1594b62c9d7ef5247b9245 create menu diff -r dff7e79b194f -r f197f4a60b20 libvo/vo_macosx.h --- a/libvo/vo_macosx.h Wed May 25 16:29:53 2005 +0000 +++ b/libvo/vo_macosx.h Wed May 25 23:38:59 2005 +0000 @@ -30,6 +30,18 @@ GLfloat upperLeft[2]; BOOL mouseHide; + + //menu command id + NSMenuItem *kQuitCmd; + NSMenuItem *kHalfScreenCmd; + NSMenuItem *kNormalScreenCmd; + NSMenuItem *kDoubleScreenCmd; + NSMenuItem *kFullScreenCmd; + NSMenuItem *kKeepAspectCmd; + NSMenuItem *kAspectOrgCmd; + NSMenuItem *kAspectFullCmd; + NSMenuItem *kAspectWideCmd; + NSMenuItem *kPanScanCmd; } - (BOOL) acceptsFirstResponder; @@ -38,6 +50,8 @@ //window & rendering - (void) initOpenGLView; +- (void) initMenu; +- (void) menuAction:(id)sender; - (void) prepareOpenGL; - (void) render; - (void) reshape; diff -r dff7e79b194f -r f197f4a60b20 libvo/vo_macosx.m --- a/libvo/vo_macosx.m Wed May 25 16:29:53 2005 +0000 +++ b/libvo/vo_macosx.m Wed May 25 23:38:59 2005 +0000 @@ -301,6 +301,9 @@ NSRect frame = [self frame]; CVReturn error = kCVReturnSuccess; + //init menu + [self initMenu]; + //create OpenGL Context glContext = [[NSOpenGLContext alloc] initWithFormat:[NSOpenGLView defaultPixelFormat] shareContext:nil]; @@ -345,6 +348,166 @@ } /* + Init Menu +*/ +- (void)initMenu +{ + NSMenu *menu; + NSMenuItem *menuItem; + + [NSApp setMainMenu:[[NSMenu alloc] init]]; + +//Create Movie Menu + menu = [[NSMenu alloc] initWithTitle:@"Movie"]; + menuItem = [[NSMenuItem alloc] initWithTitle:@"Half Size" action:@selector(menuAction:) keyEquivalent:@"0"]; [menu addItem:menuItem]; + kHalfScreenCmd = menuItem; + menuItem = [[NSMenuItem alloc] initWithTitle:@"Normal Size" action:@selector(menuAction:) keyEquivalent:@"1"]; [menu addItem:menuItem]; + kNormalScreenCmd = menuItem; + menuItem = [[NSMenuItem alloc] initWithTitle:@"Double Size" action:@selector(menuAction:) keyEquivalent:@"2"]; [menu addItem:menuItem]; + kDoubleScreenCmd = menuItem; + menuItem = [[NSMenuItem alloc] initWithTitle:@"Full Size" action:@selector(menuAction:) keyEquivalent:@"f"]; [menu addItem:menuItem]; + kFullScreenCmd = menuItem; + menuItem = [NSMenuItem separatorItem]; [menu addItem:menuItem]; + + NSMenu *aspectMenu; + aspectMenu = [[NSMenu alloc] initWithTitle:@"Aspect Ratio"]; + menuItem = [[NSMenuItem alloc] initWithTitle:@"Keep" action:@selector(menuAction:) keyEquivalent:@""]; [aspectMenu addItem:menuItem]; + if(vo_keepaspect) [menuItem setState:NSOnState]; + kKeepAspectCmd = menuItem; + menuItem = [[NSMenuItem alloc] initWithTitle:@"Pan-Scan" action:@selector(menuAction:) keyEquivalent:@""]; [aspectMenu addItem:menuItem]; + if(vo_panscan) [menuItem setState:NSOnState]; + kPanScanCmd = menuItem; + menuItem = [NSMenuItem separatorItem]; [aspectMenu addItem:menuItem]; + menuItem = [[NSMenuItem alloc] initWithTitle:@"Original" action:@selector(menuAction:) keyEquivalent:@""]; [aspectMenu addItem:menuItem]; + kAspectOrgCmd = menuItem; + menuItem = [[NSMenuItem alloc] initWithTitle:@"4:3" action:@selector(menuAction:) keyEquivalent:@""]; [aspectMenu addItem:menuItem]; + kAspectFullCmd = menuItem; + menuItem = [[NSMenuItem alloc] initWithTitle:@"16:9" action:@selector(menuAction:) keyEquivalent:@""]; [aspectMenu addItem:menuItem]; + kAspectWideCmd = menuItem; + menuItem = [[NSMenuItem alloc] initWithTitle:@"Aspect Ratio" action:nil keyEquivalent:@""]; + [menuItem setSubmenu:aspectMenu]; + [menu addItem:menuItem]; + [aspectMenu release]; + + //Add to menubar + menuItem = [[NSMenuItem alloc] initWithTitle:@"Movie" action:nil keyEquivalent:@""]; + [menuItem setSubmenu:menu]; + [[NSApp mainMenu] addItem:menuItem]; + +//Create Window Menu + menu = [[NSMenu alloc] initWithTitle:@"Window"]; + + menuItem = [[NSMenuItem alloc] initWithTitle:@"Minimize" action:@selector(performMiniaturize:) keyEquivalent:@"m"]; [menu addItem:menuItem]; + menuItem = [[NSMenuItem alloc] initWithTitle:@"Zoom" action:@selector(performZoom:) keyEquivalent:@""]; [menu addItem:menuItem]; + + //Add to menubar + menuItem = [[NSMenuItem alloc] initWithTitle:@"Window" action:nil keyEquivalent:@""]; + [menuItem setSubmenu:menu]; + [[NSApp mainMenu] addItem:menuItem]; + [NSApp setWindowsMenu:menu]; + + [menu release]; + [menuItem release]; +} + +/* + Menu Action + */ +- (void)menuAction:(id)sender +{ + uint32_t d_width; + uint32_t d_height; + NSRect frame; + + aspect((int *)&d_width, (int *)&d_height,A_NOZOOM); + //if(sender == kQuitCmd) + + if(sender == kHalfScreenCmd) + { + if(isFullscreen) { + vo_fs = (!(vo_fs)); [self fullscreen:YES]; + } + + frame.size.width = (d_width/2); + frame.size.height = ((d_width/movie_aspect)/2); + [window setContentSize: frame.size]; + [self reshape]; + } + if(sender == kNormalScreenCmd) + { + if(isFullscreen) { + vo_fs = (!(vo_fs)); [self fullscreen:YES]; + } + + frame.size.width = d_width; + frame.size.height = d_width/movie_aspect; + [window setContentSize: frame.size]; + [self reshape]; + } + if(sender == kDoubleScreenCmd) + { + if(isFullscreen) { + vo_fs = (!(vo_fs)); [self fullscreen:YES]; + } + + frame.size.width = d_width*2; + frame.size.height = (d_width/movie_aspect)*2; + [window setContentSize: frame.size]; + [self reshape]; + } + if(sender == kFullScreenCmd) + { + vo_fs = (!(vo_fs)); + [self fullscreen:YES]; + } + + if(sender == kKeepAspectCmd) + { + vo_keepaspect = (!(vo_keepaspect)); + if(vo_keepaspect) + [kKeepAspectCmd setState:NSOnState]; + else + [kKeepAspectCmd setState:NSOffState]; + } + + if(sender == kPanScanCmd) + { + vo_panscan = (!(vo_panscan)); + if(vo_panscan) + [kPanScanCmd setState:NSOnState]; + else + [kPanScanCmd setState:NSOffState]; + } + + if(sender == kAspectOrgCmd) + { + movie_aspect = old_movie_aspect; + frame.size.width = d_width; + frame.size.height = d_width/movie_aspect; + [window setContentSize: frame.size]; + [self reshape]; + } + + if(sender == kAspectFullCmd) + { + movie_aspect = 4.0f/3.0f; + frame.size.width = d_width; + frame.size.height = d_width/movie_aspect; + [window setContentSize: frame.size]; + [self reshape]; + } + + if(sender == kAspectWideCmd) + { + movie_aspect = 16.0f/9.0f; + frame.size.width = d_width; + frame.size.height = d_width/movie_aspect; + [window setContentSize: frame.size]; + [self reshape]; + } +} + +/* Setup OpenGL */ - (void)prepareOpenGL