aboutsummaryrefslogtreecommitdiff
path: root/library/zincLogo.tcl
blob: 90993119cd0557d44bfb196610f8df7c842b3016 (plain)
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
95
96
97
98
#---------------------------------------------------------------
#  File            : LogoZinc.pm
#
#  Copyright (C) 2001-2002
#  Centre d'Études de la Navigation Aérienne
#  Authors: Vinot Jean-Luc <vinot@cena.fr>
#  $Id$
#---------------------------------------------------------------

package provide zincLogo 1.0

namespace eval ::zincLogo:: {

    set letters(coords) {
	{0 0} {106 0} {106 58} {122 41} {156 41} {131 69}
	{153 99} {203 41} {155 41} {155 0} {218 0} {240 0 'c'}
	{252 17 'c'} {252 34} {252 40 'c'} {249 50 'c'} {244 56}
	{202 105} {246 105} {246 87} {246 60 'c'} {271 37 'c'} {297 37}
	{323 37 'c'} {342 57 'c'} {344 68} {347 64 'c'} {350 60'c'}
	{353 56} {363 46 'c'} {375 37 'c'} {395 37} {395 79} {393 79}
	{385 79 'c'} {379 86 'c'} {379 93} {379 100 'c'} {385 107 'c'}
	{393 107} {409 107} {409 148} {397 148} {378 148 'c'} {364 144 'c'}
	{354 133} {346 124} {346 148} {305 148} {305 87} {305 83 'c'}
	{301 79 'c'} {297 79} {293 79 'c'} {289 83 'c'} {289 87} {289 150}
	{251 150} {251 130} {251 126 'c'} {247 122 'c'} {243 122} {239 122 'c'}
	{235 126 'c'} {235 130} {235 150} {176 150} {154 150,'c'} {146 131,'c'}
	{146 114} {148 105} {120 105} {104 81} {104 105} {74 105} {74 41} {52 41}
	{52 105} {20 105} {20 41} {0 41}}
    set letters(lineWidth) 3
    set letters(lineColor) {\#000000;70}
    set letters(fillColor) {=axial 270|\#ffffff;100 0 28|\#66848c;100 96|\#7192aa;100 100}
    set letters(shadow,dXy) {6 6}
    set letters(shadow,fillColor) {\#000000;18}

    set point(pos) {240 96}
    set point(alpha) 80
    set point(lineWidth) 1
    set point(lineColor) {\#a10000;100}
    set point(fillColor) {=radial -66 -66|\#ffffff;100 0|\#f70000;100 48|\#900000;100 80|\#ab0000;100 100}
    set point(shadow,dXy) {5 5}
    set point(shadow,fillColor) {=path -50 -50|\#770000;64 0|\#770000;70 78|\#770000;0 100}
    
    

    proc create {zinc parent priority x y scaleX scaleY} {
	variable letters point
	#
	# Create a group to hold the various parts
	set logoGroup [$zinc add group $parent -priority $priority]
	
	#
	# Move the group in the right place
	$zinc coords $logoGroup "$x $y"
	
	#
	# Add a sub-group to isolate the scaling
	set scaleGroup [$zinc add group $logoGroup]
	$zinc scale $scaleGroup $scaleX $scaleY
	
	foreach {$dx dy} $letters(shadow,dXy) break
	#
	# Create a curve for the main form shadow
	set lShadow [$zinc add curve $group $letters(coords) \
			 -tags lettersShadow -closed 1 -filled 1 -linewidth 0 \
			 -fillcolor $letters(shadow,fillColor)]
	$zinc translate $lShadow $dx $dy
	
	set lineWidth [expr int(($letters(lineWidth) * $xs) + 0.5)]
	if { $lineWidth <= 0 } {
	    set lineWidth 1
	}
	
	#
	# Create a curve for the main form
	$zinc add curve $group $letters(coords) -tags letters -closed 0 \
	    -filled 1 -fillcolor $letters(fillColor) -linewidth $lineWidth \
	    -linecolor => $letters(lineColor)
	
	#
	# Create a group to hold the point and its shadow
	set pointGroup [$zinc add group $group -alpha $point(alpha)]
	$zinc coords $pointGroup $point(pos)
	
	foreach {dx dy} $point(shadow,dXy) break
	#
	# Create a curve for the dot shadow
	set pShadow [$zinc add arc $pointGroup {-20 -20 20 20} -tags pointShadow \
			 -closed 1 -filled 1 -fillcolor $point(shadow,fillColor) \
			 -lineWidth 0]
	$zinc translate $pShadow $dx $dy
	
	#
	# Create a curve for the dot
	$zinc add arc $pointGroup {-20 -20 20 20} -tags point -closed 1 \
	    -filled 1 -fillcolor $point(fillColor) -linewidth $point(lineWidth) \
	    -linecolor$point(lineColor)
    }
}