//----------------------------------------------------------------------------- // $Id: Sim/Ornament.hpp 2013/10/26 23:10:54 philw $ // Workspace Text/Image Ornament -- created for RiverWare 6.5 [10-2013] //----------------------------------------------------------------------------- #pragma once #ifndef OrnamentINCLUDED #define OrnamentINCLUDED #include "Root.hpp" #include "CallbackType.hpp" #include "CanvasDefs.hpp" #include "UserImageData.hpp" #include "cwReturnStatus.hpp" #include #include #include class Ornament : public Root { public: // Image Reference Types typedef enum { ImageTypeNone = 0, // no image ImageTypeUser, // user-provided image ImageTypeDingbat // TENTATIVE; NOT YET SUPPORTED. } ImageType; static const char* imageTypeStr (ImageType, bool forSerial); static ImageType imageTypeFromStr (const QString&); private: ImageType _imageType; // default: ImageTypeNone int _imageId; // either dingbat (1..) or user (>= 1000). QString _displayText; QString _tooltipText; bool _hasFrame; // Currently, Ornaments are associated with only one workspace canvas. CanvasDefs::CanvasID _canvasID; // e.g. CanvasID_SIMULATION double _simX; double _simY; double _accX; double _accY; public: Ornament(); virtual ~Ornament(); // ***************** // *** Getters *** // ***************** ImageType imageType() const { return (_imageType); } int imageId() const { return (_imageId); } bool hasFrame() const { return (_hasFrame); } bool hasImage() const { return (_imageType != ImageTypeNone); } bool hasUserImage() const { return (_imageType == ImageTypeUser); } QString displayText() const { return (_displayText); } QString tooltipText() const { return (_tooltipText); } CanvasDefs::CanvasID canvasID() const { return (_canvasID); } double simX() const { return (_simX); } double simY() const { return (_simY); } double accX() const { return (_accX); } double accY() const { return (_accY); } // ***************** // *** Setters *** // ***************** void setImage (ImageType, int imageId); void setHasFrame (bool); void setDisplayText (const QString&); void setTooltipText (const QString&); void setCanvasId (CanvasDefs::CanvasID); void setSimXY (double x, double y); void setAccXY (double x, double y); // ----------------- bool operator== (const Ornament&) const; bool equalWithImageData (const Ornament& rhsOrn, const UserImageData& rhsImgDat) const; private: void init(); void sendCallback (CallbackType); public: // XML Serialization: Output QDomElement asXmlDomElement (QDomDocument&) const; QString toXml() const; // XML Serialization: Input okstat loadFromDomElement (const QDomElement&, const QString& srcDesc); okstat loadFromXml (const QString& xmlStr, const QString& srcDesc); static void testSerial(); }; #endif // OrnamentINCLUDED //--- (end Ornament.hpp) ---