annotate libvo/vo_quartz.c @ 14742:76d461a061df

Unified colorkey code for vo xv and vo xvmc. Made the code also more flexible. Colorkey drawing is now by default done as proposed by Marko Macek. Patch also approved by iive.
author al
date Sun, 20 Feb 2005 22:43:25 +0000
parents 779230cb313d
children 21252725b639
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
1 /*
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
2 vo_quartz.c
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
3
13693
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
4 by Nicolas Plourde <nicolasplourde@gmail.com>
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
5
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
6 Copyright (c) Nicolas Plourde - April 2004
12414
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
7
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
8 YUV support Copyright (C) 2004 Romain Dolbeau <romain@dolbeau.org>
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
9
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
10 MPlayer Mac OSX Quartz video out module.
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
11
13707
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
12 todo: -screen overlay output
13818
9f707a805967 window now save is old position when going in fullscreen or while using resize preset
nplourde
parents: 13796
diff changeset
13 -clear window background after live resize
9f707a805967 window now save is old position when going in fullscreen or while using resize preset
nplourde
parents: 13796
diff changeset
14 -fit osd in black bar when available
13124
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
15 -RGB32 lost HW accel in fullscreen
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
16 -(add sugestion here)
12120
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
17 */
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
18
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
19 //SYS
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
20 #include <stdio.h>
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
21
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
22 //OSX
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
23 #include <Carbon/Carbon.h>
12414
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
24 #include <QuickTime/QuickTime.h>
12120
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
25
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
26 //MPLAYER
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
27 #include "config.h"
12414
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
28 #include "fastmemcpy.h"
12120
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
29 #include "video_out.h"
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
30 #include "video_out_internal.h"
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
31 #include "aspect.h"
12414
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
32 #include "mp_msg.h"
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
33 #include "m_option.h"
12120
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
34
13787
e047e70a9767 Handle "xxx.h" vs "../xxx.h" include paths in a consistent way.
diego
parents: 13779
diff changeset
35 #include "input/input.h"
e047e70a9767 Handle "xxx.h" vs "../xxx.h" include paths in a consistent way.
diego
parents: 13779
diff changeset
36 #include "input/mouse.h"
12120
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
37
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
38 #include "vo_quartz.h"
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
39
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
40 static vo_info_t info =
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
41 {
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
42 "Mac OSX (Quartz)",
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
43 "quartz",
12414
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
44 "Nicolas Plourde <nicolasplourde@hotmail.com>, Romain Dolbeau <romain@dolbeau.org>",
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
45 ""
12120
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
46 };
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
47
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
48 LIBVO_EXTERN(quartz)
12120
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
49
12414
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
50 static uint32_t image_depth;
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
51 static uint32_t image_format;
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
52 static uint32_t image_size;
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
53 static uint32_t image_buffer_size;
12432
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
54 static char *image_data;
12414
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
55
12432
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
56 static ImageSequence seqId;
12414
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
57 static CodecType image_qtcodec;
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
58 static PlanarPixmapInfoYUV420 *P = NULL;
12424
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
59 static struct
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
60 {
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
61 ImageDescriptionHandle desc;
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
62 Handle extension_colr;
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
63 Handle extension_fiel;
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
64 Handle extension_clap;
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
65 Handle extension_pasp;
12414
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
66 } yuv_qt_stuff;
12432
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
67 static MatrixRecord matrix;
12414
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
68 static int EnterMoviesDone = 0;
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
69 static int get_image_done = 0;
12120
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
70
12912
1f6bb2356d18 add var vo_rootwin and -rootwin switch for mac osx
nplourde
parents: 12889
diff changeset
71 extern int vo_rootwin;
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
72 extern int vo_ontop;
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
73 extern int vo_fs; // user want fullscreen
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
74 static int vo_quartz_fs; // we are in fullscreen
13791
4f08a94405ad autodetect proper monitor aspect
nplourde
parents: 13788
diff changeset
75 extern float monitor_aspect;
13792
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
76 extern int vo_keepaspect; //keep aspect ratio when resizing
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
77 extern float movie_aspect;
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
78 static float old_movie_aspect;
13795
ac35862cbc16 enable pan-scan + menu option
nplourde
parents: 13793
diff changeset
79 extern float vo_panscan;
12120
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
80
12826
fb55f94f3001 Add Window Level Key, Can switch mode with T key
nplourde
parents: 12785
diff changeset
81 static int winLevel = 1;
fb55f94f3001 Add Window Level Key, Can switch mode with T key
nplourde
parents: 12785
diff changeset
82 int levelList[] =
fb55f94f3001 Add Window Level Key, Can switch mode with T key
nplourde
parents: 12785
diff changeset
83 {
fb55f94f3001 Add Window Level Key, Can switch mode with T key
nplourde
parents: 12785
diff changeset
84 kCGDesktopWindowLevelKey,
fb55f94f3001 Add Window Level Key, Can switch mode with T key
nplourde
parents: 12785
diff changeset
85 kCGNormalWindowLevelKey,
fb55f94f3001 Add Window Level Key, Can switch mode with T key
nplourde
parents: 12785
diff changeset
86 kCGScreenSaverWindowLevelKey
fb55f94f3001 Add Window Level Key, Can switch mode with T key
nplourde
parents: 12785
diff changeset
87 };
fb55f94f3001 Add Window Level Key, Can switch mode with T key
nplourde
parents: 12785
diff changeset
88
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
89 static int int_pause = 0;
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
90 static float winAlpha = 1;
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
91
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
92 static int device_width;
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
93 static int device_height;
12519
12a87d539f6d choose fullscreen device with suboption device_id=#
nplourde
parents: 12517
diff changeset
94 static int device_id;
12120
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
95
13788
ced61fa921ca let you choose fullscreen resolution for slower system
nplourde
parents: 13787
diff changeset
96 static short fs_res_x=0;
ced61fa921ca let you choose fullscreen resolution for slower system
nplourde
parents: 13787
diff changeset
97 static short fs_res_y=0;
ced61fa921ca let you choose fullscreen resolution for slower system
nplourde
parents: 13787
diff changeset
98
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
99 static WindowRef theWindow = NULL;
12826
fb55f94f3001 Add Window Level Key, Can switch mode with T key
nplourde
parents: 12785
diff changeset
100 static WindowGroupRef winGroup = NULL;
13124
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
101 static CGContextRef context;
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
102 static CGRect bounds;
13840
62af31e1bdc8 more panscan fix
nplourde
parents: 13818
diff changeset
103 static GDHandle deviceHdl;
13124
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
104
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
105 static CGDataProviderRef dataProviderRef;
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
106 static CGImageAlphaInfo alphaInfo;
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
107 static CGImageRef image;
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
108
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
109 static Rect imgRect; // size of the original image (unscaled)
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
110 static Rect dstRect; // size of the displayed image (after scaling)
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
111 static Rect winRect; // size of the window containg the displayed image (include padding)
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
112 static Rect oldWinRect; // size of the window containg the displayed image (include padding) when NOT in FS mode
12519
12a87d539f6d choose fullscreen device with suboption device_id=#
nplourde
parents: 12517
diff changeset
113 static Rect deviceRect; // size of the display device
13840
62af31e1bdc8 more panscan fix
nplourde
parents: 13818
diff changeset
114 static Rect oldWinBounds;
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
115
13792
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
116 static MenuRef windMenu;
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
117 static MenuRef movMenu;
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
118 static MenuRef aspectMenu;
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
119
13855
493a0dd78307 set aqua default theme
nplourde
parents: 13841
diff changeset
120 static int border = 15;
13693
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
121 enum
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
122 {
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
123 kQuitCmd = 1,
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
124 kHalfScreenCmd = 2,
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
125 kNormalScreenCmd = 3,
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
126 kDoubleScreenCmd = 4,
13792
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
127 kFullScreenCmd = 5,
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
128 kKeepAspectCmd = 6,
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
129 kAspectOrgCmd = 7,
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
130 kAspectFullCmd = 8,
13795
ac35862cbc16 enable pan-scan + menu option
nplourde
parents: 13793
diff changeset
131 kAspectWideCmd = 9,
ac35862cbc16 enable pan-scan + menu option
nplourde
parents: 13793
diff changeset
132 kPanScanCmd = 10
13693
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
133 };
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
134
13787
e047e70a9767 Handle "xxx.h" vs "../xxx.h" include paths in a consistent way.
diego
parents: 13779
diff changeset
135 #include "osdep/keycodes.h"
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
136 extern void mplayer_put_key(int code);
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
137
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
138 extern void vo_draw_text(int dxs,int dys,void (*draw_alpha)(int x0,int y0, int w,int h, unsigned char* src, unsigned char *srca, int stride));
12120
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
139
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
140 //PROTOTYPE/////////////////////////////////////////////////////////////////
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
141 void window_resized();
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
142 void window_ontop();
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
143 void window_fullscreen();
13840
62af31e1bdc8 more panscan fix
nplourde
parents: 13818
diff changeset
144 void window_panscan();
12120
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
145
12886
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
146 static inline int convert_key(UInt32 key, UInt32 charcode)
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
147 {
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
148 switch(key)
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
149 {
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
150 case QZ_IBOOK_ENTER:
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
151 case QZ_RETURN: return KEY_ENTER;
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
152 case QZ_ESCAPE: return KEY_ESC;
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
153 case QZ_BACKSPACE: return KEY_BACKSPACE;
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
154 case QZ_LALT: return KEY_BACKSPACE;
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
155 case QZ_LCTRL: return KEY_BACKSPACE;
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
156 case QZ_LSHIFT: return KEY_BACKSPACE;
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
157 case QZ_F1: return KEY_F+1;
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
158 case QZ_F2: return KEY_F+2;
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
159 case QZ_F3: return KEY_F+3;
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
160 case QZ_F4: return KEY_F+4;
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
161 case QZ_F5: return KEY_F+5;
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
162 case QZ_F6: return KEY_F+6;
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
163 case QZ_F7: return KEY_F+7;
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
164 case QZ_F8: return KEY_F+8;
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
165 case QZ_F9: return KEY_F+9;
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
166 case QZ_F10: return KEY_F+10;
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
167 case QZ_F11: return KEY_F+11;
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
168 case QZ_F12: return KEY_F+12;
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
169 case QZ_INSERT: return KEY_INSERT;
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
170 case QZ_DELETE: return KEY_DELETE;
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
171 case QZ_HOME: return KEY_HOME;
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
172 case QZ_END: return KEY_END;
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
173 case QZ_KP_PLUS: return '+';
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
174 case QZ_KP_MINUS: return '-';
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
175 case QZ_TAB: return KEY_TAB;
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
176 case QZ_PAGEUP: return KEY_PAGE_UP;
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
177 case QZ_PAGEDOWN: return KEY_PAGE_DOWN;
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
178 case QZ_UP: return KEY_UP;
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
179 case QZ_DOWN: return KEY_DOWN;
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
180 case QZ_LEFT: return KEY_LEFT;
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
181 case QZ_RIGHT: return KEY_RIGHT;
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
182 case QZ_KP_MULTIPLY: return '*';
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
183 case QZ_KP_DIVIDE: return '/';
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
184 case QZ_KP_ENTER: return KEY_BACKSPACE;
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
185 case QZ_KP_PERIOD: return KEY_KPDEC;
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
186 case QZ_KP0: return KEY_KP0;
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
187 case QZ_KP1: return KEY_KP1;
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
188 case QZ_KP2: return KEY_KP2;
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
189 case QZ_KP3: return KEY_KP3;
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
190 case QZ_KP4: return KEY_KP4;
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
191 case QZ_KP5: return KEY_KP5;
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
192 case QZ_KP6: return KEY_KP6;
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
193 case QZ_KP7: return KEY_KP7;
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
194 case QZ_KP8: return KEY_KP8;
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
195 case QZ_KP9: return KEY_KP9;
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
196 default: return charcode;
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
197 }
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
198 }
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
199
13707
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
200 static OSStatus MainWindowEventHandler(EventHandlerCallRef nextHandler, EventRef event, void *userData);
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
201 static OSStatus MainWindowCommandHandler(EventHandlerCallRef nextHandler, EventRef event, void *userData);
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
202
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
203 static void draw_alpha(int x0, int y0, int w, int h, unsigned char *src, unsigned char *srca, int stride)
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
204 {
12424
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
205 switch (image_format)
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
206 {
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
207 case IMGFMT_RGB32:
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
208 vo_draw_alpha_rgb32(w,h,src,srca,stride,image_data+4*(y0*imgRect.right+x0),4*imgRect.right);
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
209 break;
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
210 case IMGFMT_YV12:
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
211 case IMGFMT_IYUV:
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
212 case IMGFMT_I420:
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
213 vo_draw_alpha_yv12(w,h,src,srca,stride, ((char*)P) + P->componentInfoY.offset + x0 + y0 * imgRect.right, imgRect.right);
12424
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
214 break;
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
215 case IMGFMT_UYVY:
12517
4c42b1fb183f uyvy osd support
nplourde
parents: 12487
diff changeset
216 vo_draw_alpha_uyvy(w,h,src,srca,stride,((char*)P) + (x0 + y0 * imgRect.right) * 2,imgRect.right*2);
12424
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
217 break;
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
218 case IMGFMT_YUY2:
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
219 vo_draw_alpha_yuy2(w,h,src,srca,stride,((char*)P) + (x0 + y0 * imgRect.right) * 2,imgRect.right*2);
12424
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
220 break;
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
221 }
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
222 }
12120
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
223
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
224 //default window event handler
13707
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
225 static OSStatus MainWindowEventHandler(EventHandlerCallRef nextHandler, EventRef event, void *userData)
12120
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
226 {
12624
730fc470a30c added more key to keyboard event
nplourde
parents: 12623
diff changeset
227 OSStatus result = noErr;
12460
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
228 UInt32 class = GetEventClass (event);
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
229 UInt32 kind = GetEventKind (event);
12624
730fc470a30c added more key to keyboard event
nplourde
parents: 12623
diff changeset
230
730fc470a30c added more key to keyboard event
nplourde
parents: 12623
diff changeset
231 result = CallNextEventHandler(nextHandler, event);
13693
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
232
13712
f6ef5a0ad7e4 removed duplicate case and fixed aspect ratio for window zoom feature
nplourde
parents: 13707
diff changeset
233 if(class == kEventClassKeyboard)
12460
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
234 {
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
235 char macCharCodes;
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
236 UInt32 macKeyCode;
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
237 UInt32 macKeyModifiers;
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
238
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
239 GetEventParameter(event, kEventParamKeyMacCharCodes, typeChar, NULL, sizeof(macCharCodes), NULL, &macCharCodes);
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
240 GetEventParameter(event, kEventParamKeyCode, typeUInt32, NULL, sizeof(macKeyCode), NULL, &macKeyCode);
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
241 GetEventParameter(event, kEventParamKeyModifiers, typeUInt32, NULL, sizeof(macKeyModifiers), NULL, &macKeyModifiers);
13693
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
242
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
243 if(macKeyModifiers != 256)
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
244 {
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
245 if (kind == kEventRawKeyRepeat || kind == kEventRawKeyDown)
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
246 {
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
247 int key = convert_key(macKeyCode, macCharCodes);
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
248 if(key != -1)
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
249 mplayer_put_key(key);
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
250 }
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
251 }
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
252 else if(macKeyModifiers == 256)
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
253 {
13693
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
254 switch(macCharCodes)
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
255 {
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
256 case '[': SetWindowAlpha(theWindow, winAlpha-=0.05); break;
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
257 case ']': SetWindowAlpha(theWindow, winAlpha+=0.05); break;
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
258 }
12460
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
259 }
12886
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
260 else
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
261 result = eventNotHandledErr;
12460
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
262 }
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
263 else if(class == kEventClassMouse)
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
264 {
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
265 WindowPtr tmpWin;
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
266 Point mousePos;
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
267
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
268 GetEventParameter(event, kEventParamMouseLocation, typeQDPoint, 0, sizeof(Point), 0, &mousePos);
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
269
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
270 switch (kind)
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
271 {
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
272 case kEventMouseDown:
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
273 {
12460
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
274 EventMouseButton button;
13719
43ecd6a73ec0 move variable declaration at beginning of block
nplourde
parents: 13712
diff changeset
275 short part;
43ecd6a73ec0 move variable declaration at beginning of block
nplourde
parents: 13712
diff changeset
276
12460
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
277 GetEventParameter(event, kEventParamMouseButton, typeMouseButton, 0, sizeof(EventMouseButton), 0, &button);
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
278
13719
43ecd6a73ec0 move variable declaration at beginning of block
nplourde
parents: 13712
diff changeset
279 part = FindWindow(mousePos,&tmpWin);
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
280
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
281 if(part == inMenuBar)
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
282 {
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
283 MenuSelect(mousePos);
12460
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
284 HiliteMenu(0);
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
285 }
12460
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
286 else if(part == inContent)
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
287 {
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
288 switch(button)
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
289 {
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
290 case 1: mplayer_put_key(MOUSE_BTN0);break;
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
291 case 2: mplayer_put_key(MOUSE_BTN2);break;
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
292 case 3: mplayer_put_key(MOUSE_BTN1);break;
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
293
12624
730fc470a30c added more key to keyboard event
nplourde
parents: 12623
diff changeset
294 default:result = eventNotHandledErr;break;
12460
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
295 }
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
296 }
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
297 }
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
298 break;
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
299
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
300 case kEventMouseWheelMoved:
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
301 {
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
302 int wheel;
13719
43ecd6a73ec0 move variable declaration at beginning of block
nplourde
parents: 13712
diff changeset
303 short part;
43ecd6a73ec0 move variable declaration at beginning of block
nplourde
parents: 13712
diff changeset
304
12460
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
305 GetEventParameter(event, kEventParamMouseWheelDelta, typeSInt32, 0, sizeof(int), 0, &wheel);
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
306
13719
43ecd6a73ec0 move variable declaration at beginning of block
nplourde
parents: 13712
diff changeset
307 part = FindWindow(mousePos,&tmpWin);
12460
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
308
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
309 if(part == inContent)
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
310 {
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
311 if(wheel > 0)
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
312 mplayer_put_key(MOUSE_BTN3);
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
313 else
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
314 mplayer_put_key(MOUSE_BTN4);
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
315 }
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
316 }
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
317 break;
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
318
12624
730fc470a30c added more key to keyboard event
nplourde
parents: 12623
diff changeset
319 default:result = eventNotHandledErr;break;
12460
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
320 }
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
321 }
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
322
12624
730fc470a30c added more key to keyboard event
nplourde
parents: 12623
diff changeset
323 return result;
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
324 }
12120
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
325
13707
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
326 //default window command handler
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
327 static OSStatus MainWindowCommandHandler(EventHandlerCallRef nextHandler, EventRef event, void *userData)
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
328 {
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
329 OSStatus result = noErr;
13722
1bd6bd13193d fixed typo
nplourde
parents: 13719
diff changeset
330 uint32_t d_width;
1bd6bd13193d fixed typo
nplourde
parents: 13719
diff changeset
331 uint32_t d_height;
13707
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
332 UInt32 class = GetEventClass (event);
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
333 UInt32 kind = GetEventKind (event);
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
334
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
335 result = CallNextEventHandler(nextHandler, event);
13712
f6ef5a0ad7e4 removed duplicate case and fixed aspect ratio for window zoom feature
nplourde
parents: 13707
diff changeset
336
f6ef5a0ad7e4 removed duplicate case and fixed aspect ratio for window zoom feature
nplourde
parents: 13707
diff changeset
337 aspect(&d_width,&d_height,A_NOZOOM);
13707
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
338
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
339 if(class == kEventClassCommand)
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
340 {
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
341 HICommand theHICommand;
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
342 GetEventParameter( event, kEventParamDirectObject, typeHICommand, NULL, sizeof( HICommand ), NULL, &theHICommand );
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
343
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
344 switch ( theHICommand.commandID )
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
345 {
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
346 case kHICommandQuit:
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
347 mplayer_put_key(KEY_ESC);
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
348 break;
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
349
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
350 case kHalfScreenCmd:
13734
efefaa53aaf9 Enable live resize
nplourde
parents: 13722
diff changeset
351 if(vo_quartz_fs)
efefaa53aaf9 Enable live resize
nplourde
parents: 13722
diff changeset
352 {
efefaa53aaf9 Enable live resize
nplourde
parents: 13722
diff changeset
353 vo_fs = (!(vo_fs)); window_fullscreen();
efefaa53aaf9 Enable live resize
nplourde
parents: 13722
diff changeset
354 }
efefaa53aaf9 Enable live resize
nplourde
parents: 13722
diff changeset
355
13796
28c874e660d1 resize preset now respect movie aspect
nplourde
parents: 13795
diff changeset
356 SizeWindow(theWindow, (d_width/2), ((d_width/movie_aspect)/2)+border, 1);
13707
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
357 window_resized();
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
358 break;
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
359
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
360 case kNormalScreenCmd:
13734
efefaa53aaf9 Enable live resize
nplourde
parents: 13722
diff changeset
361 if(vo_quartz_fs)
efefaa53aaf9 Enable live resize
nplourde
parents: 13722
diff changeset
362 {
efefaa53aaf9 Enable live resize
nplourde
parents: 13722
diff changeset
363 vo_fs = (!(vo_fs)); window_fullscreen();
efefaa53aaf9 Enable live resize
nplourde
parents: 13722
diff changeset
364 }
efefaa53aaf9 Enable live resize
nplourde
parents: 13722
diff changeset
365
13796
28c874e660d1 resize preset now respect movie aspect
nplourde
parents: 13795
diff changeset
366 SizeWindow(theWindow, d_width, (d_width/movie_aspect)+border, 1);
13707
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
367 window_resized();
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
368 break;
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
369
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
370 case kDoubleScreenCmd:
13734
efefaa53aaf9 Enable live resize
nplourde
parents: 13722
diff changeset
371 if(vo_quartz_fs)
efefaa53aaf9 Enable live resize
nplourde
parents: 13722
diff changeset
372 {
efefaa53aaf9 Enable live resize
nplourde
parents: 13722
diff changeset
373 vo_fs = (!(vo_fs)); window_fullscreen();
efefaa53aaf9 Enable live resize
nplourde
parents: 13722
diff changeset
374 }
efefaa53aaf9 Enable live resize
nplourde
parents: 13722
diff changeset
375
13796
28c874e660d1 resize preset now respect movie aspect
nplourde
parents: 13795
diff changeset
376 SizeWindow(theWindow, (d_width*2), ((d_width/movie_aspect)*2)+border, 1);
13707
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
377 window_resized();
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
378 break;
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
379
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
380 case kFullScreenCmd:
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
381 vo_fs = (!(vo_fs)); window_fullscreen();
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
382 break;
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
383
13792
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
384 case kKeepAspectCmd:
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
385 vo_keepaspect = (!(vo_keepaspect));
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
386 CheckMenuItem (aspectMenu, 1, vo_keepaspect);
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
387 break;
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
388
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
389 case kAspectOrgCmd:
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
390 movie_aspect = old_movie_aspect;
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
391 SizeWindow(theWindow, dstRect.right, (dstRect.right/movie_aspect)+border,1);
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
392 window_resized();
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
393 break;
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
394
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
395 case kAspectFullCmd:
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
396 movie_aspect = 4.0f/3.0f;
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
397 SizeWindow(theWindow, dstRect.right, (dstRect.right/movie_aspect)+border,1);
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
398 window_resized();
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
399 break;
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
400
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
401 case kAspectWideCmd:
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
402 movie_aspect = 16.0f/9.0f;
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
403 SizeWindow(theWindow, dstRect.right, (dstRect.right/movie_aspect)+border,1);
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
404 window_resized();
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
405 break;
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
406
13795
ac35862cbc16 enable pan-scan + menu option
nplourde
parents: 13793
diff changeset
407 case kPanScanCmd:
13840
62af31e1bdc8 more panscan fix
nplourde
parents: 13818
diff changeset
408 vo_panscan = (!(vo_panscan));
62af31e1bdc8 more panscan fix
nplourde
parents: 13818
diff changeset
409 CheckMenuItem (aspectMenu, 2, vo_panscan);
13795
ac35862cbc16 enable pan-scan + menu option
nplourde
parents: 13793
diff changeset
410 break;
ac35862cbc16 enable pan-scan + menu option
nplourde
parents: 13793
diff changeset
411
13707
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
412 default:
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
413 result = eventNotHandledErr;
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
414 break;
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
415 }
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
416 }
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
417 else if(class == kEventClassWindow)
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
418 {
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
419 WindowRef window;
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
420 Rect rectPort = {0,0,0,0};
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
421
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
422 GetEventParameter(event, kEventParamDirectObject, typeWindowRef, NULL, sizeof(WindowRef), NULL, &window);
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
423
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
424 if(window)
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
425 {
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
426 GetPortBounds(GetWindowPort(window), &rectPort);
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
427 }
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
428
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
429 switch (kind)
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
430 {
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
431 case kEventWindowClosed:
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
432 theWindow = NULL;
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
433 mplayer_put_key(KEY_ESC);
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
434 break;
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
435
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
436 //resize window
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
437 case kEventWindowBoundsChanged:
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
438 window_resized();
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
439 flip_page();
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
440 break;
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
441
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
442 default:
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
443 result = eventNotHandledErr;
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
444 break;
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
445 }
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
446 }
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
447
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
448 return result;
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
449 }
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
450
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
451 static void quartz_CreateWindow(uint32_t d_width, uint32_t d_height, WindowAttributes windowAttrs)
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
452 {
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
453 CFStringRef titleKey;
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
454 CFStringRef windowTitle;
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
455 OSStatus result;
13792
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
456
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
457 MenuItemIndex index;
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
458 CFStringRef movMenuTitle;
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
459 CFStringRef aspMenuTitle;
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
460
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
461 SetRect(&winRect, 0, 0, d_width, d_height);
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
462 SetRect(&oldWinRect, 0, 0, d_width, d_height);
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
463 SetRect(&dstRect, 0, 0, d_width, d_height);
13693
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
464
14081
866623c7ec87 clear menubar before adding new menu
nplourde
parents: 13909
diff changeset
465 //Clear Menu Bar
866623c7ec87 clear menubar before adding new menu
nplourde
parents: 13909
diff changeset
466 ClearMenuBar();
866623c7ec87 clear menubar before adding new menu
nplourde
parents: 13909
diff changeset
467
13792
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
468 //Create Window Menu
13693
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
469 CreateStandardWindowMenu(0, &windMenu);
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
470 InsertMenu(windMenu, 0);
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
471
13792
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
472 //Create Movie Menu
13693
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
473 CreateNewMenu (1004, 0, &movMenu);
13792
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
474 movMenuTitle = CFSTR("Movie");
13693
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
475 SetMenuTitleWithCFString(movMenu, movMenuTitle);
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
476
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
477 AppendMenuItemTextWithCFString(movMenu, CFSTR("Half Size"), 0, kHalfScreenCmd, &index);
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
478 SetMenuItemCommandKey(movMenu, index, 0, '0');
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
479
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
480 AppendMenuItemTextWithCFString(movMenu, CFSTR("Normal Size"), 0, kNormalScreenCmd, &index);
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
481 SetMenuItemCommandKey(movMenu, index, 0, '1');
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
482
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
483 AppendMenuItemTextWithCFString(movMenu, CFSTR("Double Size"), 0, kDoubleScreenCmd, &index);
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
484 SetMenuItemCommandKey(movMenu, index, 0, '2');
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
485
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
486 AppendMenuItemTextWithCFString(movMenu, CFSTR("Full Size"), 0, kFullScreenCmd, &index);
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
487 SetMenuItemCommandKey(movMenu, index, 0, 'F');
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
488
13792
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
489 AppendMenuItemTextWithCFString(movMenu, NULL, kMenuItemAttrSeparator, NULL, &index);
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
490
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
491 AppendMenuItemTextWithCFString(movMenu, CFSTR("Aspect Ratio"), 0, NULL, &index);
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
492
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
493 ////Create Aspect Ratio Sub Menu
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
494 CreateNewMenu (0, 0, &aspectMenu);
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
495 aspMenuTitle = CFSTR("Aspect Ratio");
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
496 SetMenuTitleWithCFString(aspectMenu, aspMenuTitle);
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
497 SetMenuItemHierarchicalMenu(movMenu, 6, aspectMenu);
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
498
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
499 AppendMenuItemTextWithCFString(aspectMenu, CFSTR("Keep"), 0, kKeepAspectCmd, &index);
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
500 CheckMenuItem (aspectMenu, 1, vo_keepaspect);
13795
ac35862cbc16 enable pan-scan + menu option
nplourde
parents: 13793
diff changeset
501 AppendMenuItemTextWithCFString(aspectMenu, CFSTR("Pan-Scan"), 0, kPanScanCmd, &index);
13840
62af31e1bdc8 more panscan fix
nplourde
parents: 13818
diff changeset
502 CheckMenuItem (aspectMenu, 2, vo_panscan);
13792
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
503 AppendMenuItemTextWithCFString(aspectMenu, NULL, kMenuItemAttrSeparator, NULL, &index);
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
504 AppendMenuItemTextWithCFString(aspectMenu, CFSTR("Original"), 0, kAspectOrgCmd, &index);
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
505 AppendMenuItemTextWithCFString(aspectMenu, CFSTR("4:3"), 0, kAspectFullCmd, &index);
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
506 AppendMenuItemTextWithCFString(aspectMenu, CFSTR("16:9"), 0, kAspectWideCmd, &index);
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
507
13693
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
508 InsertMenu(movMenu, GetMenuID(windMenu)); //insert before Window menu
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
509
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
510 DrawMenuBar();
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
511
13693
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
512 //create window
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
513 CreateNewWindow(kDocumentWindowClass, windowAttrs, &winRect, &theWindow);
12826
fb55f94f3001 Add Window Level Key, Can switch mode with T key
nplourde
parents: 12785
diff changeset
514
fb55f94f3001 Add Window Level Key, Can switch mode with T key
nplourde
parents: 12785
diff changeset
515 CreateWindowGroup(0, &winGroup);
fb55f94f3001 Add Window Level Key, Can switch mode with T key
nplourde
parents: 12785
diff changeset
516 SetWindowGroup(theWindow, winGroup);
fb55f94f3001 Add Window Level Key, Can switch mode with T key
nplourde
parents: 12785
diff changeset
517
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
518 //Set window title
12785
33f58bfc8a1b make mplayer capable of being in the foreground by Dan Christiansen
nplourde
parents: 12624
diff changeset
519 titleKey = CFSTR("MPlayer - The Movie Player");
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
520 windowTitle = CFCopyLocalizedString(titleKey, NULL);
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
521 result = SetWindowTitleWithCFString(theWindow, windowTitle);
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
522 CFRelease(titleKey);
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
523 CFRelease(windowTitle);
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
524
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
525 //Install event handler
13707
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
526 const EventTypeSpec commands[] = {
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
527 { kEventClassWindow, kEventWindowClosed },
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
528 { kEventClassWindow, kEventWindowBoundsChanged },
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
529 { kEventClassCommand, kEventCommandProcess }
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
530 };
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
531
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
532 const EventTypeSpec events[] = {
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
533 { kEventClassKeyboard, kEventRawKeyDown },
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
534 { kEventClassKeyboard, kEventRawKeyRepeat },
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
535 { kEventClassMouse, kEventMouseDown },
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
536 { kEventClassMouse, kEventMouseWheelMoved }
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
537 };
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
538
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
539
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
540 InstallApplicationEventHandler (NewEventHandlerUPP (MainWindowEventHandler), GetEventTypeCount(events), events, NULL, NULL);
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
541 InstallWindowEventHandler (theWindow, NewEventHandlerUPP (MainWindowCommandHandler), GetEventTypeCount(commands), commands, theWindow, NULL);
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
542 }
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
543
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
544 static uint32_t config(uint32_t width, uint32_t height, uint32_t d_width, uint32_t d_height, uint32_t flags, char *title, uint32_t format)
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
545 {
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
546 WindowAttributes windowAttrs;
12414
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
547 OSErr qterr;
13719
43ecd6a73ec0 move variable declaration at beginning of block
nplourde
parents: 13712
diff changeset
548 int i;
43ecd6a73ec0 move variable declaration at beginning of block
nplourde
parents: 13712
diff changeset
549
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
550 //Get Main device info///////////////////////////////////////////////////
13719
43ecd6a73ec0 move variable declaration at beginning of block
nplourde
parents: 13712
diff changeset
551
43ecd6a73ec0 move variable declaration at beginning of block
nplourde
parents: 13712
diff changeset
552
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
553 deviceHdl = GetMainDevice();
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
554
12519
12a87d539f6d choose fullscreen device with suboption device_id=#
nplourde
parents: 12517
diff changeset
555 for(i=0; i<device_id; i++)
12a87d539f6d choose fullscreen device with suboption device_id=#
nplourde
parents: 12517
diff changeset
556 {
12a87d539f6d choose fullscreen device with suboption device_id=#
nplourde
parents: 12517
diff changeset
557 deviceHdl = GetNextDevice(deviceHdl);
12a87d539f6d choose fullscreen device with suboption device_id=#
nplourde
parents: 12517
diff changeset
558
12a87d539f6d choose fullscreen device with suboption device_id=#
nplourde
parents: 12517
diff changeset
559 if(deviceHdl == NULL)
12a87d539f6d choose fullscreen device with suboption device_id=#
nplourde
parents: 12517
diff changeset
560 {
12a87d539f6d choose fullscreen device with suboption device_id=#
nplourde
parents: 12517
diff changeset
561 mp_msg(MSGT_VO, MSGL_FATAL, "Quartz error: Device ID %d do not exist, falling back to main device.\n", device_id);
12a87d539f6d choose fullscreen device with suboption device_id=#
nplourde
parents: 12517
diff changeset
562 deviceHdl = GetMainDevice();
14699
779230cb313d set device id to 0 if the device selected on startup do not exist
nplourde
parents: 14082
diff changeset
563 device_id = 0;
12519
12a87d539f6d choose fullscreen device with suboption device_id=#
nplourde
parents: 12517
diff changeset
564 break;
12a87d539f6d choose fullscreen device with suboption device_id=#
nplourde
parents: 12517
diff changeset
565 }
12a87d539f6d choose fullscreen device with suboption device_id=#
nplourde
parents: 12517
diff changeset
566 }
12a87d539f6d choose fullscreen device with suboption device_id=#
nplourde
parents: 12517
diff changeset
567
12a87d539f6d choose fullscreen device with suboption device_id=#
nplourde
parents: 12517
diff changeset
568 deviceRect = (*deviceHdl)->gdRect;
12a87d539f6d choose fullscreen device with suboption device_id=#
nplourde
parents: 12517
diff changeset
569 device_width = deviceRect.right-deviceRect.left;
12a87d539f6d choose fullscreen device with suboption device_id=#
nplourde
parents: 12517
diff changeset
570 device_height = deviceRect.bottom-deviceRect.top;
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
571
13791
4f08a94405ad autodetect proper monitor aspect
nplourde
parents: 13788
diff changeset
572 monitor_aspect = (float)device_width/(float)device_height;
4f08a94405ad autodetect proper monitor aspect
nplourde
parents: 13788
diff changeset
573
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
574 //misc mplayer setup/////////////////////////////////////////////////////
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
575 SetRect(&imgRect, 0, 0, width, height);
12414
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
576 switch (image_format)
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
577 {
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
578 case IMGFMT_RGB32:
12432
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
579 image_depth = 32;
12414
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
580 break;
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
581 case IMGFMT_YV12:
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
582 case IMGFMT_IYUV:
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
583 case IMGFMT_I420:
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
584 case IMGFMT_UYVY:
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
585 case IMGFMT_YUY2:
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
586 image_depth = 16;
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
587 break;
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
588 }
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
589 image_size = ((imgRect.right*imgRect.bottom*image_depth)+7)/8;
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
590
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
591 vo_fs = flags & VOFLAG_FULLSCREEN;
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
592
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
593 //get movie aspect
13795
ac35862cbc16 enable pan-scan + menu option
nplourde
parents: 13793
diff changeset
594 panscan_init();
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
595 aspect_save_orig(width,height);
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
596 aspect_save_prescale(d_width,d_height);
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
597 aspect_save_screenres(device_width, device_height);
13792
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
598
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
599 aspect(&d_width,&d_height,A_NOZOOM);
13124
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
600
13793
631b0b664ece get proper movie aspect
nplourde
parents: 13792
diff changeset
601 movie_aspect = (float)d_width/(float)d_height;
631b0b664ece get proper movie aspect
nplourde
parents: 13792
diff changeset
602 old_movie_aspect = movie_aspect;
631b0b664ece get proper movie aspect
nplourde
parents: 13792
diff changeset
603
13124
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
604 if(image_data)
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
605 free(image_data);
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
606
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
607 image_data = malloc(image_size);
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
608
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
609 //Create player window//////////////////////////////////////////////////
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
610 windowAttrs = kWindowStandardDocumentAttributes
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
611 | kWindowStandardHandlerAttribute
13779
a03e87034921 fix windows resizing ui glitch
nplourde
parents: 13734
diff changeset
612 | kWindowCompositingAttribute
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
613 | kWindowLiveResizeAttribute;
12425
049136c501b2 Disable live resize for yuv - HW accel bug
nplourde
parents: 12424
diff changeset
614
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
615 if (theWindow == NULL)
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
616 {
13734
efefaa53aaf9 Enable live resize
nplourde
parents: 13722
diff changeset
617 quartz_CreateWindow(d_width, d_height+border, windowAttrs);
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
618
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
619 if (theWindow == NULL)
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
620 {
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
621 mp_msg(MSGT_VO, MSGL_FATAL, "Quartz error: Couldn't create window !!!!!\n");
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
622 return -1;
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
623 }
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
624 }
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
625 else
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
626 {
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
627 HideWindow(theWindow);
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
628 ChangeWindowAttributes(theWindow, ~windowAttrs, windowAttrs);
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
629 SetRect(&winRect, 0, 0, d_width, d_height);
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
630 SetRect(&oldWinRect, 0, 0, d_width, d_height);
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
631 SizeWindow (theWindow, d_width, d_height, 1);
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
632 }
12519
12a87d539f6d choose fullscreen device with suboption device_id=#
nplourde
parents: 12517
diff changeset
633
13779
a03e87034921 fix windows resizing ui glitch
nplourde
parents: 13734
diff changeset
634 //Show window
13855
493a0dd78307 set aqua default theme
nplourde
parents: 13841
diff changeset
635 SetThemeWindowBackground( theWindow, kThemeBrushModelessDialogBackgroundActive, TRUE);
13818
9f707a805967 window now save is old position when going in fullscreen or while using resize preset
nplourde
parents: 13796
diff changeset
636 RepositionWindow(theWindow, NULL, kWindowCenterOnMainScreen);
13779
a03e87034921 fix windows resizing ui glitch
nplourde
parents: 13734
diff changeset
637 ShowWindow (theWindow);
12433
e7ed5efa4d10 More code cleanup
nplourde
parents: 12432
diff changeset
638
12432
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
639 switch (image_format)
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
640 {
13124
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
641 case IMGFMT_RGB32:
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
642 {
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
643 CreateCGContextForPort (GetWindowPort (theWindow), &context);
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
644
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
645 dataProviderRef = CGDataProviderCreateWithData (0, image_data, imgRect.right * imgRect.bottom * 4, 0);
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
646
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
647 image = CGImageCreate (imgRect.right,
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
648 imgRect.bottom,
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
649 8,
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
650 image_depth,
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
651 ((imgRect.right*32)+7)/8,
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
652 CGColorSpaceCreateDeviceRGB(),
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
653 kCGImageAlphaNoneSkipFirst,
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
654 dataProviderRef, 0, 1, kCGRenderingIntentDefault);
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
655 break;
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
656 }
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
657
12432
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
658 case IMGFMT_YV12:
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
659 case IMGFMT_IYUV:
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
660 case IMGFMT_I420:
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
661 case IMGFMT_UYVY:
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
662 case IMGFMT_YUY2:
12424
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
663 {
12623
e64e106c8798 removed buggy rgb32 support
nplourde
parents: 12519
diff changeset
664 get_image_done = 0;
e64e106c8798 removed buggy rgb32 support
nplourde
parents: 12519
diff changeset
665
e64e106c8798 removed buggy rgb32 support
nplourde
parents: 12519
diff changeset
666 if (!EnterMoviesDone)
e64e106c8798 removed buggy rgb32 support
nplourde
parents: 12519
diff changeset
667 {
e64e106c8798 removed buggy rgb32 support
nplourde
parents: 12519
diff changeset
668 qterr = EnterMovies();
e64e106c8798 removed buggy rgb32 support
nplourde
parents: 12519
diff changeset
669 EnterMoviesDone = 1;
e64e106c8798 removed buggy rgb32 support
nplourde
parents: 12519
diff changeset
670 }
e64e106c8798 removed buggy rgb32 support
nplourde
parents: 12519
diff changeset
671 else
e64e106c8798 removed buggy rgb32 support
nplourde
parents: 12519
diff changeset
672 qterr = 0;
e64e106c8798 removed buggy rgb32 support
nplourde
parents: 12519
diff changeset
673
e64e106c8798 removed buggy rgb32 support
nplourde
parents: 12519
diff changeset
674 if (qterr)
e64e106c8798 removed buggy rgb32 support
nplourde
parents: 12519
diff changeset
675 {
e64e106c8798 removed buggy rgb32 support
nplourde
parents: 12519
diff changeset
676 mp_msg(MSGT_VO, MSGL_FATAL, "Quartz error: EnterMovies (%d)\n", qterr);
e64e106c8798 removed buggy rgb32 support
nplourde
parents: 12519
diff changeset
677 return -1;
e64e106c8798 removed buggy rgb32 support
nplourde
parents: 12519
diff changeset
678 }
e64e106c8798 removed buggy rgb32 support
nplourde
parents: 12519
diff changeset
679
e64e106c8798 removed buggy rgb32 support
nplourde
parents: 12519
diff changeset
680
e64e106c8798 removed buggy rgb32 support
nplourde
parents: 12519
diff changeset
681 SetIdentityMatrix(&matrix);
e64e106c8798 removed buggy rgb32 support
nplourde
parents: 12519
diff changeset
682
e64e106c8798 removed buggy rgb32 support
nplourde
parents: 12519
diff changeset
683 if ((d_width != width) || (d_height != height))
e64e106c8798 removed buggy rgb32 support
nplourde
parents: 12519
diff changeset
684 {
e64e106c8798 removed buggy rgb32 support
nplourde
parents: 12519
diff changeset
685 ScaleMatrix(&matrix, FixDiv(Long2Fix(d_width),Long2Fix(width)), FixDiv(Long2Fix(d_height),Long2Fix(height)), 0, 0);
e64e106c8798 removed buggy rgb32 support
nplourde
parents: 12519
diff changeset
686 }
e64e106c8798 removed buggy rgb32 support
nplourde
parents: 12519
diff changeset
687
12432
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
688 yuv_qt_stuff.desc = (ImageDescriptionHandle)NewHandleClear( sizeof(ImageDescription) );
12424
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
689
12432
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
690 yuv_qt_stuff.extension_colr = NewHandleClear(sizeof(NCLCColorInfoImageDescriptionExtension));
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
691 ((NCLCColorInfoImageDescriptionExtension*)(*yuv_qt_stuff.extension_colr))->colorParamType = kVideoColorInfoImageDescriptionExtensionType;
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
692 ((NCLCColorInfoImageDescriptionExtension*)(*yuv_qt_stuff.extension_colr))->primaries = 2;
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
693 ((NCLCColorInfoImageDescriptionExtension*)(*yuv_qt_stuff.extension_colr))->transferFunction = 2;
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
694 ((NCLCColorInfoImageDescriptionExtension*)(*yuv_qt_stuff.extension_colr))->matrix = 2;
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
695
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
696 yuv_qt_stuff.extension_fiel = NewHandleClear(sizeof(FieldInfoImageDescriptionExtension));
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
697 ((FieldInfoImageDescriptionExtension*)(*yuv_qt_stuff.extension_fiel))->fieldCount = 1;
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
698 ((FieldInfoImageDescriptionExtension*)(*yuv_qt_stuff.extension_fiel))->fieldOrderings = 0;
12424
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
699
12432
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
700 yuv_qt_stuff.extension_clap = NewHandleClear(sizeof(CleanApertureImageDescriptionExtension));
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
701 ((CleanApertureImageDescriptionExtension*)(*yuv_qt_stuff.extension_clap))->cleanApertureWidthN = imgRect.right;
12432
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
702 ((CleanApertureImageDescriptionExtension*)(*yuv_qt_stuff.extension_clap))->cleanApertureWidthD = 1;
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
703 ((CleanApertureImageDescriptionExtension*)(*yuv_qt_stuff.extension_clap))->cleanApertureHeightN = imgRect.bottom;
12432
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
704 ((CleanApertureImageDescriptionExtension*)(*yuv_qt_stuff.extension_clap))->cleanApertureHeightD = 1;
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
705 ((CleanApertureImageDescriptionExtension*)(*yuv_qt_stuff.extension_clap))->horizOffN = 0;
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
706 ((CleanApertureImageDescriptionExtension*)(*yuv_qt_stuff.extension_clap))->horizOffD = 1;
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
707 ((CleanApertureImageDescriptionExtension*)(*yuv_qt_stuff.extension_clap))->vertOffN = 0;
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
708 ((CleanApertureImageDescriptionExtension*)(*yuv_qt_stuff.extension_clap))->vertOffD = 1;
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
709
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
710 yuv_qt_stuff.extension_pasp = NewHandleClear(sizeof(PixelAspectRatioImageDescriptionExtension));
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
711 ((PixelAspectRatioImageDescriptionExtension*)(*yuv_qt_stuff.extension_pasp))->hSpacing = 1;
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
712 ((PixelAspectRatioImageDescriptionExtension*)(*yuv_qt_stuff.extension_pasp))->vSpacing = 1;
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
713
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
714 (*yuv_qt_stuff.desc)->idSize = sizeof(ImageDescription);
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
715 (*yuv_qt_stuff.desc)->cType = image_qtcodec;
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
716 (*yuv_qt_stuff.desc)->version = 2;
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
717 (*yuv_qt_stuff.desc)->revisionLevel = 0;
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
718 (*yuv_qt_stuff.desc)->vendor = 'mpla';
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
719 (*yuv_qt_stuff.desc)->width = imgRect.right;
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
720 (*yuv_qt_stuff.desc)->height = imgRect.bottom;
12432
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
721 (*yuv_qt_stuff.desc)->hRes = Long2Fix(72);
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
722 (*yuv_qt_stuff.desc)->vRes = Long2Fix(72);
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
723 (*yuv_qt_stuff.desc)->temporalQuality = 0;
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
724 (*yuv_qt_stuff.desc)->spatialQuality = codecLosslessQuality;
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
725 (*yuv_qt_stuff.desc)->frameCount = 1;
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
726 (*yuv_qt_stuff.desc)->dataSize = 0;
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
727 (*yuv_qt_stuff.desc)->depth = 24;
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
728 (*yuv_qt_stuff.desc)->clutID = -1;
12424
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
729
12432
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
730 qterr = AddImageDescriptionExtension(yuv_qt_stuff.desc, yuv_qt_stuff.extension_colr, kColorInfoImageDescriptionExtension);
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
731 if (qterr)
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
732 {
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
733 mp_msg(MSGT_VO, MSGL_ERR, "Quartz error: AddImageDescriptionExtension [colr] (%d)\n", qterr);
12432
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
734 }
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
735
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
736 qterr = AddImageDescriptionExtension(yuv_qt_stuff.desc, yuv_qt_stuff.extension_fiel, kFieldInfoImageDescriptionExtension);
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
737 if (qterr)
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
738 {
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
739 mp_msg(MSGT_VO, MSGL_ERR, "Quartz error: AddImageDescriptionExtension [fiel] (%d)\n", qterr);
12432
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
740 }
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
741
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
742 qterr = AddImageDescriptionExtension(yuv_qt_stuff.desc, yuv_qt_stuff.extension_clap, kCleanApertureImageDescriptionExtension);
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
743 if (qterr)
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
744 {
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
745 mp_msg(MSGT_VO, MSGL_ERR, "Quartz error: AddImageDescriptionExtension [clap] (%d)\n", qterr);
12432
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
746 }
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
747
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
748 qterr = AddImageDescriptionExtension(yuv_qt_stuff.desc, yuv_qt_stuff.extension_pasp, kCleanApertureImageDescriptionExtension);
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
749 if (qterr)
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
750 {
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
751 mp_msg(MSGT_VO, MSGL_ERR, "Quartz error: AddImageDescriptionExtension [pasp] (%d)\n", qterr);
12432
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
752 }
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
753 if (P != NULL) { // second or subsequent movie
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
754 free(P);
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
755 }
12432
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
756 P = calloc(sizeof(PlanarPixmapInfoYUV420) + image_size, 1);
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
757 switch (image_format)
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
758 {
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
759 case IMGFMT_YV12:
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
760 case IMGFMT_IYUV:
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
761 case IMGFMT_I420:
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
762 P->componentInfoY.offset = sizeof(PlanarPixmapInfoYUV420);
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
763 P->componentInfoCb.offset = P->componentInfoY.offset + image_size / 2;
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
764 P->componentInfoCr.offset = P->componentInfoCb.offset + image_size / 4;
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
765 P->componentInfoY.rowBytes = imgRect.right;
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
766 P->componentInfoCb.rowBytes = imgRect.right / 2;
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
767 P->componentInfoCr.rowBytes = imgRect.right / 2;
12432
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
768 image_buffer_size = image_size + sizeof(PlanarPixmapInfoYUV420);
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
769 break;
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
770 case IMGFMT_UYVY:
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
771 case IMGFMT_YUY2:
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
772 image_buffer_size = image_size;
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
773 break;
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
774 }
12414
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
775
12432
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
776 qterr = DecompressSequenceBeginS(&seqId,
12414
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
777 yuv_qt_stuff.desc,
12432
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
778 (char *)P,
12414
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
779 image_buffer_size,
12623
e64e106c8798 removed buggy rgb32 support
nplourde
parents: 12519
diff changeset
780 GetWindowPort(theWindow),
12432
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
781 NULL,
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
782 NULL,
12414
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
783 ((d_width != width) || (d_height != height)) ?
12432
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
784 &matrix : NULL,
12414
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
785 srcCopy,
12432
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
786 NULL,
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
787 0,
12414
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
788 codecLosslessQuality,
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
789 bestSpeedCodec);
12432
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
790
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
791 if (qterr)
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
792 {
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
793 mp_msg(MSGT_VO, MSGL_FATAL, "Quartz error: DecompressSequenceBeginS (%d)\n", qterr);
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
794 return -1;
12432
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
795 }
12424
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
796 }
12432
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
797 break;
12414
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
798 }
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
799
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
800 if(vo_fs)
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
801 window_fullscreen();
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
802
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
803 if(vo_ontop)
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
804 window_ontop();
12888
3a58fa9639d4 add support for -rootwin command
nplourde
parents: 12886
diff changeset
805
12912
1f6bb2356d18 add var vo_rootwin and -rootwin switch for mac osx
nplourde
parents: 12889
diff changeset
806 if(vo_rootwin)
12888
3a58fa9639d4 add support for -rootwin command
nplourde
parents: 12886
diff changeset
807 {
3a58fa9639d4 add support for -rootwin command
nplourde
parents: 12886
diff changeset
808 vo_fs = TRUE;
3a58fa9639d4 add support for -rootwin command
nplourde
parents: 12886
diff changeset
809 winLevel = 0;
3a58fa9639d4 add support for -rootwin command
nplourde
parents: 12886
diff changeset
810 SetWindowGroupLevel(winGroup, CGWindowLevelForKey(levelList[winLevel]));
3a58fa9639d4 add support for -rootwin command
nplourde
parents: 12886
diff changeset
811 window_fullscreen();
3a58fa9639d4 add support for -rootwin command
nplourde
parents: 12886
diff changeset
812 }
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
813
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
814 return 0;
12120
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
815 }
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
816
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
817 static void check_events(void)
12120
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
818 {
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
819 EventRef theEvent;
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
820 EventTargetRef theTarget;
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
821 OSStatus theErr;
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
822
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
823 //Get event
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
824 theTarget = GetEventDispatcherTarget();
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
825 theErr = ReceiveNextEvent(0, 0, kEventDurationNoWait,true, &theEvent);
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
826 if(theErr == noErr && theEvent != NULL)
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
827 {
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
828 SendEventToEventTarget (theEvent, theTarget);
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
829 ReleaseEvent(theEvent);
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
830 }
12120
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
831
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
832 //update activity every 30 seconds to prevent
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
833 //screensaver from starting up.
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
834 DateTimeRec d;
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
835 unsigned long curTime;
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
836 static unsigned long lastTime = 0;
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
837
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
838 GetTime(&d);
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
839 DateToSeconds( &d, &curTime);
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
840
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
841 if( ( (curTime - lastTime) >= 30) || (lastTime == 0))
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
842 {
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
843 UpdateSystemActivity(UsrActivity);
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
844 lastTime = curTime;
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
845 }
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
846 }
12120
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
847
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
848 static void draw_osd(void)
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
849 {
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
850 vo_draw_text(imgRect.right,imgRect.bottom,draw_alpha);
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
851 }
12120
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
852
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
853 static void flip_page(void)
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
854 {
13707
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
855 if(theWindow == NULL)
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
856 return;
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
857
12432
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
858 switch (image_format)
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
859 {
13124
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
860 case IMGFMT_RGB32:
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
861 {
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
862 CGContextDrawImage (context, bounds, image);
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
863 CGContextFlush (context);
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
864 }
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
865 break;
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
866
12433
e7ed5efa4d10 More code cleanup
nplourde
parents: 12432
diff changeset
867 case IMGFMT_YV12:
e7ed5efa4d10 More code cleanup
nplourde
parents: 12432
diff changeset
868 case IMGFMT_IYUV:
e7ed5efa4d10 More code cleanup
nplourde
parents: 12432
diff changeset
869 case IMGFMT_I420:
e7ed5efa4d10 More code cleanup
nplourde
parents: 12432
diff changeset
870 case IMGFMT_UYVY:
e7ed5efa4d10 More code cleanup
nplourde
parents: 12432
diff changeset
871 case IMGFMT_YUY2:
e7ed5efa4d10 More code cleanup
nplourde
parents: 12432
diff changeset
872 if (EnterMoviesDone)
e7ed5efa4d10 More code cleanup
nplourde
parents: 12432
diff changeset
873 {
e7ed5efa4d10 More code cleanup
nplourde
parents: 12432
diff changeset
874 OSErr qterr;
e7ed5efa4d10 More code cleanup
nplourde
parents: 12432
diff changeset
875 CodecFlags flags = 0;
e7ed5efa4d10 More code cleanup
nplourde
parents: 12432
diff changeset
876 qterr = DecompressSequenceFrameWhen(seqId,
e7ed5efa4d10 More code cleanup
nplourde
parents: 12432
diff changeset
877 (char *)P,
e7ed5efa4d10 More code cleanup
nplourde
parents: 12432
diff changeset
878 image_buffer_size,
e7ed5efa4d10 More code cleanup
nplourde
parents: 12432
diff changeset
879 0, //codecFlagUseImageBuffer,
e7ed5efa4d10 More code cleanup
nplourde
parents: 12432
diff changeset
880 &flags,
e7ed5efa4d10 More code cleanup
nplourde
parents: 12432
diff changeset
881 NULL,
e7ed5efa4d10 More code cleanup
nplourde
parents: 12432
diff changeset
882 NULL);
e7ed5efa4d10 More code cleanup
nplourde
parents: 12432
diff changeset
883 if (qterr)
e7ed5efa4d10 More code cleanup
nplourde
parents: 12432
diff changeset
884 {
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
885 mp_msg(MSGT_VO, MSGL_ERR, "Quartz error: DecompressSequenceFrameWhen in flip_page (%d) flags:0x%08x\n", qterr, flags);
12433
e7ed5efa4d10 More code cleanup
nplourde
parents: 12432
diff changeset
886 }
e7ed5efa4d10 More code cleanup
nplourde
parents: 12432
diff changeset
887 }
e7ed5efa4d10 More code cleanup
nplourde
parents: 12432
diff changeset
888 break;
e7ed5efa4d10 More code cleanup
nplourde
parents: 12432
diff changeset
889 }
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
890 }
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
891
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
892 static uint32_t draw_slice(uint8_t *src[], int stride[], int w,int h,int x,int y)
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
893 {
12433
e7ed5efa4d10 More code cleanup
nplourde
parents: 12432
diff changeset
894 switch (image_format)
e7ed5efa4d10 More code cleanup
nplourde
parents: 12432
diff changeset
895 {
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
896 case IMGFMT_YV12:
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
897 case IMGFMT_I420:
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
898 memcpy_pic(((char*)P) + P->componentInfoY.offset + x + imgRect.right * y, src[0], w, h, imgRect.right, stride[0]);
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
899 x=x/2;y=y/2;w=w/2;h=h/2;
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
900
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
901 memcpy_pic(((char*)P) + P->componentInfoCb.offset + x + imgRect.right / 2 * y, src[1], w, h, imgRect.right / 2, stride[1]);
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
902 memcpy_pic(((char*)P) + P->componentInfoCr.offset + x + imgRect.right / 2 * y, src[2], w, h, imgRect.right / 2, stride[2]);
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
903 return 0;
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
904
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
905 case IMGFMT_IYUV:
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
906 memcpy_pic(((char*)P) + P->componentInfoY.offset + x + imgRect.right * y, src[0], w, h, imgRect.right, stride[0]);
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
907 x=x/2;y=y/2;w=w/2;h=h/2;
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
908
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
909 memcpy_pic(((char*)P) + P->componentInfoCr.offset + x + imgRect.right / 2 * y, src[1], w, h, imgRect.right / 2, stride[1]);
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
910 memcpy_pic(((char*)P) + P->componentInfoCb.offset + x + imgRect.right / 2 * y, src[2], w, h, imgRect.right / 2, stride[2]);
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
911 return 0;
12433
e7ed5efa4d10 More code cleanup
nplourde
parents: 12432
diff changeset
912 }
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
913 return -1;
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
914 }
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
915
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
916 static uint32_t draw_frame(uint8_t *src[])
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
917 {
12433
e7ed5efa4d10 More code cleanup
nplourde
parents: 12432
diff changeset
918 switch (image_format)
e7ed5efa4d10 More code cleanup
nplourde
parents: 12432
diff changeset
919 {
13124
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
920 case IMGFMT_RGB32:
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
921 memcpy(image_data,src[0],image_size);
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
922 return 0;
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
923
12433
e7ed5efa4d10 More code cleanup
nplourde
parents: 12432
diff changeset
924 case IMGFMT_UYVY:
e7ed5efa4d10 More code cleanup
nplourde
parents: 12432
diff changeset
925 case IMGFMT_YUY2:
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
926 memcpy_pic(((char*)P), src[0], imgRect.right * 2, imgRect.bottom, imgRect.right * 2, imgRect.right * 2);
12433
e7ed5efa4d10 More code cleanup
nplourde
parents: 12432
diff changeset
927 return 0;
e7ed5efa4d10 More code cleanup
nplourde
parents: 12432
diff changeset
928 }
e7ed5efa4d10 More code cleanup
nplourde
parents: 12432
diff changeset
929 return -1;
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
930 }
12120
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
931
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
932 static uint32_t query_format(uint32_t format)
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
933 {
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
934 image_format = format;
12432
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
935 image_qtcodec = 0;
13124
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
936
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
937 if (format == IMGFMT_RGB32)
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
938 {
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
939 return VFCAP_CSP_SUPPORTED | VFCAP_OSD | VFCAP_HWSCALE_UP | VFCAP_HWSCALE_DOWN;
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
940 }
12432
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
941
12424
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
942 if ((format == IMGFMT_YV12) || (format == IMGFMT_IYUV) || (format == IMGFMT_I420))
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
943 {
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
944 image_qtcodec = kMpegYUV420CodecType; //kYUV420CodecType ?;
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
945 return VFCAP_CSP_SUPPORTED | VFCAP_OSD | VFCAP_HWSCALE_UP | VFCAP_HWSCALE_DOWN | VFCAP_ACCEPT_STRIDE;
12414
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
946 }
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
947
12424
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
948 if (format == IMGFMT_YUY2)
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
949 {
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
950 image_qtcodec = kComponentVideoUnsigned;
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
951 return VFCAP_CSP_SUPPORTED | VFCAP_OSD | VFCAP_HWSCALE_UP | VFCAP_HWSCALE_DOWN;
12414
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
952 }
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
953
12424
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
954 if (format == IMGFMT_UYVY)
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
955 {
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
956 image_qtcodec = k422YpCbCr8CodecType;
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
957 return VFCAP_CSP_SUPPORTED | VFCAP_OSD | VFCAP_HWSCALE_UP | VFCAP_HWSCALE_DOWN;
12424
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
958 }
12414
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
959
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
960 return 0;
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
961 }
12120
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
962
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
963 static void uninit(void)
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
964 {
12432
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
965 OSErr qterr;
13124
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
966
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
967 switch (image_format)
12432
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
968 {
13124
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
969 case IMGFMT_YV12:
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
970 case IMGFMT_IYUV:
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
971 case IMGFMT_I420:
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
972 case IMGFMT_UYVY:
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
973 case IMGFMT_YUY2:
12432
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
974 {
13124
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
975 if (EnterMoviesDone)
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
976 {
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
977 qterr = CDSequenceEnd(seqId);
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
978 if (qterr)
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
979 {
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
980 mp_msg(MSGT_VO, MSGL_ERR, "Quartz error: CDSequenceEnd (%d)\n", qterr);
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
981 }
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
982 }
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
983 break;
12424
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
984 }
13124
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
985 default:
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
986 break;
12414
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
987 }
12432
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
988
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
989 ShowMenuBar();
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
990 }
12120
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
991
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
992 static uint32_t preinit(const char *arg)
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
993 {
12519
12a87d539f6d choose fullscreen device with suboption device_id=#
nplourde
parents: 12517
diff changeset
994 int parse_err = 0;
12a87d539f6d choose fullscreen device with suboption device_id=#
nplourde
parents: 12517
diff changeset
995
12a87d539f6d choose fullscreen device with suboption device_id=#
nplourde
parents: 12517
diff changeset
996 if(arg)
12a87d539f6d choose fullscreen device with suboption device_id=#
nplourde
parents: 12517
diff changeset
997 {
12623
e64e106c8798 removed buggy rgb32 support
nplourde
parents: 12519
diff changeset
998 char *parse_pos = (char *)&arg[0];
12519
12a87d539f6d choose fullscreen device with suboption device_id=#
nplourde
parents: 12517
diff changeset
999 while (parse_pos[0] && !parse_err)
12a87d539f6d choose fullscreen device with suboption device_id=#
nplourde
parents: 12517
diff changeset
1000 {
12a87d539f6d choose fullscreen device with suboption device_id=#
nplourde
parents: 12517
diff changeset
1001 if (strncmp (parse_pos, "device_id=", 10) == 0)
12a87d539f6d choose fullscreen device with suboption device_id=#
nplourde
parents: 12517
diff changeset
1002 {
12a87d539f6d choose fullscreen device with suboption device_id=#
nplourde
parents: 12517
diff changeset
1003 parse_pos = &parse_pos[10];
12a87d539f6d choose fullscreen device with suboption device_id=#
nplourde
parents: 12517
diff changeset
1004 device_id = strtol(parse_pos, &parse_pos, 0);
12a87d539f6d choose fullscreen device with suboption device_id=#
nplourde
parents: 12517
diff changeset
1005 }
13788
ced61fa921ca let you choose fullscreen resolution for slower system
nplourde
parents: 13787
diff changeset
1006 if (strncmp (parse_pos, "fs_res=", 7) == 0)
ced61fa921ca let you choose fullscreen resolution for slower system
nplourde
parents: 13787
diff changeset
1007 {
ced61fa921ca let you choose fullscreen resolution for slower system
nplourde
parents: 13787
diff changeset
1008 parse_pos = &parse_pos[7];
ced61fa921ca let you choose fullscreen resolution for slower system
nplourde
parents: 13787
diff changeset
1009 fs_res_x = strtol(parse_pos, &parse_pos, 0);
ced61fa921ca let you choose fullscreen resolution for slower system
nplourde
parents: 13787
diff changeset
1010 parse_pos = &parse_pos[1];
ced61fa921ca let you choose fullscreen resolution for slower system
nplourde
parents: 13787
diff changeset
1011 fs_res_y = strtol(parse_pos, &parse_pos, 0);
ced61fa921ca let you choose fullscreen resolution for slower system
nplourde
parents: 13787
diff changeset
1012 }
12519
12a87d539f6d choose fullscreen device with suboption device_id=#
nplourde
parents: 12517
diff changeset
1013 if (parse_pos[0] == ':') parse_pos = &parse_pos[1];
12a87d539f6d choose fullscreen device with suboption device_id=#
nplourde
parents: 12517
diff changeset
1014 else if (parse_pos[0]) parse_err = 1;
12a87d539f6d choose fullscreen device with suboption device_id=#
nplourde
parents: 12517
diff changeset
1015 }
12a87d539f6d choose fullscreen device with suboption device_id=#
nplourde
parents: 12517
diff changeset
1016 }
12785
33f58bfc8a1b make mplayer capable of being in the foreground by Dan Christiansen
nplourde
parents: 12624
diff changeset
1017
14082
30db51086c84 do not bring process to front if HAVE_SDL
nplourde
parents: 14081
diff changeset
1018 #if !defined (MACOSX_FINDER_SUPPORT) || !defined (HAVE_SDL)
12785
33f58bfc8a1b make mplayer capable of being in the foreground by Dan Christiansen
nplourde
parents: 12624
diff changeset
1019 //this chunk of code is heavily based off SDL_macosx.m from SDL
33f58bfc8a1b make mplayer capable of being in the foreground by Dan Christiansen
nplourde
parents: 12624
diff changeset
1020 //it uses an Apple private function to request foreground operation
33f58bfc8a1b make mplayer capable of being in the foreground by Dan Christiansen
nplourde
parents: 12624
diff changeset
1021
33f58bfc8a1b make mplayer capable of being in the foreground by Dan Christiansen
nplourde
parents: 12624
diff changeset
1022 void CPSEnableForegroundOperation(ProcessSerialNumber* psn);
33f58bfc8a1b make mplayer capable of being in the foreground by Dan Christiansen
nplourde
parents: 12624
diff changeset
1023 ProcessSerialNumber myProc, frProc;
33f58bfc8a1b make mplayer capable of being in the foreground by Dan Christiansen
nplourde
parents: 12624
diff changeset
1024 Boolean sameProc;
33f58bfc8a1b make mplayer capable of being in the foreground by Dan Christiansen
nplourde
parents: 12624
diff changeset
1025
33f58bfc8a1b make mplayer capable of being in the foreground by Dan Christiansen
nplourde
parents: 12624
diff changeset
1026 if (GetFrontProcess(&frProc) == noErr)
33f58bfc8a1b make mplayer capable of being in the foreground by Dan Christiansen
nplourde
parents: 12624
diff changeset
1027 {
33f58bfc8a1b make mplayer capable of being in the foreground by Dan Christiansen
nplourde
parents: 12624
diff changeset
1028 if (GetCurrentProcess(&myProc) == noErr)
33f58bfc8a1b make mplayer capable of being in the foreground by Dan Christiansen
nplourde
parents: 12624
diff changeset
1029 {
33f58bfc8a1b make mplayer capable of being in the foreground by Dan Christiansen
nplourde
parents: 12624
diff changeset
1030 if (SameProcess(&frProc, &myProc, &sameProc) == noErr && !sameProc)
33f58bfc8a1b make mplayer capable of being in the foreground by Dan Christiansen
nplourde
parents: 12624
diff changeset
1031 {
33f58bfc8a1b make mplayer capable of being in the foreground by Dan Christiansen
nplourde
parents: 12624
diff changeset
1032 CPSEnableForegroundOperation(&myProc);
33f58bfc8a1b make mplayer capable of being in the foreground by Dan Christiansen
nplourde
parents: 12624
diff changeset
1033 }
33f58bfc8a1b make mplayer capable of being in the foreground by Dan Christiansen
nplourde
parents: 12624
diff changeset
1034 SetFrontProcess(&myProc);
33f58bfc8a1b make mplayer capable of being in the foreground by Dan Christiansen
nplourde
parents: 12624
diff changeset
1035 }
33f58bfc8a1b make mplayer capable of being in the foreground by Dan Christiansen
nplourde
parents: 12624
diff changeset
1036 }
13909
07dadc3066f3 add support for macosx finder argument support (let you bundle mplayer to be a finder compliant .app) patch by Chris Roccati <roccati@pobox.com>
nplourde
parents: 13856
diff changeset
1037 #endif
12785
33f58bfc8a1b make mplayer capable of being in the foreground by Dan Christiansen
nplourde
parents: 12624
diff changeset
1038
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
1039 return 0;
12120
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
1040 }
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
1041
12424
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1042 static uint32_t draw_yuv_image(mp_image_t *mpi)
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1043 {
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1044 // ATM we're only called for planar IMGFMT
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1045 // drawing is done directly in P
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1046 // and displaying is in flip_page.
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
1047 return get_image_done ? VO_TRUE : VO_FALSE;
12414
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
1048 }
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
1049
12424
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1050 static uint32_t get_yuv_image(mp_image_t *mpi)
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1051 {
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1052 if(mpi->type!=MP_IMGTYPE_EXPORT) return VO_FALSE;
12414
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
1053
12424
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1054 if(mpi->imgfmt!=image_format) return VO_FALSE;
12414
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
1055
12424
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1056 if(mpi->flags&MP_IMGFLAG_PLANAR)
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1057 {
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1058 if (mpi->num_planes != 3)
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1059 {
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1060 mp_msg(MSGT_VO, MSGL_ERR, "Quartz error: only 3 planes allowed in get_yuv_image for planar (%d) \n", mpi->num_planes);
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1061 return VO_FALSE;
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1062 }
12414
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
1063
12424
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1064 mpi->planes[0]=((char*)P) + P->componentInfoY.offset;
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
1065 mpi->stride[0]=imgRect.right;
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
1066 mpi->width=imgRect.right;
12414
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
1067
12424
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1068 if(mpi->flags&MP_IMGFLAG_SWAPPED)
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1069 {
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1070 // I420
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1071 mpi->planes[1]=((char*)P) + P->componentInfoCb.offset;
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1072 mpi->planes[2]=((char*)P) + P->componentInfoCr.offset;
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
1073 mpi->stride[1]=imgRect.right/2;
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
1074 mpi->stride[2]=imgRect.right/2;
12424
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1075 }
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1076 else
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1077 {
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1078 // YV12
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1079 mpi->planes[1]=((char*)P) + P->componentInfoCr.offset;
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1080 mpi->planes[2]=((char*)P) + P->componentInfoCb.offset;
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
1081 mpi->stride[1]=imgRect.right/2;
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
1082 mpi->stride[2]=imgRect.right/2;
12424
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1083 }
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1084
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1085 mpi->flags|=MP_IMGFLAG_DIRECT;
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
1086 get_image_done = 1;
12424
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1087 return VO_TRUE;
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1088 }
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1089 else
12433
e7ed5efa4d10 More code cleanup
nplourde
parents: 12432
diff changeset
1090 {
e7ed5efa4d10 More code cleanup
nplourde
parents: 12432
diff changeset
1091 // doesn't work yet
12424
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1092 if (mpi->num_planes != 1)
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1093 {
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1094 mp_msg(MSGT_VO, MSGL_ERR, "Quartz error: only 1 plane allowed in get_yuv_image for packed (%d) \n", mpi->num_planes);
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1095 return VO_FALSE;
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1096 }
12414
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
1097
12424
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1098 mpi->planes[0] = (char*)P;
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
1099 mpi->stride[0] = imgRect.right * 2;
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
1100 mpi->width=imgRect.right;
12424
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1101 mpi->flags|=MP_IMGFLAG_DIRECT;
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
1102 get_image_done = 1;
12424
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1103 return VO_TRUE;
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1104 }
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1105 return VO_FALSE;
12414
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
1106 }
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
1107
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
1108 static uint32_t control(uint32_t request, void *data, ...)
12120
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
1109 {
12424
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1110 switch (request)
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1111 {
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1112 case VOCTRL_PAUSE: return (int_pause=1);
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1113 case VOCTRL_RESUME: return (int_pause=0);
12460
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
1114 case VOCTRL_FULLSCREEN: vo_fs = (!(vo_fs)); window_fullscreen(); return VO_TRUE;
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
1115 case VOCTRL_ONTOP: vo_ontop = (!(vo_ontop)); window_ontop(); return VO_TRUE;
12424
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1116 case VOCTRL_QUERY_FORMAT: return query_format(*((uint32_t*)data));
13795
ac35862cbc16 enable pan-scan + menu option
nplourde
parents: 13793
diff changeset
1117 case VOCTRL_GET_PANSCAN: return VO_TRUE;
13840
62af31e1bdc8 more panscan fix
nplourde
parents: 13818
diff changeset
1118 case VOCTRL_SET_PANSCAN: window_panscan(); return VO_TRUE;
13795
ac35862cbc16 enable pan-scan + menu option
nplourde
parents: 13793
diff changeset
1119
12424
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1120 case VOCTRL_GET_IMAGE:
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1121 switch (image_format)
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1122 {
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1123 case IMGFMT_YV12:
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1124 case IMGFMT_IYUV:
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1125 case IMGFMT_I420:
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
1126 case IMGFMT_UYVY:
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
1127 case IMGFMT_YUY2:
12424
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1128 return get_yuv_image(data);
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1129 break;
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
1130 default:
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
1131 break;
12424
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1132 }
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1133 case VOCTRL_DRAW_IMAGE:
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1134 switch (image_format)
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1135 {
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1136 case IMGFMT_YV12:
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1137 case IMGFMT_IYUV:
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1138 case IMGFMT_I420:
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
1139 case IMGFMT_UYVY:
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
1140 case IMGFMT_YUY2:
12424
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1141 return draw_yuv_image(data);
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1142 break;
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
1143 default:
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
1144 break;
12424
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1145 }
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1146 }
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1147 return VO_NOTIMPL;
12120
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
1148 }
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
1149
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
1150 void window_resized()
12120
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
1151 {
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
1152 float aspectX;
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
1153 float aspectY;
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
1154
13855
493a0dd78307 set aqua default theme
nplourde
parents: 13841
diff changeset
1155 int padding = 0;
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
1156
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
1157 uint32_t d_width;
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
1158 uint32_t d_height;
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
1159
13779
a03e87034921 fix windows resizing ui glitch
nplourde
parents: 13734
diff changeset
1160 CGRect tmpBounds;
13734
efefaa53aaf9 Enable live resize
nplourde
parents: 13722
diff changeset
1161
12623
e64e106c8798 removed buggy rgb32 support
nplourde
parents: 12519
diff changeset
1162 GetPortBounds( GetWindowPort(theWindow), &winRect );
12120
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
1163
13792
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
1164 if(vo_keepaspect)
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
1165 {
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
1166 aspect( &d_width, &d_height, A_NOZOOM);
13792
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
1167 d_height = ((float)d_width/movie_aspect);
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
1168
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
1169 aspectX = (float)((float)winRect.right/(float)d_width);
13734
efefaa53aaf9 Enable live resize
nplourde
parents: 13722
diff changeset
1170 aspectY = (float)((float)(winRect.bottom-border)/(float)d_height);
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
1171
13734
efefaa53aaf9 Enable live resize
nplourde
parents: 13722
diff changeset
1172 if((d_height*aspectX)>(winRect.bottom-border))
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
1173 {
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
1174 padding = (winRect.right - d_width*aspectY)/2;
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
1175 SetRect(&dstRect, padding, 0, d_width*aspectY+padding, d_height*aspectY);
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
1176 }
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
1177 else
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
1178 {
13734
efefaa53aaf9 Enable live resize
nplourde
parents: 13722
diff changeset
1179 padding = ((winRect.bottom-border) - d_height*aspectX)/2;
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
1180 SetRect(&dstRect, 0, padding, (d_width*aspectX), d_height*aspectX+padding);
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
1181 }
13792
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
1182 }
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
1183 else
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
1184 {
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
1185 SetRect(&dstRect, 0, 0, winRect.right, winRect.bottom-border);
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
1186 }
12120
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
1187
12519
12a87d539f6d choose fullscreen device with suboption device_id=#
nplourde
parents: 12517
diff changeset
1188 //Clear Background
13855
493a0dd78307 set aqua default theme
nplourde
parents: 13841
diff changeset
1189 SetThemeWindowBackground( theWindow, kThemeBrushUtilityWindowBackgroundInactive, TRUE);
13779
a03e87034921 fix windows resizing ui glitch
nplourde
parents: 13734
diff changeset
1190 tmpBounds = CGRectMake( 0, border, winRect.right, winRect.bottom);
13734
efefaa53aaf9 Enable live resize
nplourde
parents: 13722
diff changeset
1191 CreateCGContextForPort(GetWindowPort(theWindow),&context);
13818
9f707a805967 window now save is old position when going in fullscreen or while using resize preset
nplourde
parents: 13796
diff changeset
1192 CGContextClearRect(context, tmpBounds);
13124
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
1193
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
1194 switch (image_format)
12432
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
1195 {
13124
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
1196 case IMGFMT_RGB32:
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
1197 {
13779
a03e87034921 fix windows resizing ui glitch
nplourde
parents: 13734
diff changeset
1198 bounds = CGRectMake(dstRect.left, dstRect.top+border, dstRect.right-dstRect.left, dstRect.bottom-dstRect.top);
13124
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
1199 CreateCGContextForPort (GetWindowPort (theWindow), &context);
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
1200 break;
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
1201 }
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
1202 case IMGFMT_YV12:
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
1203 case IMGFMT_IYUV:
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
1204 case IMGFMT_I420:
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
1205 case IMGFMT_UYVY:
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
1206 case IMGFMT_YUY2:
12432
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
1207 {
13124
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
1208 long scale_X = FixDiv(Long2Fix(dstRect.right - dstRect.left),Long2Fix(imgRect.right));
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
1209 long scale_Y = FixDiv(Long2Fix(dstRect.bottom - dstRect.top),Long2Fix(imgRect.bottom));
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
1210
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
1211 SetIdentityMatrix(&matrix);
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
1212 if (((dstRect.right - dstRect.left) != imgRect.right) || ((dstRect.bottom - dstRect.right) != imgRect.bottom))
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
1213 {
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
1214 ScaleMatrix(&matrix, scale_X, scale_Y, 0, 0);
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
1215
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
1216 if (padding > 0)
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
1217 {
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
1218 TranslateMatrix(&matrix, Long2Fix(dstRect.left), Long2Fix(dstRect.top));
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
1219 }
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
1220 }
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
1221
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
1222 SetDSequenceMatrix(seqId, &matrix);
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
1223 break;
12432
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
1224 }
13124
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
1225 default:
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
1226 break;
12432
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
1227 }
12120
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
1228 }
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
1229
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
1230 void window_ontop()
12460
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
1231 {
13788
ced61fa921ca let you choose fullscreen resolution for slower system
nplourde
parents: 13787
diff changeset
1232 if(!vo_quartz_fs)
ced61fa921ca let you choose fullscreen resolution for slower system
nplourde
parents: 13787
diff changeset
1233 {
12826
fb55f94f3001 Add Window Level Key, Can switch mode with T key
nplourde
parents: 12785
diff changeset
1234 //Cycle between level
fb55f94f3001 Add Window Level Key, Can switch mode with T key
nplourde
parents: 12785
diff changeset
1235 winLevel++;
fb55f94f3001 Add Window Level Key, Can switch mode with T key
nplourde
parents: 12785
diff changeset
1236 if(winLevel>2)
fb55f94f3001 Add Window Level Key, Can switch mode with T key
nplourde
parents: 12785
diff changeset
1237 winLevel = 0;
fb55f94f3001 Add Window Level Key, Can switch mode with T key
nplourde
parents: 12785
diff changeset
1238
fb55f94f3001 Add Window Level Key, Can switch mode with T key
nplourde
parents: 12785
diff changeset
1239 //hide menu bar and mouse cursor if in fullscreen and quiting wallpaper mode
fb55f94f3001 Add Window Level Key, Can switch mode with T key
nplourde
parents: 12785
diff changeset
1240 if(vo_fs)
fb55f94f3001 Add Window Level Key, Can switch mode with T key
nplourde
parents: 12785
diff changeset
1241 {
fb55f94f3001 Add Window Level Key, Can switch mode with T key
nplourde
parents: 12785
diff changeset
1242 if(winLevel != 0)
fb55f94f3001 Add Window Level Key, Can switch mode with T key
nplourde
parents: 12785
diff changeset
1243 {
13841
394deaee5d21 do not hide mouse and menubar in fulscreen if not using main device
nplourde
parents: 13840
diff changeset
1244 if(device_id == 0)
394deaee5d21 do not hide mouse and menubar in fulscreen if not using main device
nplourde
parents: 13840
diff changeset
1245 {
394deaee5d21 do not hide mouse and menubar in fulscreen if not using main device
nplourde
parents: 13840
diff changeset
1246 HideMenuBar();
394deaee5d21 do not hide mouse and menubar in fulscreen if not using main device
nplourde
parents: 13840
diff changeset
1247 HideCursor();
394deaee5d21 do not hide mouse and menubar in fulscreen if not using main device
nplourde
parents: 13840
diff changeset
1248 }
12826
fb55f94f3001 Add Window Level Key, Can switch mode with T key
nplourde
parents: 12785
diff changeset
1249 }
fb55f94f3001 Add Window Level Key, Can switch mode with T key
nplourde
parents: 12785
diff changeset
1250 else
fb55f94f3001 Add Window Level Key, Can switch mode with T key
nplourde
parents: 12785
diff changeset
1251 {
fb55f94f3001 Add Window Level Key, Can switch mode with T key
nplourde
parents: 12785
diff changeset
1252 ShowMenuBar();
12830
b177cc8afdc0 Fixed typo
nplourde
parents: 12826
diff changeset
1253 ShowCursor();
12826
fb55f94f3001 Add Window Level Key, Can switch mode with T key
nplourde
parents: 12785
diff changeset
1254 }
fb55f94f3001 Add Window Level Key, Can switch mode with T key
nplourde
parents: 12785
diff changeset
1255 }
fb55f94f3001 Add Window Level Key, Can switch mode with T key
nplourde
parents: 12785
diff changeset
1256
13788
ced61fa921ca let you choose fullscreen resolution for slower system
nplourde
parents: 13787
diff changeset
1257 }
12826
fb55f94f3001 Add Window Level Key, Can switch mode with T key
nplourde
parents: 12785
diff changeset
1258 SetWindowGroupLevel(winGroup, CGWindowLevelForKey(levelList[winLevel]));
12120
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
1259 }
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
1260
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
1261 void window_fullscreen()
12120
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
1262 {
13788
ced61fa921ca let you choose fullscreen resolution for slower system
nplourde
parents: 13787
diff changeset
1263 static Ptr restoreState = NULL;
ced61fa921ca let you choose fullscreen resolution for slower system
nplourde
parents: 13787
diff changeset
1264
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
1265 //go fullscreen
12432
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
1266 if(vo_fs)
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
1267 {
12826
fb55f94f3001 Add Window Level Key, Can switch mode with T key
nplourde
parents: 12785
diff changeset
1268 if(winLevel != 0)
fb55f94f3001 Add Window Level Key, Can switch mode with T key
nplourde
parents: 12785
diff changeset
1269 {
13841
394deaee5d21 do not hide mouse and menubar in fulscreen if not using main device
nplourde
parents: 13840
diff changeset
1270 if(device_id == 0)
394deaee5d21 do not hide mouse and menubar in fulscreen if not using main device
nplourde
parents: 13840
diff changeset
1271 {
394deaee5d21 do not hide mouse and menubar in fulscreen if not using main device
nplourde
parents: 13840
diff changeset
1272 HideMenuBar();
394deaee5d21 do not hide mouse and menubar in fulscreen if not using main device
nplourde
parents: 13840
diff changeset
1273 HideCursor();
394deaee5d21 do not hide mouse and menubar in fulscreen if not using main device
nplourde
parents: 13840
diff changeset
1274 }
13788
ced61fa921ca let you choose fullscreen resolution for slower system
nplourde
parents: 13787
diff changeset
1275
ced61fa921ca let you choose fullscreen resolution for slower system
nplourde
parents: 13787
diff changeset
1276 if(fs_res_x != 0 || fs_res_y != 0)
ced61fa921ca let you choose fullscreen resolution for slower system
nplourde
parents: 13787
diff changeset
1277 {
13840
62af31e1bdc8 more panscan fix
nplourde
parents: 13818
diff changeset
1278 BeginFullScreen( &restoreState, deviceHdl, &fs_res_x, &fs_res_y, NULL, NULL, NULL);
13788
ced61fa921ca let you choose fullscreen resolution for slower system
nplourde
parents: 13787
diff changeset
1279
ced61fa921ca let you choose fullscreen resolution for slower system
nplourde
parents: 13787
diff changeset
1280 //Get Main device info///////////////////////////////////////////////////
ced61fa921ca let you choose fullscreen resolution for slower system
nplourde
parents: 13787
diff changeset
1281 deviceRect = (*deviceHdl)->gdRect;
ced61fa921ca let you choose fullscreen resolution for slower system
nplourde
parents: 13787
diff changeset
1282
ced61fa921ca let you choose fullscreen resolution for slower system
nplourde
parents: 13787
diff changeset
1283 device_width = deviceRect.right;
ced61fa921ca let you choose fullscreen resolution for slower system
nplourde
parents: 13787
diff changeset
1284 device_height = deviceRect.bottom;
ced61fa921ca let you choose fullscreen resolution for slower system
nplourde
parents: 13787
diff changeset
1285 }
12826
fb55f94f3001 Add Window Level Key, Can switch mode with T key
nplourde
parents: 12785
diff changeset
1286 }
12120
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
1287
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
1288 //save old window size
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
1289 if (!vo_quartz_fs)
13818
9f707a805967 window now save is old position when going in fullscreen or while using resize preset
nplourde
parents: 13796
diff changeset
1290 {
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
1291 GetWindowPortBounds(theWindow, &oldWinRect);
13818
9f707a805967 window now save is old position when going in fullscreen or while using resize preset
nplourde
parents: 13796
diff changeset
1292 GetWindowBounds(theWindow, kWindowContentRgn, &oldWinBounds);
9f707a805967 window now save is old position when going in fullscreen or while using resize preset
nplourde
parents: 13796
diff changeset
1293 }
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
1294
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
1295 //go fullscreen
13734
efefaa53aaf9 Enable live resize
nplourde
parents: 13722
diff changeset
1296 border = 0;
13840
62af31e1bdc8 more panscan fix
nplourde
parents: 13818
diff changeset
1297 panscan_calc();
13856
335778f9e6ae remove window shadow in fullscreen
nplourde
parents: 13855
diff changeset
1298 ChangeWindowAttributes(theWindow, kWindowNoShadowAttribute, kWindowResizableAttribute);
13840
62af31e1bdc8 more panscan fix
nplourde
parents: 13818
diff changeset
1299 MoveWindow(theWindow, deviceRect.left-(vo_panscan_x >> 1), deviceRect.top-(vo_panscan_y >> 1), 1);
62af31e1bdc8 more panscan fix
nplourde
parents: 13818
diff changeset
1300 SizeWindow(theWindow, device_width+vo_panscan_x, device_height+vo_panscan_y,1);
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
1301
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
1302 vo_quartz_fs = 1;
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
1303 }
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
1304 else //go back to windowed mode
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
1305 {
13788
ced61fa921ca let you choose fullscreen resolution for slower system
nplourde
parents: 13787
diff changeset
1306 if(restoreState != NULL)
ced61fa921ca let you choose fullscreen resolution for slower system
nplourde
parents: 13787
diff changeset
1307 {
ced61fa921ca let you choose fullscreen resolution for slower system
nplourde
parents: 13787
diff changeset
1308 EndFullScreen(restoreState, NULL);
ced61fa921ca let you choose fullscreen resolution for slower system
nplourde
parents: 13787
diff changeset
1309
ced61fa921ca let you choose fullscreen resolution for slower system
nplourde
parents: 13787
diff changeset
1310 //Get Main device info///////////////////////////////////////////////////
ced61fa921ca let you choose fullscreen resolution for slower system
nplourde
parents: 13787
diff changeset
1311 deviceRect = (*deviceHdl)->gdRect;
ced61fa921ca let you choose fullscreen resolution for slower system
nplourde
parents: 13787
diff changeset
1312
ced61fa921ca let you choose fullscreen resolution for slower system
nplourde
parents: 13787
diff changeset
1313 device_width = deviceRect.right;
ced61fa921ca let you choose fullscreen resolution for slower system
nplourde
parents: 13787
diff changeset
1314 device_height = deviceRect.bottom;
ced61fa921ca let you choose fullscreen resolution for slower system
nplourde
parents: 13787
diff changeset
1315 restoreState = NULL;
ced61fa921ca let you choose fullscreen resolution for slower system
nplourde
parents: 13787
diff changeset
1316 }
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
1317 ShowMenuBar();
12120
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
1318
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
1319 //show mouse cursor
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
1320 ShowCursor();
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
1321
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
1322 //revert window to previous setting
13855
493a0dd78307 set aqua default theme
nplourde
parents: 13841
diff changeset
1323 border = 15;
493a0dd78307 set aqua default theme
nplourde
parents: 13841
diff changeset
1324 ChangeWindowAttributes(theWindow, kWindowResizableAttribute, kWindowNoShadowAttribute);
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
1325 SizeWindow(theWindow, oldWinRect.right, oldWinRect.bottom,1);
13818
9f707a805967 window now save is old position when going in fullscreen or while using resize preset
nplourde
parents: 13796
diff changeset
1326 MoveWindow(theWindow, oldWinBounds.left, oldWinBounds.top, 1);
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
1327
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
1328 vo_quartz_fs = 0;
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
1329 }
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
1330
12120
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
1331 }
13840
62af31e1bdc8 more panscan fix
nplourde
parents: 13818
diff changeset
1332
62af31e1bdc8 more panscan fix
nplourde
parents: 13818
diff changeset
1333 void window_panscan()
62af31e1bdc8 more panscan fix
nplourde
parents: 13818
diff changeset
1334 {
62af31e1bdc8 more panscan fix
nplourde
parents: 13818
diff changeset
1335 panscan_calc();
62af31e1bdc8 more panscan fix
nplourde
parents: 13818
diff changeset
1336
62af31e1bdc8 more panscan fix
nplourde
parents: 13818
diff changeset
1337 if(vo_panscan > 0)
62af31e1bdc8 more panscan fix
nplourde
parents: 13818
diff changeset
1338 CheckMenuItem (aspectMenu, 2, 1);
62af31e1bdc8 more panscan fix
nplourde
parents: 13818
diff changeset
1339 else
62af31e1bdc8 more panscan fix
nplourde
parents: 13818
diff changeset
1340 CheckMenuItem (aspectMenu, 2, 0);
62af31e1bdc8 more panscan fix
nplourde
parents: 13818
diff changeset
1341
62af31e1bdc8 more panscan fix
nplourde
parents: 13818
diff changeset
1342 if(vo_quartz_fs)
62af31e1bdc8 more panscan fix
nplourde
parents: 13818
diff changeset
1343 {
62af31e1bdc8 more panscan fix
nplourde
parents: 13818
diff changeset
1344 MoveWindow(theWindow, deviceRect.left-(vo_panscan_x >> 1), deviceRect.top-(vo_panscan_y >> 1), 1);
62af31e1bdc8 more panscan fix
nplourde
parents: 13818
diff changeset
1345 SizeWindow(theWindow, device_width+vo_panscan_x, device_height+vo_panscan_y,1);
62af31e1bdc8 more panscan fix
nplourde
parents: 13818
diff changeset
1346 }
62af31e1bdc8 more panscan fix
nplourde
parents: 13818
diff changeset
1347 }