This is a *VERY* Rough library for translating binary representations of grade 1 braille into ASCII strings.

Committer:
aganger3
Date:
Fri Oct 12 05:42:44 2012 +0000
Revision:
3:36f07cfb3fe1
Parent:
2:4cd96cdca95a
Child:
4:0ddc5208706e
Added  overload of translateBraille  to allow passing const char * so that c++ strings may be used with .c_str() syntax. I'm sure there's a more clever way to handle that than just duplicating the function, but it's late and my deadline is tomorrow:)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
aganger3 0:22ca5452cf10 1 #include "Braille_In.h"
aganger3 0:22ca5452cf10 2
aganger3 0:22ca5452cf10 3
aganger3 0:22ca5452cf10 4
aganger3 0:22ca5452cf10 5 char* BrailleInput::translateBraille(char* input, int numChars)
aganger3 0:22ca5452cf10 6 {
aganger3 0:22ca5452cf10 7 char output[numChars+1];
aganger3 0:22ca5452cf10 8 bool NextCaps=false;
aganger3 0:22ca5452cf10 9 for (int i=0;i<numChars;i++)
aganger3 0:22ca5452cf10 10 {
aganger3 0:22ca5452cf10 11 output[i]=translateBrailleChar(input[i],NextCaps);
aganger3 0:22ca5452cf10 12 }
aganger3 3:36f07cfb3fe1 13 output[numChars+1]='\0';
aganger3 3:36f07cfb3fe1 14 return output;
aganger3 0:22ca5452cf10 15 }
aganger3 0:22ca5452cf10 16
aganger3 0:22ca5452cf10 17
aganger3 3:36f07cfb3fe1 18 char* BrailleInput::translateBraille(const char* input, int numChars)
aganger3 3:36f07cfb3fe1 19 {
aganger3 3:36f07cfb3fe1 20 char output[numChars+1];
aganger3 3:36f07cfb3fe1 21 bool NextCaps=false;
aganger3 3:36f07cfb3fe1 22 for (int i=0;i<numChars;i++)
aganger3 3:36f07cfb3fe1 23 {
aganger3 3:36f07cfb3fe1 24 output[i]=translateBrailleChar(input[i],NextCaps);
aganger3 3:36f07cfb3fe1 25 }
aganger3 3:36f07cfb3fe1 26 output[numChars+1]='\0';
aganger3 3:36f07cfb3fe1 27 return output;
aganger3 3:36f07cfb3fe1 28
aganger3 3:36f07cfb3fe1 29 }
aganger3 3:36f07cfb3fe1 30
aganger3 0:22ca5452cf10 31 char BrailleInput::translateBrailleChar(char input, bool& NextCaps)
aganger3 0:22ca5452cf10 32 {
aganger3 0:22ca5452cf10 33 NextCaps=false;
aganger3 0:22ca5452cf10 34 char out;
aganger3 0:22ca5452cf10 35 bool undefined=false;
aganger3 0:22ca5452cf10 36
aganger3 0:22ca5452cf10 37
aganger3 1:d79dbb617533 38
aganger3 0:22ca5452cf10 39 if (!(input & 0x4)) {
aganger3 0:22ca5452cf10 40 switch(input) {
aganger3 0:22ca5452cf10 41 case 0x1:
aganger3 0:22ca5452cf10 42 out= 'a';
aganger3 0:22ca5452cf10 43 break;
aganger3 0:22ca5452cf10 44 case 0x3:
aganger3 0:22ca5452cf10 45 out= 'b';
aganger3 0:22ca5452cf10 46 break;
aganger3 0:22ca5452cf10 47 case 0x9:
aganger3 0:22ca5452cf10 48 out= 'c';
aganger3 0:22ca5452cf10 49 break;
aganger3 0:22ca5452cf10 50 case 0x25:
aganger3 0:22ca5452cf10 51 out= 'd';
aganger3 0:22ca5452cf10 52 break;
aganger3 0:22ca5452cf10 53 case 0x17:
aganger3 0:22ca5452cf10 54 out= 'e';
aganger3 0:22ca5452cf10 55 break;
aganger3 0:22ca5452cf10 56 case 0x11:
aganger3 0:22ca5452cf10 57 out='f';
aganger3 0:22ca5452cf10 58 break;
aganger3 0:22ca5452cf10 59 case 0x27:
aganger3 0:22ca5452cf10 60 out='g';
aganger3 0:22ca5452cf10 61 break;
aganger3 0:22ca5452cf10 62 case 0x19:
aganger3 0:22ca5452cf10 63 out='h';
aganger3 0:22ca5452cf10 64 break;
aganger3 0:22ca5452cf10 65 case 0x18:
aganger3 0:22ca5452cf10 66 out='i';
aganger3 0:22ca5452cf10 67 break;
aganger3 0:22ca5452cf10 68 case 0x26:
aganger3 0:22ca5452cf10 69 out='j';
aganger3 0:22ca5452cf10 70 break;
aganger3 1:d79dbb617533 71 case 0x12:
aganger3 1:d79dbb617533 72 out=':';
aganger3 1:d79dbb617533 73 break;
aganger3 0:22ca5452cf10 74 default:
aganger3 1:d79dbb617533 75 if (input == 0x58){ out = 'w'; } else if (input==0x32){out ='.';} else{ out ='a'; undefined=true; }
aganger3 0:22ca5452cf10 76
aganger3 0:22ca5452cf10 77
aganger3 0:22ca5452cf10 78 }}
aganger3 0:22ca5452cf10 79 else if (input & 0x36){
aganger3 0:22ca5452cf10 80 switch (input)
aganger3 0:22ca5452cf10 81 {
aganger3 0:22ca5452cf10 82 case 0x37:
aganger3 0:22ca5452cf10 83 out='u';
aganger3 0:22ca5452cf10 84 break;
aganger3 0:22ca5452cf10 85 case 0x39:
aganger3 0:22ca5452cf10 86 out='v';
aganger3 0:22ca5452cf10 87 break;
aganger3 0:22ca5452cf10 88 case 0x45:
aganger3 0:22ca5452cf10 89 out='x';
aganger3 0:22ca5452cf10 90 break;
aganger3 0:22ca5452cf10 91 case 0x61:
aganger3 0:22ca5452cf10 92 out='y';
aganger3 0:22ca5452cf10 93 break;
aganger3 0:22ca5452cf10 94 case 0x53:
aganger3 0:22ca5452cf10 95 out='z';
aganger3 0:22ca5452cf10 96 break;
aganger3 0:22ca5452cf10 97 default:
aganger3 0:22ca5452cf10 98 out='u'; undefined=true;
aganger3 0:22ca5452cf10 99 }} else{
aganger3 0:22ca5452cf10 100 switch(input){
aganger3 0:22ca5452cf10 101 case 0x5:
aganger3 0:22ca5452cf10 102 out='k';
aganger3 0:22ca5452cf10 103 break;
aganger3 0:22ca5452cf10 104 case 0x7:
aganger3 0:22ca5452cf10 105 out='l';
aganger3 0:22ca5452cf10 106 break;
aganger3 0:22ca5452cf10 107 case 0x13:
aganger3 0:22ca5452cf10 108 out='m';
aganger3 0:22ca5452cf10 109 break;
aganger3 0:22ca5452cf10 110 case 0x29:
aganger3 0:22ca5452cf10 111 out='n';
aganger3 0:22ca5452cf10 112 break;
aganger3 0:22ca5452cf10 113 case 0x21:
aganger3 0:22ca5452cf10 114 out='o';
aganger3 0:22ca5452cf10 115 break;
aganger3 0:22ca5452cf10 116 case 0x15:
aganger3 0:22ca5452cf10 117 out='p';
aganger3 0:22ca5452cf10 118 break;
aganger3 0:22ca5452cf10 119 case 0x31:
aganger3 0:22ca5452cf10 120 out='q';
aganger3 0:22ca5452cf10 121 break;
aganger3 0:22ca5452cf10 122 case 0x23:
aganger3 0:22ca5452cf10 123 out='r';
aganger3 0:22ca5452cf10 124 break;
aganger3 0:22ca5452cf10 125 case 0x14:
aganger3 0:22ca5452cf10 126 out='s';
aganger3 0:22ca5452cf10 127 break;
aganger3 0:22ca5452cf10 128 case 0x30:
aganger3 0:22ca5452cf10 129 out='t';
aganger3 0:22ca5452cf10 130 break;
aganger3 1:d79dbb617533 131 case 0x32:
aganger3 1:d79dbb617533 132 out='?';
aganger3 1:d79dbb617533 133 break;
aganger3 1:d79dbb617533 134 case 0x16:
aganger3 1:d79dbb617533 135 out='!';
aganger3 1:d79dbb617533 136 break;
aganger3 1:d79dbb617533 137 case 0x6:
aganger3 1:d79dbb617533 138 out=';';
aganger3 1:d79dbb617533 139 break;
aganger3 1:d79dbb617533 140
aganger3 0:22ca5452cf10 141 default:
aganger3 0:22ca5452cf10 142 out='k'; undefined=true;
aganger3 0:22ca5452cf10 143 }}
aganger3 1:d79dbb617533 144
aganger3 1:d79dbb617533 145 switch(input)
aganger3 1:d79dbb617533 146 {
aganger3 1:d79dbb617533 147 case 0x26:
aganger3 1:d79dbb617533 148 out='?';
aganger3 1:d79dbb617533 149 break;
aganger3 1:d79dbb617533 150 case 0x32:
aganger3 1:d79dbb617533 151 out='.';
aganger3 1:d79dbb617533 152 break;
aganger3 1:d79dbb617533 153 }
aganger3 1:d79dbb617533 154
aganger3 1:d79dbb617533 155
aganger3 1:d79dbb617533 156 if (NextCaps)
aganger3 1:d79dbb617533 157 {
aganger3 1:d79dbb617533 158 out=out-0x20;
aganger3 1:d79dbb617533 159 NextCaps=false;
aganger3 1:d79dbb617533 160 }
aganger3 0:22ca5452cf10 161
aganger3 2:4cd96cdca95a 162 if (input == 0x20)
aganger3 1:d79dbb617533 163 {
aganger3 1:d79dbb617533 164 NextCaps=true;
aganger3 1:d79dbb617533 165 out=' ';
aganger3 1:d79dbb617533 166 }
aganger3 0:22ca5452cf10 167
aganger3 2:4cd96cdca95a 168 if (input== 0x0)
aganger3 2:4cd96cdca95a 169 {
aganger3 2:4cd96cdca95a 170 out=' ';
aganger3 2:4cd96cdca95a 171 }
aganger3 0:22ca5452cf10 172
aganger3 0:22ca5452cf10 173 return out;
aganger3 0:22ca5452cf10 174 }
aganger3 0:22ca5452cf10 175
aganger3 0:22ca5452cf10 176
aganger3 0:22ca5452cf10 177
aganger3 0:22ca5452cf10 178
aganger3 0:22ca5452cf10 179
aganger3 0:22ca5452cf10 180
aganger3 0:22ca5452cf10 181
aganger3 0:22ca5452cf10 182
aganger3 0:22ca5452cf10 183
aganger3 0:22ca5452cf10 184
aganger3 0:22ca5452cf10 185
aganger3 0:22ca5452cf10 186
aganger3 0:22ca5452cf10 187
aganger3 0:22ca5452cf10 188
aganger3 0:22ca5452cf10 189
aganger3 0:22ca5452cf10 190