The Gnome Chemistry Utils  0.14.12
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
gcp::Atom Class Reference

#include <atom.h>

Inheritance diagram for gcp::Atom:
gcu::Atom gcu::DialogOwner gccv::ItemClient gcu::Object gcp::FragmentAtom gcp::FragmentResidue

Public Member Functions

 Atom ()
 
 Atom (int Z, double x, double y, double z)
 
virtual ~Atom ()
 
virtual void SetZ (int Z)
 
void AddBond (gcu::Bond *pBond)
 
void RemoveBond (gcu::Bond *pBond)
 
virtual void Update ()
 
int GetTotalBondsNumber () const
 
int GetAttachedHydrogens () const
 
HPos GetBestSide ()
 
virtual gccv::Anchor GetChargePosition (unsigned char &Pos, double Angle, double &x, double &y)
 
virtual int GetAvailablePosition (double &x, double &y)
 
virtual bool GetRelativePosition (double angle, double &x, double &y)
 
virtual bool GetPosition (double angle, double &x, double &y)
 
virtual xmlNodePtr Save (xmlDocPtr xml) const
 
virtual bool Load (xmlNodePtr node)
 
virtual bool LoadNode (xmlNodePtr node)
 
void AddItem ()
 
void SetSelected (int state)
 
virtual bool AcceptNewBonds (int nb=1)
 
virtual bool AcceptCharge (int charge)
 
virtual double GetYAlign ()
 
virtual void Move (double x, double y, double z=0.)
 
virtual void Transform2D (gcu::Matrix2D &m, double x, double y)
 
bool BuildContextualMenu (gcu::UIManager *UIManager, Object *object, double x, double y)
 
virtual void AddToMolecule (Molecule *Mol)
 
bool HasImplicitElectronPairs ()
 
bool MayHaveImplicitUnpairedElectrons ()
 
void AddElectron (Electron *electron)
 
void RemoveElectron (Electron *electron)
 
void NotifyPositionOccupation (unsigned char pos, bool occupied)
 
void SetChargePosition (unsigned char Pos, bool def, double angle=0., double distance=0.)
 
char GetChargePosition (double *Angle, double *Dist) const
 
void SetCharge (int charge)
 
int GetCharge () const
 
void ForceChanged ()
 
bool Match (gcu::Atom *atom, gcu::AtomMatchState &state)
 
void GetSymbolGeometry (double &width, double &height, double &angle, bool up) const
 
bool HasAvailableElectrons (bool paired)
 
BondGetBondAtAngle (double angle)
 
bool UpdateStereoBonds ()
 
bool HasStereoBond () const
 
BondGetNewmanBond () const
 
void SetShowSymbol (bool val)
 
bool GetShowSymbol (void) const
 
bool & GetRefShowSymbol (void)
 
void SetHPosStyle (HPos val)
 
HPos GetHPosStyle (void) const
 
HPosGetRefHPosStyle (void)
 
void SetChargeItem (gccv::Item *val)
 
gccv::ItemGetChargeItem (void)
 
void SetShowCharge (bool val)
 
bool GetShowCharge (void) const
 
- Public Member Functions inherited from gcu::Atom
 Atom ()
 
 Atom (int Z, double x, double y, double z=0.)
 
 Atom (Atom &a)
 
Atomoperator= (Atom &a)
 
double Distance (Atom *pAtom)
 
void zoom (double ZoomFactor)
 
bool GetCoords (double *x, double *y, double *z=NULL) const
 
void SetCoords (double x, double y, double z=0)
 
int GetZ () const
 
virtual void SetCharge (char Charge)
 
char GetCharge ()
 
virtual const gchar * GetSymbol () const
 
double x () const
 
double y () const
 
double z () const
 
Vector GetVector () const
 
BondGetFirstBond (std::map< Atom *, Bond * >::iterator &i)
 
Bond const * GetFirstBond (std::map< Atom *, Bond * >::const_iterator &i) const
 
BondGetNextBond (std::map< Atom *, Bond * >::iterator &i)
 
Bond const * GetNextBond (std::map< Atom *, Bond * >::const_iterator &i) const
 
BondGetBond (Atom *pAtom) const
 
int GetBondsNumber () const
 
virtual bool SaveNode (xmlDocPtr xml, xmlNodePtr node) const
 
bool IsInCycle (Cycle *pCycle)
 
std::string Name ()
 
void NetToCartesian (double a, double b, double c, double alpha, double beta, double gamma)
 
- Public Member Functions inherited from gcu::Object
 Object (TypeId Id=OtherType)
 
virtual ~Object ()
 
TypeId GetType () const
 
void SetId (gchar const *Id)
 
