From 07f34835358ef65de310934ae726b66c7ca46f68 Mon Sep 17 00:00:00 2001 From: Andrew Hannam Date: Thu, 6 Dec 2012 18:45:54 +1000 Subject: Restructure Create global include file called gfx.h which knows about sub-system dependancies. Deprecate Touchscreen (GINPUT touch is now working properly) Merge Graph into GWIN Change directory structure to reflect sub-system structure Many small bugs fixed Split Nokia6610 gdisp driver into GE8 and GE12 controller versions Fixed broken demos. GFX sub-systems are now clearly defined and new ones should be much easier to add. --- include/gdisp/options.h | 208 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 208 insertions(+) create mode 100644 include/gdisp/options.h (limited to 'include/gdisp/options.h') diff --git a/include/gdisp/options.h b/include/gdisp/options.h new file mode 100644 index 00000000..c2163631 --- /dev/null +++ b/include/gdisp/options.h @@ -0,0 +1,208 @@ +/* + 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 include/gdisp/options.h + * @brief GDISP sub-system options header file. + * + * @addtogroup GDISP + * @{ + */ + +#ifndef _GDISP_OPTIONS_H +#define _GDISP_OPTIONS_H + +/** + * @name GDISP Functionality to be included + * @{ + */ + /** + * @brief Should all operations be clipped to the screen and colors validated. + * @details Defaults to TRUE. + * @note If this is FALSE, any operations that extend beyond the + * edge of the screen will have undefined results. Any + * out-of-range colors will produce undefined results. + * @note If defined then all low level and high level GDISP driver routines + * must check the validity of inputs and do something sensible + * if they are out of range. It doesn't have to be efficient, + * just valid. + */ + #ifndef GDISP_NEED_VALIDATION + #define GDISP_NEED_VALIDATION TRUE + #endif + /** + * @brief Are clipping functions needed. + * @details Defaults to TRUE + */ + #ifndef GDISP_NEED_CLIP + #define GDISP_NEED_CLIP TRUE + #endif + /** + * @brief Are text functions needed. + * @details Defaults to TRUE + */ + #ifndef GDISP_NEED_TEXT + #define GDISP_NEED_TEXT TRUE + #endif + /** + * @brief Are circle functions needed. + * @details Defaults to TRUE + */ + #ifndef GDISP_NEED_CIRCLE + #define GDISP_NEED_CIRCLE TRUE + #endif + /** + * @brief Are ellipse functions needed. + * @details Defaults to TRUE + */ + #ifndef GDISP_NEED_ELLIPSE + #define GDISP_NEED_ELLIPSE TRUE + #endif + /** + * @brief Are arc functions needed. + * @details Defaults to FALSE + * @note Requires the maths library to be included in the link. ie -lm + */ + #ifndef GDISP_NEED_ARC + #define GDISP_NEED_ARC FALSE + #endif + /** + * @brief Are scrolling functions needed. + * @details Defaults to FALSE + * @note This function must be supported by the low level GDISP driver + * you have included in your project. If it isn't, defining this + * option will cause a compile error. + */ + #ifndef GDISP_NEED_SCROLL + #define GDISP_NEED_SCROLL FALSE + #endif + /** + * @brief Is the capability to read pixels back needed. + * @details Defaults to FALSE + * @note This function must be supported by the low level GDISP driver + * you have included in your project. If it isn't, defining this + * option will cause a compile error. + */ + #ifndef GDISP_NEED_PIXELREAD + #define GDISP_NEED_PIXELREAD FALSE + #endif + /** + * @brief Control some aspect of the hardware operation. + * @details Defaults to FALSE + * @note This allows control of hardware specific features such as + * screen rotation, backlight levels, contrast etc + */ + #ifndef GDISP_NEED_CONTROL + #define GDISP_NEED_CONTROL FALSE + #endif + /** + * @brief Is the messaging api interface required. + * @details Defaults to FALSE + */ + #ifndef GDISP_NEED_MSGAPI + #define GDISP_NEED_MSGAPI FALSE + #endif +/** + * @} + * + * @name GDISP Multi-Threading Options + * @{ + */ + /** + * @brief Do the drawing functions need to be thread-safe. + * @details Defaults to FALSE + * @note Both GDISP_NEED_MULTITHREAD and GDISP_NEED_ASYNC make + * the gdisp API thread-safe. + * @note This is more efficient than GDISP_NEED_ASYNC as it only + * requires a context switch if something else is already + * drawing. + */ + #ifndef GDISP_NEED_MULTITHREAD + #define GDISP_NEED_MULTITHREAD FALSE + #endif + /** + * @brief Use asynchronous calls (multi-thread safe). + * @details Defaults to FALSE + * @note Both GDISP_NEED_MULTITHREAD and GDISP_NEED_ASYNC make + * the gdisp API thread-safe. + * @note Turning this on adds two context switches per transaction + * so it can significantly slow graphics drawing but it allows + * drawing operations to continue in the background. + */ + #ifndef GDISP_NEED_ASYNC + #define GDISP_NEED_ASYNC FALSE + #endif +/** + * @} + * + * @name GDISP Optional Sizing Parameters + * @{ + */ + /** + * @brief The maximum height of a font. + * @details Either 16 or 32. Defaults to 16 + * @note Setting this to 32 causes the font tables to take + * twice the internal program memory. Don't do it unless + * you realy must define an unscaled font larger than 16 bits high. + */ + #ifndef GDISP_MAX_FONT_HEIGHT + #define GDISP_MAX_FONT_HEIGHT 16 + #endif +/** + * @} + * + * @name GDISP Optional Low Level Driver Defines + * @{ + */ + /** + * @brief Use a custom board definition even if a board definition exists. + * @details Defaults to FALSE + * @details If TRUE, add gdisp_lld_board.h to your project directory and customise it. + * @note Not all GDISP low level drivers currently use board definition files. + */ + #ifndef GDISP_USE_CUSTOM_BOARD + #define GDISP_USE_CUSTOM_BOARD FALSE + #endif + /** + * @brief Set the screen height and width. + * @note Ignored by some low level GDISP drivers, optional for others. + * @note Where these values are allowed, a default is always provided be the low level driver. + * @note The list of GDISP low level drivers that allow these to be set are... + * WIN32, SSD1289, SSD1963, TestStub + */ + /* #define GDISP_SCREEN_WIDTH nnnn */ + /* #define GDISP_SCREEN_HEIGHT nnnn */ + /** + * @brief Define which bus interface to use. + * @details Only required by the SSD1963 driver. + * @note This will be replaced eventually by board definition files + */ + /* #define GDISP_USE_FSMC */ + /* #define GDISP_USE_GPIO */ + /** + * @brief Define which two drivers will be used by the VMT layer. + * @details Only required by the VMT driver. + */ + /* #define GDISP_VMT_NAME1(x) x##YourDriver1 */ + /* #define GDISP_VMT_NAME2(x) x##YourDriver2 */ +/** @} */ + +#endif /* _GDISP_OPTIONS_H */ +/** @} */ -- cgit v1.2.3