Xamarin Public Jenkins (auto-signing) 536cd135cc Imported Upstream version 5.4.0.167
Former-commit-id: 5624ac747d633e885131e8349322922b6a59baaa
2017-08-21 15:34:15 +00:00

854 lines
30 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//-------------------------------------------------------------
// <copyright company=Microsoft Corporation>
// Copyright © Microsoft Corporation. All Rights Reserved.
// </copyright>
//-------------------------------------------------------------
// @owner=alexgor, deliant
//=================================================================
// File: ChartRenderingEngine.cs
//
// Namespace: System.Web.UI.WebControls[Windows.Forms].Charting
//
// Classes: ChartRenderingEngine, ValueA, PointA, RectangleA,
// ColorA
//
// Purpose: ChartRenderingEngine class provides a common interface
// to the graphics rendering and animation engines.
// Internally it uses SvgChartGraphics, FlashGraphics or
// GdiGraphics classes depending on the ActiveRenderingType
// property settings.
//
// ValueA, PointA, RectangleA and ColorA classes are
// used to store data about animated values like colors
// position or rectangles. They store starting value/time,
// end value/time, repeat flags and other settings. These
// clases are used with animation engines.
//
// Reviwed: AG - Jul 15, 2003
// AG - Microsoft 16, 2007
//
//===================================================================
#region Used namespaces
using System;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Text;
using System.Drawing.Imaging;
using System.ComponentModel;
using System.Collections;
using System.Xml;
using System.IO;
using System.Diagnostics.CodeAnalysis;
#if Microsoft_CONTROL
using System.Windows.Forms.DataVisualization.Charting.Utilities;
using System.Windows.Forms.DataVisualization.Charting.Borders3D;
#else
using System.Web.UI.DataVisualization.Charting.Utilities;
using System.Web.UI.DataVisualization.Charting.Borders3D;
#endif
#endregion
#if Microsoft_CONTROL
namespace System.Windows.Forms.DataVisualization.Charting
#else
namespace System.Web.UI.DataVisualization.Charting
#endif
{
#region Enumerations
/// <summary>
/// Specify Rendering AxisName
/// </summary>
internal enum RenderingType
{
/// <summary>
/// GDI+ AxisName
/// </summary>
[SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Gdi")]
Gdi,
/// <summary>
/// SVG AxisName
/// </summary>
[SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Svg")]
Svg,
}
#endregion // Enumerations
/// <summary>
/// The ChartGraphics class provides a common interface to the
/// graphics rendering.
/// </summary>
#if ASPPERM_35
[AspNetHostingPermission(System.Security.Permissions.SecurityAction.InheritanceDemand, Level = AspNetHostingPermissionLevel.Minimal)]
[AspNetHostingPermission(System.Security.Permissions.SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.Minimal)]
#endif
public partial class ChartGraphics
{
#region Fields
// Current rendering type
private RenderingType _activeRenderingType = RenderingType.Gdi;
// GDI+ rendering engine
private GdiGraphics _gdiGraphics = new GdiGraphics();
// Document title used for SVG rendering
//private string documentTitle = string.Empty;
// True if text should be clipped
internal bool IsTextClipped = false;
#endregion // Fields
#region Drawing Methods
/// <summary>
/// Draws a line connecting two PointF structures.
/// </summary>
/// <param name="pen">Pen object that determines the color, width, and style of the line.</param>
/// <param name="pt1">PointF structure that represents the first point to connect.</param>
/// <param name="pt2">PointF structure that represents the second point to connect.</param>
internal void DrawLine(
Pen pen,
PointF pt1,
PointF pt2
)
{
RenderingObject.DrawLine( pen, pt1, pt2 );
}
/// <summary>
/// Draws a line connecting the two points specified by coordinate pairs.
/// </summary>
/// <param name="pen">Pen object that determines the color, width, and style of the line.</param>
/// <param name="x1">x-coordinate of the first point.</param>
/// <param name="y1">y-coordinate of the first point.</param>
/// <param name="x2">x-coordinate of the second point.</param>
/// <param name="y2">y-coordinate of the second point.</param>
internal void DrawLine(
Pen pen,
float x1,
float y1,
float x2,
float y2
)
{
RenderingObject.DrawLine( pen, x1, y1, x2, y2 );
}
/// <summary>
/// Draws the specified portion of the specified Image object at the specified location and with the specified size.
/// </summary>
/// <param name="image">Image object to draw.</param>
/// <param name="destRect">Rectangle structure that specifies the location and size of the drawn image. The image is scaled to fit the rectangle.</param>
/// <param name="srcX">x-coordinate of the upper-left corner of the portion of the source image to draw.</param>
/// <param name="srcY">y-coordinate of the upper-left corner of the portion of the source image to draw.</param>
/// <param name="srcWidth">Width of the portion of the source image to draw.</param>
/// <param name="srcHeight">Height of the portion of the source image to draw.</param>
/// <param name="srcUnit">Member of the GraphicsUnit enumeration that specifies the units of measure used to determine the source rectangle.</param>
/// <param name="imageAttr">ImageAttributes object that specifies recoloring and gamma information for the image object.</param>
internal void DrawImage(
System.Drawing.Image image,
Rectangle destRect,
int srcX,
int srcY,
int srcWidth,
int srcHeight,
GraphicsUnit srcUnit,
ImageAttributes imageAttr
)
{
RenderingObject.DrawImage(
image,
destRect,
srcX,
srcY,
srcWidth,
srcHeight,
srcUnit,
imageAttr
);
}
/// <summary>
/// Draws an ellipse defined by a bounding rectangle specified by
/// a pair of coordinates, a height, and a width.
/// </summary>
/// <param name="pen">Pen object that determines the color, width, and style of the ellipse.</param>
/// <param name="x">x-coordinate of the upper-left corner of the bounding rectangle that defines the ellipse.</param>
/// <param name="y">y-coordinate of the upper-left corner of the bounding rectangle that defines the ellipse.</param>
/// <param name="width">Width of the bounding rectangle that defines the ellipse.</param>
/// <param name="height">Height of the bounding rectangle that defines the ellipse.</param>
internal void DrawEllipse(
Pen pen,
float x,
float y,
float width,
float height
)
{
RenderingObject.DrawEllipse( pen, x, y, width, height );
}
/// <summary>
/// Draws a cardinal spline through a specified array of PointF structures
/// using a specified tension. The drawing begins offset from
/// the beginning of the array.
/// </summary>
/// <param name="pen">Pen object that determines the color, width, and height of the curve.</param>
/// <param name="points">Array of PointF structures that define the spline.</param>
/// <param name="offset">Offset from the first element in the array of the points parameter to the starting point in the curve.</param>
/// <param name="numberOfSegments">Number of segments after the starting point to include in the curve.</param>
/// <param name="tension">Value greater than or equal to 0.0F that specifies the tension of the curve.</param>
internal void DrawCurve(
Pen pen,
PointF[] points,
int offset,
int numberOfSegments,
float tension
)
{
ChartGraphics chartGraphics = this as ChartGraphics;
if (chartGraphics == null || !chartGraphics.IsMetafile)
{
RenderingObject.DrawCurve(pen, points, offset, numberOfSegments, tension);
}
else
{
// Special handling required for the metafiles. We cannot pass large array of
// points because they will be persisted inside EMF file and cause exponential
// increase in emf file size. Draw curve method uses additional 2, 3 or 4 points
// depending on which segement is drawn.
PointF[] pointsExact = null;
if (offset == 0 && numberOfSegments == points.Length - 1)
{
// In case the array contains the minimum required number of points
// to draw segments - just call the curve drawing method
RenderingObject.DrawCurve(pen, points, offset, numberOfSegments, tension);
}
else
{
if (offset == 0 && numberOfSegments < points.Length - 1)
{
// Segment is at the beginning of the array with more points following
pointsExact = new PointF[numberOfSegments + 2];
for (int index = 0; index < numberOfSegments + 2; index++)
{
pointsExact[index] = points[index];
}
}
else if (offset > 0 && (offset + numberOfSegments) == points.Length - 1)
{
// Segment is at the end of the array with more points prior to it
pointsExact = new PointF[numberOfSegments + 2];
for (int index = 0; index < numberOfSegments + 2; index++)
{
pointsExact[index] = points[offset + index - 1];
}
offset = 1;
}
else if (offset > 0 && (offset + numberOfSegments) < points.Length - 1)
{
// Segment in the middle of the array with points prior and following it
pointsExact = new PointF[numberOfSegments + 3];
for (int index = 0; index < numberOfSegments + 3; index++)
{
pointsExact[index] = points[offset + index - 1];
}
offset = 1;
}
// Render the curve using minimum number of required points in the array
RenderingObject.DrawCurve(pen, pointsExact, offset, numberOfSegments, tension);
}
}
}
/// <summary>
/// Draws a rectangle specified by a coordinate pair, a width, and a height.
/// </summary>
/// <param name="pen">Pen object that determines the color, width, and style of the rectangle.</param>
/// <param name="x">x-coordinate of the upper-left corner of the rectangle to draw.</param>
/// <param name="y">y-coordinate of the upper-left corner of the rectangle to draw.</param>
/// <param name="width">Width of the rectangle to draw.</param>
/// <param name="height">Height of the rectangle to draw.</param>
internal void DrawRectangle(
Pen pen,
int x,
int y,
int width,
int height
)
{
RenderingObject.DrawRectangle( pen, x, y, width, height );
}
/// <summary>
/// Draws a polygon defined by an array of PointF structures.
/// </summary>
/// <param name="pen">Pen object that determines the color, width, and style of the polygon.</param>
/// <param name="points">Array of PointF structures that represent the vertices of the polygon.</param>
internal void DrawPolygon(
Pen pen,
PointF[] points
)
{
RenderingObject.DrawPolygon( pen, points );
}
/// <summary>
/// Draws the specified text string in the specified rectangle with the specified Brush and Font objects using the formatting properties of the specified StringFormat object.
/// </summary>
/// <param name="s">String to draw.</param>
/// <param name="font">Font object that defines the text format of the string.</param>
/// <param name="brush">Brush object that determines the color and texture of the drawn text.</param>
/// <param name="layoutRectangle">RectangleF structure that specifies the location of the drawn text.</param>
/// <param name="format">StringFormat object that specifies formatting properties, such as line spacing and alignment, that are applied to the drawn text.</param>
internal void DrawString(
string s,
Font font,
Brush brush,
RectangleF layoutRectangle,
StringFormat format
)
{
using (StringFormat fmt = (StringFormat)format.Clone())
{
if ( IsRightToLeft )
fmt.FormatFlags |= StringFormatFlags.DirectionRightToLeft;
if (!IsTextClipped && (fmt.FormatFlags & StringFormatFlags.NoClip) != StringFormatFlags.NoClip)
fmt.FormatFlags |= StringFormatFlags.NoClip;
RenderingObject.DrawString(s, font, brush, layoutRectangle, fmt);
}
}
/// <summary>
/// Draws the specified text string at the specified location with the specified Brush and Font objects using the formatting properties of the specified StringFormat object.
/// </summary>
/// <param name="s">String to draw.</param>
/// <param name="font">Font object that defines the text format of the string.</param>
/// <param name="brush">Brush object that determines the color and texture of the drawn text.</param>
/// <param name="point">PointF structure that specifies the upper-left corner of the drawn text.</param>
/// <param name="format">StringFormat object that specifies formatting properties, such as line spacing and alignment, that are applied to the drawn text.</param>
internal void DrawString(
string s,
Font font,
Brush brush,
PointF point,
StringFormat format
)
{
if (IsRightToLeft)
{
using (StringFormat fmt = (StringFormat)format.Clone())
{
fmt.FormatFlags |= StringFormatFlags.DirectionRightToLeft;
if (fmt.Alignment == StringAlignment.Far)
{
fmt.Alignment = StringAlignment.Near;
}
else if (fmt.Alignment == StringAlignment.Near)
{
fmt.Alignment = StringAlignment.Far;
}
RenderingObject.DrawString(s, font, brush, point, fmt);
}
}
else
RenderingObject.DrawString(s, font, brush, point, format);
}
/// <summary>
/// Draws the specified portion of the specified Image object at the specified location and with the specified size.
/// </summary>
/// <param name="image">Image object to draw.</param>
/// <param name="destRect">Rectangle structure that specifies the location and size of the drawn image. The image is scaled to fit the rectangle.</param>
/// <param name="srcX">x-coordinate of the upper-left corner of the portion of the source image to draw.</param>
/// <param name="srcY">y-coordinate of the upper-left corner of the portion of the source image to draw.</param>
/// <param name="srcWidth">Width of the portion of the source image to draw.</param>
/// <param name="srcHeight">Height of the portion of the source image to draw.</param>
/// <param name="srcUnit">Member of the GraphicsUnit enumeration that specifies the units of measure used to determine the source rectangle.</param>
/// <param name="imageAttrs">ImageAttributes object that specifies recoloring and gamma information for the image object.</param>
internal void DrawImage(
System.Drawing.Image image,
Rectangle destRect,
float srcX,
float srcY,
float srcWidth,
float srcHeight,
GraphicsUnit srcUnit,
ImageAttributes imageAttrs
)
{
RenderingObject.DrawImage( image, destRect, srcX, srcY, srcWidth, srcHeight, srcUnit, imageAttrs );
}
/// <summary>
/// Draws a rectangle specified by a coordinate pair, a width, and a height.
/// </summary>
/// <param name="pen">A Pen object that determines the color, width, and style of the rectangle.</param>
/// <param name="x">The x-coordinate of the upper-left corner of the rectangle to draw.</param>
/// <param name="y">The y-coordinate of the upper-left corner of the rectangle to draw.</param>
/// <param name="width">The width of the rectangle to draw.</param>
/// <param name="height">The height of the rectangle to draw.</param>
internal void DrawRectangle(
Pen pen,
float x,
float y,
float width,
float height
)
{
RenderingObject.DrawRectangle( pen, x, y, width, height );
}
/// <summary>
/// Draws a GraphicsPath object.
/// </summary>
/// <param name="pen">Pen object that determines the color, width, and style of the path.</param>
/// <param name="path">GraphicsPath object to draw.</param>
internal void DrawPath(
Pen pen,
GraphicsPath path
)
{
// Check if path is empty
if(path == null ||
path.PointCount == 0)
{
return;
}
RenderingObject.DrawPath( pen, path );
}
/// <summary>
/// Draws a pie shape defined by an ellipse specified by a coordinate pair, a width, and a height and two radial lines.
/// </summary>
/// <param name="pen">Pen object that determines the color, width, and style of the pie shape.</param>
/// <param name="x">x-coordinate of the upper-left corner of the bounding rectangle that defines the ellipse from which the pie shape comes.</param>
/// <param name="y">y-coordinate of the upper-left corner of the bounding rectangle that defines the ellipse from which the pie shape comes.</param>
/// <param name="width">Width of the bounding rectangle that defines the ellipse from which the pie shape comes.</param>
/// <param name="height">Height of the bounding rectangle that defines the ellipse from which the pie shape comes.</param>
/// <param name="startAngle">Angle measured in degrees clockwise from the x-axis to the first side of the pie shape.</param>
/// <param name="sweepAngle">Angle measured in degrees clockwise from the startAngle parameter to the second side of the pie shape.</param>
internal void DrawPie(
Pen pen,
float x,
float y,
float width,
float height,
float startAngle,
float sweepAngle
)
{
RenderingObject.DrawPie( pen, x, y, width, height, startAngle, sweepAngle );
}
/// <summary>
/// Draws an ellipse defined by a bounding RectangleF.
/// </summary>
/// <param name="pen">Pen object that determines the color, width, and style of the ellipse.</param>
/// <param name="rect">RectangleF structure that defines the boundaries of the ellipse.</param>
internal void DrawEllipse(
Pen pen,
RectangleF rect
)
{
RenderingObject.DrawEllipse( pen, rect );
}
/// <summary>
/// Draws a series of line segments that connect an array of PointF structures.
/// </summary>
/// <param name="pen">Pen object that determines the color, width, and style of the line segments.</param>
/// <param name="points">Array of PointF structures that represent the points to connect.</param>
internal void DrawLines(
Pen pen,
PointF[] points
)
{
RenderingObject.DrawLines( pen, points );
}
#endregion // Drawing Methods
#region Filling Methods
/// <summary>
/// Fills the interior of an ellipse defined by a bounding rectangle
/// specified by a RectangleF structure.
/// </summary>
/// <param name="brush">Brush object that determines the characteristics of the fill.</param>
/// <param name="rect">RectangleF structure that represents the bounding rectangle that defines the ellipse.</param>
internal void FillEllipse(
Brush brush,
RectangleF rect
)
{
RenderingObject.FillEllipse( brush, rect );
}
/// <summary>
/// Fills the interior of a GraphicsPath object.
/// </summary>
/// <param name="brush">Brush object that determines the characteristics of the fill.</param>
/// <param name="path">GraphicsPath object that represents the path to fill.</param>
internal void FillPath(
Brush brush,
GraphicsPath path
)
{
// Check if path is empty
if(path == null ||
path.PointCount == 0)
{
return;
}
RenderingObject.FillPath( brush, path );
}
/// <summary>
/// Fills the interior of a Region object.
/// </summary>
/// <param name="brush">Brush object that determines the characteristics of the fill.</param>
/// <param name="region">Region object that represents the area to fill.</param>
internal void FillRegion(
Brush brush,
Region region
)
{
RenderingObject.FillRegion( brush, region );
}
/// <summary>
/// Fills the interior of a rectangle specified by a RectangleF structure.
/// </summary>
/// <param name="brush">Brush object that determines the characteristics of the fill.</param>
/// <param name="rect">RectangleF structure that represents the rectangle to fill.</param>
internal void FillRectangle(
Brush brush,
RectangleF rect
)
{
RenderingObject.FillRectangle( brush, rect );
}
/// <summary>
/// Fills the interior of a rectangle specified by a pair of coordinates, a width, and a height.
/// </summary>
/// <param name="brush">Brush object that determines the characteristics of the fill.</param>
/// <param name="x">x-coordinate of the upper-left corner of the rectangle to fill.</param>
/// <param name="y">y-coordinate of the upper-left corner of the rectangle to fill.</param>
/// <param name="width">Width of the rectangle to fill.</param>
/// <param name="height">Height of the rectangle to fill.</param>
internal void FillRectangle(
Brush brush,
float x,
float y,
float width,
float height
)
{
RenderingObject.FillRectangle( brush, x, y, width, height );
}
/// <summary>
/// Fills the interior of a polygon defined by an array of points specified by PointF structures .
/// </summary>
/// <param name="brush">Brush object that determines the characteristics of the fill.</param>
/// <param name="points">Array of PointF structures that represent the vertices of the polygon to fill.</param>
internal void FillPolygon(
Brush brush,
PointF[] points
)
{
RenderingObject.FillPolygon( brush, points );
}
/// <summary>
/// Fills the interior of a pie section defined by an ellipse
/// specified by a pair of coordinates, a width, and a height
/// and two radial lines.
/// </summary>
/// <param name="brush">Brush object that determines the characteristics of the fill.</param>
/// <param name="x">x-coordinate of the upper-left corner of the bounding rectangle that defines the ellipse from which the pie section comes.</param>
/// <param name="y">y-coordinate of the upper-left corner of the bounding rectangle that defines the ellipse from which the pie section comes.</param>
/// <param name="width">Width of the bounding rectangle that defines the ellipse from which the pie section comes.</param>
/// <param name="height">Height of the bounding rectangle that defines the ellipse from which the pie section comes.</param>
/// <param name="startAngle">Angle in degrees measured clockwise from the x-axis to the first side of the pie section.</param>
/// <param name="sweepAngle">Angle in degrees measured clockwise from the startAngle parameter to the second side of the pie section.</param>
internal void FillPie(
Brush brush,
float x,
float y,
float width,
float height,
float startAngle,
float sweepAngle
)
{
RenderingObject.FillPie( brush, x, y, width, height, startAngle, sweepAngle );
}
#endregion // Filling Methods
#region Other Methods
/// <summary>
/// This method starts SVG Selection mode
/// </summary>
/// <param name="url">The location of the referenced object, expressed as a URI reference.</param>
/// <param name="title">Title which could be used for tooltips.</param>
internal void StartHotRegion( string url, string title )
{
RenderingObject.BeginSelection( url, title );
}
/// <summary>
/// This method starts SVG Selection mode
/// </summary>
/// <param name="point">Data Point which properties are used for SVG selection</param>
internal void StartHotRegion(DataPoint point)
{
StartHotRegion( point, false );
}
/// <summary>
/// This method starts SVG Selection mode
/// </summary>
/// <param name="point">Data Point which properties are used for SVG selection</param>
/// <param name="labelRegion">Indicates if point label region is processed.</param>
internal void StartHotRegion(DataPoint point, bool labelRegion)
{
string hRef = string.Empty;
string tooltip = (labelRegion) ? point.LabelToolTip : point.ToolTip;
#if !Microsoft_CONTROL
hRef = (labelRegion) ? point.LabelUrl : point.Url;
#endif
if(hRef.Length > 0 || tooltip.Length > 0)
{
RenderingObject.BeginSelection(
point.ReplaceKeywords( hRef ),
point.ReplaceKeywords( tooltip ) );
}
}
/// <summary>
/// This method stops SVG Selection mode
/// </summary>
internal void EndHotRegion()
{
RenderingObject.EndSelection();
}
/// <summary>
/// Measures the specified string when drawn with the specified
/// Font object and formatted with the specified StringFormat object.
/// </summary>
/// <param name="text">String to measure.</param>
/// <param name="font">Font object defines the text format of the string.</param>
/// <param name="layoutArea">SizeF structure that specifies the maximum layout area for the text.</param>
/// <param name="stringFormat">StringFormat object that represents formatting information, such as line spacing, for the string.</param>
/// <returns>This method returns a SizeF structure that represents the size, in pixels, of the string specified in the text parameter as drawn with the font parameter and the stringFormat parameter.</returns>
internal SizeF MeasureString(
string text,
Font font,
SizeF layoutArea,
StringFormat stringFormat
)
{
return RenderingObject.MeasureString( text, font, layoutArea, stringFormat );
}
/// <summary>
/// Measures the specified string when drawn with the specified
/// Font object and formatted with the specified StringFormat object.
/// </summary>
/// <param name="text">String to measure.</param>
/// <param name="font">Font object defines the text format of the string.</param>
/// <returns>This method returns a SizeF structure that represents the size, in pixels, of the string specified in the text parameter as drawn with the font parameter and the stringFormat parameter.</returns>
internal SizeF MeasureString(
string text,
Font font
)
{
return RenderingObject.MeasureString( text, font );
}
/// <summary>
/// Saves the current state of this Graphics object and identifies the saved state with a GraphicsState object.
/// </summary>
/// <returns>This method returns a GraphicsState object that represents the saved state of this Graphics object.</returns>
internal GraphicsState Save()
{
return RenderingObject.Save();
}
/// <summary>
/// Restores the state of this Graphics object to the state represented by a GraphicsState object.
/// </summary>
/// <param name="gstate">GraphicsState object that represents the state to which to restore this Graphics object.</param>
internal void Restore(
GraphicsState gstate
)
{
RenderingObject.Restore( gstate );
}
/// <summary>
/// Resets the clip region of this Graphics object to an infinite region.
/// </summary>
internal void ResetClip()
{
RenderingObject.ResetClip();
}
/// <summary>
/// Sets the clipping region of this Graphics object to the rectangle specified by a RectangleF structure.
/// </summary>
/// <param name="rect">RectangleF structure that represents the new clip region.</param>
internal void SetClipAbs(RectangleF rect)
{
RenderingObject.SetClip( rect );
}
/// <summary>
/// Prepends the specified translation to the transformation matrix of this Graphics object.
/// </summary>
/// <param name="dx">x component of the translation.</param>
/// <param name="dy">y component of the translation.</param>
internal void TranslateTransform(
float dx,
float dy
)
{
RenderingObject.TranslateTransform( dx, dy );
}
#endregion // Other Methods
#region Properties
/// <summary>
/// Gets current rendering object.
/// </summary>
internal IChartRenderingEngine RenderingObject
{
get
{
return _gdiGraphics;
}
}
/// <summary>
/// Gets the active rendering type.
/// </summary>
internal RenderingType ActiveRenderingType
{
get
{
return _activeRenderingType;
}
}
/// <summary>
/// Gets or sets the rendering mode for text associated with this Graphics object.
/// </summary>
internal TextRenderingHint TextRenderingHint
{
get
{
return RenderingObject.TextRenderingHint;
}
set
{
RenderingObject.TextRenderingHint = value;
}
}
/// <summary>
/// Gets or sets the world transformation for this Graphics object.
/// </summary>
internal Matrix Transform
{
get
{
return RenderingObject.Transform;
}
set
{
RenderingObject.Transform = value;
}
}
/// <summary>
/// Gets or sets the rendering quality for this Graphics object.
/// </summary>
internal SmoothingMode SmoothingMode
{
get
{
return RenderingObject.SmoothingMode;
}
set
{
RenderingObject.SmoothingMode = value;
}
}
/// <summary>
/// Gets or sets a Region object that limits the drawing region of this Graphics object.
/// </summary>
internal Region Clip
{
get
{
return RenderingObject.Clip;
}
set
{
RenderingObject.Clip = value;
}
}
/// <summary>
/// Gets a value indicating whether the clipping region of this Graphics object is empty.
/// </summary>
internal bool IsClipEmpty {
get
{
return RenderingObject.IsClipEmpty;
}
}
/// <summary>
/// Gets or sets the reference to the Graphics object.
/// </summary>
public Graphics Graphics
{
get
{
return RenderingObject.Graphics;
}
set
{
RenderingObject.Graphics = value;
}
}
#endregion // Properties
}
}