summaryrefslogtreecommitdiff
path: root/components/gui/include/rtgui
diff options
context:
space:
mode:
Diffstat (limited to 'components/gui/include/rtgui')
-rw-r--r--components/gui/include/rtgui/blit.h224
-rw-r--r--components/gui/include/rtgui/color.h192
-rw-r--r--components/gui/include/rtgui/dc.h299
-rw-r--r--components/gui/include/rtgui/dc_draw.h551
-rw-r--r--components/gui/include/rtgui/dc_trans.h64
-rw-r--r--components/gui/include/rtgui/driver.h117
-rw-r--r--components/gui/include/rtgui/event.h580
-rw-r--r--components/gui/include/rtgui/filerw.h78
-rw-r--r--components/gui/include/rtgui/font.h154
-rw-r--r--components/gui/include/rtgui/font_fnt.h62
-rw-r--r--components/gui/include/rtgui/font_freetype.h44
-rw-r--r--components/gui/include/rtgui/image.h100
-rw-r--r--components/gui/include/rtgui/image_bmp.h56
-rw-r--r--components/gui/include/rtgui/image_container.h58
-rw-r--r--components/gui/include/rtgui/image_hdc.h62
-rw-r--r--components/gui/include/rtgui/kbddef.h305
-rw-r--r--components/gui/include/rtgui/list.h76
-rw-r--r--components/gui/include/rtgui/matrix.h186
-rw-r--r--components/gui/include/rtgui/region.h132
-rw-r--r--components/gui/include/rtgui/rtgui.h187
-rw-r--r--components/gui/include/rtgui/rtgui_app.h128
-rw-r--r--components/gui/include/rtgui/rtgui_config.h81
-rw-r--r--components/gui/include/rtgui/rtgui_object.h177
-rw-r--r--components/gui/include/rtgui/rtgui_server.h96
-rw-r--r--components/gui/include/rtgui/rtgui_system.h108
-rw-r--r--components/gui/include/rtgui/tree.h748
-rw-r--r--components/gui/include/rtgui/widgets/box.h65
-rw-r--r--components/gui/include/rtgui/widgets/container.h80
-rw-r--r--components/gui/include/rtgui/widgets/title.h48
-rw-r--r--components/gui/include/rtgui/widgets/widget.h209
-rw-r--r--components/gui/include/rtgui/widgets/window.h215
31 files changed, 0 insertions, 5482 deletions
diff --git a/components/gui/include/rtgui/blit.h b/components/gui/include/rtgui/blit.h
deleted file mode 100644
index 3a07204f93..0000000000
--- a/components/gui/include/rtgui/blit.h
+++ /dev/null
@@ -1,224 +0,0 @@
-/*
- * File : blit.h
- * This file is part of RT-Thread GUI Engine
- * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Change Logs:
- * Date Author Notes
- * 2013-10-04 Bernard porting SDL software render to RT-Thread GUI
- */
-
-/*
- Simple DirectMedia Layer
- Copyright (C) 1997-2013 Sam Lantinga <[email protected]>
-
- This software is provided 'as-is', without any express or implied
- warranty. In no event will the authors be held liable for any damages
- arising from the use of this software.
-
- Permission is granted to anyone to use this software for any purpose,
- including commercial applications, and to alter it and redistribute it
- freely, subject to the following restrictions:
-
- 1. The origin of this software must not be misrepresented; you must not
- claim that you wrote the original software. If you use this software
- in a product, an acknowledgment in the product documentation would be
- appreciated but is not required.
- 2. Altered source versions must be plainly marked as such, and must not be
- misrepresented as being the original software.
- 3. This notice may not be removed or altered from any source distribution.
-*/
-
-#ifndef __RTGUI_BLIT_H__
-#define __RTGUI_BLIT_H__
-
-#include <rtgui/rtgui.h>
-#include <rtgui/dc.h>
-
-/* Assemble R-G-B values into a specified pixel format and store them */
-#define RGB565_FROM_RGB(Pixel, r, g, b) \
-{ \
- Pixel = ((r>>3)<<11)|((g>>2)<<5)|(b>>3); \
-}
-#define BGR565_FROM_RGB(Pixel, r, g, b) \
-{ \
- Pixel = ((b>>3)<<11)|((g>>2)<<5)|(r>>3); \
-}
-#define RGB555_FROM_RGB(Pixel, r, g, b) \
-{ \
- Pixel = ((r>>3)<<10)|((g>>3)<<5)|(b>>3); \
-}
-#define RGB888_FROM_RGB(Pixel, r, g, b) \
-{ \
- Pixel = (r<<16)|(g<<8)|b; \
-}
-#define ARGB8888_FROM_RGBA(Pixel, r, g, b, a) \
-{ \
- Pixel = (a<<24)|(r<<16)|(g<<8)|b; \
-}
-#define RGBA8888_FROM_RGBA(Pixel, r, g, b, a) \
-{ \
- Pixel = (r<<24)|(g<<16)|(b<<8)|a; \
-}
-#define ABGR8888_FROM_RGBA(Pixel, r, g, b, a) \
-{ \
- Pixel = (a<<24)|(b<<16)|(g<<8)|r; \
-}
-#define BGRA8888_FROM_RGBA(Pixel, r, g, b, a) \
-{ \
- Pixel = (b<<24)|(g<<16)|(r<<8)|a; \
-}
-#define ARGB2101010_FROM_RGBA(Pixel, r, g, b, a) \
-{ \
- r = r ? ((r << 2) | 0x3) : 0; \
- g = g ? ((g << 2) | 0x3) : 0; \
- b = b ? ((b << 2) | 0x3) : 0; \
- a = (a * 3) / 255; \
- Pixel = (a<<30)|(r<<20)|(g<<10)|b; \
-}
-
-/* Load pixel of the specified format from a buffer and get its R-G-B values */
-#define RGB_FROM_RGB565(Pixel, r, g, b) \
- { \
- r = rtgui_blit_expand_byte[3][((Pixel&0xF800)>>11)]; \
- g = rtgui_blit_expand_byte[2][((Pixel&0x07E0)>>5)]; \
- b = rtgui_blit_expand_byte[3][(Pixel&0x001F)]; \
-}
-#define RGB_FROM_BGR565(Pixel, r, g, b) \
- { \
- b = rtgui_blit_expand_byte[3][((Pixel&0xF800)>>11)]; \
- g = rtgui_blit_expand_byte[2][((Pixel&0x07E0)>>5)]; \
- r = rtgui_blit_expand_byte[3][(Pixel&0x001F)]; \
-}
-#define RGB_FROM_RGB555(Pixel, r, g, b) \
-{ \
- r = rtgui_blit_expand_byte[3][((Pixel&0x7C00)>>10)]; \
- g = rtgui_blit_expand_byte[3][((Pixel&0x03E0)>>5)]; \
- b = rtgui_blit_expand_byte[3][(Pixel&0x001F)]; \
-}
-#define RGB_FROM_RGB888(Pixel, r, g, b) \
-{ \
- r = ((Pixel&0xFF0000)>>16); \
- g = ((Pixel&0xFF00)>>8); \
- b = (Pixel&0xFF); \
-}
-
-#define RGBA_FROM_RGBA8888(Pixel, r, g, b, a) \
-{ \
- r = (Pixel>>24); \
- g = ((Pixel>>16)&0xFF); \
- b = ((Pixel>>8)&0xFF); \
- a = (Pixel&0xFF); \
-}
-#define RGBA_FROM_ARGB8888(Pixel, r, g, b, a) \
-{ \
- r = ((Pixel>>16)&0xFF); \
- g = ((Pixel>>8)&0xFF); \
- b = (Pixel&0xFF); \
- a = (Pixel>>24); \
-}
-#define RGBA_FROM_ABGR8888(Pixel, r, g, b, a) \
-{ \
- r = (Pixel&0xFF); \
- g = ((Pixel>>8)&0xFF); \
- b = ((Pixel>>16)&0xFF); \
- a = (Pixel>>24); \
-}
-#define RGBA_FROM_BGRA8888(Pixel, r, g, b, a) \
-{ \
- r = ((Pixel>>8)&0xFF); \
- g = ((Pixel>>16)&0xFF); \
- b = (Pixel>>24); \
- a = (Pixel&0xFF); \
-}
-#define RGBA_FROM_ARGB2101010(Pixel, r, g, b, a) \
-{ \
- r = ((Pixel>>22)&0xFF); \
- g = ((Pixel>>12)&0xFF); \
- b = ((Pixel>>2)&0xFF); \
- a = rtgui_blit_expand_byte[6][(Pixel>>30)]; \
-}
-
-/* 4-times unrolled loop */
-#define DUFFS_LOOP4(pixel_copy_increment, width) \
-{ int n = (width+3)/4; \
- switch (width & 3) { \
- case 0: do { pixel_copy_increment; \
- case 3: pixel_copy_increment; \
- case 2: pixel_copy_increment; \
- case 1: pixel_copy_increment; \
- } while (--n > 0); \
- } \
-}
-
-/* 8-times unrolled loop */
-#define DUFFS_LOOP8(pixel_copy_increment, width) \
-{ int n = (width+7)/8; \
- switch (width & 7) { \
- case 0: do { pixel_copy_increment; \
- case 7: pixel_copy_increment; \
- case 6: pixel_copy_increment; \
- case 5: pixel_copy_increment; \
- case 4: pixel_copy_increment; \
- case 3: pixel_copy_increment; \
- case 2: pixel_copy_increment; \
- case 1: pixel_copy_increment; \
- } while ( --n > 0 ); \
- } \
-}
-
-/* Use the 8-times version of the loop by default */
-#define DUFFS_LOOP(pixel_copy_increment, width) \
- DUFFS_LOOP8(pixel_copy_increment, width)
-
-struct rtgui_blit_info
-{
- rt_uint8_t *src;
- int src_w, src_h;
- int src_pitch;
- int src_skip;
-
- rt_uint8_t *dst;
- int dst_w, dst_h;
- int dst_pitch;
- int dst_skip;
-
- rt_uint8_t src_fmt;
- rt_uint8_t dst_fmt;
- rt_uint8_t r, g, b, a;
-};
-
-struct rtgui_image_info
-{
- rt_uint8_t *pixels;
- int src_pitch;
-
- rt_uint8_t src_fmt;
- rt_uint8_t a;
-};
-
-extern const rt_uint8_t* rtgui_blit_expand_byte[9];
-
-typedef void (*rtgui_blit_line_func)(rt_uint8_t *dst, rt_uint8_t *src, int line);
-rtgui_blit_line_func rtgui_blit_line_get(int dst_bpp, int src_bpp);
-rtgui_blit_line_func rtgui_blit_line_get_inv(int dst_bpp, int src_bpp);
-
-void rtgui_blit(struct rtgui_blit_info * info);
-void rtgui_image_info_blit(struct rtgui_image_info* image, struct rtgui_dc* dc, struct rtgui_rect *dc_rect);
-
-#endif
-
diff --git a/components/gui/include/rtgui/color.h b/components/gui/include/rtgui/color.h
deleted file mode 100644
index c9b8282425..0000000000
--- a/components/gui/include/rtgui/color.h
+++ /dev/null
@@ -1,192 +0,0 @@
-/*
- * File : color.h
- * This file is part of RT-Thread GUI Engine
- * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Change Logs:
- * Date Author Notes
- * 2009-10-16 Bernard first version
- * 2012-01-24 onelife add mono color support
- */
-#ifndef __RTGUI_COLOR_H__
-#define __RTGUI_COLOR_H__
-
-#include <rtgui/rtgui.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
- * The color used in the GUI:
- *
- * bit bit
- * RGB565 15 R,G,B 0
- * BGR565 15 B,G,R 0
- * RGB888 23 R,G,B 0
- * ARGB888 31 A,R,G,B 0
- * RGBA888 31 R,G,B,A 0
- * ABGR888 31 A,B,G,R 0
- *
- * The rtgui_color is defined as ARGB888.
- * bit31 A,R,G,B bit0
- */
-#define RTGUI_ARGB(a, r, g, b) \
- ((rtgui_color_t)(((rt_uint8_t)(b)|\
- (((unsigned long)(rt_uint8_t)(g))<<8))|\
- (((unsigned long)(rt_uint8_t)(r))<<16)|\
- (((unsigned long)(rt_uint8_t)(a))<<24)))
-#define RTGUI_RGB(r, g, b) RTGUI_ARGB(255, (r), (g), (b))
-
-#define RTGUI_RGB_B(c) ((c) & 0xff)
-#define RTGUI_RGB_G(c) (((c) >> 8) & 0xff)
-#define RTGUI_RGB_R(c) (((c) >> 16) & 0xff)
-#define RTGUI_RGB_A(c) (((c) >> 24) & 0xff)
-
-extern const rtgui_color_t default_foreground;
-extern const rtgui_color_t default_background;
-
-/* it's better use these color definitions */
-#define RED RTGUI_RGB(0xff, 0x00, 0x00)
-#define GREEN RTGUI_RGB(0x00, 0xff, 0x00)
-#define BLUE RTGUI_RGB(0x00, 0x00, 0xff)
-#define BLACK RTGUI_RGB(0x00, 0x00, 0x00)
-#define WHITE RTGUI_RGB(0xff, 0xff, 0xff)
-#define HIGH_LIGHT RTGUI_RGB(0xfc, 0xfc, 0xfc)
-#define DARK_GREY RTGUI_RGB(0x7f, 0x7f, 0x7f)
-#define LIGHT_GREY RTGUI_RGB(0xc0, 0xc0, 0xc0)
-
-#ifdef TRANSPARENT
-#undef TRANSPARENT
-#endif
-#define TRANSPARENT RTGUI_ARGB(0, 0, 0, 0)
-
-extern const rtgui_color_t red;
-extern const rtgui_color_t green;
-extern const rtgui_color_t blue;
-extern const rtgui_color_t black;
-extern const rtgui_color_t white;
-extern const rtgui_color_t high_light;
-extern const rtgui_color_t dark_grey;
-extern const rtgui_color_t light_grey;
-
-/*
- * RTGUI default color format: ARGB
- * AAAA AAAA RRRR RRRR GGGG GGGG BBBB BBBB
- * 31 0
- */
-
-/* convert rtgui color to mono */
-rt_inline rt_uint8_t rtgui_color_to_mono(rtgui_color_t c)
-{
- rt_uint8_t pixel;
-
- pixel = (RTGUI_RGB_R(c) | RTGUI_RGB_G(c) | RTGUI_RGB_B(c)) ? 0x01 : 0x00;
- return pixel;
-}
-
-rt_inline rtgui_color_t rtgui_color_from_mono(rt_uint8_t pixel)
-{
- rtgui_color_t color;
-
- if (pixel)
- {
- color = white;
- }
- else
- {
- color = black;
- }
- return color;
-}
-
-/* convert rtgui color to RRRRRGGGGGGBBBBB */
-rt_inline rt_uint16_t rtgui_color_to_565(rtgui_color_t c)
-{
- rt_uint16_t pixel;
-
- pixel = (rt_uint16_t)(((RTGUI_RGB_R(c) >> 3) << 11) | ((RTGUI_RGB_G(c) >> 2) << 5) | (RTGUI_RGB_B(c) >> 3));
-
- return pixel;
-}
-
-rt_inline rtgui_color_t rtgui_color_from_565(rt_uint16_t pixel)
-{
- rt_uint16_t r, g, b;
- rtgui_color_t color;
-
- r = (pixel >> 11) & 0x1f;
- g = (pixel >> 5) & 0x3f;
- b = pixel & 0x1f;
-
- color = b * 255 / 31 + ((g * 255 / 63) << 8) + ((r * 255 / 31) << 16);
-
- return color;
-}
-
-/* convert rtgui color to BBBBBGGGGGGRRRRR */
-rt_inline rt_uint16_t rtgui_color_to_565p(rtgui_color_t c)
-{
- rt_uint16_t pixel;
-
- pixel = (rt_uint16_t)(((RTGUI_RGB_B(c) >> 3) << 11) | ((RTGUI_RGB_G(c) >> 2) << 5) | (RTGUI_RGB_R(c) >> 3));
- return pixel;
-}
-
-rt_inline rtgui_color_t rtgui_color_from_565p(rt_uint16_t pixel)
-{
- rt_uint8_t r, g, b;
- rtgui_color_t color;
-
- r = pixel & 0x1f;
- g = (pixel >> 5) & 0x3f;
- b = (pixel >> 11) & 0x1f;
-
- color = b * 255 / 31 + ((g * 255 / 63) << 8) + ((r * 255 / 31) << 16);
-
- return color;
-}
-
-/* convert rtgui color to RGB */
-rt_inline rt_uint32_t rtgui_color_to_888(rtgui_color_t c)
-{
- rt_uint32_t pixel;
-
- pixel = RTGUI_RGB_R(c) << 16 | RTGUI_RGB_G(c) << 8 | RTGUI_RGB_B(c);
- return pixel;
-}
-
-rt_inline rtgui_color_t rtgui_color_from_888(rt_uint32_t pixel)
-{
- rtgui_color_t color;
-
- color = RTGUI_RGB(((pixel >> 16) & 0xff), ((pixel >> 8) & 0xff), pixel & 0xff);
-
- return color;
-}
-
-/* get the bits of specified pixle format */
-rt_uint8_t rtgui_color_get_bits(rt_uint8_t pixel_format) RTGUI_PURE;
-/* get the bytes of specified pixle format */
-rt_uint8_t rtgui_color_get_bpp(rt_uint8_t pixel_format) RTGUI_PURE;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
diff --git a/components/gui/include/rtgui/dc.h b/components/gui/include/rtgui/dc.h
deleted file mode 100644
index 3dddbbff2a..0000000000
--- a/components/gui/include/rtgui/dc.h
+++ /dev/null
@@ -1,299 +0,0 @@
-/*
- * File : dc.h
- * This file is part of RT-Thread GUI Engine
- * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Change Logs:
- * Date Author Notes
- * 2009-10-16 Bernard first version
- */
-#ifndef __RTGUI_DC_H__
-#define __RTGUI_DC_H__
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <rtgui/rtgui.h>
-#include <rtgui/font.h>
-#include <rtgui/driver.h>
-#include <rtgui/widgets/widget.h>
-
-#define RTGUI_DC(dc) ((struct rtgui_dc*)(dc))
-
-#ifndef M_PI
-#define M_PI 3.14159265358979323846
-#endif
-
-enum rtgui_dc_type
-{
- RTGUI_DC_HW,
- RTGUI_DC_CLIENT,
- RTGUI_DC_BUFFER,
-};
-
-struct rtgui_dc_engine
-{
- /* interface */
- void (*draw_point)(struct rtgui_dc *dc, int x, int y);
- void (*draw_color_point)(struct rtgui_dc *dc, int x, int y, rtgui_color_t color);
- void (*draw_vline)(struct rtgui_dc *dc, int x, int y1, int y2);
- void (*draw_hline)(struct rtgui_dc *dc, int x1, int x2, int y);
- void (*fill_rect)(struct rtgui_dc *dc, rtgui_rect_t *rect);
- void (*blit_line)(struct rtgui_dc *dc, int x1, int x2, int y, rt_uint8_t *line_data);
- void (*blit)(struct rtgui_dc *dc, struct rtgui_point *dc_point, struct rtgui_dc *dest, rtgui_rect_t *rect);
-
- rt_bool_t (*fini)(struct rtgui_dc *dc);
-};
-
-/*
- * The abstract device context
- *
- * Normally, a DC is a drawable canvas, user can draw point/line/cycle etc
- * on the DC.
- *
- * There are several kinds of DC:
- * - Hardware DC;
- * - Client DC;
- * - Buffer DC;
- */
-struct rtgui_dc
-{
- /* type of device context */
- rt_uint32_t type;
-
- /* dc engine */
- const struct rtgui_dc_engine *engine;
-};
-
-/*
- * The hardware device context
- *
- * The hardware DC is a context based on hardware device, for examle the
- * LCD device. The operations on the hardware DC are reflected to the real
- * hardware.
- *
- */
-struct rtgui_dc_hw
-{
- struct rtgui_dc parent;
- rtgui_widget_t *owner;
- const struct rtgui_graphic_driver *hw_driver;
-};
-
-/**
- * The buffer dc is a device context with memory buffer.
- *
- * All the operations on this device context is reflected to the memory buffer.
- */
-struct rtgui_dc_buffer
-{
- struct rtgui_dc parent;
-
- /* graphic context */
- rtgui_gc_t gc;
-
- /* pixel format */
- rt_uint8_t pixel_format;
- rt_uint8_t blend_mode; /* RTGUI_BLENDMODE: None/Blend/Add/Mod */
-
- /* width and height */
- rt_uint16_t width, height;
- /* pitch */
- rt_uint16_t pitch;
-
-#ifdef RTGUI_IMAGE_CONTAINER
- /* image dc */
- struct rtgui_image_item *image_item;
-#endif
-
- /* pixel alpha */
- rt_uint8_t pixel_alpha;
- /* pixel data */
- rt_uint8_t *pixel;
-};
-
-#define RTGUI_DC_FC(dc) (rtgui_dc_get_gc(RTGUI_DC(dc))->foreground)
-#define RTGUI_DC_BC(dc) (rtgui_dc_get_gc(RTGUI_DC(dc))->background)
-#define RTGUI_DC_FONT(dc) (rtgui_dc_get_gc(RTGUI_DC(dc))->font)
-#define RTGUI_DC_TEXTALIGN(dc) (rtgui_dc_get_gc(RTGUI_DC(dc))->textalign)
-
-/* create a buffer dc */
-struct rtgui_dc *rtgui_dc_buffer_create(int width, int height);
-struct rtgui_dc *rtgui_dc_buffer_create_pixformat(rt_uint8_t pixel_format, int w, int h);
-#ifdef RTGUI_IMAGE_CONTAINER
-struct rtgui_dc *rtgui_img_dc_create_pixformat(rt_uint8_t pixel_format, rt_uint8_t *pixel,
- struct rtgui_image_item *image_item);
-#endif
-struct rtgui_dc *rtgui_dc_buffer_create_from_dc(struct rtgui_dc* dc);
-void rtgui_dc_buffer_set_alpha(struct rtgui_dc* dc, rt_uint8_t pixel_alpha);
-
-/* create a widget dc */
-struct rtgui_dc *rtgui_dc_widget_create(struct rtgui_widget * owner);
-
-/* begin and end a drawing */
-struct rtgui_dc *rtgui_dc_begin_drawing(rtgui_widget_t *owner);
-void rtgui_dc_end_drawing(struct rtgui_dc *dc, rt_bool_t update);
-
-/* destroy a dc */
-void rtgui_dc_destory(struct rtgui_dc *dc);
-
-/* create a hardware dc */
-struct rtgui_dc *rtgui_dc_hw_create(rtgui_widget_t *owner);
-
-/* create a client dc */
-struct rtgui_dc *rtgui_dc_client_create(rtgui_widget_t *owner);
-void rtgui_dc_client_init(rtgui_widget_t *owner);
-
-rt_uint8_t *rtgui_dc_buffer_get_pixel(struct rtgui_dc *dc);
-
-void rtgui_dc_draw_line(struct rtgui_dc *dc, int x1, int y1, int x2, int y2);
-void rtgui_dc_draw_rect(struct rtgui_dc *dc, struct rtgui_rect *rect);
-void rtgui_dc_fill_rect_forecolor(struct rtgui_dc *dc, struct rtgui_rect *rect);
-void rtgui_dc_draw_round_rect(struct rtgui_dc *dc, struct rtgui_rect *rect, int r);
-void rtgui_dc_fill_round_rect(struct rtgui_dc *dc, struct rtgui_rect *rect, int r);
-/** Fill a vertical gradient rect from @c1 to @c2 */
-void rtgui_dc_fill_gradient_rectv(struct rtgui_dc *dc, rtgui_rect_t *rect,
- rtgui_color_t c1, rtgui_color_t c2);
-void rtgui_dc_draw_annulus(struct rtgui_dc *dc, rt_int16_t x, rt_int16_t y, rt_int16_t r1, rt_int16_t r2, rt_int16_t start, rt_int16_t end);
-void rtgui_dc_draw_pie(struct rtgui_dc *dc, rt_int16_t x, rt_int16_t y, rt_int16_t r, rt_int16_t start, rt_int16_t end);
-void rtgui_dc_fill_pie(struct rtgui_dc *dc, rt_int16_t x, rt_int16_t y, rt_int16_t r, rt_int16_t start, rt_int16_t end);
-
-void rtgui_dc_draw_text(struct rtgui_dc *dc, const char *text, struct rtgui_rect *rect);
-void rtgui_dc_draw_text_stroke(struct rtgui_dc *dc, const char *text, struct rtgui_rect *rect,
- rtgui_color_t color_stroke, rtgui_color_t color_core);
-
-void rtgui_dc_draw_mono_bmp(struct rtgui_dc *dc, int x, int y, int w, int h, const rt_uint8_t *data);
-void rtgui_dc_draw_byte(struct rtgui_dc *dc, int x, int y, int h, const rt_uint8_t *data);
-void rtgui_dc_draw_word(struct rtgui_dc *dc, int x, int y, int h, const rt_uint8_t *data);
-
-void rtgui_dc_draw_border(struct rtgui_dc *dc, rtgui_rect_t *rect, int flag);
-void rtgui_dc_draw_horizontal_line(struct rtgui_dc *dc, int x1, int x2, int y);
-void rtgui_dc_draw_vertical_line(struct rtgui_dc *dc, int x, int y1, int y2);
-void rtgui_dc_draw_focus_rect(struct rtgui_dc *dc, rtgui_rect_t *rect);
-
-void rtgui_dc_draw_polygon(struct rtgui_dc *dc, const int *vx, const int *vy, int count);
-void rtgui_dc_fill_polygon(struct rtgui_dc *dc, const int *vx, const int *vy, int count);
-
-void rtgui_dc_draw_circle(struct rtgui_dc *dc, int x, int y, int r);
-void rtgui_dc_fill_circle(struct rtgui_dc *dc, rt_int16_t x, rt_int16_t y, rt_int16_t r);
-void rtgui_dc_draw_arc(struct rtgui_dc *dc, rt_int16_t x, rt_int16_t y, rt_int16_t r, rt_int16_t start, rt_int16_t end);
-
-void rtgui_dc_draw_ellipse(struct rtgui_dc *dc, rt_int16_t x, rt_int16_t y, rt_int16_t rx, rt_int16_t ry);
-void rtgui_dc_fill_ellipse(struct rtgui_dc *dc, rt_int16_t x, rt_int16_t y, rt_int16_t rx, rt_int16_t ry);
-
-/* alpha blending functions */
-void rtgui_dc_draw_aa_line(struct rtgui_dc * dst,int x1,int y1,int x2,int y2);
-void rtgui_dc_draw_aa_lines(struct rtgui_dc * dst,const struct rtgui_point * points,int count);
-
-void rtgui_dc_blend_point(struct rtgui_dc * dst,int x,int y,enum RTGUI_BLENDMODE blendMode,rt_uint8_t r,rt_uint8_t g,rt_uint8_t b,rt_uint8_t a);
-void rtgui_dc_blend_points(struct rtgui_dc * dst,const rtgui_point_t * points,int count,enum RTGUI_BLENDMODE blendMode,rt_uint8_t r,rt_uint8_t g,rt_uint8_t b,rt_uint8_t a);
-
-void rtgui_dc_blend_line(struct rtgui_dc * dst,int x1,int y1,int x2,int y2,enum RTGUI_BLENDMODE blendMode,rtgui_color_t color);
-void rtgui_dc_blend_lines(struct rtgui_dc * dst,const rtgui_point_t * points,int count,enum RTGUI_BLENDMODE blendMode,rtgui_color_t color);
-
-void rtgui_dc_blend_fill_rect(struct rtgui_dc * dst,const rtgui_rect_t * rect,enum RTGUI_BLENDMODE blendMode,rtgui_color_t color);
-void rtgui_dc_blend_fill_rects(struct rtgui_dc * dst,const rtgui_rect_t * rects,int count,enum RTGUI_BLENDMODE blendMode,rtgui_color_t color);
-
-void rtgui_dc_draw_aa_circle(struct rtgui_dc *dc, rt_int16_t x, rt_int16_t y, rt_int16_t r);
-void rtgui_dc_draw_aa_ellipse(struct rtgui_dc *dc, rt_int16_t x, rt_int16_t y, rt_int16_t rx, rt_int16_t ry);
-
-int rtgui_dc_draw_thick_line(struct rtgui_dc * dst, rt_int16_t x1, rt_int16_t y1, rt_int16_t x2, rt_int16_t y2, rt_uint8_t width);
-
-/*
- * dc inline function
- *
- * Note:
- * In order to improve drawing speed, put most of common function of dc to inline
- */
-
-/*
- * draw a point on dc
- */
-rt_inline void rtgui_dc_draw_point(struct rtgui_dc *dc, int x, int y)
-{
- dc->engine->draw_point(dc, x, y);
-}
-
-/*
- * draw a color point on dc
- */
-rt_inline void rtgui_dc_draw_color_point(struct rtgui_dc *dc, int x, int y, rtgui_color_t color)
-{
- dc->engine->draw_color_point(dc, x, y, color);
-}
-
-/*
- * draw a vertical line on dc
- */
-rt_inline void rtgui_dc_draw_vline(struct rtgui_dc *dc, int x, int y1, int y2)
-{
- dc->engine->draw_vline(dc, x, y1, y2);
-}
-
-/*
- * draw a horizontal line on dc
- */
-rt_inline void rtgui_dc_draw_hline(struct rtgui_dc *dc, int x1, int x2, int y)
-{
- dc->engine->draw_hline(dc, x1, x2, y);
-}
-
-/*
- * fill a rect with background color
- */
-rt_inline void rtgui_dc_fill_rect(struct rtgui_dc *dc, struct rtgui_rect *rect)
-{
- dc->engine->fill_rect(dc, rect);
-}
-
-/*
- * blit a dc (x, y) on another dc(rect)
- */
-rt_inline void rtgui_dc_blit(struct rtgui_dc *dc, struct rtgui_point *dc_point, struct rtgui_dc *dest, rtgui_rect_t *rect)
-{
- dc->engine->blit(dc, dc_point, dest, rect);
-}
-
-/* set gc of dc */
-void rtgui_dc_set_gc(struct rtgui_dc *dc, rtgui_gc_t *gc);
-/* get gc of dc */
-rtgui_gc_t *rtgui_dc_get_gc(struct rtgui_dc *dc);
-/* get visible status of dc */
-rt_bool_t rtgui_dc_get_visible(struct rtgui_dc *dc);
-/* get rect of dc */
-void rtgui_dc_get_rect(struct rtgui_dc *dc, rtgui_rect_t *rect);
-/* get pixel format */
-rt_uint8_t rtgui_dc_get_pixel_format(struct rtgui_dc *dc);
-/* coordinate conversion */
-void rtgui_dc_logic_to_device(struct rtgui_dc* dc, struct rtgui_point *point);
-void rtgui_dc_rect_to_device(struct rtgui_dc* dc, struct rtgui_rect* rect);
-
-/* dc rotation and zoom operations */
-struct rtgui_dc *rtgui_dc_shrink(struct rtgui_dc *dc, int factorx, int factory);
-struct rtgui_dc *rtgui_dc_zoom(struct rtgui_dc *dc, double zoomx, double zoomy, int smooth);
-struct rtgui_dc *rtgui_dc_rotozoom(struct rtgui_dc *dc, double angle, double zoomx, double zoomy, int smooth);
-
-/* dc buffer dump to file */
-void rtgui_dc_buffer_dump(struct rtgui_dc *self, char *fn);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
diff --git a/components/gui/include/rtgui/dc_draw.h b/components/gui/include/rtgui/dc_draw.h
deleted file mode 100644
index 76482367d4..0000000000
--- a/components/gui/include/rtgui/dc_draw.h
+++ /dev/null
@@ -1,551 +0,0 @@
-/*
- * File : dc_draw.h
- * This file is part of RT-Thread GUI Engine
- * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Change Logs:
- * Date Author Notes
- * 2013-10-04 Bernard porting SDL software render to RT-Thread GUI
- */
-
-/*
- Simple DirectMedia Layer
- Copyright (C) 1997-2013 Sam Lantinga <[email protected]>
-
- This software is provided 'as-is', without any express or implied
- warranty. In no event will the authors be held liable for any damages
- arising from the use of this software.
-
- Permission is granted to anyone to use this software for any purpose,
- including commercial applications, and to alter it and redistribute it
- freely, subject to the following restrictions:
-
- 1. The origin of this software must not be misrepresented; you must not
- claim that you wrote the original software. If you use this software
- in a product, an acknowledgment in the product documentation would be
- appreciated but is not required.
- 2. Altered source versions must be plainly marked as such, and must not be
- misrepresented as being the original software.
- 3. This notice may not be removed or altered from any source distribution.
-*/
-
-#ifndef __DC_DRAW_H__
-#define __DC_DRAW_H__
-
-#include <rtgui/blit.h>
-
-/* This code assumes that r, g, b, a are the source color,
- * and in the blend and add case, the RGB values are premultiplied by a.
- */
-
-#define DRAW_MUL(_a, _b) (((unsigned)(_a)*(_b))/256)
-
-#define DRAW_FASTSETPIXEL(type) \
- *pixel = (type) color
-
-#define DRAW_FASTSETPIXEL1 DRAW_FASTSETPIXEL(rt_uint8_t)
-#define DRAW_FASTSETPIXEL2 DRAW_FASTSETPIXEL(rt_uint16_t)
-#define DRAW_FASTSETPIXEL4 DRAW_FASTSETPIXEL(rt_uint32_t)
-
-#define DRAW_FASTSETPIXELXY(x, y, type, bpp, color) \
- *(type *)(_dc_get_pixel(dst, x, y))= (type) color
-
-#define DRAW_FASTSETPIXELXY1(x, y) DRAW_FASTSETPIXELXY(x, y, rt_uint8_t, 1, color)
-#define DRAW_FASTSETPIXELXY2(x, y) DRAW_FASTSETPIXELXY(x, y, rt_uint16_t, 2, color)
-#define DRAW_FASTSETPIXELXY4(x, y) DRAW_FASTSETPIXELXY(x, y, rt_uint32_t, 4, color)
-
-#define DRAW_SETPIXEL(setpixel) \
-do { \
- unsigned sr = r, sg = g, sb = b, sa = a; (void) sa; \
- setpixel; \
-} while (0)
-
-#define DRAW_SETPIXEL_BLEND(getpixel, setpixel) \
-do { \
- unsigned sr, sg, sb, sa; (void) sa; \
- getpixel; \
- sr = DRAW_MUL(inva, sr) + r; \
- sg = DRAW_MUL(inva, sg) + g; \
- sb = DRAW_MUL(inva, sb) + b; \
- setpixel; \
-} while (0)
-
-#define DRAW_SETPIXEL_ADD(getpixel, setpixel) \
-do { \
- unsigned sr, sg, sb, sa; (void) sa; \
- getpixel; \
- sr += r; if (sr > 0xff) sr = 0xff; \
- sg += g; if (sg > 0xff) sg = 0xff; \
- sb += b; if (sb > 0xff) sb = 0xff; \
- setpixel; \
-} while (0)
-
-#define DRAW_SETPIXEL_MOD(getpixel, setpixel) \
-do { \
- unsigned sr, sg, sb, sa; (void) sa; \
- getpixel; \
- sr = DRAW_MUL(sr, r); \
- sg = DRAW_MUL(sg, g); \
- sb = DRAW_MUL(sb, b); \
- setpixel; \
-} while (0)
-
-#define DRAW_SETPIXELXY(x, y, type, bpp, op) \
-do { \
- type *pixel = (type *)(_dc_get_pixel(dst, x, y));\
- op; \
-} while (0)
-
-/*
- * Define draw operators for RGB555
- */
-
-#define DRAW_SETPIXEL_RGB555 \
- DRAW_SETPIXEL(RGB555_FROM_RGB(*pixel, sr, sg, sb))
-
-#define DRAW_SETPIXEL_BLEND_RGB555 \
- DRAW_SETPIXEL_BLEND(RGB_FROM_RGB555(*pixel, sr, sg, sb), \
- RGB555_FROM_RGB(*pixel, sr, sg, sb))
-
-#define DRAW_SETPIXEL_ADD_RGB555 \
- DRAW_SETPIXEL_ADD(RGB_FROM_RGB555(*pixel, sr, sg, sb), \
- RGB555_FROM_RGB(*pixel, sr, sg, sb))
-
-#define DRAW_SETPIXEL_MOD_RGB555 \
- DRAW_SETPIXEL_MOD(RGB_FROM_RGB555(*pixel, sr, sg, sb), \
- RGB555_FROM_RGB(*pixel, sr, sg, sb))
-
-#define DRAW_SETPIXELXY_RGB555(x, y) \
- DRAW_SETPIXELXY(x, y, rt_uint16_t, 2, DRAW_SETPIXEL_RGB555)
-
-#define DRAW_SETPIXELXY_BLEND_RGB555(x, y) \
- DRAW_SETPIXELXY(x, y, rt_uint16_t, 2, DRAW_SETPIXEL_BLEND_RGB555)
-
-#define DRAW_SETPIXELXY_ADD_RGB555(x, y) \
- DRAW_SETPIXELXY(x, y, rt_uint16_t, 2, DRAW_SETPIXEL_ADD_RGB555)
-
-#define DRAW_SETPIXELXY_MOD_RGB555(x, y) \
- DRAW_SETPIXELXY(x, y, rt_uint16_t, 2, DRAW_SETPIXEL_MOD_RGB555)
-
-/*
- * Define draw operators for RGB565
- */
-
-#define DRAW_SETPIXEL_RGB565 \
- DRAW_SETPIXEL(RGB565_FROM_RGB(*pixel, sr, sg, sb))
-
-#define DRAW_SETPIXEL_BLEND_RGB565 \
- DRAW_SETPIXEL_BLEND(RGB_FROM_RGB565(*pixel, sr, sg, sb), \
- RGB565_FROM_RGB(*pixel, sr, sg, sb))
-
-#define DRAW_SETPIXEL_ADD_RGB565 \
- DRAW_SETPIXEL_ADD(RGB_FROM_RGB565(*pixel, sr, sg, sb), \
- RGB565_FROM_RGB(*pixel, sr, sg, sb))
-
-#define DRAW_SETPIXEL_MOD_RGB565 \
- DRAW_SETPIXEL_MOD(RGB_FROM_RGB565(*pixel, sr, sg, sb), \
- RGB565_FROM_RGB(*pixel, sr, sg, sb))
-
-#define DRAW_SETPIXELXY_RGB565(x, y) \
- DRAW_SETPIXELXY(x, y, rt_uint16_t, 2, DRAW_SETPIXEL_RGB565)
-
-#define DRAW_SETPIXELXY_BLEND_RGB565(x, y) \
- DRAW_SETPIXELXY(x, y, rt_uint16_t, 2, DRAW_SETPIXEL_BLEND_RGB565)
-
-#define DRAW_SETPIXELXY_ADD_RGB565(x, y) \
- DRAW_SETPIXELXY(x, y, rt_uint16_t, 2, DRAW_SETPIXEL_ADD_RGB565)
-
-#define DRAW_SETPIXELXY_MOD_RGB565(x, y) \
- DRAW_SETPIXELXY(x, y, rt_uint16_t, 2, DRAW_SETPIXEL_MOD_RGB565)
-
-/*
- * Define draw operators for BGR565
- */
-
-#define DRAW_SETPIXEL_BGR565 \
- DRAW_SETPIXEL(BGR565_FROM_RGB(*pixel, sr, sg, sb))
-
-#define DRAW_SETPIXEL_BLEND_BGR565 \
- DRAW_SETPIXEL_BLEND(RGB_FROM_BGR565(*pixel, sr, sg, sb), \
- BGR565_FROM_RGB(*pixel, sr, sg, sb))
-
-#define DRAW_SETPIXEL_ADD_BGR565 \
- DRAW_SETPIXEL_ADD(RGB_FROM_BGR565(*pixel, sr, sg, sb), \
- BGR565_FROM_RGB(*pixel, sr, sg, sb))
-
-#define DRAW_SETPIXEL_MOD_BGR565 \
- DRAW_SETPIXEL_MOD(RGB_FROM_BGR565(*pixel, sr, sg, sb), \
- BGR565_FROM_RGB(*pixel, sr, sg, sb))
-
-#define DRAW_SETPIXELXY_BGR565(x, y) \
- DRAW_SETPIXELXY(x, y, rt_uint16_t, 2, DRAW_SETPIXEL_BGR565)
-
-#define DRAW_SETPIXELXY_BLEND_BGR565(x, y) \
- DRAW_SETPIXELXY(x, y, rt_uint16_t, 2, DRAW_SETPIXEL_BLEND_BGR565)
-
-#define DRAW_SETPIXELXY_ADD_BGR565(x, y) \
- DRAW_SETPIXELXY(x, y, rt_uint16_t, 2, DRAW_SETPIXEL_ADD_BGR565)
-
-#define DRAW_SETPIXELXY_MOD_BGR565(x, y) \
- DRAW_SETPIXELXY(x, y, rt_uint16_t, 2, DRAW_SETPIXEL_MOD_BGR565)
-
-/*
- * Define draw operators for RGB888
- */
-
-#define DRAW_SETPIXEL_RGB888 \
- DRAW_SETPIXEL(RGB888_FROM_RGB(*pixel, sr, sg, sb))
-
-#define DRAW_SETPIXEL_BLEND_RGB888 \
- DRAW_SETPIXEL_BLEND(RGB_FROM_RGB888(*pixel, sr, sg, sb), \
- RGB888_FROM_RGB(*pixel, sr, sg, sb))
-
-#define DRAW_SETPIXEL_ADD_RGB888 \
- DRAW_SETPIXEL_ADD(RGB_FROM_RGB888(*pixel, sr, sg, sb), \
- RGB888_FROM_RGB(*pixel, sr, sg, sb))
-
-#define DRAW_SETPIXEL_MOD_RGB888 \
- DRAW_SETPIXEL_MOD(RGB_FROM_RGB888(*pixel, sr, sg, sb), \
- RGB888_FROM_RGB(*pixel, sr, sg, sb))
-
-#define DRAW_SETPIXELXY_RGB888(x, y) \
- DRAW_SETPIXELXY(x, y, rt_uint32_t, 4, DRAW_SETPIXEL_RGB888)
-
-#define DRAW_SETPIXELXY_BLEND_RGB888(x, y) \
- DRAW_SETPIXELXY(x, y, rt_uint32_t, 4, DRAW_SETPIXEL_BLEND_RGB888)
-
-#define DRAW_SETPIXELXY_ADD_RGB888(x, y) \
- DRAW_SETPIXELXY(x, y, rt_uint32_t, 4, DRAW_SETPIXEL_ADD_RGB888)
-
-#define DRAW_SETPIXELXY_MOD_RGB888(x, y) \
- DRAW_SETPIXELXY(x, y, rt_uint32_t, 4, DRAW_SETPIXEL_MOD_RGB888)
-
-/*
- * Define draw operators for ARGB8888
- */
-
-#define DRAW_SETPIXEL_ARGB8888 \
- DRAW_SETPIXEL(ARGB8888_FROM_RGBA(*pixel, sr, sg, sb, sa))
-
-#define DRAW_SETPIXEL_BLEND_ARGB8888 \
- DRAW_SETPIXEL_BLEND(RGBA_FROM_ARGB8888(*pixel, sr, sg, sb, sa), \
- ARGB8888_FROM_RGBA(*pixel, sr, sg, sb, sa))
-
-#define DRAW_SETPIXEL_ADD_ARGB8888 \
- DRAW_SETPIXEL_ADD(RGBA_FROM_ARGB8888(*pixel, sr, sg, sb, sa), \
- ARGB8888_FROM_RGBA(*pixel, sr, sg, sb, sa))
-
-#define DRAW_SETPIXEL_MOD_ARGB8888 \
- DRAW_SETPIXEL_MOD(RGBA_FROM_ARGB8888(*pixel, sr, sg, sb, sa), \
- ARGB8888_FROM_RGBA(*pixel, sr, sg, sb, sa))
-
-#define DRAW_SETPIXELXY_ARGB8888(x, y) \
- DRAW_SETPIXELXY(x, y, rt_uint32_t, 4, DRAW_SETPIXEL_ARGB8888)
-
-#define DRAW_SETPIXELXY_BLEND_ARGB8888(x, y) \
- DRAW_SETPIXELXY(x, y, rt_uint32_t, 4, DRAW_SETPIXEL_BLEND_ARGB8888)
-
-#define DRAW_SETPIXELXY_ADD_ARGB8888(x, y) \
- DRAW_SETPIXELXY(x, y, rt_uint32_t, 4, DRAW_SETPIXEL_ADD_ARGB8888)
-
-#define DRAW_SETPIXELXY_MOD_ARGB8888(x, y) \
- DRAW_SETPIXELXY(x, y, rt_uint32_t, 4, DRAW_SETPIXEL_MOD_ARGB8888)
-
-/*
- * Define line drawing macro
- */
-
-#define ABS(_x) ((_x) < 0 ? -(_x) : (_x))
-
-/* Horizontal line */
-#define HLINE(type, op, draw_end) \
-{ \
- int length; \
- type *pixel; \
- if (x1 <= x2) { \
- pixel = (type *)_dc_get_pixel(dst, x1, y1); \
- length = draw_end ? (x2-x1+1) : (x2-x1); \
- } else { \
- pixel = (type *)_dc_get_pixel(dst, x2, y1); \
- if (!draw_end) { \
- ++pixel; \
- } \
- length = draw_end ? (x1-x2+1) : (x1-x2); \
- } \
- while (length--) { \
- op; \
- ++pixel; \
- } \
-}
-
-/* Vertical line */
-#define VLINE(type, op, draw_end) \
-{ \
- int length; \
- int pitch = _dc_get_pitch(dst)/(_UI_BITBYTES(_dc_get_bits_per_pixel(dst))); \
- type *pixel; \
- if (y1 <= y2) { \
- pixel = (type *)_dc_get_pixel(dst, x1, y1); \
- length = draw_end ? (y2-y1+1) : (y2-y1); \
- } else { \
- pixel = (type *)_dc_get_pixel(dst, x1, y2); \
- if (!draw_end) { \
- pixel += pitch; \
- } \
- length = draw_end ? (y1-y2+1) : (y1-y2); \
- } \
- while (length--) { \
- op; \
- pixel += pitch; \
- } \
-}
-
-/* Diagonal line */
-#define DLINE(type, op, draw_end) \
-{ \
- int length; \
- int pitch = _dc_get_pitch(dst)/(_UI_BITBYTES(_dc_get_bits_per_pixel(dst))); \
- type *pixel; \
- if (y1 <= y2) { \
- pixel = (type *)_dc_get_pixel(dst, x1, y1); \
- if (x1 <= x2) { \
- ++pitch; \
- } else { \
- --pitch; \
- } \
- length = (y2-y1); \
- } else { \
- pixel = (type *)_dc_get_pixel(dst, x2, y2); \
- if (x2 <= x1) { \
- ++pitch; \
- } else { \
- --pitch; \
- } \
- if (!draw_end) { \
- pixel += pitch; \
- } \
- length = (y1-y2); \
- } \
- if (draw_end) { \
- ++length; \
- } \
- while (length--) { \
- op; \
- pixel += pitch; \
- } \
-}
-
-/* Bresenham's line algorithm */
-#define BLINE(x1, y1, x2, y2, op, draw_end) \
-{ \
- int i, deltax, deltay, numpixels; \
- int d, dinc1, dinc2; \
- int x, xinc1, xinc2; \
- int y, yinc1, yinc2; \
- \
- deltax = ABS(x2 - x1); \
- deltay = ABS(y2 - y1); \
- \
- if (deltax >= deltay) { \
- numpixels = deltax + 1; \
- d = (2 * deltay) - deltax; \
- dinc1 = deltay * 2; \
- dinc2 = (deltay - deltax) * 2; \
- xinc1 = 1; \
- xinc2 = 1; \
- yinc1 = 0; \
- yinc2 = 1; \
- } else { \
- numpixels = deltay + 1; \
- d = (2 * deltax) - deltay; \
- dinc1 = deltax * 2; \
- dinc2 = (deltax - deltay) * 2; \
- xinc1 = 0; \
- xinc2 = 1; \
- yinc1 = 1; \
- yinc2 = 1; \
- } \
- \
- if (x1 > x2) { \
- xinc1 = -xinc1; \
- xinc2 = -xinc2; \
- } \
- if (y1 > y2) { \
- yinc1 = -yinc1; \
- yinc2 = -yinc2; \
- } \
- \
- x = x1; \
- y = y1; \
- \
- if (!draw_end) { \
- --numpixels; \
- } \
- for (i = 0; i < numpixels; ++i) { \
- op(x, y); \
- if (d < 0) { \
- d += dinc1; \
- x += xinc1; \
- y += yinc1; \
- } else { \
- d += dinc2; \
- x += xinc2; \
- y += yinc2; \
- } \
- } \
-}
-
-/* Xiaolin Wu's line algorithm, based on Michael Abrash's implementation */
-#define WULINE(x1, y1, x2, y2, opaque_op, blend_op, draw_end) \
-{ \
- rt_uint16_t ErrorAdj, ErrorAcc; \
- rt_uint16_t ErrorAccTemp, Weighting; \
- int DeltaX, DeltaY, Temp, XDir; \
- unsigned r, g, b, a, inva; \
- \
- /* remove compiling warning */ \
- r = 0; g = 0; b = 0; a = 0; \
- inva = 0; inva = inva; \
- /* Draw the initial pixel, which is always exactly intersected by \
- the line and so needs no weighting */ \
- opaque_op(x1, y1); \
- \
- /* Draw the final pixel, which is always exactly intersected by the line \
- and so needs no weighting */ \
- if (draw_end) { \
- opaque_op(x2, y2); \
- } \
- \
- /* Make sure the line runs top to bottom */ \
- if (y1 > y2) { \
- Temp = y1; y1 = y2; y2 = Temp; \
- Temp = x1; x1 = x2; x2 = Temp; \
- } \
- DeltaY = y2 - y1; \
- \
- if ((DeltaX = x2 - x1) >= 0) { \
- XDir = 1; \
- } else { \
- XDir = -1; \
- DeltaX = -DeltaX; /* make DeltaX positive */ \
- } \
- \
- /* line is not horizontal, diagonal, or vertical */ \
- ErrorAcc = 0; /* initialize the line error accumulator to 0 */ \
- \
- /* Is this an X-major or Y-major line? */ \
- if (DeltaY > DeltaX) { \
- /* Y-major line; calculate 16-bit fixed-point fractional part of a \
- pixel that X advances each time Y advances 1 pixel, truncating the \
- result so that we won't overrun the endpoint along the X axis */ \
- ErrorAdj = ((unsigned long) DeltaX << 16) / (unsigned long) DeltaY; \
- /* Draw all pixels other than the first and last */ \
- while (--DeltaY) { \
- ErrorAccTemp = ErrorAcc; /* remember current accumulated error */ \
- ErrorAcc += ErrorAdj; /* calculate error for next pixel */ \
- if (ErrorAcc <= ErrorAccTemp) { \
- /* The error accumulator turned over, so advance the X coord */ \
- x1 += XDir; \
- } \
- y1++; /* Y-major, so always advance Y */ \
- /* The IntensityBits most significant bits of ErrorAcc give us the \
- intensity weighting for this pixel, and the complement of the \
- weighting for the paired pixel */ \
- Weighting = ErrorAcc >> 8; \
- { \
- a = DRAW_MUL(_a, (Weighting ^ 255)); \
- r = DRAW_MUL(_r, a); \
- g = DRAW_MUL(_g, a); \
- b = DRAW_MUL(_b, a); \
- inva = (a ^ 0xFF); \
- blend_op(x1, y1); \
- } \
- { \
- a = DRAW_MUL(_a, Weighting); \
- r = DRAW_MUL(_r, a); \
- g = DRAW_MUL(_g, a); \
- b = DRAW_MUL(_b, a); \
- inva = (a ^ 0xFF); \
- blend_op(x1 + XDir, y1); \
- } \
- } \
- } else { \
- /* X-major line; calculate 16-bit fixed-point fractional part of a \
- pixel that Y advances each time X advances 1 pixel, truncating the \
- result to avoid overrunning the endpoint along the X axis */ \
- ErrorAdj = ((unsigned long) DeltaY << 16) / (unsigned long) DeltaX; \
- /* Draw all pixels other than the first and last */ \
- while (--DeltaX) { \
- ErrorAccTemp = ErrorAcc; /* remember currrent accumulated error */ \
- ErrorAcc += ErrorAdj; /* calculate error for next pixel */ \
- if (ErrorAcc <= ErrorAccTemp) { \
- /* The error accumulator turned over, so advance the Y coord */ \
- y1++; \
- } \
- x1 += XDir; /* X-major, so always advance X */ \
- /* The IntensityBits most significant bits of ErrorAcc give us the \
- intensity weighting for this pixel, and the complement of the \
- weighting for the paired pixel */ \
- Weighting = ErrorAcc >> 8; \
- { \
- a = DRAW_MUL(_a, (Weighting ^ 255)); \
- r = DRAW_MUL(_r, a); \
- g = DRAW_MUL(_g, a); \
- b = DRAW_MUL(_b, a); \
- inva = (a ^ 0xFF); \
- blend_op(x1, y1); \
- } \
- { \
- a = DRAW_MUL(_a, Weighting); \
- r = DRAW_MUL(_r, a); \
- g = DRAW_MUL(_g, a); \
- b = DRAW_MUL(_b, a); \
- inva = (a ^ 0xFF); \
- blend_op(x1, y1 + 1); \
- } \
- } \
- } \
-}
-
-#define AALINE(x1, y1, x2, y2, opaque_op, blend_op, draw_end) \
- WULINE(x1, y1, x2, y2, opaque_op, blend_op, draw_end)
-
-/*
- * Define fill rect macro
- */
-#define FILLRECT(type, op) \
-do { \
- int width = rect->x2 - rect->x1; \
- int height = rect->y2 - rect->y1; \
- int pitch = _dc_get_pitch(dst)/(_UI_BITBYTES(_dc_get_bits_per_pixel(dst))); \
- int skip = pitch - width; \
- type *pixel = (type *)_dc_get_pixel(dst, rect->x1, rect->y1); \
- while (height--) { \
- { int n = (width+3)/4; \
- switch (width & 3) { \
- case 0: do { op; pixel++; \
- case 3: op; pixel++; \
- case 2: op; pixel++; \
- case 1: op; pixel++; \
- } while ( --n > 0 ); \
- } \
- } \
- pixel += skip; \
- } \
-} while (0)
-
-#endif
diff --git a/components/gui/include/rtgui/dc_trans.h b/components/gui/include/rtgui/dc_trans.h
deleted file mode 100644
index 47216a21a3..0000000000
--- a/components/gui/include/rtgui/dc_trans.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * File : dc_trans.h
- * This file is part of RT-Thread GUI Engine
- * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Change Logs:
- * Date Author Notes
- * 2010-04-10 Bernard first version
- */
-
-#ifndef __RTGUI_DC_TRANS_H__
-#define __RTGUI_DC_TRANS_H__
-
-#include <rtgui/dc.h>
-#include <rtgui/matrix.h>
-
-struct rtgui_dc_trans;
-
-/** Create a dc translator on the dc @owner
- *
- * @return RT_NULL is there is no memory.
- */
-struct rtgui_dc_trans* rtgui_dc_trans_create(struct rtgui_dc *owner);
-
-/** Rotate the dc clockwise.
- *
- * @param degree the degree to rotate.
- */
-void rtgui_dc_trans_rotate(struct rtgui_dc_trans *dct, double degree);
-
-void rtgui_dc_trans_set_aa(struct rtgui_dc_trans *dct, int use_aa);
-
-void rtgui_dc_trans_scale(struct rtgui_dc_trans *dct, double sx, double sy);
-
-/** Move the dc
- *
- * The unit of @dx and @dy is pixel.
- */
-void rtgui_dc_trans_move(struct rtgui_dc_trans *dct, int dx, int dy);
-
-void rtgui_dc_trans_get_new_wh(struct rtgui_dc_trans *dct, int *new_w, int *new_h);
-
-void rtgui_dc_trans_blit(struct rtgui_dc_trans *dct,
- struct rtgui_point *dc_point,
- struct rtgui_dc *dest,
- struct rtgui_rect *rect);
-
-void rtgui_dc_trans_destroy(struct rtgui_dc_trans *dct);
-
-#endif
diff --git a/components/gui/include/rtgui/driver.h b/components/gui/include/rtgui/driver.h
deleted file mode 100644
index 8246d82256..0000000000
--- a/components/gui/include/rtgui/driver.h
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- * File : driver.h
- * This file is part of RT-Thread GUI Engine
- * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Change Logs:
- * Date Author Notes
- * 2009-10-04 Bernard first version
- */
-#ifndef __RTGUI_DRIVER_H__
-#define __RTGUI_DRIVER_H__
-
-#include <rtgui/list.h>
-#include <rtgui/color.h>
-
-/* graphic driver operations */
-struct rtgui_graphic_driver_ops
-{
- /* set and get pixel in (x, y) */
- void (*set_pixel)(rtgui_color_t *c, int x, int y);
- void (*get_pixel)(rtgui_color_t *c, int x, int y);
-
- void (*draw_hline)(rtgui_color_t *c, int x1, int x2, int y);
- void (*draw_vline)(rtgui_color_t *c, int x , int y1, int y2);
-
- /* draw raw hline */
- void (*draw_raw_hline)(rt_uint8_t *pixels, int x1, int x2, int y);
-};
-
-/* graphic extension operations */
-struct rtgui_graphic_ext_ops
-{
- /* some 2D operations */
- void (*draw_line)(rtgui_color_t *c, int x1, int y1, int x2, int y2);
-
- void (*draw_rect)(rtgui_color_t *c, int x1, int y1, int x2, int y2);
- void (*fill_rect)(rtgui_color_t *c, int x1, int y1, int x2, int y2);
-
- void (*draw_circle)(rtgui_color_t *c, int x, int y, int r);
- void (*fill_circle)(rtgui_color_t *c, int x, int y, int r);
-
- void (*draw_ellipse)(rtgui_color_t *c, int x, int y, int rx, int ry);
- void (*fill_ellipse)(rtgui_color_t *c, int x, int y, int rx, int ry);
-};
-
-struct rtgui_graphic_driver
-{
- /* pixel format and byte per pixel */
- rt_uint8_t pixel_format;
- rt_uint8_t bits_per_pixel;
- rt_uint16_t pitch;
-
- /* screen width and height */
- rt_uint16_t width;
- rt_uint16_t height;
-
- /* framebuffer address and ops */
- rt_uint8_t *framebuffer;
- struct rt_device* device;
-
- const struct rtgui_graphic_driver_ops *ops;
- const struct rtgui_graphic_ext_ops *ext_ops;
-};
-
-struct rtgui_graphic_driver *rtgui_graphic_driver_get_default(void);
-
-void rtgui_graphic_driver_get_rect(const struct rtgui_graphic_driver *driver, rtgui_rect_t *rect);
-void rtgui_graphic_driver_screen_update(const struct rtgui_graphic_driver *driver, rtgui_rect_t *rect);
-rt_uint8_t *rtgui_graphic_driver_get_framebuffer(const struct rtgui_graphic_driver *driver);
-
-rt_err_t rtgui_graphic_set_device(rt_device_t device);
-void rtgui_graphic_driver_set_framebuffer(void *fb);
-
-rt_inline struct rtgui_graphic_driver *rtgui_graphic_get_device()
-{
- return rtgui_graphic_driver_get_default();
-}
-
-#ifdef RTGUI_USING_HW_CURSOR
-/*
- * hardware cursor
- */
-enum rtgui_cursor_type
-{
- RTGUI_CURSOR_ARROW,
- RTGUI_CURSOR_HAND,
-};
-
-void rtgui_cursor_set_device(const char* device_name);
-void rtgui_cursor_set_position(rt_uint16_t x, rt_uint16_t y);
-void rtgui_cursor_set_image(enum rtgui_cursor_type type);
-#endif
-
-#ifdef RTGUI_USING_VFRAMEBUFFER
-void rtgui_graphic_driver_vmode_enter(void);
-void rtgui_graphic_driver_vmode_exit(void);
-struct rtgui_dc* rtgui_graphic_driver_get_rect_buffer(const struct rtgui_graphic_driver *driver, struct rtgui_rect *rect);
-#endif
-
-rt_bool_t rtgui_graphic_driver_is_vmode(void);
-
-#endif
-
diff --git a/components/gui/include/rtgui/event.h b/components/gui/include/rtgui/event.h
deleted file mode 100644
index d1a8070af4..0000000000
--- a/components/gui/include/rtgui/event.h
+++ /dev/null
@@ -1,580 +0,0 @@
-/*
- * File : event.h
- * This file is part of RT-Thread GUI Engine
- * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Change Logs:
- * Date Author Notes
- * 2009-10-04 Bernard first version
- */
-#ifndef __RTGUI_EVENT_H__
-#define __RTGUI_EVENT_H__
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <rtdevice.h>
-#include <rtgui/rtgui.h>
-#include <rtgui/kbddef.h>
-
-/* NOTE: if you create a new event type, remember to add it into the union
- * rtgui_event_generic */
-enum _rtgui_event_type
-{
- /* applications event */
- RTGUI_EVENT_APP_CREATE, /* create an application */
- RTGUI_EVENT_APP_DESTROY, /* destroy an application */
- RTGUI_EVENT_APP_ACTIVATE, /* activate an application */
-
- /* window event */
- RTGUI_EVENT_WIN_CREATE, /* create a window */
- RTGUI_EVENT_WIN_DESTROY, /* destroy a window */
- RTGUI_EVENT_WIN_SHOW, /* show a window */
- RTGUI_EVENT_WIN_HIDE, /* hide a window */
- RTGUI_EVENT_WIN_ACTIVATE, /* activate a window */
- RTGUI_EVENT_WIN_DEACTIVATE, /* deactivate a window */
- RTGUI_EVENT_WIN_CLOSE, /* close a window */
- RTGUI_EVENT_WIN_MOVE, /* move a window */
- RTGUI_EVENT_WIN_RESIZE, /* resize a window */
- RTGUI_EVENT_WIN_UPDATE_END, /* update done for window */
- RTGUI_EVENT_WIN_MODAL_ENTER, /* the window is entering modal mode.
- This event should be sent after the
- window got setup and before the
- application got setup. */
-
- /* WM event */
- RTGUI_EVENT_SET_WM, /* set window manager */
-
- RTGUI_EVENT_UPDATE_BEGIN, /* update a rect */
- RTGUI_EVENT_UPDATE_END, /* update a rect */
- RTGUI_EVENT_MONITOR_ADD, /* add a monitor rect */
- RTGUI_EVENT_MONITOR_REMOVE, /* remove a monitor rect */
- RTGUI_EVENT_SHOW, /* the widget is going to be shown */
- RTGUI_EVENT_HIDE, /* the widget is going to be hidden */
- RTGUI_EVENT_PAINT, /* paint on screen */
- RTGUI_EVENT_TIMER, /* timer */
- RTGUI_EVENT_UPDATE_TOPLVL, /* update the toplevel */
-
- /* virtual paint event */
- RTGUI_EVENT_VPAINT_REQ, /* virtual paint request (server -> client) */
-
- /* clip rect information */
- RTGUI_EVENT_CLIP_INFO, /* clip rect info */
-
- /* mouse and keyboard event */
- RTGUI_EVENT_MOUSE_MOTION, /* mouse motion */
- RTGUI_EVENT_MOUSE_BUTTON, /* mouse button info */
- RTGUI_EVENT_KBD, /* keyboard info */
- RTGUI_EVENT_TOUCH, /* touch event to server */
- RTGUI_EVENT_GESTURE, /* gesture event */
-
- /* widget event */
- RTGUI_EVENT_FOCUSED, /* widget focused */
- RTGUI_EVENT_SCROLLED, /* scroll bar scrolled */
- RTGUI_EVENT_RESIZE, /* widget resize */
- RTGUI_EVENT_SELECTED, /* widget selected */
- RTGUI_EVENT_UNSELECTED, /* widget un-selected */
- RTGUI_EVENT_MV_MODEL, /* data of a model has been changed */
-
- WBUS_NOTIFY_EVENT,
-
- /* user command event. It should always be the last command type. */
- RTGUI_EVENT_COMMAND = 0x0100, /* user command */
-};
-typedef enum _rtgui_event_type rtgui_event_type;
-
-enum
-{
- RTGUI_STATUS_OK = 0, /* status ok */
- RTGUI_STATUS_ERROR, /* generic error */
- RTGUI_STATUS_NRC, /* no resource */
-};
-
-struct rtgui_event
-{
- /* the event type */
- enum _rtgui_event_type type;
- /* user field of event */
- rt_uint16_t user;
-
- /* the event sender */
- struct rtgui_app *sender;
-
- /* mailbox to acknowledge request */
- rt_mailbox_t ack;
-};
-typedef struct rtgui_event rtgui_event_t;
-#define RTGUI_EVENT(e) ((struct rtgui_event*)(e))
-
-extern struct rtgui_app* rtgui_app_self(void);
-
-#define RTGUI_EVENT_INIT(e, t) do \
-{ \
- (e)->type = (t); \
- (e)->user = 0; \
- (e)->sender = rtgui_app_self(); \
- (e)->ack = RT_NULL; \
-} while (0)
-
-/*
- * RTGUI Application Event
- */
-struct rtgui_event_application
-{
- struct rtgui_event parent;
-
- struct rtgui_app *app;
-};
-
-/* gui application init */
-#define RTGUI_EVENT_APP_CREATE_INIT(e) RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_APP_CREATE)
-#define RTGUI_EVENT_APP_DESTROY_INIT(e) RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_APP_DESTROY)
-#define RTGUI_EVENT_APP_ACTIVATE_INIT(e) RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_APP_ACTIVATE)
-
-/*
- * RTGUI Window Event
- */
-#define _RTGUI_EVENT_WIN_ELEMENTS \
- struct rtgui_event parent; \
- struct rtgui_win *wid;
-
-/*
- * RTGUI Window Event
- */
-struct rtgui_event_win
-{
- _RTGUI_EVENT_WIN_ELEMENTS
-};
-
-struct rtgui_event_win_create
-{
- _RTGUI_EVENT_WIN_ELEMENTS
- struct rtgui_win *parent_window;
-};
-
-struct rtgui_event_win_move
-{
- _RTGUI_EVENT_WIN_ELEMENTS
- rt_int16_t x, y;
-};
-
-struct rtgui_event_win_resize
-{
- _RTGUI_EVENT_WIN_ELEMENTS
-
- rtgui_rect_t rect;
-};
-
-struct rtgui_event_win_update_end
-{
- _RTGUI_EVENT_WIN_ELEMENTS
-
- rtgui_rect_t rect;
-};
-
-#define rtgui_event_win_destroy rtgui_event_win
-#define rtgui_event_win_show rtgui_event_win
-#define rtgui_event_win_hide rtgui_event_win
-#define rtgui_event_win_activate rtgui_event_win
-#define rtgui_event_win_deactivate rtgui_event_win
-#define rtgui_event_win_close rtgui_event_win
-#define rtgui_event_win_modal_enter rtgui_event_win
-
-/* window event init */
-#define RTGUI_EVENT_WIN_CREATE_INIT(e) RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_WIN_CREATE)
-#define RTGUI_EVENT_WIN_DESTROY_INIT(e) RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_WIN_DESTROY)
-#define RTGUI_EVENT_WIN_SHOW_INIT(e) RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_WIN_SHOW)
-#define RTGUI_EVENT_WIN_HIDE_INIT(e) RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_WIN_HIDE)
-#define RTGUI_EVENT_WIN_ACTIVATE_INIT(e) RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_WIN_ACTIVATE)
-#define RTGUI_EVENT_WIN_DEACTIVATE_INIT(e) RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_WIN_DEACTIVATE)
-#define RTGUI_EVENT_WIN_CLOSE_INIT(e) RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_WIN_CLOSE)
-#define RTGUI_EVENT_WIN_MOVE_INIT(e) RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_WIN_MOVE)
-#define RTGUI_EVENT_WIN_RESIZE_INIT(e) RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_WIN_RESIZE)
-#define RTGUI_EVENT_WIN_UPDATE_END_INIT(e) RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_WIN_UPDATE_END)
-#define RTGUI_EVENT_WIN_MODAL_ENTER_INIT(e) RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_WIN_MODAL_ENTER)
-
-/*
- * RTGUI set window manager
- */
-struct rtgui_event_set_wm
-{
- struct rtgui_event parent;
- struct rtgui_app *app;
-};
-#define RTGUI_EVENT_SET_WM_INIT(e) RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_SET_WM);
-
-/*
- * RTGUI Other Event
- */
-struct rtgui_event_update_begin
-{
- struct rtgui_event parent;
-
- /* the update rect */
- rtgui_rect_t rect;
-};
-
-struct rtgui_event_update_end
-{
- struct rtgui_event parent;
-
- /* the update rect */
- rtgui_rect_t rect;
-};
-
-struct rtgui_event_monitor
-{
- _RTGUI_EVENT_WIN_ELEMENTS
-
- /* the monitor rect */
- rtgui_rect_t rect;
-};
-
-struct rtgui_event_paint
-{
- _RTGUI_EVENT_WIN_ELEMENTS
-
- rtgui_rect_t rect; /* rect to be updated */
-};
-
-struct rtgui_timer;
-struct rtgui_event_timer
-{
- struct rtgui_event parent;
-
- struct rtgui_timer *timer;
-};
-typedef struct rtgui_event_timer rtgui_event_timer_t;
-
-
-struct rtgui_event_clip_info
-{
- _RTGUI_EVENT_WIN_ELEMENTS
-
- /* the number of rects */
- //rt_uint32_t num_rect;
-
- /* rtgui_rect_t *rects */
-};
-#define RTGUI_EVENT_GET_RECT(e, i) &(((rtgui_rect_t*)(e + 1))[i])
-
-#define RTGUI_EVENT_UPDATE_BEGIN_INIT(e) RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_UPDATE_BEGIN)
-#define RTGUI_EVENT_UPDATE_END_INIT(e) RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_UPDATE_END)
-#define RTGUI_EVENT_MONITOR_ADD_INIT(e) RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_MONITOR_ADD)
-#define RTGUI_EVENT_MONITOR_REMOVE_INIT(e) RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_MONITOR_REMOVE)
-#define RTGUI_EVENT_CLIP_INFO_INIT(e) RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_CLIP_INFO)
-#define RTGUI_EVENT_PAINT_INIT(e) RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_PAINT)
-#define RTGUI_EVENT_TIMER_INIT(e) RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_TIMER)
-
-#define rtgui_event_show rtgui_event
-#define rtgui_event_hide rtgui_event
-
-#define RTGUI_EVENT_SHOW_INIT(e) RTGUI_EVENT_INIT((e), RTGUI_EVENT_SHOW)
-#define RTGUI_EVENT_HIDE_INIT(e) RTGUI_EVENT_INIT((e), RTGUI_EVENT_HIDE)
-
-struct rtgui_event_update_toplvl
-{
- struct rtgui_event parent;
- struct rtgui_win *toplvl;
-};
-
-#define RTGUI_EVENT_UPDATE_TOPLVL_INIT(e) \
- do { \
- RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_UPDATE_TOPLVL); \
- (e)->toplvl = RT_NULL; \
- } while (0)
-
-struct rtgui_event_vpaint_req
-{
- _RTGUI_EVENT_WIN_ELEMENTS
-
- struct rtgui_event_vpaint_req *sender;
- struct rt_completion *cmp;
- struct rtgui_dc* buffer;
-};
-
-#define RTGUI_EVENT_VPAINT_REQ_INIT(e, win, cm) \
- do { \
- RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_VPAINT_REQ); \
- (e)->wid = win; \
- (e)->cmp = cm; \
- (e)->sender = (e); \
- (e)->buffer = RT_NULL; \
- rt_completion_init((e)->cmp); \
- } while (0)
-
-/**
- * RTGUI Gesture Event
- */
-enum rtgui_gesture_type
-{
- RTGUI_GESTURE_NONE = 0x0000,
- RTGUI_GESTURE_TAP = 0x0001,
- /* Usually used to zoom in and out. */
- RTGUI_GESTURE_PINCH = 0x0002,
- RTGUI_GESTURE_DRAG = 0x0004,
- RTGUI_GESTURE_LONGPRESS = 0x0008,
- RTGUI_GESTURE_DRAGGED = 0x0001 | 0x0004 | 0x0008,
- /* PINCH, DRAG finished. */
- RTGUI_GESTURE_FINISH = 0x8000,
- /* The corresponding gesture should be canceled. */
- RTGUI_GESTURE_CANCEL = 0x4000,
- RTGUI_GESTURE_TYPE_MASK = 0x0FFF,
-};
-
-struct rtgui_event_gesture
-{
- _RTGUI_EVENT_WIN_ELEMENTS
-
- enum rtgui_gesture_type type;
-
- rt_uint32_t win_acti_cnt; /* window activate count */
-};
-
-/*
- * RTGUI Mouse and Keyboard Event
- */
-struct rtgui_event_mouse
-{
- _RTGUI_EVENT_WIN_ELEMENTS
-
- rt_uint16_t x, y;
- rt_uint16_t button;
-
- /* Timestamp of this event sampled in driver. */
- rt_tick_t ts;
- /* id of touch session(from down to up). Different session should have
- * different id. id should never be 0. */
- rt_uint32_t id;
-
- rt_uint32_t win_acti_cnt; /* window activate count */
-};
-#define RTGUI_MOUSE_BUTTON_LEFT 0x01
-#define RTGUI_MOUSE_BUTTON_RIGHT 0x02
-#define RTGUI_MOUSE_BUTTON_MIDDLE 0x03
-#define RTGUI_MOUSE_BUTTON_WHEELUP 0x04
-#define RTGUI_MOUSE_BUTTON_WHEELDOWN 0x08
-
-#define RTGUI_MOUSE_BUTTON_DOWN 0x10
-#define RTGUI_MOUSE_BUTTON_UP 0x20
-
-#define RTGUI_EVENT_GESTURE_INIT(e, gtype) \
- do { \
- RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_GESTURE); \
- (e)->type = gtype; \
- } while (0)
-
-struct rtgui_event_kbd
-{
- _RTGUI_EVENT_WIN_ELEMENTS
-
- rt_uint32_t win_acti_cnt; /* window activate count */
-
- rt_uint16_t type; /* key down or up */
- rt_uint16_t key; /* current key */
- rt_uint16_t mod; /* current key modifiers */
- rt_uint16_t unicode; /* translated character */
-};
-#define RTGUI_KBD_IS_SET_CTRL(e) ((e)->mod & (RTGUI_KMOD_LCTRL | RTGUI_KMOD_RCTRL))
-#define RTGUI_KBD_IS_SET_ALT(e) ((e)->mod & (RTGUI_KMOD_LALT | RTGUI_KMOD_RALT))
-#define RTGUI_KBD_IS_SET_SHIFT(e) ((e)->mod & (RTGUI_KMOD_LSHIFT| RTGUI_KMOD_RSHIFT))
-#define RTGUI_KBD_IS_UP(e) ((e)->type == RTGUI_KEYUP)
-#define RTGUI_KBD_IS_DOWN(e) ((e)->type == RTGUI_KEYDOWN)
-
-#define RTGUI_EVENT_MOUSE_MOTION_INIT(e) RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_MOUSE_MOTION)
-#define RTGUI_EVENT_MOUSE_BUTTON_INIT(e) RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_MOUSE_BUTTON)
-#define RTGUI_EVENT_KBD_INIT(e) RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_KBD)
-
-/**
- * RTGUI Touch Event
- * NOTE: There is not touch event to user applications, it's handled by server.
- */
-struct rtgui_event_touch
-{
- struct rtgui_event parent;
-
- rt_uint16_t x, y;
- rt_uint16_t up_down;
- rt_uint16_t resv;
-};
-#define RTGUI_TOUCH_UP 0x01
-#define RTGUI_TOUCH_DOWN 0x02
-#define RTGUI_TOUCH_MOTION 0x03
-#define RTGUI_EVENT_TOUCH_INIT(e) RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_TOUCH)
-
-struct rtgui_event_command
-{
- _RTGUI_EVENT_WIN_ELEMENTS
-
- /* command type */
- rt_int32_t type;
-
- /* command id */
- rt_int32_t command_id;
-
- /* command string */
- char command_string[RTGUI_NAME_MAX];
-};
-#define RTGUI_EVENT_COMMAND_INIT(e) RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_COMMAND)
-
-#define RTGUI_CMD_UNKNOWN 0x00
-#define RTGUI_CMD_WM_CLOSE 0x10
-
-#define RTGUI_CMD_USER_INT 0x20
-#define RTGUI_CMD_USER_STRING 0x21
-
-/************************************************************************/
-/* Widget Event */
-/************************************************************************/
-#define RTGUI_WIDGET_EVENT_INIT(e, t) do \
-{ \
- (e)->type = (t); \
- (e)->sender = RT_NULL; \
- (e)->ack = RT_NULL; \
-} while (0)
-
-/*
- * RTGUI Scrollbar Event
- */
-struct rtgui_event_scrollbar
-{
- struct rtgui_event parent;
-
- rt_uint8_t event;
-};
-#define RTGUI_SCROLL_LINEUP 0x01
-#define RTGUI_SCROLL_LINEDOWN 0x02
-#define RTGUI_SCROLL_PAGEUP 0x03
-#define RTGUI_SCROLL_PAGEDOWN 0x04
-#define RTGUI_EVENT_SCROLLED_INIT(e) RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_SCROLLED)
-
-/*
- * RTGUI Widget Focused Event
- */
-struct rtgui_event_focused
-{
- struct rtgui_event parent;
-
- struct rtgui_widget *widget;
-};
-#define RTGUI_EVENT_FOCUSED_INIT(e) RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_FOCUSED)
-
-/*
- * RTGUI Widget Resize Event
- */
-struct rtgui_event_resize
-{
- struct rtgui_event parent;
- rt_int16_t x, y;
- rt_int16_t w, h;
-};
-#define RTGUI_EVENT_RESIZE_INIT(e) RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_RESIZE)
-
-/*
- * RTGUI Model/View Event
- */
-enum rtgui_event_model_mode
-{
- RTGUI_MV_DATA_ADDED,
- RTGUI_MV_DATA_CHANGED,
- RTGUI_MV_DATA_DELETED,
-};
-
-struct rtgui_event_mv_model
-{
- struct rtgui_event parent;
- struct rtgui_mv_model *model;
- struct rtgui_mv_view *view;
- rt_size_t first_data_changed_idx;
- rt_size_t last_data_changed_idx;
-};
-
-#define _RTGUI_EVENT_MV_INIT_TYPE(T) \
-rt_inline void RTGUI_EVENT_MV_MODEL_##T##_INIT(struct rtgui_event_mv_model *e) \
-{ \
- RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_MV_MODEL); \
- (e)->parent.user = RTGUI_MV_DATA_##T; \
-} \
-/* useless struct to allow trailing semicolon */ \
-struct dummy
-
-_RTGUI_EVENT_MV_INIT_TYPE(ADDED);
-_RTGUI_EVENT_MV_INIT_TYPE(CHANGED);
-_RTGUI_EVENT_MV_INIT_TYPE(DELETED);
-#undef _RTGUI_EVENT_MV_INIT_TYPE
-
-#define _RTGUI_EVENT_MV_IS_TYPE(T) \
-rt_inline rt_bool_t RTGUI_EVENT_MV_MODEL_IS_##T(struct rtgui_event_mv_model *e) \
-{ \
- return e->parent.user == RTGUI_MV_DATA_##T; \
-} \
-/* useless struct to allow trailing semicolon */ \
-struct dummy
-
-_RTGUI_EVENT_MV_IS_TYPE(ADDED);
-_RTGUI_EVENT_MV_IS_TYPE(CHANGED);
-_RTGUI_EVENT_MV_IS_TYPE(DELETED);
-#undef _RTGUI_EVENT_MV_IS_TYPE
-
-#undef _RTGUI_EVENT_WIN_ELEMENTS
-
-union rtgui_event_generic
-{
- struct rtgui_event base;
-
- struct rtgui_event_application app_create;
- struct rtgui_event_application app_destroy;
- struct rtgui_event_application app_activate;
-
- struct rtgui_event_set_wm set_wm;
- struct rtgui_event_win win_base;
- struct rtgui_event_win_create win_create;
- struct rtgui_event_win_move win_move;
- struct rtgui_event_win_resize win_resize;
- struct rtgui_event_win_destroy win_destroy;
- struct rtgui_event_win_show win_show;
- struct rtgui_event_win_hide win_hide;
- struct rtgui_event_win_activate win_activate;
- struct rtgui_event_win_deactivate win_deactivate;
- struct rtgui_event_win_close win_close;
- struct rtgui_event_win_modal_enter win_modal_enter;
- struct rtgui_event_update_begin update_begin;
- struct rtgui_event_update_end update_end;
- struct rtgui_event_monitor monitor;
- struct rtgui_event_paint paint;
- struct rtgui_event_timer timer;
- struct rtgui_event_update_toplvl update_toplvl;
- struct rtgui_event_vpaint_req vpaint_req;
- struct rtgui_event_clip_info clip_info;
- struct rtgui_event_mouse mouse;
- struct rtgui_event_kbd kbd;
- struct rtgui_event_touch touch;
- struct rtgui_event_gesture gesture;
- struct rtgui_event_scrollbar scrollbar;
- struct rtgui_event_focused focused;
- struct rtgui_event_resize resize;
- struct rtgui_event_mv_model model;
- struct rtgui_event_command command;
-};
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
diff --git a/components/gui/include/rtgui/filerw.h b/components/gui/include/rtgui/filerw.h
deleted file mode 100644
index edd2579875..0000000000
--- a/components/gui/include/rtgui/filerw.h
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * File : filerw.h
- * This file is part of RT-Thread GUI Engine
- * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Change Logs:
- * Date Author Notes
- * 2009-10-16 Bernard first version
- */
-#ifndef __RTGUI_FILERW_H__
-#define __RTGUI_FILERW_H__
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#ifdef RTGUI_USING_DFS_FILERW
-#ifdef _WIN32_NATIVE
-#pragma warning(disable: 4996)
-#include <fcntl.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <io.h>
-#else
-#include <dfs_posix.h>
-#endif
-#endif
-
-#include <rtgui/rtgui.h>
-
-#define RTGUI_FILE_SEEK_SET 0
-#define RTGUI_FILE_SEEK_CUR 1
-#define RTGUI_FILE_SEEK_END 2
-
-struct rtgui_filerw
-{
- int (*seek)(struct rtgui_filerw *context, rt_off_t offset, int whence);
- int (*read)(struct rtgui_filerw *context, void *buffer, rt_size_t size, rt_size_t count);
- int (*write)(struct rtgui_filerw *context, const void *buffer, rt_size_t size, rt_size_t count);
- int (*tell)(struct rtgui_filerw *context);
- int (*eof)(struct rtgui_filerw *context);
- int (*close)(struct rtgui_filerw *context);
-};
-typedef struct rtgui_filerw rtgui_filerw_t;
-
-struct rtgui_filerw *rtgui_filerw_create_file(const char *filename, const char *mode);
-struct rtgui_filerw *rtgui_filerw_create_mem(const rt_uint8_t *mem, rt_size_t size);
-
-int rtgui_filerw_seek(struct rtgui_filerw *context, rt_off_t offset, int whence);
-int rtgui_filerw_read(struct rtgui_filerw *context, void *buffer, rt_size_t size, rt_size_t count);
-int rtgui_filerw_write(struct rtgui_filerw *context, const void *buffer, rt_size_t size, rt_size_t count);
-int rtgui_filerw_tell(struct rtgui_filerw *context);
-int rtgui_filerw_eof(struct rtgui_filerw *context);
-int rtgui_filerw_close(struct rtgui_filerw *context);
-int rtgui_filerw_unlink(const char *filename);
-
-/* get memory data from filerw memory object */
-const rt_uint8_t *rtgui_filerw_mem_getdata(struct rtgui_filerw *context);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/components/gui/include/rtgui/font.h b/components/gui/include/rtgui/font.h
deleted file mode 100644
index b1d480d048..0000000000
--- a/components/gui/include/rtgui/font.h
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
- * File : font.h
- * This file is part of RT-Thread GUI Engine
- * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Change Logs:
- * Date Author Notes
- * 2009-10-16 Bernard first version
- */
-#ifndef __RTGUI_FONT_H__
-#define __RTGUI_FONT_H__
-
-#include <rtgui/rtgui.h>
-#include <rtgui/list.h>
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-struct rtgui_font;
-struct rtgui_dc;
-struct rtgui_rect;
-
-struct rtgui_font_engine
-{
- /* font engine function */
- void (*font_init)(struct rtgui_font *font);
- void (*font_load)(struct rtgui_font *font);
-
- void (*font_draw_text)(struct rtgui_font *font, struct rtgui_dc *dc, const char *text,
- rt_ubase_t len, struct rtgui_rect *rect);
- void (*font_get_metrics)(struct rtgui_font *font, const char *text, struct rtgui_rect *rect);
-};
-
-/*
- * bitmap font engine
- */
-struct rtgui_font_bitmap
-{
- const rt_uint8_t *bmp; /* bitmap font data */
- const rt_uint8_t *char_width; /* each character width, NULL for fixed font */
- const rt_uint32_t *offset; /* offset for each character */
-
- rt_uint16_t width; /* font width */
- rt_uint16_t height; /* font height */
-
- rt_uint8_t first_char;
- rt_uint8_t last_char;
-};
-extern const struct rtgui_font_engine bmp_font_engine;
-
-#include <rtgui/tree.h>
-SPLAY_HEAD(cache_tree, hz_cache);
-struct hz_cache
-{
- SPLAY_ENTRY(hz_cache) hz_node;
-
- rt_uint16_t hz_id;
-};
-
-struct rtgui_hz_file_font
-{
- struct cache_tree cache_root;
- rt_uint16_t cache_size;
-
- /* font size */
- rt_uint16_t font_size;
- rt_uint16_t font_data_size;
-
- /* file descriptor */
- int fd;
-
- /* font file name */
- const char *font_fn;
-};
-extern const struct rtgui_font_engine rtgui_hz_file_font_engine;
-
-struct rtgui_font
-{
- /* font name */
- char *family;
-
- /* font height */
- rt_uint16_t height;
-
- /* refer count */
- rt_uint32_t refer_count;
-
- /* font engine */
- const struct rtgui_font_engine *engine;
-
- /* font private data */
- void *data;
-
- /* the font list */
- rtgui_list_t list;
-};
-typedef struct rtgui_font rtgui_font_t;
-
-void rtgui_font_system_init(void);
-void rtgui_font_system_add_font(struct rtgui_font *font);
-void rtgui_font_system_remove_font(struct rtgui_font *font);
-struct rtgui_font *rtgui_font_default(void);
-void rtgui_font_set_defaut(struct rtgui_font *font);
-
-struct rtgui_font *rtgui_font_refer(const char *family, rt_uint16_t height);
-void rtgui_font_derefer(struct rtgui_font *font);
-
-/* draw a text */
-void rtgui_font_draw(struct rtgui_font *font, struct rtgui_dc *dc, const char *text, rt_ubase_t len, struct rtgui_rect *rect);
-int rtgui_font_get_string_width(struct rtgui_font *font, const char *text);
-void rtgui_font_get_metrics(struct rtgui_font *font, const char *text, struct rtgui_rect *rect);
-
-/* used by stract font */
-#define FONT_BMP_DATA_BEGIN
-#define FONT_BMP_DATA_END
-
-struct rtgui_char_position
-{
- /* Keep the size of this struct within 4 bytes so it can be passed by
- * value. */
- /* How long this char is. */
- rt_uint16_t char_width;
- /* How many bytes remaining from current pointer. At least, it will be 1. */
- rt_uint16_t remain;
-};
-
-/*
- * @len the length of @str.
- * @offset the char offset on the string to check with.
- */
-struct rtgui_char_position _string_char_width(char *str, rt_size_t len, rt_size_t offset);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
diff --git a/components/gui/include/rtgui/font_fnt.h b/components/gui/include/rtgui/font_fnt.h
deleted file mode 100644
index 3b0089d82e..0000000000
--- a/components/gui/include/rtgui/font_fnt.h
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * File : font_fnt.h
- * This file is part of RT-Thread GUI Engine
- * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Change Logs:
- * Date Author Notes
- * 2010-04-10 Bernard first version
- */
-
-#ifndef __FONT_FNT_H__
-#define __FONT_FNT_H__
-
-#include <rtgui/font.h>
-#include <rtgui/dc.h>
-
-/* fnt font header */
-struct fnt_header
-{
- rt_uint8_t version[4];
- rt_uint16_t max_width;
- rt_uint16_t height;
- rt_uint16_t ascent;
- rt_uint16_t depth;
-
- rt_uint32_t first_char;
- rt_uint32_t default_char;
- rt_uint32_t size;
- rt_uint32_t nbits;
- rt_uint32_t noffset;
- rt_uint32_t nwidth;
-};
-typedef rt_uint8_t MWIMAGEBITS;
-
-struct fnt_font
-{
- struct fnt_header header;
-
- const MWIMAGEBITS *bits; /* nbits */
- const rt_uint16_t *offset; /* noffset */
- const rt_uint8_t *width; /* nwidth */
-};
-extern const struct rtgui_font_engine fnt_font_engine;
-
-struct rtgui_font *fnt_font_create(const char* filename);
-
-#endif
-
diff --git a/components/gui/include/rtgui/font_freetype.h b/components/gui/include/rtgui/font_freetype.h
deleted file mode 100644
index 18c85edaf1..0000000000
--- a/components/gui/include/rtgui/font_freetype.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * File : font_freetype.h
- * This file is part of RT-Thread GUI Engine
- * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Change Logs:
- * Date Author Notes
- * 2010-04-10 Bernard first version
- */
-
-#ifndef __RTGUI_FONT_TTF_H__
-#define __RTGUI_FONT_TTF_H__
-
-#include <rtgui/dc.h>
-#include <rtgui/font.h>
-#include <rtgui/filerw.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-void rtgui_ttf_system_init(void);
-rtgui_font_t *rtgui_freetype_font_create(const char *filename, rt_size_t size);
-void rtgui_freetype_font_destroy(rtgui_font_t *font);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/components/gui/include/rtgui/image.h b/components/gui/include/rtgui/image.h
deleted file mode 100644
index 07ddaec721..0000000000
--- a/components/gui/include/rtgui/image.h
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * File : image.h
- * This file is part of RT-Thread GUI Engine
- * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Change Logs:
- * Date Author Notes
- * 2009-10-16 Bernard first version
- */
-#ifndef __RTGUI_IMAGE_H__
-#define __RTGUI_IMAGE_H__
-
-#include <rtgui/dc.h>
-#include <rtgui/filerw.h>
-#include <rtgui/region.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-struct rtgui_image;
-struct rtgui_image_engine
-{
- const char *name;
- struct rtgui_list_node list;
-
- /* image engine function */
- rt_bool_t (*image_check)(struct rtgui_filerw *file);
-
- rt_bool_t (*image_load)(struct rtgui_image *image, struct rtgui_filerw *file, rt_bool_t load);
- void (*image_unload)(struct rtgui_image *image);
-
- void (*image_blit)(struct rtgui_image *image, struct rtgui_dc *dc, struct rtgui_rect *rect);
-};
-
-struct rtgui_image_palette
-{
- rtgui_color_t *colors;
- rt_uint32_t ncolors;
-};
-typedef struct rtgui_image_palette rtgui_image_palette_t;
-
-struct rtgui_image
-{
- /* image metrics */
- rt_uint16_t w, h;
-
- /* image engine */
- const struct rtgui_image_engine *engine;
-
- /* image palette */
- rtgui_image_palette_t *palette;
-
- /* image private data */
- void *data;
-};
-typedef struct rtgui_image rtgui_image_t;
-
-/* init rtgui image system */
-void rtgui_system_image_init(void);
-
-#if defined(RTGUI_USING_DFS_FILERW)
-struct rtgui_image_engine *rtgui_image_get_engine_by_filename(const char *fn);
-struct rtgui_image *rtgui_image_create_from_file(const char *type, const char *filename, rt_bool_t load);
-struct rtgui_image *rtgui_image_create(const char *filename, rt_bool_t load);
-#endif
-
-struct rtgui_image *rtgui_image_create_from_mem(const char *type, const rt_uint8_t *data, rt_size_t length, rt_bool_t load);
-void rtgui_image_destroy(struct rtgui_image *image);
-
-/* get image's rect */
-void rtgui_image_get_rect(struct rtgui_image *image, struct rtgui_rect *rect);
-
-/* register an image engine */
-void rtgui_image_register_engine(struct rtgui_image_engine *engine);
-
-/* blit an image on DC */
-void rtgui_image_blit(struct rtgui_image *image, struct rtgui_dc *dc, struct rtgui_rect *rect);
-struct rtgui_image_palette *rtgui_image_palette_create(rt_uint32_t ncolors);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
diff --git a/components/gui/include/rtgui/image_bmp.h b/components/gui/include/rtgui/image_bmp.h
deleted file mode 100644
index 17fffd15e1..0000000000
--- a/components/gui/include/rtgui/image_bmp.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * File : image_bmp.h
- * This file is part of RT-Thread GUI Engine
- * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Change Logs:
- * Date Author Notes
- * 2010-08-10 Bernard first version
- */
-#ifndef __RTGUI_IMAGE_BMP_H__
-#define __RTGUI_IMAGE_BMP_H__
-
-#pragma pack(push)
-#pragma pack(2)
-
-struct rtgui_image_bmp_header
-{
- /* The Win32 BMP file header (14 bytes) */
- rt_uint16_t bfType;
- rt_uint32_t bfSize;
- rt_uint16_t bfReserved1;
- rt_uint16_t bfReserved2;
- rt_uint32_t bfOffBits;
-
- /* The Win32 BITMAPINFOHEADER struct (40 bytes) */
- rt_uint32_t biSize;
- rt_int32_t biWidth;
- rt_int32_t biHeight;
- rt_uint16_t biPlanes;
- rt_uint16_t biBitCount;
- rt_uint32_t biCompression;
- rt_uint32_t biSizeImage;
- rt_int32_t biXPelsPerMeter;
- rt_int32_t biYPelsPerMeter;
- rt_uint32_t biClrUsed;
- rt_uint32_t biClrImportant;
-};
-#pragma pack(pop)
-
-void rtgui_image_bmp_init(void);
-
-#endif
diff --git a/components/gui/include/rtgui/image_container.h b/components/gui/include/rtgui/image_container.h
deleted file mode 100644
index ecf0333359..0000000000
--- a/components/gui/include/rtgui/image_container.h
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * File : image_container.h
- * This file is part of RT-Thread GUI Engine
- * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Change Logs:
- * Date Author Notes
- * 2010-04-10 Bernard first version
- */
-
-#ifndef __RTGUI_IMAGE_CONTAINER_H__
-#define __RTGUI_IMAGE_CONTAINER_H__
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <rtgui/rtgui.h>
-#include <rtgui/image.h>
-
-#if defined(RTGUI_IMAGE_CONTAINER)
-/* image item in image container */
-struct rtgui_image_item
-{
- rtgui_image_t *image;
- char *filename;
-
- rt_uint32_t refcount;
-};
-typedef struct rtgui_image_item rtgui_image_item_t;
-
-void rtgui_system_image_container_init(void);
-
-struct rtgui_image_item *rtgui_image_container_get(const char *filename);
-void rtgui_image_container_put(struct rtgui_image_item *item);
-
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
diff --git a/components/gui/include/rtgui/image_hdc.h b/components/gui/include/rtgui/image_hdc.h
deleted file mode 100644
index 25beb93f24..0000000000
--- a/components/gui/include/rtgui/image_hdc.h
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * File : image_hdc.h
- * This file is part of RT-Thread GUI Engine
- * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Change Logs:
- * Date Author Notes
- * 2009-10-16 Bernard first version
- */
-#ifndef __RTGUI_IMAGE_HDC_H__
-#define __RTGUI_IMAGE_HDC_H__
-
-#include <rtgui/image.h>
-
-struct rtgui_image_hdcmm
-{
- struct rtgui_image parent;
-
- /* hdc image information */
- rt_uint16_t byte_per_pixel;
- rt_uint16_t pitch;
-
- rt_uint8_t *pixels;
-};
-
-struct rtgui_image_hdc
-{
- rt_bool_t is_loaded;
-
- /* hdc image information */
- rt_uint16_t byte_per_pixel;
- rt_uint16_t pitch;
- rt_uint8_t pixel_format;
-
- rt_size_t pixel_offset;
- rt_uint8_t *pixels;
-
- struct rtgui_filerw *filerw;
-};
-
-void rtgui_image_hdc_init(void);
-extern const struct rtgui_image_engine rtgui_image_hdcmm_engine;
-
-#define HDC_HEADER_SIZE (5 * 4)
-#define RTGUI_IMAGE_HDC_DEF(bpp, w, h, pixels) \
- {{w, h, &rtgui_image_hdcmm_engine, RT_NULL}, bpp, (bpp * w), ((rt_uint8_t*)pixels + HDC_HEADER_SIZE)}
-
-#endif
diff --git a/components/gui/include/rtgui/kbddef.h b/components/gui/include/rtgui/kbddef.h
deleted file mode 100644
index a783a93568..0000000000
--- a/components/gui/include/rtgui/kbddef.h
+++ /dev/null
@@ -1,305 +0,0 @@
-/*
- * File : kbddef.h
- * This file is part of RT-Thread GUI Engine
- * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Change Logs:
- * Date Author Notes
- * 2009-10-16 Bernard first version
- */
-#ifndef __KBD_DEF_H__
-#define __KBD_DEF_H__
-
-/* The keyboard key have been cleverly chosen to map to ASCII */
-typedef enum
-{
- RTGUIK_UNKNOWN = 0,
- RTGUIK_FIRST = 0,
- RTGUIK_BACKSPACE = 8,
- RTGUIK_TAB = 9,
- RTGUIK_CLEAR = 12,
- RTGUIK_RETURN = 13,
- RTGUIK_PAUSE = 19,
- RTGUIK_ESCAPE = 27,
- RTGUIK_SPACE = 32,
- RTGUIK_EXCLAIM = 33,
- RTGUIK_QUOTEDBL = 34,
- RTGUIK_HASH = 35,
- RTGUIK_DOLLAR = 36,
- RTGUIK_AMPERSAND = 38,
- RTGUIK_QUOTE = 39,
- RTGUIK_LEFTPAREN = 40,
- RTGUIK_RIGHTPAREN = 41,
- RTGUIK_ASTERISK = 42,
- RTGUIK_PLUS = 43,
- RTGUIK_COMMA = 44,
- RTGUIK_MINUS = 45,
- RTGUIK_PERIOD = 46,
- RTGUIK_SLASH = 47,
- RTGUIK_0 = 48,
- RTGUIK_1 = 49,
- RTGUIK_2 = 50,
- RTGUIK_3 = 51,
- RTGUIK_4 = 52,
- RTGUIK_5 = 53,
- RTGUIK_6 = 54,
- RTGUIK_7 = 55,
- RTGUIK_8 = 56,
- RTGUIK_9 = 57,
- RTGUIK_COLON = 58,
- RTGUIK_SEMICOLON = 59,
- RTGUIK_LESS = 60,
- RTGUIK_EQUALS = 61,
- RTGUIK_GREATER = 62,
- RTGUIK_QUESTION = 63,
- RTGUIK_AT = 64,
-
- /*
- Skip uppercase letters
- */
- RTGUIK_LEFTBRACKET = 91,
- RTGUIK_BACKSLASH = 92,
- RTGUIK_RIGHTBRACKET = 93,
- RTGUIK_CARET = 94,
- RTGUIK_UNDERSCORE = 95,
- RTGUIK_BACKQUOTE = 96,
- RTGUIK_a = 97,
- RTGUIK_b = 98,
- RTGUIK_c = 99,
- RTGUIK_d = 100,
- RTGUIK_e = 101,
- RTGUIK_f = 102,
- RTGUIK_g = 103,
- RTGUIK_h = 104,
- RTGUIK_i = 105,
- RTGUIK_j = 106,
- RTGUIK_k = 107,
- RTGUIK_l = 108,
- RTGUIK_m = 109,
- RTGUIK_n = 110,
- RTGUIK_o = 111,
- RTGUIK_p = 112,
- RTGUIK_q = 113,
- RTGUIK_r = 114,
- RTGUIK_s = 115,
- RTGUIK_t = 116,
- RTGUIK_u = 117,
- RTGUIK_v = 118,
- RTGUIK_w = 119,
- RTGUIK_x = 120,
- RTGUIK_y = 121,
- RTGUIK_z = 122,
- RTGUIK_DELETE = 127,
-
- /* International keyboard */
- RTGUIK_WORLD_0 = 160, /* 0xA0 */
- RTGUIK_WORLD_1 = 161,
- RTGUIK_WORLD_2 = 162,
- RTGUIK_WORLD_3 = 163,
- RTGUIK_WORLD_4 = 164,
- RTGUIK_WORLD_5 = 165,
- RTGUIK_WORLD_6 = 166,
- RTGUIK_WORLD_7 = 167,
- RTGUIK_WORLD_8 = 168,
- RTGUIK_WORLD_9 = 169,
- RTGUIK_WORLD_10 = 170,
- RTGUIK_WORLD_11 = 171,
- RTGUIK_WORLD_12 = 172,
- RTGUIK_WORLD_13 = 173,
- RTGUIK_WORLD_14 = 174,
- RTGUIK_WORLD_15 = 175,
- RTGUIK_WORLD_16 = 176,
- RTGUIK_WORLD_17 = 177,
- RTGUIK_WORLD_18 = 178,
- RTGUIK_WORLD_19 = 179,
- RTGUIK_WORLD_20 = 180,
- RTGUIK_WORLD_21 = 181,
- RTGUIK_WORLD_22 = 182,
- RTGUIK_WORLD_23 = 183,
- RTGUIK_WORLD_24 = 184,
- RTGUIK_WORLD_25 = 185,
- RTGUIK_WORLD_26 = 186,
- RTGUIK_WORLD_27 = 187,
- RTGUIK_WORLD_28 = 188,
- RTGUIK_WORLD_29 = 189,
- RTGUIK_WORLD_30 = 190,
- RTGUIK_WORLD_31 = 191,
- RTGUIK_WORLD_32 = 192,
- RTGUIK_WORLD_33 = 193,
- RTGUIK_WORLD_34 = 194,
- RTGUIK_WORLD_35 = 195,
- RTGUIK_WORLD_36 = 196,
- RTGUIK_WORLD_37 = 197,
- RTGUIK_WORLD_38 = 198,
- RTGUIK_WORLD_39 = 199,
- RTGUIK_WORLD_40 = 200,
- RTGUIK_WORLD_41 = 201,
- RTGUIK_WORLD_42 = 202,
- RTGUIK_WORLD_43 = 203,
- RTGUIK_WORLD_44 = 204,
- RTGUIK_WORLD_45 = 205,
- RTGUIK_WORLD_46 = 206,
- RTGUIK_WORLD_47 = 207,
- RTGUIK_WORLD_48 = 208,
- RTGUIK_WORLD_49 = 209,
- RTGUIK_WORLD_50 = 210,
- RTGUIK_WORLD_51 = 211,
- RTGUIK_WORLD_52 = 212,
- RTGUIK_WORLD_53 = 213,
- RTGUIK_WORLD_54 = 214,
- RTGUIK_WORLD_55 = 215,
- RTGUIK_WORLD_56 = 216,
- RTGUIK_WORLD_57 = 217,
- RTGUIK_WORLD_58 = 218,
- RTGUIK_WORLD_59 = 219,
- RTGUIK_WORLD_60 = 220,
- RTGUIK_WORLD_61 = 221,
- RTGUIK_WORLD_62 = 222,
- RTGUIK_WORLD_63 = 223,
- RTGUIK_WORLD_64 = 224,
- RTGUIK_WORLD_65 = 225,
- RTGUIK_WORLD_66 = 226,
- RTGUIK_WORLD_67 = 227,
- RTGUIK_WORLD_68 = 228,
- RTGUIK_WORLD_69 = 229,
- RTGUIK_WORLD_70 = 230,
- RTGUIK_WORLD_71 = 231,
- RTGUIK_WORLD_72 = 232,
- RTGUIK_WORLD_73 = 233,
- RTGUIK_WORLD_74 = 234,
- RTGUIK_WORLD_75 = 235,
- RTGUIK_WORLD_76 = 236,
- RTGUIK_WORLD_77 = 237,
- RTGUIK_WORLD_78 = 238,
- RTGUIK_WORLD_79 = 239,
- RTGUIK_WORLD_80 = 240,
- RTGUIK_WORLD_81 = 241,
- RTGUIK_WORLD_82 = 242,
- RTGUIK_WORLD_83 = 243,
- RTGUIK_WORLD_84 = 244,
- RTGUIK_WORLD_85 = 245,
- RTGUIK_WORLD_86 = 246,
- RTGUIK_WORLD_87 = 247,
- RTGUIK_WORLD_88 = 248,
- RTGUIK_WORLD_89 = 249,
- RTGUIK_WORLD_90 = 250,
- RTGUIK_WORLD_91 = 251,
- RTGUIK_WORLD_92 = 252,
- RTGUIK_WORLD_93 = 253,
- RTGUIK_WORLD_94 = 254,
- RTGUIK_WORLD_95 = 255, /* 0xFF */
-
- /* Numeric keypad */
- RTGUIK_KP0 = 256,
- RTGUIK_KP1 = 257,
- RTGUIK_KP2 = 258,
- RTGUIK_KP3 = 259,
- RTGUIK_KP4 = 260,
- RTGUIK_KP5 = 261,
- RTGUIK_KP6 = 262,
- RTGUIK_KP7 = 263,
- RTGUIK_KP8 = 264,
- RTGUIK_KP9 = 265,
- RTGUIK_KP_PERIOD = 266,
- RTGUIK_KP_DIVIDE = 267,
- RTGUIK_KP_MULTIPLY = 268,
- RTGUIK_KP_MINUS = 269,
- RTGUIK_KP_PLUS = 270,
- RTGUIK_KP_ENTER = 271,
- RTGUIK_KP_EQUALS = 272,
-
- /* Arrows + Home/End pad */
- RTGUIK_UP = 273,
- RTGUIK_DOWN = 274,
- RTGUIK_RIGHT = 275,
- RTGUIK_LEFT = 276,
- RTGUIK_INSERT = 277,
- RTGUIK_HOME = 278,
- RTGUIK_END = 279,
- RTGUIK_PAGEUP = 280,
- RTGUIK_PAGEDOWN = 281,
-
- /* Function keys */
- RTGUIK_F1 = 282,
- RTGUIK_F2 = 283,
- RTGUIK_F3 = 284,
- RTGUIK_F4 = 285,
- RTGUIK_F5 = 286,
- RTGUIK_F6 = 287,
- RTGUIK_F7 = 288,
- RTGUIK_F8 = 289,
- RTGUIK_F9 = 290,
- RTGUIK_F10 = 291,
- RTGUIK_F11 = 292,
- RTGUIK_F12 = 293,
- RTGUIK_F13 = 294,
- RTGUIK_F14 = 295,
- RTGUIK_F15 = 296,
-
- /* Key state modifier keys */
- RTGUIK_NUMLOCK = 300,
- RTGUIK_CAPSLOCK = 301,
- RTGUIK_SCROLLOCK = 302,
- RTGUIK_RSHIFT = 303,
- RTGUIK_LSHIFT = 304,
- RTGUIK_RCTRL = 305,
- RTGUIK_LCTRL = 306,
- RTGUIK_RALT = 307,
- RTGUIK_LALT = 308,
- RTGUIK_RMETA = 309,
- RTGUIK_LMETA = 310,
- RTGUIK_LSUPER = 311, /* Left "Windows" key */
- RTGUIK_RSUPER = 312, /* Right "Windows" key */
- RTGUIK_MODE = 313, /* "Alt Gr" key */
- RTGUIK_COMPOSE = 314, /* Multi-key compose key */
-
- /* Miscellaneous function keys */
- RTGUIK_HELP = 315,
- RTGUIK_PRINT = 316,
- RTGUIK_SYSREQ = 317,
- RTGUIK_BREAK = 318,
- RTGUIK_MENU = 319,
- RTGUIK_POWER = 320, /* Power key */
-
- RTGUIK_LAST
-} RTGUI_KBD_KEY;
-
-/* Enumeration of valid key mods (possibly OR'd together) */
-typedef enum
-{
- RTGUI_KMOD_NONE = 0x0000,
- RTGUI_KMOD_LSHIFT = 0x0001,
- RTGUI_KMOD_RSHIFT = 0x0002,
- RTGUI_KMOD_LCTRL = 0x0040,
- RTGUI_KMOD_RCTRL = 0x0080,
- RTGUI_KMOD_LALT = 0x0100,
- RTGUI_KMOD_RALT = 0x0200,
- RTGUI_KMOD_LMETA = 0x0400,
- RTGUI_KMOD_RMETA = 0x0800,
- RTGUI_KMOD_NUM = 0x1000,
- RTGUI_KMOD_CAPS = 0x2000,
- RTGUI_KMOD_MODE = 0x4000,
- RTGUI_KMOD_RESERVED = 0x8000
-} RTGUI_KBD_MOD;
-
-typedef enum
-{
- RTGUI_KEYDOWN, /* Keys pressed */
- RTGUI_KEYUP, /* Keys released */
-} RTGUI_KBD_TYPE;
-
-#endif
diff --git a/components/gui/include/rtgui/list.h b/components/gui/include/rtgui/list.h
deleted file mode 100644
index 6eb77ccf8b..0000000000
--- a/components/gui/include/rtgui/list.h
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * File : list.h
- * This file is part of RT-Thread GUI Engine
- * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Change Logs:
- * Date Author Notes
- * 2009-10-16 Bernard first version
- */
-#ifndef __RTGUI_LIST_H__
-#define __RTGUI_LIST_H__
-
-#include <rtgui/rtgui.h>
-
-struct rtgui_list_node
-{
- struct rtgui_list_node *next;
-};
-typedef struct rtgui_list_node rtgui_list_t;
-
-rt_inline void rtgui_list_init(rtgui_list_t *l)
-{
- l->next = (struct rtgui_list_node *)0;
-}
-
-rt_inline void rtgui_list_append(rtgui_list_t *l, rtgui_list_t *n)
-{
- struct rtgui_list_node *node;
-
- node = l;
- while (node->next) node = node->next;
-
- /* append the node to the tail */
- node->next = n;
- n->next = (struct rtgui_list_node *) 0;
-}
-
-rt_inline void rtgui_list_insert(rtgui_list_t *l, rtgui_list_t *n)
-{
- n->next = l->next;
- l->next = n;
-}
-
-rt_inline rtgui_list_t *rtgui_list_remove(rtgui_list_t *l, rtgui_list_t *n)
-{
- /* remove slist head */
- struct rtgui_list_node *node = l;
- while (node->next && node->next != n) node = node->next;
-
- /* remove node */
- if (node->next != (rtgui_list_t *)0) node->next = node->next->next;
-
- return l;
-}
-
-#define rtgui_list_entry(node, type, member) \
- ((type *)((char*)(node)-(unsigned long)(&((type *)0)->member)))
-
-#define rtgui_list_foreach(node, list) \
- for ((node) = (list)->next; (node) != RT_NULL; (node) = (node)->next)
-
-#endif
diff --git a/components/gui/include/rtgui/matrix.h b/components/gui/include/rtgui/matrix.h
deleted file mode 100644
index 5d83c4ae85..0000000000
--- a/components/gui/include/rtgui/matrix.h
+++ /dev/null
@@ -1,186 +0,0 @@
-/*
- * File : matrix.h
- * This file is part of RT-Thread GUI Engine
- * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Change Logs:
- * Date Author Notes
- * 2010-04-10 Grissiom The first version
- */
-
-#ifndef __MATRIX_H__
-#define __MATRIX_H__
-
-/* Port from ejoy2d: https://github.com/cloudwu/ejoy2d/blob/master/LICENSE
- * Original License:
- *
- * The MIT License (MIT)
- *
- * Copyright (c) 2013 Ejoy.com Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy of
- * this software and associated documentation files (the "Software"), to deal in
- * the Software without restriction, including without limitation the rights to
- * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
- * the Software, and to permit persons to whom the Software is furnished to do so,
- * subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
- * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
- * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
- * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-/* Port to RTGUI and modified by Grissiom */
-
-#ifdef _MSC_VER
-typedef __int32 int32_t;
-typedef unsigned __int32 uint32_t;
-typedef __int64 int64_t;
-typedef unsigned __int64 uint64_t;
-#else
-#include <stdint.h>
-#endif
-
-#define RTGUI_MATRIX_FRAC_BITS 11
-#define RTGUI_MATRIX_FRAC (1 << RTGUI_MATRIX_FRAC_BITS)
-
-struct rtgui_matrix
-{
- /* The matrix format is :
- *
- * | m[0] m[1] 0 |
- * | m[2] m[3] 0 |
- * | m[4] m[5] 1 |
- *
- * The format of the coordinate of a point is:
- *
- * | x y 1 |
- *
- * So, if you want to transform a point p with a matrix m, do:
- *
- * p * m
- *
- * Note: m[0-3] is in fix presentation that has 10 bits decimal
- * fraction(m/RTGUI_MATRIX_FRAC). While the unit of m[4-5] is pixel.
- *
- */
- int m[6];
-};
-
-rt_inline int32_t _rtgui_matrix_round_div32(int32_t n, int32_t d)
-{
- if (n == 0)
- return 0;
-
- if (d < 0)
- {
- d = -d;
- n = -n;
- }
- if (n > 0)
- return (n + d / 2) / d;
- else
- return (n - d / 2) / d;
-}
-
-rt_inline int32_t _rtgui_matrix_round_div6432(int64_t n, int32_t d)
-{
- if (n == 0)
- return 0;
-
- if (d < 0)
- {
- d = -d;
- n = -n;
- }
- if (n > 0)
- return (n + d / 2) / d;
- else
- return (n - d / 2) / d;
-}
-
-/* mm = mm1 * mm2 */
-rt_inline void rtgui_matrix_mul(struct rtgui_matrix *mm,
- const struct rtgui_matrix *mm1,
- const struct rtgui_matrix *mm2)
-{
- int *m = mm->m;
- const int *m1 = mm1->m;
- const int *m2 = mm2->m;
-
- m[0] = _rtgui_matrix_round_div32(m1[0] * m2[0] + m1[1] * m2[2], RTGUI_MATRIX_FRAC);
- m[1] = _rtgui_matrix_round_div32(m1[0] * m2[1] + m1[1] * m2[3], RTGUI_MATRIX_FRAC);
- m[2] = _rtgui_matrix_round_div32(m1[2] * m2[0] + m1[3] * m2[2], RTGUI_MATRIX_FRAC);
- m[3] = _rtgui_matrix_round_div32(m1[2] * m2[1] + m1[3] * m2[3], RTGUI_MATRIX_FRAC);
- m[4] = _rtgui_matrix_round_div32(m1[4] * m2[0] + m1[5] * m2[2], RTGUI_MATRIX_FRAC) + m2[4];
- m[5] = _rtgui_matrix_round_div32(m1[4] * m2[1] + m1[5] * m2[3], RTGUI_MATRIX_FRAC) + m2[5];
-}
-
-/* Matrix multiply point[(p) = (x, y) * m], ignore the movement components. */
-rt_inline void rtgui_matrix_mul_point_nomove(struct rtgui_point *p,
- int x, int y,
- struct rtgui_matrix *m)
-{
- int *mm = m->m;
-
- p->x = _rtgui_matrix_round_div32(x * mm[0] + y * mm[2], RTGUI_MATRIX_FRAC);
- p->y = _rtgui_matrix_round_div32(x * mm[1] + y * mm[3], RTGUI_MATRIX_FRAC);
-}
-
-/* Matrix multiply point[(p) = (x, y) * m]. */
-rt_inline void rtgui_matrix_mul_point(struct rtgui_point *p,
- int x, int y,
- struct rtgui_matrix *m)
-{
- int *mm = m->m;
-
- p->x = _rtgui_matrix_round_div32(x * mm[0] + y * mm[2], RTGUI_MATRIX_FRAC) + mm[4];
- p->y = _rtgui_matrix_round_div32(x * mm[1] + y * mm[3], RTGUI_MATRIX_FRAC) + mm[5];
-}
-
-/** Set @mm to an identity matrix. */
-rt_inline void rtgu_matrix_identity(struct rtgui_matrix *mm)
-{
- int *mat = mm->m;
- mat[0] = RTGUI_MATRIX_FRAC;
- mat[1] = 0;
- mat[2] = 0;
- mat[3] = RTGUI_MATRIX_FRAC;
- mat[4] = 0;
- mat[5] = 0;
-}
-
-/** Save the inversed matrix of @mm to @mo.
- *
- * @return If the matrix is not inversale, return 1. Otherwise, return 0. */
-int rtgui_matrix_inverse(const struct rtgui_matrix *mm, struct rtgui_matrix *mo);
-
-/** @degree range from 0 ~ 512. */
-void rtgui_matrix_rotate(struct rtgui_matrix *m, int degree);
-/** The unit is fixed point number. RTGUI_MATRIX_FRAC means 1.0. */
-void rtgui_matrix_scale(struct rtgui_matrix *m, int sx, int sy);
-/** The unit is pixel. Not the fixed point number. */
-void rtgui_matrix_move(struct rtgui_matrix *m, int dx, int dy);
-
-#endif /* end of include guard: __MATRIX_H__ */
-
diff --git a/components/gui/include/rtgui/region.h b/components/gui/include/rtgui/region.h
deleted file mode 100644
index dac35ce50d..0000000000
--- a/components/gui/include/rtgui/region.h
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * File : region.h
- * This file is part of RT-Thread GUI Engine
- * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Change Logs:
- * Date Author Notes
- * 2009-10-16 Bernard first version
- */
-#ifndef __RTGUI_REGION_H__
-#define __RTGUI_REGION_H__
-
-#include <rtgui/rtgui.h>
-
-#if defined(__cplusplus) || defined(c_plusplus)
-extern "C" {
-#endif
-
-typedef struct rtgui_region_data rtgui_region_data_t;
-struct rtgui_dc;
-
-struct rtgui_region_data
-{
- rt_uint32_t size;
- rt_uint32_t numRects;
- /* XXX: And why, exactly, do we have this bogus struct definition? */
- /* rtgui_rect_t rects[size]; in memory but not explicitly declared */
-};
-
-typedef struct rtgui_region
-{
- rtgui_rect_t extents;
- rtgui_region_data_t *data;
-} rtgui_region_t;
-
-typedef enum
-{
- RTGUI_REGION_STATUS_FAILURE,
- RTGUI_REGION_STATUS_SUCCESS
-} rtgui_region_status_t;
-
-/* creation/destruction */
-
-void rtgui_region_init(rtgui_region_t *region);
-void rtgui_region_init_rect(rtgui_region_t *region,
- int x, int y, unsigned int width, unsigned int height);
-void rtgui_region_init_with_extents(rtgui_region_t *region, const rtgui_rect_t *extents);
-void rtgui_region_fini(rtgui_region_t *region);
-
-void rtgui_region_translate(rtgui_region_t *region, int x, int y);
-
-rtgui_region_status_t rtgui_region_copy(rtgui_region_t *dest, rtgui_region_t *source);
-
-rtgui_region_status_t rtgui_region_intersect(rtgui_region_t *newReg, rtgui_region_t *reg1, rtgui_region_t *reg2);
-rtgui_region_status_t rtgui_region_intersect_rect(rtgui_region_t *newReg, rtgui_region_t *reg1, rtgui_rect_t *rect);
-rtgui_region_status_t rtgui_region_union(rtgui_region_t *newReg, rtgui_region_t *reg1, rtgui_region_t *reg2);
-rtgui_region_status_t rtgui_region_union_rect(rtgui_region_t *dest, rtgui_region_t *source, rtgui_rect_t *rect);
-rtgui_region_status_t rtgui_region_subtract(rtgui_region_t *regD, rtgui_region_t *regM, rtgui_region_t *regS);
-rtgui_region_status_t rtgui_region_subtract_rect(rtgui_region_t *regD, rtgui_region_t *regM, rtgui_rect_t *rect);
-rtgui_region_status_t rtgui_region_inverse(rtgui_region_t *newReg, rtgui_region_t *reg1, rtgui_rect_t *invRect);
-
-int rtgui_region_num_rects(rtgui_region_t *region);
-
-rtgui_rect_t *rtgui_region_rects(rtgui_region_t *region);
-
-#define RTGUI_REGION_OUT 0
-#define RTGUI_REGION_IN 1
-#define RTGUI_REGION_PART 2
-
-int rtgui_region_contains_point(rtgui_region_t *region, int x, int y, rtgui_rect_t *box);
-int rtgui_region_contains_rectangle(rtgui_region_t *rtgui_region_t, rtgui_rect_t *prect);
-
-int rtgui_region_not_empty(rtgui_region_t *region);
-rtgui_rect_t *rtgui_region_extents(rtgui_region_t *region);
-
-rtgui_region_status_t rtgui_region_append(rtgui_region_t *dest, rtgui_region_t *region);
-rtgui_region_status_t rtgui_region_validate(rtgui_region_t *badreg, int *pOverlap);
-
-void rtgui_region_reset(rtgui_region_t *region, rtgui_rect_t *rect);
-void rtgui_region_empty(rtgui_region_t *region);
-void rtgui_region_dump(rtgui_region_t *region);
-void rtgui_region_draw_clip(rtgui_region_t *region, struct rtgui_dc *dc);
-int rtgui_region_is_flat(rtgui_region_t *region);
-
-/* rect functions */
-extern rtgui_rect_t rtgui_empty_rect;
-
-void rtgui_rect_move(rtgui_rect_t *rect, int x, int y);
-void rtgui_rect_move_to_point(rtgui_rect_t *rect, int x, int y);
-void rtgui_rect_move_to_align(const rtgui_rect_t *rect, rtgui_rect_t *to, int align);
-void rtgui_rect_inflate(rtgui_rect_t *rect, int d);
-void rtgui_rect_intersect(rtgui_rect_t *src, rtgui_rect_t *dest);
-int rtgui_rect_contains_point(const rtgui_rect_t *rect, int x, int y);
-int rtgui_rect_is_intersect(const rtgui_rect_t *rect1, const rtgui_rect_t *rect2);
-int rtgui_rect_is_equal(const rtgui_rect_t *rect1, const rtgui_rect_t *rect2);
-rtgui_rect_t *rtgui_rect_set(rtgui_rect_t *rect, int x, int y, int w, int h);
-rt_bool_t rtgui_rect_is_empty(const rtgui_rect_t *rect);
-void rtgui_rect_union(rtgui_rect_t *src, rtgui_rect_t *dest);
-
-rt_inline void rtgui_rect_init(rtgui_rect_t* rect, int x, int y, int width, int height)
-{
- rect->x1 = x;
- rect->y1 = y;
- rect->x2 = x + width;
- rect->y2 = y + height;
-}
-
-#define RTGUI_RECT(rect, x, y, w, h) \
- do { \
- rect.x1 = x; rect.y1 = y; \
- rect.x2 = (x) + (w); rect.y2 = (y) + (h); \
- } while (0)
-
-#if defined(__cplusplus) || defined(c_plusplus)
-}
-#endif
-
-#endif /* _PIXMAN_H_ */
diff --git a/components/gui/include/rtgui/rtgui.h b/components/gui/include/rtgui/rtgui.h
deleted file mode 100644
index b918c78be1..0000000000
--- a/components/gui/include/rtgui/rtgui.h
+++ /dev/null
@@ -1,187 +0,0 @@
-/*
- * File : rtgui.h
- * This file is part of RT-Thread GUI Engine
- * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Change Logs:
- * Date Author Notes
- * 2009-10-04 Bernard first version
- */
-#ifndef __RT_GUI_H__
-#define __RT_GUI_H__
-
-#include <rtthread.h>
-#include <rtgui/rtgui_config.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define _UI_MIN(x, y) (((x)<(y))?(x):(y))
-#define _UI_MAX(x, y) (((x)>(y))?(x):(y))
-#define _UI_BITBYTES(bits) ((bits + 7)/8)
-#define _UI_ABS(x) ((x)>=0? (x):-(x))
-
-/* MDK, GCC and MSVC all support __restrict keyword. */
-#define RTGUI_RESTRICT __restrict
-#ifdef _MSC_VER
-#define RTGUI_PURE
-#else
-/* GCC and MDK share the same attributes.
- * TODO: IAR attributes. */
-#define RTGUI_PURE __attribute__((pure))
-#endif
-
-struct rtgui_event;
-
-struct rtgui_object;
-struct rtgui_widget;
-struct rtgui_win;
-struct rtgui_font;
-
-typedef struct rtgui_win rtgui_win_t;
-typedef rt_bool_t (*rtgui_event_handler_ptr)(struct rtgui_object *object, struct rtgui_event *event);
-typedef void (*rtgui_onbutton_func_t)(struct rtgui_object *object, struct rtgui_event *event);
-
-/**
- * Coordinate point
- */
-struct rtgui_point
-{
- rt_int16_t x, y;
-};
-typedef struct rtgui_point rtgui_point_t;
-extern rtgui_point_t rtgui_empty_point;
-
-/**
- * Rectangle structure
- */
-struct rtgui_rect
-{
- rt_int16_t x1, y1, x2, y2;
-};
-typedef struct rtgui_rect rtgui_rect_t;
-#define rtgui_rect_width(r) ((r).x2 - (r).x1)
-#define rtgui_rect_height(r) ((r).y2 - (r).y1)
-
-typedef unsigned long rtgui_color_t;
-
-/**
- * Graphic context
- */
-struct rtgui_gc
-{
- /* foreground and background color */
- rtgui_color_t foreground, background;
-
- /* text style */
- rt_uint16_t textstyle;
- /* text align */
- rt_uint16_t textalign;
-
- /* font */
- struct rtgui_font *font;
-};
-typedef struct rtgui_gc rtgui_gc_t;
-
-enum RTGUI_MARGIN_STYLE
-{
- RTGUI_MARGIN_LEFT = 0x01,
- RTGUI_MARGIN_RIGHT = 0x02,
- RTGUI_MARGIN_TOP = 0x04,
- RTGUI_MARGIN_BOTTOM = 0x08,
- RTGUI_MARGIN_ALL = RTGUI_MARGIN_LEFT | RTGUI_MARGIN_RIGHT | RTGUI_MARGIN_TOP | RTGUI_MARGIN_BOTTOM
-};
-
-/**
- * Border style
- */
-enum RTGUI_BORDER_STYLE
-{
- RTGUI_BORDER_NONE = 0,
- RTGUI_BORDER_SIMPLE,
- RTGUI_BORDER_RAISE,
- RTGUI_BORDER_SUNKEN,
- RTGUI_BORDER_BOX,
- RTGUI_BORDER_STATIC,
- RTGUI_BORDER_EXTRA,
- RTGUI_BORDER_UP,
- RTGUI_BORDER_DOWN
-};
-#define RTGUI_BORDER_DEFAULT_WIDTH 2
-#define RTGUI_WIDGET_DEFAULT_MARGIN 3
-
-/**
- * Blend mode
- */
-enum RTGUI_BLENDMODE
-{
- RTGUI_BLENDMODE_NONE = 0x00,
- RTGUI_BLENDMODE_BLEND,
- RTGUI_BLENDMODE_ADD,
- RTGUI_BLENDMODE_MOD,
-};
-
-/**
- * Orientation
- */
-enum RTGUI_ORIENTATION
-{
- RTGUI_HORIZONTAL = 0x01,
- RTGUI_VERTICAL = 0x02,
- RTGUI_ORIENTATION_BOTH = RTGUI_HORIZONTAL | RTGUI_VERTICAL
-};
-
-enum RTGUI_ALIGN
-{
- RTGUI_ALIGN_NOT = 0x00,
- RTGUI_ALIGN_CENTER_HORIZONTAL = 0x01,
- RTGUI_ALIGN_LEFT = RTGUI_ALIGN_NOT,
- RTGUI_ALIGN_TOP = RTGUI_ALIGN_NOT,
- RTGUI_ALIGN_RIGHT = 0x02,
- RTGUI_ALIGN_BOTTOM = 0x04,
- RTGUI_ALIGN_CENTER_VERTICAL = 0x08,
- RTGUI_ALIGN_CENTER = RTGUI_ALIGN_CENTER_HORIZONTAL | RTGUI_ALIGN_CENTER_VERTICAL,
- RTGUI_ALIGN_EXPAND = 0x10,
- RTGUI_ALIGN_STRETCH = 0x20,
- RTGUI_ALIGN_TTF_SIZE = 0x40,
-};
-
-enum RTGUI_TEXTSTYLE
-{
- RTGUI_TEXTSTYLE_NORMAL = 0x00,
- RTGUI_TEXTSTYLE_DRAW_BACKGROUND = 0x01,
- RTGUI_TEXTSTYLE_SHADOW = 0x02,
- RTGUI_TEXTSTYLE_OUTLINE = 0x04,
-};
-
-enum RTGUI_MODAL_CODE
-{
- RTGUI_MODAL_OK,
- RTGUI_MODAL_CANCEL,
- RTGUI_MODAL_MAX = 0xFFFF,
-};
-typedef enum RTGUI_MODAL_CODE rtgui_modal_code_t;
-
-#include <rtgui/rtgui_object.h>
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
diff --git a/components/gui/include/rtgui/rtgui_app.h b/components/gui/include/rtgui/rtgui_app.h
deleted file mode 100644
index 8d17c9a21d..0000000000
--- a/components/gui/include/rtgui/rtgui_app.h
+++ /dev/null
@@ -1,128 +0,0 @@
-/*
- * File : rtgui_app.h
- * This file is part of RT-Thread GUI Engine
- * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Change Logs:
- * Date Author Notes
- * 2012-01-13 Grissiom first version
- */
-
-#ifndef __RTGUI_APP_H__
-#define __RTGUI_APP_H__
-
-#include <rtthread.h>
-#include <rtgui/rtgui.h>
-#include <rtgui/event.h>
-#include <rtgui/rtgui_system.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-DECLARE_CLASS_TYPE(application);
-
-/** Gets the type of a application */
-#define RTGUI_APP_TYPE (RTGUI_TYPE(application))
-/** Casts the object to an rtgui_workbench */
-#define RTGUI_APP(obj) (RTGUI_OBJECT_CAST((obj), RTGUI_APP_TYPE, struct rtgui_app))
-/** Checks if the object is an rtgui_workbench */
-#define RTGUI_IS_APP(obj) (RTGUI_OBJECT_CHECK_TYPE((obj), RTGUI_APP_TYPE))
-
-enum rtgui_app_flag
-{
- RTGUI_APP_FLAG_EXITED = 0x04,
- RTGUI_APP_FLAG_SHOWN = 0x08,
- RTGUI_APP_FLAG_KEEP = 0x80,
-};
-
-typedef void (*rtgui_idle_func_t)(struct rtgui_object *obj, struct rtgui_event *event);
-
-struct rtgui_app
-{
- struct rtgui_object parent;
-
- /* application name */
- unsigned char *name;
- struct rtgui_image *icon;
-
- enum rtgui_app_flag state_flag;
-
- rt_uint16_t ref_count;
- rt_uint16_t exit_code;
-
- /* the thread id */
- rt_thread_t tid;
- /* the message queue of thread */
- rt_mq_t mq;
- /* event buffer */
- rt_uint8_t event_buffer[sizeof(union rtgui_event_generic)];
-
- /* if not RT_NULL, the main_object is the one will be activated when the
- * app recieves activate event. By default, it is the first window shown in
- * the app. */
- struct rtgui_object *main_object;
-
- /* on idle event handler */
- rtgui_idle_func_t on_idle;
-
- unsigned int window_cnt;
- /* window activate count */
- unsigned int win_acti_cnt;
-
- void *user_data;
-};
-
-/**
- * create an application named @myname on current thread.
- *
- * @param name the name of the application
- *
- * @return a pointer to struct rtgui_app on success. RT_NULL on failure.
- */
-struct rtgui_app *rtgui_app_create(const char *name);
-void rtgui_app_destroy(struct rtgui_app *app);
-rt_bool_t rtgui_app_event_handler(struct rtgui_object *obj, rtgui_event_t *event);
-
-rt_base_t rtgui_app_run(struct rtgui_app *app);
-void rtgui_app_exit(struct rtgui_app *app, rt_uint16_t code);
-void rtgui_app_activate(struct rtgui_app *app);
-void rtgui_app_close(struct rtgui_app *app);
-void rtgui_app_sleep(struct rtgui_app *app, int millisecond);
-
-void rtgui_app_set_onidle(struct rtgui_app *app, rtgui_idle_func_t onidle);
-rtgui_idle_func_t rtgui_app_get_onidle(struct rtgui_app *app);
-
-/**
- * return the rtgui_app struct on current thread
- */
-struct rtgui_app *rtgui_app_self(void);
-
-rt_err_t rtgui_app_set_as_wm(struct rtgui_app *app);
-
-void rtgui_app_set_main_win(struct rtgui_app *app, struct rtgui_win *win);
-struct rtgui_win* rtgui_app_get_main_win(struct rtgui_app *app);
-
-/* get the topwin belong app window activate count */
-unsigned int rtgui_app_get_win_acti_cnt(void);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* end of include guard: __RTGUI_APP_H__ */
-
diff --git a/components/gui/include/rtgui/rtgui_config.h b/components/gui/include/rtgui/rtgui_config.h
deleted file mode 100644
index afb728ed84..0000000000
--- a/components/gui/include/rtgui/rtgui_config.h
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * File : rtgui_config.h
- * This file is part of RT-Thread GUI Engine
- * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Change Logs:
- * Date Author Notes
- * 2009-10-16 Bernard first version
- * 2010-02-08 Bernard move some RTGUI options to bsp
- */
-
-#ifndef __RTGUI_CONFIG_H__
-#define __RTGUI_CONFIG_H__
-
-/* RTGUI options */
-
-#ifndef RT_USING_DFS
-#undef RTGUI_USING_DFS_FILERW
-#undef RTGUI_USING_HZ_FILE
-#endif
-
-#ifdef RT_USING_DFS
-/* if file system is used, the DFS_FILERW will be defined */
-#ifndef RTGUI_USING_DFS_FILERW
-#define RTGUI_USING_DFS_FILERW
-#endif
-#endif
-
-#if RTGUI_DEFAULT_FONT_SIZE == 0
-#define RTGUI_DEFAULT_FONT_SIZE 12
-#endif
-
-#define RTGUI_SVR_THREAD_PRIORITY 15
-#define RTGUI_SVR_THREAD_TIMESLICE 5
-#ifndef RTGUI_SVR_THREAD_STACK_SIZE
-#ifdef RTGUI_USING_SMALL_SIZE
-#define RTGUI_SVR_THREAD_STACK_SIZE 1024
-#else
-#define RTGUI_SVR_THREAD_STACK_SIZE 2048
-#endif
-#endif
-
-#define RTGUI_APP_THREAD_PRIORITY 25
-#define RTGUI_APP_THREAD_TIMESLICE 5
-#ifdef RTGUI_USING_SMALL_SIZE
-#define RTGUI_APP_THREAD_STACK_SIZE 1024
-#else
-#define RTGUI_APP_THREAD_STACK_SIZE 2048
-#endif
-
-// #define RTGUI_USING_CAST_CHECK
-
-// #define RTGUI_USING_DESKTOP_WINDOW
-// #undef RTGUI_USING_SMALL_SIZE
-
-//#define RTGUI_USING_CALIBRATION
-
-#define RTGUI_USING_VFRAMEBUFFER
-
-#ifdef DEBUG_MEMLEAK
-#define rtgui_malloc rt_malloc
-#define rtgui_realloc rt_realloc
-#define rtgui_free rt_free
-#endif
-
-#endif
-
diff --git a/components/gui/include/rtgui/rtgui_object.h b/components/gui/include/rtgui/rtgui_object.h
deleted file mode 100644
index 34b23af520..0000000000
--- a/components/gui/include/rtgui/rtgui_object.h
+++ /dev/null
@@ -1,177 +0,0 @@
-/*
- * File : rtgui_object.h
- * This file is part of RT-Thread GUI Engine
- * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Change Logs:
- * Date Author Notes
- * 2009-10-04 Bernard first version
- */
-#ifndef __RTGUI_OBJECT_H__
-#define __RTGUI_OBJECT_H__
-
-
-#include <rtthread.h>
-#include <rtgui/rtgui.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* rtgui object type */
-#define RTGUI_CONTAINER_OF(obj, type, member) \
- ((type *)((char *)(obj) - (unsigned long)(&((type *)0)->member)))
-
-/** Casts the function pointer to an rtgui_constructor */
-#define RTGUI_CONSTRUCTOR(constructor) ((rtgui_constructor_t)(constructor))
-/** Casts the function pointer to an rtgui_constructor */
-#define RTGUI_DESTRUCTOR(destructor) ((rtgui_destructor_t)(destructor))
-
-/* pre-definition */
-struct rtgui_object;
-struct rtgui_app;
-
-typedef struct rtgui_object rtgui_object_t;
-typedef void (*rtgui_constructor_t)(rtgui_object_t *object);
-typedef void (*rtgui_destructor_t)(rtgui_object_t *object);
-
-/* rtgui type structure */
-struct rtgui_type
-{
- /* type name */
- char *name;
-
- /* parent type link */
- const struct rtgui_type *parent;
-
- /* constructor and destructor */
- rtgui_constructor_t constructor;
- rtgui_destructor_t destructor;
-
- /* size of type */
- int size;
-};
-typedef struct rtgui_type rtgui_type_t;
-#define RTGUI_TYPE(type) (_rtgui_##type##_get_type())
-#define RTGUI_PARENT_TYPE(type) (const struct rtgui_type*)(&_rtgui_##type)
-
-#define DECLARE_CLASS_TYPE(type) \
- const rtgui_type_t *_rtgui_##type##_get_type(void); \
- extern const struct rtgui_type _rtgui_##type
-
-#define DEFINE_CLASS_TYPE(type, name, parent, constructor, destructor, size) \
- const struct rtgui_type _rtgui_##type = { \
- name, \
- parent, \
- RTGUI_CONSTRUCTOR(constructor), \
- RTGUI_DESTRUCTOR(destructor), \
- size }; \
- const rtgui_type_t *_rtgui_##type##_get_type(void) { return &_rtgui_##type; } \
- RTM_EXPORT(_rtgui_##type##_get_type)
-
-void rtgui_type_object_construct(const rtgui_type_t *type, rtgui_object_t *object);
-void rtgui_type_destructors_call(const rtgui_type_t *type, rtgui_object_t *object);
-rt_bool_t rtgui_type_inherits_from(const rtgui_type_t *type, const rtgui_type_t *parent);
-const rtgui_type_t *rtgui_type_parent_type_get(const rtgui_type_t *type);
-const char *rtgui_type_name_get(const rtgui_type_t *type);
-const rtgui_type_t *rtgui_object_object_type_get(rtgui_object_t *object);
-
-#ifdef RTGUI_USING_CAST_CHECK
-#define RTGUI_OBJECT_CAST(obj, obj_type, c_type) \
- ((c_type *)rtgui_object_check_cast((rtgui_object_t *)(obj), (obj_type), __FUNCTION__, __LINE__))
-#else
-#define RTGUI_OBJECT_CAST(obj, obj_type, c_type) ((c_type *)(obj))
-#endif
-
-#define RTGUI_OBJECT_CHECK_TYPE(_obj, _type) \
- (rtgui_type_inherits_from(((rtgui_object_t *)(_obj))->type, (_type)))
-
-DECLARE_CLASS_TYPE(object);
-/** Gets the type of an object */
-#define RTGUI_OBJECT_TYPE RTGUI_TYPE(object)
-/** Casts the object to an rtgui_object_t */
-#define RTGUI_OBJECT(obj) (RTGUI_OBJECT_CAST((obj), RTGUI_OBJECT_TYPE, struct rtgui_object))
-/** Checks if the object is an rtgui_Object */
-#define RTGUI_IS_OBJECT(obj) (RTGUI_OBJECT_CHECK_TYPE((obj), RTGUI_OBJECT_TYPE))
-
-enum rtgui_object_flag
-{
- RTGUI_OBJECT_FLAG_NONE = 0x0000,
- RTGUI_OBJECT_FLAG_STATIC = 0x0001,
- RTGUI_OBJECT_FLAG_DISABLED = 0x0002,
- /* When an object is created, it's flag is set to valid. When an object is
- * deleted, the valid bits will be cleared. */
- RTGUI_OBJECT_FLAG_VALID = 0xAB00,
-};
-
-/* rtgui base object */
-struct rtgui_object
-{
- /* object type */
- const rtgui_type_t *type;
-
- /* the event handler */
- rtgui_event_handler_ptr event_handler;
-
- enum rtgui_object_flag flag;
-
- rt_uint32_t id;
-};
-
-rtgui_object_t *rtgui_object_create(const rtgui_type_t *object_type);
-void rtgui_object_destroy(rtgui_object_t *object);
-
-/* set the event handler of object */
-void rtgui_object_set_event_handler(struct rtgui_object *object, rtgui_event_handler_ptr handler);
-/* object default event handler */
-rt_bool_t rtgui_object_event_handler(struct rtgui_object *object, struct rtgui_event *event);
-/* helper micro. widget event handlers could use this. */
-#define RTGUI_WIDGET_EVENT_HANDLER_PREPARE \
- struct rtgui_widget *widget; \
- RT_ASSERT(object != RT_NULL); \
- RT_ASSERT(event != RT_NULL); \
- widget = RTGUI_WIDGET(object); \
- /* supress compiler warning */ \
- widget = widget;
-
-/** handle @param event on @param object's own event handler
- *
- * If the @param object does not have an event handler, which means the object
- * does not interested in any event, it will return RT_FALSE. Otherwise, the
- * return code of that handler is returned.
- */
-rt_inline rt_bool_t rtgui_object_handle(struct rtgui_object *object, struct rtgui_event *event)
-{
- if (object->event_handler)
- return object->event_handler(object, event);
- return RT_FALSE;
-}
-
-rtgui_object_t *rtgui_object_check_cast(rtgui_object_t *object, const rtgui_type_t *type, const char *func, int line);
-const rtgui_type_t *rtgui_object_object_type_get(rtgui_object_t *object);
-
-void rtgui_object_set_id(struct rtgui_object *obj, rt_uint32_t id);
-rt_uint32_t rtgui_object_get_id(struct rtgui_object *obj);
-struct rtgui_object* rtgui_get_object(struct rtgui_app *app, rt_uint32_t id);
-struct rtgui_object* rtgui_get_self_object(rt_uint32_t id);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
diff --git a/components/gui/include/rtgui/rtgui_server.h b/components/gui/include/rtgui/rtgui_server.h
deleted file mode 100644
index 6d73bc5b66..0000000000
--- a/components/gui/include/rtgui/rtgui_server.h
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * File : rtgui_server.h
- * This file is part of RT-Thread GUI Engine
- * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Change Logs:
- * Date Author Notes
- * 2009-10-04 Bernard first version
- */
-#ifndef __RTGUI_SERVER_H__
-#define __RTGUI_SERVER_H__
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <rtservice.h>
-#include <rtgui/list.h>
-
-/* RTGUI server definitions */
-
-/* top window definitions in server */
-enum rtgui_topwin_flag
-{
- WINTITLE_INIT = 0x00,
- WINTITLE_ACTIVATE = 0x01,
- WINTITLE_NOFOCUS = 0x02,
- /* window is hidden by default */
- WINTITLE_SHOWN = 0x04,
- /* window is modaled by other window */
- WINTITLE_MODALED = 0x08,
- /* window is modaling other window */
- WINTITLE_MODALING = 0x100,
- WINTITLE_ONTOP = 0x200,
- WINTITLE_ONBTM = 0x400,
-};
-
-struct rtgui_topwin
-{
- /* the window flag */
- enum rtgui_topwin_flag flag;
- /* event mask */
- rt_uint32_t mask;
-
- struct rtgui_wintitle *title;
-
- /* the window id */
- struct rtgui_win *wid;
-
- /* which app I belong */
- struct rtgui_app *app;
-
- /* the extent information */
- rtgui_rect_t extent;
-
- struct rtgui_topwin *parent;
-
- /* we need to iterate the topwin list with usual order(get target window)
- * or reversely(painting). So it's better to use a double linked list */
- rt_list_t list;
- rt_list_t child_list;
-
- /* the monitor rect list */
- rtgui_list_t monitor_list;
-};
-
-/* top win manager init */
-void rtgui_topwin_init(void);
-void rtgui_server_init(void);
-
-void rtgui_server_install_show_win_hook(void (*hk)(void));
-void rtgui_server_install_act_win_hook(void (*hk)(void));
-
-/* post an event to server */
-rt_err_t rtgui_server_post_event(struct rtgui_event *event, rt_size_t size);
-rt_err_t rtgui_server_post_event_sync(struct rtgui_event *event, rt_size_t size);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/components/gui/include/rtgui/rtgui_system.h b/components/gui/include/rtgui/rtgui_system.h
deleted file mode 100644
index 14d7351e35..0000000000
--- a/components/gui/include/rtgui/rtgui_system.h
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * File : rtgui_system.h
- * This file is part of RT-Thread GUI Engine
- * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Change Logs:
- * Date Author Notes
- * 2009-10-04 Bernard first version
- */
-#ifndef __RTGUI_SYSTEM_H__
-#define __RTGUI_SYSTEM_H__
-
-#include <rtthread.h>
-#include <rtgui/rtgui.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-struct rtgui_dc;
-struct rtgui_event;
-struct rtgui_widget;
-
-struct rtgui_timer;
-typedef void (*rtgui_timeout_func)(struct rtgui_timer *timer, void *parameter);
-
-enum rtgui_timer_state
-{
- RTGUI_TIMER_ST_INIT,
- RTGUI_TIMER_ST_RUNNING,
- RTGUI_TIMER_ST_DESTROY_PENDING,
-};
-
-struct rtgui_timer
-{
- /* the rtgui application it runs on */
- struct rtgui_app* app;
- /* rt timer */
- struct rt_timer timer;
- /* How many events are pending on the queue. */
- int pending_cnt;
- enum rtgui_timer_state state;
-
- /* timeout function and user data */
- rtgui_timeout_func timeout;
- void *user_data;
-};
-typedef struct rtgui_timer rtgui_timer_t;
-
-rtgui_timer_t *rtgui_timer_create(rt_int32_t time, rt_base_t flag, rtgui_timeout_func timeout, void *parameter);
-void rtgui_timer_destory(rtgui_timer_t *timer);
-
-void rtgui_timer_set_timeout(rtgui_timer_t *timer, rt_int32_t time);
-void rtgui_timer_start(rtgui_timer_t *timer);
-void rtgui_timer_stop(rtgui_timer_t *timer);
-
-/* rtgui system initialization function */
-int rtgui_system_server_init(void);
-
-void *rtgui_malloc(rt_size_t size);
-void rtgui_free(void *ptr);
-void *rtgui_realloc(void *ptr, rt_size_t size);
-
-#ifdef _WIN32_NATIVE
-#define rtgui_enter_critical()
-#define rtgui_exit_critical()
-#else
-#define rtgui_enter_critical rt_enter_critical
-#define rtgui_exit_critical rt_exit_critical
-#endif
-
-struct rtgui_app* rtgui_get_server(void);
-void rtgui_set_mainwin_rect(struct rtgui_rect *rect);
-void rtgui_get_mainwin_rect(struct rtgui_rect *rect);
-void rtgui_get_screen_rect(struct rtgui_rect *rect);
-
-void rtgui_screen_lock(rt_int32_t timeout);
-void rtgui_screen_unlock(void);
-int rtgui_screen_lock_freeze(void);
-void rtgui_screen_lock_thaw(int value);
-
-struct rtgui_event;
-rt_err_t rtgui_send(struct rtgui_app* app, struct rtgui_event *event, rt_size_t event_size);
-rt_err_t rtgui_send_urgent(struct rtgui_app* app, struct rtgui_event *event, rt_size_t event_size);
-rt_err_t rtgui_send_sync(struct rtgui_app* app, struct rtgui_event *event, rt_size_t event_size);
-rt_err_t rtgui_ack(struct rtgui_event *event, rt_int32_t status);
-rt_err_t rtgui_recv(struct rtgui_event *event, rt_size_t event_size, rt_int32_t timeout);
-rt_err_t rtgui_recv_filter(rt_uint32_t type, struct rtgui_event *event, rt_size_t event_size);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/components/gui/include/rtgui/tree.h b/components/gui/include/rtgui/tree.h
deleted file mode 100644
index 58653fb00d..0000000000
--- a/components/gui/include/rtgui/tree.h
+++ /dev/null
@@ -1,748 +0,0 @@
-/* $NetBSD: tree.h,v 1.8 2004/03/28 19:38:30 provos Exp $ */
-/* $OpenBSD: tree.h,v 1.7 2002/10/17 21:51:54 art Exp $ */
-/* $FreeBSD$ */
-
-/*-
- * Copyright 2002 Niels Provos <[email protected]>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef _SYS_TREE_H_
-#define _SYS_TREE_H_
-
-#ifndef NULL
-#define NULL RT_NULL
-#endif
-// #include <sys/cdefs.h>
-
-/*
- * This file defines data structures for different types of trees:
- * splay trees and red-black trees.
- *
- * A splay tree is a self-organizing data structure. Every operation
- * on the tree causes a splay to happen. The splay moves the requested
- * node to the root of the tree and partly rebalances it.
- *
- * This has the benefit that request locality causes faster lookups as
- * the requested nodes move to the top of the tree. On the other hand,
- * every lookup causes memory writes.
- *
- * The Balance Theorem bounds the total access time for m operations
- * and n inserts on an initially empty tree as O((m + n)lg n). The
- * amortized cost for a sequence of m accesses to a splay tree is O(lg n);
- *
- * A red-black tree is a binary search tree with the node color as an
- * extra attribute. It fulfills a set of conditions:
- * - every search path from the root to a leaf consists of the
- * same number of black nodes,
- * - each red node (except for the root) has a black parent,
- * - each leaf node is black.
- *
- * Every operation on a red-black tree is bounded as O(lg n).
- * The maximum height of a red-black tree is 2lg (n+1).
- */
-
-#define SPLAY_HEAD(name, type) \
-struct name { \
- struct type *sph_root; /* root of the tree */ \
-}
-
-#define SPLAY_INITIALIZER(root) \
- { NULL }
-
-#define SPLAY_INIT(root) do { \
- (root)->sph_root = NULL; \
-} while (/*CONSTCOND*/ 0)
-
-#define SPLAY_ENTRY(type) \
-struct { \
- struct type *spe_left; /* left element */ \
- struct type *spe_right; /* right element */ \
-}
-
-#define SPLAY_LEFT(elm, field) (elm)->field.spe_left
-#define SPLAY_RIGHT(elm, field) (elm)->field.spe_right
-#define SPLAY_ROOT(head) (head)->sph_root
-#define SPLAY_EMPTY(head) (SPLAY_ROOT(head) == NULL)
-
-/* SPLAY_ROTATE_{LEFT,RIGHT} expect that tmp hold SPLAY_{RIGHT,LEFT} */
-#define SPLAY_ROTATE_RIGHT(head, tmp, field) do { \
- SPLAY_LEFT((head)->sph_root, field) = SPLAY_RIGHT(tmp, field); \
- SPLAY_RIGHT(tmp, field) = (head)->sph_root; \
- (head)->sph_root = tmp; \
-} while (/*CONSTCOND*/ 0)
-
-#define SPLAY_ROTATE_LEFT(head, tmp, field) do { \
- SPLAY_RIGHT((head)->sph_root, field) = SPLAY_LEFT(tmp, field); \
- SPLAY_LEFT(tmp, field) = (head)->sph_root; \
- (head)->sph_root = tmp; \
-} while (/*CONSTCOND*/ 0)
-
-#define SPLAY_LINKLEFT(head, tmp, field) do { \
- SPLAY_LEFT(tmp, field) = (head)->sph_root; \
- tmp = (head)->sph_root; \
- (head)->sph_root = SPLAY_LEFT((head)->sph_root, field); \
-} while (/*CONSTCOND*/ 0)
-
-#define SPLAY_LINKRIGHT(head, tmp, field) do { \
- SPLAY_RIGHT(tmp, field) = (head)->sph_root; \
- tmp = (head)->sph_root; \
- (head)->sph_root = SPLAY_RIGHT((head)->sph_root, field); \
-} while (/*CONSTCOND*/ 0)
-
-#define SPLAY_ASSEMBLE(head, node, left, right, field) do { \
- SPLAY_RIGHT(left, field) = SPLAY_LEFT((head)->sph_root, field); \
- SPLAY_LEFT(right, field) = SPLAY_RIGHT((head)->sph_root, field);\
- SPLAY_LEFT((head)->sph_root, field) = SPLAY_RIGHT(node, field); \
- SPLAY_RIGHT((head)->sph_root, field) = SPLAY_LEFT(node, field); \
-} while (/*CONSTCOND*/ 0)
-
-/* Generates prototypes and inline functions */
-
-#define SPLAY_PROTOTYPE(name, type, field, cmp) \
-void name##_SPLAY(struct name *, struct type *); \
-void name##_SPLAY_MINMAX(struct name *, int); \
-struct type *name##_SPLAY_INSERT(struct name *, struct type *); \
-struct type *name##_SPLAY_REMOVE(struct name *, struct type *); \
- \
-/* Finds the node with the same key as elm */ \
-rt_inline struct type * \
-name##_SPLAY_FIND(struct name *head, struct type *elm) \
-{ \
- if (SPLAY_EMPTY(head)) \
- return(NULL); \
- name##_SPLAY(head, elm); \
- if ((cmp)(elm, (head)->sph_root) == 0) \
- return (head->sph_root); \
- return (NULL); \
-} \
- \
-rt_inline struct type * \
-name##_SPLAY_NEXT(struct name *head, struct type *elm) \
-{ \
- name##_SPLAY(head, elm); \
- if (SPLAY_RIGHT(elm, field) != NULL) { \
- elm = SPLAY_RIGHT(elm, field); \
- while (SPLAY_LEFT(elm, field) != NULL) { \
- elm = SPLAY_LEFT(elm, field); \
- } \
- } else \
- elm = NULL; \
- return (elm); \
-} \
- \
-rt_inline struct type * \
-name##_SPLAY_MIN_MAX(struct name *head, int val) \
-{ \
- name##_SPLAY_MINMAX(head, val); \
- return (SPLAY_ROOT(head)); \
-}
-
-/* Main splay operation.
- * Moves node close to the key of elm to top
- */
-#define SPLAY_GENERATE(name, type, field, cmp) \
-struct type * \
-name##_SPLAY_INSERT(struct name *head, struct type *elm) \
-{ \
- if (SPLAY_EMPTY(head)) { \
- SPLAY_LEFT(elm, field) = SPLAY_RIGHT(elm, field) = NULL; \
- } else { \
- int __comp; \
- name##_SPLAY(head, elm); \
- __comp = (cmp)(elm, (head)->sph_root); \
- if(__comp < 0) { \
- SPLAY_LEFT(elm, field) = SPLAY_LEFT((head)->sph_root, field);\
- SPLAY_RIGHT(elm, field) = (head)->sph_root; \
- SPLAY_LEFT((head)->sph_root, field) = NULL; \
- } else if (__comp > 0) { \
- SPLAY_RIGHT(elm, field) = SPLAY_RIGHT((head)->sph_root, field);\
- SPLAY_LEFT(elm, field) = (head)->sph_root; \
- SPLAY_RIGHT((head)->sph_root, field) = NULL; \
- } else \
- return ((head)->sph_root); \
- } \
- (head)->sph_root = (elm); \
- return (NULL); \
-} \
- \
-struct type * \
-name##_SPLAY_REMOVE(struct name *head, struct type *elm) \
-{ \
- struct type *__tmp; \
- if (SPLAY_EMPTY(head)) \
- return (NULL); \
- name##_SPLAY(head, elm); \
- if ((cmp)(elm, (head)->sph_root) == 0) { \
- if (SPLAY_LEFT((head)->sph_root, field) == NULL) { \
- (head)->sph_root = SPLAY_RIGHT((head)->sph_root, field);\
- } else { \
- __tmp = SPLAY_RIGHT((head)->sph_root, field); \
- (head)->sph_root = SPLAY_LEFT((head)->sph_root, field);\
- name##_SPLAY(head, elm); \
- SPLAY_RIGHT((head)->sph_root, field) = __tmp; \
- } \
- return (elm); \
- } \
- return (NULL); \
-} \
- \
-void \
-name##_SPLAY(struct name *head, struct type *elm) \
-{ \
- struct type __node, *__left, *__right, *__tmp; \
- int __comp; \
-\
- SPLAY_LEFT(&__node, field) = SPLAY_RIGHT(&__node, field) = NULL;\
- __left = __right = &__node; \
-\
- while ((__comp = (cmp)(elm, (head)->sph_root)) != 0) { \
- if (__comp < 0) { \
- __tmp = SPLAY_LEFT((head)->sph_root, field); \
- if (__tmp == NULL) \
- break; \
- if ((cmp)(elm, __tmp) < 0){ \
- SPLAY_ROTATE_RIGHT(head, __tmp, field); \
- if (SPLAY_LEFT((head)->sph_root, field) == NULL)\
- break; \
- } \
- SPLAY_LINKLEFT(head, __right, field); \
- } else if (__comp > 0) { \
- __tmp = SPLAY_RIGHT((head)->sph_root, field); \
- if (__tmp == NULL) \
- break; \
- if ((cmp)(elm, __tmp) > 0){ \
- SPLAY_ROTATE_LEFT(head, __tmp, field); \
- if (SPLAY_RIGHT((head)->sph_root, field) == NULL)\
- break; \
- } \
- SPLAY_LINKRIGHT(head, __left, field); \
- } \
- } \
- SPLAY_ASSEMBLE(head, &__node, __left, __right, field); \
-} \
- \
-/* Splay with either the minimum or the maximum element \
- * Used to find minimum or maximum element in tree. \
- */ \
-void name##_SPLAY_MINMAX(struct name *head, int __comp) \
-{ \
- struct type __node, *__left, *__right, *__tmp; \
-\
- SPLAY_LEFT(&__node, field) = SPLAY_RIGHT(&__node, field) = NULL;\
- __left = __right = &__node; \
-\
- while (1) { \
- if (__comp < 0) { \
- __tmp = SPLAY_LEFT((head)->sph_root, field); \
- if (__tmp == NULL) \
- break; \
- if (__comp < 0){ \
- SPLAY_ROTATE_RIGHT(head, __tmp, field); \
- if (SPLAY_LEFT((head)->sph_root, field) == NULL)\
- break; \
- } \
- SPLAY_LINKLEFT(head, __right, field); \
- } else if (__comp > 0) { \
- __tmp = SPLAY_RIGHT((head)->sph_root, field); \
- if (__tmp == NULL) \
- break; \
- if (__comp > 0) { \
- SPLAY_ROTATE_LEFT(head, __tmp, field); \
- if (SPLAY_RIGHT((head)->sph_root, field) == NULL)\
- break; \
- } \
- SPLAY_LINKRIGHT(head, __left, field); \
- } \
- } \
- SPLAY_ASSEMBLE(head, &__node, __left, __right, field); \
-}
-
-#define SPLAY_NEGINF -1
-#define SPLAY_INF 1
-
-#define SPLAY_INSERT(name, x, y) name##_SPLAY_INSERT(x, y)
-#define SPLAY_REMOVE(name, x, y) name##_SPLAY_REMOVE(x, y)
-#define SPLAY_FIND(name, x, y) name##_SPLAY_FIND(x, y)
-#define SPLAY_NEXT(name, x, y) name##_SPLAY_NEXT(x, y)
-#define SPLAY_MIN(name, x) (SPLAY_EMPTY(x) ? NULL \
- : name##_SPLAY_MIN_MAX(x, SPLAY_NEGINF))
-#define SPLAY_MAX(name, x) (SPLAY_EMPTY(x) ? NULL \
- : name##_SPLAY_MIN_MAX(x, SPLAY_INF))
-
-#define SPLAY_FOREACH(x, name, head) \
- for ((x) = SPLAY_MIN(name, head); \
- (x) != NULL; \
- (x) = SPLAY_NEXT(name, head, x))
-
-/* Macros that define a red-black tree */
-#define RB_HEAD(name, type) \
-struct name { \
- struct type *rbh_root; /* root of the tree */ \
-}
-
-#define RB_INITIALIZER(root) \
- { NULL }
-
-#define RB_INIT(root) do { \
- (root)->rbh_root = NULL; \
-} while (/*CONSTCOND*/ 0)
-
-#define RB_BLACK 0
-#define RB_RED 1
-#define RB_ENTRY(type) \
-struct { \
- struct type *rbe_left; /* left element */ \
- struct type *rbe_right; /* right element */ \
- struct type *rbe_parent; /* parent element */ \
- int rbe_color; /* node color */ \
-}
-
-#define RB_LEFT(elm, field) (elm)->field.rbe_left
-#define RB_RIGHT(elm, field) (elm)->field.rbe_right
-#define RB_PARENT(elm, field) (elm)->field.rbe_parent
-#define RB_COLOR(elm, field) (elm)->field.rbe_color
-#define RB_ROOT(head) (head)->rbh_root
-#define RB_EMPTY(head) (RB_ROOT(head) == NULL)
-
-#define RB_SET(elm, parent, field) do { \
- RB_PARENT(elm, field) = parent; \
- RB_LEFT(elm, field) = RB_RIGHT(elm, field) = NULL; \
- RB_COLOR(elm, field) = RB_RED; \
-} while (/*CONSTCOND*/ 0)
-
-#define RB_SET_BLACKRED(black, red, field) do { \
- RB_COLOR(black, field) = RB_BLACK; \
- RB_COLOR(red, field) = RB_RED; \
-} while (/*CONSTCOND*/ 0)
-
-#ifndef RB_AUGMENT
-#define RB_AUGMENT(x) do {} while (0)
-#endif
-
-#define RB_ROTATE_LEFT(head, elm, tmp, field) do { \
- (tmp) = RB_RIGHT(elm, field); \
- if ((RB_RIGHT(elm, field) = RB_LEFT(tmp, field)) != NULL) { \
- RB_PARENT(RB_LEFT(tmp, field), field) = (elm); \
- } \
- RB_AUGMENT(elm); \
- if ((RB_PARENT(tmp, field) = RB_PARENT(elm, field)) != NULL) { \
- if ((elm) == RB_LEFT(RB_PARENT(elm, field), field)) \
- RB_LEFT(RB_PARENT(elm, field), field) = (tmp); \
- else \
- RB_RIGHT(RB_PARENT(elm, field), field) = (tmp); \
- } else \
- (head)->rbh_root = (tmp); \
- RB_LEFT(tmp, field) = (elm); \
- RB_PARENT(elm, field) = (tmp); \
- RB_AUGMENT(tmp); \
- if ((RB_PARENT(tmp, field))) \
- RB_AUGMENT(RB_PARENT(tmp, field)); \
-} while (/*CONSTCOND*/ 0)
-
-#define RB_ROTATE_RIGHT(head, elm, tmp, field) do { \
- (tmp) = RB_LEFT(elm, field); \
- if ((RB_LEFT(elm, field) = RB_RIGHT(tmp, field)) != NULL) { \
- RB_PARENT(RB_RIGHT(tmp, field), field) = (elm); \
- } \
- RB_AUGMENT(elm); \
- if ((RB_PARENT(tmp, field) = RB_PARENT(elm, field)) != NULL) { \
- if ((elm) == RB_LEFT(RB_PARENT(elm, field), field)) \
- RB_LEFT(RB_PARENT(elm, field), field) = (tmp); \
- else \
- RB_RIGHT(RB_PARENT(elm, field), field) = (tmp); \
- } else \
- (head)->rbh_root = (tmp); \
- RB_RIGHT(tmp, field) = (elm); \
- RB_PARENT(elm, field) = (tmp); \
- RB_AUGMENT(tmp); \
- if ((RB_PARENT(tmp, field))) \
- RB_AUGMENT(RB_PARENT(tmp, field)); \
-} while (/*CONSTCOND*/ 0)
-
-/* Generates prototypes and inline functions */
-#define RB_PROTOTYPE(name, type, field, cmp) \
- RB_PROTOTYPE_INTERNAL(name, type, field, cmp,)
-#define RB_PROTOTYPE_STATIC(name, type, field, cmp) \
- RB_PROTOTYPE_INTERNAL(name, type, field, cmp, __unused static)
-#define RB_PROTOTYPE_INTERNAL(name, type, field, cmp, attr) \
-attr void name##_RB_INSERT_COLOR(struct name *, struct type *); \
-attr void name##_RB_REMOVE_COLOR(struct name *, struct type *, struct type *);\
-attr struct type *name##_RB_REMOVE(struct name *, struct type *); \
-attr struct type *name##_RB_INSERT(struct name *, struct type *); \
-attr struct type *name##_RB_FIND(struct name *, struct type *); \
-attr struct type *name##_RB_NFIND(struct name *, struct type *); \
-attr struct type *name##_RB_NEXT(struct type *); \
-attr struct type *name##_RB_PREV(struct type *); \
-attr struct type *name##_RB_MINMAX(struct name *, int); \
- \
-
-/* Main rb operation.
- * Moves node close to the key of elm to top
- */
-#define RB_GENERATE(name, type, field, cmp) \
- RB_GENERATE_INTERNAL(name, type, field, cmp,)
-#define RB_GENERATE_STATIC(name, type, field, cmp) \
- RB_GENERATE_INTERNAL(name, type, field, cmp, __unused static)
-#define RB_GENERATE_INTERNAL(name, type, field, cmp, attr) \
-attr void \
-name##_RB_INSERT_COLOR(struct name *head, struct type *elm) \
-{ \
- struct type *parent, *gparent, *tmp; \
- while ((parent = RB_PARENT(elm, field)) != NULL && \
- RB_COLOR(parent, field) == RB_RED) { \
- gparent = RB_PARENT(parent, field); \
- if (parent == RB_LEFT(gparent, field)) { \
- tmp = RB_RIGHT(gparent, field); \
- if (tmp && RB_COLOR(tmp, field) == RB_RED) { \
- RB_COLOR(tmp, field) = RB_BLACK; \
- RB_SET_BLACKRED(parent, gparent, field);\
- elm = gparent; \
- continue; \
- } \
- if (RB_RIGHT(parent, field) == elm) { \
- RB_ROTATE_LEFT(head, parent, tmp, field);\
- tmp = parent; \
- parent = elm; \
- elm = tmp; \
- } \
- RB_SET_BLACKRED(parent, gparent, field); \
- RB_ROTATE_RIGHT(head, gparent, tmp, field); \
- } else { \
- tmp = RB_LEFT(gparent, field); \
- if (tmp && RB_COLOR(tmp, field) == RB_RED) { \
- RB_COLOR(tmp, field) = RB_BLACK; \
- RB_SET_BLACKRED(parent, gparent, field);\
- elm = gparent; \
- continue; \
- } \
- if (RB_LEFT(parent, field) == elm) { \
- RB_ROTATE_RIGHT(head, parent, tmp, field);\
- tmp = parent; \
- parent = elm; \
- elm = tmp; \
- } \
- RB_SET_BLACKRED(parent, gparent, field); \
- RB_ROTATE_LEFT(head, gparent, tmp, field); \
- } \
- } \
- RB_COLOR(head->rbh_root, field) = RB_BLACK; \
-} \
- \
-attr void \
-name##_RB_REMOVE_COLOR(struct name *head, struct type *parent, struct type *elm) \
-{ \
- struct type *tmp; \
- while ((elm == NULL || RB_COLOR(elm, field) == RB_BLACK) && \
- elm != RB_ROOT(head)) { \
- if (RB_LEFT(parent, field) == elm) { \
- tmp = RB_RIGHT(parent, field); \
- if (RB_COLOR(tmp, field) == RB_RED) { \
- RB_SET_BLACKRED(tmp, parent, field); \
- RB_ROTATE_LEFT(head, parent, tmp, field);\
- tmp = RB_RIGHT(parent, field); \
- } \
- if ((RB_LEFT(tmp, field) == NULL || \
- RB_COLOR(RB_LEFT(tmp, field), field) == RB_BLACK) &&\
- (RB_RIGHT(tmp, field) == NULL || \
- RB_COLOR(RB_RIGHT(tmp, field), field) == RB_BLACK)) {\
- RB_COLOR(tmp, field) = RB_RED; \
- elm = parent; \
- parent = RB_PARENT(elm, field); \
- } else { \
- if (RB_RIGHT(tmp, field) == NULL || \
- RB_COLOR(RB_RIGHT(tmp, field), field) == RB_BLACK) {\
- struct type *oleft; \
- if ((oleft = RB_LEFT(tmp, field)) \
- != NULL) \
- RB_COLOR(oleft, field) = RB_BLACK;\
- RB_COLOR(tmp, field) = RB_RED; \
- RB_ROTATE_RIGHT(head, tmp, oleft, field);\
- tmp = RB_RIGHT(parent, field); \
- } \
- RB_COLOR(tmp, field) = RB_COLOR(parent, field);\
- RB_COLOR(parent, field) = RB_BLACK; \
- if (RB_RIGHT(tmp, field)) \
- RB_COLOR(RB_RIGHT(tmp, field), field) = RB_BLACK;\
- RB_ROTATE_LEFT(head, parent, tmp, field);\
- elm = RB_ROOT(head); \
- break; \
- } \
- } else { \
- tmp = RB_LEFT(parent, field); \
- if (RB_COLOR(tmp, field) == RB_RED) { \
- RB_SET_BLACKRED(tmp, parent, field); \
- RB_ROTATE_RIGHT(head, parent, tmp, field);\
- tmp = RB_LEFT(parent, field); \
- } \
- if ((RB_LEFT(tmp, field) == NULL || \
- RB_COLOR(RB_LEFT(tmp, field), field) == RB_BLACK) &&\
- (RB_RIGHT(tmp, field) == NULL || \
- RB_COLOR(RB_RIGHT(tmp, field), field) == RB_BLACK)) {\
- RB_COLOR(tmp, field) = RB_RED; \
- elm = parent; \
- parent = RB_PARENT(elm, field); \
- } else { \
- if (RB_LEFT(tmp, field) == NULL || \
- RB_COLOR(RB_LEFT(tmp, field), field) == RB_BLACK) {\
- struct type *oright; \
- if ((oright = RB_RIGHT(tmp, field)) \
- != NULL) \
- RB_COLOR(oright, field) = RB_BLACK;\
- RB_COLOR(tmp, field) = RB_RED; \
- RB_ROTATE_LEFT(head, tmp, oright, field);\
- tmp = RB_LEFT(parent, field); \
- } \
- RB_COLOR(tmp, field) = RB_COLOR(parent, field);\
- RB_COLOR(parent, field) = RB_BLACK; \
- if (RB_LEFT(tmp, field)) \
- RB_COLOR(RB_LEFT(tmp, field), field) = RB_BLACK;\
- RB_ROTATE_RIGHT(head, parent, tmp, field);\
- elm = RB_ROOT(head); \
- break; \
- } \
- } \
- } \
- if (elm) \
- RB_COLOR(elm, field) = RB_BLACK; \
-} \
- \
-attr struct type * \
-name##_RB_REMOVE(struct name *head, struct type *elm) \
-{ \
- struct type *child, *parent, *old = elm; \
- int color; \
- if (RB_LEFT(elm, field) == NULL) \
- child = RB_RIGHT(elm, field); \
- else if (RB_RIGHT(elm, field) == NULL) \
- child = RB_LEFT(elm, field); \
- else { \
- struct type *left; \
- elm = RB_RIGHT(elm, field); \
- while ((left = RB_LEFT(elm, field)) != NULL) \
- elm = left; \
- child = RB_RIGHT(elm, field); \
- parent = RB_PARENT(elm, field); \
- color = RB_COLOR(elm, field); \
- if (child) \
- RB_PARENT(child, field) = parent; \
- if (parent) { \
- if (RB_LEFT(parent, field) == elm) \
- RB_LEFT(parent, field) = child; \
- else \
- RB_RIGHT(parent, field) = child; \
- RB_AUGMENT(parent); \
- } else \
- RB_ROOT(head) = child; \
- if (RB_PARENT(elm, field) == old) \
- parent = elm; \
- (elm)->field = (old)->field; \
- if (RB_PARENT(old, field)) { \
- if (RB_LEFT(RB_PARENT(old, field), field) == old)\
- RB_LEFT(RB_PARENT(old, field), field) = elm;\
- else \
- RB_RIGHT(RB_PARENT(old, field), field) = elm;\
- RB_AUGMENT(RB_PARENT(old, field)); \
- } else \
- RB_ROOT(head) = elm; \
- RB_PARENT(RB_LEFT(old, field), field) = elm; \
- if (RB_RIGHT(old, field)) \
- RB_PARENT(RB_RIGHT(old, field), field) = elm; \
- if (parent) { \
- left = parent; \
- do { \
- RB_AUGMENT(left); \
- } while ((left = RB_PARENT(left, field)) != NULL); \
- } \
- goto color; \
- } \
- parent = RB_PARENT(elm, field); \
- color = RB_COLOR(elm, field); \
- if (child) \
- RB_PARENT(child, field) = parent; \
- if (parent) { \
- if (RB_LEFT(parent, field) == elm) \
- RB_LEFT(parent, field) = child; \
- else \
- RB_RIGHT(parent, field) = child; \
- RB_AUGMENT(parent); \
- } else \
- RB_ROOT(head) = child; \
-color: \
- if (color == RB_BLACK) \
- name##_RB_REMOVE_COLOR(head, parent, child); \
- return (old); \
-} \
- \
-/* Inserts a node into the RB tree */ \
-attr struct type * \
-name##_RB_INSERT(struct name *head, struct type *elm) \
-{ \
- struct type *tmp; \
- struct type *parent = NULL; \
- int comp = 0; \
- tmp = RB_ROOT(head); \
- while (tmp) { \
- parent = tmp; \
- comp = (cmp)(elm, parent); \
- if (comp < 0) \
- tmp = RB_LEFT(tmp, field); \
- else if (comp > 0) \
- tmp = RB_RIGHT(tmp, field); \
- else \
- return (tmp); \
- } \
- RB_SET(elm, parent, field); \
- if (parent != NULL) { \
- if (comp < 0) \
- RB_LEFT(parent, field) = elm; \
- else \
- RB_RIGHT(parent, field) = elm; \
- RB_AUGMENT(parent); \
- } else \
- RB_ROOT(head) = elm; \
- name##_RB_INSERT_COLOR(head, elm); \
- return (NULL); \
-} \
- \
-/* Finds the node with the same key as elm */ \
-attr struct type * \
-name##_RB_FIND(struct name *head, struct type *elm) \
-{ \
- struct type *tmp = RB_ROOT(head); \
- int comp; \
- while (tmp) { \
- comp = cmp(elm, tmp); \
- if (comp < 0) \
- tmp = RB_LEFT(tmp, field); \
- else if (comp > 0) \
- tmp = RB_RIGHT(tmp, field); \
- else \
- return (tmp); \
- } \
- return (NULL); \
-} \
- \
-/* Finds the first node greater than or equal to the search key */ \
-attr struct type * \
-name##_RB_NFIND(struct name *head, struct type *elm) \
-{ \
- struct type *tmp = RB_ROOT(head); \
- struct type *res = NULL; \
- int comp; \
- while (tmp) { \
- comp = cmp(elm, tmp); \
- if (comp < 0) { \
- res = tmp; \
- tmp = RB_LEFT(tmp, field); \
- } \
- else if (comp > 0) \
- tmp = RB_RIGHT(tmp, field); \
- else \
- return (tmp); \
- } \
- return (res); \
-} \
- \
-/* ARGSUSED */ \
-attr struct type * \
-name##_RB_NEXT(struct type *elm) \
-{ \
- if (RB_RIGHT(elm, field)) { \
- elm = RB_RIGHT(elm, field); \
- while (RB_LEFT(elm, field)) \
- elm = RB_LEFT(elm, field); \
- } else { \
- if (RB_PARENT(elm, field) && \
- (elm == RB_LEFT(RB_PARENT(elm, field), field))) \
- elm = RB_PARENT(elm, field); \
- else { \
- while (RB_PARENT(elm, field) && \
- (elm == RB_RIGHT(RB_PARENT(elm, field), field)))\
- elm = RB_PARENT(elm, field); \
- elm = RB_PARENT(elm, field); \
- } \
- } \
- return (elm); \
-} \
- \
-/* ARGSUSED */ \
-attr struct type * \
-name##_RB_PREV(struct type *elm) \
-{ \
- if (RB_LEFT(elm, field)) { \
- elm = RB_LEFT(elm, field); \
- while (RB_RIGHT(elm, field)) \
- elm = RB_RIGHT(elm, field); \
- } else { \
- if (RB_PARENT(elm, field) && \
- (elm == RB_RIGHT(RB_PARENT(elm, field), field))) \
- elm = RB_PARENT(elm, field); \
- else { \
- while (RB_PARENT(elm, field) && \
- (elm == RB_LEFT(RB_PARENT(elm, field), field)))\
- elm = RB_PARENT(elm, field); \
- elm = RB_PARENT(elm, field); \
- } \
- } \
- return (elm); \
-} \
- \
-attr struct type * \
-name##_RB_MINMAX(struct name *head, int val) \
-{ \
- struct type *tmp = RB_ROOT(head); \
- struct type *parent = NULL; \
- while (tmp) { \
- parent = tmp; \
- if (val < 0) \
- tmp = RB_LEFT(tmp, field); \
- else \
- tmp = RB_RIGHT(tmp, field); \
- } \
- return (parent); \
-}
-
-#define RB_NEGINF -1
-#define RB_INF 1
-
-#define RB_INSERT(name, x, y) name##_RB_INSERT(x, y)
-#define RB_REMOVE(name, x, y) name##_RB_REMOVE(x, y)
-#define RB_FIND(name, x, y) name##_RB_FIND(x, y)
-#define RB_NFIND(name, x, y) name##_RB_NFIND(x, y)
-#define RB_NEXT(name, x, y) name##_RB_NEXT(y)
-#define RB_PREV(name, x, y) name##_RB_PREV(y)
-#define RB_MIN(name, x) name##_RB_MINMAX(x, RB_NEGINF)
-#define RB_MAX(name, x) name##_RB_MINMAX(x, RB_INF)
-
-#define RB_FOREACH(x, name, head) \
- for ((x) = RB_MIN(name, head); \
- (x) != NULL; \
- (x) = name##_RB_NEXT(x))
-
-#define RB_FOREACH_REVERSE(x, name, head) \
- for ((x) = RB_MAX(name, head); \
- (x) != NULL; \
- (x) = name##_RB_PREV(x))
-
-#endif /* _SYS_TREE_H_ */
diff --git a/components/gui/include/rtgui/widgets/box.h b/components/gui/include/rtgui/widgets/box.h
deleted file mode 100644
index e4ea354478..0000000000
--- a/components/gui/include/rtgui/widgets/box.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * File : box.h
- * This file is part of RT-Thread GUI Engine
- * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Change Logs:
- * Date Author Notes
- * 2009-10-16 Bernard first version
- */
-#ifndef __RTGUI_BOX_H__
-#define __RTGUI_BOX_H__
-
-#include <rtgui/rtgui.h>
-#include <rtgui/widgets/widget.h>
-#include <rtgui/widgets/container.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-DECLARE_CLASS_TYPE(box);
-
-/** Gets the type of a box */
-#define RTGUI_BOX_TYPE (RTGUI_TYPE(box))
-/** Casts the object to an rtgui_box */
-#define RTGUI_BOX(obj) (RTGUI_OBJECT_CAST((obj), RTGUI_BOX_TYPE, rtgui_box_t))
-/** Checks if the object is an rtgui_box */
-#define RTGUI_IS_BOX(obj) (RTGUI_OBJECT_CHECK_TYPE((obj), RTGUI_BOX_TYPE))
-
-struct rtgui_box
-{
- struct rtgui_object parent;
-
- rt_uint16_t orient;
- rt_uint16_t border_size;
-
- struct rtgui_container *container;
-};
-typedef struct rtgui_box rtgui_box_t;
-
-struct rtgui_box *rtgui_box_create(int orientation, int border_size);
-void rtgui_box_destroy(struct rtgui_box *box);
-
-void rtgui_box_layout(rtgui_box_t *box);
-void rtgui_box_layout_rect(rtgui_box_t *box, struct rtgui_rect *rect);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/components/gui/include/rtgui/widgets/container.h b/components/gui/include/rtgui/widgets/container.h
deleted file mode 100644
index c45facca2d..0000000000
--- a/components/gui/include/rtgui/widgets/container.h
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * File : container.h
- * This file is part of RT-Thread GUI Engine
- * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Change Logs:
- * Date Author Notes
- * 2009-10-16 Bernard first version
- */
-#ifndef __RTGUI_CONTAINER_H__
-#define __RTGUI_CONTAINER_H__
-
-#include <rtgui/widgets/widget.h>
-#include <rtgui/widgets/box.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-DECLARE_CLASS_TYPE(container);
-/** Gets the type of a container */
-#define RTGUI_CONTAINER_TYPE (RTGUI_TYPE(container))
-/** Casts the object to an rtgui_container */
-#define RTGUI_CONTAINER(obj) (RTGUI_OBJECT_CAST((obj), RTGUI_CONTAINER_TYPE, rtgui_container_t))
-/** Checks if the object is an rtgui_container */
-#define RTGUI_IS_CONTAINER(obj) (RTGUI_OBJECT_CHECK_TYPE((obj), RTGUI_CONTAINER_TYPE))
-
-/*
- * the container widget
- */
-struct rtgui_container
-{
- struct rtgui_widget parent;
-
- /* layout box */
- struct rtgui_box *layout_box;
-
- rtgui_list_t children;
-};
-typedef struct rtgui_container rtgui_container_t;
-
-rtgui_container_t *rtgui_container_create(void);
-void rtgui_container_destroy(rtgui_container_t *container);
-
-rt_bool_t rtgui_container_event_handler(struct rtgui_object *widget, struct rtgui_event *event);
-
-/* set layout box */
-void rtgui_container_set_box(struct rtgui_container *container, struct rtgui_box *box);
-void rtgui_container_layout(struct rtgui_container *container);
-
-void rtgui_container_add_child(rtgui_container_t *container, rtgui_widget_t *child);
-void rtgui_container_remove_child(rtgui_container_t *container, rtgui_widget_t *child);
-void rtgui_container_destroy_children(rtgui_container_t *container);
-rtgui_widget_t *rtgui_container_get_first_child(rtgui_container_t *container);
-
-rt_bool_t rtgui_container_event_handler(struct rtgui_object *widget, rtgui_event_t *event);
-
-rt_bool_t rtgui_container_dispatch_event(rtgui_container_t *container, rtgui_event_t *event);
-rt_bool_t rtgui_container_dispatch_mouse_event(rtgui_container_t *container, struct rtgui_event_mouse *event);
-
-struct rtgui_object* rtgui_container_get_object(struct rtgui_container *container, rt_uint32_t id);
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/components/gui/include/rtgui/widgets/title.h b/components/gui/include/rtgui/widgets/title.h
deleted file mode 100644
index 128d1c3143..0000000000
--- a/components/gui/include/rtgui/widgets/title.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * File : title.h
- * This file is part of RT-Thread GUI Engine
- * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Change Logs:
- * Date Author Notes
- * 2009-10-16 Bernard first version
- */
-#ifndef __RTGUI_TITLE__
-#define __RTGUI_TITLE__
-
-#include <rtgui/widgets/widget.h>
-
-DECLARE_CLASS_TYPE(wintitle);
-/** Gets the type of a title */
-#define RTGUI_WINTITLE_TYPE (RTGUI_TYPE(wintitle))
-/** Casts the object to an rtgui_wintitle */
-#define RTGUI_WINTITLE(obj) (RTGUI_OBJECT_CAST((obj), RTGUI_WINTITLE_TYPE, rtgui_wintitle_t))
-/** Checks if the object is an rtgui_wintitle */
-#define RTGUI_IS_WINTITLE(obj) (RTGUI_OBJECT_CHECK_TYPE((obj), RTGUI_WINTITLE_TYPE))
-
-struct rtgui_wintitle
-{
- struct rtgui_widget parent;
-};
-typedef struct rtgui_wintitle rtgui_wintitle_t;
-
-rtgui_wintitle_t *rtgui_wintitle_create(struct rtgui_win *window);
-void rtgui_wintitle_destroy(rtgui_wintitle_t *wintitle);
-
-rt_bool_t rtgui_wintile_event_handler(struct rtgui_object *object, rtgui_event_t *event);
-
-#endif
diff --git a/components/gui/include/rtgui/widgets/widget.h b/components/gui/include/rtgui/widgets/widget.h
deleted file mode 100644
index 726bd4ae38..0000000000
--- a/components/gui/include/rtgui/widgets/widget.h
+++ /dev/null
@@ -1,209 +0,0 @@
-/*
- * File : widget.h
- * This file is part of RT-Thread GUI Engine
- * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Change Logs:
- * Date Author Notes
- * 2009-10-04 Bernard first version
- */
-#ifndef __RTGUI_WIDGET_H__
-#define __RTGUI_WIDGET_H__
-
-#include <rtgui/rtgui.h>
-#include <rtgui/list.h>
-#include <rtgui/region.h>
-#include <rtgui/event.h>
-#include <rtgui/color.h>
-#include <rtgui/font.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define RTGUI_WIDGET_FLAG_DEFAULT 0x0000
-#define RTGUI_WIDGET_FLAG_SHOWN 0x0001
-#define RTGUI_WIDGET_FLAG_DISABLE 0x0002
-#define RTGUI_WIDGET_FLAG_FOCUS 0x0004
-#define RTGUI_WIDGET_FLAG_TRANSPARENT 0x0008
-#define RTGUI_WIDGET_FLAG_FOCUSABLE 0x0010
-#define RTGUI_WIDGET_FLAG_DC_VISIBLE 0x0100
-#define RTGUI_WIDGET_FLAG_IN_ANIM 0x0200
-
-/* rtgui widget attribute */
-#define RTGUI_WIDGET_FOREGROUND(w) (RTGUI_WIDGET(w)->gc.foreground)
-#define RTGUI_WIDGET_BACKGROUND(w) (RTGUI_WIDGET(w)->gc.background)
-#define RTGUI_WIDGET_TEXTALIGN(w) (RTGUI_WIDGET(w)->gc.textalign)
-#define RTGUI_WIDGET_FONT(w) (RTGUI_WIDGET(w)->gc.font)
-#define RTGUI_WIDGET_FLAG(w) (RTGUI_WIDGET(w)->flag)
-#define RTGUI_WIDGET_ALIGN(w) (RTGUI_WIDGET(w)->align)
-#define RTGUI_WIDGET_BORDER(w) (RTGUI_WIDGET(w)->border)
-#define RTGUI_WIDGET_BORDER_STYLE(w) (RTGUI_WIDGET(w)->border_style)
-
-#define RTGUI_WIDGET_UNHIDE(w) RTGUI_WIDGET_FLAG(w) |= RTGUI_WIDGET_FLAG_SHOWN
-#define RTGUI_WIDGET_HIDE(w) RTGUI_WIDGET_FLAG(w) &= ~RTGUI_WIDGET_FLAG_SHOWN
-#define RTGUI_WIDGET_IS_HIDE(w) (!(RTGUI_WIDGET_FLAG(w) & RTGUI_WIDGET_FLAG_SHOWN))
-
-#define RTGUI_WIDGET_ENABLE(w) RTGUI_WIDGET_FLAG(w) &= ~RTGUI_WIDGET_FLAG_DISABLE
-#define RTGUI_WIDGET_DISABLE(w) RTGUI_WIDGET_FLAG(w) |= RTGUI_WIDGET_FLAG_DISABLE
-#define RTGUI_WIDGET_IS_ENABLE(w) (!((RTGUI_WIDGET_FLAG(w) & RTGUI_WIDGET_FLAG_DISABLE)))
-
-#define RTGUI_WIDGET_UNFOCUS(w) RTGUI_WIDGET_FLAG(w) &= ~RTGUI_WIDGET_FLAG_FOCUS
-#define RTGUI_WIDGET_FOCUS(w) RTGUI_WIDGET_FLAG(w) |= RTGUI_WIDGET_FLAG_FOCUS
-#define RTGUI_WIDGET_IS_FOCUSED(w) (RTGUI_WIDGET_FLAG(w) & RTGUI_WIDGET_FLAG_FOCUS)
-
-#define RTGUI_WIDGET_IS_FOCUSABLE(w) (RTGUI_WIDGET_FLAG(w) & RTGUI_WIDGET_FLAG_FOCUSABLE)
-#define RTGUI_WIDGET_SET_UNFOCUSABLE(w) RTGUI_WIDGET_FLAG(w) &= ~RTGUI_WIDGET_FLAG_FOCUSABLE
-
-#define RTGUI_WIDGET_IS_DC_VISIBLE(w) (RTGUI_WIDGET_FLAG(w) & RTGUI_WIDGET_FLAG_DC_VISIBLE)
-#define RTGUI_WIDGET_DC_SET_VISIBLE(w) RTGUI_WIDGET_FLAG(w) |= RTGUI_WIDGET_FLAG_DC_VISIBLE
-#define RTGUI_WIDGET_DC_SET_UNVISIBLE(w) RTGUI_WIDGET_FLAG(w) &= ~RTGUI_WIDGET_FLAG_DC_VISIBLE
-#define RTGUI_WIDGET_DC(w) ((struct rtgui_dc*)&((w)->dc_type))
-
-DECLARE_CLASS_TYPE(widget);
-
-/** Gets the type of a widget */
-#define RTGUI_WIDGET_TYPE (RTGUI_TYPE(widget))
-/** Casts the object to a rtgui_widget */
-#define RTGUI_WIDGET(obj) (RTGUI_OBJECT_CAST((obj), RTGUI_WIDGET_TYPE, rtgui_widget_t))
-/** Check if the object is a rtgui_widget */
-#define RTGUI_IS_WIDGET(obj) (RTGUI_OBJECT_CHECK_TYPE((obj), RTGUI_WIDGET_TYPE))
-
-/*
- * the base widget object
- */
-struct rtgui_widget
-{
- /* inherit from rtgui_object */
- struct rtgui_object object;
-
- /* the widget that contains this widget */
- struct rtgui_widget *parent;
- /* the window that contains this widget */
- struct rtgui_win *toplevel;
- /* the widget children and sibling */
- rtgui_list_t sibling;
-
- /* widget flag */
- rt_int32_t flag;
-
- /* hardware device context */
- rt_uint32_t dc_type;
- const struct rtgui_dc_engine *dc_engine;
-
- /* the graphic context of widget */
- rtgui_gc_t gc;
-
- /* the widget extent */
- rtgui_rect_t extent;
- /* the visiable extent (includes the rectangles of children) */
- rtgui_rect_t extent_visiable;
- /* the rect clip information */
- rtgui_region_t clip;
-
- /* minimal width and height of widget */
- rt_int16_t min_width, min_height;
- /* widget align */
- rt_int32_t align;
- rt_uint16_t border;
- rt_uint16_t border_style;
-
- /* call back */
- rt_bool_t (*on_focus_in)(struct rtgui_object *widget, struct rtgui_event *event);
- rt_bool_t (*on_focus_out)(struct rtgui_object *widget, struct rtgui_event *event);
-
- /* user private data */
- rt_uint32_t user_data;
-};
-typedef struct rtgui_widget rtgui_widget_t;
-
-rtgui_widget_t *rtgui_widget_create(const rtgui_type_t *widget_type);
-void rtgui_widget_destroy(rtgui_widget_t *widget);
-
-rt_bool_t rtgui_widget_event_handler(struct rtgui_object *object, rtgui_event_t *event);
-
-/* focus and unfocus */
-void rtgui_widget_focus(rtgui_widget_t *widget);
-void rtgui_widget_unfocus(rtgui_widget_t *widget);
-
-/* event handler for each command */
-void rtgui_widget_set_onfocus(rtgui_widget_t *widget, rtgui_event_handler_ptr handler);
-void rtgui_widget_set_onunfocus(rtgui_widget_t *widget, rtgui_event_handler_ptr handler);
-
-/* get and set rect of widget */
-void rtgui_widget_get_rect(rtgui_widget_t *widget, rtgui_rect_t *rect);
-void rtgui_widget_set_border(rtgui_widget_t *widget, rt_uint32_t style);
-void rtgui_widget_set_rect(rtgui_widget_t *widget, const rtgui_rect_t *rect);
-void rtgui_widget_set_rectangle(rtgui_widget_t *widget, int x, int y, int width, int height);
-void rtgui_widget_get_extent(rtgui_widget_t *widget, rtgui_rect_t *rect);
-
-void rtgui_widget_set_minsize(rtgui_widget_t *widget, int width, int height);
-void rtgui_widget_set_minwidth(rtgui_widget_t *widget, int width);
-void rtgui_widget_set_minheight(rtgui_widget_t *widget, int height);
-
-void rtgui_widget_set_parent(rtgui_widget_t *widget, rtgui_widget_t *parent);
-
-/* get the physical position of a logic point on widget */
-void rtgui_widget_point_to_device(rtgui_widget_t *widget, rtgui_point_t *point);
-/* get the physical position of a logic rect on widget */
-void rtgui_widget_rect_to_device(rtgui_widget_t *widget, rtgui_rect_t *rect);
-
-/* get the logic position of a physical point on widget */
-void rtgui_widget_point_to_logic(rtgui_widget_t *widget, rtgui_point_t *point);
-/* get the logic position of a physical rect on widget */
-void rtgui_widget_rect_to_logic(rtgui_widget_t *widget, rtgui_rect_t *rect);
-
-void rtgui_widget_clip_parent(rtgui_widget_t *widget);
-void rtgui_widget_clip_return(rtgui_widget_t *widget);
-
-/* move widget and its children to a logic point */
-void rtgui_widget_move_to_logic(rtgui_widget_t *widget, int dx, int dy);
-
-/* update the clip info of widget */
-void rtgui_widget_update_clip(rtgui_widget_t *widget);
-
-/* get the toplevel widget of widget */
-struct rtgui_win *rtgui_widget_get_toplevel(rtgui_widget_t *widget);
-rt_bool_t rtgui_widget_onupdate_toplvl(struct rtgui_object *object, struct rtgui_event *event);
-
-void rtgui_widget_show(rtgui_widget_t *widget);
-rt_bool_t rtgui_widget_onshow(struct rtgui_object *object, struct rtgui_event *event);
-void rtgui_widget_hide(rtgui_widget_t *widget);
-rt_bool_t rtgui_widget_onhide(struct rtgui_object *object, struct rtgui_event *event);
-void rtgui_widget_update(rtgui_widget_t *widget);
-rt_bool_t rtgui_widget_onpaint(struct rtgui_object *object, struct rtgui_event *event);
-
-/* get parent color */
-rtgui_color_t rtgui_widget_get_parent_foreground(rtgui_widget_t *widget);
-rtgui_color_t rtgui_widget_get_parent_background(rtgui_widget_t *widget);
-
-/* get the next sibling of widget */
-rtgui_widget_t *rtgui_widget_get_next_sibling(rtgui_widget_t *widget);
-/* get the prev sibling of widget */
-rtgui_widget_t *rtgui_widget_get_prev_sibling(rtgui_widget_t *widget);
-
-rt_bool_t rtgui_widget_is_in_animation(rtgui_widget_t *widget);
-
-/* dump widget information */
-void rtgui_widget_dump(rtgui_widget_t *widget);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
diff --git a/components/gui/include/rtgui/widgets/window.h b/components/gui/include/rtgui/widgets/window.h
deleted file mode 100644
index 1ef59a3d44..0000000000
--- a/components/gui/include/rtgui/widgets/window.h
+++ /dev/null
@@ -1,215 +0,0 @@
-/*
- * File : window.h
- * This file is part of RT-Thread GUI Engine
- * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Change Logs:
- * Date Author Notes
- * 2009-10-04 Bernard first version
- * 2010-05-03 Bernard add win close function
- */
-#ifndef __RTGUI_WINDOW_H__
-#define __RTGUI_WINDOW_H__
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <rtgui/rtgui.h>
-#include <rtgui/list.h>
-#include <rtgui/dc.h>
-#include <rtgui/widgets/widget.h>
-#include <rtgui/widgets/box.h>
-
-DECLARE_CLASS_TYPE(win);
-/** Gets the type of a win */
-#define RTGUI_WIN_TYPE (RTGUI_TYPE(win))
-/** Casts the object to an rtgui_win */
-#define RTGUI_WIN(obj) (RTGUI_OBJECT_CAST((obj), RTGUI_WIN_TYPE, rtgui_win_t))
-/** Checks if the object is an rtgui_win */
-#define RTGUI_IS_WIN(obj) (RTGUI_OBJECT_CHECK_TYPE((obj), RTGUI_WIN_TYPE))
-
-#define RTGUI_WIN_STYLE_NO_FOCUS 0x0001 /* non-focused window */
-#define RTGUI_WIN_STYLE_NO_TITLE 0x0002 /* no title window */
-#define RTGUI_WIN_STYLE_NO_BORDER 0x0004 /* no border window */
-#define RTGUI_WIN_STYLE_CLOSEBOX 0x0008 /* window has the close button */
-#define RTGUI_WIN_STYLE_MINIBOX 0x0010 /* window has the mini button */
-
-#define RTGUI_WIN_STYLE_DESTROY_ON_CLOSE 0x0020 /* window is destroyed when closed */
-#define RTGUI_WIN_STYLE_ONTOP 0x0040 /* window is in the top layer */
-#define RTGUI_WIN_STYLE_ONBTM 0x0080 /* window is in the bottom layer */
-#define RTGUI_WIN_STYLE_MAINWIN 0x0106 /* window is a main window */
-
-#define RTGUI_WIN_MAGIC 0xA5A55A5A /* win magic flag */
-
-#define RTGUI_WIN_STYLE_DEFAULT (RTGUI_WIN_STYLE_CLOSEBOX | RTGUI_WIN_STYLE_MINIBOX)
-
-#define WINTITLE_HEIGHT 20
-#define WINTITLE_CB_WIDTH 16
-#define WINTITLE_CB_HEIGHT 16
-#define WINTITLE_BORDER_SIZE 2
-
-enum rtgui_win_flag
-{
- RTGUI_WIN_FLAG_INIT = 0x00, /* init state */
- RTGUI_WIN_FLAG_MODAL = 0x01, /* modal mode window */
- RTGUI_WIN_FLAG_CLOSED = 0x02, /* window is closed */
- RTGUI_WIN_FLAG_ACTIVATE = 0x04, /* window is activated */
- RTGUI_WIN_FLAG_UNDER_MODAL = 0x08, /* window is under modal
- show(modaled by other) */
- RTGUI_WIN_FLAG_CONNECTED = 0x10, /* connected to server */
- /* window is event_key dispatcher(dispatch it to the focused widget in
- * current window) _and_ a key handler(it should be able to handle keys
- * such as ESC). Both of dispatching and handling are in the same
- * function(rtgui_win_event_handler). So we have to distinguish between the
- * two modes.
- *
- * If this flag is set, we are in key-handling mode.
- */
- RTGUI_WIN_FLAG_HANDLE_KEY = 0x20,
-
- RTGUI_WIN_FLAG_CB_PRESSED = 0x40,
-};
-
-struct rtgui_win
-{
- /* inherit from container */
- rtgui_container_t parent;
-
- /* update count */
- rt_base_t update;
-
- /* drawing count */
- rt_base_t drawing;
- struct rtgui_rect drawing_rect;
-
- /* parent window. RT_NULL if the window is a top level window */
- struct rtgui_win *parent_window;
-
- struct rtgui_region outer_clip;
- struct rtgui_rect outer_extent;
-
- /* the widget that will grab the focus in current window */
- struct rtgui_widget *focused_widget;
-
- /* which app I belong */
- struct rtgui_app *app;
-
- /* window style */
- rt_uint16_t style;
-
- /* window state flag */
- enum rtgui_win_flag flag;
-
- rtgui_modal_code_t modal_code;
-
- /* last mouse event handled widget */
- rtgui_widget_t *last_mevent_widget;
-
- /* window title */
- char *title;
- struct rtgui_wintitle *_title_wgt;
-
- /* call back */
- rt_bool_t (*on_activate)(struct rtgui_object *widget, struct rtgui_event *event);
- rt_bool_t (*on_deactivate)(struct rtgui_object *widget, struct rtgui_event *event);
- rt_bool_t (*on_close)(struct rtgui_object *widget, struct rtgui_event *event);
- /* the key is sent to the focused widget by default. If the focused widget
- * and all of it's parents didn't handle the key event, it will be handled
- * by @func on_key
- *
- * If you want to handle key event on your own, it's better to overload
- * this function other than handle EVENT_KBD in event_handler.
- */
- rt_bool_t (*on_key)(struct rtgui_object *widget, struct rtgui_event *event);
-
- /* reserved user data */
- void *user_data;
-
- /* Private data. */
- rt_base_t (*_do_show)(struct rtgui_win *win);
-
- /* app ref_count */
- rt_uint16_t app_ref_count;
-
- /* win magic flag, magic value is 0xA5A55A5A */
- rt_uint32_t magic;
-};
-
-rtgui_win_t *rtgui_win_create(struct rtgui_win *parent_window, const char *title,
- rtgui_rect_t *rect, rt_uint16_t style);
-rtgui_win_t *rtgui_mainwin_create(struct rtgui_win *parent_window, const char *title, rt_uint16_t style);
-
-void rtgui_win_destroy(rtgui_win_t *win);
-
-int rtgui_win_init(struct rtgui_win *win, struct rtgui_win *parent_window,
- const char *title,
- rtgui_rect_t *rect,
- rt_uint16_t style);
-int rtgui_win_fini(struct rtgui_win* win);
-
-/** Close window.
- *
- * @param win the window you want to close
- *
- * @return RT_TRUE if the window is closed. RT_FALSE if not. If the onclose
- * callback returns RT_FALSE, the window won't be closed.
- *
- * \sa rtgui_win_set_onclose .
- */
-rt_bool_t rtgui_win_close(struct rtgui_win *win);
-
-rt_base_t rtgui_win_show(struct rtgui_win *win, rt_bool_t is_modal);
-rt_base_t rtgui_win_do_show(struct rtgui_win *win);
-rt_base_t rtgui_win_enter_modal(struct rtgui_win *win);
-
-void rtgui_win_hide(rtgui_win_t *win);
-void rtgui_win_end_modal(rtgui_win_t *win, rtgui_modal_code_t modal_code);
-rt_err_t rtgui_win_activate(struct rtgui_win *win);
-rt_bool_t rtgui_win_is_activated(struct rtgui_win *win);
-
-void rtgui_win_move(struct rtgui_win *win, int x, int y);
-
-/* reset extent of window */
-void rtgui_win_set_rect(rtgui_win_t *win, rtgui_rect_t *rect);
-void rtgui_win_update_clip(struct rtgui_win *win);
-
-void rtgui_win_set_onactivate(rtgui_win_t *win, rtgui_event_handler_ptr handler);
-void rtgui_win_set_ondeactivate(rtgui_win_t *win, rtgui_event_handler_ptr handler);
-void rtgui_win_set_onclose(rtgui_win_t *win, rtgui_event_handler_ptr handler);
-void rtgui_win_set_onkey(rtgui_win_t *win, rtgui_event_handler_ptr handler);
-
-rt_bool_t rtgui_win_event_handler(struct rtgui_object *win, struct rtgui_event *event);
-
-void rtgui_win_event_loop(rtgui_win_t *wnd);
-
-void rtgui_win_set_title(rtgui_win_t *win, const char *title);
-char *rtgui_win_get_title(rtgui_win_t *win);
-
-struct rtgui_dc *rtgui_win_get_drawing(rtgui_win_t * win);
-
-struct rtgui_win* rtgui_win_get_topmost_shown(void);
-struct rtgui_win* rtgui_win_get_next_shown(void);
-
-void rtgui_theme_draw_win(struct rtgui_wintitle *wint);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-