1 /* -*- Mode: C; indent-tabs-mode: t; tab-width: 4 -*-
2 // ---------------------------------------------------------------------------
4 // Copyright (C) Stephanie Gawroriski <xer@multiphasicapps.net>
5 // ---------------------------------------------------------------------------
6 // SquirrelJME is under the Mozilla Public License Version 2.0.
7 // See license.mkd for licensing and copyright information.
8 // -------------------------------------------------------------------------*/
11 * Win32 ScritchUI Implementation.
16 #ifndef SQUIRRELJME_WIN32_H
17 #define SQUIRRELJME_WIN32_H
19 #include "lib/scritchui/scritchui.h"
20 #include "lib/scritchui/scritchuiImpl.h"
21 #include "lib/scritchui/scritchuiPencil.h"
25 #ifndef SJME_CXX_IS_EXTERNED
26 #define SJME_CXX_IS_EXTERNED
27 #define SJME_CXX_SQUIRRELJME_WIN32_H
30 #endif /* #ifdef SJME_CXX_IS_EXTERNED */
31 #endif /* #ifdef __cplusplus */
33 /*--------------------------------------------------------------------------*/
36 #define SJME_SUI_WIN32_H_HWND 0
39 #define SJME_SUI_WIN32_H_HMENU 0
41 /** Menu sub handle. */
42 #define SJME_SUI_WIN32_H_HSUBMENU 1
44 /** Window class atom. */
45 #define SJME_SUI_WIN32_H_HWNDATOM 2
47 /** Void window handle. */
48 #define SJME_SUI_WIN32_H_VOID 3
50 /** Are we on Windows 9x? */
51 #define SJME_SUI_WIN32_V_WIN9X 3
53 /** Win32 pencil functions. */
54 extern const sjme_scritchui_pencilImplFunctions
55 sjme_scritchui_win32_pencilFunctions
;
57 sjme_errorCode
sjme_scritchui_win32_apiInit(
58 sjme_attrInNotNull sjme_scritchui inState
);
60 sjme_errorCode
sjme_scritchui_win32_componentFocusGrab(
61 sjme_attrInNotNull sjme_scritchui inState
,
62 sjme_attrInNotNull sjme_scritchui_uiComponent inComponent
);
64 sjme_errorCode
sjme_scritchui_win32_componentFocusHas(
65 sjme_attrInNotNull sjme_scritchui inState
,
66 sjme_attrInNotNull sjme_scritchui_uiComponent inComponent
,
67 sjme_attrOutNotNull sjme_jboolean
* outHasFocus
);
69 sjme_errorCode
sjme_scritchui_win32_componentPosition(
70 sjme_attrInNotNull sjme_scritchui inState
,
71 sjme_attrInNotNull sjme_scritchui_uiComponent inComponent
,
72 sjme_attrOutNullable sjme_jint
* outX
,
73 sjme_attrOutNullable sjme_jint
* outY
);
75 sjme_errorCode
sjme_scritchui_win32_componentRepaint(
76 sjme_attrInNotNull sjme_scritchui inState
,
77 sjme_attrInNotNull sjme_scritchui_uiComponent inComponent
,
78 sjme_attrInPositive sjme_jint x
,
79 sjme_attrInPositive sjme_jint y
,
80 sjme_attrInPositiveNonZero sjme_jint width
,
81 sjme_attrInPositiveNonZero sjme_jint height
);
83 sjme_errorCode
sjme_scritchui_win32_componentRevalidate(
84 sjme_attrInNotNull sjme_scritchui inState
,
85 sjme_attrInNotNull sjme_scritchui_uiComponent inComponent
);
87 sjme_errorCode
sjme_scritchui_win32_componentSetPaintListener(
88 sjme_attrInNotNull sjme_scritchui inState
,
89 sjme_attrInNotNull sjme_scritchui_uiComponent inComponent
,
90 SJME_SCRITCHUI_SET_LISTENER_ARGS(paint
));
92 sjme_errorCode
sjme_scritchui_win32_containerAdd(
93 sjme_attrInNotNull sjme_scritchui inState
,
94 sjme_attrInNotNull sjme_scritchui_uiComponent inContainer
,
95 sjme_attrInNotNull sjme_scritchui_uiContainer inContainerData
,
96 sjme_attrInNotNull sjme_scritchui_uiComponent addComponent
);
98 sjme_errorCode
sjme_scritchui_win32_containerRemove(
99 sjme_attrInNotNull sjme_scritchui inState
,
100 sjme_attrInNotNull sjme_scritchui_uiComponent inContainer
,
101 sjme_attrInNotNull sjme_scritchui_uiContainer inContainerData
,
102 sjme_attrInNotNull sjme_scritchui_uiComponent removeComponent
);
104 sjme_errorCode
sjme_scritchui_win32_containerSetBounds(
105 sjme_attrInNotNull sjme_scritchui inState
,
106 sjme_attrInNotNull sjme_scritchui_uiComponent inContainer
,
107 sjme_attrInNotNull sjme_scritchui_uiComponent inComponent
,
108 sjme_attrInPositive sjme_jint x
,
109 sjme_attrInPositive sjme_jint y
,
110 sjme_attrInPositiveNonZero sjme_jint width
,
111 sjme_attrInPositiveNonZero sjme_jint height
);
113 sjme_errorCode
sjme_scritchui_win32_componentSize(
114 sjme_attrInNotNull sjme_scritchui inState
,
115 sjme_attrInNotNull sjme_scritchui_uiComponent inComponent
,
116 sjme_attrOutNullable sjme_jint
* outWidth
,
117 sjme_attrOutNullable sjme_jint
* outHeight
);
119 sjme_errorCode
sjme_scritchui_win32_labelSetString(
120 sjme_attrInNotNull sjme_scritchui inState
,
121 sjme_attrInNotNull sjme_scritchui_uiCommon inCommon
,
122 sjme_attrInNullable sjme_lpcstr inString
);
124 sjme_errorCode
sjme_scritchui_win32_lafElementColor(
125 sjme_attrInNotNull sjme_scritchui inState
,
126 sjme_attrInNullable sjme_scritchui_uiComponent inContext
,
127 sjme_attrOutNotNull sjme_jint
* outRGB
,
128 sjme_attrInValue sjme_scritchui_lafElementColorType elementColor
);
130 sjme_errorCode
sjme_scritchui_win32_loopExecuteLater(
131 sjme_attrInNotNull sjme_scritchui inState
,
132 sjme_attrInNotNull sjme_thread_mainFunc callback
,
133 sjme_attrInNullable sjme_thread_parameter anything
);
135 sjme_errorCode
sjme_scritchui_win32_loopIterate(
136 sjme_attrInNotNull sjme_scritchui inState
,
137 sjme_attrInValue sjme_jboolean blocking
,
138 sjme_attrOutNullable sjme_jboolean
* outHasTerminated
);
140 sjme_errorCode
sjme_scritchui_win32_menuBarNew(
141 sjme_attrInNotNull sjme_scritchui inState
,
142 sjme_attrInNotNull sjme_scritchui_uiMenuBar inMenuBar
,
143 sjme_attrInNullable sjme_pointer ignored
);
145 sjme_errorCode
sjme_scritchui_win32_menuInsert(
146 sjme_attrInNotNull sjme_scritchui inState
,
147 sjme_attrInNotNull sjme_scritchui_uiMenuKind intoMenu
,
148 sjme_attrInPositive sjme_jint atIndex
,
149 sjme_attrInNotNull sjme_scritchui_uiMenuKind childItem
);
151 sjme_errorCode
sjme_scritchui_win32_menuItemNew(
152 sjme_attrInNotNull sjme_scritchui inState
,
153 sjme_attrInNotNull sjme_scritchui_uiMenuItem inMenuItem
,
154 sjme_attrInNotNull
const sjme_scritchui_impl_initParamMenuItem
* init
);
156 sjme_errorCode
sjme_scritchui_win32_menuNew(
157 sjme_attrInNotNull sjme_scritchui inState
,
158 sjme_attrInNotNull sjme_scritchui_uiMenu inMenu
,
159 sjme_attrInNullable sjme_pointer ignored
);
161 sjme_errorCode
sjme_scritchui_win32_menuRemove(
162 sjme_attrInNotNull sjme_scritchui inState
,
163 sjme_attrInNotNull sjme_scritchui_uiMenuKind fromMenu
,
164 sjme_attrInPositive sjme_jint atIndex
);
166 sjme_errorCode
sjme_scritchui_win32_panelEnableFocus(
167 sjme_attrInNotNull sjme_scritchui inState
,
168 sjme_attrInNotNull sjme_scritchui_uiPanel inPanel
,
169 sjme_attrInValue sjme_jboolean enableFocus
,
170 sjme_attrInValue sjme_jboolean defaultFocus
);
172 sjme_errorCode
sjme_scritchui_win32_panelNew(
173 sjme_attrInNotNull sjme_scritchui inState
,
174 sjme_attrInNotNull sjme_scritchui_uiPanel inPanel
,
175 sjme_attrInNullable sjme_pointer ignored
);
177 sjme_errorCode
sjme_scritchui_win32_screens(
178 sjme_attrInNotNull sjme_scritchui inState
,
179 sjme_attrOutNotNull sjme_scritchui_uiScreen
* outScreens
,
180 sjme_attrInOutNotNull sjme_jint
* inOutNumScreens
);
182 sjme_errorCode
sjme_scritchui_win32_scrollPanelNew(
183 sjme_attrInNotNull sjme_scritchui inState
,
184 sjme_attrInNotNull sjme_scritchui_uiScrollPanel inScrollPanel
,
185 sjme_attrInNullable sjme_pointer ignored
);
187 sjme_errorCode
sjme_scritchui_win32_viewGetView(
188 sjme_attrInNotNull sjme_scritchui inState
,
189 sjme_attrInNotNull sjme_scritchui_uiComponent inComponent
,
190 sjme_attrOutNotNull sjme_scritchui_rect
* outViewRect
);
192 sjme_errorCode
sjme_scritchui_win32_viewSetArea(
193 sjme_attrInNotNull sjme_scritchui inState
,
194 sjme_attrInNotNull sjme_scritchui_uiComponent inComponent
,
195 sjme_attrInNotNull
const sjme_scritchui_dim
* inViewArea
,
196 sjme_attrInNotNull
const sjme_scritchui_dim
* inViewPage
);
198 sjme_errorCode
sjme_scritchui_win32_viewSetView(
199 sjme_attrInNotNull sjme_scritchui inState
,
200 sjme_attrInNotNull sjme_scritchui_uiComponent inComponent
,
201 sjme_attrInNotNull
const sjme_scritchui_point
* inViewPos
);
203 sjme_errorCode
sjme_scritchui_win32_windowContentMinimumSize(
204 sjme_attrInNotNull sjme_scritchui inState
,
205 sjme_attrInNotNull sjme_scritchui_uiWindow inWindow
,
206 sjme_attrInPositiveNonZero sjme_jint width
,
207 sjme_attrInPositiveNonZero sjme_jint height
);
209 sjme_errorCode
sjme_scritchui_win32_windowNew(
210 sjme_attrInNotNull sjme_scritchui inState
,
211 sjme_attrInNotNull sjme_scritchui_uiWindow inWindow
,
212 sjme_attrInNullable sjme_pointer ignored
);
214 sjme_errorCode
sjme_scritchui_win32_windowSetMenuBar(
215 sjme_attrInNotNull sjme_scritchui inState
,
216 sjme_attrInNotNull sjme_scritchui_uiWindow inWindow
,
217 sjme_attrInNullable sjme_scritchui_uiMenuBar inMenuBar
);
219 sjme_errorCode
sjme_scritchui_win32_windowSetVisible(
220 sjme_attrInNotNull sjme_scritchui inState
,
221 sjme_attrInNotNull sjme_scritchui_uiWindow inWindow
,
222 sjme_attrInValue sjme_jboolean isVisible
);
224 /*--------------------------------------------------------------------------*/
228 #ifdef SJME_CXX_SQUIRRELJME_WIN32_H
230 #undef SJME_CXX_SQUIRRELJME_WIN32_H
231 #undef SJME_CXX_IS_EXTERNED
232 #endif /* #ifdef SJME_CXX_SQUIRRELJME_WIN32_H */
233 #endif /* #ifdef __cplusplus */
235 #endif /* SQUIRRELJME_WIN32_H */