GUI_Paint.h (7059B)
1 /****************************************************************************** 2 * | File : GUI_Paint.h 3 * | Author : Waveshare electronics 4 * | Function : Achieve drawing: draw points, lines, boxes, circles and 5 * their size, solid dotted line, solid rectangle hollow 6 * rectangle, solid circle hollow circle. 7 * | Info : 8 * Achieve display characters: Display a single character, string, number 9 * Achieve time display: adaptive size display time minutes and seconds 10 *---------------- 11 * | This version: V3.1 12 * | Date : 2019-10-10 13 * | Info : 14 * ----------------------------------------------------------------------------- 15 * V3.1(2019-10-10): 16 * 1. Add gray level 17 * PAINT Add Scale 18 * 2. Add void Paint_SetScale(UBYTE scale); 19 * 20 * V3.0(2019-04-18): 21 * 1.Change: 22 * Paint_DrawPoint(..., DOT_STYLE DOT_STYLE) 23 * => Paint_DrawPoint(..., DOT_STYLE Dot_Style) 24 * Paint_DrawLine(..., LINE_STYLE Line_Style, DOT_PIXEL Dot_Pixel) 25 * => Paint_DrawLine(..., DOT_PIXEL Line_width, LINE_STYLE Line_Style) 26 * Paint_DrawRectangle(..., DRAW_FILL Filled, DOT_PIXEL Dot_Pixel) 27 * => Paint_DrawRectangle(..., DOT_PIXEL Line_width, DRAW_FILL Draw_Fill) 28 * Paint_DrawCircle(..., DRAW_FILL Draw_Fill, DOT_PIXEL Dot_Pixel) 29 * => Paint_DrawCircle(..., DOT_PIXEL Line_width, DRAW_FILL Draw_Filll) 30 * 31 * ----------------------------------------------------------------------------- 32 * V2.0(2018-11-15): 33 * 1.add: Paint_NewImage() 34 * Create an image's properties 35 * 2.add: Paint_SelectImage() 36 * Select the picture to be drawn 37 * 3.add: Paint_SetRotate() 38 * Set the direction of the cache 39 * 4.add: Paint_RotateImage() 40 * Can flip the picture, Support 0-360 degrees, 41 * but only 90.180.270 rotation is better 42 * 4.add: Paint_SetMirroring() 43 * Can Mirroring the picture, horizontal, vertical, origin 44 * 5.add: Paint_DrawString_CN() 45 * Can display Chinese(GB1312) 46 * 47 * ----------------------------------------------------------------------------- 48 * V1.0(2018-07-17): 49 * Create library 50 * 51 * Permission is hereby granted, free of charge, to any person obtaining a copy 52 * of this software and associated documnetation files (the "Software"), to deal 53 * in the Software without restriction, including without limitation the rights 54 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 55 * copies of the Software, and to permit persons to whom the Software is 56 * furished to do so, subject to the following conditions: 57 * 58 * The above copyright notice and this permission notice shall be included in 59 * all copies or substantial portions of the Software. 60 * 61 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 62 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 63 * FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 64 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 65 * LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 66 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 67 * THE SOFTWARE. 68 * 69 ******************************************************************************/ 70 #ifndef __GUI_PAINT_H 71 #define __GUI_PAINT_H 72 73 #include "DEV_Config.h" 74 #include "../Fonts/fonts.h" 75 76 /** 77 * Image attributes 78 **/ 79 typedef struct { 80 UBYTE *Image; 81 UWORD Width; 82 UWORD Height; 83 UWORD WidthMemory; 84 UWORD HeightMemory; 85 UWORD Color; 86 UWORD Rotate; 87 UWORD Mirror; 88 UWORD WidthByte; 89 UWORD HeightByte; 90 UWORD Scale; 91 } PAINT; 92 extern PAINT Paint; 93 94 /** 95 * Display rotate 96 **/ 97 #define ROTATE_0 0 98 #define ROTATE_90 90 99 #define ROTATE_180 180 100 #define ROTATE_270 270 101 102 /** 103 * Display Flip 104 **/ 105 typedef enum { 106 MIRROR_NONE = 0x00, 107 MIRROR_HORIZONTAL = 0x01, 108 MIRROR_VERTICAL = 0x02, 109 MIRROR_ORIGIN = 0x03, 110 } MIRROR_IMAGE; 111 #define MIRROR_IMAGE_DFT MIRROR_NONE 112 113 /** 114 * image color 115 **/ 116 #define WHITE 0xFF 117 #define BLACK 0x00 118 #define RED BLACK 119 120 #define IMAGE_BACKGROUND WHITE 121 #define FONT_FOREGROUND BLACK 122 #define FONT_BACKGROUND WHITE 123 124 //4 Gray level 125 #define GRAY1 0x03 //Blackest 126 #define GRAY2 0x02 127 #define GRAY3 0x01 //gray 128 #define GRAY4 0x00 //white 129 /** 130 * The size of the point 131 **/ 132 typedef enum { 133 DOT_PIXEL_1X1 = 1, // 1 x 1 134 DOT_PIXEL_2X2 , // 2 X 2 135 DOT_PIXEL_3X3 , // 3 X 3 136 DOT_PIXEL_4X4 , // 4 X 4 137 DOT_PIXEL_5X5 , // 5 X 5 138 DOT_PIXEL_6X6 , // 6 X 6 139 DOT_PIXEL_7X7 , // 7 X 7 140 DOT_PIXEL_8X8 , // 8 X 8 141 } DOT_PIXEL; 142 #define DOT_PIXEL_DFT DOT_PIXEL_1X1 //Default dot pilex 143 144 /** 145 * Point size fill style 146 **/ 147 typedef enum { 148 DOT_FILL_AROUND = 1, // dot pixel 1 x 1 149 DOT_FILL_RIGHTUP , // dot pixel 2 X 2 150 } DOT_STYLE; 151 #define DOT_STYLE_DFT DOT_FILL_AROUND //Default dot pilex 152 153 /** 154 * Line style, solid or dashed 155 **/ 156 typedef enum { 157 LINE_STYLE_SOLID = 0, 158 LINE_STYLE_DOTTED, 159 } LINE_STYLE; 160 161 /** 162 * Whether the graphic is filled 163 **/ 164 typedef enum { 165 DRAW_FILL_EMPTY = 0, 166 DRAW_FILL_FULL, 167 } DRAW_FILL; 168 169 /** 170 * Custom structure of a time attribute 171 **/ 172 typedef struct { 173 UWORD Year; //0000 174 UBYTE Month; //1 - 12 175 UBYTE Day; //1 - 30 176 UBYTE Hour; //0 - 23 177 UBYTE Min; //0 - 59 178 UBYTE Sec; //0 - 59 179 } PAINT_TIME; 180 extern PAINT_TIME sPaint_time; 181 182 //init and Clear 183 void Paint_NewImage(UBYTE *image, UWORD Width, UWORD Height, UWORD Rotate, UWORD Color); 184 void Paint_SelectImage(UBYTE *image); 185 void Paint_SetRotate(UWORD Rotate); 186 void Paint_SetMirroring(UBYTE mirror); 187 void Paint_SetPixel(UWORD Xpoint, UWORD Ypoint, UWORD Color); 188 void Paint_SetScale(UBYTE scale); 189 190 void Paint_Clear(UWORD Color); 191 void Paint_ClearWindows(UWORD Xstart, UWORD Ystart, UWORD Xend, UWORD Yend, UWORD Color); 192 193 //Drawing 194 void Paint_DrawPoint(UWORD Xpoint, UWORD Ypoint, UWORD Color, DOT_PIXEL Dot_Pixel, DOT_STYLE Dot_FillWay); 195 void Paint_DrawLine(UWORD Xstart, UWORD Ystart, UWORD Xend, UWORD Yend, UWORD Color, DOT_PIXEL Line_width, LINE_STYLE Line_Style); 196 void Paint_DrawRectangle(UWORD Xstart, UWORD Ystart, UWORD Xend, UWORD Yend, UWORD Color, DOT_PIXEL Line_width, DRAW_FILL Draw_Fill); 197 void Paint_DrawCircle(UWORD X_Center, UWORD Y_Center, UWORD Radius, UWORD Color, DOT_PIXEL Line_width, DRAW_FILL Draw_Fill); 198 199 //Display string 200 void Paint_DrawChar(UWORD Xstart, UWORD Ystart, const char Acsii_Char, sFONT* Font, UWORD Color_Foreground, UWORD Color_Background); 201 void Paint_DrawString_EN(UWORD Xstart, UWORD Ystart, const char * pString, sFONT* Font, UWORD Color_Foreground, UWORD Color_Background); 202 void Paint_DrawString_CN(UWORD Xstart, UWORD Ystart, const char * pString, cFONT* font, UWORD Color_Foreground, UWORD Color_Background); 203 void Paint_DrawNum(UWORD Xpoint, UWORD Ypoint, int32_t Nummber, sFONT* Font, UWORD Color_Foreground, UWORD Color_Background); 204 void Paint_DrawTime(UWORD Xstart, UWORD Ystart, PAINT_TIME *pTime, sFONT* Font, UWORD Color_Foreground, UWORD Color_Background); 205 206 //pic 207 void Paint_DrawBitMap(const unsigned char* image_buffer); 208 209 210 #endif 211 212 213 214 215