vtf
Version:
Work with VTF files in javascript
50 lines (43 loc) • 1.22 kB
JavaScript
var vtflib = require('./vtflib');
/**
* @return {number}
*/
var getSize = vtflib.cwrap('vlImageGetSize', 'number', []);
/**
* @return {boolean}
*/
var saveLumb = vtflib.cwrap('vlImageSaveLump', 'boolean', ['number', 'number', 'number']);
/**
* @return {boolean}
*/
var fromData = vtflib.cwrap('fromData', 'boolean', ['number', 'number', 'number']);
/**
* get an emscripten pointer to a typed array
*
* @param {Uint8Array} sourceData
* @returns {int}
*/
function pointerFromData(sourceData) {
var buf = vtflib._malloc(sourceData.length);
vtflib.HEAPU8.set(sourceData, buf);
return buf;
}
/**
*
* @param pointer
* @param size
* @return {Uint8Array}
*/
function getDataFromPointer(pointer, size) {
return new Uint8Array(vtflib.HEAPU8.buffer, pointer, size);
}
exports.fromRGBA = function (sourceData, width, height) {
var buf = pointerFromData(sourceData);
fromData(width, height, buf);
var targetSize = getSize();
var targetPointer = vtflib._malloc(targetSize);
var sizePointer = vtflib._malloc(4);
saveLumb(targetPointer, targetSize, sizePointer);
var resultSize = (new Uint32Array(vtflib.HEAPU8.buffer, sizePointer, 1))[0];
return getDataFromPointer(targetPointer, resultSize);
};