Merge pull request #15 from bkosciow/colors

Colors
This commit is contained in:
Bartosz 2017-07-09 10:01:48 +02:00 committed by GitHub
commit 6e9d056cd9
19 changed files with 377 additions and 250 deletions

View File

@ -31,13 +31,8 @@ class Chip(metaclass=abc.ABCMeta):
return self._width return self._width
@abc.abstractmethod @abc.abstractmethod
def _converted_background_color(self): def _convert_color(self, color):
"""convert RGB background to available color""" """convert color to avaible one"""
pass
@abc.abstractmethod
def _converted_color(self):
"""convert RGB color to available color"""
pass pass
@property @property
@ -90,7 +85,7 @@ class Chip(metaclass=abc.ABCMeta):
pass pass
@abc.abstractmethod @abc.abstractmethod
def draw_pixel(self, pos_x, pos_y): def draw_pixel(self, pos_x, pos_y, color=None):
"""draw a pixel at x,y""" """draw a pixel at x,y"""
pass pass

View File

@ -21,8 +21,12 @@ def test1():
lcd = CharLCD(drv.width, drv.height, drv, 0, 0) lcd = CharLCD(drv.width, drv.height, drv, 0, 0)
lcd.init() lcd.init()
lcd.write('-!Second blarg!') lcd.write('First Line')
lcd.write("-second line", 0, 1) lcd.write("This text is displayed", 2, 18)
lcd.write("via CharLCD package", 10, 20)
lcd.write('GfxLCD uses driver', 1, 22)
lcd.write('to be compatible with', 9, 24)
lcd.write('HD44780', 10, 26)
lcd.flush() lcd.flush()
lcd.write('/* ', 19, 0) lcd.write('/* ', 19, 0)

View File

@ -0,0 +1,28 @@
import sys
sys.path.append("../../")
import RPi.GPIO # NOQA pylint: disable=I0011,F0401
from charlcd.buffered import CharLCD # NOQA
from gfxlcd.driver.nju6450.gpio import GPIO
from gfxlcd.driver.nju6450.nju6450 import NJU6450
from gfxlcd.driver.hd44780 import HD44780
RPi.GPIO.setmode(RPi.GPIO.BCM)
def test1():
"""demo """
lcd = NJU6450(122, 32, GPIO())
drv = HD44780(lcd, True)
print(drv.width, drv.height)
lcd = CharLCD(drv.width, drv.height, drv, 0, 0)
lcd.init()
lcd.write('First')
lcd.write('HD44780', 6, 3)
lcd.flush()
lcd.write('/* ', 12, 0)
lcd.write('|*|', 12, 1)
lcd.write(' */', 12, 2)
lcd.flush()
test1()

View File

@ -0,0 +1,28 @@
import sys
sys.path.append("../../")
import RPi.GPIO # NOQA pylint: disable=I0011,F0401
from charlcd.buffered import CharLCD # NOQA
from gfxlcd.driver.ssd1306.spi import SPI
from gfxlcd.driver.ssd1306.ssd1306 import SSD1306
from gfxlcd.driver.hd44780 import HD44780
RPi.GPIO.setmode(RPi.GPIO.BCM)
def test1():
"""demo """
lcd = SSD1306(128, 64, SPI())
drv = HD44780(lcd, True)
print(drv.width, drv.height)
lcd = CharLCD(drv.width, drv.height, drv, 0, 0)
lcd.init()
lcd.write('First')
lcd.write('HD44780', 6, 3)
lcd.flush()
lcd.write('/* ', 12, 0)
lcd.write('|*|', 12, 1)
lcd.write(' */', 12, 2)
lcd.flush()
test1()

View File

