SPKDisplay - A mbed display class and processing imaging tools for 128x64 OLEDs using the SSD1305 driver, connected via SPI.

Dependents:   SPK-DVIMXR SPK-DMXer

Revision:
4:a675a19c16f0
Parent:
3:ade83210ecf6
--- a/spk_oled_ssd1305.cpp	Thu Aug 02 13:26:18 2012 +0000
+++ b/spk_oled_ssd1305.cpp	Sun Oct 28 19:53:49 2012 +0000
@@ -157,6 +157,44 @@
     bufferHasChanged = true;
 }
 
+void SPKDisplay::characterToBuffer(char character, int x, int row)
+{
+        // Font check
+    if (NULL == fontCharacters) return;
+    if (NULL == fontStartCharacter || NULL == fontEndCharacter) return;    
+
+    // Range check
+    if (row >= 8) row = 7;
+    int bStart = row*bufferWidth;
+    int bEnd = bStart + pixelWidth;
+
+    int bPos = bStart + x;
+        
+    // Is it outside the range we have glyphs for?
+    if ((character < *fontStartCharacter) || (character > *fontEndCharacter))
+    {
+        if (debug)
+        {
+            if (character != ' ') debug->printf("No glyph for character %c", character);
+        }
+    }
+    // If not, typeset it!
+    else 
+    {
+        // Shift into our array's indexing
+        character -= *fontStartCharacter;
+        
+        // Write each byte's vertical column of 8bits into the buffer.
+        for (int j = 0; j < fontCharacters[character][0]; j++)
+        {
+            if (bPos >= bEnd) break;
+            buffer[bPos++] = fontCharacters[character][j+1];
+        }
+    }
+
+    bufferHasChanged = true;
+}
+
 void SPKDisplay::sendBuffer()
 {
     if (bufferHasChanged)