fragment.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
00021
00022
00023
00024
00025 #ifndef GCHEMPAINT_FRAGMENT_H
00026 #define GCHEMPAINT_FRAGMENT_H
00027
00028 #include "text-object.h"
00029 #include "libgnomecanvas/gnome-canvas.h"
00030
00032 namespace gcp {
00033
00034 class FragmentAtom;
00035 class Atom;
00036
00044 class Fragment: public TextObject
00045 {
00046 public:
00050 Fragment ();
00058 Fragment (double x, double y);
00062 virtual ~Fragment ();
00063
00067 void SetSelected (GtkWidget *w, int state);
00071 void Add (GtkWidget *w) const;
00075 void Update (GtkWidget *w) const;
00079 xmlNodePtr Save (xmlDocPtr xml) const;
00083 xmlNodePtr SaveSelection (xmlDocPtr xml) const;
00087 bool Load (xmlNodePtr);
00091 bool OnChanged (bool save);
00095 void AnalContent ();
00099 void AnalContent (unsigned start, unsigned &end);
00103 Object* GetAtomAt (double x, double y, double z = 0.);
00107 void Move (double x, double y, double z = 0);
00111 void Transform2D (gcu::Matrix2D& m, double x, double y);
00115 void OnChangeAtom ();
00119 Atom* GetAtom () {return (Atom*) m_Atom;}
00123 int GetElementAtPos (unsigned start, unsigned &end);
00127 int GetChargePosition (FragmentAtom *pAtom, unsigned char &Pos, double Angle, double &x, double &y);
00131 int GetAvailablePosition (double &x, double &y);
00135 bool GetPosition (double angle, double &x, double &y);
00139 bool Validate ();
00143 double GetYAlign ();
00144
00147 bool SetProperty (unsigned property, char const *value);
00148
00151 bool Analyze ();
00152
00155 void Update ();
00156
00157 private:
00158 bool SavePortion (xmlDocPtr xml, xmlNodePtr node, unsigned start, unsigned end) const;
00159
00160 private:
00161 FragmentAtom *m_Atom;
00162 unsigned m_BeginAtom, m_EndAtom;
00163 int m_lbearing;
00164 double m_CHeight;
00165 bool m_Inversable;
00166 };
00167
00168 }
00169
00170 #endif //GCHEMPAINT_FRAGMENT_H