char const * GetId () const
 
virtual void AddChild (Object *object)
 
ObjectGetMolecule () const
 
ObjectGetReaction () const
 
ObjectGetGroup () const
 
DocumentGetDocument () const
 
ApplicationGetApplication () const
 
ObjectGetParentOfType (TypeId Id) const
 
ObjectGetChild (const gchar *Id) const
 
ObjectGetFirstChild (std::map< std::string, Object * >::iterator &i)
 
ObjectGetNextChild (std::map< std::string, Object * >::iterator &i)
 
ObjectGetDescendant (const char *Id) const
 
ObjectGetParent () const
 
void SetParent (Object *Parent)
 
bool SaveChildren (xmlDocPtr xml, xmlNodePtr node) const
 
void SaveId (xmlNodePtr node) const
 
xmlNodePtr GetNodeByProp (xmlNodePtr node, char const *Property, char const *Id)
 
xmlNodePtr GetNextNodeByProp (xmlNodePtr node, char const *Property, char const *Id)
 
xmlNodePtr GetNodeByName (xmlNodePtr node, char const *Name)
 
xmlNodePtr GetNextNodeByName (xmlNodePtr node, char const *Name)
 
bool HasChildren () const
 
unsigned GetChildrenNumber () const
 
virtual ObjectGetAtomAt (double x, double y, double z=0.)
 
virtual bool Build (std::set< Object * > const &Children) throw (std::invalid_argument)
 
virtual bool BuildContextualMenu (UIManager *uim, Object *object, double x, double y)
 
void EmitSignal (SignalId Signal)
 
virtual bool OnSignal (SignalId Signal, Object *Child)
 
void Lock (bool state=true)
 
bool IsLocked ()
 
ObjectGetFirstLink (std::set< Object * >::iterator &i)
 
ObjectGetNextLink (std::set< Object * >::iterator &i)
 
void Link (Object *object)
 
void Unlink (Object *object)
 
virtual void OnUnlink (Object *object)
 
void GetPossibleAncestorTypes (std::set< TypeId > &types) const
 
virtual void OnLoaded ()
 
void SetDirty (bool dirty=true)
 
virtual void Clear ()
 
std::string Identity ()
 
virtual char const * HasPropertiesDialog () const
 
virtual bool CanSelect () const
 
virtual void NotifyEmpty ()
 
void ShowPropertiesDialog ()
 
bool GetDirty (void) const
 
- Public Member Functions inherited from gcu::DialogOwner
 DialogOwner ()
 
virtual ~DialogOwner ()
 
DialogGetDialog (std::string name) const
 
void ClearDialogs ()
 
- Public Member Functions inherited from gccv::ItemClient
 ItemClient ()
 
virtual ~ItemClient ()
 
virtual void UpdateItem ()
 
ItemGetItem (void)
 

Protected Member Functions

void BuildSymbolGeometry (double width, double height, double ascent)
 
bool SetProperty (unsigned property, char const *value)
 
std::string GetProperty (unsigned property) const
 
- Protected Member Functions inherited from gcu::Object
virtual DialogBuildPropertiesDialog ()
 

Protected Attributes

double m_CHeight
 
- Protected Attributes inherited from gcu::Atom
int m_Z
 
double m_x
 
double m_y
 
double m_z
 
char m_Charge
 
std::map< Atom *, Bond * > m_Bonds
 
- Protected Attributes inherited from gccv::ItemClient
Itemm_Item
 

Additional Inherited Members

- Static Public Member Functions inherited from gcu::Object
static TypeId AddType (std::string TypeName, Object *(*CreateFunc)(), TypeId id=OtherType)
 
static void AddAlias (TypeId id, std::string TypeName)
 
static ObjectCreateObject (const std::string &TypeName, Object *parent=NULL)
 
static TypeId GetTypeId (const std::string &Name)
 
static std::string GetTypeName (TypeId Id)
 
static void AddMenuCallback (TypeId Id, BuildMenuCb cb)
 
static void AddRule (TypeId type1, RuleId rule, TypeId type2)
 
static void AddRule (const std::string &type1, RuleId rule, const std::string &type2)
 
static const std::set< TypeId > & GetRules (TypeId type, RuleId rule)
 
static const std::set< TypeId > & GetRules (const std::string &type, RuleId rule)
 
static void SetCreationLabel (TypeId Id, std::string Label)
 
static const std::string & GetCreationLabel (TypeId Id)
 
static const std::string & GetCreationLabel (const std::string &TypeName)
 
static SignalId CreateNewSignalId ()
 

Detailed Description

Represents atoms in GChemPaint.

Definition at line 113 of file gcp/atom.h.

