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 // MARKER(update_precomp.py): autogen include statement, do not remove
25 #include "precompiled_basegfx.hxx"
26 #include <basegfx/point/b2dhompoint.hxx>
27 #include <basegfx/matrix/b2dhommatrix.hxx>
28 #include <basegfx/numeric/ftools.hxx>
29 
30 namespace basegfx
31 {
implHomogenize()32 	void B2DHomPoint::implHomogenize()
33 	{
34 		const double fFactor(1.0 / mfW);
35 		maTuple.setX(maTuple.getX() * fFactor);
36 		maTuple.setY(maTuple.getY() * fFactor);
37 		mfW = 1.0;
38 	}
39 
operator *=(const B2DHomMatrix & rMat)40 	B2DHomPoint& B2DHomPoint::operator*=( const B2DHomMatrix& rMat )
41 	{
42 		const double fTempX( rMat.get(0,0)*maTuple.getX() +
43 							rMat.get(0,1)*maTuple.getY() +
44 							rMat.get(0,2)*mfW );
45 
46 		const double fTempY( rMat.get(1,0)*maTuple.getX() +
47 							rMat.get(1,1)*maTuple.getY() +
48 							rMat.get(1,2)*mfW );
49 
50 		const double fTempZ( rMat.get(2,0)*maTuple.getX() +
51 							rMat.get(2,1)*maTuple.getY() +
52 							rMat.get(2,2)*mfW );
53 		maTuple.setX( fTempX );
54 		maTuple.setY( fTempY );
55 		mfW = fTempZ;
56 
57 		return *this;
58 	}
59 } // end of namespace basegfx
60 
61 // eof
62