Add support for blitting to the Infinity LCD
This commit is contained in:
parent
2b24d35846
commit
a8f5897b97
@ -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) {
|
||||||
|
@ -14,12 +14,13 @@
|
|||||||
/* Driver hardware support. */
|
/* Driver hardware support. */
|
||||||
/*===========================================================================*/
|
/*===========================================================================*/
|
||||||
|
|
||||||
#define GDISP_HARDWARE_FLUSH TRUE // This controller requires flushing
|
#define GDISP_HARDWARE_FLUSH TRUE // This controller requires flushing
|
||||||
#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
|
||||||
|
|
||||||
#endif /* GFX_USE_GDISP */
|
#endif /* GFX_USE_GDISP */
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user