00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #if !defined(_XRB_ENGINE2_WORLDVIEWWIDGET_HPP_)
00012 #define _XRB_ENGINE2_WORLDVIEWWIDGET_HPP_
00013
00014 #include "xrb.hpp"
00015
00016 #include "xrb_simpletransform2.hpp"
00017 #include "xrb_vector.hpp"
00018 #include "xrb_widget.hpp"
00019
00020 namespace Xrb
00021 {
00022
00023 namespace Engine2
00024 {
00025
00026 class WorldView;
00027
00028
00029
00030
00031
00032
00033 class WorldViewWidget : public Widget
00034 {
00035 public:
00036
00037 WorldViewWidget (
00038 ContainerWidget *parent,
00039 std::string const &name = "Engine2::WorldViewWidget");
00040 virtual ~WorldViewWidget ();
00041
00042 inline WorldView *GetWorldView ()
00043 {
00044 return m_world_view;
00045 }
00046 inline WorldView const *GetWorldView () const
00047 {
00048 return m_world_view;
00049 }
00050 inline FloatSimpleTransform2 const &Transformation () const
00051 {
00052 return m_transform;
00053 }
00054 inline bool IsTransformScalingBasedUponWidgetRadius () const
00055 {
00056 return m_is_transform_scaling_based_upon_widget_radius;
00057 }
00058
00059
00060 void SetWorldView (WorldView *world_view);
00061 void SetIsTransformScalingBasedUponWidgetRadius (bool is_transform_scaling_based_upon_widget_radius);
00062
00063
00064 virtual void Draw (RenderContext const &render_context) const;
00065
00066
00067 virtual void MoveBy (ScreenCoordVector2 const &delta);
00068
00069
00070 virtual ScreenCoordVector2 Resize (ScreenCoordVector2 const &size);
00071
00072 protected:
00073
00074
00075 virtual void HandleFrame ();
00076
00077 virtual bool ProcessKeyEvent (EventKey const *e);
00078
00079 virtual bool ProcessMouseButtonEvent (EventMouseButton const *e);
00080
00081 virtual bool ProcessMouseWheelEvent (EventMouseWheel const *e);
00082
00083 virtual bool ProcessMouseMotionEvent (EventMouseMotion const *e);
00084
00085 virtual void HandleFocus ();
00086 virtual void HandleUnfocus ();
00087
00088
00089 void DrawFocusFrame (RenderContext const &render_context) const;
00090
00091 void ComputeTransform ();
00092
00093
00094 bool m_draw_focus_frame;
00095
00096 private:
00097
00098
00099 WorldView *m_world_view;
00100
00101 FloatSimpleTransform2 m_transform;
00102
00103
00104
00105
00106 bool m_is_transform_scaling_based_upon_widget_radius;
00107 };
00108
00109 }
00110
00111 }
00112
00113 #endif // !defined(_XRB_ENGINE2_WORLDVIEWWIDGET_HPP_)