# encoding: utf-8 """ lxml custom element classes for DrawingML-related XML elements. """ from __future__ import absolute_import from ...enum.dml import MSO_THEME_COLOR from ..simpletypes import ST_HexColorRGB, ST_Percentage from ..xmlchemy import ( BaseOxmlElement, Choice, RequiredAttribute, ZeroOrOne, ZeroOrOneChoice, ) class _BaseColorElement(BaseOxmlElement): """ Base class for and elements. """ lumMod = ZeroOrOne("a:lumMod") lumOff = ZeroOrOne("a:lumOff") def add_lumMod(self, value): """ Return a newly added child element. """ lumMod = self._add_lumMod() lumMod.val = value return lumMod def add_lumOff(self, value): """ Return a newly added child element. """ lumOff = self._add_lumOff() lumOff.val = value return lumOff def clear_lum(self): """ Return self after removing any and child elements. """ self._remove_lumMod() self._remove_lumOff() return self class CT_Color(BaseOxmlElement): """Custom element class for `a:fgClr`, `a:bgClr` and perhaps others.""" eg_colorChoice = ZeroOrOneChoice( ( Choice("a:scrgbClr"), Choice("a:srgbClr"), Choice("a:hslClr"), Choice("a:sysClr"), Choice("a:schemeClr"), Choice("a:prstClr"), ), successors=(), ) class CT_HslColor(_BaseColorElement): """ Custom element class for element. """ class CT_Percentage(BaseOxmlElement): """ Custom element class for and elements. """ val = RequiredAttribute("val", ST_Percentage) class CT_PresetColor(_BaseColorElement): """ Custom element class for element. """ class CT_SchemeColor(_BaseColorElement): """ Custom element class for element. """ val = RequiredAttribute("val", MSO_THEME_COLOR) class CT_ScRgbColor(_BaseColorElement): """ Custom element class for element. """ class CT_SRgbColor(_BaseColorElement): """ Custom element class for element. """ val = RequiredAttribute("val", ST_HexColorRGB) class CT_SystemColor(_BaseColorElement): """ Custom element class for element. """