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

Last change on this file since 15001 was 15000, checked in by richard, 10 years ago

Build fixes

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