diff options
Diffstat (limited to 'include/gwin.h')
-rw-r--r-- | include/gwin.h | 133 |
1 files changed, 20 insertions, 113 deletions
diff --git a/include/gwin.h b/include/gwin.h index 24eba20c..f54c8d37 100644 --- a/include/gwin.h +++ b/include/gwin.h @@ -45,21 +45,6 @@ * @name GWIN more complex functionality to be compiled
* @{
*/
- /**
- * @brief Should console functions be included.
- * @details Defaults to FALSE
- */
- #ifndef GWIN_NEED_CONSOLE
- #define GWIN_NEED_CONSOLE FALSE
- #endif
- /**
- * @brief Should button functions be included.
- * @details Defaults to FALSE
- */
- #ifndef GWIN_NEED_BUTTON
- #define GWIN_NEED_BUTTON FALSE
- #endif
-
/** @} */
/*===========================================================================*/
@@ -75,25 +60,13 @@ #warning "GWIN: Drawing can occur outside the defined window as GDISP_NEED_CLIP is FALSE"
#endif
-#if GWIN_NEED_CONSOLE && !GDISP_NEED_TEXT
- #error "GWIN: Text support (GDISP_NEED_TEXT) is required if GWIN_NEED_CONSOLE is defined."
-#endif
-
-#if GWIN_NEED_BUTTON && !GDISP_NEED_TEXT
- #error "GWIN: Text support (GDISP_NEED_TEXT) is required if GWIN_NEED_BUTTON is defined."
-#endif
-
-#if GWIN_NEED_BUTTON
- #warning "GWIN: Button support is not complete yet"
-#endif
-
/*===========================================================================*/
/* Type definitions */
/*===========================================================================*/
-typedef enum GWindowType_e {
- GW_WINDOW, GW_CONSOLE, GW_BUTTON
- } GWindowType;
+typedef uint16_t GWindowType;
+#define GW_WINDOW 0x0000
+#define GW_FIRST_USER_WINDOW 0x8000
// A basic window
typedef struct GWindowObject_t {
@@ -107,58 +80,6 @@ typedef struct GWindowObject_t { #endif
} GWindowObject, * GHandle;
-#if GWIN_NEED_CONSOLE
- // A console window. Supports wrapped text writing and a cursor.
- typedef struct GConsoleObject_t {
- GWindowObject gwin;
-
- struct GConsoleWindowStream_t {
- const struct GConsoleWindowVMT_t *vmt;
- _base_asynchronous_channel_data
- } stream;
-
- coord_t cx,cy; // Cursor position
- uint8_t fy; // Current font height
- uint8_t fp; // Current font inter-character spacing
- } GConsoleObject;
-#endif
-
-#if GWIN_NEED_BUTTON
- typedef enum GButtonShape_e {
- GBTN_3D, GBTN_SQUARE, GBTN_ROUNDED, GBTN_ELLIPSE
- } GButtonShape;
-
- typedef struct GButtonStyle_t {
- GButtonShape shape;
- color_t color_up_edge;
- color_t color_up_fill;
- color_t color_up_txt;
- color_t color_dn_edge;
- color_t color_dn_fill;
- color_t color_dn_txt;
- } GButtonStyle;
-
- typedef enum GButtonType_e {
- GBTN_NORMAL, GBTN_TOGGLE
- } GButtonType;
-
- typedef enum GButtonState_e {
- GBTN_UP, GBTN_DOWN
- } GButtonState;
-
- // A button window
- typedef struct GButtonObject_t {
- GWindowObject gwin;
-
- GButtonStyle style;
- GButtonState state;
- GButtonType type;
- const char * txt;
- void * callback; // To be fixed
- void * inputsrc; // To be fixed
- } GButtonObject;
-#endif
-
/*===========================================================================*/
/* External declarations. */
/*===========================================================================*/
@@ -237,59 +158,45 @@ void gwinBlitArea(GHandle gh, coord_t x, coord_t y, coord_t cx, coord_t cy, coor /* Circle Functions */
#if GDISP_NEED_CIRCLE
-void gwinDrawCircle(GHandle gh, coord_t x, coord_t y, coord_t radius);
-void gwinFillCircle(GHandle gh, coord_t x, coord_t y, coord_t radius);
+ void gwinDrawCircle(GHandle gh, coord_t x, coord_t y, coord_t radius);
+ void gwinFillCircle(GHandle gh, coord_t x, coord_t y, coord_t radius);
#endif
/* Ellipse Functions */
#if GDISP_NEED_ELLIPSE
-void gwinDrawEllipse(GHandle gh, coord_t x, coord_t y, coord_t a, coord_t b);
-void gwinFillEllipse(GHandle gh, coord_t x, coord_t y, coord_t a, coord_t b);
+ void gwinDrawEllipse(GHandle gh, coord_t x, coord_t y, coord_t a, coord_t b);
+ void gwinFillEllipse(GHandle gh, coord_t x, coord_t y, coord_t a, coord_t b);
#endif
/* Arc Functions */
#if GDISP_NEED_ARC
-void gwinDrawArc(GHandle gh, coord_t x, coord_t y, coord_t radius, coord_t startangle, coord_t endangle);
-void gwinFillArc(GHandle gh, coord_t x, coord_t y, coord_t radius, coord_t startangle, coord_t endangle);
+ void gwinDrawArc(GHandle gh, coord_t x, coord_t y, coord_t radius, coord_t startangle, coord_t endangle);
+ void gwinFillArc(GHandle gh, coord_t x, coord_t y, coord_t radius, coord_t startangle, coord_t endangle);
#endif
/* Read a pixel Function */
#if GDISP_NEED_PIXELREAD
-color_t gwinGetPixelColor(GHandle gh, coord_t x, coord_t y);
+ color_t gwinGetPixelColor(GHandle gh, coord_t x, coord_t y);
#endif
/* Extra Text Functions */
#if GDISP_NEED_TEXT
-void gwinDrawChar(GHandle gh, coord_t x, coord_t y, char c);
-void gwinFillChar(GHandle gh, coord_t x, coord_t y, char c);
-void gwinDrawString(GHandle gh, coord_t x, coord_t y, const char *str);
-void gwinFillString(GHandle gh, coord_t x, coord_t y, const char *str);
-void gwinDrawStringBox(GHandle gh, coord_t x, coord_t y, coord_t cx, coord_t cy, const char* str, justify_t justify);
-void gwinFillStringBox(GHandle gh, coord_t x, coord_t y, coord_t cx, coord_t cy, const char* str, justify_t justify);
-#endif
-
-#if GWIN_NEED_CONSOLE
-GHandle gwinCreateConsole(GConsoleObject *gc, coord_t x, coord_t y, coord_t width, coord_t height, font_t font);
-BaseSequentialStream *gwinGetConsoleStream(GHandle gh);
-void gwinPutChar(GHandle gh, char c);
-void gwinPutString(GHandle gh, const char *str);
-void gwinPutCharArray(GHandle gh, const char *str, size_t n);
-#endif
-
-#if GWIN_NEED_BUTTON
-GHandle gwinCreateButton(GButtonObject *gb, coord_t x, coord_t y, coord_t width, coord_t height, font_t font, GButtonType type);
-void gwinSetButtonStyle(GHandle gh, const GButtonStyle *style);
-void gwinSetButtonText(GHandle gh, const char *txt, bool_t useAlloc);
-void gwinButtonDraw(GHandle gh);
-#define gwinGetButtonState(gh) (((GButtonObject *)(gh))->state)
-//void gwinSetButtonCallback(GHandle gh, ????);
-//void gwinSetButtonInput(GHandle gh, ????);
+ void gwinDrawChar(GHandle gh, coord_t x, coord_t y, char c);
+ void gwinFillChar(GHandle gh, coord_t x, coord_t y, char c);
+ void gwinDrawString(GHandle gh, coord_t x, coord_t y, const char *str);
+ void gwinFillString(GHandle gh, coord_t x, coord_t y, const char *str);
+ void gwinDrawStringBox(GHandle gh, coord_t x, coord_t y, coord_t cx, coord_t cy, const char* str, justify_t justify);
+ void gwinFillStringBox(GHandle gh, coord_t x, coord_t y, coord_t cx, coord_t cy, const char* str, justify_t justify);
#endif
#ifdef __cplusplus
}
#endif
+/* Include extra window types */
+#include "gwin/gwin_console.h"
+#include "gwin/gwin_button.h"
+
#endif /* GFX_USE_GWIN */
#endif /* _GWIN_H */
|