示例#1
0
    def test_layout_iter_properties():
        context = Context()
        layout = Layout(context)
        layout_iter = layout.get_iter()

        assert layout_iter.next_run() is False
        assert layout_iter.next_char() is False
        assert layout_iter.next_cluster() is False
        assert layout_iter.next_line() is False
        assert layout_iter.at_last_line() is True
        assert layout_iter.get_index() == 0
        assert layout_iter.get_baseline() == 0

        assert isinstance(layout_iter.get_char_extents(), Rectangle)

        cluster_ink, cluster_logical = layout_iter.get_cluster_extents()
        assert isinstance(cluster_ink, Rectangle)
        assert isinstance(cluster_logical, Rectangle)

        run_ink, run_logical = layout_iter.get_run_extents()
        assert isinstance(run_ink, Rectangle)
        assert isinstance(run_logical, Rectangle)

        y0, y1 = layout_iter.get_line_yrange()
        assert y0 == 0
        assert y1 == 0

        line_ink, line_logical = layout_iter.get_line_extents()
        assert isinstance(line_ink, Rectangle)
        assert isinstance(line_logical, Rectangle)

        layout_ink, layout_logical = layout_iter.get_layout_extents()
        assert isinstance(layout_ink, Rectangle)
        assert isinstance(layout_logical, Rectangle)
示例#2
0
    def test_layout_setting_properties():
        context = Context()
        layout = Layout(context)

        layout.set_width(300)
        assert layout.get_width() == 300

        layout.set_height(400)
        assert layout.get_height() == 400

        assert layout.get_spacing() == 0
        layout.set_spacing(30)
        assert layout.get_spacing() == 30

        layout.set_alignment(Alignment.CENTER)
        assert layout.get_alignment() is Alignment.CENTER

        layout.set_ellipsize(EllipsizeMode.MIDDLE)
        assert layout.get_ellipsize() is EllipsizeMode.MIDDLE

        ink_rect, logical_rect = layout.get_extents()
        assert logical_rect.width == 0
        assert logical_rect.height == 0

        width, height = layout.get_size()
        assert width == 0
        assert height == 0

        baseline = layout.get_baseline()
        assert baseline == 0

        line_count = layout.get_line_count()
        assert line_count == 1
示例#3
0
    def test_glyph_item_iterator(self):
        text = 'Hi from Παν語'
        layout = Layout(self.pango_context)
        layout.set_text(text)
        layout_iter = layout.get_iter()

        glyph_item_iter = GlyphItemIter()
        assert isinstance(glyph_item_iter.get_pointer(), ffi.CData)

        assert glyph_item_iter.init_start(
            layout_iter.get_run(),
            text
        )

        assert isinstance(glyph_item_iter.glyph_item, GlyphItem)
        assert glyph_item_iter.text == text

        # Verify first cluster
        assert glyph_item_iter.start_glyph == 0
        assert glyph_item_iter.start_index == 0
        assert glyph_item_iter.start_char == 0
        assert glyph_item_iter.end_glyph == 1
        assert glyph_item_iter.end_index == 1
        assert glyph_item_iter.end_char == 1

        assert not glyph_item_iter.prev_cluster()
        assert glyph_item_iter.next_cluster()

        # Verify second cluster
        assert glyph_item_iter.start_glyph == 1
        assert glyph_item_iter.start_index == 1
        assert glyph_item_iter.start_char == 1
        assert glyph_item_iter.end_glyph == 2
        assert glyph_item_iter.end_index == 2
        assert glyph_item_iter.end_char == 2

        assert glyph_item_iter.init_end(
            layout_iter.get_run(),
            text
        )

        # Verify last cluster
        assert glyph_item_iter.start_glyph == 7
        assert glyph_item_iter.start_index == 7
        assert glyph_item_iter.start_char == 7
        assert glyph_item_iter.end_glyph == 8
        assert glyph_item_iter.end_index == 8
        assert glyph_item_iter.end_char == 8

        assert not glyph_item_iter.next_cluster()
        assert glyph_item_iter.prev_cluster()

        # Verify second to last cluster
        assert glyph_item_iter.start_glyph == 6
        assert glyph_item_iter.start_index == 6
        assert glyph_item_iter.start_char == 6
        assert glyph_item_iter.end_glyph == 7
        assert glyph_item_iter.end_index == 7
        assert glyph_item_iter.end_char == 7
    def test_layout_run_properties(self):
        layout = Layout(self.pango_context)
        layout.set_text('Hello World')
        layout_iter = layout.get_iter()

        layout_run = layout_iter.get_run()
        layout_run_item = layout_run.item
        assert isinstance(layout_run_item, Item)
    def test_layout_setting_text(self):
        layout = Layout(self.pango_context)

        layout.set_text('Hi from Παν語')
        assert layout.get_text() == 'Hi from Παν語'

        layout.set_markup('<span font="italic 30">Hello from Παν語</span>')
        assert layout.get_text() == 'Hello from Παν語'
