annotate libvo/osx_common.c @ 29693:328f17988caf

Rearrange code of grow_array to make it easier to extend.
author reimar
date Wed, 30 Sep 2009 07:35:33 +0000
parents 5a46b1a05a32
children 4a6ec8b958c4
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
29607
5a46b1a05a32 Add standard license header and move a misplaced comment.
reimar
parents: 29536
diff changeset
1 /*
5a46b1a05a32 Add standard license header and move a misplaced comment.
reimar
parents: 29536
diff changeset
2 * This file is part of MPlayer.
5a46b1a05a32 Add standard license header and move a misplaced comment.
reimar
parents: 29536
diff changeset
3 *
5a46b1a05a32 Add standard license header and move a misplaced comment.
reimar
parents: 29536
diff changeset
4 * MPlayer is free software; you can redistribute it and/or modify
5a46b1a05a32 Add standard license header and move a misplaced comment.
reimar
parents: 29536
diff changeset
5 * it under the terms of the GNU General Public License as published by
5a46b1a05a32 Add standard license header and move a misplaced comment.
reimar
parents: 29536
diff changeset
6 * the Free Software Foundation; either version 2 of the License, or
5a46b1a05a32 Add standard license header and move a misplaced comment.
reimar
parents: 29536
diff changeset
7 * (at your option) any later version.
5a46b1a05a32 Add standard license header and move a misplaced comment.
reimar
parents: 29536
diff changeset
8 *
5a46b1a05a32 Add standard license header and move a misplaced comment.
reimar
parents: 29536
diff changeset
9 * MPlayer is distributed in the hope that it will be useful,
5a46b1a05a32 Add standard license header and move a misplaced comment.
reimar
parents: 29536
diff changeset
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
5a46b1a05a32 Add standard license header and move a misplaced comment.
reimar
parents: 29536
diff changeset
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
5a46b1a05a32 Add standard license header and move a misplaced comment.
reimar
parents: 29536
diff changeset
12 * GNU General Public License for more details.
5a46b1a05a32 Add standard license header and move a misplaced comment.
reimar
parents: 29536
diff changeset
13 *
5a46b1a05a32 Add standard license header and move a misplaced comment.
reimar
parents: 29536
diff changeset
14 * You should have received a copy of the GNU General Public License along
5a46b1a05a32 Add standard license header and move a misplaced comment.
reimar
parents: 29536
diff changeset
15 * with MPlayer; if not, write to the Free Software Foundation, Inc.,
5a46b1a05a32 Add standard license header and move a misplaced comment.
reimar
parents: 29536
diff changeset
16 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
5a46b1a05a32 Add standard license header and move a misplaced comment.
reimar
parents: 29536
diff changeset
17 */
29531
6bd4c0c77eab Add osx_common.c and move the keycode conversion (OSX to MPlayer) there.
reimar
parents:
diff changeset
18 #include "config.h"
6bd4c0c77eab Add osx_common.c and move the keycode conversion (OSX to MPlayer) there.
reimar
parents:
diff changeset
19
29607
5a46b1a05a32 Add standard license header and move a misplaced comment.
reimar
parents: 29536
diff changeset
20 // only to get keycode definitions from HIToolbox/Events.h
29531
6bd4c0c77eab Add osx_common.c and move the keycode conversion (OSX to MPlayer) there.
reimar
parents:
diff changeset
21 #include <Carbon/Carbon.h>
6bd4c0c77eab Add osx_common.c and move the keycode conversion (OSX to MPlayer) there.
reimar
parents:
diff changeset
22 #include "osx_common.h"
6bd4c0c77eab Add osx_common.c and move the keycode conversion (OSX to MPlayer) there.
reimar
parents:
diff changeset
23 #include "video_out.h"
6bd4c0c77eab Add osx_common.c and move the keycode conversion (OSX to MPlayer) there.
reimar
parents:
diff changeset
24 #include "osdep/keycodes.h"
29535
b2f841a1905e Fix implicit declaration of mp_input_.. functions.
reimar
parents: 29534
diff changeset
25 #include "input/input.h"
29531
6bd4c0c77eab Add osx_common.c and move the keycode conversion (OSX to MPlayer) there.
reimar
parents:
diff changeset
26
6bd4c0c77eab Add osx_common.c and move the keycode conversion (OSX to MPlayer) there.
reimar
parents:
diff changeset
27 static const struct keymap keymap[] = {
6bd4c0c77eab Add osx_common.c and move the keycode conversion (OSX to MPlayer) there.
reimar
parents:
diff changeset
28 // special keys
6bd4c0c77eab Add osx_common.c and move the keycode conversion (OSX to MPlayer) there.
reimar
parents:
diff changeset
29 {0x34, KEY_ENTER}, // Enter key on some iBooks?
6bd4c0c77eab Add osx_common.c and move the keycode conversion (OSX to MPlayer) there.
reimar
parents:
diff changeset
30 {kVK_Return, KEY_ENTER},
6bd4c0c77eab Add osx_common.c and move the keycode conversion (OSX to MPlayer) there.
reimar
parents:
diff changeset
31 {kVK_Escape, KEY_ESC},
6bd4c0c77eab Add osx_common.c and move the keycode conversion (OSX to MPlayer) there.
reimar
parents:
diff changeset
32 {kVK_Delete, KEY_BACKSPACE}, {kVK_Option, KEY_BACKSPACE}, {kVK_Control, KEY_BACKSPACE}, {kVK_Shift, KEY_BACKSPACE},
6bd4c0c77eab Add osx_common.c and move the keycode conversion (OSX to MPlayer) there.
reimar
parents:
diff changeset
33 {kVK_Tab, KEY_TAB},
6bd4c0c77eab Add osx_common.c and move the keycode conversion (OSX to MPlayer) there.
reimar
parents:
diff changeset
34
6bd4c0c77eab Add osx_common.c and move the keycode conversion (OSX to MPlayer) there.
reimar
parents:
diff changeset
35 // cursor keys
6bd4c0c77eab Add osx_common.c and move the keycode conversion (OSX to MPlayer) there.
reimar
parents:
diff changeset
36 {kVK_UpArrow, KEY_UP}, {kVK_DownArrow, KEY_DOWN}, {kVK_LeftArrow, KEY_LEFT}, {kVK_RightArrow, KEY_RIGHT},
6bd4c0c77eab Add osx_common.c and move the keycode conversion (OSX to MPlayer) there.
reimar
parents:
diff changeset
37
6bd4c0c77eab Add osx_common.c and move the keycode conversion (OSX to MPlayer) there.
reimar
parents:
diff changeset
38 // navigation block
6bd4c0c77eab Add osx_common.c and move the keycode conversion (OSX to MPlayer) there.
reimar
parents:
diff changeset
39 {kVK_Help, KEY_INSERT}, {kVK_ForwardDelete, KEY_DELETE}, {kVK_Home, KEY_HOME},
6bd4c0c77eab Add osx_common.c and move the keycode conversion (OSX to MPlayer) there.
reimar
parents:
diff changeset
40 {kVK_End, KEY_END}, {kVK_PageUp, KEY_PAGE_UP}, {kVK_PageUp, KEY_PAGE_DOWN},
6bd4c0c77eab Add osx_common.c and move the keycode conversion (OSX to MPlayer) there.
reimar
parents:
diff changeset
41
6bd4c0c77eab Add osx_common.c and move the keycode conversion (OSX to MPlayer) there.
reimar
parents:
diff changeset
42 // F-keys
6bd4c0c77eab Add osx_common.c and move the keycode conversion (OSX to MPlayer) there.
reimar
parents:
diff changeset
43 {kVK_F1, KEY_F + 1}, {kVK_F2, KEY_F + 2}, {kVK_F3, KEY_F + 3}, {kVK_F4, KEY_F + 4},
6bd4c0c77eab Add osx_common.c and move the keycode conversion (OSX to MPlayer) there.
reimar
parents:
diff changeset
44 {kVK_F5, KEY_F + 5}, {kVK_F6, KEY_F + 6}, {kVK_F7, KEY_F + 7}, {kVK_F8, KEY_F + 8},
6bd4c0c77eab Add osx_common.c and move the keycode conversion (OSX to MPlayer) there.
reimar
parents:
diff changeset
45 {kVK_F9, KEY_F + 9}, {kVK_F10, KEY_F + 10}, {kVK_F11, KEY_F + 11}, {kVK_F12, KEY_F + 12},
6bd4c0c77eab Add osx_common.c and move the keycode conversion (OSX to MPlayer) there.
reimar
parents:
diff changeset
46
6bd4c0c77eab Add osx_common.c and move the keycode conversion (OSX to MPlayer) there.
reimar
parents:
diff changeset
47 // numpad
6bd4c0c77eab Add osx_common.c and move the keycode conversion (OSX to MPlayer) there.
reimar
parents:
diff changeset
48 {kVK_ANSI_KeypadPlus, '+'}, {kVK_ANSI_KeypadMinus, '-'}, {kVK_ANSI_KeypadMultiply, '*'},
6bd4c0c77eab Add osx_common.c and move the keycode conversion (OSX to MPlayer) there.
reimar
parents:
diff changeset
49 {kVK_ANSI_KeypadDivide, '/'}, {kVK_ANSI_KeypadEnter, KEY_KPENTER}, {kVK_ANSI_KeypadDecimal, KEY_KPDEC},
6bd4c0c77eab Add osx_common.c and move the keycode conversion (OSX to MPlayer) there.
reimar
parents:
diff changeset
50 {kVK_ANSI_Keypad0, KEY_KP0}, {kVK_ANSI_Keypad1, KEY_KP1}, {kVK_ANSI_Keypad2, KEY_KP2}, {kVK_ANSI_Keypad3, KEY_KP3},
6bd4c0c77eab Add osx_common.c and move the keycode conversion (OSX to MPlayer) there.
reimar
parents:
diff changeset
51 {kVK_ANSI_Keypad4, KEY_KP4}, {kVK_ANSI_Keypad5, KEY_KP5}, {kVK_ANSI_Keypad6, KEY_KP6}, {kVK_ANSI_Keypad7, KEY_KP7},
6bd4c0c77eab Add osx_common.c and move the keycode conversion (OSX to MPlayer) there.
reimar
parents:
diff changeset
52 {kVK_ANSI_Keypad8, KEY_KP8}, {kVK_ANSI_Keypad9, KEY_KP9},
6bd4c0c77eab Add osx_common.c and move the keycode conversion (OSX to MPlayer) there.
reimar
parents:
diff changeset
53
6bd4c0c77eab Add osx_common.c and move the keycode conversion (OSX to MPlayer) there.
reimar
parents:
diff changeset
54 {0, 0}
6bd4c0c77eab Add osx_common.c and move the keycode conversion (OSX to MPlayer) there.
reimar
parents:
diff changeset
55 };
6bd4c0c77eab Add osx_common.c and move the keycode conversion (OSX to MPlayer) there.
reimar
parents:
diff changeset
56
6bd4c0c77eab Add osx_common.c and move the keycode conversion (OSX to MPlayer) there.
reimar
parents:
diff changeset
57 int convert_key(unsigned key, unsigned charcode)
6bd4c0c77eab Add osx_common.c and move the keycode conversion (OSX to MPlayer) there.
reimar
parents:
diff changeset
58 {
6bd4c0c77eab Add osx_common.c and move the keycode conversion (OSX to MPlayer) there.
reimar
parents:
diff changeset
59 int mpkey = lookup_keymap_table(keymap, key);
6bd4c0c77eab Add osx_common.c and move the keycode conversion (OSX to MPlayer) there.
reimar
parents:
diff changeset
60 if (mpkey)
6bd4c0c77eab Add osx_common.c and move the keycode conversion (OSX to MPlayer) there.
reimar
parents:
diff changeset
61 return mpkey;
6bd4c0c77eab Add osx_common.c and move the keycode conversion (OSX to MPlayer) there.
reimar
parents:
diff changeset
62 return charcode;
6bd4c0c77eab Add osx_common.c and move the keycode conversion (OSX to MPlayer) there.
reimar
parents:
diff changeset
63 }
29532
99b8d8d5c2d4 Move aspect change handling from vo_quartz to osx_common.
reimar
parents: 29531
diff changeset
64
99b8d8d5c2d4 Move aspect change handling from vo_quartz to osx_common.
reimar
parents: 29531
diff changeset
65 static int our_aspect_change;
99b8d8d5c2d4 Move aspect change handling from vo_quartz to osx_common.
reimar
parents: 29531
diff changeset
66 static float old_movie_aspect;
99b8d8d5c2d4 Move aspect change handling from vo_quartz to osx_common.
reimar
parents: 29531
diff changeset
67
99b8d8d5c2d4 Move aspect change handling from vo_quartz to osx_common.
reimar
parents: 29531
diff changeset
68 /**
99b8d8d5c2d4 Move aspect change handling from vo_quartz to osx_common.
reimar
parents: 29531
diff changeset
69 * Sends MPlayer a command to change aspect to the requested value.
99b8d8d5c2d4 Move aspect change handling from vo_quartz to osx_common.
reimar
parents: 29531
diff changeset
70 * @param new_aspect desired new aspect, < 0 means restore original.
99b8d8d5c2d4 Move aspect change handling from vo_quartz to osx_common.
reimar
parents: 29531
diff changeset
71 */
99b8d8d5c2d4 Move aspect change handling from vo_quartz to osx_common.
reimar
parents: 29531
diff changeset
72 void change_movie_aspect(float new_aspect)
99b8d8d5c2d4 Move aspect change handling from vo_quartz to osx_common.
reimar
parents: 29531
diff changeset
73 {
99b8d8d5c2d4 Move aspect change handling from vo_quartz to osx_common.
reimar
parents: 29531
diff changeset
74 char cmd_str[64];
99b8d8d5c2d4 Move aspect change handling from vo_quartz to osx_common.
reimar
parents: 29531
diff changeset
75 if (new_aspect < 0)
99b8d8d5c2d4 Move aspect change handling from vo_quartz to osx_common.
reimar
parents: 29531
diff changeset
76 new_aspect = old_movie_aspect;
99b8d8d5c2d4 Move aspect change handling from vo_quartz to osx_common.
reimar
parents: 29531
diff changeset
77 our_aspect_change = 1;
29536
1e432b300e57 Make aspect switching work again (used the wrong variable and always
reimar
parents: 29535
diff changeset
78 snprintf(cmd_str, sizeof(cmd_str), "switch_ratio %f", new_aspect);
29532
99b8d8d5c2d4 Move aspect change handling from vo_quartz to osx_common.
reimar
parents: 29531
diff changeset
79 mp_input_queue_cmd(mp_input_parse_cmd(cmd_str));
99b8d8d5c2d4 Move aspect change handling from vo_quartz to osx_common.
reimar
parents: 29531
diff changeset
80 }
99b8d8d5c2d4 Move aspect change handling from vo_quartz to osx_common.
reimar
parents: 29531
diff changeset
81
99b8d8d5c2d4 Move aspect change handling from vo_quartz to osx_common.
reimar
parents: 29531
diff changeset
82 /**
99b8d8d5c2d4 Move aspect change handling from vo_quartz to osx_common.
reimar
parents: 29531
diff changeset
83 * Call in config to save the original movie aspect.
99b8d8d5c2d4 Move aspect change handling from vo_quartz to osx_common.
reimar
parents: 29531
diff changeset
84 * This will ignore config calls caused by change_movie_aspect.
99b8d8d5c2d4 Move aspect change handling from vo_quartz to osx_common.
reimar
parents: 29531
diff changeset
85 */
99b8d8d5c2d4 Move aspect change handling from vo_quartz to osx_common.
reimar
parents: 29531
diff changeset
86 void config_movie_aspect(float config_aspect)
99b8d8d5c2d4 Move aspect change handling from vo_quartz to osx_common.
reimar
parents: 29531
diff changeset
87 {
99b8d8d5c2d4 Move aspect change handling from vo_quartz to osx_common.
reimar
parents: 29531
diff changeset
88 if (!our_aspect_change)
99b8d8d5c2d4 Move aspect change handling from vo_quartz to osx_common.
reimar
parents: 29531
diff changeset
89 old_movie_aspect = config_aspect;
99b8d8d5c2d4 Move aspect change handling from vo_quartz to osx_common.
reimar
parents: 29531
diff changeset
90 our_aspect_change = 0;
99b8d8d5c2d4 Move aspect change handling from vo_quartz to osx_common.
reimar
parents: 29531
diff changeset
91 }