4 package CXGN
::Cview
::Marker
::VectorFeature
;
6 use base
("CXGN::Cview::Marker::RangeMarker");
23 my $self = $class->SUPER::new
(@_);
24 $self->set_color(0,0,0);
25 $self->set_label_spacer(50);
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);
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);
86 Usage: $m->render_region()
87 Desc: for range markers, renders the region of the
88 marker that highlights its position on the
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);
132 $self->draw_tick($image, $self->get_offset());
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
);
157 if ($self->get_orientation() eq "R") { $tip_offset = $offset - $d; }
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
);