示例#6
0
    def test_layout_setting_text():
        context = Context()
        layout = Layout(context)

        layout.set_width(300)

        layout.set_text('Hi from Pango')
        layout.set_markup('<span font="italic 30">Hi from Παν語</span>')
    def test_glyph_item_copies(self):
        text = 'Hi from Παν語'
        layout = Layout(self.pango_context)
        layout.set_text(text)
        layout_iter = layout.get_iter()
        layout_run = layout_iter.get_run()

        assert layout_run.copy().get_pointer() != layout_run.get_pointer()
    def test_layout_run_from_pointer(self):
        layout = Layout(self.pango_context)
        layout.set_text('Hello World')
        layout_iter = layout.get_iter()

        layout_run = layout_iter.get_run()
        same_layout = LayoutRun.from_pointer(layout_run.get_pointer())

        assert isinstance(same_layout, LayoutRun)
    def test_glyph_item_get_logical_widths(self):
        text = 'Hi from Παν語'
        layout = Layout(self.pango_context)
        layout.set_text(text)
        layout_iter = layout.get_iter()
        layout_run = layout_iter.get_run()
        logical_widths = layout_run.get_logical_widths(text)

        assert len(logical_widths) == 8
        assert isinstance(logical_widths[0], int)
示例#10
0
    def test_layout_iter_pointer(self):
        layout = Layout(self.pango_context)
        layout_iter = layout.get_iter()
        assert isinstance(layout_iter, LayoutIter)
        assert isinstance(layout_iter.get_pointer(), ffi.CData)

        pointer_shallow_copy = layout_iter.get_pointer()
        layout_iter_shallow_copy = LayoutIter.from_pointer(
            pointer_shallow_copy
        )
        assert isinstance(layout_iter_shallow_copy, LayoutIter)
        assert isinstance(layout_iter_shallow_copy.get_pointer(), ffi.CData)
    def test_glyph_item_splits(self):
        text = 'Hi from Παν語'
        layout = Layout(self.pango_context)
        layout.set_text(text)
        layout_iter = layout.get_iter()
        layout_run = layout_iter.get_run()
        layout_run_hi = layout_run.split(text, 3)

        # Substring "Hi "
        assert layout_run_hi.item.num_chars == 3
        assert layout_run_hi.item.offset == 0

        # Substring "from "
        assert layout_run.item.num_chars == 5
        assert layout_run.item.offset == 3
示例#12
0
    def test_set_attributes(self):
        context = Context()
        layout = Layout(context)
        layout.set_text("Working?")
        attr = Attribute.from_size(5, 1, 4)
        attr_list = AttrList()

        attr_list.insert(attr)

        layout.set_attributes(attr_list)
        layout.get_attributes()

        # Resetting the attributes
        layout.set_attributes(None)
        layout.get_attributes()
