Esempio n. 1
0
 def test_bounding_box(self):
     """Elements can have bounding boxes"""
     elem = self.svg.getElementById('D')
     self.assertEqual(tuple(elem.bounding_box()), ((60.0, 100.0), (130.0, 170.00)))
     self.assertTrue(elem.bounding_box().center.is_close((80.0, 150.0)))
     self.assertEqual(tuple(TextElement(x='10', y='5').bounding_box()), ((10, 10), (5, 5)))
     group = Group(elem)
     self.assertEqual(elem.bounding_box(), group.bounding_box())
Esempio n. 2
0
 def test_tostring(self):
     """Elements can be printed as strings"""
     self.assertEqual(Group().tostring(), b'<g/>')
     elem = Group(id='bar')
     path = elem.add(Tspan(id='foo'))
     elem.transform.add_translate(50, 50)
     path.style['fill'] = 'red'
     self.assertEqual(elem.tostring(), \
         b'<g transform="translate(50, 50)"><tspan id="foo" style="fill:red"/></g>')
Esempio n. 3
0
 def test_add(self):
     """Can add single or multiple elements with passthrough"""
     elem = self.svg.getElementById('D')
     group = elem.add(Group(id='foo'))
     self.assertEqual(group.get('id'), 'foo')
     groups = elem.add(Group(id='f1'), Group(id='f2'))
     self.assertEqual(len(groups), 2)
     self.assertEqual(groups[0].get('id'), 'f1')
     self.assertEqual(groups[1].get('id'), 'f2')
Esempio n. 4
0
    def test_chained_multiple_attrs(self):
        """Set multiple attributes at a time"""
        group = Group().update(
            attr1='A',
            attr2='B'
        ).update(
            attr3='C',
            attr4='D'
        )
        self.assertEqual(group.get('attr1'), 'A')
        self.assertEqual(group.get('attr2'), 'B')
        self.assertEqual(group.get('attr3'), 'C')
        self.assertEqual(group.get('attr4'), 'D')

        # remove attributes, setting them to None
        group.update(
            attr1=None,
            attr4=None
        )

        self.assertEqual(group.get('attr1'), None)
        self.assertEqual(group.get('attr2'), 'B')
        self.assertEqual(group.get('attr3'), 'C')
        self.assertEqual(group.get('attr4'), None)

        self.assertEqual(group.pop('attr2'), 'B')
        self.assertEqual(group.pop('attr3'), 'C')
Esempio n. 5
0
    def test_set_wrapped_attribute(self):
        """Remove wrapped attribute using .set()"""
        group = Group().update(
            transform=Transform(scale=2)
        )
        self.assertEqual(group.transform.matrix[0][0], 2)
        self.assertEqual(group.transform.matrix[1][1], 2)

        group.update(
            transform=None
        )
        self.assertEqual(group.transform, Transform())
Esempio n. 6
0
    def test_reference_count(self):
        """
        Test inkex.element.BaseElement-derived object type is preserved on adding to group

        See https://gitlab.com/inkscape/extensions/-/issues/81 for details
        """
        grp = Group()
        for _ in range(10):
            rect = Rectangle()
            grp.add(rect)

        for elem in grp:
            self.assertEqual(type(elem), Rectangle)
Esempio n. 7
0
    def effect(self):
        # create locked background layer
        layer = self.svg.add(Group.new('Background', id='bglayer'))
        layer.set('inkscape:groupmode', 'layer')
        layer.set('sodipodi:insensitive', 'true')

        # append background rectangle to layer
        layer.append(self.myrect())
Esempio n. 8
0
 def effect(self):
     #get rectangles
     prewiew_rects = self.myrect()
     
     #create locked preview layer
     layer = self.svg.add(Group.new('Preview Layer', id='previewlayer'))
     layer.set('inkscape:groupmode', 'layer')
     layer.set('sodipodi:insensitive', 'true')
     
     # append rectangles to layer
     layer.append(prewiew_rects[0])
     layer.append(prewiew_rects[1])
     layer.append(prewiew_rects[2])
     layer.append(prewiew_rects[3])
Esempio n. 9
0
    def test_pop_regular_attribute(self):
        """Remove wrapped attribute using .pop()"""
        group = Group()

        self.assertEqual(group.get('attr1'), None)

        group.update(
            attr1="42"
        )
        self.assertEqual(group.pop('attr1'), "42")
        self.assertEqual(group.pop('attr1'), None)
Esempio n. 10
0
    def test_pop_wrapped_attribute(self):
        """Remove wrapped attribute using .pop()"""
        group = Group()

        self.assertEqual(group.pop('transform'), Transform())

        group.update(
            transform=Transform(scale=2)
        )
        self.assertEqual(group.pop('transform'), Transform(scale=2))
        self.assertEqual(group.pop('transform'), Transform())
        self.assertRaises(AttributeError, getattr, group, 'foo')
Esempio n. 11
0
    def effect(self):
        with open(self.options.file_name, 'rb') as fhl:
            data = fhl.read()
            extDocument = load_svg(data)
            layers = extDocument.findall(inkex.addNS('g', 'svg'))
            layers2add = []
            for layer in layers:
                if hasattr(layer, 'groupmode') and layer.groupmode == 'layer':
                    if self.options.mode == IMPORT_MODE.VISIBLE.value:
                        if (not hasattr(layer, 'style')
                            ) or layer.style != 'display:none':
                            layers2add.append(layer)
                    elif self.options.mode == IMPORT_MODE.NOT_VISIBLE.value:
                        if hasattr(layer,
                                   'style') and layer.style == 'display:none':
                            layers2add.append(layer)
                    else:  # all
                        layers2add.append(deepcopy(layer))

            root = self.document.getroot()

            if len(self.options.parent) > 0:
                g = Group.create(self.options.parent, True)
                root.append(g)
                g.set_random_id()
                root = g

            if self.options.with_defs == 'true':
                defs = extDocument.findall(inkex.addNS('defs', 'svg'))
                for d in defs:
                    root.append(deepcopy(d))
                    d.set_random_id()

            for layer in layers2add:
                layer.label = self.options.prefix + layer.label
                root.append(layer)
                layer.set_random_id()

        return self.document
Esempio n. 12
0
 def test_creation(self):
     """Create elements with attributes"""
     group = Group().update(inkscape__label='Foo')
     self.assertEqual(group.get('inkscape:label'), 'Foo')
     group = Group().update(inkscape__label='Bar')
     self.assertEqual(group.label, 'Bar')