1
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
3
* animation.h: Animation engine
6
* Moonlight List (moonlight-list@lists.ximian.com)
8
* Copyright 2007 Novell, Inc. (http://www.novell.com)
10
* See the LICENSE file included with the distribution for details.
14
#ifndef MOON_ANIMATION_H
15
#define MOON_ANIMATION_H
20
#include "collection.h"
24
#include "moon-curves.h"
28
/* @Namespace=System.Windows.Media.Animation */
29
class KeySpline : public DependencyObject {
30
moon_quadratic quadraticsArray [16];
33
virtual ~KeySpline () {}
36
/* @GenerateCBinding,GeneratePInvoke */
39
KeySpline (Point controlPoint1, Point controlPoint2);
40
KeySpline (double x1, double y1, double x2, double y2);
42
virtual Type::Kind GetObjectType () { return Type::KEYSPLINE; }
43
virtual void OnPropertyChanged (PropertyChangedEventArgs *args);
45
void RegenerateQuadratics ();
47
double GetSplineProgress (double linearProgress);
48
/* @PropertyType=Point,ManagedPropertyType=Point,DefaultValue=Point (0\,0),ManagedFieldAccess=Internal,GenerateAccessors */
49
static DependencyProperty *ControlPoint1Property;
50
/* @PropertyType=Point,ManagedPropertyType=Point,DefaultValue=Point (1.0\, 1.0),ManagedFieldAccess=Internal,GenerateAccessors */
51
static DependencyProperty *ControlPoint2Property;
53
Point *GetControlPoint1 ();
54
void SetControlPoint1 (Point *controlPoint1);
56
Point *GetControlPoint2 ();
57
void SetControlPoint2 (Point *controlPoint2);
61
/* @Namespace=System.Windows.Media.Animation */
71
KeyTime (const KeyTime &keytime)
74
percent = keytime.percent;
75
timespan = keytime.timespan;
78
KeyTime (double percent)
83
KeyTime (TimeSpan timeSpan)
85
timespan (timeSpan) { }
88
KeyTime (KeyTimeType kind) : k(kind) { }
90
static KeyTime FromPercent (double percent) { return KeyTime (percent); }
91
static KeyTime FromTimeSpan (TimeSpan timeSpan) { return KeyTime (timeSpan); }
94
static KeyTime Uniform;
96
bool operator!= (const KeyTime &v) const
101
bool operator== (const KeyTime &v) const
107
case PERCENT: return percent == v.percent;
108
case TIMESPAN: return timespan == v.timespan;
109
default: return true;
113
bool HasPercent () { return k == PERCENT; }
114
double GetPercent () { return percent; }
116
bool HasTimeSpan () { return k == TIMESPAN; }
117
TimeSpan GetTimeSpan () { return timespan; }
128
// Animations (more specialized clocks and timelines) and their subclasses
131
class AnimationClock;
132
class AnimationStorage;
134
// internal WPF class gleaned from stack traces
135
class AnimationStorage {
137
AnimationStorage (AnimationClock *clock, Animation/*Timeline*/ *timeline,
138
DependencyObject *targetobj, DependencyProperty *targetprop);
139
~AnimationStorage ();
141
void ResetPropertyValue ();
142
void DetachUpdateHandler ();
143
void ReAttachUpdateHandler ();
144
void DetachTarget ();
145
void FlagAsNonResetable ();
147
bool IsFloating () { return floating; };
148
bool IsCurrentStorage ();
149
Value* GetResetValue ();
150
void UpdatePropertyValueWith (Value *v);
151
Value* GetStopValue (void);
152
void DetachFromPrevStorage (void);
155
void TargetObjectDestroyed ();
156
static void target_object_destroyed (EventObject *sender, EventArgs *calldata, gpointer data);
158
void UpdatePropertyValue ();
159
static void update_property_value (EventObject *sender, EventArgs *calldata, gpointer data);
161
AnimationClock *clock;
162
Animation/*Timeline*/* timeline;
163
DependencyObject *targetobj;
164
DependencyProperty *targetprop;
167
bool nonResetableFlag;
173
class Animation/*Timeline*/;
175
/* @Namespace=None,ManagedDependencyProperties=None */
176
class AnimationClock : public Clock {
178
virtual ~AnimationClock ();
181
AnimationClock (Animation/*Timeline*/ *timeline);
182
virtual Type::Kind GetObjectType () { return Type::ANIMATIONCLOCK; };
183
virtual void ExtraRepeatAction ();
184
virtual void OnSurfaceDetach ();
185
virtual void OnSurfaceReAttach ();
187
Value *GetCurrentValue (Value *defaultOriginValue, Value *defaultDestinationValue);
189
bool HookupStorage (DependencyObject *targetobj, DependencyProperty *targetprop);
191
virtual void Stop ();
192
virtual void Begin ();
195
Animation/*Timeline*/ *timeline;
196
AnimationStorage *storage;
203
/* this is called AnimationTimeline in wpf */
204
/* @Namespace=None */
205
class Animation/*Timeline*/ : public Timeline {
207
virtual ~Animation () {}
211
Animation/*Timeline*/ () { };
212
virtual Type::Kind GetObjectType () { return Type::ANIMATION; };
214
virtual Clock *AllocateClock ();
216
virtual Value *GetCurrentValue (Value *defaultOriginValue, Value *defaultDestinationValue,
217
AnimationClock* animationClock);
218
virtual Value *GetTargetValue (Value *defaultOriginValue);
220
virtual Duration GetNaturalDurationCore (Clock* clock);
223
virtual void Resolve () { };
225
/* The kind of values this animation generates */
226
virtual Type::Kind GetValueKind () { return Type::INVALID; };
229
/* @Namespace=System.Windows.Media.Animation */
230
class DoubleAnimation : public Animation/*Timeline*/ {
232
virtual ~DoubleAnimation () {}
235
/* @PropertyType=double,Nullable,GenerateAccessors */
236
static DependencyProperty *ByProperty;
237
/* @PropertyType=double,Nullable,GenerateAccessors */
238
static DependencyProperty *FromProperty;
239
/* @PropertyType=double,Nullable,GenerateAccessors */
240
static DependencyProperty *ToProperty;
242
/* @GenerateCBinding,GeneratePInvoke */
245
virtual Type::Kind GetObjectType () { return Type::DOUBLEANIMATION; };
246
virtual Type::Kind GetValueKind () { return Type::DOUBLE; };
248
virtual Value *GetTargetValue (Value *defaultOriginValue);
249
virtual Value *GetCurrentValue (Value *defaultOriginValue, Value *defaultDestinationValue,
250
AnimationClock *animationClock);
253
// Property Accessors
256
void SetBy (double *pv);
257
void SetBy (double v);
260
void SetFrom (double *pv);
261
void SetFrom (double v);
264
void SetTo (double *pv);
265
void SetTo (double v);
269
/* @Namespace=System.Windows.Media.Animation */
270
class ColorAnimation : public Animation/*Timeline*/ {
272
virtual ~ColorAnimation () {}
275
/* @PropertyType=Color,Nullable,GenerateAccessors */
276
static DependencyProperty *ByProperty;
277
/* @PropertyType=Color,Nullable,GenerateAccessors */
278
static DependencyProperty *FromProperty;
279
/* @PropertyType=Color,Nullable,GenerateAccessors */
280
static DependencyProperty *ToProperty;
282
/* @GenerateCBinding,GeneratePInvoke */
285
virtual Type::Kind GetObjectType () { return Type::COLORANIMATION; };
286
virtual Type::Kind GetValueKind () { return Type::COLOR; };
288
virtual Value *GetTargetValue (Value *defaultOriginValue);
289
virtual Value *GetCurrentValue (Value *defaultOriginValue, Value *defaultDestinationValue,
290
AnimationClock *animationClock);
293
// Property Accessors
296
void SetBy (Color *pv);
297
void SetBy (Color v);
300
void SetFrom (Color *pv);
301
void SetFrom (Color v);
304
void SetTo (Color *pv);
305
void SetTo (Color v);
309
/* @Namespace=System.Windows.Media.Animation */
310
class PointAnimation : public Animation/*Timeline*/ {
312
virtual ~PointAnimation () {}
315
/* @PropertyType=Point,Nullable,GenerateAccessors */
316
static DependencyProperty *ByProperty;
317
/* @PropertyType=Point,Nullable,GenerateAccessors */
318
static DependencyProperty *FromProperty;
319
/* @PropertyType=Point,Nullable,GenerateAccessors */
320
static DependencyProperty *ToProperty;
322
/* @GenerateCBinding,GeneratePInvoke */
325
virtual Type::Kind GetObjectType () { return Type::POINTANIMATION; };
326
virtual Type::Kind GetValueKind () { return Type::POINT; };
328
virtual Value *GetTargetValue (Value *defaultOriginValue);
329
virtual Value *GetCurrentValue (Value *defaultOriginValue, Value *defaultDestinationValue,
330
AnimationClock *animationClock);
333
// Property Accessors
336
void SetBy (Point *pv);
337
void SetBy (Point v);
340
void SetFrom (Point *pv);
341
void SetFrom (Point v);
344
void SetTo (Point *pv);
345
void SetTo (Point v);
349
/* @Namespace=None,ManagedDependencyProperties=None */
350
class KeyFrame : public DependencyObject {
352
virtual ~KeyFrame () {}
356
TimeSpan resolved_keytime;
359
virtual Type::Kind GetObjectType () { return Type::KEYFRAME; };
361
virtual Value *InterpolateValue (Value *baseValue, double keyFrameProgress);
364
// Property Accessors
366
virtual KeyTime *GetKeyTime () = 0;
367
virtual void SetKeyTime (KeyTime keytime) = 0;
368
virtual void SetKeyTime (KeyTime *keytime) = 0;
371
/* @Namespace=None */
372
class KeyFrameCollection : public DependencyObjectCollection {
374
virtual bool AddedToCollection (Value *value, MoonError *error);
375
virtual void RemovedFromCollection (Value *value);
377
virtual ~KeyFrameCollection ();
380
GPtrArray *sorted_list;
383
/* @GenerateCBinding,GeneratePInvoke */
384
KeyFrameCollection ();
386
virtual Type::Kind GetObjectType() { return Type::KEYFRAME_COLLECTION; }
387
virtual Type::Kind GetElementType() { return Type::KEYFRAME; }
389
virtual bool Clear ();
391
KeyFrame *GetKeyFrameForTime (TimeSpan t, KeyFrame **previous_frame);
393
virtual void OnSubPropertyChanged (DependencyProperty *prop, DependencyObject *obj, PropertyChangedEventArgs *subobj_args);
396
/* @Namespace=System.Windows.Media.Animation */
397
class ColorKeyFrameCollection : public KeyFrameCollection {
399
virtual ~ColorKeyFrameCollection () {}
402
/* @GenerateCBinding,GeneratePInvoke */
403
ColorKeyFrameCollection () { }
405
virtual Type::Kind GetObjectType() { return Type::COLORKEYFRAME_COLLECTION; }
406
virtual Type::Kind GetElementType() { return Type::COLORKEYFRAME; }
409
/* @Namespace=System.Windows.Media.Animation */
410
class DoubleKeyFrameCollection : public KeyFrameCollection {
412
virtual ~DoubleKeyFrameCollection () {}
415
/* @GenerateCBinding,GeneratePInvoke */
416
DoubleKeyFrameCollection () { }
418
virtual Type::Kind GetObjectType() { return Type::DOUBLEKEYFRAME_COLLECTION; }
419
virtual Type::Kind GetElementType() { return Type::DOUBLEKEYFRAME; }
422
/* @Namespace=System.Windows.Media.Animation */
423
class PointKeyFrameCollection : public KeyFrameCollection {
425
virtual ~PointKeyFrameCollection () {}
428
/* @GenerateCBinding,GeneratePInvoke */
429
PointKeyFrameCollection () { }
431
virtual Type::Kind GetObjectType() { return Type::POINTKEYFRAME_COLLECTION; }
432
virtual Type::Kind GetElementType() { return Type::POINTKEYFRAME; }
435
/* @Namespace=System.Windows.Media.Animation */
436
class DoubleKeyFrame : public KeyFrame {
438
virtual ~DoubleKeyFrame () {}
441
/* @PropertyType=double,Nullable,ManagedPropertyType=double,GenerateAccessors */
442
static DependencyProperty *ValueProperty;
443
/* @PropertyType=KeyTime,Nullable,ManagedPropertyType=KeyTime,GenerateAccessors */
444
static DependencyProperty *KeyTimeProperty;
446
/* @GenerateCBinding,GeneratePInvoke,ManagedAccess=Protected */
448
virtual Type::Kind GetObjectType() { return Type::DOUBLEKEYFRAME; };
451
// Property Accessors
454
void SetValue (double *pv);
455
void SetValue (double v);
457
virtual KeyTime *GetKeyTime ();
458
virtual void SetKeyTime (KeyTime keytime);
459
virtual void SetKeyTime (KeyTime *keytime);
462
/* @Namespace=System.Windows.Media.Animation */
463
class ColorKeyFrame : public KeyFrame {
465
virtual ~ColorKeyFrame () {}
468
/* @PropertyType=Color,Nullable,ManagedPropertyType=Color,GenerateAccessors */
469
static DependencyProperty *ValueProperty;
470
/* @PropertyType=KeyTime,Nullable,ManagedPropertyType=KeyTime,GenerateAccessors */
471
static DependencyProperty *KeyTimeProperty;
473
/* @GenerateCBinding,GeneratePInvoke,ManagedAccess=Protected */
475
virtual Type::Kind GetObjectType () { return Type::COLORKEYFRAME; };
478
// Property Accessors
481
void SetValue (Color *pv);
482
void SetValue (Color v);
484
virtual KeyTime *GetKeyTime ();
485
virtual void SetKeyTime (KeyTime keytime);
486
virtual void SetKeyTime (KeyTime *keytime);
489
/* @Namespace=System.Windows.Media.Animation */
490
class PointKeyFrame : public KeyFrame {
492
virtual ~PointKeyFrame () {}
495
/* @PropertyType=Point,Nullable,ManagedPropertyType=Point,GenerateAccessors */
496
static DependencyProperty *ValueProperty;
497
/* @PropertyType=KeyTime,Nullable,ManagedPropertyType=KeyTime,GenerateAccessors */
498
static DependencyProperty *KeyTimeProperty;
500
/* @GenerateCBinding,GeneratePInvoke,ManagedAccess=Protected */
503
virtual Type::Kind GetObjectType () { return Type::POINTKEYFRAME; };
506
// Property Accessors
509
void SetValue (Point *pv);
510
void SetValue (Point v);
512
virtual KeyTime *GetKeyTime ();
513
virtual void SetKeyTime (KeyTime keytime);
514
virtual void SetKeyTime (KeyTime *keytime);
519
/* @Namespace=System.Windows.Media.Animation */
520
class DiscreteDoubleKeyFrame : public DoubleKeyFrame {
522
virtual ~DiscreteDoubleKeyFrame () {}
525
/* @GenerateCBinding,GeneratePInvoke */
526
DiscreteDoubleKeyFrame () { }
528
virtual Type::Kind GetObjectType () { return Type::DISCRETEDOUBLEKEYFRAME; };
530
virtual Value *InterpolateValue (Value *baseValue, double keyFrameProgress);
536
/* @Namespace=System.Windows.Media.Animation */
537
class DiscreteColorKeyFrame : public ColorKeyFrame {
539
virtual ~DiscreteColorKeyFrame () {}
542
/* @GenerateCBinding,GeneratePInvoke */
543
DiscreteColorKeyFrame () { }
545
virtual Type::Kind GetObjectType () { return Type::DISCRETECOLORKEYFRAME; };
547
virtual Value *InterpolateValue (Value *baseValue, double keyFrameProgress);
552
/* @Namespace=System.Windows.Media.Animation */
553
class DiscretePointKeyFrame : public PointKeyFrame {
555
virtual ~DiscretePointKeyFrame () {}
558
/* @GenerateCBinding,GeneratePInvoke */
559
DiscretePointKeyFrame () { }
561
virtual Type::Kind GetObjectType () { return Type::DISCRETEPOINTKEYFRAME; };
563
virtual Value *InterpolateValue (Value *baseValue, double keyFrameProgress);
567
/* @Namespace=System.Windows.Media.Animation */
568
class LinearDoubleKeyFrame : public DoubleKeyFrame {
570
virtual ~LinearDoubleKeyFrame () {}
573
/* @GenerateCBinding,GeneratePInvoke */
574
LinearDoubleKeyFrame () { }
576
virtual Type::Kind GetObjectType () { return Type::LINEARDOUBLEKEYFRAME; };
578
virtual Value *InterpolateValue (Value *baseValue, double keyFrameProgress);
583
/* @Namespace=System.Windows.Media.Animation */
584
class LinearColorKeyFrame : public ColorKeyFrame {
586
virtual ~LinearColorKeyFrame () {}
589
/* @GenerateCBinding,GeneratePInvoke */
590
LinearColorKeyFrame () { }
592
virtual Type::Kind GetObjectType () { return Type::LINEARCOLORKEYFRAME; };
594
virtual Value *InterpolateValue (Value *baseValue, double keyFrameProgress);
599
/* @Namespace=System.Windows.Media.Animation */
600
class LinearPointKeyFrame : public PointKeyFrame {
602
virtual ~LinearPointKeyFrame () {}
605
/* @GenerateCBinding,GeneratePInvoke */
606
LinearPointKeyFrame () { }
608
virtual Type::Kind GetObjectType () { return Type::LINEARPOINTKEYFRAME; };
610
virtual Value *InterpolateValue (Value *baseValue, double keyFrameProgress);
615
/* @Namespace=System.Windows.Media.Animation */
616
class SplineDoubleKeyFrame : public DoubleKeyFrame {
618
virtual ~SplineDoubleKeyFrame () {}
621
/* @PropertyType=KeySpline,GenerateAccessors */
622
static DependencyProperty *KeySplineProperty;
624
/* @GenerateCBinding,GeneratePInvoke */
625
SplineDoubleKeyFrame ();
627
virtual Type::Kind GetObjectType () { return Type::SPLINEDOUBLEKEYFRAME; };
629
virtual Value *InterpolateValue (Value *baseValue, double keyFrameProgress);
632
// Property Accessors
634
KeySpline *GetKeySpline ();
635
void SetKeySpline (KeySpline* value);
640
/* @Namespace=System.Windows.Media.Animation */
641
class SplineColorKeyFrame : public ColorKeyFrame {
643
virtual ~SplineColorKeyFrame () {}
646
/* @PropertyType=KeySpline,GenerateAccessors */
647
static DependencyProperty *KeySplineProperty;
649
/* @GenerateCBinding,GeneratePInvoke */
650
SplineColorKeyFrame ();
652
virtual Type::Kind GetObjectType () { return Type::SPLINECOLORKEYFRAME; };
654
virtual Value *InterpolateValue (Value *baseValue, double keyFrameProgress);
657
// Property Accessors
659
KeySpline *GetKeySpline ();
660
void SetKeySpline (KeySpline* value);
665
/* @Namespace=System.Windows.Media.Animation */
666
class SplinePointKeyFrame : public PointKeyFrame {
668
virtual ~SplinePointKeyFrame () {}
671
/* @PropertyType=KeySpline,GenerateAccessors */
672
static DependencyProperty *KeySplineProperty;
674
/* @GenerateCBinding,GeneratePInvoke */
675
SplinePointKeyFrame ();
676
virtual Type::Kind GetObjectType () { return Type::SPLINEPOINTKEYFRAME; };
678
virtual Value *InterpolateValue (Value *baseValue, double keyFrameProgress);
681
// Property Accessors
683
KeySpline *GetKeySpline ();
684
void SetKeySpline (KeySpline* value);
688
/* @Namespace=System.Windows.Media.Animation */
689
/* @ContentProperty="KeyFrames" */
690
class DoubleAnimationUsingKeyFrames : public DoubleAnimation {
692
virtual ~DoubleAnimationUsingKeyFrames ();
695
/* @PropertyType=DoubleKeyFrameCollection,ManagedFieldAccess=Internal,ManagedSetterAccess=Internal,GenerateAccessors */
696
static DependencyProperty *KeyFramesProperty;
698
/* @GenerateCBinding,GeneratePInvoke */
699
DoubleAnimationUsingKeyFrames ();
701
virtual Type::Kind GetObjectType () { return Type::DOUBLEANIMATIONUSINGKEYFRAMES; };
703
void AddKeyFrame (DoubleKeyFrame *frame);
704
void RemoveKeyFrame (DoubleKeyFrame *frame);
706
virtual Value *GetCurrentValue (Value *defaultOriginValue, Value *defaultDestinationValue,
707
AnimationClock* animationClock);
709
virtual void Resolve ();
711
virtual Duration GetNaturalDurationCore (Clock* clock);
713
virtual bool Validate ();
716
// Property Accessors
718
DoubleKeyFrameCollection *GetKeyFrames ();
719
void SetKeyFrames (DoubleKeyFrameCollection* value);
722
/* @Namespace=System.Windows.Media.Animation */
723
/* @ContentProperty="KeyFrames" */
724
class ColorAnimationUsingKeyFrames : public ColorAnimation {
726
virtual ~ColorAnimationUsingKeyFrames ();
729
/* @PropertyType=ColorKeyFrameCollection,ManagedFieldAccess=Internal,ManagedSetterAccess=Internal,GenerateAccessors */
730
static DependencyProperty *KeyFramesProperty;
732
/* @GenerateCBinding,GeneratePInvoke */
733
ColorAnimationUsingKeyFrames ();
735
virtual Type::Kind GetObjectType () { return Type::COLORANIMATIONUSINGKEYFRAMES; }
737
void AddKeyFrame (ColorKeyFrame *frame);
738
void RemoveKeyFrame (ColorKeyFrame *frame);
740
virtual Value *GetCurrentValue (Value *defaultOriginValue, Value *defaultDestinationValue,
741
AnimationClock* animationClock);
743
virtual void Resolve ();
745
virtual Duration GetNaturalDurationCore (Clock* clock);
747
virtual bool Validate ();
750
// Property Accessors
752
ColorKeyFrameCollection *GetKeyFrames ();
753
void SetKeyFrames (ColorKeyFrameCollection* value);
756
/* @Namespace=System.Windows.Media.Animation */
757
/* @ContentProperty="KeyFrames" */
758
class PointAnimationUsingKeyFrames : public PointAnimation {
760
virtual ~PointAnimationUsingKeyFrames ();
763
/* @PropertyType=PointKeyFrameCollection,ManagedFieldAccess=Internal,ManagedSetterAccess=Internal,GenerateAccessors */
764
static DependencyProperty *KeyFramesProperty;
766
/* @GenerateCBinding,GeneratePInvoke */
767
PointAnimationUsingKeyFrames ();
769
virtual Type::Kind GetObjectType () { return Type::POINTANIMATIONUSINGKEYFRAMES; };
771
void AddKeyFrame (PointKeyFrame *frame);
772
void RemoveKeyFrame (PointKeyFrame *frame);
774
virtual Value *GetCurrentValue (Value *defaultOriginValue, Value *defaultDestinationValue,
775
AnimationClock *animationClock);
777
virtual void Resolve ();
779
virtual Duration GetNaturalDurationCore (Clock *clock);
781
virtual bool Validate ();
784
// Property Accessors
786
PointKeyFrameCollection *GetKeyFrames ();
787
void SetKeyFrames (PointKeyFrameCollection* value);
790
/* @Namespace=System.Windows.Media.Animation */
791
/* @ContentProperty="Children" */
792
class Storyboard : public ParallelTimeline {
793
static void storyboard_completed (EventObject *sender, EventArgs *calldata, gpointer data);
794
static gboolean storyboard_tick (gpointer data);
796
void HookupAnimationsRecurse (Clock *clock);
797
void TeardownClockGroup ();
803
virtual ~Storyboard ();
806
/* @PropertyType=string,Attached,GenerateAccessors */
807
static DependencyProperty *TargetNameProperty;
808
/* @PropertyType=string,Attached,GenerateAccessors */
809
static DependencyProperty *TargetPropertyProperty;
811
/* @GenerateCBinding,GeneratePInvoke */
814
virtual Type::Kind GetObjectType () { return Type::STORYBOARD; };
816
virtual void SetSurface (Surface *surface);
818
/* @GenerateCBinding,GeneratePInvoke */
821
/* @GenerateCBinding,GeneratePInvoke */
824
/* @GenerateCBinding,GeneratePInvoke */
827
/* @GenerateCBinding,GeneratePInvoke */
828
void Seek (TimeSpan timespan);
830
/* @GenerateCBinding,GeneratePInvoke */
833
// XXX event Completed
835
static void SetTargetName (DependencyObject *o, const char *targetName);
836
static const char *GetTargetName (DependencyObject *o);
837
static void SetTargetProperty (DependencyObject *o, const char *targetProperty);
838
static const char *GetTargetProperty (DependencyObject *o);
840
// events you can AddHandler to
841
const static int CompletedEvent;
844
/* @Namespace=System.Windows.Media.Animation */
845
/* @ContentProperty="Storyboard" */
846
class BeginStoryboard : public TriggerAction {
848
virtual ~BeginStoryboard ();
851
/* @PropertyType=Storyboard,GenerateAccessors */
852
static DependencyProperty *StoryboardProperty;
854
/* @GenerateCBinding,GeneratePInvoke */
855
BeginStoryboard () { }
857
virtual Type::Kind GetObjectType () { return Type::BEGINSTORYBOARD; };
859
virtual void Fire ();
862
// Property Accessors
864
void SetStoryboard (Storyboard *sb);
865
Storyboard *GetStoryboard ();
870
void animation_shutdown (void);
872
void key_spline_get_control_point_1 (KeySpline *ks, double *x, double *y);
873
void key_spline_set_control_point_1 (KeySpline *ks, double x, double y);
875
void key_spline_get_control_point_2 (KeySpline *ks, double *x, double *y);
876
void key_spline_set_control_point_2 (KeySpline *ks, double x, double y);
880
#endif /* MOON_ANIMATION_H */