1#Copyright ReportLab Europe Ltd. 2000-2017
2#see license.txt for license details
3__version__='3.3.0'
4import reportlab.pdfgen.canvas
5from reportlab.lib import colors
6from reportlab.lib.units import inch
7
8
9def run():
10    c = reportlab.pdfgen.canvas.Canvas('colortest.pdf')
11
12    #do a test of CMYK interspersed with RGB
13
14    #first do RGB values
15    framePage(c, 'Color Demo - RGB Space and CMYK spaces interspersed' )
16
17    y = 700
18
19    c.setFillColorRGB(0,0,0)
20    c.drawString(100, y, 'cyan')
21    c.setFillColorCMYK(1,0,0,0)
22    c.rect(200, y, 300, 30, fill=1)
23    y = y - 40
24
25    c.setFillColorRGB(0,0,0)
26    c.drawString(100, y, 'red')
27    c.setFillColorRGB(1,0,0)
28    c.rect(200, y, 300, 30, fill=1)
29    y = y - 40
30
31    c.setFillColorRGB(0,0,0)
32    c.drawString(100, y, 'magenta')
33    c.setFillColorCMYK(0,1,0,0)
34    c.rect(200, y, 300, 30, fill=1)
35    y = y - 40
36
37    c.setFillColorRGB(0,0,0)
38    c.drawString(100, y, 'green')
39    c.setFillColorRGB(0,1,0)
40    c.rect(200, y, 300, 30, fill=1)
41    y = y - 40
42
43    c.setFillColorRGB(0,0,0)
44    c.drawString(100, y, 'yellow')
45    c.setFillColorCMYK(0,0,1,0)
46    c.rect(200, y, 300, 30, fill=1)
47    y = y - 40
48
49    c.setFillColorRGB(0,0,0)
50    c.drawString(100, y, 'blue')
51    c.setFillColorRGB(0,0,1)
52    c.rect(200, y, 300, 30, fill=1)
53    y = y - 40
54
55    c.setFillColorRGB(0,0,0)
56    c.drawString(100, y, 'black')
57    c.setFillColorCMYK(0,0,0,1)
58    c.rect(200, y, 300, 30, fill=1)
59    y = y - 40
60
61
62    c.showPage()
63
64    #do all named colors
65    framePage(c, 'Color Demo - RGB Space - page %d' % c.getPageNumber())
66
67    all_colors = list(reportlab.lib.colors.getAllNamedColors().items())
68    all_colors.sort() # alpha order by name
69    c.setFont('Times-Roman', 12)
70    c.drawString(72,730, 'This shows all the named colors in the HTML standard.')
71    y = 700
72    for (name, color) in all_colors:
73        c.setFillColor(colors.black)
74        c.drawString(100, y, name)
75        c.setFillColor(color)
76        c.rect(200, y-10, 300, 30, fill=1)
77        y = y - 40
78        if y < 100:
79            c.showPage()
80            framePage(c, 'Color Demo - RGB Space - page %d' % c.getPageNumber())
81            y = 700
82
83
84
85
86    c.save()
87
88def framePage(canvas, title):
89    canvas.setFont('Times-BoldItalic',20)
90    canvas.drawString(inch, 10.5 * inch, title)
91
92    canvas.setFont('Times-Roman',10)
93    canvas.drawCentredString(4.135 * inch, 0.75 * inch,
94                            'Page %d' % canvas.getPageNumber())
95
96    #draw a border
97    canvas.setStrokeColorRGB(1,0,0)
98    canvas.setLineWidth(5)
99    canvas.line(0.8 * inch, inch, 0.8 * inch, 10.75 * inch)
100    #reset carefully afterwards
101    canvas.setLineWidth(1)
102    canvas.setStrokeColorRGB(0,0,0)
103
104if __name__ == '__main__':
105    run()
106