1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
|
/*
* This file is subject to the terms of the GFX License. If a copy of
* the license was not distributed with this file, you can obtain one at:
*
* http://ugfx.org/license.html
*/
/**
* @file src/gwin/gwin_options.h
* @brief GWIN sub-system options header file.
*
* @addtogroup GWIN
* @brief The GWIN module uses all the other modules (GDISP, GINPUT, GTIMER...) to
* form a complete GUI toolkit.
*
* @{
*/
#ifndef _GWIN_OPTIONS_H
#define _GWIN_OPTIONS_H
/**
* @name GWIN Functionality to be included
* @{
*/
/**
* @brief Should window manager support be included
* @details Defaults to FALSE
*/
#ifndef GWIN_NEED_WINDOWMANAGER
#define GWIN_NEED_WINDOWMANAGER FALSE
#endif
/**
* @brief Should the widget hierarchy be included. This provides parent-child features.
* @details Defaults to FALSE
*/
#ifndef GWIN_NEED_CONTAINERS
#define GWIN_NEED_CONTAINERS FALSE
#endif
/**
* @brief Should widget functions be included. Needed for any widget (eg Buttons, Sliders etc)
* @details Defaults to FALSE
*/
#ifndef GWIN_NEED_WIDGET
#define GWIN_NEED_WIDGET FALSE
#endif
/**
* @brief The width of the rectangle that highlights a widget that is focused
* @details Defaults to 1
*/
#ifndef GWIN_FOCUS_HIGHLIGHT_WIDTH
#define GWIN_FOCUS_HIGHLIGHT_WIDTH 1
#endif
/**
* @brief Should the simple container be included.
* @details Defaults to FALSE
*/
#ifndef GWIN_NEED_CONTAINER
#define GWIN_NEED_CONTAINER FALSE
#endif
/**
* @brief Should the frame widget be included.
* @details Defaults to FALSE
*/
#ifndef GWIN_NEED_FRAME
#define GWIN_NEED_FRAME FALSE
#endif
/**
* @brief Should console functions be included.
* @details Defaults to FALSE
*/
#ifndef GWIN_NEED_CONSOLE
#define GWIN_NEED_CONSOLE FALSE
#endif
/**
* @brief Should graph functions be included.
* @details Defaults to FALSE
*/
#ifndef GWIN_NEED_GRAPH
#define GWIN_NEED_GRAPH FALSE
#endif
/**
* @brief Should gl3d functions be included.
* @details Defaults to FALSE
*/
#ifndef GWIN_NEED_GL3D
#define GWIN_NEED_GL3D FALSE
#endif
/**
* @brief Should button functions be included.
* @details Defaults to FALSE
*/
#ifndef GWIN_NEED_BUTTON
#define GWIN_NEED_BUTTON FALSE
#endif
/**
* @brief Should progressbar functions be included.
* @details Defaults to FALSE
*/
#ifndef GWIN_NEED_PROGRESSBAR
#define GWIN_NEED_PROGRESSBAR FALSE
#endif
/**
* @brief Should slider functions be included.
* @details Defaults to FALSE
*/
#ifndef GWIN_NEED_SLIDER
#define GWIN_NEED_SLIDER FALSE
#endif
/**
* @brief Should checkbox functions be included.
* @details Defaults to FALSE
*/
#ifndef GWIN_NEED_CHECKBOX
#define GWIN_NEED_CHECKBOX FALSE
#endif
/**
* @brief Should image functions be included.
* @details Defaults to FALSE
*/
#ifndef GWIN_NEED_IMAGE
#define GWIN_NEED_IMAGE FALSE
#endif
/**
* @brief Should label functions be included.
* @details Defaults to FALSE
*/
#ifndef GWIN_NEED_LABEL
#define GWIN_NEED_LABEL FALSE
#endif
/**
* @brief Should radio button functions be included.
* @details Defaults to FALSE
*/
#ifndef GWIN_NEED_RADIO
#define GWIN_NEED_RADIO FALSE
#endif
/**
* @brief Should list widget functions be included.
* @details Defaults to FALSE
*/
#ifndef GWIN_NEED_LIST
#define GWIN_NEED_LIST FALSE
#endif
/**
* @brief Should tabset functions be included.
* @details Defaults to FALSE
*/
#ifndef GWIN_NEED_TABSET
#define GWIN_NEED_TABSET FALSE
#endif
/**
* @brief Should the virtual keyboard be included.
* @details Defaults to FALSE
*/
#ifndef GWIN_NEED_KEYBOARD
#define GWIN_NEED_KEYBOARD FALSE
#endif
/**
* @brief Should the textedit widget be included.
* @details Defaults to FALSE
*/
#ifndef GWIN_NEED_TEXTEDIT
#define GWIN_NEED_TEXTEDIT FALSE
#endif
/**
* @}
*
* @name GWIN Optional Parameters
* @{
*/
/**
* @brief Add a tag to each widget
* @details Defaults to FALSE
* @note Adds a tag member to each widget. Any events created include this tag.
* The enables switch based application logic to detect the event source.
*/
#ifndef GWIN_WIDGET_TAGS
#define GWIN_WIDGET_TAGS FALSE
#endif
/**
* @brief Use flat styling for controls rather than a 3D look
* @details Defaults to FALSE
* @note This may appear better on color-restricted displays
* @note Flat styling is less graphics and cpu intensive (marginally) than the default 3D look.
*/
#ifndef GWIN_FLAT_STYLING
#define GWIN_FLAT_STYLING FALSE
#endif
/**
* @brief Don't use a timer for redrawing windows
* @details Defaults to FALSE
* @note Normally windows and widgets are redrawn on a timer. Setting this
* option causes them to be redrawn immediately. Note that this can
* cause extended blocking times on events and saves little code.
* @note If GWIN_NEED_WINDOWMANAGER is FALSE then this setting is ignored
* as redrawing always occurs immediately.
*/
#ifndef GWIN_REDRAW_IMMEDIATE
#define GWIN_REDRAW_IMMEDIATE FALSE
#endif
/**
* @brief Redraw all windows in a single operation
* @details Defaults to FALSE
* @note Windows are normally redraw one per gtimer cycle.
* Setting this option causes all windows to be redrawn in
* a single gtimer cycle. Note that this can
* cause extended blocking times on the timer thread but may
* speed up redraw slightly.
* @note This is only relevant if GWIN_REDRAW_IMMEDIATE is FALSE.
* Everything always gets redrawn in a single operation if
* GWIN_REDRAW_IMMEDIATE is TRUE.
*/
#ifndef GWIN_REDRAW_SINGLEOP
#define GWIN_REDRAW_SINGLEOP FALSE
#endif
/**
* @brief Buttons should not insist the mouse is over the button on mouse release
* @details Defaults to FALSE
*/
#ifndef GWIN_BUTTON_LAZY_RELEASE
#define GWIN_BUTTON_LAZY_RELEASE FALSE
#endif
/**
* @brief Should the content of the console be saved for redrawing.
* @details Defaults to FALSE
* @details If this feature is enabled, the contents of the console will be saved
* as it is written. If a redraw is required it will be redrawn from the
* history. Scrolling will also use the history buffer if it is turned on.
* @note Using this option allocates the amount of memory to store the
* history based on the minimum character width in the current font
* at the time the history is turned on. Using a fixed width font is a good
* idea to minimize memory usage.
* @note If you change the size of the window or you change the font being displayed
* you should turn off the history and then turn it back on in order to get
* a new buffer of the correct size for the window/font combination. Strange
* redrawing and scrolling effects can occur if the buffer is too small to
* save a complete screen of data. Note the system tries to optimize storage
* so this may only be evident in very limited situations eg with a console
* with many characters in it.
* @note @p gwinConsoleSetBuffer() can be used to turn the history buffer off and on.
*/
#ifndef GWIN_CONSOLE_USE_HISTORY
#define GWIN_CONSOLE_USE_HISTORY FALSE
#endif
/**
* @brief Use font width averaging for the history buffer allocation.
* @details Defaults to FALSE
* @details If this feature is enabled, the width one third of the way between
* the font's character width minimum and maximum will be used instead
* of the font's minimum width.
* @note This option reduces the memory allocation for a variable width font's
* history buffer. Note that strange
* redrawing and scrolling effects can occur if the buffer is too small to
* save a complete screen of data. The system tries to optimize storage
* so this may only be evident in very limited situations eg with a console
* with many characters in it.
*/
#ifndef GWIN_CONSOLE_HISTORY_AVERAGING
#define GWIN_CONSOLE_HISTORY_AVERAGING FALSE
#endif
/**
* @brief Should the history be turned on for all console windows when they are first created.
* @details Defaults to FALSE
* @note @p gwinConsoleSetBuffer() can be used to turn the history buffer off and on at
* any time.
*/
#ifndef GWIN_CONSOLE_HISTORY_ATCREATE
#define GWIN_CONSOLE_HISTORY_ATCREATE FALSE
#endif
/**
* @brief Console Windows need floating point support in @p gwinPrintf
* @details Defaults to FALSE
*/
#ifndef GWIN_CONSOLE_USE_FLOAT
#define GWIN_CONSOLE_USE_FLOAT FALSE
#endif
/**
* @brief Console windows support escape sequences to control display
* @details Defaults to FALSE
*
* @note
* Currently supported:
* ESC color Change subsequent text color
* color: "0" = black, "1" = red, "2" = green, "3" = yellow, "4" = blue,
* "5" = magenta, "6" = cyan, "7" = white
* ESC C Revert subsequent text color to the window default
* ESC u Turn on underline
* ESC U Turn off underline
* ESC b Turn on bold
* ESC B Turn off bold
* ESC J Clear the window
*/
#ifndef GWIN_CONSOLE_ESCSEQ
#define GWIN_CONSOLE_ESCSEQ FALSE
#endif
/**
* @brief Console Windows need BaseStreamSequential support (ChibiOS only)
* @details Defaults to FALSE
* @note To use the ChibiOS basestream functions such as chprintf()
* for printing in a console window you need to set this option to
* TRUE in your gfxconf.h and include in your application source file...
* \#include "chprintf.h"
* In your makefile, as part of your list of C source files, include
* ${CHIBIOS}/os/various/chprintf.c
*/
#ifndef GWIN_CONSOLE_USE_BASESTREAM
#define GWIN_CONSOLE_USE_BASESTREAM FALSE
#endif
/**
* @brief Image windows can optionally support animated images
* @details Defaults to FALSE
*/
#ifndef GWIN_NEED_IMAGE_ANIMATION
#define GWIN_NEED_IMAGE_ANIMATION FALSE
#endif
/**
* @brief Enable the API to use attributes in the label widget
* @details Defaults to FALSE
* @note Using this feature is discouraged. The proper (and faster as well
* as more efficient) way is to use two separate labels.
*/
#ifndef GWIN_LABEL_ATTRIBUTE
#define GWIN_LABEL_ATTRIBUTE FALSE
#endif
/**
* @brief Enable the API to use images in items in the list widget
* @details Defaults to FALSE
*/
#ifndef GWIN_NEED_LIST_IMAGES
#define GWIN_NEED_LIST_IMAGES FALSE
#endif
/**
* @brief Enable the API to automatically increment the progressbar over time
* @details Defaults to FALSE
*/
#ifndef GWIN_PROGRESSBAR_AUTO
#define GWIN_PROGRESSBAR_AUTO FALSE
#endif
/**
* @brief Should the slider avoid snapping to a fixed position when the mouse is released
* @details Defaults to FALSE
* @note If FALSE the slider will snap to the closest set-able position when the
* mouse is released. If TRUE it will maintain the position the
* mouse was released at, except when at the minimum and maximum slider values.
*/
#ifndef GWIN_SLIDER_NOSNAP
#define GWIN_SLIDER_NOSNAP FALSE
#endif
/**
* @brief The number of pixels of dead-band at each end of the slider
* @details Defaults to 5
* @note A dead-band is required because fingers can often cannot
* accurately control the slider peg at the edges of the slider
*/
#ifndef GWIN_SLIDER_DEAD_BAND
#define GWIN_SLIDER_DEAD_BAND 5
#endif
/**
* @brief How many toggles it takes to go from minimum to maximum value on a slider
* @details Defaults to 20
* @note When the slider is being operated by a toggle device this setting describes
* how many toggles are required to go from end to end.
*/
#ifndef GWIN_SLIDER_TOGGLE_INC
#define GWIN_SLIDER_TOGGLE_INC 20
#endif
/**
* @brief The height in pixels of a row of tabs in a tabset
* @details Defaults to 18
*/
#ifndef GWIN_TABSET_TABHEIGHT
#define GWIN_TABSET_TABHEIGHT 18
#endif
/**
* @brief Should flashing of widgets be supported
* @details Defaults to FALSE
* @pre Requires GWIN_NEED_WINDOWMANAGER to be TRUE
*/
#ifndef GWIN_NEED_FLASHING
#define GWIN_NEED_FLASHING FALSE
#endif
/**
* @brief What is the period for the flashing timer
* @details Defaults to 250 milliseconds
*/
#ifndef GWIN_FLASHING_PERIOD
#define GWIN_FLASHING_PERIOD 250
#endif
/**
* @brief The default keyboard layout for the virtual gwin keyboard
* @details Defaults to VirtualKeyboardLayout_English1
*/
#ifndef GWIN_KEYBOARD_DEFAULT_LAYOUT
#define GWIN_KEYBOARD_DEFAULT_LAYOUT VirtualKeyboard_English1
#endif
/**
* @}
*
* @name GWIN Virtual Keyboard Layouts
* @brief One or more of these may be defined. They will only be created if GWIN_NEED_KEYBOARD is TRUE.
* @{
*/
/**
* @brief The default keyboard layout for the virtual gwin keyboard
* @details Defaults to VirtualKeyboardLayout_English1
*/
#ifndef GWIN_NEED_KEYBOARD_ENGLISH1
#define GWIN_NEED_KEYBOARD_ENGLISH1 TRUE
#endif
/** @} */
#endif /* _GWIN_OPTIONS_H */
/** @} */
|