示例#1
0
def test_canvas_widget(size, offset, anchor):
    '''
    Place widgets and verify position
    '''
    w = text('X')
    ri = w.render()[0]

    img = Image.new('1', size, 0)
    drw = ImageDraw.Draw(img)
    fnt = w.font

    if anchor and offset:
        c = canvas(size=size, placements=((w, offset, anchor), ))
    elif offset:
        c = canvas(size=size, placements=((w, offset), ))
    else:
        c = canvas(size=size, placements=((w, ), ))
    pos = compute_placement(size, fnt.getsize('X'), offset, anchor)
    drw.text( pos, 'X', font=fnt, fill='white')
    assert c.render()[0] == img, f'Placing \'X\' on {size} canvas at {offset} anchored {anchor} failed'

    img = Image.new('1', size, 0)
    drw = ImageDraw.Draw(img)

    c = canvas(size=size)
    c.append(w, offset, anchor)
    drw.text( pos, 'X', font=fnt, fill='white')
    assert c.render()[0] == img, f'Placing \'X\' by append on {size} canvas at {offset} anchored {anchor} failed'
示例#2
0
 def _make_scroll(val, size, distance=1, speed=1):
     w = text(value=val)
     sw = scroll(size=size,
                 widget=w,
                 actions=[('rtl')],
                 distance=distance,
                 speed=speed,
                 tps=60)
     return sw
示例#3
0
 def _slide(actions):
     w = text(value='This is a test!')
     sw = slide(size=(100, 16),
                widget=w,
                just='mm',
                actions=actions,
                speed=1,
                tps=60)
     return sw
def test_string_eval():
    s = 'abc'
    w = text(value=s)
    img1 = w.render()[0]
    drw = ImageDraw.Draw(img1)
    img2 = Image.new('1', drw.textsize(s, font=w.font))
    drw = ImageDraw.Draw(img2)
    drw.text((0, 0), s, font=w.font, fill='white')

    assert img1 == img2, f'Images do not match for value {w.current}'
def test_request_size():
    s = 'abc'
    w = text('abc', size=(10, 8))
    img1 = w.render()[0]
    drw = ImageDraw.Draw(img1)
    img2 = Image.new('1', (10, 8))
    drw = ImageDraw.Draw(img2)
    drw.text((0, 0), s, font=w.font, fill='white')

    assert img1 == img2, f'Image should only contain \'ab\''

    db = {'value': s}
    w = text(value='f"{db[\'value\']}"', dataset={'db': db}, size=(10, 8))
    w.render()[0]
    db['value'] = s[0]
    img1 = w.render()[0]
    img2 = Image.new('1', (10, 8))
    drw = ImageDraw.Draw(img2)
    drw.text((0, 0), s[0], font=w.font, fill='white')

    assert img1 == img2, f'Image should still only contain \'ab\''
示例#6
0
def test_canvas_widget_change():

    db = {'artist': 'Sting'}
    w = text(value='f"Artist {db[\'artist\']}"', dataset = { 'db': db }, size=(60,8))
    c = canvas(size=(80,16))
    c.append(w)
    img, m1 = c.render()
    img, m2 = c.render()
    db['artist'] = 'Moby'
    img, m3 = c.render()

    assert m1 and m3 and not m2
def test_image_placement():

    # Make H
    hImg = Image.new('1', (5, 8))
    d = ImageDraw.Draw(hImg)
    d.line([(0, 1), (0, 7)], fill='white')
    d.line([(4, 1), (4, 7)], fill='white')
    d.line([(0, 4), (4, 4)], fill='white')

    w = text(value='H', size=(100, 16), just='rt')
    renderImage = w.render()[0]

    for size in [(100, 16), (99, 15), (20, 8), (19, 8)]:
        for j in ['lt', 'lm', 'lb', 'mt', 'mm', 'mb', 'rt', 'rm', 'rb']:
            offsetH = {'r': size[0] - 5, 'l': 0, 'm': round((size[0] - 5) / 2)}
            offsetV = {'b': size[1] - 8, 't': 0, 'm': round((size[1] - 8) / 2)}

            w = text(value='H', size=size, just=j)
            renderImage = w.render()[0]

            img = Image.new('1', size)
            img.paste(hImg, (offsetH[j[0]], offsetV[j[1]]))
            bbox = ImageChops.difference(img, renderImage).getbbox()
            assert not bbox, f'Place {j[0]},{j[1]} failed at size {size}'
示例#8
0
def test_text_widget():
    path = Path(__file__).parent / "reference/images/text_artist_sting_60x8.png"
    img = Image.open(path).convert('1')

    db = {'artist': 'Sting'}
    w = text(value='f"Artist {db[\'artist\']}"', dataset = { 'db': db }, size=(60,8))
    renderImage = w.render()[0]
    bbox = ImageChops.difference(img, renderImage).getbbox()
    assert not bbox, f'Sting image did not match'

    path = Path(__file__).parent / "reference/images/text_artist_new_republic_60x8.png"
    img = Image.open(path).convert('1')

    db['artist']='New Republic'
    renderImage = w.render()[0]
    bbox = ImageChops.difference(img, renderImage).getbbox()
    assert not bbox, f'New Republic image did not match'