ugfx/include/gdisp_lld_msgs.h
2012-09-25 00:19:10 +02:00

194 lines
5.2 KiB
C

/*
ChibiOS/GFX - Copyright (C) 2012
Joel Bodenmann aka Tectu <joel@unormal.org>
This file is part of ChibiOS/GFX.
ChibiOS/GFX is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
ChibiOS/GFX is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/**
* @file 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 HAL_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
#if GDISP_NEED_QUERY
GDISP_LLD_MSG_QUERY,
#endif
} gdisp_msgaction_t;
typedef union gdisp_lld_msg {
gdisp_msgaction_t action;
struct gdisp_lld_msg_init {
gdisp_msgaction_t action; // GDISP_LLD_MSG_INIT
} init;
struct gdisp_lld_msg_clear {
gdisp_msgaction_t action; // GDISP_LLD_MSG_CLEAR
color_t color;
} clear;
struct gdisp_lld_msg_drawpixel {
gdisp_msgaction_t action; // GDISP_LLD_MSG_DRAWPIXEL
coord_t x, y;
color_t color;
} drawpixel;
struct gdisp_lld_msg_fillarea {
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 {
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 {
gdisp_msgaction_t action; // GDISP_LLD_MSG_SETCLIP
coord_t x, y;
coord_t cx, cy;
} setclip;
struct gdisp_lld_msg_drawline {
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 {
gdisp_msgaction_t action; // GDISP_LLD_MSG_DRAWCIRCLE
coord_t x, y;
coord_t radius;
color_t color;
} drawcircle;
struct gdisp_lld_msg_fillcircle {
gdisp_msgaction_t action; // GDISP_LLD_MSG_FILLCIRCLE
coord_t x, y;
coord_t radius;
color_t color;
} fillcircle;
struct gdisp_lld_msg_drawellipse {
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 {
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 {
gdisp_msgaction_t action; // GDISP_LLD_MSG_DRAWARC
coord_t x, y;
coord_t radius;
coord_t startangle, endangle;
color_t color;
} drawcircle;
struct gdisp_lld_msg_fillarc {
gdisp_msgaction_t action; // GDISP_LLD_MSG_FILLARC
coord_t x, y;
coord_t radius;
coord_t startangle, endangle;
color_t color;
} fillcircle;
struct gdisp_lld_msg_drawchar {
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 {
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 {
gdisp_msgaction_t action; // GDISP_LLD_MSG_GETPIXELCOLOR
coord_t x, y;
color_t result;
} getpixelcolor;
struct gdisp_lld_msg_verticalscroll {
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 {
gdisp_msgaction_t action; // GDISP_LLD_MSG_CONTROL
int what;
void * value;
} control;
struct gdisp_lld_msg_query {
gdisp_msgaction_t action; // GDISP_LLD_MSG_QUERY
int what;
void * result;
} query;
} gdisp_lld_msg_t;
#endif /* HAL_USE_GDISP */
#endif /* _GDISP_LLD_MSGS_H */
/** @} */