1 /************************************************************** 2 * 3 * Licensed to the Apache Software Foundation (ASF) under one 4 * or more contributor license agreements. See the NOTICE file 5 * distributed with this work for additional information 6 * regarding copyright ownership. The ASF licenses this file 7 * to you under the Apache License, Version 2.0 (the 8 * "License"); you may not use this file except in compliance 9 * with the License. You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, 14 * software distributed under the License is distributed on an 15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 * KIND, either express or implied. See the License for the 17 * specific language governing permissions and limitations 18 * under the License. 19 * 20 *************************************************************/ 21 22 23 24 #ifndef _BGFX_POINT_B2DPOINT_HXX 25 #define _BGFX_POINT_B2DPOINT_HXX 26 27 #include <basegfx/tuple/b2dtuple.hxx> 28 #include <basegfx/point/b2ipoint.hxx> 29 30 ////////////////////////////////////////////////////////////////////////////// 31 32 namespace basegfx 33 { 34 // predeclaration 35 class B2DHomMatrix; 36 37 /** Base Point class with two double values 38 39 This class derives all operators and common handling for 40 a 2D data class from B2DTuple. All necessary extensions 41 which are special for points will be added here. 42 43 @see B2DTuple 44 */ 45 class B2DPoint : public ::basegfx::B2DTuple 46 { 47 public: 48 /** Create a 2D Point 49 50 The point is initialized to (0.0, 0.0) 51 */ B2DPoint()52 B2DPoint() 53 : B2DTuple() 54 {} 55 56 /** Create a 2D Point 57 58 @param fX 59 This parameter is used to initialize the X-coordinate 60 of the 2D Point. 61 62 @param fY 63 This parameter is used to initialize the Y-coordinate 64 of the 2D Point. 65 */ B2DPoint(double fX,double fY)66 B2DPoint(double fX, double fY) 67 : B2DTuple(fX, fY) 68 {} 69 70 /** Create a copy of a 2D Point 71 72 @param rPoint 73 The 2D Point which will be copied. 74 */ B2DPoint(const B2DPoint & rPoint)75 B2DPoint(const B2DPoint& rPoint) 76 : B2DTuple(rPoint) 77 {} 78 79 /** Create a copy of a 2D Point 80 81 @param rPoint 82 The 2D Point which will be copied. 83 */ B2DPoint(const::basegfx::B2IPoint & rPoint)84 B2DPoint(const ::basegfx::B2IPoint& rPoint) 85 : B2DTuple(rPoint) 86 {} 87 88 /** constructor with tuple to allow copy-constructing 89 from B2DTuple-based classes 90 */ B2DPoint(const::basegfx::B2DTuple & rTuple)91 B2DPoint(const ::basegfx::B2DTuple& rTuple) 92 : B2DTuple(rTuple) 93 {} 94 ~B2DPoint()95 ~B2DPoint() 96 {} 97 98 /** *=operator to allow usage from B2DPoint, too 99 */ operator *=(const B2DPoint & rPnt)100 B2DPoint& operator*=( const B2DPoint& rPnt ) 101 { 102 mfX *= rPnt.mfX; 103 mfY *= rPnt.mfY; 104 return *this; 105 } 106 107 /** *=operator to allow usage from B2DPoint, too 108 */ operator *=(double t)109 B2DPoint& operator*=(double t) 110 { 111 mfX *= t; 112 mfY *= t; 113 return *this; 114 } 115 116 /** assignment operator to allow assigning the results 117 of B2DTuple calculations 118 */ 119 B2DPoint& operator=( const ::basegfx::B2DTuple& rPoint ); 120 121 /** Transform point by given transformation matrix. 122 123 The translational components of the matrix are, in 124 contrast to B2DVector, applied. 125 */ 126 B2DPoint& operator*=( const ::basegfx::B2DHomMatrix& rMat ); 127 getEmptyPoint()128 static const B2DPoint& getEmptyPoint() 129 { 130 return (const B2DPoint&) ::basegfx::B2DTuple::getEmptyTuple(); 131 } 132 }; 133 134 // external operators 135 ////////////////////////////////////////////////////////////////////////// 136 137 /** Transform B2DPoint by given transformation matrix. 138 139 Since this is a Point, translational components of the 140 matrix are used. 141 */ 142 B2DPoint operator*( const B2DHomMatrix& rMat, const B2DPoint& rPoint ); 143 } // end of namespace basegfx 144 145 ////////////////////////////////////////////////////////////////////////////// 146 147 #endif /* _BGFX_POINT_B2DPOINT_HXX */ 148