This is a *VERY* Rough library for translating binary representations of grade 1 braille into ASCII strings.
Braille_In.cpp@3:36f07cfb3fe1, 2012-10-12 (annotated)
- 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?
User | Revision | Line number | New 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 |