summaryrefslogtreecommitdiff
path: root/info/laan/paradigm/prpie.eps
blob: aecb95c1437346c341ed403f39a2d3efee981a29 (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
%!PS EPSF %-Adobe-2.0
%%Title: Blue Book Program 14, on page 187
%%Creator: Adobe Systems Incorporated 
%%CreationDate: Thu Dec 28 18:14:18 PST 1989
%%BoundingBox: -215 -215 215 195
%%EndComments

/PieDict 24 dict def
PieDict begin
  /DrawSlice
	{ /grayshade exch def
	  /endangle exch def
	  /startangle exch def
	  /thelabel exch def

	  newpath 0 0 moveto
	    0 0 radius startangle endangle arc
	  closepath
	  1.415 setmiterlimit
	  
	  gsave
	    grayshade setgray
	    fill
	  grestore
	  stroke
	  gsave
	    startangle endangle add 2 div rotate
	    radius 0 translate
	    newpath
	      0 0 moveto labelps .8 mul 0 lineto stroke
	    labelps 0 translate	
	    0 0 transform 
	  grestore
	  itransform
	  /y exch def /x exch def
	  x y moveto
	  
	  x 0 lt
		{ thelabel stringwidth pop neg 0 rmoveto }
		if
	  y 0 lt { 0 labelps neg rmoveto }if
	  thelabel show
	} def

  /findgray
	{ /i exch def /n exch def
	  i 2 mod 0 eq
		{ i 2 div n 2 div round add n div }
		{ i 1 add 2 div n div }
	    ifelse
	} def
end

/DrawPieChart
  { PieDict begin
	  /radius exch def
	  /ycenter exch def /xcenter exch def
	  /PieArray exch def
	  /labelps exch def /titleps exch def
	  /title exch def

	  gsave
	    xcenter ycenter translate
	    
	    /Helvetica findfont titleps	scalefont setfont
        title stringwidth pop 2 div neg radius neg 
          titleps 3 mul sub moveto 
        title show
	    /Helvetica findfont labelps scalefont setfont
	    /numslices PieArray length def
	    /slicecnt 0 def
	    /curangle 0 def
	    
	    PieArray
		{ /slicearray exch def
		  slicearray aload pop
		  /percent exch def
		  /label exch def
		  /perangle percent 360 mul def
		  /slicecnt slicecnt 1 add def
		  label curangle curangle perangle add
		    numslices slicecnt findgray DrawSlice
		  /curangle curangle perangle add def
		} forall
	  grestore
	end
  } def
  
(January Pie Sales) 24 12
  [ [(Blueberry) .12 ]
    [(Cherry) .30 ]
    [(Apple) .26 ]
    [(Boston Cream) .16 ]
    [(Other) .04 ]
    [(Vanilla Cream) .12 ]
  ] 0 0 140 DrawPieChart

showpage