Added: ant/site/ant/production/manual/Tasks/imageio.html
URL:
http://svn.apache.org/viewvc/ant/site/ant/production/manual/Tasks/imageio.html?rev=1859109&view=auto
==============================================================================
--- ant/site/ant/production/manual/Tasks/imageio.html (added)
+++ ant/site/ant/production/manual/Tasks/imageio.html Sat May 11 11:38:01 2019
@@ -0,0 +1,698 @@
+<!DOCTYPE html>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<html lang="en">
+
+<head>
+<link rel="stylesheet" type="text/css" href="../stylesheets/style.css">
+<title>Image Task</title>
+</head>
+
+<body>
+
+<h2 id="imageio">ImageIO</h2>
+<h3>Description</h3>
+<p>Applies a chain of image operations on a set of files.</p>
+<p>Uses AWT and ImageIO; replaces <a href="image.html">image</a> task for Java
9+. The task can be
+used with Java 8 as well, see parameter table for limitations.</p>
+<p><strong>Note</strong>: this task tries to stay as close as possible to
syntax and semantics
+of <code>image</code> task. However, it uses <var>format</var> attribute rather
+than <var>encoding</var> attribute, because the latter is a misnomer: almost
all tasks use similar
+attributes for character encodings in files, file names or other strings. Also,
+when <var>format</var> is not specified, its value is defined by the format of
the first processed
+image file.</p>
+<h5>Overview of used datatypes</h5>
+<svg xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink" fill-opacity="1"
+ color-rendering="auto" color-interpolation="auto" text-rendering="auto"
stroke="black"
+ stroke-linecap="square" viewBox="0 0 1504 957" stroke-miterlimit="10"
shape-rendering="auto"
+ stroke-opacity="1" fill="black" stroke-dasharray="none"
font-weight="normal" stroke-width="1"
+ font-family="Sans-Serif" font-style="normal" stroke-linejoin="miter"
font-size="12px" role="img"
+ stroke-dashoffset="0" image-rendering="auto"
aria-labelledby="diagramTitle diagramDescription">
+ <title id="diagramTitle">ImageOperation class diagram</title>
+ <desc id="diagramDescription">A diagram of Ant DataType classes used by
ImageIO task.</desc>
+ <defs id="genericDefs"/>
+ <g>
+ <defs id="defs1">
+ <clipPath clipPathUnits="userSpaceOnUse" id="clipPath1">
+ <path d="M0 0 L1504 0 L1504 957 L0 957 L0 0 Z"/>
+ </clipPath>
+ <clipPath clipPathUnits="userSpaceOnUse" id="clipPath2">
+ <path d="M-435 -129 L1069 -129 L1069 828 L-435 828 L-435 -129 Z"/>
+ </clipPath>
+ <clipPath clipPathUnits="userSpaceOnUse" id="clipPath3">
+ <path d="M207 -113 L207 -66 L452 -66 L452 -113 Z"/>
+ </clipPath>
+ <clipPath clipPathUnits="userSpaceOnUse" id="clipPath4">
+ <path d="M239 26 L239 130 L421 130 L421 26 Z"/>
+ </clipPath>
+ <clipPath clipPathUnits="userSpaceOnUse" id="clipPath5">
+ <path d="M-24 106 L-24 221 L144 221 L144 106 Z"/>
+ </clipPath>
+ <clipPath clipPathUnits="userSpaceOnUse" id="clipPath6">
+ <path d="M527 105 L527 166 L913 166 L913 105 Z"/>
+ </clipPath>
+ <clipPath clipPathUnits="userSpaceOnUse" id="clipPath7">
+ <path d="M206 478 L206 562 L452 562 L452 478 Z"/>
+ </clipPath>
+ <clipPath clipPathUnits="userSpaceOnUse" id="clipPath8">
+ <path d="M562 541 L562 812 L813 812 L813 541 Z"/>
+ </clipPath>
+ <clipPath clipPathUnits="userSpaceOnUse" id="clipPath9">
+ <path d="M257 272 L257 402 L403 402 L403 272 Z"/>
+ </clipPath>
+ <clipPath clipPathUnits="userSpaceOnUse" id="clipPath10">
+ <path d="M449 272 L449 331 L571 331 L571 272 Z"/>
+ </clipPath>
+ <clipPath clipPathUnits="userSpaceOnUse" id="clipPath11">
+ <path d="M614 272 L614 360 L826 360 L826 272 Z"/>
+ </clipPath>
+ <clipPath clipPathUnits="userSpaceOnUse" id="clipPath12">
+ <path d="M874 272 L874 402 L1054 402 L1054 272 Z"/>
+ </clipPath>
+ <clipPath clipPathUnits="userSpaceOnUse" id="clipPath13">
+ <path d="M0 272 L0 346 L122 346 L122 272 Z"/>
+ </clipPath>
+ <clipPath clipPathUnits="userSpaceOnUse" id="clipPath14">
+ <path d="M-166 272 L-166 317 L-44 317 L-44 272 Z"/>
+ </clipPath>
+ <clipPath clipPathUnits="userSpaceOnUse" id="clipPath15">
+ <path d="M-375 272 L-375 360 L-208 360 L-208 272 Z"/>
+ </clipPath>
+ </defs>
+ <g fill="white" text-rendering="geometricPrecision"
shape-rendering="geometricPrecision" transform="translate(435,129)"
stroke="white">
+ <rect x="-435" width="1504" height="957" y="-129"
clip-path="url(#clipPath2)" stroke="none"/>
+ </g>
+ <g fill="rgb(255,204,153)" text-rendering="geometricPrecision"
shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,435,129)"
stroke="rgb(255,204,153)">
+ <rect x="208" width="243" height="45" y="-112"
clip-path="url(#clipPath2)" stroke="none"/>
+ <rect x="207" y="-113" clip-path="url(#clipPath2)"
fill="rgb(255,255,218)" width="1" height="47" stroke="none"/>
+ <rect x="208" y="-113" clip-path="url(#clipPath2)"
fill="rgb(255,255,218)" width="243" height="1" stroke="none"/>
+ <rect x="208" y="-67" clip-path="url(#clipPath2)"
fill="rgb(178,142,107)" width="244" height="1" stroke="none"/>
+ <rect x="451" y="-113" clip-path="url(#clipPath2)"
fill="rgb(178,142,107)" width="1" height="46" stroke="none"/>
+ </g>
+ <g font-size="13px" stroke-linecap="butt"
transform="matrix(1,0,0,1,435,129)" text-rendering="geometricPrecision"
font-family="sans-serif" shape-rendering="geometricPrecision"
stroke-miterlimit="1.45">
+ <text x="214.5425" xml:space="preserve" y="-95.5533"
clip-path="url(#clipPath3)"
stroke="none">org.apache.tools.ant.types.DataType</text>
+ </g>
+ <g text-rendering="geometricPrecision"
shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,435,129)">
+ <line y2="-87" fill="none" x1="208" clip-path="url(#clipPath3)" x2="451"
y1="-87"/>
+ <line y2="-77" fill="none" x1="208" clip-path="url(#clipPath3)" x2="451"
y1="-77"/>
+ <text stroke-linecap="butt" x="212.5" y="-61.2095"
clip-path="url(#clipPath3)" font-family="sans-serif" stroke="none"
stroke-miterlimit="1.45" xml:space="preserve"> </text>
+ <rect x="240" y="27" clip-path="url(#clipPath2)" fill="rgb(255,204,153)"
width="180" height="102" stroke="none"/>
+ <rect x="239" y="26" clip-path="url(#clipPath2)" fill="rgb(255,255,218)"
width="1" height="104" stroke="none"/>
+ <rect x="240" y="26" clip-path="url(#clipPath2)" fill="rgb(255,255,218)"
width="180" height="1" stroke="none"/>
+ <rect x="240" y="129" clip-path="url(#clipPath2)"
fill="rgb(178,142,107)" width="181" height="1" stroke="none"/>
+ <rect x="420" y="26" clip-path="url(#clipPath2)" fill="rgb(178,142,107)"
width="1" height="103" stroke="none"/>
+ </g>
+ <g font-size="13px" stroke-linecap="butt"
transform="matrix(1,0,0,1,435,129)" text-rendering="geometricPrecision"
font-family="sans-serif" shape-rendering="geometricPrecision"
font-style="italic" stroke-miterlimit="1.45">
+ <text x="279.4473" xml:space="preserve" y="43.5684"
clip-path="url(#clipPath4)" stroke="none">ImageOperation</text>
+ </g>
+ <g text-rendering="geometricPrecision"
shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,435,129)">
+ <line y2="51" fill="none" x1="240" clip-path="url(#clipPath4)" x2="420"
y1="51"/>
+ <text stroke-linecap="butt" x="244" y="67.9121"
clip-path="url(#clipPath4)" font-family="sans-serif" stroke="none"
stroke-miterlimit="1.45" xml:space="preserve">instructions : List</text>
+ <line y2="75" fill="none" x1="240" clip-path="url(#clipPath4)" x2="420"
y1="75"/>
+ <text stroke-linecap="butt" x="244" y="92.0449"
clip-path="url(#clipPath4)" font-family="sans-serif" stroke="none"
stroke-miterlimit="1.45" xml:space="preserve">addDraw(Draw : instr)</text>
+ <text stroke-linecap="butt" x="244" y="106.1777"
clip-path="url(#clipPath4)" font-family="sans-serif" stroke="none"
stroke-miterlimit="1.45" xml:space="preserve">addRotate(Rotate : instr)</text>
+ <text stroke-linecap="butt" x="244" y="120.3105"
clip-path="url(#clipPath4)" font-family="sans-serif" stroke="none"
stroke-miterlimit="1.45" xml:space="preserve">addScale(Scale : instr)</text>
+ <path fill="none" stroke-miterlimit="1.45" d="M-419.1051 469.593
L-173.5543 469.593 L-173.5543 484.593 L-158.5543 484.593 L-158.5543 574.593
L-419.1051 574.593 Z" clip-path="url(#clipPath2)" stroke-linecap="butt"/>
+ <path fill="none" stroke-miterlimit="1.45" d="M-173.5543 469.593
L-173.5543 484.593 L-158.5543 484.593 Z" fill-rule="evenodd"
clip-path="url(#clipPath2)" stroke-linecap="butt"/>
+ <text stroke-linecap="butt" x="-412.1051" y="491.2961"
clip-path="url(#clipPath2)" font-family="sans-serif" stroke="none"
stroke-miterlimit="1.45" xml:space="preserve">The setType() method forces type
to</text>
+ <text stroke-linecap="butt" x="-412.1051" y="505.4289"
clip-path="url(#clipPath2)" font-family="sans-serif" stroke="none"
stroke-miterlimit="1.45" xml:space="preserve">one of the values of
java.awt.geom.Arc2D:</text>
+ <text stroke-linecap="butt" x="-412.1051" y="519.5617"
clip-path="url(#clipPath2)" font-family="sans-serif" stroke="none"
stroke-miterlimit="1.45" xml:space="preserve">open = Arc2D.OPEN</text>
+ <text stroke-linecap="butt" x="-412.1051" y="533.6945"
clip-path="url(#clipPath2)" font-family="sans-serif" stroke="none"
stroke-miterlimit="1.45" xml:space="preserve">pie = Arc2D.PIE</text>
+ <text stroke-linecap="butt" x="-412.1051" y="547.8273"
clip-path="url(#clipPath2)" font-family="sans-serif" stroke="none"
stroke-miterlimit="1.45" xml:space="preserve">chord = Arc2D.CHORD</text>
+ <text stroke-linecap="butt" x="-412.1051" y="561.9601"
clip-path="url(#clipPath2)" font-family="sans-serif" stroke="none"
stroke-miterlimit="1.45" xml:space="preserve">Parameter is not
case-sensitive.</text>
+ <rect x="-23" y="107" clip-path="url(#clipPath2)"
fill="rgb(255,204,153)" width="166" height="113" stroke="none"/>
+ <rect x="-24" y="106" clip-path="url(#clipPath2)"
fill="rgb(255,255,218)" width="1" height="115" stroke="none"/>
+ <rect x="-23" y="106" clip-path="url(#clipPath2)"
fill="rgb(255,255,218)" width="166" height="1" stroke="none"/>
+ <rect x="-23" y="220" clip-path="url(#clipPath2)"
fill="rgb(178,142,107)" width="167" height="1" stroke="none"/>
+ <rect x="143" y="106" clip-path="url(#clipPath2)"
fill="rgb(178,142,107)" width="1" height="114" stroke="none"/>
+ </g>
+ <g font-size="13px" stroke-linecap="butt"
transform="matrix(1,0,0,1,435,129)" text-rendering="geometricPrecision"
font-family="sans-serif" shape-rendering="geometricPrecision"
font-style="italic" stroke-miterlimit="1.45">
+ <text x="25.3132" xml:space="preserve" y="123.5684"
clip-path="url(#clipPath5)" stroke="none">BasicShape</text>
+ </g>
+ <g text-rendering="geometricPrecision"
shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,435,129)">
+ <line y2="131" fill="none" x1="-23" clip-path="url(#clipPath5)" x2="143"
y1="131"/>
+ <text stroke-linecap="butt" x="-19" y="147.9121"
clip-path="url(#clipPath5)" font-family="sans-serif" stroke="none"
stroke-miterlimit="1.45" xml:space="preserve">height : int = 0</text>
+ <text stroke-linecap="butt" x="-19" y="162.0449"
clip-path="url(#clipPath5)" font-family="sans-serif" stroke="none"
stroke-miterlimit="1.45" xml:space="preserve">width : int = 0</text>
+ <text stroke-linecap="butt" x="-19" y="176.1777"
clip-path="url(#clipPath5)" font-family="sans-serif" stroke="none"
stroke-miterlimit="1.45" xml:space="preserve">strokeWidth : int = 0</text>
+ <text stroke-linecap="butt" x="-19" y="190.3105"
clip-path="url(#clipPath5)" font-family="sans-serif" stroke="none"
stroke-miterlimit="1.45" xml:space="preserve">stroke : String = "black"</text>
+ <text stroke-linecap="butt" x="-19" y="204.4434"
clip-path="url(#clipPath5)" font-family="sans-serif" stroke="none"
stroke-miterlimit="1.45" xml:space="preserve">fill : String =
"transparent"</text>
+ <line y2="211" fill="none" x1="-23" clip-path="url(#clipPath5)" x2="143"
y1="211"/>
+ <rect x="528" y="106" clip-path="url(#clipPath2)"
fill="rgb(255,204,153)" width="384" height="59" stroke="none"/>
+ <rect x="527" y="105" clip-path="url(#clipPath2)"
fill="rgb(255,255,218)" width="1" height="61" stroke="none"/>
+ <rect x="528" y="105" clip-path="url(#clipPath2)"
fill="rgb(255,255,218)" width="384" height="1" stroke="none"/>
+ <rect x="528" y="165" clip-path="url(#clipPath2)"
fill="rgb(178,142,107)" width="385" height="1" stroke="none"/>
+ <rect x="912" y="105" clip-path="url(#clipPath2)"
fill="rgb(178,142,107)" width="1" height="60" stroke="none"/>
+ </g>
+ <g font-size="13px" stroke-linecap="butt"
transform="matrix(1,0,0,1,435,129)" text-rendering="geometricPrecision"
font-family="sans-serif" shape-rendering="geometricPrecision"
font-style="italic" stroke-miterlimit="1.45">
+ <text x="655.8347" xml:space="preserve" y="122.5684"
clip-path="url(#clipPath6)" stroke="none">TransformOperation</text>
+ </g>
+ <g text-rendering="geometricPrecision"
shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,435,129)">
+ <line y2="130" fill="none" x1="528" clip-path="url(#clipPath6)" x2="912"
y1="130"/>
+ <line y2="140" fill="none" x1="528" clip-path="url(#clipPath6)" x2="912"
y1="140"/>
+ <text stroke-linecap="butt" x="532" y="156.9121"
clip-path="url(#clipPath6)" font-family="sans-serif" stroke="none"
stroke-miterlimit="1.45"
xml:space="preserve">executeTransformOperation(BufferedImage img) :
BufferedImage</text>
+ <rect x="207" y="479" clip-path="url(#clipPath2)"
fill="rgb(255,204,153)" width="244" height="82" stroke="none"/>
+ <rect x="206" y="478" clip-path="url(#clipPath2)"
fill="rgb(255,255,218)" width="1" height="84" stroke="none"/>
+ <rect x="207" y="478" clip-path="url(#clipPath2)"
fill="rgb(255,255,218)" width="244" height="1" stroke="none"/>
+ <rect x="207" y="561" clip-path="url(#clipPath2)"
fill="rgb(178,142,107)" width="245" height="1" stroke="none"/>
+ <rect x="451" y="478" clip-path="url(#clipPath2)"
fill="rgb(178,142,107)" width="1" height="83" stroke="none"/>
+ <text stroke-linecap="butt" x="284.4863" y="494.6016"
clip-path="url(#clipPath7)" font-family="sans-serif" stroke="none"
stroke-miterlimit="1.45" xml:space="preserve"><<interface>></text>
+ </g>
+ <g font-size="13px" stroke-linecap="butt"
transform="matrix(1,0,0,1,435,129)" text-rendering="geometricPrecision"
font-family="sans-serif" shape-rendering="geometricPrecision"
font-style="italic" stroke-miterlimit="1.45">
+ <text x="281.5259" xml:space="preserve" y="518.7012"
clip-path="url(#clipPath7)" stroke="none">DrawOperation</text>
+ </g>
+ <g text-rendering="geometricPrecision"
shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,435,129)">
+ <line y2="526" fill="none" x1="207" clip-path="url(#clipPath7)" x2="451"
y1="526"/>
+ <line y2="536" fill="none" x1="207" clip-path="url(#clipPath7)" x2="451"
y1="536"/>
+ <text stroke-linecap="butt" x="211" y="553.0449"
clip-path="url(#clipPath7)" font-family="sans-serif" stroke="none"
stroke-miterlimit="1.45" xml:space="preserve">executeDrawOperation() :
BufferedImage</text>
+ <path fill="none" stroke-miterlimit="1.45" d="M220.3178 635.8665
L421.3783 635.8665 L421.3783 650.8665 L436.3783 650.8665 L436.3783 711.6233
L220.3178 711.6233 Z" clip-path="url(#clipPath2)" stroke-linecap="butt"/>
+ <path fill="none" stroke-miterlimit="1.45" d="M421.3783 635.8665
L421.3783 650.8665 L436.3783 650.8665 Z" fill-rule="evenodd"
clip-path="url(#clipPath2)" stroke-linecap="butt"/>
+ <text stroke-linecap="butt" x="227.3178" y="657.0809"
clip-path="url(#clipPath2)" font-family="sans-serif" stroke="none"
stroke-miterlimit="1.45" xml:space="preserve">The implementing class uses</text>
+ <text stroke-linecap="butt" x="227.3178" y="671.2137"
clip-path="url(#clipPath2)" font-family="sans-serif" stroke="none"
stroke-miterlimit="1.45" xml:space="preserve">ColorMapper to evaluate the
color.</text>
+ <text stroke-linecap="butt" x="227.3178" y="685.3465"
clip-path="url(#clipPath2)" font-family="sans-serif" stroke="none"
stroke-miterlimit="1.45" xml:space="preserve">Only the values defined in</text>
+ <text stroke-linecap="butt" x="227.3178" y="699.4793"
clip-path="url(#clipPath2)" font-family="sans-serif" stroke="none"
stroke-miterlimit="1.45" xml:space="preserve">ColorMapper are used.</text>
+ <rect x="563" y="542" clip-path="url(#clipPath2)"
fill="rgb(255,204,153)" width="249" height="269" stroke="none"/>
+ <rect x="562" y="541" clip-path="url(#clipPath2)"
fill="rgb(255,255,218)" width="1" height="271" stroke="none"/>
+ <rect x="563" y="541" clip-path="url(#clipPath2)"
fill="rgb(255,255,218)" width="249" height="1" stroke="none"/>
+ <rect x="563" y="811" clip-path="url(#clipPath2)"
fill="rgb(178,142,107)" width="250" height="1" stroke="none"/>
+ <rect x="812" y="541" clip-path="url(#clipPath2)"
fill="rgb(178,142,107)" width="1" height="270" stroke="none"/>
+ </g>
+ <g font-size="13px" stroke-linecap="butt"
transform="matrix(1,0,0,1,435,129)" text-rendering="geometricPrecision"
font-family="sans-serif" shape-rendering="geometricPrecision"
stroke-miterlimit="1.45">
+ <text x="647.6754" xml:space="preserve" y="558.9055"
clip-path="url(#clipPath8)" stroke="none">ColorMapper</text>
+ </g>
+ <g text-rendering="geometricPrecision"
shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,435,129)">
+ <line y2="566" fill="none" x1="563" clip-path="url(#clipPath8)" x2="812"
y1="566"/>
+ <text stroke-linecap="butt" x="567.7103" y="583.2493"
clip-path="url(#clipPath8)" font-family="sans-serif" stroke="none"
stroke-miterlimit="1.45" xml:space="preserve">COLOR_BLACK : String =
"black"</text>
+ <text stroke-linecap="butt" x="567.7103" y="597.3821"
clip-path="url(#clipPath8)" font-family="sans-serif" stroke="none"
stroke-miterlimit="1.45" xml:space="preserve">COLOR_BLUE : String =
"blue"</text>
+ <text stroke-linecap="butt" x="567.7103" y="611.5149"
clip-path="url(#clipPath8)" font-family="sans-serif" stroke="none"
stroke-miterlimit="1.45" xml:space="preserve">COLOR_CYAN : String =
"cyan"</text>
+ <text stroke-linecap="butt" x="567.7103" y="625.6477"
clip-path="url(#clipPath8)" font-family="sans-serif" stroke="none"
stroke-miterlimit="1.45" xml:space="preserve">COLOR_DARKGRAY : String =
"darkgray"</text>
+ <text stroke-linecap="butt" x="567.7103" y="639.7805"
clip-path="url(#clipPath8)" font-family="sans-serif" stroke="none"
stroke-miterlimit="1.45" xml:space="preserve">COLOR_GRAY : String =
"gray"</text>
+ <text stroke-linecap="butt" x="567.7103" y="653.9133"
clip-path="url(#clipPath8)" font-family="sans-serif" stroke="none"
stroke-miterlimit="1.45" xml:space="preserve">COLOR_LIGHTGRAY : String =
"lightgray"</text>
+ <text stroke-linecap="butt" x="567.7103" y="668.0461"
clip-path="url(#clipPath8)" font-family="sans-serif" stroke="none"
stroke-miterlimit="1.45" xml:space="preserve">COLOR_DARKGREY : String =
"darkgrey"</text>
+ <text stroke-linecap="butt" x="567.7103" y="682.179"
clip-path="url(#clipPath8)" font-family="sans-serif" stroke="none"
stroke-miterlimit="1.45" xml:space="preserve">COLOR_GREY : String =
"grey"</text>
+ <text stroke-linecap="butt" x="567.7103" y="696.3118"
clip-path="url(#clipPath8)" font-family="sans-serif" stroke="none"
stroke-miterlimit="1.45" xml:space="preserve">COLOR_LIGHTGREY : String =
"lightgrey"</text>
+ <text stroke-linecap="butt" x="567.7103" y="710.4446"
clip-path="url(#clipPath8)" font-family="sans-serif" stroke="none"
stroke-miterlimit="1.45" xml:space="preserve">COLOR_GREEN : String =
"green"</text>
+ <text stroke-linecap="butt" x="567.7103" y="724.5774"
clip-path="url(#clipPath8)" font-family="sans-serif" stroke="none"
stroke-miterlimit="1.45" xml:space="preserve">COLOR_MAGENTA : String =
"magenta"</text>
+ <text stroke-linecap="butt" x="567.7103" y="738.7102"
clip-path="url(#clipPath8)" font-family="sans-serif" stroke="none"
stroke-miterlimit="1.45" xml:space="preserve">COLOR_ORANGE : String =
"orange"</text>
+ <text stroke-linecap="butt" x="567.7103" y="752.843"
clip-path="url(#clipPath8)" font-family="sans-serif" stroke="none"
stroke-miterlimit="1.45" xml:space="preserve">COLOR_PINK : String =
"pink"</text>
+ <text stroke-linecap="butt" x="567.7103" y="766.9758"
clip-path="url(#clipPath8)" font-family="sans-serif" stroke="none"
stroke-miterlimit="1.45" xml:space="preserve">COLOR_RED : String = "red"</text>
+ <text stroke-linecap="butt" x="567.7103" y="781.1086"
clip-path="url(#clipPath8)" font-family="sans-serif" stroke="none"
stroke-miterlimit="1.45" xml:space="preserve">COLOR_WHITE : String =
"white"</text>
+ <text stroke-linecap="butt" x="567.7103" y="795.2415"
clip-path="url(#clipPath8)" font-family="sans-serif" stroke="none"
stroke-miterlimit="1.45" xml:space="preserve">COLOR_YELLOW : String =
"yellow"</text>
+ <line y2="802" fill="none" x1="563" clip-path="url(#clipPath8)" x2="812"
y1="802"/>
+ <rect x="258" y="273" clip-path="url(#clipPath2)"
fill="rgb(255,204,153)" width="144" height="128" stroke="none"/>
+ <rect x="257" y="272" clip-path="url(#clipPath2)"
fill="rgb(255,255,218)" width="1" height="130" stroke="none"/>
+ <rect x="258" y="272" clip-path="url(#clipPath2)"
fill="rgb(255,255,218)" width="144" height="1" stroke="none"/>
+ <rect x="258" y="401" clip-path="url(#clipPath2)"
fill="rgb(178,142,107)" width="145" height="1" stroke="none"/>
+ <rect x="402" y="272" clip-path="url(#clipPath2)"
fill="rgb(178,142,107)" width="1" height="129" stroke="none"/>
+ </g>
+ <g font-size="13px" stroke-linecap="butt"
transform="matrix(1,0,0,1,435,129)" text-rendering="geometricPrecision"
font-family="sans-serif" shape-rendering="geometricPrecision"
stroke-miterlimit="1.45">
+ <text x="315.8511" xml:space="preserve" y="289.5684"
clip-path="url(#clipPath9)" stroke="none">Text</text>
+ </g>
+ <g text-rendering="geometricPrecision"
shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,435,129)">
+ <line y2="297" fill="none" x1="258" clip-path="url(#clipPath9)" x2="402"
y1="297"/>
+ <text stroke-linecap="butt" x="262" y="313.9121"
clip-path="url(#clipPath9)" font-family="sans-serif" stroke="none"
stroke-miterlimit="1.45" xml:space="preserve">string : String = ""</text>
+ <text stroke-linecap="butt" x="262" y="328.0449"
clip-path="url(#clipPath9)" font-family="sans-serif" stroke="none"
stroke-miterlimit="1.45" xml:space="preserve">font : String = "Arial"</text>
+ <text stroke-linecap="butt" x="262" y="342.1777"
clip-path="url(#clipPath9)" font-family="sans-serif" stroke="none"
stroke-miterlimit="1.45" xml:space="preserve">point : int = 10</text>
+ <text stroke-linecap="butt" x="262" y="356.3105"
clip-path="url(#clipPath9)" font-family="sans-serif" stroke="none"
stroke-miterlimit="1.45" xml:space="preserve">bold : boolean = false</text>
+ <text stroke-linecap="butt" x="262" y="370.4434"
clip-path="url(#clipPath9)" font-family="sans-serif" stroke="none"
stroke-miterlimit="1.45" xml:space="preserve">color : String = "black"</text>
+ <text stroke-linecap="butt" x="262" y="384.5762"
clip-path="url(#clipPath9)" font-family="sans-serif" stroke="none"
stroke-miterlimit="1.45" xml:space="preserve">italic : boolean = false</text>
+ <line y2="392" fill="none" x1="258" clip-path="url(#clipPath9)" x2="402"
y1="392"/>
+ <rect x="450" y="273" clip-path="url(#clipPath2)"
fill="rgb(255,204,153)" width="120" height="57" stroke="none"/>
+ <rect x="449" y="272" clip-path="url(#clipPath2)"
fill="rgb(255,255,218)" width="1" height="59" stroke="none"/>
+ <rect x="450" y="272" clip-path="url(#clipPath2)"
fill="rgb(255,255,218)" width="120" height="1" stroke="none"/>
+ <rect x="450" y="330" clip-path="url(#clipPath2)"
fill="rgb(178,142,107)" width="121" height="1" stroke="none"/>
+ <rect x="570" y="272" clip-path="url(#clipPath2)"
fill="rgb(178,142,107)" width="1" height="58" stroke="none"/>
+ </g>
+ <g font-size="13px" stroke-linecap="butt"
transform="matrix(1,0,0,1,435,129)" text-rendering="geometricPrecision"
font-family="sans-serif" shape-rendering="geometricPrecision"
stroke-miterlimit="1.45">
+ <text x="489.824" xml:space="preserve" y="289.5684"
clip-path="url(#clipPath10)" stroke="none">Rotate</text>
+ </g>
+ <g text-rendering="geometricPrecision"
shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,435,129)">
+ <line y2="297" fill="none" x1="450" clip-path="url(#clipPath10)"
x2="570" y1="297"/>
+ <text stroke-linecap="butt" x="454" y="313.9121"
clip-path="url(#clipPath10)" font-family="sans-serif" stroke="none"
stroke-miterlimit="1.45" xml:space="preserve">angle : float = 0.0F</text>
+ <line y2="321" fill="none" x1="450" clip-path="url(#clipPath10)"
x2="570" y1="321"/>
+ <rect x="615" y="273" clip-path="url(#clipPath2)"
fill="rgb(255,204,153)" width="210" height="86" stroke="none"/>
+ <rect x="614" y="272" clip-path="url(#clipPath2)"
fill="rgb(255,255,218)" width="1" height="88" stroke="none"/>
+ <rect x="615" y="272" clip-path="url(#clipPath2)"
fill="rgb(255,255,218)" width="210" height="1" stroke="none"/>
+ <rect x="615" y="359" clip-path="url(#clipPath2)"
fill="rgb(178,142,107)" width="211" height="1" stroke="none"/>
+ <rect x="825" y="272" clip-path="url(#clipPath2)"
fill="rgb(178,142,107)" width="1" height="87" stroke="none"/>
+ </g>
+ <g font-size="13px" stroke-linecap="butt"
transform="matrix(1,0,0,1,435,129)" text-rendering="geometricPrecision"
font-family="sans-serif" shape-rendering="geometricPrecision"
stroke-miterlimit="1.45">
+ <text x="704.0801" xml:space="preserve" y="289.5684"
clip-path="url(#clipPath11)" stroke="none">Scale</text>
+ </g>
+ <g text-rendering="geometricPrecision"
shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,435,129)">
+ <line y2="297" fill="none" x1="615" clip-path="url(#clipPath11)"
x2="825" y1="297"/>
+ <text stroke-linecap="butt" x="619" y="313.9121"
clip-path="url(#clipPath11)" font-family="sans-serif" stroke="none"
stroke-miterlimit="1.45" xml:space="preserve">width : String = "100%"</text>
+ <text stroke-linecap="butt" x="619" y="328.0449"
clip-path="url(#clipPath11)" font-family="sans-serif" stroke="none"
stroke-miterlimit="1.45" xml:space="preserve">height : String = "100%"</text>
+ <text stroke-linecap="butt" x="619" y="342.1777"
clip-path="url(#clipPath11)" font-family="sans-serif" stroke="none"
stroke-miterlimit="1.45" xml:space="preserve">keepProportions : boolean =
false</text>
+ <line y2="349" fill="none" x1="615" clip-path="url(#clipPath11)"
x2="825" y1="349"/>
+ <rect x="875" y="273" clip-path="url(#clipPath2)"
fill="rgb(255,204,153)" width="178" height="128" stroke="none"/>
+ <rect x="874" y="272" clip-path="url(#clipPath2)"
fill="rgb(255,255,218)" width="1" height="130" stroke="none"/>
+ <rect x="875" y="272" clip-path="url(#clipPath2)"
fill="rgb(255,255,218)" width="178" height="1" stroke="none"/>
+ <rect x="875" y="401" clip-path="url(#clipPath2)"
fill="rgb(178,142,107)" width="179" height="1" stroke="none"/>
+ <rect x="1053" y="272" clip-path="url(#clipPath2)"
fill="rgb(178,142,107)" width="1" height="129" stroke="none"/>
+ </g>
+ <g font-size="13px" stroke-linecap="butt"
transform="matrix(1,0,0,1,435,129)" text-rendering="geometricPrecision"
font-family="sans-serif" shape-rendering="geometricPrecision"
stroke-miterlimit="1.45">
+ <text x="947.8738" xml:space="preserve" y="289.5684"
clip-path="url(#clipPath12)" stroke="none">Draw</text>
+ </g>
+ <g text-rendering="geometricPrecision"
shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,435,129)">
+ <line y2="297" fill="none" x1="875" clip-path="url(#clipPath12)"
x2="1053" y1="297"/>
+ <text stroke-linecap="butt" x="879" y="313.9121"
clip-path="url(#clipPath12)" font-family="sans-serif" stroke="none"
stroke-miterlimit="1.45" xml:space="preserve">xloc : int = 0</text>
+ <text stroke-linecap="butt" x="879" y="328.0449"
clip-path="url(#clipPath12)" font-family="sans-serif" stroke="none"
stroke-miterlimit="1.45" xml:space="preserve">yloc : int = 0</text>
+ <line y2="335" fill="none" x1="875" clip-path="url(#clipPath12)"
x2="1053" y1="335"/>
+ <text stroke-linecap="butt" x="879" y="352.1777"
clip-path="url(#clipPath12)" font-family="sans-serif" stroke="none"
stroke-miterlimit="1.45" xml:space="preserve">addText(Text : text)</text>
+ <text stroke-linecap="butt" x="879" y="366.3105"
clip-path="url(#clipPath12)" font-family="sans-serif" stroke="none"
stroke-miterlimit="1.45" xml:space="preserve">addRectangle(Rectangle
rect)</text>
+ <text stroke-linecap="butt" x="879" y="380.4434"
clip-path="url(#clipPath12)" font-family="sans-serif" stroke="none"
stroke-miterlimit="1.45" xml:space="preserve">addEllipse(Ellipse elip)</text>
+ <text stroke-linecap="butt" x="879" y="394.5762"
clip-path="url(#clipPath12)" font-family="sans-serif" stroke="none"
stroke-miterlimit="1.45" xml:space="preserve">addArc(Arc arc)</text>
+ <rect x="1" y="273" clip-path="url(#clipPath2)" fill="rgb(255,204,153)"
width="120" height="72" stroke="none"/>
+ <rect x="0" y="272" clip-path="url(#clipPath2)" fill="rgb(255,255,218)"
width="1" height="74" stroke="none"/>
+ <rect x="1" y="272" clip-path="url(#clipPath2)" fill="rgb(255,255,218)"
width="120" height="1" stroke="none"/>
+ <rect x="1" y="345" clip-path="url(#clipPath2)" fill="rgb(178,142,107)"
width="121" height="1" stroke="none"/>
+ <rect x="121" y="272" clip-path="url(#clipPath2)"
fill="rgb(178,142,107)" width="1" height="73" stroke="none"/>
+ </g>
+ <g font-size="13px" stroke-linecap="butt"
transform="matrix(1,0,0,1,435,129)" text-rendering="geometricPrecision"
font-family="sans-serif" shape-rendering="geometricPrecision"
stroke-miterlimit="1.45">
+ <text x="30.3313" xml:space="preserve" y="289.5684"
clip-path="url(#clipPath13)" stroke="none">Rectangle</text>
+ </g>
+ <g text-rendering="geometricPrecision"
shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,435,129)">
+ <line y2="297" fill="none" x1="1" clip-path="url(#clipPath13)" x2="121"
y1="297"/>
+ <text stroke-linecap="butt" x="5" y="313.9121"
clip-path="url(#clipPath13)" font-family="sans-serif" stroke="none"
stroke-miterlimit="1.45" xml:space="preserve">archeight : int = 0</text>
+ <text stroke-linecap="butt" x="5" y="328.0449"
clip-path="url(#clipPath13)" font-family="sans-serif" stroke="none"
stroke-miterlimit="1.45" xml:space="preserve">arcwidth : int = 0</text>
+ <line y2="335" fill="none" x1="1" clip-path="url(#clipPath13)" x2="121"
y1="335"/>
+ <rect x="-165" y="273" clip-path="url(#clipPath2)"
fill="rgb(255,204,153)" width="120" height="43" stroke="none"/>
+ <rect x="-166" y="272" clip-path="url(#clipPath2)"
fill="rgb(255,255,218)" width="1" height="45" stroke="none"/>
+ <rect x="-165" y="272" clip-path="url(#clipPath2)"
fill="rgb(255,255,218)" width="120" height="1" stroke="none"/>
+ <rect x="-165" y="316" clip-path="url(#clipPath2)"
fill="rgb(178,142,107)" width="121" height="1" stroke="none"/>
+ <rect x="-45" y="272" clip-path="url(#clipPath2)"
fill="rgb(178,142,107)" width="1" height="44" stroke="none"/>
+ </g>
+ <g font-size="13px" stroke-linecap="butt"
transform="matrix(1,0,0,1,435,129)" text-rendering="geometricPrecision"
font-family="sans-serif" shape-rendering="geometricPrecision"
stroke-miterlimit="1.45">
+ <text x="-125.3178" xml:space="preserve" y="289.5684"
clip-path="url(#clipPath14)" stroke="none">Ellipse</text>
+ </g>
+ <g text-rendering="geometricPrecision"
shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,435,129)">
+ <line y2="297" fill="none" x1="-165" clip-path="url(#clipPath14)"
x2="-45" y1="297"/>
+ <line y2="307" fill="none" x1="-165" clip-path="url(#clipPath14)"
x2="-45" y1="307"/>
+ <text stroke-linecap="butt" x="-161.1323" y="323.9121"
clip-path="url(#clipPath14)" font-family="sans-serif" stroke="none"
stroke-miterlimit="1.45" xml:space="preserve"> </text>
+ <rect x="-374" y="273" clip-path="url(#clipPath2)"
fill="rgb(255,204,153)" width="165" height="86" stroke="none"/>
+ <rect x="-375" y="272" clip-path="url(#clipPath2)"
fill="rgb(255,255,218)" width="1" height="88" stroke="none"/>
+ <rect x="-374" y="272" clip-path="url(#clipPath2)"
fill="rgb(255,255,218)" width="165" height="1" stroke="none"/>
+ <rect x="-374" y="359" clip-path="url(#clipPath2)"
fill="rgb(178,142,107)" width="166" height="1" stroke="none"/>
+ <rect x="-209" y="272" clip-path="url(#clipPath2)"
fill="rgb(178,142,107)" width="1" height="87" stroke="none"/>
+ </g>
+ <g font-size="13px" stroke-linecap="butt"
transform="matrix(1,0,0,1,435,129)" text-rendering="geometricPrecision"
font-family="sans-serif" shape-rendering="geometricPrecision"
stroke-miterlimit="1.45">
+ <text x="-302.3427" xml:space="preserve" y="289.5684"
clip-path="url(#clipPath15)" stroke="none">Arc</text>
+ </g>
+ <g text-rendering="geometricPrecision"
shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,435,129)">
+ <line y2="297" fill="none" x1="-374" clip-path="url(#clipPath15)"
x2="-209" y1="297"/>
+ <text stroke-linecap="butt" x="-370.369" y="313.9121"
clip-path="url(#clipPath15)" font-family="sans-serif" stroke="none"
stroke-miterlimit="1.45" xml:space="preserve">start : int = 0</text>
+ <text stroke-linecap="butt" x="-370.369" y="328.0449"
clip-path="url(#clipPath15)" font-family="sans-serif" stroke="none"
stroke-miterlimit="1.45" xml:space="preserve">stop : int = 0</text>
+ <text stroke-linecap="butt" x="-370.369" y="342.1777"
clip-path="url(#clipPath15)" font-family="sans-serif" stroke="none"
stroke-miterlimit="1.45" xml:space="preserve">type : enumerated = open</text>
+ <line y2="349" fill="none" x1="-374" clip-path="url(#clipPath15)"
x2="-209" y1="349"/>
+ <path fill="none" stroke-miterlimit="1.45" d="M330 25.9866 L330
-51.1105" clip-path="url(#clipPath2)" stroke-linecap="butt"/>
+ </g>
+ <g stroke-linecap="butt" transform="matrix(1,0,0,1,435,129)" fill="white"
text-rendering="geometricPrecision" shape-rendering="geometricPrecision"
stroke="white" stroke-miterlimit="1.45">
+ <path d="M330 -66.1105 L324 -50.1105 L336 -50.1105 Z" stroke="none"
clip-path="url(#clipPath2)"/>
+ <path fill="none" d="M330 -66.1105 L324 -50.1105 L336 -50.1105 Z"
clip-path="url(#clipPath2)" stroke="black"/>
+ <text fill="black" x="358.1016" xml:space="preserve" y="-15.5257"
clip-path="url(#clipPath2)" stroke="none"> </text>
+ <path fill="none" d="M144.0125 136.8961 L224.6586 111.3581"
clip-path="url(#clipPath2)" stroke="black"/>
+ <path d="M238.9587 106.8297 L221.8939 105.9399 L225.5166 117.3801 Z"
clip-path="url(#clipPath2)" stroke="none"/>
+ <path fill="none" d="M238.9587 106.8297 L221.8939 105.9399 L225.5166
117.3801 Z" clip-path="url(#clipPath2)" stroke="black"/>
+ <text fill="black" x="189.6807" xml:space="preserve" y="157.8367"
clip-path="url(#clipPath2)" stroke="none"> </text>
+ <path fill="none" d="M527.0471 119.4512 L435.6495 100.2246"
clip-path="url(#clipPath2)" stroke="black"/>
+ <path d="M420.9707 97.1368 L435.3929 106.302 L437.8632 94.559 Z"
clip-path="url(#clipPath2)" stroke="none"/>
+ <path fill="none" d="M420.9707 97.1368 L435.3929 106.302 L437.8632
94.559 Z" clip-path="url(#clipPath2)" stroke="black"/>
+ <text fill="black" x="479.6386" xml:space="preserve" y="83.7562"
clip-path="url(#clipPath2)" stroke="none"> </text>
+ <path fill="none" d="M297.296 477.9833 L103.3633 220.9684"
clip-path="url(#clipPath2)" stroke="black"/>
+ <text fill="black" x="234.5212" xml:space="preserve" y="352.0335"
clip-path="url(#clipPath2)" stroke="none"> </text>
+ <path fill="none" stroke-dasharray="6,2" d="M328.5086 635.8717 L328.8219
562.0092" clip-path="url(#clipPath2)" stroke="gray"/>
+ <text fill="black" x="356.7671" xml:space="preserve" y="603.4684"
clip-path="url(#clipPath2)" stroke="none"> </text>
+ <path fill="none" stroke-dasharray="6,2" d="M562.7084 675.8958 L436.4021
674.7366" clip-path="url(#clipPath2)" stroke="gray"/>
+ <text fill="black" x="497.6459" xml:space="preserve" y="649.85"
clip-path="url(#clipPath2)" stroke="none"> </text>
+ <path fill="none" d="M329.2297 477.9583 L329.6448 402.0074"
clip-path="url(#clipPath2)" stroke="black"/>
+ <text fill="black" x="357.5392" xml:space="preserve" y="444.5352"
clip-path="url(#clipPath2)" stroke="none"> </text>
+ <path fill="none" d="M330 272.0287 L330 144.9652"
clip-path="url(#clipPath2)" stroke="black"/>
+ <path d="M330 129.9652 L324 145.9652 L336 145.9652 Z"
clip-path="url(#clipPath2)" stroke="none"/>
+ <path fill="none" d="M330 129.9652 L324 145.9652 L336 145.9652 Z"
clip-path="url(#clipPath2)" stroke="black"/>
+ <text fill="black" x="358.1016" xml:space="preserve" y="205.5352"
clip-path="url(#clipPath2)" stroke="none"> </text>
+ <path fill="none" d="M363.7992 477.991 L485.5677 330.9942"
clip-path="url(#clipPath2)" stroke="black"/>
+ <text fill="black" x="459.6346" xml:space="preserve" y="411.5709"
clip-path="url(#clipPath2)" stroke="none"> </text>
+ <path fill="none" d="M547.2986 272.0164 L669.6319 175.3148"
clip-path="url(#clipPath2)" stroke="black"/>
+ <path d="M681.3994 166.0128 L665.1266 171.2279 L672.5682 180.6419 Z"
clip-path="url(#clipPath2)" stroke="none"/>
+ <path fill="none" d="M681.3994 166.0128 L665.1266 171.2279 L672.5682
180.6419 Z" clip-path="url(#clipPath2)" stroke="black"/>
+ <text fill="black" x="638.0605" xml:space="preserve" y="241.5466"
clip-path="url(#clipPath2)" stroke="none"> </text>
+ <path fill="none" d="M409.4958 478.0022 L635.665 360.0009"
clip-path="url(#clipPath2)" stroke="black"/>
+ <text fill="black" x="553.3226" xml:space="preserve" y="440.3445"
clip-path="url(#clipPath2)" stroke="none"> </text>
+ <path fill="none" d="M720 271.9767 L720 180.9874"
clip-path="url(#clipPath2)" stroke="black"/>
+ <path d="M720 165.9874 L714 181.9874 L726 181.9874 Z"
clip-path="url(#clipPath2)" stroke="none"/>
+ <path fill="none" d="M720 165.9874 L714 181.9874 L726 181.9874 Z"
clip-path="url(#clipPath2)" stroke="black"/>
+ <text fill="black" x="748.1016" xml:space="preserve" y="223.5352"
clip-path="url(#clipPath2)" stroke="none"> </text>
+ <path fill="none" d="M885.2778 271.9897 L768.5073 175.5583"
clip-path="url(#clipPath2)" stroke="black"/>
+ <path d="M756.9413 166.0069 L765.4578 180.8214 L773.0989 171.5687 Z"
clip-path="url(#clipPath2)" stroke="none"/>
+ <path fill="none" d="M756.9413 166.0069 L765.4578 180.8214 L773.0989
171.5687 Z" clip-path="url(#clipPath2)" stroke="black"/>
+ <text fill="black" x="860.838" xml:space="preserve" y="219.0024"
clip-path="url(#clipPath2)" stroke="none"> </text>
+ <path fill="none" d="M60.7458 272.0211 L60.4984 236.019"
clip-path="url(#clipPath2)" stroke="black"/>
+ <path d="M60.3953 221.0194 L54.5054 237.0602 L66.5051 236.9778 Z"
clip-path="url(#clipPath2)" stroke="none"/>
+ <path fill="none" d="M60.3953 221.0194 L54.5054 237.0602 L66.5051
236.9778 Z" clip-path="url(#clipPath2)" stroke="black"/>
+ <text fill="black" x="88.6727" xml:space="preserve" y="251.0352"
clip-path="url(#clipPath2)" stroke="none"> </text>
+ <path fill="none" d="M-76.7703 272.0004 L-24.2436 230.3307"
clip-path="url(#clipPath2)" stroke="black"/>
+ <path d="M-12.4923 221.0084 L-28.756 226.2517 L-21.2981 235.6528 Z"
clip-path="url(#clipPath2)" stroke="none"/>
+ <path fill="none" d="M-12.4923 221.0084 L-28.756 226.2517 L-21.2981
235.6528 Z" clip-path="url(#clipPath2)" stroke="black"/>
+ <text fill="black" x="-16.4339" xml:space="preserve" y="265.4579"
clip-path="url(#clipPath2)" stroke="none"> </text>
+ <path fill="none" stroke-dasharray="6,2" d="M-289.604 469.5886
L-291.2204 359.9842" clip-path="url(#clipPath2)" stroke="gray"/>
+ <text fill="black" x="-262.3073" xml:space="preserve" y="419.3316"
clip-path="url(#clipPath2)" stroke="none"> </text>
+ <path fill="none" d="M-278.4248 271.9972 L-38.2704 195.005"
clip-path="url(#clipPath2)" stroke="black"/>
+ <path d="M-23.9865 190.4256 L-41.0544 189.5967 L-37.391 201.0238 Z"
clip-path="url(#clipPath2)" stroke="none"/>
+ <path fill="none" d="M-23.9865 190.4256 L-41.0544 189.5967 L-37.391
201.0238 Z" clip-path="url(#clipPath2)" stroke="black"/>
+ <text fill="black" x="-118.083" xml:space="preserve" y="256.023"
clip-path="url(#clipPath2)" stroke="none"> </text>
+ </g>
+ </g>
+</svg>
+<h3>Parameters</h3>
+<table class="attr">
+ <tr>
+ <th scope="col">Attribute</th>
+ <th scope="col">Description</th>
+ <th scope="col">Required</th>
+ </tr>
+ <tr>
+ <td>failonerror</td>
+ <td>Boolean value. If <q>false</q>, note errors to the output but keep
going.</td>
+ <td>No; defaults to <q>true</q></td>
+ </tr>
+ <tr>
+ <td>srcdir</td>
+ <td>Directory containing the images.</td>
+ <td>Yes, unless nested fileset is used</td>
+ </tr>
+ <tr>
+ <td>format</td>
+ <td>Image format.<br/>Valid (case insensitive)
+ are: <q>bmp</q>, <q>gif</q>, <q>jpeg</q>, <q>jpg</q>, <q>png</q>,
<q>tif</q>, <q>tiff</q>, <q>wbmp</q>
+ (Java 8 VM lacks support for TIFF, which can be provided
+ by <a href="../install.html#librarydependencies">external
libraries</a>).</td>
+ <td>No; defaults to the format of the (first) original file</td>
+ </tr>
+ <tr>
+ <td>overwrite</td>
+ <td>Boolean value. Sets whether or not to overwrite a file if there is
naming conflict.</td>
+ <td>No; defaults to <q>false</q></td>
+ </tr>
+ <tr>
+ <td>gc</td>
+ <td>Boolean value. Enables garbage collection after each image
processed.</td>
+ <td>No; defaults to <q>false</q></td>
+ </tr>
+ <tr>
+ <td>destdir</td>
+ <td>Directory where the result images are stored.</td>
+ <td>No; defaults to value of <var>srcdir</var></td>
+ </tr>
+ <!-- attributes inherited from MatchingTask -->
+ <tr>
+ <td>includes</td>
+ <td>comma- or space-separated list of patterns of files that must be
included.</td>
+ <td>No; defaults to all (<q>**</q>)</td>
+ </tr>
+ <tr>
+ <td>includesfile</td>
+ <td>name of a file. Each line of this file is taken to be an include
pattern</td>
+ <td>No</td>
+ </tr>
+ <tr>
+ <td>excludes</td>
+ <td>comma- or space-separated list of patterns of files that must be
excluded.</td>
+ <td>No; defaults to default excludes or none if <var>defaultexcludes</var>
is <q>no</q></td>
+ </tr>
+ <tr>
+ <td>excludesfile</td>
+ <td>name of a file. Each line of this file is taken to be an exclude
pattern</td>
+ <td>No</td>
+ </tr>
+ <tr>
+ <td>defaultexcludes</td>
+ <td>indicates whether default excludes should be used or not
(<q>yes|no</q>).</td>
+ <td>No; defaults to <q>yes</q></td>
+ </tr>
+ <tr>
+ <td>caseSensitive</td>
+ <td>Boolean value. Sets case sensitivity of the file system.</td>
+ <td>No; defaults to <q>false</q></td>
+ </tr>
+ <tr>
+ <td>followSymlinks</td>
+ <td>Boolean value. Sets whether or not symbolic links should be
followed.</td>
+ <td>No; defaults to <q>true</q></td>
+ </tr>
+</table>
+
+<h3>Parameters specified as nested elements</h3>
+<p>This task forms an implicit <a href="../Types/fileset.html">FileSet</a> and
supports most
+attributes of <code><fileset></code> as well as the
+nested <code><include></code>, <code><exclude></code>
+and <code><patternset></code> elements.</p>
+
+<p>The following ImageOperation objects can be specified as nested
+elements: <code>Rotate</code>, <code>Scale</code> and <code>Draw</code>.</p>
+
+<h4>Rotate</h4>
+<p>Adds a Rotate ImageOperation to chain.</p>
+<h5>Parameters</h5>
+<table class="attr">
+ <tr>
+ <th scope="col">Attribute</th>
+ <th scope="col">Description</th>
+ <th scope="col">Required</th>
+ </tr>
+ <tr>
+ <td>angle</td>
+ <td>Float value. Sets the angle of rotation in degrees.</td>
+ <td>No; defaults to <q>0.0F</q></td>
+ </tr>
+</table>
+
+<h4>Scale</h4>
+<p>Adds a Scale ImageOperation to chain.</p>
+<h5>Parameters</h5>
+<table class="attr">
+ <tr>
+ <th scope="col">Attribute</th>
+ <th scope="col">Description</th>
+ <th scope="col">Required</th>
+ </tr>
+ <tr>
+ <td>proportions</td>
+ <td>Sets which dimension to control proportions from. Valid values are:
+ <ul>
+ <li><q>ignore</q>—treat the dimensions independently.</li>
+ <li><q>height</q>—keep proportions based on the width.</li>
+ <li><q>width</q>—keep proportions based on the height.</li>
+ <li><q>cover</q>—keep proportions and fit in the supplied
dimensions.</li>
+ <li><q>fit</q>—keep proportions and cover the supplied
dimensions.</li>
+ </ul>
+ </td>
+ <td>No; defaults to <q>ignore</q></td>
+ </tr>
+ <tr>
+ <td>width</td>
+ <td>Sets the width of the image, either as an integer (pixels) or a %.</td>
+ <td>No; defaults to <q>100%</q></td>
+ </tr>
+ <tr>
+ <td>height</td>
+ <td>Sets the height of the image, either as an integer (pixels) or a
%.</td>
+ <td>No; defaults to <q>100%</q></td>
+ </tr>
+</table>
+
+<h4 id="draw">Draw</h4>
+<p>Adds a Draw ImageOperation to chain. DrawOperation DataType objects can be
nested inside the Draw
+object.</p>
+<h5>Parameters</h5>
+<table class="attr">
+ <tr>
+ <th scope="col">Attribute</th>
+ <th scope="col">Description</th>
+ <th scope="col">Required</th>
+ </tr>
+ <tr>
+ <td>xloc</td>
+ <td>X-Position where to draw nested image elements.</td>
+ <td>No; defaults to <q>0</q></td>
+ </tr>
+ <tr>
+ <td>yloc</td>
+ <td>Y-Position where to draw nested image elements.</td>
+ <td>No; defaults to <q>0</q></td>
+ </tr>
+</table>
+<h5>Nested elements</h5>
+<p>Both Text and BasicShape objects can be nested. Currently supported
BasicShape objects are Arc,
+Ellipse and Rectangle.</p>
+<h6>Common parameters of BasicShape objects</h6>
+<table class="attr">
+ <tr>
+ <th scope="col">Attribute</th>
+ <th scope="col">Description</th>
+ <th scope="col">Required</th>
+ </tr>
+ <tr>
+ <td>height</td>
+ <td>Height of a BasicShape.</td>
+ <td>No; defaults to <q>0</q></td>
+ </tr>
+ <tr>
+ <td>width</td>
+ <td>Width of a BasicShape.</td>
+ <td>No; defaults to <q>0</q></td>
+ </tr>
+ <tr>
+ <td>strokewidth</td>
+ <td>Stroke width of a BasicShape.</td>
+ <td>No; defaults to <q>0</q></td>
+ </tr>
+ <tr>
+ <td>color</td>
+ <td>Color of a BasicShape.</td>
+ <td>No; defaults to <q>black</q></td>
+ </tr>
+ <tr>
+ <td>fill</td>
+ <td>Fill of a BasicShape.</td>
+ <td>No; defaults to <q>transparent</q></td>
+ </tr>
+</table>
+<h6>Parameters specific to Arc objects</h6>
+<table class="attr">
+ <tr>
+ <th scope="col">Attribute</th>
+ <th scope="col">Description</th>
+ <th scope="col">Required</th>
+ </tr>
+ <tr>
+ <td>start</td>
+ <td>Start angle of an arc in degrees.</td>
+ <td>No; defaults to <q>0</q></td>
+ </tr>
+ <tr>
+ <td>stop</td>
+ <td>Angle extent of an arc in degrees.</td>
+ <td>No; defaults to <q>0</q></td>
+ </tr>
+ <tr>
+ <td>type</td>
+ <td>One of <q>chord</q>, <q>open</q>, <q>pie</q>.</td>
+ <td>No; defaults to <q>open</q></td>
+ </tr>
+</table>
+<h6>Parameters specific to Ellipse objects</h6>
+<p>None.</p>
+<h6>Parameters specific to Rectangle objects</h6>
+<table class="attr">
+ <tr>
+ <th scope="col">Attribute</th>
+ <th scope="col">Description</th>
+ <th scope="col">Required</th>
+ </tr>
+ <tr>
+ <td>archeight</td>
+ <td>Vertical diameter of the arc at the corners of the rectangle.</td>
+ <td>No; defaults to <q>0</q></td>
+ </tr>
+ <tr>
+ <td>arcwidth</td>
+ <td>Horisontal diameter of the arc at the corners of the rectangle.</td>
+ <td>No; defaults to <q>0</q></td>
+ </tr>
+</table>
+<h6>Parameters of Text</h6>
+<table class="attr">
+ <tr>
+ <th scope="col">Attribute</th>
+ <th scope="col">Description</th>
+ <th scope="col">Required</th>
+ </tr>
+ <tr>
+ <td>string</td>
+ <td>The text string.</td>
+ <td>No; defaults to <q></q></td>
+ </tr>
+ <tr>
+ <td>font</td>
+ <td>The font to set the text in.</td>
+ <td>No; defaults to <q>Arial</q></td>
+ </tr>
+ <tr>
+ <td>point</td>
+ <td>Size of the font in points.</td>
+ <td>No; defaults to <q>10</q></td>
+ </tr>
+ <tr>
+ <td>bold</td>
+ <td>Whether the font is bold.</td>
+ <td>No; defaults to <q>false</q></td>
+ </tr>
+ <tr>
+ <td>color</td>
+ <td>Color of the text.</td>
+ <td>No; defaults to <q>black</q></td>
+ </tr>
+ <tr>
+ <td>italic</td>
+ <td>Whether the font is italic.</td>
+ <td>No; defaults to <q>false</q></td>
+ </tr>
+</table>
+<h4>mapper</h4>
+<p>You can define filename transformations by using a
+nested <a href="../Types/mapper.html">mapper</a> element. The default mapper
used
+by <code><image></code> is the <a
href="../Types/mapper.html#identity-mapper">identity
+mapper</a>.</p>
+
+<p>You can also use a <code>filenamemapper</code> type in place of the
<code>mapper</code>
+element.</p>
+
+<h3>Examples</h3>
+
+<p>Create thumbnails of my images and make sure they all fit within the
160×160 pixel size
+whether the image is portrait or landscape.</p>
+<pre>
+<image destdir="samples/low" overwrite="yes">
+ <fileset dir="samples/full">
+ <include name="**/*.jpg"/>
+ </fileset>
+ <scale width="160" height="160" proportions="fit"/>
+</image></pre>
+
+<p>Create a thumbnail for all PNG files in <samp>src</samp> of the size of 40
pixels keeping the
+proportions and store the <samp>src</samp>.</p>
+<pre>
+<image srcdir="src" includes="*.png">
+ <scale proportions="width" width="40"/>
+</image></pre>
+
+<p>Same as above but store the result in <samp>dest</samp>.</p>
+<pre>
+<image srcdir="src" destdir="dest" includes="*.png">
+ <scale proportions="width" width="40"/>
+</image></pre>
+
+<p>Same as above but store the result to files with original names prefixed
+by <samp>scaled-</samp>.</p>
+<pre>
+<image srcdir="src" destdir="dest" includes="*.png">
+ <scale proportions="width" width="40"/>
+ <globmapper from="*" to="scaled-*"/>
+</image></pre>
+
+</body>
+</html>
Propchange: ant/site/ant/production/manual/Tasks/imageio.html
------------------------------------------------------------------------------
svn:eol-style = native
Added: ant/site/ant/production/manual/Tasks/jmod.html
URL:
http://svn.apache.org/viewvc/ant/site/ant/production/manual/Tasks/jmod.html?rev=1859109&view=auto
==============================================================================
--- ant/site/ant/production/manual/Tasks/jmod.html (added)
+++ ant/site/ant/production/manual/Tasks/jmod.html Sat May 11 11:38:01 2019
@@ -0,0 +1,332 @@
+<!DOCTYPE html>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<html lang="en">
+
+<head>
+<link rel="stylesheet" type="text/css" href="../stylesheets/style.css">
+<title>Jmod Task</title>
+</head>
+
+<body>
+
+<h2 id="jmod">Jmod</h2>
+<p><em>Since Apache Ant 1.10.6</em></p>
+
+<h3>Description</h3>
+<p>Creates a linkable jmod file from a modular jar file, and optionally from
+other application files such as native libraries and license documents.
+Equivalent to the JDK's
+<a href="https://docs.oracle.com/en/java/javase/11/tools/jmod.html">jmod</a>
+tool.</p>
+<p>Requires Java 9 or later.</p>
+
+<h3>Parameters</h3>
+<table class="attr">
+ <tr>
+ <th scope="col">Attribute</th>
+ <th scope="col">Description</th>
+ <th scope="col">Required</th>
+ </tr>
+ <tr>
+ <td>destFile</td>
+ <td>jmod file to create.</td>
+ <td>Yes</td>
+ </tr>
+ <tr>
+ <td>classpath</td>
+ <td>Files to be placed in the jmod file. Usually a single module.</td>
+ <td rowspan="2">One of these is required, unless a nested
+ <code><classpath></code> is present.</td>
+ </tr>
+ <tr>
+ <td>classpathref</td>
+ <td class="left">Files to be placed in the jmod file, given as a
+ <a href="../using.html#references">reference</a>
+ to a path defined elsewhere.</td>
+ </tr>
+ <tr>
+ <td>modulepath</td>
+ <td>Locations of modules on which classpath modules depend.</td>
+ <td>No</td>
+ </tr>
+ <tr>
+ <td>modulepathref</td>
+ <td>Locations of modules on which classpath modules depend,
+ given as a <a href="../using.html#references">reference</a>
+ to a path defined elsewhere.</td>
+ <td>No</td>
+ </tr>
+ <tr>
+ <td>commandpath</td>
+ <td>Directories containing native commands to include in jmod.</td>
+ <td>No</td>
+ </tr>
+ <tr>
+ <td>commandpathref</td>
+ <td>Directories containing native commands to include in jmod,
+ given as a <a href="../using.html#references">reference</a>
+ to a path defined elsewhere.</td>
+ <td>No</td>
+ </tr>
+ <tr>
+ <td>headerpath</td>
+ <td>Directories containing header files to include in jmod.</td>
+ <td>No</td>
+ </tr>
+ <tr>
+ <td>headerpathref</td>
+ <td>Directories containing header files to include in jmod,
+ given as a <a href="../using.html#references">reference</a>
+ to a path defined elsewhere.</td>
+ <td>No</td>
+ </tr>
+ <tr>
+ <td>configpath</td>
+ <td>Directories containing user-editable configuration files
+ to include in jmod.</td>
+ <td>No</td>
+ </tr>
+ <tr>
+ <td>configpathref</td>
+ <td>Directories containing user-editable configuration files
+ to include in jmod,
+ given as a <a href="../using.html#references">reference</a>
+ to a path defined elsewhere.</td>
+ <td>No</td>
+ </tr>
+ <tr>
+ <td>legalpath</td>
+ <td>Directories containing legal licenses and notices to include in
jmod.</td>
+ <td>No</td>
+ </tr>
+ <tr>
+ <td>legalpathref</td>
+ <td>Directories containing legal licenses and notices to include in jmod,
+ given as a <a href="../using.html#references">reference</a>
+ to a path defined elsewhere.</td>
+ <td>No</td>
+ </tr>
+ <tr>
+ <td>nativelibpath</td>
+ <td>Directories containing native libraries to include in jmod.</td>
+ <td>No</td>
+ </tr>
+ <tr>
+ <td>nativelibpathref</td>
+ <td>Directories containing native libraries to include in jmod,
+ given as a <a href="../using.html#references">reference</a>
+ to a path defined elsewhere.</td>
+ <td>No</td>
+ </tr>
+ <tr>
+ <td>manpath</td>
+ <td>Directories containing man pages to include in jmod.</td>
+ <td>No</td>
+ </tr>
+ <tr>
+ <td>manpathref</td>
+ <td>Directories containing man pages to include in jmod,
+ given as a <a href="../using.html#references">reference</a>
+ to a path defined elsewhere.</td>
+ <td>No</td>
+ </tr>
+ <tr>
+ <td>version</td>
+ <td><a
href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/module/ModuleDescriptor.Version.html">Module
version</a> of jmod.</td>
+ <td>No</td>
+ </tr>
+ <tr>
+ <td>mainclass</td>
+ <td>Class that acts as executable entry point of module.</td>
+ <td>No</td>
+ </tr>
+ <tr>
+ <td>platform</td>
+ <td>The target platform for the jmod. Typically takes the form
+ <var>OS</var><code>-</code><var>architecture</var>. A particular JDK's
+ platform can be seen by running a command like
+ <samp>jmod describe $JDK_HOME/jmods/java.base.jmod | grep -i
platform</samp></td>
+ <td>No</td>
+ </tr>
+ <tr>
+ <td>hashModulesPattern</td>
+ <td>Regular expression for names of modules in the module path
+ which depend on the jmod being created, and which should have
+ hashes generated for them and included in the new jmod.</td>
+ <td>No</td>
+ </tr>
+ <tr>
+ <td>resolveByDefault</td>
+ <td>Boolean indicating whether the jmod should be one of
+ the default resolved modules when it is in a module path
+ searched by tools and applications.</td>
+ <td>No. Default is true.</td>
+ </tr>
+ <tr>
+ <td>moduleWarnings</td>
+ <td>Whether to emit warnings when resolving modules which are
+ not recommended for use. Comma-separated list of one of more of
+ the following:
+ <dl>
+ <dt><code>deprecated</code></dt>
+ <dd>Warn if module is deprecated</dd>
+ <dt><code>leaving</code></dt>
+ <dd>Warn if module is deprecated for removal</dd>
+ <dt><code>incubating</code></dt>
+ <dd>Warn if module is an incubating (not yet official) module</dd>
+ </dl>
+ </td>
+ <td>No, default is no warnings.</td>
+ </tr>
+</table>
+
+<h3>Parameters specified as nested elements</h3>
+<h4>classpath, modulepath, commandpath, headerpath, configpath, legalpath,
nativelibpath, manpath</h4>
+<p>The
+ <code>classpath</code>,
+ <code>modulepath</code>,
+ <code>commandpath</code>,
+ <code>headerpath</code>,
+ <code>configpath</code>,
+ <code>legalpath</code>,
+ <code>nativelibpath</code>, and
+ <code>manpath</code>
+ attributes are <a href="../using.html#path">path-like structures</a>
+ and can also be set via nested
+ <code><classpath></code>,
+ <code><modulepath></code>,
+ <code><commandpath></code>,
+ <code><headerpath></code>,
+ <code><configpath></code>,
+ <code><legalpath></code>,
+ <code><nativelibpath></code>, and
+ <code><manpath></code>
+ elements, respectively.</p>
+
+<h4>version</h4>
+<p>Fine-grained alternative to the <code>version</code> attribute. This
+nested element has these attributes:</p>
+<table class="attr">
+ <tr>
+ <th scope="col">Attribute</th>
+ <th scope="col">Description</th>
+ <th scope="col">Required</th>
+ </tr>
+ <tr>
+ <td>number</td>
+ <td>Primary version number. Can be any text, as long as it does not
+ contain a hyphen (<code>-</code>) or plus (<code>+</code>).</td>
+ <td>Yes</td>
+ </tr>
+ <tr>
+ <td>preRelease</td>
+ <td>Pre-release version. Can be any text, as long as it does not
+ contain a plus (<code>+</code>).</td>
+ <td>No</td>
+ </tr>
+ <tr>
+ <td>build</td>
+ <td>Build version. Can be any text.
+ <td>No</td>
+ </tr>
+</table>
+
+<p>See the <a
href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/module/ModuleDescriptor.Version.html">ModuleDescriptor.Version
documentation</a>
+for a full description of the meaning of each version component.</p>
+
+<h4>moduleWarning</h4>
+<p>Like the <code>moduleWarnings</code> attribute, but only specifies a single
+basis for emitting warnings. This child element may appear multiple times,
+to specify multiple conditions under which warnings should be emitted by the
+jmod tool.</p>
+
+<p>Attributes:</p>
+<table class="attr">
+ <tr>
+ <th scope="col">Attribute</th>
+ <th scope="col">Description</th>
+ <th scope="col">Required</th>
+ </tr>
+ <tr>
+ <td>reason</td>
+ <td>Condition which will cause jmod tool to emit warnings. One of:
+ <dl>
+ <dt><code>deprecated</code></dt>
+ <dd>Warn if module is deprecated</dd>
+ <dt><code>leaving</code></dt>
+ <dd>Warn if module is deprecated for removal</dd>
+ <dt><code>incubating</code></dt>
+ <dd>Warn if module is an incubating (not yet official) module</dd>
+ </dl>
+ <td>Yes</td>
+ </tr>
+</table>
+
+<h3>Examples</h3>
+
+<h4>Basic jmod</h4>
+<p>Create a jmod from a single modular jar file:</p>
+<pre>
+<jmod destfile="MyApp.jmod" classpath="build/myapp.jar"/>
+</pre>
+
+<h4>With dependencies</h4>
+<p>Create a jmod from a modular jar file which depends on another module:</p>
+<pre>
+<jmod destfile="MyApp.jmod" classpath="build/myapp.jar">
+ <modulepath>
+ <pathelement location="libs/thirdpartyutils.jar"/>
+ </modulepath>
+</jmod>
+</pre>
+
+<h4>With version</h4>
+<p>Create a jmod with a module version:</p>
+<pre>
+<jmod destfile="MyApp.jmod" classpath="build/myapp.jar"
+ version="1.2.1-ea+29"/>
+</pre>
+
+<p>Create a versioned jmod from module version components:</p>
+<pre>
+<property name="version" value="1.2.1"/>
+<buildnumber/>
+<loadfile property="buildnum" srcFile="build.number"/>
+<jmod destfile="MyApp.jmod" classpath="build/myapp.jar">
+ <version number="${version}" build="${buildnum}"/>
+</jmod>
+</pre>
+
+<h4>Main class</h4>
+<p>Create a jmod with a main class:</p>
+<pre>
+<jmod destfile="MyApp.jmod" classpath="build/myapp.jar"
+ mainclass="com.example.myapp.MainWindow"/>
+</pre>
+
+<h4>Target platform</h4>
+<p>Create a jmod for a specific platform, possibly different from the
+current platform:</p>
+
+<pre>
+<jmod destfile="MyApp.jmod" classpath="build/myapp.jar"
+ platform="windows-amd64"/>
+</pre>
+
+</body>
+</html>
Propchange: ant/site/ant/production/manual/Tasks/jmod.html
------------------------------------------------------------------------------
svn:eol-style = native
Added: ant/site/ant/production/manual/Tasks/link.html
URL:
http://svn.apache.org/viewvc/ant/site/ant/production/manual/Tasks/link.html?rev=1859109&view=auto
==============================================================================
--- ant/site/ant/production/manual/Tasks/link.html (added)
+++ ant/site/ant/production/manual/Tasks/link.html Sat May 11 11:38:01 2019
@@ -0,0 +1,580 @@
+<!DOCTYPE html>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<html lang="en">
+
+<head>
+<link rel="stylesheet" type="text/css" href="../stylesheets/style.css">
+<title>Link Task</title>
+</head>
+
+<body>
+
+<h2 id="link">Link</h2>
+<p><em>Since Apache Ant 1.10.6</em></p>
+
+<h3>Description</h3>
+<p>Assembles jmod files into an executable image. Equivalent to the JDK's
+<a href="https://docs.oracle.com/en/java/javase/11/tools/jlink.html">jlink</a>
+tool.
+</p>
+<p>Requires Java 9 or later.</p>
+
+<h3>Parameters</h3>
+<table class="attr">
+ <tr>
+ <th scope="col">Attribute</th>
+ <th scope="col">Description</th>
+ <th scope="col">Required</th>
+ </tr>
+ <tr>
+ <td>destDir</td>
+ <td>Root directory of created image.</td>
+ <td>Yes</td>
+ </tr>
+ <tr>
+ <td>modulepath</td>
+ <td>Path-like sequence of jmod files to link in order to create image.</td>
+ <td rowspan="2">One of these is required, unless a nested
+ <code><modulepath></code> is present.</td>
+ </tr>
+ <tr>
+ <td>modulepathref</td>
+ <td class="left">Path-like sequence of jmod files to link in order to
+ create image, given as a <a
href="../using.html#references">reference</a>
+ to a path defined elsewhere.</td>
+ </tr>
+ <tr>
+ <td>modules</td>
+ <td>Comma-separated list of modules to place in the linked image.</td>
+ <td>Yes, unless one or more nested <code><module></code> elements
+ are present.</td>
+ </tr>
+ <tr>
+ <td>observableModules</td>
+ <td>Comma-separated list of explicit modules that comprise
+ "universe" visible to link tool while linking.</td>
+ <td>No</td>
+ </tr>
+ <tr>
+ <td>launchers</td>
+ <td>Comma-separated list of commands, each of the form
+ <var>name</var><code>=</code><var>module</var> or
+
<var>name</var><code>=</code><var>module</var><code>/</code><var>mainclass</var></td>
+ <td>No</td>
+ </tr>
+ <tr>
+ <td>locales</td>
+ <td>Comma-separated list of extra locales, or wildcard patterns matching
+ multiple locale names, to include.
+ Requires <code>jdk.localedata</code> module.</td>
+ <td>No</td>
+ </tr>
+ <tr>
+ <td>excludeResources</td>
+ <td>Comma-separated list of patterns specifying resources to exclude
+ from source jmods. Each is either a
+ <a
href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/nio/file/FileSystem.html#getPathMatcher%28java.lang.String%29">standard
PathMatcher pattern</a>
+ or <code>@</code><var>filename</var>, indicating a text file with
+ one resource name per line.</td>
+ <td>No</td>
+ </tr>
+ <tr>
+ <td>excludeFiles</td>
+ <td>Comma-separated list of patterns specifying files to exclude
+ from linked image. Each is either a
+ <a
href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/nio/file/FileSystem.html#getPathMatcher%28java.lang.String%29">standard
PathMatcher pattern</a>
+ or <code>@</code><var>filename</var>, indicating a text file with
+ one file name per line.</td>
+ <td>No</td>
+ </tr>
+ <tr>
+ <td>resourceOrder</td>
+ <td>Comma-separated list of patterns specifying resource search order.
+ Each is either a
+ <a
href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/nio/file/FileSystem.html#getPathMatcher%28java.lang.String%29">standard
PathMatcher pattern</a>
+ or <code>@</code><var>filename</var>, indicating a text file with
+ one resource name per line.</td>
+ <td>No</td>
+ </tr>
+ <tr>
+ <td>bindServices</td>
+ <td>Boolean, whether to include in linked image any service providers
+ found in module path corresponding to service provider interfaces
+ used by explicitly linked modules.</td>
+ <td>No, default is false</td>
+ </tr>
+ <tr>
+ <td>ignoreSigning</td>
+ <td>Boolean, whether to allow signed jar files.
+ (Note: As of Java 11, this is ignored and is always treated as
true.)</td>
+ <td>No, default is false</td>
+ </tr>
+ <tr>
+ <td>includeHeaders</td>
+ <td>Boolean, whether to include header files in linked image.</td>
+ <td>No, default is true</td>
+ </tr>
+ <tr>
+ <td>includeManPages</td>
+ <td>Boolean, whether to include man pages in linked image.</td>
+ <td>No, default is true</td>
+ </tr>
+ <tr>
+ <td>includeNativeCommands</td>
+ <td>Boolean, whether to include native executables in linked image.</td>
+ <td>No, default is true</td>
+ </tr>
+ <tr>
+ <td>debug</td>
+ <td>Boolean, whether to include debug information.</td>
+ <td>No, default is true</td>
+ </tr>
+ <tr>
+ <td>verboseLevel</td>
+ <td>If set, the linker will produce verbose output, which will be logged at
+ the specified Ant log level (<code>DEBUG</code>, <code>VERBOSE</code>,
+ <code>INFO</code>, <code>WARN</code>, or <code>ERR</code>).</td>
+ <td>No, default is no verbose output</td>
+ </tr>
+ <tr>
+ <td>compress</td>
+ <td>Compression level of linked image. One of:
+ <dl>
+ <dt><code>0</code> or
+ <code>none</code></dt>
+ <dd>no compression (default)</dd>
+ <dt><code>1</code> or
+ <code>strings</code></dt>
+ <dd>constant string sharing</dd>
+ <dt><code>2</code> or
+ <code>zip</code></dt>
+ <dd>zip compression</dd>
+ </dl>
+ </td>
+ <td>No, default is no compression</td>
+ </tr>
+ <tr>
+ <td>endianness</td>
+ <td>Byte order of linked image, must be <code>little</code> or
<code>big</code>
+ <td>No, default is native byte order</td>
+ </tr>
+ <tr>
+ <td>checkDuplicateLegal</td>
+ <td>Boolean. When merging legal notices from different modules
+ because they have the same name, verify that their contents
+ are identical.</td>
+ <td>No, default is false, which means any license files
+ with the same name are assumed to have the same content, and no
+ checking is done.</td>
+ </tr>
+ <tr>
+ <td>vmType</td>
+ <td>Hotspot VM in image. One of:
+ <ul>
+ <li><code>client</code>
+ <li><code>server</code>
+ <li><code>minimal</code>
+ <li><code>all</code>
+ </ul>
+ </td>
+ <td>No, default is <code>all</code></td>
+ </tr>
+</table>
+
+<h3>Parameters specified as nested elements</h3>
+
+<p><code><link></code> can have the following nested elements:</p>
+<ul>
+<li><a href="#nested-modulepath">modulepath</a></li>
+<li><a href="#nested-module">module</a></li>
+<li><a href="#nested-observableModule">observableModule</a></li>
+<li><a href="#nested-launcher">launcher</a></li>
+<li><a href="#nested-locale">locale</a></li>
+<li><a href="#nested-resourceOrder">resourceOrder</a></li>
+<li><a href="#nested-excludeResources">excludeResources</a></li>
+<li><a href="#nested-excludeFiles">excludeFiles</a></li>
+<li><a href="#nested-compress">compress</a></li>
+<li><a href="#nested-releaseInfo">releaseInfo</a></li>
+</ul>
+
+<h4 id="nested-modulepath">modulepath</h4>
+<p><a href="../using.html#path">Path-like structure</a> pointing to
+ jmod files to link into image.</p>
+
+<h4 id="nested-module">module</h4>
+<p>Names a single module to be placed in the linked image. This may be
+specified multiple times.</p>
+<p>Attributes:</p>
+<table class="attr">
+ <tr>
+ <th scope="col">Attribute</th>
+ <th scope="col">Description</th>
+ <th scope="col">Required</th>
+ </tr>
+ <tr>
+ <td>name</td>
+ <td>Name of module to add.</td>
+ <td>Yes</td>
+ </tr>
+</table>
+
+<h4 id="nested-observableModule">observableModule</h4>
+<p>Names a module visible to the linking process, instead of every module
+in the module path being considered. This may be specified multiple times.
+<p>Attributes:</p>
+<table class="attr">
+ <tr>
+ <th scope="col">Attribute</th>
+ <th scope="col">Description</th>
+ <th scope="col">Required</th>
+ </tr>
+ <tr>
+ <td>name</td>
+ <td>Name of module to add to list of observable modules.</td>
+ <td>Yes</td>
+ </tr>
+</table>
+
+<h4 id="nested-launcher">launcher</h4>
+<p>Specifies an executable file which will be added to the linked image,
+which executes a particular module's main class. Attributes:</p>
+<table class="attr">
+ <tr>
+ <th scope="col">Attribute</th>
+ <th scope="col">Description</th>
+ <th scope="col">Required</th>
+ </tr>
+ <tr>
+ <td>name</td>
+ <td>Name of launcher. This typically is used for the name of the
+ executable file.</td>
+ <td>Yes</td>
+ </tr>
+ <tr>
+ <td>module</td>
+ <td>Name of module to execute.</td>
+ <td>Yes</td>
+ </tr>
+ <tr>
+ <td>mainClass</td>
+ <td>Name of entry point class in module to execute.</td>
+ <td>Required unless module has its own main class defined.</td>
+ </tr>
+</table>
+
+<h4 id="nested-locale">locale</h4>
+<p>Specifies locales to include in linked image. May be specified multiple
+times. Requires <code>jdk.localedata</code> module. Attributes:</p>
+<table class="attr">
+ <tr>
+ <th scope="col">Attribute</th>
+ <th scope="col">Description</th>
+ <th scope="col">Required</th>
+ </tr>
+ <tr>
+ <td>name</td>
+ <td>Name of locale, or wildcard pattern with <q><code>*</code></q>
+ that matches multiple locale names.</td>
+ <td>Yes</td>
+ </tr>
+</table>
+
+<h4 id="nested-resourceOrder">resourceOrder</h4>
+<p>Explicit resource search order in linked image. May be specified multiple
+times. Attributes:</p>
+<table class="attr">
+ <tr>
+ <th scope="col">Attribute</th>
+ <th scope="col">Description</th>
+ <th scope="col">Required</th>
+ </tr>
+ <tr>
+ <td>pattern</td>
+ <td>A <a
href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/nio/file/FileSystem.html#getPathMatcher%28java.lang.String%29">standard
PathMatcher pattern</a>
+ for matching resources</td>
+ <td rowspan="2">Exactly one of these</td>
+ </tr>
+ <tr>
+ <td>listFile</td>
+ <td class="left">Text file containing list of resource names (not
patterns),
+ one per line</td>
+ </tr>
+</table>
+
+<p>If the <code>resourceOrder</code> attribute is also present on the task, its
+patterns are treated as if they occur before patterns in nested
+<code><resourceOrder></code> elements.</p>
+
+<h4 id="nested-excludeResources">excludeResources</h4>
+<p>Excludes files from linked image tree. May be specified multiple times.
+ Attributes:</p>
+<table class="attr">
+ <tr>
+ <th scope="col">Attribute</th>
+ <th scope="col">Description</th>
+ <th scope="col">Required</th>
+ </tr>
+ <tr>
+ <td>pattern</td>
+ <td>A <a
href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/nio/file/FileSystem.html#getPathMatcher%28java.lang.String%29">standard
PathMatcher pattern</a>
+ for matching resources</td>
+ <td rowspan="2">Exactly one of these</td>
+ </tr>
+ <tr>
+ <td>listFile</td>
+ <td class="left">Text file containing list of resource names (not
patterns),
+ one per line</td>
+ </tr>
+</table>
+
+<h4 id="nested-excludeFiles">excludeFiles</h4>
+<p>Excludes files from linked image. May be specified multiple times.
+ Attributes:</p>
+<table class="attr">
+ <tr>
+ <th scope="col">Attribute</th>
+ <th scope="col">Description</th>
+ <th scope="col">Required</th>
+ </tr>
+ <tr>
+ <td>pattern</td>
+ <td>A <a
href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/nio/file/FileSystem.html#getPathMatcher%28java.lang.String%29">standard
PathMatcher pattern</a>
+ for matching files</td>
+ <td rowspan="2">Exactly one of these</td>
+ </tr>
+ <tr>
+ <td>listFile</td>
+ <td class="left">Text file containing list of file names (not patterns),
+ one per line</td>
+ </tr>
+</table>
+
+<h4 id="nested-compress">compress</h4>
+<p>Describes how image should be compressed. Attributes:</p>
+<table class="attr">
+ <tr>
+ <th scope="col">Attribute</th>
+ <th scope="col">Description</th>
+ <th scope="col">Required</th>
+ </tr>
+ <tr>
+ <td>level</td>
+ <td>Compression level of linked image. One of:
+ <dl>
+ <dt><code>0</code> or
+ <code>none</code></dt>
+ <dd>no compression (default)</dd>
+ <dt><code>1</code> or
+ <code>strings</code></dt>
+ <dd>constant string sharing</dd>
+ <dt><code>2</code> or
+ <code>zip</code></dt>
+ <dd>zip compression</dd>
+ </dl>
+ </td>
+ <td>Yes</td>
+ </tr>
+ <tr>
+ <td>files</td>
+ <td>Comma-separated list of patterns matching files to compress.
+ Each pattern either a
+ <a
href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/nio/file/FileSystem.html#getPathMatcher%28java.lang.String%29">standard
PathMatcher pattern</a>
+ or <code>@</code><var>filename</var>, indicating a text file with
+ one file name per line.</td>
+ <td>No</td>
+ </tr>
+</table>
+
+<p><code><compress></code> can also have any number of nested
+<code><files></code> elements, with these attributes:</p>
+<table class="attr">
+ <tr>
+ <th scope="col">Attribute</th>
+ <th scope="col">Description</th>
+ <th scope="col">Required</th>
+ </tr>
+ <tr>
+ <td>pattern</td>
+ <td>A <a
href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/nio/file/FileSystem.html#getPathMatcher%28java.lang.String%29">standard
PathMatcher pattern</a>
+ for matching files</td>
+ <td rowspan="2">Exactly one of these</td>
+ </tr>
+ <tr>
+ <td>listFile</td>
+ <td class="left">Text file containing list of file names (not patterns),
+ one per line</td>
+ </tr>
+</table>
+
+<h4 id="nested-releaseInfo">releaseInfo</h4>
+<p>Replaces, augments, or trims the image's release info properties.
+Can be specified multiple times. Attributes:</p>
+<table class="attr">
+ <tr>
+ <th scope="col">Attribute</th>
+ <th scope="col">Description</th>
+ <th scope="col">Required</th>
+ </tr>
+ <tr>
+ <td>file</td>
+ <td>Java properties file containing new release info properties
+ that will entirely replace the current ones.</td>
+ <td>No</td>
+ </tr>
+ <tr>
+ <td>delete</td>
+ <td>Comma-separated property keys to remove from application's
+ release info
+ <td>No</td>
+ </tr>
+</table>
+
+<p><code><releaseInfo></code> can also have any number of these nested
elements:</p>
+<h5>add</h5>
+<p>Specifies additional release info properties. Attributes:</p>
+<table class="attr">
+ <tr>
+ <th scope="col">Attribute</th>
+ <th scope="col">Description</th>
+ <th scope="col">Required</th>
+ </tr>
+ <tr>
+ <td>key</td>
+ <td>Key of single property to add.</td>
+ <td rowspan="2">Yes, unless <code>file</code> is specified</td>
+ </tr>
+ <tr>
+ <td>value</td>
+ <td class="left">Value of single property to add.</td>
+ </tr>
+ <tr>
+ <td>file</td>
+ <td>Java property file containing any number of properties to add.</td>
+ <td>Yes, unless <code>key</code> and <code>value</code> are specified</td>
+ </tr>
+ <tr>
+ <td>charset</td>
+ <td>Character set of property file.</td>
+ <td>No, default is <code>ISO_8859_1</code>, in accordance with
+ java.util.Properties class.</td>
+ </tr>
+</table>
+
+<h5>delete</h5>
+<p>Property keys to remove from applicaiton's release info. Attributes:</p>
+<table class="attr">
+ <tr>
+ <th scope="col">Attribute</th>
+ <th scope="col">Description</th>
+ <th scope="col">Required</th>
+ </tr>
+ <tr>
+ <td>key</td>
+ <td>Key of property to remove.</td>
+ <td>Yes</td>
+ </tr>
+</table>
+
+<h3>Examples</h3>
+<h4>Basic linking</h4>
+<pre>
+<jmod destfile="MyApp.jmod" classpath="build/myapp.jar"/>
+<link destDir="build/image" modulepath="MyApp.jmod"
+ modules="com.example.myapp"/>
+</pre>
+
+<h4>Custom binaries</h4>
+<p>This will cause a <samp>bin/MyEditor</samp> script to appear in the
+image:
+<pre>
+<jmod destfile="MyApp.jmod" classpath="build/myapp.jar"/>
+<link destDir="build/image" modulepath="MyApp.jmod"
+ modules="com.example.myapp"
+
launchers="MyEditor=com.example.myapp/com.example.myapp.editors.EditorMain"/>
+</pre>
+
+<p>Same thing, using a nested launcher element:</p>
+<pre>
+<jmod destfile="MyApp.jmod" classpath="build/myapp.jar"/>
+<link destDir="build/image" modulepath="MyApp.jmod"
+ modules="com.example.myapp">
+
+ <launcher name="MyEditor" module="com.example.myapp"
+ mainClass="com.example.myapp.editors.EditorMain"/>
+
+</link>
+</pre>
+
+<h4>Limiting locales</h4>
+<p>Include just the locales needed by the application from the <a
href="https://docs.oracle.com/en/java/javase/11/docs/api/jdk.localedata/module-summary.html">jdk.localedata</a>
module:</p>
+<pre>
+<jmod destfile="MyApp.jmod" classpath="build/myapp.jar"/>
+<link destDir="build/image" modulepath="MyApp.jmod"
+ modules="com.example.myapp,jdk.localedata"
+ locales="zh,jp-*"/>
+</pre>
+
+<h4>Compressed image</h4>
+<p>Compress entire image:</p>
+<pre>
+<jmod destfile="MyApp.jmod" classpath="build/myapp.jar"/>
+<link destDir="build/image" modulepath="MyApp.jmod"
+ modules="com.example.myapp,jdk.localedata"
+ compress="zip"/>
+</pre>
+
+<p>Compress only some files in the image:</p>
+<pre>
+<jmod destfile="MyApp.jmod" classpath="build/myapp.jar"/>
+<link destDir="build/image" modulepath="MyApp.jmod"
+ modules="com.example.myapp,jdk.localedata">
+
+ <compress level="zip" files=".*\.xml"/>
+
+</link>
+</pre>
+
+<h4>Cross-compiling</h4>
+<p>To create an image for a different platform:
+
+<ul>
+<li>Download the JDK for that platform, and expand the archive manually into
+a directory of your choice. (Downloading a zip or tar.gz version of a JDK
+instead of an installer will make this easier.)</li>
+<li>Determine the foreign JDK's platform string. This can be done with
+a command that examines the JDK's <samp>jmods/java.base.jmod</samp> file:
+<pre>
+jmod describe "$FOREIGN_JDK_HOME"/jmods/java.base.jmod | grep '^platform'
+</pre>
+</li>
+<li>Create your jmod using the foreign JDK's platform string:
+<pre>
+<jmod destfile="MyApp.jmod" classpath="build/myapp.jar"
platform="windows-amd64"/>
+</pre>
+</li>
+<li>Link with the foreign JDK's <samp>jmods</samp> directory in the module
path:
+<pre>
+<link destDir="build/image"
+ modulepath="MyApp.jmod;${foreign-jdk-home}/jmods"
+ modules="com.example.myapp"/>
+</pre>
+</li>
+</ul>
+
+</body>
+</html>
Propchange: ant/site/ant/production/manual/Tasks/link.html
------------------------------------------------------------------------------
svn:eol-style = native