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
00026
00027
00028 #ifndef OLENA_CORE_DPOINT2D_HXX
00029 # define OLENA_CORE_DPOINT2D_HXX
00030
00031 # include <oln/core/point2d.hh>
00032 # include <iostream>
00033
00034 namespace oln {
00035
00036 inline coord
00037 dpoint2d::row() const
00038 {
00039 return nth(0);
00040 }
00041
00042 inline coord&
00043 dpoint2d::row()
00044 {
00045 return nth(0);
00046 }
00047
00048 inline coord
00049 dpoint2d::col() const
00050 {
00051 return nth(1);
00052 }
00053
00054 inline coord&
00055 dpoint2d::col()
00056 {
00057 return nth(1);
00058 }
00059
00060 inline
00061 dpoint2d::dpoint2d()
00062 {
00063 row() = 0;
00064 col() = 0;
00065 }
00066
00067 inline
00068 dpoint2d::dpoint2d(coord r, coord c)
00069 {
00070 row() = r;
00071 col() = c;
00072 }
00073
00074 inline
00075 dpoint2d::dpoint2d(const point2d& p) : super_type(p)
00076 {
00077 }
00078
00079 inline dpoint2d
00080 dpoint2d::minus() const
00081 {
00082 dpoint2d dp(-row(), -col());
00083 return dp;
00084 }
00085
00086 inline dpoint2d&
00087 dpoint2d::plus_assign_dp(const dpoint2d& dp)
00088 {
00089 row() += dp.row();
00090 col() += dp.col();
00091 return *this;
00092 }
00093
00094 inline dpoint2d&
00095 dpoint2d::minus_assign_dp(const dpoint2d& dp)
00096 {
00097 row() -= dp.row();
00098 col() -= dp.col();
00099 return *this;
00100 }
00101
00102 inline dpoint2d
00103 dpoint2d::plus_dp(const dpoint2d& dp) const
00104 {
00105 dpoint2d tmp = *this;
00106 tmp += dp;
00107 return tmp;
00108 }
00109
00110 inline dpoint2d
00111 dpoint2d::minus_dp(const dpoint2d& dp) const
00112 {
00113 dpoint2d tmp = *this;
00114 tmp -= dp;
00115 return tmp;
00116 }
00117
00118 }
00119
00120 inline std::ostream&
00121 operator<<(std::ostream& o, const oln::dpoint2d& dp)
00122 {
00123 return o << '(' << dp.row() << ',' << dp.col() << ')';
00124 }
00125
00126 #endif // ! OLENA_CORE_DPOINT2D_HXX