annotate libvo/vo_quartz.c @ 27992:0923262b0ebc

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