ugfx/include/gdisp/lld/gdisp_lld_msgs.h
2013-06-15 21:37:22 +10:00

203 lines
4.9 KiB
C

/*
* 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://chibios-gfx.com/license.html
*/
/**
* @file include/gdisp/lld/gdisp_lld_msgs.h
* @brief GDISP Graphic Driver subsystem low level driver message structures.
*
* @addtogroup GDISP
* @{
*/
#ifndef _GDISP_LLD_MSGS_H
#define _GDISP_LLD_MSGS_H
/* This file describes the message API for gdisp_lld */
#if GFX_USE_GDISP && GDISP_NEED_MSGAPI
typedef enum gdisp_msgaction {
GDISP_LLD_MSG_NOP,
GDISP_LLD_MSG_INIT,
GDISP_LLD_MSG_CLEAR,
GDISP_LLD_MSG_DRAWPIXEL,
GDISP_LLD_MSG_FILLAREA,
GDISP_LLD_MSG_BLITAREA,
GDISP_LLD_MSG_DRAWLINE,
#if GDISP_NEED_CLIP
GDISP_LLD_MSG_SETCLIP,
#endif
#if GDISP_NEED_CIRCLE
GDISP_LLD_MSG_DRAWCIRCLE,
GDISP_LLD_MSG_FILLCIRCLE,
#endif
#if GDISP_NEED_ELLIPSE
GDISP_LLD_MSG_DRAWELLIPSE,
GDISP_LLD_MSG_FILLELLIPSE,
#endif
#if GDISP_NEED_ARC
GDISP_LLD_MSG_DRAWARC,
GDISP_LLD_MSG_FILLARC,
#endif
#if GDISP_NEED_TEXT
GDISP_LLD_MSG_DRAWCHAR,
GDISP_LLD_MSG_FILLCHAR,
#endif
#if GDISP_NEED_PIXELREAD
GDISP_LLD_MSG_GETPIXELCOLOR,
#endif
#if GDISP_NEED_SCROLL
GDISP_LLD_MSG_VERTICALSCROLL,
#endif
#if GDISP_NEED_CONTROL
GDISP_LLD_MSG_CONTROL,
#endif
GDISP_LLD_MSG_QUERY,
} gdisp_msgaction_t;
typedef union gdisp_lld_msg {
struct {
gfxQueueItem qi;
gdisp_msgaction_t action;
};
struct gdisp_lld_msg_init {
gfxQueueItem qi;
gdisp_msgaction_t action; // GDISP_LLD_MSG_INIT
} init;
struct gdisp_lld_msg_clear {
gfxQueueItem qi;
gdisp_msgaction_t action; // GDISP_LLD_MSG_CLEAR
color_t color;
} clear;
struct gdisp_lld_msg_drawpixel {
gfxQueueItem qi;
gdisp_msgaction_t action; // GDISP_LLD_MSG_DRAWPIXEL
coord_t x, y;
color_t color;
} drawpixel;
struct gdisp_lld_msg_fillarea {
gfxQueueItem qi;
gdisp_msgaction_t action; // GDISP_LLD_MSG_FILLAREA
coord_t x, y;
coord_t cx, cy;
color_t color;
} fillarea;
struct gdisp_lld_msg_blitarea {
gfxQueueItem qi;
gdisp_msgaction_t action; // GDISP_LLD_MSG_BLITAREA
coord_t x, y;
coord_t cx, cy;
coord_t srcx, srcy;
coord_t srccx;
const pixel_t *buffer;
} blitarea;
struct gdisp_lld_msg_setclip {
gfxQueueItem qi;
gdisp_msgaction_t action; // GDISP_LLD_MSG_SETCLIP
coord_t x, y;
coord_t cx, cy;
} setclip;
struct gdisp_lld_msg_drawline {
gfxQueueItem qi;
gdisp_msgaction_t action; // GDISP_LLD_MSG_DRAWLINE
coord_t x0, y0;
coord_t x1, y1;
color_t color;
} drawline;
struct gdisp_lld_msg_drawcircle {
gfxQueueItem qi;
gdisp_msgaction_t action; // GDISP_LLD_MSG_DRAWCIRCLE
coord_t x, y;
coord_t radius;
color_t color;
} drawcircle;
struct gdisp_lld_msg_fillcircle {
gfxQueueItem qi;
gdisp_msgaction_t action; // GDISP_LLD_MSG_FILLCIRCLE
coord_t x, y;
coord_t radius;
color_t color;
} fillcircle;
struct gdisp_lld_msg_drawellipse {
gfxQueueItem qi;
gdisp_msgaction_t action; // GDISP_LLD_MSG_DRAWELLIPSE
coord_t x, y;
coord_t a, b;
color_t color;
} drawellipse;
struct gdisp_lld_msg_fillellipse {
gfxQueueItem qi;
gdisp_msgaction_t action; // GDISP_LLD_MSG_FILLELLIPSE
coord_t x, y;
coord_t a, b;
color_t color;
} fillellipse;
struct gdisp_lld_msg_drawarc {
gfxQueueItem qi;
gdisp_msgaction_t action; // GDISP_LLD_MSG_DRAWARC
coord_t x, y;
coord_t radius;
coord_t startangle, endangle;
color_t color;
} drawarc;
struct gdisp_lld_msg_fillarc {
gfxQueueItem qi;
gdisp_msgaction_t action; // GDISP_LLD_MSG_FILLARC
coord_t x, y;
coord_t radius;
coord_t startangle, endangle;
color_t color;
} fillarc;
struct gdisp_lld_msg_drawchar {
gfxQueueItem qi;
gdisp_msgaction_t action; // GDISP_LLD_MSG_DRAWCHAR
coord_t x, y;
char c;
font_t font;
color_t color;
} drawchar;
struct gdisp_lld_msg_fillchar {
gfxQueueItem qi;
gdisp_msgaction_t action; // GDISP_LLD_MSG_FILLCHAR
coord_t x, y;
char c;
font_t font;
color_t color;
color_t bgcolor;
} fillchar;
struct gdisp_lld_msg_getpixelcolor {
gfxQueueItem qi;
gdisp_msgaction_t action; // GDISP_LLD_MSG_GETPIXELCOLOR
coord_t x, y;
color_t result;
} getpixelcolor;
struct gdisp_lld_msg_verticalscroll {
gfxQueueItem qi;
gdisp_msgaction_t action; // GDISP_LLD_MSG_VERTICALSCROLL
coord_t x, y;
coord_t cx, cy;
int lines;
color_t bgcolor;
} verticalscroll;
struct gdisp_lld_msg_control {
gfxQueueItem qi;
gdisp_msgaction_t action; // GDISP_LLD_MSG_CONTROL
int what;
void * value;
} control;
struct gdisp_lld_msg_query {
gfxQueueItem qi;
gdisp_msgaction_t action; // GDISP_LLD_MSG_QUERY
int what;
void * result;
} query;
} gdisp_lld_msg_t;
#endif /* GFX_USE_GDISP && GDISP_NEED_MSGAPI */
#endif /* _GDISP_LLD_MSGS_H */
/** @} */