From 65a9f54e1051ee8ab936975e78dcb7117b265ef5 Mon Sep 17 00:00:00 2001 From: Michele Calgaro Date: Fri, 11 Dec 2020 21:51:45 +0900 Subject: Renaming of files in preparation for code style tools. Signed-off-by: Michele Calgaro --- kig/objects/tests_type.cpp | 382 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 382 insertions(+) create mode 100644 kig/objects/tests_type.cpp (limited to 'kig/objects/tests_type.cpp') diff --git a/kig/objects/tests_type.cpp b/kig/objects/tests_type.cpp new file mode 100644 index 00000000..e85c111e --- /dev/null +++ b/kig/objects/tests_type.cpp @@ -0,0 +1,382 @@ +// Copyright (C) 2004 Dominique Devriese + +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +// 02110-1301, USA. + +#include "tests_type.h" + +#include "line_imp.h" +#include "polygon_imp.h" +#include "point_imp.h" +#include "bogus_imp.h" +#include "other_imp.h" + +#include + +static const ArgsParser::spec argsspecAreParallel[] = +{ + { AbstractLineImp::stype(), I18N_NOOP( "Is this line parallel?" ), + I18N_NOOP( "Select the first of the two possibly parallel lines..." ), false }, + { AbstractLineImp::stype(), I18N_NOOP( "Parallel to this line?" ), + I18N_NOOP( "Select the other of the two possibly parallel lines..." ), false } +}; + +KIG_INSTANTIATE_OBJECT_TYPE_INSTANCE( AreParallelType ) + +AreParallelType::AreParallelType() + : ArgsParserObjectType( "AreParallel", + argsspecAreParallel, 2 ) +{ +} + +AreParallelType::~AreParallelType() +{ +} + +const AreParallelType* AreParallelType::instance() +{ + static const AreParallelType t; + return &t; +} + +ObjectImp* AreParallelType::calc( const Args& parents, const KigDocument& ) const +{ + if ( ! margsparser.checkArgs( parents ) ) return new InvalidImp; + const LineData& l1 = static_cast( parents[0] )->data(); + const LineData& l2 = static_cast( parents[1] )->data(); + + if ( l1.isParallelTo( l2 ) ) + return new TestResultImp( i18n( "These lines are parallel." ) ); + else + return new TestResultImp( i18n( "These lines are not parallel." ) ); + +} + +const ObjectImpType* AreParallelType::resultId() const +{ + return TestResultImp::stype(); +} + +static const ArgsParser::spec argsspecAreOrthogonal[] = +{ + { AbstractLineImp::stype(), I18N_NOOP( "Is this line orthogonal?" ), + I18N_NOOP( "Select the first of the two possibly orthogonal lines..." ), false }, + { AbstractLineImp::stype(), I18N_NOOP( "Orthogonal to this line?" ), + I18N_NOOP( "Select the other of the two possibly orthogonal lines..." ), false } +}; + +KIG_INSTANTIATE_OBJECT_TYPE_INSTANCE( AreOrthogonalType ) + +AreOrthogonalType::AreOrthogonalType() + : ArgsParserObjectType( "AreOrthogonal", + argsspecAreOrthogonal, 2 ) +{ +} + +AreOrthogonalType::~AreOrthogonalType() +{ +} + +const AreOrthogonalType* AreOrthogonalType::instance() +{ + static const AreOrthogonalType t; + return &t; +} + +ObjectImp* AreOrthogonalType::calc( const Args& parents, const KigDocument& ) const +{ + if ( ! margsparser.checkArgs( parents ) ) return new InvalidImp; + const LineData& l1 = static_cast( parents[0] )->data(); + const LineData& l2 = static_cast( parents[1] )->data(); + + if ( l1.isOrthogonalTo( l2 ) ) + return new TestResultImp( i18n( "These lines are orthogonal." ) ); + else + return new TestResultImp( i18n( "These lines are not orthogonal." ) ); + +} + +const ObjectImpType* AreOrthogonalType::resultId() const +{ + return TestResultImp::stype(); +} + +static const ArgsParser::spec argsspecAreCollinear[] = +{ + { PointImp::stype(), I18N_NOOP( "Check collinearity of this point" ), + I18N_NOOP( "Select the first of the three possibly collinear points..." ), false }, + { PointImp::stype(), I18N_NOOP( "and this second point" ), + I18N_NOOP( "Select the second of the three possibly collinear points..." ), false }, + { PointImp::stype(), I18N_NOOP( "with this third point" ), + I18N_NOOP( "Select the last of the three possibly collinear points..." ), false } +}; + +KIG_INSTANTIATE_OBJECT_TYPE_INSTANCE( AreCollinearType ) + +AreCollinearType::AreCollinearType() + : ArgsParserObjectType( "AreCollinear", + argsspecAreCollinear, 3 ) +{ +} + +AreCollinearType::~AreCollinearType() +{ +} + +const AreCollinearType* AreCollinearType::instance() +{ + static const AreCollinearType t; + return &t; +} + +ObjectImp* AreCollinearType::calc( const Args& parents, const KigDocument& ) const +{ + if ( ! margsparser.checkArgs( parents ) ) return new InvalidImp; + const Coordinate& p1 = static_cast( parents[0] )->coordinate(); + const Coordinate& p2 = static_cast( parents[1] )->coordinate(); + const Coordinate& p3 = static_cast( parents[2] )->coordinate(); + + if ( areCollinear( p1, p2, p3 ) ) + return new TestResultImp( i18n( "These points are collinear." ) ); + else + return new TestResultImp( i18n( "These points are not collinear." ) ); +} + +const ObjectImpType* AreCollinearType::resultId() const +{ + return TestResultImp::stype(); +} + +static const ArgsParser::spec containsTestArgsSpec[] = +{ + { PointImp::stype(), I18N_NOOP( "Check whether this point is on a curve" ), + I18N_NOOP( "Select the point you want to test..." ), false }, + { CurveImp::stype(), I18N_NOOP( "Check whether the point is on this curve" ), + I18N_NOOP( "Select the curve that the point might be on..." ), false } +}; + +KIG_INSTANTIATE_OBJECT_TYPE_INSTANCE( ContainsTestType ) + +ContainsTestType::ContainsTestType() + : ArgsParserObjectType( "ContainsTest", containsTestArgsSpec, 2 ) +{ +} + +ContainsTestType::~ContainsTestType() +{ +} + +const ContainsTestType* ContainsTestType::instance() +{ + static const ContainsTestType t; + return &t; +} + +ObjectImp* ContainsTestType::calc( const Args& parents, const KigDocument& doc ) const +{ + if ( ! margsparser.checkArgs( parents ) ) return new InvalidImp; + const Coordinate& p = static_cast( parents[0] )->coordinate(); + const CurveImp* c = static_cast( parents[1] ); + + if ( c->containsPoint( p, doc ) ) + return new TestResultImp( i18n( "This curve contains the point." ) ); + else + return new TestResultImp( i18n( "This curve does not contain the point." ) ); +} + +const ObjectImpType* ContainsTestType::resultId() const +{ + return TestResultImp::stype(); +} + +/* + * containment test of a point in a polygon + */ + +static const ArgsParser::spec InPolygonTestArgsSpec[] = +{ + { PointImp::stype(), I18N_NOOP( "Check whether this point is in a polygon" ), + I18N_NOOP( "Select the point you want to test..." ), false }, + { PolygonImp::stype(), I18N_NOOP( "Check whether the point is in this polygon" ), + I18N_NOOP( "Select the polygon that the point might be in..." ), false } +}; + +KIG_INSTANTIATE_OBJECT_TYPE_INSTANCE( InPolygonTestType ) + +InPolygonTestType::InPolygonTestType() + : ArgsParserObjectType( "InPolygonTest", InPolygonTestArgsSpec, 2 ) +{ +} + +InPolygonTestType::~InPolygonTestType() +{ +} + +const InPolygonTestType* InPolygonTestType::instance() +{ + static const InPolygonTestType t; + return &t; +} + +ObjectImp* InPolygonTestType::calc( const Args& parents, const KigDocument& ) const +{ + if ( ! margsparser.checkArgs( parents ) ) return new InvalidImp; + const Coordinate& p = static_cast( parents[0] )->coordinate(); + const PolygonImp* pol = static_cast( parents[1] ); + + if ( pol->isInPolygon( p ) ) + return new TestResultImp( i18n( "This polygon contains the point." ) ); + else + return new TestResultImp( i18n( "This polygon does not contain the point." ) ); +} + +const ObjectImpType* InPolygonTestType::resultId() const +{ + return TestResultImp::stype(); +} + +/* + * test if a polygon is convex + */ + +static const ArgsParser::spec ConvexPolygonTestArgsSpec[] = +{ + { PolygonImp::stype(), I18N_NOOP( "Check whether this polygon is convex" ), + I18N_NOOP( "Select the polygon you want to test for convexity..." ), false } +}; + +KIG_INSTANTIATE_OBJECT_TYPE_INSTANCE( ConvexPolygonTestType ) + +ConvexPolygonTestType::ConvexPolygonTestType() + : ArgsParserObjectType( "ConvexPolygonTest", ConvexPolygonTestArgsSpec, 1 ) +{ +} + +ConvexPolygonTestType::~ConvexPolygonTestType() +{ +} + +const ConvexPolygonTestType* ConvexPolygonTestType::instance() +{ + static const ConvexPolygonTestType t; + return &t; +} + +ObjectImp* ConvexPolygonTestType::calc( const Args& parents, const KigDocument& ) const +{ + if ( ! margsparser.checkArgs( parents ) ) return new InvalidImp; + const PolygonImp* pol = static_cast( parents[0] ); + + if ( pol->isConvex() ) + return new TestResultImp( i18n( "This polygon is convex." ) ); + else + return new TestResultImp( i18n( "This polygon is not convex." ) ); +} + +const ObjectImpType* ConvexPolygonTestType::resultId() const +{ + return TestResultImp::stype(); +} + +/* + * same distance test + */ + +static const ArgsParser::spec argsspecSameDistanceType[] = +{ + { PointImp::stype(), I18N_NOOP( "Check if this point has the same distance" ), + I18N_NOOP( "Select the point which might have the same distance from two other points..." ), false }, + { PointImp::stype(), I18N_NOOP( "from this point" ), + I18N_NOOP( "Select the first of the two other points..." ), false }, + { PointImp::stype(), I18N_NOOP( "and from this second point" ), + I18N_NOOP( "Select the other of the two other points..." ), false } +}; + +KIG_INSTANTIATE_OBJECT_TYPE_INSTANCE( SameDistanceType ) + +SameDistanceType::SameDistanceType() + : ArgsParserObjectType( "SameDistanceType", argsspecSameDistanceType, 3 ) +{ +} + +SameDistanceType::~SameDistanceType() +{ +} + +const SameDistanceType* SameDistanceType::instance() +{ + static const SameDistanceType t; + return &t; +} + +ObjectImp* SameDistanceType::calc( const Args& parents, const KigDocument& ) const +{ + if ( ! margsparser.checkArgs( parents ) ) return new InvalidImp; + const Coordinate& p1 = static_cast( parents[0] )->coordinate(); + const Coordinate& p2 = static_cast( parents[1] )->coordinate(); + const Coordinate& p3 = static_cast( parents[2] )->coordinate(); + + if ( fabs( ( p1 - p2 ).length() - ( p1 - p3 ).length() ) < 10e-5 ) + return new TestResultImp( i18n( "The two distances are the same." ) ); + else + return new TestResultImp( i18n( "The two distances are not the same." ) ); +} + +const ObjectImpType* SameDistanceType::resultId() const +{ + return TestResultImp::stype(); +} + +static const ArgsParser::spec vectorEqualityArgsSpec[] = +{ + { VectorImp::stype(), I18N_NOOP( "Check whether this vector is equal to another vector" ), + I18N_NOOP( "Select the first of the two possibly equal vectors..." ), false }, + { VectorImp::stype(), I18N_NOOP( "Check whether this vector is equal to the other vector" ), + I18N_NOOP( "Select the other of the two possibly equal vectors..." ), false } +}; + +KIG_INSTANTIATE_OBJECT_TYPE_INSTANCE( VectorEqualityTestType ) + +VectorEqualityTestType::VectorEqualityTestType() + : ArgsParserObjectType( "VectorEquality", vectorEqualityArgsSpec, 2 ) +{ +} + +VectorEqualityTestType::~VectorEqualityTestType() +{ +} + +const VectorEqualityTestType* VectorEqualityTestType::instance() +{ + static const VectorEqualityTestType t; + return &t; +} + +ObjectImp* VectorEqualityTestType::calc( const Args& parents, const KigDocument& ) const +{ + if ( ! margsparser.checkArgs( parents ) ) return new InvalidImp; + const Coordinate& v1 = static_cast( parents[0] )->dir(); + const Coordinate& v2 = static_cast( parents[1] )->dir(); + + if ( ( v1 - v2 ).length() < 10e-5 ) + return new TestResultImp( i18n( "The two vectors are the same." ) ); + else + return new TestResultImp( i18n( "The two vectors are not the same." ) ); +} + +const ObjectImpType* VectorEqualityTestType::resultId() const +{ + return TestResultImp::stype(); +} -- cgit v1.2.1