@ -13,22 +13,24 @@ class Area(Pixel):
"""additional initialization""" """additional initialization"""
pass pass
def draw_pixel(self, pos_x, pos_y): def draw_pixel(self, pos_x, pos_y, color=None):
"""draw one pixel""" """draw one pixel"""
if color is None:
color = self.options['color']
self._set_area(pos_x, pos_y, pos_x, pos_y) self._set_area(pos_x, pos_y, pos_x, pos_y)
self.driver.data(self._converted_color(), None) self.driver.data(self._convert_color(color), None)
def _draw_vertical_line(self, pos_x, pos_y, length): def _draw_vertical_line(self, pos_x, pos_y, length):
"""draw vertical line""" """draw vertical line"""
self._set_area(pos_x, pos_y, pos_x, pos_y + length) self._set_area(pos_x, pos_y, pos_x, pos_y + length)
color = self._converted_color() color = self._convert_color(self.options['color'])
for _ in itertools.repeat(None, length): for _ in itertools.repeat(None, length):
self.driver.data(color, None) self.driver.data(color, None)
def _draw_horizontal_line(self, pos_x, pos_y, length): def _draw_horizontal_line(self, pos_x, pos_y, length):
"""draw horizontal line""" """draw horizontal line"""
self._set_area(pos_x, pos_y, pos_x + length, pos_y) self._set_area(pos_x, pos_y, pos_x + length, pos_y)
color = self._converted_color() color = self._convert_color(self.options['color'])
for _ in itertools.repeat(None, length): for _ in itertools.repeat(None, length):
self.driver.data(color, None) self.driver.data(color, None)
@ -94,7 +96,8 @@ class Area(Pixel):
max(pos_x1, pos_x2), max(pos_x1, pos_x2),
max(pos_y1, pos_y2) max(pos_y1, pos_y2)
) )
color = self._converted_background_color() # color = self._converted_background_color()
color = self._convert_color(self.options['background_color'])
for _ in range(0, size): for _ in range(0, size):
self.driver.data(color, None) self.driver.data(color, None)
@ -131,7 +134,9 @@ class Area(Pixel):
self._set_area(*temporary_area) self._set_area(*temporary_area)
temporary_area = None temporary_area = None
self.color = (red, green, blue) self.color = (red, green, blue)
self.driver.data(self._converted_color(), None) self.driver.data(
self._convert_color(self.options['color']), None
)
col += 1 col += 1
if col > width - 1: if col > width - 1:
@ -155,3 +160,27 @@ class Area(Pixel):
return True return True
return False return False
def _draw_letter(self, pos_x, pos_y, letter, with_background=False):
"""draw a letter"""
if not with_background:
super()._draw_letter(pos_x, pos_y, letter, with_background)
else:
font = self.options['font']
self._set_area(
pos_x,
pos_y,
pos_x + font.size[0] - 1,
pos_y + font.size[1] - 1
)
bits = font.size[0]
color = self._convert_color(self.options['color'])
background_color = self._convert_color(self.options['background_color'])
for row, data in enumerate(font.get(letter)):
for bit in range(bits):
if data & 0x01:
self.driver.data(color, None)
else:
self.driver.data(background_color, None)
data >>= 1

View File

