mirror of
https://github.com/RT-Thread/rt-thread.git
synced 2026-09-22 03:09:16 +08:00
move to components directory
git-svn-id: https://rt-thread.googlecode.com/svn/trunk@638 bbd45198-f89e-11dd-88c7-29a3b14d5316
This commit is contained in:
@@ -0,0 +1,96 @@
|
||||
/*
|
||||
* File : color.h
|
||||
* This file is part of RT-Thread RTOS
|
||||
* COPYRIGHT (C) 2006 - 2009, RT-Thread Development Team
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
* http://www.rt-thread.org/license/LICENSE
|
||||
*
|
||||
* Change Logs:
|
||||
* Date Author Notes
|
||||
* 2009-10-16 Bernard first version
|
||||
*/
|
||||
#ifndef __RTGUI_COLOR_H__
|
||||
#define __RTGUI_COLOR_H__
|
||||
|
||||
#include <rtgui/rtgui.h>
|
||||
|
||||
#define RTGUI_ARGB(a, r, g, b) \
|
||||
((rtgui_color_t)(((rt_uint8_t)(r)|\
|
||||
(((unsigned)(rt_uint8_t)(g))<<8))|\
|
||||
(((unsigned long)(rt_uint8_t)(b))<<16)|\
|
||||
(((unsigned long)(rt_uint8_t)(a))<<24)))
|
||||
#define RTGUI_RGB(r, g, b) RTGUI_ARGB(255, (r), (g), (b))
|
||||
|
||||
#define RTGUI_RGB_R(c) ((c) & 0xff)
|
||||
#define RTGUI_RGB_G(c) (((c) >> 8) & 0xff)
|
||||
#define RTGUI_RGB_B(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;
|
||||
|
||||
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
|
||||
* BBBB BBBB GGGG GGGG RRRR RRRR
|
||||
*/
|
||||
|
||||
/* convert rtgui color to BBBBBGGGGGGRRRRR */
|
||||
rt_inline rt_uint16_t rtgui_color_to_565(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_565(rt_uint16_t pixel)
|
||||
{
|
||||
rt_uint16_t r, g, b;
|
||||
rtgui_color_t color;
|
||||
|
||||
r = pixel & 0x1f;
|
||||
g = (pixel >> 5) & 0x3f;
|
||||
b = (pixel >> 11) & 0x1f;
|
||||
|
||||
color = r * 8225 / 1024 + ((g * 4047 / 1024) << 8) + ((b * 8225 / 1024) << 16);
|
||||
|
||||
return color;
|
||||
}
|
||||
|
||||
/* convert rtgui color to RRRRRGGGGGGBBBBB */
|
||||
rt_inline rt_uint16_t rtgui_color_to_565p(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_565p(rt_uint16_t pixel)
|
||||
{
|
||||
rt_uint8_t r, g, b;
|
||||
rtgui_color_t color;
|
||||
|
||||
r = (pixel >> 11) & 0x1f;
|
||||
g = (pixel >> 5) & 0x3f;
|
||||
b = pixel & 0x1f;
|
||||
|
||||
color = r * 8225 / 1024 + ((g * 4047 / 1024) << 8) + ((b * 8225 / 1024) << 16);
|
||||
|
||||
return color;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,110 @@
|
||||
/*
|
||||
* File : dc.h
|
||||
* This file is part of RT-Thread RTOS
|
||||
* COPYRIGHT (C) 2006 - 2009, RT-Thread Development Team
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
* http://www.rt-thread.org/license/LICENSE
|
||||
*
|
||||
* Change Logs:
|
||||
* Date Author Notes
|
||||
* 2009-10-16 Bernard first version
|
||||
*/
|
||||
#ifndef __RTGUI_DC_H__
|
||||
#define __RTGUI_DC_H__
|
||||
|
||||
#include <rtgui/rtgui.h>
|
||||
#include <rtgui/font.h>
|
||||
#include <rtgui/driver.h>
|
||||
#include <rtgui/widgets/widget.h>
|
||||
|
||||
enum rtgui_dc_type
|
||||
{
|
||||
RTGUI_DC_HW,
|
||||
RTGUI_DC_BUFFER,
|
||||
RTGUI_DC_IMLIB2,
|
||||
};
|
||||
|
||||
/* the abstract device context */
|
||||
struct rtgui_dc
|
||||
{
|
||||
/* type of device context */
|
||||
rt_uint32_t type;
|
||||
|
||||
/* 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 )(struct rtgui_dc* dc, struct rtgui_point* dc_point, struct rtgui_dc* dest, rtgui_rect_t* rect);
|
||||
|
||||
/* set and get graphic context */
|
||||
void (*set_gc)(struct rtgui_dc* dc, struct rtgui_gc *gc);
|
||||
struct rtgui_gc* (*get_gc)(struct rtgui_dc* dc);
|
||||
|
||||
/* get dc visible */
|
||||
rt_bool_t (*get_visible)(struct rtgui_dc* dc);
|
||||
|
||||
/* get dc rect */
|
||||
void (*get_rect )(struct rtgui_dc* dc, rtgui_rect_t* rect);
|
||||
|
||||
rt_bool_t (*fini )(struct rtgui_dc* dc);
|
||||
};
|
||||
|
||||
#define RTGUI_DC_FC(dc) (rtgui_dc_get_gc(dc)->foreground)
|
||||
#define RTGUI_DC_BC(dc) (rtgui_dc_get_gc(dc)->background)
|
||||
#define RTGUI_DC_FONT(dc) (rtgui_dc_get_gc(dc)->font)
|
||||
#define RTGUI_DC_TEXTALIGN(dc) (rtgui_dc_get_gc(dc)->textalign)
|
||||
|
||||
/* create a buffer dc */
|
||||
struct rtgui_dc* rtgui_dc_buffer_create(int width, int height);
|
||||
rt_uint8_t* rtgui_dc_buffer_get_pixel(struct rtgui_dc* dc);
|
||||
|
||||
/* 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);
|
||||
|
||||
/* destroy a dc */
|
||||
void rtgui_dc_destory(struct rtgui_dc* dc);
|
||||
|
||||
void rtgui_dc_draw_point(struct rtgui_dc* dc, int x, int y);
|
||||
void rtgui_dc_draw_color_point(struct rtgui_dc* dc, int x, int y, rtgui_color_t color);
|
||||
|
||||
void rtgui_dc_draw_vline(struct rtgui_dc* dc, int x, int y1, int y2);
|
||||
void rtgui_dc_draw_hline(struct rtgui_dc* dc, int x1, int x2, int y);
|
||||
void rtgui_dc_fill_rect (struct rtgui_dc* dc, struct rtgui_rect* rect);
|
||||
void rtgui_dc_blit(struct rtgui_dc* dc, struct rtgui_point* dc_point, struct rtgui_dc* dest, rtgui_rect_t* rect);
|
||||
|
||||
void rtgui_dc_set_gc(struct rtgui_dc* dc, rtgui_gc_t* gc);
|
||||
rtgui_gc_t *rtgui_dc_get_gc(struct rtgui_dc* dc);
|
||||
|
||||
rt_bool_t rtgui_dc_get_visible(struct rtgui_dc* dc);
|
||||
void rtgui_dc_get_rect(struct rtgui_dc*dc, rtgui_rect_t* rect);
|
||||
|
||||
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_draw_round_rect(struct rtgui_dc* dc, struct rtgui_rect* rect);
|
||||
|
||||
void rtgui_dc_draw_text (struct rtgui_dc* dc, const char* text, struct rtgui_rect* rect);
|
||||
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_arrow(struct rtgui_dc* dc, rtgui_rect_t* rect, int kind);
|
||||
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);
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,40 @@
|
||||
/*
|
||||
* File : dc_buffer.h
|
||||
* This file is part of RT-Thread RTOS
|
||||
* COPYRIGHT (C) 2006 - 2010, RT-Thread Development Team
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
* http://www.rt-thread.org/license/LICENSE
|
||||
*
|
||||
* Change Logs:
|
||||
* Date Author Notes
|
||||
* 2010-04-10 Bernard first version
|
||||
*/
|
||||
#ifndef __RTGUI_DC_HW_H__
|
||||
#define __RTGUI_DC_HW_H__
|
||||
|
||||
#include <rtgui/dc.h>
|
||||
|
||||
/* hardware device context */
|
||||
struct rtgui_dc_hw
|
||||
{
|
||||
struct rtgui_dc parent;
|
||||
|
||||
/* widget owner */
|
||||
rtgui_widget_t* owner;
|
||||
|
||||
/* visible */
|
||||
rt_bool_t visible;
|
||||
|
||||
/* display driver */
|
||||
struct rtgui_graphic_driver* device;
|
||||
};
|
||||
|
||||
/* create a hardware dc */
|
||||
struct rtgui_dc* rtgui_dc_hw_create(rtgui_widget_t* owner);
|
||||
|
||||
/* draw a hline with raw pixel data */
|
||||
void rtgui_dc_hw_draw_raw_hline(struct rtgui_dc_hw* dc, rt_uint8_t* raw_ptr, int x1, int x2, int y);
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,61 @@
|
||||
/*
|
||||
* File : driver.h
|
||||
* This file is part of RTGUI in RT-Thread RTOS
|
||||
* COPYRIGHT (C) 2006 - 2009, RT-Thread Development Team
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
* http://www.rt-thread.org/license/LICENSE
|
||||
*
|
||||
* 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>
|
||||
|
||||
struct rtgui_graphic_driver
|
||||
{
|
||||
/* driver name */
|
||||
char* name;
|
||||
|
||||
/* byte per pixel */
|
||||
rt_uint16_t byte_per_pixel;
|
||||
|
||||
/* screen width and height */
|
||||
rt_uint16_t width;
|
||||
rt_uint16_t height;
|
||||
|
||||
/* screen update */
|
||||
void (*screen_update)(rtgui_rect_t* rect);
|
||||
|
||||
/* get video frame buffer */
|
||||
rt_uint8_t* (*get_framebuffer)(void);
|
||||
|
||||
/* set and get pixel in (x, y) */
|
||||
void (*set_pixel) (rtgui_color_t *c, rt_base_t x, rt_base_t y);
|
||||
void (*get_pixel) (rtgui_color_t *c, rt_base_t x, rt_base_t y);
|
||||
|
||||
void (*draw_hline)(rtgui_color_t *c, rt_base_t x1, rt_base_t x2, rt_base_t y);
|
||||
void (*draw_vline)(rtgui_color_t *c, rt_base_t x , rt_base_t y1, rt_base_t y2);
|
||||
|
||||
/* draw raw hline */
|
||||
void (*draw_raw_hline)(rt_uint8_t *pixels, rt_base_t x1, rt_base_t x2, rt_base_t y);
|
||||
|
||||
/* the driver list */
|
||||
rtgui_list_t list;
|
||||
};
|
||||
|
||||
void rtgui_graphic_driver_add(struct rtgui_graphic_driver* driver);
|
||||
void rtgui_graphic_driver_remove(struct rtgui_graphic_driver* driver);
|
||||
|
||||
struct rtgui_graphic_driver* rtgui_graphic_driver_find(char* name);
|
||||
struct rtgui_graphic_driver* rtgui_graphic_driver_get_default(void);
|
||||
|
||||
void rtgui_graphic_driver_get_rect(struct rtgui_graphic_driver *driver, rtgui_rect_t *rect);
|
||||
void rtgui_graphic_driver_get_default_rect(rtgui_rect_t *rect);
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,420 @@
|
||||
/*
|
||||
* File : event.h
|
||||
* This file is part of RTGUI in RT-Thread RTOS
|
||||
* COPYRIGHT (C) 2006 - 2009, RT-Thread Development Team
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
* http://www.rt-thread.org/license/LICENSE
|
||||
*
|
||||
* Change Logs:
|
||||
* Date Author Notes
|
||||
* 2009-10-04 Bernard first version
|
||||
*/
|
||||
#ifndef __RTGUI_EVENT_H__
|
||||
#define __RTGUI_EVENT_H__
|
||||
|
||||
#include <rtgui/rtgui.h>
|
||||
#include <rtgui/kbddef.h>
|
||||
|
||||
enum _rtgui_event_type
|
||||
{
|
||||
/* panel event */
|
||||
RTGUI_EVENT_PANEL_ATTACH = 0, /* attach to a panel */
|
||||
RTGUI_EVENT_PANEL_DETACH, /* detach from a panel */
|
||||
RTGUI_EVENT_PANEL_SHOW, /* show in a panel */
|
||||
RTGUI_EVENT_PANEL_HIDE, /* hide from a panel */
|
||||
RTGUI_EVENT_PANEL_INFO, /* panel information */
|
||||
RTGUI_EVENT_PANEL_RESIZE, /* resize panel */
|
||||
RTGUI_EVENT_PANEL_FULLSCREEN, /* to full screen */
|
||||
RTGUI_EVENT_PANEL_NORMAL, /* to normal screen */
|
||||
|
||||
/* 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 */
|
||||
|
||||
/* 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_PAINT, /* paint on screen */
|
||||
RTGUI_EVENT_TIMER, /* timer */
|
||||
|
||||
/* 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 */
|
||||
|
||||
/* user command event */
|
||||
RTGUI_EVENT_COMMAND, /* user command */
|
||||
|
||||
/* widget event */
|
||||
RTGUI_EVENT_FOCUSED, /* widget focused */
|
||||
RTGUI_EVENT_SCROLLED, /* scroll bar scrolled */
|
||||
RTGUI_EVENT_RESIZE, /* widget resize */
|
||||
};
|
||||
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 */
|
||||
rt_uint16_t type;
|
||||
/* user field of event */
|
||||
rt_uint16_t user;
|
||||
|
||||
/* the event sender */
|
||||
rt_thread_t sender;
|
||||
|
||||
/* mailbox to acknowledge request */
|
||||
rt_mailbox_t ack;
|
||||
};
|
||||
typedef struct rtgui_event rtgui_event_t;
|
||||
#define RTGUI_EVENT(e) ((struct rtgui_event*)(e))
|
||||
|
||||
#define RTGUI_EVENT_INIT(e, t) do \
|
||||
{ \
|
||||
(e)->type = (t); \
|
||||
(e)->user = 0; \
|
||||
(e)->sender = rt_thread_self(); \
|
||||
(e)->ack = RT_NULL; \
|
||||
} while (0)
|
||||
|
||||
/*
|
||||
* RTGUI Panel Event
|
||||
*/
|
||||
struct rtgui_event_panel_attach
|
||||
{
|
||||
struct rtgui_event parent;
|
||||
|
||||
/* the panel name to be attached */
|
||||
char panel_name[RTGUI_NAME_MAX];
|
||||
|
||||
/* workbench, wm field */
|
||||
rtgui_workbench_t* workbench;
|
||||
};
|
||||
|
||||
struct rtgui_event_panel_detach
|
||||
{
|
||||
struct rtgui_event parent;
|
||||
|
||||
/* the panel which thread belong to */
|
||||
rtgui_panel_t* panel;
|
||||
|
||||
/* workbench, wm field */
|
||||
rtgui_workbench_t* workbench;
|
||||
};
|
||||
|
||||
struct rtgui_event_panel_show
|
||||
{
|
||||
struct rtgui_event parent;
|
||||
|
||||
/* the panel which thread belong to */
|
||||
rtgui_panel_t* panel;
|
||||
|
||||
/* workbench, wm field */
|
||||
rtgui_workbench_t* workbench;
|
||||
};
|
||||
|
||||
struct rtgui_event_panel_hide
|
||||
{
|
||||
struct rtgui_event parent;
|
||||
|
||||
/* the panel which thread belong to */
|
||||
rtgui_panel_t* panel;
|
||||
|
||||
/* workbench, wm field */
|
||||
rtgui_workbench_t* workbench;
|
||||
};
|
||||
|
||||
struct rtgui_event_panel_info
|
||||
{
|
||||
struct rtgui_event parent;
|
||||
|
||||
/* panel info */
|
||||
rtgui_panel_t* panel;
|
||||
rtgui_rect_t extent;
|
||||
};
|
||||
|
||||
#define RTGUI_EVENT_PANEL_ATTACH_INIT(e) RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_PANEL_ATTACH)
|
||||
#define RTGUI_EVENT_PANEL_DETACH_INIT(e) RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_PANEL_DETACH)
|
||||
#define RTGUI_EVENT_PANEL_SHOW_INIT(e) RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_PANEL_SHOW)
|
||||
#define RTGUI_EVENT_PANEL_HIDE_INIT(e) RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_PANEL_HIDE)
|
||||
#define RTGUI_EVENT_PANEL_INFO_INIT(e) RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_PANEL_INFO)
|
||||
|
||||
/*
|
||||
* RTGUI Window Event
|
||||
*/
|
||||
struct rtgui_event_win
|
||||
{
|
||||
struct rtgui_event parent;
|
||||
|
||||
/* the window id */
|
||||
rtgui_win_t* wid;
|
||||
};
|
||||
|
||||
struct rtgui_event_win_create
|
||||
{
|
||||
struct rtgui_event parent;
|
||||
|
||||
#ifndef RTGUI_USING_SMALL_SIZE
|
||||
/* the window title */
|
||||
rt_uint8_t title[RTGUI_NAME_MAX];
|
||||
/* the window extent */
|
||||
struct rtgui_rect extent;
|
||||
#endif
|
||||
|
||||
/* the window id */
|
||||
rtgui_win_t* wid;
|
||||
};
|
||||
|
||||
struct rtgui_event_win_move
|
||||
{
|
||||
struct rtgui_event parent;
|
||||
|
||||
/* the window id */
|
||||
rtgui_win_t* wid;
|
||||
|
||||
rt_int16_t x, y;
|
||||
};
|
||||
|
||||
struct rtgui_event_win_resize
|
||||
{
|
||||
struct rtgui_event parent;
|
||||
|
||||
/* the window id */
|
||||
rtgui_win_t* wid;
|
||||
|
||||
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
|
||||
|
||||
/* 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)
|
||||
|
||||
/*
|
||||
* RTGUI Workbench Manager Event
|
||||
*/
|
||||
struct rtgui_event_set_wm
|
||||
{
|
||||
struct rtgui_event parent;
|
||||
|
||||
/* the panel name to be managed */
|
||||
char panel_name[RTGUI_NAME_MAX];
|
||||
};
|
||||
/* window event init */
|
||||
#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
|
||||
{
|
||||
struct rtgui_event parent;
|
||||
|
||||
/* the monitor rect */
|
||||
rtgui_rect_t rect;
|
||||
|
||||
/* under panel */
|
||||
rtgui_panel_t* panel;
|
||||
|
||||
/* or under window */
|
||||
rtgui_win_t* wid;
|
||||
};
|
||||
|
||||
struct rtgui_event_paint
|
||||
{
|
||||
struct rtgui_event parent;
|
||||
|
||||
rtgui_win_t* wid; /* destination window */
|
||||
};
|
||||
|
||||
struct rtgui_timer;
|
||||
struct rtgui_event_timer
|
||||
{
|
||||
struct rtgui_event parent;
|
||||
|
||||
struct rtgui_timer *timer;
|
||||
};
|
||||
|
||||
struct rtgui_event_clip_info
|
||||
{
|
||||
struct rtgui_event parent;
|
||||
|
||||
/* destination window */
|
||||
rtgui_win_t* wid;
|
||||
|
||||
/* 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)
|
||||
|
||||
/*
|
||||
* RTGUI Mouse and Keyboard Event
|
||||
*/
|
||||
struct rtgui_event_mouse
|
||||
{
|
||||
struct rtgui_event parent;
|
||||
|
||||
rtgui_win_t* wid; /* destination window */
|
||||
|
||||
rt_uint16_t x, y;
|
||||
rt_uint16_t button;
|
||||
};
|
||||
#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
|
||||
|
||||
struct rtgui_event_kbd
|
||||
{
|
||||
struct rtgui_event parent;
|
||||
|
||||
rtgui_win_t* wid; /* destination window */
|
||||
|
||||
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)
|
||||
|
||||
struct rtgui_event_command
|
||||
{
|
||||
struct rtgui_event parent;
|
||||
|
||||
/* 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)
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,47 @@
|
||||
/*
|
||||
* File : filerw.h
|
||||
* This file is part of RT-Thread RTOS
|
||||
* COPYRIGHT (C) 2006 - 2009, RT-Thread Development Team
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
* http://www.rt-thread.org/license/LICENSE
|
||||
*
|
||||
* Change Logs:
|
||||
* Date Author Notes
|
||||
* 2009-10-16 Bernard first version
|
||||
*/
|
||||
#ifndef __RTGUI_FILERW_H__
|
||||
#define __RTGUI_FILERW_H__
|
||||
|
||||
#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);
|
||||
|
||||
/* get memory data from filerw memory object */
|
||||
const rt_uint8_t* rtgui_filerw_mem_getdata(struct rtgui_filerw* context);
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,114 @@
|
||||
/*
|
||||
* File : font.h
|
||||
* This file is part of RT-Thread RTOS
|
||||
* COPYRIGHT (C) 2006 - 2009, RT-Thread Development Team
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
* http://www.rt-thread.org/license/LICENSE
|
||||
*
|
||||
* 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>
|
||||
|
||||
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
|
||||
*/
|
||||
/* bitmap font private data */
|
||||
struct rtgui_font_bitmap
|
||||
{
|
||||
/* bitmap data */
|
||||
const rt_uint8_t* bmp;
|
||||
|
||||
rt_uint16_t width;
|
||||
rt_uint16_t height;
|
||||
|
||||
rt_uint8_t first_char;
|
||||
rt_uint8_t last_char;
|
||||
};
|
||||
extern 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 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 */
|
||||
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 rt_uint8_t* 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);
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,63 @@
|
||||
/*
|
||||
* File : image.h
|
||||
* This file is part of RT-Thread RTOS
|
||||
* COPYRIGHT (C) 2006 - 2009, RT-Thread Development Team
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
* http://www.rt-thread.org/license/LICENSE
|
||||
*
|
||||
* 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>
|
||||
|
||||
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
|
||||
{
|
||||
/* image metrics */
|
||||
rt_uint16_t w, h;
|
||||
|
||||
/* image engine */
|
||||
struct rtgui_image_engine* engine;
|
||||
|
||||
/* image private data */
|
||||
void* data;
|
||||
};
|
||||
typedef struct rtgui_image rtgui_image_t;
|
||||
|
||||
/* init rtgui image system */
|
||||
void rtgui_system_image_init(void);
|
||||
|
||||
struct rtgui_image* rtgui_image_create_from_file(const char* type, const char* filename, rt_bool_t load);
|
||||
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);
|
||||
|
||||
/* 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);
|
||||
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,21 @@
|
||||
/*
|
||||
* File : image_xpm.h
|
||||
* This file is part of RT-Thread RTOS
|
||||
* COPYRIGHT (C) 2006 - 2009, RT-Thread Development Team
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
* http://www.rt-thread.org/license/LICENSE
|
||||
*
|
||||
* 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>
|
||||
|
||||
void rtgui_image_hdc_init(void);
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,8 @@
|
||||
#ifndef __RTGUI_IMAGE_JPEG_H__
|
||||
#define __RTGUI_IMAGE_JPEG_H__
|
||||
|
||||
#include <rtgui/image.h>
|
||||
|
||||
void rtgui_image_jpeg_init(void);
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,21 @@
|
||||
/*
|
||||
* File : image_png.h
|
||||
* This file is part of RT-Thread RTOS
|
||||
* COPYRIGHT (C) 2006 - 2009, RT-Thread Development Team
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
* http://www.rt-thread.org/license/LICENSE
|
||||
*
|
||||
* Change Logs:
|
||||
* Date Author Notes
|
||||
* 2009-10-16 Bernard first version
|
||||
*/
|
||||
#ifndef __RTGUI_IMAGE_PNG_H__
|
||||
#define __RTGUI_IMAGE_PNG_H__
|
||||
|
||||
#include <rtgui/image.h>
|
||||
|
||||
void rtgui_image_png_init(void);
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,21 @@
|
||||
/*
|
||||
* File : image_xpm.h
|
||||
* This file is part of RT-Thread RTOS
|
||||
* COPYRIGHT (C) 2006 - 2009, RT-Thread Development Team
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
* http://www.rt-thread.org/license/LICENSE
|
||||
*
|
||||
* Change Logs:
|
||||
* Date Author Notes
|
||||
* 2009-10-16 Bernard first version
|
||||
*/
|
||||
#ifndef __RTGUI_IMAGE_XPM_H__
|
||||
#define __RTGUI_IMAGE_XPM_H__
|
||||
|
||||
#include <rtgui/image.h>
|
||||
|
||||
void rtgui_image_xpm_init(void);
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,293 @@
|
||||
/*
|
||||
* File : kbddef.h
|
||||
* This file is part of RT-Thread RTOS
|
||||
* COPYRIGHT (C) 2006 - 2009, RT-Thread Development Team
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
* http://www.rt-thread.org/license/LICENSE
|
||||
*
|
||||
* 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
|
||||
@@ -0,0 +1,66 @@
|
||||
/*
|
||||
* File : list.h
|
||||
* This file is part of RT-Thread RTOS
|
||||
* COPYRIGHT (C) 2006 - 2009, RT-Thread Development Team
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
* http://www.rt-thread.org/license/LICENSE
|
||||
*
|
||||
* 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
|
||||
@@ -0,0 +1,100 @@
|
||||
/*
|
||||
* File : region.h
|
||||
* This file is part of RT-Thread RTOS
|
||||
* COPYRIGHT (C) 2006 - 2009, RT-Thread Development Team
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
* http://www.rt-thread.org/license/LICENSE
|
||||
*
|
||||
* 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_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, 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);
|
||||
|
||||
/* rect functions */
|
||||
extern rtgui_rect_t rtgui_empty_rect;
|
||||
|
||||
void rtgui_rect_moveto(rtgui_rect_t *rect, int x, int y);
|
||||
void rtgui_rect_moveto_align(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(rtgui_rect_t *rect, int x, int y);
|
||||
int rtgui_rect_is_intersect(rtgui_rect_t *rect1, rtgui_rect_t *rect2);
|
||||
|
||||
#if defined(__cplusplus) || defined(c_plusplus)
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _PIXMAN_H_ */
|
||||
@@ -0,0 +1,131 @@
|
||||
/*
|
||||
* File : rtgui.h
|
||||
* This file is part of RTGUI in RT-Thread RTOS
|
||||
* COPYRIGHT (C) 2006 - 2009, RT-Thread Development Team
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
* http://www.rt-thread.org/license/LICENSE
|
||||
*
|
||||
* 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>
|
||||
|
||||
#define RT_INT16_MAX 32767
|
||||
#define RT_INT16_MIN (-RT_INT16_MAX-1)
|
||||
|
||||
struct rtgui_panel;
|
||||
struct rtgui_event;
|
||||
|
||||
struct rtgui_widget;
|
||||
struct rtgui_win;
|
||||
struct rtgui_font;
|
||||
|
||||
typedef struct rtgui_panel rtgui_panel_t;
|
||||
typedef struct rtgui_win rtgui_win_t;
|
||||
typedef struct rtgui_workbench rtgui_workbench_t;
|
||||
typedef rt_bool_t (*rtgui_event_handler_ptr)(struct rtgui_widget* widget, struct rtgui_event* event);
|
||||
|
||||
struct rtgui_point
|
||||
{
|
||||
rt_int16_t x, y;
|
||||
};
|
||||
typedef struct rtgui_point rtgui_point_t;
|
||||
extern rtgui_point_t rtgui_empty_point;
|
||||
|
||||
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;
|
||||
|
||||
struct rtgui_gc
|
||||
{
|
||||
/* foreground and background color */
|
||||
rtgui_color_t foreground, background;
|
||||
|
||||
/* text align */
|
||||
rt_base_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
|
||||
};
|
||||
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
|
||||
|
||||
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_EXPAND = 0x10,
|
||||
RTGUI_ALIGN_STRETCH = 0x20,
|
||||
};
|
||||
|
||||
enum RTGUI_TEXTATTR
|
||||
{
|
||||
RTGUI_TEXTATTR_NORMAL = 0x0000,
|
||||
RTGUI_TEXTATTR_
|
||||
};
|
||||
|
||||
enum RTGUI_ARRAW
|
||||
{
|
||||
RTGUI_ARRAW_UP = 0,
|
||||
RTGUI_ARRAW_DOWN,
|
||||
RTGUI_ARRAW_LEFT,
|
||||
RTGUI_ARRAW_RIGHT
|
||||
};
|
||||
|
||||
enum RTGUI_MODAL_CODE
|
||||
{
|
||||
RTGUI_MODAL_OK,
|
||||
RTGUI_MODAL_CANCEL
|
||||
};
|
||||
typedef enum RTGUI_MODAL_CODE rtgui_modal_code_t;
|
||||
|
||||
#include <rtgui/rtgui_object.h>
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,63 @@
|
||||
/*
|
||||
* File : rtgui_config.h
|
||||
* This file is part of RT-Thread RTOS
|
||||
* COPYRIGHT (C) 2006 - 2009, RT-Thread Development Team
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
* http://www.rt-thread.org/license/LICENSE
|
||||
*
|
||||
* 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 */
|
||||
|
||||
#ifdef _WIN32
|
||||
/* name length of RTGUI object */
|
||||
#define RTGUI_NAME_MAX 12
|
||||
/* support 16 weight font */
|
||||
#define RTGUI_USING_FONT16
|
||||
/* support Chinese font */
|
||||
#define RTGUI_USING_FONTHZ
|
||||
/* use small size in RTGUI */
|
||||
#define RTGUI_USING_SMALL_SIZE
|
||||
/* use mouse cursor */
|
||||
/* #define RTGUI_USING_MOUSE_CURSOR */
|
||||
/* default font size in RTGUI */
|
||||
#define RTGUI_DEFAULT_FONT_SIZE 12
|
||||
|
||||
#define RTGUI_USING_STDIO_FILERW
|
||||
#define RTGUI_IMAGE_PNG
|
||||
#define RTGUI_IMAGE_JPEG
|
||||
#define RTGUI_USING_FONT12
|
||||
#define RTGUI_USING_HZ_BMP
|
||||
#define RTGUI_MEM_TRACE
|
||||
#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
|
||||
#ifdef RTGUI_USING_SMALL_SIZE
|
||||
#define RTGUI_SVR_THREAD_STACK_SIZE 1024
|
||||
#else
|
||||
#define RTGUI_SVR_THREAD_STACK_SIZE 2048
|
||||
#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
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,108 @@
|
||||
/*
|
||||
* File : rtgui_object.h
|
||||
* This file is part of RTGUI in RT-Thread RTOS
|
||||
* COPYRIGHT (C) 2006 - 2009, RT-Thread Development Team
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
* http://www.rt-thread.org/license/LICENSE
|
||||
*
|
||||
* Change Logs:
|
||||
* Date Author Notes
|
||||
* 2009-10-04 Bernard first version
|
||||
*/
|
||||
#ifndef __RTGUI_OBJECT_H__
|
||||
#define __RTGUI_OBJECT_H__
|
||||
|
||||
|
||||
#include <rtthread.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* rtgui object type */
|
||||
|
||||
/** 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-definetion */
|
||||
struct rtgui_object;
|
||||
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;
|
||||
|
||||
/* hierarchy and depth */
|
||||
struct rtgui_type **hierarchy;
|
||||
int hierarchy_depth;
|
||||
|
||||
/* constructor and destructor */
|
||||
rtgui_constructor_t constructor;
|
||||
rtgui_destructor_t destructor;
|
||||
|
||||
/* size of type */
|
||||
int size;
|
||||
};
|
||||
typedef struct rtgui_type rtgui_type_t;
|
||||
|
||||
rtgui_type_t *rtgui_type_create(const char *type_name, rtgui_type_t *parent_type,
|
||||
int type_size, rtgui_constructor_t constructor,
|
||||
rtgui_destructor_t destructor);
|
||||
void rtgui_type_destroy(rtgui_type_t *type);
|
||||
|
||||
void rtgui_type_object_construct(rtgui_type_t *type, rtgui_object_t *object);
|
||||
void rtgui_type_destructors_call(rtgui_type_t *type, rtgui_object_t *object);
|
||||
rt_bool_t rtgui_type_inherits_from(rtgui_type_t *type, rtgui_type_t *parent);
|
||||
rtgui_type_t *rtgui_type_parent_type_get(rtgui_type_t *type);
|
||||
const char *rtgui_type_name_get(rtgui_type_t *type);
|
||||
rtgui_type_t *rtgui_type_get_from_name(const char *name);
|
||||
|
||||
#ifdef RTGUI_USING_CAST_CHECK
|
||||
#define RTGUI_OBJECT_CAST(obj, rtgui_type_t, c_type) \
|
||||
((c_type *)rtgui_object_check_cast((rtgui_object_t *)(obj), (rtgui_type_t)))
|
||||
#else
|
||||
#define RTGUI_OBJECT_CAST(obj, rtgui_type_t, c_type) ((c_type *)(obj))
|
||||
#endif
|
||||
|
||||
#define RTGUI_OBJECT_CHECK_TYPE(_obj, _type) \
|
||||
(rtgui_type_inherits_from(((rtgui_object_t *)(_obj))->type, (_type)))
|
||||
|
||||
/** Gets the type of an object */
|
||||
#define RTGUI_OBJECT_TYPE (rtgui_object_type_get())
|
||||
/** Casts the object to an rtgui_object_t */
|
||||
#define RTGUI_OBJECT(obj) (RTGUI_OBJECT_CAST((obj), RTGUI_OBJECT_TYPE, rtgui_object_t))
|
||||
/** Checks if the object is an rtgui_Object */
|
||||
#define RTGUI_IS_OBJECT(obj) (RTGUI_OBJECT_CHECK_TYPE((obj), RTGUI_OBJECT_TYPE))
|
||||
|
||||
/* rtgui base object */
|
||||
struct rtgui_object
|
||||
{
|
||||
/* object type */
|
||||
rtgui_type_t* type;
|
||||
|
||||
rt_bool_t is_static;
|
||||
};
|
||||
rtgui_type_t *rtgui_object_type_get(void);
|
||||
|
||||
rtgui_object_t *rtgui_object_create(rtgui_type_t *object_type);
|
||||
void rtgui_object_destroy(rtgui_object_t *object);
|
||||
|
||||
void rtgui_object_name_set(rtgui_object_t *object, const char *name);
|
||||
const char *rtgui_object_name_get(rtgui_object_t *object);
|
||||
|
||||
rtgui_object_t *rtgui_object_check_cast(rtgui_object_t *object, rtgui_type_t *type);
|
||||
rtgui_type_t *rtk_object_object_type_get(rtgui_object_t *object);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,78 @@
|
||||
/*
|
||||
* File : rtgui_server.h
|
||||
* This file is part of RTGUI in RT-Thread RTOS
|
||||
* COPYRIGHT (C) 2006 - 2009, RT-Thread Development Team
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
* http://www.rt-thread.org/license/LICENSE
|
||||
*
|
||||
* Change Logs:
|
||||
* Date Author Notes
|
||||
* 2009-10-04 Bernard first version
|
||||
*/
|
||||
#ifndef __RTGUI_SERVER_H__
|
||||
#define __RTGUI_SERVER_H__
|
||||
|
||||
#include <rtgui/list.h>
|
||||
|
||||
/* RTGUI server definitions */
|
||||
|
||||
/* top window definitions in server */
|
||||
enum
|
||||
{
|
||||
WINTITLE_NO = 0x01,
|
||||
WINTITLE_BORDER = 0x02,
|
||||
WINTITLE_ACTIVATE = 0x04,
|
||||
WINTITLE_CLOSEBOX = 0x08,
|
||||
WINTITLE_MOVE = 0x0C,
|
||||
WINTITLE_CB_PRESSED = 0x10,
|
||||
WINTITLE_NOFOCUS = 0x20
|
||||
};
|
||||
|
||||
#define WINTITLE_HEIGHT 20
|
||||
#define WINTITLE_CB_WIDTH 16
|
||||
#define WINTITLE_CB_HEIGHT 16
|
||||
#define WINTITLE_BORDER_SIZE 2
|
||||
|
||||
struct rtgui_topwin
|
||||
{
|
||||
/* the window flag */
|
||||
rt_uint32_t flag;
|
||||
/* event mask */
|
||||
rt_uint32_t mask;
|
||||
|
||||
struct rtgui_wintitle* title;
|
||||
|
||||
/* the window id */
|
||||
struct rtgui_win* wid;
|
||||
|
||||
/* the thread id */
|
||||
rt_thread_t tid;
|
||||
|
||||
/* the extent information */
|
||||
rtgui_rect_t extent;
|
||||
|
||||
/* the top window list */
|
||||
rtgui_list_t list;
|
||||
|
||||
/* the monitor rect list */
|
||||
rtgui_list_t monitor_list;
|
||||
};
|
||||
typedef struct rtgui_topwin rtgui_topwin_t;
|
||||
|
||||
/* top win manager init */
|
||||
void rtgui_topwin_init(void);
|
||||
void rtgui_panel_init (void);
|
||||
void rtgui_server_init(void);
|
||||
|
||||
/* post an event to server */
|
||||
void rtgui_server_post_event(struct rtgui_event* event, rt_size_t size);
|
||||
|
||||
/* register or deregister panel in server */
|
||||
void rtgui_panel_register(char* name, rtgui_rect_t* extent);
|
||||
void rtgui_panel_deregister(char* name);
|
||||
void rtgui_panel_set_default_focused(char* name);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,81 @@
|
||||
/*
|
||||
* File : rtgui_system.h
|
||||
* This file is part of RTGUI in RT-Thread RTOS
|
||||
* COPYRIGHT (C) 2006 - 2009, RT-Thread Development Team
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
* http://www.rt-thread.org/license/LICENSE
|
||||
*
|
||||
* 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>
|
||||
|
||||
struct rtgui_dc;
|
||||
struct rtgui_event;
|
||||
struct rtgui_widget;
|
||||
|
||||
struct rtgui_thread
|
||||
{
|
||||
/* the thread id */
|
||||
rt_thread_t tid;
|
||||
|
||||
/* the message queue of thread */
|
||||
rt_mq_t mq;
|
||||
|
||||
/* the owner of thread */
|
||||
struct rtgui_widget* widget;
|
||||
};
|
||||
typedef struct rtgui_thread rtgui_thread_t;
|
||||
struct rtgui_timer;
|
||||
typedef void (*rtgui_timeout_func)(struct rtgui_timer* timer, void* parameter);
|
||||
|
||||
struct rtgui_timer
|
||||
{
|
||||
/* context thread id */
|
||||
rt_thread_t tid;
|
||||
/* rt timer */
|
||||
struct rt_timer timer;
|
||||
|
||||
/* 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_start(rtgui_timer_t* timer);
|
||||
void rtgui_timer_stop (rtgui_timer_t* timer);
|
||||
|
||||
void rtgui_thread_system_init(void);
|
||||
rtgui_thread_t* rtgui_thread_register(rt_thread_t tid, rt_mq_t mq);
|
||||
void rtgui_thread_deregister(rt_thread_t tid);
|
||||
|
||||
rt_thread_t rtgui_thread_get_server(void);
|
||||
|
||||
void rtgui_thread_set_widget(struct rtgui_widget* widget);
|
||||
struct rtgui_widget* rtgui_thread_get_widget(void);
|
||||
|
||||
rt_err_t rtgui_thread_send(rt_thread_t tid, struct rtgui_event* event, rt_size_t event_size);
|
||||
rt_err_t rtgui_thread_send_urgent(rt_thread_t tid, struct rtgui_event* event, rt_size_t event_size);
|
||||
rt_err_t rtgui_thread_send_sync(rt_thread_t tid, struct rtgui_event* event, rt_size_t event_size);
|
||||
rt_err_t rtgui_thread_recv(struct rtgui_event* event, rt_size_t event_size);
|
||||
rt_err_t rtgui_thread_recv_filter(rt_uint32_t type, struct rtgui_event* event, rt_size_t event_size);
|
||||
rt_err_t rtgui_thread_ack(struct rtgui_event* event, rt_int32_t status);
|
||||
|
||||
/* rtgui system initialization function */
|
||||
void rtgui_system_server_init(void);
|
||||
|
||||
void* rtgui_malloc(rt_size_t size);
|
||||
void rtgui_free(void* ptr);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,63 @@
|
||||
/*
|
||||
* File : rtgui_theme.h
|
||||
* This file is part of RTGUI in RT-Thread RTOS
|
||||
* COPYRIGHT (C) 2006 - 2009, RT-Thread Development Team
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
* http://www.rt-thread.org/license/LICENSE
|
||||
*
|
||||
* Change Logs:
|
||||
* Date Author Notes
|
||||
* 2009-10-04 Bernard first version
|
||||
*/
|
||||
#ifndef __RTGUI_THEME_H__
|
||||
#define __RTGUI_THEME_H__
|
||||
|
||||
#include <rtgui/rtgui.h>
|
||||
#include <rtgui/rtgui_server.h>
|
||||
|
||||
#define CHECK_BOX_W 13
|
||||
#define CHECK_BOX_H 13
|
||||
|
||||
#define RADIO_BOX_W 12
|
||||
#define RADIO_BOX_H 12
|
||||
|
||||
#include <rtgui/widgets/label.h>
|
||||
#include <rtgui/widgets/button.h>
|
||||
#include <rtgui/widgets/textbox.h>
|
||||
#include <rtgui/widgets/iconbox.h>
|
||||
#include <rtgui/widgets/checkbox.h>
|
||||
#include <rtgui/widgets/radiobox.h>
|
||||
#include <rtgui/widgets/slider.h>
|
||||
#include <rtgui/widgets/progressbar.h>
|
||||
#include <rtgui/widgets/staticline.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
void rtgui_system_theme_init(void);
|
||||
|
||||
void rtgui_theme_draw_win(struct rtgui_topwin* win);
|
||||
void rtgui_theme_draw_button(rtgui_button_t* btn);
|
||||
void rtgui_theme_draw_label(rtgui_label_t* label);
|
||||
void rtgui_theme_draw_textbox(rtgui_textbox_t* box);
|
||||
void rtgui_theme_draw_iconbox(rtgui_iconbox_t* iconbox);
|
||||
void rtgui_theme_draw_checkbox(rtgui_checkbox_t* checkbox);
|
||||
void rtgui_theme_draw_radiobox(struct rtgui_radiobox* radiobox);
|
||||
void rtgui_theme_draw_slider(struct rtgui_slider* slider);
|
||||
void rtgui_theme_draw_progressbar(struct rtgui_progressbar* bar);
|
||||
void rtgui_theme_draw_staticline(struct rtgui_staticline* staticline);
|
||||
|
||||
rt_uint16_t rtgui_theme_get_selected_height(void);
|
||||
void rtgui_theme_draw_selected(struct rtgui_dc* dc, rtgui_rect_t *rect);
|
||||
|
||||
rtgui_color_t rtgui_theme_default_bc(void);
|
||||
rtgui_color_t rtgui_theme_default_fc(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,45 @@
|
||||
/*
|
||||
* File : list_view.h
|
||||
* This file is part of RTGUI in RT-Thread RTOS
|
||||
* COPYRIGHT (C) 2010, RT-Thread Development Team
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
* http://www.rt-thread.org/license/LICENSE
|
||||
*
|
||||
* Change Logs:
|
||||
* Date Author Notes
|
||||
* 2010-01-06 Bernard first version
|
||||
*/
|
||||
|
||||
#ifndef __RTGUI_ABOUT_VIEW_H__
|
||||
#define __RTGUI_ABOUT_VIEW_H__
|
||||
|
||||
#include <rtgui/rtgui.h>
|
||||
#include <rtgui/image.h>
|
||||
#include <rtgui/rtgui_system.h>
|
||||
#include <rtgui/widgets/view.h>
|
||||
|
||||
/** Gets the type of a about view */
|
||||
#define RTGUI_ABOUT_VIEW_TYPE (rtgui_about_view_type_get())
|
||||
/** Casts the object to a about view */
|
||||
#define RTGUI_ABOUT_VIEW(obj) (RTGUI_OBJECT_CAST((obj), RTGUI_ABOUT_VIEW_TYPE, rtgui_about_view_t))
|
||||
/** Checks if the object is a about view */
|
||||
#define RTGUI_IS_ABOUT_VIEW(obj) (RTGUI_OBJECT_CHECK_TYPE((obj), RTGUI_ABOUT_VIEW_TYPE))
|
||||
|
||||
struct rtgui_about_view
|
||||
{
|
||||
struct rtgui_view parent;
|
||||
|
||||
/* widget private data */
|
||||
rtgui_image_t* logo;
|
||||
const char* description;
|
||||
};
|
||||
typedef struct rtgui_about_view rtgui_about_view_t;
|
||||
|
||||
rtgui_type_t *rtgui_about_view_type_get(void);
|
||||
|
||||
rtgui_about_view_t* rtgui_about_view_create(rtgui_image_t *logo, const char* description);
|
||||
rt_bool_t rtgui_about_view_event_handler(struct rtgui_widget* widget, struct rtgui_event* event);
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,58 @@
|
||||
/*
|
||||
* File : box.h
|
||||
* This file is part of RT-Thread RTOS
|
||||
* COPYRIGHT (C) 2006 - 2009, RT-Thread Development Team
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
* http://www.rt-thread.org/license/LICENSE
|
||||
*
|
||||
* 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
|
||||
|
||||
/** Gets the type of a box */
|
||||
#define RTGUI_BOX_TYPE (rtgui_box_type_get())
|
||||
/** 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_container parent;
|
||||
|
||||
rt_uint16_t orientation;
|
||||
rt_uint16_t border_size;
|
||||
};
|
||||
typedef struct rtgui_box rtgui_box_t;
|
||||
|
||||
rtgui_type_t *rtgui_box_type_get(void);
|
||||
|
||||
struct rtgui_box* rtgui_box_create(int orientation, rtgui_rect_t* rect);
|
||||
void rtgui_box_destroy(struct rtgui_box* box);
|
||||
|
||||
rt_bool_t rtgui_box_event_handler(rtgui_widget_t* widget, rtgui_event_t* event);
|
||||
|
||||
void rtgui_box_append(rtgui_box_t* box, rtgui_widget_t* widget);
|
||||
void rtgui_box_layout(rtgui_box_t* box);
|
||||
|
||||
rt_uint32_t rtgui_box_get_width(rtgui_box_t* box);
|
||||
rt_uint32_t rtgui_box_get_height(rtgui_box_t* box);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,82 @@
|
||||
/*
|
||||
* File : button.h
|
||||
* This file is part of RT-Thread RTOS
|
||||
* COPYRIGHT (C) 2006 - 2009, RT-Thread Development Team
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
* http://www.rt-thread.org/license/LICENSE
|
||||
*
|
||||
* Change Logs:
|
||||
* Date Author Notes
|
||||
* 2009-10-16 Bernard first version
|
||||
*/
|
||||
#ifndef __RTGUI_BUTTON_H__
|
||||
#define __RTGUI_BUTTON_H__
|
||||
|
||||
#include <rtgui/image.h>
|
||||
#include <rtgui/widgets/widget.h>
|
||||
#include <rtgui/widgets/label.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @defgroup rtgui_button
|
||||
* @{
|
||||
*/
|
||||
|
||||
/** Gets the type of a button */
|
||||
#define RTGUI_BUTTON_TYPE (rtgui_button_type_get())
|
||||
/** Casts the object to an rtgui_button */
|
||||
#define RTGUI_BUTTON(obj) (RTGUI_OBJECT_CAST((obj), RTGUI_BUTTON_TYPE, rtgui_button_t))
|
||||
/** Checks if the object is an rtgui_button */
|
||||
#define RTGUI_IS_BUTTON(obj) (RTGUI_OBJECT_CHECK_TYPE((obj), RTGUI_BUTTON_TYPE))
|
||||
|
||||
#define RTGUI_BUTTON_FLAG_PRESS 0x01
|
||||
#define RTGUI_BUTTON_FLAG_DEFAULT 0x02
|
||||
|
||||
#define RTGUI_BUTTON_TYPE_NORMAL 0x00
|
||||
#define RTGUI_BUTTON_TYPE_PUSH 0x10
|
||||
|
||||
/*
|
||||
* the button widget
|
||||
*/
|
||||
struct rtgui_button
|
||||
{
|
||||
/* inherit from label */
|
||||
struct rtgui_label parent;
|
||||
|
||||
/* button flag */
|
||||
rt_base_t flag;
|
||||
|
||||
/* pressed and unpressed image */
|
||||
rtgui_image_t *pressed_image, *unpressed_image;
|
||||
|
||||
/* click button event handler */
|
||||
void (*on_button)(struct rtgui_widget* widget, rtgui_event_t *event);
|
||||
};
|
||||
typedef struct rtgui_button rtgui_button_t;
|
||||
typedef void (*rtgui_onbutton_func_t)(struct rtgui_widget* widget, rtgui_event_t *event);
|
||||
|
||||
rtgui_type_t *rtgui_button_type_get(void);
|
||||
|
||||
rtgui_button_t* rtgui_button_create(char* text);
|
||||
rtgui_button_t* rtgui_pushbutton_create(char* text);
|
||||
void rtgui_button_destroy(rtgui_button_t* btn);
|
||||
|
||||
void rtgui_button_set_pressed_image(rtgui_button_t* btn, rtgui_image_t* image);
|
||||
void rtgui_button_set_unpressed_image(rtgui_button_t* btn, rtgui_image_t* image);
|
||||
|
||||
void rtgui_button_set_onbutton(rtgui_button_t* btn, rtgui_onbutton_func_t func);
|
||||
|
||||
rt_bool_t rtgui_button_event_handler(struct rtgui_widget* widget, struct rtgui_event* event);
|
||||
|
||||
/** @} */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,38 @@
|
||||
#ifndef __RTGUI_CHECKBOX_H__
|
||||
#define __RTGUI_CHECKBOX_H__
|
||||
|
||||
#include <rtgui/rtgui.h>
|
||||
#include <rtgui/widgets/widget.h>
|
||||
#include <rtgui/widgets/label.h>
|
||||
|
||||
/** Gets the type of a button */
|
||||
#define RTGUI_CHECKBOX_TYPE (rtgui_checkbox_type_get())
|
||||
/** Casts the object to an rtgui_button */
|
||||
#define RTGUI_CHECKBOX(obj) (RTGUI_OBJECT_CAST((obj), RTGUI_CHECKBOX_TYPE, rtgui_checkbox))
|
||||
/** Checks if the object is an rtgui_button */
|
||||
#define RTGUI_IS_CHECKBOX(obj) (RTGUI_OBJECT_CHECK_TYPE((obj), RTGUI_CHECKBOX_TYPE))
|
||||
|
||||
#define RTGUI_CHECKBOX_STATUS_CHECKED 0
|
||||
#define RTGUI_CHECKBOX_STATUS_UNCHECKED 1
|
||||
|
||||
struct rtgui_checkbox
|
||||
{
|
||||
/* inherit from label */
|
||||
struct rtgui_label parent;
|
||||
|
||||
/* check box status */
|
||||
rt_uint8_t status_down;
|
||||
};
|
||||
typedef struct rtgui_checkbox rtgui_checkbox_t;
|
||||
|
||||
rtgui_type_t *rtgui_checkbox_type_get(void);
|
||||
|
||||
rtgui_checkbox_t* rtgui_checkbox_create(unsigned char* text, rt_bool_t checked);
|
||||
void rtgui_checkbox_destroy(rtgui_checkbox_t* checkbox);
|
||||
|
||||
void rtgui_checkbox_set_checked(rtgui_checkbox_t* checkbox, rt_bool_t checked);
|
||||
rt_bool_t rtgui_checkbox_get_checked(rtgui_checkbox_t* checkbox);
|
||||
|
||||
rt_bool_t rtgui_checkbox_event_handler(struct rtgui_widget* widget, struct rtgui_event* event);
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,48 @@
|
||||
/*
|
||||
* File : container.h
|
||||
* This file is part of RT-Thread RTOS
|
||||
* COPYRIGHT (C) 2006 - 2009, RT-Thread Development Team
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
* http://www.rt-thread.org/license/LICENSE
|
||||
*
|
||||
* Change Logs:
|
||||
* Date Author Notes
|
||||
* 2009-10-16 Bernard first version
|
||||
*/
|
||||
#ifndef __RTGUI_CONTAINER_H__
|
||||
#define __RTGUI_CONTAINER_H__
|
||||
|
||||
#include <rtgui/widgets/widget.h>
|
||||
|
||||
/** Gets the type of a container */
|
||||
#define RTGUI_CONTAINER_TYPE (rtgui_container_type_get())
|
||||
/** Casts the object to a rtgui_container */
|
||||
#define RTGUI_CONTAINER(obj) (RTGUI_OBJECT_CAST((obj), RTGUI_CONTAINER_TYPE, rtgui_container_t))
|
||||
/** Checks if the object is a rtgui_container */
|
||||
#define RTGUI_IS_CONTAINER(obj) (RTGUI_OBJECT_CHECK_TYPE((obj), RTGUI_CONTAINER_TYPE))
|
||||
|
||||
struct rtgui_container
|
||||
{
|
||||
/* inherit from widget */
|
||||
struct rtgui_widget parent;
|
||||
|
||||
struct rtgui_widget* focused;
|
||||
rtgui_list_t children;
|
||||
};
|
||||
typedef struct rtgui_container rtgui_container_t;
|
||||
|
||||
rtgui_type_t *rtgui_container_type_get(void);
|
||||
|
||||
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(rtgui_widget_t* 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);
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,56 @@
|
||||
#ifndef __RTGUI_FILELIST_VIEW_H__
|
||||
#define __RTGUI_FILELIST_VIEW_H__
|
||||
|
||||
#include <rtgui/widgets/view.h>
|
||||
|
||||
#define RTGUI_FITEM_FILE 0x0
|
||||
#define RTGUI_FITEM_DIR 0x1
|
||||
struct rtgui_file_item
|
||||
{
|
||||
char* name;
|
||||
|
||||
rt_uint32_t type;
|
||||
rt_uint32_t size;
|
||||
};
|
||||
|
||||
/** Gets the type of a filelist view */
|
||||
#define RTGUI_FILELIST_VIEW_TYPE (rtgui_filelist_view_type_get())
|
||||
/** Casts the object to a filelist */
|
||||
#define RTGUI_FILELIST_VIEW(obj) (RTGUI_OBJECT_CAST((obj), RTGUI_FILELIST_VIEW_TYPE, rtgui_filelist_view_t))
|
||||
/** Checks if the object is a filelist view */
|
||||
#define RTGUI_IS_FILELIST_VIEW(obj) (RTGUI_OBJECT_CHECK_TYPE((obj), RTGUI_FILELIST_VIEW_TYPE))
|
||||
|
||||
struct rtgui_filelist_view
|
||||
{
|
||||
struct rtgui_view parent;
|
||||
|
||||
/* widget private data */
|
||||
|
||||
/* current directory */
|
||||
char* current_directory;
|
||||
char* pattern;
|
||||
|
||||
/* the number of item in a page */
|
||||
rt_uint16_t page_items;
|
||||
rt_uint16_t items_count;
|
||||
|
||||
/* the selected item */
|
||||
rt_uint16_t current_item;
|
||||
|
||||
/* items array */
|
||||
struct rtgui_file_item *items;
|
||||
};
|
||||
typedef struct rtgui_filelist_view rtgui_filelist_view_t;
|
||||
|
||||
rtgui_type_t *rtgui_filelist_view_type_get(void);
|
||||
|
||||
rtgui_filelist_view_t* rtgui_filelist_view_create(rtgui_workbench_t* workbench,
|
||||
const char* directory, const char* pattern, const rtgui_rect_t* rect);
|
||||
void rtgui_filelist_view_destroy(rtgui_filelist_view_t* view);
|
||||
|
||||
rt_bool_t rtgui_filelist_view_event_handler(struct rtgui_widget* widget, struct rtgui_event* event);
|
||||
void rtgui_filelist_view_set_directory(rtgui_filelist_view_t* view, const char* directory);
|
||||
|
||||
void rtgui_filelist_get_fullpath(rtgui_filelist_view_t* view, char* path, rt_size_t len);
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,56 @@
|
||||
/*
|
||||
* File : iconbox.h
|
||||
* This file is part of RT-Thread RTOS
|
||||
* COPYRIGHT (C) 2006 - 2009, RT-Thread Development Team
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
* http://www.rt-thread.org/license/LICENSE
|
||||
*
|
||||
* Change Logs:
|
||||
* Date Author Notes
|
||||
* 2009-10-16 Bernard first version
|
||||
*/
|
||||
#ifndef __RTGUI_ICONBOX_H__
|
||||
#define __RTGUI_ICONBOX_H__
|
||||
|
||||
#include <rtgui/rtgui.h>
|
||||
#include <rtgui/image.h>
|
||||
#include <rtgui/widgets/widget.h>
|
||||
|
||||
/** Gets the type of a iconbox */
|
||||
#define RTGUI_ICONBOX_TYPE (rtgui_iconbox_type_get())
|
||||
/** Casts the object to a rtgui_iconbox */
|
||||
#define RTGUI_ICONBOX(obj) (RTGUI_OBJECT_CAST((obj), RTGUI_ICONBOX_TYPE, rtgui_iconbox_t))
|
||||
/** Checks if the object is a rtgui_iconbox */
|
||||
#define RTGUI_IS_ICONBOX(obj) (RTGUI_OBJECT_CHECK_TYPE((obj), RTGUI_ICONBOX_TYPE))
|
||||
|
||||
#define RTGUI_ICONBOX_NOTEXT 0x00
|
||||
#define RTGUI_ICONBOX_TEXT_RIGHT 0x01
|
||||
#define RTGUI_ICONBOX_TEXT_BELOW 0x02
|
||||
|
||||
struct rtgui_iconbox
|
||||
{
|
||||
/* inherit from widget */
|
||||
struct rtgui_widget parent;
|
||||
|
||||
/* widget private data */
|
||||
struct rtgui_image* image;
|
||||
|
||||
char *text;
|
||||
rt_ubase_t text_position;
|
||||
|
||||
rt_bool_t selected;
|
||||
};
|
||||
typedef struct rtgui_iconbox rtgui_iconbox_t;
|
||||
|
||||
rtgui_type_t *rtgui_iconbox_type_get(void);
|
||||
|
||||
struct rtgui_iconbox* rtgui_iconbox_create(struct rtgui_image* image, const char* text, int position);
|
||||
void rtgui_iconbox_destroy(struct rtgui_iconbox* iconbox);
|
||||
|
||||
rt_bool_t rtgui_iconbox_event_handler(struct rtgui_widget* widget, struct rtgui_event* event);
|
||||
|
||||
void rtgui_iconbox_set_text_position(struct rtgui_iconbox* iconbox, int position);
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,49 @@
|
||||
/*
|
||||
* File : label.h
|
||||
* This file is part of RT-Thread RTOS
|
||||
* COPYRIGHT (C) 2006 - 2009, RT-Thread Development Team
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
* http://www.rt-thread.org/license/LICENSE
|
||||
*
|
||||
* Change Logs:
|
||||
* Date Author Notes
|
||||
* 2009-10-16 Bernard first version
|
||||
*/
|
||||
#ifndef __RTGUI_LABEL_H__
|
||||
#define __RTGUI_LABEL_H__
|
||||
|
||||
#include <rtgui/rtgui.h>
|
||||
#include <rtgui/widgets/widget.h>
|
||||
|
||||
/** Gets the type of a button */
|
||||
#define RTGUI_LABEL_TYPE (rtgui_label_type_get())
|
||||
/** Casts the object to an rtgui_button */
|
||||
#define RTGUI_LABEL(obj) (RTGUI_OBJECT_CAST((obj), RTGUI_LABEL_TYPE, rtgui_label_t))
|
||||
/** Checks if the object is an rtgui_button */
|
||||
#define RTGUI_IS_LABEL(obj) (RTGUI_OBJECT_CHECK_TYPE((obj), RTGUI_LABEL_TYPE))
|
||||
|
||||
/*
|
||||
* the label widget
|
||||
*/
|
||||
struct rtgui_label
|
||||
{
|
||||
struct rtgui_widget parent;
|
||||
|
||||
/* label */
|
||||
char* text;
|
||||
};
|
||||
typedef struct rtgui_label rtgui_label_t;
|
||||
|
||||
rtgui_type_t *rtgui_label_type_get(void);
|
||||
|
||||
rtgui_label_t* rtgui_label_create(const char* text);
|
||||
void rtgui_label_destroy(rtgui_label_t* label);
|
||||
|
||||
rt_bool_t rtgui_label_event_handler(struct rtgui_widget* widget, struct rtgui_event* event);
|
||||
|
||||
void rtgui_label_set_text(rtgui_label_t* label, const char* text);
|
||||
char* rtgui_label_get_text(rtgui_label_t* label);
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,67 @@
|
||||
/*
|
||||
* File : list_view.h
|
||||
* This file is part of RTGUI in RT-Thread RTOS
|
||||
* COPYRIGHT (C) 2010, RT-Thread Development Team
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
* http://www.rt-thread.org/license/LICENSE
|
||||
*
|
||||
* Change Logs:
|
||||
* Date Author Notes
|
||||
* 2010-01-06 Bernard first version
|
||||
*/
|
||||
|
||||
#ifndef __RTGUI_LIST_VIEW_H__
|
||||
#define __RTGUI_LIST_VIEW_H__
|
||||
|
||||
#include <rtgui/rtgui.h>
|
||||
#include <rtgui/image.h>
|
||||
#include <rtgui/rtgui_system.h>
|
||||
|
||||
#include <rtgui/widgets/view.h>
|
||||
|
||||
typedef void (*item_action)(void* parameter);
|
||||
struct rtgui_list_item
|
||||
{
|
||||
char* name;
|
||||
rtgui_image_t *image;
|
||||
|
||||
item_action action;
|
||||
void *parameter;
|
||||
};
|
||||
|
||||
/** Gets the type of a list view */
|
||||
#define RTGUI_LIST_VIEW_TYPE (rtgui_list_view_type_get())
|
||||
/** Casts the object to a filelist */
|
||||
#define RTGUI_LIST_VIEW(obj) (RTGUI_OBJECT_CAST((obj), RTGUI_LIST_VIEW_TYPE, rtgui_list_view_t))
|
||||
/** Checks if the object is a filelist view */
|
||||
#define RTGUI_IS_LIST_VIEW(obj) (RTGUI_OBJECT_CHECK_TYPE((obj), RTGUI_LIST_VIEW_TYPE))
|
||||
|
||||
struct rtgui_list_view
|
||||
{
|
||||
struct rtgui_view parent;
|
||||
|
||||
/* widget private data */
|
||||
/* list item */
|
||||
const struct rtgui_list_item* items;
|
||||
|
||||
/* total number of items */
|
||||
rt_uint16_t items_count;
|
||||
/* the number of item in a page */
|
||||
rt_uint16_t page_items;
|
||||
/* current item */
|
||||
rt_uint16_t current_item;
|
||||
};
|
||||
typedef struct rtgui_list_view rtgui_list_view_t;
|
||||
|
||||
rtgui_type_t *rtgui_list_view_type_get(void);
|
||||
|
||||
rtgui_list_view_t* rtgui_list_view_create(const struct rtgui_list_item* items, rt_uint16_t count,
|
||||
rtgui_rect_t *rect);
|
||||
void rtgui_list_view_destroy(rtgui_list_view_t* view);
|
||||
|
||||
rt_bool_t rtgui_list_view_event_handler(struct rtgui_widget* widget, struct rtgui_event* event);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,41 @@
|
||||
#ifndef __RTGUI_PROGRESSBAR_H__
|
||||
#define __RTGUI_PROGRESSBAR_H__
|
||||
|
||||
#include <rtgui/rtgui.h>
|
||||
#include <rtgui/widgets/widget.h>
|
||||
|
||||
/** Gets the type of a progressbar */
|
||||
#define RTGUI_PROGRESSBAR_TYPE (rtgui_progressbar_type_get())
|
||||
/** Casts the object to a rtgui_progressbar */
|
||||
#define RTGUI_PROGRESSBAR(obj) (RTGUI_OBJECT_CAST((obj), RTGUI_PROGRESSBAR_TYPE, rtgui_progressbar_t))
|
||||
/** Checks if the object is a rtgui_progressbar */
|
||||
#define RTGUI_IS_PROGRESSBAR(obj) (RTGUI_OBJECT_CHECK_TYPE((obj), RTGUI_PROGRESSBAR_TYPE))
|
||||
|
||||
#define DEFAULT_WIDTH 100
|
||||
#define DEFAULT_HEIGHT 20
|
||||
|
||||
struct rtgui_progressbar
|
||||
{
|
||||
struct rtgui_widget parent;
|
||||
|
||||
int orientation;
|
||||
|
||||
int range;
|
||||
int position;
|
||||
};
|
||||
typedef struct rtgui_progressbar rtgui_progressbar_t;
|
||||
|
||||
rtgui_type_t *rtgui_progressbar_type_get(void);
|
||||
|
||||
struct rtgui_progressbar* rtgui_progressbar_create(int orientation, int range, rtgui_rect_t* r);
|
||||
void rtgui_progressbar_destroy(struct rtgui_progressbar* p_bar);
|
||||
|
||||
rt_bool_t rtgui_progressbar_event_handler(struct rtgui_widget* widget,
|
||||
struct rtgui_event* event);
|
||||
|
||||
void rtgui_progressbar_set_value(struct rtgui_progressbar *p_bar, int value);
|
||||
int rtgui_progressbar_get_value(struct rtgui_progressbar *p_bar);
|
||||
void rtgui_progressbar_set_range(struct rtgui_progressbar *p_bar, int range);
|
||||
int rtgui_progressbar_get_range(struct rtgui_progressbar *p_bar);
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,46 @@
|
||||
#ifndef __RTGUI_RADIOBOX_H__
|
||||
#define __RTGUI_RADIOBOX_H__
|
||||
|
||||
#include <rtgui/rtgui.h>
|
||||
#include <rtgui/widgets/widget.h>
|
||||
|
||||
/** Gets the type of a radiobox */
|
||||
#define RTGUI_RADIOBOX_TYPE (rtgui_radiobox_type_get())
|
||||
/** Casts the object to an rtgui_radiobox */
|
||||
#define RTGUI_RADIOBOX(obj) (RTGUI_OBJECT_CAST((obj), RTGUI_RADIOBOX_TYPE, rtgui_radiobox_t))
|
||||
/** Checks if the object is an rtgui_radiobox */
|
||||
#define RTGUI_IS_RADIOBOX(obj) (RTGUI_OBJECT_CHECK_TYPE((obj), RTGUI_RADIOBOX_TYPE))
|
||||
|
||||
struct rtgui_radiobox
|
||||
{
|
||||
struct rtgui_widget parent;
|
||||
|
||||
/* widget private data */
|
||||
char* text; /* radio box label */
|
||||
|
||||
/* box orient */
|
||||
rt_uint8_t orient;
|
||||
|
||||
/* item size */
|
||||
rt_uint8_t item_size;
|
||||
|
||||
char** items;
|
||||
rt_uint16_t item_count;
|
||||
rt_int16_t item_selection;
|
||||
};
|
||||
typedef struct rtgui_radiobox rtgui_radiobox_t;
|
||||
|
||||
rtgui_type_t *rtgui_radiobox_type_get(void);
|
||||
|
||||
struct rtgui_radiobox* rtgui_radiobox_create(const char* label, int orient, char** radio_items, int number);
|
||||
void rtgui_radiobox_destroy(struct rtgui_radiobox* radiobox);
|
||||
|
||||
void rtgui_radiobox_set_selection(struct rtgui_radiobox* radiobox, int selection);
|
||||
int rtgui_radiobox_get_selection(struct rtgui_radiobox* radiobox);
|
||||
|
||||
rt_bool_t rtgui_radiobox_event_handler(struct rtgui_widget* widget, struct rtgui_event* event);
|
||||
|
||||
void rtgui_radiobox_set_orientation(struct rtgui_radiobox* radiobox, int orientation);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
#ifndef __RTGUI_SLIDER_H__
|
||||
#define __RTGUI_SLIDER_H__
|
||||
|
||||
#include <rtgui/rtgui.h>
|
||||
#include <rtgui/widgets/widget.h>
|
||||
|
||||
/** Gets the type of a slider */
|
||||
#define RTGUI_SLIDER_TYPE (rtgui_slider_type_get())
|
||||
/** Casts the object to an rtgui_slider */
|
||||
#define RTGUI_SLIDER(obj) (RTGUI_OBJECT_CAST((obj), RTGUI_SLIDER_TYPE, rtgui_slider_t))
|
||||
/** Checks if the object is an rtgui_slider */
|
||||
#define RTGUI_IS_SLIDER(obj) (RTGUI_OBJECT_CHECK_TYPE((obj), RTGUI_SLIDER_TYPE))
|
||||
|
||||
struct rtgui_slider
|
||||
{
|
||||
struct rtgui_widget parent;
|
||||
|
||||
/* widget private data */
|
||||
rt_size_t min, max, value, ticks;
|
||||
rt_size_t thumb_width;
|
||||
|
||||
int orient;
|
||||
};
|
||||
typedef struct rtgui_slider rtgui_slider_t;
|
||||
|
||||
rtgui_type_t *rtgui_slider_type_get(void);
|
||||
|
||||
struct rtgui_slider* rtgui_slider_create(rt_size_t min, rt_size_t max, int orient);
|
||||
void rtgui_slider_destroy(struct rtgui_slider* slider);
|
||||
|
||||
rt_bool_t rtgui_slider_event_handler(struct rtgui_widget* widget, struct rtgui_event* event);
|
||||
|
||||
void rtgui_slider_set_range(struct rtgui_slider* slider, rt_size_t min, rt_size_t max);
|
||||
void rtgui_slider_set_value(struct rtgui_slider* slider, rt_size_t value);
|
||||
void rtgui_slider_set_orientation(struct rtgui_slider* slider, int orientation);
|
||||
|
||||
rt_size_t rtgui_slider_get_value(struct rtgui_slider* slider);
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,34 @@
|
||||
#ifndef __RTGUI_STATICLINE__H__
|
||||
#define __RTGUI_STATICLINE__H__
|
||||
|
||||
#include <rtgui/rtgui.h>
|
||||
#include <rtgui/widgets/widget.h>
|
||||
|
||||
/*
|
||||
* the static line widget
|
||||
*/
|
||||
|
||||
/** Gets the type of a staticline */
|
||||
#define RTGUI_STATICLINE_TYPE (rtgui_staticline_type_get())
|
||||
/** Casts the object to an rtgui_staticline */
|
||||
#define RTGUI_STATICLINE(obj) (RTGUI_OBJECT_CAST((obj), RTGUI_STATICLINE_TYPE, rtgui_staticline_t))
|
||||
/** Checks if the object is an rtgui_staticline */
|
||||
#define RTGUI_IS_STATICLINE(obj) (RTGUI_OBJECT_CHECK_TYPE((obj), RTGUI_STATICLINE_TYPE))
|
||||
|
||||
struct rtgui_staticline
|
||||
{
|
||||
/* inherit from widget */
|
||||
struct rtgui_widget parent;
|
||||
|
||||
int orientation;
|
||||
};
|
||||
typedef struct rtgui_staticline rtgui_staticline_t;
|
||||
|
||||
rtgui_staticline_t *rtgui_staticline_create(int orientation);
|
||||
void rtgui_staticline_destroy(rtgui_staticline_t* staticline);
|
||||
|
||||
rt_bool_t rtgui_staticline_event_handler(struct rtgui_widget* widget, struct rtgui_event* event);
|
||||
void rtgui_staticline_set_orientation(rtgui_staticline_t* staticline, int orientation);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,76 @@
|
||||
/*
|
||||
* File : textbox.h
|
||||
* This file is part of RT-Thread RTOS
|
||||
* COPYRIGHT (C) 2006 - 2009, RT-Thread Development Team
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
* http://www.rt-thread.org/license/LICENSE
|
||||
*
|
||||
* Change Logs:
|
||||
* Date Author Notes
|
||||
* 2009-10-16 Bernard first version
|
||||
*/
|
||||
#ifndef __RTGUI_TEXTBOX_H__
|
||||
#define __RTGUI_TEXTBOX_H__
|
||||
|
||||
#include <rtgui/rtgui.h>
|
||||
#include <rtgui/widgets/widget.h>
|
||||
|
||||
/** Gets the type of a textbox */
|
||||
#define RTGUI_TEXTBOX_TYPE (rtgui_textbox_type_get())
|
||||
/** Casts the object to a rtgui_textbox */
|
||||
#define RTGUI_TEXTBOX(obj) (RTGUI_OBJECT_CAST((obj), RTGUI_TEXTBOX_TYPE, rtgui_textbox_t))
|
||||
/** Checks if the object is a rtgui_textbox */
|
||||
#define RTGUI_IS_TEXTBOX(obj) (RTGUI_OBJECT_CHECK_TYPE((obj), RTGUI_TEXTBOX_TYPE))
|
||||
|
||||
#define RTGUI_TEXTBOX_DEFAULT_WIDTH 80
|
||||
#define RTGUI_TEXTBOX_DEFAULT_HEIGHT 20
|
||||
|
||||
#define RTGUI_TEXTBOX_SINGLE 0x00
|
||||
#define RTGUI_TEXTBOX_MULTI 0x01
|
||||
#define RTGUI_TEXTBOX_MASK 0x02
|
||||
#define RTGUI_TEXTBOX_CARET_SHOW 0x10
|
||||
#define RTGUI_TEXTBOX_CARET_HIDE 0x00
|
||||
|
||||
struct rtgui_textbox_line
|
||||
{
|
||||
char* line_text;
|
||||
|
||||
struct rtgui_textbox_line *prev, *next;
|
||||
};
|
||||
|
||||
struct rtgui_textbox
|
||||
{
|
||||
/* inherit from widget */
|
||||
struct rtgui_widget parent;
|
||||
|
||||
/* text box flag */
|
||||
rt_uint8_t flag;
|
||||
|
||||
/* current line and position */
|
||||
rt_uint16_t line, line_begin, position, line_length;
|
||||
|
||||
char* text;
|
||||
rt_size_t font_width;
|
||||
|
||||
struct rtgui_timer* caret_timer;
|
||||
|
||||
/* widget private data */
|
||||
rt_bool_t (*on_enter) (struct rtgui_widget* widget, struct rtgui_event* event);
|
||||
};
|
||||
typedef struct rtgui_textbox rtgui_textbox_t;
|
||||
|
||||
rtgui_type_t *rtgui_textbox_type_get(void);
|
||||
|
||||
struct rtgui_textbox* rtgui_textbox_create(const char* text, rt_uint8_t flag);
|
||||
void rtgui_textbox_destroy(struct rtgui_textbox* box);
|
||||
|
||||
rt_bool_t rtgui_textbox_event_handler(struct rtgui_widget* widget, struct rtgui_event* event);
|
||||
|
||||
void rtgui_textbox_set_value(struct rtgui_textbox* box, const char* text);
|
||||
const char* rtgui_textbox_get_value(struct rtgui_textbox* box);
|
||||
|
||||
void rtgui_textbox_set_line_length(struct rtgui_textbox* box, rt_size_t length);
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,45 @@
|
||||
/*
|
||||
* File : title.h
|
||||
* This file is part of RT-Thread RTOS
|
||||
* COPYRIGHT (C) 2006 - 2009, RT-Thread Development Team
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
* http://www.rt-thread.org/license/LICENSE
|
||||
*
|
||||
* Change Logs:
|
||||
* Date Author Notes
|
||||
* 2009-10-16 Bernard first version
|
||||
*/
|
||||
#ifndef __RTGUI_TITLE__
|
||||
#define __RTGUI_TITLE__
|
||||
|
||||
#include <rtgui/widgets/toplevel.h>
|
||||
|
||||
/** Gets the type of a top win */
|
||||
#define RTGUI_WINTITLE_TYPE (rtgui_wintitle_type_get())
|
||||
/** 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_toplevel parent;
|
||||
|
||||
/* title */
|
||||
char* title;
|
||||
};
|
||||
typedef struct rtgui_wintitle rtgui_wintitle_t;
|
||||
|
||||
rtgui_type_t* rtgui_wintitle_type_get(void);
|
||||
|
||||
rtgui_wintitle_t* rtgui_wintitle_create(const char* title);
|
||||
void rtgui_wintitle_destroy(rtgui_wintitle_t* wintitle);
|
||||
|
||||
rt_bool_t rtgui_wintile_event_handler(rtgui_widget_t* widget, rtgui_event_t* event);
|
||||
|
||||
void rtgui_wintitle_set_title(rtgui_wintitle_t* wintitle, const char* title);
|
||||
char *rtgui_wintitle_get_title(rtgui_wintitle_t* wintitle);
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,51 @@
|
||||
/*
|
||||
* File : toplevel.h
|
||||
* This file is part of RT-Thread RTOS
|
||||
* COPYRIGHT (C) 2006 - 2009, RT-Thread Development Team
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
* http://www.rt-thread.org/license/LICENSE
|
||||
*
|
||||
* Change Logs:
|
||||
* Date Author Notes
|
||||
* 2009-10-16 Bernard first version
|
||||
*/
|
||||
#ifndef __RTGUI_TOPLEVEL_H__
|
||||
#define __RTGUI_TOPLEVEL_H__
|
||||
|
||||
#include <rtgui/widgets/container.h>
|
||||
|
||||
/** Gets the type of a toplevel */
|
||||
#define RTGUI_TOPLEVEL_TYPE (rtgui_toplevel_type_get())
|
||||
/** Casts the object to an rtgui_toplevel */
|
||||
#define RTGUI_TOPLEVEL(obj) (RTGUI_OBJECT_CAST((obj), RTGUI_TOPLEVEL_TYPE, rtgui_toplevel_t))
|
||||
/** Checks if the object is an rtgui_toplevel */
|
||||
#define RTGUI_IS_TOPLEVEL(obj) (RTGUI_OBJECT_CHECK_TYPE((obj), RTGUI_TOPLEVEL_TYPE))
|
||||
|
||||
struct rtgui_toplevel
|
||||
{
|
||||
/* inherit from container */
|
||||
rtgui_container_t parent;
|
||||
|
||||
/* drawing count */
|
||||
rt_base_t drawing;
|
||||
|
||||
/* external clip info */
|
||||
rtgui_rect_t* external_clip_rect;
|
||||
rt_uint32_t external_clip_size;
|
||||
|
||||
/* server thread id */
|
||||
rt_thread_t server;
|
||||
};
|
||||
typedef struct rtgui_toplevel rtgui_toplevel_t;
|
||||
|
||||
rtgui_type_t *rtgui_toplevel_type_get(void);
|
||||
|
||||
rt_bool_t rtgui_toplevel_event_handler(rtgui_widget_t* widget, rtgui_event_t* event);
|
||||
|
||||
void rtgui_toplevel_handle_clip(struct rtgui_toplevel* top,
|
||||
struct rtgui_event_clip_info* info);
|
||||
void rtgui_toplevel_update_clip(rtgui_toplevel_t* top);
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,67 @@
|
||||
/*
|
||||
* File : view.h
|
||||
* This file is part of RT-Thread RTOS
|
||||
* COPYRIGHT (C) 2006 - 2009, RT-Thread Development Team
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
* http://www.rt-thread.org/license/LICENSE
|
||||
*
|
||||
* Change Logs:
|
||||
* Date Author Notes
|
||||
* 2009-10-16 Bernard first version
|
||||
*/
|
||||
#ifndef __RTGUI_VIEW_H__
|
||||
#define __RTGUI_VIEW_H__
|
||||
|
||||
#include <rtgui/widgets/box.h>
|
||||
#include <rtgui/widgets/container.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/** Gets the type of a view */
|
||||
#define RTGUI_VIEW_TYPE (rtgui_view_type_get())
|
||||
/** Casts the object to an rtgui_view */
|
||||
#define RTGUI_VIEW(obj) (RTGUI_OBJECT_CAST((obj), RTGUI_VIEW_TYPE, rtgui_view_t))
|
||||
/** Checks if the object is an rtgui_view */
|
||||
#define RTGUI_IS_VIEW(obj) (RTGUI_OBJECT_CHECK_TYPE((obj), RTGUI_VIEW_TYPE))
|
||||
|
||||
/*
|
||||
* the view widget
|
||||
*/
|
||||
struct rtgui_view
|
||||
{
|
||||
/* inherit from container */
|
||||
struct rtgui_container parent;
|
||||
|
||||
/* private field */
|
||||
char* title;
|
||||
rt_bool_t modal_show;
|
||||
};
|
||||
typedef struct rtgui_view rtgui_view_t;
|
||||
|
||||
rtgui_type_t *rtgui_view_type_get(void);
|
||||
|
||||
rtgui_view_t* rtgui_view_create(const char* title);
|
||||
void rtgui_view_destroy(rtgui_view_t* view);
|
||||
|
||||
rt_bool_t rtgui_view_event_handler(struct rtgui_widget* widget, struct rtgui_event* event);
|
||||
|
||||
#ifndef RTGUI_USING_SMALL_SIZE
|
||||
void rtgui_view_set_box(rtgui_view_t* view, rtgui_box_t* box);
|
||||
#endif
|
||||
|
||||
rtgui_modal_code_t rtgui_view_show(rtgui_view_t* view, rt_bool_t is_modal);
|
||||
void rtgui_view_hide(rtgui_view_t* view);
|
||||
void rtgui_view_end_modal(rtgui_view_t* view, rtgui_modal_code_t modal_code);
|
||||
|
||||
char* rtgui_view_get_title(rtgui_view_t* view);
|
||||
void rtgui_view_set_title(rtgui_view_t* view, const char* title);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,180 @@
|
||||
/*
|
||||
* File : widget.h
|
||||
* This file is part of RTGUI in RT-Thread RTOS
|
||||
* COPYRIGHT (C) 2006 - 2009, RT-Thread Development Team
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
* http://www.rt-thread.org/license/LICENSE
|
||||
*
|
||||
* 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_HIDE 0x01
|
||||
#define RTGUI_WIDGET_FLAG_DISABLE 0x02
|
||||
#define RTGUI_WIDGET_FLAG_FOCUS 0x04
|
||||
#define RTGUI_WIDGET_FLAG_TRANSPARENT 0x08
|
||||
#define RTGUI_WIDGET_FLAG_FOCUSABLE 0x10
|
||||
#define RTGUI_WIDGET_FLAG_DEFAULT 0x00
|
||||
|
||||
#define RTGUI_WIDGET_UNHIDE(w) (w)->flag &= ~RTGUI_WIDGET_FLAG_HIDE
|
||||
#define RTGUI_WIDGET_HIDE(w) (w)->flag |= RTGUI_WIDGET_FLAG_HIDE
|
||||
#define RTGUI_WIDGET_IS_HIDE(w) ((w)->flag & RTGUI_WIDGET_FLAG_HIDE)
|
||||
|
||||
#define RTGUI_WIDGET_ENABLE(w) (w)->flag &= ~RTGUI_WIDGET_FLAG_DISABLE
|
||||
#define RTGUI_WIDGET_DISABLE(w) (w)->flag |= RTGUI_WIDGET_FLAG_DISABLE
|
||||
#define RTGUI_WIDGET_IS_ENABLE(w) !(w->flag & RTGUI_WIDGET_FLAG_DISABLE)
|
||||
|
||||
#define RTGUI_WIDGET_UNFOCUS(w) (w)->flag &= ~RTGUI_WIDGET_FLAG_FOCUS
|
||||
#define RTGUI_WIDGET_FOCUS(w) (w)->flag |= RTGUI_WIDGET_FLAG_FOCUS
|
||||
#define RTGUI_WIDGET_IS_FOCUSED(w) ((w)->flag & RTGUI_WIDGET_FLAG_FOCUS)
|
||||
|
||||
#define RTGUI_WIDGET_IS_FOCUSABLE(w) ((w)->flag & RTGUI_WIDGET_FLAG_FOCUSABLE)
|
||||
|
||||
/* get rtgui widget object */
|
||||
#define RTGUI_WIDGET_FOREGROUND(w) ((w)->gc.foreground)
|
||||
#define RTGUI_WIDGET_BACKGROUND(w) ((w)->gc.background)
|
||||
#define RTGUI_WIDGET_TEXTALIGN(w) ((w)->gc.textalign)
|
||||
#define RTGUI_WIDGET_FONT(w) ((w)->gc.font)
|
||||
#define RTGUI_WIDGET_FLAG(w) ((w)->flag)
|
||||
|
||||
/** Gets the type of a widget */
|
||||
#define RTGUI_WIDGET_TYPE (rtgui_widget_type_get())
|
||||
/** 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 parent and root widget */
|
||||
struct rtgui_widget *parent, *toplevel;
|
||||
/* the widget children and sibling */
|
||||
rtgui_list_t sibling;
|
||||
|
||||
/* widget flag */
|
||||
rt_int32_t flag;
|
||||
/* widget align */
|
||||
rt_int32_t align;
|
||||
|
||||
/* the graphic context of widget */
|
||||
rtgui_gc_t gc;
|
||||
|
||||
/* the widget extent */
|
||||
rtgui_rect_t extent;
|
||||
#ifndef RTGUI_USING_SMALL_SIZE
|
||||
rt_int16_t mini_width, mini_height;
|
||||
rt_int16_t margin, margin_style;
|
||||
#endif
|
||||
|
||||
/* the rect clip */
|
||||
rtgui_region_t clip;
|
||||
rt_uint16_t clip_sync;
|
||||
|
||||
/* the event handler */
|
||||
rt_bool_t (*event_handler) (struct rtgui_widget* widget, struct rtgui_event* event);
|
||||
|
||||
/* call back */
|
||||
rt_bool_t (*on_focus_in) (struct rtgui_widget* widget, struct rtgui_event* event);
|
||||
rt_bool_t (*on_focus_out) (struct rtgui_widget* widget, struct rtgui_event* event);
|
||||
#ifndef RTGUI_USING_SMALL_SIZE
|
||||
rt_bool_t (*on_draw) (struct rtgui_widget* widget, struct rtgui_event* event);
|
||||
rt_bool_t (*on_mouseclick) (struct rtgui_widget* widget, struct rtgui_event* event);
|
||||
rt_bool_t (*on_key) (struct rtgui_widget* widget, struct rtgui_event* event);
|
||||
rt_bool_t (*on_size) (struct rtgui_widget* widget, struct rtgui_event* event);
|
||||
rt_bool_t (*on_command) (struct rtgui_widget* widget, struct rtgui_event* event);
|
||||
#endif
|
||||
};
|
||||
typedef struct rtgui_widget rtgui_widget_t;
|
||||
|
||||
rtgui_type_t *rtgui_widget_type_get(void);
|
||||
rtgui_widget_t *rtgui_widget_create(rtgui_type_t *widget_type);
|
||||
void rtgui_widget_destroy(rtgui_widget_t* widget);
|
||||
|
||||
/* set the event handler of widget */
|
||||
void rtgui_widget_set_event_handler(rtgui_widget_t* widget, rtgui_event_handler_ptr handler);
|
||||
/* widget default event handler */
|
||||
rt_bool_t rtgui_widget_event_handler(rtgui_widget_t* widget, 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);
|
||||
#ifndef RTGUI_USING_SMALL_SIZE
|
||||
void rtgui_widget_set_ondraw(rtgui_widget_t* widget, rtgui_event_handler_ptr handler);
|
||||
void rtgui_widget_set_onmouseclick(rtgui_widget_t* widget, rtgui_event_handler_ptr handler);
|
||||
void rtgui_widget_set_onkey(rtgui_widget_t* widget, rtgui_event_handler_ptr handler);
|
||||
void rtgui_widget_set_onsize(rtgui_widget_t* widget, rtgui_event_handler_ptr handler);
|
||||
void rtgui_widget_set_oncommand(rtgui_widget_t* widget, rtgui_event_handler_ptr handler);
|
||||
#endif
|
||||
|
||||
/* get and set rect of widget */
|
||||
void rtgui_widget_get_rect(rtgui_widget_t* widget, rtgui_rect_t *rect);
|
||||
void rtgui_widget_set_rect(rtgui_widget_t* widget, rtgui_rect_t* rect);
|
||||
|
||||
#ifndef RTGUI_USING_SMALL_SIZE
|
||||
void rtgui_widget_set_miniwidth(rtgui_widget_t* widget, int width);
|
||||
void rtgui_widget_set_miniheight(rtgui_widget_t* widget, int height);
|
||||
#endif
|
||||
|
||||
/* 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);
|
||||
|
||||
/* 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 */
|
||||
rtgui_widget_t* rtgui_widget_get_toplevel(rtgui_widget_t* widget);
|
||||
|
||||
void rtgui_widget_show(rtgui_widget_t* widget);
|
||||
void rtgui_widget_hide(rtgui_widget_t* widget);
|
||||
void rtgui_widget_update(rtgui_widget_t* widget);
|
||||
|
||||
/* 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);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,104 @@
|
||||
/*
|
||||
* File : window.h
|
||||
* This file is part of RTGUI in RT-Thread RTOS
|
||||
* COPYRIGHT (C) 2006 - 2009, RT-Thread Development Team
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
* http://www.rt-thread.org/license/LICENSE
|
||||
*
|
||||
* Change Logs:
|
||||
* Date Author Notes
|
||||
* 2009-10-04 Bernard first version
|
||||
*/
|
||||
#ifndef __RTGUI_WINDOW_H__
|
||||
#define __RTGUI_WINDOW_H__
|
||||
|
||||
#include <rtgui/rtgui.h>
|
||||
#include <rtgui/list.h>
|
||||
#include <rtgui/widgets/widget.h>
|
||||
#include <rtgui/widgets/toplevel.h>
|
||||
#include <rtgui/widgets/box.h>
|
||||
|
||||
/** Gets the type of a win */
|
||||
#define RTGUI_WIN_TYPE (rtgui_win_type_get())
|
||||
/** 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_MODAL 0x01 /* modal mode window */
|
||||
#define RTGUI_WIN_STYLE_CLOSED 0x02 /* window is closed */
|
||||
#define RTGUI_WIN_STYLE_ACTIVATE 0x04 /* window is activated */
|
||||
#define RTGUI_WIN_STYLE_NO_FOCUS 0x08 /* non-focused window */
|
||||
|
||||
#define RTGUI_WIN_STYLE_NO_TITLE 0x10 /* no title window */
|
||||
#define RTGUI_WIN_STYLE_NO_BORDER 0x20 /* no border window */
|
||||
#define RTGUI_WIN_STYLE_CLOSEBOX 0x40 /* window has the close button */
|
||||
#define RTGUI_WIN_STYLE_MINIBOX 0x80 /* window has the mini button */
|
||||
|
||||
#define RTGUI_WIN_STYLE_DEFAULT (RTGUI_WIN_STYLE_CLOSEBOX | RTGUI_WIN_STYLE_MINIBOX)
|
||||
|
||||
struct rtgui_win_title;
|
||||
struct rtgui_win_area;
|
||||
|
||||
struct rtgui_win
|
||||
{
|
||||
/* inherit from toplevel */
|
||||
struct rtgui_toplevel parent;
|
||||
|
||||
/* parent toplevel */
|
||||
rtgui_toplevel_t* parent_toplevel;
|
||||
|
||||
/* top window style */
|
||||
rt_uint8_t style;
|
||||
|
||||
rt_uint8_t flag;
|
||||
rtgui_modal_code_t modal_code;
|
||||
rtgui_widget_t* modal_widget;
|
||||
|
||||
/* window title */
|
||||
char* title;
|
||||
|
||||
/* call back */
|
||||
rt_bool_t (*on_activate) (struct rtgui_widget* widget, struct rtgui_event* event);
|
||||
rt_bool_t (*on_deactivate) (struct rtgui_widget* widget, struct rtgui_event* event);
|
||||
rt_bool_t (*on_close) (struct rtgui_widget* widget, struct rtgui_event* event);
|
||||
|
||||
/* reserved user data */
|
||||
rt_uint32_t user_data;
|
||||
};
|
||||
|
||||
rtgui_type_t *rtgui_win_type_get(void);
|
||||
|
||||
rtgui_win_t* rtgui_win_create(rtgui_toplevel_t* parent_toplevel, const char* title,
|
||||
rtgui_rect_t *rect, rt_uint8_t flag);
|
||||
void rtgui_win_destroy(rtgui_win_t* win);
|
||||
|
||||
rtgui_modal_code_t rtgui_win_show(rtgui_win_t* win, rt_bool_t is_modal);
|
||||
void rtgui_win_hiden(rtgui_win_t* win);
|
||||
void rtgui_win_end_modal(rtgui_win_t* win, rtgui_modal_code_t modal_code);
|
||||
|
||||
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);
|
||||
|
||||
#ifndef RTGUI_USING_SMALL_SIZE
|
||||
void rtgui_win_set_box(rtgui_win_t* win, rtgui_box_t* box);
|
||||
#endif
|
||||
|
||||
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);
|
||||
|
||||
rt_bool_t rtgui_win_event_handler(rtgui_widget_t* 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);
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,84 @@
|
||||
/*
|
||||
* File : workbench.h
|
||||
* This file is part of RTGUI in RT-Thread RTOS
|
||||
* COPYRIGHT (C) 2006 - 2009, RT-Thread Development Team
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
* http://www.rt-thread.org/license/LICENSE
|
||||
*
|
||||
* Change Logs:
|
||||
* Date Author Notes
|
||||
* 2009-10-04 Bernard first version
|
||||
*/
|
||||
#ifndef __RTGUI_WORKBENCH_H__
|
||||
#define __RTGUI_WORKBENCH_H__
|
||||
|
||||
#include <rtgui/rtgui.h>
|
||||
#include <rtgui/list.h>
|
||||
#include <rtgui/region.h>
|
||||
#include <rtgui/dc.h>
|
||||
|
||||
#include <rtgui/widgets/view.h>
|
||||
#include <rtgui/widgets/toplevel.h>
|
||||
|
||||
#define RTGUI_WORKBENCH_FLAG_VISIBLE 0x00 /* workbench is visible */
|
||||
#define RTGUI_WORKBENCH_FLAG_INVISIBLE 0x01 /* workbench is invisible */
|
||||
#define RTGUI_WORKBENCH_FLAG_FULLSCREEN 0x02 /* workbench is full screen */
|
||||
#define RTGUI_WORKBENCH_FLAG_MODAL_MODE 0x04 /* workbench is modal mode showing */
|
||||
|
||||
#define RTGUI_WORKBENCH_FLAG_CLOSEBLE 0x00
|
||||
#define RTGUI_WORKBENCH_FLAG_UNCLOSEBLE 0x10
|
||||
#define RTGUI_WORKBENCH_FLAG_CLOSED 0x20
|
||||
|
||||
#define RTGUI_WORKBENCH_FLAG_DEFAULT RTGUI_WORKBENCH_FLAG_VISIBLE | RTGUI_WORKBENCH_FLAG_CLOSEBLE
|
||||
|
||||
#define RTGUI_WORKBENCH_IS_MODAL_MODE(w) ((w)->flag & RTGUI_WORKBENCH_FLAG_MODAL_MODE)
|
||||
|
||||
/** Gets the type of a workbench */
|
||||
#define RTGUI_WORKBENCH_TYPE (rtgui_workbench_type_get())
|
||||
/** Casts the object to an rtgui_workbench */
|
||||
#define RTGUI_WORKBENCH(obj) (RTGUI_OBJECT_CAST((obj), RTGUI_WORKBENCH_TYPE, rtgui_workbench_t))
|
||||
/** Checks if the object is an rtgui_workbench */
|
||||
#define RTGUI_IS_WORKBENCH(obj) (RTGUI_OBJECT_CHECK_TYPE((obj), RTGUI_WORKBENCH_TYPE))
|
||||
|
||||
struct rtgui_workbench
|
||||
{
|
||||
/* inherit from toplevel */
|
||||
struct rtgui_toplevel parent;
|
||||
|
||||
/* panel id */
|
||||
rtgui_panel_t* panel;
|
||||
|
||||
/* workbench flag */
|
||||
rt_uint8_t flag;
|
||||
rtgui_modal_code_t modal_code;
|
||||
rtgui_widget_t *modal_widget;
|
||||
|
||||
/* workbench title */
|
||||
unsigned char* title;
|
||||
rtgui_view_t* current_view;
|
||||
};
|
||||
|
||||
rtgui_type_t* rtgui_workbench_type_get(void);
|
||||
|
||||
rtgui_workbench_t *rtgui_workbench_create(const char* panel_name, const unsigned char* title);
|
||||
void rtgui_workbench_destroy(rtgui_workbench_t* workbench);
|
||||
|
||||
rt_bool_t rtgui_workbench_event_handler(rtgui_widget_t* widget, rtgui_event_t* event);
|
||||
|
||||
void rtgui_workbench_set_flag(rtgui_workbench_t* workbench, rt_uint8_t flag);
|
||||
|
||||
rt_bool_t rtgui_workbench_event_loop(rtgui_workbench_t* workbench);
|
||||
|
||||
rt_err_t rtgui_workbench_show (rtgui_workbench_t* workbench);
|
||||
rt_err_t rtgui_workbench_hide (rtgui_workbench_t* workbench);
|
||||
|
||||
void rtgui_workbench_add_view(rtgui_workbench_t* workbench, rtgui_view_t* view);
|
||||
void rtgui_workbench_remove_view(rtgui_workbench_t* workbench, rtgui_view_t* view);
|
||||
void rtgui_workbench_show_view(rtgui_workbench_t* workbench, rtgui_view_t* view);
|
||||
void rtgui_workbench_hide_view(rtgui_workbench_t* workbench, rtgui_view_t* view);
|
||||
|
||||
rtgui_view_t *rtgui_workbench_get_current_view(rtgui_workbench_t * workbench);
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user