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

Last change on this file since 14716 was 12402, checked in by richard, 11 years ago

Potlatch for API 0.6 now saving ways happily with node versioning... I think

  • Property svn:executable set to *
File size: 3.5 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        var apiurl='http://main.dev.openstreetmap.org/api/0.6/amf';
54        var gpsurl='http://main.dev.openstreetmap.org/api/0.6/swf/trackpoints';
55        var gpxurl='http://main.dev.openstreetmap.org/trace/';
56        var tileprefix='';
57        var yahoourl='http://main.dev.openstreetmap.org/potlatch/ymap2.swf';
58        var gpxsuffix='/data.xml';
59EOF
60        } elsif ($dev==2) { $actionscript=<<EOF;
61        var apiurl='../api/0.6/amf';
62        var gpsurl='../api/0.6/swf/trackpoints';
63        var gpxurl="http://"+this._url.split('/')[2]+"/trace/";
64        var tileprefix='http://127.0.0.1/~richard/cgi-bin/proxy.cgi?url=';
65        var tileprefix='';
66        var yahoourl='/potlatch/ymap2.swf';
67        var gpxsuffix='/data.xml';
68EOF
69        } elsif ($dev==3) { $actionscript=<<EOF;
70        var apiurl='http://www.openstreetmap.org/api/0.5/amf';
71        var gpsurl='http://www.openstreetmap.org/api/0.5/swf/trackpoints';
72        var gpxurl="http://www.openstreetmap.org/trace/";
73        var tileprefix='';
74        var yahoourl='/potlatch/ymap2.swf';
75        var gpxsuffix='/data.xml';
76EOF
77        } else { $actionscript=<<EOF;
78        var apiurl='../api/0.6/amf';
79        var gpsurl='../api/0.6/swf/trackpoints';
80        var gpxurl="http://"+this._url.split('/')[2]+"/trace/";
81        var tileprefix='';
82        var yahoourl='/potlatch/ymap2.swf';
83        var gpxsuffix='/data.xml';
84EOF
85        }
86
87        # ----- Read ActionScript files
88
89        $actionscript.="#include 'potlatch.as'\n";
90        while ($actionscript=~/#include '(.+?)'/g) {
91                $fn=$1;
92                unless (exists($ENV{'DOCUMENT_ROOT'})) {
93                        print "Reading $fn               \r";
94                }
95                local $/;
96                open TEXT,$fn or die "Can't openÊ$fn: $!\n";
97                $text=<TEXT>;
98                close TEXT;
99                for ($text=~/([^\x20-\x7F\n\t])/) {
100                        print "Control character ".ord($1)." in $fn\n";
101                }
102                $actionscript=~s/#include '$fn'/$text/;
103        }
104
105        # $i=0; foreach $l (split(/\n/,$actionscript)) { print "$i: $l\n"; $i++; };
106
107        if ($debug) { $actionscript=~s!false;//#debug!true;!g; }
108        $m->add(new SWF::Action($actionscript));
109       
110        # ----- Output file
111
112        $m->nextFrame();
113
114        if (exists($ENV{'DOCUMENT_ROOT'})) {
115                # We're running under a web server, so output to browser
116                print "Content-type: application/x-shockwave-flash\n\n";
117                $m->output(9);
118        } else {
119                # Running from command line, so output to file
120                print localtime()."\n";
121                if ($ofn) { print "Saving to $ofn\n"; $m->save($ofn); }
122                         else { print "Saving to this directory\n"; $m->save("potlatch.swf"); }
123        }
124
Note: See TracBrowser for help on using the repository browser.