miroir de
				https://github.com/Dejvino/lilybook.git
				synchronisé 2025-10-31 19:45:22 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			582 lignes
		
	
	
		
			18 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			582 lignes
		
	
	
		
			18 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | ||
|  * High level EPD functions
 | ||
|  * Author:  LoBo 06/2017, https://github/loboris
 | ||
|  * 
 | ||
|  */
 | ||
| 
 | ||
| #ifndef _EPD_H_
 | ||
| #define _EPD_H_
 | ||
| 
 | ||
| #include <stdlib.h>
 | ||
| #include "EPDspi.h"
 | ||
| #ifdef __cplusplus
 | ||
| extern "C" {
 | ||
| #endif
 | ||
| 
 | ||
| typedef uint8_t color_t;
 | ||
| 
 | ||
| typedef struct {
 | ||
| 	uint16_t        x1;
 | ||
| 	uint16_t        y1;
 | ||
| 	uint16_t        x2;
 | ||
| 	uint16_t        y2;
 | ||
| } dispWin_t;
 | ||
| 
 | ||
| typedef struct {
 | ||
| 	uint8_t 	*font;
 | ||
| 	uint8_t 	x_size;
 | ||
| 	uint8_t 	y_size;
 | ||
| 	uint8_t	    offset;
 | ||
| 	uint16_t	numchars;
 | ||
|     uint16_t	size;
 | ||
| 	uint8_t 	max_x_size;
 | ||
|     uint8_t     bitmap;
 | ||
| 	color_t     color;
 | ||
| } Font_t;
 | ||
| 
 | ||
| 
 | ||
| 
 | ||
| //==========================================================================================
 | ||
| // ==== Global variables ===================================================================
 | ||
| //==========================================================================================
 | ||
| extern uint8_t   orientation;		// current screen orientation
 | ||
| extern uint16_t  font_rotate;   	// current font font_rotate angle (0~395)
 | ||
| extern uint8_t   font_transparent;	// if not 0 draw fonts transparent
 | ||
| extern uint8_t   font_forceFixed;  // if not zero force drawing proportional fonts with fixed width
 | ||
| extern uint8_t   font_buffered_char;
 | ||
| extern uint8_t   font_line_space;	// additional spacing between text lines; added to font height
 | ||
| extern uint8_t	 font_x_space;		// additional spacing between characters in x axis
 | ||
| extern uint8_t   text_wrap;        // if not 0 wrap long text to the new line, else clip
 | ||
| extern color_t   _fg;            	// current foreground color for fonts
 | ||
| extern color_t   _bg;            	// current background for non transparent fonts
 | ||
| extern dispWin_t dispWin;			// display clip window
 | ||
| extern float	  _angleOffset;		// angle offset for arc, polygon and line by angle functions
 | ||
| 
 | ||
| extern Font_t cfont;					// Current font structure
 | ||
| extern uint8_t image_debug;
 | ||
| 
 | ||
| extern int	EPD_X;					// X position of the next character after EPD_print() function
 | ||
| extern int	EPD_Y;					// Y position of the next character after EPD_print() function
 | ||
| // =========================================================================================
 | ||
| 
 | ||
| 
 | ||
| // Buffer is created during jpeg decode for sending data
 | ||
| // Total size of the buffer is  2 * (JPG_IMAGE_LINE_BUF_SIZE * 3)
 | ||
| // The size must be multiple of 256 bytes !!
 | ||
| #define JPG_IMAGE_LINE_BUF_SIZE 512
 | ||
| 
 | ||
| // --- Constants for ellipse function ---
 | ||
| #define EPD_ELLIPSE_UPPER_RIGHT 0x01
 | ||
| #define EPD_ELLIPSE_UPPER_LEFT  0x02
 | ||
| #define EPD_ELLIPSE_LOWER_LEFT  0x04
 | ||
| #define EPD_ELLIPSE_LOWER_RIGHT 0x08
 | ||
| 
 | ||
| // Constants for Arc function
 | ||
| // number representing the maximum angle (e.g. if 100, then if you pass in start=0 and end=50, you get a half circle)
 | ||
| // this can be changed with setArcParams function at runtime
 | ||
| #define DEFAULT_ARC_ANGLE_MAX 360
 | ||
| // rotational offset in degrees defining position of value 0 (-90 will put it at the top of circle)
 | ||
| // this can be changed with setAngleOffset function at runtime
 | ||
| #define DEFAULT_ANGLE_OFFSET -90
 | ||
| 
 | ||
| #define PI 3.14159265359
 | ||
| 
 | ||
| #define MIN_POLIGON_SIDES	3
 | ||
| #define MAX_POLIGON_SIDES	60
 | ||
| 
 | ||
| // === Color names constants ===
 | ||
| #define EPD_BLACK 15
 | ||
| #define EPD_WHITE 0
 | ||
| 
 | ||
| // === Color invert constants ===
 | ||
| #define INVERT_ON		1
 | ||
| #define INVERT_OFF		0
 | ||
| 
 | ||
| // === Screen orientation constants ===
 | ||
| #define LANDSCAPE_0		1
 | ||
| #define LANDSCAPE_180	2
 | ||
| 
 | ||
| // === Special coordinates constants ===
 | ||
| #define CENTER	-9003
 | ||
| #define RIGHT	-9004
 | ||
| #define BOTTOM	-9004
 | ||
| 
 | ||
| #define LASTX	7000
 | ||
| #define LASTY	8000
 | ||
| 
 | ||
| // === Embedded fonts constants ===
 | ||
| #define DEFAULT_FONT	0
 | ||
| #define DEJAVU18_FONT	1
 | ||
| #define DEJAVU24_FONT	2
 | ||
| #define UBUNTU16_FONT	3
 | ||
| #define COMIC24_FONT	4
 | ||
| #define MINYA24_FONT	5
 | ||
| #define TOONEY32_FONT	6
 | ||
| #define SMALL_FONT		7
 | ||
| #define FONT_7SEG		8
 | ||
| #define USER_FONT		9  // font will be read from file
 | ||
| 
 | ||
| 
 | ||
| 
 | ||
| // ===== PUBLIC FUNCTIONS =========================================================================
 | ||
| 
 | ||
| /*
 | ||
|  * Draw pixel at given x,y coordinates
 | ||
|  * 
 | ||
|  * Params:
 | ||
|  *       x: horizontal position
 | ||
|  *       y: vertical position
 | ||
|  *   color: pixel color
 | ||
| */
 | ||
| //------------------------------------------------------
 | ||
| void EPD_drawPixel(int16_t x, int16_t y, color_t color);
 | ||
| 
 | ||
| /*
 | ||
|  * Read pixel color value from display GRAM at given x,y coordinates
 | ||
|  * 
 | ||
|  * Params:
 | ||
|  *       x: horizontal position
 | ||
|  *       y: vertical position
 | ||
|  * 
 | ||
|  * Returns:
 | ||
|  *      pixel color at x,y
 | ||
| */
 | ||
| //------------------------------------------
 | ||
| color_t EPD_readPixel(int16_t x, int16_t y);
 | ||
| 
 | ||
| /*
 | ||
|  * Draw vertical line at given x,y coordinates
 | ||
|  * 
 | ||
|  * Params:
 | ||
|  *       x: horizontal start position
 | ||
|  *       y: vertical start position
 | ||
|  *       h: line height in pixels
 | ||
|  *   color: line color
 | ||
| */
 | ||
| //---------------------------------------------------------------------
 | ||
| void EPD_drawFastVLine(int16_t x, int16_t y, int16_t h, color_t color);
 | ||
| 
 | ||
| /*
 | ||
|  * Draw horizontal line at given x,y coordinates
 | ||
|  * 
 | ||
|  * Params:
 | ||
|  *       x: horizontal start position
 | ||
|  *       y: vertical start position
 | ||
|  *       w: line width in pixels
 | ||
|  *   color: line color
 | ||
| */
 | ||
| //---------------------------------------------------------------------
 | ||
| void EPD_drawFastHLine(int16_t x, int16_t y, int16_t w, color_t color);
 | ||
| 
 | ||
| /*
 | ||
|  * Draw line on screen
 | ||
|  * 
 | ||
|  * Params:
 | ||
|  *       x0: horizontal start position
 | ||
|  *       y0: vertical start position
 | ||
|  *       x1: horizontal end position
 | ||
|  *       y1: vertical end position
 | ||
|  *   color: line color
 | ||
| */
 | ||
| //-------------------------------------------------------------------------------
 | ||
| void EPD_drawLine(int16_t x0, int16_t y0, int16_t x1, int16_t y1, color_t color);
 | ||
| 
 | ||
| 
 | ||
| /*
 | ||
|  * Draw line on screen from (x,y) point at given angle
 | ||
|  * Line drawing angle starts at lower right quadrant of the screen and is offseted by
 | ||
|  * '_angleOffset' global variable (default: -90 degrees)
 | ||
|  *
 | ||
|  * Params:
 | ||
|  *       x: horizontal start position
 | ||
|  *       y: vertical start position
 | ||
|  *   start: start offset from (x,y)
 | ||
|  *     len: length of the line
 | ||
|  *   angle: line angle in degrees
 | ||
|  *   color: line color
 | ||
| */
 | ||
| //-----------------------------------------------------------------------------------------------------------
 | ||
| void EPD_drawLineByAngle(uint16_t x, uint16_t y, uint16_t start, uint16_t len, uint16_t angle, color_t color);
 | ||
| 
 | ||
| /*
 | ||
|  * Fill given rectangular screen region with color
 | ||
|  * 
 | ||
|  * Params:
 | ||
|  *       x: horizontal rect start position
 | ||
|  *       y: vertical rect start position
 | ||
|  *       w: rectangle width
 | ||
|  *       h: rectangle height
 | ||
|  *   color: fill color
 | ||
| */
 | ||
| //---------------------------------------------------------------------------
 | ||
| void EPD_fillRect(int16_t x, int16_t y, int16_t w, int16_t h, color_t color);
 | ||
| 
 | ||
| /*
 | ||
|  * Draw rectangle on screen
 | ||
|  * 
 | ||
|  * Params:
 | ||
|  *       x: horizontal rect start position
 | ||
|  *       y: vertical rect start position
 | ||
|  *       w: rectangle width
 | ||
|  *       h: rectangle height
 | ||
|  *   color: rect line color
 | ||
| */
 | ||
| //------------------------------------------------------------------------------
 | ||
| void EPD_drawRect(uint16_t x1,uint16_t y1,uint16_t w,uint16_t h, color_t color);
 | ||
| 
 | ||
| /*
 | ||
|  * Draw rectangle with rounded corners on screen
 | ||
|  * 
 | ||
|  * Params:
 | ||
|  *       x: horizontal rect start position
 | ||
|  *       y: vertical rect start position
 | ||
|  *       w: rectangle width
 | ||
|  *       h: rectangle height
 | ||
|  *       r: corner radius
 | ||
|  *   color: rectangle color
 | ||
| */
 | ||
| //----------------------------------------------------------------------------------------------
 | ||
| void EPD_drawRoundRect(int16_t x, int16_t y, uint16_t w, uint16_t h, uint16_t r, color_t color);
 | ||
| 
 | ||
| /*
 | ||
|  * Fill given rectangular screen region with rounded corners with color
 | ||
|  * 
 | ||
|  * Params:
 | ||
|  *       x: horizontal rect start position
 | ||
|  *       y: vertical rect start position
 | ||
|  *       w: rectangle width
 | ||
|  *       h: rectangle height
 | ||
|  *       r: corner radius
 | ||
|  *   color: fill color
 | ||
| */
 | ||
| //----------------------------------------------------------------------------------------------
 | ||
| void EPD_fillRoundRect(int16_t x, int16_t y, uint16_t w, uint16_t h, uint16_t r, color_t color);
 | ||
| 
 | ||
| /*
 | ||
|  * Fill the whole screen with color
 | ||
|  * 
 | ||
|  * Params:
 | ||
|  *   color: fill color
 | ||
| */
 | ||
| //--------------------------------
 | ||
| void EPD_fillScreen(color_t color);
 | ||
| 
 | ||
| /*
 | ||
|  * Fill the current clip window with color
 | ||
|  *
 | ||
|  * Params:
 | ||
|  *   color: fill color
 | ||
| */
 | ||
| //---------------------------------
 | ||
| void EPD_fillWindow(color_t color);
 | ||
| 
 | ||
| /*
 | ||
|  * Draw triangle on screen
 | ||
|  * 
 | ||
|  * Params:
 | ||
|  *       x0: first triangle point x position
 | ||
|  *       y0: first triangle point y position
 | ||
|  *       x0: second triangle point x position
 | ||
|  *       y0: second triangle point y position
 | ||
|  *       x0: third triangle point x position
 | ||
|  *       y0: third triangle point y position
 | ||
|  *   color: triangle color
 | ||
| */
 | ||
| //-----------------------------------------------------------------------------------------------------------------
 | ||
| void EPD_drawTriangle(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, color_t color);
 | ||
| 
 | ||
| /*
 | ||
|  * Fill triangular screen region with color
 | ||
|  * 
 | ||
|  * Params:
 | ||
|  *       x0: first triangle point x position
 | ||
|  *       y0: first triangle point y position
 | ||
|  *       x0: second triangle point x position
 | ||
|  *       y0: second triangle point y position
 | ||
|  *       x0: third triangle point x position
 | ||
|  *       y0: third triangle point y position
 | ||
|  *   color: fill color
 | ||
| */
 | ||
| //-----------------------------------------------------------------------------------------------------------------
 | ||
| void EPD_fillTriangle(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, color_t color);
 | ||
| 
 | ||
| /*
 | ||
|  * Draw circle on screen
 | ||
|  * 
 | ||
|  * Params:
 | ||
|  *       x: circle center x position
 | ||
|  *       y: circle center x position
 | ||
|  *       r: circle radius
 | ||
|  *   color: circle color
 | ||
| */
 | ||
| //-------------------------------------------------------------------
 | ||
| void EPD_drawCircle(int16_t x, int16_t y, int radius, color_t color);
 | ||
| 
 | ||
| /*
 | ||
|  * Fill circle on screen with color
 | ||
|  * 
 | ||
|  * Params:
 | ||
|  *       x: circle center x position
 | ||
|  *       y: circle center x position
 | ||
|  *       r: circle radius
 | ||
|  *   color: circle fill color
 | ||
| */
 | ||
| //-------------------------------------------------------------------
 | ||
| void EPD_fillCircle(int16_t x, int16_t y, int radius, color_t color);
 | ||
| 
 | ||
| /*
 | ||
|  * Draw ellipse on screen
 | ||
|  * 
 | ||
|  * Params:
 | ||
|  *       x0: ellipse center x position
 | ||
|  *       y0: ellipse center x position
 | ||
|  *       rx: ellipse horizontal radius
 | ||
|  *       ry: ellipse vertical radius
 | ||
|  *   option: drawing options, multiple options can be combined
 | ||
|                 1 (TFT_ELLIPSE_UPPER_RIGHT) draw upper right corner
 | ||
|                 2 (TFT_ELLIPSE_UPPER_LEFT)  draw upper left corner
 | ||
|                 4 (TFT_ELLIPSE_LOWER_LEFT)  draw lower left corner
 | ||
|                 8 (TFT_ELLIPSE_LOWER_RIGHT) draw lower right corner
 | ||
|              to draw the whole ellipse use option value 15 (1 | 2 | 4 | 8)
 | ||
|  * 
 | ||
|  *   color: circle color
 | ||
| */
 | ||
| //------------------------------------------------------------------------------------------------------
 | ||
| void EPD_drawEllipse(uint16_t x0, uint16_t y0, uint16_t rx, uint16_t ry, color_t color, uint8_t option);
 | ||
| 
 | ||
| /*
 | ||
|  * Fill elliptical region on screen
 | ||
|  * 
 | ||
|  * Params:
 | ||
|  *       x0: ellipse center x position
 | ||
|  *       y0: ellipse center x position
 | ||
|  *       rx: ellipse horizontal radius
 | ||
|  *       ry: ellipse vertical radius
 | ||
|  *   option: drawing options, multiple options can be combined
 | ||
|                 1 (TFT_ELLIPSE_UPPER_RIGHT) fill upper right corner
 | ||
|                 2 (TFT_ELLIPSE_UPPER_LEFT)  fill upper left corner
 | ||
|                 4 (TFT_ELLIPSE_LOWER_LEFT)  fill lower left corner
 | ||
|                 8 (TFT_ELLIPSE_LOWER_RIGHT) fill lower right corner
 | ||
|              to fill the whole ellipse use option value 15 (1 | 2 | 4 | 8)
 | ||
|  * 
 | ||
|  *   color: fill color
 | ||
| */
 | ||
| //------------------------------------------------------------------------------------------------------
 | ||
| void EPD_fillEllipse(uint16_t x0, uint16_t y0, uint16_t rx, uint16_t ry, color_t color, uint8_t option);
 | ||
| 
 | ||
| 
 | ||
| /*
 | ||
|  * Draw circle arc on screen
 | ||
|  * Arc drawing angle starts at lower right quadrant of the screen and is offseted by
 | ||
|  * '_angleOffset' global variable (default: -90 degrees)
 | ||
|  *
 | ||
|  * Params:
 | ||
|  *        cx: arc center X position
 | ||
|  *        cy: arc center Y position
 | ||
|  *        th: thickness of the drawn arc
 | ||
|  *        ry: arc vertical radius
 | ||
|  *     start: arc start angle in degrees
 | ||
|  *       end: arc end angle in degrees
 | ||
|  *     color: arc outline color
 | ||
|  * fillcolor: arc fill color
 | ||
| */
 | ||
| //----------------------------------------------------------------------------------------------------------------------------
 | ||
| void EPD_drawArc(uint16_t cx, uint16_t cy, uint16_t r, uint16_t th, float start, float end, color_t color, color_t fillcolor);
 | ||
| 
 | ||
| 
 | ||
| /*
 | ||
|  * Draw polygon on screen
 | ||
|  *
 | ||
|  * Params:
 | ||
|  *        cx: polygon center X position
 | ||
|  *        cy: arc center Y position
 | ||
|  *     sides: number of polygon sides; MAX_POLIGON_SIDES ~ MAX_POLIGON_SIDES (3 ~ 60)
 | ||
|  *  diameter: diameter of the circle inside which the polygon is drawn
 | ||
|  *     color: polygon outline color
 | ||
|  *      fill: polygon fill color; if same as color, polygon is not filled
 | ||
|  *       deg: polygon rotation angle; 0 ~ 360
 | ||
|  *        th: thickness of the polygon outline
 | ||
| */
 | ||
| //--------------------------------------------------------------------------------------------------------------
 | ||
| void EPD_drawPolygon(int cx, int cy, int sides, int diameter, color_t color, color_t fill, int deg, uint8_t th);
 | ||
| 
 | ||
| 
 | ||
| //--------------------------------------------------------------------------------------
 | ||
| //void EPD_drawStar(int cx, int cy, int diameter, color_t color, bool fill, float factor);
 | ||
| 
 | ||
| 
 | ||
| /*
 | ||
|  * Set the font used for writing the text to display.
 | ||
|  *
 | ||
|  * ------------------------------------------------------------------------------------
 | ||
|  * For 7 segment font only characters 0,1,2,3,4,5,6,7,8,9, . , - , : , / are available.
 | ||
|  *   Character ‘/‘ draws the degree sign.
 | ||
|  * ------------------------------------------------------------------------------------
 | ||
|  *
 | ||
|  * Params:
 | ||
|  *			 font: font number; use defined font names
 | ||
|  *		font_file: pointer to font file name; NULL for embeded fonts
 | ||
|  */
 | ||
| //----------------------------------------------------
 | ||
| void EPD_setFont(uint8_t font, const char *font_file);
 | ||
| 
 | ||
| /*
 | ||
|  * Returns current font height & width in pixels.
 | ||
|  *
 | ||
|  * Params:
 | ||
|  *		 width: pointer to returned font width
 | ||
|  *		height: pointer to returned font height
 | ||
|  */
 | ||
| //-------------------------------------------
 | ||
| int EPD_getfontsize(int *width, int* height);
 | ||
| 
 | ||
| 
 | ||
| /*
 | ||
|  * Returns current font height in pixels.
 | ||
|  *
 | ||
|  */
 | ||
| //----------------------
 | ||
| int EPD_getfontheight();
 | ||
| 
 | ||
| /*
 | ||
|  * Write text to display.
 | ||
|  *
 | ||
|  * Rotation of the displayed text depends on 'font_rotate' variable (0~360)
 | ||
|  * if 'font_transparent' variable is set to 1, no background pixels will be printed
 | ||
|  *
 | ||
|  * If the text does not fit the screen width it will be clipped (if text_wrap=0),
 | ||
|  * or continued on next line (if text_wrap=1)
 | ||
|  *
 | ||
|  * Two special characters are allowed in strings:
 | ||
|  * 		‘\r’ CR (0x0D), clears the display to EOL
 | ||
|  * 		‘\n’ LF (ox0A), continues to the new line, x=0
 | ||
|  *
 | ||
|  * Params:
 | ||
|  *	   st:	pointer to null terminated string to be printed
 | ||
|  *		x:	horizontal position of the upper left point in pixels
 | ||
|  *				Special values can be entered:
 | ||
|  *					CENTER, centers the text
 | ||
|  *					RIGHT, right justifies the text
 | ||
|  *					LASTX, continues from last X position; offset can be used: LASTX+n
 | ||
|  *		y: vertical position of the upper left point in pixels
 | ||
|  *				Special values can be entered:
 | ||
|  *					CENTER, centers the text
 | ||
|  *					BOTTOM, bottom justifies the text
 | ||
|  *					LASTY, continues from last Y position; offset can be used: LASTY+n
 | ||
|  *
 | ||
|  */
 | ||
| //-------------------------------------
 | ||
| void EPD_print(char *st, int x, int y);
 | ||
| 
 | ||
| /*
 | ||
|  * Set atributes for 7 segment vector font
 | ||
|  * == 7 segment font must be the current font to this function to have effect ==
 | ||
|  *
 | ||
|  * Params:
 | ||
|  *	   	   l:	6~40; distance between bars in pixels
 | ||
|  *	   	   w:	1~12, max l/2;  bar width in pixels
 | ||
|  *   outline:	draw font outline if set to 1
 | ||
|  *	   color:	font outline color, only used if outline=1
 | ||
|  *
 | ||
|  */
 | ||
| //-------------------------------------------------------------------------
 | ||
| void set_7seg_font_atrib(uint8_t l, uint8_t w, int outline, color_t color);
 | ||
| 
 | ||
| /*
 | ||
|  * Sets the clipping area coordinates.
 | ||
|  * All writing to screen is clipped to that area.
 | ||
|  * Starting x & y in all functions will be adjusted to the clipping area.
 | ||
|  *
 | ||
|  * Params:
 | ||
|  *		x1,y1:	upper left point of the clipping area
 | ||
|  *		x2,y2:	bottom right point of the clipping area
 | ||
|  *
 | ||
|  */
 | ||
| //----------------------------------------------------------------------
 | ||
| void EPD_setclipwin(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2);
 | ||
| 
 | ||
| /*
 | ||
|  * Resets the clipping area to full screen (0,0),(_wodth,_height)
 | ||
|  *
 | ||
|  */
 | ||
| //----------------------
 | ||
| void EPD_resetclipwin();
 | ||
| 
 | ||
| /*
 | ||
|  * Save current clipping area to temporary variable
 | ||
|  *
 | ||
|  */
 | ||
| //---------------------
 | ||
| void EPD_saveClipWin();
 | ||
| 
 | ||
| /*
 | ||
|  * Restore current clipping area from temporary variable
 | ||
|  *
 | ||
|  */
 | ||
| //------------------------
 | ||
| void EPD_restoreClipWin();
 | ||
| 
 | ||
| /*
 | ||
|  * returns the string width in pixels.
 | ||
|  * Useful for positions strings on the screen.
 | ||
|  */
 | ||
| //--------------------------------
 | ||
| int EPD_getStringWidth(char* str);
 | ||
| 
 | ||
| 
 | ||
| /*
 | ||
|  * Fills the rectangle occupied by string with current background color
 | ||
|  */
 | ||
| void EPD_clearStringRect(int x, int y, char *str);
 | ||
| 
 | ||
| /*
 | ||
|  * Frames the rectangle occupied by string with current foreground color
 | ||
|  */
 | ||
| void EPD_frameStringRect(int x, int y, char *str);
 | ||
| 
 | ||
| /*
 | ||
|  * Compile font c source file to .fnt file
 | ||
|  * which can be used in EPD_setFont() function to select external font
 | ||
|  * Created file have the same name as source file and extension .fnt
 | ||
|  *
 | ||
|  * Params:
 | ||
|  *		fontfile: pointer to c source font file name; must have .c extension
 | ||
|  *			 dbg: if set to 1, prints debug information
 | ||
|  *
 | ||
|  * Returns:
 | ||
|  * 		0 on success
 | ||
|  * 		err no on error
 | ||
|  *
 | ||
|  */
 | ||
| //------------------------------------------------
 | ||
| int compile_font_file(char *fontfile, uint8_t dbg);
 | ||
| 
 | ||
| /*
 | ||
|  * Get all font's characters to buffer
 | ||
|  */
 | ||
| void getFontCharacters(uint8_t *buf);
 | ||
| 
 | ||
| /*
 | ||
|  * Decodes and displays JPG image. RGB colors are converted to 4-bit Gray scale
 | ||
|  * Limits:
 | ||
|  * 		Baseline only. Progressive and Lossless JPEG format are not supported.
 | ||
|  *		Image size: Up to 65520 x 65520 pixels
 | ||
|  *		Color space: YCbCr three components only. Gray scale image is not supported.
 | ||
|  *		Sampling factor: 4:4:4, 4:2:2 or 4:2:0.
 | ||
|  *
 | ||
|  * Params:
 | ||
|  *       x: image left position; constants CENTER & RIGHT can be used; negative value is accepted
 | ||
|  *       y: image top position;  constants CENTER & BOTTOM can be used; negative value is accepted
 | ||
|  *   scale: image scale factor: 0~3; if scale>0, image is scaled by factor 1/(2^scale) (1/2, 1/4 or 1/8)
 | ||
|  *   fname: pointer to the name of the file from which the image will be read
 | ||
|  *   		if set to NULL, image will be read from memory buffer pointed to by 'buf'
 | ||
|  *     buf: pointer to the memory buffer from which the image will be read; used if fname=NULL
 | ||
|  *    size: size of the memory buffer from which the image will be read; used if fname=NULL & buf!=NULL
 | ||
|  *
 | ||
|  */
 | ||
| int EPD_jpg_image(int x, int y, uint8_t scale, char *fname, uint8_t *buf, int size);
 | ||
| #ifdef __cplusplus
 | ||
| }
 | ||
| #endif
 | ||
| #endif
 |