Constructor & Destructor Documentation

gcp::Atom::Atom ( )

Default construtor.

gcp::Atom::Atom ( int  Z,
double  x,
double  y,
double  z 
)
Parameters
Zthe atomic number.
xthe x coordinate.
ythe y coordinate.
zthe z coordinate.
virtual gcp::Atom::~Atom ( )
virtual

The destructor.

Reimplemented from gcu::Atom.

Member Function Documentation

virtual bool gcp::Atom::AcceptCharge ( int  charge)
virtual
Parameters
chargethe charge that might be set.
Returns
true if the charge is acceptable.

Reimplemented in gcp::FragmentAtom.

virtual bool gcp::Atom::AcceptNewBonds ( int  nb = 1)
virtual
Parameters
nbthe number of bonds to add, taking orders into account.
Returns
true if the operation is allowed, false if the new bonds would exceed the maximum valence for the element.

Reimplemented in gcp::FragmentAtom.

void gcp::Atom::AddBond ( gcu::Bond pBond)
virtual
Parameters
pBonda bond.

Adds a bond to the atom.

Reimplemented from gcu::Atom.

void gcp::Atom::AddElectron ( Electron electron)
Parameters
electrona pointer to an Electron instance.

Adds the Electron (representing either a single electron or a pair) to the Atom.

void gcp::Atom::AddItem ( )
virtual

Used to add a representation of the atom in the view.

Reimplemented from gccv::ItemClient.

Reimplemented in gcp::FragmentAtom.

virtual void gcp::Atom::AddToMolecule ( Molecule Mol)
virtual
Parameters
Mola pointer to a molecule

Adds the atom to the molecule calling gcpMolecule::AddAtom()

Reimplemented in gcp::FragmentAtom.

bool gcp::Atom::BuildContextualMenu ( gcu::UIManager UIManager,
Object object,
double  x,
double  y 
)
Parameters
UIManagerthe gcu::UIManager to populate.
objectthe atom on which occured the mouse click.
xx coordinate of the mouse click.
yy coordinate of the mouse click.

This method is called to build a contextual menu for the atom.

void gcp::Atom::BuildSymbolGeometry ( double  width,
double  height,
double  ascent 
)
protected
Parameters
widththe witdh of the atomic symbol.
heightthe height of the atomic symbol.
ascentthe ascent of the atomic symbol.

Evaluates where lines representing bonds should end to not overload the symbol.

void gcp::Atom::ForceChanged ( )
inline

Forces an update.

Definition at line 348 of file gcp/atom.h.

int gcp::Atom::GetAttachedHydrogens ( ) const
inline
Returns
the number of implicit hydrogens lnked to the atom.

Definition at line 164 of file gcp/atom.h.

virtual int gcp::Atom::GetAvailablePosition ( double &  x,
double &  y 
)
virtual
Parameters
xthe x position.
ythe y position.

This method finds an available position for drawing a charge sign or electrons and returns it as a symbolic value (see POSITION_E, POSITION_N,...). The x and y are updated so that they give the absolute position.

Returns
an available position.

Reimplemented in gcp::FragmentAtom.

HPos gcp::Atom::GetBestSide ( )
Returns
the position of the attached hydrogen atoms symbol when automatically arranged.
Bond* gcp::Atom::GetBondAtAngle ( double  angle)
Parameters
anglethe angle from the east direction in the trigonometric convention.
Returns
the bond at or near the direction given by angle.
int gcp::Atom::GetCharge ( ) const
inline
Returns
the current formal local charge.

Definition at line 344 of file gcp/atom.h.

gcp::Atom::GetChargeItem ( void  )
inline
Returns
the gccv::Item used to represent the formal charge of the atom.

Definition at line 510 of file gcp/atom.h.

virtual gccv::Anchor gcp::Atom::GetChargePosition ( unsigned char &  Pos,
double  Angle,
double &  x,
double &  y 
)
virtual
Parameters
Posthe approximate position of the charge.
Anglethe angle from horizontal left.
xthe x position of the charge symbol.
ythe y position of the charge symbol.

On input Pos can be one of POSITION_E, POSITION_N,... or 0xff, in which case, it will be given a default value. x and y are set to the position where the charge sign should be displayed usding the alignment code returned by this method.

Returns
the anchor for the charge symbol. On error, gccv::AnchorCenter is used as the returned value.

Reimplemented in gcp::FragmentAtom.

char gcp::Atom::GetChargePosition ( double *  Angle,
double *  Dist 
) const
Parameters
Anglewhere to store the angle from east direction in the trigonometric convention.
Distwhere to store the distance from the center of the atom.
Returns
the charge position as one of POSITION_E, POSITION_N,...
gcp::Atom::GetHPosStyle ( void  ) const
inline
Returns
the position of attached hydrogen atoms symbol.

