test area draw pixel

This commit is contained in:
Bartosz Kościów 2017-05-29 21:40:23 +02:00
parent 950bc8f560
commit e8c7f815c2
5 changed files with 116 additions and 3 deletions

View File

@ -0,0 +1,50 @@
"""Area driver """
import time
from gfxlcd.abstract.driver import Driver
class AreaDriver(Driver):
"""SPI communication driver"""
def __init__(self, width, height):
self.height = height
self.width = width
self.buffer = [[0] * self.height for x in range(self.width)]
self.area = {
'start_x': 0,
'start_y': 0,
'end_x': width,
'end_y': height
}
self.pointer = (0, 0)
def init(self):
"""initialize pins"""
pass
def reset(self):
"""reset a display"""
pass
def cmd(self, data, enable):
"""send command to display"""
pass
def data(self, data, enable):
"""send data to display"""
app_x, app_y = self.pointer
self.buffer[self.area['start_x'] + app_x][self.area['start_y'] + app_y] = data
self._inc_pointer()
def _inc_pointer(self):
app_x, app_y = self.pointer
app_x += 1
if self.area['start_x'] + app_x > self.area['end_x']:
app_x = 0
app_y += 1
if self.area['start_y'] + app_y > self.area['end_y']:
app_x = 0
app_y = 0
self.pointer = (app_x, app_y)

View File

@ -0,0 +1,36 @@
"""Null Area test chip driver"""
from gfxlcd.drawing.area import Area
from gfxlcd.abstract.chip import Chip
class NullArea(Area, Chip):
"""Test chip driver for area drawing"""
def __init__(self, width, height, driver, auto_flush=True):
Chip.__init__(self, width, height, driver, auto_flush)
Area.__init__(self, driver)
self.rotation = 0
def _converted_background_color(self):
"""color from 8-8-8 to 5-6-5"""
return 2
def _converted_color(self):
"""color from 8-8-8 to 5-6-5"""
return 1
def init(self):
"""init display"""
self.driver.init()
Area.init(self)
Chip.init(self)
self.driver.reset()
def _set_area(self, pos_x1, pos_y1, pos_x2, pos_y2):
"""set area to work on"""
self.driver.area = {
'start_x': pos_x1,
'start_y': pos_y1,
'end_x': pos_x2,
'end_y': pos_y2
}
self.driver.pointer = (0, 0)

View File

@ -1,4 +1,4 @@
"""Null Page test chip drover""" """Null Page test chip driver"""
from gfxlcd.drawing.page import Page from gfxlcd.drawing.page import Page
from gfxlcd.abstract.chip import Chip from gfxlcd.abstract.chip import Chip

View File

@ -0,0 +1,28 @@
import sys
from nose.tools import assert_equal
sys.path.append("../../")
from gfxlcd.driver.null.null_area import NullArea
from gfxlcd.driver.null.area_driver import AreaDriver
class TestPageDrawing(object):
def setUp(self):
self.drv = AreaDriver(10, 16)
self.lcd = NullArea(10, 16, self.drv, False)
self.lcd.init()
def get_buffer(self):
return [[0] * 16 for x in range(10)]
def test_has_correct_size(self):
assert_equal(self.lcd.width, 10)
assert_equal(self.lcd.height, 16)
def test_empty_buffer_after_init(self):
assert_equal(self.drv.buffer, self.get_buffer())
def test_draw_pixel(self):
self.lcd.draw_pixel(1, 1)
buffer = self.get_buffer()
buffer[1][1] = 1
assert_equal(self.drv.buffer, buffer)

View File

@ -7,7 +7,6 @@ from gfxlcd.driver.null.null_page import NullPage
class TestPageDrawing(object): class TestPageDrawing(object):
def setUp(self): def setUp(self):
self.lcd = NullPage(10, 16, None, False) self.lcd = NullPage(10, 16, None, False)
self.buffer = [[0] * (16 // 8) for x in range(10)]
self.lcd.init() self.lcd.init()
def get_buffer(self): def get_buffer(self):
@ -18,7 +17,7 @@ class TestPageDrawing(object):
assert_equal(self.lcd.height, 16) assert_equal(self.lcd.height, 16)
def test_empty_buffer_after_init(self): def test_empty_buffer_after_init(self):
assert_equal(self.lcd.buffer, self.buffer) assert_equal(self.lcd.buffer, self.get_buffer())
def test_draw_pixel(self): def test_draw_pixel(self):
self.lcd.draw_pixel(1, 1) self.lcd.draw_pixel(1, 1)