diff --git a/CHANGELOG.txt b/CHANGELOG.txt index 287c02a..09dba2d 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -1,6 +1,9 @@ +0.5.0 + - tests + - fix page drawing 0.4.0 - - ILI9486, XPT2046 - - rotation + - ILI9486, XPT2046 + - rotation 0.2.1 - CS & LED pin do ILI drv 0.2.0 diff --git a/gfxlcd/drawing/page.py b/gfxlcd/drawing/page.py index fb23b4a..d5720ee 100644 --- a/gfxlcd/drawing/page.py +++ b/gfxlcd/drawing/page.py @@ -23,18 +23,23 @@ class Page(Pixel, metaclass=abc.ABCMeta): steps = [length for _ in range(0, step)] if step * length < required_length: offset = len(steps) // 2 + rest = required_length - step * length steps_even = True if len(steps) & 1 == 0 else False + rest_even = True if rest & 1 == 0 else False appendix = 0 - for idx in range(0, required_length - step * length): + for idx in range(0, rest): steps[offset + appendix] += 1 if steps_even: appendix = self._calculate_appendix(appendix) - elif idx > 0: + elif idx > 0 and rest_even: + appendix = self._calculate_appendix(appendix) + elif not rest_even: appendix = self._calculate_appendix(appendix) return steps def _calculate_appendix(self, appendix): + """calculate appendix during drawing a line""" if appendix == 0: appendix = -1 elif appendix < 0: @@ -67,8 +72,6 @@ class Page(Pixel, metaclass=abc.ABCMeta): step = height + 1 length = width // step steps = self._calculate_steps(length, step, width) - print("width ", width, " heught ", height) - print("steps", steps) else: height += 1 if pos_y2 < pos_y1: @@ -80,8 +83,6 @@ class Page(Pixel, metaclass=abc.ABCMeta): step = width + 1 length = height // step steps = self._calculate_steps(length, step, height) - print("length ", length, " heught ", height) - print("steps", steps) delta_y = 0 delta_x = 0 for idx, step in enumerate(steps): diff --git a/gfxlcd/tests/dummy_test.py b/gfxlcd/tests/dummy_test.py deleted file mode 100644 index 360a45d..0000000 --- a/gfxlcd/tests/dummy_test.py +++ /dev/null @@ -1,6 +0,0 @@ -from nose.tools import assert_equal - - -class DummyTest(object): - def test_init(self): - assert_equal(1, 1) diff --git a/gfxlcd/tests/test_page_drawing.py b/gfxlcd/tests/test_page_drawing.py index 96a68ad..ad825de 100644 --- a/gfxlcd/tests/test_page_drawing.py +++ b/gfxlcd/tests/test_page_drawing.py @@ -89,7 +89,6 @@ class TestPageDrawing(object): buffer[7][0] = 2 buffer[8][0] = 2 buffer[9][0] = 2 - self.draw_buffer(self.lcd.buffer) assert_equal(self.lcd.buffer, buffer) def test_draw_diagonal_line_even_steps(self): @@ -105,11 +104,10 @@ class TestPageDrawing(object): buffer[7][1] = 16+32 buffer[8][1] = 64 buffer[9][1] = 128 - self.draw_buffer(self.lcd.buffer) assert_equal(self.lcd.buffer, buffer) - def test_draw_diagonal_line_odd_steps_even_rest(self): + def test_draw_diagonal_line_even_steps_even_rest(self): self.lcd.draw_line(0, 0, 9, 5) buffer = self.get_buffer() buffer[0][0] = 1 @@ -123,23 +121,87 @@ class TestPageDrawing(object): buffer[8][0] = 16 buffer[9][0] = 32 - self.draw_buffer(self.lcd.buffer) assert_equal(self.lcd.buffer, buffer) - def test_draw_diagonal_line_odd_steps_odd_rest(self): + def test_draw_diagonal_line_odd_steps_even_rest(self): self.lcd.draw_line(0, 0, 9, 6) buffer = self.get_buffer() buffer[0][0] = 1 buffer[1][0] = 2 - buffer[2][0] = 2 + buffer[2][0] = 4 buffer[3][0] = 4 - buffer[4][0] = 4 + buffer[4][0] = 8 buffer[5][0] = 8 - buffer[6][0] = 8 + buffer[6][0] = 16 buffer[7][0] = 16 - buffer[8][0] = 16 - buffer[9][0] = 32 + buffer[8][0] = 32 + buffer[9][0] = 64 + assert_equal(self.lcd.buffer, buffer) + + def test_draw_diagonal_line_even_steps_odd_rest(self): + self.lcd.draw_line(0, 0, 9, 6) + buffer = self.get_buffer() + buffer[0][0] = 1 + buffer[1][0] = 2 + buffer[2][0] = 4 + buffer[3][0] = 4 + buffer[4][0] = 8 + buffer[5][0] = 8 + buffer[6][0] = 16 + buffer[7][0] = 16 + buffer[8][0] = 32 + buffer[9][0] = 64 + + assert_equal(self.lcd.buffer, buffer) + + def test_fill_rect(self): + self.lcd.fill_rect(2, 2, 7, 11) + buffer = self.get_buffer() + buffer[2][0] = 4+8+16+32+64+128 + buffer[3][0] = 4+8+16+32+64+128 + buffer[4][0] = 4+8+16+32+64+128 + buffer[5][0] = 4+8+16+32+64+128 + buffer[6][0] = 4+8+16+32+64+128 + buffer[7][0] = 4+8+16+32+64+128 + buffer[2][1] = 1+2+4+8 + buffer[3][1] = 1+2+4+8 + buffer[4][1] = 1+2+4+8 + buffer[5][1] = 1+2+4+8 + buffer[6][1] = 1+2+4+8 + buffer[7][1] = 1+2+4+8 + assert_equal(self.lcd.buffer, buffer) + + def test_draw_circle(self): + self.lcd.draw_circle(5, 8, 3) + buffer = self.get_buffer() + buffer[2][0] = 128 + buffer[3][0] = 64+128 + buffer[4][0] = 32+64 + buffer[5][0] = 32 + buffer[6][0] = 32+64 + buffer[7][0] = 64+128 + buffer[8][0] = 128 + buffer[2][1] = 1+2 + buffer[3][1] = 2+4 + buffer[4][1] = 4+8 + buffer[5][1] = 8 + buffer[6][1] = 4+8 + buffer[7][1] = 2+4 + buffer[8][1] = 1+2 + assert_equal(self.lcd.buffer, buffer) + + def test_draw_arc(self): + self.lcd.draw_arc(5, 8, 3, 90, 270) + buffer = self.get_buffer() + buffer[2][0] = 128 + buffer[3][0] = 64+128 + buffer[4][0] = 32+64 + buffer[5][0] = 32 + buffer[2][1] = 1+2 + buffer[3][1] = 2+4 + buffer[4][1] = 4+8 + buffer[5][1] = 8 self.draw_buffer(self.lcd.buffer) assert_equal(self.lcd.buffer, buffer)