1*b1cdbd2cSJim Jagielski /************************************************************** 2*b1cdbd2cSJim Jagielski * 3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one 4*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file 5*b1cdbd2cSJim Jagielski * distributed with this work for additional information 6*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file 7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the 8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance 9*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at 10*b1cdbd2cSJim Jagielski * 11*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0 12*b1cdbd2cSJim Jagielski * 13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing, 14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an 15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the 17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations 18*b1cdbd2cSJim Jagielski * under the License. 19*b1cdbd2cSJim Jagielski * 20*b1cdbd2cSJim Jagielski *************************************************************/ 21*b1cdbd2cSJim Jagielski 22*b1cdbd2cSJim Jagielski 23*b1cdbd2cSJim Jagielski 24*b1cdbd2cSJim Jagielski // MARKER(update_precomp.py): autogen include statement, do not remove 25*b1cdbd2cSJim Jagielski #include "precompiled_basegfx.hxx" 26*b1cdbd2cSJim Jagielski #include <basegfx/curve/b2dquadraticbezier.hxx> 27*b1cdbd2cSJim Jagielski #include <basegfx/numeric/ftools.hxx> 28*b1cdbd2cSJim Jagielski 29*b1cdbd2cSJim Jagielski ////////////////////////////////////////////////////////////////////////////// 30*b1cdbd2cSJim Jagielski 31*b1cdbd2cSJim Jagielski namespace basegfx 32*b1cdbd2cSJim Jagielski { B2DQuadraticBezier(const B2DQuadraticBezier & rBezier)33*b1cdbd2cSJim Jagielski B2DQuadraticBezier::B2DQuadraticBezier(const B2DQuadraticBezier& rBezier) 34*b1cdbd2cSJim Jagielski : maStartPoint(rBezier.maStartPoint), 35*b1cdbd2cSJim Jagielski maEndPoint(rBezier.maEndPoint), 36*b1cdbd2cSJim Jagielski maControlPoint(rBezier.maControlPoint) 37*b1cdbd2cSJim Jagielski { 38*b1cdbd2cSJim Jagielski } 39*b1cdbd2cSJim Jagielski B2DQuadraticBezier()40*b1cdbd2cSJim Jagielski B2DQuadraticBezier::B2DQuadraticBezier() 41*b1cdbd2cSJim Jagielski { 42*b1cdbd2cSJim Jagielski } 43*b1cdbd2cSJim Jagielski B2DQuadraticBezier(const::basegfx::B2DPoint & rStart,const::basegfx::B2DPoint & rEnd)44*b1cdbd2cSJim Jagielski B2DQuadraticBezier::B2DQuadraticBezier(const ::basegfx::B2DPoint& rStart, const ::basegfx::B2DPoint& rEnd) 45*b1cdbd2cSJim Jagielski : maStartPoint(rStart), 46*b1cdbd2cSJim Jagielski maEndPoint(rEnd) 47*b1cdbd2cSJim Jagielski { 48*b1cdbd2cSJim Jagielski } 49*b1cdbd2cSJim Jagielski B2DQuadraticBezier(const::basegfx::B2DPoint & rStart,const::basegfx::B2DPoint & rControl,const::basegfx::B2DPoint & rEnd)50*b1cdbd2cSJim Jagielski B2DQuadraticBezier::B2DQuadraticBezier(const ::basegfx::B2DPoint& rStart, const ::basegfx::B2DPoint& rControl, const ::basegfx::B2DPoint& rEnd) 51*b1cdbd2cSJim Jagielski : maStartPoint(rStart), 52*b1cdbd2cSJim Jagielski maEndPoint(rEnd), 53*b1cdbd2cSJim Jagielski maControlPoint(rControl) 54*b1cdbd2cSJim Jagielski { 55*b1cdbd2cSJim Jagielski } 56*b1cdbd2cSJim Jagielski ~B2DQuadraticBezier()57*b1cdbd2cSJim Jagielski B2DQuadraticBezier::~B2DQuadraticBezier() 58*b1cdbd2cSJim Jagielski { 59*b1cdbd2cSJim Jagielski } 60*b1cdbd2cSJim Jagielski 61*b1cdbd2cSJim Jagielski // assignment operator operator =(const B2DQuadraticBezier & rBezier)62*b1cdbd2cSJim Jagielski B2DQuadraticBezier& B2DQuadraticBezier::operator=(const B2DQuadraticBezier& rBezier) 63*b1cdbd2cSJim Jagielski { 64*b1cdbd2cSJim Jagielski maStartPoint = rBezier.maStartPoint; 65*b1cdbd2cSJim Jagielski maEndPoint = rBezier.maEndPoint; 66*b1cdbd2cSJim Jagielski maControlPoint = rBezier.maControlPoint; 67*b1cdbd2cSJim Jagielski 68*b1cdbd2cSJim Jagielski return *this; 69*b1cdbd2cSJim Jagielski } 70*b1cdbd2cSJim Jagielski 71*b1cdbd2cSJim Jagielski // compare operators operator ==(const B2DQuadraticBezier & rBezier) const72*b1cdbd2cSJim Jagielski bool B2DQuadraticBezier::operator==(const B2DQuadraticBezier& rBezier) const 73*b1cdbd2cSJim Jagielski { 74*b1cdbd2cSJim Jagielski return ( 75*b1cdbd2cSJim Jagielski maStartPoint == rBezier.maStartPoint 76*b1cdbd2cSJim Jagielski && maEndPoint == rBezier.maEndPoint 77*b1cdbd2cSJim Jagielski && maControlPoint == rBezier.maControlPoint 78*b1cdbd2cSJim Jagielski ); 79*b1cdbd2cSJim Jagielski } 80*b1cdbd2cSJim Jagielski operator !=(const B2DQuadraticBezier & rBezier) const81*b1cdbd2cSJim Jagielski bool B2DQuadraticBezier::operator!=(const B2DQuadraticBezier& rBezier) const 82*b1cdbd2cSJim Jagielski { 83*b1cdbd2cSJim Jagielski return ( 84*b1cdbd2cSJim Jagielski maStartPoint != rBezier.maStartPoint 85*b1cdbd2cSJim Jagielski || maEndPoint != rBezier.maEndPoint 86*b1cdbd2cSJim Jagielski || maControlPoint != rBezier.maControlPoint 87*b1cdbd2cSJim Jagielski ); 88*b1cdbd2cSJim Jagielski } 89*b1cdbd2cSJim Jagielski 90*b1cdbd2cSJim Jagielski // test if control vector is used isBezier() const91*b1cdbd2cSJim Jagielski bool B2DQuadraticBezier::isBezier() const 92*b1cdbd2cSJim Jagielski { 93*b1cdbd2cSJim Jagielski // if control vector is empty, bezier is not used 94*b1cdbd2cSJim Jagielski if(maControlPoint == maStartPoint || maControlPoint == maEndPoint) 95*b1cdbd2cSJim Jagielski return false; 96*b1cdbd2cSJim Jagielski 97*b1cdbd2cSJim Jagielski return true; 98*b1cdbd2cSJim Jagielski } 99*b1cdbd2cSJim Jagielski } // end of namespace basegfx 100*b1cdbd2cSJim Jagielski 101*b1cdbd2cSJim Jagielski // eof 102