summaryrefslogtreecommitdiff
path: root/components/rtgui/widgets/box.c
diff options
context:
space:
mode:
authorBernard Xiong <[email protected]>2013-02-21 13:11:10 +0800
committerBernard Xiong <[email protected]>2013-02-21 13:11:10 +0800
commit385f682d7bfce81ba281faaffb0a250ab94985b8 (patch)
tree94fca413db98390d21dc18938067a7a90e470a6f /components/rtgui/widgets/box.c
parentc4bd0023f8da136c5788f47f9a0170a77f627be9 (diff)
remove RT-Thread GUI from RT-Thread temporary
Diffstat (limited to 'components/rtgui/widgets/box.c')
-rw-r--r--components/rtgui/widgets/box.c288
1 files changed, 0 insertions, 288 deletions
diff --git a/components/rtgui/widgets/box.c b/components/rtgui/widgets/box.c
deleted file mode 100644
index 448f47ea36..0000000000
--- a/components/rtgui/widgets/box.c
+++ /dev/null
@@ -1,288 +0,0 @@
-/*
- * File : box.c
- * 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
- */
-#include <rtgui/dc.h>
-#include <rtgui/widgets/box.h>
-
-static void _rtgui_box_constructor(rtgui_box_t *box)
-{
- /* init widget and set event handler */
- rtgui_object_set_event_handler(RTGUI_OBJECT(box), RT_NULL);
-
- /* set proper of control */
- box->orient = RTGUI_HORIZONTAL;
- box->border_size = RTGUI_BORDER_DEFAULT_WIDTH;
- box->container = RT_NULL;
-}
-
-DEFINE_CLASS_TYPE(box, "box",
- RTGUI_OBJECT_TYPE,
- _rtgui_box_constructor,
- RT_NULL,
- sizeof(struct rtgui_box));
-
-struct rtgui_box *rtgui_box_create(int orientation, int border_size)
-{
- struct rtgui_box *box;
-
- box = (struct rtgui_box *) rtgui_object_create(RTGUI_BOX_TYPE);
- if (box != RT_NULL)
- {
- box->orient = orientation;
- box->border_size = border_size;
- }
-
- return box;
-}
-RTM_EXPORT(rtgui_box_create);
-
-void rtgui_box_destroy(struct rtgui_box *box)
-{
- rtgui_object_destroy(RTGUI_OBJECT(box));
-}
-RTM_EXPORT(rtgui_box_destroy);
-
-static void rtgui_box_layout_vertical(struct rtgui_box *box, struct rtgui_rect *extent)
-{
- rtgui_list_t *node;
- rt_int32_t box_width;
- rt_int32_t space_count;
- rt_int32_t next_x, next_y;
- rt_int32_t total_height, space_height;
- struct rtgui_event_resize size_event;
-
- /* prepare the resize event */
- RTGUI_EVENT_RESIZE_INIT(&size_event);
-
- /* find spaces */
- space_count = 0;
- total_height = 0;
- space_height = 0;
-
- rtgui_list_foreach(node, &(box->container->children))
- {
- rtgui_widget_t *widget = rtgui_list_entry(node, struct rtgui_widget, sibling);
- if (widget->align & RTGUI_ALIGN_STRETCH) space_count ++;
- else total_height += widget->min_height;
- }
-
- /* calculate the height for each spaces */
- if (space_count != 0)
- {
- space_height = (rtgui_rect_height(*extent) - total_height - (box->border_size << 1)) / space_count;
- }
-
- /* init (x, y) and box width */
- next_x = extent->x1 + box->border_size;
- next_y = extent->y1 + box->border_size;
- box_width = rtgui_rect_width(*extent) - (box->border_size << 1);
-
- /* layout each widget */
- rtgui_list_foreach(node, &(box->container->children))
- {
- struct rtgui_rect *rect;
- rtgui_widget_t *widget = rtgui_list_entry(node, struct rtgui_widget, sibling);
-
- /* get extent of widget */
- rect = &(widget->extent);
-
- /* reset rect */
- rtgui_rect_moveto(rect, -rect->x1, -rect->y1);
- rect->x2 = widget->min_width;
- rect->y2 = widget->min_height;
-
- /* left in default */
- rtgui_rect_moveto(rect, next_x, next_y);
-
- if (widget->align & RTGUI_ALIGN_EXPAND)
- {
- /* expand on horizontal */
- rect->x2 = rect->x1 + (rt_int16_t)box_width;
- }
- if (widget->align & RTGUI_ALIGN_CENTER_VERTICAL)
- {
- /* center */
- rt_uint32_t mid;
-
- mid = box_width - rtgui_rect_width(*rect);
- mid = mid / 2;
-
- rect->x1 = next_x + mid;
- rect->x2 = next_x + box_width - mid;
- }
- else if (widget->align & RTGUI_ALIGN_RIGHT)
- {
- /* right */
- rect->x1 = next_x + box_width - rtgui_rect_width(*rect);
- rect->x2 = next_x + box_width;
- }
-
- if (widget->align & RTGUI_ALIGN_STRETCH)
- {
- rect->y2 = rect->y1 + space_height;
- }
-
- /* process resize event */
- size_event.x = rect->x1;
- size_event.y = rect->y1;
- size_event.w = rect->x2 - rect->x1;
- size_event.h = rect->y2 - rect->y1;
- RTGUI_OBJECT(widget)->event_handler(RTGUI_OBJECT(widget),
- &size_event.parent);
-
- /* point to next height */
- next_y = rect->y2 + box->border_size;
- }
-}
-
-static void rtgui_box_layout_horizontal(struct rtgui_box *box, struct rtgui_rect *extent)
-{
- rtgui_list_t *node;
- rt_int32_t box_height;
- rt_int32_t space_count;
- rt_int32_t next_x, next_y;
- rt_int32_t total_width, space_width;
- struct rtgui_event_resize size_event;
-
- /* prepare the resize event */
- RTGUI_EVENT_RESIZE_INIT(&size_event);
-
- /* find spaces */
- space_count = 0;
- total_width = 0;
- space_width = 0;
-
- rtgui_list_foreach(node, &(box->container->children))
- {
- rtgui_widget_t *widget = rtgui_list_entry(node, struct rtgui_widget, sibling);
- if (widget->align & RTGUI_ALIGN_STRETCH) space_count ++;
- else total_width += widget->min_width;
- }
-
- if (space_count != 0)
- {
- /* calculate the height for each spaces */
- space_width = (rtgui_rect_width(*extent) - total_width) / space_count;
- }
-
- /* init (x, y) and box height */
- next_x = extent->x1 + box->border_size;
- next_y = extent->y1 + box->border_size;
- box_height = rtgui_rect_height(*extent) - (box->border_size << 1);
-
- /* layout each widget */
- rtgui_list_foreach(node, &(box->container->children))
- {
- rtgui_rect_t *rect;
- rtgui_widget_t *widget = rtgui_list_entry(node, struct rtgui_widget, sibling);
-
- /* get extent of widget */
- rect = &(widget->extent);
-
- /* reset rect */
- rtgui_rect_moveto(rect, -rect->x1, -rect->y1);
- rect->x2 = widget->min_width;
- rect->y2 = widget->min_height;
-
- /* top in default */
- rtgui_rect_moveto(rect, next_x, next_y);
-
- if (widget->align & RTGUI_ALIGN_EXPAND)
- {
- /* expand on vertical */
- rect->y2 = rect->y1 + box_height;
- }
- if (widget->align & RTGUI_ALIGN_CENTER_HORIZONTAL)
- {
- /* center */
- rt_uint32_t mid;
-
- mid = box_height - rtgui_rect_height(*rect);
- mid = mid / 2;
-
- rect->y1 = next_y + mid;
- rect->y2 = next_y + box_height - mid;
- }
- else if (widget->align & RTGUI_ALIGN_RIGHT)
- {
- /* right */
- rect->y1 = next_y + box_height - rtgui_rect_height(*rect);
- rect->y2 = next_y + box_height;
- }
-
- if (widget->align & RTGUI_ALIGN_STRETCH)
- {
- rect->x2 = rect->x1 + space_width;
- }
-
- /* process resize event */
- size_event.x = rect->x1;
- size_event.y = rect->y1;
- size_event.w = rect->x2 - rect->x1;
- size_event.h = rect->y2 - rect->y1;
- RTGUI_OBJECT(widget)->event_handler(RTGUI_OBJECT(widget),
- &size_event.parent);
-
- /* point to next width */
- next_x = rect->x2 + box->border_size;
- }
-}
-
-void rtgui_box_layout(rtgui_box_t *box)
-{
- struct rtgui_rect extent;
- RT_ASSERT(box != RT_NULL);
-
- if (box->container == RT_NULL) return;
-
- rtgui_widget_get_extent(RTGUI_WIDGET(box->container), &extent);
- if (box->orient & RTGUI_VERTICAL)
- {
- rtgui_box_layout_vertical(box, &extent);
- }
- else
- {
- rtgui_box_layout_horizontal(box, &extent);
- }
-
- /* update box and its children clip */
- if (!RTGUI_WIDGET_IS_HIDE(RTGUI_WIDGET(box->container)))
- {
- rtgui_widget_update_clip(RTGUI_WIDGET(box->container));
- }
-}
-RTM_EXPORT(rtgui_box_layout);
-
-void rtgui_box_layout_rect(rtgui_box_t *box, struct rtgui_rect *rect)
-{
- RT_ASSERT(box != RT_NULL);
-
- if (box->container == RT_NULL) return;
-
- if (box->orient & RTGUI_VERTICAL)
- {
- rtgui_box_layout_vertical(box, rect);
- }
- else
- {
- rtgui_box_layout_horizontal(box, rect);
- }
-
- /* update box and its children clip */
- if (!RTGUI_WIDGET_IS_HIDE(RTGUI_WIDGET(box->container)))
- {
- rtgui_widget_update_clip(RTGUI_WIDGET(box->container));
- }
-}
-RTM_EXPORT(rtgui_box_layout_rect);
-