Get rid of some warnings in CXGN::Cview::Chromosome::Vector
[cview.git] / lib / CXGN / Cview / Marker / AGP.pm
blob002f6bfdf7ff3543b1fb401902db34ac20c2db89
2 =head1 NAME
4 CXGN::Cview::Marker::AGP - a class to draw markers that represent regions as defined in an AGP file
6 =head1 DESCRIPTION
8 CXGN::Cview::Marker::AGP inherits from L<CXGN::Cview::Marker>.
10 my $m = CXGN::Cview::Marker::AGP->new();
11 $m->set_offset(30);
12 $m->set_north_range(10);
13 $m->set_south_range(10);
15 =head1 AUTHOR
17 Lukas Mueller (lam87@cornell.edu)
19 =head1 FUNCTIONS
21 This class implements the following functions:
23 =cut
25 use strict;
27 package CXGN::Cview::Marker::AGP;
29 use CXGN::Cview::Marker;
30 use CXGN::Cview::Marker::Physical;
32 use base qw / CXGN::Cview::Marker::Physical /;
34 =head2 function new
36 Synopsis:
37 Arguments:
38 Returns:
39 Side effects:
40 Description:
42 =cut
44 sub new {
45 my $class = shift;
46 my $chromosome = shift;
47 my $self = $class -> SUPER::new($chromosome);
49 # my $range_label = CXGN::Cview::Label::RangeLabel->new();
50 # $range_label->set_horizontal_offset($self->get_label()->get_horizontal_offset());
51 # $range_label->set_vertical_offset($self->get_label()->get_vertical_offset());
52 # $range_label->set_name($self->get_label()->get_name());
53 # $range_label->set_reference_point($self->get_label()->get_reference_point());
54 # $range_label->set_enclosing_rect($self->get_label()->get_enclosing_rect());
55 # $self->set_label($range_label);
57 $self->get_label()->set_stacking_level(1);
58 $self->set_label_side("right");
59 $self->set_hilite_chr_region(1);
60 $self->set_region_hilite_color(100, 100, 150);
61 return $self;
64 # =head2 functions get_north_range(), set_north_range()
66 # Synopsis: $m->get_north_range()
67 # Arguments: setter: the north range of the range marker
68 # in the units of the map
69 # Returns: getter: the north range
70 # Side effects: the markers range drawn on the northern side
71 # reflects this value
72 # Description:
74 # =cut
76 # sub get_north_range {
77 # my $self=shift;
78 # return $self->{north_range};
79 # }
82 # sub set_north_range {
83 # my $self=shift;
84 # my $cM = shift;
85 # $self->{north_range}=$cM;
87 # }
89 # =head2 functions get_south_range(), set_south_range()
91 # Synopsis: see north range
92 # Arguments:
93 # Returns:
94 # Side effects:
95 # Description:
97 # =cut
99 # sub get_south_range {
100 # my $self=shift;
102 # return $self->{south_range};
105 # sub set_south_range {
106 # my $self=shift;
107 # my $cM = shift;
108 # $self->{south_range}=$cM;
114 sub render {
115 my $self = shift;
116 my $image = shift;
118 # calculate the pos in pixels of the northern range limit
120 my $north_pixels = $self->get_chromosome()->mapunits2pixels($self->get_offset()) + $self->get_chromosome()->get_vertical_offset() - $self->get_chromosome()->mapunits2pixels($self->get_north_range());
122 # determine the pixels of the southern limit
124 my $south_pixels = $self->get_chromosome()->mapunits2pixels($self->get_offset()) + $self->get_chromosome()->get_vertical_offset() + $self->get_chromosome()->mapunits2pixels($self->get_south_range());
125 # print STDERR "cM = ".$self->get_north_range().", pixels= $north_pixels\n";
126 # print STDERR "cM = ".$self->get_south_range().", pixels= $south_pixels\n";
128 $self->get_label()->set_north_position($north_pixels);
129 $self->get_label()->set_south_position($south_pixels);
131 if ($self->get_label_side() eq "right") {
132 $self->get_label()->set_reference_point($self->get_chromosome()->get_horizontal_offset()+int($self->get_chromosome()->get_width()/2)+$self->get_label()->get_stacking_height()*($self->get_label()->get_stacking_level()), int($north_pixels+$south_pixels)/2);
134 elsif ($self->get_label_side() eq "left") {
135 $self->get_label()->set_reference_point($self->get_chromosome()->get_horizontal_offset()-int($self->get_chromosome()->get_width()/2)-$self->get_label()->get_stacking_height()*$self->get_label()->get_stacking_level(), int($north_pixels+$south_pixels)/2);
137 else {
138 die "[RangeMarker.pm] label_side can either be right or left. Sorry.";
140 if ($self->get_hilite_chr_region()) {
141 $self->hilite_chr_region($image);
144 $self->SUPER::render($image);
148 =head2 accessors set_region_hilite_color, get_region_hilite_color
150 Property:
151 Setter Args:
152 Getter Args:
153 Getter Ret:
154 Side Effects:
155 Description:
157 =cut
159 sub get_region_hilite_color {
160 my $self=shift;
161 return @{$self->{region_hilite_color}};
164 sub set_region_hilite_color {
165 my $self=shift;
166 @{$self->{region_hilite_color}}= (shift, shift, shift);
171 =head2 accessors set_hilite_chr_region(), get_hilite_chr_region()
173 Property:
174 Setter Args:
175 Getter Args:
176 Getter Ret:
177 Side Effects:
178 Description:
180 =cut
182 sub get_hilite_chr_region {
183 my $self=shift;
184 return $self->{hilite_chr_region};
187 sub set_hilite_chr_region {
188 my $self=shift;
189 $self->{hilite_chr_region}=shift;
194 sub hilite_chr_region {
195 my $self = shift;
196 my $image = shift;
198 my $north_pixels = $self->get_label()->get_north_position();
199 my $south_pixels = $self->get_label()->get_south_position();
201 my $left_pixels = $self->get_chromosome()->get_horizontal_offset()-$self->get_chromosome()->get_width()/2+1;
202 my $right_pixels = $self->get_chromosome()->get_horizontal_offset()+$self->get_chromosome()->get_width()/2-1;
204 #print STDERR "North: $north_pixels South: $south_pixels. left: $left_pixels. Right: $right_pixels\n";
206 $image->filledRectangle($left_pixels, $north_pixels, $right_pixels, $south_pixels, $image->colorAllocate($self->get_region_hilite_color()));
209 sub draw_tick {
210 my $self = shift;
211 my $image = shift;
212 my $color = $image -> colorResolve($self->get_color());
213 my $halfwidth = int($self->get_chromosome->get_width/2);
214 my $north_y = $self->get_chromosome()->get_vertical_offset() + $self->get_chromosome()->mapunits2pixels($self->get_offset()-$self->get_north_range());
216 my $south_y = $self->get_chromosome()->get_vertical_offset() + $self->get_chromosome()->mapunits2pixels($self->get_offset()+$self->get_south_range());
218 if ($self->get_show_tick()) {
219 $image -> line($self->get_chromosome()->get_horizontal_offset() - $halfwidth +1, $north_y, $self->get_chromosome()->get_horizontal_offset()+$halfwidth-1, $north_y, $color);
220 $image -> line($self->get_chromosome()->get_horizontal_offset() - $halfwidth +1, $south_y, $self->get_chromosome()->get_horizontal_offset()+$halfwidth-1, $south_y, $color);
225 return 1;