electron.h
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_ELECTRON_H
00026 #define GCHEMPAINT_ELECTRON_H
00027
00028 #include <gcu/object.h>
00029
00030 namespace gcp {
00031
00032 class Atom;
00033
00034 extern gcu::TypeId ElectronType;
00035
00036 class Electron: public gcu::Object
00037 {
00038 public:
00039 Electron (Atom *pAtom, bool IsPair);
00040 ~Electron ();
00041
00042 bool IsPair () {return m_IsPair;}
00043 char GetPosition (double *angle, double *distance);
00044 void SetPosition (unsigned char Pos, double angle = 0., double distance = 0.);
00045 virtual void Add(GtkWidget* w) const;
00046 virtual void Update(GtkWidget* w) const;
00047 virtual void SetSelected(GtkWidget* w, int state);
00048 virtual xmlNodePtr Save (xmlDocPtr xml) const;
00049 virtual bool Load (xmlNodePtr);
00050 virtual bool OnSignal (gcu::SignalId Signal, gcu::Object *Child);
00051 virtual void Transform2D (gcu::Matrix2D& m, double x, double y);
00052
00053 private:
00054 Atom* m_pAtom;
00055 bool m_IsPair;
00056 unsigned char m_Pos;
00057 double m_Angle, m_Dist;
00058 };
00059
00060 }
00061
00062 #endif // GCHEMPAINT_ELECTRON_H