2009-12-04 Jeffrey Stedfast <fejj@novell.com>
[moon.git] / src / effect.h
blobf6535b0390e727d63cf277fb9d83cc5f5f2e2b97
1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
3 /*
4 * Contact:
5 * Moonlight List (moonlight-list@lists.ximian.com)
7 * Copyright 2009 Novell, Inc. (http://www.novell.com)
9 * See the LICENSE file included with the distribution for details.
13 #ifndef __MOONLIGHT_EFFECT_H__
14 #define __MOONLIGHT_EFFECT_H__
16 #include <glib.h>
17 #include "enums.h"
18 #include "dependencyobject.h"
20 /* @Namespace=System.Windows.Media.Effects */
21 class Effect : public DependencyObject {
22 public:
23 /* @GenerateCBinding,GeneratePInvoke,ManagedAccess=Protected */
24 Effect ();
26 protected:
27 virtual ~Effect () {}
30 /* @Namespace=System.Windows.Media.Effects */
31 class BlurEffect : public Effect {
32 public:
33 /* @GenerateCBinding,GeneratePInvoke */
34 BlurEffect ();
36 /* @PropertyType=double,DefaultValue=5.0,GenerateAccessors */
37 const static int RadiusProperty;
40 // Property Accessors
42 void SetRadius (double radius);
43 double GetRadius ();
45 protected:
46 virtual ~BlurEffect () {}
49 /* @Namespace=System.Windows.Media.Effects */
50 class DropShadowEffect : public Effect {
51 public:
52 /* @GenerateCBinding,GeneratePInvoke */
53 DropShadowEffect ();
55 /* @PropertyType=double,DefaultValue=5.0,GenerateAccessors */
56 const static int BlurRadiusProperty;
57 /* @PropertyType=Color,DefaultValue=Color(0xFF000000),GenerateAccessors */
58 const static int ColorProperty;
59 /* @PropertyType=double,DefaultValue=315,GenerateAccessors */
60 const static int DirectionProperty;
61 /* @PropertyType=double,DefaultValue=1.0,GenerateAccessors */
62 const static int OpacityProperty;
63 /* @PropertyType=double,DefaultValue=5,GenerateAccessors */
64 const static int ShadowDepthProperty;
67 // Property Accessors
69 void SetBlurRadius (double radius);
70 double GetBlurRadius ();
72 void SetColor (Color* color);
73 Color* GetColor ();
75 void SetDirection (double direction);
76 double GetDirection ();
78 void SetOpacity (double opacity);
79 double GetOpacity ();
81 void SetShadowDepth (double shadowDepth);
82 double GetShadowDepth ();
84 protected:
85 virtual ~DropShadowEffect () {}
88 /* @Namespace=System.Windows.Media.Effects */
89 class PixelShader : public DependencyObject {
90 public:
91 /* @GenerateCBinding,GeneratePInvoke */
92 PixelShader ();
94 /* @PropertyType=Uri,GenerateAccessors */
95 const static int UriSourceProperty;
98 // Property Accessors
100 Uri* GetUriSource ();
101 void SetUriSource (Uri *uri);
103 protected:
104 virtual ~PixelShader () {}
107 /* @Namespace=System.Windows.Media.Effects */
108 class ShaderEffect : public Effect {
109 public:
110 /* @GenerateCBinding,GeneratePInvoke */
111 ShaderEffect ();
113 /* @PropertyType=PixelShader,GenerateAccessors */
114 const static int PixelShaderProperty;
115 /* @PropertyType=double,ManagedFieldAccess=Internal,GenerateAccessors */
116 const static int PaddingBottomProperty;
117 /* @PropertyType=double,ManagedFieldAccess=Internal,GenerateAccessors */
118 const static int PaddingTopProperty;
119 /* @PropertyType=double,ManagedFieldAccess=Internal,GenerateAccessors */
120 const static int PaddingLeftProperty;
121 /* @PropertyType=double,ManagedFieldAccess=Internal,GenerateAccessors */
122 const static int PaddingRightProperty;
124 /* @PropertyType=gint32,ManagedFieldAccess=Internal,GenerateAccessors */
125 const static int DdxUvDdyUvRegisterIndexProperty;
127 // Property Accessors
128 PixelShader *GetPixelShader();
129 void SetPixelShader (PixelShader *shader);
131 double GetPaddingTop ();
132 void SetPaddingTop (double pad);
134 double GetPaddingBottom ();
135 void SetPaddingBottom (double pad);
137 double GetPaddingLeft ();
138 void SetPaddingLeft (double pad);
140 double GetPaddingRight ();
141 void SetPaddingRight (double pad);
143 int GetDdxUvDdyUvRegisterIndex ();
144 void SetDdxUvDdyUvRegisterIndex (gint32 index);
146 protected:
147 virtual ~ShaderEffect () {}
151 #endif /* __MOONLIGHT_EFFECT_H__ */