@ -16,9 +16,11 @@ class Page(Pixel, metaclass=abc.ABCMeta):
else: else:
self.buffer = [[0] * (self.width // 8) for x in range(self.height)] self.buffer = [[0] * (self.width // 8) for x in range(self.height)]
def draw_pixel(self, pos_x, pos_y): def draw_pixel(self, pos_x, pos_y, color=None):
"""draw a pixel at x,y""" """draw a pixel at x,y"""
self.buffer[pos_x][pos_y//8] |= 1 << (pos_y % 8) if color is None:
color = self.options['color']
self.buffer[pos_x][pos_y//8] |= self._convert_color(color) << (pos_y % 8)
self.flush() self.flush()
def draw_line(self, pos_x1, pos_y1, pos_x2, pos_y2): def draw_line(self, pos_x1, pos_y1, pos_x2, pos_y2):

View File

@ -36,7 +36,7 @@ class Pixel(object):
"""set transparency color """ """set transparency color """
self.options['transparency_color'] = transparency_color self.options['transparency_color'] = transparency_color
def draw_pixel(self, pos_x, pos_y): def draw_pixel(self, pos_x, pos_y, color=None):
"""dummy function""" """dummy function"""
pass pass
@ -137,21 +137,27 @@ class Pixel(object):
return appendix return appendix
def draw_text(self, pos_x, pos_y, text): def draw_text(self, pos_x, pos_y, text, with_background=False):
"""draw a text""" """draw a text"""
font = self.options['font'] font = self.options['font']
idx = 0 idx = 0
for letter in text: for letter in text:
self._draw_letter(pos_x + idx, pos_y, letter) self._draw_letter(pos_x + idx, pos_y, letter, with_background)
idx += font.size[0] idx += font.size[0]
def _draw_letter(self, pos_x, pos_y, letter): def _draw_letter(self, pos_x, pos_y, letter, with_background=False):
"""draw a letter""" """draw a letter"""
font = self.options['font'] font = self.options['font']
bits = font.size[0] bits = font.size[0]
for row, data in enumerate(font.get(letter)): for row, data in enumerate(font.get(letter)):
for bit in range(bits): for bit in range(bits):
if data & 0x01: if data & 0x01:
self.draw_pixel(pos_x + bit, pos_y + row) self.draw_pixel(
pos_x + bit, pos_y + row, self.color
)
elif with_background:
self.draw_pixel(
pos_x + bit, pos_y + row, self.background_color
)
data >>= 1 data >>= 1

View File

@ -2,15 +2,16 @@
allows graphical LCD to work as character LCD allows graphical LCD to work as character LCD
""" """
from charlcd.drivers.base import BaseDriver from charlcd.drivers.base import BaseDriver
from charlcd.abstract import lcd as char_lcd from charlcd.abstract.flush_event_interface import FlushEvent
class HD44780(BaseDriver): class HD44780(BaseDriver, FlushEvent):
def __init__(self, gfxlcd): def __init__(self, gfxlcd, lcd_flush=False):
"""Class init""" """Class init"""
self.gfxlcd = gfxlcd self.gfxlcd = gfxlcd
self.mode = 0 self.mode = 0
self.initialized = False self.initialized = False
self.lcd_flush = lcd_flush
self.font = self.gfxlcd.options['font'] self.font = self.gfxlcd.options['font']
self.width = self.gfxlcd.width // self.font.size[0] self.width = self.gfxlcd.width // self.font.size[0]
self.height = self.gfxlcd.height // self.font.size[1] self.height = self.gfxlcd.height // self.font.size[1]
@ -21,14 +22,14 @@ class HD44780(BaseDriver):
'x': 0, 'x': 0,
'y': 0 'y': 0
} }
self.address = []
def init(self): def init(self):
"""init function""" """init function"""
if self.initialized: if self.initialized:
return return
char_lcd.LCD_LINES = []
for address in range(self.height): for address in range(self.height):
char_lcd.LCD_LINES.append(100 + (address * self.width)) self.address.append(100 + (address * self.width))
self.gfxlcd.init() self.gfxlcd.init()
self.initialized = True self.initialized = True
@ -60,7 +61,7 @@ class HD44780(BaseDriver):
def char(self, char, enable=0): def char(self, char, enable=0):
"""write char to lcd""" """write char to lcd"""
self.gfxlcd.draw_text( self.gfxlcd.draw_text(
self.position['x'], self.position['y'], char self.position['x'], self.position['y'], char, True
) )
self._increase_x() self._increase_x()
@ -71,3 +72,13 @@ class HD44780(BaseDriver):
def _increase_x(self): def _increase_x(self):
self.position['x'] += self.font.size[0] self.position['x'] += self.font.size[0]
def get_line_address(self, idx):
return self.address[idx]
def pre_flush(self, buffer):
pass
def post_flush(self, buffer):
"""called after flush()"""
if self.lcd_flush:
self.gfxlcd.flush(True)

View File

@ -33,19 +33,11 @@ class ILI9325(Area, Chip):
Chip.__init__(self, width, height, driver, True) Chip.__init__(self, width, height, driver, True)
Area.__init__(self, driver) Area.__init__(self, driver)
def _converted_background_color(self): def _convert_color(self, color):
"""color from 8-8-8 to 5-6-5""" """color from 8-8-8 to 5-6-5"""
rgb = self.options['background_color']['R'] << 16 | \ rgb = color['R'] << 16 | \
self.options['background_color']['G'] << 8 | \ color['G'] << 8 | \
self.options['background_color']['B'] color['B']
return ((rgb & 0x00f80000) >> 8) |\
((rgb & 0x0000fc00) >> 5) | ((rgb & 0x000000f8) >> 3)
def _converted_color(self):
"""color from 8-8-8 to 5-6-5"""
rgb = self.options['color']['R'] << 16 | \
self.options['color']['G'] << 8 | \
self.options['color']['B']
return ((rgb & 0x00f80000) >> 8) |\ return ((rgb & 0x00f80000) >> 8) |\
((rgb & 0x0000fc00) >> 5) | ((rgb & 0x000000f8) >> 3) ((rgb & 0x0000fc00) >> 5) | ((rgb & 0x000000f8) >> 3)

View File

@ -12,19 +12,11 @@ class ILI9486(Area, Chip):
Chip.__init__(self, width, height, driver, True) Chip.__init__(self, width, height, driver, True)
Area.__init__(self, driver) Area.__init__(self, driver)
def _converted_background_color(self): def _convert_color(self, color):
"""color from 8-8-8 to 5-6-5""" """color from 8-8-8 to 5-6-5"""
rgb = self.options['background_color']['R'] << 16 | \ rgb = color['R'] << 16 | \
self.options['background_color']['G'] << 8 | \ color['G'] << 8 | \
self.options['background_color']['B'] color['B']
return ((rgb & 0x00f80000) >> 8) |\
((rgb & 0x0000fc00) >> 5) | ((rgb & 0x000000f8) >> 3)
def _converted_color(self):
"""color from 8-8-8 to 5-6-5"""
rgb = self.options['color']['R'] << 16 | \
self.options['color']['G'] << 8 | \
self.options['color']['B']
return ((rgb & 0x00f80000) >> 8) |\ return ((rgb & 0x00f80000) >> 8) |\
((rgb & 0x0000fc00) >> 5) | ((rgb & 0x000000f8) >> 3) ((rgb & 0x0000fc00) >> 5) | ((rgb & 0x000000f8) >> 3)

View File

@ -6,7 +6,7 @@ from gfxlcd.abstract.chip import Chip
class NJU6450(Page, Chip): class NJU6450(Page, Chip):
"""Class for an LCD with NJU6450 chip""" """Class for an LCD with NJU6450 chip"""
def __init__(self, width, height, driver, auto_flush=True): def __init__(self, width, height, driver, auto_flush=False):
Chip.__init__(self, width, height, driver, auto_flush) Chip.__init__(self, width, height, driver, auto_flush)
Page.__init__(self, driver) Page.__init__(self, driver)
self.rotation = 0 self.rotation = 0
@ -36,12 +36,11 @@ class NJU6450(Page, Chip):
self.driver.cmd(0xB8 | pos_y, 1) self.driver.cmd(0xB8 | pos_y, 1)
self.driver.cmd(0x00 | (pos_x - width//2), 1) self.driver.cmd(0x00 | (pos_x - width//2), 1)
def _converted_background_color(self): def _convert_color(self, color):
"""convert RGB background to available color""" """convert color to avaiable one"""
return 1 if color['R'] == 0 and color['G'] == 0 and color['B'] == 0:
return 0
def _converted_color(self):
"""convert RGB color to available color"""
return 1 return 1
def flush(self, force=None): def flush(self, force=None):
@ -63,7 +62,7 @@ class NJU6450(Page, Chip):
else: else:
self.driver.data(self.get_page_value(i, j), 1) self.driver.data(self.get_page_value(i, j), 1)
def draw_pixel(self, pos_x, pos_y): def draw_pixel(self, pos_x, pos_y, color=None):
"""draw a pixel at x,y""" """draw a pixel at x,y"""
if self.rotation == 90: if self.rotation == 90:
pos_x, pos_y = self.height - pos_y - 1, pos_x pos_x, pos_y = self.height - pos_y - 1, pos_x
@ -71,7 +70,7 @@ class NJU6450(Page, Chip):
pos_x, pos_y = self.width - pos_x - 1, self.height - pos_y - 1 pos_x, pos_y = self.width - pos_x - 1, self.height - pos_y - 1
if self.rotation == 270: if self.rotation == 270:
pos_x, pos_y = pos_y, self.width - pos_x - 1 pos_x, pos_y = pos_y, self.width - pos_x - 1
Page.draw_pixel(self, pos_x, pos_y) Page.draw_pixel(self, pos_x, pos_y, color)
def fill_rect(self, pos_x1, pos_y1, pos_x2, pos_y2): def fill_rect(self, pos_x1, pos_y1, pos_x2, pos_y2):
"""draw a filled rectangle""" """draw a filled rectangle"""

View File

@ -10,13 +10,9 @@ class NullArea(Area, Chip):
Area.__init__(self, driver) Area.__init__(self, driver)
self.rotation = 0 self.rotation = 0
def _converted_background_color(self): def _convert_color(self, color):
"""dummy background color""" """color color"""
return 2 return color
def _converted_color(self):
"""dummy color"""
return 1
def init(self): def init(self):
"""init display""" """init display"""

View File

@ -22,12 +22,11 @@ class NullPage(Page, Chip):
Page.init(self) Page.init(self)
Chip.init(self) Chip.init(self)
def _converted_background_color(self): def _convert_color(self, color):
"""convert RGB background to available color""" """convert color to avaiable one"""
return 1 if color['R'] == 0 and color['G'] == 0 and color['B'] == 0:
return 0
def _converted_color(self):
"""convert RGB color to available color"""
return 1 return 1
def flush(self, force=None): def flush(self, force=None):

View File

@ -24,7 +24,7 @@ class SSD1306(Page, Chip):
} }
} }
def __init__(self, width, height, driver, auto_flush=True): def __init__(self, width, height, driver, auto_flush=False):
Chip.__init__(self, width, height, driver, auto_flush) Chip.__init__(self, width, height, driver, auto_flush)
Page.__init__(self, driver) Page.__init__(self, driver)
self.rotation = 0 self.rotation = 0
@ -76,12 +76,11 @@ class SSD1306(Page, Chip):
self.driver.cmd(0x14) # enable charge pump self.driver.cmd(0x14) # enable charge pump
self.driver.cmd(0xaf) # turn on panel self.driver.cmd(0xaf) # turn on panel
def _converted_background_color(self): def _convert_color(self, color):
"""convert RGB background to available color""" """convert color to avaiable one"""
return 1 if color['R'] == 0 and color['G'] == 0 and color['B'] == 0:
return 0
def _converted_color(self):
"""convert RGB color to available color"""
return 1 return 1
def flush(self, force=None): def flush(self, force=None):
@ -108,8 +107,8 @@ class SSD1306(Page, Chip):
self.driver.cmd(pos_x1) self.driver.cmd(pos_x1)
self.driver.cmd(pos_x2) self.driver.cmd(pos_x2)
def draw_pixel(self, pos_x, pos_y): def draw_pixel(self, pos_x, pos_y, color=None):
"""draw a pixel at x,y""" """draw a pixel at x,y"""
if self.rotation == 90 or self.rotation == 270: if self.rotation == 90 or self.rotation == 270:
pos_x, pos_y = pos_y, pos_x pos_x, pos_y = pos_y, pos_x
Page.draw_pixel(self, pos_x, pos_y) Page.draw_pixel(self, pos_x, pos_y, color)

