test area draw pixel
This commit is contained in:
parent
950bc8f560
commit
e8c7f815c2
50
gfxlcd/driver/null/area_driver.py
Normal file
50
gfxlcd/driver/null/area_driver.py
Normal 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)
|
||||||
|
|
36
gfxlcd/driver/null/null_area.py
Normal file
36
gfxlcd/driver/null/null_area.py
Normal 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)
|
@ -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
|
||||||
|
|
||||||
|
28
gfxlcd/tests/test_area_drawing.py
Normal file
28
gfxlcd/tests/test_area_drawing.py
Normal 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)
|
@ -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)
|
||||||
|
Loading…
Reference in New Issue
Block a user