1fb07ece0SStephan Aßmus /* 2325a6253SAxel Dörfler * Copyright 2006-2007, Haiku. 3fb07ece0SStephan Aßmus * Distributed under the terms of the MIT License. 4fb07ece0SStephan Aßmus * 5fb07ece0SStephan Aßmus * Authors: 6fb07ece0SStephan Aßmus * Stephan Aßmus <superstippi@gmx.de> 7fb07ece0SStephan Aßmus */ 8fb07ece0SStephan Aßmus #ifndef PATH_SOURCE_H 9fb07ece0SStephan Aßmus #define PATH_SOURCE_H 10fb07ece0SStephan Aßmus 11325a6253SAxel Dörfler 12*25dc253dSIngo Weinhold #include "IconBuild.h" 13fb07ece0SStephan Aßmus #include "Transformer.h" 14fb07ece0SStephan Aßmus 15fb07ece0SStephan Aßmus #include "agg_path_storage.h" 16fb07ece0SStephan Aßmus #include "agg_conv_curve.h" 17fb07ece0SStephan Aßmus 18325a6253SAxel Dörfler 19*25dc253dSIngo Weinhold _BEGIN_ICON_NAMESPACE 20*25dc253dSIngo Weinhold 21325a6253SAxel Dörfler 22fb07ece0SStephan Aßmus class PathContainer; 23fb07ece0SStephan Aßmus class VectorPath; 24fb07ece0SStephan Aßmus 25fb07ece0SStephan Aßmus typedef agg::path_storage AGGPath; 26fb07ece0SStephan Aßmus typedef agg::conv_curve<AGGPath> AGGCurvedPath; 27fb07ece0SStephan Aßmus 28fb07ece0SStephan Aßmus class PathSource : public VertexSource { 29fb07ece0SStephan Aßmus public: 30fb07ece0SStephan Aßmus PathSource(PathContainer* paths); 31fb07ece0SStephan Aßmus virtual ~PathSource(); 32fb07ece0SStephan Aßmus 33fb07ece0SStephan Aßmus virtual void rewind(unsigned path_id); 34fb07ece0SStephan Aßmus virtual unsigned vertex(double* x, double* y); 35fb07ece0SStephan Aßmus 36fb07ece0SStephan Aßmus virtual bool WantsOpenPaths() const; 37fb07ece0SStephan Aßmus virtual double ApproximationScale() const; 38fb07ece0SStephan Aßmus 39fb07ece0SStephan Aßmus // PathSource 40fb07ece0SStephan Aßmus void Update(bool leavePathsOpen, 41fb07ece0SStephan Aßmus double approximationScale); 42fb07ece0SStephan Aßmus 4312a257d7SStephan Aßmus void SetGlobalScale(double scale); 4412a257d7SStephan Aßmus 45fb07ece0SStephan Aßmus private: 46fb07ece0SStephan Aßmus PathContainer* fPaths; 47fb07ece0SStephan Aßmus AGGPath fAGGPath; 48fb07ece0SStephan Aßmus AGGCurvedPath fAGGCurvedPath; 4912a257d7SStephan Aßmus 5012a257d7SStephan Aßmus double fGlobalScale; 5112a257d7SStephan Aßmus double fLastTransformerScale; 52fb07ece0SStephan Aßmus }; 53fb07ece0SStephan Aßmus 54*25dc253dSIngo Weinhold 55*25dc253dSIngo Weinhold _END_ICON_NAMESPACE 56*25dc253dSIngo Weinhold 57325a6253SAxel Dörfler 58fb07ece0SStephan Aßmus #endif // PATH_SOURCE_H 59