Definition at line 498 of file gcp/atom.h.

Bond* gcp::Atom::GetNewmanBond ( ) const
Returns
the axial bond in a Newman projection if the atom has one. If the atom has more than one (as in an allene) one of them is returned.
virtual bool gcp::Atom::GetPosition ( double  angle,
double &  x,
double &  y 
)
virtual
Parameters
anglethe angle at which a charge sign or an electron should be displayed.
xthe x position.
ythe y position.

Updates x and y so that they become the absolute position corresponding to the angle when the position is available.

Returns
true on success, false otherwise.

Reimplemented in gcp::FragmentAtom.

std::string gcp::Atom::GetProperty ( unsigned  property) const
protectedvirtual
Parameters
propertythe identity of the property as defined in objprops.h.

Used by the gcu::Loader mechanism to retrieve properties of atoms.

Returns
the value of the property as a string.

Reimplemented from gcu::Atom.

gcp::Atom::GetRefHPosStyle ( void  )
inline
Returns
the position of attached hydrogen atoms symbol as a reference.

Definition at line 498 of file gcp/atom.h.

gcp::Atom::GetRefShowSymbol ( void  )
inline
Returns
whether the symbol of a carbon atom is displayed or not as a reference.

Definition at line 485 of file gcp/atom.h.

virtual bool gcp::Atom::GetRelativePosition ( double  angle,
double &  x,
double &  y 
)
virtual
Parameters
anglethe angle at which a charge sign or an electron should be displayed.
xthe x position.
ythe y position.

Updates x and y so that they become the position corresponding to the angle when the position is available, the origin being the position of the atom.

Returns
true on success, false otherwise.
gcp::Atom::GetShowCharge ( void  ) const
inline
Returns
whether the local charge is displayed.
whether the local charge is displayed as a reference.

Definition at line 522 of file gcp/atom.h.

gcp::Atom::GetShowSymbol ( void  ) const
inline
Returns
whether the symbol of a carbon atom is displayed or not.

Definition at line 485 of file gcp/atom.h.

void gcp::Atom::GetSymbolGeometry ( double &  width,
double &  height,
double &  angle,
bool  up 
) const
Parameters
widthwhere to store the width.
heightwhere to store the height.
anglewhere to store the limit angle.
upwhether considering the top half or the bottom half

Used to retrieve the size of the ink rectangle of the atom symbol (if displayed). angle is absolute value of the angle between an horizontal line and the line joining the center and the top left or the bottom left vertex. The returned width value is actually half the full width. Height is the height. This method is used to avoid bonds lines extending over their atoms symbols.

int gcp::Atom::GetTotalBondsNumber ( ) const
Returns
the bonds number for this atom taking bond order into account
virtual double gcp::Atom::GetYAlign ( )
virtual
Returns
the y coordinate at half height of the atom symbol if it was carbon.

Reimplemented from gcu::Object.

bool gcp::Atom::HasAvailableElectrons ( bool  paired)
Parameters
pairedwhether to ask for a pair of electrons or a single electron.
Returns
true if non-bonding valence electrons are available.
bool gcp::Atom::HasImplicitElectronPairs ( )
Returns
true if the atom has implicit electron pairs, false otherwise.
bool gcp::Atom::HasStereoBond ( ) const
Returns
true if the bond is a stereocenter.
virtual bool gcp::Atom::Load ( xmlNodePtr  node)
virtual
Parameters
nodea pointer to the xmlNode containing the serialized atom.

Used to load an atom in memory. The Atom must already exist.

Returns
true on succes, false otherwise.

Reimplemented from gcu::Atom.

Reimplemented in gcp::FragmentAtom, and gcp::FragmentResidue.

virtual bool gcp::Atom::LoadNode ( xmlNodePtr  node)
virtual
Parameters
nodea pointer to the xmlNode containing the serialized Atom.

Used in this class to correctly set the atomic number.

Reimplemented from gcu::Atom.

bool gcp::Atom::Match ( gcu::Atom atom,
gcu::AtomMatchState state 
)
virtual
Parameters
atomthe atom to which the this instance is to be compared.
statethe AtomMatchState representing the current comparison state.

Try to match atoms from two molecules which are compared. This function calls itself recursively until all atoms from the two molecules have been matched or until an difference is found. Overriden methods should call this base function and return its result.

Returns
true if the atoms match, false otherwise.

Reimplemented from gcu::Atom.

Reimplemented in gcp::FragmentAtom.

