source: subversion/applications/rendering/mapnik/mkshield.pl @ 25652

Last change on this file since 25652 was 11614, checked in by jonb, 11 years ago

Revert shield symbols and script back to previous, larger, size (-r 11258)

  • Property svn:executable set to *
File size: 3.9 KB
Line 
1#!/usr/bin/perl
2
3use strict;
4use warnings;
5
6use GD;
7
8mkshield("motorway_shield1", 17, 17, 128, 155, 192);
9mkshield("motorway_shield2", 24, 17, 128, 155, 192);
10mkshield("motorway_shield3", 31, 17, 128, 155, 192);
11mkshield("motorway_shield4", 38, 17, 128, 155, 192);
12mkshield("motorway_shield5", 45, 17, 128, 155, 192);
13mkshield("motorway_shield6", 52, 17, 128, 155, 192);
14
15mkshield("trunk_shield1", 17, 17, 127, 201, 127);
16mkshield("trunk_shield2", 24, 17, 127, 201, 127);
17mkshield("trunk_shield3", 31, 17, 127, 201, 127);
18mkshield("trunk_shield4", 38, 17, 127, 201, 127);
19mkshield("trunk_shield5", 45, 17, 127, 201, 127);
20mkshield("trunk_shield6", 52, 17, 127, 201, 127);
21mkshield("trunk_shield7", 59, 17, 127, 201, 127);
22mkshield("trunk_shield8", 66, 17, 127, 201, 127);
23
24mkshield("primary_shield1", 17, 17, 228, 109, 113);
25mkshield("primary_shield2", 24, 17, 228, 109, 113);
26mkshield("primary_shield3", 31, 17, 228, 109, 113);
27mkshield("primary_shield4", 38, 17, 228, 109, 113);
28mkshield("primary_shield5", 45, 17, 228, 109, 113);
29mkshield("primary_shield6", 52, 17, 228, 109, 113);
30mkshield("primary_shield7", 59, 17, 228, 109, 113);
31mkshield("primary_shield8", 66, 17, 228, 109, 113);
32
33mkshield("secondary_shield1", 17, 17, 253, 191, 111);
34mkshield("secondary_shield2", 24, 17, 253, 191, 111);
35mkshield("secondary_shield3", 31, 17, 253, 191, 111);
36mkshield("secondary_shield4", 38, 17, 253, 191, 111);
37mkshield("secondary_shield5", 45, 17, 253, 191, 111);
38mkshield("secondary_shield6", 52, 17, 253, 191, 111);
39mkshield("secondary_shield7", 59, 17, 253, 191, 111);
40mkshield("secondary_shield8", 66, 17, 253, 191, 111);
41
42mkshield("tertiary_shield1", 17, 17, 153, 153, 153);
43mkshield("tertiary_shield2", 24, 17, 153, 153, 153);
44mkshield("tertiary_shield3", 31, 17, 153, 153, 153);
45mkshield("tertiary_shield4", 38, 17, 153, 153, 153);
46mkshield("tertiary_shield5", 45, 17, 153, 153, 153);
47mkshield("tertiary_shield6", 52, 17, 153, 153, 153);
48mkshield("tertiary_shield7", 59, 17, 153, 153, 153);
49mkshield("tertiary_shield8", 66, 17, 153, 153, 153);
50
51exit 0;
52
53sub mkshield
54{
55    my $name = shift;
56    my $width = shift;
57    my $height = shift;
58    my $r = shift;
59    my $g = shift;
60    my $b = shift;
61
62    my $shield = GD::Image->new($width, $height, 1);
63
64    $shield->alphaBlending(0);
65    $shield->saveAlpha(1);
66
67    my $white = $shield->colorAllocate(255, 255, 255);
68    my $border1 = $shield->colorAllocate($r, $g, $b);
69    my $border2 = $shield->colorAllocateAlpha(round($r * 1.2578), round($g * 1.1677), round($b * 1.0833), 8);
70    my $border3 = $shield->colorAllocateAlpha(round($r * 1.2031), round($g * 1.1290), round($b * 1.0677), 21);
71    my $border4 = $shield->colorAllocateAlpha($r, $g, $b, 43);
72    my $border5 = $shield->colorAllocateAlpha(round($r * 1.0391), round($g * 1.0258), round($b * 1.0104), 8);
73
74    $shield->filledRectangle(2, 2, $width - 3, $height - 3, $white);
75
76    $shield->line(0, 1, 0, $height - 2, $border1);
77    $shield->line($width - 1, 1, $width - 1, $height - 2, $border1);
78    $shield->line(1, 0, $width - 2, 0, $border1);
79    $shield->line(1, $height - 1, $width - 2, $height - 1, $border1);
80
81    $shield->line(1, 2, 1, $height - 3, $border2);
82    $shield->line($width - 2, 2, $width - 2, $height - 3, $border2);
83
84    $shield->line(2, 1, $width - 3, 1, $border3);
85    $shield->line(2, $height - 2, $width - 3, $height - 2, $border3);
86
87    $shield->setPixel(0, 0, $border4);
88    $shield->setPixel(0, $height - 1, $border4);
89    $shield->setPixel($width - 1, $height - 1, $border4);
90    $shield->setPixel($width - 1, 0, $border4);
91
92    $shield->setPixel(1, 1, $border5);
93    $shield->setPixel(1, $height - 2, $border5);
94    $shield->setPixel($width - 2, $height - 2, $border5);
95    $shield->setPixel($width - 2, 1, $border5);
96
97    open(SHIELD, "> ${name}.png") || die "Can't open ${name}.png: $!";
98    binmode(SHIELD);
99    print SHIELD $shield->png;
100    close(SHIELD);
101
102    return;
103}
104
105sub round
106{
107    my $n = shift;
108    my $r = sprintf("%.0f", $n);
109
110    $r = 255 if $r > 255;
111
112    return $r;
113}
Note: See TracBrowser for help on using the repository browser.