| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 /** | 5 /** |
| 6 * @fileoverview JavaScript shim for the liblouis Native Client wrapper. | 6 * @fileoverview JavaScript shim for the liblouis Native Client wrapper. |
| 7 */ | 7 */ |
| 8 | 8 |
| 9 goog.provide('cvox.LibLouis'); | 9 goog.provide('cvox.LibLouis'); |
| 10 | 10 |
| (...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 228 * @param {string} text Text to be translated. | 228 * @param {string} text Text to be translated. |
| 229 * @param {function(ArrayBuffer, Array<number>, Array<number>)} callback | 229 * @param {function(ArrayBuffer, Array<number>, Array<number>)} callback |
| 230 * Callback for result. Takes 3 parameters: the resulting cells, | 230 * Callback for result. Takes 3 parameters: the resulting cells, |
| 231 * mapping from text to braille positions and mapping from braille to | 231 * mapping from text to braille positions and mapping from braille to |
| 232 * text positions. If translation fails for any reason, all parameters are | 232 * text positions. If translation fails for any reason, all parameters are |
| 233 * {@code null}. | 233 * {@code null}. |
| 234 */ | 234 */ |
| 235 cvox.LibLouis.Translator.prototype.translate = function(text, callback) { | 235 cvox.LibLouis.Translator.prototype.translate = function(text, callback) { |
| 236 if (!this.instance_.isAttached()) { | 236 if (!this.instance_.isAttached()) { |
| 237 callback(null /*cells*/, null /*textToBraille*/, null /*brailleToText*/); | 237 callback(null /*cells*/, null /*textToBraille*/, null /*brailleToText*/); |
| 238 return; |
| 238 } | 239 } |
| 239 var message = { 'table_names': this.tableNames_, 'text': text }; | 240 var message = { 'table_names': this.tableNames_, 'text': text }; |
| 240 this.instance_.rpc_('Translate', message, function(reply) { | 241 this.instance_.rpc_('Translate', message, function(reply) { |
| 241 var cells = null; | 242 var cells = null; |
| 242 var textToBraille = null; | 243 var textToBraille = null; |
| 243 var brailleToText = null; | 244 var brailleToText = null; |
| 244 if (reply['success'] && goog.isString(reply['cells'])) { | 245 if (reply['success'] && goog.isString(reply['cells'])) { |
| 245 cells = cvox.LibLouis.Translator.decodeHexString_(reply['cells']); | 246 cells = cvox.LibLouis.Translator.decodeHexString_(reply['cells']); |
| 246 if (goog.isDef(reply['text_to_braille'])) { | 247 if (goog.isDef(reply['text_to_braille'])) { |
| 247 textToBraille = reply['text_to_braille']; | 248 textToBraille = reply['text_to_braille']; |
| (...skipping 13 matching lines...) Expand all Loading... |
| 261 | 262 |
| 262 /** | 263 /** |
| 263 * Translates braille cells into text. | 264 * Translates braille cells into text. |
| 264 * @param {!ArrayBuffer} cells Cells to be translated. | 265 * @param {!ArrayBuffer} cells Cells to be translated. |
| 265 * @param {function(?string)} callback Callback for result. | 266 * @param {function(?string)} callback Callback for result. |
| 266 */ | 267 */ |
| 267 cvox.LibLouis.Translator.prototype.backTranslate = | 268 cvox.LibLouis.Translator.prototype.backTranslate = |
| 268 function(cells, callback) { | 269 function(cells, callback) { |
| 269 if (!this.instance_.isAttached()) { | 270 if (!this.instance_.isAttached()) { |
| 270 callback(null /*text*/); | 271 callback(null /*text*/); |
| 272 return; |
| 271 } | 273 } |
| 272 if (cells.byteLength == 0) { | 274 if (cells.byteLength == 0) { |
| 273 // liblouis doesn't handle empty input, so handle that trivially | 275 // liblouis doesn't handle empty input, so handle that trivially |
| 274 // here. | 276 // here. |
| 275 callback(''); | 277 callback(''); |
| 276 return; | 278 return; |
| 277 } | 279 } |
| 278 var message = { | 280 var message = { |
| 279 'table_names': this.tableNames_, | 281 'table_names': this.tableNames_, |
| 280 'cells': cvox.LibLouis.Translator.encodeHexString_(cells) | 282 'cells': cvox.LibLouis.Translator.encodeHexString_(cells) |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 316 */ | 318 */ |
| 317 cvox.LibLouis.Translator.encodeHexString_ = function(arrayBuffer) { | 319 cvox.LibLouis.Translator.encodeHexString_ = function(arrayBuffer) { |
| 318 var array = new Uint8Array(arrayBuffer); | 320 var array = new Uint8Array(arrayBuffer); |
| 319 var hex = ''; | 321 var hex = ''; |
| 320 for (var i = 0; i < array.length; i++) { | 322 for (var i = 0; i < array.length; i++) { |
| 321 var b = array[i]; | 323 var b = array[i]; |
| 322 hex += (b < 0x10 ? '0' : '') + b.toString(16); | 324 hex += (b < 0x10 ? '0' : '') + b.toString(16); |
| 323 } | 325 } |
| 324 return hex; | 326 return hex; |
| 325 }; | 327 }; |
| OLD | NEW |