diff options
author | Graeme Geldenhuys <graeme@mastermaths.co.za> | 2012-03-19 11:54:19 +0200 |
---|---|---|
committer | Graeme Geldenhuys <graeme@mastermaths.co.za> | 2012-03-19 11:54:19 +0200 |
commit | 88f1fc9acda900eecfcfc884a60e4958145e3fc0 (patch) | |
tree | cfc913d8884e80d7fd93b27a983623bc5c65ff9e /docs/aggpas/agg2d.html | |
parent | faacd945eeee1f95aa5e7597cdd3dbc90c67abf6 (diff) | |
download | fpGUI-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.html | 11248 |
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> <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 © 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 & 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 & 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">// "l" 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 "l" 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 < 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 "Ko" 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 "Ko" 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 "Ko" 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 "Ko" 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> <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> <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> <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> <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> <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> <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> <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> <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> <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> <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> <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> <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"> [0] sx</td> + <td class="doc-table-code"> [1] shy</td> + <td class="doc-table-code"> sx,sy = scaling</td> + </tr> + + <tr> + <td class="doc-table-code"> [2] shx</td> + <td class="doc-table-code"> [3] sy</td> + <td class="doc-table-code"> shx,shy = skewing</td> + </tr> + + <tr> + <td>Translation Part</td> + <td class="doc-table-code"> [4] tx</td> + <td class="doc-table-code"> [5] ty</td> + <td class="doc-table-code"> tx,ty = 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> + <a href="../aggpas-demo.htm">[Demo]</a> + <a href="../aggpas-download.htm">[Download]</a> + <a href="../aggpas-svg.htm">[SVG]</a> + <a href="../aggpas-licence.htm">[Licence]</a> + <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 © Milan Marusinec alias Milano + </div> + <br> + </td> + </tr> + +</table> +</body> +</html> |