Rev 3 | Go to most recent revision | Details | Last modification | View Log | RSS feed
| Rev | Author | Line No. | Line |
|---|---|---|---|
| 2 | mjames | 1 | /* |
| 2 | * displayclass.H |
||
| 3 | * |
||
| 4 | * Created on: 31 Oct 2020 |
||
| 5 | * Author: mike |
||
| 6 | */ |
||
| 7 | |||
| 8 | #pragma once |
||
| 9 | #include <cstdint> |
||
| 10 | #include "libOled/fontclass.H" |
||
| 11 | |||
| 12 | inline int constexpr dataSize (int const width, int const height) |
||
| 13 | { |
||
| 14 | return (width * height /8); |
||
| 15 | } |
||
| 16 | |||
| 17 | enum colour_t |
||
| 18 | { |
||
| 19 | BLACK, |
||
| 20 | WHITE, |
||
| 21 | INVERT |
||
| 22 | }; |
||
| 23 | |||
| 24 | class display_t |
||
| 25 | { |
||
| 26 | public: |
||
| 27 | display_t (int const width, int const height, int const ramwidth , uint8_t * const data); |
||
| 28 | |||
| 29 | virtual ~display_t(); |
||
| 30 | |||
| 31 | uint8_t getRotation(); |
||
| 32 | int16_t width(); |
||
| 33 | int16_t height(); |
||
| 34 | |||
| 35 | void init(); |
||
| 36 | |||
| 37 | void clearDisplay(); |
||
| 38 | void invertDisplay(uint8_t i); |
||
| 39 | void display(); |
||
| 40 | |||
| 41 | void startscrollright(uint8_t start, uint8_t stop); |
||
| 42 | void startscrollleft(uint8_t start, uint8_t stop); |
||
| 43 | |||
| 44 | void startscrolldiagright(uint8_t start, uint8_t stop); |
||
| 45 | void startscrolldiagleft(uint8_t start, uint8_t stop); |
||
| 46 | void stopscroll(void); |
||
| 47 | |||
| 48 | void dim(uint8_t contrast); |
||
| 49 | |||
| 50 | void drawPixel(int16_t x, int16_t y, colour_t color); |
||
| 51 | |||
| 52 | void drawLine(int16_t x1, int16_t y1, int16_t x2, int16_t y2, colour_t color); |
||
| 53 | |||
| 54 | void gotoxy(int x, int y) {m_cursor_x = x; m_cursor_y=y;}; |
||
| 55 | |||
| 56 | |||
| 57 | void printString(font_t & font, char * string, int length, colour_t colour); |
||
| 58 | |||
| 59 | void printChar (font_t &font, char c, colour_t colour); |
||
| 60 | |||
| 61 | int cursor_x() {return m_cursor_x;}; |
||
| 62 | |||
| 63 | int cursor_y() {return m_cursor_y;}; |
||
| 64 | |||
| 65 | private: |
||
| 66 | |||
| 67 | // set=1 means send data set=0 means send control |
||
| 68 | virtual void oledSetCD(uint8_t set) =0; |
||
| 69 | |||
| 70 | virtual void oledWrite(uint8_t d) =0; |
||
| 71 | |||
| 72 | virtual void oledReset() = 0; |
||
| 73 | |||
| 74 | virtual void oledWrite(uint8_t * buff, uint8_t len) = 0; |
||
| 75 | |||
| 76 | |||
| 77 | int const m_width; // pixel width |
||
| 78 | int const m_height; // pixel height |
||
| 79 | int const m_ramwidth; // OLED controller ram pixel width |
||
| 80 | |||
| 81 | int m_cursor_x; |
||
| 82 | int m_cursor_y; |
||
| 83 | int m_rotation; |
||
| 84 | |||
| 85 | |||
| 86 | uint8_t * const m_data; |
||
| 87 | |||
| 88 | }; |