# # Dataset_Options.pm # ## This software product is developed by Esmond Lee and David Moore, ## and copyrighted(C) 1998 by the University of California, San Diego ## (UCSD), with all rights reserved. UCSD administers the CAIDA grant, ## NCR-9711092, under which part of this code was developed. ## ## There is no charge for this software. You can redistribute it and/or ## modify it under the terms of the GNU General Public License, v. 2 dated ## June 1991 which is incorporated by reference herein. This software is ## distributed WITHOUT ANY WARRANTY, IMPLIED OR EXPRESS, OF MERCHANTABILITY ## OR FITNESS FOR A PARTICULAR PURPOSE or that the use of it will not ## infringe on any third party's intellectual property rights. ## ## You should have received a copy of the GNU GPL along with this program. ## ## ## IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY ## PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL ## DAMAGES, INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS ## SOFTWARE, EVEN IF THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF ## THE POSSIBILITY OF SUCH DAMAGE. ## ## THE SOFTWARE PROVIDED HEREIN IS ON AN "AS IS" BASIS, AND THE ## UNIVERSITY OF CALIFORNIA HAS NO OBLIGATION TO PROVIDE MAINTENANCE, ## SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. THE UNIVERSITY ## OF CALIFORNIA MAKES NO REPRESENTATIONS AND EXTENDS NO WARRANTIES ## OF ANY KIND, EITHER IMPLIED OR EXPRESS, INCLUDING, BUT NOT LIMITED ## TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A ## PARTICULAR PURPOSE, OR THAT THE USE OF THE SOFTWARE WILL NOT INFRINGE ## ANY PATENT, TRADEMARK OR OTHER RIGHTS. ## ## ## Contact: graph-dev@caida.org ## ## $VERSION = 3.2; use Chart::Graph::Xmgrace::Base_Dataset_Option; use Carp; package Chart::Graph::Xmgrace::Symbol_Options; @ISA= qw(Chart::Graph::Xmgrace::Base_Dataset_Option); sub _init { my $self = shift; my $color = shift; $self->{name} = "symbol"; $self->{print_order} = ["symbol type","size","color","pattern","fill color", "fill pattern","linewidth","linestyle","char", "char font","skip"]; $self->{length} = 4; $self->{options} = { "symbol type" => "0", "size" => "1.000000", "color" => $color, "pattern" => "1", "fill color" => $color, "fill pattern" => "0", "linewidth" => "1.0", "linestyle" => "1", "char" => "65", "char font" => "0", "skip" => "0", }; } sub fill_color ($$) { my $self = shift; my $val = shift; $self->{options}->{"fill color"} = $val; } sub fill_pattern ($$) { my $self = shift; my $val = shift; $self->{options}->{"fill pattern"} = $val; } sub symbol_char ($$) { my $self = shift; my $val = shift; $self->{options}->{"symbol char"} = $val; } sub char_font ($$) { my $self = shift; my $val = shift; $self->{options}->{"char font"} = $val; } sub print($$$ ) { my $self = shift; my ($handle, $set) = @_; my $string = ""; foreach $option (@{ $self->{"print_order"} }) { my $option_ref = $self->{"options"}; if ($option eq "symbol type") { $string = "$set $self->{name} $option_ref->{$option}\n"; } else { $string = "$set $self->{name} $option $option_ref->{$option}\n"; } $self->_printline($handle, $string, $self->{"length"}); $string = ""; } } package Chart::Graph::Xmgrace::Line_Options; @ISA= qw(Chart::Graph::Xmgrace::Base_Dataset_Option); sub _init { my $self = shift; my $color = shift; $self->{name} = "line"; $self->{print_order} = ["type","linestyle","linewidth","color","pattern"]; $self->{length} = 4; $self->{options} = { "type" => "1", # straight, left stairs, right stairs, segs, 3-segs "linestyle" => "1", # solid, 7 other variations of dotted lines "linewidth" => "1.0", "color" => $color, "pattern" => "1", }; } package Chart::Graph::Xmgrace::Baseline_Options; @ISA= qw(Chart::Graph::Xmgrace::Base_Dataset_Option); sub _init { my $self = shift; my $color = shift; $self->{name} = "baseline"; $self->{print_order} = ["type","status"]; $self->{length} = 4; $self->{options} = { "type" => "0", "status" => "off", }; } package Chart::Graph::Xmgrace::Dropline_Options; @ISA= qw(Chart::Graph::Xmgrace::Base_Dataset_Option); sub _init { my $self = shift; my $color = shift; $self->{name} = "dropline"; $self->{print_order} = ["status"]; $self->{length} = 4; $self->{options} = { "status" => "off", }; } package Chart::Graph::Xmgrace::Fill_Options; @ISA= qw(Chart::Graph::Xmgrace::Base_Dataset_Option); sub _init { my $self = shift; my $color = shift; $self->{name} = "fill"; $self->{print_order} = ["type","rule","color","pattern"]; $self->{length} = 4; $self->{options} = { "type" => "0", "rule" => "0", "color" => $color, "pattern" => "1", }; } package Chart::Graph::Xmgrace::Avalue_Options; @ISA= qw(Chart::Graph::Xmgrace::Base_Dataset_Option); sub _init { my $self = shift; my $color = shift; $self->{name} = "avalue"; $self->{print_order} = ["status","type","char size","font","color", "rot","format","prec","prepend","append","offset"]; $self->{length} = 4; $self->{options} = { "status" => "off", "type" => "2", "char size" => "1.000000", "font" => "0", "color" => $color, # used to be "auto" "rot" => "0", "format" => "general", "prec" => "3", "prepend" => "", "append" => "", "offset" => ["0.000000", "0.000000"], }; } sub char_size ($$) { my $self = shift; my $val = shift; $self->{options}->{"char size"} = $val; } package Chart::Graph::Xmgrace::Errorbar_Options; @ISA= qw(Chart::Graph::Xmgrace::Base_Dataset_Option); sub _init { my $self = shift; my $color = shift; $self->{name} = "errorbar"; $self->{print_order} = ["status","place","color","pattern","size","linewidth", "linestyle","riser linewidth","riser linestyle", "riser clip", "riser clip length"]; $self->{length} = 4; $self->{options} = { "status" => "on", "place" => "normal", "color" => $color, "pattern" => "1", "size" => "1.000000", "linewidth" => "1.0", "linestyle" => "1", "riser linewidth" => "1.0", "riser linestyle" => "1", "riser clip" => "off", "riser clip length" => "0.100000", }; } sub riser_linewidth ($$) { my $self = shift; my $val = shift; $self->{options}->{"riser linewidth"} = $val; } sub riser_linestyle ($$) { my $self = shift; my $val = shift; $self->{options}->{"riser linestyle"} = $val; } sub riser_clip_status ($$) { my $self = shift; my $val = shift; $self->{options}->{"riser clip status"} = $val; } sub riser_clip_length ($$) { my $self = shift; my $val = shift; $self->{options}->{"riser clip length"} = $val; } 1;