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