use It8951 files
This commit is contained in:
		
							
								
								
									
										224
									
								
								inkycal/display/drivers/parallel_drivers/lib/GUI/GUI_Paint.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										224
									
								
								inkycal/display/drivers/parallel_drivers/lib/GUI/GUI_Paint.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,224 @@ | ||||
| /****************************************************************************** | ||||
| * | File      	:   GUI_Paint.h | ||||
| * | Author      :   Waveshare electronics | ||||
| * | Function    :	Achieve drawing: draw points, lines, boxes, circles and | ||||
| *                   their size, solid dotted line, solid rectangle hollow | ||||
| *                   rectangle, solid circle hollow circle. | ||||
| * | Info        : | ||||
| *   Achieve display characters: Display a single character, string, number | ||||
| *   Achieve time display: adaptive size display time minutes and seconds | ||||
| *---------------- | ||||
| * |	This version:   V3.0 | ||||
| * | Date        :   2019-04-18 | ||||
| * | Info        : | ||||
| * ----------------------------------------------------------------------------- | ||||
| * V3.0(2019-04-18): | ||||
| * 1.Change:  | ||||
| *    Paint_DrawPoint(..., DOT_STYLE DOT_STYLE) | ||||
| * => Paint_DrawPoint(..., DOT_STYLE Dot_Style) | ||||
| *    Paint_DrawLine(..., LINE_STYLE Line_Style, DOT_PIXEL Dot_Pixel) | ||||
| * => Paint_DrawLine(..., DOT_PIXEL Line_width, LINE_STYLE Line_Style) | ||||
| *    Paint_DrawRectangle(..., DRAW_FILL Filled, DOT_PIXEL Dot_Pixel) | ||||
| * => Paint_DrawRectangle(..., DOT_PIXEL Line_width, DRAW_FILL Draw_Fill) | ||||
| *    Paint_DrawCircle(..., DRAW_FILL Draw_Fill, DOT_PIXEL Dot_Pixel) | ||||
| * => Paint_DrawCircle(..., DOT_PIXEL Line_width, DRAW_FILL Draw_Filll) | ||||
| * | ||||
| * ----------------------------------------------------------------------------- | ||||
| * V2.0(2018-11-15): | ||||
| * 1.add: Paint_NewImage() | ||||
| *    Create an image's properties | ||||
| * 2.add: Paint_SelectImage() | ||||
| *    Select the picture to be drawn | ||||
| * 3.add: Paint_SetRotate() | ||||
| *    Set the direction of the cache     | ||||
| * 4.add: Paint_RotateImage()  | ||||
| *    Can flip the picture, Support 0-360 degrees,  | ||||
| *    but only 90.180.270 rotation is better | ||||
| * 4.add: Paint_SetMirroring()  | ||||
| *    Can Mirroring the picture, horizontal, vertical, origin | ||||
| * 5.add: Paint_DrawString_CN()  | ||||
| *    Can display Chinese(GB1312)    | ||||
| * | ||||
| * -----------------------------------------------------------------------------  | ||||
| * V1.0(2018-07-17): | ||||
| *   Create library | ||||
| * | ||||
| * Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| * of this software and associated documnetation files (the "Software"), to deal | ||||
| * in the Software without restriction, including without limitation the rights | ||||
| * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||
| * copies of the Software, and to permit persons to  whom the Software is | ||||
| * furished to do so, subject to the following conditions: | ||||
| * | ||||
| * The above copyright notice and this permission notice shall be included in | ||||
| * all copies or substantial portions of the Software. | ||||
| * | ||||
| * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||
| * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||
| * FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||
| * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||
| * LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||
| * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | ||||
| * THE SOFTWARE. | ||||
| * | ||||
| ******************************************************************************/ | ||||
| #ifndef __GUI_PAINT_H | ||||
| #define __GUI_PAINT_H | ||||
|  | ||||
| #include "../Config/DEV_Config.h" | ||||
| #include "../Fonts/fonts.h" | ||||
|  | ||||
| /** | ||||
|  * Image attributes | ||||
| **/ | ||||
| typedef struct { | ||||
|     UBYTE *Image; | ||||
|     UWORD Width; | ||||
|     UWORD Height; | ||||
|     UWORD WidthMemory; | ||||
|     UWORD HeightMemory; | ||||
|     UWORD Color; | ||||
|     UWORD Rotate; | ||||
|     UWORD Mirror; | ||||
|     UWORD WidthByte; | ||||
|     UWORD HeightByte; | ||||
|     UWORD BitsPerPixel; | ||||
|     UWORD GrayScale; | ||||
| } PAINT; | ||||
| extern PAINT Paint; | ||||
|  | ||||
| /** | ||||
|  * Display rotate | ||||
| **/ | ||||
| #define ROTATE_0            0 | ||||
| #define ROTATE_90           90 | ||||
| #define ROTATE_180          180 | ||||
| #define ROTATE_270          270 | ||||
|  | ||||
| /** | ||||
|  * Display Flip | ||||
| **/ | ||||
| typedef enum { | ||||
|     MIRROR_NONE  = 0x00, | ||||
|     MIRROR_HORIZONTAL = 0x01, | ||||
|     MIRROR_VERTICAL = 0x02, | ||||
|     MIRROR_ORIGIN = 0x03, | ||||
| } MIRROR_IMAGE; | ||||
| #define MIRROR_IMAGE_DFT MIRROR_NONE | ||||
|  | ||||
| /** | ||||
|  * image color | ||||
| **/ | ||||
| #define WHITE          0xFF | ||||
| #define BLACK          0x00 | ||||
|  | ||||
| #define IMAGE_BACKGROUND    WHITE | ||||
| #define FONT_FOREGROUND     BLACK | ||||
| #define FONT_BACKGROUND     WHITE | ||||
|  | ||||
| /* | ||||
| For color definition of all BitsPerPixel, you can refer to this: | ||||
|  | ||||
| 8bpp:  0x00-0xF0, as for 8bp will automatically reduce to 4bp, the detail value of 8bp is: | ||||
| 0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70 0x80 0x90 0xA0 0xB0 0xC0 0xE0 0xF0 16 grayscale in total | ||||
| which only occupy upper 4 bits of a byte | ||||
|  | ||||
| 4bpp:  0x00-0xF0 | ||||
| 0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70 0x80 0x90 0xA0 0xB0 0xC0 0xE0 0xF0 16 grayscale in total | ||||
| which only occupy upper 4 bits of a byte | ||||
|  | ||||
| 2bpp:  0x00-0xC0 | ||||
| 0x00 0x40 0x80 0xC0 4 grayscale in total | ||||
| which only occupy upper 2 bits of a byte | ||||
|  | ||||
| 1bpp:  0x00-0x80 | ||||
| 0x00 0x80 2 grayscale in total | ||||
| which only occupy upper 1 bits of a byte | ||||
| */ | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * The size of the point | ||||
| **/ | ||||
| typedef enum { | ||||
|     DOT_PIXEL_1X1  = 1,		// 1 x 1 | ||||
|     DOT_PIXEL_2X2  , 		// 2 X 2 | ||||
|     DOT_PIXEL_3X3  ,		// 3 X 3 | ||||
|     DOT_PIXEL_4X4  ,		// 4 X 4 | ||||
|     DOT_PIXEL_5X5  , 		// 5 X 5 | ||||
|     DOT_PIXEL_6X6  , 		// 6 X 6 | ||||
|     DOT_PIXEL_7X7  , 		// 7 X 7 | ||||
|     DOT_PIXEL_8X8  , 		// 8 X 8 | ||||
| } DOT_PIXEL; | ||||
| #define DOT_PIXEL_DFT  DOT_PIXEL_1X1  //Default dot pilex | ||||
|  | ||||
| /** | ||||
|  * Point size fill style | ||||
| **/ | ||||
| typedef enum { | ||||
|     DOT_FILL_AROUND  = 1,		// dot pixel 1 x 1 | ||||
|     DOT_FILL_RIGHTUP  , 		// dot pixel 2 X 2 | ||||
| } DOT_STYLE; | ||||
| #define DOT_STYLE_DFT  DOT_FILL_AROUND  //Default dot pilex | ||||
|  | ||||
| /** | ||||
|  * Line style, solid or dashed | ||||
| **/ | ||||
| typedef enum { | ||||
|     LINE_STYLE_SOLID = 0, | ||||
|     LINE_STYLE_DOTTED, | ||||
| } LINE_STYLE; | ||||
|  | ||||
| /** | ||||
|  * Whether the graphic is filled | ||||
| **/ | ||||
| typedef enum { | ||||
|     DRAW_FILL_EMPTY = 0, | ||||
|     DRAW_FILL_FULL, | ||||
| } DRAW_FILL; | ||||
|  | ||||
| /** | ||||
|  * Custom structure of a time attribute | ||||
| **/ | ||||
| typedef struct { | ||||
|     UWORD Year;  //0000 | ||||
|     UBYTE  Month; //1 - 12 | ||||
|     UBYTE  Day;   //1 - 30 | ||||
|     UBYTE  Hour;  //0 - 23 | ||||
|     UBYTE  Min;   //0 - 59 | ||||
|     UBYTE  Sec;   //0 - 59 | ||||
| } PAINT_TIME; | ||||
| extern PAINT_TIME sPaint_time; | ||||
|  | ||||
| //init and Clear | ||||
| void Paint_NewImage(UBYTE *image, UWORD Width, UWORD Height, UWORD Rotate, UWORD Color); | ||||
| void Paint_SelectImage(UBYTE *image); | ||||
| void Paint_SetRotate(UWORD Rotate); | ||||
| void Paint_SetMirroring(UBYTE mirror); | ||||
| void Paint_SetBitsPerPixel(UBYTE bpp); | ||||
| void Paint_SetPixel(UWORD Xpoint, UWORD Ypoint, UWORD Color); | ||||
|  | ||||
| void Paint_Clear(UWORD Color); | ||||
| void Paint_ClearWindows(UWORD Xstart, UWORD Ystart, UWORD Xend, UWORD Yend, UWORD Color); | ||||
|  | ||||
| //Drawing | ||||
| void Paint_DrawPoint(UWORD Xpoint, UWORD Ypoint, UWORD Color, DOT_PIXEL Dot_Pixel, DOT_STYLE Dot_FillWay); | ||||
| void Paint_DrawLine(UWORD Xstart, UWORD Ystart, UWORD Xend, UWORD Yend, UWORD Color, DOT_PIXEL Line_width, LINE_STYLE Line_Style); | ||||
| void Paint_DrawRectangle(UWORD Xstart, UWORD Ystart, UWORD Xend, UWORD Yend, UWORD Color, DOT_PIXEL Line_width, DRAW_FILL Draw_Fill); | ||||
| void Paint_DrawCircle(UWORD X_Center, UWORD Y_Center, UWORD Radius, UWORD Color, DOT_PIXEL Line_width, DRAW_FILL Draw_Fill); | ||||
|  | ||||
| //Display string | ||||
| void Paint_DrawChar(UWORD Xstart, UWORD Ystart, const char Acsii_Char, sFONT* Font, UWORD Color_Foreground, UWORD Color_Background); | ||||
| void Paint_DrawString_EN(UWORD Xstart, UWORD Ystart, const char * pString, sFONT* Font, UWORD Color_Foreground, UWORD Color_Background); | ||||
| void Paint_DrawString_CN(UWORD Xstart, UWORD Ystart, const char * pString, cFONT* font, UWORD Color_Foreground, UWORD Color_Background); | ||||
| void Paint_DrawNum(UWORD Xpoint, UWORD Ypoint, int32_t Nummber, sFONT* Font, UWORD Color_Foreground, UWORD Color_Background); | ||||
| void Paint_DrawTime(UWORD Xstart, UWORD Ystart, PAINT_TIME *pTime, sFONT* Font, UWORD Color_Foreground, UWORD Color_Background); | ||||
|  | ||||
| void Paint_SetColor(UWORD x, UWORD y, UWORD color); | ||||
| void Paint_GetColor(UWORD color, UBYTE* arr_color); | ||||
| #endif | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
		Reference in New Issue
	
	Block a user