|
| 1 | +extends ../common/templates/index.jade |
| 2 | + |
| 3 | +block append mainContent |
| 4 | + div#lines_table |
| 5 | + table(antialiasing=2) |
| 6 | + tr |
| 7 | + th(rowspan=2) Feature |
| 8 | + th(colspan=3) GeoJS - Current |
| 9 | + th(colspan=2) Leaflet |
| 10 | + th(rowspan=2) Mapbox GL |
| 11 | + th(colspan=2) GeoJS 0.10.5 |
| 12 | + th GeoJS - Current |
| 13 | + tr |
| 14 | + th WebGL |
| 15 | + th Canvas 2D |
| 16 | + th SVG |
| 17 | + th Canvas 2D |
| 18 | + th SVG |
| 19 | + th WebGL |
| 20 | + th SVG |
| 21 | + th Debug WebGL |
| 22 | + tr.option(option='basic') |
| 23 | + th Basic Lines |
| 24 | + td.geojs(rowspan=2, renderer='vgl') |
| 25 | + td.geojs(rowspan=2, renderer='canvas') |
| 26 | + td.geojs(rowspan=2, renderer='d3') |
| 27 | + td.leaflet(rowspan=2, library='leaflet', renderer='canvas') |
| 28 | + td.leaflet(rowspan=2, library='leaflet') |
| 29 | + td.mapboxgl(rowspan=2, library='mapboxgl') |
| 30 | + td.geojs(rowspan=2, renderer='vgl', version='0.10.5') |
| 31 | + td.geojs(rowspan=2, renderer='d3', version='0.10.5') |
| 32 | + td.geojs(rowspan=2, renderer='vgl', debug='true') |
| 33 | + tr.option(option='basic') |
| 34 | + td |
| 35 | + p Lines with default options for each rendering method. |
| 36 | + tr.option(option='color', strokeColor='yellow,black,red', strokeOpacity=1) |
| 37 | + th Varying Color |
| 38 | + td.geojs(rowspan=2, renderer='vgl') |
| 39 | + td.unsupported(rowspan=2) |
| 40 | + td.unsupported(rowspan=2) |
| 41 | + td.unsupported(rowspan=2) |
| 42 | + td.unsupported(rowspan=2) |
| 43 | + td.unsupported(rowspan=2) |
| 44 | + td.geojs(rowspan=2, renderer='vgl', version='0.10.5') |
| 45 | + td.unsupported(rowspan=2) |
| 46 | + td.geojs(rowspan=2, renderer='vgl', debug='true') |
| 47 | + tr.option(option='color') |
| 48 | + td |
| 49 | + p Lines that vary by color from vertex to vertex, cycling through yellow, black, and red. |
| 50 | + p On corners, the vertex color is at the far end of the miter. There will probably always be a clear color step along the miter line. |
| 51 | + tr.option(option='stroke', strokeOpacity='0.5,1') |
| 52 | + th Varying Opacity |
| 53 | + td.geojs(rowspan=2, renderer='vgl') |
| 54 | + td.unsupported(rowspan=2) |
| 55 | + td.unsupported(rowspan=2) |
| 56 | + td.unsupported(rowspan=2) |
| 57 | + td.unsupported(rowspan=2) |
| 58 | + td.unsupported(rowspan=2) |
| 59 | + td.geojs(rowspan=2, renderer='vgl', version='0.10.5') |
| 60 | + td.unsupported(rowspan=2) |
| 61 | + td.geojs(rowspan=2, renderer='vgl', debug='true') |
| 62 | + tr.option(option='stroke') |
| 63 | + td |
| 64 | + p Lines that vary by opacity from vertex to vertex, cycling between 0.5 and 1. |
| 65 | + tr.option(option='width', strokeWidth='9,12', link_strokeWidth='36,48') |
| 66 | + th Varying Width |
| 67 | + td.geojs(rowspan=2, renderer='vgl') |
| 68 | + td.unsupported(rowspan=2) |
| 69 | + td.unsupported(rowspan=2) |
| 70 | + td.unsupported(rowspan=2) |
| 71 | + td.unsupported(rowspan=2) |
| 72 | + td.unsupported(rowspan=2) |
| 73 | + td.geojs(rowspan=2, renderer='vgl', version='0.10.5') |
| 74 | + td.unsupported(rowspan=2) |
| 75 | + td.geojs(rowspan=2, renderer='vgl', debug='true') |
| 76 | + tr.option(option='width') |
| 77 | + td |
| 78 | + p Lines that vary by width from vertex to vertex, alternating between 6 and 12 pixels. |
| 79 | + p On corners, the width is virtually at the far end of the miter. |
| 80 | + tr.option(option='offset', strokeOffset=-1) |
| 81 | + th Stroke Offset |
| 82 | + td.geojs(rowspan=2, renderer='vgl') |
| 83 | + td.unsupported(rowspan=2) |
| 84 | + td.unsupported(rowspan=2) |
| 85 | + td.unsupported(rowspan=2) |
| 86 | + td.unsupported(rowspan=2) |
| 87 | + td.mapboxgl(rowspan=2, library='mapboxgl') |
| 88 | + td.unsupported(rowspan=2) |
| 89 | + td.unsupported(rowspan=2) |
| 90 | + td.geojs(rowspan=2, renderer='vgl', debug='true') |
| 91 | + tr.option(option='offset') |
| 92 | + td |
| 93 | + p Lines can be offset to one side or the other of center. This can very from vertex to vertex, but is only shown offset all the way to the left here. |
| 94 | + p Offset ranges from -1 (left) to +1 (right) along the direction of the stroke. 0 (default) is centered. |
| 95 | + tr.option(option='linecap-round', lineCap='round') |
| 96 | + th Round Line Cap |
| 97 | + td.geojs(rowspan=2, renderer='vgl') |
| 98 | + td.geojs(rowspan=2, renderer='canvas') |
| 99 | + td.geojs(rowspan=2, renderer='d3') |
| 100 | + td.leaflet(rowspan=2, library='leaflet', renderer='canvas') |
| 101 | + td.leaflet(rowspan=2, library='leaflet') |
| 102 | + td.mapboxgl(rowspan=2, library='mapboxgl') |
| 103 | + td.unsupported(rowspan=2) |
| 104 | + td.unsupported(rowspan=2) |
| 105 | + td.geojs(rowspan=2, renderer='vgl', debug='true') |
| 106 | + tr.option(option='linecap-round') |
| 107 | + td |
| 108 | + p End caps can be 'butt' (default), 'round', or 'square'. |
| 109 | + p In GeoJS's WebGL renderer, the end caps can vary by vertex (not shown). |
| 110 | + tr.option(option='linecap-square', lineCap='square') |
| 111 | + th Square Line Cap |
| 112 | + td.geojs(rowspan=2, renderer='vgl') |
| 113 | + td.geojs(rowspan=2, renderer='canvas') |
| 114 | + td.geojs(rowspan=2, renderer='d3') |
| 115 | + td.leaflet(rowspan=2, library='leaflet', renderer='canvas') |
| 116 | + td.leaflet(rowspan=2, library='leaflet') |
| 117 | + td.mapboxgl(rowspan=2, library='mapboxgl') |
| 118 | + td.unsupported(rowspan=2) |
| 119 | + td.unsupported(rowspan=2) |
| 120 | + td.geojs(rowspan=2, renderer='vgl', debug='true') |
| 121 | + tr.option(option='linecap-square') |
| 122 | + td |
| 123 | + p End caps can be 'butt' (default), 'round', or 'square'. |
| 124 | + tr.option(option='linejoin-bevel', lineJoin='bevel') |
| 125 | + th Bevel Line Join |
| 126 | + td.geojs(rowspan=2, renderer='vgl') |
| 127 | + td.geojs(rowspan=2, renderer='canvas') |
| 128 | + td.geojs(rowspan=2, renderer='d3') |
| 129 | + td.leaflet(rowspan=2, library='leaflet', renderer='canvas') |
| 130 | + td.leaflet(rowspan=2, library='leaflet') |
| 131 | + td.mapboxgl(rowspan=2, library='mapboxgl') |
| 132 | + td.unsupported(rowspan=2) |
| 133 | + td.unsupported(rowspan=2) |
| 134 | + td.geojs(rowspan=2, renderer='vgl', debug='true') |
| 135 | + tr.option(option='linejoin-bevel') |
| 136 | + td |
| 137 | + p Line joins can be 'miter' (default), 'bevel', 'round', or 'miter-clip'. |
| 138 | + p In GeoJS's WebGL renderer, the joins can vary by vertex (not shown). |
| 139 | + tr.option(option='linejoin-round', lineJoin='round') |
| 140 | + th Round Line Join |
| 141 | + td.geojs(rowspan=2, renderer='vgl') |
| 142 | + td.geojs(rowspan=2, renderer='canvas') |
| 143 | + td.geojs(rowspan=2, renderer='d3') |
| 144 | + td.leaflet(rowspan=2, library='leaflet', renderer='canvas') |
| 145 | + td.leaflet(rowspan=2, library='leaflet') |
| 146 | + td.mapboxgl(rowspan=2, library='mapboxgl') |
| 147 | + td.unsupported(rowspan=2) |
| 148 | + td.unsupported(rowspan=2) |
| 149 | + td.geojs(rowspan=2, renderer='vgl', debug='true') |
| 150 | + tr.option(option='linejoin-round') |
| 151 | + td |
| 152 | + p Line joins can be 'miter' (default), 'bevel', 'round', or 'miter-clip'. |
| 153 | + tr.option(option='linejoin-miterclip', lineJoin='miter-clip', miterLimit=4) |
| 154 | + th Miter-clip Line Join |
| 155 | + td.geojs(rowspan=2, renderer='vgl') |
| 156 | + td.unsupported(rowspan=2) |
| 157 | + td.unsupported(rowspan=2) |
| 158 | + td.unsupported(rowspan=2) |
| 159 | + td.unsupported(rowspan=2) |
| 160 | + td.unsupported(rowspan=2) |
| 161 | + td.unsupported(rowspan=2) |
| 162 | + td.unsupported(rowspan=2) |
| 163 | + td.geojs(rowspan=2, renderer='vgl', debug='true') |
| 164 | + tr.option(option='linejoin-miterclip') |
| 165 | + td |
| 166 | + p Line joins can be 'miter' (default), 'bevel', 'round', or 'miter-clip'. |
| 167 | + p The miter-clip line join is part of a proposed path standard. If the join exceeds the miter limit, it is beveled at that distance rather than right at the join. |
| 168 | + tr.option(option='miterlimit', miterLimit=4) |
| 169 | + th Miter Limit |
| 170 | + td.geojs(rowspan=2, renderer='vgl') |
| 171 | + td.geojs(rowspan=2, renderer='canvas') |
| 172 | + td.geojs(rowspan=2, renderer='d3') |
| 173 | + td.unsupported(rowspan=2) |
| 174 | + td.leaflet(rowspan=2, library='leaflet') |
| 175 | + td.mapboxgl(rowspan=2, library='mapboxgl') |
| 176 | + td.unsupported(rowspan=2) |
| 177 | + td.unsupported(rowspan=2) |
| 178 | + td.geojs(rowspan=2, renderer='vgl', debug='true') |
| 179 | + tr.option(option='miterlimit') |
| 180 | + td |
| 181 | + p Use a miter limit of 4. Other examples use a miter limit of 10 (except the miter-clip line join). |
| 182 | + p Leaflet doesn't expose miter limit directly, but if SVG is used, the paths can be modified to change the miter limit. |
| 183 | + tr.option(option='antialiasing0', antialiasing=0) |
| 184 | + th Antialiasing of 0 |
| 185 | + td.geojs(rowspan=2, renderer='vgl') |
| 186 | + td.unsupported(rowspan=2) |
| 187 | + td.unsupported(rowspan=2) |
| 188 | + td.unsupported(rowspan=2) |
| 189 | + td.unsupported(rowspan=2) |
| 190 | + td.mapboxgl(rowspan=2, library='mapboxgl') |
| 191 | + td.unsupported(rowspan=2) |
| 192 | + td.unsupported(rowspan=2) |
| 193 | + td.geojs(rowspan=2, renderer='vgl', debug='true') |
| 194 | + tr.option(option='antialiasing0') |
| 195 | + td |
| 196 | + p Antialiasing affects how the edges of lines are smoothed. A value of 1 or 2 produces smooth results, 0 hard results, and large values generate a blurred outline. |
| 197 | + tr.option(option='antialiasing1-4', antialiasing=6, link_antialiasing=24) |
| 198 | + th Antialiasing of 1/2 the line width |
| 199 | + td.geojs(rowspan=2, renderer='vgl') |
| 200 | + td.unsupported(rowspan=2) |
| 201 | + td.unsupported(rowspan=2) |
| 202 | + td.unsupported(rowspan=2) |
| 203 | + td.unsupported(rowspan=2) |
| 204 | + td.mapboxgl(rowspan=2, library='mapboxgl') |
| 205 | + td.unsupported(rowspan=2) |
| 206 | + td.unsupported(rowspan=2) |
| 207 | + td.geojs(rowspan=2, renderer='vgl', debug='true') |
| 208 | + tr.option(option='antialiasing1-4') |
| 209 | + td |
| 210 | + p Antialiasing affects how the edges of lines are smoothed. A value of 1 or 2 produces smooth results, 0 hard results, and large values generate a blurred outline. |
| 211 | + tr.option(option='thin-lines', strokeWidth=0.25, referenceLines='false') |
| 212 | + th Thin Lines |
| 213 | + td.geojs(rowspan=2, renderer='vgl') |
| 214 | + td.geojs(rowspan=2, renderer='canvas') |
| 215 | + td.geojs(rowspan=2, renderer='d3') |
| 216 | + td.leaflet(rowspan=2, library='leaflet', renderer='canvas') |
| 217 | + td.leaflet(rowspan=2, library='leaflet') |
| 218 | + td.mapboxgl(rowspan=2, library='mapboxgl') |
| 219 | + td.geojs(rowspan=2, renderer='vgl', version='0.10.5') |
| 220 | + td.geojs(rowspan=2, renderer='d3', version='0.10.5') |
| 221 | + td.geojs(rowspan=2, renderer='vgl', debug='true') |
| 222 | + tr.option(option='thin-lines') |
| 223 | + td |
| 224 | + p Comparison of a line width of 0.25 pixels. The reference lines are hidden. |
| 225 | + tr.option(option='roads', data='roads', lines=10000, referenceLines='false', strokeWidth=2, strokeOpacity=1, x=-73.7593015, y=42.8496799, zoom=13) |
| 226 | + th 10,000 Line Segments |
| 227 | + td.geojs(rowspan=2, renderer='vgl') |
| 228 | + td.geojs(rowspan=2, renderer='canvas') |
| 229 | + td.geojs(rowspan=2, renderer='d3') |
| 230 | + td.leaflet(rowspan=2, library='leaflet', renderer='canvas') |
| 231 | + td.leaflet(rowspan=2, library='leaflet') |
| 232 | + td.mapboxgl(rowspan=2, library='mapboxgl') |
| 233 | + td.geojs(rowspan=2, renderer='vgl', version='0.10.5') |
| 234 | + td.geojs(rowspan=2, renderer='d3', version='0.10.5') |
| 235 | + td.geojs(rowspan=2, renderer='vgl', debug='true') |
| 236 | + tr.option(option='roads') |
| 237 | + td |
| 238 | + p A modest number of line segments from a real-world sample. |
| 239 | + div#lines_list |
| 240 | + b Compare line drawing between libraries, versions, and rendering methods |
| 241 | + div |
| 242 | + label(for='feature') Feature |
| 243 | + select#feature |
| 244 | + div#info |
| 245 | + div#main_list |
| 246 | + span |
| 247 | + div.title GeoJS - Current - WebGL |
| 248 | + div.entry |
| 249 | + span |
| 250 | + div.title GeoJS - Current - Canvas |
| 251 | + div.entry |
| 252 | + span |
| 253 | + div.title GeoJS - Current - SVG |
| 254 | + div.entry |
| 255 | + span |
| 256 | + div.title Leaflet - 1.0.2 - Canvas |
| 257 | + div.entry |
| 258 | + span |
| 259 | + div.title Leaflet - 1.0.2 - SVG |
| 260 | + div.entry |
| 261 | + span |
| 262 | + div.title Mapbox GL - 0.28.0 - WebGL |
| 263 | + div.entry |
| 264 | + span |
| 265 | + div.title GeoJS - 0.10.5 - WebGL |
| 266 | + div.entry |
| 267 | + span |
| 268 | + div.title GeoJS - 0.10.5 - SVG |
| 269 | + div.entry |
| 270 | + span |
| 271 | + div.title GeoJS - Current - Debug WebGL |
| 272 | + div.entry |
| 273 | + |
0 commit comments