示例#13
0
    def test_layout_setting_properties(self):
        layout = Layout(self.pango_context)

        layout.set_width(300)
        assert layout.get_width() == 300

        layout.set_height(400)
        assert layout.get_height() == 400

        assert layout.get_spacing() == 0
        layout.set_spacing(30)
        assert layout.get_spacing() == 30

        layout.set_alignment(Alignment.CENTER)
        assert layout.get_alignment() is Alignment.CENTER

        layout.set_ellipsize(EllipsizeMode.MIDDLE)
        assert layout.get_ellipsize() is EllipsizeMode.MIDDLE

        layout.set_wrap(WrapMode.WORD_CHAR)
        assert layout.get_wrap() is WrapMode.WORD_CHAR

        ink_rect, logical_rect = layout.get_extents()
        assert logical_rect.width == 0
        # The height of the layout will be the height of the font, despite no
        # text being set against the layout.
        assert logical_rect.height > 0

        width, height = layout.get_size()
        assert width == 0
        # The height of the layout will be the height of the font, despite no
        # text being set against the layout.
        assert height > 0

        baseline = layout.get_baseline()
        # The baseline of the layout will correspond to the selected font,
        # despite no text being set against the layout.
        assert baseline > 0

        line_count = layout.get_line_count()
        assert line_count == 1
    def test_item_properties(self):
        layout = Layout(self.pango_context)
        layout.set_text('Hi from Παν語')
        layout_iter = layout.get_iter()

        layout_run = layout_iter.get_run()
        layout_run_item = layout_run.item

        assert layout_run_item.length == 8
        assert layout_run_item.offset == 0
        assert layout_run_item.num_chars == 8
        assert isinstance(layout_run_item.get_pointer(), ffi.CData)

        assert layout_iter.next_run()
        layout_run = layout_iter.get_run()
        layout_run_item = layout_run.item

        assert layout_run_item.length == 6
        assert layout_run_item.offset == 8
        assert layout_run_item.num_chars == 3
        assert isinstance(layout_run_item.get_pointer(), ffi.CData)
示例#15
0
    def test_layout_setting_font_description():
        context = Context()
        layout = Layout(context)

        # Assert that the font description is not set
        assert layout.get_font_description() is None

        # Creating the font description
        desc = FontDescription()
        desc.set_family('sans-serif')
        layout.set_font_description(desc)

        # Verifying the font description was set
        same_desc = layout.get_font_description()
        assert same_desc.get_family() == desc.get_family()

        # Changing the font description
        desc.set_family('serif')
        assert same_desc.get_family() != desc.get_family()

        # Resetting the font description
        layout.set_font_description(None)
        assert layout.get_font_description() is None
示例#16
0
    def test_layout_iter_properties(self):
        layout = Layout(self.pango_context)
        layout_iter = layout.get_iter()

        assert layout_iter.next_run() is False
        assert layout_iter.next_char() is False
        assert layout_iter.next_cluster() is False
        assert layout_iter.next_line() is False
        assert layout_iter.at_last_line() is True
        assert layout_iter.get_index() == 0
        # Even with no text in the layout, the layout will still have a
        # baseline corresponding to the selected font description.
        assert layout_iter.get_baseline() > 0

        assert isinstance(layout_iter.get_char_extents(), Rectangle)

        cluster_ink, cluster_logical = layout_iter.get_cluster_extents()
        assert isinstance(cluster_ink, Rectangle)
        assert isinstance(cluster_logical, Rectangle)

        run_ink, run_logical = layout_iter.get_run_extents()
        assert isinstance(run_ink, Rectangle)
        assert isinstance(run_logical, Rectangle)

        y0, y1 = layout_iter.get_line_yrange()
        assert y0 == 0
        # Even with no text in the layout, the layout will still have a
        # y-range corresponding to the selected font description.
        assert y1 > 0

        line_ink, line_logical = layout_iter.get_line_extents()
        assert isinstance(line_ink, Rectangle)
        assert isinstance(line_logical, Rectangle)

        layout_ink, layout_logical = layout_iter.get_layout_extents()
        assert isinstance(layout_ink, Rectangle)
        assert isinstance(layout_logical, Rectangle)
示例#17
0
 def test_layout_returns_identical_context():
     context = Context()
     layout = Layout(context)
     identical_context = layout.get_context()
     assert identical_context.get_pointer() == context.get_pointer()
示例#18
0
    def test_layout_iterator_run_returns_none():
        context = Context()
        layout = Layout(context)
        layout_iter = layout.get_iter()

        assert layout_iter.get_run() is None
示例#19
0
 def test_layout_not_implemented_equality(self):
     context = Context()
     layout = Layout(context)
     assert ('not an object' != layout)
示例#20
0
 def test_layout_get_pointer_returns_identical_layout():
     context = Context()
     layout = Layout(context)
     identical_layout = Layout.from_pointer(layout.get_pointer())
     assert identical_layout.get_pointer() == layout.get_pointer()
示例#21
0
    def test_layout_iterator_run_returns_none(self):
        layout = Layout(self.pango_context)
        layout_iter = layout.get_iter()

        assert layout_iter.get_run() is None
示例#22
0
 def test_layout_iter_pointer():
     context = Context()
     layout = Layout(context)
     layout_iter = layout.get_iter()
     assert isinstance(layout_iter.get_pointer(), ffi.CData)