View File

@ -5,7 +5,10 @@ from gfxlcd.driver.null.null_area import NullArea
from gfxlcd.driver.null.area_driver import AreaDriver from gfxlcd.driver.null.area_driver import AreaDriver
class TestPageDrawing(object): class TestAreaDrawing(object):
color_black = {'R': 0, 'G': 0, 'B': 0}
color_white = {'R': 255, 'G': 255, 'B':255}
def setUp(self): def setUp(self):
self.drv = AreaDriver(10, 16) self.drv = AreaDriver(10, 16)
self.lcd = NullArea(10, 16, self.drv, False) self.lcd = NullArea(10, 16, self.drv, False)
@ -24,189 +27,189 @@ class TestPageDrawing(object):
def test_draw_pixel(self): def test_draw_pixel(self):
self.lcd.draw_pixel(1, 1) self.lcd.draw_pixel(1, 1)
buffer = self.get_buffer() buffer = self.get_buffer()
buffer[1][1] = 1 buffer[1][1] = self.color_white
assert_equal(self.drv.buffer, buffer) assert_equal(self.drv.buffer, buffer)
def test_draw_two_pixel(self): def test_draw_two_pixel(self):
self.lcd.draw_pixel(1, 1) self.lcd.draw_pixel(1, 1)
self.lcd.draw_pixel(2, 2) self.lcd.draw_pixel(2, 2)
buffer = self.get_buffer() buffer = self.get_buffer()
buffer[1][1] = 1 buffer[1][1] = self.color_white
buffer[2][2] = 1 buffer[2][2] = self.color_white
assert_equal(self.drv.buffer, buffer) assert_equal(self.drv.buffer, buffer)
def test_draw_horizontal_line(self): def test_draw_horizontal_line(self):
self.lcd.draw_line(1, 1, 8, 1) self.lcd.draw_line(1, 1, 8, 1)
buffer = self.get_buffer() buffer = self.get_buffer()
buffer[1][1] = 1 buffer[1][1] = self.color_white
buffer[2][1] = 1 buffer[2][1] = self.color_white
buffer[3][1] = 1 buffer[3][1] = self.color_white
buffer[4][1] = 1 buffer[4][1] = self.color_white
buffer[5][1] = 1 buffer[5][1] = self.color_white
buffer[6][1] = 1 buffer[6][1] = self.color_white
buffer[7][1] = 1 buffer[7][1] = self.color_white
buffer[8][1] = 1 buffer[8][1] = self.color_white
assert_equal(self.drv.buffer, buffer) assert_equal(self.drv.buffer, buffer)
def test_draw_vertical_line(self): def test_draw_vertical_line(self):
self.lcd.draw_line(1, 1, 1, 14) self.lcd.draw_line(1, 1, 1, 14)
buffer = self.get_buffer() buffer = self.get_buffer()
buffer[1][1] = 1 buffer[1][1] = self.color_white
buffer[1][2] = 1 buffer[1][2] = self.color_white
buffer[1][3] = 1 buffer[1][3] = self.color_white
buffer[1][4] = 1 buffer[1][4] = self.color_white
buffer[1][5] = 1 buffer[1][5] = self.color_white
buffer[1][6] = 1 buffer[1][6] = self.color_white
buffer[1][7] = 1 buffer[1][7] = self.color_white
buffer[1][8] = 1 buffer[1][8] = self.color_white
buffer[1][9] = 1 buffer[1][9] = self.color_white
buffer[1][10] = 1 buffer[1][10] = self.color_white
buffer[1][11] = 1 buffer[1][11] = self.color_white
buffer[1][12] = 1 buffer[1][12] = self.color_white
buffer[1][13] = 1 buffer[1][13] = self.color_white
buffer[1][14] = 1 buffer[1][14] = self.color_white
assert_equal(self.drv.buffer, buffer) assert_equal(self.drv.buffer, buffer)
def test_draw_overlapping_lines(self): def test_draw_overlapping_lines(self):
self.lcd.draw_line(1, 1, 8, 1) self.lcd.draw_line(1, 1, 8, 1)
self.lcd.draw_line(1, 1, 1, 14) self.lcd.draw_line(1, 1, 1, 14)
buffer = self.get_buffer() buffer = self.get_buffer()
buffer[1][1] = 1 buffer[1][1] = self.color_white
buffer[2][1] = 1 buffer[2][1] = self.color_white
buffer[3][1] = 1 buffer[3][1] = self.color_white
buffer[4][1] = 1 buffer[4][1] = self.color_white
buffer[5][1] = 1 buffer[5][1] = self.color_white
buffer[6][1] = 1 buffer[6][1] = self.color_white
buffer[7][1] = 1 buffer[7][1] = self.color_white
buffer[8][1] = 1 buffer[8][1] = self.color_white
buffer[1][1] = 1 buffer[1][1] = self.color_white
buffer[1][2] = 1 buffer[1][2] = self.color_white
buffer[1][3] = 1 buffer[1][3] = self.color_white
buffer[1][4] = 1 buffer[1][4] = self.color_white
buffer[1][5] = 1 buffer[1][5] = self.color_white
buffer[1][6] = 1 buffer[1][6] = self.color_white
buffer[1][7] = 1 buffer[1][7] = self.color_white
buffer[1][8] = 1 buffer[1][8] = self.color_white
buffer[1][9] = 1 buffer[1][9] = self.color_white
buffer[1][10] = 1 buffer[1][10] = self.color_white
buffer[1][11] = 1 buffer[1][11] = self.color_white
buffer[1][12] = 1 buffer[1][12] = self.color_white
buffer[1][13] = 1 buffer[1][13] = self.color_white
buffer[1][14] = 1 buffer[1][14] = self.color_white
assert_equal(self.drv.buffer, buffer) assert_equal(self.drv.buffer, buffer)
def test_draw_diagonal_line(self): def test_draw_diagonal_line(self):
self.lcd.draw_line(0, 0, 9, 1) self.lcd.draw_line(0, 0, 9, 1)
buffer = self.get_buffer() buffer = self.get_buffer()
buffer[0][0] = 1 buffer[0][0] = self.color_white
buffer[1][0] = 1 buffer[1][0] = self.color_white
buffer[2][0] = 1 buffer[2][0] = self.color_white
buffer[3][0] = 1 buffer[3][0] = self.color_white
buffer[4][0] = 1 buffer[4][0] = self.color_white
buffer[5][1] = 1 buffer[5][1] = self.color_white
buffer[6][1] = 1 buffer[6][1] = self.color_white
buffer[7][1] = 1 buffer[7][1] = self.color_white
buffer[8][1] = 1 buffer[8][1] = self.color_white
buffer[9][1] = 1 buffer[9][1] = self.color_white
assert_equal(self.drv.buffer, buffer) assert_equal(self.drv.buffer, buffer)
def test_draw_diagonal_line_even_steps(self): def test_draw_diagonal_line_even_steps(self):
self.lcd.draw_line(0, 0, 9, 15) self.lcd.draw_line(0, 0, 9, 15)
buffer = self.get_buffer() buffer = self.get_buffer()
buffer[0][0] = 1 buffer[0][0] = self.color_white
buffer[1][1] = 1 buffer[1][1] = self.color_white
buffer[2][2] = 1 buffer[2][2] = self.color_white
buffer[2][3] = 1 buffer[2][3] = self.color_white
buffer[3][4] = 1 buffer[3][4] = self.color_white
buffer[3][5] = 1 buffer[3][5] = self.color_white
buffer[4][6] = 1 buffer[4][6] = self.color_white
buffer[4][7] = 1 buffer[4][7] = self.color_white
buffer[5][8] = 1 buffer[5][8] = self.color_white
buffer[5][9] = 1 buffer[5][9] = self.color_white
buffer[6][10] = 1 buffer[6][10] = self.color_white
buffer[6][11] = 1 buffer[6][11] = self.color_white
buffer[7][12] = 1 buffer[7][12] = self.color_white
buffer[7][13] = 1 buffer[7][13] = self.color_white
buffer[8][14] = 1 buffer[8][14] = self.color_white
buffer[9][15] = 1 buffer[9][15] = self.color_white
assert_equal(self.drv.buffer, buffer) assert_equal(self.drv.buffer, buffer)
def test_draw_diagonal_line_even_steps_even_rest(self): def test_draw_diagonal_line_even_steps_even_rest(self):
self.lcd.draw_line(0, 0, 9, 5) self.lcd.draw_line(0, 0, 9, 5)
buffer = self.get_buffer() buffer = self.get_buffer()
buffer[0][0] = 1 buffer[0][0] = self.color_white
buffer[1][1] = 1 buffer[1][1] = self.color_white
buffer[2][1] = 1 buffer[2][1] = self.color_white
buffer[3][2] = 1 buffer[3][2] = self.color_white
buffer[4][2] = 1 buffer[4][2] = self.color_white
buffer[5][3] = 1 buffer[5][3] = self.color_white
buffer[6][3] = 1 buffer[6][3] = self.color_white
buffer[7][4] = 1 buffer[7][4] = self.color_white
buffer[8][4] = 1 buffer[8][4] = self.color_white
buffer[9][5] = 1 buffer[9][5] = self.color_white
assert_equal(self.drv.buffer, buffer) assert_equal(self.drv.buffer, buffer)
def test_draw_diagonal_line_odd_steps_even_rest(self): def test_draw_diagonal_line_odd_steps_even_rest(self):
self.lcd.draw_line(0, 0, 9, 6) self.lcd.draw_line(0, 0, 9, 6)
buffer = self.get_buffer() buffer = self.get_buffer()
buffer[0][0] = 1 buffer[0][0] = self.color_white
buffer[1][1] = 1 buffer[1][1] = self.color_white
buffer[2][2] = 1 buffer[2][2] = self.color_white
buffer[3][2] = 1 buffer[3][2] = self.color_white
buffer[4][3] = 1 buffer[4][3] = self.color_white
buffer[5][3] = 1 buffer[5][3] = self.color_white
buffer[6][4] = 1 buffer[6][4] = self.color_white
buffer[7][4] = 1 buffer[7][4] = self.color_white
buffer[8][5] = 1 buffer[8][5] = self.color_white
buffer[9][6] = 1 buffer[9][6] = self.color_white
assert_equal(self.drv.buffer, buffer) assert_equal(self.drv.buffer, buffer)
def test_draw_diagonal_line_even_steps_odd_rest(self): def test_draw_diagonal_line_even_steps_odd_rest(self):
self.lcd.draw_line(0, 0, 8, 6) self.lcd.draw_line(0, 0, 8, 6)
buffer = self.get_buffer() buffer = self.get_buffer()
buffer[0][0] = 1 buffer[0][0] = self.color_white
buffer[1][1] = 1 buffer[1][1] = self.color_white
buffer[2][2] = 1 buffer[2][2] = self.color_white
buffer[3][3] = 1 buffer[3][3] = self.color_white
buffer[4][3] = 1 buffer[4][3] = self.color_white
buffer[5][3] = 1 buffer[5][3] = self.color_white
buffer[6][4] = 1 buffer[6][4] = self.color_white
buffer[7][5] = 1 buffer[7][5] = self.color_white
buffer[8][6] = 1 buffer[8][6] = self.color_white
assert_equal(self.drv.buffer, buffer) assert_equal(self.drv.buffer, buffer)
def test_draw_rect(self): def test_draw_rect(self):
self.lcd.draw_rect(2, 2, 7, 11) self.lcd.draw_rect(2, 2, 7, 11)
buffer = self.get_buffer() buffer = self.get_buffer()
buffer[2][2] = 1 buffer[2][2] = self.color_white
buffer[2][3] = 1 buffer[2][3] = self.color_white
buffer[2][4] = 1 buffer[2][4] = self.color_white
buffer[2][5] = 1 buffer[2][5] = self.color_white
buffer[2][6] = 1 buffer[2][6] = self.color_white
buffer[2][7] = 1 buffer[2][7] = self.color_white
buffer[2][8] = 1 buffer[2][8] = self.color_white
buffer[2][9] = 1 buffer[2][9] = self.color_white
buffer[2][10] = 1 buffer[2][10] = self.color_white
buffer[2][11] = 1 buffer[2][11] = self.color_white
buffer[7][2] = 1 buffer[7][2] = self.color_white
buffer[7][3] = 1 buffer[7][3] = self.color_white
buffer[7][4] = 1 buffer[7][4] = self.color_white
buffer[7][5] = 1 buffer[7][5] = self.color_white
buffer[7][6] = 1 buffer[7][6] = self.color_white
buffer[7][7] = 1 buffer[7][7] = self.color_white
buffer[7][8] = 1 buffer[7][8] = self.color_white
buffer[7][9] = 1 buffer[7][9] = self.color_white
buffer[7][10] = 1 buffer[7][10] = self.color_white
buffer[7][11] = 1 buffer[7][11] = self.color_white
buffer[3][2] = 1 buffer[3][2] = self.color_white
buffer[4][2] = 1 buffer[4][2] = self.color_white
buffer[5][2] = 1 buffer[5][2] = self.color_white
buffer[6][2] = 1 buffer[6][2] = self.color_white
buffer[3][11] = 1 buffer[3][11] = self.color_white
buffer[4][11] = 1 buffer[4][11] = self.color_white
buffer[5][11] = 1 buffer[5][11] = self.color_white
buffer[6][11] = 1 buffer[6][11] = self.color_white
assert_equal(self.drv.buffer, buffer) assert_equal(self.drv.buffer, buffer)
def test_fill_rect(self): def test_fill_rect(self):
@ -214,54 +217,54 @@ class TestPageDrawing(object):
buffer = self.get_buffer() buffer = self.get_buffer()
for x in range(6): for x in range(6):
for y in range(10): for y in range(10):
buffer[2+x][2+y] = 2 buffer[2+x][2+y] = self.color_black
assert_equal(self.drv.buffer, buffer) assert_equal(self.drv.buffer, buffer)
def test_draw_circle(self): def test_draw_circle(self):
self.lcd.draw_circle(5, 8, 3) self.lcd.draw_circle(5, 8, 3)
buffer = self.get_buffer() buffer = self.get_buffer()
buffer[2][7] = 1 buffer[2][7] = self.color_white
buffer[2][8] = 1 buffer[2][8] = self.color_white
buffer[2][9] = 1 buffer[2][9] = self.color_white
buffer[3][6] = 1 buffer[3][6] = self.color_white
buffer[3][7] = 1 buffer[3][7] = self.color_white
buffer[3][9] = 1 buffer[3][9] = self.color_white
buffer[3][10] = 1 buffer[3][10] = self.color_white
buffer[4][5] = 1 buffer[4][5] = self.color_white
buffer[4][6] = 1 buffer[4][6] = self.color_white
buffer[4][10] = 1 buffer[4][10] = self.color_white
buffer[4][11] = 1 buffer[4][11] = self.color_white
buffer[5][5] = 1 buffer[5][5] = self.color_white
buffer[5][11] = 1 buffer[5][11] = self.color_white
buffer[6][5] = 1 buffer[6][5] = self.color_white
buffer[6][6] = 1 buffer[6][6] = self.color_white
buffer[7][6] = 1 buffer[7][6] = self.color_white
buffer[7][7] = 1 buffer[7][7] = self.color_white
buffer[8][7] = 1 buffer[8][7] = self.color_white
buffer[8][8] = 1 buffer[8][8] = self.color_white
buffer[8][9] = 1 buffer[8][9] = self.color_white
buffer[7][9] = 1 buffer[7][9] = self.color_white
buffer[7][10] = 1 buffer[7][10] = self.color_white
buffer[6][10] = 1 buffer[6][10] = self.color_white
buffer[6][11] = 1 buffer[6][11] = self.color_white
assert_equal(self.drv.buffer, buffer) assert_equal(self.drv.buffer, buffer)
def test_draw_arc(self): def test_draw_arc(self):
self.lcd.draw_arc(5, 8, 3, 90, 270) self.lcd.draw_arc(5, 8, 3, 90, 270)
buffer = self.get_buffer() buffer = self.get_buffer()
buffer[2][7] = 1 buffer[2][7] = self.color_white
buffer[2][8] = 1 buffer[2][8] = self.color_white
buffer[2][9] = 1 buffer[2][9] = self.color_white
buffer[3][6] = 1 buffer[3][6] = self.color_white
buffer[3][7] = 1 buffer[3][7] = self.color_white
buffer[3][9] = 1 buffer[3][9] = self.color_white
buffer[3][10] = 1 buffer[3][10] = self.color_white
buffer[4][5] = 1 buffer[4][5] = self.color_white
buffer[4][6] = 1 buffer[4][6] = self.color_white
buffer[4][10] = 1 buffer[4][10] = self.color_white
buffer[4][11] = 1 buffer[4][11] = self.color_white
buffer[5][5] = 1 buffer[5][5] = self.color_white
buffer[5][11] = 1 buffer[5][11] = self.color_white
assert_equal(self.drv.buffer, buffer) assert_equal(self.drv.buffer, buffer)
def draw_buffer(self, buffer): def draw_buffer(self, buffer):

