1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
|
#!/usr/bin/perl
# $Id$
# these simple samples have been developped by C. Mertz mertz@cena.fr
use vars qw( $VERSION );
($VERSION) = sprintf("%d.%02d", q$Revision$ =~ /(\d+)\.(\d+)/);
use Tk;
use Tk::Zinc;
use strict;
my $defaultfont = '-adobe-helvetica-bold-r-normal--*-120-*-*-*-*-*-*';
my $mw = MainWindow->new();
my $zinc = $mw->Zinc(-width => 700, -height => 600,
-borderwidth => 3, -relief => 'sunken',
-render => 1, # for activating the openGL render
)->pack;
# This demo no more dies if there is no openGL. It simply displays
# a string on the bootom of the window!
$zinc->add('rectangle', 1, [10,10, 690, 50], -fillcolor => "=axial 0 | red | blue", -filled => 1);
$zinc->add('text', 1,
-font => $defaultfont,
-text => "A variation from non transparent red to non transparent blue.",
-anchor => 'nw',
-position => [20, 20]);
$zinc->add('rectangle', 1, [10,60, 690, 100], -fillcolor => "=axial -30 0 30 0 | red | blue", -filled => 1);
$zinc->add('text', 1,
-font => $defaultfont,
-text => "The same with a reduced span.",
-anchor => 'nw',
-position => [20, 70]);
$zinc->add('rectangle', 1, [10,110, 690, 150], -fillcolor => "=axial 0 |red;40|blue;40", -filled => 1);
$zinc->add('text', 1,
-font => $defaultfont,
-text => "A variation from 40%transparent red to 40% transparent blue.",
-anchor => 'nw',
-position => [20, 120]);
$zinc->add('rectangle', 1, [10,160, 690, 200], -fillcolor => "=axial -30 0 30 0 |red;40|blue;40", -filled => 1);
$zinc->add('text', 1,
-font => $defaultfont,
-text => "The same with a reduced span.",
-anchor => 'nw',
-position => [20, 170]);
# we are using here the X explicit notation for rgb color
# we could also have used CIE encoding. If interested,
# please read the X man pages
my $gradient = ($^O eq 'linux') ? "=axial 0 | rgb:ffff/0/0;40 | rgb:0/ffff/0;40 50 | rgb:0/0/ffff;40"
: "=axial 0 | #ff0000;40 | #00ff00;40 50 | #0000ff;40";
$zinc->add('rectangle', 1, [10, 210, 690, 300], -fillcolor => "=axial 0 | rgb:ffff/0/0;40 | rgb:0/ffff/0;40 50 | rgb:0/0/ffff;40", -filled => 1);
$zinc->add('text', 1,
-font => $defaultfont,
-text => "A variation from 40%transparent red to 40% transparent blue.\n".
"through a 40%green on the middle",
-anchor => 'nw',
-position => [20, 220]);
$zinc->add('text', 1,
-font => $defaultfont,
-text => "Two overlaping transparently colored rectangles on a white background",
-anchor => 'nw',
-position => [20, 320]);
$zinc->add('rectangle', 1, [10, 340, 690, 590], -fillcolor => "white", -filled => 1);
$zinc->add('rectangle', 1, [200, 350, 500, 580], -fillcolor => "red;40|green;40 50|blue;40", -filled => 1);
$zinc->add('rectangle', 1, [10, 400, 690, 500], -fillcolor => "=axial 0 |yellow;40|black;40 50|cyan;40", -filled => 1);
$zinc->add('text', 1,
-font => $defaultfont,
-text => "WITHOUT openGL, NO GRADIENT. SORRY!",
-anchor => 'nw',
-position => [20, 550]) unless $zinc->cget(-render);
MainLoop;
|