rendered paste bodydiff --git a/class/System.Windows/Mono/GeneratedPInvokes.cs b/class/System.Windows/Mono/GeneratedPInvokes.cs
index d5ce3c2..b2dd506 100644
--- a/class/System.Windows/Mono/GeneratedPInvokes.cs
+++ b/class/System.Windows/Mono/GeneratedPInvokes.cs
@@ -252,6 +252,10 @@ namespace Mono {
public extern static IntPtr bitmap_source_new ();
[DllImport ("moon")]
+ // gpointer bitmap_source_get_bitmap_data (BitmapSource *instance);
+ public extern static IntPtr bitmap_source_get_bitmap_data (IntPtr instance);
+
+ [DllImport ("moon")]
// void bitmap_source_invalidate (BitmapSource *instance);
public extern static void bitmap_source_invalidate (IntPtr instance);
diff --git a/class/System.Windows/System.Windows.Media.Imaging/WriteableBitmap.cs b/class/System.Windows/System.Windows.Media.Imaging/WriteableBitmap.cs
index 3506049..166557e 100644
--- a/class/System.Windows/System.Windows.Media.Imaging/WriteableBitmap.cs
+++ b/class/System.Windows/System.Windows.Media.Imaging/WriteableBitmap.cs
@@ -39,46 +39,46 @@ namespace System.Windows.Media.Imaging
{
IntPtr buffer;
bool rendered;
+ int[] pixels;
+ GCHandle pixels_handle;
public WriteableBitmap (BitmapSource source) : base (NativeMethods.writeable_bitmap_new (), true)
{
rendered = true;
if (source != null)
NativeMethods.writeable_bitmap_initialize_from_bitmap_source (native, source.native);
+
+ pixels = new int[source.PixelWidth * source.PixelHeight];
+ Marshal.Copy (NativeMethods.bitmap_source_get_bitmap_data (source.native),
+ pixels, 0, pixels.Length);
}
- public WriteableBitmap (int width, int height, PixelFormat format) : base (NativeMethods.writeable_bitmap_new (), true)
+ public WriteableBitmap (int width, int height) : base (NativeMethods.writeable_bitmap_new (), true)
{
PixelWidth = width;
PixelHeight = height;
- PixelFormat = format;
rendered = false;
- checked {
- buffer = Marshal.AllocHGlobal (width * height * 4);
- NativeMethods.bitmap_source_set_bitmap_data (native, buffer);
- }
- }
+ pixels = new int[PixelWidth * PixelHeight];
- public int this[int index] {
- get {
- if (rendered)
- throw new NullReferenceException ();
+ pixels_handle = GCHandle.Alloc(pixels, GCHandleType.Pinned); // pin it so it doesn't move
- return Marshal.ReadInt32 (buffer, index*4);
- }
- set {
- if (index > PixelWidth*PixelHeight || index < 0)
- throw new ArgumentOutOfRangeException ("index must lie withing the boundaries of the bitmap");
- checked {
- Marshal.WriteInt32 (buffer, index*4, value);
- }
+ NativeMethods.bitmap_source_set_bitmap_data (native, pixels_handle.AddrOfPinnedObject());
+ }
+
+ ~WriteableBitmap ()
+ {
+ if (pixels_handle.IsAllocated) {
+ pixels_handle.Free ();
}
}
-
- public void Render (UIElement element, Transform transform) {
- Lock ();
+ public int[] Pixels {
+ get { return pixels; }
+ }
+
+ public void Render (UIElement element, Transform transform)
+ {
if (element == null)
throw new NullReferenceException ("element cannot be null");
if (transform == null)
@@ -86,21 +86,12 @@ namespace System.Windows.Media.Imaging
rendered = true;
NativeMethods.writeable_bitmap_render (native, element.native, transform.native);
-
- Unlock ();
}
- public void Invalidate () {
+ public void Invalidate ()
+ {
NativeMethods.bitmap_source_invalidate (native);
}
-
- public void Lock () {
- NativeMethods.writeable_bitmap_lock (native);
- }
-
- public void Unlock () {
- NativeMethods.writeable_bitmap_unlock (native);
- }
}
}
diff --git a/class/tuning/SecurityAttributes/automatic/System.Windows.auto.ssc b/class/tuning/SecurityAttributes/automatic/System.Windows.auto.ssc
index 521c48d..1eb4777 100644
--- a/class/tuning/SecurityAttributes/automatic/System.Windows.auto.ssc
+++ b/class/tuning/SecurityAttributes/automatic/System.Windows.auto.ssc
@@ -1,5 +1,5 @@
# [SecuritySafeCritical] needed inside System.Windows to call all [SecurityCritical] methods
-# 472 methods
+# 469 methods
+SSC-M: System.Void Microsoft.Internal.TextBoxView::.ctor()
+SSC-M: Mono.Xaml.ManagedXamlLoader Mono.ApplicationLauncher::CreateXamlLoader(System.IntPtr,System.IntPtr,System.IntPtr,System.String,System.String,System.String)
@@ -328,13 +328,10 @@
+SSC-M: System.Int32 System.Windows.Media.Imaging.DownloadProgressEventArgs::get_Progress()
+SSC-M: System.Void System.Windows.Media.Imaging.WriteableBitmap::.ctor()
+SSC-M: System.Void System.Windows.Media.Imaging.WriteableBitmap::.ctor(System.Windows.Media.Imaging.BitmapSource)
-+SSC-M: System.Void System.Windows.Media.Imaging.WriteableBitmap::.ctor(System.Int32,System.Int32,System.Windows.Media.PixelFormat)
-+SSC-M: System.Int32 System.Windows.Media.Imaging.WriteableBitmap::get_Item(System.Int32)
-+SSC-M: System.Void System.Windows.Media.Imaging.WriteableBitmap::set_Item(System.Int32,System.Int32)
++SSC-M: System.Void System.Windows.Media.Imaging.WriteableBitmap::.ctor(System.Int32,System.Int32)
++SSC-M: System.Void System.Windows.Media.Imaging.WriteableBitmap::Finalize()
+SSC-M: System.Void System.Windows.Media.Imaging.WriteableBitmap::Render(System.Windows.UIElement,System.Windows.Media.Transform)
+SSC-M: System.Void System.Windows.Media.Imaging.WriteableBitmap::Invalidate()
-+SSC-M: System.Void System.Windows.Media.Imaging.WriteableBitmap::Lock()
-+SSC-M: System.Void System.Windows.Media.Imaging.WriteableBitmap::Unlock()
+SSC-M: System.Void System.Windows.Media.LinearGradientBrush::.ctor()
+SSC-M: System.Void System.Windows.Media.LineGeometry::.ctor()
+SSC-M: System.Void System.Windows.Media.LineSegment::.ctor()
diff --git a/src/bitmapsource.cpp b/src/bitmapsource.cpp
index fa22fed..57954a1 100644
--- a/src/bitmapsource.cpp
+++ b/src/bitmapsource.cpp
@@ -66,6 +66,8 @@ BitmapSource::Invalidate ()
cairo_surface_destroy (image_surface);
image_surface = cairo_image_surface_create_for_data ((unsigned char *) GetBitmapData (), GetPixelFormat () == PixelFormatBgr32 ? CAIRO_FORMAT_RGB24 : CAIRO_FORMAT_ARGB32, GetPixelWidth (), GetPixelHeight (), GetPixelWidth ()*4);
+
+ Emit (BitmapSource::PixelDataChangedEvent);
}
cairo_surface_t *
diff --git a/src/bitmapsource.h b/src/bitmapsource.h
index aa3b65a..8f161db 100644
--- a/src/bitmapsource.h
+++ b/src/bitmapsource.h
@@ -38,12 +38,15 @@ class BitmapSource : public ImageSource {
const static int PixelHeightProperty;
/* @PropertyType=PixelFormat,DefaultValue=PixelFormatPbgra32,ManagedAccess=Internal,GenerateAccessors */
const static int PixelFormatProperty;
-
+
+ const static int PixelDataChangedEvent;
+
virtual gint32 GetPixelWidth ();
virtual void SetPixelWidth (gint32 width);
virtual gint32 GetPixelHeight ();
virtual void SetPixelHeight (gint32 height);
+ /* @GenerateCBinding,GeneratePInvoke */
gpointer GetBitmapData ();
/* @GenerateCBinding,GeneratePInvoke */
void SetBitmapData (gpointer data);
diff --git a/src/brush.cpp b/src/brush.cpp
index b13769b..9341a12 100644
--- a/src/brush.cpp
+++ b/src/brush.cpp
@@ -522,6 +522,7 @@ ImageBrush::Dispose ()
source->RemoveHandler (BitmapImage::DownloadProgressEvent, download_progress, this);
source->RemoveHandler (BitmapImage::ImageOpenedEvent, image_opened, this);
source->RemoveHandler (BitmapImage::ImageFailedEvent, image_failed, this);
+ source->RemoveHandler (BitmapSource::PixelDataChangedEvent, source_pixel_data_changed, this);
}
TileBrush::Dispose ();
@@ -552,6 +553,14 @@ ImageBrush::image_failed (EventObject *sender, EventArgs *calldata, gpointer clo
}
void
+ImageBrush::source_pixel_data_changed (EventObject *sender, EventArgs *calldata, gpointer closure)
+{
+ ImageBrush *media = (ImageBrush *) closure;
+
+ media->SourcePixelDataChanged ();
+}
+
+void
ImageBrush::DownloadProgress ()
{
BitmapImage *source = (BitmapImage *) GetImageSource ();
@@ -563,7 +572,7 @@ ImageBrush::DownloadProgress ()
void
ImageBrush::ImageOpened ()
{
- BitmapImage *source = (BitmapImage *) GetImageSource ();
+ BitmapImage *source = (BitmapImage*)GetImageSource ();
source->RemoveHandler (BitmapImage::DownloadProgressEvent, download_progress, this);
source->RemoveHandler (BitmapImage::ImageOpenedEvent, image_opened, this);
@@ -573,7 +582,7 @@ ImageBrush::ImageOpened ()
void
ImageBrush::ImageFailed ()
{
- BitmapImage *source = (BitmapImage *) GetImageSource ();
+ BitmapImage *source = (BitmapImage*)GetImageSource ();
source->RemoveHandler (BitmapImage::DownloadProgressEvent, download_progress, this);
source->RemoveHandler (BitmapImage::ImageOpenedEvent, image_opened, this);
@@ -583,6 +592,12 @@ ImageBrush::ImageFailed ()
}
void
+ImageBrush::SourcePixelDataChanged ()
+{
+ NotifyListenersOfPropertyChange (Brush::ChangedProperty, NULL);
+}
+
+void
ImageBrush::SetSource (Downloader *downloader, const char *PartName)
{
BitmapImage *source = (BitmapImage *) GetImageSource ();
@@ -609,15 +624,22 @@ ImageBrush::OnPropertyChanged (PropertyChangedEventArgs *args, MoonError *error)
ImageSource *source = args->GetNewValue () ? args->GetNewValue ()->AsImageSource () : NULL;
ImageSource *old = args->GetOldValue () ? args->GetOldValue ()->AsImageSource () : NULL;
+ if (old && old->Is(Type::BITMAPSOURCE)) {
+ old->RemoveHandler (BitmapSource::PixelDataChangedEvent, source_pixel_data_changed, this);
+ }
+ if (source && source->Is(Type::BITMAPSOURCE)) {
+ source->AddHandler (BitmapSource::PixelDataChangedEvent, source_pixel_data_changed, this);
+ }
+
if (old && old->Is(Type::BITMAPIMAGE)) {
- ((BitmapImage *)old)->RemoveHandler (BitmapImage::DownloadProgressEvent, download_progress, this);
- ((BitmapImage *)old)->RemoveHandler (BitmapImage::ImageOpenedEvent, image_opened, this);
- ((BitmapImage *)old)->RemoveHandler (BitmapImage::ImageFailedEvent, image_failed, this);
+ old->RemoveHandler (BitmapImage::DownloadProgressEvent, download_progress, this);
+ old->RemoveHandler (BitmapImage::ImageOpenedEvent, image_opened, this);
+ old->RemoveHandler (BitmapImage::ImageFailedEvent, image_failed, this);
}
if (source && source->Is(Type::BITMAPIMAGE)) {
- ((BitmapImage *)source)->AddHandler (BitmapImage::DownloadProgressEvent, download_progress, this);
- ((BitmapImage *)source)->AddHandler (BitmapImage::ImageOpenedEvent, image_opened, this);
- ((BitmapImage *)source)->AddHandler (BitmapImage::ImageFailedEvent, image_failed, this);
+ source->AddHandler (BitmapImage::DownloadProgressEvent, download_progress, this);
+ source->AddHandler (BitmapImage::ImageOpenedEvent, image_opened, this);
+ source->AddHandler (BitmapImage::ImageFailedEvent, image_failed, this);
}
}
diff --git a/src/brush.h b/src/brush.h
index 47d84c2..4aa92fc 100644
--- a/src/brush.h
+++ b/src/brush.h
@@ -309,10 +309,12 @@ private:
void DownloadProgress ();
void ImageOpened ();
void ImageFailed ();
+ void SourcePixelDataChanged ();
static void download_progress (EventObject *sender, EventArgs *calldata, gpointer closure);
static void image_opened (EventObject *sender, EventArgs *calldata, gpointer closure);
static void image_failed (EventObject *sender, EventArgs *calldata, gpointer closure);
+ static void source_pixel_data_changed (EventObject *sender, EventArgs *calldata, gpointer closure);
protected:
virtual ~ImageBrush ();
diff --git a/src/cbinding.cpp b/src/cbinding.cpp
index 3ca37af..f53dc8b 100644
--- a/src/cbinding.cpp
+++ b/src/cbinding.cpp
@@ -535,6 +535,17 @@ bitmap_source_new (void)
}
+gpointer
+bitmap_source_get_bitmap_data (BitmapSource *instance)
+{
+ if (instance == NULL)
+ // Need to find a proper way to get the default value for the specified type and return that if instance is NULL.
+ return (gpointer) 0;
+
+ return instance->GetBitmapData ();
+}
+
+
void
bitmap_source_invalidate (BitmapSource *instance)
{
diff --git a/src/cbinding.h b/src/cbinding.h
index a6344ff..c645984 100644
--- a/src/cbinding.h
+++ b/src/cbinding.h
@@ -941,6 +941,9 @@ void bitmap_image_pixmap_complete (BitmapImage *instance);
BitmapSource *bitmap_source_new (void);
/* @GeneratePInvoke */
+gpointer bitmap_source_get_bitmap_data (BitmapSource *instance);
+
+/* @GeneratePInvoke */
void bitmap_source_invalidate (BitmapSource *instance);
/* @GeneratePInvoke */
diff --git a/src/media.cpp b/src/media.cpp
index 0e253f2..58f7718 100644
--- a/src/media.cpp
+++ b/src/media.cpp
@@ -244,6 +244,10 @@ Image::Image ()
Image::~Image ()
{
+ BitmapSource *source = (BitmapSource*)GetSource ();
+
+ if (source)
+ source->RemoveHandler (BitmapSource::PixelDataChangedEvent, source_pixel_data_changed, this);
}
void
@@ -271,6 +275,14 @@ Image::image_failed (EventObject *sender, EventArgs *calldata, gpointer closure)
}
void
+Image::source_pixel_data_changed (EventObject *sender, EventArgs *calldata, gpointer closure)
+{
+ Image *media = (Image *) closure;
+
+ media->SourcePixelDataChanged ();
+}
+
+void
Image::DownloadProgress ()
{
BitmapImage *source = (BitmapImage *) GetSource ();
@@ -282,11 +294,13 @@ Image::DownloadProgress ()
void
Image::ImageOpened ()
{
- BitmapImage *source = (BitmapImage *) GetSource ();
+ BitmapSource *source = (BitmapSource*)GetSource ();
- source->RemoveHandler (BitmapImage::DownloadProgressEvent, download_progress, this);
- source->RemoveHandler (BitmapImage::ImageOpenedEvent, image_opened, this);
- source->RemoveHandler (BitmapImage::ImageFailedEvent, image_failed, this);
+ if (source->Is (Type::BITMAPIMAGE)) {
+ source->RemoveHandler (BitmapImage::DownloadProgressEvent, download_progress, this);
+ source->RemoveHandler (BitmapImage::ImageOpenedEvent, image_opened, this);
+ source->RemoveHandler (BitmapImage::ImageFailedEvent, image_failed, this);
+ }
InvalidateArrange ();
InvalidateMeasure ();
@@ -297,11 +311,14 @@ Image::ImageOpened ()
void
Image::ImageFailed ()
{
- BitmapImage *source = (BitmapImage *) GetSource ();
+ BitmapSource *source = (BitmapSource*) GetSource ();
- source->RemoveHandler (BitmapImage::DownloadProgressEvent, download_progress, this);
- source->RemoveHandler (BitmapImage::ImageOpenedEvent, image_opened, this);
- source->RemoveHandler (BitmapImage::ImageFailedEvent, image_failed, this);
+ if (source->Is (Type::BITMAPIMAGE)) {
+ source->RemoveHandler (BitmapImage::DownloadProgressEvent, download_progress, this);
+ source->RemoveHandler (BitmapImage::ImageOpenedEvent, image_opened, this);
+ source->RemoveHandler (BitmapImage::ImageFailedEvent, image_failed, this);
+ }
+ source->RemoveHandler (BitmapSource::PixelDataChangedEvent, source_pixel_data_changed, this);
InvalidateArrange ();
InvalidateMeasure ();
@@ -312,6 +329,12 @@ Image::ImageFailed ()
}
void
+Image::SourcePixelDataChanged ()
+{
+ Invalidate();
+}
+
+void
Image::SetSourceInternal (Downloader *downloader, char *PartName)
{
BitmapImage *source = (BitmapImage *) GetSource ();
@@ -533,15 +556,22 @@ Image::OnPropertyChanged (PropertyChangedEventArgs *args, MoonError *error)
ImageSource *source = args->GetNewValue () ? args->GetNewValue ()->AsImageSource () : NULL;
ImageSource *old = args->GetOldValue () ? args->GetOldValue ()->AsImageSource () : NULL;
+ if (old && old->Is(Type::BITMAPSOURCE)) {
+ old->RemoveHandler (BitmapSource::PixelDataChangedEvent, source_pixel_data_changed, this);
+ }
+ if (source && source->Is(Type::BITMAPSOURCE)) {
+ source->AddHandler (BitmapSource::PixelDataChangedEvent, source_pixel_data_changed, this);
+ }
+
if (old && old->Is(Type::BITMAPIMAGE)) {
- ((BitmapImage *)old)->RemoveHandler (BitmapImage::DownloadProgressEvent, download_progress, this);
- ((BitmapImage *)old)->RemoveHandler (BitmapImage::ImageOpenedEvent, image_opened, this);
- ((BitmapImage *)old)->RemoveHandler (BitmapImage::ImageFailedEvent, image_failed, this);
+ old->RemoveHandler (BitmapImage::DownloadProgressEvent, download_progress, this);
+ old->RemoveHandler (BitmapImage::ImageOpenedEvent, image_opened, this);
+ old->RemoveHandler (BitmapImage::ImageFailedEvent, image_failed, this);
}
if (source && source->Is(Type::BITMAPIMAGE)) {
- ((BitmapImage *)source)->AddHandler (BitmapImage::DownloadProgressEvent, download_progress, this);
- ((BitmapImage *)source)->AddHandler (BitmapImage::ImageOpenedEvent, image_opened, this);
- ((BitmapImage *)source)->AddHandler (BitmapImage::ImageFailedEvent, image_failed, this);
+ source->AddHandler (BitmapImage::DownloadProgressEvent, download_progress, this);
+ source->AddHandler (BitmapImage::ImageOpenedEvent, image_opened, this);
+ source->AddHandler (BitmapImage::ImageFailedEvent, image_failed, this);
if (((BitmapImage *)source)->GetPixelWidth () > 0 && ((BitmapImage *)source)->GetPixelHeight () > 0) {
ImageOpened ();
diff --git a/src/media.h b/src/media.h
index f9565aa..17dfad0 100644
--- a/src/media.h
+++ b/src/media.h
@@ -176,10 +176,12 @@ class Image : public MediaBase {
void DownloadProgress ();
void ImageOpened ();
void ImageFailed ();
+ void SourcePixelDataChanged ();
static void download_progress (EventObject *sender, EventArgs *calldata, gpointer closure);
static void image_opened (EventObject *sender, EventArgs *calldata, gpointer closure);
static void image_failed (EventObject *sender, EventArgs *calldata, gpointer closure);
+ static void source_pixel_data_changed (EventObject *sender, EventArgs *calldata, gpointer closure);
protected:
virtual ~Image ();
diff --git a/src/type-generated.cpp b/src/type-generated.cpp
index fd94e81..b25589c 100644
--- a/src/type-generated.cpp
+++ b/src/type-generated.cpp
@@ -75,9 +75,10 @@
#include "yuv-converter.h"
const int Accessibility::PerformActionEvent = 1;
-const int BitmapImage::DownloadProgressEvent = 1;
-const int BitmapImage::ImageFailedEvent = 2;
-const int BitmapImage::ImageOpenedEvent = 3;
+const int BitmapImage::DownloadProgressEvent = 2;
+const int BitmapImage::ImageFailedEvent = 3;
+const int BitmapImage::ImageOpenedEvent = 4;
+const int BitmapSource::PixelDataChangedEvent = 1;
const int Clock::CompletedEvent = 1;
const int Clock::CurrentStateInvalidatedEvent = 2;
const int Clock::CurrentTimeInvalidatedEvent = 3;
@@ -172,6 +173,7 @@ const int UIElement::UnloadedEvent = 17;
const char *ACCESSIBILITY_Events [] = { "PerformAction", NULL };
const char *BITMAPIMAGE_Events [] = { "DownloadProgress", "ImageFailed", "ImageOpened", NULL };
+const char *BITMAPSOURCE_Events [] = { "PixelDataChanged", NULL };
const Type::Kind BOOL_Interfaces[] = { Type::ICOMPARABLE, Type::ICOMPARABLE_BOOL, Type::ICONVERTIBLE, Type::IEQUATABLE_BOOL };
const Type::Kind CHAR_Interfaces[] = { Type::ICOMPARABLE, Type::ICOMPARABLE_CHAR, Type::ICONVERTIBLE, Type::IEQUATABLE_CHAR };
const char *CLOCK_Events [] = { "Completed", "CurrentStateInvalidated", "CurrentTimeInvalidated", NULL };
@@ -232,8 +234,8 @@ Types::RegisterNativeTypes ()
types [(int) Type::BACKEASE] = new Type (Type::BACKEASE, Type::EASINGFUNCTIONBASE, false, false, "BackEase", 0, 1, NULL, 0, NULL, true, (create_inst_func *) back_ease_new, NULL);
types [(int) Type::BEGINSTORYBOARD] = new Type (Type::BEGINSTORYBOARD, Type::TRIGGERACTION, false, false, "BeginStoryboard", 0, 1, NULL, 0, NULL, true, (create_inst_func *) begin_storyboard_new, "Storyboard");
types [(int) Type::BEZIERSEGMENT] = new Type (Type::BEZIERSEGMENT, Type::PATHSEGMENT, false, false, "BezierSegment", 0, 1, NULL, 0, NULL, true, (create_inst_func *) bezier_segment_new, NULL);
- types [(int) Type::BITMAPIMAGE] = new Type (Type::BITMAPIMAGE, Type::BITMAPSOURCE, false, false, "BitmapImage", 3, 4, BITMAPIMAGE_Events, 0, NULL, true, (create_inst_func *) bitmap_image_new, NULL);
- types [(int) Type::BITMAPSOURCE] = new Type (Type::BITMAPSOURCE, Type::IMAGESOURCE, false, false, "BitmapSource", 0, 1, NULL, 0, NULL, true, (create_inst_func *) bitmap_source_new, NULL);
+ types [(int) Type::BITMAPIMAGE] = new Type (Type::BITMAPIMAGE, Type::BITMAPSOURCE, false, false, "BitmapImage", 3, 5, BITMAPIMAGE_Events, 0, NULL, true, (create_inst_func *) bitmap_image_new, NULL);
+ types [(int) Type::BITMAPSOURCE] = new Type (Type::BITMAPSOURCE, Type::IMAGESOURCE, false, false, "BitmapSource", 1, 2, BITMAPSOURCE_Events, 0, NULL, true, (create_inst_func *) bitmap_source_new, NULL);
types [(int) Type::BOOL] = new Type (Type::BOOL, Type::OBJECT, true, false, "bool", 0, 0, NULL, 4, BOOL_Interfaces, true, NULL, NULL);
types [(int) Type::BORDER] = new Type (Type::BORDER, Type::FRAMEWORKELEMENT, false, false, "Border", 0, 20, NULL, 0, NULL, true, (create_inst_func *) border_new, "Child");
types [(int) Type::BOUNCEEASE] = new Type (Type::BOUNCEEASE, Type::EASINGFUNCTIONBASE, false, false, "BounceEase", 0, 1, NULL, 0, NULL, true, (create_inst_func *) bounce_ease_new, NULL);
@@ -522,7 +524,7 @@ Types::RegisterNativeTypes ()
types [(int) Type::VIDEOBRUSH] = new Type (Type::VIDEOBRUSH, Type::TILEBRUSH, false, false, "VideoBrush", 0, 1, NULL, 0, NULL, true, (create_inst_func *) video_brush_new, NULL);
types [(int) Type::VIDEOSTREAM] = new Type (Type::VIDEOSTREAM, Type::IMEDIASTREAM, false, false, "VideoStream", 0, 2, NULL, 0, NULL, false, NULL, NULL);
types [(int) Type::VISUALBRUSH] = new Type (Type::VISUALBRUSH, Type::TILEBRUSH, false, false, "VisualBrush", 0, 1, NULL, 0, NULL, true, (create_inst_func *) visual_brush_new, NULL);
- types [(int) Type::WRITEABLEBITMAP] = new Type (Type::WRITEABLEBITMAP, Type::BITMAPSOURCE, false, false, "WriteableBitmap", 0, 1, NULL, 0, NULL, true, (create_inst_func *) writeable_bitmap_new, NULL);
+ types [(int) Type::WRITEABLEBITMAP] = new Type (Type::WRITEABLEBITMAP, Type::BITMAPSOURCE, false, false, "WriteableBitmap", 0, 2, NULL, 0, NULL, true, (create_inst_func *) writeable_bitmap_new, NULL);
types [(int) Type::XMLLANGUAGE] = new Type (Type::XMLLANGUAGE, Type::OBJECT, false, false, "System.Windows.Markup.XmlLanguage", 0, 0, NULL, 0, NULL, false, NULL, NULL);
types [(int) Type::YUVCONVERTER] = new Type (Type::YUVCONVERTER, Type::IIMAGECONVERTER, false, false, "YUVConverter", 0, 1, NULL, 0, NULL, false, NULL, NULL);
types [(int) Type::LASTTYPE] = new Type (Type::LASTTYPE, Type::INVALID, false, false, NULL, 0, 0, NULL, 0, NULL, false, NULL, NULL);