Home | History | Annotate | Download | only in www
      1 
      2 
      3 
      4 
      5 <!DOCTYPE html>
      6 <html lang="en">
      7 <head>
      8   <meta charset="utf-8"  />
      9   <meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1,shrink-to-fit=no"  />
     10   <title>Magick Vector Graphics @ ImageMagick</title>
     11   <meta name="application-name" content="ImageMagick" />
     12   <meta name="description" content="Use ImageMagick to create, edit, compose, or convert bitmap images. You can resize your image, crop it, change its shades and colors, add captions, among other operations." />
     13   <meta name="application-url" content="https://imagemagick.org" />
     14   <meta name="generator" content="PHP" />
     15   <meta name="keywords" content="magick, vector, graphics, ImageMagick, PerlMagick, image processing, image, photo, software, Magick++, OpenMP, convert" />
     16   <meta name="rating" content="GENERAL" />
     17   <meta name="robots" content="INDEX, FOLLOW" />
     18   <meta name="generator" content="ImageMagick Studio LLC" />
     19   <meta name="author" content="ImageMagick Studio LLC" />
     20   <meta name="revisit-after" content="2 DAYS" />
     21   <meta name="resource-type" content="document" />
     22   <meta name="copyright" content="Copyright (c) 1999-2019 ImageMagick Studio LLC" />
     23   <meta name="distribution" content="Global" />
     24   <meta name="magick-serial" content="P131-S030410-R485315270133-P82224-A6668-G1245-1" />
     25   <meta name="google-site-verification" content="_bMOCDpkx9ZAzBwb2kF3PRHbfUUdFj2uO8Jd1AXArz4" />
     26   <link href="../www/magick-vector-graphics.html" rel="canonical" />
     27   <link href="../images/wand.png" rel="icon" />
     28   <link href="../images/wand.ico" rel="shortcut icon" />
     29   <link href="assets/magick.css" rel="stylesheet" />
     30 </head>
     31 <body>
     32   <header>
     33   <nav class="navbar navbar-expand-md navbar-dark fixed-top bg-dark">
     34     <a class="navbar-brand" href="../index.html"><img class="d-block" id="icon" alt="ImageMagick" width="32" height="32" src="../images/wand.ico"/></a>
     35     <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarsMagick" aria-controls="navbarsMagick" aria-expanded="false" aria-label="Toggle navigation">
     36       <span class="navbar-toggler-icon"></span>
     37     </button>
     38 
     39     <div class="navbar-collapse collapse" id="navbarsMagick" style="">
     40     <ul class="navbar-nav mr-auto">
     41       <li class="nav-item ">
     42         <a class="nav-link" href="../index.html">Home <span class="sr-only">(current)</span></a>
     43       </li>
     44       <li class="nav-item ">
     45         <a class="nav-link" href="download.html">Download</a>
     46       </li>
     47       <li class="nav-item ">
     48         <a class="nav-link" href="command-line-tools.html">Tools</a>
     49       </li>
     50       <li class="nav-item ">
     51         <a class="nav-link" href="command-line-processing.html">Command-line</a>
     52       </li>
     53       <li class="nav-item ">
     54         <a class="nav-link" href="resources.html">Resources</a>
     55       </li>
     56       <li class="nav-item ">
     57         <a class="nav-link" href="develop.html">Develop</a>
     58       </li>
     59       <li class="nav-item">
     60         <a class="nav-link" target="_blank" href="https://imagemagick.org/discourse-server/">Community</a>
     61       </li>
     62     </ul>
     63     <form class="form-inline my-2 my-lg-0" action="https://imagemagick.org/script/search.php">
     64       <input class="form-control mr-sm-2" type="text" name="q" placeholder="Search" aria-label="Search">
     65       <button class="btn btn-outline-success my-2 my-sm-0" type="submit" name="sa">Search</button>
     66     </form>
     67     </div>
     68   </nav>
     69   <div class="container">
     70    <script async="async" src="http://localhost/pagead/js/adsbygoogle.js"></script>    <ins class="adsbygoogle"
     71          style="display:block"
     72          data-ad-client="ca-pub-3129977114552745"
     73          data-ad-slot="6345125851"
     74          data-ad-format="auto"></ins>
     75     <script>
     76       (adsbygoogle = window.adsbygoogle || []).push({});
     77     </script>
     78 
     79   </div>
     80   </header>
     81   <main class="container">
     82     <div class="magick-template">
     83 <div class="magick-header">
     84 <p class="text-center"><a href="../www/magick-vector-graphics.html#overview">MVG Overview</a>  <a href="../www/magick-vector-graphics.html#primitives">Drawing Primitives</a></p>
     85 
     86 <p class="lead magick-description">This specification defines the features and syntax for Magick Vector Graphics (MVG), a modularized language for describing two-dimensional vector and mixed vector/raster graphics in ImageMagick.  You can use the language to draw from the
     87 command line, from an MVG file, from an <a href="http://www.w3.org/TR/SVG/">SVG -- Scalable Vector Graphics</a> file or from one of the ImageMagick <a href="../www/api.html">program interfaces</a>.  Use this command, for example, to render an arc:</p>
     88 
     89 <pre class="highlight"><code>convert -size 100x60 canvas:skyblue -fill white -stroke black \
     90   -draw "path 'M 30,40  A 30,20  20  0,0 70,20 A 30,20  20  1,0 30,40 Z '" \
     91   arc.png
     92 </code></pre>
     93 
     94 <p>and here is the result:</p>
     95 
     96 <ul>
     97   <a href="../images/arc.png"><img src="../images/arc.png" width="100" height="60" alt="arc" /></a>
     98 </ul>
     99 
    100 <p>When the drawing gets sufficiently complex, we recommend you assemble the graphic primitives into a MVG file. For our example, we use <a href="https://imagemagick.org/source/piechart.mvg">piechart.mvg</a>:</p>
    101 
    102 <pre class="pre-scrollable"><code>push graphic-context
    103   viewbox 0 0 624 369
    104   affine 0.283636 0 0 0.283846 -0 -0
    105   push graphic-context
    106     push graphic-context
    107       fill 'darkslateblue'
    108       stroke 'blue'
    109       stroke-width 1
    110       rectangle 1,1 2199,1299
    111     pop graphic-context
    112     push graphic-context
    113       font-size 40
    114       fill 'white'
    115       stroke-width 1
    116       text 600,1100 'Average: 20.0'
    117     pop graphic-context
    118     push graphic-context
    119       fill 'red'
    120       stroke 'black'
    121       stroke-width 5
    122       path 'M700.0,600.0 L340.0,600.0 A360.0,360.0 0 0,1 408.1452123287954,389.2376150414973 z'
    123     pop graphic-context
    124     push graphic-context
    125       font-size 40
    126       fill 'white'
    127       stroke-width 1
    128       text 1400,140 'MagickWand for PHP'
    129     pop graphic-context
    130     push graphic-context
    131       font-size 30
    132       fill 'white'
    133       stroke-width 1
    134       text 1800,140 '(10.0%)'
    135     pop graphic-context
    136     push graphic-context
    137       fill 'red'
    138       stroke 'black'
    139       stroke-width 4
    140       rectangle 1330,100 1370,140
    141     pop graphic-context
    142     push graphic-context
    143       fill 'yellow'
    144       stroke 'black'
    145       stroke-width 5
    146       path 'M700.0,600.0 L408.1452123287954,389.2376150414973 A360.0,360.0 0 0,1 976.5894480359858,369.56936567559273 z'
    147     pop graphic-context
    148     push graphic-context
    149       font-size 40
    150       fill 'white'
    151       stroke-width 1
    152       text 1400,220 'MagickCore'
    153     pop graphic-context
    154     push graphic-context
    155       font-size 30
    156       fill 'white'
    157       stroke-width 1
    158       text 1800,220 '(29.0%)'
    159     pop graphic-context
    160     push graphic-context
    161       fill 'yellow'
    162       stroke 'black'
    163       stroke-width 4
    164       rectangle 1330,180 1370,220
    165     pop graphic-context
    166     push graphic-context
    167       fill 'fuchsia'
    168       stroke 'black'
    169       stroke-width 5
    170       path 'M700.0,600.0 L976.5894480359858,369.56936567559273 A360.0,360.0 0 0,1 964.2680466142854,844.4634932636567 z'
    171     pop graphic-context
    172     push graphic-context
    173       font-size 40
    174       fill 'white'
    175       stroke-width 1
    176       text 1400,300 'MagickWand'
    177     pop graphic-context
    178     push graphic-context
    179       font-size 30
    180       fill 'white'
    181       stroke-width 1
    182       text 1800,300 '(22.9%)'
    183     pop graphic-context
    184     push graphic-context
    185       fill 'fuchsia'
    186       stroke 'black'
    187       stroke-width 4
    188       rectangle 1330,260 1370,300
    189     pop graphic-context
    190     push graphic-context
    191       fill 'blue'
    192       stroke 'black'
    193       stroke-width 5
    194       path 'M700.0,600.0 L964.2680466142854,844.4634932636567 A360.0,360.0 0 0,1 757.853099990584,955.3210081341651 z'
    195     pop graphic-context
    196     push graphic-context
    197       font-size 40
    198       fill 'white'
    199       stroke-width 1
    200       text 1400,380 'JMagick'
    201     pop graphic-context
    202     push graphic-context
    203       font-size 30
    204       fill 'white'
    205       stroke-width 1
    206       text 1800,380 '(10.6%)'
    207     pop graphic-context
    208     push graphic-context
    209       fill 'blue'
    210       stroke 'black'
    211       stroke-width 4
    212       rectangle 1330,340 1370,380
    213     pop graphic-context
    214     push graphic-context
    215       fill 'lime'
    216       stroke 'black'
    217       stroke-width 5
    218       path 'M700.0,600.0 L757.853099990584,955.3210081341651 A360.0,360.0 0 0,1 340.0,600.0 z'
    219     pop graphic-context
    220     push graphic-context
    221       font-size 40
    222       fill 'white'
    223       stroke-width 1
    224       text 1400,460 'Magick++'
    225     pop graphic-context
    226     push graphic-context
    227       font-size 30
    228       fill 'white'
    229       stroke-width 1
    230       text 1800,460 '(27.5%)'
    231     pop graphic-context
    232     push graphic-context
    233       fill 'lime'
    234       stroke 'black'
    235       stroke-width 4
    236       rectangle 1330,420 1370,460
    237     pop graphic-context
    238     push graphic-context
    239       font-size 100
    240       fill 'white'
    241       stroke-width 1
    242       text 100,150 'ImageMagick'
    243     pop graphic-context
    244     push graphic-context
    245       fill 'none'
    246       stroke 'black'
    247       stroke-width 5
    248       circle 700,600 700,960
    249     pop graphic-context
    250   pop graphic-context
    251 pop graphic-context
    252 </code></pre>
    253 
    254 <p>to render a pie chart with this command:</p>
    255 
    256 <pre class="highlight"><code>convert mvg:piechart.mvg piechart.png
    257 </code></pre>
    258 
    259 <p>which produces this rendering:</p>
    260 
    261 <ul>
    262   <a href="../images/piechart.png"><img src="../images/piechart.png" width="624" height="369" alt="piechart" /></a>
    263 </ul>
    264 
    265 <p>However, in general, MVG is sufficiently difficult to work with that you probably want to use a program to generate your graphics in the SVG format.  ImageMagick automagically converts SVG to MVG and renders your image, for example, we render <a href="https://imagemagick.org/source/piechart.svg">piechart.svg</a> with this command:</p>
    266 
    267 <pre class="highlight"><code>convert mvg:piechart.svg piechart.jpg
    268 </code></pre>
    269 
    270 
    271 <p>to produce the same pie chart we created with the MVG language.</p>
    272 
    273 <p>Drawing is available from many of the ImageMagick <a href="../www/api.html">program interfaces</a> as well.  ImageMagick converts the drawing API calls to MVG and renders it.  Here is example code written in the <a href="../www/magick-wand.html">MagickWand</a> language: </p>
    274 
    275 <pre class="pre-scrollable"><code>(void) PushDrawingWand(draw_wand);
    276 {
    277   const PointInfo points[6] =
    278   {
    279     { 180,504 },
    280     { 282.7,578.6 },
    281     { 243.5,699.4 },
    282     { 116.5,699.4 },
    283     { 77.26,578.6 },
    284     { 180,504 }
    285   };
    286 
    287   DrawSetStrokeAntialias(draw_wand,True);
    288   DrawSetStrokeWidth(draw_wand,9);
    289   DrawSetStrokeLineCap(draw_wand,RoundCap);
    290   DrawSetStrokeLineJoin(draw_wand,RoundJoin);
    291   (void) DrawSetStrokeDashArray(draw_wand,0,(const double *)NULL);
    292   (void) PixelSetColor(color,"#4000c2");
    293   DrawSetStrokeColor(draw_wand,color);
    294   DrawSetFillRule(draw_wand,EvenOddRule);
    295   (void) PixelSetColor(color,"#800000");
    296   DrawSetFillColor(draw_wand,color);
    297   DrawPolygon(draw_wand,6,points);
    298 }
    299 (void) PopDrawingWand(draw_wand);
    300 </code></pre>
    301 
    302 <h2><a class="anchor" id="overview"></a>MVG Overview</h2>
    303 
    304 <p>MVG ignores all white-space between commands. This allows multiple MVG commands per line. It is common convention to terminate each MVG command with a newline to make MVG easier to edit and read. This syntax description uses indentation in MVG sequences to aid with understanding. Indentation is supported but is not required.</p>
    305 
    306 <p>Metafile wrapper syntax (to support stand-alone MVG files):</p>
    307 
    308 <pre class="highlight"><code>push graphic-context
    309   viewbox 0 0 width height
    310   [ any other MVG commands ]
    311 pop graphic-context
    312 </code></pre>
    313 
    314 <p>Pattern syntax (saving and restoring context):</p>
    315 
    316 <pre class="highlight"><code>push pattern id x,y width,height
    317  push graphic-context
    318   [ drawing commands ]
    319  pop graphic-context
    320 pop pattern
    321 </code></pre>
    322 
    323 <p>an example is (%s is a identifier string):</p>
    324 
    325 <pre class="highlight"><code>push defs
    326  push pattern %s 10,10 20,20
    327   push graphic-context
    328    fill red
    329    rectangle 5,5 15,15
    330   pop graphic-context
    331   push graphic-context
    332    fill green
    333    rectangle 10,10 20,20
    334   pop graphic-context
    335  pop pattern
    336 pop defs
    337 </code></pre>
    338 
    339 <p>For image tiling use:</p>
    340 
    341 <pre class="highlight"><code>push pattern id x,y width,height
    342  image Copy ...
    343 pop pattern
    344 </code></pre>
    345 
    346 <p>Note you can use the pattern for either the fill or stroke like:</p>
    347 
    348 <pre class="highlight"><code>stroke url(#%s)
    349 </code></pre>
    350 
    351 <p>or</p>
    352 
    353 <pre class="highlight"><code>fill url(#%s)
    354 </code></pre>
    355 
    356 <p>The clip path defines a clipping area, where only the contained area to be drawn upon.  Areas outside of the clipping areare masked.</p>
    357 
    358 <pre class="highlight"><code>push defs
    359  push clip-path "myClipPath"
    360   push graphic-context
    361    rectangle 10,10 20,20
    362   pop graphic-context
    363  pop clip-path
    364 pop defs
    365 clip-path url(#myClipPath)
    366 </code></pre>
    367 
    368 <h2><a class="anchor" id="primitives"></a>Drawing Primitives</h2>
    369 
    370 <p>Here is a complete description of the MVG drawing primitives:</p>
    371 
    372 <div class="table-responsive">
    373 <table class="table table-sm table-striped">
    374   <tr>
    375     <th>Primitive</th>
    376     <th>Description</th>
    377   </tr>
    378   <tr>
    379     <td><a class="anchor" id="affine"></a>affine <var>s<sub>x</sub></var>,<var>r<sub>x</sub></var>,<var>r<sub>y</sub></var>,<var>s<sub>y</sub></var>,<var>t<sub>x</sub></var>,<var>t<sub>y</sub></var></td>
    380     <td></td>
    381   </tr>
    382   <tr>
    383     <td><a class="anchor" id="arc"></a>arc <var>x<sub>0</sub></var>,<var>y<sub>0</sub></var>   <var>x<sub>1</sub></var>,<var>y<sub>1</sub></var>   <var>a<sub>0</sub></var>,<var>a<sub>1</sub></var></td>
    384     <td></td>
    385   </tr>
    386   <tr>
    387     <td><a class="anchor" id="bezier"></a>bezier <var>x<sub>0</sub></var>,<var>y<sub>0</sub></var> ... <var>x<sub>n</sub></var>,<var>y<sub>n</sub></var></td>
    388     <td><code>Bezier</code> (spline) requires three or more x,y coordinates to define its shape. The first and last points are the knots (preserved coordinates) and any intermediate coordinates are the control points. If two control points are specified, the line between each end knot and its sequentially respective control point determines the tangent direction of the curve at that end. If one control point is specified, the lines from the end knots to the one control point determines the tangent directions of the curve at each end. If more than two control points are specified, then the additional control points act in combination to determine the intermediate shape of the curve. In order to draw complex curves, it is highly recommended either to use the <code>Path</code> primitive or to draw multiple four-point bezier segments with the start and end knots of each successive segment repeated. </td>
    389   </tr>
    390   <tr>
    391     <td><a class="anchor" id="border-color"></a>border-color <var>color</var></td>
    392     <td></td>
    393   </tr>
    394   <tr>
    395     <td><a class="anchor" id="circle"></a>circle <var>origin<sub>x</sub></var>,<var>origin<sub>y</sub></var>   <var>perimeter<sub>x</sub></var>,<var>perimeter<sub>y</sub></var></td>
    396     <td></td>
    397   </tr>
    398   <tr>
    399     <td><a class="anchor" id="clip-path"></a>clip-path url(<var>name</var>)</td>
    400     <td></td>
    401   </tr>
    402   <tr>
    403     <td><a class="anchor" id="clip-rule"></a>clip-rule <var>rule</var></td>
    404     <td>Choose from these rule types:
    405 <pre class="highlight"><code>evenodd
    406 nonzero</code></pre></td>
    407   </tr>
    408   <tr>
    409     <td><a class="anchor" id="clip-units"></a>clip-units <var>units</var></td>
    410     <td>Choose from these unit types:
    411 <pre class="highlight"><code>userSpace
    412 userSpaceOnUse
    413 objectBoundingBox</code></pre></td>
    414   </tr>
    415   <tr>
    416     <td><a class="anchor" id="color"></a>color <var>x</var>,<var>y</var> <var>method</var></td>
    417     <td>Choose from these method types:
    418 <pre class="highlight"><code>point
    419 replace
    420 floodfill
    421 filltoborder
    422 reset</code></pre></td>
    423   </tr>
    424   <tr>
    425     <td><a class="anchor" id="compliance"></a>compliance <var>type</var></td>
    426     <td>Choose from these compliance types: MVG or SVG</td>
    427   </tr>
    428   <tr>
    429     <td><a class="anchor" id="decorate"></a>decorate <var>type</var></td>
    430     <td>Choose from these types of decorations:
    431 <pre class="highlight"><code>none
    432 line-through
    433 overline
    434 underline</code></pre></td>
    435   </tr>
    436   <tr>
    437     <td><a class="anchor" id="ellipse"></a>ellipse <var>center<sub>x</sub></var>,<var>center<sub>y</sub></var>   <var>radius<sub>x</sub></var>,<var>radius<sub>y</sub></var>   <var>arc<sub>start</sub></var>,<var>arc<sub>stop</sub></var></td>
    438     <td></td>
    439   </tr>
    440   <tr>
    441     <td><a class="anchor" id="fill"></a>fill <var>color</var></td>
    442     <td>Choose from any of these <a href="../www/color.html">colors</a>.</td>
    443   </tr>
    444   <tr>
    445     <td><a class="anchor" id="fill-opacity"></a>fill-opacity <var>opacity</var></td>
    446     <td>The opacity ranges from 0.0 (fully transparent) to 1.0 (fully opaque) or as a percentage (e.g. 50%).</td>
    447   </tr>
    448   <tr>
    449     <td><a class="anchor" id="fill-rule"></a>fill-rule <var>rule</var></td>
    450     <td>Choose from these rule types:
    451 <pre class="highlight"><code>evenodd
    452 nonzero</code></pre></td>
    453   </tr>
    454   <tr>
    455     <td><a class="anchor" id="font"></a>font <var>name</var></td>
    456     <td></td>
    457   </tr>
    458   <tr>
    459     <td><a class="anchor" id="font-family"></a>font-family <var>family</var></td>
    460     <td></td>
    461   </tr>
    462   <tr>
    463     <td><a class="anchor" id="font-size"></a>font-size <var>point-size</var></td>
    464     <td></td>
    465   </tr>
    466   <tr>
    467     <td><a class="anchor" id="font-stretch"></a>font-stretch <var>type</var></td>
    468     <td>Choose from these stretch types:
    469 <pre class="highlight"><code>all
    470 normal
    471 ultra-condensed
    472 extra-condensed
    473 condensed
    474 semi-condensed
    475 semi-expanded
    476 expanded
    477 extra-expanded
    478 ultra-expanded</code></pre></td>
    479   </tr>
    480   <tr>
    481     <td><a class="anchor" id="font-style"></a>font-style <var>style</var></td>
    482     <td>Choose from these styles:
    483 <pre class="highlight"><code>all
    484 normal
    485 italic
    486 oblique</code></pre></td>
    487   </tr>
    488   <tr>
    489     <td><a class="anchor" id="font-weight"></a>font-weight <var>weight</var></td>
    490     <td>Choose from these weights:
    491 <pre class="highlight"><code>all
    492 normal
    493 bold
    494 100
    495 200
    496 300
    497 400
    498 500
    499 600
    500 700
    501 800
    502 900</code></pre></td>
    503   </tr>
    504   <tr>
    505     <td><a class="anchor" id="gradient-units"></a>gradient-units <var>units</var></td>
    506     <td>Choose from these units:
    507 <pre class="highlight"><code>userSpace
    508 userSpaceOnUse
    509 objectBoundingBox</code></pre></td>
    510   </tr>
    511   <tr>
    512     <td><a class="anchor" id="gravity"></a>gravity <var>type</var></td>
    513     <td>Choose from these gravity types:
    514 <pre class="highlight"><code>NorthWest
    515 North
    516 NorthEast
    517 West
    518 Center
    519 East
    520 SouthWest
    521 South
    522 SouthEast</code></pre></td>
    523   </tr>
    524   <tr>
    525     <td><a class="anchor" id="compose"></a>image <var>compose x,y width,height 'filename'</var></td>
    526     <td>Choose from these compose operations:
    527     <table id="table" cellpadding="2" cellspacing="0" style="width: 93%">
    528   <tbody>
    529   <tr>
    530     <th align="left" style="width: 8%">Method</th>
    531     <th align="left">Description</th>
    532   </tr>
    533 
    534   <tr>
    535     <td>clear</td>
    536     <td>Both the color and the alpha of the destination are cleared. Neither the source nor the destination are used as input.</td>
    537   </tr>
    538 
    539   <tr>
    540     <td>src</td>
    541     <td>The source is copied to the destination. The destination is not used as input.</td>
    542   </tr>
    543 
    544   <tr>
    545     <td>dst</td>
    546     <td>The destination is left untouched.</td>
    547   </tr>
    548 
    549   <tr>
    550     <td><b>src-over</b></td>
    551     <td>The source is composited over the destination.</td>
    552   </tr>
    553 
    554   <tr>
    555     <td>dst-over</td>
    556     <td>The destination is composited over the source and the result replaces the destination.</td>
    557   </tr>
    558 
    559   <tr>
    560     <td>src-in</td>
    561     <td>The part of the source lying inside of the destination replaces the destination.</td>
    562   </tr>
    563 
    564   <tr>
    565     <td>dst-in</td>
    566     <td>The part of the destination lying inside of the source replaces the destination.</td>
    567   </tr>
    568 
    569   <tr>
    570     <td>src-out</td>
    571     <td>The part of the source lying outside of the destination replaces the destination.</td>
    572   </tr>
    573 
    574   <tr>
    575     <td>dst-out</td>
    576     <td>The part of the destination lying outside of the source         replaces the destination.</td>
    577   </tr>
    578 
    579   <tr>
    580     <td>src-atop</td>
    581     <td>The part of the source lying inside of the destination is  composited onto the destination.</td>
    582   </tr>
    583 
    584   <tr>
    585     <td>dst-atop</td>
    586     <td>The part of the destination lying inside of the source is composited over the source and replaces the destination.</td>
    587   </tr>
    588 
    589   <tr>
    590     <td>multiply</td>
    591     <td>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.</td>
    592   </tr>
    593 
    594   <tr>
    595     <td>screen</td>
    596     <td>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.</td>
    597   </tr>
    598 
    599   <tr>
    600     <td>overlay</td>
    601     <td>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.</td>
    602   </tr>
    603 
    604   <tr>
    605     <td>darken</td>
    606     <td>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.</td>
    607   </tr>
    608 
    609   <tr>
    610     <td>lighten</td>
    611     <td>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.</td>
    612   </tr>
    613 
    614   <tr>
    615     <td>linear-light</td>
    616     <td>Increase contrast slightly with an impact on the foreground's tonal values.</td>
    617   </tr>
    618 
    619   <tr>
    620     <td>color-dodge</td>
    621     <td>Brightens the destination color to reflect the source color. Painting with black produces no change.</td>
    622   </tr>
    623 
    624   <tr>
    625     <td>color-burn</td>
    626     <td>Darkens the destination color to reflect the source color.  Painting with white produces no change.</td>
    627   </tr>
    628 
    629   <tr>
    630     <td>hard-light</td>
    631     <td>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.</td>
    632   </tr>
    633 
    634   <tr>
    635     <td>soft-light</td>
    636     <td>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.</td>
    637   </tr>
    638 
    639   <tr>
    640     <td>plus</td>
    641     <td>The source is added to the destination and replaces the destination. This operator is useful for animating a dissolve between two images.</td>
    642   </tr>
    643 
    644   <tr>
    645     <td>add</td>
    646     <td>As per 'plus' but transparency data is treated as matte
    647         values. As such any transparent areas in either image remain
    648         transparent. </td>
    649   </tr>
    650 
    651   <tr>
    652     <td>minus</td>
    653     <td>Subtract the colors in the source image from the
    654         destination image. When transparency is involved, Opaque areas will be
    655         subtracted from any destination opaque areas. </td>
    656   </tr>
    657 
    658   <tr>
    659     <td>subtract</td>
    660     <td>Subtract the colors in the source image from the
    661         destination image. When transparency is involved transparent areas are
    662         subtracted, so only the opaque areas in the source remain opaque in
    663         the destination image. </td>
    664   </tr>
    665 
    666   <tr>
    667     <td>difference</td>
    668     <td>Subtracts the darker of the two constituent colors from the lighter. Painting with white inverts the destination color. Painting with black produces no change.</td>
    669   </tr>
    670 
    671   <tr>
    672     <td>exclusion</td>
    673     <td>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.</td>
    674   </tr>
    675 
    676   <tr>
    677     <td>xor</td>
    678     <td>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.</td>
    679   </tr>
    680 
    681   <tr>
    682     <td>copy-*</td>
    683     <td>Copy the specified channel in the source image to the
    684         same channel in the destination image.  If the channel specified in
    685         the source image does not exist, (which can only happen for methods,
    686         '<code>copy-opacity</code>' or '<code>copy-black</code>') then it is
    687         assumed that the source image is a special grayscale channel image
    688         of the values to be copied. </td>
    689     </tr>
    690 
    691   <tr>
    692     <td>change-mask</td>
    693     <td>Replace any destination pixel that is the similar to the source images pixel (as defined by the current <a href="../www/magick-vector-graphics.html#fuzz">-fuzz</a> factor), with transparency. </td>
    694   </tr>
    695   </tbody>
    696 </table></td>
    697   </tr>
    698   <tr>
    699     <td><a class="anchor" id="interline-spacing"></a>interline-spacing <var>pixels</var></td>
    700     <td></td>
    701   </tr>
    702   <tr>
    703     <td><a class="anchor" id="interword-spacing"></a>interword-spacing <var>pixels</var></td>
    704     <td></td>
    705   </tr>
    706   <tr>
    707     <td><a class="anchor" id="kerning"></a>kerning <var>pixels</var></td>
    708     <td></td>
    709   </tr>
    710   <tr>
    711     <td><a class="anchor" id="line"></a>line <var>x,y x<sub>1</sub>,y<sub>1</sub></var></td>
    712     <td></td>
    713   </tr>
    714   <tr>
    715     <td><a class="anchor" id="matte"></a>matte <var>x,y method</var></td>
    716     <td>Choose from these methods:
    717 <pre class="highlight"><code>point
    718 replace
    719 floodfill
    720 filltoborder
    721 reset</code></pre></td>
    722   </tr>
    723   <tr>
    724     <td><a class="anchor" id="offset"></a>offset <var>offset</var></td>
    725     <td></td>
    726   </tr>
    727   <tr>
    728     <td><a class="anchor" id="opacity"></a>opacity <var>opacity</var></td>
    729     <td>Use percent (e.g. 50%).</td>
    730   </tr>
    731   <tr>
    732     <td><a class="anchor" id="path"></a>path <var>path</var></td>
    733     <td></td>
    734   </tr>
    735   <tr>
    736     <td><a class="anchor" id="point"></a>point <var>x,y</var></td>
    737     <td></td>
    738   </tr>
    739   <tr>
    740     <td><a class="anchor" id="polygon"></a>polygon <var>x,y x<sub>1</sub>,y<sub>1</sub>, ..., x<sub>n</sub>,y<sub>n</sub></var></td>
    741     <td></td>
    742   </tr>
    743   <tr>
    744     <td><a class="anchor" id="polyline"></a>polyline <var>x,y x<sub>1</sub>,y<sub>1</sub>, ..., x<sub>n</sub>,y<sub>n</sub></var></td>
    745     <td></td>
    746   </tr>
    747   <tr>
    748     <td><a class="anchor" id="pop-clip-path"></a>pop clip-path</td>
    749     <td></td>
    750   </tr>
    751   <tr>
    752     <td><a class="anchor" id="pop-defs"></a>pop defs</td>
    753     <td></td>
    754   </tr>
    755   <tr>
    756     <td><a class="anchor" id="pop-gradient"></a>pop gradient</td>
    757     <td></td>
    758   </tr>
    759   <tr>
    760     <td><a class="anchor" id="pop-graphic-context"></a>pop graphic-context</td>
    761     <td></td>
    762   </tr>
    763   <tr>
    764     <td><a class="anchor" id="pop-pattern"></a>pop pattern</td>
    765     <td></td>
    766   </tr>
    767   <tr>
    768     <td><a class="anchor" id="push"></a>push clip-path "<var>name</var>"</td>
    769     <td></td>
    770   </tr>
    771   <tr>
    772     <td><a class="anchor" id="push-defs"></a>push defs</td>
    773     <td></td>
    774   </tr>
    775   <tr>
    776     <td><a class="anchor" id="push-gradient-linear"></a>push gradient <var>id linear x,y x<sub>1</sub>,y<sub>1</sub></var></td>
    777     <td></td>
    778   </tr>
    779   <tr>
    780     <td><a class="anchor" id="push-gradient-radial"></a>push gradient <var>id radial x<sub>c</sub>,c<sub>y</sub> x<sub>f</sub>,y<sub>f</sub> radius</var></td>
    781     <td></td>
    782   </tr>
    783   <tr>
    784     <td><a class="anchor" id="push-graphic-context"></a>push graphic-context { "<var>id</var>" }</td>
    785     <td>the <em>id</em> is optional</td>
    786   </tr>
    787   <tr>
    788     <td><a class="anchor" id="push-pattern"></a>push pattern <var>id radial x,y width,height</var></td>
    789     <td></td>
    790   </tr>
    791   <tr>
    792     <td><a class="anchor" id="rectangle"></a>rectangle <var>x,y x<sub>1</sub>,y<sub>1</sub></var></td>
    793     <td></td>
    794   </tr>
    795   <tr>
    796     <td><a class="anchor" id="rotate"></a>rotate <var>angle</var></td>
    797     <td></td>
    798   </tr>
    799   <tr>
    800     <td><a class="anchor" id="roundrectangle"></a>roundrectangle <var>x,y x<sub>1</sub>,y<sub>1</sub> width,height</var></td>
    801     <td></td>
    802   </tr>
    803   <tr>
    804     <td><a class="anchor" id="scale"></a>scale <var>x,y</var></td>
    805     <td></td>
    806   </tr>
    807   <tr>
    808     <td><a class="anchor" id="skewX"></a>skewX <var>angle</var></td>
    809     <td></td>
    810   </tr>
    811   <tr>
    812     <td><a class="anchor" id="skewY"></a>skewX <var>angle</var></td>
    813     <td></td>
    814   </tr>
    815   <tr>
    816     <td><a class="anchor" id="stop-color"></a>stop-color <var>color offset</var></td>
    817     <td></td>
    818   </tr>
    819   <tr>
    820     <td><a class="anchor" id="stroke"></a>stroke <var>color</var></td>
    821     <td></td>
    822   </tr>
    823   <tr>
    824     <td><a class="anchor" id="stroke-antialias"></a>stroke-antialias <var>0  1</var></td>
    825     <td></td>
    826   </tr>
    827   <tr>
    828     <td><a class="anchor" id="stroke-dasharray"></a>stroke-dasharray <var>none  numeric-list</var></td>
    829     <td></td>
    830   </tr>
    831   <tr>
    832     <td><a class="anchor" id="stroke-dashoffset"></a>stroke-dashoffset <var>offset</var></td>
    833     <td></td>
    834   </tr>
    835   <tr>
    836     <td><a class="anchor" id="stroke-linecap"></a>stroke-linecap <var>type</var></td>
    837     <td>Choose from these cap types:
    838 <pre class="highlight"><code>butt
    839 round
    840 square</code></pre></td>
    841   </tr>
    842   <tr>
    843     <td><a class="anchor" id="stroke-linejoin"></a>stroke-linejoin <var>type</var></td>
    844     <td>Choose from these join types:
    845 <pre class="highlight"><code>bevel
    846 miter
    847 round</code></pre></td>
    848   </tr>
    849   <tr>
    850     <td><a class="anchor" id="stroke-miterlimit"></a>stroke-miterlimit <var>limit</var></td>
    851     <td></td>
    852   </tr>
    853   <tr>
    854     <td><a class="anchor" id="stroke-opacity"></a>stroke-opacity <var>opacity</var></td>
    855     <td>The opacity ranges from 0.0 (fully transparent) to 1.0 (fully opaque) or as a percentage (e.g. 50%).</td>
    856   </tr>
    857   <tr>
    858     <td><a class="anchor" id="stroke-width"></a>stroke-width <var>width</var></td>
    859     <td></td>
    860   </tr>
    861   <tr>
    862     <td><a class="anchor" id="text"></a>text <var>"text"</var></td>
    863     <td></td>
    864   </tr>
    865   <tr>
    866     <td><a class="anchor" id="text-antialias"></a>text-antialias <var>0  1</var></td>
    867     <td></td>
    868   </tr>
    869   <tr>
    870     <td><a class="anchor" id="text-undercolor"></a>text-undercolor <var>color</var></td>
    871     <td></td>
    872   </tr>
    873   <tr>
    874     <td><a class="anchor" id="translate"></a>translate <var>x,y</var></td>
    875     <td></td>
    876   </tr>
    877   <tr>
    878     <td><a class="anchor" id="use"></a>use "<var>url(#id)</var>"</td>
    879     <td></td>
    880   </tr>
    881   <tr>
    882     <td><a class="anchor" id="viewbox"></a>viewbox <var>x,y x<sub>1</sub>,y<sub>1</sub></var></td>
    883     <td></td>
    884   </tr>
    885 </table></div>
    886 </div>
    887     </div>
    888   </main><!-- /.container -->
    889   <footer class="magick-footer">
    890     <p><a href="security-policy.html">Security</a> 
    891     <a href="architecture.html">Architecture</a> 
    892     <a href="links.html">Related</a> 
    893      <a href="sitemap.html">Sitemap</a>
    894        
    895     <a href="magick-vector-graphics.html#"><img class="d-inline" id="wand" alt="And Now a Touch of Magick" width="16" height="16" src="../images/wand.ico"/></a>
    896        
    897     <a href="http://pgp.mit.edu/pks/lookup?op=get&search=0x89AB63D48277377A">Public Key</a> 
    898     <a href="support.html">Donate</a> 
    899     <a href="https://imagemagick.org/script/contact.php">Contact Us</a>
    900     <br/>
    901     <small> 1999-2019 ImageMagick Studio LLC</small></p>
    902   </footer>
    903 
    904   <!-- Javascript assets -->
    905   <script src="assets/magick.js" crossorigin="anonymous"></script>
    906   <script>window.jQuery || document.write('<script src="https://localhost/ajax/libs/jquery/3.3.1/jquery.min.js"><\/script>')</script>
    907 </body>
    908 </html>
    909 <!-- Magick Cache 5th January 2019 11:43 -->