00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef GCHEMPAINT_ARROW_H
00026 #define GCHEMPAINT_ARROW_H
00027
00028 #include <gcu/object.h>
00029
00030 namespace gcp {
00031
00032 enum
00033 {
00034 SimpleArrow,
00035 ReversibleArrow,
00036 FullReversibleArrow,
00037 };
00038
00039 class Arrow: public gcu::Object
00040 {
00041 public:
00042 Arrow(gcu::TypeId Type);
00043 virtual ~Arrow();
00044
00045 bool Load (xmlNodePtr);
00046 void SetSelected (GtkWidget* w, int state);
00047 void SetCoords (double xstart, double ystart, double xend, double yend);
00048 bool GetCoords (double* xstart, double* ystart, double* xend, double* yend);
00049 void Move (double x, double y, double z = 0);
00050 void Transform2D (gcu::Matrix2D& m, double x, double y);
00051 double GetYAlign ();
00052 bool SetProperty (unsigned property, char const *value);
00053
00054 protected:
00055 bool Save (xmlDocPtr xml, xmlNodePtr node);
00056
00057 protected:
00058 double m_x, m_y, m_width, m_height;
00059 };
00060
00061 }
00062
00063 #endif //GCHEMPAINT_ARROW_H