A simple yet powerful library for controlling graphical displays. Multiple display controllers are supported using inheritance.

Dependents:   mbed_rifletool Hexi_Bubble_Game Hexi_Catch-the-dot_Game Hexi_Acceleromagnetic_Synth

NOTE: This library is in beta right now. As far as I know, everything here works, but there are many features that are lacking so far. Most notably containers, button handling, and display drivers other than the SSD1306.

Committer:
neilt6
Date:
Tue May 27 21:41:28 2014 +0000
Revision:
3:a8f72d4864e6
Parent:
1:f7003ec66a51
Syntax improvements

Who changed what in which revision?

UserRevisionLine numberNew contents of line
neilt6 0:b876cf091464 1 /* NeatGUI Library
neilt6 0:b876cf091464 2 * Copyright (c) 2013 Neil Thiessen
neilt6 0:b876cf091464 3 *
neilt6 0:b876cf091464 4 * Licensed under the Apache License, Version 2.0 (the "License");
neilt6 0:b876cf091464 5 * you may not use this file except in compliance with the License.
neilt6 0:b876cf091464 6 * You may obtain a copy of the License at
neilt6 0:b876cf091464 7 *
neilt6 0:b876cf091464 8 * http://www.apache.org/licenses/LICENSE-2.0
neilt6 0:b876cf091464 9 *
neilt6 0:b876cf091464 10 * Unless required by applicable law or agreed to in writing, software
neilt6 0:b876cf091464 11 * distributed under the License is distributed on an "AS IS" BASIS,
neilt6 0:b876cf091464 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
neilt6 0:b876cf091464 13 * See the License for the specific language governing permissions and
neilt6 0:b876cf091464 14 * limitations under the License.
neilt6 0:b876cf091464 15 */
neilt6 0:b876cf091464 16
neilt6 0:b876cf091464 17 #include "BitmapImage.h"
neilt6 0:b876cf091464 18
neilt6 1:f7003ec66a51 19 BitmapImage::BitmapImage(const char* table) : Image(table[0] * 0xFF + table[1], table[2] * 0xFF + table[3])
neilt6 0:b876cf091464 20 {
neilt6 0:b876cf091464 21 m_ImageTable = table;
neilt6 0:b876cf091464 22 m_FgColor = 0xFFFFFFFF;
neilt6 0:b876cf091464 23 m_BgColor = 0x00000000;
neilt6 0:b876cf091464 24 }
neilt6 0:b876cf091464 25
neilt6 1:f7003ec66a51 26 BitmapImage::BitmapImage(const char* table, unsigned int fg_color) : Image(table[0] * 0xFF + table[1], table[2] * 0xFF + table[3])
neilt6 0:b876cf091464 27 {
neilt6 0:b876cf091464 28 m_ImageTable = table;
neilt6 0:b876cf091464 29 m_FgColor = fg_color;
neilt6 0:b876cf091464 30 m_BgColor = 0x00000000;
neilt6 0:b876cf091464 31 }
neilt6 0:b876cf091464 32
neilt6 1:f7003ec66a51 33 BitmapImage::BitmapImage(const char* table, unsigned int fg_color, unsigned int bg_color) : Image(table[0] * 0xFF + table[1], table[2] * 0xFF + table[3])
neilt6 0:b876cf091464 34 {
neilt6 0:b876cf091464 35 m_ImageTable = table;
neilt6 0:b876cf091464 36 m_FgColor = fg_color;
neilt6 0:b876cf091464 37 m_BgColor = bg_color;
neilt6 0:b876cf091464 38 }
neilt6 0:b876cf091464 39
neilt6 0:b876cf091464 40 unsigned int BitmapImage::pixel(int x, int y)
neilt6 0:b876cf091464 41 {
neilt6 0:b876cf091464 42 int addr;
neilt6 0:b876cf091464 43 int mask;
neilt6 0:b876cf091464 44 int bpl;
neilt6 0:b876cf091464 45
neilt6 0:b876cf091464 46 //Range check the pixel request
neilt6 0:b876cf091464 47 if ((x < 0) || (y < 0) || (x >= width()) || (y >= height())) return 0x000000;
neilt6 0:b876cf091464 48
neilt6 0:b876cf091464 49 //Get the pixel address
neilt6 0:b876cf091464 50 bpl = bytesPerLine();
neilt6 0:b876cf091464 51 mask = 0x80 >> (x % 8);
neilt6 0:b876cf091464 52 addr = 4 + y * bpl + (x / 8);
neilt6 0:b876cf091464 53
neilt6 0:b876cf091464 54 //Return the appropriate color
neilt6 0:b876cf091464 55 if (m_ImageTable[addr] & mask)
neilt6 0:b876cf091464 56 return m_FgColor;
neilt6 0:b876cf091464 57 else
neilt6 0:b876cf091464 58 return m_BgColor;
neilt6 0:b876cf091464 59 }
neilt6 0:b876cf091464 60
neilt6 1:f7003ec66a51 61 unsigned int BitmapImage::foreground()
neilt6 0:b876cf091464 62 {
neilt6 0:b876cf091464 63 return m_FgColor;
neilt6 0:b876cf091464 64 }
neilt6 0:b876cf091464 65
neilt6 0:b876cf091464 66 void BitmapImage::foreground(unsigned int c)
neilt6 0:b876cf091464 67 {
neilt6 0:b876cf091464 68 m_FgColor = c;
neilt6 0:b876cf091464 69 }
neilt6 0:b876cf091464 70
neilt6 1:f7003ec66a51 71 unsigned int BitmapImage::background()
neilt6 0:b876cf091464 72 {
neilt6 0:b876cf091464 73 return m_BgColor;
neilt6 0:b876cf091464 74 }
neilt6 0:b876cf091464 75
neilt6 0:b876cf091464 76 void BitmapImage::background(unsigned int c)
neilt6 0:b876cf091464 77 {
neilt6 0:b876cf091464 78 m_BgColor = c;
neilt6 0:b876cf091464 79 }
neilt6 0:b876cf091464 80
neilt6 1:f7003ec66a51 81 int BitmapImage::bytesPerLine()
neilt6 0:b876cf091464 82 {
neilt6 0:b876cf091464 83 int bpl;
neilt6 0:b876cf091464 84
neilt6 0:b876cf091464 85 //Determine the bytes per line
neilt6 0:b876cf091464 86 bpl = width() / 8;
neilt6 0:b876cf091464 87 if ((width() % 8) != 0) bpl++;
neilt6 0:b876cf091464 88
neilt6 0:b876cf091464 89 //Return the bytes per line
neilt6 0:b876cf091464 90 return bpl;
neilt6 0:b876cf091464 91 }