Commit | Line | Data |
---|---|---|
86530b38 AT |
1 | package Pastel::Geometry::EllipseIterator;\r |
2 | @ISA = qw(Pastel::Geometry::PathIteratorI Pastel::Mixin::Mixin);\r | |
3 | use Pastel::Geometry::PathIteratorI;\r | |
4 | use Pastel::Mixin::Mixin;\r | |
5 | use strict;\r | |
6 | use Carp;\r | |
7 | \r | |
8 | sub new {\r | |
9 | my $class = shift;\r | |
10 | my $self = {};\r | |
11 | bless $self, ref($class) || $class;\r | |
12 | $self->_init(@_);\r | |
13 | return $self;\r | |
14 | }\r | |
15 | \r | |
16 | sub _init {\r | |
17 | my ($self, @args) = @_;\r | |
18 | if (@args < 2 ){\r | |
19 | croak "Error: Isufficent argument in Pastel::Geometry::EllipseIterator!\n";\r | |
20 | }\r | |
21 | elsif ( ref($args[0]) ne "Pastel::Geometry::Ellipse"){\r | |
22 | croak "First argument of the Pastel::Geometry::EllipseIterator::new\n\r | |
23 | has to be a Pastel::Geometry::Ellipse\n";\r | |
24 | }\r | |
25 | \r | |
26 | elsif ( ref($args[1]) ne "Pastel::Geometry::AffineTransform"){\r | |
27 | croak "Second argument of Pastel::Geometry::EllipseIterator::new\n\r | |
28 | has to be a Pastel::Geometry::AffineTransform\n";\r | |
29 | }\r | |
30 | \r | |
31 | else {\r | |
32 | $self->{x} = $args[0]->get_x();\r | |
33 | $self->{y} = $args[0]->get_y();\r | |
34 | $self->{w} = $args[0]->get_width();\r | |
35 | $self->{h} = $args[0]->get_height();\r | |
36 | $self->{affine} = $args[1];\r | |
37 | $self->{index} = 0;\r | |
38 | \r | |
39 | if ( $self->{w} < 0 || $self->{h} < 0){\r | |
40 | $self->{index} = 6;\r | |
41 | }\r | |
42 | }\r | |
43 | \r | |
44 | return $self;\r | |
45 | }\r | |
46 | \r | |
47 | sub get_winding_rule {\r | |
48 | my ($self, @args)= @_;\r | |
49 | #print "winding rule called\n";\r | |
50 | #print $WIND_NON_ZERO;\r | |
51 | return $Pastel::Geometry::PathIteratorI::WIND_NON_ZERO;\r | |
52 | }\r | |
53 | \r | |
54 | sub is_done {\r | |
55 | my $self = shift;\r | |
56 | return $self->{index} > 5;\r | |
57 | }\r | |
58 | \r | |
59 | sub next {\r | |
60 | my $self = shift;\r | |
61 | $self->{index}++;\r | |
62 | }\r | |
63 | \r | |
64 | \r | |
65 | 1;\r | |
66 | \r | |
67 | \r | |
68 | \r |