diff options
author | Michele Calgaro <michele.calgaro@yahoo.it> | 2021-05-23 20:48:35 +0900 |
---|---|---|
committer | Michele Calgaro <michele.calgaro@yahoo.it> | 2021-05-29 15:16:28 +0900 |
commit | 8b78a8791bc539bcffe7159f9d9714d577cb3d7d (patch) | |
tree | 1328291f966f19a22d7b13657d3f01a588eb1083 /karbon/shapes/vpolygon.cpp | |
parent | 95834e2bdc5e01ae1bd21ac0dfa4fa1d2417fae9 (diff) | |
download | koffice-8b78a8791bc539bcffe7159f9d9714d577cb3d7d.tar.gz koffice-8b78a8791bc539bcffe7159f9d9714d577cb3d7d.zip |
Renaming of files in preparation for code style tools.
Signed-off-by: Michele Calgaro <michele.calgaro@yahoo.it>
Diffstat (limited to 'karbon/shapes/vpolygon.cpp')
-rw-r--r-- | karbon/shapes/vpolygon.cpp | 185 |
1 files changed, 185 insertions, 0 deletions
diff --git a/karbon/shapes/vpolygon.cpp b/karbon/shapes/vpolygon.cpp new file mode 100644 index 00000000..fdf0f745 --- /dev/null +++ b/karbon/shapes/vpolygon.cpp @@ -0,0 +1,185 @@ +/* This file is part of the KDE project + Copyright (C) 2001, 2002, 2003 The Karbon Developers + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. +*/ + + +#include <tqdom.h> + +#include "vglobal.h" +#include "vpolygon.h" +#include "vtransformcmd.h" +#include <tdelocale.h> +#include <KoUnit.h> +#include <KoStore.h> +#include <KoXmlWriter.h> +#include <KoXmlNS.h> +#include <vdocument.h> + +VPolygon::VPolygon( VObject* parent, VState state ) + : VPath( parent, state ) +{ +} + +VPolygon::VPolygon( VObject* parent, const TQString &points, + const KoPoint& topLeft, double width, double height ) + : VPath( parent ), m_topLeft( topLeft ), m_width( width), m_height( height ), m_points( points ) +{ + init(); +} + +void +VPolygon::init() +{ + bool bFirst = true; + + TQString points = m_points.simplifyWhiteSpace(); + points.replace( ',', ' ' ); + points.remove( '\r' ); + points.remove( '\n' ); + TQStringList pointList = TQStringList::split( ' ', points ); + TQStringList::Iterator end(pointList.end()); + for( TQStringList::Iterator it = pointList.begin(); it != end; ++it ) + { + KoPoint point; + point.setX( (*it).toDouble() ); + point.setY( (*++it).toDouble() ); + if( bFirst ) + { + moveTo( point ); + bFirst = false; + } + else + lineTo( point ); + } + close(); + + TQWMatrix m; + m.translate( m_topLeft.x(), m_topLeft.y() ); + + // only tranform the path data + VTransformCmd cmd( 0L, m ); + cmd.VVisitor::visitVPath( *this ); +} + +TQString +VPolygon::name() const +{ + TQString result = VObject::name(); + return !result.isEmpty() ? result : i18n( "Polygon" ); +} + +void +VPolygon::save( TQDomElement& element ) const +{ + VDocument *doc = document(); + if( doc && doc->saveAsPath() ) + { + VPath::save( element ); + return; + } + + if( state() != deleted ) + { + TQDomElement me = element.ownerDocument().createElement( "POLYGON" ); + element.appendChild( me ); + + // save fill/stroke untransformed + VPath path( *this ); + VTransformCmd cmd( 0L, m_matrix.invert() ); + cmd.visit( path ); + path.VObject::save( me ); + //VObject::save( me ); + + me.setAttribute( "x", m_topLeft.x() ); + me.setAttribute( "y", m_topLeft.y() ); + + me.setAttribute( "width", TQString("%1pt").arg( m_width ) ); + me.setAttribute( "height", TQString("%1pt").arg( m_height ) ); + + me.setAttribute( "points", m_points ); + + TQString transform = buildSvgTransform(); + if( !transform.isEmpty() ) + me.setAttribute( "transform", transform ); + } +} + +void +VPolygon::saveOasis( KoStore *store, KoXmlWriter *docWriter, KoGenStyles &mainStyles, int &index ) const +{ + // do not save deleted objects + if( state() == deleted ) + return; + + docWriter->startElement( "draw:polygon" ); + + docWriter->addAttribute( "draw:points", m_points ); + + VObject::saveOasis( store, docWriter, mainStyles, index ); + + docWriter->endElement(); +} + +void +VPolygon::load( const TQDomElement& element ) +{ + setState( normal ); + + TQDomNodeList list = element.childNodes(); + for( uint i = 0; i < list.count(); ++i ) + if( list.item( i ).isElement() ) + VObject::load( list.item( i ).toElement() ); + + m_points = element.attribute( "points" ); + + m_width = KoUnit::parseValue( element.attribute( "width" ), 10.0 ); + m_height = KoUnit::parseValue( element.attribute( "height" ), 10.0 ); + + m_topLeft.setX( KoUnit::parseValue( element.attribute( "x" ) ) ); + m_topLeft.setY( KoUnit::parseValue( element.attribute( "y" ) ) ); + + init(); + + TQString trafo = element.attribute( "transform" ); + if( !trafo.isEmpty() ) + transform( trafo ); +} + +bool +VPolygon::loadOasis( const TQDomElement &element, KoOasisLoadingContext &context ) +{ + setState( normal ); + + m_points = element.attributeNS( KoXmlNS::draw, "points", TQString() ); + + init(); + + transformByViewbox( element, element.attributeNS( KoXmlNS::svg, "viewBox", TQString() ) ); + + TQString trafo = element.attributeNS( KoXmlNS::draw, "transform", TQString() ); + if( !trafo.isEmpty() ) + transformOasis( trafo ); + + return VObject::loadOasis( element, context ); +} + +VPath* +VPolygon::clone() const +{ + return new VPolygon( *this ); +} |