mirror of
https://github.com/RT-Thread/rt-thread.git
synced 2025-12-26 17:18:24 +00:00
sync with RTGUI c074ff2898b9e
Full log is in GitHub. git-svn-id: https://rt-thread.googlecode.com/svn/trunk@2222 bbd45198-f89e-11dd-88c7-29a3b14d5316
This commit is contained in:
@@ -1,9 +1,23 @@
|
||||
/*
|
||||
* Change Logs:
|
||||
* Date Author Notes
|
||||
* 2012-01-24 onelife add mono color support
|
||||
* 2012-01-24 onelife fix a bug in _pixel_draw_raw_hline
|
||||
*/
|
||||
#include <rtgui/rtgui_system.h>
|
||||
#include <rtgui/driver.h>
|
||||
|
||||
#define gfx_device (rtgui_graphic_get_device()->device)
|
||||
#define gfx_device_ops rt_graphix_ops(gfx_device)
|
||||
|
||||
static void _pixel_mono_set_pixel(rtgui_color_t *c, int x, int y)
|
||||
{
|
||||
rt_uint8_t pixel;
|
||||
|
||||
pixel = rtgui_color_to_mono(*c);
|
||||
gfx_device_ops->set_pixel((char*)&pixel, x, y);
|
||||
}
|
||||
|
||||
static void _pixel_rgb565p_set_pixel(rtgui_color_t *c, int x, int y)
|
||||
{
|
||||
rt_uint16_t pixel;
|
||||
@@ -28,6 +42,14 @@ static void _pixel_rgb888_set_pixel(rtgui_color_t *c, int x, int y)
|
||||
gfx_device_ops->set_pixel((char*)&pixel, x, y);
|
||||
}
|
||||
|
||||
static void _pixel_mono_get_pixel(rtgui_color_t *c, int x, int y)
|
||||
{
|
||||
rt_uint8_t pixel;
|
||||
|
||||
gfx_device_ops->get_pixel((char*)&pixel, x, y);
|
||||
*c = rtgui_color_from_mono(pixel);
|
||||
}
|
||||
|
||||
static void _pixel_rgb565p_get_pixel(rtgui_color_t *c, int x, int y)
|
||||
{
|
||||
rt_uint16_t pixel;
|
||||
@@ -52,6 +74,14 @@ static void _pixel_rgb888_get_pixel(rtgui_color_t *c, int x, int y)
|
||||
*c = rtgui_color_from_888(pixel);
|
||||
}
|
||||
|
||||
static void _pixel_mono_draw_hline(rtgui_color_t *c, int x1, int x2, int y)
|
||||
{
|
||||
rt_uint8_t pixel;
|
||||
|
||||
pixel = rtgui_color_to_mono(*c);
|
||||
gfx_device_ops->draw_hline((char*)&pixel, x1, x2, y);
|
||||
}
|
||||
|
||||
static void _pixel_rgb565p_draw_hline(rtgui_color_t *c, int x1, int x2, int y)
|
||||
{
|
||||
rt_uint16_t pixel;
|
||||
@@ -76,6 +106,14 @@ static void _pixel_rgb888_draw_hline(rtgui_color_t *c, int x1, int x2, int y)
|
||||
gfx_device_ops->draw_hline((char*)&pixel, x1, x2, y);
|
||||
}
|
||||
|
||||
static void _pixel_mono_draw_vline(rtgui_color_t *c, int x, int y1, int y2)
|
||||
{
|
||||
rt_uint8_t pixel;
|
||||
|
||||
pixel = rtgui_color_to_mono(*c);
|
||||
gfx_device_ops->draw_vline((char*)&pixel, x, y1, y2);
|
||||
}
|
||||
|
||||
static void _pixel_rgb565p_draw_vline(rtgui_color_t *c, int x, int y1, int y2)
|
||||
{
|
||||
rt_uint16_t pixel;
|
||||
@@ -102,13 +140,19 @@ static void _pixel_rgb888_draw_vline(rtgui_color_t *c, int x, int y1, int y2)
|
||||
|
||||
static void _pixel_draw_raw_hline(rt_uint8_t *pixels, int x1, int x2, int y)
|
||||
{
|
||||
if (x2 > x1)
|
||||
gfx_device_ops->blit_line((char*)pixels, x1, y, (x2 - x1));
|
||||
else
|
||||
gfx_device_ops->blit_line((char*)pixels, x2, y, (x1 - x2));
|
||||
gfx_device_ops->blit_line((char*)pixels, x1, x2, y);
|
||||
}
|
||||
|
||||
/* pixel device */
|
||||
const struct rtgui_graphic_driver_ops _pixel_mono_ops =
|
||||
{
|
||||
_pixel_mono_set_pixel,
|
||||
_pixel_mono_get_pixel,
|
||||
_pixel_mono_draw_hline,
|
||||
_pixel_mono_draw_vline,
|
||||
_pixel_draw_raw_hline,
|
||||
};
|
||||
|
||||
const struct rtgui_graphic_driver_ops _pixel_rgb565p_ops =
|
||||
{
|
||||
_pixel_rgb565p_set_pixel,
|
||||
@@ -140,6 +184,9 @@ const struct rtgui_graphic_driver_ops *rtgui_pixel_device_get_ops(int pixel_form
|
||||
{
|
||||
switch (pixel_format)
|
||||
{
|
||||
case RTGRAPHIC_PIXEL_FORMAT_MONO:
|
||||
return &_pixel_mono_ops;
|
||||
|
||||
case RTGRAPHIC_PIXEL_FORMAT_RGB565:
|
||||
return &_pixel_rgb565_ops;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user