blob: d712ec10fbdc407a012fd053f6c1de94e838b863 [file] [log] [blame]
(function(CanvasKit){
CanvasKit._extraInitializations = CanvasKit._extraInitializations || [];
CanvasKit._extraInitializations.push(function() {
function Int32ArrayToBidiRegions(int32Array) {
if (!int32Array || !int32Array.length) {
return [];
}
let ret = [];
for (let i = 0; i < int32Array.length; i+=3) {
let start = int32Array[i];
let end = int32Array[i+1];
let level = int32Array[i+2];
ret.push({'start': start, 'end': end, 'level': level});
}
return ret;
}
function Int32ArrayToBidiIndexes(int32Array) {
if (!int32Array || !int32Array.length) {
return [];
}
let ret = [];
for (let i = 0; i < int32Array.length; i+=1) {
let index = int32Array[i];
ret.push({'index': index});
}
return ret;
}
function Int16ArrayToCodeUnitsFlags(int16Array) {
if (!int16Array || !int16Array.length) {
return [];
}
let ret = [];
for (let i = 0; i < int16Array.length; i+=1) {
let index = int16Array[i];
ret.push({'flags': index});
}
return ret;
}
CanvasKit.Bidi.getBidiRegions = function(text, textDirection) {
let dir = textDirection === CanvasKit.TextDirection.LTR ? 1 : 0;
/**
* @type {Int32Array}
*/
let int32Array = CanvasKit.Bidi._getBidiRegions(text, dir);
return Int32ArrayToBidiRegions(int32Array);
}
CanvasKit.Bidi.reorderVisual = function(visualRuns) {
/**
* @type {Uint8Array}
*/
let vPtr = copy1dArray(visualRuns, 'HEAPU8');
/**
* @type {Int32Array}
*/
let int32Array = CanvasKit.Bidi._reorderVisual(vPtr, visualRuns && visualRuns.length || 0);
freeArraysThatAreNotMallocedByUsers(vPtr, visualRuns);
return Int32ArrayToBidiIndexes(int32Array);
}
CanvasKit.CodeUnits.compute = function(text) {
/**
* @type {Uint16Array}
*/
let uint16Array = CanvasKit.CodeUnits._compute(text);
return Int16ArrayToCodeUnitsFlags(uint16Array);
}
if (!CanvasKit['TextDirection']) {
CanvasKit['TextDirection'] = {
LTR: { value: 1 },
RTL: { value: 0 },
}
}
});
}(Module)); // When this file is loaded in, the high level object is "Module";