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 ANCHOR_HPP
00026 #define ANCHOR_HPP
00027
00028 #include "skin_common.hpp"
00029 #include "generic_layout.hpp"
00030 #include "../utils/bezier.hpp"
00031
00032
00034 class Anchor: public SkinObject
00035 {
00036 public:
00037 Anchor( intf_thread_t *pIntf, int xPos, int yPos, int range,
00038 int priority, const Bezier &rCurve, GenericLayout &rLayout ):
00039 SkinObject( pIntf ), m_xPos( xPos ), m_yPos( yPos ),
00040 m_rCurve( rCurve ), m_range( range ), m_priority( priority ),
00041 m_rLayout( rLayout ) {}
00042 virtual ~Anchor() {}
00043
00049 bool isHanging( const Anchor &rOther ) const;
00050
00059 bool canHang( const Anchor &rOther, int &xOffset, int &yOffset ) const;
00060
00061
00062 bool isPoint() const { return m_rCurve.getNbCtrlPoints() == 1; }
00063
00064
00065 int getXPosAbs() const { return (m_xPos + m_rLayout.getLeft()); }
00066 int getYPosAbs() const { return (m_yPos + m_rLayout.getTop()); }
00067
00068 private:
00070 int m_xPos, m_yPos;
00071
00073 const Bezier &m_rCurve;
00074
00076 int m_range;
00077
00079 int m_priority;
00080
00082 GenericLayout &m_rLayout;
00083 };
00084
00085
00086 #endif