// // Node.h // TikZiT // // Copyright 2010 Aleks Kissinger. All rights reserved. // // // This file is part of TikZiT. // // TikZiT 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 3 of the License, or // (at your option) any later version. // // TikZiT 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 TikZiT. If not, see . // // Node : store the data associated with a node. #import #import "NodeStyle.h" #import "GraphElementData.h" /*! @class Node @brief A graph node, with associated location and style data. */ @interface Node : NSObject { NSPoint point; NodeStyle *style; NSString *name; NSString *label; GraphElementData *data; } /*! @property point @brief The point where this node is located. */ @property (assign) NSPoint point; /*! @property style @brief The style of this node. */ @property (retain) NodeStyle *style; /*! @property name @brief The name of this node. This is a temporary name and may change between successive TikZ outputs. */ @property (copy) NSString *name; /*! @property label @brief The latex label that appears on this node. */ @property (copy) NSString *label; /*! @property data @brief Associated extra data. */ @property (copy) GraphElementData *data; /*! @brief Initialize a new node with the given point. @param p a point. @result A node. */ - (id)initWithPoint:(NSPoint)p; /*! @brief Initialize a new node at (0,0). @result A node. */ - (id)init; /*! @brief Try to attach a style of the correct name from the given style list. @param styles an array of styles. @result YES if successfully attached, NO otherwise. */ - (BOOL)attachStyleFromTable:(NSArray*)styles; /*! @brief Set node properties from GraphElementData. */ - (void)updateData; /*! @brief Copy this node. @result A copy of this node. */ - (id)copy; /*! @brief Set properties of this node to match the given node. @param nd a node to mimic. */ - (void)setPropertiesFromNode:(Node *)nd; /*! @brief Compare a node to another node using a lex ordering on coordinates. @param nd another node. @result A comparison result. */ - (NSComparisonResult)compareTo:(id)nd; /*! @brief Factory method to construct a node with the given point. @param p a point. @result A node. */ + (Node*)nodeWithPoint:(NSPoint)p; /*! @brief Factory method to construct a node at (0,0). @result A node. */ + (Node*)node; @end // vi:ft=objc:noet:ts=4:sts=4:sw=4