User:3247's Image Wizard/Scripts/braille.pl
From Wikimedia Commons, the free media repository
< User:3247's Image Wizard | Scripts(Redirected from User:3247/braille.pl)
#!/usr/bin/perl # # braille.pl - Create Braille images # Copyright (C) 2005 Claus Faerber <claus@faerber.name> # # This program is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by the # Free Software Foundation; either version 2 of the License, or (at your # option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General # Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # As a special exception, permission is granted to include the source code # of this program into a document and copy, distribute and/or modify that # document under the terms of the GNU Free Documentation License, Version # 1.2 or any later version published by the Free Software Foundation; with # no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. # # If you write modifications of your own for this software, it is your # choice whether to permit this exception to apply to your modifications. # If you do not wish that, delete this exception notice. # %data = ( 'A1' => '1', 'B2' => '101', 'Bracket' => '001111', 'C3' => '11', 'CapitalSign' => '000001', 'Comma' => '001', 'D4' => '1101', 'E5' => '1001', 'ExclamationPoint' => '00111', 'F6' => '111', 'G7' => '1111', 'H8' => '1011', 'Hyphen' => '000011', 'I9' => '0110', 'J0' => '0111', 'K' => '10001', 'L' => '101010', 'M' => '110010', 'N' => '110110', 'NumberSign' => '010111', 'O' => '100110', 'P' => '111010', 'Period'=> '001101', 'Q' => '111110', 'QuestionMark' => '001011', 'QuoteClose' => '000111', 'QuoteOpen' => '001011', 'R' => '101110', 'S' => '011010', 'Semicolon' => '001010', 'T' => '011110', 'U' => '100011', 'V' => '101011', 'W' => '011101', 'X' => '110011', 'Y' => '110111', 'Z' => '100111', );
my $x = 154;
my $y = 215;
my $r = 15;
my $str = 1;
foreach (keys(%data)) {
open STDOUT, ">Braille_$_.svg";
print "<?xml version=\"1.0\" standalone=\"no\"?>\n";
print "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n";
print "<svg width=\"154\" height=\"215\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\">\n";
print "<rect x=\"0\" y=\"0\" width=\"154\" height=\"215\" fill=\"white\" stroke-width=\"1\" stroke=\"black\" />\n";
for( $i=0; $i<6; $i++ )
{
my $xp = ($i % 2);
my $yp = int($i/2);
printf "<circle cx=\"%f\" cy=\"%f\"",
($x-4*$r)/3 * (1+$xp) + (2*$xp+1)*$r,
($y-6*$r)/4 * (1+$yp) + (2*$yp+1)*$r;
if(int(substr($data{$_},$i,1)))
{
printf " r=\"%f\"", $r;
printf " fill=\"black\"";
} else {
printf " r=\"%f\"", $r-$str/2;
printf " stroke=\"black\" stroke-width=\"%d\" fill=\"none\"", $str;
}
print " />\n";
}
print "</svg>";
};