1/* 2 * Copyright 2006-2007, 2023, Haiku. All rights reserved. 3 * Distributed under the terms of the MIT License. 4 * 5 * Authors: 6 * Stephan A��mus <superstippi@gmx.de> 7 * Zardshard 8 */ 9#ifndef PATH_SOURCE_SHAPE_H 10#define PATH_SOURCE_SHAPE_H 11 12 13#include "IconBuild.h" 14#include "Shape.h" 15 16 17class BMessage; 18 19 20_BEGIN_ICON_NAMESPACE 21 22 23class PathContainer; 24class PropertyObject; 25class Style; 26 27 28class PathSourceShape : public _ICON_NAMESPACE Shape { 29 public: 30 enum { 31 archive_code = 'shps' 32 }; 33 34 PathSourceShape(_ICON_NAMESPACE Style* style); 35 PathSourceShape(const PathSourceShape& other); 36 virtual ~PathSourceShape(); 37 38 // IconObject interface 39 virtual status_t Unarchive(BMessage* archive); 40#ifdef ICON_O_MATIC 41 virtual status_t Archive(BMessage* into, 42 bool deep = true) const; 43 44 virtual PropertyObject* MakePropertyObject() const; 45 virtual bool SetToPropertyObject( 46 const PropertyObject* object); 47#else 48 inline void Notify() {} 49#endif // ICON_O_MATIC 50 51 // PathSourceShape 52 virtual status_t InitCheck() const; 53 virtual PathSourceShape* Clone() const 54 { return new PathSourceShape(*this); } 55 56 void SetStyle(_ICON_NAMESPACE Style* style) 57 { Shape::SetStyle(style); } 58 inline _ICON_NAMESPACE Style* Style() const 59 { return Shape::Style(); } 60 61 void SetMinVisibilityScale(float scale); 62 float MinVisibilityScale() const 63 { return fMinVisibilityScale; } 64 void SetMaxVisibilityScale(float scale); 65 float MaxVisibilityScale() const 66 { return fMaxVisibilityScale; } 67 68 virtual bool Visible(float scale) const; 69 70 private: 71 float fMinVisibilityScale; 72 float fMaxVisibilityScale; 73}; 74 75 76_END_ICON_NAMESPACE 77 78 79#endif // PATH_SOURCE_SHAPE_H 80