Home | History | Annotate | Download | only in config
      1 <?xml version="1.0" encoding="ISO-8859-1"?>
      2 <!DOCTYPE thresholds [
      3 <!ELEMENT thresholds (threshold)+>
      4 <!ELEMENT threshold (description , levels)>
      5 <!ELEMENT description (CDATA)>
      6 <!ELEMENT levels (CDATA)>
      7 <!ATTLIST threshold map ID #REQUIRED>
      8 <!ATTLIST levels width CDATA #REQUIRED>
      9 <!ATTLIST levels height CDATA #REQUIRED>
     10 <!ATTLIST levels divisor CDATA #REQUIRED>
     11 ]>
     12 <!--
     13   Threshold Maps for Ordered Posterized Dither
     14 
     15   Each "<threshold>" element defines the map name, description, and an array
     16   of "levels" used to provide the threshold map for ordered dithering and
     17   digital halftoning.
     18 
     19   The "alias" attribute provides a backward compatible name for this threshold
     20   map (pre-dating IM v6.2.9-6), and are deprecated.
     21 
     22   The description is a english description of what the threshold map achieves
     23   and is only used for 'listing' the maps.
     24 
     25   The map itself is a rectangular array of integers or threshold "levels"
     26   of the given "width" and "height" declared within the enclosing <levels>
     27   element.  That is "width*height" integers or "levels" *must* be provided
     28   within each map.
     29 
     30   Each of the "levels" integer values (each value representing the threshold
     31   intensity "level/divisor" at which that pixel is turned on.  The "levels"
     32   integers given can be any postive integers between "0" and the "divisor",
     33   excluding those limits.
     34 
     35   The "divisor" not only defines the upper limit and threshold divisor for each
     36   "level" but also the total number of pseudo-levels the threshold mapping
     37   creates and fills with a dither pattern.  That is a ordered bitmap dither
     38   of a pure greyscale gradient will use a maximum of "divisor" ordered bitmap
     39   patterns, including the patterns with all the pixels 'on' and all the pixel
     40   'off'. It may define less patterns than that, but the color channels will
     41   be thresholded in units based on "divisor".
     42 
     43   Alternatively for a multi-level posterization, ImageMagick inserts
     44   "divisor-2" dither patterns (as defined by the threshold map) between each of
     45   channel color level produced.
     46 
     47   For example the map "o2x2" has a divisor of 5, which will define 3 bitmap
     48   patterns plus the patterns with all pixels 'on' and 'off'.  A greyscale
     49   gradient will thus have 5 distinct areas.
     50 -->
     51 <thresholds>
     52 
     53 <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
     54   Minimal Dither and Non-Dither Threshold Maps
     55 -->
     56   <threshold map="threshold" alias="1x1">
     57     <description>Threshold 1x1 (non-dither)</description>
     58     <levels width="1" height="1" divisor="2">
     59         1
     60     </levels>
     61   </threshold>
     62 
     63   <threshold map="checks" alias="2x1">
     64     <description>Checkerboard 2x1 (dither)</description>
     65     <levels width="2" height="2" divisor="3">
     66        1 2
     67        2 1
     68     </levels>
     69   </threshold>
     70 
     71 <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
     72   (dispersed) Ordered Dither Patterns
     73 -->
     74   <threshold map="o2x2" alias="2x2">
     75     <description>Ordered 2x2 (dispersed)</description>
     76     <levels width="2" height="2" divisor="5">
     77        1  3
     78        4  2
     79     </levels>
     80   </threshold>
     81 
     82   <threshold map="o3x3" alias="3x3">
     83     <description>Ordered 3x3 (dispersed)</description>
     84     <levels width="3" height="3" divisor="10">
     85         3  7  4
     86         6  1  9
     87         2  8  5
     88     </levels>
     89   </threshold>
     90 
     91   <threshold map="o4x4" alias="4x4">
     92     <!--
     93        From "Dithering Algorithms"
     94        http://www.efg2.com/Lab/Library/ImageProcessing/DHALF.TXT
     95      -->
     96     <description>Ordered 4x4 (dispersed)</description>
     97     <levels width="4" height="4" divisor="17">
     98        1   9   3  11
     99       13   5  15   7
    100        4  12   2  10
    101       16   8  14   6
    102     </levels>
    103   </threshold>
    104 
    105   <threshold map="o8x8" alias="8x8">
    106     <!-- Extracted from original 'OrderedDither()' Function -->
    107     <description>Ordered 8x8 (dispersed)</description>
    108     <levels width="8" height="8" divisor="65">
    109          1  49  13  61   4  52  16  64
    110         33  17  45  29  36  20  48  32
    111          9  57   5  53  12  60   8  56
    112         41  25  37  21  44  28  40  24
    113          3  51  15  63   2  50  14  62
    114         35  19  47  31  34  18  46  30
    115         11  59   7  55  10  58   6  54
    116         43  27  39  23  42  26  38  22
    117     </levels>
    118   </threshold>
    119 
    120 <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    121   Halftones - Angled 45 degrees
    122 
    123   Initially added to ImageMagick by Glenn Randers-Pehrson, IM v6.2.8-6,
    124   modified to be more symmetrical with intensity by Anthony, IM v6.2.9-7
    125 
    126   These patterns initially start as circles, but then form diamonds
    127   pattern at the 50% threshold level, before forming negated circles,
    128   as it approached the other threshold extereme.
    129 -->
    130   <threshold map="h4x4a" alias="4x1">
    131     <description>Halftone 4x4 (angled)</description>
    132     <levels width="4" height="4" divisor="9">
    133        4  2  7  5
    134        3  1  8  6
    135        7  5  4  2
    136        8  6  3  1
    137     </levels>
    138   </threshold>
    139 
    140   <threshold map="h6x6a" alias="6x1">
    141     <description>Halftone 6x6 (angled)</description>
    142     <levels width="6" height="6" divisor="19">
    143        14  13  10   8   2   3
    144        16  18  12   7   1   4
    145        15  17  11   9   6   5
    146         8   2   3  14  13  10
    147         7   1   4  16  18  12
    148         9   6   5  15  17  11
    149     </levels>
    150   </threshold>
    151 
    152   <threshold map="h8x8a" alias="8x1">
    153     <description>Halftone 8x8 (angled)</description>
    154     <levels width="8" height="8" divisor="33">
    155        13   7   8  14  17  21  22  18
    156         6   1   3   9  28  31  29  23
    157         5   2   4  10  27  32  30  24
    158        16  12  11  15  20  26  25  19
    159        17  21  22  18  13   7   8  14
    160        28  31  29  23   6   1   3   9
    161        27  32  30  24   5   2   4  10
    162        20  26  25  19  16  12  11  15
    163     </levels>
    164   </threshold>
    165 
    166 <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    167   Halftones - Orthogonally Aligned, or Un-angled
    168 
    169   Initially added by Anthony Thyssen, IM v6.2.9-5 using techniques from
    170   "Dithering & Halftoning" by Gernot Haffmann
    171   http://www.fho-emden.de/~hoffmann/hilb010101.pdf
    172 
    173   These patterns initially start as circles, but then form square
    174   pattern at the 50% threshold level, before forming negated circles,
    175   as it approached the other threshold extereme.
    176 -->
    177   <threshold map="h4x4o">
    178     <description>Halftone 4x4 (orthogonal)</description>
    179     <levels width="4" height="4" divisor="17">
    180         7  13  11   4
    181        12  16  14   8
    182        10  15   6   2
    183         5   9   3   1
    184     </levels>
    185   </threshold>
    186 
    187   <threshold map="h6x6o">
    188     <description>Halftone 6x6 (orthogonal)</description>
    189     <levels width="6" height="6" divisor="37">
    190         7  17  27  14   9   4
    191        21  29  33  31  18  11
    192        24  32  36  34  25  22
    193        19  30  35  28  20  10
    194         8  15  26  16   6   2
    195         5  13  23  12   3   1
    196     </levels>
    197   </threshold>
    198 
    199   <threshold map="h8x8o">
    200     <description>Halftone 8x8 (orthogonal)</description>
    201     <levels width="8" height="8" divisor="65">
    202         7  21  33  43  36  19   9   4
    203        16  27  51  55  49  29  14  11
    204        31  47  57  61  59  45  35  23
    205        41  53  60  64  62  52  40  38
    206        37  44  58  63  56  46  30  22
    207        15  28  48  54  50  26  17  10
    208         8  18  34  42  32  20   6   2
    209         5  13  25  39  24  12   3   1
    210     </levels>
    211   </threshold>
    212 
    213   <threshold map="h16x16o">
    214     <!--
    215        Direct extract from "Dithering & Halftoning" by Gernot Haffmann.
    216        This may need some fine tuning for symmetry of the halftone dots,
    217        as it was a mathematically formulated pattern.
    218     -->
    219     <description>Halftone 16x16 (orthogonal)</description>
    220     <levels width="16" height="16" divisor="257">
    221         4  12  24  44  72 100 136 152 150 134  98  70  42  23  11   3
    222         7  16  32  52  76 104 144 160 158 142 102  74  50  31  15   6
    223        19  27  40  60  92 132 168 180 178 166 130  90  58  39  26  18
    224        36  48  56  80 124 176 188 204 203 187 175 122  79  55  47  35
    225        64  68  84 116 164 200 212 224 223 211 199 162 114  83  67  63
    226        88  96 112 156 192 216 232 240 239 231 214 190 154 111  95  87
    227       108 120 148 184 208 228 244 252 251 243 226 206 182 147 119 107
    228       128 140 172 196 219 235 247 256 255 246 234 218 194 171 139 127
    229       126 138 170 195 220 236 248 253 254 245 233 217 193 169 137 125
    230       106 118 146 183 207 227 242 249 250 241 225 205 181 145 117 105
    231        86  94 110 155 191 215 229 238 237 230 213 189 153 109  93  85
    232        62  66  82 115 163 198 210 221 222 209 197 161 113  81  65  61
    233        34  46  54  78 123 174 186 202 201 185 173 121  77  53  45  33
    234        20  28  37  59  91 131 167 179 177 165 129  89  57  38  25  17
    235         8  13  29  51  75 103 143 159 157 141 101  73  49  30  14   5
    236         1   9  21  43  71  99 135 151 149 133  97  69  41  22  10   2
    237     </levels>
    238   </threshold>
    239 
    240 <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    241   Halftones - Orthogonally Expanding Circle Patterns
    242 
    243   Added by Glenn Randers-Pehrson, 4 Nov 2010, ImageMagick 6.6.5-6
    244 
    245   Rather than producing a diamond 50% threshold pattern, these
    246   continue to generate larger (overlapping) circles.  They are
    247   more like a true halftone pattern formed by covering a surface
    248   with either pure white or pure black circular dots.
    249 
    250   WARNING: true halftone patterns only use true circles even in
    251   areas of highly varying intensity.  Threshold dither patterns
    252   can generate distorted circles in such areas.
    253 -->
    254 
    255   <threshold map="c5x5b" alias="c5x5">
    256     <description>Circles 5x5 (black)</description>
    257     <levels width="5" height="5" divisor="26">
    258          1 21 16 15  4
    259          5 17 20 19 14
    260          6 21 25 24 12
    261          7 18 22 23 11
    262          2  8  9 10  3
    263     </levels>
    264   </threshold>
    265 
    266 
    267   <threshold map="c5x5w">
    268     <description>Circles 5x5 (white)</description>
    269     <levels width="5" height="5" divisor="26">
    270         25 21 10 11 22
    271         20  9  6  7 12
    272         19  5  1  2 13
    273         18  8  4  3 14
    274         24 17 16 15 23
    275     </levels>
    276   </threshold>
    277 
    278   <threshold map="c6x6b" alias="c6x6">
    279     <description>Circles 6x6 (black)</description>
    280     <levels width="6" height="6" divisor="37">
    281          1  5 14 13 12  4
    282          6 22 28 27 21 11
    283         15 29 35 34 26 20
    284         16 30 36 33 25 19
    285          7 23 31 32 24 10
    286          2  8 17 18  9  3
    287     </levels>
    288   </threshold>
    289 
    290   <threshold map="c6x6w">
    291     <description>Circles 6x6 (white)</description>
    292     <levels width="6" height="6" divisor="37">
    293         36 32 23 24 25 33
    294         31 15  9 10 16 26
    295         22  8  2  3 11 17
    296         21  7  1  4 12 18
    297         30 14  6  5 13 27
    298         35 29 20 19 28 34
    299     </levels>
    300   </threshold>
    301 
    302   <threshold map="c7x7b" alias="c7x7">
    303     <description>Circles 7x7 (black)</description>
    304     <levels width="7" height="7" divisor="50">
    305         3  9 18 28 17  8  2
    306        10 24 33 39 32 23  7
    307        19 34 44 48 43 31 16
    308        25 40 45 49 47 38 27
    309        20 35 41 46 42 29 15
    310        11 21 36 37 28 22  6
    311         4 12 13 26 14  5  1
    312     </levels>
    313   </threshold>
    314 
    315 
    316   <threshold map="c7x7w">
    317     <description>Circles 7x7 (white)</description>
    318     <levels width="7" height="7" divisor="50">
    319        47 41 32 22 33 42 48
    320        40 26 17 11 18 27 43
    321        31 16  6  2  7 19 34
    322        25 10  5  1  3 12 23
    323        30 15  9  4  8 20 35
    324        39 29 14 13 21 28 44
    325        46 38 37 24 36 45 49
    326     </levels>
    327   </threshold>
    328 
    329 
    330 <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    331   Special Purpose Dithers
    332 -->
    333 
    334 </thresholds>
    335