├── README.md
├── agpl-3.0.txt
├── css
├── ajax-loader.gif
├── fonts
│ ├── slick.eot
│ ├── slick.svg
│ ├── slick.ttf
│ └── slick.woff
├── jsdotpattern.css
├── slick-theme.css
└── slick.css
├── dotpattern.html
├── js
├── README.md
├── jquery-1.11.1.min.js
├── seedrandom.min.js
├── slick.min.js
├── snap.svg-min.js
├── svg_todataurl.js
└── url.min.js
├── jsdotpattern.js
├── relax_ww.js
├── svg_pattern.sh
├── symbols.js
├── symbols
├── bforest.svg
├── bog.svg
├── corner_up.svg
├── cross1.svg
├── cross2.svg
├── cross_diagonal4.svg
├── dash.svg
├── dash_cross_diagonal.svg
├── dash_diagonal1.svg
├── dash_diagonal1_thin.svg
├── dash_diagonal2.svg
├── dash_diagonal2_thin.svg
├── dash_pair.svg
├── dash_thin.svg
├── dot.svg
├── flower1.svg
├── flower1b.svg
├── flower2.svg
├── flower2b.svg
├── flower3.svg
├── flower3b.svg
├── forest.svg
├── grass.svg
├── grass_small.svg
├── grass_tall.svg
├── grave.svg
├── heap.svg
├── hilal1.svg
├── hilal2.svg
├── mangrove.svg
├── marsh
│ ├── 1.svg
│ └── 2.svg
├── pineapple.svg
├── pixel.svg
├── quarry1.svg
├── quarry2.svg
├── reed
│ ├── 1.svg
│ └── 2.svg
├── reef_coral
│ ├── 1.svg
│ ├── 2.svg
│ ├── 3.svg
│ └── 4.svg
├── rice.svg
├── ring10.svg
├── ring10_thick.svg
├── ring12.svg
├── ring12_thick.svg
├── ring4.svg
├── ring4_thick.svg
├── ring6.svg
├── ring6_thick.svg
├── ring8.svg
├── ring8_thick.svg
├── ring9.svg
├── ring9_thick.svg
├── rock
│ ├── 1.svg
│ ├── 10.svg
│ ├── 11.svg
│ ├── 12.svg
│ ├── 2.svg
│ ├── 3.svg
│ ├── 4.svg
│ ├── 5.svg
│ ├── 6.svg
│ ├── 7.svg
│ ├── 8.svg
│ └── 9.svg
├── rock_thin
│ ├── 1.svg
│ ├── 10.svg
│ ├── 11.svg
│ ├── 12.svg
│ ├── 2.svg
│ ├── 3.svg
│ ├── 4.svg
│ ├── 5.svg
│ ├── 6.svg
│ ├── 7.svg
│ ├── 8.svg
│ └── 9.svg
├── scree
│ ├── 1.svg
│ ├── 2.svg
│ ├── 3.svg
│ ├── 4.svg
│ ├── 5.svg
│ └── 6.svg
├── scrub.svg
├── scrub2.svg
├── scrub_broad_o1.svg
├── scrub_needle_o1.svg
├── star_of_david1.svg
├── star_of_david2.svg
├── star_of_david3.svg
├── sugarcane
│ ├── sugarcane1.svg
│ └── sugarcane2.svg
├── sugarcane1.svg
├── sugarcane2.svg
├── tree.svg
├── tree2.svg
├── tree_a1.svg
├── tree_a2.svg
├── tree_apple.svg
├── tree_as1.svg
├── tree_as2.svg
├── tree_banana.svg
├── tree_banana2.svg
├── tree_broad_e1.svg
├── tree_broad_e2.svg
├── tree_broad_o1.svg
├── tree_broad_o2.svg
├── tree_broad_o3.svg
├── tree_broad_o4.svg
├── tree_broad_o5.svg
├── tree_broad_o6.svg
├── tree_broad_o7.svg
├── tree_f.svg
├── tree_f2.svg
├── tree_f2_small.svg
├── tree_f_small.svg
├── tree_mangrove_o1.svg
├── tree_needle_e1.svg
├── tree_needle_e2.svg
├── tree_needle_e3.svg
├── tree_needle_o1.svg
├── tree_needle_o2.svg
├── tree_needle_o3.svg
├── tree_oilpalm.svg
├── tree_oilpalm2.svg
├── tree_olive.svg
├── tree_olive2.svg
├── tree_pair
│ ├── 1.svg
│ └── 2.svg
├── tree_s1.svg
├── tree_s2.svg
├── tree_star_1.svg
├── tree_star_1a.svg
├── tree_star_1b.svg
├── tree_star_2.svg
├── tree_star_2a.svg
├── tree_star_2b.svg
├── trees1
│ ├── 1.svg
│ └── 2.svg
├── trees2
│ ├── 1.svg
│ └── 2.svg
├── trees3
│ ├── 1.svg
│ └── 2.svg
├── trees4
│ ├── 1.svg
│ └── 2.svg
├── trees5
│ ├── 1.svg
│ └── 2.svg
├── vpixel
│ ├── 1.svg
│ ├── 2.svg
│ ├── 3.svg
│ ├── 4.svg
│ └── 5.svg
├── wheat.svg
├── wood
│ ├── 1.svg
│ ├── 10.svg
│ ├── 11.svg
│ ├── 12.svg
│ ├── 2.svg
│ ├── 3.svg
│ ├── 4.svg
│ ├── 5.svg
│ ├── 6.svg
│ ├── 7.svg
│ ├── 8.svg
│ └── 9.svg
├── wood1
│ ├── 1.svg
│ ├── 2.svg
│ ├── 3.svg
│ ├── 4.svg
│ ├── 5.svg
│ └── 6.svg
├── wood2
│ ├── 1.svg
│ ├── 2.svg
│ ├── 3.svg
│ ├── 4.svg
│ ├── 5.svg
│ └── 6.svg
├── wood2a
│ ├── 1.svg
│ ├── 2.svg
│ ├── 3.svg
│ ├── 4.svg
│ ├── 5.svg
│ └── 6.svg
└── wood_s
│ ├── 1.svg
│ ├── 10.svg
│ ├── 11.svg
│ ├── 12.svg
│ ├── 2.svg
│ ├── 3.svg
│ ├── 4.svg
│ ├── 5.svg
│ ├── 6.svg
│ ├── 7.svg
│ ├── 8.svg
│ └── 9.svg
└── symbols_json.sh
/README.md:
--------------------------------------------------------------------------------
1 |
2 | Periodic dot and symbol pattern generator
3 | =========================================
4 |
5 | This is the source code of a javascript tool to generate random periodic
6 | dot and symbol patterns for use in map rendering. You can try it out
7 | in the [online version](http://www.imagico.de/map/jsdotpattern.php).
8 |
9 | The tool is completely in javascript, no server side components. It makes
10 | use of the following javascript libraries:
11 |
12 | * [JQuery](http://jquery.com/download/)
13 | * [Snap.svg](http://snapsvg.io/)
14 | * [SVG.toDataURL()](https://github.com/sampumon/SVG.toDataURL)
15 | * [seedrandom](https://github.com/davidbau/seedrandom)
16 | * [slick.js](http://github.com/kenwheeler/slick)
17 |
18 | Adding your own symbols
19 | -----------------------
20 |
21 | The content of the symbol library is stored in a javascript object in `symbols.js`.
22 | This is generated with the shell script `symbols_json.sh` from the individual SVG files
23 | in the `symbols` subdirectory. You can add your own symbols by putting them there and
24 | running the script again. Note this is not very robust so you might have troubles when
25 | you add complex SVGs. Have a look at the existing files for the expected structure.
26 |
27 | Licensed under AGPLv3.
28 |
29 |
--------------------------------------------------------------------------------
/css/ajax-loader.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imagico/jsdotpattern/d20f66f86fc36f7d6b16d892633fa98ed3b3b151/css/ajax-loader.gif
--------------------------------------------------------------------------------
/css/fonts/slick.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imagico/jsdotpattern/d20f66f86fc36f7d6b16d892633fa98ed3b3b151/css/fonts/slick.eot
--------------------------------------------------------------------------------
/css/fonts/slick.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
15 |
--------------------------------------------------------------------------------
/css/fonts/slick.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imagico/jsdotpattern/d20f66f86fc36f7d6b16d892633fa98ed3b3b151/css/fonts/slick.ttf
--------------------------------------------------------------------------------
/css/fonts/slick.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imagico/jsdotpattern/d20f66f86fc36f7d6b16d892633fa98ed3b3b151/css/fonts/slick.woff
--------------------------------------------------------------------------------
/css/jsdotpattern.css:
--------------------------------------------------------------------------------
1 |
2 | #Svg_Test {
3 | margin: 1px;
4 | }
5 |
6 | #pointdata {
7 | margin-top: 12px;
8 | font-family: monospace;
9 | font-size: 90%;
10 | clear: both;
11 | }
12 |
13 | .code, textarea {
14 | font-family: monospace;
15 | font-size: 90%;
16 | }
17 |
18 | #msg {
19 | color: #000080;
20 | font-style:italic;
21 | }
22 |
23 | #B_casing {
24 | vertical-align: bottom;
25 | }
26 |
27 | .input-color {
28 | height:16px;
29 | }
30 |
31 | .dotpattern {
32 | font-size: 12px;
33 | padding-top:1px;
34 | }
35 |
36 | .rim {
37 | vertical-align: top;
38 | border-color: #CCCCCC;
39 | background-color: #d0d0d0;
40 | border: 1px solid;
41 | padding: 0px;
42 | }
43 |
44 | div.form {
45 | padding: 6px;
46 | border: 1px solid #c0c0c0;
47 | background-color: #f0f0f0;
48 | float: left;
49 | }
50 |
51 | input.nb {
52 | width: 21px;
53 | }
54 |
55 | p em, ul em {
56 | font-style:italic;
57 | }
58 |
59 | td {
60 | vertical-align: top;
61 | }
62 |
63 | .help, .cmdseq {
64 | display: none;
65 | }
66 |
67 | .active {
68 | color: #AA4411;
69 | background-color: #E0D0C0;
70 | }
71 |
72 | .inactive {
73 | color: #dddddd;
74 | background-color: #808AC0;
75 | }
76 |
77 | .inactive:hover {
78 | border: 1px outset #404050;
79 | }
80 |
81 | .sz-switch {
82 | border: 1px solid #505050;
83 | padding: 1px;
84 | padding-right: 3px;
85 | padding-left: 3px;
86 | cursor:pointer;
87 | }
88 |
89 |
90 | .sym-switch-use, .sym-switch-add {
91 | border: 1px solid #505050;
92 | padding-right: 2px;
93 | padding-left: 2px;
94 | cursor:pointer;
95 | vertical-align: middle;
96 | }
97 |
98 | .sym-sel-entry {
99 | padding-top: 2px;
100 | border-bottom: 1px solid #808080;
101 | height: 20px;
102 | }
103 |
104 | .sym-sel-caption {
105 | padding: 3px;
106 | width:100px;
107 | overflow: hidden;
108 | display: inline-block;
109 | vertical-align: middle;
110 | }
111 |
112 | .sym-sel-svg {
113 | height:16px;
114 | padding-right: 1px;
115 | padding-left: 1px;
116 | overflow: hidden;
117 | margin-left: 1px;
118 | border-left: 1px solid #808080;
119 | display: inline-block;
120 | vertical-align: middle;
121 | }
122 |
123 | .sym-sel-svg-wrapper {
124 | width:16px;
125 | height:16px;
126 | overflow: hidden;
127 | display: inline-block;
128 | }
129 |
130 | .sym-sel-svg-wrapper svg {
131 | max-width:16px;
132 | max-height:16px;
133 | }
134 |
135 | .sym-sel-caption {
136 | font-size: 85%;
137 | }
138 |
139 | .svg-code {
140 | width:396px;
141 | }
142 |
143 | #cmd_seq {
144 | display: inline-block;
145 | vertical-align:top;
146 | color: #000080;
147 | font-family: monospace;
148 | font-size: 90%;
149 | max-width: 780px;
150 | word-wrap: break-word;
151 | }
152 |
153 | #sym_selector_box {
154 | width: 420px;
155 | overflow: scroll;
156 | }
157 |
158 | .sym-multi {
159 | color: red;
160 | font-size: 14px;
161 | font-weight: bold;
162 | border: 2px solid red;
163 | padding:-1px;
164 | border-radius: 4px;
165 | }
166 |
167 | .sym-active {
168 | background-color: #f0d0c0;
169 | }
170 |
171 | .sym-stuff {
172 | position: relative;
173 | min-height: 256px;
174 | }
175 |
176 | .sym-bar {
177 | padding-left: 30px;
178 | position: absolute;
179 | bottom: 0px;
180 | background-color: #f0f0f0;
181 | }
182 |
183 | #sym_preview {
184 | position: absolute;
185 | left: 0px;
186 | bottom: 0px;
187 | border-color: #CCCCCC;
188 | border: 1px solid;
189 | width: 24px;
190 | height: 24px;
191 | overflow: hidden;
192 | }
193 |
--------------------------------------------------------------------------------
/css/slick-theme.css:
--------------------------------------------------------------------------------
1 | @charset 'UTF-8';
2 | /* Slider */
3 | .slick-loading .slick-list
4 | {
5 | background: #fff url('./ajax-loader.gif') center center no-repeat;
6 | }
7 |
8 | /* Icons */
9 | @font-face
10 | {
11 | font-family: 'slick';
12 | font-weight: normal;
13 | font-style: normal;
14 |
15 | src: url('./fonts/slick.eot');
16 | src: url('./fonts/slick.eot?#iefix') format('embedded-opentype'), url('./fonts/slick.woff') format('woff'), url('./fonts/slick.ttf') format('truetype'), url('./fonts/slick.svg#slick') format('svg');
17 | }
18 | /* Arrows */
19 | .slick-prev,
20 | .slick-next
21 | {
22 | font-size: 0;
23 | line-height: 0;
24 |
25 | position: absolute;
26 | top: 50%;
27 |
28 | display: block;
29 |
30 | width: 20px;
31 | height: 20px;
32 | margin-top: -10px;
33 | padding: 0;
34 |
35 | cursor: pointer;
36 |
37 | color: transparent;
38 | border: none;
39 | outline: none;
40 | background: transparent;
41 | }
42 | .slick-prev:hover,
43 | .slick-prev:focus,
44 | .slick-next:hover,
45 | .slick-next:focus
46 | {
47 | color: transparent;
48 | outline: none;
49 | background: transparent;
50 | }
51 | .slick-prev:hover:before,
52 | .slick-prev:focus:before,
53 | .slick-next:hover:before,
54 | .slick-next:focus:before
55 | {
56 | opacity: 1;
57 | }
58 | .slick-prev.slick-disabled:before,
59 | .slick-next.slick-disabled:before
60 | {
61 | opacity: .25;
62 | }
63 |
64 | .slick-prev:before,
65 | .slick-next:before
66 | {
67 | font-family: 'slick';
68 | font-size: 20px;
69 | line-height: 1;
70 |
71 | opacity: .75;
72 | color: #000080;
73 |
74 | -webkit-font-smoothing: antialiased;
75 | -moz-osx-font-smoothing: grayscale;
76 | }
77 |
78 | .slick-prev
79 | {
80 | left: -25px;
81 | }
82 | [dir='rtl'] .slick-prev
83 | {
84 | right: -25px;
85 | left: auto;
86 | }
87 | .slick-prev:before
88 | {
89 | content: '←';
90 | }
91 | [dir='rtl'] .slick-prev:before
92 | {
93 | content: '→';
94 | }
95 |
96 | .slick-next
97 | {
98 | right: -25px;
99 | }
100 | [dir='rtl'] .slick-next
101 | {
102 | right: auto;
103 | left: -25px;
104 | }
105 | .slick-next:before
106 | {
107 | content: '→';
108 | }
109 | [dir='rtl'] .slick-next:before
110 | {
111 | content: '←';
112 | }
113 |
114 | /* Dots */
115 | .slick-slider
116 | {
117 | margin-bottom: 4px;
118 | }
119 |
120 | .slick-dots
121 | {
122 | position: absolute;
123 | bottom: -45px;
124 |
125 | display: block;
126 |
127 | width: 100%;
128 | padding: 0;
129 |
130 | list-style: none;
131 |
132 | text-align: center;
133 | }
134 | .slick-dots li
135 | {
136 | position: relative;
137 |
138 | display: inline-block;
139 |
140 | width: 20px;
141 | height: 20px;
142 | margin: 0 5px;
143 | padding: 0;
144 |
145 | cursor: pointer;
146 | }
147 | .slick-dots li button
148 | {
149 | font-size: 0;
150 | line-height: 0;
151 |
152 | display: block;
153 |
154 | width: 20px;
155 | height: 20px;
156 | padding: 5px;
157 |
158 | cursor: pointer;
159 |
160 | color: transparent;
161 | border: 0;
162 | outline: none;
163 | background: transparent;
164 | }
165 | .slick-dots li button:hover,
166 | .slick-dots li button:focus
167 | {
168 | outline: none;
169 | }
170 | .slick-dots li button:hover:before,
171 | .slick-dots li button:focus:before
172 | {
173 | opacity: 1;
174 | }
175 | .slick-dots li button:before
176 | {
177 | font-family: 'slick';
178 | font-size: 6px;
179 | line-height: 20px;
180 |
181 | position: absolute;
182 | top: 0;
183 | left: 0;
184 |
185 | width: 20px;
186 | height: 20px;
187 |
188 | content: '•';
189 | text-align: center;
190 |
191 | opacity: .25;
192 | color: black;
193 |
194 | -webkit-font-smoothing: antialiased;
195 | -moz-osx-font-smoothing: grayscale;
196 | }
197 | .slick-dots li.slick-active button:before
198 | {
199 | opacity: .75;
200 | color: black;
201 | }
202 |
--------------------------------------------------------------------------------
/css/slick.css:
--------------------------------------------------------------------------------
1 | /* Slider */
2 | .slick-slider
3 | {
4 | position: relative;
5 |
6 | display: block;
7 |
8 | -moz-box-sizing: border-box;
9 | box-sizing: border-box;
10 |
11 | -webkit-user-select: none;
12 | -moz-user-select: none;
13 | -ms-user-select: none;
14 | user-select: none;
15 |
16 | -webkit-touch-callout: none;
17 | -khtml-user-select: none;
18 | -ms-touch-action: pan-y;
19 | touch-action: pan-y;
20 | -webkit-tap-highlight-color: transparent;
21 | }
22 |
23 | .slick-list
24 | {
25 | position: relative;
26 |
27 | display: block;
28 | overflow: hidden;
29 |
30 | margin: 0;
31 | padding: 0;
32 | }
33 | .slick-list:focus
34 | {
35 | outline: none;
36 | }
37 | .slick-list.dragging
38 | {
39 | cursor: pointer;
40 | cursor: hand;
41 | }
42 |
43 | .slick-slider .slick-track,
44 | .slick-slider .slick-list
45 | {
46 | -webkit-transform: translate3d(0, 0, 0);
47 | -moz-transform: translate3d(0, 0, 0);
48 | -ms-transform: translate3d(0, 0, 0);
49 | -o-transform: translate3d(0, 0, 0);
50 | transform: translate3d(0, 0, 0);
51 | }
52 |
53 | .slick-track
54 | {
55 | position: relative;
56 | top: 0;
57 | left: 0;
58 |
59 | display: block;
60 | }
61 | .slick-track:before,
62 | .slick-track:after
63 | {
64 | display: table;
65 |
66 | content: '';
67 | }
68 | .slick-track:after
69 | {
70 | clear: both;
71 | }
72 | .slick-loading .slick-track
73 | {
74 | visibility: hidden;
75 | }
76 |
77 | .slick-slide
78 | {
79 | display: none;
80 | float: left;
81 |
82 | height: 100%;
83 | min-height: 1px;
84 | }
85 | [dir='rtl'] .slick-slide
86 | {
87 | float: right;
88 | }
89 | .slick-slide img
90 | {
91 | display: block;
92 | }
93 | .slick-slide.slick-loading img
94 | {
95 | display: none;
96 | }
97 | .slick-slide.dragging img
98 | {
99 | pointer-events: none;
100 | }
101 | .slick-initialized .slick-slide
102 | {
103 | display: block;
104 | }
105 | .slick-loading .slick-slide
106 | {
107 | visibility: hidden;
108 | }
109 | .slick-vertical .slick-slide
110 | {
111 | display: block;
112 |
113 | height: auto;
114 |
115 | border: 1px solid transparent;
116 | }
--------------------------------------------------------------------------------
/js/README.md:
--------------------------------------------------------------------------------
1 |
2 | Javascript libraries used by jsdotpattern
3 | =========================================
4 |
5 | * [JQuery](http://jquery.com/download/) - MIT license
6 | * [Snap.svg](http://snapsvg.io/) - Apache 2 license
7 | * [SVG.toDataURL()](https://github.com/sampumon/SVG.toDataURL) - MIT license
8 | * [slick](http://kenwheeler.github.io/slick/) - MIT license
9 | * [seedrandom](https://github.com/davidbau/seedrandom) - MIT license
10 | * [url](https://github.com/websanova/js-url) - MIT license
11 |
--------------------------------------------------------------------------------
/js/seedrandom.min.js:
--------------------------------------------------------------------------------
1 | !function(a,b){function c(c,j,k){var n=[];j=1==j?{entropy:!0}:j||{};var s=g(f(j.entropy?[c,i(a)]:null==c?h():c,3),n),t=new d(n),u=function(){for(var a=t.g(m),b=p,c=0;q>a;)a=(a+c)*l,b*=l,c=t.g(1);for(;a>=r;)a/=2,b/=2,c>>>=1;return(a+c)/b};return u.int32=function(){return 0|t.g(4)},u.quick=function(){return t.g(4)/(4*(1<<30))},u["double"]=u,g(i(t.S),a),(j.pass||k||function(a,c,d,f){return f&&(f.S&&e(f,t),a.state=function(){return e(t,{})}),d?(b[o]=a,c):a})(u,s,"global"in j?j.global:this==b,j.state)}function d(a){var b,c=a.length,d=this,e=0,f=d.i=d.j=0,g=d.S=[];for(c||(a=[c++]);l>e;)g[e]=e++;for(e=0;l>e;e++)g[e]=g[f=s&f+a[e%c]+(b=g[e])],g[f]=b;(d.g=function(a){for(var b,c=0,e=d.i,f=d.j,g=d.S;a--;)b=g[e=s&e+1],c=c*l+g[s&(g[e]=g[f=s&f+b])+(g[f]=b)];return d.i=e,d.j=f,c})(l)}function e(a,b){return b.i=a.i,b.j=a.j,b.S=a.S.slice(),b}function f(a,b){var c,d=[],e=typeof a;if(b&&"object"==e)for(c in a)try{d.push(f(a[c],b-1))}catch(g){}return d.length?d:"string"==e?a:a+"\0"}function g(a,b){for(var c,d=a+"",e=0;e3?"/":"")+c.slice(3,c.length).join("/").split("?")[0].split("#")[0];var g=e.pathname;"/"===g.charAt(g.length-1)&&(g=g.substring(0,g.length-1));var h=e.hostname,i=h.split("."),j=g.split("/");if("hostname"===b)return h;if("domain"===b)return/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/.test(h)?h:i.slice(-2).join(".");if("sub"===b)return i.slice(0,i.length-2).join(".");if("port"===b)return e.port;if("protocol"===b)return e.protocol.split(":")[0];if("auth"===b)return e.auth;if("user"===b)return e.auth.split(":")[0];if("pass"===b)return e.auth.split(":")[1]||"";if("path"===b)return e.pathname;if("."===b.charAt(0)){if(b=b.substring(1),a(b))return b=parseInt(b,10),i[0>b?i.length+b:b-1]||""}else{if(a(b))return b=parseInt(b,10),j[0>b?j.length+b:b]||"";if("file"===b)return j.slice(-1)[0];if("filename"===b)return j.slice(-1)[0].split(".")[0];if("fileext"===b)return j.slice(-1)[0].split(".")[1]||"";if("?"===b.charAt(0)||"#"===b.charAt(0)){var k=d,l=null;if("?"===b.charAt(0)?k=(k.split("?")[1]||"").split("#")[0]:"#"===b.charAt(0)&&(k=k.split("#")[1]||""),!b.charAt(1))return k;b=b.substring(1),k=k.split("&");for(var m=0,n=k.length;n>m;m++)if(l=k[m].split("="),l[0]===b)return l[1]||"";return null}}return""}}(),"undefined"!=typeof jQuery&&jQuery.extend({url:function(a,b){return window.url(a,b)}});
--------------------------------------------------------------------------------
/svg_pattern.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | # ------------------------------------------------------------
3 | # sanitize a jsdotpattern produced SVG for use with Mapnik
4 | # ------------------------------------------------------------
5 |
6 | SRC="$1"
7 | TARGET="$2"
8 | CLIP="$3"
9 | NOCLIP=
10 |
11 | if [ -z "$1" ] || [ -z "$2" ] ; then
12 | echo "Usage: $0