Add support for blitting to the Infinity LCD
This commit is contained in:
		| @@ -254,6 +254,32 @@ LLDSPEC color_t gdisp_lld_get_pixel_color(GDisplay *g) { | |||||||
| } | } | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
|  | LLDSPEC void gdisp_lld_blit_area(GDisplay *g) { | ||||||
|  |     uint8_t* buffer = (uint8_t*)g->p.ptr; | ||||||
|  |     int linelength = g->p.cx; | ||||||
|  |     for (int i = 0; i < g->p.cy; i++) { | ||||||
|  |         unsigned dstx = g->p.x; | ||||||
|  |         unsigned dsty = g->p.y + i; | ||||||
|  |         unsigned srcx = g->p.x1; | ||||||
|  |         unsigned srcy = g->p.y1 + i; | ||||||
|  |         unsigned srcbit = srcy * g->p.x2 + srcx; | ||||||
|  |         for(int j=0; j < linelength; j++) { | ||||||
|  |             uint8_t src = buffer[srcbit / 8]; | ||||||
|  |             uint8_t bit = 7-(srcbit % 8); | ||||||
|  |             uint8_t bitset = (src >> bit) & 1; | ||||||
|  |             uint8_t* dst = &(RAM(g)[xyaddr(dstx, dsty)]); | ||||||
|  |             if (bitset) { | ||||||
|  |                 *dst |= xybit(dsty); | ||||||
|  |             } | ||||||
|  |             else { | ||||||
|  |                 *dst &= ~xybit(dsty); | ||||||
|  |             } | ||||||
|  | 			dstx++; | ||||||
|  |             srcbit++; | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
|  |  | ||||||
| #if GDISP_NEED_CONTROL && GDISP_HARDWARE_CONTROL | #if GDISP_NEED_CONTROL && GDISP_HARDWARE_CONTROL | ||||||
| LLDSPEC void gdisp_lld_control(GDisplay *g) { | LLDSPEC void gdisp_lld_control(GDisplay *g) { | ||||||
|     switch(g->p.x) { |     switch(g->p.x) { | ||||||
|   | |||||||
| @@ -18,6 +18,7 @@ | |||||||
| #define GDISP_HARDWARE_DRAWPIXEL        TRUE | #define GDISP_HARDWARE_DRAWPIXEL        TRUE | ||||||
| #define GDISP_HARDWARE_PIXELREAD        TRUE | #define GDISP_HARDWARE_PIXELREAD        TRUE | ||||||
| #define GDISP_HARDWARE_CONTROL          TRUE | #define GDISP_HARDWARE_CONTROL          TRUE | ||||||
|  | #define GDISP_HARDWARE_BITFILLS         TRUE | ||||||
|  |  | ||||||
| #define GDISP_LLD_PIXELFORMAT           GDISP_PIXELFORMAT_MONO | #define GDISP_LLD_PIXELFORMAT           GDISP_PIXELFORMAT_MONO | ||||||
|  |  | ||||||
|   | |||||||
| @@ -143,7 +143,7 @@ | |||||||
|         #define GDISP_HARDWARE_DRAWPIXEL             TRUE |         #define GDISP_HARDWARE_DRAWPIXEL             TRUE | ||||||
|         #define GDISP_HARDWARE_CLEARS                FALSE |         #define GDISP_HARDWARE_CLEARS                FALSE | ||||||
|         #define GDISP_HARDWARE_FILLS                 FALSE |         #define GDISP_HARDWARE_FILLS                 FALSE | ||||||
|         #define GDISP_HARDWARE_BITFILLS              FALSE |         //#define GDISP_HARDWARE_BITFILLS              FALSE | ||||||
|         #define GDISP_HARDWARE_SCROLL                FALSE |         #define GDISP_HARDWARE_SCROLL                FALSE | ||||||
|         #define GDISP_HARDWARE_PIXELREAD             TRUE |         #define GDISP_HARDWARE_PIXELREAD             TRUE | ||||||
|         #define GDISP_HARDWARE_CONTROL               TRUE |         #define GDISP_HARDWARE_CONTROL               TRUE | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user