source: subversion/applications/editors/potlatch/potlatch.pl @ 18704

Last change on this file since 18704 was 16539, checked in by richard, 10 years ago

fix bizarre triple-encoded characters and a couple of other things

  • Property svn:executable set to *
File size: 4.0 KB
Line 
1#!/usr/bin/perl
2
3        # ----------------------------------------------------------------
4        # potlatch.pl
5        # Flash editor for Openstreetmap
6
7        # editions Systeme D / Richard Fairhurst 2006-8
8        # public domain
9
10        # See http://wiki.openstreetmap.org/index.php/Potlatch/Changelog
11        # for revision history
12
13        # To compile:
14        # perl potlatch.pl [options] [destination path]
15
16        # Options:
17        # --ming3       - use Ming 0.3
18        # --dev         - use OSM dev server instead of localhost
19        # --trace       - enable trace windows
20        # Destination path is ./potlatch.swf if not specified
21
22        # You may do what you like with this file, but please think very
23        # carefully before adding dependencies or complicating the user
24        # interface. Thank you!
25        # ----------------------------------------------------------------
26
27        use SWF qw(:ALL);
28        use SWF::Constants qw(:Button);
29        use Cwd 'abs_path';
30
31        # ----- Initialise
32
33        SWF::setScale(20.0);
34        SWF::useSWFVersion(8);
35
36        $m = new SWF::Movie();
37        $m->setDimension(700, 600);
38        $m->setRate(12);
39        $m->setBackground(0xFF,0xFF,0xFF);
40
41        # ----- Get server addresses
42
43        $ofn=''; $debug=0; $dev=0; $ming=0.4;
44        foreach $a (@ARGV) {
45                if    ($a eq '--trace'   ) { $debug=1; }
46                elsif ($a eq '--dev'     ) { $dev  =1; }
47                elsif ($a eq '--local'   ) { $dev  =2; }
48                elsif ($a eq '--absolute') { $dev  =3; }
49                elsif ($a eq '--ming3'   ) { $ming =0.3; }
50                else                                       { $ofn  =$a;  }
51        }
52        if ($ming==0.3) { $cw=1; } else { $cw=1/20; }   # scaling factor
53
54        require "potlatch_assets.pl";
55       
56        if ($dev==1) { $actionscript=<<EOF;
57        System.security.loadPolicyFile("http://api06.dev.openstreetmap.org/api/crossdomain.xml");
58        var apiurl='http://api06.dev.openstreetmap.org/api/0.6/amf';
59        var gpsurl='http://api06.dev.openstreetmap.org/api/0.6/swf/trackpoints';
60        var gpxurl='http://api06.dev.openstreetmap.org/trace/';
61        var tileprefix='';
62        var yahoourl='http://api06.dev.openstreetmap.org/potlatch/ymap2.swf';
63        var gpxsuffix='/data.xml';
64EOF
65        } elsif ($dev==2) { $actionscript=<<EOF;
66        var apiurl='../api/0.6/amf';
67        var gpsurl='../api/0.6/swf/trackpoints';
68        var gpxurl="http://"+this._url.split('/')[2]+"/trace/";
69        var tileprefix='http://127.0.0.1/~richard/cgi-bin/proxy.cgi?url=';
70        var tileprefix='';
71        var yahoourl='/potlatch/ymap2.swf';
72        var gpxsuffix='/data.xml';
73EOF
74        } elsif ($dev==3) { $actionscript=<<EOF;
75        System.security.loadPolicyFile("http://www.openstreetmap.org/api/crossdomain.xml");
76        var apiurl='http://www.openstreetmap.org/api/0.6/amf';
77        var gpsurl='http://www.openstreetmap.org/api/0.6/swf/trackpoints';
78        var gpxurl="http://www.openstreetmap.org/trace/";
79        var tileprefix='';
80        var yahoourl='/potlatch/ymap2.swf';
81        var gpxsuffix='/data.xml';
82EOF
83        } else { $actionscript=<<EOF;
84        System.security.loadPolicyFile("http://www.openstreetmap.org/api/crossdomain.xml");
85        var apiurl='../api/0.6/amf';
86        var gpsurl='../api/0.6/swf/trackpoints';
87        var gpxurl="http://"+this._url.split('/')[2]+"/trace/";
88        var tileprefix='';
89        var yahoourl='/potlatch/ymap2.swf';
90        var gpxsuffix='/data.xml';
91EOF
92        }
93
94        # ----- Read ActionScript files
95
96        $actionscript.="#include 'potlatch.as'\n";
97        while ($actionscript=~/#include '(.+?)'/g) {
98                $fn=$1;
99                unless (exists($ENV{'DOCUMENT_ROOT'})) {
100                        print "Reading $fn               \r";
101                }
102                local $/;
103                open TEXT,$fn or die "Can't open $fn: $!\n";
104                $text=<TEXT>;
105                close TEXT;
106                for ($text=~/([^\x20-\x7F\n\t])/) {
107                        print "Control character ".ord($1)." in $fn\n";
108                }
109                $actionscript=~s/#include '$fn'/$text/;
110                $actionscript=~s/#iconlist/$iconlist/;
111        }
112
113        # $i=0; foreach $l (split(/\n/,$actionscript)) { print "$i: $l\n"; $i++; };
114
115        if ($ming==0.4) { $actionscript=~s/\^/^^/g; }
116        if ($debug) { $actionscript=~s!false;//#debug!true;!g; }
117        $m->add(new SWF::Action($actionscript));
118       
119        # ----- Output file
120
121        $m->nextFrame();
122
123        if (exists($ENV{'DOCUMENT_ROOT'})) {
124                # We're running under a web server, so output to browser
125                print "Content-type: application/x-shockwave-flash\n\n";
126                $m->output(9);
127        } else {
128                # Running from command line, so output to file
129                print localtime()."\n";
130                if ($ofn) { print "Saving to $ofn\n"; $m->save($ofn); }
131                         else { print "Saving to this directory\n"; $m->save("potlatch.swf"); }
132        }
133
Note: See TracBrowser for help on using the repository browser.