diff options
Diffstat (limited to 'rtgui/include')
| -rw-r--r-- | rtgui/include/rtgui/rtgui_theme.h | 8 | ||||
| -rw-r--r-- | rtgui/include/rtgui/widgets/checkbox.h | 36 | ||||
| -rw-r--r-- | rtgui/include/rtgui/widgets/progressbar.h | 41 | ||||
| -rw-r--r-- | rtgui/include/rtgui/widgets/radiobox.h | 36 | ||||
| -rw-r--r-- | rtgui/include/rtgui/widgets/slider.h | 39 | ||||
| -rw-r--r-- | rtgui/include/rtgui/widgets/staticline.h | 34 | ||||
| -rw-r--r-- | rtgui/include/rtgui/widgets/textbox.h | 12 | ||||
| -rw-r--r-- | rtgui/include/rtgui/widgets/widget.h | 6 |
8 files changed, 206 insertions, 6 deletions
diff --git a/rtgui/include/rtgui/rtgui_theme.h b/rtgui/include/rtgui/rtgui_theme.h index 0efde47cad..9f0ddba0e8 100644 --- a/rtgui/include/rtgui/rtgui_theme.h +++ b/rtgui/include/rtgui/rtgui_theme.h @@ -21,6 +21,10 @@ #include <rtgui/widgets/button.h>
#include <rtgui/widgets/textbox.h>
#include <rtgui/widgets/iconbox.h>
+#include <rtgui/widgets/checkbox.h>
+#include <rtgui/widgets/slider.h>
+#include <rtgui/widgets/progressbar.h>
+#include <rtgui/widgets/staticline.h>
#ifdef __cplusplus
extern "C" {
@@ -33,6 +37,10 @@ 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_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);
diff --git a/rtgui/include/rtgui/widgets/checkbox.h b/rtgui/include/rtgui/widgets/checkbox.h new file mode 100644 index 0000000000..0498435a4f --- /dev/null +++ b/rtgui/include/rtgui/widgets/checkbox.h @@ -0,0 +1,36 @@ +#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);
+void rtgui_checkbox_destroy(rtgui_checkbox_t* checkbox);
+
+void rtgui_checkbox_ondraw(rtgui_checkbox_t* checkbox);
+rt_bool_t rtgui_checkbox_event_handler(struct rtgui_widget* widget, struct rtgui_event* event);
+
+#endif
diff --git a/rtgui/include/rtgui/widgets/progressbar.h b/rtgui/include/rtgui/widgets/progressbar.h new file mode 100644 index 0000000000..cf3c2ce4c5 --- /dev/null +++ b/rtgui/include/rtgui/widgets/progressbar.h @@ -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
diff --git a/rtgui/include/rtgui/widgets/radiobox.h b/rtgui/include/rtgui/widgets/radiobox.h new file mode 100644 index 0000000000..dfd563ff9e --- /dev/null +++ b/rtgui/include/rtgui/widgets/radiobox.h @@ -0,0 +1,36 @@ +#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_SLIDER(obj) (RTGUI_OBJECT_CAST((obj), RTGUI_RADIOBOX_TYPE, rtgui_radiobox_t))
+/** Checks if the object is an rtgui_radiobox */
+#define RTGUI_IS_SLIDER(obj) (RTGUI_OBJECT_CHECK_TYPE((obj), RTGUI_RADIOBOX_TYPE))
+
+struct rtgui_radiobox
+{
+ struct rtgui_widget parent;
+
+ /* widget private data */
+ int orient;
+
+ char* items;
+ int item_count, item_selection;
+};
+typedef struct rtgui_radiobox rtgui_radiobox_t;
+
+rtgui_type_t *rtgui_radiobox_type_get(void);
+
+struct rtgui_radiobox* rtgui_radiobox_create(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);
+
+#endif
diff --git a/rtgui/include/rtgui/widgets/slider.h b/rtgui/include/rtgui/widgets/slider.h new file mode 100644 index 0000000000..d657790899 --- /dev/null +++ b/rtgui/include/rtgui/widgets/slider.h @@ -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
diff --git a/rtgui/include/rtgui/widgets/staticline.h b/rtgui/include/rtgui/widgets/staticline.h new file mode 100644 index 0000000000..287f57410e --- /dev/null +++ b/rtgui/include/rtgui/widgets/staticline.h @@ -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
+
diff --git a/rtgui/include/rtgui/widgets/textbox.h b/rtgui/include/rtgui/widgets/textbox.h index 5ee22ca4d3..95259e9b0e 100644 --- a/rtgui/include/rtgui/widgets/textbox.h +++ b/rtgui/include/rtgui/widgets/textbox.h @@ -27,8 +27,10 @@ #define RTGUI_TEXTBOX_DEFAULT_WIDTH 80
#define RTGUI_TEXTBOX_DEFAULT_HEIGHT 20
-#define RTGUI_TEXTBOX_SINGLE 0x00
-#define RTGUI_TEXTBOX_MULTI 0x00
+#define RTGUI_TEXTBOX_SINGLE 0x00
+#define RTGUI_TEXTBOX_MULTI 0x01
+#define RTGUI_TEXTBOX_CARET_SHOW 0x10
+#define RTGUI_TEXTBOX_CARET_HIDE 0x00
struct rtgui_textbox_line
{
@@ -42,11 +44,11 @@ struct rtgui_textbox /* inherit from widget */
struct rtgui_widget parent;
- /* text box type */
- rt_ubase_t type;
+ /* text box flag */
+ rt_uint8_t flag;
/* current line and position */
- rt_size_t line, line_begin, position, line_length;
+ rt_uint16_t line, line_begin, position, line_length;
rt_uint8_t* text;
rt_size_t font_width;
diff --git a/rtgui/include/rtgui/widgets/widget.h b/rtgui/include/rtgui/widgets/widget.h index 56fbe650d6..8f71629031 100644 --- a/rtgui/include/rtgui/widgets/widget.h +++ b/rtgui/include/rtgui/widgets/widget.h @@ -42,7 +42,7 @@ extern "C" { #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_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) @@ -195,6 +195,10 @@ 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 */ |