bool gcp::Atom::MayHaveImplicitUnpairedElectrons ( )
Returns
true if the atom has implcit electrons that might be unpaired.
virtual void gcp::Atom::Move ( double  x,
double  y,
double  z = 0. 
)
virtual
Parameters
xthe x component of the transation vector.
ythe y component of the transation vector.
zthe z component of the transation vector.

Used to move an Atom.

Reimplemented from gcu::Atom.

void gcp::Atom::NotifyPositionOccupation ( unsigned char  pos,
bool  occupied 
)
Parameters
posone of POSITION_E, POSITION_N,...
occupiedtrue if occupied, false otherwise.

Notifies if a position is occupied or not.

void gcp::Atom::RemoveBond ( gcu::Bond pBond)
virtual
Parameters
pBonda bond.

Removes a bond from the atom.

Reimplemented from gcu::Atom.

void gcp::Atom::RemoveElectron ( Electron electron)
Parameters
electrona pointer to an Electron instance.

Removes the Electron (representing either a single electron or a pair) from the Atom.

virtual xmlNodePtr gcp::Atom::Save ( xmlDocPtr  xml) const
virtual
Parameters
xmlthe xmlDoc used to save the document.

Used to save the Atom to the xmlDoc.

Returns
the xmlNode containing the serialized atom.

Reimplemented from gcu::Atom.

Reimplemented in gcp::FragmentAtom, and gcp::FragmentResidue.

void gcp::Atom::SetCharge ( int  charge)
Parameters
chargethe charge to set.

Sets the formal local charge of an atom.

gcp::Atom::SetChargeItem ( gccv::Item item)
inline
Parameters
itema gccv::Item.

Sets the gccv::Item used to represent the formal charge of the atom, might be NULL.

Definition at line 510 of file gcp/atom.h.

void gcp::Atom::SetChargePosition ( unsigned char  Pos,
bool  def,
double  angle = 0.,
double  distance = 0. 
)
Parameters
Posone of POSITION_E, POSITION_N,...
deftrue if the position is automatic.
anglethe angle from the east direction in the trigonometric convention.
distancethe distance from the center of the atom, or 0. if automatic.

Sets the relative position of a charge sign.

gcp::Atom::SetHPosStyle ( HPos  val)
inline
Parameters
valthe new position.

Sets the position of attached hydrogen atoms symbol.

Definition at line 498 of file gcp/atom.h.

bool gcp::Atom::SetProperty ( unsigned  property,
char const *  value 
)
protectedvirtual
Parameters
propertythe identity of the property as defined in objprops.h.
valuethe value of the property as a string.

Used by the gcu::Loader mechanism to load properties of atoms.

Returns
true on success.

Reimplemented from gcu::Atom.

void gcp::Atom::SetSelected ( int  state)
virtual
Parameters
statethe selection state of the atom.

Used to set the selection state of the atom inside the widget. The values of state might be gcp::SelStateUnselected, gcp::SelStateSelected, gcp::SelStateUpdating, or gcp::SelStateErasing.

Reimplemented from gccv::ItemClient.

Reimplemented in gcp::FragmentAtom.

gcp::Atom::SetShowCharge ( bool  show)
inline
Parameters
showwhether to display the local charge.

Shows or hides the atom local charge.

Definition at line 522 of file gcp/atom.h.

gcp::Atom::SetShowSymbol ( bool  ShowSymbol)
inline
Parameters
ShowSymbolwhether the symbol of a carbon atom is to be displayed or not.

Sets the visibility of a carbon atom symbol in a chain.

Definition at line 485 of file gcp/atom.h.

virtual void gcp::Atom::SetZ ( int  Z)
virtual
Parameters
Zthe new atomic number.

Changes the atomic number of the atom.

Reimplemented from gcu::Atom.

Reimplemented in gcp::FragmentAtom.

virtual void gcp::Atom::Transform2D ( gcu::Matrix2D m,
double  x,
double  y 
)
virtual
Parameters
mthe Matrix2D of the transformation.
xthe x component of the center of the transformation.
ythe y component of the center of the transformation.

Used to move and/or transform an object.

Reimplemented from gcu::Atom.

virtual void gcp::Atom::Update ( )
virtual

Updates the atom after changing its bonds, charge or explicit electrons.

Reimplemented in gcp::FragmentAtom.

bool gcp::Atom::UpdateStereoBonds ( )

Infers which bonds should be displayed as stereobonds given the known parity and molecular structure.

Member Data Documentation

double gcp::Atom::m_CHeight
protected

Half the height of the "C" character.

Definition at line 472 of file gcp/atom.h.


The documentation for this class was generated from the following file: