summaryrefslogtreecommitdiff
path: root/docs/aggpas/agg2d.html
diff options
context:
space:
mode:
authorGraeme Geldenhuys <graeme@mastermaths.co.za>2012-03-19 11:54:19 +0200
committerGraeme Geldenhuys <graeme@mastermaths.co.za>2012-03-19 11:54:19 +0200
commit88f1fc9acda900eecfcfc884a60e4958145e3fc0 (patch)
treecfc913d8884e80d7fd93b27a983623bc5c65ff9e /docs/aggpas/agg2d.html
parentfaacd945eeee1f95aa5e7597cdd3dbc90c67abf6 (diff)
downloadfpGUI-88f1fc9acda900eecfcfc884a60e4958145e3fc0.tar.xz
agg docs: adds the Agg2D canvas class documentation in HTML format.
This is very complete docs, and well worth a read from top to bottom. I'll convert this later to fpdoc XML format.
Diffstat (limited to 'docs/aggpas/agg2d.html')
-rw-r--r--docs/aggpas/agg2d.html11248
1 files changed, 11248 insertions, 0 deletions
diff --git a/docs/aggpas/agg2d.html b/docs/aggpas/agg2d.html
new file mode 100644
index 00000000..6fe21a5b
--- /dev/null
+++ b/docs/aggpas/agg2d.html
@@ -0,0 +1,11248 @@
+<html>
+<head>
+<title>AggPas - Delphi VCL API</title>
+<meta http-equiv="Content-Type" content="text/html;" charset="UTF-8">
+<STYLE type="text/css">
+ A {color: #228B22; }
+ .pas-source {font-family: "Courier New", Courier, monospace; font-size: 9pt; background-color:#FFFACD; }
+ .pas-comment {font-style: italic; font-weight: normal; text-decoration: none; color: #000080; }
+ .pas-kwd {font-style: normal; font-weight: bold; text-decoration: none; }
+ .pas-str {font-style: normal; font-weight: normal; text-decoration: none; color: #800080; }
+ .pas-num {font-style: normal; font-weight: normal; text-decoration: none; color: #800000; }
+ .pas-float {font-style: normal; font-weight: normal; text-decoration: none; color: #800000; }
+ .pas-hex {font-style: normal; font-weight: normal; text-decoration: none; color: #800000; }
+ .pas-preproc {font-style: normal; font-weight: normal; text-decoration: none; color: #008000; }
+ .pas-asm {font-style: italic; font-weight: normal; text-decoration: none; }
+ .pas-err {font-style: normal; font-weight: normal; text-decoration: none; color: #FF0000; }
+
+ .doc-toc {font-family: "Courier New", Courier, monospace; font-size: 8pt; }
+ .doc-src {font-family: "Courier New", Courier, monospace; font-size: 9pt; }
+ .doc-h1 {font-family: Arial, Helvetica, sans-serif; font-weight: bold; font-size:10pt; background-color:#E5F200; }
+ .doc-qt {font-family: "Courier New", Courier, monospace; }
+ .doc-note {background-color:#FAEBD7; padding:8; }
+ .doc-text-less {font-family: Arial, Helvetica, sans-serif; font-size: 7pt; }
+ .doc-text-normal {font-family: Arial, Helvetica, sans-serif; font-size: 9pt; }
+ .doc-text-more {font-family: Arial, Helvetica, sans-serif; font-size: 12pt; }
+ .doc-down-ex {font-family: Arial, Helvetica, sans-serif; font-size: 6pt; }
+ .doc-sect {font-family: Arial, Helvetica, sans-serif; font-weight: bold; font-size:10pt; }
+ .doc-param {font-family: "Courier New", Courier, monospace; font-size: 9pt; background-color:#E0FFFF; }
+ .doc-enums {font-family: "Courier New", Courier, monospace; font-size: 9pt; background-color:#FAEBD7; }
+ .doc-res-ok {font-weight: bold; color:#008000; }
+ .doc-res-fail {font-weight: bold; color:#FF0000; }
+ .doc-enum {color:#FF8C00; }
+ .doc-type {color:#1E90FF; }
+ .doc-func {color:#228B22; }
+ .doc-id {color:#0000CD; }
+ .doc-foot-links {font-family: Arial, Helvetica, sans-serif; font-size: 7pt; }
+ .doc-foot-copy {font-family: Arial, Helvetica, sans-serif; font-size: 9pt; }
+
+ .doc-table-normal {
+ font-family: Arial, Helvetica, sans-serif; font-size: 8pt;
+ border-style : solid solid solid solid;
+ border-width : thin thin thin thin; }
+ .doc-table-code {font-family: "Courier New", Courier, monospace; font-size: 8pt; }
+
+ .cell-text-less {font-family: Arial, Helvetica, sans-serif; font-size: 7pt; text-align:justify; vertical-align:top; }
+ .cell-text-normal {font-family: Arial, Helvetica, sans-serif; font-size: 9pt; text-align:justify; vertical-align:top; }
+ .cell-text-more {font-family: Arial, Helvetica, sans-serif; font-size: 12pt; text-align:justify; vertical-align:top; }
+
+</STYLE>
+<script language="JavaScript">
+function MM_findObj(n, d) { //v3.0
+ var p,i,x; if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
+ d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
+ if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
+ for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document); return x;
+}
+function MM_swapImage() { //v3.0
+ var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
+ if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
+}
+function MM_swapImgRestore() { //v3.0
+ var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
+}
+
+function MM_preloadImages() { //v3.0
+ var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
+ var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
+ if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
+}
+</script>
+</head>
+<body bgcolor="#FFFFFF" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" >
+<table border="0" cellpadding="0" cellspacing="0" width="640" height="5" align="center">
+ <tr><td></td></tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+ <tr>
+ <td colspan="5"><img name="top" src="agg2d_files/aggpas_logo.jpg" height="165" width="640" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="30" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="470" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="32" height="30" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="120" height="10" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+ <font class="doc-text-more">
+ Welcome to the <font class="doc-type">TAgg2D</font> Documentation Tutorial !
+ </font><p>&nbsp;<br>
+
+ <font class="doc-type">TAgg2D</font> is a simple API for AggPas vector graphics library.
+ This API was originally written and published by Maxim Shemanarev &copy; 2005 - 2006 for
+ the C/C++ version of the library.<p>
+
+ This documentation tries to provide a complete resource about vector graphics in relation to the
+ AggPas open source library. Each API command (over 100) is documented, almost all have also a commented example. Some
+ examples can be downloaded directly, and for the others the drawing routine can be copy and pasted
+ into your project, to see it in action.<p>
+
+ Where apropriate, I link directly to the articles on <a href = "http://www.antigrain.com">www.antigrain.com</a> site containing
+ excellent information on some of the topics.<p>
+
+ If you are a vector graphics beginner, you can read this documentation from top to bottom.
+ Try out all of the examples, and at the end, you should understand all important concepts.
+ On top of that, if you read this document carefully, you will also discover how to do
+ some nice little tricks (like reflections).<p>
+
+ Enjoy, Milano.
+ </td>
+
+ <td><img src="agg2d_files/spacer.gif" width="32" height="1" border="0"></td>
+ <td align="left" valign="top">
+ <font class="doc-down-ex">
+ <a href="agg2d_files/tagg2d_example01.png">
+ <img src="agg2d_files/tagg2d_example01.jpg" width="120" height="117" border="0">
+ </a><p>
+ Example download:<br>
+ <a href="agg2d_files/tagg2d_example01.zip">tagg2d_example01.zip</a><br>
+ <a href="agg2d_files/tagg2d_example01.exe">tagg2d_example01.exe</a>
+ </font>
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+
+ </tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="30" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font> - Functionality & Capabilities
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+ <ul type="disc">
+ <li>Rendering of arbitrary polygons with Anti-Aliasing and Subpixel Accuracy</li>
+ <li>Affine matrix transformations (Rotate, Scale, Skew, Translate, Viewport)</li>
+ <li>User to World and vice versa coordinates conversions</li>
+ <li>Clipping to the rectangular area</li>
+ <li>Works with <font class="doc-enum">pf24bit</font> & <font class="doc-enum">pf32bit</font> <font class="doc-type">TBitmap</font> surfaces</li><p>
+
+ <li>Master Alpha Transparency</li>
+ <li>Master Anti Aliasing Gamma correction</li>
+ <li>Master Composition Mode (all SVG compositing modes)</li><p>
+
+ <li>Supports Linear & Radial gradients from two or three colors</li>
+ <li>Lines can be None, Solid color or Gradients (linear or radial)</li>
+ <li>Line caps (Butt, Square, Round)</li>
+ <li>Line joins (Miter, Round, Bevel)</li>
+ <li>Fill can be None, Solid color or Gradients (linear or radial)</li>
+ <li>Fill rules (NonZero /Winding/ and EvenOdd)</li><p>
+
+ <li>Basic shapes (Line, Triangle, Rectangle, Rounded Rectangle, Ellipse, Arc, Star, Bezier Cubic or
+ Quadratic curves, Polygon, Polyline)</li><p>
+
+ <li>Path rendering compliant with SVG specification</li>
+ <li>Path commands (Move, Line, Arc, QuadricCurve, CubicCurve, Close)</li>
+ <li>Path can consist of more subpaths</li><p>
+
+ <li>Text font glyphs source engine is Windows TrueType API or FreeType 2</li>
+ <li>Automatic caching of text glyphs</li>
+ <li>Support for raster text font cache (fast)</li>
+ <li>Font properties (Normal, Bold, Italic, Rotation)</li>
+ <li>Text alignment on X & Y axis around origin point</li>
+ <li>Support for text hinting (grid fitting)</li><p>
+
+ <li>Image rendering (any <font class="doc-type">TBitmap</font>) with arbitrary transformations</li>
+ <li>Image resampling filters (NN, Bilinear, Hanning, Hermite, Quadric, Bicubic, Catrom, Spline, Blackman)</li>
+ <li>Image rendering to the custom path</li>
+ </ul>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font> - Introduction to the Application Programming Interface (API)
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+ To use <font class="doc-type">TAgg2D</font> vector graphics engine in your software project you just:
+
+ <ol>
+ <li>Create <font class="doc-type">TAgg2D</font> instance.</li><p>
+ <li>Attach instance of <font class="doc-type">TAgg2D</font> to <font class="doc-enum">pf24bit</font> or <font class="doc-enum">pf32bit</font> <font class="doc-type">TBitmap</font> (or descendant).</li><p>
+ <li>Perform drawing routine (issue API drawing commands).</li><p>
+ </ol>
+
+ Library setup note:<p>
+
+ <div class="doc-note">
+ <font class="doc-type">TAgg2D</font> is located in the file <font class="doc-qt">"Agg2D.pas"</font> which
+ is in <font class="doc-qt">"../src"</font> subdirectory. So the whole setup of AggPas library is to add
+ a search path to <font class="doc-qt">"../AggPas24-rm3/src"</font> and to include AggPas with
+ <font class="doc-qt">"uses Agg2D"</font> clause.
+ </div><p>
+
+ It is recommended to create each instance of <font class="doc-type">TAgg2D</font> just once for the whole life
+ of <font class="doc-type">TForm</font>. More instances of <font class="doc-type">TAgg2D</font> can coexist simultaneously and they can be
+ attached to the same <font class="doc-type">TBitmap</font> surface at the same time. It's sence is in having a different
+ states of vector engine in one place (each instance can have a different state of coordinates
+ transformations for example, or anything that can be set up). <font class="doc-type">TAgg2D</font> is not thread safe, so
+ each thread should own it's own vector engine.<p>
+
+ After attachement (to the <font class="doc-type">TBitmap</font>) the state of the vector engine becomes default. It's due to achieving
+ the same starting conditions for the drawing routine. So you have to set up the line color, fill rule, transformations,
+ clipping, etc.<p>
+
+ Since <font class="doc-type">TAgg2D</font> renders on fly directly to the physical surface of <font class="doc-type">TBitmap</font>, the drawing routine
+ (after attachement) can be performed anytime it is required. It can be outside the OnPaint method
+ and also outside WM_PAINT windows message. But as well it can be also a part of those painting methods.<p>
+
+ Here is an introductory example of drawing with <font class="doc-type">TAgg2D</font>:
+
+<blockquote><font class="pas-source"><pre class="pas-source">
+ <span class="pas-kwd">if</span> VG.Attach(Image1.Picture.Bitmap ) <span class="pas-kwd">then</span>
+ <span class="pas-kwd">begin</span>
+ VG.ClearAll (<span class="pas-num">255</span> ,<span class="pas-num">255</span> ,<span class="pas-num">255</span> );
+ VG.LineWidth(<span class="pas-num">10</span> );
+ VG.LineColor(<span class="pas-hex">$32</span> ,<span class="pas-hex">$cd</span> ,<span class="pas-hex">$32</span> );
+ VG.FillColor(<span class="pas-hex">$ff</span> ,<span class="pas-hex">$d7</span> ,<span class="pas-hex">$00</span> );
+
+ VG.Star(<span class="pas-num">100</span> ,<span class="pas-num">100</span> ,<span class="pas-num">30</span> ,<span class="pas-num">70</span> ,<span class="pas-num">55</span> ,<span class="pas-num">5</span> );
+
+ <span class="pas-kwd">end</span>;
+
+</pre></font></blockquote>
+
+ Which results in:<p>
+
+ <blockquote><font class="doc-down-ex">
+ <a href="agg2d_files/tagg2d_example02.png">
+ <img src="agg2d_files/tagg2d_example02.jpg" width="120" height="124" border="0">
+ </a><p>
+ Example download:<br>
+ <a href="agg2d_files/tagg2d_example02.zip">tagg2d_example02.zip</a><br>
+ <a href="agg2d_files/tagg2d_example02.exe">tagg2d_example02.exe</a>
+ </font></blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Overview -->
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font> API Overview
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Vector Graphics Engine Initialization</font>
+ <blockquote class="doc-toc">
+ <font class="doc-func"><a href="#Attach">Attach</a></font>
+ (<font class="doc-id">bitmap</font>,
+ <font class="doc-id">flip_y</font>
+ ) : <font class="doc-type">boolean</font><p>
+
+ <font class="doc-func"><a href="#ClearAll">ClearAll</a></font>
+ (<font class="doc-id">c</font> )<br>
+ <font class="doc-func"><a href="#ClearAll">ClearAll</a></font>
+ (<font class="doc-id">r</font>,
+ <font class="doc-id">g</font>,
+ <font class="doc-id">b</font>,
+ <font class="doc-id">a</font> )
+
+ </blockquote>
+
+ <font class="doc-sect">Master Rendering Properties</font>
+ <blockquote class="doc-toc">
+ <font class="doc-func"><a href="#BlendMode">BlendMode</a></font>
+ (<font class="doc-id">m</font> )<br>
+ <font class="doc-func"><a href="#BlendMode2">BlendMode</a></font>
+ : <font class="doc-type">TAggBlendMode [<a href="#TAggBlendMode">*</a>]</font><p>
+
+ <font class="doc-func"><a href="#MasterAlpha">MasterAlpha</a></font>
+ (<font class="doc-id">a</font> )<br>
+ <font class="doc-func"><a href="#MasterAlpha2">MasterAlpha</a></font>
+ : <font class="doc-type">double</font><p>
+
+ <font class="doc-func"><a href="#AntiAliasGamma">AntiAliasGamma</a></font>
+ (<font class="doc-id">g</font> )<br>
+ <font class="doc-func"><a href="#AntiAliasGamma2">AntiAliasGamma</a></font>
+ : <font class="doc-type">double</font><p>
+
+ <font class="doc-func"><a href="#NoFill">NoFill</a></font><br>
+ <font class="doc-func"><a href="#NoLine">NoLine</a></font><p>
+
+ <font class="doc-func"><a href="#FillColor">FillColor</a></font>
+ (<font class="doc-id">c</font> )<br>
+ <font class="doc-func"><a href="#FillColor">FillColor</a></font>
+ (<font class="doc-id">r</font>,
+ <font class="doc-id">g</font>,
+ <font class="doc-id">b</font>,
+ <font class="doc-id">a</font> )<br>
+ <font class="doc-func"><a href="#FillColor2">FillColor</a></font>
+ : <font class="doc-type">TAggColor [<a href="#TAggColor">*</a>]</font><p>
+
+ <font class="doc-func"><a href="#LineColor">LineColor</a></font>
+ (<font class="doc-id">c</font> )<br>
+ <font class="doc-func"><a href="#LineColor">LineColor</a></font>
+ (<font class="doc-id">r</font>,
+ <font class="doc-id">g</font>,
+ <font class="doc-id">b</font>,
+ <font class="doc-id">a</font> )<br>
+ <font class="doc-func"><a href="#LineColor2">LineColor</a></font>
+ : <font class="doc-type">TAggColor [<a href="#TAggColor">*</a>]</font><p>
+
+ <font class="doc-func"><a href="#FillLinearGradient">FillLinearGradient</a></font>
+ (<font class="doc-id">x1</font>,
+ <font class="doc-id">y1</font>,
+ <font class="doc-id">x2</font>,
+ <font class="doc-id">y2</font>,
+ <font class="doc-id">c1</font>,
+ <font class="doc-id">c2</font>,
+ <font class="doc-id">profile</font> )<br>
+ <font class="doc-func"><a href="#LineLinearGradient">LineLinearGradient</a></font>
+ (<font class="doc-id">x1</font>,
+ <font class="doc-id">y1</font>,
+ <font class="doc-id">x2</font>,
+ <font class="doc-id">y2</font>,
+ <font class="doc-id">c1</font>,
+ <font class="doc-id">c2</font>,
+ <font class="doc-id">profile</font> )<p>
+
+ <font class="doc-func"><a href="#FillRadialGradient">FillRadialGradient</a></font>
+ (<font class="doc-id">x</font>,
+ <font class="doc-id">y</font>,
+ <font class="doc-id">r</font>,
+ <font class="doc-id">c1</font>,
+ <font class="doc-id">c2</font>,
+ <font class="doc-id">profile</font> )<br>
+ <font class="doc-func"><a href="#LineRadialGradient">LineRadialGradient</a></font>
+ (<font class="doc-id">x</font>,
+ <font class="doc-id">y</font>,
+ <font class="doc-id">r</font>,
+ <font class="doc-id">c1</font>,
+ <font class="doc-id">c2</font>,
+ <font class="doc-id">profile</font> )<p>
+
+ <font class="doc-func"><a href="#FillRadialGradient2">FillRadialGradient</a></font>
+ (<font class="doc-id">x</font>,
+ <font class="doc-id">y</font>,
+ <font class="doc-id">r</font>,
+ <font class="doc-id">c1</font>,
+ <font class="doc-id">c2</font>,
+ <font class="doc-id">c3</font> )<br>
+ <font class="doc-func"><a href="#LineRadialGradient2">LineRadialGradient</a></font>
+ (<font class="doc-id">x</font>,
+ <font class="doc-id">y</font>,
+ <font class="doc-id">r</font>,
+ <font class="doc-id">c1</font>,
+ <font class="doc-id">c2</font>,
+ <font class="doc-id">c3</font> )<p>
+
+ <font class="doc-func"><a href="#FillRadialGradient3">FillRadialGradient</a></font>
+ (<font class="doc-id">x</font>,
+ <font class="doc-id">y</font>,
+ <font class="doc-id">r</font> )<br>
+ <font class="doc-func"><a href="#LineRadialGradient3">LineRadialGradient</a></font>
+ (<font class="doc-id">x</font>,
+ <font class="doc-id">y</font>,
+ <font class="doc-id">r</font> )<p>
+
+ <font class="doc-func"><a href="#LineWidth">LineWidth</a></font>
+ (<font class="doc-id">w</font> )<br>
+ <font class="doc-func"><a href="#LineWidth2">LineWidth</a></font>
+ : <font class="doc-type">double</font><p>
+
+ <font class="doc-func"><a href="#LineCap">LineCap</a></font>
+ (<font class="doc-id">cap</font> )<br>
+ <font class="doc-func"><a href="#LineCap2">LineCap</a></font>
+ : <font class="doc-type">TAggLineCap [<a href="#TAggLineCap">*</a>]</font><p>
+
+ <font class="doc-func"><a href="#LineJoin">LineJoin</a></font>
+ (<font class="doc-id">join</font> )<br>
+ <font class="doc-func"><a href="#LineJoin2">LineJoin</a></font>
+ : <font class="doc-type">TAggLineJoin [<a href="#TAggLineJoin">*</a>]</font><p>
+
+ <font class="doc-func"><a href="#FillEvenOdd">FillEvenOdd</a></font>
+ (<font class="doc-id">evenOddFlag</font> )<br>
+ <font class="doc-func"><a href="#FillEvenOdd2">FillEvenOdd</a></font>
+ : <font class="doc-type">boolean</font>
+
+ </blockquote>
+
+ <font class="doc-sect">Affine Transformations</font>
+ <blockquote class="doc-toc">
+ <font class="doc-func"><a href="#Transformations">Transformations</a></font>
+ : <font class="doc-type">TAggTransformations [<a href="#TAggTransformations">*</a>]</font><br>
+ <font class="doc-func"><a href="#Transformations2">Transformations</a></font>
+ (<font class="doc-id">tr</font> )<br>
+ <font class="doc-func"><a href="#ResetTransformations">ResetTransformations</a></font><p>
+
+ <font class="doc-func"><a href="#Affine">Affine</a></font>
+ (<font class="doc-id">tr</font> )<p>
+
+ <font class="doc-func"><a href="#Rotate">Rotate</a></font>
+ (<font class="doc-id">angle</font> )<br>
+ <font class="doc-func"><a href="#Scale">Scale</a></font>
+ (<font class="doc-id">sx</font>,
+ <font class="doc-id">sy</font> )<br>
+ <font class="doc-func"><a href="#Skew">Skew</a></font>
+ (<font class="doc-id">sx</font>,
+ <font class="doc-id">sy</font> )<br>
+ <font class="doc-func"><a href="#Translate">Translate</a></font>
+ (<font class="doc-id">x</font>,
+ <font class="doc-id">y</font> )<p>
+
+ <font class="doc-func"><a href="#Parallelogram">Parallelogram</a></font>
+ (<font class="doc-id">x1</font>,
+ <font class="doc-id">y1</font>,
+ <font class="doc-id">x2</font>,
+ <font class="doc-id">y2</font>,
+ <font class="doc-id">para</font> )<p>
+
+ <font class="doc-func"><a href="#Viewport">Viewport</a></font>
+ (<font class="doc-id">worldX1</font>,
+ <font class="doc-id">worldY1</font>,
+ <font class="doc-id">worldX2</font>,
+ <font class="doc-id">wordlY2</font>,
+ <font class="doc-id">screenX1</font>,
+ <font class="doc-id">screenY1</font>,
+ <font class="doc-id">screenX2</font>,
+ <font class="doc-id">screenY2</font>,
+ <font class="doc-id">opt</font> )
+
+ </blockquote>
+
+ <font class="doc-sect">Coordinates Conversions</font>
+ <blockquote class="doc-toc">
+ <font class="doc-func"><a href="#WorldToScreen">WorldToScreen</a></font>
+ (<font class="doc-id">x</font>,
+ <font class="doc-id">y</font> )<br>
+ <font class="doc-func"><a href="#ScreenToWorld">ScreenToWorld</a></font>
+ (<font class="doc-id">x</font>,
+ <font class="doc-id">y</font> )<br>
+ <font class="doc-func"><a href="#WorldToScreen2">WorldToScreen</a></font>
+ (<font class="doc-id">scalar</font> )
+ : <font class="doc-type">double</font><br>
+ <font class="doc-func"><a href="#ScreenToWorld2">ScreenToWorld</a></font>
+ (<font class="doc-id">x</font>,
+ <font class="doc-id">y</font> )<p>
+
+ <font class="doc-func"><a href="#AlignPoint">AlignPoint</a></font>
+ (<font class="doc-id">x</font>,
+ <font class="doc-id">y</font> )
+
+ </blockquote>
+
+ <font class="doc-sect">Clipping</font>
+ <blockquote class="doc-toc">
+ <font class="doc-func"><a href="#ClipBox">ClipBox</a></font>
+ (<font class="doc-id">x1</font>,
+ <font class="doc-id">y1</font>,
+ <font class="doc-id">x2</font>,
+ <font class="doc-id">y2</font> )<br>
+ <font class="doc-func"><a href="#ClipBox2">ClipBox</a></font>
+ : <font class="doc-type">TAggRectD [<a href="#TAggRectD">*</a>]</font><p>
+
+ <font class="doc-func"><a href="#ClearClipBox">ClearClipBox</a></font>
+ (<font class="doc-id">c</font> )<br>
+ <font class="doc-func"><a href="#ClearClipBox">ClearClipBox</a></font>
+ (<font class="doc-id">r</font>,
+ <font class="doc-id">g</font>,
+ <font class="doc-id">b</font>,
+ <font class="doc-id">a</font> )<p>
+
+ <font class="doc-func"><a href="#InBox">InBox</a></font>
+ (<font class="doc-id">worldX</font>,
+ <font class="doc-id">worldY</font> )
+ : <font class="doc-type">boolean</font>
+
+ </blockquote>
+
+ <font class="doc-sect">Basic Shapes</font>
+ <blockquote class="doc-toc">
+ <font class="doc-func"><a href="#Line">Line</a></font>
+ (<font class="doc-id">x1</font>,
+ <font class="doc-id">y1</font>,
+ <font class="doc-id">x2</font>,
+ <font class="doc-id">y2</font> )<br>
+ <font class="doc-func"><a href="#Triangle">Triangle</a></font>
+ (<font class="doc-id">x1</font>,
+ <font class="doc-id">y1</font>,
+ <font class="doc-id">x2</font>,
+ <font class="doc-id">y2</font>,
+ <font class="doc-id">x3</font>,
+ <font class="doc-id">y3</font> )<br>
+ <font class="doc-func"><a href="#Rectangle">Rectangle</a></font>
+ (<font class="doc-id">x1</font>,
+ <font class="doc-id">y1</font>,
+ <font class="doc-id">x2</font>,
+ <font class="doc-id">y2</font> )<p>
+
+ <font class="doc-func"><a href="#RoundedRect">RoundedRect</a></font>
+ (<font class="doc-id">x1</font>,
+ <font class="doc-id">y1</font>,
+ <font class="doc-id">x2</font>,
+ <font class="doc-id">y2</font>,
+ <font class="doc-id">r</font> )<br>
+ <font class="doc-func"><a href="#RoundedRect">RoundedRect</a></font>
+ (<font class="doc-id">x1</font>,
+ <font class="doc-id">y1</font>,
+ <font class="doc-id">x2</font>,
+ <font class="doc-id">y2</font>,
+ <font class="doc-id">rx</font>,
+ <font class="doc-id">ry</font> )<br>
+ <font class="doc-func"><a href="#RoundedRect">RoundedRect</a></font>
+ (<font class="doc-id">x1</font>,
+ <font class="doc-id">y1</font>,
+ <font class="doc-id">x2</font>,
+ <font class="doc-id">y2</font>,
+ <font class="doc-id">rxBottom</font>,
+ <font class="doc-id">ryBottom</font>,
+ <font class="doc-id">rxTop</font>,
+ <font class="doc-id">ryTop</font> )<p>
+
+ <font class="doc-func"><a href="#Ellipse">Ellipse</a></font>
+ (<font class="doc-id">cx</font>,
+ <font class="doc-id">cy</font>,
+ <font class="doc-id">rx</font>,
+ <font class="doc-id">ry</font> )<p>
+
+ <font class="doc-func"><a href="#Arc">Arc</a></font>
+ (<font class="doc-id">cx</font>,
+ <font class="doc-id">cy</font>,
+ <font class="doc-id">rx</font>,
+ <font class="doc-id">ry</font>,
+ <font class="doc-id">start</font>,
+ <font class="doc-id">sweep</font> )<br>
+ <font class="doc-func"><a href="#Star">Star</a></font>
+ (<font class="doc-id">cx</font>,
+ <font class="doc-id">cy</font>,
+ <font class="doc-id">r1</font>,
+ <font class="doc-id">r2</font>,
+ <font class="doc-id">startAngle</font>,
+ <font class="doc-id">numRays</font> )<p>
+
+ <font class="doc-func"><a href="#Curve">Curve</a></font>
+ (<font class="doc-id">x1</font>,
+ <font class="doc-id">y1</font>,
+ <font class="doc-id">x2</font>,
+ <font class="doc-id">y2</font>,
+ <font class="doc-id">x3</font>,
+ <font class="doc-id">y3</font> )<br>
+ <font class="doc-func"><a href="#Curve2">Curve</a></font>
+ (<font class="doc-id">x1</font>,
+ <font class="doc-id">y1</font>,
+ <font class="doc-id">x2</font>,
+ <font class="doc-id">y2</font>,
+ <font class="doc-id">x3</font>,
+ <font class="doc-id">y3</font>,
+ <font class="doc-id">x4</font>,
+ <font class="doc-id">y4</font> )<p>
+
+ <font class="doc-func"><a href="#Polygon">Polygon</a></font>
+ (<font class="doc-id">xy</font>,
+ <font class="doc-id">numPoints</font> )<br>
+ <font class="doc-func"><a href="#Polyline">Polyline</a></font>
+ (<font class="doc-id">xy</font>,
+ <font class="doc-id">numPoints</font> )
+
+ </blockquote>
+
+ <font class="doc-sect">Path Commands</font>
+ <blockquote class="doc-toc">
+ <font class="doc-func"><a href="#ResetPath">ResetPath</a></font><p>
+
+ <font class="doc-func"><a href="#MoveTo">MoveTo</a></font>
+ (<font class="doc-id">x</font>,
+ <font class="doc-id">y</font> )<br>
+ <font class="doc-func"><a href="#MoveRel">MoveRel</a></font>
+ (<font class="doc-id">dx</font>,
+ <font class="doc-id">dy</font> )<p>
+
+ <font class="doc-func"><a href="#LineTo">LineTo</a></font>
+ (<font class="doc-id">x</font>,
+ <font class="doc-id">y</font> )<br>
+ <font class="doc-func"><a href="#LineRel">LineRel</a></font>
+ (<font class="doc-id">dx</font>,
+ <font class="doc-id">dy</font> )<p>
+
+ <font class="doc-func"><a href="#HorLineTo">HorLineTo</a></font>
+ (<font class="doc-id">x</font> )<br>
+ <font class="doc-func"><a href="#HorLineRel">HorLineRel</a></font>
+ (<font class="doc-id">dx</font> )<p>
+
+ <font class="doc-func"><a href="#VerLineTo">VerLineTo</a></font>
+ (<font class="doc-id">y</font> )<br>
+ <font class="doc-func"><a href="#VerLineRel">VerLineRel</a></font>
+ (<font class="doc-id">dy</font> )<p>
+
+ <font class="doc-func"><a href="#ArcTo">ArcTo</a></font>
+ (<font class="doc-id">rx</font>,
+ <font class="doc-id">ry</font>,
+ <font class="doc-id">angle</font>,
+ <font class="doc-id">largeArcFlag</font>,
+ <font class="doc-id">sweepFlag</font>,
+ <font class="doc-id">x</font>,
+ <font class="doc-id">y</font> )<br>
+ <font class="doc-func"><a href="#ArcRel">ArcRel</a></font>
+ (<font class="doc-id">rx</font>,
+ <font class="doc-id">ry</font>,
+ <font class="doc-id">angle</font>,
+ <font class="doc-id">largeArcFlag</font>,
+ <font class="doc-id">sweepFlag</font>,
+ <font class="doc-id">dx</font>,
+ <font class="doc-id">dy</font> )<p>
+
+ <font class="doc-func"><a href="#QuadricCurveTo">QuadricCurveTo</a></font>
+ (<font class="doc-id">xCtrl</font>,
+ <font class="doc-id">yCtrl</font>,
+ <font class="doc-id">xTo</font>,
+ <font class="doc-id">yTo</font> )<br>
+ <font class="doc-func"><a href="#QuadricCurveRel">QuadricCurveRel</a></font>
+ (<font class="doc-id">dxCtrl</font>,
+ <font class="doc-id">dyCtrl</font>,
+ <font class="doc-id">dxTo</font>,
+ <font class="doc-id">dyTo</font> )<br>
+ <font class="doc-func"><a href="#QuadricCurveTo2">QuadricCurveTo</a></font>
+ (<font class="doc-id">xTo</font>,
+ <font class="doc-id">yTo</font> )<br>
+ <font class="doc-func"><a href="#QuadricCurveRel2">QuadricCurveRel</a></font>
+ (<font class="doc-id">dxTo</font>,
+ <font class="doc-id">dyTo</font> )<p>
+
+ <font class="doc-func"><a href="#CubicCurveTo">CubicCurveTo</a></font>
+ (<font class="doc-id">xCtrl1</font>,
+ <font class="doc-id">yCtrl1</font>,
+ <font class="doc-id">xCtrl2</font>,
+ <font class="doc-id">yCtrl2</font>,
+ <font class="doc-id">xTo</font>,
+ <font class="doc-id">yTo</font> )<br>
+ <font class="doc-func"><a href="#CubicCurveRel">CubicCurveRel</a></font>
+ (<font class="doc-id">dxCtrl1</font>,
+ <font class="doc-id">dyCtrl1</font>,
+ <font class="doc-id">dxCtrl2</font>,
+ <font class="doc-id">dyCtrl2</font>,
+ <font class="doc-id">dxTo</font>,
+ <font class="doc-id">dyTo</font> )<br>
+ <font class="doc-func"><a href="#CubicCurveTo2">CubicCurveTo</a></font>
+ (<font class="doc-id">xCtrl2</font>,
+ <font class="doc-id">yCtrl2</font>,
+ <font class="doc-id">xTo</font>,
+ <font class="doc-id">yTo</font> )<br>
+ <font class="doc-func"><a href="#CubicCurveRel2">CubicCurveRel</a></font>
+ (<font class="doc-id">dxCtrl2</font>,
+ <font class="doc-id">dyCtrl2</font>,
+ <font class="doc-id">dxTo</font>,
+ <font class="doc-id">dyTo</font> )<p>
+
+ <font class="doc-func"><a href="#AddEllipse">AddEllipse</a></font>
+ (<font class="doc-id">cx</font>,
+ <font class="doc-id">cy</font>,
+ <font class="doc-id">rx</font>,
+ <font class="doc-id">ry</font>,
+ <font class="doc-id">dir</font> )<br>
+ <font class="doc-func"><a href="#ClosePolygon">ClosePolygon</a></font><p>
+
+ <font class="doc-func"><a href="#DrawPath">DrawPath</a></font>
+ (<font class="doc-id">flag</font> )
+ </blockquote>
+
+ <font class="doc-sect">Text Rendering</font>
+ <blockquote class="doc-toc">
+ <font class="doc-func"><a href="#FlipText">FlipText</a></font>
+ (<font class="doc-id">flip</font> )<p>
+
+ <font class="doc-func"><a href="#Font">Font</a></font>
+ (<font class="doc-id">fileName</font>,
+ <font class="doc-id">height</font>,
+ <font class="doc-id">bold</font>,
+ <font class="doc-id">italic</font>,
+ <font class="doc-id">cache</font>,
+ <font class="doc-id">angle</font> )<p>
+
+ <font class="doc-func"><a href="#FontHeight">FontHeight</a></font>
+ : <font class="doc-type">double</font><p>
+
+ <font class="doc-func"><a href="#TextAlignment">TextAlignment</a></font>
+ (<font class="doc-id">alignX</font>,
+ <font class="doc-id">alignY</font> )<p>
+
+ <font class="doc-func"><a href="#TextHints">TextHints</a></font>
+ : <font class="doc-type">boolean</font><br>
+ <font class="doc-func"><a href="#TextHints2">TextHints</a></font>
+ (<font class="doc-id">hints</font> )<br>
+ <font class="doc-func"><a href="#TextWidth">TextWidth</a></font>
+ (<font class="doc-id">str</font> )
+ : <font class="doc-type">double</font><p>
+
+ <font class="doc-func"><a href="#Text">Text</a></font>
+ (<font class="doc-id">x</font>,
+ <font class="doc-id">y</font>,
+ <font class="doc-id">str</font>,
+ <font class="doc-id">roundOff</font>,
+ <font class="doc-id">ddx</font>,
+ <font class="doc-id">ddy</font> )
+
+ </blockquote>
+
+ <font class="doc-sect">Image Rendering</font>
+ <blockquote class="doc-toc">
+ <font class="doc-func"><a href="#ImageFilter">ImageFilter</a></font>
+ (<font class="doc-id">f</font> )<br>
+ <font class="doc-func"><a href="#ImageFilter2">ImageFilter</a></font>
+ : <font class="doc-type">TAggImageFilter [<a href="#TAggImageFilter">*</a>]</font><p>
+
+ <font class="doc-func"><a href="#ImageResample">ImageResample</a></font>
+ (<font class="doc-id">f</font> )<br>
+ <font class="doc-func"><a href="#ImageResample2">ImageResample</a></font>
+ : <font class="doc-type">TAggImageResample [<a href="#TAggImageResample">*</a>]</font><p>
+
+ <font class="doc-func"><a href="#TransformImage">TransformImage</a></font>
+ (<font class="doc-id">bitmap</font>,
+ <font class="doc-id">imgX1</font>,
+ <font class="doc-id">imgY1</font>,
+ <font class="doc-id">imgX2</font>,
+ <font class="doc-id">imgY2</font>,
+ <font class="doc-id">dstX1</font>,
+ <font class="doc-id">dstY1</font>,
+ <font class="doc-id">dstX2</font>,
+ <font class="doc-id">dstY2</font> )<p>
+
+ <font class="doc-func"><a href="#TransformImage2">TransformImage</a></font>
+ (<font class="doc-id">bitmap</font>,
+ <font class="doc-id">dstX1</font>,
+ <font class="doc-id">dstY1</font>,
+ <font class="doc-id">dstX2</font>,
+ <font class="doc-id">dstY2</font> )<p>
+
+ <font class="doc-func"><a href="#TransformImage3">TransformImage</a></font>
+ (<font class="doc-id">bitmap</font>,
+ <font class="doc-id">imgX1</font>,
+ <font class="doc-id">imgY1</font>,
+ <font class="doc-id">imgX2</font>,
+ <font class="doc-id">imgY2</font>,
+ <font class="doc-id">parallelo</font> )<p>
+
+ <font class="doc-func"><a href="#TransformImage4">TransformImage</a></font>
+ (<font class="doc-id">bitmap</font>,
+ <font class="doc-id">parallelo</font> )<p>
+
+ <font class="doc-func"><a href="#TransformImagePath">TransformImagePath</a></font>
+ (<font class="doc-id">bitmap</font>,
+ <font class="doc-id">imgX1</font>,
+ <font class="doc-id">imgY1</font>,
+ <font class="doc-id">imgX2</font>,
+ <font class="doc-id">imgY2</font>,
+ <font class="doc-id">dstX1</font>,
+ <font class="doc-id">dstY1</font>,
+ <font class="doc-id">dstX2</font>,
+ <font class="doc-id">dstY2</font> )<p>
+
+ <font class="doc-func"><a href="#TransformImagePath2">TransformImagePath</a></font>
+ (<font class="doc-id">bitmap</font>,
+ <font class="doc-id">dstX1</font>,
+ <font class="doc-id">dstY1</font>,
+ <font class="doc-id">dstX2</font>,
+ <font class="doc-id">dstY2</font> )<p>
+
+ <font class="doc-func"><a href="#TransformImagePath3">TransformImagePath</a></font>
+ (<font class="doc-id">bitmap</font>,
+ <font class="doc-id">imgX1</font>,
+ <font class="doc-id">imgY1</font>,
+ <font class="doc-id">imgX2</font>,
+ <font class="doc-id">imgY2</font>,
+ <font class="doc-id">parallelo</font> )<p>
+
+ <font class="doc-func"><a href="#TransformImagePath4">TransformImagePath</a></font>
+ (<font class="doc-id">bitmap</font>,
+ <font class="doc-id">parallelo</font> )<p>
+
+ <font class="doc-func"><a href="#CopyImage">CopyImage</a></font>
+ (<font class="doc-id">bitmap</font>,
+ <font class="doc-id">imgX1</font>,
+ <font class="doc-id">imgY1</font>,
+ <font class="doc-id">imgX2</font>,
+ <font class="doc-id">imgY2</font>,
+ <font class="doc-id">dstX</font>,
+ <font class="doc-id">dstY</font> )<P>
+
+ <font class="doc-func"><a href="#CopyImage2">CopyImage</a></font>
+ (<font class="doc-id">bitmap</font>,
+ <font class="doc-id">dstX</font>,
+ <font class="doc-id">dstY</font> )
+
+ </blockquote>
+
+ <font class="doc-sect">Standalone API</font>
+ <blockquote class="doc-toc">
+ <font class="doc-func"><a href="#Deg2Rad">Deg2Rad</a></font>
+ (<font class="doc-id">v</font> )
+ : <font class="doc-type">double</font><br>
+ <font class="doc-func"><a href="#Rad2Deg">Rad2Deg</a></font>
+ (<font class="doc-id">v</font> )
+ : <font class="doc-type">double</font><p>
+
+ <font class="doc-func"><a href="#Agg2DUsesFreeType">Agg2DUsesFreeType</a></font>
+ : <font class="doc-type">boolean</font><p>
+
+ <font class="doc-func"><a href="#BitmapAlphaTransparency">BitmapAlphaTransparency</a></font>
+ (<font class="doc-id">bitmap</font>,
+ <font class="doc-id">alpha</font> )
+ : <font class="doc-type">boolean</font>
+
+ </blockquote>
+
+ <font class="doc-sect">API Related Types</font>
+ <blockquote class="doc-toc">
+ <font class="doc-type"><a href="#TAggColor">TAggColor</a></font><br>
+ <font class="doc-type"><a href="#TAggRectD">TAggRectD</a></font><br>
+ <font class="doc-type"><a href="#TAggDirection">TAggDirection</a></font><br>
+ <font class="doc-type"><a href="#TAggLineJoin">TAggLineJoin</a></font><br>
+ <font class="doc-type"><a href="#TAggLineCap">TAggLineCap</a></font><br>
+ <font class="doc-type"><a href="#TAggBlendMode">TAggBlendMode</a></font><br>
+ <font class="doc-type"><a href="#TAggTextAlignment">TAggTextAlignment</a></font><br>
+ <font class="doc-type"><a href="#TAggDrawPathFlag">TAggDrawPathFlag</a></font><br>
+ <font class="doc-type"><a href="#TAggViewportOption">TAggViewportOption</a></font><br>
+ <font class="doc-type"><a href="#TAggImageFilter">TAggImageFilter</a></font><br>
+ <font class="doc-type"><a href="#TAggImageResample">TAggImageResample</a></font><br>
+ <font class="doc-type"><a href="#TAggFontCacheType">TAggFontCacheType</a></font><br>
+ <font class="doc-type"><a href="#TAggTransformations">TAggTransformations</a></font>
+
+ </blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="Attach"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">Attach</font>
+ (<font class="doc-id">bitmap</font>,
+ <font class="doc-id">flip_y</font>
+ ) : <font class="doc-type">boolean</font>
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ This method associates vector engine object with bitmap image for the purpose of rendering
+ vector graphics onto it's surface.
+ </blockquote>
+
+ <font class="doc-sect">Parameters</font>
+ <blockquote>
+ <font class="doc-param"><font class="doc-id">bitmap</font> : <font class="doc-type">TBitmap</font></font><p>
+ A valid reference to non empty Device Independent Bitmap in <font class="doc-enum">pf24bit</font> or <font class="doc-enum">pf32bit</font> format.
+ Bitmap can already contain some image data (eg. photo). In that case all renderings
+ will take place over the existing image data.
+ <p>
+
+ <font class="doc-param"><font class="doc-id">flip_y</font> : <font class="doc-type">boolean</font> = false</font><p>
+ Indicates if coordinate system on Y axis originates in Bottom Left corner. Otherwise coordinates
+ on Y axis originate in Top Left corner.
+
+ </blockquote>
+
+ <font class="doc-sect">Returns</font>
+ <blockquote>
+ <font class="doc-res-ok">If True</font>,
+ vector engine was successfully connected to the bitmap surface and drawing routine can be immediately
+ performed.<p>
+
+ <font class="doc-res-fail">If False</font>,
+ there was an error connecting to the surface. Check if bitmap image has required DIB format
+ or if it's not empty.
+
+ </blockquote>
+
+ <font class="doc-sect">Example</font>
+<blockquote><font class="pas-source"><pre class="pas-source">
+ <span class="pas-kwd">if</span> VG.Attach(Image1.Picture.Bitmap ) <span class="pas-kwd">then</span>
+ <span class="pas-kwd">begin</span>
+ <span class="pas-comment">// Drawing Routine ...</span>
+
+ <span class="pas-kwd">end</span>;
+
+</pre></font></blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="ClipBox"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">ClipBox</font>
+ (<font class="doc-id">x1</font>,
+ <font class="doc-id">y1</font>,
+ <font class="doc-id">x2</font>,
+ <font class="doc-id">y2</font> )
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Restricts the rendering area to the given rectangle.
+
+ </blockquote>
+
+ <font class="doc-sect">Parameters</font>
+ <blockquote>
+ <font class="doc-param"><font class="doc-id">x1</font> : <font class="doc-type">double</font></font><p>
+ X coordinate of clipping rectangle Top Left corner [in pixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">y1</font> : <font class="doc-type">double</font></font><p>
+ Y coordinate of clipping rectangle Top Left corner [in pixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">x2</font> : <font class="doc-type">double</font></font><p>
+ X coordinate of clipping rectangle Bottom Right corner [in pixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">y2</font> : <font class="doc-type">double</font></font><p>
+ Y coordinate of clipping rectangle Bottom Right corner [in pixels].
+
+ </blockquote>
+
+ <font class="doc-sect">Example</font>
+<blockquote><font class="pas-source"><pre class="pas-source">
+ <span class="pas-kwd">if</span> VG.Attach(Image1.Picture.Bitmap ) <span class="pas-kwd">then</span>
+ <span class="pas-kwd">begin</span>
+ VG.ClearAll (<span class="pas-num">255</span> ,<span class="pas-num">255</span> ,<span class="pas-num">255</span> );
+ VG.LineWidth(<span class="pas-num">10</span> );
+ VG.LineColor(<span class="pas-hex">$32</span> ,<span class="pas-hex">$cd</span> ,<span class="pas-hex">$32</span> );
+ VG.FillColor(<span class="pas-hex">$ff</span> ,<span class="pas-hex">$d7</span> ,<span class="pas-hex">$00</span> );
+
+ VG.ClipBox(<span class="pas-num">50</span> ,<span class="pas-num">50</span> ,<span class="pas-num">140</span> ,<span class="pas-num">140</span> );
+
+ VG.Star(<span class="pas-num">100</span> ,<span class="pas-num">100</span> ,<span class="pas-num">30</span> ,<span class="pas-num">70</span> ,<span class="pas-num">55</span> ,<span class="pas-num">5</span> );
+
+ <span class="pas-kwd">end</span>;
+
+</pre></font></blockquote>
+
+ <blockquote><font class="doc-down-ex">
+ <a href="agg2d_files/tagg2d_example03.png">
+ <img src="agg2d_files/tagg2d_example03.jpg" width="120" height="124" border="0">
+ </a><p>
+ </font></blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="ClipBox2"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">ClipBox</font>
+ : <font class="doc-type">TAggRectD [<a href="#TAggRectD">*</a>]</font>
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Retrieves the current clipping area rectangle.
+
+ </blockquote>
+
+ <font class="doc-sect">Returns</font>
+ <blockquote>
+ Returned is data structure with clipping rectangle coordinates [in pixels].
+
+ </blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="ClearAll"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">ClearAll</font>
+ (<font class="doc-id">c</font> )<br>
+
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">ClearAll</font>
+ (<font class="doc-id">r</font>,
+ <font class="doc-id">g</font>,
+ <font class="doc-id">b</font>,
+ <font class="doc-id">a</font> )
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Erases the whole surface of attached <font class="doc-type">TBitmap</font> to the color provided.
+
+ </blockquote>
+
+ <font class="doc-sect">Parameters</font>
+ <blockquote>
+ <font class="doc-param"><font class="doc-id">c</font> : <font class="doc-type">TAggColor [<a href="#TAggColor">*</a>]</font></font><p>
+ Erase color in one data structure (r,g,b,a).
+ <p>
+
+ <font class="doc-param"><font class="doc-id">r</font> : <font class="doc-type">byte</font></font><p>
+ Red channel of Erase color [0..255].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">g</font> : <font class="doc-type">byte</font></font><p>
+ Green channel of Erase color [0..255].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">b</font> : <font class="doc-type">byte</font></font><p>
+ Blue channel of Erase color [0..255].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">a</font> : <font class="doc-type">byte</font> = 255 (Opaque)</font><p>
+ Alpha transparency of Erase color [ (transparent) 0 .. 255 (opaque) ]
+
+ </blockquote>
+
+ <font class="doc-sect">Example</font>
+<blockquote><font class="pas-source"><pre class="pas-source">
+ <span class="pas-kwd">if</span> VG.Attach(Image1.Picture.Bitmap ) <span class="pas-kwd">then</span>
+ <span class="pas-kwd">begin</span>
+ <span class="pas-comment">// Erasing whole background to Fuchsia</span>
+ VG.ClearAll(<span class="pas-num">255</span> ,<span class="pas-num">0</span> ,<span class="pas-num">255</span> );
+
+ <span class="pas-kwd">end</span>;
+
+</pre></font></blockquote>
+
+ <blockquote><font class="doc-down-ex">
+ <img src="agg2d_files/tagg2d_example04.jpg" width="120" height="124" border="0">
+ </font></blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="ClearClipBox"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">ClearClipBox</font>
+ (<font class="doc-id">c</font> )<br>
+
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">ClearClipBox</font>
+ (<font class="doc-id">r</font>,
+ <font class="doc-id">g</font>,
+ <font class="doc-id">b</font>,
+ <font class="doc-id">a</font> )
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Erases the area defined by clipping rectangle with provided color. If there is no
+ clipping rectangle defined yet, whole surface of attached <font class="doc-type">TBitmap</font> is considered
+ to be the clipping rectangle.
+
+ </blockquote>
+
+ <font class="doc-sect">Parameters</font>
+ <blockquote>
+ <font class="doc-param"><font class="doc-id">c</font> : <font class="doc-type">TAggColor [<a href="#TAggColor">*</a>]</font></font><p>
+ Erase color in one data structure (r,g,b,a).
+ <p>
+
+ <font class="doc-param"><font class="doc-id">r</font> : <font class="doc-type">byte</font></font><p>
+ Red channel of Erase color [0..255].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">g</font> : <font class="doc-type">byte</font></font><p>
+ Green channel of Erase color [0..255].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">b</font> : <font class="doc-type">byte</font></font><p>
+ Blue channel of Erase color [0..255].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">a</font> : <font class="doc-type">byte</font> = 255 (Opaque)</font><p>
+ Alpha transparency of Erase color [ (transparent) 0 .. 255 (opaque) ]
+
+ </blockquote>
+
+ <font class="doc-sect">Example</font>
+<blockquote><font class="pas-source"><pre class="pas-source">
+ <span class="pas-kwd">if</span> VG.Attach(Image1.Picture.Bitmap ) <span class="pas-kwd">then</span>
+ <span class="pas-kwd">begin</span>
+ VG.ClearAll (<span class="pas-num">255</span> ,<span class="pas-num">255</span> ,<span class="pas-num">255</span> );
+
+ VG.ClipBox(<span class="pas-num">50</span> ,<span class="pas-num">50</span> ,<span class="pas-num">140</span> ,<span class="pas-num">140</span> );
+
+ <span class="pas-comment">// Erasing clipping box to Fuchsia</span>
+ VG.ClearClipBox(<span class="pas-num">255</span> ,<span class="pas-num">0</span> ,<span class="pas-num">255</span> );
+
+ <span class="pas-kwd">end</span>;
+
+</pre></font></blockquote>
+
+ <blockquote><font class="doc-down-ex">
+ <img src="agg2d_files/tagg2d_example05.jpg" width="120" height="124" border="0">
+ </font></blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="WorldToScreen"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">WorldToScreen</font>
+ (<font class="doc-id">x</font>,
+ <font class="doc-id">y</font> )
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Transforms world (user) coordinates into surface (screen) coordinates.<p>
+
+ World (user) coordinates are units of measure [in subpixels] in which developer defines
+ the positions and dimensions of objects willing to be drawn.<p>
+
+ Surface (screen) coordinates are computed by vector graphics engine from world (user)
+ coordinates in the process of rendering by multiplying with affine matrix.<p>
+
+ Resulting screen coordinates are fractional numbers [in subpixels] despite the fact, that the
+ destination surface (eg. screen) has a final non-fractional integer displaying units (pixels).
+ The effect of fractional shift in position is then achieved optically with Anti Aliasing.<p>
+
+ Converting coordinates from world to screen units is good for calculating the resulting positions
+ and dimensions of objects being drawn on screen.
+
+ </blockquote>
+
+ <font class="doc-sect">Parameters</font>
+ <blockquote>
+ <font class="doc-param"><font class="doc-id">x</font> : <font class="doc-type">PDouble</font></font><p>
+ Pointer to the world X coordinate [in subpixels]. This parameter receives also the result of conversion
+ - screen X coordinate [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">y</font> : <font class="doc-type">PDouble</font></font><p>
+ Pointer to the world Y coordinate [in subpixels]. This parameter receives also the result of conversion
+ - screen Y coordinate [in subpixels].
+
+ </blockquote>
+
+ <font class="doc-sect">Example</font>
+<blockquote><font class="pas-source"><pre class="pas-source">
+ <span class="pas-kwd">var</span>
+ x ,y : double;
+
+ <span class="pas-kwd">if</span> VG.Attach(Image1.Picture.Bitmap ) <span class="pas-kwd">then</span>
+ <span class="pas-kwd">begin</span>
+ VG.ClearAll (<span class="pas-num">255</span> ,<span class="pas-num">255</span> ,<span class="pas-num">255</span> );
+
+ <span class="pas-comment">// Coordinates system shift (on X + 10, on Y + 20)</span>
+ VG.Translate(<span class="pas-num">10</span> ,<span class="pas-num">20</span> );
+
+ <span class="pas-comment">// Find out, where on screen x &amp; y will be</span>
+ x:=<span class="pas-num">15</span>;
+ y:=<span class="pas-num">15</span>;
+
+ VG.WorldToScreen(@x ,@y );
+
+ <span class="pas-comment">// X should be 25 (15 + 10), Y should be 35 (15 + 20)</span>
+
+ <span class="pas-kwd">end</span>;
+
+</pre></font></blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="ScreenToWorld"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">ScreenToWorld</font>
+ (<font class="doc-id">x</font>,
+ <font class="doc-id">y</font> )
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Transforms surface (screen) coordinates into world (user) coordinates.<p>
+
+ This method is useful for hit test detection. Typically operating system sends
+ informations about position of the mouse in surface (screen) coordinates, but
+ the output on screen might come from totally different coordinates, which were
+ transformed by the vector engine during the rendering process.
+
+ </blockquote>
+
+ <font class="doc-sect">Parameters</font>
+ <blockquote>
+ <font class="doc-param"><font class="doc-id">x</font> : <font class="doc-type">PDouble</font></font><p>
+ Pointer to the screen X coordinate [in subpixels]. This parameter receives also the result of conversion
+ - world X coordinate [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">y</font> : <font class="doc-type">PDouble</font></font><p>
+ Pointer to the screen Y coordinate [in subpixels]. This parameter receives also the result of conversion
+ - world Y coordinate [in subpixels].
+
+ </blockquote>
+
+ <font class="doc-sect">Example</font>
+<blockquote><font class="pas-source"><pre class="pas-source">
+ <span class="pas-kwd">var</span>
+ x ,y : double;
+
+ <span class="pas-kwd">if</span> VG.Attach(Image1.Picture.Bitmap ) <span class="pas-kwd">then</span>
+ <span class="pas-kwd">begin</span>
+ VG.ClearAll (<span class="pas-num">255</span> ,<span class="pas-num">255</span> ,<span class="pas-num">255</span> );
+
+ <span class="pas-comment">// Coordinates system shift (on X + 10, on Y + 20)</span>
+ VG.Translate(<span class="pas-num">10</span> ,<span class="pas-num">20</span> );
+
+ <span class="pas-comment">// Find out where the mouse position X &amp; Y is targetting</span>
+ <span class="pas-comment">// our user drawing (before rendering transformations)</span>
+ x:=<span class="pas-num">25</span>;
+ y:=<span class="pas-num">35</span>;
+
+ VG.ScreenToWorld(@x ,@y );
+
+ <span class="pas-comment">// X should be 15 (25 - 10), Y should be 15 (35 - 20)</span>
+
+ <span class="pas-kwd">end</span>;
+
+</pre></font></blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="WorldToScreen2"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">WorldToScreen</font>
+ (<font class="doc-id">scalar</font> )
+ : <font class="doc-type">double</font>
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Transforms the length in world (user) units into the length in surface (screen) units.<p>
+
+ This method can be used to find out, how many subpixels takes some length in final
+ rendering. When developer compares input length with output length, the result is the zoom ratio
+ (from definition to screen).
+
+ </blockquote>
+
+ <font class="doc-sect">Parameters</font>
+ <blockquote>
+ <font class="doc-param"><font class="doc-id">scalar</font> : <font class="doc-type">double</font></font><p>
+ Length in units of world (user) system [in subpixels].
+
+ </blockquote>
+
+ <font class="doc-sect">Returns</font>
+ <blockquote>
+ Returned is the length in units of screen (surface) system [in subpixels].
+
+ </blockquote>
+
+ <font class="doc-sect">Example</font>
+<blockquote><font class="pas-source"><pre class="pas-source">
+ <span class="pas-kwd">var</span>
+ l : double;
+
+ <span class="pas-kwd">if</span> VG.Attach(Image1.Picture.Bitmap ) <span class="pas-kwd">then</span>
+ <span class="pas-kwd">begin</span>
+ VG.ClearAll(<span class="pas-num">255</span> ,<span class="pas-num">255</span> ,<span class="pas-num">255</span> );
+
+ <span class="pas-comment">// Coordinates system shift (on X + 2, on Y + 2)</span>
+ VG.Translate(<span class="pas-num">2</span> ,<span class="pas-num">2</span> );
+
+ <span class="pas-comment">// &quot;l&quot; is still the same (10), because coordinate system</span>
+ <span class="pas-comment">// zoom ratio is not affected by previous translation</span>
+ l:=VG.WorldToScreen(<span class="pas-num">10</span> );
+
+ <span class="pas-comment">// Coordinates system scale up by 2x</span>
+ VG.Scale(<span class="pas-num">2</span> ,<span class="pas-num">2</span> );
+
+ <span class="pas-comment">// Now &quot;l&quot; is double (20), because previous up-scale</span>
+ <span class="pas-comment">// changed the coordinate system zoom ratio by 2x</span>
+ l:=VG.WorldToScreen(<span class="pas-num">10</span> );
+
+ <span class="pas-kwd">end</span>;
+
+</pre></font></blockquote>
+
+ <font class="doc-sect">Remarks</font>
+ <blockquote class="doc-note">
+ It might seem confusing that both world (user) and screen (surface) coordinates are
+ referred here as [in subpixels].<p>
+
+ Developer has to realize, that everything defined in drawing routine is [in subpixels]
+ and when there are no transformations explicitely defined, output on screen is
+ being rendered in 1:1 transformations (everything gets drawn in the same [subpixels]).<p>
+
+ After defining some additional transformations (like up/down scaling, rotation, skew, ...)
+ the location and dimension of objects will be different from original definition,
+ but the values are still being computed [in subpixels].<p>
+
+ Coordinates transformations changes positions and dimensions / lenghts, but units
+ still remains the same [subpixels].
+ </blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="ScreenToWorld2"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">ScreenToWorld</font>
+ (<font class="doc-id">scalar</font> )
+ : <font class="doc-type">double</font>
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Transforms the length in surface (screen) units into the length in world (user) units.<p>
+
+ This method can be used to find out the original dimension of something, that has a
+ certain length on screen.
+
+ </blockquote>
+
+ <font class="doc-sect">Parameters</font>
+ <blockquote>
+ <font class="doc-param"><font class="doc-id">scalar</font> : <font class="doc-type">double</font></font><p>
+ Length in units of screen (surface) system [in subpixels].
+
+ </blockquote>
+
+ <font class="doc-sect">Returns</font>
+ <blockquote>
+ Returned is the length in units of world (user) system [in subpixels].
+
+ </blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="AlignPoint"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">AlignPoint</font>
+ (<font class="doc-id">x</font>,
+ <font class="doc-id">y</font> )
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Due to the Anti Aliasing technique (that's heavily used in AGG), it may be sometimes hard to achieve rendering
+ of lines, that are eg. exactly 1 pixel wide.<p>
+
+ You can read more about this issue <a href="http://antigrain.com/tips/line_alignment/line_alignment.agdoc.html">here</a>.<p>
+
+ This line alignment problem can be partially solved by aligning the coordinates
+ to the 0.5 subpixels (in screen coordinates), so that the lines would always have 100% opaque area.<p>
+
+ Basic formula to do this alignment is: x = floor(x) + 0.5<p>
+
+ This method is a helper method for reversely calculating world coordinates in such a way,
+ that after the current transformations they become aligned on 0.5 fractional subpixel boundary.
+
+ </blockquote>
+
+ <font class="doc-sect">Parameters</font>
+ <blockquote>
+ <font class="doc-param"><font class="doc-id">x</font> : <font class="doc-type">PDouble</font></font><p>
+ Initial X world (user) system coordinate. This parameter receives aligned value of X coordinate
+ (in world coordinates system), that will snap to the 0.5 subpixel boundary on X axis when rendering on screen.
+ <p>
+
+ <font class="doc-param"><font class="doc-id">y</font> : <font class="doc-type">PDouble</font></font><p>
+ Initial Y world (user) system coordinate. This parameter receives aligned value of Y coordinate
+ (in world coordinates system), that will snap to the 0.5 subpixel boundary on Y axis when rendering on screen.
+
+ </blockquote>
+
+ <font class="doc-sect">Example</font>
+<blockquote><font class="pas-source"><pre class="pas-source">
+ <span class="pas-kwd">var</span>
+ x1 ,y1 ,x2 ,y2 : double;
+
+ <span class="pas-kwd">if</span> VG.Attach(Image1.Picture.Bitmap ) <span class="pas-kwd">then</span>
+ <span class="pas-kwd">begin</span>
+ VG.ClearAll(<span class="pas-num">255</span> ,<span class="pas-num">255</span> ,<span class="pas-num">255</span> );
+
+ <span class="pas-comment">// Initial coordinates</span>
+ x1:=<span class="pas-num">10</span>;
+ y1:=<span class="pas-num">30</span>;
+ x2:=<span class="pas-num">150</span>;
+ y2:=<span class="pas-num">30</span>;
+
+ <span class="pas-comment">// This line seems to be bold with line width = 1</span>
+ VG.Line(x1 ,y1 ,x2 ,y2 );
+
+ <span class="pas-comment">// We correct coordinates</span>
+ VG.AlignPoint(@x1 ,@y1 );
+ VG.AlignPoint(@x2 ,@y2 );
+
+ <span class="pas-comment">// We shift coordinates down to see the result beneath</span>
+ VG.Translate(<span class="pas-num">0</span> ,<span class="pas-num">50</span> );
+
+ <span class="pas-comment">// After correction,</span>
+ <span class="pas-comment">// this line seems to be ok with line width = 1</span>
+ VG.Line(x1 ,y1 ,x2 ,y2 );
+
+ <span class="pas-kwd">end</span>;
+
+</pre></font></blockquote>
+
+ <blockquote><font class="doc-down-ex">
+ <a href="agg2d_files/tagg2d_example06.png">
+ <img src="agg2d_files/tagg2d_example06.jpg" width="120" height="124" border="0">
+ </a><p>
+ </font></blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="InBox"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">InBox</font>
+ (<font class="doc-id">worldX</font>,
+ <font class="doc-id">worldY</font> )
+ : <font class="doc-type">boolean</font>
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Cheks out, if coordinates are within the clipping rectangle.
+
+ </blockquote>
+
+ <font class="doc-sect">Parameters</font>
+ <blockquote>
+ <font class="doc-param"><font class="doc-id">worldX</font> : <font class="doc-type">double</font></font><p>
+ X world (user) coordinate [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">worldY</font> : <font class="doc-type">double</font></font><p>
+ Y world (user) coordinate [in subpixels].
+
+ </blockquote>
+
+ <font class="doc-sect">Returns</font>
+ <blockquote>
+ <font class="doc-res-ok">If True</font>,
+ coordinates are inside the clipping rectangle (visible after rendering).
+ <p>
+
+ <font class="doc-res-ok">If False</font>,
+ coordinates are not inside the clipping rectangle.
+
+ </blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="BlendMode"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">BlendMode</font>
+ (<font class="doc-id">m</font> )
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Changes the general rendering composition mode (compliant with <a href="http://www.w3.org/TR/2004/WD-SVG12-20041027/rendering.html#comp-op-prop">SVG</a>). This method applies
+ only to the <font class="doc-type">TBitmap</font> surfaces with Alpha channel present (<font class="doc-enum">pf32bit</font>).<p>
+
+ Default composition mode is <font class="doc-enum">AGG_BlendAlpha</font>, in which each pixel is rendered
+ to the surface with the intensity of it's Alpha Transparency value.
+
+ </blockquote>
+
+ <font class="doc-sect">Parameters</font>
+ <blockquote>
+ <font class="doc-param"><font class="doc-id">m</font> : <font class="doc-type">TAggBlendMode [<a href="#TAggBlendMode">*</a>]</font></font><p>
+ A new general composition mode.
+
+ </blockquote>
+
+ <font class="doc-sect">Example</font>
+<blockquote><font class="pas-source"><pre class="pas-source">
+ <span class="pas-kwd">if</span> VG.Attach(Image1.Picture.Bitmap ) <span class="pas-kwd">then</span>
+ <span class="pas-kwd">begin</span>
+ VG.ClearAll(<span class="pas-num">255</span> ,<span class="pas-num">255</span> ,<span class="pas-num">255</span> );
+
+ <span class="pas-comment">// Draw basic blue rectangle</span>
+ VG.NoLine;
+ VG.FillColor(<span class="pas-num">0</span> ,<span class="pas-num">0</span> ,<span class="pas-num">255</span> );
+
+ VG.Rectangle(<span class="pas-num">50</span> ,<span class="pas-num">50</span> ,<span class="pas-num">150</span> ,<span class="pas-num">150</span> );
+
+ <span class="pas-comment">// Rotate coordinates by 45 degrees</span>
+ VG.Translate(-ClientWidth / <span class="pas-num">2</span> ,-ClientHeight / <span class="pas-num">2</span> );
+ VG.Rotate (Deg2Rad(<span class="pas-num">45</span> ) );
+ VG.Translate(ClientWidth / <span class="pas-num">2</span> ,ClientHeight / <span class="pas-num">2</span> );
+
+ <span class="pas-comment">// Changing the general composition mode</span>
+ VG.BlendMode(AGG_BlendContrast );
+
+ <span class="pas-comment">// Draw the same blue rectangle but with red color</span>
+ <span class="pas-comment">// Result comes from applying composition mode</span>
+ VG.FillColor(<span class="pas-num">255</span> ,<span class="pas-num">0</span> ,<span class="pas-num">0</span> );
+ VG.Rectangle(<span class="pas-num">50</span> ,<span class="pas-num">50</span> ,<span class="pas-num">150</span> ,<span class="pas-num">150</span> );
+
+ <span class="pas-kwd">end</span>;
+
+</pre></font></blockquote>
+
+ <blockquote><font class="doc-down-ex">
+ <a href="agg2d_files/tagg2d_example07.png">
+ <img src="agg2d_files/tagg2d_example07.jpg" width="120" height="124" border="0">
+ </a><p>
+ </font></blockquote>
+
+ More complex example:
+
+ <blockquote><font class="doc-down-ex">
+ <a href="agg2d_files/tagg2d_example08.png">
+ <img src="agg2d_files/tagg2d_example08.jpg" width="120" height="124" border="0">
+ </a><p>
+ Example download:<br>
+ <a href="agg2d_files/tagg2d_example08.zip">tagg2d_example08.zip</a><br>
+ <a href="agg2d_files/tagg2d_example08.exe">tagg2d_example08.exe</a>
+ </font><blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="BlendMode2"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">BlendMode</font>
+ : <font class="doc-type">TAggBlendMode [<a href="#TAggBlendMode">*</a>]</font>
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Retrieves the current general composition mode.
+
+ </blockquote>
+
+ <font class="doc-sect">Returns</font>
+ <blockquote>
+ Returned is constant identifying the current general composition mode.
+
+ </blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="MasterAlpha"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">MasterAlpha</font>
+ (<font class="doc-id">a</font> )
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Changes the general Alpha Transparency value used on all renderings.
+
+ </blockquote>
+
+ <font class="doc-sect">Parameters</font>
+ <blockquote>
+ <font class="doc-param"><font class="doc-id">a</font> : <font class="doc-type">double</font></font><p>
+ A new value of general alpha transparency [ (transparent) 0 .. 1 (opaque) ].
+
+ </blockquote>
+
+ <font class="doc-sect">Example</font>
+ <blockquote>
+ For Alpha Transparency demo see the example 08 above.
+
+ </blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="MasterAlpha2"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">MasterAlpha</font>
+ : <font class="doc-type">double</font>
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Retrieves the current value of general Alpha Transparency.
+
+ </blockquote>
+
+ <font class="doc-sect">Returns</font>
+ <blockquote>
+ <font class="doc-res-ok">If 1</font>,
+ everything being rendered is fully opaque. This don't applies if individual state parameters (like
+ eg. line color) have defined it's own transparency, in which case the parameter's value
+ is used.
+ <p>
+
+ <font class="doc-res-ok">If &LT; 0</font>,
+ everything being rendered is semitransparent with given level of transparency. Individual state
+ parameters have trasparency level multiplied by this general level.
+ <p>
+
+ <font class="doc-res-ok">If 0</font>,
+ nothing is being visible even if individual state parameter has a full opacity.
+
+ </blockquote>
+
+ <font class="doc-sect">Example</font>
+<blockquote><font class="pas-source"><pre class="pas-source">
+ <span class="pas-kwd">if</span> VG.Attach(Image1.Picture.Bitmap ) <span class="pas-kwd">then</span>
+ <span class="pas-kwd">begin</span>
+ VG.ClearAll (<span class="pas-num">255</span> ,<span class="pas-num">255</span> ,<span class="pas-num">255</span> );
+ VG.LineWidth(<span class="pas-num">20</span> );
+
+ <span class="pas-comment">// Full Master Alpha, Full LineColor opacity</span>
+ VG.Translate(<span class="pas-num">0</span> ,<span class="pas-num">30</span> );
+ VG.LineColor(<span class="pas-num">255</span> ,<span class="pas-num">0</span> ,<span class="pas-num">0</span> ,<span class="pas-num">255</span> );
+ VG.Line (<span class="pas-num">20</span> ,<span class="pas-num">10</span> ,<span class="pas-num">150</span> ,<span class="pas-num">10</span> );
+
+ <span class="pas-comment">// Full Master Alpha, Half LineColor opacity</span>
+ VG.Translate(<span class="pas-num">0</span> ,<span class="pas-num">30</span> );
+ VG.LineColor(<span class="pas-num">255</span> ,<span class="pas-num">0</span> ,<span class="pas-num">0</span> ,<span class="pas-num">128</span> );
+ VG.Line (<span class="pas-num">20</span> ,<span class="pas-num">10</span> ,<span class="pas-num">150</span> ,<span class="pas-num">10</span> );
+
+ <span class="pas-comment">// Half Master Alpha, Full LineColor opacity</span>
+ VG.MasterAlpha(<span class="pas-float">0.5</span> );
+
+ VG.Translate(<span class="pas-num">0</span> ,<span class="pas-num">30</span> );
+ VG.LineColor(<span class="pas-num">255</span> ,<span class="pas-num">0</span> ,<span class="pas-num">0</span> ,<span class="pas-num">255</span> );
+ VG.Line (<span class="pas-num">20</span> ,<span class="pas-num">10</span> ,<span class="pas-num">150</span> ,<span class="pas-num">10</span> );
+
+ <span class="pas-comment">// Half Master Alpha, Half LineColor opacity</span>
+ VG.Translate(<span class="pas-num">0</span> ,<span class="pas-num">30</span> );
+ VG.LineColor(<span class="pas-num">255</span> ,<span class="pas-num">0</span> ,<span class="pas-num">0</span> ,<span class="pas-num">128</span> );
+ VG.Line (<span class="pas-num">20</span> ,<span class="pas-num">10</span> ,<span class="pas-num">150</span> ,<span class="pas-num">10</span> );
+
+ <span class="pas-comment">// No Master Alpha, Full LineColor opacity</span>
+ <span class="pas-comment">// NOT VISIBLE</span>
+ VG.MasterAlpha(<span class="pas-num">0</span> );
+
+ VG.Translate(<span class="pas-num">0</span> ,<span class="pas-num">30</span> );
+ VG.LineColor(<span class="pas-num">255</span> ,<span class="pas-num">0</span> ,<span class="pas-num">0</span> ,<span class="pas-num">255</span> );
+ VG.Line (<span class="pas-num">20</span> ,<span class="pas-num">10</span> ,<span class="pas-num">150</span> ,<span class="pas-num">10</span> );
+
+ <span class="pas-kwd">end</span>;
+
+</pre></font></blockquote>
+
+ <blockquote><font class="doc-down-ex">
+ <a href="agg2d_files/tagg2d_example09.png">
+ <img src="agg2d_files/tagg2d_example09.jpg" width="120" height="124" border="0">
+ </a><p>
+ </font></blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="AntiAliasGamma"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">AntiAliasGamma</font>
+ (<font class="doc-id">g</font> )
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Changes the value of Anti Alias Gamma correction.<p>
+
+ Gamma correction means doing graphics color math accounting for the distortion that the color
+ will eventually go through when displayed on a monitor.<p>
+
+ Phosphors of monitors don't react linearly with the intensity of the electron beam. If they did,
+ a linear input ramp would result in linear light intensity. Instead, the input value is effectively
+ raised to an exponent called gamma.<p>
+
+ You can read a whole article related to gamma issues in AGG <a href="http://www.antigrain.com/research/gamma_correction">here</a>.<p>
+
+ Default gamma in <font class="doc-type">TAgg2D</font> is 1.
+
+ </blockquote>
+
+ <font class="doc-sect">Parameters</font>
+ <blockquote>
+ <font class="doc-param"><font class="doc-id">g</font> : <font class="doc-type">double</font></font><p>
+ A new Gamma correction coefficient [ 0.1 .. 3 ~ 4 ]
+
+ </blockquote>
+
+ <font class="doc-sect">Example</font>
+ <blockquote>
+ For Gamma correction demo see the example 08 above.
+ </blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="AntiAliasGamma2"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">AntiAliasGamma</font>
+ : <font class="doc-type">double</font>
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Retrieves the current value of Anti Aliasing Gamma correction.
+
+ </blockquote>
+
+ <font class="doc-sect">Returns</font>
+ <blockquote>
+ Returned is the current value of Anti Aliasing Gamma correction.<p>
+
+ Reasonable values are in the range of [ 0.1 .. 3 ~ 4 ].
+
+ </blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="FillColor"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">FillColor</font>
+ (<font class="doc-id">c</font> )<br>
+
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">FillColor</font>
+ (<font class="doc-id">r</font>,
+ <font class="doc-id">g</font>,
+ <font class="doc-id">b</font>,
+ <font class="doc-id">a</font> )
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Changes the color used to fill interior of objects being drawn.<p>
+
+ Default fill color is White (r:255;r:255;b:255;a:255).<p>
+
+ Fill color doesn't apply if fill gradient is in place.
+
+ </blockquote>
+
+ <font class="doc-sect">Parameters</font>
+ <blockquote>
+ <font class="doc-param"><font class="doc-id">c</font> : <font class="doc-type">TAggColor [<a href="#TAggColor">*</a>]</font></font><p>
+ Fill color in one data structure (r,g,b,a).
+ <p>
+
+ <font class="doc-param"><font class="doc-id">r</font> : <font class="doc-type">byte</font></font><p>
+ Red channel of Fill color [0..255].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">g</font> : <font class="doc-type">byte</font></font><p>
+ Green channel of Fill color [0..255].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">b</font> : <font class="doc-type">byte</font></font><p>
+ Blue channel of Fill color [0..255].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">a</font> : <font class="doc-type">byte</font> = 255 (Opaque)</font><p>
+ Alpha transparency of Fill color [ (transparent) 0 .. 255 (opaque) ].
+
+ </blockquote>
+
+ <font class="doc-sect">Example</font>
+<blockquote><font class="pas-source"><pre class="pas-source">
+ <span class="pas-kwd">if</span> VG.Attach(Image1.Picture.Bitmap ) <span class="pas-kwd">then</span>
+ <span class="pas-kwd">begin</span>
+ VG.ClearAll(<span class="pas-num">255</span> ,<span class="pas-num">255</span> ,<span class="pas-num">255</span> );
+
+ <span class="pas-comment">// Changing fill color to HTML color Gold #FFD700</span>
+ VG.FillColor(<span class="pas-hex">$FF</span> ,<span class="pas-hex">$D7</span> ,<span class="pas-hex">$00</span> );
+ VG.Rectangle(<span class="pas-num">30</span> ,<span class="pas-num">30</span> ,<span class="pas-num">180</span> ,<span class="pas-num">80</span> );
+
+ <span class="pas-comment">// Adding Alpha Transparency to previous fill color</span>
+ VG.Translate(<span class="pas-num">0</span> ,<span class="pas-num">80</span> );
+ VG.FillColor(<span class="pas-hex">$FF</span> ,<span class="pas-hex">$D7</span> ,<span class="pas-hex">$00</span> ,<span class="pas-num">128</span> );
+ VG.Rectangle(<span class="pas-num">30</span> ,<span class="pas-num">30</span> ,<span class="pas-num">180</span> ,<span class="pas-num">80</span> );
+
+ <span class="pas-kwd">end</span>;
+
+</pre></font></blockquote>
+
+ <blockquote><font class="doc-down-ex">
+ <a href="agg2d_files/tagg2d_example10.png">
+ <img src="agg2d_files/tagg2d_example10.jpg" width="120" height="124" border="0">
+ </a><p>
+ </font></blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="FillColor2"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">FillColor</font>
+ : <font class="doc-type">TAggColor [<a href="#TAggColor">*</a>]</font>
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Retrieves the current color used to fill interior of objects being drawn.
+
+ </blockquote>
+
+ <font class="doc-sect">Returns</font>
+ <blockquote>
+ Returned is Fill color in one data structure (r,g,b,a).
+
+ </blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="NoFill"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">NoFill</font>
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ This method turns off filling of interior of objects being drawn. It turns off
+ both fill color and gradient fill. From now, all rendering will look like there
+ is a hole in them.
+
+ </blockquote>
+
+ <font class="doc-sect">Example</font>
+<blockquote><font class="pas-source"><pre class="pas-source">
+ <span class="pas-kwd">if</span> VG.Attach(Image1.Picture.Bitmap ) <span class="pas-kwd">then</span>
+ <span class="pas-kwd">begin</span>
+ VG.ClearAll(<span class="pas-num">255</span> ,<span class="pas-num">255</span> ,<span class="pas-num">255</span> );
+
+ <span class="pas-comment">// Turn filling Off</span>
+ VG.NoFill;
+
+ <span class="pas-comment">// HTML color Lime Green #32CD32</span>
+ VG.LineColor(<span class="pas-hex">$32</span> ,<span class="pas-hex">$CD</span> ,<span class="pas-hex">$32</span> );
+ VG.Rectangle(<span class="pas-num">10</span> ,<span class="pas-num">10</span> ,<span class="pas-num">140</span> ,<span class="pas-num">140</span> );
+
+ <span class="pas-comment">// HTML color Indian Red #CD5C5C</span>
+ VG.Translate(<span class="pas-num">20</span> ,<span class="pas-num">20</span> );
+ VG.LineColor(<span class="pas-hex">$CD</span> ,<span class="pas-hex">$5C</span> ,<span class="pas-hex">$5C</span> );
+ VG.Rectangle(<span class="pas-num">10</span> ,<span class="pas-num">10</span> ,<span class="pas-num">140</span> ,<span class="pas-num">140</span> );
+
+ <span class="pas-comment">// HTML color Dark Orchid #9932CC</span>
+ VG.Translate(<span class="pas-num">20</span> ,<span class="pas-num">20</span> );
+ VG.LineColor(<span class="pas-hex">$99</span> ,<span class="pas-hex">$32</span> ,<span class="pas-hex">$CC</span> );
+ VG.Rectangle(<span class="pas-num">10</span> ,<span class="pas-num">10</span> ,<span class="pas-num">140</span> ,<span class="pas-num">140</span> );
+
+ <span class="pas-kwd">end</span>;
+
+</pre></font></blockquote>
+
+ <blockquote><font class="doc-down-ex">
+ <a href="agg2d_files/tagg2d_example11.png">
+ <img src="agg2d_files/tagg2d_example11.jpg" width="120" height="124" border="0">
+ </a><p>
+ </font></blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="LineColor"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">LineColor</font>
+ (<font class="doc-id">c</font> )<br>
+
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">LineColor</font>
+ (<font class="doc-id">r</font>,
+ <font class="doc-id">g</font>,
+ <font class="doc-id">b</font>,
+ <font class="doc-id">a</font> )
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Changes the color used on stroke of objects being drawn.<p>
+
+ Default line color is Black (r:0; g:0; b:0; a:255 ).<p>
+
+ Line color doesn't apply if line gradient is in place.
+
+ </blockquote>
+
+ <font class="doc-sect">Parameters</font>
+ <blockquote>
+ <font class="doc-param"><font class="doc-id">c</font> : <font class="doc-type">TAggColor [<a href="#TAggColor">*</a>]</font></font><p>
+ Line color in one data structure (r,g,b,a).
+ <p>
+
+ <font class="doc-param"><font class="doc-id">r</font> : <font class="doc-type">byte</font></font><p>
+ Red channel of Line color [0..255].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">g</font> : <font class="doc-type">byte</font></font><p>
+ Green channel of Line color [0..255].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">b</font> : <font class="doc-type">byte</font></font><p>
+ Blue channel of Line color [0..255].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">a</font> : <font class="doc-type">byte</font> = 255 (Opaque)</font><p>
+ Alpha transparency of Line color [ (transparent) 0 .. 255 (opaque) ].
+
+ </blockquote>
+
+ <font class="doc-sect">Example</font>
+<blockquote><font class="pas-source"><pre class="pas-source">
+ <span class="pas-kwd">if</span> VG.Attach(Image1.Picture.Bitmap ) <span class="pas-kwd">then</span>
+ <span class="pas-kwd">begin</span>
+ VG.ClearAll(<span class="pas-num">255</span> ,<span class="pas-num">255</span> ,<span class="pas-num">255</span> );
+
+ <span class="pas-comment">// Changing Line color to HTML color Medium Blue #0000CD</span>
+ VG.LineColor(<span class="pas-hex">$00</span> ,<span class="pas-hex">$00</span> ,<span class="pas-hex">$CD</span> );
+ VG.Rectangle(<span class="pas-num">30</span> ,<span class="pas-num">30</span> ,<span class="pas-num">180</span> ,<span class="pas-num">80</span> );
+
+ <span class="pas-comment">// Adding Alpha Transparency to previous Line color</span>
+ VG.Translate(<span class="pas-num">0</span> ,<span class="pas-num">80</span> );
+ VG.LineColor(<span class="pas-hex">$00</span> ,<span class="pas-hex">$00</span> ,<span class="pas-hex">$CD</span> ,<span class="pas-num">128</span> );
+ VG.Rectangle(<span class="pas-num">30</span> ,<span class="pas-num">30</span> ,<span class="pas-num">180</span> ,<span class="pas-num">80</span> );
+
+ <span class="pas-kwd">end</span>;
+
+</pre></font></blockquote>
+
+ <blockquote><font class="doc-down-ex">
+ <a href="agg2d_files/tagg2d_example12.png">
+ <img src="agg2d_files/tagg2d_example12.jpg" width="120" height="124" border="0">
+ </a><p>
+ </font></blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="LineColor2"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">LineColor</font>
+ : <font class="doc-type">TAggColor [<a href="#TAggColor">*</a>]</font>
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Retrieves the current color used on stroke of objects being drawn.
+
+ </blockquote>
+
+ <font class="doc-sect">Returns</font>
+ <blockquote>
+ Returned is Line color in one data structure (r,g,b,a).
+
+ </blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="NoLine"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">NoLine</font>
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ This method turns off stroking of objects being drawn. It turns off both line color and
+ gradient lines. From now, all rendering will be done without border around.
+
+ </blockquote>
+
+ <font class="doc-sect">Example</font>
+<blockquote><font class="pas-source"><pre class="pas-source">
+ <span class="pas-kwd">if</span> VG.Attach(Image1.Picture.Bitmap ) <span class="pas-kwd">then</span>
+ <span class="pas-kwd">begin</span>
+ VG.ClearAll(<span class="pas-num">255</span> ,<span class="pas-num">255</span> ,<span class="pas-num">255</span> );
+
+ <span class="pas-comment">// Turn stroking Off</span>
+ VG.NoLine;
+
+ <span class="pas-comment">// HTML color Lime Green #32CD32</span>
+ VG.FillColor(<span class="pas-hex">$32</span> ,<span class="pas-hex">$CD</span> ,<span class="pas-hex">$32</span> );
+ VG.Rectangle(<span class="pas-num">10</span> ,<span class="pas-num">10</span> ,<span class="pas-num">140</span> ,<span class="pas-num">140</span> );
+
+ <span class="pas-comment">// HTML color Indian Red #CD5C5C</span>
+ VG.Translate(<span class="pas-num">20</span> ,<span class="pas-num">20</span> );
+ VG.FillColor(<span class="pas-hex">$CD</span> ,<span class="pas-hex">$5C</span> ,<span class="pas-hex">$5C</span> );
+ VG.Rectangle(<span class="pas-num">10</span> ,<span class="pas-num">10</span> ,<span class="pas-num">140</span> ,<span class="pas-num">140</span> );
+
+ <span class="pas-comment">// HTML color Dark Orchid #9932CC</span>
+ VG.Translate(<span class="pas-num">20</span> ,<span class="pas-num">20</span> );
+ VG.FillColor(<span class="pas-hex">$99</span> ,<span class="pas-hex">$32</span> ,<span class="pas-hex">$CC</span> );
+ VG.Rectangle(<span class="pas-num">10</span> ,<span class="pas-num">10</span> ,<span class="pas-num">140</span> ,<span class="pas-num">140</span> );
+
+ <span class="pas-kwd">end</span>;
+
+</pre></font></blockquote>
+
+ <blockquote><font class="doc-down-ex">
+ <a href="agg2d_files/tagg2d_example13.png">
+ <img src="agg2d_files/tagg2d_example13.jpg" width="120" height="124" border="0">
+ </a><p>
+ </font></blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="FillLinearGradient"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">FillLinearGradient</font>
+ (<font class="doc-id">x1</font>,
+ <font class="doc-id">y1</font>,
+ <font class="doc-id">x2</font>,
+ <font class="doc-id">y2</font>,
+ <font class="doc-id">c1</font>,
+ <font class="doc-id">c2</font>,
+ <font class="doc-id">profile</font> )
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Linear fill gradient increases linearly along the line from starting to ending point and it is constant
+ along perpendicular lines.<p>
+
+ Starting point is defined by <font class="doc-id">x1</font>:<font class="doc-id">y1</font> couple and
+ ending point by <font class="doc-id">x2</font>:<font class="doc-id">y2</font> couple.<p>
+
+ Method internally computes an angle at which the line goes, and gradient gets sloped by that
+ angle all the way.<p>
+
+ Linear fill gradient is consequently used to fill interior of objects being drawn.
+ If there is a need to get the filling before gradient's starting point, the <font class="doc-id">c1</font> color is
+ used as a solid color fill up to the starting point. Similarly space after the ending point
+ is filled with solid <font class="doc-id">c2</font> color fill.<p>
+
+ </blockquote>
+
+ <font class="doc-sect">Parameters</font>
+ <blockquote>
+ <font class="doc-param"><font class="doc-id">x1</font> : <font class="doc-type">double</font></font><p>
+ X coordinate of gradient starting point [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">y1</font> : <font class="doc-type">double</font></font><p>
+ Y coordinate of gradient starting point [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">x2</font> : <font class="doc-type">double</font></font><p>
+ X coordinate of gradient ending point [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">y2</font> : <font class="doc-type">double</font></font><p>
+ Y coordinate of gradient ending point [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">c1</font> : <font class="doc-type">TAggColor [<a href="#TAggColor">*</a>]</font></font><p>
+ First color of the gradient ramp [data sructure (r,g,b,a)].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">c2</font> : <font class="doc-type">TAggColor [<a href="#TAggColor">*</a>]</font></font><p>
+ Last color of the gradient ramp [data sructure (r,g,b,a)].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">profile</font> : <font class="doc-type">double</font> = 1.0</font><p>
+ Defines, how to distribute the color transitions beginning from the halfway between starting and
+ ending points of gradient color ramp. A value of 1 means to distribute colors proportionally on the
+ whole lenght. Values less than 1 approximating to 0 define the ratio by which the transition is
+ distributed more to the halfway position. Values more than 1 define expansion from halfway position,
+ (to a maximum of starting and ending points boundaries).
+
+ </blockquote>
+
+ <font class="doc-sect">Example</font>
+<blockquote><font class="pas-source"><pre class="pas-source">
+ <span class="pas-kwd">if</span> VG.Attach(Image1.Picture.Bitmap ) <span class="pas-kwd">then</span>
+ <span class="pas-kwd">begin</span>
+ VG.ClearAll(<span class="pas-num">255</span> ,<span class="pas-num">255</span> ,<span class="pas-num">255</span> );
+
+ <span class="pas-comment">// Gradient colors - from Red to Yellow</span>
+ c1.Construct(<span class="pas-num">255</span> ,<span class="pas-num">0</span> ,<span class="pas-num">0</span> );
+ c2.Construct(<span class="pas-num">255</span> ,<span class="pas-num">255</span> ,<span class="pas-num">0</span> );
+
+ <span class="pas-comment">// Gradient proceeds from Top Left corner (10:10)</span>
+ <span class="pas-comment">// to the Bottom Right corner</span>
+ <span class="pas-comment">// (ClientWidth - 10:ClientHeight - 10)</span>
+ VG.FillLinearGradient(
+ <span class="pas-num">10</span> ,<span class="pas-num">10</span> ,
+ ClientWidth - <span class="pas-num">10</span> ,
+ ClientHeight - <span class="pas-num">10</span> ,
+ c1 ,c2 ,<span class="pas-float">0.9</span> );
+
+ <span class="pas-comment">// Gradient appears as a filling of objects</span>
+ <span class="pas-comment">// consequently being drawn </span>
+ VG.Rectangle(
+ <span class="pas-num">10</span> ,<span class="pas-num">10</span> ,
+ ClientWidth - <span class="pas-num">10</span> ,
+ ClientHeight - <span class="pas-num">10</span> );
+
+ <span class="pas-kwd">end</span>;
+
+</pre></font></blockquote>
+
+ <blockquote><font class="doc-down-ex">
+ <a href="agg2d_files/tagg2d_example14.png">
+ <img src="agg2d_files/tagg2d_example14.jpg" width="120" height="124" border="0">
+ </a><p>
+ </font></blockquote>
+
+ <font class="doc-sect">Remarks</font>
+ <blockquote class="doc-note">
+ One important note about gradients in <font class="doc-type">TAgg2D</font> is that gradients
+ are defined per surface and not per rendering object. Gradient location and dimensions relates
+ to origin of surface and coordinates transformations transform also gradients definition.
+ So after setup of one gradient (for fill or stroke) a series of drawing shapes will render across
+ the last defined gradient.
+
+ </blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="LineLinearGradient"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">LineLinearGradient</font>
+ (<font class="doc-id">x1</font>,
+ <font class="doc-id">y1</font>,
+ <font class="doc-id">x2</font>,
+ <font class="doc-id">y2</font>,
+ <font class="doc-id">c1</font>,
+ <font class="doc-id">c2</font>,
+ <font class="doc-id">profile</font> )
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Linear line gradient increases linearly along the line from starting to ending point and it is constant
+ along perpendicular lines.<p>
+
+ Starting point is defined by <font class="doc-id">x1</font>:<font class="doc-id">y1</font> couple and
+ ending point by <font class="doc-id">x2</font>:<font class="doc-id">y2</font> couple.<p>
+
+ Method internally computes an angle at which the line goes, and gradient gets sloped by that
+ angle all the way.<p>
+
+ Linear line gradient is consequently used to fill strokes of objects being drawn.
+ If there is a need to get the stroke filling before gradient's starting point, the <font class="doc-id">c1</font> color is
+ used as a solid color fill up to the starting point. Similarly space after the ending point
+ is filled with solid <font class="doc-id">c2</font> color fill.<p>
+
+
+ </blockquote>
+
+ <font class="doc-sect">Parameters</font>
+ <blockquote>
+ <font class="doc-param"><font class="doc-id">x1</font> : <font class="doc-type">double</font></font><p>
+ X coordinate of gradient starting point [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">y1</font> : <font class="doc-type">double</font></font><p>
+ Y coordinate of gradient starting point [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">x2</font> : <font class="doc-type">double</font></font><p>
+ X coordinate of gradient ending point [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">y2</font> : <font class="doc-type">double</font></font><p>
+ Y coordinate of gradient ending point [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">c1</font> : <font class="doc-type">TAggColor [<a href="#TAggColor">*</a>]</font></font><p>
+ First color of the gradient ramp [data sructure (r,g,b,a)].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">c2</font> : <font class="doc-type">TAggColor [<a href="#TAggColor">*</a>]</font></font><p>
+ Last color of the gradient ramp [data sructure (r,g,b,a)].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">profile</font> : <font class="doc-type">double</font> = 1.0</font><p>
+ Defines, how to distribute the color transitions beginning from the halfway between starting and
+ ending points of gradient color ramp. A value of 1 means to distribute colors proportionally on the
+ whole lenght. Values less than 1 approximating to 0 define the ratio by which the transition is
+ distributed more to the halfway position. Values more than 1 define expansion from halfway position,
+ (to a maximum of starting and ending points boundaries).
+
+ </blockquote>
+
+ <font class="doc-sect">Example</font>
+<blockquote><font class="pas-source"><pre class="pas-source">
+ <span class="pas-kwd">if</span> VG.Attach(Image1.Picture.Bitmap ) <span class="pas-kwd">then</span>
+ <span class="pas-kwd">begin</span>
+ VG.ClearAll(<span class="pas-num">255</span> ,<span class="pas-num">255</span> ,<span class="pas-num">255</span> );
+
+ <span class="pas-comment">// Turn off filling &amp; Set wide stroke</span>
+ VG.NoFill;
+ VG.LineWidth(<span class="pas-num">20</span> );
+
+ <span class="pas-comment">// Gradient colors</span>
+ <span class="pas-comment">// from DeepSkyBlue #00BFFF - DarkRed #8B0000</span>
+ c1.Construct(<span class="pas-hex">$00</span> ,<span class="pas-hex">$BF</span> ,<span class="pas-hex">$FF</span> );
+ c2.Construct(<span class="pas-hex">$8B</span> ,<span class="pas-hex">$00</span> ,<span class="pas-hex">$00</span> );
+
+ <span class="pas-comment">// Gradient proceeds from Top Left corner (20:20)</span>
+ <span class="pas-comment">// to the Bottom Right corner</span>
+ <span class="pas-comment">// (ClientWidth - 20:ClientHeight - 20)</span>
+ VG.LineLinearGradient(
+ <span class="pas-num">20</span> ,<span class="pas-num">20</span> ,
+ ClientWidth - <span class="pas-num">20</span> ,
+ ClientHeight - <span class="pas-num">20</span> ,
+ c1 ,c2 ,<span class="pas-float">0.9</span> );
+
+ <span class="pas-comment">// Gradient appears as a filling of objects stroke</span>
+ VG.Rectangle(
+ <span class="pas-num">20</span> ,<span class="pas-num">20</span> ,
+ ClientWidth - <span class="pas-num">20</span> ,
+ ClientHeight - <span class="pas-num">20</span> );
+
+ <span class="pas-kwd">end</span>;
+
+</pre></font></blockquote>
+
+ <blockquote><font class="doc-down-ex">
+ <a href="agg2d_files/tagg2d_example15.png">
+ <img src="agg2d_files/tagg2d_example15.jpg" width="120" height="124" border="0">
+ </a><p>
+ </font></blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="FillRadialGradient"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">FillRadialGradient</font>
+ (<font class="doc-id">x</font>,
+ <font class="doc-id">y</font>,
+ <font class="doc-id">r</font>,
+ <font class="doc-id">c1</font>,
+ <font class="doc-id">c2</font>,
+ <font class="doc-id">profile</font> )
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Radial fill gradient produces equally proportioned circles of colors increasing from the origin
+ to the outer bound.<p>
+
+ Gradient's origin (center point) is defined by the <font class="doc-id">x</font>:<font class="doc-id">y</font>
+ couple and the extent of the gradient is defined with radius <font class="doc-id">r</font>.<p>
+
+ Radial fill gradient is consequently used to fill interior of objects being drawn. If there is a need
+ to get the filling beyond gradient radius boundary, the <font class="doc-id">c2</font> color is used
+ as a solid color fill.
+
+ </blockquote>
+
+ <font class="doc-sect">Parameters</font>
+ <blockquote>
+ <font class="doc-param"><font class="doc-id">x</font> : <font class="doc-type">double</font></font><p>
+ X coordinate of gradient center point [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">y</font> : <font class="doc-type">double</font></font><p>
+ Y coordinate of gradient center point [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">r</font> : <font class="doc-type">double</font></font><p>
+ Radius of gradient outer bound circle [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">c1</font> : <font class="doc-type">TAggColor [<a href="#TAggColor">*</a>]</font></font><p>
+ First color of the gradient ramp used at center point<br>
+ [data sructure (r,g,b,a)].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">c2</font> : <font class="doc-type">TAggColor [<a href="#TAggColor">*</a>]</font></font><p>
+ Last color of the gradient ramp used at gradient circle bound<br>
+ [data sructure (r,g,b,a)].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">profile</font> : <font class="doc-type">double</font> = 1.0</font><p>
+ Defines, how to distribute the color transitions beginning from the halfway between center point and
+ gradient circle outer bound. A value of 1 means to distribute colors proportionally on the
+ whole radius. Values less than 1 approximating to 0 define the ratio by which the transition is
+ distributed more to the halfway position. Values more than 1 define expansion from halfway position,
+ (to a maximum of gradient circle outer bound).
+
+ </blockquote>
+
+ <font class="doc-sect">Example</font>
+<blockquote><font class="pas-source"><pre class="pas-source">
+ <span class="pas-kwd">if</span> VG.Attach(Image1.Picture.Bitmap ) <span class="pas-kwd">then</span>
+ <span class="pas-kwd">begin</span>
+ VG.ClearAll(<span class="pas-num">255</span> ,<span class="pas-num">255</span> ,<span class="pas-num">255</span> );
+
+ <span class="pas-comment">// Gradient colors</span>
+ <span class="pas-comment">// from DeepSkyBlue #00BFFF - Red #FF0000</span>
+ c1.Construct(<span class="pas-hex">$00</span> ,<span class="pas-hex">$BF</span> ,<span class="pas-hex">$FF</span> );
+ c2.Construct(<span class="pas-hex">$FF</span> ,<span class="pas-hex">$00</span> ,<span class="pas-hex">$00</span> );
+
+ <span class="pas-comment">// Gradient proceeds from center point</span>
+ <span class="pas-comment">// (ClientWidth / 2:ClientHeight / 2 )</span>
+ <span class="pas-comment">// with extent of (ClientWidth - 30 ) / 2</span>
+ VG.FillRadialGradient(
+ ClientWidth / <span class="pas-num">2</span> ,ClientHeight / <span class="pas-num">2</span> ,
+ (ClientWidth - <span class="pas-num">30</span> ) / <span class="pas-num">2</span> ,
+ c1 ,c2 ,<span class="pas-float">1.0</span> );
+
+ <span class="pas-comment">// Gradient appears as a filling of objects being drawn</span>
+ VG.Ellipse(
+ ClientWidth / <span class="pas-num">2</span> ,ClientHeight / <span class="pas-num">2</span> ,
+ (ClientWidth - <span class="pas-num">30</span> ) / <span class="pas-num">2</span> ,
+ (ClientWidth - <span class="pas-num">30</span> ) / <span class="pas-num">2</span> );
+
+ <span class="pas-kwd">end</span>;
+
+</pre></font></blockquote>
+
+ <blockquote><font class="doc-down-ex">
+ <a href="agg2d_files/tagg2d_example16.png">
+ <img src="agg2d_files/tagg2d_example16.jpg" width="120" height="124" border="0">
+ </a><p>
+ </font></blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="LineRadialGradient"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">LineRadialGradient</font>
+ (<font class="doc-id">x</font>,
+ <font class="doc-id">y</font>,
+ <font class="doc-id">r</font>,
+ <font class="doc-id">c1</font>,
+ <font class="doc-id">c2</font>,
+ <font class="doc-id">profile</font> )
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Radial line gradient produces equally proportioned circles of colors increasing from the origin
+ to the outer bound.<p>
+
+ Gradient's origin (center point) is defined by the <font class="doc-id">x</font>:<font class="doc-id">y</font>
+ couple and the extent of the gradient is defined with radius <font class="doc-id">r</font>.<p>
+
+ Radial line gradient is consequently used to fill strokes of objects being drawn. If there is a need
+ to get the filling beyond gradient radius boundary, the <font class="doc-id">c2</font> color is used
+ as a solid color fill.
+
+ </blockquote>
+
+ <font class="doc-sect">Parameters</font>
+ <blockquote>
+ <font class="doc-param"><font class="doc-id">x</font> : <font class="doc-type">double</font></font><p>
+ X coordinate of gradient center point [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">y</font> : <font class="doc-type">double</font></font><p>
+ Y coordinate of gradient center point [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">r</font> : <font class="doc-type">double</font></font><p>
+ Radius of gradient outer bound circle [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">c1</font> : <font class="doc-type">TAggColor [<a href="#TAggColor">*</a>]</font></font><p>
+ First color of the gradient ramp used at center point<br>
+ [data sructure (r,g,b,a)].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">c2</font> : <font class="doc-type">TAggColor [<a href="#TAggColor">*</a>]</font></font><p>
+ Last color of the gradient ramp used at gradient circle bound<br>
+ [data sructure (r,g,b,a)].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">profile</font> : <font class="doc-type">double</font> = 1.0</font><p>
+ Defines, how to distribute the color transitions beginning from the halfway between center point and
+ gradient circle outer bound. A value of 1 means to distribute colors proportionally on the
+ whole radius. Values less than 1 approximating to 0 define the ratio by which the transition is
+ distributed more to the halfway position. Values more than 1 define expansion from halfway position,
+ (to a maximum of gradient circle outer bound).
+
+ </blockquote>
+
+ <font class="doc-sect">Example</font>
+<blockquote><font class="pas-source"><pre class="pas-source">
+ <span class="pas-kwd">if</span> VG.Attach(Image1.Picture.Bitmap ) <span class="pas-kwd">then</span>
+ <span class="pas-kwd">begin</span>
+ VG.ClearAll(<span class="pas-num">255</span> ,<span class="pas-num">255</span> ,<span class="pas-num">255</span> );
+
+ <span class="pas-comment">// Turn off fill &amp; set bold line</span>
+ VG.NoFill;
+ VG.LineWidth(<span class="pas-num">15</span> );
+
+ <span class="pas-comment">// Gradient colors from Red to Blue</span>
+ c1.Construct(<span class="pas-hex">$FF</span> ,<span class="pas-hex">$00</span> ,<span class="pas-hex">$00</span> );
+ c2.Construct(<span class="pas-hex">$00</span> ,<span class="pas-hex">$00</span> ,<span class="pas-hex">$FF</span> );
+
+ <span class="pas-comment">// Gradient proceeds from center point</span>
+ <span class="pas-comment">// (ClientWidth / 2:ClientHeight / 2 )</span>
+ <span class="pas-comment">// with extent of (ClientWidth + 70 ) / 2</span>
+ <span class="pas-comment">// Concentration profile of 0.2 helps</span>
+ <span class="pas-comment">// to place gradient on the stroke of circle</span>
+ VG.LineRadialGradient(
+ ClientWidth / <span class="pas-num">2</span> ,ClientHeight / <span class="pas-num">2</span> ,
+ (ClientWidth + <span class="pas-num">70</span> ) / <span class="pas-num">2</span> ,
+ c1 ,c2 ,<span class="pas-float">0.2</span> );
+
+ <span class="pas-comment">// Circle </span>
+ VG.Ellipse(
+ ClientWidth / <span class="pas-num">2</span> ,ClientHeight / <span class="pas-num">2</span> ,
+ (ClientWidth - <span class="pas-num">80</span> ) / <span class="pas-num">2</span> ,
+ (ClientWidth - <span class="pas-num">80</span> ) / <span class="pas-num">2</span> );
+
+ <span class="pas-kwd">end</span>;
+
+</pre></font></blockquote>
+
+ <blockquote><font class="doc-down-ex">
+ <a href="agg2d_files/tagg2d_example17.png">
+ <img src="agg2d_files/tagg2d_example17.jpg" width="120" height="124" border="0">
+ </a><p>
+ </font></blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="FillRadialGradient2"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">FillRadialGradient</font>
+ (<font class="doc-id">x</font>,
+ <font class="doc-id">y</font>,
+ <font class="doc-id">r</font>,
+ <font class="doc-id">c1</font>,
+ <font class="doc-id">c2</font>,
+ <font class="doc-id">c3</font> )
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Radial fill gradient produces equally proportioned circles of colors increasing from the origin
+ to the outer bound.<p>
+
+ Gradient's origin (center point) is defined by the <font class="doc-id">x</font>:<font class="doc-id">y</font>
+ couple and the extent of the gradient is defined with radius <font class="doc-id">r</font>.<p>
+
+ This gradient variant has a transition consisting of three colors equally distributed from the
+ center point to the outer circle bound.<p>
+
+ Radial fill gradient is consequently used to fill interior of objects being drawn. If there is a need
+ to get the filling beyond gradient radius boundary, the <font class="doc-id">c3</font> color is used
+ as a solid color fill.
+
+ </blockquote>
+
+ <font class="doc-sect">Parameters</font>
+ <blockquote>
+ <font class="doc-param"><font class="doc-id">x</font> : <font class="doc-type">double</font></font><p>
+ X coordinate of gradient center point [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">y</font> : <font class="doc-type">double</font></font><p>
+ Y coordinate of gradient center point [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">r</font> : <font class="doc-type">double</font></font><p>
+ Radius of gradient outer bound circle [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">c1</font> : <font class="doc-type">TAggColor [<a href="#TAggColor">*</a>]</font></font><p>
+ First color of the gradient ramp used at center point<br>
+ [data sructure (r,g,b,a)].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">c2</font> : <font class="doc-type">TAggColor [<a href="#TAggColor">*</a>]</font></font><p>
+ Second color of the gradient ramp used at middle<br>
+ [data sructure (r,g,b,a)].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">c3</font> : <font class="doc-type">TAggColor [<a href="#TAggColor">*</a>]</font></font><p>
+ Last color of the gradient ramp used at gradient circle bound<br>
+ [data sructure (r,g,b,a)].
+
+ </blockquote>
+
+ <font class="doc-sect">Example</font>
+<blockquote><font class="pas-source"><pre class="pas-source">
+ <span class="pas-kwd">if</span> VG.Attach(Image1.Picture.Bitmap ) <span class="pas-kwd">then</span>
+ <span class="pas-kwd">begin</span>
+ VG.ClearAll(<span class="pas-num">255</span> ,<span class="pas-num">255</span> ,<span class="pas-num">255</span> );
+
+ <span class="pas-comment">// Gradient colors Blue - Green - Red</span>
+ c1.Construct(<span class="pas-hex">$00</span> ,<span class="pas-hex">$00</span> ,<span class="pas-hex">$FF</span> );
+ c2.Construct(<span class="pas-hex">$00</span> ,<span class="pas-hex">$FF</span> ,<span class="pas-hex">$00</span> );
+ c3.Construct(<span class="pas-hex">$FF</span> ,<span class="pas-hex">$00</span> ,<span class="pas-hex">$00</span> );
+
+ <span class="pas-comment">// Gradient proceeds from center point</span>
+ <span class="pas-comment">// (ClientWidth / 2:ClientHeight / 2 )</span>
+ <span class="pas-comment">// with extent of (ClientWidth - 30 ) / 2</span>
+ VG.FillRadialGradient(
+ ClientWidth / <span class="pas-num">2</span> ,ClientHeight / <span class="pas-num">2</span> ,
+ (ClientWidth - <span class="pas-num">30</span> ) / <span class="pas-num">2</span> ,
+ c1 ,c2 ,c3 );
+
+ <span class="pas-comment">// Circle</span>
+ VG.Ellipse(
+ ClientWidth / <span class="pas-num">2</span> ,ClientHeight / <span class="pas-num">2</span> ,
+ (ClientWidth - <span class="pas-num">30</span> ) / <span class="pas-num">2</span> ,
+ (ClientWidth - <span class="pas-num">30</span> ) / <span class="pas-num">2</span> );
+
+ <span class="pas-kwd">end</span>;
+
+</pre></font></blockquote>
+
+ <blockquote><font class="doc-down-ex">
+ <a href="agg2d_files/tagg2d_example18.png">
+ <img src="agg2d_files/tagg2d_example18.jpg" width="120" height="124" border="0">
+ </a><p>
+ </font></blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="LineRadialGradient2"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">LineRadialGradient</font>
+ (<font class="doc-id">x</font>,
+ <font class="doc-id">y</font>,
+ <font class="doc-id">r</font>,
+ <font class="doc-id">c1</font>,
+ <font class="doc-id">c2</font>,
+ <font class="doc-id">c3</font> )
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Radial line gradient produces equally proportioned circles of colors increasing from the origin
+ to the outer bound.<p>
+
+ Gradient's origin (center point) is defined by the <font class="doc-id">x</font>:<font class="doc-id">y</font>
+ couple and the extent of the gradient is defined with radius <font class="doc-id">r</font>.<p>
+
+ This gradient variant has a transition consisting of three colors equally distributed from the
+ center point to the outer circle bound.<p>
+
+ Radial line gradient is consequently used to fill strokes of objects being drawn. If there is a need
+ to get the filling beyond gradient radius boundary, the <font class="doc-id">c3</font> color is used
+ as a solid color fill.
+
+ </blockquote>
+
+ <font class="doc-sect">Parameters</font>
+ <blockquote>
+ <font class="doc-param"><font class="doc-id">x</font> : <font class="doc-type">double</font></font><p>
+ X coordinate of gradient center point [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">y</font> : <font class="doc-type">double</font></font><p>
+ Y coordinate of gradient center point [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">r</font> : <font class="doc-type">double</font></font><p>
+ Radius of gradient outer bound circle [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">c1</font> : <font class="doc-type">TAggColor [<a href="#TAggColor">*</a>]</font></font><p>
+ First color of the gradient ramp used at center point<br>
+ [data sructure (r,g,b,a)].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">c2</font> : <font class="doc-type">TAggColor [<a href="#TAggColor">*</a>]</font></font><p>
+ Second color of the gradient ramp used at middle<br>
+ [data sructure (r,g,b,a)].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">c3</font> : <font class="doc-type">TAggColor [<a href="#TAggColor">*</a>]</font></font><p>
+ Last color of the gradient ramp used at gradient circle bound<br>
+ [data sructure (r,g,b,a)].
+
+ </blockquote>
+
+ <font class="doc-sect">Example</font>
+<blockquote><font class="pas-source"><pre class="pas-source">
+ <span class="pas-kwd">if</span> VG.Attach(Image1.Picture.Bitmap ) <span class="pas-kwd">then</span>
+ <span class="pas-kwd">begin</span>
+ VG.ClearAll(<span class="pas-num">255</span> ,<span class="pas-num">255</span> ,<span class="pas-num">255</span> );
+
+ <span class="pas-comment">// Turn fill off &amp; set bold line</span>
+ VG.NoFill;
+ VG.LineWidth(<span class="pas-num">15</span> );
+
+ <span class="pas-comment">// Gradient colors Blue - Green - Red</span>
+ c1.Construct(<span class="pas-hex">$00</span> ,<span class="pas-hex">$00</span> ,<span class="pas-hex">$FF</span> );
+ c2.Construct(<span class="pas-hex">$00</span> ,<span class="pas-hex">$FF</span> ,<span class="pas-hex">$00</span> );
+ c3.Construct(<span class="pas-hex">$FF</span> ,<span class="pas-hex">$00</span> ,<span class="pas-hex">$00</span> );
+
+ <span class="pas-comment">// Gradient proceeds from center point</span>
+ <span class="pas-comment">// (ClientWidth / 2:ClientHeight / 2 )</span>
+ <span class="pas-comment">// with extent of (ClientWidth - 30 ) / 2</span>
+ VG.LineRadialGradient(
+ ClientWidth / <span class="pas-num">2</span> ,ClientHeight / <span class="pas-num">2</span> ,
+ (ClientWidth - <span class="pas-num">30</span> ) / <span class="pas-num">2</span> ,
+ c1 ,c2 ,c3 );
+
+ <span class="pas-comment">// Cross lines</span>
+ VG.Line(
+ <span class="pas-num">10</span> ,ClientHeight / <span class="pas-num">2</span> ,
+ ClientWidth - <span class="pas-num">10</span> ,ClientHeight / <span class="pas-num">2</span> );
+
+ VG.Line(
+ ClientWidth / <span class="pas-num">2</span> ,<span class="pas-num">10</span> ,
+ ClientWidth / <span class="pas-num">2</span> ,ClientHeight - <span class="pas-num">10</span> );
+
+ <span class="pas-comment">// Rotate +45 degrees</span>
+ VG.Translate(-ClientWidth / <span class="pas-num">2</span> ,-ClientHeight / <span class="pas-num">2</span> );
+ VG.Rotate (Deg2Rad(<span class="pas-num">45</span> ) );
+ VG.Translate(ClientWidth / <span class="pas-num">2</span> ,ClientHeight / <span class="pas-num">2</span> );
+
+ <span class="pas-comment">// Same cross lines</span>
+ VG.Line(
+ <span class="pas-num">10</span> ,ClientHeight / <span class="pas-num">2</span> ,
+ ClientWidth - <span class="pas-num">10</span> ,ClientHeight / <span class="pas-num">2</span> );
+
+ VG.Line(
+ ClientWidth / <span class="pas-num">2</span> ,<span class="pas-num">10</span> ,
+ ClientWidth / <span class="pas-num">2</span> ,ClientHeight - <span class="pas-num">10</span> );
+
+ <span class="pas-kwd">end</span>;
+
+</pre></font></blockquote>
+
+ <blockquote><font class="doc-down-ex">
+ <a href="agg2d_files/tagg2d_example19.png">
+ <img src="agg2d_files/tagg2d_example19.jpg" width="120" height="129" border="0">
+ </a><p>
+ </font></blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="FillRadialGradient3"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">FillRadialGradient</font>
+ (<font class="doc-id">x</font>,
+ <font class="doc-id">y</font>,
+ <font class="doc-id">r</font> )
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ This method redefines the physical geometry of already defined radial fill gradient.
+ It's useful when you draw a series of objects filled with seemingly own radial
+ gradients based on the same color ramp.
+
+ </blockquote>
+
+ <font class="doc-sect">Parameters</font>
+ <blockquote>
+ <font class="doc-param"><font class="doc-id">x</font> : <font class="doc-type">double</font></font><p>
+ X coordinate of gradient center point [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">y</font> : <font class="doc-type">double</font></font><p>
+ Y coordinate of gradient center point [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">r</font> : <font class="doc-type">double</font></font><p>
+ Radius of gradient outer bound circle [in subpixels].
+
+ </blockquote>
+
+ <font class="doc-sect">Example</font>
+<blockquote><font class="pas-source"><pre class="pas-source">
+ <span class="pas-kwd">if</span> VG.Attach(Image1.Picture.Bitmap ) <span class="pas-kwd">then</span>
+ <span class="pas-kwd">begin</span>
+ VG.ClearAll(<span class="pas-num">255</span> ,<span class="pas-num">255</span> ,<span class="pas-num">255</span> );
+
+ <span class="pas-comment">// Turn off stroking </span>
+ VG.NoLine;
+
+ <span class="pas-comment">// Gradient colors Blue - Green - Red</span>
+ c1.Construct(<span class="pas-hex">$00</span> ,<span class="pas-hex">$00</span> ,<span class="pas-hex">$FF</span> );
+ c2.Construct(<span class="pas-hex">$00</span> ,<span class="pas-hex">$FF</span> ,<span class="pas-hex">$00</span> );
+ c3.Construct(<span class="pas-hex">$FF</span> ,<span class="pas-hex">$00</span> ,<span class="pas-hex">$00</span> );
+
+ <span class="pas-comment">// First 3color radial gradient &amp; circle filled with</span>
+ VG.FillRadialGradient(<span class="pas-num">50</span> ,<span class="pas-num">50</span> ,<span class="pas-num">40</span> ,c1 ,c2 ,c3 );
+ VG.Ellipse (<span class="pas-num">50</span> ,<span class="pas-num">50</span> ,<span class="pas-num">40</span> ,<span class="pas-num">40</span> );
+
+ <span class="pas-comment">// Redefine gradient geometry</span>
+ VG.FillRadialGradient(<span class="pas-num">105</span> ,<span class="pas-num">105</span> ,<span class="pas-num">30</span> );
+ VG.Ellipse (<span class="pas-num">105</span> ,<span class="pas-num">105</span> ,<span class="pas-num">30</span> ,<span class="pas-num">30</span> );
+
+ <span class="pas-comment">// Redefine gradient geometry</span>
+ VG.FillRadialGradient(<span class="pas-num">150</span> ,<span class="pas-num">150</span> ,<span class="pas-num">20</span> );
+ VG.Ellipse (<span class="pas-num">150</span> ,<span class="pas-num">150</span> ,<span class="pas-num">20</span> ,<span class="pas-num">20</span> );
+
+ <span class="pas-comment">// Redefine gradient geometry</span>
+ VG.FillRadialGradient(<span class="pas-num">180</span> ,<span class="pas-num">180</span> ,<span class="pas-num">10</span> );
+ VG.Ellipse (<span class="pas-num">180</span> ,<span class="pas-num">180</span> ,<span class="pas-num">10</span> ,<span class="pas-num">10</span> );
+
+ <span class="pas-kwd">end</span>;
+
+</pre></font></blockquote>
+
+ <blockquote><font class="doc-down-ex">
+ <a href="agg2d_files/tagg2d_example20.png">
+ <img src="agg2d_files/tagg2d_example20.jpg" width="120" height="124" border="0">
+ </a><p>
+ </font></blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="LineRadialGradient3"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">LineRadialGradient</font>
+ (<font class="doc-id">x</font>,
+ <font class="doc-id">y</font>,
+ <font class="doc-id">r</font> )
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ This method redefines the physical geometry of already defined radial line gradient.
+ It's useful when you draw a series of objects with strokes filled with seemingly own radial
+ gradients based on the same color ramp.
+
+ </blockquote>
+
+ <font class="doc-sect">Parameters</font>
+ <blockquote>
+ <font class="doc-param"><font class="doc-id">x</font> : <font class="doc-type">double</font></font><p>
+ X coordinate of gradient center point [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">y</font> : <font class="doc-type">double</font></font><p>
+ Y coordinate of gradient center point [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">r</font> : <font class="doc-type">double</font></font><p>
+ Radius of gradient outer bound circle [in subpixels].
+
+ </blockquote>
+
+ <font class="doc-sect">Example</font>
+<blockquote><font class="pas-source"><pre class="pas-source">
+ <span class="pas-kwd">if</span> VG.Attach(Image1.Picture.Bitmap ) <span class="pas-kwd">then</span>
+ <span class="pas-kwd">begin</span>
+ VG.ClearAll(<span class="pas-num">255</span> ,<span class="pas-num">255</span> ,<span class="pas-num">255</span> );
+
+ <span class="pas-comment">// Turn off fill &amp; set bold line</span>
+ VG.NoFill;
+ VG.LineWidth(<span class="pas-num">20</span> );
+
+ <span class="pas-comment">// Gradient colors Blue - Yellow - Red</span>
+ c1.Construct(<span class="pas-hex">$00</span> ,<span class="pas-hex">$00</span> ,<span class="pas-hex">$FF</span> );
+ c2.Construct(<span class="pas-hex">$FF</span> ,<span class="pas-hex">$FF</span> ,<span class="pas-hex">$00</span> );
+ c3.Construct(<span class="pas-hex">$FF</span> ,<span class="pas-hex">$00</span> ,<span class="pas-hex">$00</span> );
+
+ <span class="pas-comment">// First 3color radial gradient &amp; circle filled with</span>
+ VG.LineRadialGradient(<span class="pas-num">20</span> ,<span class="pas-num">30</span> ,<span class="pas-num">120</span> ,c1 ,c2 ,c3 );
+ VG.Line (<span class="pas-num">20</span> ,<span class="pas-num">30</span> ,<span class="pas-num">120</span> + <span class="pas-num">20</span> ,<span class="pas-num">30</span> );
+
+ <span class="pas-comment">// Redefine gradient geometry</span>
+ VG.LineRadialGradient(<span class="pas-num">70</span> ,<span class="pas-num">90</span> ,<span class="pas-num">100</span> );
+ VG.Line (<span class="pas-num">70</span> ,<span class="pas-num">90</span> ,<span class="pas-num">100</span> + <span class="pas-num">70</span> ,<span class="pas-num">90</span> );
+
+ <span class="pas-comment">// Redefine gradient geometry</span>
+ VG.LineRadialGradient(<span class="pas-num">110</span> ,<span class="pas-num">150</span> ,<span class="pas-num">80</span> );
+ VG.Line (<span class="pas-num">110</span> ,<span class="pas-num">150</span> ,<span class="pas-num">80</span> + <span class="pas-num">110</span> ,<span class="pas-num">150</span> );
+
+ <span class="pas-kwd">end</span>;
+
+</pre></font></blockquote>
+
+ <blockquote><font class="doc-down-ex">
+ <a href="agg2d_files/tagg2d_example21.png">
+ <img src="agg2d_files/tagg2d_example21.jpg" width="120" height="124" border="0">
+ </a><p>
+ </font></blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="LineWidth"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">LineWidth</font>
+ (<font class="doc-id">w</font> )
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Changes the thickness of strokes of objects being drawn. This apply only if stroking
+ is enabled (some color or gradient is defined for lines).
+
+ </blockquote>
+
+ <font class="doc-sect">Parameters</font>
+ <blockquote>
+ <font class="doc-param"><font class="doc-id">w</font> : <font class="doc-type">double</font></font><p>
+ A new width of line (stroke) [in subpixels].
+
+ </blockquote>
+
+ <font class="doc-sect">Example</font>
+<blockquote><font class="pas-source"><pre class="pas-source">
+ <span class="pas-kwd">if</span> VG.Attach(Image1.Picture.Bitmap ) <span class="pas-kwd">then</span>
+ <span class="pas-kwd">begin</span>
+ VG.ClearAll(<span class="pas-num">255</span> ,<span class="pas-num">255</span> ,<span class="pas-num">255</span> );
+
+ <span class="pas-comment">// Draw lines with increasing width </span>
+ VG.Translate(<span class="pas-num">0</span> ,<span class="pas-num">10</span> );
+ VG.LineWidth(<span class="pas-float">0.1</span> );
+ VG.Line (<span class="pas-num">30</span> ,<span class="pas-float">10.5</span> ,<span class="pas-num">180</span> ,<span class="pas-float">10.5</span> );
+
+ VG.Translate(<span class="pas-num">0</span> ,<span class="pas-num">10</span> );
+ VG.LineWidth(<span class="pas-float">0.5</span> );
+ VG.Line (<span class="pas-num">30</span> ,<span class="pas-float">10.5</span> ,<span class="pas-num">180</span> ,<span class="pas-float">10.5</span> );
+
+ VG.Translate(<span class="pas-num">0</span> ,<span class="pas-num">10</span> );
+ VG.LineWidth(<span class="pas-num">1</span> );
+ VG.Line (<span class="pas-num">30</span> ,<span class="pas-float">10.5</span> ,<span class="pas-num">180</span> ,<span class="pas-float">10.5</span> );
+
+ VG.Translate(<span class="pas-num">0</span> ,<span class="pas-num">10</span> );
+ VG.LineWidth(<span class="pas-num">2</span> );
+ VG.Line (<span class="pas-num">30</span> ,<span class="pas-float">10.5</span> ,<span class="pas-num">180</span> ,<span class="pas-float">10.5</span> );
+
+ VG.Translate(<span class="pas-num">0</span> ,<span class="pas-num">15</span> );
+ VG.LineWidth(<span class="pas-num">5</span> );
+ VG.Line (<span class="pas-num">30</span> ,<span class="pas-float">10.5</span> ,<span class="pas-num">180</span> ,<span class="pas-float">10.5</span> );
+
+ VG.Translate(<span class="pas-num">0</span> ,<span class="pas-num">20</span> );
+ VG.LineWidth(<span class="pas-num">10</span> );
+ VG.Line (<span class="pas-num">30</span> ,<span class="pas-float">10.5</span> ,<span class="pas-num">180</span> ,<span class="pas-float">10.5</span> );
+
+ VG.Translate(<span class="pas-num">0</span> ,<span class="pas-num">30</span> );
+ VG.LineWidth(<span class="pas-num">20</span> );
+ VG.Line (<span class="pas-num">30</span> ,<span class="pas-float">10.5</span> ,<span class="pas-num">180</span> ,<span class="pas-float">10.5</span> );
+
+ VG.Translate(<span class="pas-num">0</span> ,<span class="pas-num">40</span> );
+ VG.LineWidth(<span class="pas-num">40</span> );
+ VG.Line (<span class="pas-num">30</span> ,<span class="pas-float">10.5</span> ,<span class="pas-num">180</span> ,<span class="pas-float">10.5</span> );
+
+ <span class="pas-kwd">end</span>;
+
+</pre></font></blockquote>
+
+ <blockquote><font class="doc-down-ex">
+ <a href="agg2d_files/tagg2d_example22.png">
+ <img src="agg2d_files/tagg2d_example22.jpg" width="120" height="124" border="0">
+ </a><p>
+ </font></blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="LineWidth2"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">LineWidth</font>
+ : <font class="doc-type">double</font>
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Retrieves the current width of line.
+
+ </blockquote>
+
+ <font class="doc-sect">Returns</font>
+ <blockquote>
+ Returned is the width of strokes (lines) [in subpixels].
+
+ </blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="LineCap"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">LineCap</font>
+ (<font class="doc-id">cap</font> )
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Changes the current type of stroke (line) ending.<p>
+
+ The default value is <font class="doc-enum">AGG_CapRound</font>.
+
+ </blockquote>
+
+ <font class="doc-sect">Parameters</font>
+ <blockquote>
+ <font class="doc-param"><font class="doc-id">cap</font> : <font class="doc-type">TAggLineCap [<a href="#TAggLineCap">*</a>]</font></font><p>
+ Constant specifying a new value of line cap.
+
+ </blockquote>
+
+ <font class="doc-sect">Example</font>
+<blockquote><font class="pas-source"><pre class="pas-source">
+ <span class="pas-kwd">if</span> VG.Attach(Image1.Picture.Bitmap ) <span class="pas-kwd">then</span>
+ <span class="pas-kwd">begin</span>
+ VG.ClearAll(<span class="pas-num">255</span> ,<span class="pas-num">255</span> ,<span class="pas-num">255</span> );
+
+ <span class="pas-comment">// Bold line </span>
+ VG.LineWidth(<span class="pas-num">30</span> );
+
+ <span class="pas-comment">// Default AGG_CapRound</span>
+ VG.Line(<span class="pas-num">40</span> ,<span class="pas-num">40</span> ,<span class="pas-num">180</span> ,<span class="pas-num">40</span> );
+
+ <span class="pas-comment">// Change to AGG_CapSquare</span>
+ VG.LineCap (AGG_CapSquare );
+ VG.Translate(<span class="pas-num">0</span> ,<span class="pas-num">55</span> );
+
+ VG.Line(<span class="pas-num">40</span> ,<span class="pas-num">40</span> ,<span class="pas-num">180</span> ,<span class="pas-num">40</span> );
+
+ <span class="pas-comment">// Change to AGG_CapButt</span>
+ VG.LineCap (AGG_CapButt );
+ VG.Translate(<span class="pas-num">0</span> ,<span class="pas-num">55</span> );
+
+ VG.Line(<span class="pas-num">40</span> ,<span class="pas-num">40</span> ,<span class="pas-num">180</span> ,<span class="pas-num">40</span> );
+
+ <span class="pas-kwd">end</span>;
+
+</pre></font></blockquote>
+
+ <blockquote><font class="doc-down-ex">
+ <a href="agg2d_files/tagg2d_example23.png">
+ <img src="agg2d_files/tagg2d_example23.jpg" width="120" height="124" border="0">
+ </a><p>
+ </font></blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="LineCap2"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">LineCap</font>
+ : <font class="doc-type">TAggLineCap [<a href="#TAggLineCap">*</a>]</font>
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Retrieves the current type of line (stroke) cap.
+
+ </blockquote>
+
+ <font class="doc-sect">Returns</font>
+ <blockquote>
+ Returned is constant specifying the current type of line (stroke) cap.
+
+ </blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="LineJoin"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">LineJoin</font>
+ (<font class="doc-id">join</font> )
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Changes the current type of bending on corners of stroke (line).<p>
+
+ The default value is <font class="doc-enum">AGG_JoinRound</font>.
+
+ </blockquote>
+
+ <font class="doc-sect">Parameters</font>
+ <blockquote>
+ <font class="doc-param"><font class="doc-id">join</font> : <font class="doc-type">TAggLineJoin [<a href="#TAggLineJoin">*</a>]</font></font><p>
+ Constant specifying a new value of line join.
+
+ </blockquote>
+
+ <font class="doc-sect">Example</font>
+<blockquote><font class="pas-source"><pre class="pas-source">
+ <span class="pas-kwd">if</span> VG.Attach(Image1.Picture.Bitmap ) <span class="pas-kwd">then</span>
+ <span class="pas-kwd">begin</span>
+ VG.ClearAll(<span class="pas-num">255</span> ,<span class="pas-num">255</span> ,<span class="pas-num">255</span> );
+
+ <span class="pas-comment">// Bold line &amp; drawing path</span>
+ VG.LineWidth(<span class="pas-num">25</span> );
+
+ VG.ResetPath;
+ VG.MoveTo(<span class="pas-num">30</span> ,<span class="pas-num">90</span> );
+ VG.LineTo(<span class="pas-num">90</span> ,<span class="pas-num">30</span> );
+ VG.LineTo(<span class="pas-num">150</span> ,<span class="pas-num">90</span> );
+
+ <span class="pas-comment">// Default AGG_JoinRound</span>
+ VG.Translate(<span class="pas-num">10</span> ,-<span class="pas-num">10</span> );
+ VG.DrawPath(AGG_StrokeOnly );
+
+ <span class="pas-comment">// Change to AGG_JoinMiter</span>
+ VG.LineJoin (AGG_JoinMiter );
+ VG.Translate(<span class="pas-num">0</span> ,<span class="pas-num">50</span> );
+ VG.DrawPath (AGG_StrokeOnly );
+
+ <span class="pas-comment">// Change to AGG_JoinBevel</span>
+ VG.LineJoin (AGG_JoinBevel );
+ VG.Translate(<span class="pas-num">0</span> ,<span class="pas-num">50</span> );
+ VG.DrawPath (AGG_StrokeOnly );
+
+ <span class="pas-kwd">end</span>;
+
+</pre></font></blockquote>
+
+ <blockquote><font class="doc-down-ex">
+ <a href="agg2d_files/tagg2d_example24.png">
+ <img src="agg2d_files/tagg2d_example24.jpg" width="120" height="124" border="0">
+ </a><p>
+ </font></blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="LineJoin2"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">LineJoin</font>
+ : <font class="doc-type">TAggLineJoin [<a href="#TAggLineJoin">*</a>]</font>
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Retrieves the current type of bending on corners of stroke (line).
+
+ </blockquote>
+
+ <font class="doc-sect">Returns</font>
+ <blockquote>
+ Returned is constant specifying the current type of bending on corners of stroke (line).
+
+ </blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="FillEvenOdd"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">FillEvenOdd</font>
+ (<font class="doc-id">evenOddFlag</font> )
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Changes the current type of rasterizer's filling rule.<p>
+
+ The default value if FALSE that represents the NonZero (Winding) filling rule.
+
+ </blockquote>
+
+ <font class="doc-sect">Parameters</font>
+ <blockquote>
+ <font class="doc-param"><font class="doc-id">evenOddFlag</font> : <font class="doc-type">boolean</font></font><p>
+ A new value for filling rule.<p>
+
+ TRUE represents Even/Odd rule.<p>
+
+ FALSE represents NonZero (Winding) rule.
+
+ </blockquote>
+
+ <font class="doc-sect">Example</font>
+<blockquote><font class="pas-source"><pre class="pas-source">
+ <span class="pas-kwd">if</span> VG.Attach(Image1.Picture.Bitmap ) <span class="pas-kwd">then</span>
+ <span class="pas-kwd">begin</span>
+ VG.ClearAll(<span class="pas-num">255</span> ,<span class="pas-num">255</span> ,<span class="pas-num">255</span> );
+
+ <span class="pas-comment">// Red fill &amp; drawing path</span>
+ VG.FillColor(<span class="pas-num">255</span> ,<span class="pas-num">0</span> ,<span class="pas-num">0</span> );
+
+ VG.ResetPath;
+ VG.MoveTo(<span class="pas-num">12</span> ,<span class="pas-num">40</span> );
+ VG.LineTo(<span class="pas-num">132</span> ,<span class="pas-num">112</span> );
+ VG.LineTo(<span class="pas-num">72</span> ,<span class="pas-num">6</span> );
+ VG.LineTo(<span class="pas-num">12</span> ,<span class="pas-num">112</span> );
+ VG.LineTo(<span class="pas-num">132</span> ,<span class="pas-num">40</span> );
+ VG.ClosePolygon;
+
+ <span class="pas-comment">// Default fill rule - NonZero</span>
+ VG.DrawPath;
+
+ <span class="pas-comment">// Change to Even/Odd</span>
+ VG.FillEvenOdd(true );
+ VG.Translate(<span class="pas-num">140</span> ,<span class="pas-num">0</span> );
+ VG.DrawPath;
+
+ <span class="pas-kwd">end</span>;
+
+</pre></font></blockquote>
+
+ <blockquote><font class="doc-down-ex">
+ <a href="agg2d_files/tagg2d_example25.png">
+ <img src="agg2d_files/tagg2d_example25.jpg" width="219" height="120" border="0">
+ </a><p>
+ </font></blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="FillEvenOdd2"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">FillEvenOdd</font>
+ : <font class="doc-type">boolean</font>
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Retrieves the current state of rasterizer's filling rule.
+
+ </blockquote>
+
+ <font class="doc-sect">Returns</font>
+ <blockquote>
+ <font class="doc-res-ok">If True</font>,
+ rasterizer's rule is Even/Odd.
+ <p>
+
+ <font class="doc-res-ok">If False</font>,
+ rasterizer's rule is NonZero (Winding).
+
+ </blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="Transformations"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">Transformations</font>
+ : <font class="doc-type">TAggTransformations [<a href="#TAggTransformations">*</a>]</font>
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Retrieves the currently used affine transformations matrix.
+
+ </blockquote>
+
+ <font class="doc-sect">Returns</font>
+ <blockquote>
+ Returned is data structure containing currently used affine transformations matrix.
+
+ </blockquote>
+
+ <font class="doc-sect">Example</font>
+<blockquote><font class="pas-source"><pre class="pas-source">
+ <span class="pas-kwd">var</span>
+ af : TAggTransformations;
+
+ <span class="pas-kwd">if</span> VG.Attach(Image1.Picture.Bitmap ) <span class="pas-kwd">then</span>
+ <span class="pas-kwd">begin</span>
+ VG.ClearAll(<span class="pas-num">255</span> ,<span class="pas-num">255</span> ,<span class="pas-num">255</span> );
+
+ <span class="pas-comment">// Transform coordinates</span>
+ VG.Translate(<span class="pas-num">10</span> ,<span class="pas-num">10</span> );
+ VG.Scale (<span class="pas-num">2</span> ,<span class="pas-num">2</span> );
+
+ <span class="pas-comment">// Retrieve matrix containing transformations </span>
+ af:=VG.Transformations;
+
+ <span class="pas-comment">// af.affineMatrix is now 2,0,0,2,20,20 </span>
+
+ <span class="pas-kwd">end</span>;
+
+</pre></font></blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="Transformations2"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">Transformations</font>
+ (<font class="doc-id">tr</font> )
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Replaces currently used affine transformations matrix with the one supplied by user.
+ This allows for applying a user defined non standard transformations.
+
+ </blockquote>
+
+ <font class="doc-sect">Parameters</font>
+ <blockquote>
+ <font class="doc-param"><font class="doc-id">tr</font> : <font class="doc-type">PAggTransformations</font></font><p>
+ Pointer to the data structure containing custom affine transformations matrix.
+
+ </blockquote>
+
+ <font class="doc-sect">Example</font>
+<blockquote><font class="pas-source"><pre class="pas-source">
+ <span class="pas-kwd">var</span>
+ x ,y ,nx ,ny : double;
+
+ <span class="pas-kwd">if</span> VG.Attach(Image1.Picture.Bitmap ) <span class="pas-kwd">then</span>
+ <span class="pas-kwd">begin</span>
+ VG.ClearAll(<span class="pas-num">255</span> ,<span class="pas-num">255</span> ,<span class="pas-num">255</span> );
+ VG.NoLine;
+
+ <span class="pas-comment">// Red Arrow</span>
+ VG.FillColor(<span class="pas-num">255</span> ,<span class="pas-num">0</span> ,<span class="pas-num">0</span> ,<span class="pas-num">128</span> );
+ VG.Triangle (<span class="pas-num">100</span> ,<span class="pas-num">20</span> ,<span class="pas-num">40</span> ,<span class="pas-num">100</span> ,<span class="pas-num">160</span> ,<span class="pas-num">100</span> );
+ VG.Rectangle(<span class="pas-num">70</span> ,<span class="pas-num">100</span> ,<span class="pas-num">130</span> ,<span class="pas-num">170</span> );
+
+ <span class="pas-comment">// Coordinates will be reflected along line</span>
+ <span class="pas-comment">// defined as from 0:0 to 90:85</span>
+ x:=<span class="pas-num">90</span>;
+ y:=<span class="pas-num">85</span>;
+
+ nx:=x / Sqrt(x * x + y * y );
+ ny:=y / Sqrt(x * x + y * y );
+
+ af.affineMatrix[<span class="pas-num">0</span> ]:=<span class="pas-float">2.0</span> * nx * nx - <span class="pas-float">1.0</span>;
+ af.affineMatrix[<span class="pas-num">1</span> ]:=<span class="pas-float">2.0</span> * nx * ny;
+ af.affineMatrix[<span class="pas-num">2</span> ]:=<span class="pas-float">2.0</span> * nx * ny;
+ af.affineMatrix[<span class="pas-num">3</span> ]:=<span class="pas-float">2.0</span> * ny * ny - <span class="pas-float">1.0</span>;
+ af.affineMatrix[<span class="pas-num">4</span> ]:=<span class="pas-float">0.0</span>;
+ af.affineMatrix[<span class="pas-num">5</span> ]:=<span class="pas-float">0.0</span>;
+
+ <span class="pas-comment">// Add Reflection Transformation by utilizing</span>
+ <span class="pas-comment">// custom matrix set-up function</span>
+ VG.Transformations(@af );
+
+ <span class="pas-comment">// Blue Arrow (same as Red)</span>
+ VG.FillColor(<span class="pas-num">0</span> ,<span class="pas-num">0</span> ,<span class="pas-num">255</span> ,<span class="pas-num">128</span> );
+ VG.Triangle (<span class="pas-num">100</span> ,<span class="pas-num">20</span> ,<span class="pas-num">40</span> ,<span class="pas-num">100</span> ,<span class="pas-num">160</span> ,<span class="pas-num">100</span> );
+ VG.Rectangle(<span class="pas-num">70</span> ,<span class="pas-num">100</span> ,<span class="pas-num">130</span> ,<span class="pas-num">170</span> );
+
+ <span class="pas-kwd">end</span>;
+
+</pre></font></blockquote>
+
+ <blockquote><font class="doc-down-ex">
+ <a href="agg2d_files/tagg2d_example26.png">
+ <img src="agg2d_files/tagg2d_example26.jpg" width="120" height="124" border="0">
+ </a><p>
+ </font></blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="ResetTransformations"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">ResetTransformations</font>
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Initiates the vector engine transformations to the state, as if there
+ were none. Mathematically internal affine matrix is set to be an identity matrix.<p>
+
+ You can use this method to begin defining a new transformations after
+ some drawing with some transformations was already performed.
+
+ </blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="Affine"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">Affine</font>
+ (<font class="doc-id">tr</font> )
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Multiplies currently used affine transformations matrix with the one supplied by user.<p>
+
+ This method, similarly to the <font class="doc-func">Transformations</font>(<font class="doc-id">tr</font> )
+ method, allows for applying a user defined non standard transformations, but with the difference it
+ won't <b>replace</b> but rather <b>multiply</b> (adds more transformation to the existing transformations).
+
+ </blockquote>
+
+ <font class="doc-sect">Parameters</font>
+ <blockquote>
+ <font class="doc-param"><font class="doc-id">tr</font> : <font class="doc-type">PAggTransformations</font></font><p>
+ Pointer to the data structure containing custom affine transformations matrix.
+
+ </blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="Rotate"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">Rotate</font>
+ (<font class="doc-id">angle</font> )
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Rotates coordinates system around the center of rotation by a given angle. Rotation preserves
+ orientations, distances, ratios and angles.<p>
+
+ When no transformations are applied, center of rotation is either in Top Left
+ or Bottom Left corner of <font class="doc-type">TBitmap</font> surface (depending on how was
+ the <font class="doc-id">flip_y</font> parameter set in call to the <font class="doc-func">Attach</font>
+ method). Center of rotation may change with Translation or Skewing.<p>
+
+ </blockquote>
+
+ <font class="doc-sect">Parameters</font>
+ <blockquote>
+ <font class="doc-param"><font class="doc-id">angle</font> : <font class="doc-type">double</font></font><p>
+ A value defining the angle of rotation [in radians].<p>
+
+ If user wish to define the angle value in degrees, the <font class="doc-func">Deg2Rad</font>
+ standalone API function can be used for this.
+
+ </blockquote>
+
+ <font class="doc-sect">Example</font>
+<blockquote><font class="pas-source"><pre class="pas-source">
+ <span class="pas-kwd">if</span> VG.Attach(Image1.Picture.Bitmap ) <span class="pas-kwd">then</span>
+ <span class="pas-kwd">begin</span>
+ VG.ClearAll(<span class="pas-num">255</span> ,<span class="pas-num">255</span> ,<span class="pas-num">255</span> );
+ VG.NoFill;
+
+ <span class="pas-comment">// First rectangle</span>
+ VG.Rectangle(<span class="pas-num">70</span> ,<span class="pas-num">40</span> ,<span class="pas-num">170</span> ,<span class="pas-num">140</span> );
+
+ <span class="pas-comment">// Rotate by 15 degrees</span>
+ VG.Rotate(Deg2Rad(<span class="pas-num">15</span> ) );
+
+ <span class="pas-comment">// The same rectangle in a new coordinates </span>
+ VG.LineColor(<span class="pas-hex">$FF</span> ,<span class="pas-hex">$00</span> ,<span class="pas-hex">$00</span> );
+ VG.Rectangle(<span class="pas-num">70</span> ,<span class="pas-num">40</span> ,<span class="pas-num">170</span> ,<span class="pas-num">140</span> );
+
+ <span class="pas-kwd">end</span>;
+
+</pre></font></blockquote>
+
+ <blockquote><font class="doc-down-ex">
+ <a href="agg2d_files/tagg2d_example27.png">
+ <img src="agg2d_files/tagg2d_example27.jpg" width="120" height="124" border="0">
+ </a><p>
+ </font></blockquote>
+
+ <font class="doc-sect">Remarks</font>
+ <blockquote>
+ <div class="doc-note">
+ One frequent case for rotation transformation is rotating something around it's own axis.
+ For example, if user wants to rotate the whole <font class="doc-type">TBitmap</font> surface
+ (around it's axis), two more translations must be involved, because before rotation
+ the center of rotation is in coordinates origin (which is Top Left or Bottom Left corner).
+ So the transformation sequence changes like this:
+ </div>
+
+<div><font class="pas-source"><pre class="pas-source">
+ <span class="pas-kwd">if</span> VG.Attach(Image1.Picture.Bitmap ) <span class="pas-kwd">then</span>
+ <span class="pas-kwd">begin</span>
+ VG.ClearAll(<span class="pas-num">255</span> ,<span class="pas-num">255</span> ,<span class="pas-num">255</span> );
+ VG.NoFill;
+
+ <span class="pas-comment">// First rectangle</span>
+ VG.Rectangle(<span class="pas-num">70</span> ,<span class="pas-num">40</span> ,<span class="pas-num">170</span> ,<span class="pas-num">140</span> );
+
+ <span class="pas-comment">// [!] set center point to the middle of TBitmap surface</span>
+ VG.Translate(-ClientWidth / <span class="pas-num">2</span> ,-ClientHeight / <span class="pas-num">2</span> );
+
+ <span class="pas-comment">// Rotate by 15 degrees</span>
+ VG.Rotate(Deg2Rad(<span class="pas-num">15</span> ) );
+
+ <span class="pas-comment">// [!] return coordinates system back </span>
+ VG.Translate(ClientWidth / <span class="pas-num">2</span> ,ClientHeight / <span class="pas-num">2</span> );
+
+ <span class="pas-comment">// The same rectangle in a new coordinates</span>
+ VG.LineColor(<span class="pas-hex">$FF</span> ,<span class="pas-hex">$00</span> ,<span class="pas-hex">$00</span> );
+ VG.Rectangle(<span class="pas-num">70</span> ,<span class="pas-num">40</span> ,<span class="pas-num">170</span> ,<span class="pas-num">140</span> );
+
+ <span class="pas-kwd">end</span>;
+
+</pre></font></div>
+
+ </blockquote>
+
+ <blockquote><font class="doc-down-ex">
+ <a href="agg2d_files/tagg2d_example30.png">
+ <img src="agg2d_files/tagg2d_example30.jpg" width="120" height="124" border="0">
+ </a><p>
+ </font></blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="Scale"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">Scale</font>
+ (<font class="doc-id">sx</font>,
+ <font class="doc-id">sy</font> )
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Enlarges or diminishes coordinates system by a scale factors in two directions focusing around
+ the center of scaling. Scaling may change orientations (in the case of reflections). If scaling is
+ uniform (both factors equals), it preserves ratios and angles, otherwise not. Scaling always changes
+ distances (lengths).<p>
+
+ When no transformations are applied, center of scaling is either in Top Left
+ or Bottom Left corner of <font class="doc-type">TBitmap</font> surface (depending on how was
+ the <font class="doc-id">flip_y</font> parameter set in call to the <font class="doc-func">Attach</font>
+ method). Center of scaling may change with Translation or Skewing.<p>
+
+ Zooming around some exact point involves two more translations similarly to the case with rotation
+ around own axis.
+
+ </blockquote>
+
+ <font class="doc-sect">Parameters</font>
+ <blockquote>
+ <font class="doc-param"><font class="doc-id">sx</font> : <font class="doc-type">double</font></font><p>
+ Scale factor for X axis direction (1 = no scale).
+ <p>
+
+ <font class="doc-param"><font class="doc-id">sy</font> : <font class="doc-type">double</font></font><p>
+ Scale factor for Y axis direction (1 = no scale).
+
+ </blockquote>
+
+ <font class="doc-sect">Example</font>
+<blockquote><font class="pas-source"><pre class="pas-source">
+ <span class="pas-kwd">if</span> VG.Attach(Image1.Picture.Bitmap ) <span class="pas-kwd">then</span>
+ <span class="pas-kwd">begin</span>
+ VG.ClearAll(<span class="pas-num">255</span> ,<span class="pas-num">255</span> ,<span class="pas-num">255</span> );
+ VG.NoFill;
+
+ <span class="pas-comment">// First rectangle</span>
+ VG.Rectangle(<span class="pas-num">30</span> ,<span class="pas-num">30</span> ,<span class="pas-num">130</span> ,<span class="pas-num">130</span> );
+
+ <span class="pas-comment">// Scale 40% on X axis and 20% on Y axis </span>
+ VG.Scale(<span class="pas-float">1.4</span> ,<span class="pas-float">1.2</span> );
+
+ <span class="pas-comment">// The same rectangle in a new coordinates</span>
+ VG.LineColor(<span class="pas-hex">$FF</span> ,<span class="pas-hex">$00</span> ,<span class="pas-hex">$00</span> );
+ VG.Rectangle(<span class="pas-num">30</span> ,<span class="pas-num">40</span> ,<span class="pas-num">130</span> ,<span class="pas-num">130</span> );
+
+ <span class="pas-kwd">end</span>;
+
+</pre></font></blockquote>
+
+ <blockquote><font class="doc-down-ex">
+ <a href="agg2d_files/tagg2d_example28.png">
+ <img src="agg2d_files/tagg2d_example28.jpg" width="120" height="124" border="0">
+ </a><p>
+ </font></blockquote>
+
+ <font class="doc-sect">Remarks</font>
+ <blockquote>
+ <div class="doc-note">
+ Scaling with negative factors generates reflections. That can be utilized to create a mirror-like
+ effects. (One additional translation must be involved to get the effect.)
+ </div>
+ </blockquote>
+
+<blockquote><font class="pas-source"><pre class="pas-source">
+ <span class="pas-kwd">if</span> VG.Attach(Image1.Picture.Bitmap ) <span class="pas-kwd">then</span>
+ <span class="pas-kwd">begin</span>
+ VG.ClearAll(<span class="pas-num">255</span> ,<span class="pas-num">255</span> ,<span class="pas-num">255</span> );
+ VG.NoFill;
+
+ <span class="pas-comment">// First triangle</span>
+ VG.Triangle(<span class="pas-num">100</span> ,<span class="pas-num">20</span> ,<span class="pas-num">20</span> ,<span class="pas-num">100</span> ,<span class="pas-num">180</span> ,<span class="pas-num">100</span> );
+
+ <span class="pas-comment">// Reflect along X axis</span>
+ VG.Scale (<span class="pas-num">1</span> ,-<span class="pas-num">1</span> );
+ VG.Translate(<span class="pas-num">0</span> ,<span class="pas-num">210</span> );
+
+ <span class="pas-comment">// The same triangle reflected in a new coordinates</span>
+ VG.LineColor(<span class="pas-hex">$FF</span> ,<span class="pas-hex">$00</span> ,<span class="pas-hex">$00</span> );
+ VG.Triangle(<span class="pas-num">100</span> ,<span class="pas-num">20</span> ,<span class="pas-num">20</span> ,<span class="pas-num">100</span> ,<span class="pas-num">180</span> ,<span class="pas-num">100</span> );
+
+ <span class="pas-kwd">end</span>;
+
+</pre></font></blockquote>
+
+ <blockquote><font class="doc-down-ex">
+ <a href="agg2d_files/tagg2d_example29.png">
+ <img src="agg2d_files/tagg2d_example29.jpg" width="120" height="124" border="0">
+ </a><p>
+ </font></blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="Skew"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">Skew</font>
+ (<font class="doc-id">sx</font>,
+ <font class="doc-id">sy</font> )
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Moves coordinates system in one direction that's proportional to the distance away from the
+ origin in the other dimension by a skew factors in horizontal and vertical directions focusing
+ around the center of skewing. Skew (also called shear) preserves only orientations and changes
+ ratios, angles and distances.<p>
+
+ When no transformations are applied, center of skewing is either in Top Left
+ or Bottom Left corner of <font class="doc-type">TBitmap</font> surface (depending on how was
+ the <font class="doc-id">flip_y</font> parameter set in call to the <font class="doc-func">Attach</font>
+ method). Center of skewing may change with Translation or another Skewing.<p>
+
+ Skewing around some exact point involves two more translations similarly to the case with rotation
+ and scale around own axis.
+
+ </blockquote>
+
+ <font class="doc-sect">Parameters</font>
+ <blockquote>
+ <font class="doc-param"><font class="doc-id">sx</font> : <font class="doc-type">double</font></font><p>
+ Horizontal skew factor (0 = no skew) [Values from -1 to 1 are reasonable].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">sy</font> : <font class="doc-type">double</font></font><p>
+ Vertical skew factor (0 = no skew) [Values from -1 to 1 are reasonable].
+
+ </blockquote>
+
+ <font class="doc-sect">Example</font>
+<blockquote><font class="pas-source"><pre class="pas-source">
+ <span class="pas-kwd">if</span> VG.Attach(Image1.Picture.Bitmap ) <span class="pas-kwd">then</span>
+ <span class="pas-kwd">begin</span>
+ VG.ClearAll(<span class="pas-num">255</span> ,<span class="pas-num">255</span> ,<span class="pas-num">255</span> );
+ VG.NoFill;
+
+ <span class="pas-comment">// First rectangle</span>
+ VG.Rectangle(<span class="pas-num">40</span> ,<span class="pas-num">40</span> ,<span class="pas-num">150</span> ,<span class="pas-num">150</span> );
+
+ <span class="pas-comment">// Skew horizontally by 20% and vertically by 10% </span>
+ VG.Skew(<span class="pas-float">0.2</span> ,<span class="pas-float">0.1</span> );
+
+ <span class="pas-comment">// The same rectangle in a new skewed coordinates</span>
+ VG.LineColor(<span class="pas-hex">$FF</span> ,<span class="pas-hex">$00</span> ,<span class="pas-hex">$00</span> );
+ VG.Rectangle(<span class="pas-num">40</span> ,<span class="pas-num">40</span> ,<span class="pas-num">150</span> ,<span class="pas-num">150</span> );
+
+ <span class="pas-kwd">end</span>;
+
+</pre></font></blockquote>
+
+ <blockquote><font class="doc-down-ex">
+ <a href="agg2d_files/tagg2d_example31.png">
+ <img src="agg2d_files/tagg2d_example31.jpg" width="120" height="124" border="0">
+ </a><p>
+ </font></blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="Translate"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">Translate</font>
+ (<font class="doc-id">x</font>,
+ <font class="doc-id">y</font> )
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Moves all points of coordinates system in the same direction by a specified distance (shifts the origin
+ of the coordinates system). Translation preserves orientations, distances, ratios and angles.
+
+ </blockquote>
+
+ <font class="doc-sect">Parameters</font>
+ <blockquote>
+ <font class="doc-param"><font class="doc-id">x</font> : <font class="doc-type">double</font></font><p>
+ Shift distance of X axis direction [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">y</font> : <font class="doc-type">double</font></font><p>
+ Shift distance of Y axis direction [in subpixels].
+
+ </blockquote>
+
+ <font class="doc-sect">Example</font>
+<blockquote><font class="pas-source"><pre class="pas-source">
+ <span class="pas-kwd">if</span> VG.Attach(Image1.Picture.Bitmap ) <span class="pas-kwd">then</span>
+ <span class="pas-kwd">begin</span>
+ VG.ClearAll(<span class="pas-num">255</span> ,<span class="pas-num">255</span> ,<span class="pas-num">255</span> );
+ VG.NoFill;
+
+ <span class="pas-comment">// First rectangle</span>
+ VG.Rectangle(<span class="pas-num">40</span> ,<span class="pas-num">40</span> ,<span class="pas-num">150</span> ,<span class="pas-num">150</span> );
+
+ <span class="pas-comment">// Shift by 30 subpixels on X and 10 subpixels on Y</span>
+ VG.Translate(<span class="pas-num">30</span> ,<span class="pas-num">10</span> );
+
+ <span class="pas-comment">// The same rectangle in a new translated coordinates</span>
+ VG.LineColor(<span class="pas-hex">$FF</span> ,<span class="pas-hex">$00</span> ,<span class="pas-hex">$00</span> );
+ VG.Rectangle(<span class="pas-num">40</span> ,<span class="pas-num">40</span> ,<span class="pas-num">150</span> ,<span class="pas-num">150</span> );
+
+ <span class="pas-kwd">end</span>;
+
+</pre></font></blockquote>
+
+ <blockquote><font class="doc-down-ex">
+ <a href="agg2d_files/tagg2d_example32.png">
+ <img src="agg2d_files/tagg2d_example32.jpg" width="120" height="124" border="0">
+ </a><p>
+ </font></blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="Parallelogram"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">Parallelogram</font>
+ (<font class="doc-id">x1</font>,
+ <font class="doc-id">y1</font>,
+ <font class="doc-id">x2</font>,
+ <font class="doc-id">y2</font>,
+ <font class="doc-id">para</font> )
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Transforms source coordinates system rectangle into the destination parallelogram.
+ Parallelogram transformation preserves orientations and changes ratios, angles and distances.
+
+ </blockquote>
+
+ <font class="doc-sect">Parameters</font>
+ <blockquote>
+ <font class="doc-param"><font class="doc-id">x1</font> : <font class="doc-type">double</font></font><p>
+ X coordinate of Top Left corner of source rectangle [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">y1</font> : <font class="doc-type">double</font></font><p>
+ Y coordinate of Top Left corner of source rectangle [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">x2</font> : <font class="doc-type">double</font></font><p>
+ X coordinate of Bottom Right corner of source rectangle [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">y2</font> : <font class="doc-type">double</font></font><p>
+ Y coordinate of Bottom Right corner of source rectangle [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">para</font> : <font class="doc-type">PDouble</font></font><p>
+ Pointer to the first element of an array containing six values defining the destination parallelogram
+ [in subpixels].<p>
+
+ Individual corners of parallelogram are in this order: Top Left (x,y), Top Right (x,y) and Bottom Right (x,y).
+ The fourth corner (Bottom Left) is internally computed from the three others.
+
+ </blockquote>
+
+ <font class="doc-sect">Example</font>
+<blockquote><font class="pas-source"><pre class="pas-source">
+ <span class="pas-kwd">if</span> VG.Attach(Image1.Picture.Bitmap ) <span class="pas-kwd">then</span>
+ <span class="pas-kwd">begin</span>
+ VG.ClearAll(<span class="pas-num">255</span> ,<span class="pas-num">255</span> ,<span class="pas-num">255</span> );
+ VG.NoFill;
+
+ <span class="pas-comment">// First rectangle</span>
+ VG.Rectangle(<span class="pas-num">40</span> ,<span class="pas-num">40</span> ,<span class="pas-num">150</span> ,<span class="pas-num">150</span> );
+
+ <span class="pas-comment">// Define destination parallelogram</span>
+ para[<span class="pas-num">1</span> ]:=<span class="pas-num">50</span>;
+ para[<span class="pas-num">2</span> ]:=<span class="pas-num">50</span>;
+ para[<span class="pas-num">3</span> ]:=<span class="pas-num">150</span>;
+ para[<span class="pas-num">4</span> ]:=<span class="pas-num">50</span>;
+ para[<span class="pas-num">5</span> ]:=<span class="pas-num">220</span>;
+ para[<span class="pas-num">6</span> ]:=<span class="pas-num">150</span>;
+
+ <span class="pas-comment">// Parallelogram transformation </span>
+ VG.Parallelogram(<span class="pas-num">0</span> ,<span class="pas-num">0</span> ,ClientWidth ,ClientHeight ,@para[<span class="pas-num">1</span> ] );
+
+ <span class="pas-comment">// The same rectangle in a new parallelogram coordinates</span>
+ VG.LineColor(<span class="pas-hex">$FF</span> ,<span class="pas-hex">$00</span> ,<span class="pas-hex">$00</span> );
+ VG.Rectangle(<span class="pas-num">40</span> ,<span class="pas-num">40</span> ,<span class="pas-num">150</span> ,<span class="pas-num">150</span> );
+
+ <span class="pas-kwd">end</span>;
+
+</pre></font></blockquote>
+
+ <blockquote><font class="doc-down-ex">
+ <a href="agg2d_files/tagg2d_example33.png">
+ <img src="agg2d_files/tagg2d_example33.jpg" width="120" height="124" border="0">
+ </a><p>
+ </font></blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="Viewport"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">Viewport</font><br>
+ (<font class="doc-id">worldX1</font>,
+ <font class="doc-id">worldY1</font>,
+ <font class="doc-id">worldX2</font>,
+ <font class="doc-id">wordlY2</font>,
+ <font class="doc-id">screenX1</font>,
+ <font class="doc-id">screenY1</font>,
+ <font class="doc-id">screenX2</font>,
+ <font class="doc-id">screenY2</font>,
+ <font class="doc-id">opt</font> )
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Transforms source coordinates system rectangle into the destination coordinates system rectangle. Viewport transformation
+ includes translation and scaling in one step. Viewport may change orientations, ratios, angles and
+ distances. If the scaling part of transformation is uniform, orientations, ratios and angles are preserved.<p>
+
+ </blockquote>
+
+ <font class="doc-sect">Parameters</font>
+ <blockquote>
+ <font class="doc-param"><font class="doc-id">worldX1</font> : <font class="doc-type">double</font></font><p>
+ X coordinate of Top Left corner of source rectangle [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">worldY1</font> : <font class="doc-type">double</font></font><p>
+ Y coordinate of Top Left corner of source rectangle [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">worldX2</font> : <font class="doc-type">double</font></font><p>
+ X coordinate of Bottom Right corner of source rectangle [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">worldY2</font> : <font class="doc-type">double</font></font><p>
+ Y coordinate of Bottom Right corner of source rectangle [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">screenX1</font> : <font class="doc-type">double</font></font><p>
+ X coordinate of Top Left corner of destination rectangle [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">screenY1</font> : <font class="doc-type">double</font></font><p>
+ Y coordinate of Top Left corner of destination rectangle [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">screenX2</font> : <font class="doc-type">double</font></font><p>
+ X coordinate of Bottom Right corner of destination rectangle [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">screenY2</font> : <font class="doc-type">double</font></font><p>
+ Y coordinate of Bottom Right corner of destination rectangle [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">opt</font> : <font class="doc-type">TAggViewportOption [<a href="#TAggViewportOption">*</a>]</font> = <font class="doc-enum">AGG_XMidYMid</font></font><p>
+ Additional type of sub-translation (sub-positioning) for the cases, when the aspect ratio of destination
+ rectangle differs from the aspect ratio of source rectangle.<p>
+
+ If an isotropic sub-translation is selected, scaling part of transformation is uniform.
+ Otherwise an anisotropic scaling is used, which changes ratios, angles and distances.
+
+ </blockquote>
+
+ <font class="doc-sect">Example</font>
+<blockquote><font class="pas-source"><pre class="pas-source">
+ <span class="pas-kwd">if</span> VG.Attach(Image1.Picture.Bitmap ) <span class="pas-kwd">then</span>
+ <span class="pas-kwd">begin</span>
+ VG.ClearAll(<span class="pas-num">255</span> ,<span class="pas-num">255</span> ,<span class="pas-num">255</span> );
+ VG.NoFill;
+ VG.LineWidth(<span class="pas-num">10</span> );
+
+ <span class="pas-comment">// First rectangle</span>
+ VG.Rectangle(<span class="pas-num">0</span> ,<span class="pas-num">0</span> ,ClientWidth ,ClientHeight );
+
+ <span class="pas-comment">// Set viewport to the rectangle in middle </span>
+ VG.Viewport(
+ <span class="pas-num">0</span> ,<span class="pas-num">0</span> ,ClientWidth ,ClientHeight ,
+ <span class="pas-num">50</span> ,<span class="pas-num">50</span> ,<span class="pas-num">170</span> ,<span class="pas-num">170</span> ,
+ AGG_XMidYMid );
+
+ <span class="pas-comment">// The same rectangle in a new viewport coordinates</span>
+ VG.LineColor(<span class="pas-hex">$FF</span> ,<span class="pas-hex">$00</span> ,<span class="pas-hex">$00</span> );
+ VG.Rectangle(<span class="pas-num">0</span> ,<span class="pas-num">0</span> ,ClientWidth ,ClientHeight );
+
+ <span class="pas-comment">// This blue triangle would be drawn in some parts</span>
+ <span class="pas-comment">// offscreen in original coordinates system </span>
+ VG.LineColor(<span class="pas-hex">$00</span> ,<span class="pas-hex">$00</span> ,<span class="pas-hex">$FF</span> );
+ VG.Triangle (<span class="pas-num">100</span> ,-<span class="pas-num">50</span> ,-<span class="pas-num">50</span> ,<span class="pas-num">140</span> ,ClientWidth + <span class="pas-num">50</span> ,<span class="pas-num">140</span> );
+
+ <span class="pas-kwd">end</span>;
+
+</pre></font></blockquote>
+
+ <blockquote><font class="doc-down-ex">
+ <a href="agg2d_files/tagg2d_example34.png">
+ <img src="agg2d_files/tagg2d_example34.jpg" width="120" height="124" border="0">
+ </a><p>
+ </font></blockquote>
+
+ <font class="doc-sect">Remarks</font>
+ <blockquote>
+ <div class="doc-note">
+ Setting a Viewport with this transformation doesn't automatically crop the area around the destination
+ rectangle (Viewport is just a composite transformation of translation and scaling). So if user wishes to
+ achieve a true Viewport-like effect including cropping around, the clipbox located at the destination
+ rectangle must be applied.
+ </div>
+ </blockquote>
+
+<blockquote><font class="pas-source"><pre class="pas-source">
+ <span class="pas-kwd">if</span> VG.Attach(Image1.Picture.Bitmap ) <span class="pas-kwd">then</span>
+ <span class="pas-kwd">begin</span>
+ VG.ClearAll(<span class="pas-num">255</span> ,<span class="pas-num">255</span> ,<span class="pas-num">255</span> );
+ VG.NoFill;
+ VG.LineWidth(<span class="pas-num">10</span> );
+
+ <span class="pas-comment">// First rectangle</span>
+ VG.Rectangle(<span class="pas-num">0</span> ,<span class="pas-num">0</span> ,ClientWidth ,ClientHeight );
+
+ <span class="pas-comment">// Set viewport to the rectangle in middle </span>
+ VG.Viewport(
+ <span class="pas-num">0</span> ,<span class="pas-num">0</span> ,ClientWidth ,ClientHeight ,
+ <span class="pas-num">50</span> ,<span class="pas-num">50</span> ,<span class="pas-num">170</span> ,<span class="pas-num">170</span> ,
+ AGG_XMidYMid );
+
+ <span class="pas-comment">// [!] Applying clipbox on same rectangle as the destination</span>
+ <span class="pas-comment">// rectangle, to achieve a true Viewport-like effect</span>
+ VG.ClipBox(<span class="pas-num">50</span> ,<span class="pas-num">50</span> ,<span class="pas-num">170</span> ,<span class="pas-num">170</span> );
+
+ <span class="pas-comment">// The same rectangle in a new viewport coordinates</span>
+ VG.LineColor(<span class="pas-hex">$FF</span> ,<span class="pas-hex">$00</span> ,<span class="pas-hex">$00</span> );
+ VG.Rectangle(<span class="pas-num">0</span> ,<span class="pas-num">0</span> ,ClientWidth ,ClientHeight );
+
+ <span class="pas-comment">// This blue triangle is cropped in some parts</span>
+ <span class="pas-comment">// in the same way, as if it would be offscreen</span>
+ <span class="pas-comment">// in original coordinates system</span>
+ VG.LineColor(<span class="pas-hex">$00</span> ,<span class="pas-hex">$00</span> ,<span class="pas-hex">$FF</span> );
+ VG.Triangle (<span class="pas-num">100</span> ,-<span class="pas-num">50</span> ,-<span class="pas-num">50</span> ,<span class="pas-num">140</span> ,ClientWidth + <span class="pas-num">50</span> ,<span class="pas-num">140</span> );
+
+ <span class="pas-kwd">end</span>;
+
+</pre></font></blockquote>
+
+ <blockquote><font class="doc-down-ex">
+ <a href="agg2d_files/tagg2d_example35.png">
+ <img src="agg2d_files/tagg2d_example35.jpg" width="120" height="124" border="0">
+ </a><p>
+ </font></blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="Line"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">Line</font>
+ (<font class="doc-id">x1</font>,
+ <font class="doc-id">y1</font>,
+ <font class="doc-id">x2</font>,
+ <font class="doc-id">y2</font> )
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Draws line from the start point (including) to the end point (including).<p>
+
+ Start and end points must be different to render a visible line.
+
+ </blockquote>
+
+ <font class="doc-sect">Parameters</font>
+ <blockquote>
+ <font class="doc-param"><font class="doc-id">x1</font> : <font class="doc-type">double</font></font><p>
+ X coordinate of line start point [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">y1</font> : <font class="doc-type">double</font></font><p>
+ Y coordinate of line start point [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">x2</font> : <font class="doc-type">double</font></font><p>
+ X coordinate of line end point [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">y2</font> : <font class="doc-type">double</font></font><p>
+ Y coordinate of line end point [in subpixels].
+
+ </blockquote>
+
+ <font class="doc-sect">Example</font>
+<blockquote><font class="pas-source"><pre class="pas-source">
+ <span class="pas-kwd">if</span> VG.Attach(Image1.Picture.Bitmap ) <span class="pas-kwd">then</span>
+ <span class="pas-kwd">begin</span>
+ VG.ClearAll(<span class="pas-num">255</span> ,<span class="pas-num">255</span> ,<span class="pas-num">255</span> );
+
+ Randomize;
+
+ <span class="pas-comment">// Draw 100 random lines </span>
+ <span class="pas-kwd">for</span> i:=<span class="pas-num">1</span> <span class="pas-kwd">to</span> <span class="pas-num">100</span> <span class="pas-kwd">do</span>
+ <span class="pas-kwd">begin</span>
+ VG.LineColor(
+ random(<span class="pas-num">255</span> ) ,
+ random(<span class="pas-num">255</span> ) ,
+ random(<span class="pas-num">255</span> ) ,
+ random(<span class="pas-num">255</span> ) );
+
+ VG.LineWidth(random(<span class="pas-num">100</span> ) / <span class="pas-num">10</span> );
+
+ VG.Line(
+ random(ClientWidth - <span class="pas-num">20</span> ) + <span class="pas-float">10.5</span> ,
+ random(ClientHeight - <span class="pas-num">20</span> ) + <span class="pas-float">10.5</span> ,
+ random(ClientWidth - <span class="pas-num">20</span> ) + <span class="pas-float">10.5</span> ,
+ random(ClientHeight - <span class="pas-num">20</span> ) + <span class="pas-float">10.5</span> );
+
+ <span class="pas-kwd">end</span>;
+
+ <span class="pas-kwd">end</span>;
+</pre></font></blockquote>
+
+ <blockquote><font class="doc-down-ex">
+ <a href="agg2d_files/tagg2d_example36.png">
+ <img src="agg2d_files/tagg2d_example36.jpg" width="120" height="124" border="0">
+ </a><p>
+ </font></blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="Triangle"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">Triangle</font>
+ (<font class="doc-id">x1</font>,
+ <font class="doc-id">y1</font>,
+ <font class="doc-id">x2</font>,
+ <font class="doc-id">y2</font>,
+ <font class="doc-id">x3</font>,
+ <font class="doc-id">y3</font> )
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Draws triangle at defined coordinates.
+
+ </blockquote>
+
+ <font class="doc-sect">Parameters</font>
+ <blockquote>
+ <font class="doc-param"><font class="doc-id">x1</font> : <font class="doc-type">double</font></font><p>
+ X coordinate of triangle's first corner [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">y1</font> : <font class="doc-type">double</font></font><p>
+ Y coordinate of triangle's first corner [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">x2</font> : <font class="doc-type">double</font></font><p>
+ X coordinate of triangle's second corner [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">y2</font> : <font class="doc-type">double</font></font><p>
+ Y coordinate of triangle's second corner [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">x3</font> : <font class="doc-type">double</font></font><p>
+ X coordinate of triangle's third corner [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">y3</font> : <font class="doc-type">double</font></font><p>
+ Y coordinate of triangle's third corner [in subpixels].
+
+ </blockquote>
+
+ <font class="doc-sect">Example</font>
+<blockquote><font class="pas-source"><pre class="pas-source">
+ <span class="pas-kwd">if</span> VG.Attach(Image1.Picture.Bitmap ) <span class="pas-kwd">then</span>
+ <span class="pas-kwd">begin</span>
+ VG.ClearAll(<span class="pas-num">255</span> ,<span class="pas-num">255</span> ,<span class="pas-num">255</span> );
+
+ Randomize;
+
+ <span class="pas-comment">// Draw 100 random triangles</span>
+ <span class="pas-kwd">for</span> i:=<span class="pas-num">1</span> <span class="pas-kwd">to</span> <span class="pas-num">100</span> <span class="pas-kwd">do</span>
+ <span class="pas-kwd">begin</span>
+ VG.LineColor(
+ random(<span class="pas-num">255</span> ) ,
+ random(<span class="pas-num">255</span> ) ,
+ random(<span class="pas-num">255</span> ) ,
+ random(<span class="pas-num">255</span> ) );
+
+ VG.FillColor(
+ random(<span class="pas-num">255</span> ) ,
+ random(<span class="pas-num">255</span> ) ,
+ random(<span class="pas-num">255</span> ) ,
+ random(<span class="pas-num">255</span> ) );
+
+ VG.LineWidth(random(<span class="pas-num">100</span> ) / <span class="pas-num">10</span> );
+
+ VG.Triangle(
+ random(ClientWidth - <span class="pas-num">20</span> ) + <span class="pas-float">10.5</span> ,
+ random(ClientHeight - <span class="pas-num">20</span> ) + <span class="pas-float">10.5</span> ,
+ random(ClientWidth - <span class="pas-num">20</span> ) + <span class="pas-float">10.5</span> ,
+ random(ClientHeight - <span class="pas-num">20</span> ) + <span class="pas-float">10.5</span> ,
+ random(ClientWidth - <span class="pas-num">20</span> ) + <span class="pas-float">10.5</span> ,
+ random(ClientHeight - <span class="pas-num">20</span> ) + <span class="pas-float">10.5</span> );
+
+ <span class="pas-kwd">end</span>;
+
+ <span class="pas-kwd">end</span>;
+
+</pre></font></blockquote>
+
+ <blockquote><font class="doc-down-ex">
+ <a href="agg2d_files/tagg2d_example37.png">
+ <img src="agg2d_files/tagg2d_example37.jpg" width="139" height="124" border="0">
+ </a><p>
+ </font></blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="Rectangle"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">Rectangle</font>
+ (<font class="doc-id">x1</font>,
+ <font class="doc-id">y1</font>,
+ <font class="doc-id">x2</font>,
+ <font class="doc-id">y2</font> )
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Draws rectangle at defined coordinates.
+
+ </blockquote>
+
+ <font class="doc-sect">Parameters</font>
+ <blockquote>
+ <font class="doc-param"><font class="doc-id">x1</font> : <font class="doc-type">double</font></font><p>
+ X coordinate of rectangle's Top Left corner [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">y1</font> : <font class="doc-type">double</font></font><p>
+ Y coordinate of rectangle's Top Left corner [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">x2</font> : <font class="doc-type">double</font></font><p>
+ X coordinate of rectangle's Bottom Right corner [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">y2</font> : <font class="doc-type">double</font></font><p>
+ Y coordinate of rectangle's Bottom Right corner [in subpixels].
+
+ </blockquote>
+
+ <font class="doc-sect">Example</font>
+<blockquote><font class="pas-source"><pre class="pas-source">
+ <span class="pas-kwd">if</span> VG.Attach(Image1.Picture.Bitmap ) <span class="pas-kwd">then</span>
+ <span class="pas-kwd">begin</span>
+ VG.ClearAll(<span class="pas-num">255</span> ,<span class="pas-num">255</span> ,<span class="pas-num">255</span> );
+
+ Randomize;
+
+ <span class="pas-comment">// Draw 100 random rectangles</span>
+ <span class="pas-kwd">for</span> i:=<span class="pas-num">1</span> <span class="pas-kwd">to</span> <span class="pas-num">100</span> <span class="pas-kwd">do</span>
+ <span class="pas-kwd">begin</span>
+ VG.LineColor(
+ random(<span class="pas-num">255</span> ) ,
+ random(<span class="pas-num">255</span> ) ,
+ random(<span class="pas-num">255</span> ) ,
+ random(<span class="pas-num">255</span> ) );
+
+ VG.FillColor(
+ random(<span class="pas-num">255</span> ) ,
+ random(<span class="pas-num">255</span> ) ,
+ random(<span class="pas-num">255</span> ) ,
+ random(<span class="pas-num">255</span> ) );
+
+ VG.LineWidth(random(<span class="pas-num">100</span> ) / <span class="pas-num">10</span> );
+
+ VG.Rectangle(
+ random(ClientWidth - <span class="pas-num">20</span> ) + <span class="pas-float">10.5</span> ,
+ random(ClientHeight - <span class="pas-num">20</span> ) + <span class="pas-float">10.5</span> ,
+ random(ClientWidth - <span class="pas-num">20</span> ) + <span class="pas-float">10.5</span> ,
+ random(ClientHeight - <span class="pas-num">20</span> ) + <span class="pas-float">10.5</span> );
+
+ <span class="pas-kwd">end</span>;
+
+ <span class="pas-kwd">end</span>;
+
+</pre></font></blockquote>
+
+ <blockquote><font class="doc-down-ex">
+ <a href="agg2d_files/tagg2d_example38.png">
+ <img src="agg2d_files/tagg2d_example38.jpg" width="164" height="124" border="0">
+ </a><p>
+ </font></blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="RoundedRect"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">RoundedRect</font>
+ (<font class="doc-id">x1</font>,
+ <font class="doc-id">y1</font>,
+ <font class="doc-id">x2</font>,
+ <font class="doc-id">y2</font>,
+ <font class="doc-id">r</font> )<br>
+
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">RoundedRect</font>
+ (<font class="doc-id">x1</font>,
+ <font class="doc-id">y1</font>,
+ <font class="doc-id">x2</font>,
+ <font class="doc-id">y2</font>,
+ <font class="doc-id">rx</font>,
+ <font class="doc-id">ry</font> )<br>
+
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">RoundedRect</font>
+ (<font class="doc-id">x1</font>,
+ <font class="doc-id">y1</font>,
+ <font class="doc-id">x2</font>,
+ <font class="doc-id">y2</font>,
+ <font class="doc-id">rxBottom</font>,
+ <font class="doc-id">ryBottom</font>,
+ <font class="doc-id">rxTop</font>,
+ <font class="doc-id">ryTop</font> )
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Draws rectangle with rounded corners at defined coordinates.
+
+ </blockquote>
+
+ <font class="doc-sect">Parameters</font>
+ <blockquote>
+ <font class="doc-param"><font class="doc-id">x1</font> : <font class="doc-type">double</font></font><p>
+ X coordinate of rectangle's Top Left corner [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">y1</font> : <font class="doc-type">double</font></font><p>
+ Y coordinate of rectangle's Top Left corner [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">x2</font> : <font class="doc-type">double</font></font><p>
+ X coordinate of rectangle's Bottom Right corner [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">y2</font> : <font class="doc-type">double</font></font><p>
+ Y coordinate of rectangle's Bottom Right corner [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">r</font> : <font class="doc-type">double</font></font><p>
+ Uniform radius of arc for all rectangle corners [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">rx</font> : <font class="doc-type">double</font></font><p>
+ Width of the radius of arc for all rectangle corners [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">ry</font> : <font class="doc-type">double</font></font><p>
+ Height of the radius of arc for all rectangle corners [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">rxBottom</font> : <font class="doc-type">double</font></font><p>
+ Width of the radius of arc for bottom rectangle corners [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">ryBottom</font> : <font class="doc-type">double</font></font><p>
+ Height of the radius of arc for bottom rectangle corners [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">rxTop</font> : <font class="doc-type">double</font></font><p>
+ Width of the radius of arc for top rectangle corners [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">ryTop</font> : <font class="doc-type">double</font></font><p>
+ Height of the radius of arc for top rectangle corners [in subpixels].
+
+ </blockquote>
+
+ <font class="doc-sect">Example</font>
+<blockquote><font class="pas-source"><pre class="pas-source">
+ <span class="pas-kwd">if</span> VG.Attach(Image1.Picture.Bitmap ) <span class="pas-kwd">then</span>
+ <span class="pas-kwd">begin</span>
+ VG.ClearAll(<span class="pas-num">255</span> ,<span class="pas-num">255</span> ,<span class="pas-num">255</span> );
+
+ <span class="pas-comment">// Colors and line width</span>
+ VG.LineWidth(<span class="pas-num">5</span> );
+ VG.LineColor(<span class="pas-hex">$FF</span> ,<span class="pas-hex">$00</span> ,<span class="pas-hex">$00</span> );
+ VG.FillColor(<span class="pas-hex">$00</span> ,<span class="pas-hex">$FF</span> ,<span class="pas-hex">$00</span> );
+
+ <span class="pas-comment">// Rounded rectangle </span>
+ VG.RoundedRect(
+ <span class="pas-num">15</span> ,<span class="pas-num">15</span> ,ClientWidth - <span class="pas-num">15</span> ,ClientHeight - <span class="pas-num">15</span> ,
+ <span class="pas-num">40</span> ,<span class="pas-num">30</span> ,<span class="pas-num">20</span> ,<span class="pas-num">10</span> );
+
+ <span class="pas-kwd">end</span>;
+
+</pre></font></blockquote>
+
+ <blockquote><font class="doc-down-ex">
+ <a href="agg2d_files/tagg2d_example39.png">
+ <img src="agg2d_files/tagg2d_example39.jpg" width="120" height="124" border="0">
+ </a><p>
+ </font></blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="Ellipse"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">Ellipse</font>
+ (<font class="doc-id">cx</font>,
+ <font class="doc-id">cy</font>,
+ <font class="doc-id">rx</font>,
+ <font class="doc-id">ry</font> )
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Draws ellipse at defined center point coordinates with defined horizontal and vertical radius.<p>
+
+ If radiuses equals, circle is drawn.
+
+ </blockquote>
+
+ <font class="doc-sect">Parameters</font>
+ <blockquote>
+ <font class="doc-param"><font class="doc-id">cx</font> : <font class="doc-type">double</font></font><p>
+ X coordinate of ellipse's center point [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">cy</font> : <font class="doc-type">double</font></font><p>
+ Y coordinate of ellipse's center point [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">rx</font> : <font class="doc-type">double</font></font><p>
+ Horizontal ellipse radius [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">ry</font> : <font class="doc-type">double</font></font><p>
+ Vertical ellipse radius [in subpixels].
+
+ </blockquote>
+
+ <font class="doc-sect">Example</font>
+<blockquote><font class="pas-source"><pre class="pas-source">
+ <span class="pas-kwd">if</span> VG.Attach(Image1.Picture.Bitmap ) <span class="pas-kwd">then</span>
+ <span class="pas-kwd">begin</span>
+ VG.ClearAll(<span class="pas-num">255</span> ,<span class="pas-num">255</span> ,<span class="pas-num">255</span> );
+
+ Randomize;
+
+ <span class="pas-comment">// Draw 100 random ellipses</span>
+ <span class="pas-kwd">for</span> i:=<span class="pas-num">1</span> <span class="pas-kwd">to</span> <span class="pas-num">100</span> <span class="pas-kwd">do</span>
+ <span class="pas-kwd">begin</span>
+ VG.LineColor(
+ random(<span class="pas-num">255</span> ) ,
+ random(<span class="pas-num">255</span> ) ,
+ random(<span class="pas-num">255</span> ) ,
+ random(<span class="pas-num">255</span> ) );
+
+ VG.FillColor(
+ random(<span class="pas-num">255</span> ) ,
+ random(<span class="pas-num">255</span> ) ,
+ random(<span class="pas-num">255</span> ) ,
+ random(<span class="pas-num">255</span> ) );
+
+ VG.LineWidth(random(<span class="pas-num">100</span> ) / <span class="pas-num">10</span> );
+
+ VG.Ellipse(
+ random(ClientWidth - <span class="pas-num">20</span> ) + <span class="pas-float">10.5</span> ,
+ random(ClientHeight - <span class="pas-num">20</span> ) + <span class="pas-float">10.5</span> ,
+ random(Trunc(ClientWidth / <span class="pas-num">2</span> ) ) + <span class="pas-float">10.5</span> ,
+ random(Trunc(ClientHeight / <span class="pas-num">2</span> ) ) + <span class="pas-float">10.5</span> );
+
+ <span class="pas-kwd">end</span>;
+
+ <span class="pas-kwd">end</span>;
+
+</pre></font></blockquote>
+
+ <blockquote><font class="doc-down-ex">
+ <a href="agg2d_files/tagg2d_example40.png">
+ <img src="agg2d_files/tagg2d_example40.jpg" width="127" height="124" border="0">
+ </a><p>
+ </font></blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="Arc"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">Arc</font>
+ (<font class="doc-id">cx</font>,
+ <font class="doc-id">cy</font>,
+ <font class="doc-id">rx</font>,
+ <font class="doc-id">ry</font>,
+ <font class="doc-id">start</font>,
+ <font class="doc-id">sweep</font> )
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Draws a portion of the ellipse at defined center point coordinates with defined horizontal and vertical
+ radius, starting at the start angle and ending at the sweep angle (both angles are in the clockwise
+ direction beginning from 3 hours).
+
+ </blockquote>
+
+ <font class="doc-sect">Parameters</font>
+ <blockquote>
+ <font class="doc-param"><font class="doc-id">cx</font> : <font class="doc-type">double</font></font><p>
+ X coordinate of ellipse's center point [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">cy</font> : <font class="doc-type">double</font></font><p>
+ Y coordinate of ellipse's center point [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">rx</font> : <font class="doc-type">double</font></font><p>
+ Horizontal ellipse radius [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">ry</font> : <font class="doc-type">double</font></font><p>
+ Vertical ellipse radius [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">start</font> : <font class="doc-type">double</font></font><p>
+ Starting angle [in radians].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">sweep</font> : <font class="doc-type">double</font></font><p>
+ Ending angle [in radians].
+
+ </blockquote>
+
+ <font class="doc-sect">Example</font>
+<blockquote><font class="pas-source"><pre class="pas-source">
+ <span class="pas-kwd">if</span> VG.Attach(Image1.Picture.Bitmap ) <span class="pas-kwd">then</span>
+ <span class="pas-kwd">begin</span>
+ VG.ClearAll(<span class="pas-num">255</span> ,<span class="pas-num">255</span> ,<span class="pas-num">255</span> );
+
+ <span class="pas-comment">// Line color &amp; width</span>
+ VG.LineColor(<span class="pas-hex">$FF</span> ,<span class="pas-hex">$00</span> ,<span class="pas-hex">$00</span> );
+ VG.LineWidth(<span class="pas-num">5</span> );
+
+ <span class="pas-comment">// Draw Arc from 45 degrees to 270 degrees </span>
+ VG.Arc(<span class="pas-num">120</span> ,<span class="pas-num">100</span> ,<span class="pas-num">80</span> ,<span class="pas-num">50</span> ,Deg2Rad(<span class="pas-num">45</span> ) ,Deg2Rad(<span class="pas-num">270</span> ) );
+
+ <span class="pas-kwd">end</span>;
+
+</pre></font></blockquote>
+
+ <blockquote><font class="doc-down-ex">
+ <a href="agg2d_files/tagg2d_example41.png">
+ <img src="agg2d_files/tagg2d_example41.jpg" width="120" height="124" border="0">
+ </a><p>
+ </font></blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="Star"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">Star</font>
+ (<font class="doc-id">cx</font>,
+ <font class="doc-id">cy</font>,
+ <font class="doc-id">r1</font>,
+ <font class="doc-id">r2</font>,
+ <font class="doc-id">startAngle</font>,
+ <font class="doc-id">numRays</font> )
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Draws multigon at defined center point with following alghorithm:<p>
+
+ <ol>
+ <li>Circle is divided into double amount of segments, as defined amount of rays (of star).</li><p>
+
+ <li>Starting from 3 hours going clockwise (shifted by a start angle), a multigon is created
+ by connecting individual cusps of multigon, that are product of intersection
+ of a ray from center point and length defined either by <font class="doc-id">r2</font>
+ or <font class="doc-id">r1</font> radius.<p>
+
+ <li>First cusp is generated from <font class="doc-id">r2</font> length intersection with a ray from
+ center point towards a line on 3 hours (shifted by a start angle). Segment angle is added and next cusp is generated from
+ <font class="doc-id">r1</font> length intersection with a ray from center point towards a line
+ on 3 hours (shifted by a start angle plus added segment angle on previous step).<p>
+
+ <li>The rest of cusps are generated by continuously adding the segment angle and intersecting
+ <font class="doc-id">r2</font> or <font class="doc-id">r1</font> lengths with a ray from center point.
+ </ol>
+
+ While the alghorithm may seem complicated, it allows a creation of more shapes than just a star.
+ If <font class="doc-id">r1</font> and <font class="doc-id">r2</font> lengths are equal, generated
+ is a polygon with double amount of sides as requested rays of star. If <font class="doc-id">r1</font>
+ is considerably different from <font class="doc-id">r2</font>, generated is a star shape with required
+ number of rays. If <font class="doc-id">r1</font> approximates <font class="doc-id">r2</font>, generated
+ is rounded shape with a wavy border. On low number of rays (2 and 3) a shapes like triangle and diamond
+ can be generated. If <font class="doc-id">r1</font> or <font class="doc-id">r2</font> is zero, a spoky
+ like shapes are generated. If one of <font class="doc-id">r1</font>/<font class="doc-id">r2</font> lenghts
+ is negative, a colliding stroked star is generated.
+
+ </blockquote>
+
+ <font class="doc-sect">Parameters</font>
+ <blockquote>
+ <font class="doc-param"><font class="doc-id">cx</font> : <font class="doc-type">double</font></font><p>
+ X coordinate of multigon's center point [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">cy</font> : <font class="doc-type">double</font></font><p>
+ Y coordinate of multigon's center point [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">r1</font> : <font class="doc-type">double</font></font><p>
+ Radius length of the outer cusp of multigon [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">r2</font> : <font class="doc-type">double</font></font><p>
+ Radius length of the inner cusp of multigon [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">startAngle</font> : <font class="doc-type">double</font></font><p>
+ Rotation angle of the starting line on 3 hours going clockwise [in radians].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">numRays</font> : <font class="doc-type">integer</font></font><p>
+ Amount of required rays for a star shape generation.
+
+ </blockquote>
+
+ <font class="doc-sect">Example</font>
+<blockquote><font class="pas-source"><pre class="pas-source">
+ <span class="pas-kwd">if</span> VG.Attach(Image1.Picture.Bitmap ) <span class="pas-kwd">then</span>
+ <span class="pas-kwd">begin</span>
+ VG.ClearAll(<span class="pas-num">255</span> ,<span class="pas-num">255</span> ,<span class="pas-num">255</span> );
+
+ <span class="pas-comment">// Line color &amp; width</span>
+ VG.LineColor(<span class="pas-hex">$FF</span> ,<span class="pas-hex">$00</span> ,<span class="pas-hex">$00</span> );
+ VG.FillColor(<span class="pas-hex">$FF</span> ,<span class="pas-hex">$FF</span> ,<span class="pas-hex">$00</span> );
+ VG.LineWidth(<span class="pas-num">5</span> );
+
+ <span class="pas-comment">// Variating a number of Star multigons </span>
+ VG.Translate(-<span class="pas-num">30</span> ,-<span class="pas-num">30</span> );
+ VG.Star(<span class="pas-num">100</span> ,<span class="pas-num">100</span> ,<span class="pas-num">70</span> ,<span class="pas-num">30</span> ,Deg2Rad(<span class="pas-num">45</span> ) ,<span class="pas-num">2</span> );
+
+ VG.Translate(<span class="pas-num">150</span> ,<span class="pas-num">0</span> );
+ VG.Star(<span class="pas-num">100</span> ,<span class="pas-num">100</span> ,<span class="pas-num">70</span> ,<span class="pas-num">15</span> ,Deg2Rad(<span class="pas-num">0</span> ) ,<span class="pas-num">3</span> );
+
+ VG.Translate(<span class="pas-num">150</span> ,<span class="pas-num">0</span> );
+ VG.Star(<span class="pas-num">100</span> ,<span class="pas-num">100</span> ,-<span class="pas-num">70</span> ,<span class="pas-num">70</span> ,Deg2Rad(<span class="pas-num">55</span> ) ,<span class="pas-num">3</span> );
+
+ VG.Translate(<span class="pas-num">150</span> ,<span class="pas-num">0</span> );
+ VG.Star(<span class="pas-num">100</span> ,<span class="pas-num">100</span> ,<span class="pas-num">70</span> ,<span class="pas-num">70</span> ,Deg2Rad(<span class="pas-num">0</span> ) ,<span class="pas-num">3</span> );
+
+ VG.Translate(<span class="pas-num">150</span> ,<span class="pas-num">0</span> );
+ VG.Star(<span class="pas-num">100</span> ,<span class="pas-num">100</span> ,<span class="pas-num">20</span> ,<span class="pas-num">70</span> ,Deg2Rad(<span class="pas-num">35</span> ) ,<span class="pas-num">4</span> );
+
+ VG.Translate(<span class="pas-num">150</span> ,<span class="pas-num">0</span> );
+ VG.Star(<span class="pas-num">100</span> ,<span class="pas-num">100</span> ,<span class="pas-num">50</span> ,-<span class="pas-num">70</span> ,Deg2Rad(<span class="pas-num">30</span> ) ,<span class="pas-num">4</span> );
+
+ VG.Translate(-<span class="pas-num">150</span> *<span class="pas-num">5</span> ,<span class="pas-num">150</span> );
+ VG.Star(<span class="pas-num">100</span> ,<span class="pas-num">100</span> ,<span class="pas-num">30</span> ,<span class="pas-num">70</span> ,Deg2Rad(<span class="pas-num">0</span> ) ,<span class="pas-num">5</span> );
+
+ VG.Translate(<span class="pas-num">150</span> ,<span class="pas-num">0</span> );
+ VG.Star(<span class="pas-num">100</span> ,<span class="pas-num">100</span> ,<span class="pas-num">0</span> ,<span class="pas-num">70</span> ,Deg2Rad(<span class="pas-num">0</span> ) ,<span class="pas-num">5</span> );
+
+ VG.Translate(<span class="pas-num">150</span> ,<span class="pas-num">0</span> );
+ VG.Star(<span class="pas-num">100</span> ,<span class="pas-num">100</span> ,<span class="pas-num">30</span> ,-<span class="pas-num">70</span> ,Deg2Rad(<span class="pas-num">0</span> ) ,<span class="pas-num">5</span> );
+
+ VG.Translate(<span class="pas-num">150</span> ,<span class="pas-num">0</span> );
+ VG.Star(<span class="pas-num">100</span> ,<span class="pas-num">100</span> ,<span class="pas-num">40</span> ,<span class="pas-num">70</span> ,Deg2Rad(<span class="pas-num">30</span> ) ,<span class="pas-num">6</span> );
+
+ VG.Translate(<span class="pas-num">150</span> ,<span class="pas-num">0</span> );
+ VG.Star(<span class="pas-num">100</span> ,<span class="pas-num">100</span> ,-<span class="pas-num">45</span> ,<span class="pas-num">70</span> ,Deg2Rad(<span class="pas-num">30</span> ) ,<span class="pas-num">10</span> );
+
+ VG.Translate(<span class="pas-num">150</span> ,<span class="pas-num">0</span> );
+ VG.Star(<span class="pas-num">100</span> ,<span class="pas-num">100</span> ,<span class="pas-num">65</span> ,<span class="pas-num">70</span> ,Deg2Rad(<span class="pas-num">30</span> ) ,<span class="pas-num">20</span> );
+
+ <span class="pas-kwd">end</span>;
+
+</pre></font></blockquote>
+
+ <blockquote><font class="doc-down-ex">
+ <a href="agg2d_files/tagg2d_example42.png">
+ <img src="agg2d_files/tagg2d_example42.jpg" width="338" height="124" border="0">
+ </a><p>
+ </font></blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="Curve"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">Curve</font>
+ (<font class="doc-id">x1</font>,
+ <font class="doc-id">y1</font>,
+ <font class="doc-id">x2</font>,
+ <font class="doc-id">y2</font>,
+ <font class="doc-id">x3</font>,
+ <font class="doc-id">y3</font> )
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Draws quadratic (conic) Bezier curve at defined coordinates.<p>
+
+ A quadratic Bezier segment is defined by three control points (<font class="doc-id">x1</font>,
+ <font class="doc-id">y1</font>), (<font class="doc-id">x2</font>, <font class="doc-id">y2</font>)
+ and (<font class="doc-id">x3</font>, <font class="doc-id">y3</font>). The curve starts at
+ (<font class="doc-id">x1</font>, <font class="doc-id">y1</font>) and ends at (<font class="doc-id">x3</font>,
+ <font class="doc-id">y3</font>). The shape of the curve is influenced by the placement of the internal
+ control point (<font class="doc-id">x2</font>, <font class="doc-id">y2</font>), but the curve does not
+ usually pass through that point. Assuming non-coincident control points, the tangent of the curve
+ at the initial point <font class="doc-id">x1</font> is aligned with and has the same direction as
+ the vector <font class="doc-id">x2</font> ľ <font class="doc-id">x1</font> and the tangent at the final
+ point <font class="doc-id">x3</font> is aligned with and has the same direction as the vector
+ <font class="doc-id">x3</font> ľ <font class="doc-id">x2</font>.
+
+ </blockquote>
+
+ <font class="doc-sect">Parameters</font>
+ <blockquote>
+ <font class="doc-param"><font class="doc-id">x1</font> : <font class="doc-type">double</font></font><p>
+ X coordinate of starting control point [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">y1</font> : <font class="doc-type">double</font></font><p>
+ Y coordinate of starting control point [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">x2</font> : <font class="doc-type">double</font></font><p>
+ X coordinate of internal control point [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">y2</font> : <font class="doc-type">double</font></font><p>
+ Y coordinate of internal control point [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">x3</font> : <font class="doc-type">double</font></font><p>
+ X coordinate of ending control point [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">y3</font> : <font class="doc-type">double</font></font><p>
+ Y coordinate of ending control point [in subpixels].
+
+ </blockquote>
+
+ <font class="doc-sect">Example</font>
+<blockquote><font class="pas-source"><pre class="pas-source">
+ <span class="pas-kwd">if</span> VG.Attach(Image1.Picture.Bitmap ) <span class="pas-kwd">then</span>
+ <span class="pas-kwd">begin</span>
+ VG.ClearAll(<span class="pas-num">255</span> ,<span class="pas-num">255</span> ,<span class="pas-num">255</span> );
+
+ <span class="pas-comment">// Indicate Path for Curve</span>
+ VG.LineColor(<span class="pas-hex">$00</span> ,<span class="pas-hex">$00</span> ,<span class="pas-hex">$FF</span> );
+ VG.FillColor(<span class="pas-hex">$00</span> ,<span class="pas-hex">$00</span> ,<span class="pas-hex">$FF</span> );
+ VG.LineWidth(<span class="pas-float">0.2</span> );
+
+ VG.Rectangle(<span class="pas-num">20</span> - <span class="pas-num">4</span> ,<span class="pas-num">170</span> - <span class="pas-num">4</span> ,<span class="pas-num">20</span> + <span class="pas-num">4</span> ,<span class="pas-num">170</span> + <span class="pas-num">4</span> );
+ VG.Rectangle(<span class="pas-num">70</span> - <span class="pas-num">4</span> ,<span class="pas-num">20</span> - <span class="pas-num">4</span> ,<span class="pas-num">70</span> + <span class="pas-num">4</span> ,<span class="pas-num">20</span> + <span class="pas-num">4</span> );
+ VG.Rectangle(<span class="pas-num">190</span> - <span class="pas-num">4</span> ,<span class="pas-num">120</span> - <span class="pas-num">4</span> ,<span class="pas-num">190</span> + <span class="pas-num">4</span> ,<span class="pas-num">120</span> + <span class="pas-num">4</span> );
+
+ VG.Line(<span class="pas-num">20</span> ,<span class="pas-num">170</span> ,<span class="pas-num">70</span> ,<span class="pas-num">20</span> );
+ VG.Line(<span class="pas-num">70</span> ,<span class="pas-num">20</span> ,<span class="pas-num">190</span> ,<span class="pas-num">120</span> );
+
+ <span class="pas-comment">// Draw Quadratic (Conic) Bezier curve itself</span>
+ VG.LineColor(<span class="pas-hex">$FF</span> ,<span class="pas-hex">$00</span> ,<span class="pas-hex">$00</span> );
+ VG.FillColor(<span class="pas-hex">$FF</span> ,<span class="pas-hex">$FF</span> ,<span class="pas-hex">$00</span> );
+ VG.LineWidth(<span class="pas-num">5</span> );
+
+ VG.Curve(<span class="pas-num">20</span> ,<span class="pas-num">170</span> ,<span class="pas-num">70</span> ,<span class="pas-num">20</span> ,<span class="pas-num">190</span> ,<span class="pas-num">120</span> );
+
+ <span class="pas-kwd">end</span>;
+
+</pre></font></blockquote>
+
+ <blockquote><font class="doc-down-ex">
+ <a href="agg2d_files/tagg2d_example43.png">
+ <img src="agg2d_files/tagg2d_example43.jpg" width="120" height="124" border="0">
+ </a><p>
+ </font></blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="Curve2"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">Curve</font>
+ (<font class="doc-id">x1</font>,
+ <font class="doc-id">y1</font>,
+ <font class="doc-id">x2</font>,
+ <font class="doc-id">y2</font>,
+ <font class="doc-id">x3</font>,
+ <font class="doc-id">y3</font>,
+ <font class="doc-id">x4</font>,
+ <font class="doc-id">y4</font> )
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Draws cubic Bezier curve at defined coordinates.<p>
+
+ Cubic Bezier segments are defined by four control points (<font class="doc-id">x1</font>,
+ <font class="doc-id">y1</font>), (<font class="doc-id">x2</font>, <font class="doc-id">y2</font>),
+ (<font class="doc-id">x3</font>, <font class="doc-id">y3</font>) and (<font class="doc-id">x4</font>,
+ <font class="doc-id">y4</font>). The curve starts at (<font class="doc-id">x1</font>, <font class="doc-id">y1</font>)
+ and ends at (<font class="doc-id">x4</font>, <font class="doc-id">y4</font>). The shape of the curve is
+ influenced by the placement of the internal control points (<font class="doc-id">x2</font>,
+ <font class="doc-id">y2</font>) and (<font class="doc-id">x3</font>, <font class="doc-id">y3</font>),
+ but the curve does not usually pass through those points. Assuming non-coincident control points,
+ the tangent of the curve at the initial point <font class="doc-id">x1</font> is aligned with and has
+ the same direction as the vector <font class="doc-id">x2</font> ľ <font class="doc-id">x1</font> and
+ the tangent at the final point <font class="doc-id">x4</font> is aligned with and has the same direction
+ as the vector <font class="doc-id">x4</font> ľ <font class="doc-id">x3</font>.
+
+ </blockquote>
+
+ <font class="doc-sect">Parameters</font>
+ <blockquote>
+ <font class="doc-param"><font class="doc-id">x1</font> : <font class="doc-type">double</font></font><p>
+ X coordinate of starting control point [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">y1</font> : <font class="doc-type">double</font></font><p>
+ Y coordinate of starting control point [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">x2</font> : <font class="doc-type">double</font></font><p>
+ X coordinate of first internal control point [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">y2</font> : <font class="doc-type">double</font></font><p>
+ Y coordinate of first internal control point [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">x3</font> : <font class="doc-type">double</font></font><p>
+ X coordinate of second internal control point [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">y3</font> : <font class="doc-type">double</font></font><p>
+ Y coordinate of second internal control point [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">x4</font> : <font class="doc-type">double</font></font><p>
+ X coordinate of ending control point [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">y4</font> : <font class="doc-type">double</font></font><p>
+ Y coordinate of ending control point [in subpixels].
+
+ </blockquote>
+
+ <font class="doc-sect">Example</font>
+<blockquote><font class="pas-source"><pre class="pas-source">
+ <span class="pas-kwd">if</span> VG.Attach(Image1.Picture.Bitmap ) <span class="pas-kwd">then</span>
+ <span class="pas-kwd">begin</span>
+ VG.ClearAll(<span class="pas-num">255</span> ,<span class="pas-num">255</span> ,<span class="pas-num">255</span> );
+
+ <span class="pas-comment">// Indicate Path for Curve</span>
+ VG.LineColor(<span class="pas-hex">$00</span> ,<span class="pas-hex">$00</span> ,<span class="pas-hex">$FF</span> );
+ VG.FillColor(<span class="pas-hex">$00</span> ,<span class="pas-hex">$00</span> ,<span class="pas-hex">$FF</span> );
+ VG.LineWidth(<span class="pas-float">0.2</span> );
+
+ VG.Rectangle(<span class="pas-num">20</span> - <span class="pas-num">4</span> ,<span class="pas-num">170</span> - <span class="pas-num">4</span> ,<span class="pas-num">20</span> + <span class="pas-num">4</span> ,<span class="pas-num">170</span> + <span class="pas-num">4</span> );
+ VG.Rectangle(<span class="pas-num">50</span> - <span class="pas-num">4</span> ,<span class="pas-num">20</span> - <span class="pas-num">4</span> ,<span class="pas-num">50</span> + <span class="pas-num">4</span> ,<span class="pas-num">20</span> + <span class="pas-num">4</span> );
+ VG.Rectangle(<span class="pas-num">140</span> - <span class="pas-num">4</span> ,<span class="pas-num">30</span> - <span class="pas-num">4</span> ,<span class="pas-num">140</span> + <span class="pas-num">4</span> ,<span class="pas-num">30</span> + <span class="pas-num">4</span> );
+ VG.Rectangle(<span class="pas-num">200</span> - <span class="pas-num">4</span> ,<span class="pas-num">120</span> - <span class="pas-num">4</span> ,<span class="pas-num">200</span> + <span class="pas-num">4</span> ,<span class="pas-num">120</span> + <span class="pas-num">4</span> );
+
+ VG.Line(<span class="pas-num">20</span> ,<span class="pas-num">170</span> ,<span class="pas-num">50</span> ,<span class="pas-num">20</span> );
+ VG.Line(<span class="pas-num">50</span> ,<span class="pas-num">20</span> ,<span class="pas-num">140</span> ,<span class="pas-num">30</span> );
+ VG.Line(<span class="pas-num">140</span> ,<span class="pas-num">30</span> ,<span class="pas-num">200</span> ,<span class="pas-num">120</span> );
+
+ <span class="pas-comment">// Draw Cubic Bezier curve itself</span>
+ VG.LineColor(<span class="pas-hex">$FF</span> ,<span class="pas-hex">$00</span> ,<span class="pas-hex">$00</span> );
+ VG.FillColor(<span class="pas-hex">$FF</span> ,<span class="pas-hex">$FF</span> ,<span class="pas-hex">$00</span> );
+ VG.LineWidth(<span class="pas-num">5</span> );
+
+ VG.Curve(<span class="pas-num">20</span> ,<span class="pas-num">170</span> ,<span class="pas-num">50</span> ,<span class="pas-num">20</span> ,<span class="pas-num">140</span> ,<span class="pas-num">30</span> ,<span class="pas-num">200</span> ,<span class="pas-num">120</span> );
+
+ <span class="pas-kwd">end</span>;
+
+</pre></font></blockquote>
+
+ <blockquote><font class="doc-down-ex">
+ <a href="agg2d_files/tagg2d_example44.png">
+ <img src="agg2d_files/tagg2d_example44.jpg" width="120" height="124" border="0">
+ </a><p>
+ </font></blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="Polygon"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">Polygon</font>
+ (<font class="doc-id">xy</font>,
+ <font class="doc-id">numPoints</font> )
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Draws closed path consisting of an arbitrary number of linear segments.<p>
+
+ </blockquote>
+
+ <font class="doc-sect">Parameters</font>
+ <blockquote>
+ <font class="doc-param"><font class="doc-id">xy</font> : <font class="doc-type">PDouble</font></font><p>
+ Pointer to the first element of an array containing polygon linear segments defined as
+ x:y couples [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">numPoints</font> : <font class="doc-type">integer</font></font><p>
+ Determines, how many x:y couples are in the linear segments array defining a polygon.
+
+ </blockquote>
+
+ <font class="doc-sect">Example</font>
+<blockquote><font class="pas-source"><pre class="pas-source">
+ <span class="pas-kwd">var</span>
+ i : integer;
+ poly : <span class="pas-kwd">array</span>[<span class="pas-num">1</span>..<span class="pas-num">40</span> ] <span class="pas-kwd">of</span> double;
+
+ <span class="pas-kwd">if</span> VG.Attach(Image1.Picture.Bitmap ) <span class="pas-kwd">then</span>
+ <span class="pas-kwd">begin</span>
+ VG.ClearAll(<span class="pas-num">255</span> ,<span class="pas-num">255</span> ,<span class="pas-num">255</span> );
+
+ <span class="pas-comment">// Randomize polygon vertexes</span>
+ Randomize;
+
+ <span class="pas-kwd">for</span> i:=<span class="pas-num">1</span> <span class="pas-kwd">to</span> <span class="pas-num">20</span> <span class="pas-kwd">do</span>
+ <span class="pas-kwd">begin</span>
+ poly[i * <span class="pas-num">2</span> - <span class="pas-num">1</span> ]:=random(ClientWidth - <span class="pas-num">20</span> ) + <span class="pas-float">10.5</span>;
+ poly[i * <span class="pas-num">2</span> ]:=random(ClientHeight - <span class="pas-num">20</span> ) + <span class="pas-float">10.5</span>;
+
+ <span class="pas-kwd">end</span>;
+
+ <span class="pas-comment">// Draw Polygon</span>
+ VG.LineWidth(<span class="pas-num">3</span> );
+ VG.LineColor(<span class="pas-hex">$FF</span> ,<span class="pas-hex">$00</span> ,<span class="pas-hex">$00</span> );
+ VG.FillColor(<span class="pas-hex">$FF</span> ,<span class="pas-hex">$FF</span> ,<span class="pas-hex">$00</span> );
+
+ VG.Polygon(@poly[<span class="pas-num">1</span> ] ,<span class="pas-num">20</span> );
+
+ <span class="pas-kwd">end</span>;
+
+</pre></font></blockquote>
+
+ <blockquote><font class="doc-down-ex">
+ <a href="agg2d_files/tagg2d_example45.png">
+ <img src="agg2d_files/tagg2d_example45.jpg" width="120" height="124" border="0">
+ </a><p>
+ </font></blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="Polyline"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">Polyline</font>
+ (<font class="doc-id">xy</font>,
+ <font class="doc-id">numPoints</font> )
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Draws open path consisting of an arbitrary number of linear segments.
+
+ </blockquote>
+
+ <font class="doc-sect">Parameters</font>
+ <blockquote>
+ <font class="doc-param"><font class="doc-id">xy</font> : <font class="doc-type">PDouble</font></font><p>
+ Pointer to the first element of an array containing polyline linear segments defined as x:y couples
+ [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">numPoints</font> : <font class="doc-type">integer</font></font><p>
+ Determines, how many x:y couples are in the linear segments array defining a polyline.
+
+ </blockquote>
+
+ <font class="doc-sect">Example</font>
+<blockquote><font class="pas-source"><pre class="pas-source">
+ <span class="pas-kwd">var</span>
+ i : integer;
+ poly : <span class="pas-kwd">array</span>[<span class="pas-num">1</span>..<span class="pas-num">40</span> ] <span class="pas-kwd">of</span> double;
+
+ <span class="pas-kwd">if</span> VG.Attach(Image1.Picture.Bitmap ) <span class="pas-kwd">then</span>
+ <span class="pas-kwd">begin</span>
+ VG.ClearAll(<span class="pas-num">255</span> ,<span class="pas-num">255</span> ,<span class="pas-num">255</span> );
+
+ <span class="pas-comment">// Randomize polyline vertexes</span>
+ Randomize;
+
+ <span class="pas-kwd">for</span> i:=<span class="pas-num">1</span> <span class="pas-kwd">to</span> <span class="pas-num">20</span> <span class="pas-kwd">do</span>
+ <span class="pas-kwd">begin</span>
+ poly[i * <span class="pas-num">2</span> - <span class="pas-num">1</span> ]:=random(ClientWidth - <span class="pas-num">20</span> ) + <span class="pas-float">10.5</span>;
+ poly[i * <span class="pas-num">2</span> ]:=random(ClientHeight - <span class="pas-num">20</span> ) + <span class="pas-float">10.5</span>;
+
+ <span class="pas-kwd">end</span>;
+
+ <span class="pas-comment">// Draw Polyline</span>
+ VG.LineWidth(<span class="pas-num">3</span> );
+ VG.LineColor(<span class="pas-hex">$FF</span> ,<span class="pas-hex">$00</span> ,<span class="pas-hex">$00</span> );
+
+ VG.Polyline(@poly[<span class="pas-num">1</span> ] ,<span class="pas-num">20</span> );
+
+ <span class="pas-kwd">end</span>;
+
+</pre></font></blockquote>
+
+ <blockquote><font class="doc-down-ex">
+ <a href="agg2d_files/tagg2d_example46.png">
+ <img src="agg2d_files/tagg2d_example46.jpg" width="120" height="124" border="0">
+ </a><p>
+ </font></blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="FlipText"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">FlipText</font>
+ (<font class="doc-id">flip</font> )
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Changes the vertical direction of fonts being used for rendering of text.<p>
+
+ <div class="doc-note">
+ Change to the font vertical direction will be in effect at next call to the <font class="doc-func">Font</font> method.
+ </div><p>
+
+ This method is useful if user wishes to have a coordinate system originating in Bottom Left
+ corned. Without flipping, the text would hang upside - down. Flipping also considers text
+ alignation rules when rendering.<p>
+
+ Text flipping can be also used to achieve a mirror like effects, like in example below.
+
+ </blockquote>
+
+ <font class="doc-sect">Parameters</font>
+ <blockquote>
+ <font class="doc-param"><font class="doc-id">flip</font> : <font class="doc-type">boolean</font></font><p>
+ Indicates the vertical direction of fonts.<p>
+
+ TRUE means fonts are upside-down.<p>
+
+ FALSE means fonts are in the same vertical direction as the current coordinate system.
+
+ </blockquote>
+
+ <font class="doc-sect">Example</font>
+<blockquote><font class="pas-source"><pre class="pas-source">
+ <span class="pas-kwd">if</span> VG.Attach(Image1.Picture.Bitmap ) <span class="pas-kwd">then</span>
+ <span class="pas-kwd">begin</span>
+ VG.ClearAll(<span class="pas-num">255</span> ,<span class="pas-num">255</span> ,<span class="pas-num">255</span> );
+
+ <span class="pas-comment">// Normal Text</span>
+ VG.LineColor(<span class="pas-hex">$00</span> ,<span class="pas-hex">$00</span> ,<span class="pas-hex">$8B</span> );
+ VG.FillColor(<span class="pas-hex">$1E</span> ,<span class="pas-hex">$90</span> ,<span class="pas-hex">$FF</span> );
+
+ VG.Font(<span class="pas-str">'Times New Roman'</span> ,<span class="pas-num">45</span> );
+ VG.Text(<span class="pas-num">20</span> ,<span class="pas-num">100</span> ,<span class="pas-str">'Vectors are cool !'</span> );
+
+ <span class="pas-comment">// Upside-down Text </span>
+ VG.FlipText(true );
+
+ VG.LineColor(<span class="pas-hex">$C0</span> ,<span class="pas-hex">$C0</span> ,<span class="pas-hex">$C0</span> );
+ VG.FillColor(<span class="pas-hex">$C0</span> ,<span class="pas-hex">$C0</span> ,<span class="pas-hex">$C0</span> );
+
+ VG.Font(<span class="pas-str">'Times New Roman'</span> ,<span class="pas-num">45</span> );
+ VG.Text(<span class="pas-num">20</span> ,<span class="pas-num">105</span> ,<span class="pas-str">'Vectors are cool !'</span> );
+
+ <span class="pas-kwd">end</span>;
+
+</pre></font></blockquote>
+
+ <blockquote><font class="doc-down-ex">
+ <a href="agg2d_files/tagg2d_example47.png">
+ <img src="agg2d_files/tagg2d_example47.jpg" width="203" height="124" border="0">
+ </a><p>
+ </font></blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="Font"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">Font</font>
+ (<font class="doc-id">fileName</font>,
+ <font class="doc-id">height</font>,
+ <font class="doc-id">bold</font>,
+ <font class="doc-id">italic</font>,
+ <font class="doc-id">cache</font>,
+ <font class="doc-id">angle</font> )
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Changes the current font to be used for text rendering.
+
+ </blockquote>
+
+ <font class="doc-sect">Parameters</font>
+ <blockquote>
+ <font class="doc-param"><font class="doc-id">fileName</font> : <font class="doc-type">AnsiString</font></font><p>
+ If FreeType font engine is used, this parameter defines the filename containing the font face
+ to be used.<p>
+
+ If Windows TrueType font engine is used, this parameter defines the face name of the font to
+ be used.
+ <p>
+
+ <font class="doc-param"><font class="doc-id">height</font> : <font class="doc-type">double</font></font><p>
+ Defines the height of the font [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">bold</font> : <font class="doc-type">boolean</font> = false</font><p>
+ Indicates if font has to be bold.
+ <p>
+
+ <font class="doc-param"><font class="doc-id">italic</font> : <font class="doc-type">boolean</font> = false</font><p>
+ Indicates if font has to be italic.
+ <p>
+
+ <font class="doc-param"><font class="doc-id">cache</font> : <font class="doc-type">TAggFontCacheType [<a href="#TAggFontCacheType">*</a>]</font> = <font class="doc-enum">AGG_VectorFontCache</font></font><p>
+ Defines the type of internal AGG font cache.<p>
+
+ Fonts are cached in <font class="doc-type">TAgg2D</font> automatically, which means that the procedure
+ of loading a particular glyph definition is performed just once per font.<p>
+
+ Generally vector font cache is more versatile, but it's slower than raster font cahce when
+ rendering.<p>
+
+ Raster font cache produces faster text renderings, but the text can't be rotated (also affine
+ transformations don't apply).
+ <p>
+
+ <font class="doc-param"><font class="doc-id">angle</font> : <font class="doc-type">double</font> = 0.0</font><p>
+ Explicit font rotation [in radians]. Doesn't apply to the raster font cache.
+
+ </blockquote>
+
+ <font class="doc-sect">Example</font>
+<blockquote><font class="pas-source"><pre class="pas-source">
+ <span class="pas-kwd">if</span> VG.Attach(Image1.Picture.Bitmap ) <span class="pas-kwd">then</span>
+ <span class="pas-kwd">begin</span>
+ VG.ClearAll(<span class="pas-num">255</span> ,<span class="pas-num">255</span> ,<span class="pas-num">255</span> );
+
+ <span class="pas-comment">// Draw different text variations</span>
+ VG.LineColor(<span class="pas-hex">$1E</span> ,<span class="pas-hex">$90</span> ,<span class="pas-hex">$FF</span> );
+ VG.FillColor(<span class="pas-hex">$1E</span> ,<span class="pas-hex">$90</span> ,<span class="pas-hex">$FF</span> );
+
+ VG.Font(
+ <span class="pas-str">'Times New Roman'</span> ,<span class="pas-num">25</span> ,false ,false ,
+ AGG_VectorFontCache ,Deg2Rad(<span class="pas-num">270</span> ) );
+ VG.Text(<span class="pas-num">200</span> ,<span class="pas-num">210</span> ,<span class="pas-str">'Times New Roman'</span> );
+
+ VG.LineColor(<span class="pas-hex">$00</span> ,<span class="pas-hex">$00</span> ,<span class="pas-hex">$CD</span> );
+ VG.FillColor(<span class="pas-hex">$00</span> ,<span class="pas-hex">$00</span> ,<span class="pas-hex">$CD</span> );
+
+ VG.Font(
+ <span class="pas-str">'Arial'</span> ,<span class="pas-num">25</span> ,false ,true ,
+ AGG_VectorFontCache ,Deg2Rad(<span class="pas-num">315</span> ) );
+ VG.Text(<span class="pas-num">220</span> ,<span class="pas-num">210</span> ,<span class="pas-str">'Arial Italic'</span> );
+
+ VG.LineColor(<span class="pas-hex">$6A</span> ,<span class="pas-hex">$5A</span> ,<span class="pas-hex">$CD</span> );
+ VG.FillColor(<span class="pas-hex">$6A</span> ,<span class="pas-hex">$5A</span> ,<span class="pas-hex">$CD</span> );
+
+ VG.Font(
+ <span class="pas-str">'Courier'</span> ,<span class="pas-num">25</span> ,true ,false ,
+ AGG_RasterFontCache );
+ VG.Text(<span class="pas-num">220</span> ,<span class="pas-num">230</span> ,<span class="pas-str">'Courier Bold Raster'</span> );
+
+ VG.LineColor(<span class="pas-hex">$20</span> ,<span class="pas-hex">$B2</span> ,<span class="pas-hex">$AA</span> );
+ VG.FillColor(<span class="pas-hex">$20</span> ,<span class="pas-hex">$B2</span> ,<span class="pas-hex">$AA</span> );
+
+ VG.Font(
+ <span class="pas-str">'Verdana'</span> ,<span class="pas-num">25</span> ,false ,false ,
+ AGG_VectorFontCache ,Deg2Rad(<span class="pas-num">45</span> ) );
+ VG.Text(<span class="pas-num">205</span> ,<span class="pas-num">245</span> ,<span class="pas-str">'Verdana'</span> );
+
+ VG.LineColor(<span class="pas-hex">$2E</span> ,<span class="pas-hex">$8B</span> ,<span class="pas-hex">$57</span> );
+ VG.FillColor(<span class="pas-hex">$2E</span> ,<span class="pas-hex">$8B</span> ,<span class="pas-hex">$57</span> );
+
+ VG.Font(
+ <span class="pas-str">'Tahoma'</span> ,<span class="pas-num">25</span> ,false ,false ,
+ AGG_VectorFontCache ,Deg2Rad(<span class="pas-num">90</span> ) );
+ VG.Text(<span class="pas-num">185</span> ,<span class="pas-num">250</span> ,<span class="pas-str">'Tahoma'</span> );
+
+ VG.LineColor(<span class="pas-hex">$B8</span> ,<span class="pas-hex">$86</span> ,<span class="pas-hex">$0B</span> );
+ VG.FillColor(<span class="pas-hex">$B8</span> ,<span class="pas-hex">$86</span> ,<span class="pas-hex">$0B</span> );
+
+ VG.Font(
+ <span class="pas-str">'Lucida Console'</span> ,<span class="pas-num">25</span> ,true ,false ,
+ AGG_VectorFontCache ,Deg2Rad(<span class="pas-num">135</span> ) );
+ VG.Text(<span class="pas-num">165</span> ,<span class="pas-num">240</span> ,<span class="pas-str">'Lucida Console'</span> );
+
+ VG.NoLine;
+ VG.FillColor(<span class="pas-hex">$FF</span> ,<span class="pas-hex">$00</span> ,<span class="pas-hex">$00</span> );
+
+ VG.Font(
+ <span class="pas-str">'Galleria'</span> ,<span class="pas-num">20</span> ,true ,false ,
+ AGG_VectorFontCache ,Deg2Rad(<span class="pas-num">180</span> ) );
+ VG.Text(<span class="pas-num">160</span> ,<span class="pas-num">220</span> ,<span class="pas-str">'Galleria'</span> );
+
+ VG.FillColor(<span class="pas-hex">$FF</span> ,<span class="pas-hex">$A5</span> ,<span class="pas-hex">$00</span> );
+
+ VG.Font(
+ <span class="pas-str">'Briquet'</span> ,<span class="pas-num">30</span> ,false ,true ,
+ AGG_VectorFontCache ,Deg2Rad(<span class="pas-num">225</span> ) );
+ VG.Text(<span class="pas-num">170</span> ,<span class="pas-num">200</span> ,<span class="pas-str">'Briquet Italic'</span> );
+
+ <span class="pas-kwd">end</span>;
+
+</pre></font></blockquote>
+
+ <blockquote><font class="doc-down-ex">
+ <a href="agg2d_files/tagg2d_example48.png">
+ <img src="agg2d_files/tagg2d_example48.jpg" width="144" height="124" border="0">
+ </a><p>
+ </font></blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="FontHeight"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">FontHeight</font>
+ : <font class="doc-type">double</font>
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Retrieves the height of the font used to render text.
+
+ </blockquote>
+
+ <font class="doc-sect">Returns</font>
+ <blockquote>
+ <font class="doc-res-ok">If some value</font>, returned is the height of the currently used font [in subpixels].<p>
+
+ <font class="doc-res-fail">If zero</font>, probably no font has been selected yet.
+
+ </blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="TextAlignment"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">TextAlignment</font>
+ (<font class="doc-id">alignX</font>,
+ <font class="doc-id">alignY</font> )
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Changes the type of horizontal and vertical alignment around the Text Origin.<p>
+
+ When calling the <font class="doc-func">Text</font> method, a x:y coordinates are passed to define
+ at which position the text should be rendered. This position is the Text Origin.<p>
+
+ On X axis, the default Text Origin is considered to be in the leftmost position of bounding
+ box (bbox) of first glyph of text (<font class="doc-enum">AGG_AlignLeft</font>).<p>
+
+ On Y axis, the default Text Origin is considered to be on the font's base line (<font class="doc-enum">AGG_AlignBottom</font>).
+
+ </blockquote>
+
+ <font class="doc-sect">Parameters</font>
+ <blockquote>
+ <font class="doc-param"><font class="doc-id">alignX</font> : <font class="doc-type">TAggTextAlignment [<a href="#TAggTextAlignment">*</a>]</font></font><p>
+ Horizontal alignment of text around the X coordinate of Text Origin.
+ <p>
+
+ <font class="doc-param"><font class="doc-id">alignY</font> : <font class="doc-type">TAggTextAlignment [<a href="#TAggTextAlignment">*</a>]</font></font><p>
+ Vertical alignment of text around the Y coordinate of Text Origin.
+
+ </blockquote>
+
+ <font class="doc-sect">Example</font>
+<blockquote><font class="pas-source"><pre class="pas-source">
+ <span class="pas-kwd">if</span> VG.Attach(Image1.Picture.Bitmap ) <span class="pas-kwd">then</span>
+ <span class="pas-kwd">begin</span>
+ VG.ClearAll(<span class="pas-num">255</span> ,<span class="pas-num">255</span> ,<span class="pas-num">255</span> );
+
+ <span class="pas-comment">// Some prior positioning </span>
+ VG.Scale (<span class="pas-float">0.7</span> ,<span class="pas-float">0.7</span> );
+ VG.Translate(-<span class="pas-num">10</span> ,-<span class="pas-num">70</span> );
+
+ <span class="pas-comment">// Text Alignment leading lines</span>
+ VG.LineColor(<span class="pas-hex">$A9</span> ,<span class="pas-hex">$A9</span> ,<span class="pas-hex">$A9</span> );
+ VG.Line(<span class="pas-float">250.5</span> - <span class="pas-num">150</span> ,<span class="pas-float">150.5</span> ,<span class="pas-float">250.5</span> + <span class="pas-num">150</span> ,<span class="pas-float">150.5</span> );
+ VG.Line(<span class="pas-float">250.5</span> ,<span class="pas-float">150.5</span> - <span class="pas-num">20</span> ,<span class="pas-float">250.5</span> ,<span class="pas-float">150.5</span> + <span class="pas-num">20</span> );
+ VG.Line(<span class="pas-float">250.5</span> - <span class="pas-num">150</span> ,<span class="pas-float">200.5</span> ,<span class="pas-float">250.5</span> + <span class="pas-num">150</span> ,<span class="pas-float">200.5</span> );
+ VG.Line(<span class="pas-float">250.5</span> ,<span class="pas-float">200.5</span> - <span class="pas-num">20</span> ,<span class="pas-float">250.5</span> ,<span class="pas-float">200.5</span> + <span class="pas-num">20</span> );
+ VG.Line(<span class="pas-float">250.5</span> - <span class="pas-num">150</span> ,<span class="pas-float">250.5</span> ,<span class="pas-float">250.5</span> + <span class="pas-num">150</span> ,<span class="pas-float">250.5</span> );
+ VG.Line(<span class="pas-float">250.5</span> ,<span class="pas-float">250.5</span> - <span class="pas-num">20</span> ,<span class="pas-float">250.5</span> ,<span class="pas-float">250.5</span> + <span class="pas-num">20</span> );
+ VG.Line(<span class="pas-float">250.5</span> - <span class="pas-num">150</span> ,<span class="pas-float">300.5</span> ,<span class="pas-float">250.5</span> + <span class="pas-num">150</span> ,<span class="pas-float">300.5</span> );
+ VG.Line(<span class="pas-float">250.5</span> ,<span class="pas-float">300.5</span> - <span class="pas-num">20</span> ,<span class="pas-float">250.5</span> ,<span class="pas-float">300.5</span> + <span class="pas-num">20</span> );
+ VG.Line(<span class="pas-float">250.5</span> - <span class="pas-num">150</span> ,<span class="pas-float">350.5</span> ,<span class="pas-float">250.5</span> + <span class="pas-num">150</span> ,<span class="pas-float">350.5</span> );
+ VG.Line(<span class="pas-float">250.5</span> ,<span class="pas-float">350.5</span> - <span class="pas-num">20</span> ,<span class="pas-float">250.5</span> ,<span class="pas-float">350.5</span> + <span class="pas-num">20</span> );
+ VG.Line(<span class="pas-float">250.5</span> - <span class="pas-num">150</span> ,<span class="pas-float">400.5</span> ,<span class="pas-float">250.5</span> + <span class="pas-num">150</span> ,<span class="pas-float">400.5</span> );
+ VG.Line(<span class="pas-float">250.5</span> ,<span class="pas-float">400.5</span> - <span class="pas-num">20</span> ,<span class="pas-float">250.5</span> ,<span class="pas-float">400.5</span> + <span class="pas-num">20</span> );
+ VG.Line(<span class="pas-float">250.5</span> - <span class="pas-num">150</span> ,<span class="pas-float">450.5</span> ,<span class="pas-float">250.5</span> + <span class="pas-num">150</span> ,<span class="pas-float">450.5</span> );
+ VG.Line(<span class="pas-float">250.5</span> ,<span class="pas-float">450.5</span> - <span class="pas-num">20</span> ,<span class="pas-float">250.5</span> ,<span class="pas-float">450.5</span> + <span class="pas-num">20</span> );
+ VG.Line(<span class="pas-float">250.5</span> - <span class="pas-num">150</span> ,<span class="pas-float">500.5</span> ,<span class="pas-float">250.5</span> + <span class="pas-num">150</span> ,<span class="pas-float">500.5</span> );
+ VG.Line(<span class="pas-float">250.5</span> ,<span class="pas-float">500.5</span> - <span class="pas-num">20</span> ,<span class="pas-float">250.5</span> ,<span class="pas-float">500.5</span> + <span class="pas-num">20</span> );
+ VG.Line(<span class="pas-float">250.5</span> - <span class="pas-num">150</span> ,<span class="pas-float">550.5</span> ,<span class="pas-float">250.5</span> + <span class="pas-num">150</span> ,<span class="pas-float">550.5</span> );
+ VG.Line(<span class="pas-float">250.5</span> ,<span class="pas-float">550.5</span> - <span class="pas-num">20</span> ,<span class="pas-float">250.5</span> ,<span class="pas-float">550.5</span> + <span class="pas-num">20</span> );
+
+ <span class="pas-comment">// Font &amp; Colors</span>
+ VG.FillColor(<span class="pas-hex">$00</span> ,<span class="pas-hex">$00</span> ,<span class="pas-hex">$8B</span> );
+ VG.NoLine;
+ VG.TextHints(false );
+ VG.Font(
+ <span class="pas-str">'Times New Roman'</span> ,<span class="pas-float">40.0</span> ,
+ false ,false ,AGG_VectorFontCache );
+
+ <span class="pas-comment">// All Text Alignment Cases</span>
+ VG.TextAlignment(AGG_AlignLeft ,AGG_AlignBottom );
+ VG.Text(<span class="pas-float">250.0</span> ,<span class="pas-float">150.0</span> ,<span class="pas-str">'Left-Bottom'</span> ,true ,<span class="pas-num">0</span> ,<span class="pas-num">0</span> );
+
+ VG.TextAlignment(AGG_AlignCenter ,AGG_AlignBottom );
+ VG.Text(<span class="pas-float">250.0</span> ,<span class="pas-float">200.0</span> ,<span class="pas-str">'Center-Bottom'</span> ,true ,<span class="pas-num">0</span> ,<span class="pas-num">0</span> );
+
+ VG.TextAlignment(AGG_AlignRight ,AGG_AlignBottom );
+ VG.Text(<span class="pas-float">250.0</span> ,<span class="pas-float">250.0</span> ,<span class="pas-str">'Right-Bottom'</span> ,true ,<span class="pas-num">0</span> ,<span class="pas-num">0</span> );
+
+ VG.TextAlignment(AGG_AlignLeft ,AGG_AlignCenter );
+ VG.Text(<span class="pas-float">250.0</span> ,<span class="pas-float">300.0</span> ,<span class="pas-str">'Left-Center'</span> ,true ,<span class="pas-num">0</span> ,<span class="pas-num">0</span> );
+
+ VG.TextAlignment(AGG_AlignCenter ,AGG_AlignCenter );
+ VG.Text(<span class="pas-float">250.0</span> ,<span class="pas-float">350.0</span> ,<span class="pas-str">'Center-Center'</span> ,true ,<span class="pas-num">0</span> ,<span class="pas-num">0</span> );
+
+ VG.TextAlignment(AGG_AlignRight ,AGG_AlignCenter );
+ VG.Text(<span class="pas-float">250.0</span> ,<span class="pas-float">400.0</span> ,<span class="pas-str">'Right-Center'</span> ,true ,<span class="pas-num">0</span> ,<span class="pas-num">0</span> );
+
+ VG.TextAlignment(AGG_AlignLeft ,AGG_AlignTop );
+ VG.Text(<span class="pas-float">250.0</span> ,<span class="pas-float">450.0</span> ,<span class="pas-str">'Left-Top'</span> ,true ,<span class="pas-num">0</span> ,<span class="pas-num">0</span> );
+
+ VG.TextAlignment(AGG_AlignCenter ,AGG_AlignTop );
+ VG.Text(<span class="pas-float">250.0</span> ,<span class="pas-float">500.0</span> ,<span class="pas-str">'Center-Top'</span> ,true ,<span class="pas-num">0</span> ,<span class="pas-num">0</span> );
+
+ VG.TextAlignment(AGG_AlignRight ,AGG_AlignTop );
+ VG.Text(<span class="pas-float">250.0</span> ,<span class="pas-float">550.0</span> ,<span class="pas-str">'Right-Top'</span> ,true ,<span class="pas-num">0</span> ,<span class="pas-num">0</span> );
+
+ <span class="pas-kwd">end</span>;
+
+</pre></font></blockquote>
+
+ <blockquote><font class="doc-down-ex">
+ <a href="agg2d_files/tagg2d_example49.png">
+ <img src="agg2d_files/tagg2d_example49.jpg" width="120" height="140" border="0">
+ </a><p>
+ </font></blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="TextHints"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">TextHints</font>
+ : <font class="doc-type">boolean</font>
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Retrieves the current status of text hinting (grid fitting).
+
+ </blockquote>
+
+ <font class="doc-sect">Returns</font>
+ <blockquote>
+ <font class="doc-res-ok">If True</font>,
+ text hinting is in use and text being rendered is hinted.
+ <p>
+
+ <font class="doc-res-ok">If False</font>,
+ text hinting is not in use and text being rendered is unhinted.
+
+ </blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="TextHints2"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">TextHints</font>
+ (<font class="doc-id">hints</font> )
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Changes the status of text hinting for the current font.<p>
+
+ Text hinting (also called Grid Fitting) is a technique of proper glyph rendering to the target
+ resolution surface, which needs the scaled outline points to be aligned along the target device
+ pixel grid. Hinting depends on the target width and height in pixels (it is highly resolution-dependent
+ and that makes correct WYSIWYG layouts difficult to implement).
+
+ </blockquote>
+
+ <font class="doc-sect">Parameters</font>
+ <blockquote>
+ <font class="doc-param"><font class="doc-id">hints</font> : <font class="doc-type">boolean</font></font><p>
+ Defines whether text hinting is to be used or not.
+
+ </blockquote>
+
+ <font class="doc-sect">Example</font>
+ <blockquote>
+ Try to play with following example. Checking and unchecking the "Hinting" checkbox changes the grid
+ fitting on the fly, so you can see how hinter influences the resulting shape of glyphs. Also resizing
+ the form proportionally zooms the text.<p>
+
+ <font class="doc-down-ex">
+ <a href="agg2d_files/tagg2d_example50.png">
+ <img src="agg2d_files/tagg2d_example50.jpg" width="120" height="142" border="0">
+ </a><p>
+ Example download:<br>
+ <a href="agg2d_files/tagg2d_example50.zip">tagg2d_example50.zip</a><br>
+ <a href="agg2d_files/tagg2d_example50.exe">tagg2d_example50.exe</a>
+ </font>
+ </blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="TextWidth"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">TextWidth</font>
+ (<font class="doc-id">str</font> )
+ : <font class="doc-type">double</font>
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Computes the width of string.<p>
+
+ This method together with the <font class="doc-func">FontHeight</font> method provide a way to measure the extent of a text
+ for layouting operations.<p>
+
+ Prior to calling this method some font should be selected with <font class="doc-func">Font</font> method.
+
+ </blockquote>
+
+ <font class="doc-sect">Parameters</font>
+ <blockquote>
+ <font class="doc-param"><font class="doc-id">str</font> : <font class="doc-type">AnsiString</font></font><p>
+ Text string for horizontal extent computation.
+
+ </blockquote>
+
+ <font class="doc-sect">Returns</font>
+ <blockquote>
+ <font class="doc-res-ok">If some value</font>,
+ returned is the length of the text [in subpixels].
+ <p>
+
+ <font class="doc-res-ok">If Zero</font>,
+ the text was empty or no font have been selected yet.
+
+ </blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="Text"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">Text</font>
+ (<font class="doc-id">x</font>,
+ <font class="doc-id">y</font>,
+ <font class="doc-id">str</font>,
+ <font class="doc-id">roundOff</font>,
+ <font class="doc-id">ddx</font>,
+ <font class="doc-id">ddy</font> )
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Draws a string of text at defined coordinates.<p>
+
+ Text is aligned arounf Text Origin according to <font class="doc-func">TextAlignment</font> settings.
+
+ </blockquote>
+
+ <font class="doc-sect">Parameters</font>
+ <blockquote>
+ <font class="doc-param"><font class="doc-id">x</font> : <font class="doc-type">double</font></font><p>
+ X coordinate of Text Origin [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">y</font> : <font class="doc-type">double</font></font><p>
+ Y coordinate of Text Origin [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">str</font> : <font class="doc-type">AnsiString</font></font><p>
+ Text to be drawn.
+ <p>
+
+ <font class="doc-param"><font class="doc-id">roundOff</font> : <font class="doc-type">boolean</font> = false</font><p>
+ Indicates rounding of Text Origin position to the whole numbers.
+ <p>
+
+ <font class="doc-param"><font class="doc-id">ddx</font> : <font class="doc-type">double</font> = 0.0</font><p>
+ Text Origin position addition after rounding on X axis [in subpixels] (Allows shifting by eg. 0.5 to achieve less blur).
+ <p>
+
+ <font class="doc-param"><font class="doc-id">ddy</font> : <font class="doc-type">t2</font> = 0.0</font><p>
+ Text Origin position addition after rounding on Y axis [in subpixels] (Allows shifting by eg. 0.5 to achieve less blur).
+
+ </blockquote>
+
+ <font class="doc-sect">Example</font>
+<blockquote><font class="pas-source"><pre class="pas-source">
+ <span class="pas-kwd">if</span> VG.Attach(Image1.Picture.Bitmap ) <span class="pas-kwd">then</span>
+ <span class="pas-kwd">begin</span>
+ VG.ClearAll(<span class="pas-num">255</span> ,<span class="pas-num">255</span> ,<span class="pas-num">255</span> );
+
+ <span class="pas-comment">// Font &amp; Colors</span>
+ VG.FillColor(<span class="pas-hex">$00</span> ,<span class="pas-hex">$00</span> ,<span class="pas-hex">$8B</span> );
+ VG.NoLine;
+ VG.TextHints(true );
+ VG.Font(
+ <span class="pas-str">'Times New Roman'</span> ,<span class="pas-float">40.0</span> ,
+ false ,false ,AGG_VectorFontCache );
+
+ <span class="pas-comment">// Text</span>
+ VG.Text(
+ <span class="pas-num">20</span> ,<span class="pas-num">60</span> ,<span class="pas-str">'TAgg2D Vector Graphics API'</span> ,
+ true ,<span class="pas-float">0.5</span> ,<span class="pas-float">0.5</span> );
+
+ <span class="pas-kwd">end</span>;
+
+</pre></font></blockquote>
+
+ <blockquote><font class="doc-down-ex">
+ <a href="agg2d_files/tagg2d_example51.png">
+ <img src="agg2d_files/tagg2d_example51.jpg" width="418" height="95" border="0">
+ </a><p>
+ </font></blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="ResetPath"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">ResetPath</font>
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Removes all elements from internal path making it empty and changes the position of
+ Current Point to 0:0.<p>
+
+ Current Point is an invisible position on the path indicating where the last path
+ command stopped.
+
+ </blockquote>
+
+ <font class="doc-sect">Remarks</font>
+ <blockquote>
+ <div class="doc-note">
+ A path consists of straight lines, curves and arcs comprising individual shapes also called
+ subpaths. Subpaths can be opened or closed. Path can hold any amount of path elements
+ that are rendered at once with the <font class="doc-func">DrawPath</font> method.<p>
+
+ In fact, on the most basic level, everything is path. Even shape like circle is in the end
+ a composition of path commands telling rasterizer where to move and draw. Also more complex
+ shapes like font glyphs are rendered as a path. For example the glyph for letter "o" consists
+ of two subpaths, the outer and the inner ring. When rendering this "o" path, rasterizer's internal
+ rules makes it to appear as a ring with hole inside (in one pass).
+ </div>
+ </blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="MoveTo"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">MoveTo</font>
+ (<font class="doc-id">x</font>,
+ <font class="doc-id">y</font> )
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Changes position of the Current Point by setting it to the defined coordinates.<p>
+
+ If there is already an unclosed subpath defined, this method creates a new
+ subpath leaving the previous one opened.
+
+ </blockquote>
+
+ <font class="doc-sect">Parameters</font>
+ <blockquote>
+ <font class="doc-param"><font class="doc-id">x</font> : <font class="doc-type">double</font></font><p>
+ X coordinate of a new position of Current Point [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">y</font> : <font class="doc-type">double</font></font><p>
+ Y coordinate of a new position of Current Point [in subpixels].
+
+ </blockquote>
+
+ <font class="doc-sect">Example</font>
+<blockquote><font class="pas-source"><pre class="pas-source">
+ <span class="pas-kwd">if</span> VG.Attach(Image1.Picture.Bitmap ) <span class="pas-kwd">then</span>
+ <span class="pas-kwd">begin</span>
+ VG.ClearAll (<span class="pas-num">255</span> ,<span class="pas-num">255</span> ,<span class="pas-num">255</span> );
+ VG.FillColor(<span class="pas-hex">$FF</span> ,<span class="pas-hex">$00</span> ,<span class="pas-hex">$00</span> );
+
+ <span class="pas-comment">// First subpath comprising of a single line</span>
+ VG.MoveTo(<span class="pas-num">10</span> ,<span class="pas-num">10</span> );
+ VG.LineTo(<span class="pas-num">50</span> ,<span class="pas-num">50</span> );
+
+ <span class="pas-comment">// Creating a new subpath with MoveTo method</span>
+ VG.MoveTo(<span class="pas-num">100</span> ,<span class="pas-num">100</span> );
+ VG.LineTo(<span class="pas-num">200</span> ,<span class="pas-num">100</span> );
+ VG.LineTo(<span class="pas-num">180</span> ,<span class="pas-num">50</span> );
+ VG.ClosePolygon;
+
+ <span class="pas-comment">// Render path </span>
+ VG.DrawPath(AGG_FillAndStroke );
+
+ <span class="pas-kwd">end</span>;
+
+</pre></font></blockquote>
+
+ <blockquote><font class="doc-down-ex">
+ <a href="agg2d_files/tagg2d_example52.png">
+ <img src="agg2d_files/tagg2d_example52.jpg" width="120" height="124" border="0">
+ </a><p>
+ </font></blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="MoveRel"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">MoveRel</font>
+ (<font class="doc-id">dx</font>,
+ <font class="doc-id">dy</font> )
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Changes position of the Current Point by adding or subtracting defined delta coordinates
+ to the last position of the Current Point.<p>
+
+ If there is already an unclosed subpath defined, this method creates a new
+ subpath leaving the previous one opened.
+
+ </blockquote>
+
+ <font class="doc-sect">Parameters</font>
+ <blockquote>
+ <font class="doc-param"><font class="doc-id">dx</font> : <font class="doc-type">double</font></font><p>
+ Change (delta +/-) to the Current Point coordinate on X axis [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">dy</font> : <font class="doc-type">double</font></font><p>
+ Change (delta +/-) to the Current Point coordinate on Y axis [in subpixels].
+
+ </blockquote>
+
+ <font class="doc-sect">Example</font>
+ <blockquote>
+ See <font class="doc-func">ClosePolygon</font> method.
+
+ </blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="LineTo"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">LineTo</font>
+ (<font class="doc-id">x</font>,
+ <font class="doc-id">y</font> )
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Adds a LINE_TO_ABS path command to the current subpath. A new Line starts at the Current Point
+ position and ends at defined coordinates. Current Point is finally changed to be at the end of
+ a new Line segment.
+
+ </blockquote>
+
+ <font class="doc-sect">Parameters</font>
+ <blockquote>
+ <font class="doc-param"><font class="doc-id">x</font> : <font class="doc-type">double</font></font><p>
+ X coordinate of end of a new Line segment [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">y</font> : <font class="doc-type">double</font></font><p>
+ Y coordinate of end of a new Line segment [in subpixels].
+
+ </blockquote>
+
+ <font class="doc-sect">Example</font>
+ <blockquote>
+ See <font class="doc-func">ClosePolygon</font> method.
+
+ </blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="LineRel"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">LineRel</font>
+ (<font class="doc-id">dx</font>,
+ <font class="doc-id">dy</font> )
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Adds a LINE_TO_REL path command to the current subpath. A new Line starts at the Current Point position
+ and ends at Current Point position plus defined delta coordinates. Current Point is finally changed
+ to be at the end of a new Line segment.
+
+ </blockquote>
+
+ <font class="doc-sect">Parameters</font>
+ <blockquote>
+ <font class="doc-param"><font class="doc-id">dx</font> : <font class="doc-type">double</font></font><p>
+ Change (delta +/-) to the Current Point coordinate on X axis [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">dy</font> : <font class="doc-type">double</font></font><p>
+ Change (delta +/-) to the Current Point coordinate on Y axis [in subpixels].
+
+ </blockquote>
+
+ <font class="doc-sect">Example</font>
+ <blockquote>
+ See <font class="doc-func">ClosePolygon</font> method.
+
+ </blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="HorLineTo"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">HorLineTo</font>
+ (<font class="doc-id">x</font> )
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Adds a HLINE_TO_ABS path command to the current subpath. A new Line starts at the Current Point position
+ and ends at defined X coordinate. Y coordinate remains unchanged. Current Point is finally changed
+ to be at the end of a new Line segment.
+
+ </blockquote>
+
+ <font class="doc-sect">Parameters</font>
+ <blockquote>
+ <font class="doc-param"><font class="doc-id">x</font> : <font class="doc-type">double</font></font><p>
+ X coordinate of end of a new Line segment [in subpixels].
+
+ </blockquote>
+
+ <font class="doc-sect">Example</font>
+ <blockquote>
+ See <font class="doc-func">ClosePolygon</font> method.
+
+ </blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="HorLineRel"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">HorLineRel</font>
+ (<font class="doc-id">dx</font> )
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Adds a HLINE_TO_REL path command to the current subpath. A new Line starts at the Current Point position
+ and ends on X axis at Current Point position X plus defined delta coordinate. Y coordinate
+ remains unchanged. Current Point is finally changed to be at the end of a new Line segment.
+
+ </blockquote>
+
+ <font class="doc-sect">Parameters</font>
+ <blockquote>
+ <font class="doc-param"><font class="doc-id">dx</font> : <font class="doc-type">double</font></font><p>
+ Change (delta +/-) to the Current Point coordinate on X axis [in subpixels].
+
+ </blockquote>
+
+ <font class="doc-sect">Example</font>
+ <blockquote>
+ See <font class="doc-func">ClosePolygon</font> method.
+
+ </blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="VerLineTo"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">VerLineTo</font>
+ (<font class="doc-id">y</font> )
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Adds a VLINE_TO_ABS path command to the current subpath. A new Line starts at the Current Point position
+ and ends at defined Y coordinate. X coordinate remains unchanged. Current Point is finally changed
+ to be at the end of a new Line segment.
+
+ </blockquote>
+
+ <font class="doc-sect">Parameters</font>
+ <blockquote>
+ <font class="doc-param"><font class="doc-id">y</font> : <font class="doc-type">double</font></font><p>
+ Y coordinate of end of a new Line segment [in subpixels].
+
+ </blockquote>
+
+ <font class="doc-sect">Example</font>
+ <blockquote>
+ See <font class="doc-func">ClosePolygon</font> method.
+
+ </blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="VerLineRel"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">VerLineRel</font>
+ (<font class="doc-id">dy</font> )
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Adds a VLINE_TO_REL path command to the current subpath. A new Line starts at the Current Point position
+ and ends on Y axis at Current Point position Y plus defined delta coordinate. X coordinate
+ remains unchanged. Current Point is finally changed to be at the end of a new Line segment.
+
+ </blockquote>
+
+ <font class="doc-sect">Parameters</font>
+ <blockquote>
+ <font class="doc-param"><font class="doc-id">dy</font> : <font class="doc-type">double</font></font><p>
+ Change (delta +/-) to the Current Point coordinate on Y axis [in subpixels].
+
+ </blockquote>
+
+ <font class="doc-sect">Example</font>
+ <blockquote>
+ See <font class="doc-func">ClosePolygon</font> method.
+
+ </blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="ArcTo"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">ArcTo</font>
+ (<font class="doc-id">rx</font>,
+ <font class="doc-id">ry</font>,
+ <font class="doc-id">angle</font>,
+ <font class="doc-id">largeArcFlag</font>,
+ <font class="doc-id">sweepFlag</font>,
+ <font class="doc-id">x</font>,
+ <font class="doc-id">y</font> )
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Adds an xARC_TO_ABS path command to the current subpath. A new Arc segment starts at the Current Point
+ position and ends at defined coordinates. Current Point is finally changed to be at the end of a new Arc
+ segment.<p>
+
+ Path Arc is a slice of complete ellipse whose geometry is defined by radius on X and Y axis
+ and rotation, which indicates how the ellipse as a whole is rotated relative to the current
+ coordinate system. The center (cx, cy) of the ellipse is calculated automatically to satisfy
+ the constraints imposed by the other parameters - large arc and sweep flag. Following illustration
+ shows, how combination of those two flags affects the computation of the resulting arc:<p>
+
+ <img src="agg2d_files/arc_flags.jpg" width="376" height="257" border="0"><p>
+
+ The four arcs connecting the points are labeled L and S for large and small, and CW and CCW
+ for clockwise and counter-clockwise.<p>
+
+ If defined parameters doesn't meet requirements for the minimum size of underlying ellipse
+ (eg. radiuses are too small), a direct Line segment to the destination coordinates will be
+ drawn.<p>
+
+ If destination coordinates equals to the Current Point coordinates, nothing will be drawn.
+ So if user wants to draw visually complete ellipse at a given Current Point, he has to
+ define the destination coordinates with an very small dilation like eg. 0.1 pixels or so.
+
+ </blockquote>
+
+ <font class="doc-sect">Parameters</font>
+ <blockquote>
+ <font class="doc-param"><font class="doc-id">rx</font> : <font class="doc-type">double</font></font><p>
+ Ellipse radius on X axis [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">ry</font> : <font class="doc-type">double</font></font><p>
+ Ellipse radius on Y axis [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">angle</font> : <font class="doc-type">double</font></font><p>
+ Overall X axis rotation of ellipse [clockwise in radians].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">largeArcFlag</font> : <font class="doc-type">boolean</font></font><p>
+ If TRUE, L = Large Arc.<p>
+
+ If FALSE, S = Small Arc.
+ <p>
+
+ <font class="doc-param"><font class="doc-id">sweepFlag</font> : <font class="doc-type">boolean</font></font><p>
+ If TRUE, CW = Clock Wise.<p>
+
+ If FALSE, CCW = Counter Clock Wise.
+ <p>
+
+ <font class="doc-param"><font class="doc-id">x</font> : <font class="doc-type">double</font></font><p>
+ X coordinate of end of a new Arc segment [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">y</font> : <font class="doc-type">double</font></font><p>
+ Y coordinate of end of a new Arc segment [in subpixels].
+
+ </blockquote>
+
+ <font class="doc-sect">Example</font>
+ <blockquote>
+ See <font class="doc-func">ClosePolygon</font> method.
+
+ </blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="ArcRel"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">ArcRel</font>
+ (<font class="doc-id">rx</font>,
+ <font class="doc-id">ry</font>,
+ <font class="doc-id">angle</font>,
+ <font class="doc-id">largeArcFlag</font>,
+ <font class="doc-id">sweepFlag</font>,
+ <font class="doc-id">dx</font>,
+ <font class="doc-id">dy</font> )
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Adds an xARC_TO_REL path command to the current subpath. A new Arc starts at the Current Point position
+ and ends at Current Point position plus defined delta coordinates. Current Point is finally changed
+ to be at the end of a new Arc segment.
+
+ </blockquote>
+
+ <font class="doc-sect">Parameters</font>
+ <blockquote>
+ <font class="doc-param"><font class="doc-id">rx</font> : <font class="doc-type">double</font></font><p>
+ Ellipse radius on X axis [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">ry</font> : <font class="doc-type">double</font></font><p>
+ Ellipse radius on Y axis [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">angle</font> : <font class="doc-type">double</font></font><p>
+ Overall X axis rotation of ellipse [clockwise in radians].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">largeArcFlag</font> : <font class="doc-type">boolean</font></font><p>
+ If TRUE, L = Large Arc.<p>
+
+ If FALSE, S = Small Arc.
+ <p>
+
+ <font class="doc-param"><font class="doc-id">sweepFlag</font> : <font class="doc-type">boolean</font></font><p>
+ If TRUE, CW = Clock Wise.<p>
+
+ If FALSE, CCW = Counter Clock Wise.
+ <p>
+
+ <font class="doc-param"><font class="doc-id">dx</font> : <font class="doc-type">double</font></font><p>
+ Change (delta +/-) to the Current Point coordinate on X axis [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">dy</font> : <font class="doc-type">double</font></font><p>
+ Change (delta +/-) to the Current Point coordinate on Y axis [in subpixels].
+
+ </blockquote>
+
+ <font class="doc-sect">Example</font>
+ <blockquote>
+ See <font class="doc-func">ClosePolygon</font> method.
+
+ </blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="QuadricCurveTo"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">QuadricCurveTo</font>
+ (<font class="doc-id">xCtrl</font>,
+ <font class="doc-id">yCtrl</font>,
+ <font class="doc-id">xTo</font>,
+ <font class="doc-id">yTo</font> )
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Adds a QUAD_TO_ABS path command to the current subpath. A new Quadratic Bezier curve starts
+ at the Current Point position, bends by definition of provided control point and ends at provided
+ coordinates. Current Point is finally changed to be at the end of a new Bezier curve segment.<p>
+
+ This Quadratic Bezier curve definition is compliant with SVG specification.
+
+ </blockquote>
+
+ <font class="doc-sect">Parameters</font>
+ <blockquote>
+ <font class="doc-param"><font class="doc-id">xCtrl</font> : <font class="doc-type">double</font></font><p>
+ X coordinate of QuadCurve control point [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">yCtrl</font> : <font class="doc-type">double</font></font><p>
+ Y coordinate of QuadCurve control point [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">xTo</font> : <font class="doc-type">double</font></font><p>
+ X coordinate of end of a new QuadCurve segment [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">yTo</font> : <font class="doc-type">double</font></font><p>
+ Y coordinate of end of a new QuadCurve segment [in subpixels].
+
+ </blockquote>
+
+ <font class="doc-sect">Example</font>
+ <blockquote>
+ See <font class="doc-func">ClosePolygon</font> method.
+
+ </blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="QuadricCurveRel"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">QuadricCurveRel</font>
+ (<font class="doc-id">dxCtrl</font>,
+ <font class="doc-id">dyCtrl</font>,
+ <font class="doc-id">dxTo</font>,
+ <font class="doc-id">dyTo</font> )
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Adds a QUAD_TO_REL path command to the current subpath. A new Quadratic Bezier curve starts
+ at the Current Point position, bends by definition of Current Point plus defined delta control point
+ and ends at Current Point position plus defined delta coordinates. Current Point is finally changed
+ to be at the end of a new Bezier curve segment.<p>
+
+ This Quadratic Bezier curve definition is compliant with SVG specification.
+
+ </blockquote>
+
+ <font class="doc-sect">Parameters</font>
+ <blockquote>
+ <font class="doc-param"><font class="doc-id">dxCtrl</font> : <font class="doc-type">double</font></font><p>
+ Addition (delta +/-) to the Current Point for control point on X axis [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">dyCtrl</font> : <font class="doc-type">double</font></font><p>
+ Addition (delta +/-) to the Current Point for control point on Y axis [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">dxTo</font> : <font class="doc-type">double</font></font><p>
+ Change (delta +/-) to the Current Point coordinate on X axis [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">dyTo</font> : <font class="doc-type">double</font></font><p>
+ Change (delta +/-) to the Current Point coordinate on Y axis [in subpixels].
+
+ </blockquote>
+
+ <font class="doc-sect">Example</font>
+ <blockquote>
+ See <font class="doc-func">ClosePolygon</font> method.
+
+ </blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="QuadricCurveTo2"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">QuadricCurveTo</font>
+ (<font class="doc-id">xTo</font>,
+ <font class="doc-id">yTo</font> )
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Adds a SQUAD_TO_ABS path command to the current subpath. A new Quadratic Bezier curve starts
+ at the Current Point position, bends by definition of calculated control point and ends at defined
+ coordinates. The control point is calculated as the reflection of the control point on the previous
+ command relative to the Current Point. If there is no previous command or if the previous command
+ is not a QuadCurve, the missing control point is the same as the Current Point. Current Point
+ is finally changed to be at the end of a new Bezier curve segment.<p>
+
+ This Quadratic Bezier curve definition is compliant with SVG specification.
+
+ </blockquote>
+
+ <font class="doc-sect">Parameters</font>
+ <blockquote>
+ <font class="doc-param"><font class="doc-id">xTo</font> : <font class="doc-type">double</font></font><p>
+ X coordinate of end of a new QuadCurve segment [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">yTo</font> : <font class="doc-type">double</font></font><p>
+ Y coordinate of end of a new QuadCurve segment [in subpixels].
+
+ </blockquote>
+
+ <font class="doc-sect">Example</font>
+ <blockquote>
+ See <font class="doc-func">ClosePolygon</font> method.
+
+ </blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="QuadricCurveRel2"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">QuadricCurveRel</font>
+ (<font class="doc-id">dxTo</font>,
+ <font class="doc-id">dyTo</font> )
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Adds a SQUAD_TO_REL path command to the current subpath. A new Quadratic Bezier curve starts
+ at the Current Point position, bends by definition of calculated control point and ends at Current
+ Point position plus defined delta coordinates. The control point is calculated as the reflection
+ of the control point on the previous command relative to the Current Point. If there is no previous
+ command or if the previous command is not a QuadCurve, the missing control point is the same as
+ the Current Point. Current Point is finally changed to be at the end of a new Bezier curve segment.<p>
+
+ This Quadratic Bezier curve definition is compliant with SVG specification.
+ </blockquote>
+
+ <font class="doc-sect">Parameters</font>
+ <blockquote>
+ <font class="doc-param"><font class="doc-id">dxTo</font> : <font class="doc-type">double</font></font><p>
+ Change (delta +/-) to the Current Point coordinate on X axis [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">dyTo</font> : <font class="doc-type">double</font></font><p>
+ Change (delta +/-) to the Current Point coordinate on Y axis [in subpixels].
+
+ </blockquote>
+
+ <font class="doc-sect">Example</font>
+ <blockquote>
+ See <font class="doc-func">ClosePolygon</font> method.
+
+ </blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="CubicCurveTo"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">CubicCurveTo</font>
+ (<font class="doc-id">xCtrl1</font>,
+ <font class="doc-id">yCtrl1</font>,
+ <font class="doc-id">xCtrl2</font>,
+ <font class="doc-id">yCtrl2</font>,
+ <font class="doc-id">xTo</font>,
+ <font class="doc-id">yTo</font> )
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Adds a CUBIC_TO_ABS path command to the current subpath. A new Cubic Bezier curve starts
+ at the Current Point position, bends by definition of defined control points 1 & 2, and ends
+ at defined coordinates. Current Point is finally changed to be at the end of a new Bezier curve
+ segment.<p>
+
+ This Cubic Bezier curve definition is compliant with SVG specification.
+
+ </blockquote>
+
+ <font class="doc-sect">Parameters</font>
+ <blockquote>
+ <font class="doc-param"><font class="doc-id">xCtrl1</font> : <font class="doc-type">double</font></font><p>
+ X coordinate of CubicCurve control point 1 [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">yCtrl1</font> : <font class="doc-type">double</font></font><p>
+ Y coordinate of CubicCurve control point 1 [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">xCtrl2</font> : <font class="doc-type">double</font></font><p>
+ X coordinate of CubicCurve control point 2 [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">yCtrl2</font> : <font class="doc-type">double</font></font><p>
+ Y coordinate of CubicCurve control point 2 [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">xTo</font> : <font class="doc-type">double</font></font><p>
+ X coordinate of end of a new CubicCurve segment [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">yTo</font> : <font class="doc-type">double</font></font><p>
+ Y coordinate of end of a new CubicCurve segment [in subpixels].
+
+ </blockquote>
+
+ <font class="doc-sect">Example</font>
+ <blockquote>
+ See <font class="doc-func">ClosePolygon</font> method.
+
+ </blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="CubicCurveRel"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">CubicCurveRel</font>
+ (<font class="doc-id">dxCtrl1</font>,
+ <font class="doc-id">dyCtrl1</font>,
+ <font class="doc-id">dxCtrl2</font>,
+ <font class="doc-id">dyCtrl2</font>,
+ <font class="doc-id">dxTo</font>,
+ <font class="doc-id">dyTo</font> )
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Adds a CUBIC_TO_REL path command to the current subpath. A new Cubic Bezier curve starts
+ at the Current Point position, bends by definition of Current Point plus defined delta control points
+ 1 & 2 and ends at Current Point position plus defined delta coordinates. Current Point is
+ finally changed to be at the end of a new Bezier curve segment.<p>
+
+ This Cubic Bezier curve definition is compliant with SVG specification.
+
+ </blockquote>
+
+ <font class="doc-sect">Parameters</font>
+ <blockquote>
+ <font class="doc-param"><font class="doc-id">dxCtrl1</font> : <font class="doc-type">double</font></font><p>
+ Addition (delta +/-) to the Current Point for control point 1 on X axis [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">dyCtrl1</font> : <font class="doc-type">double</font></font><p>
+ Addition (delta +/-) to the Current Point for control point 1 on Y axis [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">dxCtrl2</font> : <font class="doc-type">double</font></font><p>
+ Addition (delta +/-) to the Current Point for control point 2 on X axis [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">dyCtrl2</font> : <font class="doc-type">double</font></font><p>
+ Addition (delta +/-) to the Current Point for control point 2 on Y axis [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">dxTo</font> : <font class="doc-type">double</font></font><p>
+ Change (delta +/-) to the Current Point coordinate on X axis [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">dyTo</font> : <font class="doc-type">double</font></font><p>
+ Change (delta +/-) to the Current Point coordinate on Y axis [in subpixels].
+
+ </blockquote>
+
+ <font class="doc-sect">Example</font>
+ <blockquote>
+ See <font class="doc-func">ClosePolygon</font> method.
+
+ </blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="CubicCurveTo2"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">CubicCurveTo</font>
+ (<font class="doc-id">xCtrl2</font>,
+ <font class="doc-id">yCtrl2</font>,
+ <font class="doc-id">xTo</font>,
+ <font class="doc-id">yTo</font> )
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Adds a SCUBIC_TO_ABS path command to the current subpath. A new Cubic Bezier curve starts
+ at the Current Point position, bends by definition of calculated control points 1 & defined
+ control point 2 and ends at defined coordinates. The first control point is calculated as
+ the reflection of the second control point on the previous command relative to the Current Point.
+ If there is no previous command or if the previous command is not a CubicCurve, the missing
+ control point is the same as the Current Point. Current Point is finally changed to be at
+ the end of a new Bezier curve segment.<p>
+
+ This Cubic Bezier curve definition is compliant with SVG specification.
+
+ </blockquote>
+
+ <font class="doc-sect">Parameters</font>
+ <blockquote>
+ <font class="doc-param"><font class="doc-id">xCtrl2</font> : <font class="doc-type">double</font></font><p>
+ X coordinate of CubicCurve control point 2 [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">yCtrl2</font> : <font class="doc-type">double</font></font><p>
+ Y coordinate of CubicCurve control point 2 [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">xTo</font> : <font class="doc-type">double</font></font><p>
+ X coordinate of end of a new CubicCurve segment [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">yTo</font> : <font class="doc-type">double</font></font><p>
+ Y coordinate of end of a new CubicCurve segment [in subpixels].
+
+ </blockquote>
+
+ <font class="doc-sect">Example</font>
+ <blockquote>
+ See <font class="doc-func">ClosePolygon</font> method.
+
+ </blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="CubicCurveRel2"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">CubicCurveRel</font>
+ (<font class="doc-id">dxCtrl2</font>,
+ <font class="doc-id">dyCtrl2</font>,
+ <font class="doc-id">dxTo</font>,
+ <font class="doc-id">dyTo</font> )
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Adds a SCUBIC_TO_REL path command to the current subpath. A new Cubic Bezier curve starts
+ at the Current Point position, bends by definition of calculated control points 1 & Current
+ Point plus defined delta control point 2 and ends at defined coordinates. The first control
+ point is calculated as the reflection of the second control point on the previous command relative
+ to the Current Point. If there is no previous command or if the previous command is not
+ a CubicCurve, the missing control point is the same as the Current Point. Current Point is finally
+ changed to be at the end of a new Bezier curve segment.<p>
+
+ This Cubic Bezier curve definition is compliant with SVG specification.
+
+ </blockquote>
+
+ <font class="doc-sect">Parameters</font>
+ <blockquote>
+ <font class="doc-param"><font class="doc-id">dxCtrl2</font> : <font class="doc-type">double</font></font><p>
+ Addition (delta +/-) to the Current Point for control point 2 on X axis [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">dyCtrl2</font> : <font class="doc-type">double</font></font><p>
+ Addition (delta +/-) to the Current Point for control point 2 on Y axis [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">dxTo</font> : <font class="doc-type">double</font></font><p>
+ Change (delta +/-) to the Current Point coordinate on X axis [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">dyTo</font> : <font class="doc-type">double</font></font><p>
+ Change (delta +/-) to the Current Point coordinate on Y axis [in subpixels].
+
+ </blockquote>
+
+ <font class="doc-sect">Example</font>
+ <blockquote>
+ See <font class="doc-func">ClosePolygon</font> method.
+
+ </blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="AddEllipse"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">AddEllipse</font>
+ (<font class="doc-id">cx</font>,
+ <font class="doc-id">cy</font>,
+ <font class="doc-id">rx</font>,
+ <font class="doc-id">ry</font>,
+ <font class="doc-id">dir</font> )
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Adds a new closed subpath comprising of a complete ellipse at defined coordinates with defined horizontal
+ and vertical radius. Previous subpath is leaved as is, closed or open.<p>
+
+ Current Point is finally changed to be at the 3 hours of a new ellipse segment.
+
+ </blockquote>
+
+ <font class="doc-sect">Parameters</font>
+ <blockquote>
+ <font class="doc-param"><font class="doc-id">cx</font> : <font class="doc-type">double</font></font><p>
+ X coordinate of ellipse's center point [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">cy</font> : <font class="doc-type">double</font></font><p>
+ Y coordinate of ellipse's center point [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">rx</font> : <font class="doc-type">double</font></font><p>
+ Horizontal ellipse radius [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">ry</font> : <font class="doc-type">double</font></font><p>
+ Vertical ellipse radius [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">dir</font> : <font class="doc-type">TAggDirection [<a href="#TAggDirection">*</a>]</font></font><p>
+ Constant defining the direction in which the ellipse's perimeter will be generated.
+
+ </blockquote>
+
+ <font class="doc-sect">Example</font>
+<blockquote><font class="pas-source"><pre class="pas-source">
+ <span class="pas-kwd">if</span> VG.Attach(Image1.Picture.Bitmap ) <span class="pas-kwd">then</span>
+ <span class="pas-kwd">begin</span>
+ VG.ClearAll (<span class="pas-num">255</span> ,<span class="pas-num">255</span> ,<span class="pas-num">255</span> );
+ VG.FillColor(<span class="pas-hex">$FF</span> ,<span class="pas-hex">$00</span> ,<span class="pas-hex">$00</span> );
+
+ <span class="pas-comment">// First subpath comprising of a single line</span>
+ VG.MoveTo(<span class="pas-num">10</span> ,<span class="pas-num">10</span> );
+ VG.LineTo(<span class="pas-num">50</span> ,<span class="pas-num">50</span> );
+
+ <span class="pas-comment">// Add an Ellipse closed subpath to the path </span>
+ VG.AddEllipse(<span class="pas-num">100</span> ,<span class="pas-num">80</span> ,<span class="pas-num">80</span> ,<span class="pas-num">50</span> ,AGG_CW );
+
+ <span class="pas-comment">// Second single line from new Current Point</span>
+ <span class="pas-comment">// starting at 3 hours of ellipse's perimeter </span>
+ VG.LineTo(<span class="pas-num">200</span> ,<span class="pas-num">150</span> );
+
+ <span class="pas-comment">// Render path </span>
+ VG.DrawPath(AGG_FillAndStroke );
+
+ <span class="pas-kwd">end</span>;
+
+</pre></font></blockquote>
+
+ <blockquote><font class="doc-down-ex">
+ <a href="agg2d_files/tagg2d_example53.png">
+ <img src="agg2d_files/tagg2d_example53.jpg" width="120" height="124" border="0">
+ </a><p>
+ </font></blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="ClosePolygon"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">ClosePolygon</font>
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Closes current segment of the Path to form a subpath. Another subpath can be created using
+ above described path commands.
+
+ </blockquote>
+
+ <font class="doc-sect">Example</font>
+ <blockquote>
+ This is a cummulative example using more types of path commands described above.<p>
+
+<font class="pas-source"><pre class="pas-source">
+ <span class="pas-kwd">if</span> VG.Attach(Image1.Picture.Bitmap ) <span class="pas-kwd">then</span>
+ <span class="pas-kwd">begin</span>
+ VG.ClearAll(<span class="pas-num">255</span> ,<span class="pas-num">255</span> ,<span class="pas-num">255</span> );
+
+ <span class="pas-comment">// 3/4 Red Pie</span>
+ VG.ResetPath;
+ VG.FillColor(<span class="pas-num">255</span> ,<span class="pas-num">0</span> ,<span class="pas-num">0</span> ,<span class="pas-num">100</span> );
+ VG.LineColor(<span class="pas-num">0</span> ,<span class="pas-num">0</span> ,<span class="pas-num">255</span> ,<span class="pas-num">100</span> );
+ VG.LineWidth (<span class="pas-num">2</span> );
+ VG.MoveTo(<span class="pas-num">300</span> / <span class="pas-num">2</span> ,<span class="pas-num">200</span> / <span class="pas-num">2</span> );
+ VG.HorLineRel(-<span class="pas-num">150</span> / <span class="pas-num">2</span> );
+ VG.ArcRel(
+ <span class="pas-num">150</span> / <span class="pas-num">2</span> ,<span class="pas-num">150</span> / <span class="pas-num">2</span> ,<span class="pas-num">0</span> ,
+ true ,false ,<span class="pas-num">150</span> / <span class="pas-num">2</span> ,-<span class="pas-num">150</span> / <span class="pas-num">2</span> );
+ VG.ClosePolygon;
+ VG.DrawPath;
+
+ <span class="pas-comment">// 1/4 Yellow Pie</span>
+ VG.ResetPath;
+ VG.FillColor(<span class="pas-num">255</span> ,<span class="pas-num">255</span> ,<span class="pas-num">0</span> ,<span class="pas-num">100</span> );
+ VG.LineColor(<span class="pas-num">0</span> ,<span class="pas-num">0</span> ,<span class="pas-num">255</span> ,<span class="pas-num">100</span> );
+ VG.LineWidth(<span class="pas-num">2</span> );
+ VG.MoveTo(<span class="pas-num">275</span> / <span class="pas-num">2</span> ,<span class="pas-num">175</span> / <span class="pas-num">2</span> );
+ VG.VerLineRel(-<span class="pas-num">150</span> / <span class="pas-num">2</span> );
+ VG.ArcRel(
+ <span class="pas-num">150</span> / <span class="pas-num">2</span> ,<span class="pas-num">150</span> / <span class="pas-num">2</span> ,<span class="pas-num">0</span> ,
+ false ,false ,-<span class="pas-num">150</span> / <span class="pas-num">2</span> ,<span class="pas-num">150</span> / <span class="pas-num">2</span> );
+ VG.ClosePolygon;
+ VG.DrawPath;
+
+ <span class="pas-comment">// Path line with Arcs</span>
+ VG.ResetPath;
+ VG.NoFill;
+ VG.LineColor(<span class="pas-num">127</span> ,<span class="pas-num">0</span> ,<span class="pas-num">0</span> );
+ VG.LineWidth(<span class="pas-num">5</span> );
+ VG.MoveTo(<span class="pas-num">600</span> / <span class="pas-num">2</span> ,<span class="pas-num">350</span> / <span class="pas-num">2</span> );
+ VG.LineRel(<span class="pas-num">50</span> / <span class="pas-num">2</span> ,-<span class="pas-num">25</span> / <span class="pas-num">2</span> );
+ VG.ArcRel(
+ <span class="pas-num">25</span> / <span class="pas-num">2</span> ,<span class="pas-num">25</span> / <span class="pas-num">2</span> ,deg2Rad(-<span class="pas-num">30</span> ) ,
+ false ,true ,<span class="pas-num">50</span> / <span class="pas-num">2</span> ,-<span class="pas-num">25</span> / <span class="pas-num">2</span> );
+ VG.LineRel(<span class="pas-num">50</span> / <span class="pas-num">2</span> ,-<span class="pas-num">25</span> / <span class="pas-num">2</span>);
+ VG.ArcRel(
+ <span class="pas-num">25</span> / <span class="pas-num">2</span> ,<span class="pas-num">50</span> / <span class="pas-num">2</span> ,deg2Rad(-<span class="pas-num">30</span> ) ,
+ false ,true ,<span class="pas-num">50</span> / <span class="pas-num">2</span> ,-<span class="pas-num">25</span> / <span class="pas-num">2</span> );
+ VG.LineRel(<span class="pas-num">50</span> / <span class="pas-num">2</span> ,-<span class="pas-num">25</span> / <span class="pas-num">2</span> );
+ VG.ArcRel(
+ <span class="pas-num">25</span> / <span class="pas-num">2</span> ,<span class="pas-num">75</span> / <span class="pas-num">2</span> ,deg2Rad(-<span class="pas-num">30</span> ) ,
+ false ,true ,<span class="pas-num">50</span> / <span class="pas-num">2</span> ,-<span class="pas-num">25</span> / <span class="pas-num">2</span> );
+ VG.LineRel(<span class="pas-num">50</span> ,-<span class="pas-num">25</span> );
+ VG.ArcRel(
+ <span class="pas-num">25</span> / <span class="pas-num">2</span> ,<span class="pas-num">100</span> / <span class="pas-num">2</span> ,deg2Rad(-<span class="pas-num">30</span> ) ,
+ false ,true ,<span class="pas-num">50</span> / <span class="pas-num">2</span> ,-<span class="pas-num">25</span> / <span class="pas-num">2</span> );
+ VG.LineRel(<span class="pas-num">50</span> / <span class="pas-num">2</span> ,-<span class="pas-num">25</span> / <span class="pas-num">2</span> );
+ VG.DrawPath;
+
+ <span class="pas-kwd">end</span>;
+
+</pre></font></blockquote>
+
+ <blockquote><font class="doc-down-ex">
+ <a href="agg2d_files/tagg2d_example54.png">
+ <img src="agg2d_files/tagg2d_example54.jpg" width="339" height="124" border="0">
+ </a><p>
+ </font></blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="DrawPath"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">DrawPath</font>
+ (<font class="doc-id">flag</font> )
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Draws a path defined with path commands in one pass, using the selected drawing mode.<p>
+
+ Path defined with path commands can be reused for drawing until it's internal storage
+ is utilized for rendering of other basic shapes or text. Also on entry to the drawing routine
+ (after <font class="doc-func">Attach</font> method) a path content is cleared.
+
+ </blockquote>
+
+ <font class="doc-sect">Parameters</font>
+ <blockquote>
+ <font class="doc-param"><font class="doc-id">flag</font> : <font class="doc-type">TAggDrawPathFlag [<a href="#TAggDrawPathFlag">*</a>]</font> = <font class="doc-enum">AGG_FillAndStroke</font></font><p>
+ Constant defining the type of rendering for path.
+
+ </blockquote>
+
+ <font class="doc-sect">Example</font>
+<blockquote><font class="pas-source"><pre class="pas-source">
+ <span class="pas-kwd">if</span> VG.Attach(Image1.Picture.Bitmap ) <span class="pas-kwd">then</span>
+ <span class="pas-kwd">begin</span>
+ VG.ClearAll(<span class="pas-num">255</span> ,<span class="pas-num">255</span> ,<span class="pas-num">255</span> );
+
+ <span class="pas-comment">// 3/4 Red Pie</span>
+ VG.ResetPath;
+ VG.FillColor(<span class="pas-num">255</span> ,<span class="pas-num">0</span> ,<span class="pas-num">0</span> ,<span class="pas-num">100</span> );
+ VG.LineColor(<span class="pas-num">0</span> ,<span class="pas-num">0</span> ,<span class="pas-num">255</span> ,<span class="pas-num">100</span> );
+ VG.LineWidth (<span class="pas-num">2</span> );
+ VG.MoveTo(<span class="pas-num">300</span> / <span class="pas-num">2</span> ,<span class="pas-num">200</span> / <span class="pas-num">2</span> );
+ VG.HorLineRel(-<span class="pas-num">150</span> / <span class="pas-num">2</span> );
+ VG.ArcRel(
+ <span class="pas-num">150</span> / <span class="pas-num">2</span> ,<span class="pas-num">150</span> / <span class="pas-num">2</span> ,<span class="pas-num">0</span> ,
+ true ,false ,<span class="pas-num">150</span> / <span class="pas-num">2</span> ,-<span class="pas-num">150</span> / <span class="pas-num">2</span> );
+ VG.ClosePolygon;
+
+ <span class="pas-comment">// Draw path in various rendering modes</span>
+ VG.Translate(-<span class="pas-num">50</span> ,<span class="pas-num">0</span> );
+ VG.DrawPath (AGG_FillAndStroke );
+
+ VG.Translate(<span class="pas-num">120</span> ,<span class="pas-num">0</span> );
+ VG.DrawPath (AGG_FillOnly );
+
+ VG.Translate(<span class="pas-num">120</span> ,<span class="pas-num">0</span> );
+ VG.DrawPath (AGG_StrokeOnly );
+
+ VG.Translate(<span class="pas-num">120</span> ,<span class="pas-num">0</span> );
+ VG.DrawPath (AGG_FillWithLineColor );
+
+ <span class="pas-kwd">end</span>;
+
+</pre></font></blockquote>
+
+ <blockquote><font class="doc-down-ex">
+ <a href="agg2d_files/tagg2d_example55.png">
+ <img src="agg2d_files/tagg2d_example55.jpg" width="311" height="124" border="0">
+ </a><p>
+ </font></blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="ImageFilter"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">ImageFilter</font>
+ (<font class="doc-id">f</font> )
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Changes the current type of resampling method for images (<font class="doc-type">TBitmap</font> and descendants).<p>
+
+ Default image resampling method is <font class="doc-enum">AGG_Bilinear</font>.
+
+ </blockquote>
+
+ <font class="doc-sect">Parameters</font>
+ <blockquote>
+ <font class="doc-param"><font class="doc-id">f</font> : <font class="doc-type">TAggImageFilter [<a href="#TAggImageFilter">*</a>]</font></font><p>
+ A constant defining the type of resampling method for images.
+
+ </blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="ImageFilter2"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">ImageFilter</font>
+ : <font class="doc-type">TAggImageFilter [<a href="#TAggImageFilter">*</a>]</font>
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Retrieves the current type of resampling method for images (<font class="doc-type">TBitmap</font> and descendants).
+
+ </blockquote>
+
+ <font class="doc-sect">Returns</font>
+ <blockquote>
+ Returned is a constant defining the type of resampling method for images.
+
+ </blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="ImageResample"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">ImageResample</font>
+ (<font class="doc-id">f</font> )
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Changes the current type of event for image resampling.<p>
+
+ Default image resampling event is <font class="doc-enum">AGG_NoResample</font>, which forces
+ image resampling only when necessary.
+
+ </blockquote>
+
+ <font class="doc-sect">Parameters</font>
+ <blockquote>
+ <font class="doc-param"><font class="doc-id">f</font> : <font class="doc-type">TAggImageResample [<a href="#TAggImageResample">*</a>]</font></font><p>
+ A constant defining the type of image resampling event.
+
+ </blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="ImageResample2"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">ImageResample</font>
+ : <font class="doc-type">TAggImageResample [<a href="#TAggImageResample">*</a>]</font>
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Retrieves the current type of event for image resampling.
+
+ </blockquote>
+
+ <font class="doc-sect">Returns</font>
+ <blockquote>
+ Returned is a constant defining the type of event for image resampling.
+
+ </blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="TransformImage"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">TransformImage</font><br>
+ (<font class="doc-id">bitmap</font>,
+ <font class="doc-id">imgX1</font>,
+ <font class="doc-id">imgY1</font>,
+ <font class="doc-id">imgX2</font>,
+ <font class="doc-id">imgY2</font>,
+ <font class="doc-id">dstX1</font>,
+ <font class="doc-id">dstY1</font>,
+ <font class="doc-id">dstX2</font>,
+ <font class="doc-id">dstY2</font> )
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Draws a <font class="doc-type">TBitmap</font> image at defined target surface rectangle, while
+ getting the image data from defined source image rectangle.
+
+ </blockquote>
+
+ <font class="doc-sect">Parameters</font>
+ <blockquote>
+ <font class="doc-param"><font class="doc-id">bitmap</font> : <font class="doc-type">TBitmap</font></font><p>
+ Reference to non empty <font class="doc-enum">pf32bit</font> <font class="doc-type">TBitmap</font> (or descendant).
+ <p>
+
+ <font class="doc-param"><font class="doc-id">imgX1</font> : <font class="doc-type">integer</font></font><p>
+ X coordinate of source image data Top Left corner [in pixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">imgY1</font> : <font class="doc-type">integer</font></font><p>
+ Y coordinate of source image data Top Left corner [in pixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">imgX2</font> : <font class="doc-type">integer</font></font><p>
+ X coordinate of source image data Bottom Right corner [in pixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">imgY2</font> : <font class="doc-type">integer</font></font><p>
+ Y coordinate of source image data Bottom Right corner [in pixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">dstX1</font> : <font class="doc-type">double</font></font><p>
+ X coordinate of target surface rectangle Top Left corner [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">dstY1</font> : <font class="doc-type">double</font></font><p>
+ Y coordinate of target surface rectangle Top Left corner [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">dstX2</font> : <font class="doc-type">double</font></font><p>
+ X coordinate of target surface rectangle Bottom Right corner [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">dstY2</font> : <font class="doc-type">double</font></font><p>
+ Y coordinate of target surface rectangle Bottom Right corner [in subpixels].
+
+ </blockquote>
+
+ <font class="doc-sect">Example</font>
+<blockquote><font class="pas-source"><pre class="pas-source">
+<span class="pas-comment">// Cut and paste this into the tagg2d_example08.zip</span>
+ <span class="pas-kwd">if</span> VG.Attach(Image1.Picture.Bitmap ) <span class="pas-kwd">then</span>
+ <span class="pas-kwd">begin</span>
+ VG.ClearAll(<span class="pas-num">255</span> ,<span class="pas-num">255</span> ,<span class="pas-num">255</span> ,<span class="pas-num">0</span> );
+
+ <span class="pas-comment">// Setting master parameters</span>
+ VG.MasterAlpha (TrackBar2.Position / <span class="pas-num">255</span> );
+ VG.AntiAliasGamma(TrackBar3.Position / <span class="pas-num">10</span> );
+ VG.BlendMode (BM );
+
+ <span class="pas-comment">// Rotate Lena image around own axis</span>
+ VG.Translate(
+ -(<span class="pas-num">50</span> + Image2.Picture.Bitmap.Width / <span class="pas-num">2</span> ) ,
+ -(<span class="pas-num">150</span> + Image2.Picture.Bitmap.Height / <span class="pas-num">2</span> ) );
+ VG.Rotate(Deg2Rad(TrackBar1.Position ) );
+ VG.Translate(
+ (<span class="pas-num">50</span> + Image2.Picture.Bitmap.Width / <span class="pas-num">2</span> ) ,
+ (<span class="pas-num">150</span> + Image2.Picture.Bitmap.Height / <span class="pas-num">2</span> ) );
+
+ <span class="pas-comment">// Draw the bitmap</span>
+ VG.TransformImage(
+ Image2.Picture.Bitmap ,
+ <span class="pas-num">60</span> ,<span class="pas-num">40</span> ,
+ Image2.Picture.Bitmap.Width - <span class="pas-num">60</span> ,
+ Image2.Picture.Bitmap.Height - <span class="pas-num">60</span> ,
+ <span class="pas-num">50</span> ,<span class="pas-num">150</span> ,
+ Image2.Picture.Bitmap.Width + <span class="pas-num">50</span> ,
+ Image2.Picture.Bitmap.Height + <span class="pas-num">150</span> );
+
+ <span class="pas-kwd">end</span>;
+
+</pre></font></blockquote>
+
+ <blockquote><font class="doc-down-ex">
+ <a href="agg2d_files/tagg2d_example56.png">
+ <img src="agg2d_files/tagg2d_example56.jpg" width="120" height="139" border="0">
+ </a><p>
+ </font></blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="TransformImage2"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">TransformImage</font>
+ (<font class="doc-id">bitmap</font>,
+ <font class="doc-id">dstX1</font>,
+ <font class="doc-id">dstY1</font>,
+ <font class="doc-id">dstX2</font>,
+ <font class="doc-id">dstY2</font> )
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Draws a <font class="doc-type">TBitmap</font> image at defined target surface rectangle.
+
+ </blockquote>
+
+ <font class="doc-sect">Parameters</font>
+ <blockquote>
+ <font class="doc-param"><font class="doc-id">bitmap</font> : <font class="doc-type">TBitmap</font></font><p>
+ Reference to non empty <font class="doc-enum">pf32bit</font> <font class="doc-type">TBitmap</font> (or descendant).
+ <p>
+
+ <font class="doc-param"><font class="doc-id">dstX1</font> : <font class="doc-type">double</font></font><p>
+ X coordinate of target surface rectangle Top Left corner [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">dstY1</font> : <font class="doc-type">double</font></font><p>
+ Y coordinate of target surface rectangle Top Left corner [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">dstX2</font> : <font class="doc-type">double</font></font><p>
+ X coordinate of target surface rectangle Bottom Right corner [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">dstY2</font> : <font class="doc-type">double</font></font><p>
+ Y coordinate of target surface rectangle Bottom Right corner [in subpixels].
+
+ </blockquote>
+
+ <font class="doc-sect">Example</font>
+<blockquote><font class="pas-source"><pre class="pas-source">
+<span class="pas-comment">// Cut and paste this into the tagg2d_example08.zip</span>
+ <span class="pas-kwd">if</span> VG.Attach(Image1.Picture.Bitmap ) <span class="pas-kwd">then</span>
+ <span class="pas-kwd">begin</span>
+ VG.ClearAll(<span class="pas-num">255</span> ,<span class="pas-num">255</span> ,<span class="pas-num">255</span> ,<span class="pas-num">0</span> );
+
+ <span class="pas-comment">// Setting master parameters</span>
+ VG.MasterAlpha (TrackBar2.Position / <span class="pas-num">255</span> );
+ VG.AntiAliasGamma(TrackBar3.Position / <span class="pas-num">10</span> );
+ VG.BlendMode (BM );
+
+ <span class="pas-comment">// Rotate Lena image around own axis</span>
+ VG.Translate(
+ -(<span class="pas-num">50</span> + Image2.Picture.Bitmap.Width / <span class="pas-num">2</span> ) ,
+ -(<span class="pas-num">150</span> + Image2.Picture.Bitmap.Height / <span class="pas-num">2</span> ) );
+ VG.Rotate(Deg2Rad(TrackBar1.Position ) );
+ VG.Translate(
+ (<span class="pas-num">50</span> + Image2.Picture.Bitmap.Width / <span class="pas-num">2</span> ) ,
+ (<span class="pas-num">150</span> + Image2.Picture.Bitmap.Height / <span class="pas-num">2</span> ) );
+
+ <span class="pas-comment">// Draw the bitmap</span>
+ VG.TransformImage(
+ Image2.Picture.Bitmap ,
+ <span class="pas-num">50</span> ,<span class="pas-num">150</span> ,
+ Image2.Picture.Bitmap.Width + <span class="pas-num">50</span> ,
+ Image2.Picture.Bitmap.Height + <span class="pas-num">150</span> );
+
+ <span class="pas-kwd">end</span>;
+
+</pre></font></blockquote>
+
+ <blockquote><font class="doc-down-ex">
+ <a href="agg2d_files/tagg2d_example57.png">
+ <img src="agg2d_files/tagg2d_example57.jpg" width="120" height="139" border="0">
+ </a><p>
+ </font></blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="TransformImage3"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">TransformImage</font>
+ (<font class="doc-id">bitmap</font>,
+ <font class="doc-id">imgX1</font>,
+ <font class="doc-id">imgY1</font>,
+ <font class="doc-id">imgX2</font>,
+ <font class="doc-id">imgY2</font>,
+ <font class="doc-id">parallelo</font> )
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Draws a <font class="doc-type">TBitmap</font> image at defined target surface parallelogram, while
+ getting the image data from defined source image rectangle.
+
+ </blockquote>
+
+ <font class="doc-sect">Parameters</font>
+ <blockquote>
+ <font class="doc-param"><font class="doc-id">bitmap</font> : <font class="doc-type">TBitmap</font></font><p>
+ Reference to non empty <font class="doc-enum">pf32bit</font> <font class="doc-type">TBitmap</font> (or descendant).
+ <p>
+
+ <font class="doc-param"><font class="doc-id">imgX1</font> : <font class="doc-type">integer</font></font><p>
+ X coordinate of source image data Top Left corner [in pixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">imgY1</font> : <font class="doc-type">integer</font></font><p>
+ Y coordinate of source image data Top Left corner [in pixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">imgX2</font> : <font class="doc-type">integer</font></font><p>
+ X coordinate of source image data Bottom Right corner [in pixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">imgY2</font> : <font class="doc-type">integer</font></font><p>
+ Y coordinate of source image data Bottom Right corner [in pixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">parallelo</font> : <font class="doc-type">PDouble</font></font><p>
+ Pointer to the first element of an array defining the three coordinates of target surface
+ parallelogram [all elements in subpixels].<p>
+
+ Individual corners of parallelogram are in this order: Top Left (x,y), Top Right (x,y) & Bottom Right(x,y).
+ The remaining Bottom Left (x,y) corner is computed internally from the other three corners.
+
+ </blockquote>
+
+ <font class="doc-sect">Example</font>
+<blockquote><font class="pas-source"><pre class="pas-source">
+<span class="pas-comment">// Cut and paste this into the tagg2d_example08.zip</span>
+ <span class="pas-kwd">var</span>
+ parall : <span class="pas-kwd">array</span>[<span class="pas-num">1</span>..<span class="pas-num">6</span> ] <span class="pas-kwd">of</span> double;
+
+ <span class="pas-kwd">if</span> VG.Attach(Image1.Picture.Bitmap ) <span class="pas-kwd">then</span>
+ <span class="pas-kwd">begin</span>
+ VG.ClearAll(<span class="pas-num">255</span> ,<span class="pas-num">255</span> ,<span class="pas-num">255</span> ,<span class="pas-num">0</span> );
+
+ <span class="pas-comment">// Setting master parameters</span>
+ VG.MasterAlpha (TrackBar2.Position / <span class="pas-num">255</span> );
+ VG.AntiAliasGamma(TrackBar3.Position / <span class="pas-num">10</span> );
+ VG.BlendMode (BM );
+
+ <span class="pas-comment">// Rotate Lena image around own axis</span>
+ VG.Translate(
+ -(<span class="pas-num">50</span> + Image2.Picture.Bitmap.Width / <span class="pas-num">2</span> ) ,
+ -(<span class="pas-num">150</span> + Image2.Picture.Bitmap.Height / <span class="pas-num">2</span> ) );
+ VG.Rotate(Deg2Rad(TrackBar1.Position ) );
+ VG.Translate(
+ (<span class="pas-num">50</span> + Image2.Picture.Bitmap.Width / <span class="pas-num">2</span> ) ,
+ (<span class="pas-num">150</span> + Image2.Picture.Bitmap.Height / <span class="pas-num">2</span> ) );
+
+ <span class="pas-comment">// Draw the bitmap</span>
+ parall[<span class="pas-num">1</span> ]:=<span class="pas-num">50</span>;
+ parall[<span class="pas-num">2</span> ]:=<span class="pas-num">150</span>;
+ parall[<span class="pas-num">3</span> ]:=Image2.Picture.Bitmap.Width + <span class="pas-num">50</span>;
+ parall[<span class="pas-num">4</span> ]:=<span class="pas-num">150</span>;
+ parall[<span class="pas-num">5</span> ]:=Image2.Picture.Bitmap.Width + <span class="pas-num">120</span>;
+ parall[<span class="pas-num">6</span> ]:=Image2.Picture.Bitmap.Height + <span class="pas-num">150</span>;
+
+ VG.TransformImage(
+ Image2.Picture.Bitmap ,
+ <span class="pas-num">60</span> ,<span class="pas-num">40</span> ,
+ Image2.Picture.Bitmap.Width - <span class="pas-num">60</span> ,
+ Image2.Picture.Bitmap.Height - <span class="pas-num">60</span> ,
+ @parall[<span class="pas-num">1</span> ] );
+
+ <span class="pas-kwd">end</span>;
+
+</pre></font></blockquote>
+
+ <blockquote><font class="doc-down-ex">
+ <a href="agg2d_files/tagg2d_example58.png">
+ <img src="agg2d_files/tagg2d_example58.jpg" width="120" height="139" border="0">
+ </a><p>
+ </font></blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="TransformImage4"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">TransformImage</font>
+ (<font class="doc-id">bitmap</font>,
+ <font class="doc-id">parallelo</font> )
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Draws a <font class="doc-type">TBitmap</font> image at defined target surface parallelogram.
+
+ </blockquote>
+
+ <font class="doc-sect">Parameters</font>
+ <blockquote>
+ <font class="doc-param"><font class="doc-id">bitmap</font> : <font class="doc-type">TBitmap</font></font><p>
+ Reference to non empty <font class="doc-enum">pf32bit</font> <font class="doc-type">TBitmap</font> (or descendant).
+ <p>
+
+ <font class="doc-param"><font class="doc-id">parallelo</font> : <font class="doc-type">PDouble</font></font><p>
+ Pointer to the first element of an array defining the three coordinates of target surface
+ parallelogram [all elements in subpixels].<p>
+
+ Individual corners of parallelogram are in this order: Top Left (x,y), Top Right (x,y) & Bottom Right(x,y).
+ The remaining Bottom Left (x,y) corner is computed internally from the other three corners.
+
+ </blockquote>
+
+ <font class="doc-sect">Example</font>
+<blockquote><font class="pas-source"><pre class="pas-source">
+<span class="pas-comment">// Cut and paste this into the tagg2d_example08.zip</span>
+ <span class="pas-kwd">var</span>
+ parall : <span class="pas-kwd">array</span>[<span class="pas-num">1</span>..<span class="pas-num">6</span> ] <span class="pas-kwd">of</span> double;
+
+ <span class="pas-kwd">if</span> VG.Attach(Image1.Picture.Bitmap ) <span class="pas-kwd">then</span>
+ <span class="pas-kwd">begin</span>
+ VG.ClearAll(<span class="pas-num">255</span> ,<span class="pas-num">255</span> ,<span class="pas-num">255</span> ,<span class="pas-num">0</span> );
+
+ <span class="pas-comment">// Setting master parameters</span>
+ VG.MasterAlpha (TrackBar2.Position / <span class="pas-num">255</span> );
+ VG.AntiAliasGamma(TrackBar3.Position / <span class="pas-num">10</span> );
+ VG.BlendMode (BM );
+
+ <span class="pas-comment">// Rotate Lena image around own axis</span>
+ VG.Translate(
+ -(<span class="pas-num">50</span> + Image2.Picture.Bitmap.Width / <span class="pas-num">2</span> ) ,
+ -(<span class="pas-num">150</span> + Image2.Picture.Bitmap.Height / <span class="pas-num">2</span> ) );
+ VG.Rotate(Deg2Rad(TrackBar1.Position ) );
+ VG.Translate(
+ (<span class="pas-num">50</span> + Image2.Picture.Bitmap.Width / <span class="pas-num">2</span> ) ,
+ (<span class="pas-num">150</span> + Image2.Picture.Bitmap.Height / <span class="pas-num">2</span> ) );
+
+ <span class="pas-comment">// Draw the bitmap</span>
+ parall[<span class="pas-num">1</span> ]:=<span class="pas-num">50</span>;
+ parall[<span class="pas-num">2</span> ]:=<span class="pas-num">150</span>;
+ parall[<span class="pas-num">3</span> ]:=Image2.Picture.Bitmap.Width + <span class="pas-num">50</span>;
+ parall[<span class="pas-num">4</span> ]:=<span class="pas-num">150</span>;
+ parall[<span class="pas-num">5</span> ]:=Image2.Picture.Bitmap.Width + <span class="pas-num">120</span>;
+ parall[<span class="pas-num">6</span> ]:=Image2.Picture.Bitmap.Height + <span class="pas-num">150</span>;
+
+ VG.TransformImage(
+ Image2.Picture.Bitmap ,
+ @parall[<span class="pas-num">1</span> ] );
+
+ <span class="pas-kwd">end</span>;
+
+</pre></font></blockquote>
+
+ <blockquote><font class="doc-down-ex">
+ <a href="agg2d_files/tagg2d_example59.png">
+ <img src="agg2d_files/tagg2d_example59.jpg" width="120" height="139" border="0">
+ </a><p>
+ </font></blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="TransformImagePath"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">TransformImagePath</font><br>
+ (<font class="doc-id">bitmap</font>,
+ <font class="doc-id">imgX1</font>,
+ <font class="doc-id">imgY1</font>,
+ <font class="doc-id">imgX2</font>,
+ <font class="doc-id">imgY2</font>,
+ <font class="doc-id">dstX1</font>,
+ <font class="doc-id">dstY1</font>,
+ <font class="doc-id">dstX2</font>,
+ <font class="doc-id">dstY2</font> )
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Draws a <font class="doc-type">TBitmap</font> image as an interior of currently defined
+ path at image size defined by target surface rectangle, while getting the image data from
+ defined source image rectangle.
+
+ </blockquote>
+
+ <font class="doc-sect">Parameters</font>
+ <blockquote>
+ <font class="doc-param"><font class="doc-id">bitmap</font> : <font class="doc-type">TBitmap</font></font><p>
+ Reference to non empty <font class="doc-enum">pf32bit</font> <font class="doc-type">TBitmap</font> (or descendant).
+ <p>
+
+ <font class="doc-param"><font class="doc-id">imgX1</font> : <font class="doc-type">integer</font></font><p>
+ X coordinate of source image data Top Left corner [in pixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">imgY1</font> : <font class="doc-type">integer</font></font><p>
+ Y coordinate of source image data Top Left corner [in pixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">imgX2</font> : <font class="doc-type">integer</font></font><p>
+ X coordinate of source image data Bottom Right corner [in pixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">imgY2</font> : <font class="doc-type">integer</font></font><p>
+ Y coordinate of source image data Bottom Right corner [in pixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">dstX1</font> : <font class="doc-type">double</font></font><p>
+ X coordinate of target surface rectangle Top Left corner, relative to the Top Left bounding box of
+ currently defined path to be filled with image [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">dstY1</font> : <font class="doc-type">double</font></font><p>
+ Y coordinate of target surface rectangle Top Left corner, relative to the Top Left bounding box of
+ currently defined path to be filled with image [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">dstX2</font> : <font class="doc-type">double</font></font><p>
+ X coordinate of target surface rectangle Bottom Right corner, relative to the Top Left bounding box of
+ currently defined path to be filled with image [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">dstY2</font> : <font class="doc-type">double</font></font><p>
+ Y coordinate of target surface rectangle Bottom Right corner, relative to the Top Left bounding box of
+ currently defined path to be filled with image [in subpixels].
+
+ </blockquote>
+
+ <font class="doc-sect">Example</font>
+<blockquote><font class="pas-source"><pre class="pas-source">
+<span class="pas-comment">// Cut and paste this into the tagg2d_example08.zip</span>
+ <span class="pas-kwd">if</span> VG.Attach(Image1.Picture.Bitmap ) <span class="pas-kwd">then</span>
+ <span class="pas-kwd">begin</span>
+ VG.ClearAll(<span class="pas-num">255</span> ,<span class="pas-num">255</span> ,<span class="pas-num">255</span> ,<span class="pas-num">0</span> );
+
+ <span class="pas-comment">// Setting master parameters</span>
+ VG.MasterAlpha (TrackBar2.Position / <span class="pas-num">255</span> );
+ VG.AntiAliasGamma(TrackBar3.Position / <span class="pas-num">10</span> );
+ VG.BlendMode (BM );
+ VG.FillEvenOdd (true );
+
+ <span class="pas-comment">// Rotate path with Lena image around own axis</span>
+ VG.Translate(<span class="pas-num">30</span> ,<span class="pas-num">30</span> );
+ VG.Scale (<span class="pas-float">1.5</span> ,<span class="pas-float">1.5</span> );
+
+ VG.Translate(
+ -(<span class="pas-num">50</span> + Image2.Picture.Bitmap.Width / <span class="pas-num">2</span> ) ,
+ -(<span class="pas-num">150</span> + Image2.Picture.Bitmap.Height / <span class="pas-num">2</span> ) );
+ VG.Rotate(Deg2Rad(TrackBar1.Position ) );
+ VG.Translate(
+ (<span class="pas-num">50</span> + Image2.Picture.Bitmap.Width / <span class="pas-num">2</span> ) ,
+ (<span class="pas-num">150</span> + Image2.Picture.Bitmap.Height / <span class="pas-num">2</span> ) );
+
+ <span class="pas-comment">// Define the &quot;Ko&quot; path </span>
+ VG.ResetPath;
+ VG.MoveTo(<span class="pas-num">5</span> ,<span class="pas-num">200</span> );
+ VG.LineTo(<span class="pas-num">5</span> ,<span class="pas-num">100</span> );
+ VG.LineTo(<span class="pas-num">30</span> ,<span class="pas-num">100</span> );
+ VG.LineTo(<span class="pas-num">30</span> ,<span class="pas-num">140</span> );
+ VG.LineTo(<span class="pas-num">70</span> ,<span class="pas-num">100</span> );
+ VG.LineTo(<span class="pas-num">100</span> ,<span class="pas-num">100</span> );
+ VG.LineTo(<span class="pas-num">50</span> ,<span class="pas-num">150</span> );
+ VG.LineTo(<span class="pas-num">100</span> ,<span class="pas-num">200</span> );
+ VG.LineTo(<span class="pas-num">70</span> ,<span class="pas-num">200</span> );
+ VG.LineTo(<span class="pas-num">30</span> ,<span class="pas-num">160</span> );
+ VG.LineTo(<span class="pas-num">30</span> ,<span class="pas-num">200</span> );
+ VG.ClosePolygon;
+
+ VG.MoveTo(<span class="pas-num">160</span> ,<span class="pas-num">200</span> );
+ VG.ArcTo (<span class="pas-num">40</span> ,<span class="pas-num">20</span> ,<span class="pas-num">0</span> ,false ,true ,<span class="pas-num">160</span> ,<span class="pas-num">140</span> );
+ VG.ArcTo (<span class="pas-num">40</span> ,<span class="pas-num">20</span> ,<span class="pas-num">0</span> ,false ,true ,<span class="pas-num">160</span> ,<span class="pas-num">200</span> );
+ VG.ClosePolygon;
+
+ VG.MoveTo(<span class="pas-num">160</span> ,<span class="pas-num">180</span> );
+ VG.ArcTo (<span class="pas-num">30</span> ,<span class="pas-num">10</span> ,<span class="pas-num">0</span> ,false ,true ,<span class="pas-num">160</span> ,<span class="pas-num">160</span> );
+ VG.ArcTo (<span class="pas-num">30</span> ,<span class="pas-num">10</span> ,<span class="pas-num">0</span> ,false ,true ,<span class="pas-num">160</span> ,<span class="pas-num">180</span> );
+ VG.ClosePolygon;
+
+ <span class="pas-comment">// Draw the bitmap</span>
+ VG.TransformImagePath(
+ Image2.Picture.Bitmap ,
+ <span class="pas-num">60</span> ,<span class="pas-num">40</span> ,
+ Image2.Picture.Bitmap.Width - <span class="pas-num">60</span> ,
+ Image2.Picture.Bitmap.Height - <span class="pas-num">60</span> ,
+ <span class="pas-num">0</span> ,<span class="pas-num">0</span> ,
+ Image2.Picture.Bitmap.Width ,
+ Image2.Picture.Bitmap.Height );
+
+ <span class="pas-kwd">end</span>;
+
+</pre></font></blockquote>
+
+ <blockquote><font class="doc-down-ex">
+ <a href="agg2d_files/tagg2d_example60.png">
+ <img src="agg2d_files/tagg2d_example60.jpg" width="120" height="139" border="0">
+ </a><p>
+ </font></blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="TransformImagePath2"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">TransformImagePath</font>
+ (<font class="doc-id">bitmap</font>,
+ <font class="doc-id">dstX1</font>,
+ <font class="doc-id">dstY1</font>,
+ <font class="doc-id">dstX2</font>,
+ <font class="doc-id">dstY2</font> )
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Draws a <font class="doc-type">TBitmap</font> image as an interior of currently defined
+ path at image size defined by target surface rectangle.
+
+ </blockquote>
+
+ <font class="doc-sect">Parameters</font>
+ <blockquote>
+ <font class="doc-param"><font class="doc-id">bitmap</font> : <font class="doc-type">TBitmap</font></font><p>
+ Reference to non empty <font class="doc-enum">pf32bit</font> <font class="doc-type">TBitmap</font> (or descendant).
+ <p>
+
+ <font class="doc-param"><font class="doc-id">dstX1</font> : <font class="doc-type">double</font></font><p>
+ X coordinate of target surface rectangle Top Left corner, relative to the Top Left bounding box
+ of currently defined path to be filled with image [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">dstY1</font> : <font class="doc-type">double</font></font><p>
+ Y coordinate of target surface rectangle Top Left corner, relative to the Top Left bounding box
+ of currently defined path to be filled with image [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">dstX2</font> : <font class="doc-type">double</font></font><p>
+ X coordinate of target surface rectangle Bottom Right corner, relative to the Top Left bounding box
+ of currently defined path to be filled with image [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">dstY2</font> : <font class="doc-type">double</font></font><p>
+ Y coordinate of target surface rectangle Bottom Right corner, relative to the Top Left bounding box
+ of currently defined path to be filled with image [in subpixels].
+
+ </blockquote>
+
+ <font class="doc-sect">Example</font>
+<blockquote><font class="pas-source"><pre class="pas-source">
+<span class="pas-comment">// Cut and paste this into the tagg2d_example08.zip</span>
+ <span class="pas-kwd">if</span> VG.Attach(Image1.Picture.Bitmap ) <span class="pas-kwd">then</span>
+ <span class="pas-kwd">begin</span>
+ VG.ClearAll(<span class="pas-num">255</span> ,<span class="pas-num">255</span> ,<span class="pas-num">255</span> ,<span class="pas-num">0</span> );
+
+ <span class="pas-comment">// Setting master parameters</span>
+ VG.MasterAlpha (TrackBar2.Position / <span class="pas-num">255</span> );
+ VG.AntiAliasGamma(TrackBar3.Position / <span class="pas-num">10</span> );
+ VG.BlendMode (BM );
+ VG.FillEvenOdd (true );
+
+ <span class="pas-comment">// Rotate path with Lena image around own axis</span>
+ VG.Translate(<span class="pas-num">30</span> ,<span class="pas-num">30</span> );
+ VG.Scale (<span class="pas-float">1.5</span> ,<span class="pas-float">1.5</span> );
+
+ VG.Translate(
+ -(<span class="pas-num">50</span> + Image2.Picture.Bitmap.Width / <span class="pas-num">2</span> ) ,
+ -(<span class="pas-num">150</span> + Image2.Picture.Bitmap.Height / <span class="pas-num">2</span> ) );
+ VG.Rotate(Deg2Rad(TrackBar1.Position ) );
+ VG.Translate(
+ (<span class="pas-num">50</span> + Image2.Picture.Bitmap.Width / <span class="pas-num">2</span> ) ,
+ (<span class="pas-num">150</span> + Image2.Picture.Bitmap.Height / <span class="pas-num">2</span> ) );
+
+ <span class="pas-comment">// Define the &quot;Ko&quot; path </span>
+ VG.ResetPath;
+ VG.MoveTo(<span class="pas-num">5</span> ,<span class="pas-num">200</span> );
+ VG.LineTo(<span class="pas-num">5</span> ,<span class="pas-num">100</span> );
+ VG.LineTo(<span class="pas-num">30</span> ,<span class="pas-num">100</span> );
+ VG.LineTo(<span class="pas-num">30</span> ,<span class="pas-num">140</span> );
+ VG.LineTo(<span class="pas-num">70</span> ,<span class="pas-num">100</span> );
+ VG.LineTo(<span class="pas-num">100</span> ,<span class="pas-num">100</span> );
+ VG.LineTo(<span class="pas-num">50</span> ,<span class="pas-num">150</span> );
+ VG.LineTo(<span class="pas-num">100</span> ,<span class="pas-num">200</span> );
+ VG.LineTo(<span class="pas-num">70</span> ,<span class="pas-num">200</span> );
+ VG.LineTo(<span class="pas-num">30</span> ,<span class="pas-num">160</span> );
+ VG.LineTo(<span class="pas-num">30</span> ,<span class="pas-num">200</span> );
+ VG.ClosePolygon;
+
+ VG.MoveTo(<span class="pas-num">160</span> ,<span class="pas-num">200</span> );
+ VG.ArcTo (<span class="pas-num">40</span> ,<span class="pas-num">20</span> ,<span class="pas-num">0</span> ,false ,true ,<span class="pas-num">160</span> ,<span class="pas-num">140</span> );
+ VG.ArcTo (<span class="pas-num">40</span> ,<span class="pas-num">20</span> ,<span class="pas-num">0</span> ,false ,true ,<span class="pas-num">160</span> ,<span class="pas-num">200</span> );
+ VG.ClosePolygon;
+
+ VG.MoveTo(<span class="pas-num">160</span> ,<span class="pas-num">180</span> );
+ VG.ArcTo (<span class="pas-num">30</span> ,<span class="pas-num">10</span> ,<span class="pas-num">0</span> ,false ,true ,<span class="pas-num">160</span> ,<span class="pas-num">160</span> );
+ VG.ArcTo (<span class="pas-num">30</span> ,<span class="pas-num">10</span> ,<span class="pas-num">0</span> ,false ,true ,<span class="pas-num">160</span> ,<span class="pas-num">180</span> );
+ VG.ClosePolygon;
+
+ <span class="pas-comment">// Draw the bitmap</span>
+ VG.TransformImagePath(
+ Image2.Picture.Bitmap ,
+ <span class="pas-num">0</span> ,<span class="pas-num">0</span> ,
+ Image2.Picture.Bitmap.Width + <span class="pas-num">30</span> ,
+ Image2.Picture.Bitmap.Height + <span class="pas-num">30</span> );
+
+ <span class="pas-kwd">end</span>;
+
+</pre></font></blockquote>
+
+ <blockquote><font class="doc-down-ex">
+ <a href="agg2d_files/tagg2d_example61.png">
+ <img src="agg2d_files/tagg2d_example61.jpg" width="120" height="139" border="0">
+ </a><p>
+ </font></blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="TransformImagePath3"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">TransformImagePath</font>
+ (<font class="doc-id">bitmap</font>,
+ <font class="doc-id">imgX1</font>,
+ <font class="doc-id">imgY1</font>,
+ <font class="doc-id">imgX2</font>,
+ <font class="doc-id">imgY2</font>,
+ <font class="doc-id">parallelo</font> )
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Draws a <font class="doc-type">TBitmap</font> image as an interior of currently defined
+ path at image size defined by target surface parallelogram, while getting the image data from
+ defined source image rectangle.
+
+ </blockquote>
+
+ <font class="doc-sect">Parameters</font>
+ <blockquote>
+ <font class="doc-param"><font class="doc-id">bitmap</font> : <font class="doc-type">TBitmap</font></font><p>
+ Reference to non empty <font class="doc-enum">pf32bit</font> <font class="doc-type">TBitmap</font> (or descendant).
+ <p>
+
+ <font class="doc-param"><font class="doc-id">imgX1</font> : <font class="doc-type">integer</font></font><p>
+ X coordinate of source image data Top Left corner [in pixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">imgY1</font> : <font class="doc-type">integer</font></font><p>
+ Y coordinate of source image data Top Left corner [in pixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">imgX2</font> : <font class="doc-type">integer</font></font><p>
+ X coordinate of source image data Bottom Right corner [in pixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">imgY2</font> : <font class="doc-type">integer</font></font><p>
+ Y coordinate of source image data Bottom Right corner [in pixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">parallelo</font> : <font class="doc-type">PDouble</font></font><p>
+ Pointer to the first element of an array defining the three coordinates of target surface parallelogram,
+ relative to the Top Left bounding box of currently defined path to be filled with image [all elements in subpixels].<p>
+
+ Individual corners of parallelogram are in this order: Top Left (x,y), Top Right (x,y) & Bottom Right(x,y).
+ The remaining Bottom Left (x,y) corner is computed internally from the other three corners.
+
+ </blockquote>
+
+ <font class="doc-sect">Example</font>
+<blockquote><font class="pas-source"><pre class="pas-source">
+<span class="pas-comment">// Cut and paste this into the tagg2d_example08.zip</span>
+ <span class="pas-kwd">var</span>
+ parall : <span class="pas-kwd">array</span>[<span class="pas-num">1</span>..<span class="pas-num">6</span> ] <span class="pas-kwd">of</span> double;
+
+ <span class="pas-kwd">if</span> VG.Attach(Image1.Picture.Bitmap ) <span class="pas-kwd">then</span>
+ <span class="pas-kwd">begin</span>
+ VG.ClearAll(<span class="pas-num">255</span> ,<span class="pas-num">255</span> ,<span class="pas-num">255</span> ,<span class="pas-num">0</span> );
+
+ <span class="pas-comment">// Setting master parameters</span>
+ VG.MasterAlpha (TrackBar2.Position / <span class="pas-num">255</span> );
+ VG.AntiAliasGamma(TrackBar3.Position / <span class="pas-num">10</span> );
+ VG.BlendMode (BM );
+ VG.FillEvenOdd (true );
+
+ <span class="pas-comment">// Rotate path with Lena image around own axis</span>
+ VG.Translate(<span class="pas-num">30</span> ,<span class="pas-num">30</span> );
+ VG.Scale (<span class="pas-float">1.5</span> ,<span class="pas-float">1.5</span> );
+
+ VG.Translate(
+ -(<span class="pas-num">50</span> + Image2.Picture.Bitmap.Width / <span class="pas-num">2</span> ) ,
+ -(<span class="pas-num">150</span> + Image2.Picture.Bitmap.Height / <span class="pas-num">2</span> ) );
+ VG.Rotate(Deg2Rad(TrackBar1.Position ) );
+ VG.Translate(
+ (<span class="pas-num">50</span> + Image2.Picture.Bitmap.Width / <span class="pas-num">2</span> ) ,
+ (<span class="pas-num">150</span> + Image2.Picture.Bitmap.Height / <span class="pas-num">2</span> ) );
+
+ <span class="pas-comment">// Define the &quot;Ko&quot; path </span>
+ VG.ResetPath;
+ VG.MoveTo(<span class="pas-num">5</span> ,<span class="pas-num">200</span> );
+ VG.LineTo(<span class="pas-num">5</span> ,<span class="pas-num">100</span> );
+ VG.LineTo(<span class="pas-num">30</span> ,<span class="pas-num">100</span> );
+ VG.LineTo(<span class="pas-num">30</span> ,<span class="pas-num">140</span> );
+ VG.LineTo(<span class="pas-num">70</span> ,<span class="pas-num">100</span> );
+ VG.LineTo(<span class="pas-num">100</span> ,<span class="pas-num">100</span> );
+ VG.LineTo(<span class="pas-num">50</span> ,<span class="pas-num">150</span> );
+ VG.LineTo(<span class="pas-num">100</span> ,<span class="pas-num">200</span> );
+ VG.LineTo(<span class="pas-num">70</span> ,<span class="pas-num">200</span> );
+ VG.LineTo(<span class="pas-num">30</span> ,<span class="pas-num">160</span> );
+ VG.LineTo(<span class="pas-num">30</span> ,<span class="pas-num">200</span> );
+ VG.ClosePolygon;
+
+ VG.MoveTo(<span class="pas-num">160</span> ,<span class="pas-num">200</span> );
+ VG.ArcTo (<span class="pas-num">40</span> ,<span class="pas-num">20</span> ,<span class="pas-num">0</span> ,false ,true ,<span class="pas-num">160</span> ,<span class="pas-num">140</span> );
+ VG.ArcTo (<span class="pas-num">40</span> ,<span class="pas-num">20</span> ,<span class="pas-num">0</span> ,false ,true ,<span class="pas-num">160</span> ,<span class="pas-num">200</span> );
+ VG.ClosePolygon;
+
+ VG.MoveTo(<span class="pas-num">160</span> ,<span class="pas-num">180</span> );
+ VG.ArcTo (<span class="pas-num">30</span> ,<span class="pas-num">10</span> ,<span class="pas-num">0</span> ,false ,true ,<span class="pas-num">160</span> ,<span class="pas-num">160</span> );
+ VG.ArcTo (<span class="pas-num">30</span> ,<span class="pas-num">10</span> ,<span class="pas-num">0</span> ,false ,true ,<span class="pas-num">160</span> ,<span class="pas-num">180</span> );
+ VG.ClosePolygon;
+
+ <span class="pas-comment">// Draw the bitmap</span>
+ parall[<span class="pas-num">1</span> ]:=<span class="pas-num">0</span>;
+ parall[<span class="pas-num">2</span> ]:=<span class="pas-num">0</span>;
+ parall[<span class="pas-num">3</span> ]:=Image2.Picture.Bitmap.Width;
+ parall[<span class="pas-num">4</span> ]:=<span class="pas-num">0</span>;
+ parall[<span class="pas-num">5</span> ]:=Image2.Picture.Bitmap.Width + <span class="pas-num">80</span>;
+ parall[<span class="pas-num">6</span> ]:=Image2.Picture.Bitmap.Height;
+
+ VG.TransformImagePath(
+ Image2.Picture.Bitmap ,
+ <span class="pas-num">60</span> ,<span class="pas-num">40</span> ,
+ Image2.Picture.Bitmap.Width - <span class="pas-num">60</span> ,
+ Image2.Picture.Bitmap.Height - <span class="pas-num">60</span> ,
+ @parall[<span class="pas-num">1</span> ] );
+
+ <span class="pas-kwd">end</span>;
+
+</pre></font></blockquote>
+
+ <blockquote><font class="doc-down-ex">
+ <a href="agg2d_files/tagg2d_example62.png">
+ <img src="agg2d_files/tagg2d_example62.jpg" width="120" height="139" border="0">
+ </a><p>
+ </font></blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="TransformImagePath4"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">TransformImagePath</font>
+ (<font class="doc-id">bitmap</font>,
+ <font class="doc-id">parallelo</font> )
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Draws a <font class="doc-type">TBitmap</font> image as an interior of currently defined
+ path at image size defined by target surface parallelogram.
+
+ </blockquote>
+
+ <font class="doc-sect">Parameters</font>
+ <blockquote>
+ <font class="doc-param"><font class="doc-id">bitmap</font> : <font class="doc-type">TBitmap</font></font><p>
+ Reference to non empty <font class="doc-enum">pf32bit</font> <font class="doc-type">TBitmap</font> (or descendant).
+ <p>
+
+ <font class="doc-param"><font class="doc-id">parallelo</font> : <font class="doc-type">PDouble</font></font><p>
+ Pointer to the first element of an array defining the three coordinates of target surface parallelogram,
+ relative to the Top Left bounding box of currently defined path to be filled with image [all elements in subpixels].<p>
+
+ Individual corners of parallelogram are in this order: Top Left (x,y), Top Right (x,y) & Bottom Right(x,y).
+ The remaining Bottom Left (x,y) corner is computed internally from the other three corners.
+
+ </blockquote>
+
+ <font class="doc-sect">Example</font>
+<blockquote><font class="pas-source"><pre class="pas-source">
+<span class="pas-comment">// Cut and paste this into the tagg2d_example08.zip</span>
+ <span class="pas-kwd">var</span>
+ parall : <span class="pas-kwd">array</span>[<span class="pas-num">1</span>..<span class="pas-num">6</span> ] <span class="pas-kwd">of</span> double;
+
+ <span class="pas-kwd">if</span> VG.Attach(Image1.Picture.Bitmap ) <span class="pas-kwd">then</span>
+ <span class="pas-kwd">begin</span>
+ VG.ClearAll(<span class="pas-num">255</span> ,<span class="pas-num">255</span> ,<span class="pas-num">255</span> ,<span class="pas-num">0</span> );
+
+ <span class="pas-comment">// Setting master parameters</span>
+ VG.MasterAlpha (TrackBar2.Position / <span class="pas-num">255</span> );
+ VG.AntiAliasGamma(TrackBar3.Position / <span class="pas-num">10</span> );
+ VG.BlendMode (BM );
+ VG.FillEvenOdd (true );
+
+ <span class="pas-comment">// Rotate path with Lena image around own axis</span>
+ VG.Translate(<span class="pas-num">30</span> ,<span class="pas-num">30</span> );
+ VG.Scale (<span class="pas-float">1.5</span> ,<span class="pas-float">1.5</span> );
+
+ VG.Translate(
+ -(<span class="pas-num">50</span> + Image2.Picture.Bitmap.Width / <span class="pas-num">2</span> ) ,
+ -(<span class="pas-num">150</span> + Image2.Picture.Bitmap.Height / <span class="pas-num">2</span> ) );
+ VG.Rotate(Deg2Rad(TrackBar1.Position ) );
+ VG.Translate(
+ (<span class="pas-num">50</span> + Image2.Picture.Bitmap.Width / <span class="pas-num">2</span> ) ,
+ (<span class="pas-num">150</span> + Image2.Picture.Bitmap.Height / <span class="pas-num">2</span> ) );
+
+ <span class="pas-comment">// Define the &quot;Ko&quot; path </span>
+ VG.ResetPath;
+ VG.MoveTo(<span class="pas-num">5</span> ,<span class="pas-num">200</span> );
+ VG.LineTo(<span class="pas-num">5</span> ,<span class="pas-num">100</span> );
+ VG.LineTo(<span class="pas-num">30</span> ,<span class="pas-num">100</span> );
+ VG.LineTo(<span class="pas-num">30</span> ,<span class="pas-num">140</span> );
+ VG.LineTo(<span class="pas-num">70</span> ,<span class="pas-num">100</span> );
+ VG.LineTo(<span class="pas-num">100</span> ,<span class="pas-num">100</span> );
+ VG.LineTo(<span class="pas-num">50</span> ,<span class="pas-num">150</span> );
+ VG.LineTo(<span class="pas-num">100</span> ,<span class="pas-num">200</span> );
+ VG.LineTo(<span class="pas-num">70</span> ,<span class="pas-num">200</span> );
+ VG.LineTo(<span class="pas-num">30</span> ,<span class="pas-num">160</span> );
+ VG.LineTo(<span class="pas-num">30</span> ,<span class="pas-num">200</span> );
+ VG.ClosePolygon;
+
+ VG.MoveTo(<span class="pas-num">160</span> ,<span class="pas-num">200</span> );
+ VG.ArcTo (<span class="pas-num">40</span> ,<span class="pas-num">20</span> ,<span class="pas-num">0</span> ,false ,true ,<span class="pas-num">160</span> ,<span class="pas-num">140</span> );
+ VG.ArcTo (<span class="pas-num">40</span> ,<span class="pas-num">20</span> ,<span class="pas-num">0</span> ,false ,true ,<span class="pas-num">160</span> ,<span class="pas-num">200</span> );
+ VG.ClosePolygon;
+
+ VG.MoveTo(<span class="pas-num">160</span> ,<span class="pas-num">180</span> );
+ VG.ArcTo (<span class="pas-num">30</span> ,<span class="pas-num">10</span> ,<span class="pas-num">0</span> ,false ,true ,<span class="pas-num">160</span> ,<span class="pas-num">160</span> );
+ VG.ArcTo (<span class="pas-num">30</span> ,<span class="pas-num">10</span> ,<span class="pas-num">0</span> ,false ,true ,<span class="pas-num">160</span> ,<span class="pas-num">180</span> );
+ VG.ClosePolygon;
+
+ <span class="pas-comment">// Draw the bitmap</span>
+ parall[<span class="pas-num">1</span> ]:=-<span class="pas-num">60</span>;
+ parall[<span class="pas-num">2</span> ]:=<span class="pas-num">0</span>;
+ parall[<span class="pas-num">3</span> ]:=Image2.Picture.Bitmap.Width;
+ parall[<span class="pas-num">4</span> ]:=<span class="pas-num">0</span>;
+ parall[<span class="pas-num">5</span> ]:=Image2.Picture.Bitmap.Width + <span class="pas-num">90</span>;
+ parall[<span class="pas-num">6</span> ]:=Image2.Picture.Bitmap.Height + <span class="pas-num">30</span>;
+
+ VG.TransformImagePath(
+ Image2.Picture.Bitmap ,
+ @parall[<span class="pas-num">1</span> ] );
+
+ <span class="pas-kwd">end</span>;
+
+</pre></font></blockquote>
+
+ <blockquote><font class="doc-down-ex">
+ <a href="agg2d_files/tagg2d_example63.png">
+ <img src="agg2d_files/tagg2d_example63.jpg" width="120" height="139" border="0">
+ </a><p>
+ </font></blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="CopyImage"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">CopyImage</font>
+ (<font class="doc-id">bitmap</font>,
+ <font class="doc-id">imgX1</font>,
+ <font class="doc-id">imgY1</font>,
+ <font class="doc-id">imgX2</font>,
+ <font class="doc-id">imgY2</font>,
+ <font class="doc-id">dstX</font>,
+ <font class="doc-id">dstY</font> )
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Draws a portion of <font class="doc-type">TBitmap</font> image defined by source image
+ rectangle at defined coordinates.<p>
+
+ This method is just raw image data copier, so affine transformations of coordinate
+ system doesn't apply to the image data (only destination coordinates are transformed).
+
+ </blockquote>
+
+ <font class="doc-sect">Parameters</font>
+ <blockquote>
+ <font class="doc-param"><font class="doc-id">bitmap</font> : <font class="doc-type">TBitmap</font></font><p>
+ Reference to non empty <font class="doc-enum">pf32bit</font> <font class="doc-type">TBitmap</font> (or descendant).
+ <p>
+
+ <font class="doc-param"><font class="doc-id">imgX1</font> : <font class="doc-type">integer</font></font><p>
+ X coordinate of source image data Top Left corner [in pixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">imgY1</font> : <font class="doc-type">integer</font></font><p>
+ Y coordinate of source image data Top Left corner [in pixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">imgX2</font> : <font class="doc-type">integer</font></font><p>
+ X coordinate of source image data Bottom Right corner [in pixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">imgY2</font> : <font class="doc-type">integer</font></font><p>
+ Y coordinate of source image data Bottom Right corner [in pixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">dstX</font> : <font class="doc-type">double</font></font><p>
+ X coordinate of target point on surface to copy image to [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">dstY</font> : <font class="doc-type">double</font></font><p>
+ Y coordinate of target point on surface to copy image to [in subpixels].
+
+ </blockquote>
+
+ <font class="doc-sect">Example</font>
+<blockquote><font class="pas-source"><pre class="pas-source">
+<span class="pas-comment">// Cut and paste this into the tagg2d_example08.zip</span>
+ <span class="pas-kwd">if</span> VG.Attach(Image1.Picture.Bitmap ) <span class="pas-kwd">then</span>
+ <span class="pas-kwd">begin</span>
+ VG.ClearAll(<span class="pas-num">255</span> ,<span class="pas-num">255</span> ,<span class="pas-num">255</span> ,<span class="pas-num">0</span> );
+
+ <span class="pas-comment">// Setting master parameters</span>
+ VG.MasterAlpha (TrackBar2.Position / <span class="pas-num">255</span> );
+ VG.AntiAliasGamma(TrackBar3.Position / <span class="pas-num">10</span> );
+ VG.BlendMode (BM );
+
+ <span class="pas-comment">// Rotate coordinates system around own axis</span>
+ VG.Translate(
+ -ClientWidth / <span class="pas-num">2</span> ,
+ -ClientHeight / <span class="pas-num">2</span> );
+ VG.Rotate(Deg2Rad(TrackBar1.Position ) );
+ VG.Translate(
+ ClientWidth / <span class="pas-num">2</span> ,
+ ClientHeight / <span class="pas-num">2</span> );
+
+ <span class="pas-comment">// Copy a portion of Image</span>
+ VG.CopyImage(
+ Image2.Picture.Bitmap ,
+ <span class="pas-num">60</span> ,<span class="pas-num">40</span> ,
+ Image2.Picture.Bitmap.Width - <span class="pas-num">60</span> ,
+ Image2.Picture.Bitmap.Height - <span class="pas-num">60</span> ,
+ <span class="pas-num">50</span> ,<span class="pas-num">150</span> );
+
+ <span class="pas-kwd">end</span>;
+
+</pre></font></blockquote>
+
+ <blockquote><font class="doc-down-ex">
+ <a href="agg2d_files/tagg2d_example64.png">
+ <img src="agg2d_files/tagg2d_example64.jpg" width="120" height="139" border="0">
+ </a><p>
+ </font></blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="CopyImage2"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAgg2D</font>.<font class="doc-func">CopyImage</font>
+ (<font class="doc-id">bitmap</font>,
+ <font class="doc-id">dstX</font>,
+ <font class="doc-id">dstY</font> )
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Draws a whole <font class="doc-type">TBitmap</font> image at defined coordinates.<p>
+
+ This method is just raw image data copier, so affine transformations of coordinate
+ system doesn't apply to the image data (only destination coordinates are transformed).
+
+ </blockquote>
+
+ <font class="doc-sect">Parameters</font>
+ <blockquote>
+ <font class="doc-param"><font class="doc-id">bitmap</font> : <font class="doc-type">TBitmap</font></font><p>
+ Reference to non empty <font class="doc-enum">pf32bit</font> <font class="doc-type">TBitmap</font> (or descendant).
+ <p>
+
+ <font class="doc-param"><font class="doc-id">dstX</font> : <font class="doc-type">double</font></font><p>
+ X coordinate of target point on surface to copy image to [in subpixels].
+ <p>
+
+ <font class="doc-param"><font class="doc-id">dstY</font> : <font class="doc-type">double</font></font><p>
+ Y coordinate of target point on surface to copy image to [in subpixels].
+
+ </blockquote>
+
+ <font class="doc-sect">Example</font>
+<blockquote><font class="pas-source"><pre class="pas-source">
+<span class="pas-comment">// Cut and paste this into the tagg2d_example08.zip</span>
+ <span class="pas-kwd">if</span> VG.Attach(Image1.Picture.Bitmap ) <span class="pas-kwd">then</span>
+ <span class="pas-kwd">begin</span>
+ VG.ClearAll(<span class="pas-num">255</span> ,<span class="pas-num">255</span> ,<span class="pas-num">255</span> ,<span class="pas-num">0</span> );
+
+ <span class="pas-comment">// Setting master parameters</span>
+ VG.MasterAlpha (TrackBar2.Position / <span class="pas-num">255</span> );
+ VG.AntiAliasGamma(TrackBar3.Position / <span class="pas-num">10</span> );
+ VG.BlendMode (BM );
+
+ <span class="pas-comment">// Rotate coordinates system around own axis</span>
+ VG.Translate(
+ -ClientWidth / <span class="pas-num">2</span> ,
+ -ClientHeight / <span class="pas-num">2</span> );
+ VG.Rotate(Deg2Rad(TrackBar1.Position ) );
+ VG.Translate(
+ ClientWidth / <span class="pas-num">2</span> ,
+ ClientHeight / <span class="pas-num">2</span> );
+
+ <span class="pas-comment">// Copy a portion of Image</span>
+ VG.CopyImage(
+ Image2.Picture.Bitmap ,
+ <span class="pas-num">50</span> ,<span class="pas-num">150</span> );
+
+ <span class="pas-kwd">end</span>;
+
+</pre></font></blockquote>
+
+ <blockquote><font class="doc-down-ex">
+ <a href="agg2d_files/tagg2d_example65.png">
+ <img src="agg2d_files/tagg2d_example65.jpg" width="120" height="139" border="0">
+ </a><p>
+ </font></blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="Deg2Rad"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-func">Deg2Rad</font>
+ (<font class="doc-id">v</font> )
+ : <font class="doc-type">double</font>
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Converts degrees to radians.<p>
+
+ Used where a value [in radians] is indicated and user wishes to define it in degrees.
+
+ </blockquote>
+
+ <font class="doc-sect">Parameters</font>
+ <blockquote>
+ <font class="doc-param"><font class="doc-id">v</font> : <font class="doc-type">double</font></font><p>
+ A value in degrees.
+
+ </blockquote>
+
+ <font class="doc-sect">Returns</font>
+ <blockquote>
+ Returned is a value in radians.
+
+ </blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="Rad2Deg"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-func">Rad2Deg</font>
+ (<font class="doc-id">v</font> )
+ : <font class="doc-type">double</font>
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Converts radians to degrees.
+
+ </blockquote>
+
+ <font class="doc-sect">Parameters</font>
+ <blockquote>
+ <font class="doc-param"><font class="doc-id">v</font> : <font class="doc-type">double</font></font><p>
+ A value in radians.
+
+ </blockquote>
+
+ <font class="doc-sect">Returns</font>
+ <blockquote>
+ Returned is a value in degrees.
+
+ </blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="Agg2DUsesFreeType"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-func">Agg2DUsesFreeType</font>
+ : <font class="doc-type">boolean</font>
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Indicates if FreeType 2 font engine is used to render text.<p>
+
+ This is needed for discerning, whether to pass a file name (for FreeType 2) or
+ face name (for Windows TrueType) when calling the <font class="doc-func">Font</font> API method.
+
+ </blockquote>
+
+ <font class="doc-sect">Returns</font>
+ <blockquote>
+ <font class="doc-res-ok">If True</font>,
+ indicates that the FreeType 2 font engine is currently used.<p>
+
+ (The AGG2D_USE_FREETYPE conditional define is defined).
+ <p>
+
+ <font class="doc-res-ok">If False</font>,
+ indicates that the Windows TrueType font engine is currently used.<p>
+
+ (The AGG2D_USE_FREETYPE conditional define is not defined).
+
+ </blockquote>
+
+ <font class="doc-sect">Example</font>
+<blockquote><font class="pas-source"><pre class="pas-source">
+<span class="pas-kwd">INITIALIZATION</span>
+ <span class="pas-kwd">if</span> Agg2DUsesFreeType <span class="pas-kwd">then</span>
+ <span class="pas-kwd">begin</span>
+ FONT_TIMES:=<span class="pas-str">'times.ttf'</span>;
+ FONT_ARIAL:=<span class="pas-str">'arial.ttf'</span>;
+ FONT_VERDA:=<span class="pas-str">'verdana.ttf'</span>;
+
+ <span class="pas-kwd">end</span>
+ <span class="pas-kwd">else</span>
+ <span class="pas-kwd">begin</span>
+ FONT_TIMES:=<span class="pas-str">'Times New Roman'</span>;
+ FONT_ARIAL:=<span class="pas-str">'Arial'</span>;
+ FONT_VERDA:=<span class="pas-str">'Verdana'</span>;
+
+ <span class="pas-kwd">end</span>;
+
+<span class="pas-kwd">end</span>.
+
+</pre></font></blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="BitmapAlphaTransparency"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-func">BitmapAlphaTransparency</font>
+ (<font class="doc-id">bitmap</font>,
+ <font class="doc-id">alpha</font> )
+ : <font class="doc-type">boolean</font>
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Changes the Alpha transparency channel of <font class="doc-enum">pf32bit</font> <font class="doc-type">TBitmap</font> to defined level.<p>
+
+ <div class="doc-note">
+ After Delphi VCL converts <font class="doc-type">TBitmap</font> to <font class="doc-enum">pf32bit</font>
+ format, the Alpha transparency channel can be initialized with zeroes, which means transparent.
+ So to make the image visible with <font class="doc-type">TAgg2D</font> API methods, the transparency
+ level has to be set to some visible value.
+ </div>
+
+ </blockquote>
+
+ <font class="doc-sect">Parameters</font>
+ <blockquote>
+ <font class="doc-param"><font class="doc-id">bitmap</font> : <font class="doc-type">TBitmap</font></font><p>
+ Reference to non empty <font class="doc-enum">pf32bit</font> <font class="doc-type">TBitmap</font> (or descendant).
+ <p>
+
+ <font class="doc-param"><font class="doc-id">alpha</font> : <font class="doc-type">byte</font></font><p>
+ A new value of Alpha transparency [ (transparent) 0 .. 255 (opaque) ].
+
+ </blockquote>
+
+ <font class="doc-sect">Returns</font>
+ <blockquote>
+ <font class="doc-res-ok">If True</font>,
+ the Alpha transparency change was performed successfuly.
+ <p>
+
+ <font class="doc-res-fail">If False</font>,
+ somethig went wrong, maybe image is empty or is not in <font class="doc-enum">pf32bit</font> format.
+
+ </blockquote>
+
+ <font class="doc-sect">Example</font>
+<blockquote><font class="pas-source"><pre class="pas-source">
+<span class="pas-kwd">procedure</span> TForm1.FormCreate(Sender: TObject);
+<span class="pas-kwd">begin</span>
+<span class="pas-comment">// Don't erase background (not flicker)</span>
+ ControlStyle:=ControlStyle + [csOpaque ];
+
+<span class="pas-comment">// Create TAgg2D vector engine instance</span>
+<span class="pas-comment">// for the whole life of TForm</span>
+ VG:=TAgg2D.Create;
+
+<span class="pas-comment">// Convert to pf32bit</span>
+ Image1.Picture.Bitmap.PixelFormat:=pf32bit;
+
+<span class="pas-comment">// Set Alpha Transparency to Full Visible</span>
+ BitmapAlphaTransparency(Image1.Picture.Bitmap ,<span class="pas-num">255</span> );
+
+<span class="pas-kwd">end</span>;
+
+</pre></font></blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="TAggColor"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAggColor</font>
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ <font class="doc-type">TAggColor</font> is a data structure used in
+ <font class="doc-type">TAgg2D</font> API methods to define a color.<p>
+
+ <font class="doc-type">TAggColor</font> is of type "object", so it can be allocated on stack
+ and doesn't need the destructor to be called.<p>
+
+ Same variable can be redefined by calling the "Construct(r,g,b,a)" constructor
+ as many times, as needed.
+
+ </blockquote>
+
+ <font class="doc-sect">Structure</font>
+ <blockquote>
+ <div class="doc-src">
+ r, g, b, a : byte;
+ </div>
+
+ </blockquote>
+
+ <font class="doc-sect">Example</font>
+<blockquote><font class="pas-source"><pre class="pas-source">
+<span class="pas-kwd">procedure</span> TForm1.FormResize(Sender: TObject);
+<span class="pas-kwd">var</span>
+ c1 : TAggColor;
+
+<span class="pas-kwd">begin</span>
+ <span class="pas-kwd">if</span> VG.Attach(Image1.Picture.Bitmap ) <span class="pas-kwd">then</span>
+ <span class="pas-kwd">begin</span>
+ <span class="pas-comment">// Clear background with transparent white</span>
+ c.Construct(<span class="pas-num">255</span> ,<span class="pas-num">255</span> ,<span class="pas-num">255</span> ,<span class="pas-num">0</span> );
+ VG.ClearAll(c );
+
+ <span class="pas-comment">// Set line color to opaque Red </span>
+ c.Construct (<span class="pas-hex">$FF</span> ,<span class="pas-hex">$00</span> ,<span class="pas-hex">$00</span> );
+ VG.LineColor(c );
+
+ <span class="pas-kwd">end</span>;
+
+<span class="pas-kwd">end</span>;
+
+</pre></font></blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="TAggRectD"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAggRectD</font>
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ <font class="doc-type">TAggRectD</font> is a data structure used in <font class="doc-type">TAgg2D</font>
+ API to define a subpixel rectangle.
+
+ </blockquote>
+
+ <font class="doc-sect">Structure</font>
+ <blockquote>
+ <div class="doc-src">
+ x1 ,y1 ,x2 ,y2 : double
+ </div>
+
+ </blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="TAggDirection"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAggDirection</font>
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Defines the direction to go when generating an ellipse.
+
+ </blockquote>
+
+ <font class="doc-sect">Constant Values</font>
+ <blockquote>
+ <font class="doc-enums"><font class="doc-enum">AGG_CW</font></font><p>
+ Means Clock Wise.
+ <p>
+
+ <font class="doc-enums"><font class="doc-enum">AGG_CCW</font></font><p>
+ Means Counter Clock Wise.
+
+ </blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="TAggLineJoin"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAggLineJoin</font>
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Defines the type of line (stroke) corners.
+
+ </blockquote>
+
+ <font class="doc-sect">Constant Values</font>
+ <blockquote>
+ <font class="doc-enums"><font class="doc-enum">AGG_JoinMiter</font></font><p>
+ Sharp angled corners.<p>
+ <img src="agg2d_files/join_miter.jpg" width="161" height="112" border="0">
+ <p>&nbsp;<p>
+
+ <font class="doc-enums"><font class="doc-enum">AGG_JoinRound</font></font><p>
+ Rounded corners.<p>
+ <img src="agg2d_files/join_round.jpg" width="161" height="112" border="0">
+ <p>&nbsp;<p>
+
+ <font class="doc-enums"><font class="doc-enum">AGG_JoinBevel</font></font><p>
+ Cut-off corners, the corner is cut off at half the line width from the joint point.<p>
+ <img src="agg2d_files/join_bevel.jpg" width="161" height="112" border="0">
+
+ </blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="TAggLineCap"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAggLineCap</font>
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ Defines the type of line (stroke) ending.
+
+ </blockquote>
+
+ <font class="doc-sect">Constant Values</font>
+ <blockquote>
+ <font class="doc-enums"><font class="doc-enum">AGG_CapButt</font></font><p>
+ Start and stop the line exactly at the start (end) point.<p>
+ <img src="agg2d_files/cap_butt.jpg" width="161" height="62" border="0">
+ <p>&nbsp;<p>
+
+ <font class="doc-enums"><font class="doc-enum">AGG_CapRound</font></font><p>
+ Round circle ending with radius of half width of line width and overlapping at the start (end)
+ point by that radius value.<p>
+ <img src="agg2d_files/cap_round.jpg" width="161" height="62" border="0">
+ <p>&nbsp;<p>
+
+ <font class="doc-enums"><font class="doc-enum">AGG_CapSquare</font></font><p>
+ Squared ending with width of half width of line width and overlapping at the start (end)
+ point by that half width value.<p>
+ <img src="agg2d_files/cap_square.jpg" width="161" height="62" border="0">
+
+ </blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="TAggBlendMode"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAggBlendMode</font>
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ <font class="doc-type">TAggBlendMode</font> determines the compositing operation used, when rendering individual pixels onto
+ the drawing surface.<p>
+
+ These composition modes are compliant to those defined in <a href="http://www.w3.org/TR/2004/WD-SVG12-20041027/rendering.html#comp-op-prop">SVG 1.2 specification</a>.
+
+ </blockquote>
+
+ <font class="doc-sect">Constant Values</font>
+ <blockquote>
+ <font class="doc-enums"><font class="doc-enum">AGG_BlendAlpha</font></font><p>
+ No composition, just common blend with an alpha value (if present).
+ <p>
+
+ <font class="doc-enums"><font class="doc-enum">AGG_BlendClear</font></font><p>
+ Both the color and the alpha of the destination are cleared.
+ Neither the source nor the destination are used as input.
+ <p>
+
+ <font class="doc-enums"><font class="doc-enum">AGG_BlendSrc</font></font><p>
+ The source is copied to the destination. The destination is not used as input.
+ <p>
+
+ <font class="doc-enums"><font class="doc-enum">AGG_BlendDst</font></font><p>
+ The destination is left untouched.
+ <p>
+
+ <font class="doc-enums"><font class="doc-enum">AGG_BlendSrcOver</font></font><p>
+ The source is composited over the destination.
+ <p>
+
+ <font class="doc-enums"><font class="doc-enum">AGG_BlendDstOver</font></font><p>
+ The destination is composited over the source and the result replaces the destination.
+ <p>
+
+ <font class="doc-enums"><font class="doc-enum">AGG_BlendSrcIn</font></font><p>
+ The part of the source lying inside of the destination replaces the destination.
+ <p>
+
+ <font class="doc-enums"><font class="doc-enum">AGG_BlendDstIn</font></font><p>
+ The part of the destination lying inside of the source replaces the destination.
+ <p>
+
+ <font class="doc-enums"><font class="doc-enum">AGG_BlendSrcOut</font></font><p>
+ The part of the source lying outside of the destination replaces the destination.
+ <p>
+
+ <font class="doc-enums"><font class="doc-enum">AGG_BlendDstOut</font></font><p>
+ The part of the destination lying outside of the source replaces the destination.
+ <p>
+
+ <font class="doc-enums"><font class="doc-enum">AGG_BlendSrcAtop</font></font><p>
+ The part of the source lying inside of the destination is composited onto the destination.
+ <p>
+
+ <font class="doc-enums"><font class="doc-enum">AGG_BlendDstAtop</font></font><p>
+ The part of the destination lying inside of the source is composited over the source and replaces the destination.
+ <p>
+
+ <font class="doc-enums"><font class="doc-enum">AGG_BlendXor</font></font><p>
+ The part of the source that lies outside of the destination is combined with the part of the destination that lies outside of the source.
+ <p>
+
+ <font class="doc-enums"><font class="doc-enum">AGG_BlendAdd</font></font><p>
+ The source is added to the destination and replaces the destination. This operator is useful for animating a dissolve between two images.
+ <p>
+
+ <font class="doc-enums"><font class="doc-enum">AGG_BlendSub</font></font><p>
+ The source is subtracted from the destination and replaces the destination.
+ <p>
+
+ <font class="doc-enums"><font class="doc-enum">AGG_BlendMultiply</font></font><p>
+ The source is multiplied by the destination and replaces the destination. The resultant color
+ is always at least as dark as either of the two constituent colors. Multiplying any color with
+ black produces black. Multiplying any color with white leaves the original color unchanged.
+ <p>
+
+ <font class="doc-enums"><font class="doc-enum">AGG_BlendScreen</font></font><p>
+ The source and destination are complemented and then multiplied and then replace the destination.
+ The resultant color is always at least as light as either of the two constituent colors. Screening
+ any color with white produces white. Screening any color with black leaves the original color unchanged.
+ <p>
+
+ <font class="doc-enums"><font class="doc-enum">AGG_BlendOverlay</font></font><p>
+ Multiplies or screens the colors, dependent on the destination color. Source colors overlay
+ the destination whilst preserving its highlights and shadows. The destination color is not
+ replaced, but is mixed with the source color to reflect the lightness or darkness of
+ the destination.
+ <p>
+
+ <font class="doc-enums"><font class="doc-enum">AGG_BlendDarken</font></font><p>
+ Selects the darker of the destination and source colors. The destination is replaced with
+ the source when the source is darker, otherwise it is left unchanged.
+ <p>
+
+ <font class="doc-enums"><font class="doc-enum">AGG_BlendLighten</font></font><p>
+ Selects the lighter of the destination and source colors. The destination is replaced with
+ the source when the source is lighter, otherwise it is left unchanged.
+ <p>
+
+ <font class="doc-enums"><font class="doc-enum">AGG_BlendColorDodge</font></font><p>
+ Brightens the destination color to reflect the source color. Painting with black produces no change.
+ <p>
+
+ <font class="doc-enums"><font class="doc-enum">AGG_BlendColorBurn</font></font><p>
+ Darkens the destination color to reflect the source color. Painting with white produces no change.
+ <p>
+
+ <font class="doc-enums"><font class="doc-enum">AGG_BlendHardLight</font></font><p>
+ Multiplies or screens the colors, dependent on the source color value. If the source color
+ is lighter than 0.5, the destination is lightened as if it were screened. If the source color
+ is darker than 0.5, the destination is darkened, as if it were multiplied. The degree of
+ lightening or darkening is proportional to the difference between the source color and 0.5.
+ If it is equal to 0.5 the destination is unchanged. Painting with pure black or white produces
+ black or white.
+ <p>
+
+ <font class="doc-enums"><font class="doc-enum">AGG_BlendSoftLight</font></font><p>
+ Darkens or lightens the colors, dependent on the source color value. If the source color is lighter
+ than 0.5, the destination is lightened. If the source color is darker than 0.5, the destination
+ is darkened, as if it were burned in. The degree of darkening or lightening is proportional to
+ the difference between the source color and 0.5. If it is equal to 0.5, the destination is
+ unchanged. Painting with pure black or white produces a distinctly darker or lighter area,
+ but does not result in pure black or white.
+ <p>
+
+ <font class="doc-enums"><font class="doc-enum">AGG_BlendDifference</font></font><p>
+ Subtracts the darker of the two constituent colors from the lighter. Painting with white inverts
+ the destination color. Painting with black produces no change.
+ <p>
+
+ <font class="doc-enums"><font class="doc-enum">AGG_BlendExclusion</font></font><p>
+ Produces an effect similar to that of 'difference', but appears as lower contrast. Painting with
+ white inverts the destination color. Painting with black produces no change.
+
+ </blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="TAggTextAlignment"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAggTextAlignment</font>
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ <font class="doc-type">TAggTextAlignment</font> defines, how is the string of text aligned around the Text Origin, when
+ rendering.<p>
+
+ <img src="agg2d_files/text_alignment.jpg" width="365" height="200" border="0">
+
+ </blockquote>
+
+ <font class="doc-sect">Constant Values</font>
+ <blockquote>
+ <font class="doc-enums"><font class="doc-enum">AGG_AlignLeft</font></font><p>
+ Text on X axis runs to the Right from the Text Origin [default].
+ <p>
+
+ <font class="doc-enums"><font class="doc-enum">AGG_AlignRight</font></font><p>
+ Text on X axis runs to the Left from the Text Origin.
+ <p>
+
+ <font class="doc-enums"><font class="doc-enum">AGG_AlignCenter</font></font><p>
+ Text on X axis runs equally to both sides from the Text origin.<p>
+
+ Text is on Y axis positioned in the middle of the Top and Base Line of the text.
+ <p>
+
+ <font class="doc-enums"><font class="doc-enum">AGG_AlignTop</font></font><p>
+ Text is on Y axis positioned to the Top of the text.
+ <p>
+
+ <font class="doc-enums"><font class="doc-enum">AGG_AlignBottom</font></font><p>
+ Text is on Y axis positioned to the Base Line of the text [default].
+
+ </blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="TAggDrawPathFlag"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAggDrawPathFlag</font>
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ <font class="doc-type">TAggDrawPathFlag</font> defines, which rendering operations are involved when
+ drawing the path.
+
+ </blockquote>
+
+ <font class="doc-sect">Constant Values</font>
+ <blockquote>
+ <font class="doc-enums"><font class="doc-enum">AGG_FillOnly</font></font><p>
+ Just fill the path.
+ <p>
+
+ <font class="doc-enums"><font class="doc-enum">AGG_StrokeOnly</font></font><p>
+ Just stroke the path.
+ <p>
+
+ <font class="doc-enums"><font class="doc-enum">AGG_FillAndStroke</font></font><p>
+ Stroke and fill the path.
+ <p>
+
+ <font class="doc-enums"><font class="doc-enum">AGG_FillWithLineColor</font></font><p>
+ Fill the path with the current Line Color.
+
+ </blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="TAggViewportOption"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAggViewportOption</font>
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ <font class="doc-type">TAggViewportOption</font> defines the type of composite transformation for coordinates system.
+
+ </blockquote>
+
+ <font class="doc-sect">Constant Values</font>
+ <blockquote>
+ <font class="doc-enums"><font class="doc-enum">AGG_Anisotropic</font></font><p>
+ Transforms by stretching to the whole area of Viewport (Unproportional).
+ <p>
+
+ <font class="doc-enums"><font class="doc-enum">AGG_XMinYMin</font></font><p>
+ Proportionally scales to the Left and Top of Viewport.
+ <p>
+
+ <font class="doc-enums"><font class="doc-enum">AGG_XMidYMin</font></font><p>
+ Proportionally scales to the Center on X axis and Top of Viewport.
+ <p>
+
+ <font class="doc-enums"><font class="doc-enum">AGG_XMaxYMin</font></font><p>
+ Proportionally scales to the Right and Top of Viewport.
+ <p>
+
+ <font class="doc-enums"><font class="doc-enum">AGG_XMinYMid</font></font><p>
+ Proportionally scales to the Left and Center on Y axis of Viewport.
+ <p>
+
+ <font class="doc-enums"><font class="doc-enum">AGG_XMidYMid</font></font><p>
+ Proportionally scales to the Center on X and Y axis of Viewport.
+ <p>
+
+ <font class="doc-enums"><font class="doc-enum">AGG_XMaxYMid</font></font><p>
+ Proportionally scales to the Right and Center on Y axis of Viewport.
+ <p>
+
+ <font class="doc-enums"><font class="doc-enum">AGG_XMinYMax</font></font><p>
+ Proportionally scales to the Left and Bottom of Viewport.
+ <p>
+
+ <font class="doc-enums"><font class="doc-enum">AGG_XMidYMax</font></font><p>
+ Proportionally scales to the Center on X axis and Bottom of Viewport.
+ <p>
+
+ <font class="doc-enums"><font class="doc-enum">AGG_XMaxYMax</font></font><p>
+ Proportionally scales to the Right and Bottom of Viewport.
+
+ </blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="TAggImageFilter"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAggImageFilter</font>
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ <font class="doc-type">TAggImageFilter</font> defines the type of pixel-image aliasing resample operation when enlarging or shrinking bitmaps.<p>
+
+ This resample operation (filter or in most cases interpolation) of images occurs when user resizes or remaps (distorts)
+ image from one pixel grid to another. Image resizing is necessary when user needs to increase or decrease
+ the total number of pixels, whereas remapping can occur under a wider variety of scenarios: correcting for
+ lens distortion, changing perspective, rotating an image, etc.<p>
+
+ Interpolation works by using known data to estimate values at unknown points.<p>
+
+ Image interpolation works in two directions, and different alghorithms tries in a variety of ways
+ to achieve the best approximation of a pixel's color and intensity based on the values at surrounding
+ pixels.
+
+ </blockquote>
+
+ <font class="doc-sect">Constant Values</font>
+ <blockquote>
+ <font class="doc-enums"><font class="doc-enum">AGG_NoFilter</font></font><p>
+ No smoothing, just nearest neighbour method (point sampling) is used. The closest pixel center
+ to each sample grid point is used, with no input from other surrounding pixels.<p>
+
+ <img src="agg2d_files/resample_nn.jpg" width="120" height="120" border="0">
+ <p>&nbsp;<p>
+
+ <font class="doc-enums"><font class="doc-enum">AGG_Bilinear</font></font><p>
+ A sample point takes the four closest pixel centers and linearly interpolates their color values
+ according to their distance from the sample point. The averaging has an anti-aliasing effect
+ and therefore produces relatively smooth edges with hardly any jaggies.<p>
+
+ This method is particularly useful when an image is being enlarged, or transformed or distorted
+ without decrease in average size.<p>
+
+ <img src="agg2d_files/resample_bilinear.jpg" width="120" height="120" border="0">
+ <p>&nbsp;<p>
+
+ <font class="doc-enums"><font class="doc-enum">AGG_Hanning</font></font><p>
+ Results in medium quality image with medium performance.<p>
+
+ <img src="agg2d_files/resample_hanning.jpg" width="120" height="120" border="0">
+ <p>&nbsp;<p>
+
+ <font class="doc-enums"><font class="doc-enum">AGG_Hermite</font></font><p>
+ The Hermite method interpolates using Hermite spline interpolation.<p>
+
+ Results in medium quality image with medium performance.<p>
+
+ <img src="agg2d_files/resample_hermite.jpg" width="120" height="120" border="0">
+ <p>&nbsp;<p>
+
+ <font class="doc-enums"><font class="doc-enum">AGG_Quadric</font></font><p>
+ Results in good image quality with slightly higher performance.<p>
+
+ <img src="agg2d_files/resample_quadric.jpg" width="120" height="120" border="0">
+ <p>&nbsp;<p>
+
+ <font class="doc-enums"><font class="doc-enum">AGG_Bicubic</font></font><p>
+ Is more sophisticated and produces smoother edges thanbilinear interpolation.<p>
+
+ Bicubic goes one step beyond bilinear by considering the closest 4x4 neighborhood of known
+ pixels - for a total of 16 pixels. Since these are at various distances from the unknown pixel,
+ closer pixels are given a higher weighting in the calculation. Bicubic produces noticeably
+ sharper images than the previous method bilinear, and is perhaps the ideal combination
+ of processing time and output quality.<p>
+
+ <img src="agg2d_files/resample_bicubic.jpg" width="120" height="120" border="0">
+ <p>&nbsp;<p>
+
+ <font class="doc-enums"><font class="doc-enum">AGG_Catrom</font></font><p>
+ CatmullľRom splines are frequently used to get smooth interpolated motion between
+ key frames. They are popular mainly for being relatively easy to compute, guaranteeing that each
+ key frame position will be hit exactly, and also guaranteeing that the tangents of the generated
+ curve are continuous over multiple segments.<p>
+
+ <img src="agg2d_files/resample_catrom.jpg" width="120" height="120" border="0">
+ <p>&nbsp;<p>
+
+ <font class="doc-enums"><font class="doc-enum">AGG_Spline16, AGG_Spline36</font></font><p>
+ An approximation of spline interpolation, for some applications its result may be too smooth
+ and blurry, but when using with large magnification factors, it usually yields better image
+ compared to bilinear.<p>
+
+ <img src="agg2d_files/resample_spline.jpg" width="120" height="120" border="0">
+ <p>&nbsp;<p>
+
+ <font class="doc-enums"><font class="doc-enum">AGG_Blackman144</font></font><p>
+ Results in slightly distorted image quality with high performance.<p>
+
+ <img src="agg2d_files/resample_blackman.jpg" width="120" height="120" border="0">
+
+ </blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="TAggImageResample"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAggImageResample</font>
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ <font class="doc-type">TAggImageResample</font> defines the type of bitmap resampling event, which determines in what
+ conditions the resampling itself takes action.
+
+ </blockquote>
+
+ <font class="doc-sect">Constant Values</font>
+ <blockquote>
+ <font class="doc-enums"><font class="doc-enum">AGG_NoResample</font></font><p>
+ Resampling takes place on when needed (either on enlarge or shrink). [default]
+ <p>
+
+ <font class="doc-enums"><font class="doc-enum">AGG_ResampleAlways</font></font><p>
+ Resampling takes place even if no size-changing operation is going to happen.
+ <p>
+
+ <font class="doc-enums"><font class="doc-enum">AGG_ResampleOnZoomOut</font></font><p>
+ Resampling takes place when enlarging.
+
+ </blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="TAggFontCacheType"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAggFontCacheType</font>
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ <font class="doc-type">TAggFontCacheType</font> defines in what form the internal font manager stores it's font's glyph data.
+
+ </blockquote>
+
+ <font class="doc-sect">Constant Values</font>
+ <blockquote>
+ <font class="doc-enums"><font class="doc-enum">AGG_RasterFontCache</font></font><p>
+ Font manager internally caches the bitmap representations of glyphs at given font height.
+ Consequently skipping over the vector-to-surface step speeds up the final text rendering.
+ On the other side, font cached as the raster cannot be further transformed (like rotated
+ and so).
+ <p>
+
+ <font class="doc-enums"><font class="doc-enum">AGG_VectorFontCache</font></font><p>
+ Font manager internally caches the vectorial representations of glyphs. This gives
+ the font renderer a great flexibility over the rasterization process (all transformations
+ can be applied), but it's a little bit slower because the vector-to-surface process is
+ involved on rendering of each glyph.
+
+ </blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!-- API Method -->
+ <tr>
+ <td><a name="TAggTransformations"><img src="agg2d_files/spacer.gif" width="8" height="10" border="0"></a></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr class="doc-h1">
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td>
+ <font class="doc-type">TAggTransformations</font>
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="1" border="0"></td>
+ <td class="cell-text-normal">
+
+ <font class="doc-sect">Description</font>
+ <blockquote>
+ <font class="doc-type">TAggTransformations</font> is a data structure containing an affine matrix.<p>
+
+ A linear transformation (multiplication by a 2 × 2 matrix) followed by a translation
+ (addition of a 1 × 2 matrix) is called an Affine Transformation. After any affine transformation
+ a line segment remains a line segment and is never gonna to become a curve.<p>
+
+ <table width="500" border="1" cellspacing="0" cellpadding="3" align="center" class="doc-table-normal">
+ <tr>
+ <td colspan="4" align="center">Affine Transformation</td>
+ </tr>
+
+ <tr>
+ <td rowspan="2">Linear Part</td>
+ <td class="doc-table-code">&nbsp;[0] sx</td>
+ <td class="doc-table-code">&nbsp;[1] shy</td>
+ <td class="doc-table-code">&nbsp;sx,sy &nbsp; = scaling</td>
+ </tr>
+
+ <tr>
+ <td class="doc-table-code">&nbsp;[2] shx</td>
+ <td class="doc-table-code">&nbsp;[3] sy</td>
+ <td class="doc-table-code">&nbsp;shx,shy = skewing</td>
+ </tr>
+
+ <tr>
+ <td>Translation Part</td>
+ <td class="doc-table-code">&nbsp;[4] tx</td>
+ <td class="doc-table-code">&nbsp;[5] ty</td>
+ <td class="doc-table-code">&nbsp;tx,ty &nbsp; = translation</td>
+ </tr>
+
+ </table>
+
+ </blockquote>
+
+ <font class="doc-sect">Structure</font>
+ <blockquote>
+ <div class="doc-src">
+ affineMatrix : array[0..5 ] of double
+
+ </div>
+
+ </blockquote>
+
+ </td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td></tr>
+
+<!-- End -->
+ <tr>
+ <td><img src="agg2d_files/spacer.gif" width="8" height="20" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="622" height="1" border="0"></td>
+ <td><img src="agg2d_files/spacer.gif" width="10" height="1" border="0"></td>
+ </tr>
+
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="640" align="center">
+<!--
+ <tr>
+ <td align="center" class="doc-foot-links">
+ <a href="../index.html">[About]</a>&nbsp;&nbsp;
+ <a href="../aggpas-demo.htm">[Demo]</a>&nbsp;&nbsp;
+ <a href="../aggpas-download.htm">[Download]</a>&nbsp;&nbsp;
+ <a href="../aggpas-svg.htm">[SVG]</a>&nbsp;&nbsp;
+ <a href="../aggpas-licence.htm">[Licence]</a>&nbsp;&nbsp;
+ <a href="../aggpas-links.htm">[Links]</a>
+ </td>
+ </tr>
+-->
+ <tr><td><img src="agg2d_files/spacer.gif" width="8" height="2" border="0"></td></tr>
+ <tr><td><img name="liner" src="agg2d_files/liner.jpg" width="640" height="3" border="0"></td></tr>
+ <tr><td><img src="agg2d_files/spacer.gif" width="8" height="5" border="0"></td></tr>
+
+ <tr>
+ <td>
+ <div align="center" class="doc-foot-copy">
+ 2006 - 2008 &copy; Milan Marusinec alias Milano
+ </div>
+ <br>
+ </td>
+ </tr>
+
+</table>
+</body>
+</html>