mirror of
https://github.com/aykhans/AzSuicideDataVisualization.git
synced 2025-04-22 02:23:48 +00:00
106 lines
3.0 KiB
Python
106 lines
3.0 KiB
Python
# Copyright (c) 2010-2022 openpyxl
|
|
|
|
from openpyxl.descriptors import Typed, Alias
|
|
from openpyxl.descriptors.serialisable import Serialisable
|
|
from openpyxl.descriptors.nested import (
|
|
NestedBool,
|
|
NestedInteger,
|
|
NestedMinMax,
|
|
)
|
|
from openpyxl.descriptors.excel import ExtensionList
|
|
from .marker import PictureOptions
|
|
from .shapes import GraphicalProperties
|
|
|
|
|
|
class View3D(Serialisable):
|
|
|
|
tagname = "view3D"
|
|
|
|
rotX = NestedMinMax(min=-90, max=90, allow_none=True)
|
|
x_rotation = Alias('rotX')
|
|
hPercent = NestedMinMax(min=5, max=500, allow_none=True)
|
|
height_percent = Alias('hPercent')
|
|
rotY = NestedInteger(min=-90, max=90, allow_none=True)
|
|
y_rotation = Alias('rotY')
|
|
depthPercent = NestedInteger(allow_none=True)
|
|
rAngAx = NestedBool(allow_none=True)
|
|
right_angle_axes = Alias('rAngAx')
|
|
perspective = NestedInteger(allow_none=True)
|
|
extLst = Typed(expected_type=ExtensionList, allow_none=True)
|
|
|
|
__elements__ = ('rotX', 'hPercent', 'rotY', 'depthPercent', 'rAngAx',
|
|
'perspective',)
|
|
|
|
def __init__(self,
|
|
rotX=15,
|
|
hPercent=None,
|
|
rotY=20,
|
|
depthPercent=None,
|
|
rAngAx=True,
|
|
perspective=None,
|
|
extLst=None,
|
|
):
|
|
self.rotX = rotX
|
|
self.hPercent = hPercent
|
|
self.rotY = rotY
|
|
self.depthPercent = depthPercent
|
|
self.rAngAx = rAngAx
|
|
self.perspective = perspective
|
|
|
|
|
|
class Surface(Serialisable):
|
|
|
|
tagname = "surface"
|
|
|
|
thickness = NestedInteger(allow_none=True)
|
|
spPr = Typed(expected_type=GraphicalProperties, allow_none=True)
|
|
graphicalProperties = Alias('spPr')
|
|
pictureOptions = Typed(expected_type=PictureOptions, allow_none=True)
|
|
extLst = Typed(expected_type=ExtensionList, allow_none=True)
|
|
|
|
__elements__ = ('thickness', 'spPr', 'pictureOptions',)
|
|
|
|
def __init__(self,
|
|
thickness=None,
|
|
spPr=None,
|
|
pictureOptions=None,
|
|
extLst=None,
|
|
):
|
|
self.thickness = thickness
|
|
self.spPr = spPr
|
|
self.pictureOptions = pictureOptions
|
|
|
|
|
|
class _3DBase(Serialisable):
|
|
|
|
"""
|
|
Base class for 3D charts
|
|
"""
|
|
|
|
tagname = "ChartBase"
|
|
|
|
view3D = Typed(expected_type=View3D, allow_none=True)
|
|
floor = Typed(expected_type=Surface, allow_none=True)
|
|
sideWall = Typed(expected_type=Surface, allow_none=True)
|
|
backWall = Typed(expected_type=Surface, allow_none=True)
|
|
|
|
def __init__(self,
|
|
view3D=None,
|
|
floor=None,
|
|
sideWall=None,
|
|
backWall=None,
|
|
):
|
|
if view3D is None:
|
|
view3D = View3D()
|
|
self.view3D = view3D
|
|
if floor is None:
|
|
floor = Surface()
|
|
self.floor = floor
|
|
if sideWall is None:
|
|
sideWall = Surface()
|
|
self.sideWall = sideWall
|
|
if backWall is None:
|
|
backWall = Surface()
|
|
self.backWall = backWall
|
|
super(_3DBase, self).__init__()
|