Get rid of some warnings in CXGN::Cview::Chromosome::Vector
[cview.git] / lib / CXGN / Cview / Marker / VectorFeature.pm
blob8de6f6c5a946ed5f78e3e10aea56b5d1d4bffa61
2 use strict;
4 package CXGN::Cview::Marker::VectorFeature;
6 use base ("CXGN::Cview::Marker::RangeMarker");
8 use GD;
10 =head2 new
12 Usage:
13 Desc:
14 Ret:
15 Args:
16 Side Effects:
17 Example:
19 =cut
21 sub new {
22 my $class = shift;
23 my $self = $class->SUPER::new(@_);
24 $self->set_color(0,0,0);
25 $self->set_label_spacer(50);
26 return $self;
29 =head2 render
31 Usage:
32 Desc:
33 Ret:
34 Args:
35 Side Effects:
36 Example:
38 =cut
40 sub render {
41 my $self = shift;
42 my $image = shift;
44 #die "now rendering a marker!";
47 # my $feature_color = $image->colorAllocate(255, 100, 100);
48 # my ($start_x, $start_y) = $self->get_chromosome()->mapunits2pixels($self->get_start());
50 # #$image->line(10,10, 50, 50, $color);
52 # my $angle = $self->get_chromosome()->angle($self->get_start());
53 # my $width = $self->get_chromosome()->get_width();
54 # #die "Angle is $angle. Width is ".$self->get_chromosome->get_width."\n";
56 # #$image->line($start_x, $start_y, $start_x - sin($angle) * $width, $start_y - cos($angle) * $width, $color);
58 # $angle = $self->get_chromosome()->angle($self->get_end());
60 # my ($end_x, $end_y) = $self->get_chromosome()->mapunits2pixels($self->get_end());
62 # my $d = $self->get_chromosome()->get_length() / 100;
64 # #die $self->get_north_range()." : ". $self->get_offset . " : ".$self->get_south_range();
66 # if ( ( $self->get_offset() - $self->get_north_range() > 2) || ($self->get_south_range()- $self->get_offset() > 2)) {
68 # $self->draw_tick($image, $self->get_start());
69 # $self->draw_tick($image, $self->get_end());
70 # my $midpoint_angle = $self->get_chromosome()->angle($self->get_offset());
71 # my ($offset_x, $offset_y) = $self->get_chromosome()->mapunits2pixels($self->get_offset());
72 # $image->fill($offset_x - sin($midpoint_angle) * $width/2 , $offset_y - cos($midpoint_angle) * $width/2 , $feature_color);
73 # }
74 # else {
75 # #$image->line($end_x, $end_y, $end_x - sin($angle) * $width, $end_y - cos($angle) * $width, $color);
79 $self->render_region($image);
80 $self->get_label()->render($image);
84 =head2 render_region
86 Usage: $m->render_region()
87 Desc: for range markers, renders the region of the
88 marker that highlights its position on the
89 chromosome.
90 Ret:
91 Args:
92 Side Effects:
93 Example:
95 =cut
99 sub render_region {
101 my $self = shift;
102 my $image = shift;
104 my $color = $image->colorAllocate($self->get_color());
106 my ($start_x, $start_y) = $self->get_chromosome()->mapunits2pixels($self->get_start());
108 #$image->line(10,10, 50, 50, $color);
110 my $angle = $self->get_chromosome()->angle($self->get_start());
111 my $width = $self->get_chromosome()->get_width();
112 #die "Angle is $angle. Width is ".$self->get_chromosome->get_width."\n";
114 #$image->line($start_x, $start_y, $start_x - sin($angle) * $width, $start_y - cos($angle) * $width, $color);
116 $angle = $self->get_chromosome()->angle($self->get_end());
118 my ($end_x, $end_y) = $self->get_chromosome()->mapunits2pixels($self->get_end());
120 my $d = $self->get_chromosome()->get_length() / 100;
122 #die $self->get_north_range()." : ". $self->get_offset . " : ".$self->get_south_range();
124 if ($self->has_range()) {
125 $self->draw_tick($image, $self->get_start());
126 $self->draw_tick($image, $self->get_end());
127 my $midpoint_angle = $self->get_chromosome()->angle($self->get_offset());
128 my ($offset_x, $offset_y) = $self->get_chromosome()->mapunits2pixels($self->get_offset());
129 $image->fill($offset_x - sin($midpoint_angle) * $width/2 , $offset_y - cos($midpoint_angle) * $width/2 , $color);
131 else {
132 $self->draw_tick($image, $self->get_offset());
137 sub draw_tick {
138 my $self = shift;
139 my $image = shift;
140 my $offset = shift;
142 my $d = $self->get_chromosome()->get_length() / 100;
143 my $color = $image->colorAllocate($self->get_color());
144 $image->setAntiAliased($color);
145 my $width = $self->get_chromosome()->get_width();
146 my $angle = $self->get_chromosome()->angle($offset);
147 my ($start_x, $start_y) = $self->get_chromosome()->mapunits2pixels($offset);
148 my $tip_offset = $offset + $d;
150 if (!($self->has_range())) {
151 #die "Drawing a straight line...";
152 $image->line($start_x, $start_y, $start_x - sin($angle) * $width, $start_y - cos($angle) * $width, gdAntiAliased);
153 return;
157 if ($self->get_orientation() eq "R") { $tip_offset = $offset - $d; }
158 else {
159 #die "Forward orientation";
161 my ($t_x, $t_y) = $self->get_chromosome()->mapunits2pixels($tip_offset);
162 my $beta = $self->get_chromosome()->angle($tip_offset);
163 my $tip_x = $t_x - sin($beta) * $self->get_chromosome()->get_width()/2;
164 my $tip_y = $t_y - cos($beta) * $self->get_chromosome()->get_width()/2;
165 $image->line($start_x, $start_y, $tip_x, $tip_y, gdAntiAliased);
166 $image->line($tip_x, $tip_y, $start_x - sin($angle) * $width, $start_y - cos($angle) * $width, gdAntiAliased);
171 return 1;