mirror of
https://gitea.nishi.boats/pyrite-dev/milsko
synced 2026-01-09 02:43:30 +00:00
cursor
git-svn-id: http://svn2.nishi.boats/svn/milsko/trunk@180 b9cfdab3-6d41-4d17-bbe4-086880011989
This commit is contained in:
138
tools/cursor.pl
Executable file
138
tools/cursor.pl
Executable file
@@ -0,0 +1,138 @@
|
||||
#!/usr/bin/env perl
|
||||
# $Id$
|
||||
my $font = $ARGV[0];
|
||||
my $name = $ARGV[1];
|
||||
my $out = $ARGV[2];
|
||||
my $char = "";
|
||||
my $bmp = 0;
|
||||
|
||||
my $w = 0;
|
||||
my $h = 0;
|
||||
my $ln = 0;
|
||||
my $com = 0;
|
||||
my $nocom = 0;
|
||||
|
||||
my $MAX = 16;
|
||||
|
||||
if ($name) {
|
||||
print("/* \$Id\$ */\n");
|
||||
print("#include <Mw/Milsko.h>\n");
|
||||
print("\n");
|
||||
}
|
||||
|
||||
open(IN, "<", $font) or die;
|
||||
while (my $l = <IN>) {
|
||||
$l =~ s/\r?\n$//g;
|
||||
if (!$name && ($l =~ /^STARTCHAR ("?)(.+)\1$/)) {
|
||||
if (!($2 =~ /_mask$/)) {
|
||||
print("$2\n");
|
||||
}
|
||||
}
|
||||
elsif ($name && ($l =~ /^COPYRIGHT ("?)(.+)\1$/)) {
|
||||
if (!$com) {
|
||||
print("/**\n");
|
||||
}
|
||||
else {
|
||||
print(" *\n");
|
||||
}
|
||||
print(" * Copyright notice:\n");
|
||||
print(" * $2\n");
|
||||
if (!$com) {
|
||||
print(" */\n");
|
||||
}
|
||||
}
|
||||
elsif ($name && ($l =~ /^COMMENT ("?)(.+)\1$/)) {
|
||||
if (!$nocom) {
|
||||
if (!$com) {
|
||||
$com = 1;
|
||||
print("/**\n");
|
||||
}
|
||||
print(" * $2\n");
|
||||
}
|
||||
}
|
||||
elsif ($name && ($l =~ /^ENDPROPERTIES$/)) {
|
||||
if ($com) {
|
||||
print(" */\n");
|
||||
$com = 0;
|
||||
$nocom = 1;
|
||||
}
|
||||
}
|
||||
elsif (
|
||||
$name
|
||||
&& ( ($l =~ /^STARTCHAR ("?)\Q$name\E\1$/)
|
||||
|| ($l =~ /^STARTCHAR ("?)\Q${name}\E_(mask)\1$/))
|
||||
)
|
||||
{
|
||||
my $suffix = "";
|
||||
if ($2) {
|
||||
$suffix = "Mask";
|
||||
}
|
||||
$char = $name;
|
||||
print("MwCursor MwCursor$out$suffix = {\n");
|
||||
}
|
||||
elsif ($name
|
||||
&& $char
|
||||
&& ($l =~ /^BBX (\-?[0-9]+) (\-?[0-9]+) (\-?[0-9]+) (\-?[0-9]+)$/))
|
||||
{
|
||||
print(" $1, $2, $3, $4,\n");
|
||||
|
||||
$w = $1 + 0;
|
||||
$h = $2 + 0;
|
||||
}
|
||||
elsif ($name && $char && ($l =~ /^BITMAP$/)) {
|
||||
print(" {\n");
|
||||
$bmp = 1;
|
||||
$ln = 0;
|
||||
}
|
||||
elsif ($name && $char && ($l =~ /^ENDCHAR$/)) {
|
||||
$bmp = 0;
|
||||
$char = "";
|
||||
for (my $i = 0 ; $i < ($MAX - $h) ; $i++) {
|
||||
if ($i == ($MAX - $h - 1)) {
|
||||
print(" 0\n");
|
||||
}
|
||||
else {
|
||||
print(" 0,\n");
|
||||
}
|
||||
}
|
||||
print(" }\n");
|
||||
print("};\n");
|
||||
}
|
||||
elsif ($bmp) {
|
||||
my $txt = "";
|
||||
|
||||
my $c = 0;
|
||||
my $n = 0;
|
||||
my $incr = 0;
|
||||
|
||||
my $num = 0;
|
||||
|
||||
while ($c < $w) {
|
||||
if (($c % 8) == 0) {
|
||||
$n = hex("0x" . substr($l, $incr, 2));
|
||||
$incr += 2;
|
||||
}
|
||||
|
||||
$num = $num << 1;
|
||||
if ($n & (1 << 7)) {
|
||||
$num = $num | 1;
|
||||
$txt = $txt . "#";
|
||||
}
|
||||
else {
|
||||
$num = $num | 0;
|
||||
$txt = $txt . ".";
|
||||
}
|
||||
|
||||
$n = $n << 1;
|
||||
$c = $c + 1;
|
||||
}
|
||||
$ln = $ln + 1;
|
||||
if ($ln == $MAX) {
|
||||
print(" $num /* $txt */\n");
|
||||
}
|
||||
else {
|
||||
print(" $num, /* $txt */\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
close(IN);
|
||||
Reference in New Issue
Block a user