View File

@ -0,0 +1,13 @@
import sys
from nose.tools import assert_equal
sys.path.append("../../")
from gfxlcd.driver.ili9325.gpio import GPIO
from gfxlcd.driver.ili9325.ili9325 import ILI9325
class TestILI9325Drawing(object):
def test_initialize(self):
drv = GPIO()
drv.pins['LED'] = 6
drv.pins['CS'] = 18
ILI9325(240, 320, drv)

View File

@ -0,0 +1,10 @@
import sys
from nose.tools import assert_equal
sys.path.append("../../")
from gfxlcd.driver.ili9486.spi import SPI
from gfxlcd.driver.ili9486.ili9486 import ILI9486
class TestILI9486(object):
def test_initialize(self):
ILI9486(320, 480, SPI())

View File

@ -0,0 +1,11 @@
import sys
from nose.tools import assert_equal
sys.path.append("../../")
from gfxlcd.driver.nju6450.gpio import GPIO
from gfxlcd.driver.nju6450.nju6450 import NJU6450
class TestNJU6450(object):
def test_initialize(self):
drv = GPIO()
NJU6450(122, 32, drv)

View File

@ -0,0 +1,10 @@
import sys
from nose.tools import assert_equal
sys.path.append("../../")
from gfxlcd.driver.ssd1306.spi import SPI
from gfxlcd.driver.ssd1306.ssd1306 import SSD1306
class TestNJU6450(object):
def test_initialize(self):
SSD1306(128, 64, SPI())