Beispiel #1
0
    def test_style_property_text_shadow_has_px(self):
        prop = styles.TextShadowType(
            (styles.TextShadowType.Shadow(
                x_offset=styles.LengthType(value=1,
                                           units=styles.LengthType.Units.em),
                y_offset=styles.LengthType(value=1,
                                           units=styles.LengthType.Units.em)),
             styles.TextShadowType.Shadow(
                 x_offset=styles.LengthType(value=0.5,
                                            units=styles.LengthType.Units.em),
                 y_offset=styles.LengthType(value=0.7,
                                            units=styles.LengthType.Units.em),
                 blur_radius=styles.LengthType(
                     value=1, units=styles.LengthType.Units.em),
                 color=styles.NamedColors.red.value)))
        self.assertEqual(imsc_styles.StyleProperties.TextShadow.has_px(prop),
                         False)

        prop = styles.TextShadowType(
            (styles.TextShadowType.Shadow(
                x_offset=styles.LengthType(value=1,
                                           units=styles.LengthType.Units.px),
                y_offset=styles.LengthType(value=1.2,
                                           units=styles.LengthType.Units.em)),
             styles.TextShadowType.Shadow(
                 x_offset=styles.LengthType(value=0.5,
                                            units=styles.LengthType.Units.em),
                 y_offset=styles.LengthType(value=0.7,
                                            units=styles.LengthType.Units.em),
                 blur_radius=styles.LengthType(
                     value=1, units=styles.LengthType.Units.em),
                 color=styles.NamedColors.red.value)))
        self.assertEqual(imsc_styles.StyleProperties.TextShadow.has_px(prop),
                         True)

        prop = styles.TextShadowType(
            (styles.TextShadowType.Shadow(
                x_offset=styles.LengthType(value=1,
                                           units=styles.LengthType.Units.em),
                y_offset=styles.LengthType(value=1.2,
                                           units=styles.LengthType.Units.em)),
             styles.TextShadowType.Shadow(
                 x_offset=styles.LengthType(value=0.5,
                                            units=styles.LengthType.Units.px),
                 y_offset=styles.LengthType(value=0.7,
                                            units=styles.LengthType.Units.em),
                 blur_radius=styles.LengthType(
                     value=1, units=styles.LengthType.Units.em),
                 color=styles.NamedColors.red.value)))
        self.assertEqual(imsc_styles.StyleProperties.TextShadow.has_px(prop),
                         True)
Beispiel #2
0
        def extract(
                cls, context: StyleParsingContext,
                xml_attrib: str) -> typing.Union[str, styles.TextOutlineType]:

            if xml_attrib == "none":
                return styles.SpecialValues.none

            shadows = []

            for shadow in xml_attrib.split(","):

                cs = shadow.split(" ")

                if len(cs) < 1 or len(cs) > 4:
                    raise ValueError("Invalid Syntax")

                x_offset = StyleProperties.ttml_length_to_model(context, cs[0])

                y_offset = StyleProperties.ttml_length_to_model(context, cs[1])

                blur_radius = None
                color = None

                if len(cs) == 3:

                    try:

                        blur_radius = StyleProperties.ttml_length_to_model(
                            context, cs[2])

                    except ValueError:

                        color = utils.parse_color(cs[2])

                else:  # len(cs) == 4

                    blur_radius = StyleProperties.ttml_length_to_model(
                        context, cs[2])
                    color = utils.parse_color(cs[3])

                shadows.append(
                    styles.TextShadowType.Shadow(x_offset=x_offset,
                                                 y_offset=y_offset,
                                                 blur_radius=blur_radius,
                                                 color=color))

            return styles.TextShadowType(shadows)
Beispiel #3
0
    def test_tts_text_shadow(self):
        ts1 = styles.SpecialValues.none
        self.assertEqual(
            _get_set_style(imsc_styles.StyleProperties.TextShadow, ts1),
            "none")

        ts2 = styles.TextShadowType(
            (styles.TextShadowType.Shadow(
                x_offset=styles.LengthType(value=1,
                                           units=styles.LengthType.Units.em),
                y_offset=styles.LengthType(value=1.2,
                                           units=styles.LengthType.Units.em)),
             styles.TextShadowType.Shadow(
                 x_offset=styles.LengthType(value=0.5,
                                            units=styles.LengthType.Units.em),
                 y_offset=styles.LengthType(value=0.7,
                                            units=styles.LengthType.Units.em),
                 blur_radius=styles.LengthType(
                     value=1, units=styles.LengthType.Units.em),
                 color=styles.NamedColors.red.value)))

        self.assertEqual(
            _get_set_style(imsc_styles.StyleProperties.TextShadow, ts2),
            "1em 1.2em, 0.5em 0.7em 1em #ff0000")