/* ChibiOS/GFX - Copyright (C) 2012 Joel Bodenmann aka Tectu 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 . */ /** * @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 */ /** @} */