25 #ifndef GCHEMPAINT_ATOM_H
26 #define GCHEMPAINT_ATOM_H
67 #define POSITION_SW 16
79 #define POSITION_W 128
128 Atom (
int Z,
double x,
double y,
double z);
140 virtual void SetZ (
int Z);
212 virtual bool GetPosition (
double angle,
double& x,
double& y);
219 virtual xmlNodePtr
Save (xmlDocPtr xml)
const;
226 virtual bool Load (xmlNodePtr node);
232 virtual bool LoadNode (xmlNodePtr node);
268 virtual void Move (
double x,
double y,
double z = 0.);
327 void SetChargePosition (
unsigned char Pos,
bool def,
double angle = 0.,
double distance = 0.);
373 void GetSymbolGeometry (
double &width,
double &height,
double &angle,
bool up)
const;
420 bool SetProperty (
unsigned property,
char const *value);
423 void UpdateAvailablePositions ();
429 int m_ValenceOrbitals;
432 double m_width, m_height;
433 double m_length, m_text_height;
439 unsigned char m_AvailPos;
440 unsigned char m_OccupiedPos;
441 bool m_AvailPosCached;
442 unsigned char m_ChargePos;
443 bool m_ChargeAutoPos;
444 double m_ChargeAngle;
446 double m_ChargeWidth, m_ChargeTWidth, m_ChargeXOffset, m_ChargeYOffset;
447 std::list<double> m_AngleList;
448 std::map<double, double> m_InterBonds;
450 PangoLayout *m_Layout, *m_ChargeLayout, *m_HLayout;
451 double m_xHOffs, m_yHOffs;
453 std::string m_FontName;
454 double m_SWidth, m_SHeightH, m_SHeightL, m_SAngleH, m_SAngleL;
456 double m_xROffs, m_yROffs;
520 #endif // GCHEMPAINT_ATOM_H