N5110 library

Fork of N5110 by Craig Evans

Revision:
18:1af393359298
Parent:
17:780a542d5f8b
Child:
19:ba8addc061ea
--- a/N5110.cpp	Tue Mar 17 12:56:03 2015 +0000
+++ b/N5110.cpp	Wed Apr 22 12:41:45 2015 +0000
@@ -220,33 +220,46 @@
 // function to print 5x7 font
 void N5110::printChar(char c,int x,int y)
 {
-    for (int i = 0; i < 5 ; i++ ) {
-        buffer[x+i][y] = font5x7[(c - 32)*5 + i];
-        // array is offset by 32 relative to ASCII, each character is 5 pixels wide
+    if (y>=0 && y<6) {  // check if printing in range of y banks
+
+        for (int i = 0; i < 5 ; i++ ) {
+            int pixel_x = x+i;
+            if (pixel_x > 83)  // ensure pixel isn't outside the buffer size (0 - 83)
+                break;
+            buffer[pixel_x][y] = font5x7[(c - 32)*5 + i];
+            // array is offset by 32 relative to ASCII, each character is 5 pixels wide
+        }
+
+        refresh();  // this sends the buffer to the display and sets address (cursor) back to 0,0
     }
-
-    refresh();  // this sends the buffer to the display and sets address (cursor) back to 0,0
 }
 
 // function to print string at specified position
 void N5110::printString(const char * str,int x,int y)
 {
-    int n = 0 ; // counter for number of characters in string
-    // loop through string and print character
-    while(*str) {
+    if (y>=0 && y<6) {  // check if printing in range of y banks
+
+        int n = 0 ; // counter for number of characters in string
+        // loop through string and print character
+        while(*str) {
 
-        // writes the character bitmap data to the buffer, so that
-        // text and pixels can be displayed at the same time
-        for (int i = 0; i < 5 ; i++ ) {
-            buffer[x+i+n*6][y] = font5x7[(*str - 32)*5 + i];
+            // writes the character bitmap data to the buffer, so that
+            // text and pixels can be displayed at the same time
+            for (int i = 0; i < 5 ; i++ ) {
+                int pixel_x = x+i+n*6;
+                if (pixel_x > 83) // ensure pixel isn't outside the buffer size (0 - 83)
+                    break;
+                buffer[pixel_x][y] = font5x7[(*str - 32)*5 + i];
+            }
+
+            str++;  // go to next character in string
+
+            n++;    // increment index
+
         }
 
-        str++;  // go to next character in string
-        n++;    // increment index
+        refresh();  // this sends the buffer to the display and sets address (cursor) back to 0,0
     }
-
-    refresh();  // this sends the buffer to the display and sets address (cursor) back to 0,0
-
 }
 
 // function to clear the screen