[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GT] SVN Commit r609 - trunk/Scripts



Author: thomas
Date: 2008-04-20 06:01:22 +0200 (Sun, 20 Apr 2008)
New Revision: 609

Modified:
   trunk/Scripts/graphic.pl
Log:
Implemented the fix discussed in http://www.geniustrader.org/lists/devel/msg01804.html

Modified: trunk/Scripts/graphic.pl
===================================================================
--- trunk/Scripts/graphic.pl	2008-04-20 03:38:37 UTC (rev 608)
+++ trunk/Scripts/graphic.pl	2008-04-20 04:01:22 UTC (rev 609)
@@ -77,7 +77,10 @@
 
 Full details about the available methods you can use with the --add option follow.
 
+Note that all objects that might affect the scale (such as, e.g., an
+indicator) must be added to a zone before the scale is changed.
 
+
 =item New-Zone(height, [left, right, top, bottom])
 
 This creates a new zone for displaying more indicators. It's created with
@@ -280,7 +283,7 @@
 
 =back
 
-=head1 Examples
+=head2 Examples
 
 ./graphic.pl --add="Switch-Zone(0)" \
              --add="Curve(Indicators::SMA  38, [0,0,255])" \
@@ -505,7 +508,7 @@
 my @datasource;
 my $k = 0;
 my $curr_zone = $z_m;
-my $curr_range = $type eq "none" ? undef : [ $ds->get_value_range() ];
+my @curr_range = $type eq "none" ? undef : $ds->get_value_range();
 my $last_zone_y = 2;
 
 # Update the scale of the zone to match the given range
@@ -576,10 +579,10 @@
 
 sub update_curr_range {
     my ($s, $e) = @_;
-    if (defined($curr_range)) {
-	$curr_range = [ union_range(@{$curr_range}, $s, $e) ];
+    if ( defined($curr_range[0]) ) { # for some unknown reason, defined($curr_range) is true
+	@curr_range = union_range(@curr_range, $s, $e);
     } else {
-	$curr_range = [ $s, $e ];
+	@curr_range = ( $s, $e );
     }
 }
     
@@ -591,38 +594,38 @@
     if ($func =~ /New-?Zone/i) {
 	# Update the scale of the old zone if needed
 	if (! defined($curr_zone->get_default_scale())) {
-	    update_scale($curr_zone, @{$curr_range});
+	    update_scale($curr_zone, @curr_range);
 	}
 	# Create the new zone
 	my $new_zone = GT::Graphics::Zone->new($z_m->width, @args);
 	$zone->add_subzone(0, $last_zone_y++, $new_zone);
 	$curr_zone = $new_zone;
-	$curr_range = undef;
+	@curr_range = undef;
 	$zone->update_size();
     } elsif ($func =~ /Switch-?Zone/i) {
 	# Update the scale of the old zone if needed
 	if (! defined($curr_zone->get_default_scale())) {
-	    update_scale($curr_zone, @{$curr_range});
+	    update_scale($curr_zone, @curr_range);
 	}
 	# Switch to the new zone
 	$curr_zone = $zone->get_subzone(0, $args[0]);
 	my $scale = $curr_zone->get_default_scale();
 	my ($min, $max) = (($scale->get_value_from_coordinate(0, 0))[1],
 	    ($scale->get_value_from_coordinate(0, $curr_zone->height - 1))[1]);
-	$curr_range = [ $min, $max ];
+	@curr_range = ( $min, $max );
     } elsif ($func =~ /Set-?Scale/i) {
 	if ($args[0] =~ /auto/i) {
 	    if (defined($args[1]) && $args[1]) {
-		update_scale($curr_zone, @{$curr_range}, 1);
+		update_scale($curr_zone, @curr_range, 1);
 	    } else {
-		update_scale($curr_zone, @{$curr_range}, 0);
+		update_scale($curr_zone, @curr_range, 0);
 	    }
 	} else {
-	    $curr_range = [ $args[0], $args[1] ];
+	    @curr_range = ( $args[0], $args[1] );
 	    if (defined($args[2]) && $args[2]) {
-		update_scale($curr_zone, @{$curr_range}, 1);
+		update_scale($curr_zone, @curr_range, 1);
 	    } else {
-		update_scale($curr_zone, @{$curr_range}, 0);
+		update_scale($curr_zone, @curr_range, 0);
 	    }
 	}   
     } elsif ($func =~ /Set-?Special-?Scale/i) {
@@ -747,7 +750,7 @@
 
 # Mise �our de l'�elle de la derni� zone si n�ssaire
 if (! defined($curr_zone->get_default_scale())) {
-    update_scale($curr_zone, @{$curr_range});
+    update_scale($curr_zone, @curr_range);
 }