xref: /trunk/main/basegfx/source/curve/b2dquadraticbezier.cxx (revision 42fb6e95e2f95f39ff1eee3336bd998cf8ae20a1)
109dbbe93SAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
309dbbe93SAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
409dbbe93SAndrew Rist  * or more contributor license agreements.  See the NOTICE file
509dbbe93SAndrew Rist  * distributed with this work for additional information
609dbbe93SAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
709dbbe93SAndrew Rist  * to you under the Apache License, Version 2.0 (the
809dbbe93SAndrew Rist  * "License"); you may not use this file except in compliance
909dbbe93SAndrew Rist  * with the License.  You may obtain a copy of the License at
10cdf0e10cSrcweir  *
1109dbbe93SAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12cdf0e10cSrcweir  *
1309dbbe93SAndrew Rist  * Unless required by applicable law or agreed to in writing,
1409dbbe93SAndrew Rist  * software distributed under the License is distributed on an
1509dbbe93SAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
1609dbbe93SAndrew Rist  * KIND, either express or implied.  See the License for the
1709dbbe93SAndrew Rist  * specific language governing permissions and limitations
1809dbbe93SAndrew Rist  * under the License.
19cdf0e10cSrcweir  *
2009dbbe93SAndrew Rist  *************************************************************/
2109dbbe93SAndrew Rist 
22cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove
23cdf0e10cSrcweir #include "precompiled_basegfx.hxx"
24cdf0e10cSrcweir #include <basegfx/curve/b2dquadraticbezier.hxx>
25cdf0e10cSrcweir #include <basegfx/numeric/ftools.hxx>
26cdf0e10cSrcweir 
27cdf0e10cSrcweir namespace basegfx
28cdf0e10cSrcweir {
B2DQuadraticBezier(const B2DQuadraticBezier & rBezier)29cdf0e10cSrcweir     B2DQuadraticBezier::B2DQuadraticBezier(const B2DQuadraticBezier& rBezier)
30cdf0e10cSrcweir     :   maStartPoint(rBezier.maStartPoint),
31cdf0e10cSrcweir         maEndPoint(rBezier.maEndPoint),
32cdf0e10cSrcweir         maControlPoint(rBezier.maControlPoint)
33cdf0e10cSrcweir     {
34cdf0e10cSrcweir     }
35cdf0e10cSrcweir 
B2DQuadraticBezier()36cdf0e10cSrcweir     B2DQuadraticBezier::B2DQuadraticBezier()
37cdf0e10cSrcweir     {
38cdf0e10cSrcweir     }
39cdf0e10cSrcweir 
B2DQuadraticBezier(const::basegfx::B2DPoint & rStart,const::basegfx::B2DPoint & rEnd)40cdf0e10cSrcweir     B2DQuadraticBezier::B2DQuadraticBezier(const ::basegfx::B2DPoint& rStart, const ::basegfx::B2DPoint& rEnd)
41cdf0e10cSrcweir     :   maStartPoint(rStart),
42cdf0e10cSrcweir         maEndPoint(rEnd)
43cdf0e10cSrcweir     {
44cdf0e10cSrcweir     }
45cdf0e10cSrcweir 
B2DQuadraticBezier(const::basegfx::B2DPoint & rStart,const::basegfx::B2DPoint & rControl,const::basegfx::B2DPoint & rEnd)46cdf0e10cSrcweir     B2DQuadraticBezier::B2DQuadraticBezier(const ::basegfx::B2DPoint& rStart, const ::basegfx::B2DPoint& rControl, const ::basegfx::B2DPoint& rEnd)
47cdf0e10cSrcweir     :   maStartPoint(rStart),
48cdf0e10cSrcweir         maEndPoint(rEnd),
49cdf0e10cSrcweir         maControlPoint(rControl)
50cdf0e10cSrcweir     {
51cdf0e10cSrcweir     }
52cdf0e10cSrcweir 
~B2DQuadraticBezier()53cdf0e10cSrcweir     B2DQuadraticBezier::~B2DQuadraticBezier()
54cdf0e10cSrcweir     {
55cdf0e10cSrcweir     }
56cdf0e10cSrcweir 
57cdf0e10cSrcweir     // assignment operator
operator =(const B2DQuadraticBezier & rBezier)58cdf0e10cSrcweir     B2DQuadraticBezier& B2DQuadraticBezier::operator=(const B2DQuadraticBezier& rBezier)
59cdf0e10cSrcweir     {
60cdf0e10cSrcweir         maStartPoint = rBezier.maStartPoint;
61cdf0e10cSrcweir         maEndPoint = rBezier.maEndPoint;
62cdf0e10cSrcweir         maControlPoint = rBezier.maControlPoint;
63cdf0e10cSrcweir 
64cdf0e10cSrcweir         return *this;
65cdf0e10cSrcweir     }
66cdf0e10cSrcweir 
67cdf0e10cSrcweir     // compare operators
operator ==(const B2DQuadraticBezier & rBezier) const68cdf0e10cSrcweir     bool B2DQuadraticBezier::operator==(const B2DQuadraticBezier& rBezier) const
69cdf0e10cSrcweir     {
70cdf0e10cSrcweir         return (
71cdf0e10cSrcweir             maStartPoint == rBezier.maStartPoint
72cdf0e10cSrcweir             && maEndPoint == rBezier.maEndPoint
73cdf0e10cSrcweir             && maControlPoint == rBezier.maControlPoint
74cdf0e10cSrcweir         );
75cdf0e10cSrcweir     }
76cdf0e10cSrcweir 
operator !=(const B2DQuadraticBezier & rBezier) const77cdf0e10cSrcweir     bool B2DQuadraticBezier::operator!=(const B2DQuadraticBezier& rBezier) const
78cdf0e10cSrcweir     {
79cdf0e10cSrcweir         return (
80cdf0e10cSrcweir             maStartPoint != rBezier.maStartPoint
81cdf0e10cSrcweir             || maEndPoint != rBezier.maEndPoint
82cdf0e10cSrcweir             || maControlPoint != rBezier.maControlPoint
83cdf0e10cSrcweir         );
84cdf0e10cSrcweir     }
85cdf0e10cSrcweir 
86cdf0e10cSrcweir     // test if control vector is used
isBezier() const87cdf0e10cSrcweir     bool B2DQuadraticBezier::isBezier() const
88cdf0e10cSrcweir     {
89cdf0e10cSrcweir         // if control vector is empty, bezier is not used
90cdf0e10cSrcweir         if(maControlPoint == maStartPoint || maControlPoint == maEndPoint)
91cdf0e10cSrcweir             return false;
92cdf0e10cSrcweir 
93cdf0e10cSrcweir         return true;
94cdf0e10cSrcweir     }
95cdf0e10cSrcweir } // end of namespace basegfx
96cdf0e10cSrcweir 
97*42fb6e95Smseidel /* vim: set noet sw=4 ts=4: */
98