winmm: Rearrange device mapping when a new default device is chosen.
[wine] / dlls / joy.cpl / joy.h
1 /*
2  * Joystick testing control panel applet resources and definitions
3  *
4  * Copyright 2012 Lucas Fialho Zawacki
5  *
6  * This library is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation; either
9  * version 2.1 of the License, or (at your option) any later version.
10  *
11  * This library is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public
17  * License along with this library; if not, write to the Free Software
18  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19  *
20  */
21
22 #ifndef __WINE_JOYSTICKCPL__
23 #define __WINE_JOYSTICKCPL__
24
25 #include <winuser.h>
26 #include <windef.h>
27 #include <commctrl.h>
28 #include <dinput.h>
29
30 extern HMODULE hcpl;
31
32 struct Effect {
33     IDirectInputEffect *effect;
34     DIEFFECT params;
35     DIEFFECTINFOW info;
36 };
37
38 struct Joystick {
39     IDirectInputDevice8W *device;
40     DIDEVICEINSTANCEW instance;
41     int num_buttons;
42     int num_axes;
43     BOOL forcefeedback;
44     int num_effects;
45     int cur_effect;
46     int chosen_effect;
47     struct Effect *effects;
48 };
49
50 #define TEST_MAX_BUTTONS    32
51 #define TEST_MAX_AXES       4
52
53 struct Graphics {
54     HWND hwnd;
55     HWND buttons[TEST_MAX_BUTTONS];
56     HWND axes[TEST_MAX_AXES];
57     HWND ff_axis;
58 };
59
60 struct JoystickData {
61     IDirectInput8W *di;
62     struct Joystick *joysticks;
63     int num_joysticks;
64     int num_ff;
65     int cur_joystick;
66     int chosen_joystick;
67     struct Graphics graphics;
68     BOOL stop;
69 };
70
71 #define NUM_PROPERTY_PAGES 3
72
73 /* strings */
74 #define IDS_CPL_NAME        1
75 #define IDS_CPL_INFO        2
76
77 /* dialogs */
78 #define IDC_STATIC          -1
79
80 #define IDD_LIST            1000
81 #define IDD_TEST            1001
82 #define IDD_FORCEFEEDBACK   1002
83
84 #define IDC_JOYSTICKLIST    2000
85 #define IDC_BUTTONDISABLE   2001
86 #define IDC_BUTTONENABLE    2002
87 #define IDC_DISABLEDLIST    2003
88 #define IDC_TESTSELECTCOMBO 2004
89 #define IDC_TESTGROUPXY     2005
90 #define IDC_TESTGROUPRXRY   2006
91 #define IDC_TESTGROUPZRZ    2007
92 #define IDC_TESTGROUPPOV    2008
93
94 #define IDC_FFSELECTCOMBO   2009
95 #define IDC_FFEFFECTLIST    2010
96
97 /* constants */
98 #define TEST_POLL_TIME      100
99
100 #define TEST_BUTTON_COL_MAX 8
101 #define TEST_BUTTON_X       8
102 #define TEST_BUTTON_Y       122
103 #define TEST_NEXT_BUTTON_X  30
104 #define TEST_NEXT_BUTTON_Y  25
105 #define TEST_BUTTON_SIZE_X  20
106 #define TEST_BUTTON_SIZE_Y  18
107
108 #define TEST_AXIS_X         43
109 #define TEST_AXIS_Y         60
110 #define TEST_NEXT_AXIS_X    77
111 #define TEST_AXIS_SIZE_X    3
112 #define TEST_AXIS_SIZE_Y    3
113 #define TEST_AXIS_MIN       -25
114 #define TEST_AXIS_MAX       25
115
116 #define FF_AXIS_X           248
117 #define FF_AXIS_Y           60
118 #define FF_AXIS_SIZE_X      3
119 #define FF_AXIS_SIZE_Y      3
120
121 #define FF_PLAY_TIME        2*DI_SECONDS
122 #define FF_PERIOD_TIME      FF_PLAY_TIME/4
123
124 #endif