/* * Kivio - Visual Modelling and Flowcharting * Copyright (C) 2000-2001 theKompany.com & Dave Marotti * * 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 "kivio_point.h" #include "kivio_common.h" #include /* * Names for the different point types. invalid * and last are not used for any real point type, * and only serve as bounds checking devices. */ static const char *KivioPointTypeNames[]={ "invalid", "normal", "bezier", "arc", "last" }; /** * Constructor * * Sets this point to (0,0) and of type normal. */ KivioPoint::KivioPoint() { m_x = 0.0f; m_y = 0.0f; m_pointType = kptNormal; } /** * Copy constructor * * @param copy The KivioPoint to make a copy of. * * Copies copy into this object. */ KivioPoint::KivioPoint( const KivioPoint © ) { m_x = copy.m_x; m_y = copy.m_y; m_pointType = copy.m_pointType; } /** * Alternate constructor. * * @param newX The x value of the point * @param newY The y value of the point * @param pt The point type * * Creates a new point with values. */ KivioPoint::KivioPoint( double newX, double newY, KivioPointType pt ) { m_x = newX; m_y = newY; m_pointType = pt; } /** * Destructor */ KivioPoint::~KivioPoint() { } /** * Copies this object's data into pTarget * * @param pTarget The destination of the copy */ void KivioPoint::copyInto( KivioPoint *pTarget ) const { if( !pTarget ) return; pTarget->m_x = m_x; pTarget->m_y = m_y; pTarget->m_pointType = m_pointType; } /** * Figure out the KivioPointType from a string * * @param str The string to search with * * This will figure out the KivioPointType from a string. For example, * "normal" will return kptNormal. */ KivioPoint::KivioPointType KivioPoint::pointTypeFromString( const TQString &str ) { int i; // Iterate through all the possible enums for( i=(int)kptNone+1; i<(int)kptLast; i++ ) { // If we find it, return it if( str.compare( KivioPointTypeNames[i] )==0 ) { return (KivioPointType)i; } } // Otherwise return an invalid type return kptNone; } /** * Load this object from an XML element * * @param e The element to load from * @returns true on success, false on failure. */ bool KivioPoint::loadXML( const TQDomElement &e ) { if( e.tagName().compare( "KivioPoint" ) != 0 ) { kdDebug(43000) << "Attempted to load KivioPoint from non-KivioPoint element" << endl; return false; } m_x = XmlReadFloat( e, "x", 1.0f ); m_y = XmlReadFloat( e, "y", 1.0f ); m_pointType = (KivioPointType)pointTypeFromString( XmlReadString( e, "type", "normal" ) ); return true; } /** * Save this object to an XML element * * @param doc The document we are saving to * @returns TQDomElement */ TQDomElement KivioPoint::saveXML( TQDomDocument &doc ) { TQDomElement e = doc.createElement("KivioPoint"); XmlWriteFloat( e, TQString("x"), m_x ); XmlWriteFloat( e, TQString("y"), m_y ); XmlWriteString( e, TQString("type"), TQString(KivioPointTypeNames[m_pointType]) ); return e; }