xref: /trunk/test/odf-validate/fixtures/page-fill/make.py (revision 0e16a31d78a652c56c5c0fc79c752f48b9048df9)
1# usage: runpy.sh fixtures/page-fill/make.py <port> <out.odt> <png>   (office saving ODF 1.2 Extended)
2import sys, uno
3from unohelp import connect, desktop, pv
4from com.sun.star.awt import Gradient
5from com.sun.star.awt.GradientStyle import LINEAR
6from com.sun.star.drawing import Hatch
7from com.sun.star.drawing.HatchStyle import SINGLE
8from com.sun.star.drawing.FillStyle import SOLID, GRADIENT, HATCH, BITMAP
9
10port, out, png = int(sys.argv[1]), sys.argv[2], uno.systemPathToFileUrl(sys.argv[3])
11d = desktop(connect(port))
12doc = d.loadComponentFromURL("private:factory/swriter", "_blank", 0, (pv("Hidden", True),))
13
14def grad():
15    g = Gradient(); g.Style = LINEAR; g.StartColor = 0xFF0000; g.EndColor = 0x0000FF
16    g.Angle = 0; g.Border = 0; g.XOffset = 50; g.YOffset = 50
17    g.StartIntensity = 100; g.EndIntensity = 100; g.StepCount = 0
18    return g
19
20def hatch():
21    h = Hatch(); h.Style = SINGLE; h.Color = 0x00AA00; h.Distance = 200; h.Angle = 450
22    return h
23
24def fill(o, pre, kind, color=0xFFCC00):
25    if kind == "solid":
26        setattr(o, pre + "FillStyle", SOLID); setattr(o, pre + "FillColor", color)
27    elif kind == "solid_transp":
28        setattr(o, pre + "FillStyle", SOLID); setattr(o, pre + "FillColor", color); setattr(o, pre + "FillTransparence", 40)
29    elif kind == "gradient":
30        setattr(o, pre + "FillStyle", GRADIENT); setattr(o, pre + "FillGradient", grad())
31    elif kind == "hatch":
32        setattr(o, pre + "FillStyle", HATCH); setattr(o, pre + "FillHatch", hatch())
33        setattr(o, pre + "FillColor", 0xFFFFCC); setattr(o, pre + "FillBackground", True)
34    elif kind == "bitmap":
35        setattr(o, pre + "FillStyle", BITMAP); setattr(o, pre + "FillBitmapURL", png)
36
37ps = doc.StyleFamilies.getByName("PageStyles")
38specs = [("P_solid", "solid", "solid", "solid"), ("P_transp", "solid_transp", "solid_transp", "solid_transp"),
39         ("P_grad", "gradient", "gradient", "hatch"), ("P_bitmap", "bitmap", "bitmap", "bitmap")]
40for name, pg, hd, ft in specs:
41    s = doc.createInstance("com.sun.star.style.PageStyle")
42    ps.insertByName(name, s)
43    s.HeaderIsOn = True; s.FooterIsOn = True
44    fill(s, "", pg, 0x66CCFF); fill(s, "Header", hd, 0xCCFF66); fill(s, "Footer", ft, 0xFF66CC)
45
46text = doc.Text
47cur = text.createTextCursor()
48PB = uno.getConstantByName("com.sun.star.text.ControlCharacter.PARAGRAPH_BREAK")
49paras = []
50for name, *_ in specs:
51    text.insertString(cur, "page " + name, False)
52    text.insertControlCharacter(cur, PB, False)
53    paras.append(name)
54en = text.createEnumeration()
55for name in paras:
56    p = en.nextElement()
57    p.PageDescName = name
58
59doc.storeToURL(uno.systemPathToFileUrl(out), (pv("FilterName", "writer8"),))
60doc.close(True)
61