• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
87command 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
251pop 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 ]
311pop 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
320pop 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
336pop 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 ...
343pop 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
364pop defs
365clip-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
406nonzero</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
412userSpaceOnUse
413objectBoundingBox</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
419replace
420floodfill
421filltoborder
422reset</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
432line-through
433overline
434underline</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
452nonzero</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
470normal
471ultra-condensed
472extra-condensed
473condensed
474semi-condensed
475semi-expanded
476expanded
477extra-expanded
478ultra-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
484normal
485italic
486oblique</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
492normal
493bold
494100
495200
496300
497400
498500
499600
500700
501800
502900</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
508userSpaceOnUse
509objectBoundingBox</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
515North
516NorthEast
517West
518Center
519East
520SouthWest
521South
522SouthEast</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
718replace
719floodfill
720filltoborder
721reset</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
839round
840square</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
846miter
847round</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&amp;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 -->