00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00026 #ifndef __PDF_TEXT_POSITION_HEADER_INCLUDED__
00027 #define __PDF_TEXT_POSITION_HEADER_INCLUDED__
00028
00029 #include <iosfwd>
00030
00031 namespace pdf { namespace text {
00032
00041 class CPosition
00042 {
00043 public :
00044 virtual ~CPosition( ) ;
00045 virtual CPosition* Dup( ) const = 0 ;
00046 virtual std::ostream& Write( std::ostream& os, double leading ) const = 0 ;
00047 } ;
00048
00055 class CNullPos : public CPosition
00056 {
00057 public :
00058 CPosition* Dup( ) const { return new CNullPos ; }
00059 std::ostream& Write( std::ostream& os, double ) const { return os ; }
00060 } ;
00061
00067 class COffsetPos : public CPosition
00068 {
00069 private :
00071
00072 double m_offset_x, m_offset_y ;
00074
00075 public :
00077 COffsetPos( double offset_x, double offset_y )
00078 : m_offset_x( offset_x ), m_offset_y( offset_y ) { }
00079
00080 double X( ) const { return m_offset_x ; }
00081 double Y( ) const { return m_offset_y ; }
00082
00083 std::ostream& Write( std::ostream& os, double leading ) const ;
00084
00085 CPosition* Dup( ) const { return new COffsetPos( *this ) ; }
00086 } ;
00087
00093 class CAbsolutePos : public CPosition
00094 {
00095 private :
00097
00098 double m_pos_x, m_pos_y ;
00100
00101 public :
00102 CAbsolutePos( double pos_x, double pos_y )
00103 : m_pos_x( pos_x ), m_pos_y( pos_y ) { }
00104
00105 double X( ) const { return m_pos_x ; }
00106 double Y( ) const { return m_pos_y ; }
00107
00108 std::ostream& Write( std::ostream& os, double leading ) const ;
00109
00110 CPosition* Dup( ) const { return new CAbsolutePos( *this ) ; }
00111 } ;
00112
00113 } }
00114
00115 #endif