Base LCDPanel based, required for all LCDPanel drivers
LCDPanel.h@2:ab4040a7e8c9, 2012-03-11 (annotated)
- Committer:
- silviogissi
- Date:
- Sun Mar 11 01:33:10 2012 +0000
- Revision:
- 2:ab4040a7e8c9
- Parent:
- 1:073d4f161f23
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
silviogissi | 2:ab4040a7e8c9 | 1 | /* LCDPanel base library for LCD/TFT Panels |
silviogissi | 2:ab4040a7e8c9 | 2 | * Copyright (c) 2012, Silvio Gissi |
silviogissi | 2:ab4040a7e8c9 | 3 | * |
silviogissi | 2:ab4040a7e8c9 | 4 | * License: |
silviogissi | 2:ab4040a7e8c9 | 5 | * |
silviogissi | 2:ab4040a7e8c9 | 6 | * Permission is hereby granted, free of charge, to any person obtaining a copy |
silviogissi | 2:ab4040a7e8c9 | 7 | * of this software and associated documentation files (the "Software"), to deal |
silviogissi | 2:ab4040a7e8c9 | 8 | * in the Software without restriction, including without limitation the rights |
silviogissi | 2:ab4040a7e8c9 | 9 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |
silviogissi | 2:ab4040a7e8c9 | 10 | * copies of the Software, and to permit persons to whom the Software is |
silviogissi | 2:ab4040a7e8c9 | 11 | * furnished to do so, subject to the following conditions: |
silviogissi | 2:ab4040a7e8c9 | 12 | * |
silviogissi | 2:ab4040a7e8c9 | 13 | * The above copyright notice and this permission notice shall be included in |
silviogissi | 2:ab4040a7e8c9 | 14 | * all copies or substantial portions of the Software. |
silviogissi | 2:ab4040a7e8c9 | 15 | * |
silviogissi | 2:ab4040a7e8c9 | 16 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
silviogissi | 2:ab4040a7e8c9 | 17 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
silviogissi | 2:ab4040a7e8c9 | 18 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
silviogissi | 2:ab4040a7e8c9 | 19 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
silviogissi | 2:ab4040a7e8c9 | 20 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
silviogissi | 2:ab4040a7e8c9 | 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
silviogissi | 2:ab4040a7e8c9 | 22 | * THE SOFTWARE. |
silviogissi | 2:ab4040a7e8c9 | 23 | * |
silviogissi | 2:ab4040a7e8c9 | 24 | * Author: Silvio Gissi |
silviogissi | 2:ab4040a7e8c9 | 25 | * Version: 0.1 Alfa |
silviogissi | 2:ab4040a7e8c9 | 26 | * |
silviogissi | 1:073d4f161f23 | 27 | */ |
silviogissi | 1:073d4f161f23 | 28 | |
silviogissi | 1:073d4f161f23 | 29 | #ifndef LCDPANEL_BASE_H |
silviogissi | 1:073d4f161f23 | 30 | #define LCDPANEL_BASE_H |
silviogissi | 1:073d4f161f23 | 31 | |
silviogissi | 1:073d4f161f23 | 32 | #include "mbed.h" |
silviogissi | 1:073d4f161f23 | 33 | |
silviogissi | 1:073d4f161f23 | 34 | class LCDPanel { |
silviogissi | 1:073d4f161f23 | 35 | |
silviogissi | 1:073d4f161f23 | 36 | public: |
silviogissi | 1:073d4f161f23 | 37 | LCDPanel(unsigned int width, unsigned int height, PinName cs); |
silviogissi | 1:073d4f161f23 | 38 | |
silviogissi | 2:ab4040a7e8c9 | 39 | virtual void fill(unsigned int x1, unsigned int y1, unsigned int x2, unsigned int y2, uint16_t color); |
silviogissi | 2:ab4040a7e8c9 | 40 | virtual void fill(unsigned int x1, unsigned int y1, unsigned int x2, unsigned int y2, const uint16_t* color); |
silviogissi | 2:ab4040a7e8c9 | 41 | virtual void set_pixel(unsigned int x, unsigned int y, uint16_t color); |
silviogissi | 1:073d4f161f23 | 42 | |
silviogissi | 2:ab4040a7e8c9 | 43 | inline void clear() { fill(0,0,_xmax,_ymax,(uint16_t)0x0000); } |
silviogissi | 1:073d4f161f23 | 44 | inline unsigned int height() { return _ymax+1; } |
silviogissi | 1:073d4f161f23 | 45 | inline unsigned int width() { return _xmax+1; } |
silviogissi | 1:073d4f161f23 | 46 | |
silviogissi | 1:073d4f161f23 | 47 | protected: |
silviogissi | 1:073d4f161f23 | 48 | unsigned int _ymax; |
silviogissi | 1:073d4f161f23 | 49 | unsigned int _xmax; |
silviogissi | 1:073d4f161f23 | 50 | DigitalOut _cs; |
silviogissi | 1:073d4f161f23 | 51 | |
silviogissi | 1:073d4f161f23 | 52 | class CsTransaction |
silviogissi | 1:073d4f161f23 | 53 | { |
silviogissi | 1:073d4f161f23 | 54 | private: LCDPanel *p; |
silviogissi | 1:073d4f161f23 | 55 | public: |
silviogissi | 1:073d4f161f23 | 56 | CsTransaction(LCDPanel *panel) : p(panel) { p->_cs=0; } |
silviogissi | 1:073d4f161f23 | 57 | ~CsTransaction() { p->_cs=1; } |
silviogissi | 1:073d4f161f23 | 58 | }; |
silviogissi | 2:ab4040a7e8c9 | 59 | virtual void command(unsigned int command,unsigned int size=0,...)=0; |
silviogissi | 2:ab4040a7e8c9 | 60 | virtual void data(unsigned int size,...)=0; |
silviogissi | 2:ab4040a7e8c9 | 61 | virtual void pixel(uint16_t color)=0; |
silviogissi | 1:073d4f161f23 | 62 | virtual void window(unsigned int x1, unsigned int y1, unsigned int x2, unsigned int y2)=0; |
silviogissi | 1:073d4f161f23 | 63 | |
silviogissi | 1:073d4f161f23 | 64 | }; |
silviogissi | 1:073d4f161f23 | 65 | |
silviogissi | 0:3f345274c737 | 66 | #endif // LCDPANEL_BASE_H |