mirror of
https://github.com/RT-Thread/rt-thread.git
synced 2026-09-20 09:28:49 +08:00
sync with rtgui-0.6
This commit is contained in:
@@ -60,6 +60,14 @@ struct rtgui_dc
|
||||
const struct rtgui_dc_engine *engine;
|
||||
};
|
||||
|
||||
/* hardware device context */
|
||||
struct rtgui_dc_hw
|
||||
{
|
||||
struct rtgui_dc parent;
|
||||
rtgui_widget_t *owner;
|
||||
const struct rtgui_graphic_driver *hw_driver;
|
||||
};
|
||||
|
||||
#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)
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
#include <rtgui/list.h>
|
||||
#include <rtgui/color.h>
|
||||
|
||||
/* graphic driver operations */
|
||||
struct rtgui_graphic_driver_ops
|
||||
{
|
||||
/* set and get pixel in (x, y) */
|
||||
@@ -30,6 +31,22 @@ struct rtgui_graphic_driver_ops
|
||||
void (*draw_raw_hline)(rt_uint8_t *pixels, int x1, int x2, int y);
|
||||
};
|
||||
|
||||
/* graphic extension operations */
|
||||
struct rtgui_graphic_ext_ops
|
||||
{
|
||||
/* some 2D operations */
|
||||
void (*draw_line)(rtgui_color_t *c, int x1, int y1, int x2, int y2);
|
||||
|
||||
void (*draw_rect)(rtgui_color_t *c, int x1, int y1, int x2, int y2);
|
||||
void (*fill_rect)(rtgui_color_t *c, int x1, int y1, int x2, int y2);
|
||||
|
||||
void (*draw_circle)(rtgui_color_t *c, int x, int y, int r);
|
||||
void (*fill_circle)(rtgui_color_t *c, int x, int y, int r);
|
||||
|
||||
void (*draw_ellipse)(rtgui_color_t *c, int x, int y, int rx, int ry);
|
||||
void (*fill_ellipse)(rtgui_color_t *c, int x, int y, int rx, int ry);
|
||||
};
|
||||
|
||||
struct rtgui_graphic_driver
|
||||
{
|
||||
/* pixel format and byte per pixel */
|
||||
@@ -43,11 +60,11 @@ struct rtgui_graphic_driver
|
||||
|
||||
/* framebuffer address and ops */
|
||||
volatile rt_uint8_t *framebuffer;
|
||||
rt_device_t device;
|
||||
const struct rtgui_graphic_driver_ops *ops;
|
||||
};
|
||||
struct rt_device* device;
|
||||
|
||||
void rtgui_graphic_driver_add(const struct rtgui_graphic_driver *driver);
|
||||
const struct rtgui_graphic_driver_ops *ops;
|
||||
const struct rtgui_graphic_ext_ops *ext_ops;
|
||||
};
|
||||
|
||||
struct rtgui_graphic_driver *rtgui_graphic_driver_get_default(void);
|
||||
|
||||
@@ -64,5 +81,19 @@ rt_inline struct rtgui_graphic_driver *rtgui_graphic_get_device()
|
||||
return &_driver;
|
||||
}
|
||||
|
||||
#ifdef RTGUI_USING_HW_CURSOR
|
||||
/*
|
||||
* hardware cursor
|
||||
*/
|
||||
enum rtgui_cursor_type
|
||||
{
|
||||
RTGUI_CURSOR_ARROW,
|
||||
RTGUI_CURSOR_HAND,
|
||||
};
|
||||
|
||||
void rtgui_cursor_set_device(const char* device_name);
|
||||
void rtgui_cursor_set_position(rt_uint16_t x, rt_uint16_t y);
|
||||
void rtgui_cursor_set_image(enum rtgui_cursor_type type);
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
@@ -90,7 +90,7 @@ struct rtgui_event
|
||||
rt_uint16_t user;
|
||||
|
||||
/* the event sender */
|
||||
rt_thread_t sender;
|
||||
struct rtgui_app *sender;
|
||||
|
||||
/* mailbox to acknowledge request */
|
||||
rt_mailbox_t ack;
|
||||
@@ -98,11 +98,13 @@ struct rtgui_event
|
||||
typedef struct rtgui_event rtgui_event_t;
|
||||
#define RTGUI_EVENT(e) ((struct rtgui_event*)(e))
|
||||
|
||||
extern struct rtgui_app* rtgui_app_self(void);
|
||||
|
||||
#define RTGUI_EVENT_INIT(e, t) do \
|
||||
{ \
|
||||
(e)->type = (t); \
|
||||
(e)->user = 0; \
|
||||
(e)->sender = rt_thread_self(); \
|
||||
(e)->sender = rtgui_app_self(); \
|
||||
(e)->ack = RT_NULL; \
|
||||
} while (0)
|
||||
|
||||
|
||||
@@ -20,81 +20,82 @@
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef struct rtgui_region_data rtgui_region_data_t;
|
||||
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 */
|
||||
};
|
||||
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 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;
|
||||
typedef enum
|
||||
{
|
||||
RTGUI_REGION_STATUS_FAILURE,
|
||||
RTGUI_REGION_STATUS_SUCCESS
|
||||
} rtgui_region_status_t;
|
||||
|
||||
/* creation/destruction */
|
||||
/* creation/destruction */
|
||||
|
||||
void rtgui_region_init(rtgui_region_t *region);
|
||||
void rtgui_region_init_rect(rtgui_region_t *region,
|
||||
int x, int y, unsigned int width, unsigned int height);
|
||||
void rtgui_region_init_with_extents(rtgui_region_t *region, const rtgui_rect_t *extents);
|
||||
void rtgui_region_fini(rtgui_region_t *region);
|
||||
void rtgui_region_init(rtgui_region_t *region);
|
||||
void rtgui_region_init_rect(rtgui_region_t *region,
|
||||
int x, int y, unsigned int width, unsigned int height);
|
||||
void rtgui_region_init_with_extents(rtgui_region_t *region, const rtgui_rect_t *extents);
|
||||
void rtgui_region_fini(rtgui_region_t *region);
|
||||
|
||||
void rtgui_region_translate(rtgui_region_t *region, int x, int y);
|
||||
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_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);
|
||||
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);
|
||||
int rtgui_region_num_rects(rtgui_region_t *region);
|
||||
|
||||
rtgui_rect_t *rtgui_region_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_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);
|
||||
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);
|
||||
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);
|
||||
int rtgui_region_is_flat(rtgui_region_t *region);
|
||||
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);
|
||||
int rtgui_region_is_flat(rtgui_region_t *region);
|
||||
|
||||
/* rect functions */
|
||||
extern rtgui_rect_t rtgui_empty_rect;
|
||||
/* 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(const rtgui_rect_t *rect, int x, int y);
|
||||
int rtgui_rect_is_intersect(const rtgui_rect_t *rect1, const rtgui_rect_t *rect2);
|
||||
int rtgui_rect_is_equal(const rtgui_rect_t *rect1, const rtgui_rect_t *rect2);
|
||||
rt_bool_t rtgui_rect_is_empty(const rtgui_rect_t *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(const rtgui_rect_t *rect, int x, int y);
|
||||
int rtgui_rect_is_intersect(const rtgui_rect_t *rect1, const rtgui_rect_t *rect2);
|
||||
int rtgui_rect_is_equal(const rtgui_rect_t *rect1, const rtgui_rect_t *rect2);
|
||||
rtgui_rect_t *rtgui_rect_set(rtgui_rect_t *rect, int x, int y, int w, int h);
|
||||
rt_bool_t rtgui_rect_is_empty(const rtgui_rect_t *rect);
|
||||
|
||||
#if defined(__cplusplus) || defined(c_plusplus)
|
||||
}
|
||||
|
||||
@@ -17,6 +17,11 @@
|
||||
#include <rtthread.h>
|
||||
#include <rtgui/rtgui_config.h>
|
||||
|
||||
#define RTGUI_VERSION 0L /**< major version number */
|
||||
#define RTGUI_SUBVERSION 6L /**< minor version number */
|
||||
#define RTGUI_REVISION 0L /**< revise version number */
|
||||
#define RTGUI_CODENAME "Newton" /**< code name */
|
||||
|
||||
#define RT_INT16_MAX 32767
|
||||
#define RT_INT16_MIN (-RT_INT16_MAX-1)
|
||||
#define RTGUI_NOT_FOUND (-1)
|
||||
|
||||
@@ -52,9 +52,6 @@ struct rtgui_app
|
||||
|
||||
/* the thread id */
|
||||
rt_thread_t tid;
|
||||
/* the RTGUI server id */
|
||||
rt_thread_t server;
|
||||
|
||||
/* the message queue of thread */
|
||||
rt_mq_t mq;
|
||||
/* event buffer */
|
||||
@@ -70,9 +67,13 @@ struct rtgui_app
|
||||
};
|
||||
|
||||
/**
|
||||
* create an application named @myname on thread @param tid
|
||||
* create an application named @myname on current thread.
|
||||
*
|
||||
* @param name the name of the application
|
||||
*
|
||||
* @return a pointer to struct rtgui_app on success. RT_NULL on failure.
|
||||
*/
|
||||
struct rtgui_app *rtgui_app_create(rt_thread_t tid, const char *title);
|
||||
struct rtgui_app *rtgui_app_create(const char *name);
|
||||
void rtgui_app_destroy(struct rtgui_app *app);
|
||||
rt_bool_t rtgui_app_event_handler(struct rtgui_object *obj, rtgui_event_t *event);
|
||||
|
||||
@@ -81,11 +82,15 @@ void rtgui_app_exit(struct rtgui_app *app, rt_uint16_t code);
|
||||
void rtgui_app_activate(struct rtgui_app *app);
|
||||
void rtgui_app_close(struct rtgui_app *app);
|
||||
|
||||
void rtgui_app_set_onidle(rtgui_idle_func_t onidle);
|
||||
rtgui_idle_func_t rtgui_app_get_onidle(void);
|
||||
void rtgui_app_set_onidle(struct rtgui_app *app, rtgui_idle_func_t onidle);
|
||||
rtgui_idle_func_t rtgui_app_get_onidle(struct rtgui_app *app);
|
||||
|
||||
/**
|
||||
* return the rtgui_app struct on current thread
|
||||
*/
|
||||
struct rtgui_app *rtgui_app_self(void);
|
||||
|
||||
rt_err_t rtgui_app_set_as_wm(void);
|
||||
void rtgui_app_set_main_win(struct rtgui_win *win);
|
||||
rt_err_t rtgui_app_set_as_wm(struct rtgui_app *app);
|
||||
void rtgui_app_set_main_win(struct rtgui_app *app, struct rtgui_win *win);
|
||||
|
||||
#endif /* end of include guard: __RTGUI_APP_H__ */
|
||||
|
||||
@@ -56,8 +56,8 @@ struct rtgui_topwin
|
||||
/* the window id */
|
||||
struct rtgui_win *wid;
|
||||
|
||||
/* the thread id */
|
||||
rt_thread_t tid;
|
||||
/* which app I belong */
|
||||
struct rtgui_app *app;
|
||||
|
||||
/* the extent information */
|
||||
rtgui_rect_t extent;
|
||||
|
||||
@@ -26,8 +26,8 @@ typedef void (*rtgui_timeout_func)(struct rtgui_timer *timer, void *parameter);
|
||||
|
||||
struct rtgui_timer
|
||||
{
|
||||
/* context thread id */
|
||||
rt_thread_t tid;
|
||||
/* the rtgui application it runs on */
|
||||
struct rtgui_app* app;
|
||||
/* rt timer */
|
||||
struct rt_timer timer;
|
||||
|
||||
@@ -58,7 +58,7 @@ void *rtgui_realloc(void *ptr, rt_size_t size);
|
||||
#define rtgui_exit_critical rt_exit_critical
|
||||
#endif
|
||||
|
||||
rt_thread_t rtgui_get_server(void);
|
||||
struct rtgui_app* rtgui_get_server(void);
|
||||
void rtgui_set_mainwin_rect(struct rtgui_rect *rect);
|
||||
void rtgui_get_mainwin_rect(struct rtgui_rect *rect);
|
||||
void rtgui_get_screen_rect(struct rtgui_rect *rect);
|
||||
@@ -67,9 +67,9 @@ void rtgui_screen_lock(rt_int32_t timeout);
|
||||
void rtgui_screen_unlock(void);
|
||||
|
||||
struct rtgui_event;
|
||||
rt_err_t rtgui_send(rt_thread_t tid, struct rtgui_event *event, rt_size_t event_size);
|
||||
rt_err_t rtgui_send_urgent(rt_thread_t tid, struct rtgui_event *event, rt_size_t event_size);
|
||||
rt_err_t rtgui_send_sync(rt_thread_t tid, struct rtgui_event *event, rt_size_t event_size);
|
||||
rt_err_t rtgui_send(struct rtgui_app* app, struct rtgui_event *event, rt_size_t event_size);
|
||||
rt_err_t rtgui_send_urgent(struct rtgui_app* app, struct rtgui_event *event, rt_size_t event_size);
|
||||
rt_err_t rtgui_send_sync(struct rtgui_app* app, struct rtgui_event *event, rt_size_t event_size);
|
||||
rt_err_t rtgui_ack(struct rtgui_event *event, rt_int32_t status);
|
||||
rt_err_t rtgui_recv(struct rtgui_event *event, rt_size_t event_size);
|
||||
rt_err_t rtgui_recv_nosuspend(struct rtgui_event *event, rt_size_t event_size);
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
#ifndef DIG_FONT_H
|
||||
#define DIG_FONT_H
|
||||
|
||||
struct rtgui_digitfont_data
|
||||
{
|
||||
rt_uint16_t x;
|
||||
rt_uint16_t y;
|
||||
rt_uint16_t len;
|
||||
rt_uint16_t type; //ˮƽºÍ´¹Ö±
|
||||
};
|
||||
|
||||
struct rtgui_digitfont
|
||||
{
|
||||
int seg1_len;
|
||||
int seg1_hspace;
|
||||
int seg1_vspace;
|
||||
int seg1_nr; //9
|
||||
|
||||
int seg2_len;
|
||||
|
||||
int seg3_len;
|
||||
struct rtgui_digitfont_data *data;
|
||||
};
|
||||
|
||||
|
||||
typedef struct rtgui_digitfont rtgui_digitfont_t;
|
||||
|
||||
extern struct rtgui_digitfont digitfont_40;
|
||||
extern const char digtube_code_table[];
|
||||
|
||||
int rtgui_digitfont_create(struct rtgui_digitfont *font);
|
||||
int rtgui_dc_draw_digitfont(struct rtgui_dc *dc, struct rtgui_digitfont *font, rtgui_rect_t *rect);
|
||||
int rtgui_get_digfont_metrics(struct rtgui_digitfont * font, rtgui_rect_t * rect);
|
||||
int rtgui_dc_draw_digitfont_code(struct rtgui_dc *dc, struct rtgui_digitfont * font, rtgui_rect_t * rect, char code);
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,68 @@
|
||||
/*
|
||||
* File : digfont.c
|
||||
* This file is part of RT-Thread RTOS
|
||||
* COPYRIGHT (C) 2006 - 2012, 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
|
||||
* 2012-12-21 pife first version
|
||||
*/
|
||||
#ifndef __RTGUI_DIGTUBE_H__
|
||||
#define __RTGUI_DIGTUBE_H__
|
||||
|
||||
#include <rtgui/rtgui.h>
|
||||
#include <rtgui/rtgui_system.h>
|
||||
#include <rtgui/widgets/widget.h>
|
||||
#include <rtgui/widgets/digfont.h>
|
||||
|
||||
DECLARE_CLASS_TYPE(digtube);
|
||||
|
||||
/** Gets the type of a digit tubes */
|
||||
#define RTGUI_DIGTUBE_TYPE (RTGUI_TYPE(digtube))
|
||||
/** Casts the object to an rtgui_digtube */
|
||||
#define RTGUI_DIGTUBE(obj) (RTGUI_OBJECT_CAST((obj), RTGUI_DIGTUBE_TYPE, rtgui_digtube_t))
|
||||
/** Checks if the object is an rtgui_digtube */
|
||||
#define RTGUI_IS_DIGTUBE(obj) (RTGUI_OBJECT_CHECK_TYPE((obj), RTGUI_DIGTUBE_TYPE))
|
||||
|
||||
/*
|
||||
* the digit tube widget
|
||||
*/
|
||||
struct rtgui_digtube
|
||||
{
|
||||
struct rtgui_widget parent;
|
||||
|
||||
struct rtgui_digitfont digitfont;
|
||||
|
||||
/* number of tubes */
|
||||
rt_uint8_t tube_count;
|
||||
rt_uint8_t tube_style;
|
||||
rt_uint8_t digit_hight;
|
||||
rt_uint8_t digit_width;
|
||||
rt_uint8_t digit_space;
|
||||
rtgui_color_t digit_bc;
|
||||
void * value;
|
||||
};
|
||||
typedef struct rtgui_digtube rtgui_digtube_t;
|
||||
|
||||
rtgui_digtube_t *rtgui_digtube_create( struct rtgui_digitfont * digitfont, int count, void * value, int style);
|
||||
void rtgui_digtube_destroy(rtgui_digtube_t *digtube);
|
||||
|
||||
rt_bool_t rtgui_digtube_event_handler(struct rtgui_object *object, struct rtgui_event *event);
|
||||
|
||||
#define RTGUI_DIGTUBE_DEFAULT_BC RTGUI_RGB(0, 0, 0)
|
||||
#define RTGUI_DIGTUBE_DEFAULT_FC RTGUI_RGB(0xFF, 0, 0)
|
||||
#define RTGUI_DIGTUBE_DEFAULT_DIGIT_BC RTGUI_RGB(100, 100, 100)
|
||||
|
||||
#define RTGUI_DIGTUBE_DEFAULT_SPACE 10
|
||||
|
||||
#define RTGUI_DIGTUBE_STYLE_NOBACKFONT 0x01
|
||||
#define RTGUI_DIGTUBE_STYLE_DISHEXNUM 0x02
|
||||
#define RTGUI_DIGTUBE_STYLE_DISCODES 0x04
|
||||
|
||||
//void rtgui_digtube_set_text(rtgui_digtube_t *digtube, const char *text);
|
||||
//char *rtgui_digtube_get_text(rtgui_digtube_t *digtube);
|
||||
#endif
|
||||
@@ -72,7 +72,7 @@ void rtgui_menu_set_onmenupop(struct rtgui_menu *menu, rtgui_event_handler_ptr h
|
||||
void rtgui_menu_set_onmenuhide(struct rtgui_menu *menu, rtgui_event_handler_ptr handler);
|
||||
|
||||
void rtgui_menu_pop(struct rtgui_menu *menu, int x, int y);
|
||||
void rtgui_menu_hiden(struct rtgui_menu *menu);
|
||||
void rtgui_menu_hide(struct rtgui_menu *menu);
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -34,6 +34,8 @@ DECLARE_CLASS_TYPE(textbox);
|
||||
#define RTGUI_TEXTBOX_DEFAULT_WIDTH 80
|
||||
#define RTGUI_TEXTBOX_DEFAULT_HEIGHT 20
|
||||
|
||||
#define RTGUI_TEXTBOX_BORDER_WIDTH 1
|
||||
|
||||
#define RTGUI_TEXTBOX_SINGLE 0x00
|
||||
#define RTGUI_TEXTBOX_MULTI 0x01 /* multiline */
|
||||
#define RTGUI_TEXTBOX_MASK 0x02 /* ciphertext */
|
||||
@@ -52,10 +54,13 @@ struct rtgui_textbox
|
||||
rt_uint32_t flag;
|
||||
|
||||
/* current line and position */
|
||||
rt_uint16_t line, line_begin, position, line_length;
|
||||
rt_uint16_t line, line_begin, position;
|
||||
/** maximum chars a line could hold excluding the NULL byte */
|
||||
rt_uint16_t line_length;
|
||||
rt_uint16_t dis_length; /*may be display length.*/
|
||||
rt_uint16_t first_pos;
|
||||
char mask_char;
|
||||
/** a NULL terminated string that the textbox is holding */
|
||||
char *text;
|
||||
rt_size_t font_width;
|
||||
|
||||
@@ -77,7 +82,20 @@ 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_mask_char(rtgui_textbox_t *box, const char ch);
|
||||
char rtgui_textbox_get_mask_char(rtgui_textbox_t *box);
|
||||
void rtgui_textbox_set_line_length(struct rtgui_textbox *box, rt_size_t length);
|
||||
/** set the maximum chars a line could hold excluding the NULL byte
|
||||
*
|
||||
* It will truncate the current line if the length is smaller than the chars
|
||||
* the box is currently holding. But the box->text is guaranteed to be NULL
|
||||
* terminated anyway.
|
||||
*
|
||||
* @param box the text box it operate on
|
||||
* @param length the new line length. It should be greater than 0.
|
||||
*
|
||||
* @return -RT_ERROR on invalid length; -RT_ENOMEM if there is no enough memory
|
||||
* to allocate the new buffer. On returning -RT_ENOMEM, the original text would
|
||||
* remain unchanged.
|
||||
*/
|
||||
rt_err_t rtgui_textbox_set_line_length(struct rtgui_textbox *box, rt_size_t length);
|
||||
|
||||
void rtgui_textbox_get_edit_rect(struct rtgui_textbox *box, rtgui_rect_t *rect);
|
||||
|
||||
|
||||
@@ -62,139 +62,138 @@ extern "C" {
|
||||
#define RTGUI_WIDGET_DC_SET_UNVISIBLE(w) RTGUI_WIDGET_FLAG(w) &= ~RTGUI_WIDGET_FLAG_DC_VISIBLE
|
||||
#define RTGUI_WIDGET_DC(w) ((struct rtgui_dc*)&((w)->dc_type))
|
||||
|
||||
DECLARE_CLASS_TYPE(widget);
|
||||
DECLARE_CLASS_TYPE(widget);
|
||||
|
||||
/** Gets the type of a widget */
|
||||
/** Gets the type of a widget */
|
||||
#define RTGUI_WIDGET_TYPE (RTGUI_TYPE(widget))
|
||||
/** Casts the object to a rtgui_widget */
|
||||
/** Casts the object to a rtgui_widget */
|
||||
#define RTGUI_WIDGET(obj) (RTGUI_OBJECT_CAST((obj), RTGUI_WIDGET_TYPE, rtgui_widget_t))
|
||||
/** Check if the object is a rtgui_widget */
|
||||
/** 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 base widget object
|
||||
*/
|
||||
struct rtgui_widget
|
||||
{
|
||||
/* inherit from rtgui_object */
|
||||
struct rtgui_object object;
|
||||
|
||||
/* the widget that contains this widget */
|
||||
struct rtgui_widget *parent;
|
||||
/* the window that contains this widget */
|
||||
struct rtgui_win *toplevel;
|
||||
/* the widget children and sibling */
|
||||
rtgui_list_t sibling;
|
||||
/* the widget that contains this widget */
|
||||
struct rtgui_widget *parent;
|
||||
/* the window that contains this widget */
|
||||
struct rtgui_win *toplevel;
|
||||
/* the widget children and sibling */
|
||||
rtgui_list_t sibling;
|
||||
|
||||
/* widget flag */
|
||||
rt_int32_t flag;
|
||||
/* widget flag */
|
||||
rt_int32_t flag;
|
||||
|
||||
/* hardware device context */
|
||||
rt_uint32_t dc_type;
|
||||
const struct rtgui_dc_engine *dc_engine;
|
||||
/* hardware device context */
|
||||
rt_uint32_t dc_type;
|
||||
const struct rtgui_dc_engine *dc_engine;
|
||||
|
||||
/* the graphic context of widget */
|
||||
rtgui_gc_t gc;
|
||||
/* the graphic context of widget */
|
||||
rtgui_gc_t gc;
|
||||
|
||||
/* the widget extent */
|
||||
rtgui_rect_t extent;
|
||||
/* the widget extent */
|
||||
rtgui_rect_t extent;
|
||||
|
||||
/* minimal width and height of widget */
|
||||
rt_int16_t mini_width, mini_height;
|
||||
/* widget align */
|
||||
rt_int32_t align;
|
||||
rt_uint16_t border;
|
||||
rt_uint16_t border_style;
|
||||
/* the rect clip */
|
||||
rtgui_region_t clip;
|
||||
/* minimal width and height of widget */
|
||||
rt_int16_t min_width, min_height;
|
||||
/* widget align */
|
||||
rt_int32_t align;
|
||||
rt_uint16_t border;
|
||||
rt_uint16_t border_style;
|
||||
/* the rect clip */
|
||||
rtgui_region_t clip;
|
||||
|
||||
/* call back */
|
||||
rt_bool_t (*on_focus_in)(struct rtgui_object *widget, struct rtgui_event *event);
|
||||
rt_bool_t (*on_focus_out)(struct rtgui_object *widget, struct rtgui_event *event);
|
||||
/* call back */
|
||||
rt_bool_t (*on_focus_in)(struct rtgui_object *widget, struct rtgui_event *event);
|
||||
rt_bool_t (*on_focus_out)(struct rtgui_object *widget, struct rtgui_event *event);
|
||||
#ifndef RTGUI_USING_SMALL_SIZE
|
||||
rt_bool_t (*on_draw)(struct rtgui_object *widget, struct rtgui_event *event);
|
||||
rt_bool_t (*on_mouseclick)(struct rtgui_object *widget, struct rtgui_event *event);
|
||||
rt_bool_t (*on_key)(struct rtgui_object *widget, struct rtgui_event *event);
|
||||
rt_bool_t (*on_size)(struct rtgui_object *widget, struct rtgui_event *event);
|
||||
rt_bool_t (*on_command)(struct rtgui_object *widget, struct rtgui_event *event);
|
||||
rt_bool_t (*on_draw)(struct rtgui_object *widget, struct rtgui_event *event);
|
||||
rt_bool_t (*on_mouseclick)(struct rtgui_object *widget, struct rtgui_event *event);
|
||||
rt_bool_t (*on_key)(struct rtgui_object *widget, struct rtgui_event *event);
|
||||
rt_bool_t (*on_size)(struct rtgui_object *widget, struct rtgui_event *event);
|
||||
rt_bool_t (*on_command)(struct rtgui_object *widget, struct rtgui_event *event);
|
||||
#endif
|
||||
|
||||
/* user private data */
|
||||
rt_uint32_t user_data;
|
||||
};
|
||||
typedef struct rtgui_widget rtgui_widget_t;
|
||||
/* user private data */
|
||||
rt_uint32_t user_data;
|
||||
};
|
||||
typedef struct rtgui_widget rtgui_widget_t;
|
||||
|
||||
rtgui_widget_t *rtgui_widget_create(rtgui_type_t *widget_type);
|
||||
void rtgui_widget_destroy(rtgui_widget_t *widget);
|
||||
rtgui_widget_t *rtgui_widget_create(rtgui_type_t *widget_type);
|
||||
void rtgui_widget_destroy(rtgui_widget_t *widget);
|
||||
|
||||
rt_bool_t rtgui_widget_event_handler(struct rtgui_object *object, rtgui_event_t *event);
|
||||
rt_bool_t rtgui_widget_event_handler(struct rtgui_object *object, rtgui_event_t *event);
|
||||
|
||||
/* focus and unfocus */
|
||||
void rtgui_widget_focus(rtgui_widget_t *widget);
|
||||
void rtgui_widget_unfocus(rtgui_widget_t *widget);
|
||||
/* 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);
|
||||
/* 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);
|
||||
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_border(rtgui_widget_t *widget, rt_uint32_t style);
|
||||
void rtgui_widget_set_rect(rtgui_widget_t *widget, const rtgui_rect_t *rect);
|
||||
void rtgui_widget_set_rectangle(rtgui_widget_t *widget, int x, int y, int width, int height);
|
||||
void rtgui_widget_get_extent(rtgui_widget_t *widget, rtgui_rect_t *rect);
|
||||
/* get and set rect of widget */
|
||||
void rtgui_widget_get_rect(rtgui_widget_t *widget, rtgui_rect_t *rect);
|
||||
void rtgui_widget_set_border(rtgui_widget_t *widget, rt_uint32_t style);
|
||||
void rtgui_widget_set_rect(rtgui_widget_t *widget, const rtgui_rect_t *rect);
|
||||
void rtgui_widget_set_rectangle(rtgui_widget_t *widget, int x, int y, int width, int height);
|
||||
void rtgui_widget_get_extent(rtgui_widget_t *widget, rtgui_rect_t *rect);
|
||||
|
||||
#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
|
||||
void rtgui_widget_set_minsize(rtgui_widget_t *widget, int width, int height);
|
||||
void rtgui_widget_set_minwidth(rtgui_widget_t *widget, int width);
|
||||
void rtgui_widget_set_minheight(rtgui_widget_t *widget, int height);
|
||||
|
||||
void rtgui_widget_set_parent(rtgui_widget_t *widget, rtgui_widget_t *parent);
|
||||
void rtgui_widget_set_parent(rtgui_widget_t *widget, rtgui_widget_t *parent);
|
||||
|
||||
/* get the physical position of a logic point on widget */
|
||||
void rtgui_widget_point_to_device(rtgui_widget_t *widget, rtgui_point_t *point);
|
||||
/* get the physical position of a logic rect on widget */
|
||||
void rtgui_widget_rect_to_device(rtgui_widget_t *widget, rtgui_rect_t *rect);
|
||||
/* get the 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);
|
||||
/* 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);
|
||||
/* 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);
|
||||
/* update the clip info of widget */
|
||||
void rtgui_widget_update_clip(rtgui_widget_t *widget);
|
||||
|
||||
/* get the toplevel widget of widget */
|
||||
struct rtgui_win *rtgui_widget_get_toplevel(rtgui_widget_t *widget);
|
||||
rt_bool_t rtgui_widget_onupdate_toplvl(struct rtgui_object *object, struct rtgui_event *event);
|
||||
/* get the toplevel widget of widget */
|
||||
struct rtgui_win *rtgui_widget_get_toplevel(rtgui_widget_t *widget);
|
||||
rt_bool_t rtgui_widget_onupdate_toplvl(struct rtgui_object *object, struct rtgui_event *event);
|
||||
|
||||
void rtgui_widget_show(rtgui_widget_t *widget);
|
||||
rt_bool_t rtgui_widget_onshow(struct rtgui_object *object, struct rtgui_event *event);
|
||||
void rtgui_widget_hide(rtgui_widget_t *widget);
|
||||
rt_bool_t rtgui_widget_onhide(struct rtgui_object *object, struct rtgui_event *event);
|
||||
void rtgui_widget_update(rtgui_widget_t *widget);
|
||||
void rtgui_widget_show(rtgui_widget_t *widget);
|
||||
rt_bool_t rtgui_widget_onshow(struct rtgui_object *object, struct rtgui_event *event);
|
||||
void rtgui_widget_hide(rtgui_widget_t *widget);
|
||||
rt_bool_t rtgui_widget_onhide(struct rtgui_object *object, struct rtgui_event *event);
|
||||
void rtgui_widget_update(rtgui_widget_t *widget);
|
||||
|
||||
/* 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 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);
|
||||
/* 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);
|
||||
|
||||
/* dump widget information */
|
||||
void rtgui_widget_dump(rtgui_widget_t *widget);
|
||||
/* dump widget information */
|
||||
void rtgui_widget_dump(rtgui_widget_t *widget);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
||||
@@ -130,7 +130,7 @@ void rtgui_win_destroy(rtgui_win_t *win);
|
||||
rt_bool_t rtgui_win_close(struct rtgui_win *win);
|
||||
|
||||
rt_base_t rtgui_win_show(struct rtgui_win *win, rt_bool_t is_modal);
|
||||
void rtgui_win_hiden(rtgui_win_t *win);
|
||||
void rtgui_win_hide(rtgui_win_t *win);
|
||||
void rtgui_win_end_modal(rtgui_win_t *win, rtgui_modal_code_t modal_code);
|
||||
rt_err_t rtgui_win_activate(struct rtgui_win *win);
|
||||
rt_bool_t rtgui_win_is_activated(struct rtgui_win *win);
|
||||
|
||||
Reference in New Issue
Block a user