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

Last change on this file since 29461 was 19007, checked in by richard, 10 years ago

fix GPS trace slowness

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