def process_set_style_properties(self, parent_ctx: TTMLElement, xml_elem): '''Processes style properties on `<set>` element ''' if parent_ctx.model_element is None: LOGGER.error("Set parent does not exist") return if not issubclass(parent_ctx.ttml_class, ContentElement): LOGGER.error("Set parent is not a content element") return for attr in xml_elem.attrib: prop = StyleProperties.BY_QNAME.get(attr) if prop is not None: try: model_prop, model_value = prop.to_model(self, xml_elem) parent_ctx.model_element.add_animation_step( model.DiscreteAnimationStep( model_prop, self.desired_begin, self.desired_end, model_value)) break except ValueError: LOGGER.error("Error reading style property: %s", prop.__name__)
def test_copy_to(self): src = model.Region("hello") src.set_begin(Fraction(1, 2)) src.set_end(Fraction(1, 3)) src.set_lang("fr") src.set_space(model.WhiteSpaceHandling.PRESERVE) src.add_animation_step( model.DiscreteAnimationStep(styles.StyleProperties.Color, 0, 1, styles.NamedColors.aqua.value)) src.set_style(styles.StyleProperties.Color, styles.NamedColors.green.value) dest = model.Region("hello") src.copy_to(dest) self.assertEqual(dest.get_begin(), src.get_begin()) self.assertEqual(dest.get_end(), src.get_end()) self.assertEqual(dest.get_lang(), src.get_lang()) self.assertEqual(dest.get_space(), src.get_space()) self.assertSequenceEqual(list(dest.iter_animation_steps()), list(src.iter_animation_steps())) self.assertSequenceEqual(list(dest.iter_styles()), list(src.iter_styles()))
def test_animation_step_init(self): model.DiscreteAnimationStep(styles.StyleProperties.Color, 0, 1, styles.NamedColors.aqua.value) with self.assertRaises(ValueError): model.DiscreteAnimationStep(None, 0, 1, styles.NamedColors.aqua.value) with self.assertRaises(ValueError): model.DiscreteAnimationStep(styles.StyleProperties.Color, 0, 1, None) with self.assertRaises(ValueError): model.DiscreteAnimationStep(styles.StyleProperties.Color, 0, 1, "hello")
def test_add_remove_animation_step(self): p = model.ContentElement() s1 = model.DiscreteAnimationStep(styles.StyleProperties.Color, 0, 1, styles.NamedColors.aqua.value) s2 = model.DiscreteAnimationStep(styles.StyleProperties.Color, 2, None, styles.NamedColors.black.value) s3 = model.DiscreteAnimationStep(styles.StyleProperties.TextAlign, 1, None, styles.TextAlignType.center) p.add_animation_step(s1) p.add_animation_step(s2) p.add_animation_step(s3) self.assertListEqual([s1, s2, s3], list(p.iter_animation_steps())) p.remove_animation_step(s2) self.assertListEqual([s1, s3], list(p.iter_animation_steps()))
def setUp(self): self.doc = model.ContentDocument() a1 = model.DiscreteAnimationStep( style_property=styles.StyleProperties.Color, begin=None, end=None, value=styles.NamedColors.red.value ) a2 = model.DiscreteAnimationStep( style_property=styles.StyleProperties.Color, begin=Fraction(1), end=None, value=styles.NamedColors.green.value ) a3 = model.DiscreteAnimationStep( style_property=styles.StyleProperties.Color, begin=Fraction(2), end=None, value=styles.NamedColors.blue.value ) r1 = model.Region("r1", self.doc) self.doc.put_region(r1) # r2: sig times = {2, 9} r2 = model.Region("r2", self.doc) r2.set_begin(Fraction(2)) r2.set_end(Fraction(9)) r2.add_animation_step(a1) self.doc.put_region(r2) # b: sig times = {1, 10} b = model.Body(self.doc) b.set_begin(Fraction(1)) b.set_end(Fraction(10)) self.doc.set_body(b) # div1: offset = 1, sig times = {2, 4} div1 = model.Div(self.doc) div1.add_animation_step(a2) div1.set_begin(Fraction(3)) div1.set_region(r1) b.push_child(div1) # div2: offset = 1, sig times = {10} div2 = model.Div(self.doc) div2.set_end(Fraction(12)) div2.set_region(r2) b.push_child(div2) # p1: offset = 1, sig times = {} p1 = model.P(self.doc) div2.push_child(p1) # span1: offset = 1, sig times = {3} span1 = model.Span(self.doc) span1.add_animation_step(a3) p1.push_child(span1) t1 = model.Text(self.doc, "hello") span1.push_child(t1)