| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- /*
- * File : pm_container.h
- * COPYRIGHT (C) 2012-2017, Shanghai Real-Thread Technology Co., Ltd
- *
- * Change Logs:
- * Date Author Notes
- * 2017-11-05 realthread the first version
- */
- #pragma once
- #include <pm_widget.h>
- #include <rtgui/widgets/widget.h>
- #include <rtgui/widgets/container.h>
- #include "sigslot.h"
- #include <vector>
- namespace Persimmon
- {
- class Container : public Widget
- {
- typedef Widget super;
- public:
- Container();
- Container(const rtgui_type_t* type);
- Container(const Rect &rect);
- virtual ~Container();
- virtual void addChild(Widget* widget);
- virtual void removeChild(Widget* widget);
- int getChildIndex(Widget* widget);
- void empty();
- void saveClip(struct rtgui_region ®ion);
- void restoreClip(struct rtgui_region ®ion);
- virtual void setRect(const Rect &rect);
- void setBox(struct rtgui_box *box);
- void layout();
- virtual void render(struct rtgui_dc* dc, const Point &dcPoint = Point(),
- const Rect &srcRect = Rect(),
- RenderFlag flags = DrawNormal);
- virtual rt_bool_t eventHandler(struct rtgui_event *event);
- virtual Widget* getMouseOwner(int x, int y);
- protected:
- /* C++ children object under this window */
- std::vector<Widget*> children;
- void handleEventInChildren(struct rtgui_event *event);
- };
- class TapContainer: public Container
- {
- public:
- TapContainer(const Rect &rect, int value = 0);
- virtual ~TapContainer() {}
- Signal<int> touch;
- virtual bool handleGestureEvent(struct rtgui_event_gesture *, const struct rtgui_gesture *);
- private:
- int baseValue;
- };
- }
|