Removal of non-Haiku target platform logic from build system (part 1.)
[haiku.git] / src / apps / icon-o-matic / import_export / svg / SVGGradients.h
blobc510ecbec1ee2a90f252493df275e8810d6694c2
1 /*
2 * Copyright 2006-2007, Haiku. All rights reserved.
3 * Distributed under the terms of the MIT License.
5 * Authors:
6 * Stephan Aßmus <superstippi@gmx.de>
7 */
8 #ifndef SVG_GRADIENTS_H
9 #define SVG_GRADIENTS_H
12 #include <agg_color_rgba.h>
13 #include <agg_trans_affine.h>
15 #include <Message.h>
16 #include <String.h>
18 #include "IconBuild.h"
21 _BEGIN_ICON_NAMESPACE
22 class Gradient;
23 _END_ICON_NAMESPACE
25 namespace agg {
26 namespace svg {
28 class SVGGradient : public BMessage {
29 public:
30 SVGGradient();
31 virtual ~SVGGradient();
33 void SetID(const char* id);
34 const char* ID() const;
36 virtual void AddStop(float offset, rgba8 color);
37 void SetTransformation(const trans_affine& transform);
39 Gradient* GetGradient(BRect objectBounds);
41 protected:
42 virtual Gradient* MakeGradient() const = 0;
43 void IdentifyGradientUnits();
45 private:
47 enum {
48 UNSPECIFIED = 0,
49 USER_SPACE_ON_USE,
50 OBJECT_BOUNDING_BOX,
53 Gradient* fGradient;
54 BString fID;
55 uint32 fGradientUnits;
58 class SVGLinearGradient : public SVGGradient {
59 public:
60 SVGLinearGradient();
61 virtual ~SVGLinearGradient();
63 protected:
64 virtual Gradient* MakeGradient() const;
68 class SVGRadialGradient : public SVGGradient {
69 public:
70 SVGRadialGradient();
71 virtual ~SVGRadialGradient();
73 protected:
74 virtual Gradient* MakeGradient() const;
78 } // namespace svg
79 } // namespace agg
81 #endif // SVG_GRADIENTS_H