🎨 update the input format of fb_gfx
parent
0266875718
commit
c559f7fc32
|
@ -1,5 +1,10 @@
|
||||||
set(COMPONENT_SRCS "fb_gfx.c")
|
# set(COMPONENT_SRCS "fb_gfx.c")
|
||||||
set(COMPONENT_ADD_INCLUDEDIRS "include")
|
# set(COMPONENT_ADD_INCLUDEDIRS "include")
|
||||||
set(COMPONENT_PRIV_INCLUDEDIRS "")
|
# set(COMPONENT_PRIV_INCLUDEDIRS "")
|
||||||
set(COMPONENT_PRIV_REQUIRES newlib)
|
# set(COMPONENT_PRIV_REQUIRES newlib)
|
||||||
register_component()
|
# register_component()
|
||||||
|
set(src_dirs .)
|
||||||
|
set(include_dirs .
|
||||||
|
./include)
|
||||||
|
set(requires esp32-camera)
|
||||||
|
idf_component_register(SRC_DIRS ${src_dirs} INCLUDE_DIRS ${include_dirs} REQUIRES ${requires})
|
|
@ -38,10 +38,24 @@ typedef struct
|
||||||
#include "FreeMonoBold12pt7b.h" //14x24
|
#include "FreeMonoBold12pt7b.h" //14x24
|
||||||
#define gfxFont ((GFXfont *)(&FreeMonoBold12pt7b))
|
#define gfxFont ((GFXfont *)(&FreeMonoBold12pt7b))
|
||||||
|
|
||||||
void fb_gfx_fillRect(fb_data_t *fb, int32_t x, int32_t y, int32_t w, int32_t h, uint32_t color)
|
void fb_gfx_fillRect(camera_fb_t *fb, int32_t x, int32_t y, int32_t w, int32_t h, uint32_t color)
|
||||||
{
|
{
|
||||||
|
int bytes_per_pixel = 0;
|
||||||
|
switch (fb->format)
|
||||||
|
{
|
||||||
|
case PIXFORMAT_GRAYSCALE:
|
||||||
|
bytes_per_pixel = 1;
|
||||||
|
break;
|
||||||
|
case PIXFORMAT_RGB565:
|
||||||
|
bytes_per_pixel = 2;
|
||||||
|
break;
|
||||||
|
case PIXFORMAT_RGB888:
|
||||||
|
bytes_per_pixel = 3;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
int32_t line_step = (fb->width - w) * 3;
|
int32_t line_step = (fb->width - w) * 3;
|
||||||
uint8_t *data = fb->data + ((x + (y * fb->width)) * 3);
|
uint8_t *data = fb->buf + ((x + (y * fb->width)) * bytes_per_pixel);
|
||||||
uint8_t c0 = color >> 16;
|
uint8_t c0 = color >> 16;
|
||||||
uint8_t c1 = color >> 8;
|
uint8_t c1 = color >> 8;
|
||||||
uint8_t c2 = color;
|
uint8_t c2 = color;
|
||||||
|
@ -49,26 +63,41 @@ void fb_gfx_fillRect(fb_data_t *fb, int32_t x, int32_t y, int32_t w, int32_t h,
|
||||||
{
|
{
|
||||||
for (int j = 0; j < w; j++)
|
for (int j = 0; j < w; j++)
|
||||||
{
|
{
|
||||||
data[0] = c0;
|
switch (bytes_per_pixel)
|
||||||
data[1] = c1;
|
{
|
||||||
data[2] = c2;
|
case 1:
|
||||||
data += 3;
|
data[0] = c2;
|
||||||
|
data++;
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
data[0] = c1;
|
||||||
|
data[1] = c2;
|
||||||
|
data += 2;
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
data[0] = c0;
|
||||||
|
data[1] = c1;
|
||||||
|
data[2] = c2;
|
||||||
|
data += 3;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
data += line_step;
|
data += line_step;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void fb_gfx_drawFastHLine(fb_data_t *fb, int32_t x, int32_t y, int32_t w, uint32_t color)
|
void fb_gfx_drawFastHLine(camera_fb_t *fb, int32_t x, int32_t y, int32_t w, uint32_t color)
|
||||||
{
|
{
|
||||||
fb_gfx_fillRect(fb, x, y, w, 1, color);
|
fb_gfx_fillRect(fb, x, y, w, 1, color);
|
||||||
}
|
}
|
||||||
|
|
||||||
void fb_gfx_drawFastVLine(fb_data_t *fb, int32_t x, int32_t y, int32_t h, uint32_t color)
|
void fb_gfx_drawFastVLine(camera_fb_t *fb, int32_t x, int32_t y, int32_t h, uint32_t color)
|
||||||
{
|
{
|
||||||
fb_gfx_fillRect(fb, x, y, 1, h, color);
|
fb_gfx_fillRect(fb, x, y, 1, h, color);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t fb_gfx_putc(fb_data_t *fb, int32_t x, int32_t y, uint32_t color, unsigned char c)
|
uint8_t fb_gfx_putc(camera_fb_t *fb, int32_t x, int32_t y, uint32_t color, unsigned char c)
|
||||||
{
|
{
|
||||||
uint16_t line_width;
|
uint16_t line_width;
|
||||||
uint8_t xa = 0, bit = 0, bits = 0, xx, yy;
|
uint8_t xa = 0, bit = 0, bits = 0, xx, yy;
|
||||||
|
@ -120,7 +149,7 @@ uint8_t fb_gfx_putc(fb_data_t *fb, int32_t x, int32_t y, uint32_t color, unsigne
|
||||||
return xa;
|
return xa;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t fb_gfx_print(fb_data_t *fb, int x, int y, uint32_t color, const char *str)
|
uint32_t fb_gfx_print(camera_fb_t *fb, int x, int y, uint32_t color, const char *str)
|
||||||
{
|
{
|
||||||
uint32_t l = 0;
|
uint32_t l = 0;
|
||||||
int xc = x, yc = y, lc = fb->width - gfxFont->glyph[0].xAdvance;
|
int xc = x, yc = y, lc = fb->width - gfxFont->glyph[0].xAdvance;
|
||||||
|
@ -151,7 +180,7 @@ uint32_t fb_gfx_print(fb_data_t *fb, int x, int y, uint32_t color, const char *s
|
||||||
return l;
|
return l;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t fb_gfx_printf(fb_data_t *fb, int32_t x, int32_t y, uint32_t color, const char *format, ...)
|
uint32_t fb_gfx_printf(camera_fb_t *fb, int32_t x, int32_t y, uint32_t color, const char *format, ...)
|
||||||
{
|
{
|
||||||
char loc_buf[64];
|
char loc_buf[64];
|
||||||
char *temp = loc_buf;
|
char *temp = loc_buf;
|
||||||
|
|
|
@ -13,29 +13,30 @@
|
||||||
// limitations under the License.
|
// limitations under the License.
|
||||||
#ifndef _FB_GFX_H_
|
#ifndef _FB_GFX_H_
|
||||||
#define _FB_GFX_H_
|
#define _FB_GFX_H_
|
||||||
|
#include "esp_camera.h"
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
typedef enum {
|
// typedef enum {
|
||||||
FB_RGB888, FB_BGR888, FB_RGB565, FB_BGR565
|
// FB_RGB888, FB_BGR888, FB_RGB565, FB_BGR565
|
||||||
} fb_format_t;
|
// } fb_format_t;
|
||||||
|
|
||||||
typedef struct {
|
// typedef struct {
|
||||||
int width;
|
// int width;
|
||||||
int height;
|
// int height;
|
||||||
int bytes_per_pixel;
|
// int bytes_per_pixel;
|
||||||
fb_format_t format;
|
// fb_format_t format;
|
||||||
uint8_t * data;
|
// uint8_t * data;
|
||||||
} fb_data_t;
|
// } fb_data_t;
|
||||||
|
|
||||||
void fb_gfx_fillRect (fb_data_t *fb, int32_t x, int32_t y, int32_t w, int32_t h, uint32_t color);
|
void fb_gfx_fillRect (camera_fb_t *fb, int32_t x, int32_t y, int32_t w, int32_t h, uint32_t color);
|
||||||
void fb_gfx_drawFastHLine(fb_data_t *fb, int32_t x, int32_t y, int32_t w, uint32_t color);
|
void fb_gfx_drawFastHLine(camera_fb_t *fb, int32_t x, int32_t y, int32_t w, uint32_t color);
|
||||||
void fb_gfx_drawFastVLine(fb_data_t *fb, int32_t x, int32_t y, int32_t h, uint32_t color);
|
void fb_gfx_drawFastVLine(camera_fb_t *fb, int32_t x, int32_t y, int32_t h, uint32_t color);
|
||||||
uint8_t fb_gfx_putc (fb_data_t *fb, int32_t x, int32_t y, uint32_t color, unsigned char c);
|
uint8_t fb_gfx_putc (camera_fb_t *fb, int32_t x, int32_t y, uint32_t color, unsigned char c);
|
||||||
uint32_t fb_gfx_print (fb_data_t *fb, int32_t x, int32_t y, uint32_t color, const char * str);
|
uint32_t fb_gfx_print (camera_fb_t *fb, int32_t x, int32_t y, uint32_t color, const char * str);
|
||||||
uint32_t fb_gfx_printf (fb_data_t *fb, int32_t x, int32_t y, uint32_t color, const char *format, ...);
|
uint32_t fb_gfx_printf (camera_fb_t *fb, int32_t x, int32_t y, uint32_t color, const char *format, ...);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue