(
$GD::Graph::points::VERSION
) =
'$Revision: 1.13 $'
=~ /\s([\d.]+)/;
@GD::Graph::points::ISA
=
qw( GD::Graph::axestype )
;
sub
draw_data_set
{
my
$self
=
shift
;
my
$ds
=
shift
;
my
@values
=
$self
->{_data}->y_values(
$ds
) or
return
$self
->_set_error(
"Impossible illegal data set: $ds"
,
$self
->{_data}->error);
my
$dsci
=
$self
->set_clr(
$self
->pick_data_clr(
$ds
));
my
$type
=
$self
->pick_marker(
$ds
);
for
(
my
$i
= 0;
$i
<
@values
;
$i
++)
{
next
unless
defined
$values
[
$i
];
my
(
$xp
,
$yp
);
if
(
defined
(
$self
->{x_min_value}) &&
defined
(
$self
->{x_max_value}))
{
(
$xp
,
$yp
) =
$self
->val_to_pixel(
$self
->{_data}->get_x(
$i
),
$values
[
$i
],
$ds
);
}
else
{
(
$xp
,
$yp
) =
$self
->val_to_pixel(
$i
+1,
$values
[
$i
],
$ds
);
}
$self
->marker(
$xp
,
$yp
,
$type
,
$dsci
);
$self
->{_hotspots}->[
$ds
]->[
$i
] =
[
'rect'
,
$self
->marker_coordinates(
$xp
,
$yp
)];
}
return
$ds
;
}
sub
pick_marker
{
my
$self
=
shift
;
my
$num
=
shift
;
ref
$self
->{markers} ?
$self
->{markers}[
$num
% (1 + $
(
$num
% 8) || 8;
}
sub
marker_coordinates
{
my
$self
=
shift
;
my
(
$xp
,
$yp
) =
@_
;
return
(
$xp
-
$self
->{marker_size},
$xp
+
$self
->{marker_size},
$yp
+
$self
->{marker_size},
$yp
-
$self
->{marker_size},
);
}
sub
marker
{
my
$self
=
shift
;
my
(
$xp
,
$yp
,
$mtype
,
$mclr
) =
@_
;
return
unless
defined
$mclr
;
my
(
$l
,
$r
,
$b
,
$t
) =
$self
->marker_coordinates(
$xp
,
$yp
);
MARKER: {
(
$mtype
== 1) &&
do
{
$self
->{graph}->filledRectangle(
$l
,
$t
,
$r
,
$b
,
$mclr
);
last
MARKER;
};
(
$mtype
== 2) &&
do
{
$self
->{graph}->rectangle(
$l
,
$t
,
$r
,
$b
,
$mclr
);
last
MARKER;
};
(
$mtype
== 3) &&
do
{
$self
->{graph}->line(
$l
,
$yp
,
$r
,
$yp
,
$mclr
);
$self
->{graph}->line(
$xp
,
$t
,
$xp
,
$b
,
$mclr
);
last
MARKER;
};
(
$mtype
== 4) &&
do
{
$self
->{graph}->line(
$l
,
$b
,
$r
,
$t
,
$mclr
);
$self
->{graph}->line(
$l
,
$t
,
$r
,
$b
,
$mclr
);
last
MARKER;
};
(
$mtype
== 5) &&
do
{
$self
->{graph}->line(
$l
,
$yp
,
$xp
,
$t
,
$mclr
);
$self
->{graph}->line(
$xp
,
$t
,
$r
,
$yp
,
$mclr
);
$self
->{graph}->line(
$r
,
$yp
,
$xp
,
$b
,
$mclr
);
$self
->{graph}->line(
$xp
,
$b
,
$l
,
$yp
,
$mclr
);
$self
->{graph}->fillToBorder(
$xp
,
$yp
,
$mclr
,
$mclr
);
last
MARKER;
};
(
$mtype
== 6) &&
do
{
$self
->{graph}->line(
$l
,
$yp
,
$xp
,
$t
,
$mclr
);
$self
->{graph}->line(
$xp
,
$t
,
$r
,
$yp
,
$mclr
);
$self
->{graph}->line(
$r
,
$yp
,
$xp
,
$b
,
$mclr
);
$self
->{graph}->line(
$xp
,
$b
,
$l
,
$yp
,
$mclr
);
last
MARKER;
};
(
$mtype
== 7) &&
do
{
$self
->{graph}->arc(
$xp
,
$yp
, 2 *
$self
->{marker_size},
2 *
$self
->{marker_size}, 0, 360,
$mclr
);
$self
->{graph}->fillToBorder(
$xp
,
$yp
,
$mclr
,
$mclr
);
last
MARKER;
};
(
$mtype
== 8) &&
do
{
$self
->{graph}->arc(
$xp
,
$yp
, 2 *
$self
->{marker_size},
2 *
$self
->{marker_size}, 0, 360,
$mclr
);
last
MARKER;
};
(
$mtype
== 9) &&
do
{
$self
->{graph}->line(
$l
,
$yp
,
$r
,
$yp
,
$mclr
);
last
MARKER;
};
(
$mtype
== 10) &&
do
{
$self
->{graph}->line(
$xp
,
$t
,
$xp
,
$b
,
$mclr
);
last
MARKER;
};
}
}
sub
draw_legend_marker
{
my
$self
=
shift
;
my
$n
=
shift
;
my
$x
=
shift
;
my
$y
=
shift
;
my
$ci
=
$self
->set_clr(
$self
->pick_data_clr(
$n
));
my
$old_ms
=
$self
->{marker_size};
my
$ms
= _min(
$self
->{legend_marker_height},
$self
->{legend_marker_width});
(
$self
->{marker_size} >
$ms
/2) and
$self
->{marker_size} =
$ms
/2;
$x
+=
int
(
$self
->{legend_marker_width}/2);
$y
+=
int
(
$self
->{lg_el_height}/2);
$n
=
$self
->pick_marker(
$n
);
$self
->marker(
$x
,
$y
,
$n
,
$ci
);
$self
->{marker_size} =
$old_ms
;
}
"Just another true value"
;