C++ file for display control

Dependencies:   4DGL mbed ConfigFile

Fork of 4DGLtest by Stephane ROCHON

Revision:
11:a5b0d98794c0
Parent:
7:779c5b8d3b14
--- a/fs_datastructures.cpp	Wed Jul 16 08:05:54 2014 +0000
+++ b/fs_datastructures.cpp	Wed Jul 16 19:15:40 2014 +0000
@@ -35,7 +35,7 @@
 extern int nFontWidth (int nfont_number );          //Prototype of function to retrieve font width (declared in display.cpp)
 extern int nLine2Pixel( int nLine );                //Prototype of function to calculate vertical pixelposition from line number (declared in display.cpp)
 extern int LeftOrRight( int nTextLine, string cString, int nChars, int nCharWidth ); //declared in display.cpp
-extern int cRGB( int cRED, int cGREEN, int cBLUE ); //Prototype of function for assembly color word (declared in display.cpp)
+extern unsigned int cRGB( char cRED, char cGREEN, char cBLUE ); //Prototype of function for assembly color word (declared in display.cpp)
 
 // FS_data_update_ID:
 // These global flags indicate what data has been updated.
@@ -61,8 +61,9 @@
 Key_Maintext_Update  ;    // : equal to keynumber whose main text line was updated, must be reset to -1 (!)when text has been read
 Key_Subtext_Update   ;    // : equal to keynumber whose sub text line was updated, must be reset to -1 (!) when text has been read
 */
-
+    
 {
+    int nLine = 1;  //default value
     //check common flag
     if ( FSdata_received_flag )
     //if set, check all structures and lock dynamic storage
@@ -72,36 +73,82 @@
             display.background_color( cRGB( BACKGROUND_COL.BG_RED, BACKGROUND_COL.BG_GREEN, BACKGROUND_COL.BG_BLUE ) );
             Background_Col_Update = 0;
         }
+        
         if ( Key_Maintext_Update > -1 )
             //Key_Maintext_Update contains the line number 00-49 is LSK text, 50-99 is RSK text
             //Currently used:
             //00-14 left  side of screen --> left  adjust, horizontal position = 0
             //50-64 right side of screen --> right adjust, horizontal position calculated with righttext() (declared in display.cpp)
+            
+            //00 = LSK1         50 = RSK1   Print on LINE 3
+            //01 = LSK2         51 = RSK2   Print on LINE 5
+            //02 = LSK3         52 = RSK3   Print on LINE 7
+            //03 = LSK4         53 = RSK4   Print on LINE 9
+            //04 = LSK5         54 = RSK5   Print on LINE 11
+            //05 = LSK6         55 = RSK6   Print on LINE 13
         {
+            switch ( Key_Maintext_Update )
+            {
+                case ( 00 ): nLine = 3; break;
+                case ( 50 ): nLine = 3; break;
+                case ( 01 ): nLine = 5; break;
+                case ( 51 ): nLine = 5; break;
+                case ( 02 ): nLine = 7; break;
+                case ( 52 ): nLine = 7; break;
+                case ( 03 ): nLine = 9; break;
+                case ( 53 ): nLine = 9; break;
+                case ( 04 ): nLine = 11; break;
+                case ( 54 ): nLine = 11; break;
+                case ( 05 ): nLine = 13; break;
+                case ( 55 ): nLine = 13; break;
+            }
             //display.graphic_string(char *s, int x, int y, char font, int color, char width multiplier, char height multiplier)
             display.graphic_string( SELKEY_MAINTEXT[Key_Maintext_Update].text ,                         //Text to display
                                     LeftOrRight( Key_Maintext_Update, SELKEY_MAINTEXT[Key_Maintext_Update].text,24,24 )*nFontWidth( SELKEY_MAINTEXT[Key_Maintext_Update].font_size ) ,    //Horizontal position
-                                    nLine2Pixel( Key_Maintext_Update ),                                 //Vertical position
+                                    nLine2Pixel( nLine ),                                 //Vertical position
                                     nFontSize( SELKEY_MAINTEXT[Key_Maintext_Update].font_size ),        //Font
                                     cRGB( SELKEY_MAINTEXT[Key_Maintext_Update].text_RED ,SELKEY_MAINTEXT[Key_Maintext_Update].text_GREEN ,SELKEY_MAINTEXT[Key_Maintext_Update].text_BLUE ), 
                                     1, 1 );
             Key_Maintext_Update = -1;
         }
+        
         if ( Key_Subtext_Update > -1 )
             //Key Subtext_Update contains the line number 00-49 is LSK subtext, 50-99 is RSK subtext
             //Currently used:
             //00-14 left  side of screen --> left  adjust, horizontal position = 0
             //50-64 right side of screen --> right adjust, horizontal position calculated with righttext() (declared in display.cpp)            
+            //00 = LSK1         50 = RSK1   Print on LINE 2
+            //01 = LSK2         51 = RSK2   Print on LINE 4
+            //02 = LSK3         52 = RSK3   Print on LINE 6
+            //03 = LSK4         53 = RSK4   Print on LINE 8
+            //04 = LSK5         54 = RSK5   Print on LINE 10
+            //05 = LSK6         55 = RSK6   Print on LINE 12
         {
+            switch ( Key_Maintext_Update )
+            {
+                case ( 00 ): nLine = 2; break;
+                case ( 50 ): nLine = 2; break;
+                case ( 01 ): nLine = 4; break;
+                case ( 51 ): nLine = 4; break;
+                case ( 02 ): nLine = 6; break;
+                case ( 52 ): nLine = 6; break;
+                case ( 03 ): nLine = 8; break;
+                case ( 53 ): nLine = 8; break;
+                case ( 04 ): nLine = 10; break;
+                case ( 54 ): nLine = 10; break;
+                case ( 05 ): nLine = 12; break;
+                case ( 55 ): nLine = 12; break;
+            }
             //display.graphic_string(char *s, int x, int y, char font, int color, char width multiplier, char height multiplier)            
             display.graphic_string( SELKEY_SUBTEXT[Key_Subtext_Update].text ,                       //Text to display
                                     LeftOrRight( Key_Subtext_Update, SELKEY_SUBTEXT[Key_Subtext_Update].text,12,48 )*nFontWidth( SELKEY_SUBTEXT[Key_Subtext_Update].font_size ) ,  //Horizontal position
-                                    nLine2Pixel( Key_Subtext_Update ),                              //Vertical position
+                                    nLine2Pixel( nLine ),                              //Vertical position
                                     nFontSize( SELKEY_SUBTEXT[Key_Subtext_Update].font_size ),      //Font
                                     cRGB( SELKEY_SUBTEXT[Key_Subtext_Update].text_RED ,SELKEY_SUBTEXT[Key_Subtext_Update].text_GREEN ,SELKEY_SUBTEXT[Key_Subtext_Update].text_BLUE ), 
                                     1, 1 ); //multiplier always on 1
             Key_Subtext_Update = -1;
         }
+        
         if ( Text_Line_Update > 0)
         {
             //Text_Line_Update contains the the line number to write
@@ -113,6 +160,7 @@
                                     1, 1 ); //multiplier always on 1
             Text_Line_Update = 0;
         }
+        
         if ( CDU_Status_Update == 1 )
         {
  /*