90 lines
2.7 KiB
Python
90 lines
2.7 KiB
Python
# Copyright (c) 2010-2024 openpyxl
|
|
|
|
from openpyxl.descriptors.serialisable import Serialisable
|
|
from openpyxl.descriptors import (
|
|
Typed,
|
|
Alias
|
|
)
|
|
from openpyxl.descriptors.nested import (
|
|
EmptyTag
|
|
)
|
|
from openpyxl.drawing.colors import ColorChoiceDescriptor
|
|
from openpyxl.drawing.fill import *
|
|
from openpyxl.drawing.line import LineProperties
|
|
from openpyxl.drawing.geometry import (
|
|
Shape3D,
|
|
Scene3D,
|
|
Transform2D,
|
|
CustomGeometry2D,
|
|
PresetGeometry2D,
|
|
)
|
|
|
|
|
|
class GraphicalProperties(Serialisable):
|
|
|
|
"""
|
|
Somewhat vaguely 21.2.2.197 says this:
|
|
|
|
This element specifies the formatting for the parent chart element. The
|
|
custGeom, prstGeom, scene3d, and xfrm elements are not supported. The
|
|
bwMode attribute is not supported.
|
|
|
|
This doesn't leave much. And the element is used in different places.
|
|
"""
|
|
|
|
tagname = "spPr"
|
|
|
|
bwMode = NoneSet(values=(['clr', 'auto', 'gray', 'ltGray', 'invGray',
|
|
'grayWhite', 'blackGray', 'blackWhite', 'black', 'white', 'hidden']
|
|
)
|
|
)
|
|
|
|
xfrm = Typed(expected_type=Transform2D, allow_none=True)
|
|
transform = Alias('xfrm')
|
|
custGeom = Typed(expected_type=CustomGeometry2D, allow_none=True) # either or
|
|
prstGeom = Typed(expected_type=PresetGeometry2D, allow_none=True)
|
|
|
|
# fills one of
|
|
noFill = EmptyTag(namespace=DRAWING_NS)
|
|
solidFill = ColorChoiceDescriptor()
|
|
gradFill = Typed(expected_type=GradientFillProperties, allow_none=True)
|
|
pattFill = Typed(expected_type=PatternFillProperties, allow_none=True)
|
|
|
|
ln = Typed(expected_type=LineProperties, allow_none=True)
|
|
line = Alias('ln')
|
|
scene3d = Typed(expected_type=Scene3D, allow_none=True)
|
|
sp3d = Typed(expected_type=Shape3D, allow_none=True)
|
|
shape3D = Alias('sp3d')
|
|
extLst = Typed(expected_type=OfficeArtExtensionList, allow_none=True)
|
|
|
|
__elements__ = ('xfrm', 'prstGeom', 'noFill', 'solidFill', 'gradFill', 'pattFill',
|
|
'ln', 'scene3d', 'sp3d')
|
|
|
|
def __init__(self,
|
|
bwMode=None,
|
|
xfrm=None,
|
|
noFill=None,
|
|
solidFill=None,
|
|
gradFill=None,
|
|
pattFill=None,
|
|
ln=None,
|
|
scene3d=None,
|
|
custGeom=None,
|
|
prstGeom=None,
|
|
sp3d=None,
|
|
extLst=None,
|
|
):
|
|
self.bwMode = bwMode
|
|
self.xfrm = xfrm
|
|
self.noFill = noFill
|
|
self.solidFill = solidFill
|
|
self.gradFill = gradFill
|
|
self.pattFill = pattFill
|
|
if ln is None:
|
|
ln = LineProperties()
|
|
self.ln = ln
|
|
self.custGeom = custGeom
|
|
self.prstGeom = prstGeom
|
|
self.scene3d = scene3d
|
|
self.sp3d = sp3d
|