From 57f589c6f81df8176531e6ed143566f5ea3c3dbe Mon Sep 17 00:00:00 2001 From: mertz Date: Fri, 17 Jan 2003 13:31:47 +0000 Subject: passage � la m�thode contour de zinc 3.2.6g. --- Perl/demos/Tk/demos/zinc_lib/clipping.pl | 2 +- Perl/demos/Tk/demos/zinc_lib/contours.pl | 43 ++++++++++++++----------- Perl/demos/Tk/demos/zinc_lib/counter.pl | 2 +- Perl/demos/Tk/demos/zinc_lib/window-contours.pl | 8 ++--- 4 files changed, 31 insertions(+), 24 deletions(-) diff --git a/Perl/demos/Tk/demos/zinc_lib/clipping.pl b/Perl/demos/Tk/demos/zinc_lib/clipping.pl index ac9a024..6e167d0 100644 --- a/Perl/demos/Tk/demos/zinc_lib/clipping.pl +++ b/Perl/demos/Tk/demos/zinc_lib/clipping.pl @@ -40,7 +40,7 @@ my $clipping_item = $zinc->add('curve', $clipped_group, -fillcolor => "tan2", -linewidth => 0, -filled => $display_clipping_item_background); -$zinc->contour($clipping_item, "addhole", [200,200, 500,200, 500,250, 200,250]); +$zinc->contour($clipping_item, "add", +1, [200,200, 500,200, 500,250, 200,250]); ############### creating the tan_group objects ################ # the tan_group is atomic, that is is makes all children as a single object diff --git a/Perl/demos/Tk/demos/zinc_lib/contours.pl b/Perl/demos/Tk/demos/zinc_lib/contours.pl index 5d4a4ed..e9521e8 100644 --- a/Perl/demos/Tk/demos/zinc_lib/contours.pl +++ b/Perl/demos/Tk/demos/zinc_lib/contours.pl @@ -21,7 +21,7 @@ $text->insert('0.0', - the firebrick curve1 has been holed using a addhole with a circle, - the lightblue curve2 has been "mickey-moused" by adding two circles, - the yellow curve3 is the union with a disjoint circle, - - the grey curve4 is added to and holed with with many circle. + - the grey curve4 is combined with 7 circles, with \'positive\' -fillrule. The following operations are possible: - "Mouse Button 1" for dragging objects. - "Mouse Button 1" for dragging the black handle and @@ -38,7 +38,7 @@ my $zinc = $mw->Zinc(-width => 600, -height => 500, # Creation of 2 items NOT visible, but used for creating visible # curves[1-5] with more than one contours. # The center of these 2 items is 200,100 -my $curve0 = $zinc->add('curve', 1, [0,100 , 100,0, 300,0 , 400,100, 300,200, 100,200], +my $curve0 = $zinc->add('curve', 1, [ [300,0], [400,100, 'c'], [300,200], [200,300,'c'], [100,200], [0,100,'c'], [100,0], ], -closed => 1, -visible => 0, -filled => 1, ); my $cercle100 = $zinc->add('arc', 1, [130,30, 280,180], @@ -48,18 +48,22 @@ my $cercle100 = $zinc->add('arc', 1, [130,30, 280,180], # cloning curve0 as curve1 and moving it my $curve1 = $zinc->clone($curve0, -visible => 1, -fillcolor => "firebrick1"); # adding a 'difference' contour to the curve1 -$zinc->contour($curve1, 'addhole', $cercle100); +$zinc->contour($curve1, 'add', +1, $cercle100); # cloning curve0 as curve2 and moving it -my $curve2 = $zinc->clone($curve0, -visible => 1, -fillcolor => "lightblue2"); +# creating a curve without contour to control contour clockwise/counterclockwise +my $curve2 = $zinc->add('curve', 1, [], -closed => 1, -filled => 1, + -visible => 1, -fillcolor => "lightblue2", -fillrule => 'positive'); +$zinc->contour($curve2, 'add', -1, $curve0); ## why must the flag be -1 and not -1 !? +# adding the left ear of mickey mouse! $zinc->translate($curve2,100,90); -# adding an 'intersection' contour to the curve2 -$zinc->contour($curve2, 'add', $cercle100); +# adding the right ear of mickey mouse! +$zinc->contour($curve2, 'add', +1, $cercle100); $zinc->translate($curve2,-200,0); # adding an 'intersection' contour to the curve2 -$zinc->contour($curve2, 'add', $cercle100); +$zinc->contour($curve2, 'add', +1, $cercle100); # ... translate to make it more visible $zinc->translate($curve2, 320,20); @@ -69,7 +73,7 @@ $zinc->translate($curve2, 320,20); my $curve3 = $zinc->clone($curve0, -visible => 1, -fillcolor => "yellow3"); $zinc->translate($curve3,0,290); # adding an 'union' contour to the curve3 -$zinc->contour($curve3, 'add', $cercle100); +$zinc->contour($curve3, 'add', +1, $cercle100); # ... translate to make it more visible $zinc->translate($curve3, -130,00); @@ -79,31 +83,34 @@ $zinc->translate($curve3, -130,00); # cloning curve0 as curve4 and moving it slightly my $curve4 = $zinc->clone($curve0, -visible => 1, -fillcolor => "grey50", -tags => ["grouped"], + -fillrule => 'positive', # the tag "grouped" is used for both curve4 and # a handle (see just below) # It is used for translating both easily ); -my ($x,$y) = $zinc->coords($curve4,0,1); + +my $index = 2; ## index of the vertex associated to the handle +my ($x,$y) = $zinc->coords($curve4,0,$index); my $handle = $zinc->add('rectangle', 1, [$x-5,$y-5,$x+5,$y+5], -fillcolor => 'black', -filled => 1, -tags => ["grouped"], ); # adding a 'difference' contour to the curve4 -$zinc->contour($curve4, 'addhole', $cercle100); +$zinc->contour($curve4, 'add', +1, $cercle100); $zinc->translate('grouped',110,0); -$zinc->contour($curve4, 'addhole', $cercle100); +$zinc->contour($curve4, 'add', +1, $cercle100); $zinc->translate('grouped',-220,0); -$zinc->contour($curve4, 'add', $cercle100); +$zinc->contour($curve4, 'add', +1, $cercle100); $zinc->translate('grouped',110,80); -$zinc->contour($curve4, 'add', $cercle100); +$zinc->contour($curve4, 'add', -1, $cercle100); $zinc->translate('grouped',0,-160); -$zinc->contour($curve4, 'add', $cercle100); +$zinc->contour($curve4, 'add', +1, $cercle100); $zinc->translate('grouped',200,80); -$zinc->contour($curve4, 'addhole', $cercle100); +$zinc->contour($curve4, 'add', +1, $cercle100); $zinc->translate('grouped',-350,0); -$zinc->contour($curve4, 'add', $cercle100); +$zinc->contour($curve4, 'add', +1, $cercle100); $zinc->translate('grouped',350,250); #$zinc->lower('grouped'); @@ -174,8 +181,8 @@ sub moveHandle { $zinc->translate($handle, $x-$x_orig, $y-$y_orig); - my ($vertxX,$vertxY) = $zinc->coords($curve4,0,1); - $zinc->coords($curve4,0,1, [$vertxX+($x-$x_orig), $vertxY+($y-$y_orig)]); + my ($vertxX,$vertxY) = $zinc->coords($curve4,0,$index); + $zinc->coords($curve4,0,$index, [$vertxX+($x-$x_orig), $vertxY+($y-$y_orig)]); $x_orig = $x; $y_orig = $y; } diff --git a/Perl/demos/Tk/demos/zinc_lib/counter.pl b/Perl/demos/Tk/demos/zinc_lib/counter.pl index 45b5208..5df227b 100644 --- a/Perl/demos/Tk/demos/zinc_lib/counter.pl +++ b/Perl/demos/Tk/demos/zinc_lib/counter.pl @@ -228,7 +228,7 @@ my $clipping_item2 = $zinc->add('curve', $clipped_group2, -linewidth=>0, ); -$zinc->contour($clipping_item2,"addhole",[$x2,$y2,$x3,$y2,$x3,$y3,$x2,$y3,$x2,$y2]); +$zinc->contour($clipping_item2,"add",0,[$x2,$y2,$x3,$y2,$x3,$y3,$x2,$y3,$x2,$y2]); #-------------------------------- # Clipped items diff --git a/Perl/demos/Tk/demos/zinc_lib/window-contours.pl b/Perl/demos/Tk/demos/zinc_lib/window-contours.pl index 9199f20..c51782c 100644 --- a/Perl/demos/Tk/demos/zinc_lib/window-contours.pl +++ b/Perl/demos/Tk/demos/zinc_lib/window-contours.pl @@ -41,16 +41,16 @@ my $window = $zinc->add('curve', 1, [100,100 , 300,100, 300,400 , 100,400 ], ); my $aGlass= $zinc->add('rectangle', 1, [120,120 , 190,240]); -$zinc->contour($window, 'addhole', $aGlass); +$zinc->contour($window, 'add', +1, $aGlass); $zinc->translate($aGlass, 90,0); -$zinc->contour($window, 'addhole', $aGlass); +$zinc->contour($window, 'add', +1, $aGlass); $zinc->translate($aGlass, 0,140); -$zinc->contour($window, 'addhole', $aGlass); +$zinc->contour($window, 'add', +1, $aGlass); $zinc->translate($aGlass, -90,0); -$zinc->contour($window, 'addhole', $aGlass); +$zinc->contour($window, 'add', +1, $aGlass); # deleting $aGlass which is no more usefull $zinc->remove($aGlass); -- cgit v1.1