handlebox.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef PAPYRUSHANDLEBOX_H
00021 #define PAPYRUSHANDLEBOX_H
00022
00023 #include <papyrus/boxed.h>
00024
00025 namespace Papyrus
00026 {
00027
00031 class Handlebox : public Boxed
00032 {
00033 protected:
00034
00035 Handlebox ( const Glib::ustring& id, Handles handles );
00036
00037 public:
00038 PAPYRUS_DRAWABLE(Handlebox);
00039
00040 static pointer create ( Handles handles=CORNER_HANDLES );
00041
00042 static pointer create ( const Glib::ustring& id, Handles handles=CORNER_HANDLES );
00043
00044 virtual ~Handlebox();
00045
00046 void set_handle_shape ( Position p, Drawable::pointer shape, bool activate=true );
00047
00048 void set_handle_shape ( Handles h, Drawable::pointer shape, bool activate=true );
00049
00050 Drawable::pointer get_handle_shape ( Position p );
00051
00052 void activate_handle ( Position p, bool activate=true );
00053
00054 void activate_handle ( Handles h, bool activate=true );
00055
00056 void deactivate_handle ( Position p );
00057
00058 void deactivate_handle ( Handles h );
00059
00060 bool is_active ( Position p );
00061
00062 bool is_active ( Handles h );
00063
00064 int inside_handle ( double x, double y );
00065
00066 protected:
00067 Drawable::pointer m_handle_shape[ 8 ];
00068 bool m_handle_active[8];
00069 bool m_initializing;
00070
00075 virtual Region calculate_extents(const Matrix& m = Matrix::Identity, ExtentsPerformance ep = EXTENTS_QUICK) const;
00076
00077 virtual void position_handle ( Drawable::pointer, double x, double y );
00078
00079 virtual void on_child_added ( Drawable::pointer child );
00080
00081 virtual void on_child_removed ( Drawable::pointer child );
00082
00083 };
00084
00085 }
00086
00087 #endif