Rename unzip tool.
[SquirrelJME.git] / nanocoat / include / lib / scritchui / framebuffer / fb.h
blobee18a0758cc9258fa3be54e7dc42e77b3495ca7f
1 /* -*- Mode: C; indent-tabs-mode: t; tab-width: 4 -*-
2 // ---------------------------------------------------------------------------
3 // SquirrelJME
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 // -------------------------------------------------------------------------*/
10 /**
11 * ScritchUI framebuffer interface header.
13 * @since 2024/07/16
16 #ifndef SQUIRRELJME_FB_H
17 #define SQUIRRELJME_FB_H
19 #include "sjme/config.h"
20 #include "sjme/debug.h"
21 #include "lib/scritchui/scritchui.h"
22 #include "lib/scritchui/scritchuiImpl.h"
23 #include "lib/scritchui/scritchuiPencil.h"
24 #include "lib/scritchui/scritchuiTypes.h"
26 /* Anti-C++. */
27 #ifdef __cplusplus
28 #ifndef SJME_CXX_IS_EXTERNED
29 #define SJME_CXX_IS_EXTERNED
30 #define SJME_CXX_SQUIRRELJME_FB_H
31 extern "C"
33 #endif /* #ifdef SJME_CXX_IS_EXTERNED */
34 #endif /* #ifdef __cplusplus */
36 /*--------------------------------------------------------------------------*/
38 /** Framebuffer implementation functions. */
39 extern const sjme_scritchui_implFunctions sjme_scritchui_fbFunctions;
41 /** The handle for wrapped items. */
42 #define SJME_SUI_FB_H_WRAPPED 0
44 /** The handle for non-wrapped widget state. */
45 #define SJME_SUI_FB_H_WSTATE 1
47 sjme_errorCode sjme_scritchui_fb_apiInit(
48 sjme_attrInNotNull sjme_scritchui inState);
50 /**
51 * Maps the front end for the given base component info.
53 * @param inState The input state.
54 * @param topLevel The top level component.
55 * @param wrapped The bottom level wrapped component.
56 * @return Any resultant error, if any.
57 * @since 2024/07/16
59 sjme_errorCode sjme_scritchui_fb_biMap(
60 sjme_attrInNotNull sjme_scritchui inState,
61 sjme_attrInNotNull sjme_scritchui_uiCommonBase* topLevel,
62 sjme_attrInNotNull sjme_scritchui_uiCommonBase* wrapped);
64 /**
65 * Sets the listener information for wrapping, this stores the callback
66 * and the front end into the framebuffer listener core information. When the
67 * callback is executed, it will pull from this.
69 * @param inState The current state.
70 * @param infoCore The core information from the listener.
71 * @param inListener The listener to set.
72 * @param copyFrontEnd The front end data to copy, is optional.
73 * @param wrappedFrontEnd The front end to set for the wrapper.
74 * @return Any resultant error, if any.
75 * @since 2024/07/16
77 sjme_errorCode sjme_scritchui_fb_biSetListener(
78 sjme_attrInNotNull sjme_scritchui inState,
79 sjme_attrInNotNull sjme_scritchui_uiComponent inComponent,
80 sjme_attrInNotNull sjme_scritchui_listener_void* infoCore,
81 SJME_SCRITCHUI_SET_LISTENER_ARGS(void),
82 sjme_attrInOutNotNull sjme_frontEnd* wrappedFrontEnd);
84 sjme_errorCode sjme_scritchui_fb_choiceItemInsert(
85 sjme_attrInNotNull sjme_scritchui inState,
86 sjme_attrInNotNull sjme_scritchui_uiComponent inComponent,
87 sjme_attrInOutNotNull sjme_jint* inOutIndex);
89 sjme_errorCode sjme_scritchui_fb_choiceItemRemove(
90 sjme_attrInNotNull sjme_scritchui inState,
91 sjme_attrInNotNull sjme_scritchui_uiComponent inComponent,
92 sjme_attrInPositive sjme_jint atIndex);
94 sjme_errorCode sjme_scritchui_fb_choiceItemSetEnabled(
95 sjme_attrInNotNull sjme_scritchui inState,
96 sjme_attrInNotNull sjme_scritchui_uiComponent inComponent,
97 sjme_attrInPositive sjme_jint atIndex,
98 sjme_attrInNotNull sjme_jboolean isEnabled);
100 sjme_errorCode sjme_scritchui_fb_choiceItemSetImage(
101 sjme_attrInNotNull sjme_scritchui inState,
102 sjme_attrInNotNull sjme_scritchui_uiComponent inComponent,
103 sjme_attrInPositive sjme_jint atIndex,
104 sjme_attrInNullable sjme_jint* inRgb,
105 sjme_attrInPositive sjme_jint inRgbOff,
106 sjme_attrInPositiveNonZero sjme_jint inRgbDataLen,
107 sjme_attrInPositiveNonZero sjme_jint inRgbScanLen,
108 sjme_attrInPositiveNonZero sjme_jint width,
109 sjme_attrInPositiveNonZero sjme_jint height);
111 sjme_errorCode sjme_scritchui_fb_choiceItemSetSelected(
112 sjme_attrInNotNull sjme_scritchui inState,
113 sjme_attrInNotNull sjme_scritchui_uiComponent inComponent,
114 sjme_attrInPositive sjme_jint atIndex,
115 sjme_attrInNotNull sjme_jboolean isSelected);
117 sjme_errorCode sjme_scritchui_fb_choiceItemSetString(
118 sjme_attrInNotNull sjme_scritchui inState,
119 sjme_attrInNotNull sjme_scritchui_uiComponent inComponent,
120 sjme_attrInPositive sjme_jint atIndex,
121 sjme_attrInNullable sjme_lpcstr inString);
123 sjme_errorCode sjme_scritchui_fb_componentFocusGrab(
124 sjme_attrInNotNull sjme_scritchui inState,
125 sjme_attrInNotNull sjme_scritchui_uiComponent inComponent);
127 sjme_errorCode sjme_scritchui_fb_componentFocusHas(
128 sjme_attrInNotNull sjme_scritchui inState,
129 sjme_attrInNotNull sjme_scritchui_uiComponent inComponent,
130 sjme_attrOutNotNull sjme_jboolean* outHasFocus);
132 sjme_errorCode sjme_scritchui_fb_componentPosition(
133 sjme_attrInNotNull sjme_scritchui inState,
134 sjme_attrInNotNull sjme_scritchui_uiComponent inComponent,
135 sjme_attrOutNullable sjme_jint* outX,
136 sjme_attrOutNullable sjme_jint* outY);
138 sjme_errorCode sjme_scritchui_fb_componentRepaint(
139 sjme_attrInNotNull sjme_scritchui inState,
140 sjme_attrInNotNull sjme_scritchui_uiComponent inComponent,
141 sjme_attrInPositive sjme_jint x,
142 sjme_attrInPositive sjme_jint y,
143 sjme_attrInPositiveNonZero sjme_jint width,
144 sjme_attrInPositiveNonZero sjme_jint height);
146 sjme_errorCode sjme_scritchui_fb_componentRevalidate(
147 sjme_attrInNotNull sjme_scritchui inState,
148 sjme_attrInNotNull sjme_scritchui_uiComponent inComponent);
150 sjme_errorCode sjme_scritchui_fb_componentSetInputListener(
151 sjme_attrInNotNull sjme_scritchui inState,
152 sjme_attrInNotNull sjme_scritchui_uiComponent inComponent,
153 SJME_SCRITCHUI_SET_LISTENER_ARGS(input));
155 sjme_errorCode sjme_scritchui_fb_componentSetPaintListener(
156 sjme_attrInNotNull sjme_scritchui inState,
157 sjme_attrInNotNull sjme_scritchui_uiComponent inComponent,
158 SJME_SCRITCHUI_SET_LISTENER_ARGS(paint));
160 sjme_errorCode sjme_scritchui_fb_componentSetSizeListener(
161 sjme_attrInNotNull sjme_scritchui inState,
162 sjme_attrInNotNull sjme_scritchui_uiComponent inComponent,
163 SJME_SCRITCHUI_SET_LISTENER_ARGS(size));
165 sjme_errorCode sjme_scritchui_fb_componentSetVisibleListener(
166 sjme_attrInNotNull sjme_scritchui inState,
167 sjme_attrInNotNull sjme_scritchui_uiComponent inComponent,
168 SJME_SCRITCHUI_SET_LISTENER_ARGS(visible));
170 sjme_errorCode sjme_scritchui_fb_componentSize(
171 sjme_attrInNotNull sjme_scritchui inState,
172 sjme_attrInNotNull sjme_scritchui_uiComponent inComponent,
173 sjme_attrOutNullable sjme_jint* outWidth,
174 sjme_attrOutNullable sjme_jint* outHeight);
176 sjme_errorCode sjme_scritchui_fb_containerAdd(
177 sjme_attrInNotNull sjme_scritchui inState,
178 sjme_attrInNotNull sjme_scritchui_uiComponent inContainer,
179 sjme_attrInNotNull sjme_scritchui_uiContainer inContainerData,
180 sjme_attrInNotNull sjme_scritchui_uiComponent addComponent);
182 sjme_errorCode sjme_scritchui_fb_containerRemove(
183 sjme_attrInNotNull sjme_scritchui inState,
184 sjme_attrInNotNull sjme_scritchui_uiComponent inContainer,
185 sjme_attrInNotNull sjme_scritchui_uiContainer inContainerData,
186 sjme_attrInNotNull sjme_scritchui_uiComponent removeComponent);
188 sjme_errorCode sjme_scritchui_fb_containerSetBounds(
189 sjme_attrInNotNull sjme_scritchui inState,
190 sjme_attrInNotNull sjme_scritchui_uiComponent inContainer,
191 sjme_attrInNotNull sjme_scritchui_uiComponent inComponent,
192 sjme_attrInPositive sjme_jint x,
193 sjme_attrInPositive sjme_jint y,
194 sjme_attrInPositiveNonZero sjme_jint width,
195 sjme_attrInPositiveNonZero sjme_jint height);
197 sjme_errorCode sjme_scritchui_fb_labelSetString(
198 sjme_attrInNotNull sjme_scritchui inState,
199 sjme_attrInNotNull sjme_scritchui_uiCommon inCommon,
200 sjme_attrInNullable sjme_lpcstr inString);
202 sjme_errorCode sjme_scritchui_fb_lafElementColor(
203 sjme_attrInNotNull sjme_scritchui inState,
204 sjme_attrInNullable sjme_scritchui_uiComponent inContext,
205 sjme_attrOutNotNull sjme_jint* outRGB,
206 sjme_attrInValue sjme_scritchui_lafElementColorType elementColor);
208 sjme_errorCode sjme_scritchui_fb_listNew(
209 sjme_attrInNotNull sjme_scritchui inState,
210 sjme_attrInNotNull sjme_scritchui_uiList inList,
211 sjme_attrInNotNull const sjme_scritchui_impl_initParamList* init);
213 sjme_errorCode sjme_scritchui_fb_loopExecute(
214 sjme_attrInNotNull sjme_scritchui inState,
215 sjme_attrInNotNull sjme_thread_mainFunc callback,
216 sjme_attrInNullable sjme_thread_parameter anything);
218 sjme_errorCode sjme_scritchui_fb_loopExecuteLater(
219 sjme_attrInNotNull sjme_scritchui inState,
220 sjme_attrInNotNull sjme_thread_mainFunc callback,
221 sjme_attrInNullable sjme_thread_parameter anything);
223 sjme_errorCode sjme_scritchui_fb_loopExecuteWait(
224 sjme_attrInNotNull sjme_scritchui inState,
225 sjme_attrInNotNull sjme_thread_mainFunc callback,
226 sjme_attrInNullable sjme_thread_parameter anything);
228 sjme_errorCode sjme_scritchui_fb_menuBarNew(
229 sjme_attrInNotNull sjme_scritchui inState,
230 sjme_attrInNotNull sjme_scritchui_uiMenuBar inMenuBar,
231 sjme_attrInNullable sjme_pointer ignored);
233 sjme_errorCode sjme_scritchui_fb_menuInsert(
234 sjme_attrInNotNull sjme_scritchui inState,
235 sjme_attrInNotNull sjme_scritchui_uiMenuKind intoMenu,
236 sjme_attrInPositive sjme_jint atIndex,
237 sjme_attrInNotNull sjme_scritchui_uiMenuKind childItem);
239 sjme_errorCode sjme_scritchui_fb_menuItemNew(
240 sjme_attrInNotNull sjme_scritchui inState,
241 sjme_attrInNotNull sjme_scritchui_uiMenuItem inMenuItem,
242 sjme_attrInNotNull const sjme_scritchui_impl_initParamMenuItem* init);
244 sjme_errorCode sjme_scritchui_fb_menuNew(
245 sjme_attrInNotNull sjme_scritchui inState,
246 sjme_attrInNotNull sjme_scritchui_uiMenu inMenu,
247 sjme_attrInNullable sjme_pointer ignored);
249 sjme_errorCode sjme_scritchui_fb_menuRemove(
250 sjme_attrInNotNull sjme_scritchui inState,
251 sjme_attrInNotNull sjme_scritchui_uiMenuKind fromMenu,
252 sjme_attrInPositive sjme_jint atIndex);
254 sjme_errorCode sjme_scritchui_fb_panelEnableFocus(
255 sjme_attrInNotNull sjme_scritchui inState,
256 sjme_attrInNotNull sjme_scritchui_uiPanel inPanel,
257 sjme_attrInValue sjme_jboolean enableFocus,
258 sjme_attrInValue sjme_jboolean defaultFocus);
260 sjme_errorCode sjme_scritchui_fb_panelNew(
261 sjme_attrInNotNull sjme_scritchui inState,
262 sjme_attrInNotNull sjme_scritchui_uiPanel inPanel,
263 sjme_attrInNullable sjme_pointer ignored);
265 sjme_errorCode sjme_scritchui_fb_screens(
266 sjme_attrInNotNull sjme_scritchui inState,
267 sjme_attrOutNotNull sjme_scritchui_uiScreen* outScreens,
268 sjme_attrInOutNotNull sjme_jint* inOutNumScreens);
270 sjme_errorCode sjme_scritchui_fb_scrollPanelNew(
271 sjme_attrInNotNull sjme_scritchui inState,
272 sjme_attrInNotNull sjme_scritchui_uiScrollPanel inScrollPanel,
273 sjme_attrInNullable sjme_pointer ignored);
275 sjme_errorCode sjme_scritchui_fb_viewGetView(
276 sjme_attrInNotNull sjme_scritchui inState,
277 sjme_attrInNotNull sjme_scritchui_uiComponent inComponent,
278 sjme_attrOutNotNull sjme_scritchui_rect* outViewRect);
280 sjme_errorCode sjme_scritchui_fb_viewSetArea(
281 sjme_attrInNotNull sjme_scritchui inState,
282 sjme_attrInNotNull sjme_scritchui_uiComponent inComponent,
283 sjme_attrInNotNull const sjme_scritchui_dim* inViewArea,
284 sjme_attrInNotNull const sjme_scritchui_dim* inViewPage);
286 sjme_errorCode sjme_scritchui_fb_viewSetView(
287 sjme_attrInNotNull sjme_scritchui inState,
288 sjme_attrInNotNull sjme_scritchui_uiComponent inComponent,
289 sjme_attrInNotNull const sjme_scritchui_point* inViewPos);
291 sjme_errorCode sjme_scritchui_fb_viewSetViewListener(
292 sjme_attrInNotNull sjme_scritchui inState,
293 sjme_attrInNotNull sjme_scritchui_uiComponent inComponent,
294 SJME_SCRITCHUI_SET_LISTENER_ARGS(view));
296 sjme_errorCode sjme_scritchui_fb_windowContentMinimumSize(
297 sjme_attrInNotNull sjme_scritchui inState,
298 sjme_attrInNotNull sjme_scritchui_uiWindow inWindow,
299 sjme_attrInPositiveNonZero sjme_jint width,
300 sjme_attrInPositiveNonZero sjme_jint height);
302 sjme_errorCode sjme_scritchui_fb_windowNew(
303 sjme_attrInNotNull sjme_scritchui inState,
304 sjme_attrInNotNull sjme_scritchui_uiWindow inWindow,
305 sjme_attrInNullable sjme_pointer ignored);
307 sjme_errorCode sjme_scritchui_fb_windowSetCloseListener(
308 sjme_attrInNotNull sjme_scritchui inState,
309 sjme_attrInNotNull sjme_scritchui_uiWindow inWindow,
310 SJME_SCRITCHUI_SET_LISTENER_ARGS(close));
312 sjme_errorCode sjme_scritchui_fb_windowSetMenuBar(
313 sjme_attrInNotNull sjme_scritchui inState,
314 sjme_attrInNotNull sjme_scritchui_uiWindow inWindow,
315 sjme_attrInNullable sjme_scritchui_uiMenuBar inMenuBar);
317 sjme_errorCode sjme_scritchui_fb_windowSetVisible(
318 sjme_attrInNotNull sjme_scritchui inState,
319 sjme_attrInNotNull sjme_scritchui_uiWindow inWindow,
320 sjme_attrInValue sjme_jboolean isVisible);
322 /*--------------------------------------------------------------------------*/
324 /* Anti-C++. */
325 #ifdef __cplusplus
326 #ifdef SJME_CXX_SQUIRRELJME_FB_H
328 #undef SJME_CXX_SQUIRRELJME_FB_H
329 #undef SJME_CXX_IS_EXTERNED
330 #endif /* #ifdef SJME_CXX_SQUIRRELJME_FB_H */
331 #endif /* #ifdef __cplusplus */
333 #endif /* SQUIRRELJME_FB_H */