// Jordi Mas i Hernandez (jordi@ximian.com)
//
// Copyright (C) 2003 Ximian, Inc. http://www.ximian.com
-// Copyright (C) 2004 Novell, Inc. http://www.novell.com
+// Copyright (C) 2004,2006 Novell, Inc. http://www.novell.com
//
// Permission is hereby granted, free of charge, to any person obtaining
// a copy of this software and associated documentation files (the
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
-using System;
using System.Drawing.Drawing2D;
using System.Runtime.InteropServices;
+using System.Security.Permissions;
namespace System.Drawing
{
nativeRegion = native;
}
-
+ [MonoTODO ("GdipCreateRegionPath is not implemented in libgdiplus")]
public Region (GraphicsPath path)
- {
+ {
+ if (path == null)
+ throw new ArgumentNullException ("path");
Status status = GDIPlus.GdipCreateRegionPath (path.NativeObject, out nativeRegion);
GDIPlus.CheckStatus (status);
}
GDIPlus.CheckStatus (status);
}
- [MonoTODO]
- public Region (RegionData region_data)
+ [MonoTODO ("GdipCreateRegionRgnData is not implemented in libgdiplus")]
+ public Region (RegionData rgnData)
{
+ if (rgnData == null)
+ throw new ArgumentNullException ("rgnData");
+ //Status status = GDIPlus.GdipCreateRegionRgnData (rgnData.Data, out nativeRegion);
+ //GDIPlus.CheckStatus (status);
throw new NotImplementedException ();
}
public void Union (GraphicsPath path)
{
- Status status = GDIPlus.GdipCombineRegionPath (nativeRegion, path.NativeObject, CombineMode.Union);
+ if (path == null)
+ throw new ArgumentNullException ("path");
+ Status status = GDIPlus.GdipCombineRegionPath (nativeRegion, path.NativeObject, CombineMode.Union);
GDIPlus.CheckStatus (status);
}
public void Union (Region region)
{
+ if (region == null)
+ throw new ArgumentNullException ("region");
Status status = GDIPlus.GdipCombineRegionRegion (nativeRegion, region.NativeObject, CombineMode.Union);
GDIPlus.CheckStatus (status);
}
//
public void Intersect (GraphicsPath path)
{
+ if (path == null)
+ throw new ArgumentNullException ("path");
Status status = GDIPlus.GdipCombineRegionPath (nativeRegion, path.NativeObject, CombineMode.Intersect);
GDIPlus.CheckStatus (status);
}
public void Intersect (Region region)
{
+ if (region == null)
+ throw new ArgumentNullException ("region");
Status status = GDIPlus.GdipCombineRegionRegion (nativeRegion, region.NativeObject, CombineMode.Intersect);
GDIPlus.CheckStatus (status);
}
//
public void Complement (GraphicsPath path)
{
+ if (path == null)
+ throw new ArgumentNullException ("path");
Status status = GDIPlus.GdipCombineRegionPath (nativeRegion, path.NativeObject, CombineMode.Complement);
GDIPlus.CheckStatus (status);
}
public void Complement (Region region)
{
+ if (region == null)
+ throw new ArgumentNullException ("region");
Status status = GDIPlus.GdipCombineRegionRegion (nativeRegion, region.NativeObject, CombineMode.Complement);
GDIPlus.CheckStatus (status);
}
//
public void Exclude (GraphicsPath path)
{
+ if (path == null)
+ throw new ArgumentNullException ("path");
Status status = GDIPlus.GdipCombineRegionPath (nativeRegion, path.NativeObject, CombineMode.Exclude);
GDIPlus.CheckStatus (status);
}
public void Exclude (Region region)
{
+ if (region == null)
+ throw new ArgumentNullException ("region");
Status status = GDIPlus.GdipCombineRegionRegion (nativeRegion, region.NativeObject, CombineMode.Exclude);
GDIPlus.CheckStatus (status);
}
//
public void Xor (GraphicsPath path)
{
+ if (path == null)
+ throw new ArgumentNullException ("path");
Status status = GDIPlus.GdipCombineRegionPath (nativeRegion, path.NativeObject, CombineMode.Xor);
GDIPlus.CheckStatus (status);
}
public void Xor (Region region)
{
+ if (region == null)
+ throw new ArgumentNullException ("region");
Status status = GDIPlus.GdipCombineRegionRegion (nativeRegion, region.NativeObject, CombineMode.Xor);
GDIPlus.CheckStatus (status);
}
//
public RectangleF GetBounds (Graphics graphics)
{
+ if (graphics == null)
+ throw new ArgumentNullException ("graphics");
+
RectangleF rect = new Rectangle();
Status status = GDIPlus.GdipGetRegionBounds (nativeRegion, graphics.NativeObject, ref rect);
//
public bool IsVisible (int x, int y, Graphics g)
{
+ IntPtr ptr = (g == null) ? IntPtr.Zero : g.NativeObject;
bool result;
- Status status = GDIPlus.GdipIsVisibleRegionPointI (nativeRegion, x, y, g.NativeObject, out result);
+ Status status = GDIPlus.GdipIsVisibleRegionPointI (nativeRegion, x, y, ptr, out result);
GDIPlus.CheckStatus (status);
return result;
public bool IsVisible (int x, int y, int width, int height, Graphics g)
{
+ IntPtr ptr = (g == null) ? IntPtr.Zero : g.NativeObject;
bool result;
Status status = GDIPlus.GdipIsVisibleRegionRectI (nativeRegion, x, y,
- width, height, g.NativeObject, out result);
+ width, height, ptr, out result);
GDIPlus.CheckStatus (status);
public bool IsVisible (Point point, Graphics g)
{
+ IntPtr ptr = (g == null) ? IntPtr.Zero : g.NativeObject;
bool result;
Status status = GDIPlus.GdipIsVisibleRegionPointI (nativeRegion, point.X, point.Y,
- g.NativeObject, out result);
+ ptr, out result);
GDIPlus.CheckStatus (status);
public bool IsVisible (PointF point, Graphics g)
{
+ IntPtr ptr = (g == null) ? IntPtr.Zero : g.NativeObject;
bool result;
Status status = GDIPlus.GdipIsVisibleRegionPoint (nativeRegion, point.X, point.Y,
- g.NativeObject, out result);
+ ptr, out result);
GDIPlus.CheckStatus (status);
public bool IsVisible (Rectangle rect, Graphics g)
{
+ IntPtr ptr = (g == null) ? IntPtr.Zero : g.NativeObject;
bool result;
Status status = GDIPlus.GdipIsVisibleRegionRectI (nativeRegion, rect.X, rect.Y,
- rect.Width, rect.Height, g.NativeObject, out result);
+ rect.Width, rect.Height, ptr, out result);
GDIPlus.CheckStatus (status);
public bool IsVisible (RectangleF rect, Graphics g)
{
- bool result;
+ IntPtr ptr = (g == null) ? IntPtr.Zero : g.NativeObject;
+ bool result;
Status status = GDIPlus.GdipIsVisibleRegionRect (nativeRegion, rect.X, rect.Y,
- rect.Width, rect.Height, g.NativeObject, out result);
+ rect.Width, rect.Height, ptr, out result);
GDIPlus.CheckStatus (status);
public bool IsVisible (float x, float y, Graphics g)
{
+ IntPtr ptr = (g == null) ? IntPtr.Zero : g.NativeObject;
bool result;
- Status status = GDIPlus.GdipIsVisibleRegionPoint (nativeRegion, x, y, g.NativeObject, out result);
+ Status status = GDIPlus.GdipIsVisibleRegionPoint (nativeRegion, x, y, ptr, out result);
GDIPlus.CheckStatus (status);
return result;
public bool IsVisible (float x, float y, float width, float height, Graphics g)
{
+ IntPtr ptr = (g == null) ? IntPtr.Zero : g.NativeObject;
bool result;
- Status status = GDIPlus.GdipIsVisibleRegionRect (nativeRegion, x, y, width, height, g.NativeObject, out result);
+ Status status = GDIPlus.GdipIsVisibleRegionRect (nativeRegion, x, y, width, height, ptr, out result);
GDIPlus.CheckStatus (status);
return result;
public bool IsEmpty(Graphics g)
{
+ if (g == null)
+ throw new ArgumentNullException ("g");
+
bool result;
Status status = GDIPlus.GdipIsEmptyRegion (nativeRegion, g.NativeObject, out result);
public bool IsInfinite(Graphics g)
{
+ if (g == null)
+ throw new ArgumentNullException ("g");
+
bool result;
Status status = GDIPlus.GdipIsInfiniteRegion (nativeRegion, g.NativeObject, out result);
public bool Equals(Region region, Graphics g)
{
+ if (region == null)
+ throw new ArgumentNullException ("region");
+ if (g == null)
+ throw new ArgumentNullException ("g");
+
bool result;
Status status = GDIPlus.GdipIsEqualRegion (nativeRegion, region.NativeObject,
return result;
}
-
- public static Region FromHrgn(IntPtr hrgn)
+ [SecurityPermission (SecurityAction.Demand, UnmanagedCode = true)]
+ public static Region FromHrgn (IntPtr hrgn)
{
+ if (hrgn == IntPtr.Zero)
+ throw new ArgumentException ("hrgn");
return new Region (hrgn);
}
public IntPtr GetHrgn(Graphics g)
{
+ if (g == null)
+ throw new ArgumentNullException ("g");
return nativeRegion;
}
public RectangleF[] GetRegionScans(Matrix matrix)
{
- int cnt;
+ if (matrix == null)
+ throw new ArgumentNullException ("matrix");
+
+ int cnt;
Status status = GDIPlus.GdipGetRegionScansCount (nativeRegion, out cnt, matrix.NativeObject);
GDIPlus.CheckStatus (status);
public void Transform(Matrix matrix)
{
+ if (matrix == null)
+ throw new ArgumentNullException ("matrix");
+
Status status = GDIPlus.GdipTransformRegion (nativeRegion, matrix.NativeObject);
GDIPlus.CheckStatus (status);
}
}
}
#if NET_2_0
+ [MonoTODO]
+ [SecurityPermission (SecurityAction.Demand, UnmanagedCode = true)]
public void ReleaseHrgn (IntPtr regionHandle) \r
{
if (regionHandle == IntPtr.Zero)
- throw new ArgumentNullException ("regionHandle is a null reference ");\r
-
+ throw new ArgumentNullException ("regionHandle");\r
}
#endif
-
}
}