{“ast”:null,“code”:“/**n * @author Daosheng Mu / github.com/DaoshengMu/n * @author mrdoob / mrdoob.com/n * @author takahirox / github.com/takahirox/n */nimport { DefaultLoadingManager, FileLoader, Texture } from "three";nnvar TGALoader = function TGALoader(manager) {n this.manager = manager !== undefined ? manager : DefaultLoadingManager;n};nnTGALoader.prototype = {n constructor: TGALoader,n load: function load(url, onLoad, onProgress, onError) {n var scope = this;n var texture = new Texture();n var loader = new FileLoader(this.manager);n loader.setResponseType('arraybuffer');n loader.setPath(this.path);n loader.load(url, function (buffer) {n texture.image = scope.parse(buffer);n texture.needsUpdate = true;nn if (onLoad !== undefined) {n onLoad(texture);n }n }, onProgress, onError);n return texture;n },n parse: function parse(buffer) {n // reference from vthibault, github.com/vthibault/roBrowser/blob/master/src/Loaders/Targa.jsn function tgaCheckHeader(header) {n switch (header.image_type) {n // check indexed typen case TGA_TYPE_INDEXED:n case TGA_TYPE_RLE_INDEXED:n if (header.colormap_length > 256 || header.colormap_size !== 24 || header.colormap_type !== 1) {n console.error('THREE.TGALoader: Invalid type colormap data for indexed type.');n }nn break;n // check colormap typenn case TGA_TYPE_RGB:n case TGA_TYPE_GREY:n case TGA_TYPE_RLE_RGB:n case TGA_TYPE_RLE_GREY:n if (header.colormap_type) {n console.error('THREE.TGALoader: Invalid type colormap data for colormap type.');n }nn break;n // What the need of a file without data ?nn case TGA_TYPE_NO_DATA:n console.error('THREE.TGALoader: No data.');n // Invalid type ?nn default:n console.error('THREE.TGALoader: Invalid type "%s".', header.image_type);n } // check image width and heightnnn if (header.width <= 0 || header.height <= 0) {n console.error('THREE.TGALoader: Invalid image size.');n } // check image pixel sizennn if (header.pixel_size !== 8 && header.pixel_size !== 16 && header.pixel_size !== 24 && header.pixel_size !== 32) {n console.error('THREE.TGALoader: Invalid pixel size "%s".', header.pixel_size);n }n } // parse tga image buffernnn function tgaParse(use_rle, use_pal, header, offset, data) {n var pixel_data, pixel_size, pixel_total, palettes;n pixel_size = header.pixel_size >> 3;n pixel_total = header.width * header.height * pixel_size; // read palettesnn if (use_pal) {n palettes = data.subarray(offset, offset += header.colormap_length * (header.colormap_size >> 3));n } // read RLEnnn if (use_rle) {n pixel_data = new Uint8Array(pixel_total);n var c, count, i;n var shift = 0;n var pixels = new Uint8Array(pixel_size);nn while (shift < pixel_total) {n c = data;n count = (c & 0x7f) + 1; // RLE pixelsnn if (c & 0x80) {n // bind pixel tmp arrayn for (i = 0; i < pixel_size; ++i) {n pixels = data;n } // copy pixel arraynnn for (i = 0; i < count; ++i) {n pixel_data.set(pixels, shift + i * pixel_size);n }nn shift += pixel_size * count;n } else {n // raw pixelsn count *= pixel_size;nn for (i = 0; i < count; ++i) {n pixel_data[shift + i] = data;n }nn shift += count;n }n }n } else {n // raw pixelsn pixel_data = data.subarray(offset, offset += use_pal ? header.width * header.height : pixel_total);n }nn return {n pixel_data: pixel_data,n palettes: palettesn };n }nn function tgaGetImageData8bits(imageData, y_start, y_step, y_end, x_start, x_step, x_end, image, palettes) {n var colormap = palettes;n var color,n i = 0,n x,n y;n var width = header.width;nn for (y = y_start; y !== y_end; y += y_step) {n for (x = x_start; x !== x_end; x += x_step, i++) {n color = image;n imageData[(x + width * y) * 4 + 3] = 255;n imageData[(x + width * y) * 4 + 2] = colormap[color * 3 + 0];n imageData[(x + width * y) * 4 + 1] = colormap[color * 3 + 1];n imageData[(x + width * y) * 4 + 0] = colormap[color * 3 + 2];n }n }nn return imageData;n }nn function tgaGetImageData16bits(imageData, y_start, y_step, y_end, x_start, x_step, x_end, image) {n var color,n i = 0,n x,n y;n var width = header.width;nn for (y = y_start; y !== y_end; y += y_step) {n for (x = x_start; x !== x_end; x += x_step, i += 2) {n color = image[i + 0] + (image[i + 1] << 8); // Inversed ?nn imageData[(x + width * y) * 4 + 0] = (color & 0x7C00) >> 7;n imageData[(x + width * y) * 4 + 1] = (color & 0x03E0) >> 2;n imageData[(x + width * y) * 4 + 2] = (color & 0x001F) >> 3;n imageData[(x + width * y) * 4 + 3] = color & 0x8000 ? 0 : 255;n }n }nn return imageData;n }nn function tgaGetImageData24bits(imageData, y_start, y_step, y_end, x_start, x_step, x_end, image) {n var i = 0,n x,n y;n var width = header.width;nn for (y = y_start; y !== y_end; y += y_step) {n for (x = x_start; x !== x_end; x += x_step, i += 3) {n imageData[(x + width * y) * 4 + 3] = 255;n imageData[(x + width * y) * 4 + 2] = image[i + 0];n imageData[(x + width * y) * 4 + 1] = image[i + 1];n imageData[(x + width * y) * 4 + 0] = image[i + 2];n }n }nn return imageData;n }nn function tgaGetImageData32bits(imageData, y_start, y_step, y_end, x_start, x_step, x_end, image) {n var i = 0,n x,n y;n var width = header.width;nn for (y = y_start; y !== y_end; y += y_step) {n for (x = x_start; x !== x_end; x += x_step, i += 4) {n imageData[(x + width * y) * 4 + 2] = image[i + 0];n imageData[(x + width * y) * 4 + 1] = image[i + 1];n imageData[(x + width * y) * 4 + 0] = image[i + 2];n imageData[(x + width * y) * 4 + 3] = image[i + 3];n }n }nn return imageData;n }nn function tgaGetImageDataGrey8bits(imageData, y_start, y_step, y_end, x_start, x_step, x_end, image) {n var color,n i = 0,n x,n y;n var width = header.width;nn for (y = y_start; y !== y_end; y += y_step) {n for (x = x_start; x !== x_end; x += x_step, i++) {n color = image;n imageData[(x + width * y) * 4 + 0] = color;n imageData[(x + width * y) * 4 + 1] = color;n imageData[(x + width * y) * 4 + 2] = color;n imageData[(x + width * y) * 4 + 3] = 255;n }n }nn return imageData;n }nn function tgaGetImageDataGrey16bits(imageData, y_start, y_step, y_end, x_start, x_step, x_end, image) {n var i = 0,n x,n y;n var width = header.width;nn for (y = y_start; y !== y_end; y += y_step) {n for (x = x_start; x !== x_end; x += x_step, i += 2) {n imageData[(x + width * y) * 4 + 0] = image[i + 0];n imageData[(x + width * y) * 4 + 1] = image[i + 0];n imageData[(x + width * y) * 4 + 2] = image[i + 0];n imageData[(x + width * y) * 4 + 3] = image[i + 1];n }n }nn return imageData;n }nn function getTgaRGBA(data, width, height, image, palette) {n var x_start, y_start, x_step, y_step, x_end, y_end;nn switch ((header.flags & TGA_ORIGIN_MASK) >> TGA_ORIGIN_SHIFT) {n default:n case TGA_ORIGIN_UL:n x_start = 0;n x_step = 1;n x_end = width;n y_start = 0;n y_step = 1;n y_end = height;n break;nn case TGA_ORIGIN_BL:n x_start = 0;n x_step = 1;n x_end = width;n y_start = height - 1;n y_step = -1;n y_end = -1;n break;nn case TGA_ORIGIN_UR:n x_start = width - 1;n x_step = -1;n x_end = -1;n y_start = 0;n y_step = 1;n y_end = height;n break;nn case TGA_ORIGIN_BR:n x_start = width - 1;n x_step = -1;n x_end = -1;n y_start = height - 1;n y_step = -1;n y_end = -1;n break;n }nn if (use_grey) {n switch (header.pixel_size) {n case 8:n tgaGetImageDataGrey8bits(data, y_start, y_step, y_end, x_start, x_step, x_end, image);n break;nn case 16:n tgaGetImageDataGrey16bits(data, y_start, y_step, y_end, x_start, x_step, x_end, image);n break;nn default:n console.error('THREE.TGALoader: Format not supported.');n break;n }n } else {n switch (header.pixel_size) {n case 8:n tgaGetImageData8bits(data, y_start, y_step, y_end, x_start, x_step, x_end, image, palette);n break;nn case 16:n tgaGetImageData16bits(data, y_start, y_step, y_end, x_start, x_step, x_end, image);n break;nn case 24:n tgaGetImageData24bits(data, y_start, y_step, y_end, x_start, x_step, x_end, image);n break;nn case 32:n tgaGetImageData32bits(data, y_start, y_step, y_end, x_start, x_step, x_end, image);n break;nn default:n console.error('THREE.TGALoader: Format not supported.');n break;n }n } // Load image data according to specific methodn // var func = 'tgaGetImageData' + (use_grey ? 'Grey' : '') + (header.pixel_size) + 'bits';n // func(data, y_start, y_step, y_end, x_start, x_step, x_end, width, image, palette );nnn return data;n } // TGA constantsnnn var TGA_TYPE_NO_DATA = 0,n TGA_TYPE_INDEXED = 1,n TGA_TYPE_RGB = 2,n TGA_TYPE_GREY = 3,n TGA_TYPE_RLE_INDEXED = 9,n TGA_TYPE_RLE_RGB = 10,n TGA_TYPE_RLE_GREY = 11,n TGA_ORIGIN_MASK = 0x30,n TGA_ORIGIN_SHIFT = 0x04,n TGA_ORIGIN_BL = 0x00,n TGA_ORIGIN_BR = 0x01,n TGA_ORIGIN_UL = 0x02,n TGA_ORIGIN_UR = 0x03;n if (buffer.length < 19) console.error('THREE.TGALoader: Not enough data to contain header.');n var content = new Uint8Array(buffer),n offset = 0,n header = {n id_length: content,n colormap_type: content,n image_type: content,n colormap_index: content | content << 8,n colormap_length: content | content << 8,n colormap_size: content,n origin: [content | content << 8, content | content << 8],n width: content | content << 8,n height: content | content << 8,n pixel_size: content,n flags: contentn }; // check tga if it is valid formatnn tgaCheckHeader(header);nn if (header.id_length + offset > buffer.length) {n console.error('THREE.TGALoader: No data.');n } // skip the needn't datannn offset += header.id_length; // get targa information about RLE compression and palettenn var use_rle = false,n use_pal = false,n use_grey = false;nn switch (header.image_type) {n case TGA_TYPE_RLE_INDEXED:n use_rle = true;n use_pal = true;n break;nn case TGA_TYPE_INDEXED:n use_pal = true;n break;nn case TGA_TYPE_RLE_RGB:n use_rle = true;n break;nn case TGA_TYPE_RGB:n break;nn case TGA_TYPE_RLE_GREY:n use_rle = true;n use_grey = true;n break;nn case TGA_TYPE_GREY:n use_grey = true;n break;n } //nnn var useOffscreen = typeof OffscreenCanvas !== 'undefined';n var canvas = useOffscreen ? new OffscreenCanvas(header.width, header.height) : document.createElement('canvas');n canvas.width = header.width;n canvas.height = header.height;n var context = canvas.getContext('2d');n var imageData = context.createImageData(header.width, header.height);n var result = tgaParse(use_rle, use_pal, header, offset, content);n var rgbaData = getTgaRGBA(imageData.data, header.width, header.height, result.pixel_data, result.palettes);n context.putImageData(imageData, 0, 0);n return useOffscreen ? canvas.transferToImageBitmap() : canvas;n },n setPath: function setPath(value) {n this.path = value;n return this;n }n};nexport { TGALoader };”,“map”:{“version”:3,“sources”:[“/Users/lemonandroid/Banal Dropbox/random/redux-os/app/javascript/packs/kmz/jsm/loaders/TGALoader.js”],“names”:,“mappings”:“AAAA;;;;;AAMA,SACCA,qBADD,EAECC,UAFD,EAGCC,OAHD,QAIO,OAJP;;AAMA,IAAIC,SAAS,GAAG,SAAZA,SAAY,CAAWC,OAAX,EAAqB;AAEpC,OAAKA,OAAL,GAAiBA,OAAO,KAAKC,SAAd,GAA4BD,OAA5B,GAAsCJ,qBAArD;AAEA,CAJD;;AAMAG,SAAS,CAACG,SAAV,GAAsB;AAErBC,EAAAA,WAAW,EAAEJ,SAFQ;AAIrBK,EAAAA,IAAI,EAAE,cAAWC,GAAX,EAAgBC,MAAhB,EAAwBC,UAAxB,EAAoCC,OAApC,EAA8C;AAEnD,QAAIC,KAAK,GAAG,IAAZ;AAEA,QAAIC,OAAO,GAAG,IAAIZ,OAAJ,EAAd;AAEA,QAAIa,MAAM,GAAG,IAAId,UAAJ,CAAgB,KAAKG,OAArB,CAAb;AACAW,IAAAA,MAAM,CAACC,eAAP,CAAwB,aAAxB;AACAD,IAAAA,MAAM,CAACE,OAAP,CAAgB,KAAKC,IAArB;AAEAH,IAAAA,MAAM,CAACP,IAAP,CAAaC,GAAb,EAAkB,UAAWU,MAAX,EAAoB;AAErCL,MAAAA,OAAO,CAACM,KAAR,GAAgBP,KAAK,CAACQ,KAAN,CAAaF,MAAb,CAAhB;AACAL,MAAAA,OAAO,CAACQ,WAAR,GAAsB,IAAtB;;AAEA,UAAKZ,MAAM,KAAKL,SAAhB,EAA4B;AAE3BK,QAAAA,MAAM,CAAEI,OAAF,CAAN;AAEA;AAED,KAXD,EAWGH,UAXH,EAWeC,OAXf;AAaA,WAAOE,OAAP;AAEA,GA7BoB;AA+BrBO,EAAAA,KAAK,EAAE,eAAWF,MAAX,EAAoB;AAE1B;AAEA,aAASI,cAAT,CAAyBC,MAAzB,EAAkC;AAEjC,cAASA,MAAM,CAACC,UAAhB;AAEC;AAEA,aAAKC,gBAAL;AACA,aAAKC,oBAAL;AACC,cAAKH,MAAM,CAACI,eAAP,GAAyB,GAAzB,IAAgCJ,MAAM,CAACK,aAAP,KAAyB,EAAzD,IAA+DL,MAAM,CAACM,aAAP,KAAyB,CAA7F,EAAiG;AAEhGC,YAAAA,OAAO,CAACC,KAAR,CAAe,+DAAf;AAEA;;AACD;AAED;;AAEA,aAAKC,YAAL;AACA,aAAKC,aAAL;AACA,aAAKC,gBAAL;AACA,aAAKC,iBAAL;AACC,cAAKZ,MAAM,CAACM,aAAZ,EAA4B;AAE3BC,YAAAA,OAAO,CAACC,KAAR,CAAe,gEAAf;AAEA;;AACD;AAED;;AAEA,aAAKK,gBAAL;AACCN,UAAAA,OAAO,CAACC,KAAR,CAAe,2BAAf;AAED;;AAEA;AACCD,UAAAA,OAAO,CAACC,KAAR,CAAe,qCAAf,EAAsDR,MAAM,CAACC,UAA7D;AAlCF,OAFiC,CAwCjC;;;AAEA,UAAKD,MAAM,CAACc,KAAP,IAAgB,CAAhB,IAAqBd,MAAM,CAACe,MAAP,IAAiB,CAA3C,EAA+C;AAE9CR,QAAAA,OAAO,CAACC,KAAR,CAAe,sCAAf;AAEA,OA9CgC,CAgDjC;;;AAEA,UAAKR,MAAM,CAACgB,UAAP,KAAsB,CAAtB,IAA2BhB,MAAM,CAACgB,UAAP,KAAsB,EAAjD,IACJhB,MAAM,CAACgB,UAAP,KAAsB,EADlB,IACwBhB,MAAM,CAACgB,UAAP,KAAsB,EADnD,EACwD;AAEvDT,QAAAA,OAAO,CAACC,KAAR,CAAe,2CAAf,EAA4DR,MAAM,CAACgB,UAAnE;AAEA;AAED,KA7DyB,CA+D1B;;;AAEA,aAASC,QAAT,CAAmBC,OAAnB,EAA4BC,OAA5B,EAAqCnB,MAArC,EAA6CoB,MAA7C,EAAqDC,IAArD,EAA4D;AAE3D,UAAIC,UAAJ,EACCN,UADD,EAECO,WAFD,EAGCC,QAHD;AAKAR,MAAAA,UAAU,GAAGhB,MAAM,CAACgB,UAAP,IAAqB,CAAlC;AACAO,MAAAA,WAAW,GAAGvB,MAAM,CAACc,KAAP,GAAed,MAAM,CAACe,MAAtB,GAA+BC,UAA7C,CAR2D,CAU1D;;AAEA,UAAKG,OAAL,EAAe;AAEdK,QAAAA,QAAQ,GAAGH,IAAI,CAACI,QAAL,CAAeL,MAAf,EAAuBA,MAAM,IAAIpB,MAAM,CAACI,eAAP,IAA2BJ,MAAM,CAACK,aAAP,IAAwB,CAAnD,CAAjC,CAAX;AAEA,OAhByD,CAkB1D;;;AAEA,UAAKa,OAAL,EAAe;AAEdI,QAAAA,UAAU,GAAG,IAAII,UAAJ,CAAgBH,WAAhB,CAAb;AAED,YAAII,CAAJ,EAAOC,KAAP,EAAcC,CAAd;AACA,YAAIC,KAAK,GAAG,CAAZ;AACA,YAAIC,MAAM,GAAG,IAAIL,UAAJ,CAAgBV,UAAhB,CAAb;;AAEA,eAAQc,KAAK,GAAGP,WAAhB,EAA8B;AAE7BI,UAAAA,CAAC,GAAGN,IAAI,CAAED,MAAM,EAAR,CAAR;AACAQ,UAAAA,KAAK,GAAG,CAAED,CAAC,GAAG,IAAN,IAAe,CAAvB,CAH6B,CAK7B;;AAEA,cAAKA,CAAC,GAAG,IAAT,EAAgB;AAEf;AAEA,iBAAME,CAAC,GAAG,CAAV,EAAaA,CAAC,GAAGb,UAAjB,EAA6B,EAAGa,CAAhC,EAAoC;AAEnCE,cAAAA,MAAM,CAAEF,CAAF,CAAN,GAAcR,IAAI,CAAED,MAAM,EAAR,CAAlB;AAEA,aARc,CAUf;;;AAEA,iBAAMS,CAAC,GAAG,CAAV,EAAaA,CAAC,GAAGD,KAAjB,EAAwB,EAAGC,CAA3B,EAA+B;AAE9BP,cAAAA,UAAU,CAACU,GAAX,CAAgBD,MAAhB,EAAwBD,KAAK,GAAGD,CAAC,GAAGb,UAApC;AAEA;;AAEDc,YAAAA,KAAK,IAAId,UAAU,GAAGY,KAAtB;AAEA,WApBD,MAoBO;AAEN;AAEAA,YAAAA,KAAK,IAAIZ,UAAT;;AACA,iBAAMa,CAAC,GAAG,CAAV,EAAaA,CAAC,GAAGD,KAAjB,EAAwB,EAAGC,CAA3B,EAA+B;AAE9BP,cAAAA,UAAU,CAAEQ,KAAK,GAAGD,CAAV,CAAV,GAA0BR,IAAI,CAAED,MAAM,EAAR,CAA9B;AAEA;;AACDU,YAAAA,KAAK,IAAIF,KAAT;AAEA;AAED;AAEA,OAnDD,MAmDO;AAEP;AAEAN,QAAAA,UAAU,GAAGD,IAAI,CAACI,QAAL,CACXL,MADW,EACHA,MAAM,IAAMD,OAAO,GAAGnB,MAAM,CAACc,KAAP,GAAed,MAAM,CAACe,MAAzB,GAAkCQ,WADlD,CAAb;AAIC;;AAED,aAAO;AACPD,QAAAA,UAAU,EAAEA,UADL;AAEPE,QAAAA,QAAQ,EAAEA;AAFH,OAAP;AAKD;;AAED,aAASS,oBAAT,CAA+BC,SAA/B,EAA0CC,OAA1C,EAAmDC,MAAnD,EAA2DC,KAA3D,EAAkEC,OAAlE,EAA2EC,MAA3E,EAAmFC,KAAnF,EAA0F5C,KAA1F,EAAiG4B,QAAjG,EAA4G;AAE3G,UAAIiB,QAAQ,GAAGjB,QAAf;AACA,UAAIkB,KAAJ;AAAA,UAAWb,CAAC,GAAG,CAAf;AAAA,UAAkBc,CAAlB;AAAA,UAAqBC,CAArB;AACA,UAAI9B,KAAK,GAAGd,MAAM,CAACc,KAAnB;;AAEA,WAAM8B,CAAC,GAAGT,OAAV,EAAmBS,CAAC,KAAKP,KAAzB,EAAgCO,CAAC,IAAIR,MAArC,EAA8C;AAE7C,aAAMO,CAAC,GAAGL,OAAV,EAAmBK,CAAC,KAAKH,KAAzB,EAAgCG,CAAC,IAAIJ,MAAL,EAAaV,CAAC,EAA9C,EAAoD;AAEnDa,UAAAA,KAAK,GAAG9C,KAAK,CAAEiC,CAAF,CAAb;AACAK,UAAAA,SAAS,CAAE,CAAES,CAAC,GAAG7B,KAAK,GAAG8B,CAAd,IAAoB,CAApB,GAAwB,CAA1B,CAAT,GAAyC,GAAzC;AACAV,UAAAA,SAAS,CAAE,CAAES,CAAC,GAAG7B,KAAK,GAAG8B,CAAd,IAAoB,CAApB,GAAwB,CAA1B,CAAT,GAAyCH,QAAQ,CAAIC,KAAK,GAAG,CAAV,GAAgB,CAAlB,CAAjD;AACAR,UAAAA,SAAS,CAAE,CAAES,CAAC,GAAG7B,KAAK,GAAG8B,CAAd,IAAoB,CAApB,GAAwB,CAA1B,CAAT,GAAyCH,QAAQ,CAAIC,KAAK,GAAG,CAAV,GAAgB,CAAlB,CAAjD;AACAR,UAAAA,SAAS,CAAE,CAAES,CAAC,GAAG7B,KAAK,GAAG8B,CAAd,IAAoB,CAApB,GAAwB,CAA1B,CAAT,GAAyCH,QAAQ,CAAIC,KAAK,GAAG,CAAV,GAAgB,CAAlB,CAAjD;AAEA;AAED;;AAED,aAAOR,SAAP;AAEA;;AAED,aAASW,qBAAT,CAAgCX,SAAhC,EAA2CC,OAA3C,EAAoDC,MAApD,EAA4DC,KAA5D,EAAmEC,OAAnE,EAA4EC,MAA5E,EAAoFC,KAApF,EAA2F5C,KAA3F,EAAmG;AAElG,UAAI8C,KAAJ;AAAA,UAAWb,CAAC,GAAG,CAAf;AAAA,UAAkBc,CAAlB;AAAA,UAAqBC,CAArB;AACA,UAAI9B,KAAK,GAAGd,MAAM,CAACc,KAAnB;;AAEA,WAAM8B,CAAC,GAAGT,OAAV,EAAmBS,CAAC,KAAKP,KAAzB,EAAgCO,CAAC,IAAIR,MAArC,EAA8C;AAE7C,aAAMO,CAAC,GAAGL,OAAV,EAAmBK,CAAC,KAAKH,KAAzB,EAAgCG,CAAC,IAAIJ,MAAL,EAAaV,CAAC,IAAI,CAAlD,EAAsD;AAErDa,UAAAA,KAAK,GAAG9C,KAAK,CAAEiC,CAAC,GAAG,CAAN,CAAL,IAAmBjC,KAAK,CAAEiC,CAAC,GAAG,CAAN,CAAL,IAAkB,CAArC,CAAR,CAFqD,CAEH;;AAClDK,UAAAA,SAAS,CAAE,CAAES,CAAC,GAAG7B,KAAK,GAAG8B,CAAd,IAAoB,CAApB,GAAwB,CAA1B,CAAT,GAAyC,CAAEF,KAAK,GAAG,MAAV,KAAsB,CAA/D;AACAR,UAAAA,SAAS,CAAE,CAAES,CAAC,GAAG7B,KAAK,GAAG8B,CAAd,IAAoB,CAApB,GAAwB,CAA1B,CAAT,GAAyC,CAAEF,KAAK,GAAG,MAAV,KAAsB,CAA/D;AACAR,UAAAA,SAAS,CAAE,CAAES,CAAC,GAAG7B,KAAK,GAAG8B,CAAd,IAAoB,CAApB,GAAwB,CAA1B,CAAT,GAAyC,CAAEF,KAAK,GAAG,MAAV,KAAsB,CAA/D;AACAR,UAAAA,SAAS,CAAE,CAAES,CAAC,GAAG7B,KAAK,GAAG8B,CAAd,IAAoB,CAApB,GAAwB,CAA1B,CAAT,GAA2CF,KAAK,GAAG,MAAV,GAAqB,CAArB,GAAyB,GAAlE;AAEA;AAED;;AAED,aAAOR,SAAP;AAEA;;AAED,aAASY,qBAAT,CAAgCZ,SAAhC,EAA2CC,OAA3C,EAAoDC,MAApD,EAA4DC,KAA5D,EAAmEC,OAAnE,EAA4EC,MAA5E,EAAoFC,KAApF,EAA2F5C,KAA3F,EAAmG;AAElG,UAAIiC,CAAC,GAAG,CAAR;AAAA,UAAWc,CAAX;AAAA,UAAcC,CAAd;AACA,UAAI9B,KAAK,GAAGd,MAAM,CAACc,KAAnB;;AAEA,WAAM8B,CAAC,GAAGT,OAAV,EAAmBS,CAAC,KAAKP,KAAzB,EAAgCO,CAAC,IAAIR,MAArC,EAA8C;AAE7C,aAAMO,CAAC,GAAGL,OAAV,EAAmBK,CAAC,KAAKH,KAAzB,EAAgCG,CAAC,IAAIJ,MAAL,EAAaV,CAAC,IAAI,CAAlD,EAAsD;AAErDK,UAAAA,SAAS,CAAE,CAAES,CAAC,GAAG7B,KAAK,GAAG8B,CAAd,IAAoB,CAApB,GAAwB,CAA1B,CAAT,GAAyC,GAAzC;AACAV,UAAAA,SAAS,CAAE,CAAES,CAAC,GAAG7B,KAAK,GAAG8B,CAAd,IAAoB,CAApB,GAAwB,CAA1B,CAAT,GAAyChD,KAAK,CAAEiC,CAAC,GAAG,CAAN,CAA9C;AACAK,UAAAA,SAAS,CAAE,CAAES,CAAC,GAAG7B,KAAK,GAAG8B,CAAd,IAAoB,CAApB,GAAwB,CAA1B,CAAT,GAAyChD,KAAK,CAAEiC,CAAC,GAAG,CAAN,CAA9C;AACAK,UAAAA,SAAS,CAAE,CAAES,CAAC,GAAG7B,KAAK,GAAG8B,CAAd,IAAoB,CAApB,GAAwB,CAA1B,CAAT,GAAyChD,KAAK,CAAEiC,CAAC,GAAG,CAAN,CAA9C;AAEA;AAED;;AAED,aAAOK,SAAP;AAEA;;AAED,aAASa,qBAAT,CAAgCb,SAAhC,EAA2CC,OAA3C,EAAoDC,MAApD,EAA4DC,KAA5D,EAAmEC,OAAnE,EAA4EC,MAA5E,EAAoFC,KAApF,EAA2F5C,KAA3F,EAAmG;AAElG,UAAIiC,CAAC,GAAG,CAAR;AAAA,UAAWc,CAAX;AAAA,UAAcC,CAAd;AACA,UAAI9B,KAAK,GAAGd,MAAM,CAACc,KAAnB;;AAEA,WAAM8B,CAAC,GAAGT,OAAV,EAAmBS,CAAC,KAAKP,KAAzB,EAAgCO,CAAC,IAAIR,MAArC,EAA8C;AAE7C,aAAMO,CAAC,GAAGL,OAAV,EAAmBK,CAAC,KAAKH,KAAzB,EAAgCG,CAAC,IAAIJ,MAAL,EAAaV,CAAC,IAAI,CAAlD,EAAsD;AAErDK,UAAAA,SAAS,CAAE,CAAES,CAAC,GAAG7B,KAAK,GAAG8B,CAAd,IAAoB,CAApB,GAAwB,CAA1B,CAAT,GAAyChD,KAAK,CAAEiC,CAAC,GAAG,CAAN,CAA9C;AACAK,UAAAA,SAAS,CAAE,CAAES,CAAC,GAAG7B,KAAK,GAAG8B,CAAd,IAAoB,CAApB,GAAwB,CAA1B,CAAT,GAAyChD,KAAK,CAAEiC,CAAC,GAAG,CAAN,CAA9C;AACAK,UAAAA,SAAS,CAAE,CAAES,CAAC,GAAG7B,KAAK,GAAG8B,CAAd,IAAoB,CAApB,GAAwB,CAA1B,CAAT,GAAyChD,KAAK,CAAEiC,CAAC,GAAG,CAAN,CAA9C;AACAK,UAAAA,SAAS,CAAE,CAAES,CAAC,GAAG7B,KAAK,GAAG8B,CAAd,IAAoB,CAApB,GAAwB,CAA1B,CAAT,GAAyChD,KAAK,CAAEiC,CAAC,GAAG,CAAN,CAA9C;AAEA;AAED;;AAED,aAAOK,SAAP;AAEA;;AAED,aAASc,wBAAT,CAAmCd,SAAnC,EAA8CC,OAA9C,EAAuDC,MAAvD,EAA+DC,KAA/D,EAAsEC,OAAtE,EAA+EC,MAA/E,EAAuFC,KAAvF,EAA8F5C,KAA9F,EAAsG;AAErG,UAAI8C,KAAJ;AAAA,UAAWb,CAAC,GAAG,CAAf;AAAA,UAAkBc,CAAlB;AAAA,UAAqBC,CAArB;AACA,UAAI9B,KAAK,GAAGd,MAAM,CAACc,KAAnB;;AAEA,WAAM8B,CAAC,GAAGT,OAAV,EAAmBS,CAAC,KAAKP,KAAzB,EAAgCO,CAAC,IAAIR,MAArC,EAA8C;AAE7C,aAAMO,CAAC,GAAGL,OAAV,EAAmBK,CAAC,KAAKH,KAAzB,EAAgCG,CAAC,IAAIJ,MAAL,EAAaV,CAAC,EAA9C,EAAoD;AAEnDa,UAAAA,KAAK,GAAG9C,KAAK,CAAEiC,CAAF,CAAb;AACAK,UAAAA,SAAS,CAAE,CAAES,CAAC,GAAG7B,KAAK,GAAG8B,CAAd,IAAoB,CAApB,GAAwB,CAA1B,CAAT,GAAyCF,KAAzC;AACAR,UAAAA,SAAS,CAAE,CAAES,CAAC,GAAG7B,KAAK,GAAG8B,CAAd,IAAoB,CAApB,GAAwB,CAA1B,CAAT,GAAyCF,KAAzC;AACAR,UAAAA,SAAS,CAAE,CAAES,CAAC,GAAG7B,KAAK,GAAG8B,CAAd,IAAoB,CAApB,GAAwB,CAA1B,CAAT,GAAyCF,KAAzC;AACAR,UAAAA,SAAS,CAAE,CAAES,CAAC,GAAG7B,KAAK,GAAG8B,CAAd,IAAoB,CAApB,GAAwB,CAA1B,CAAT,GAAyC,GAAzC;AAEA;AAED;;AAED,aAAOV,SAAP;AAEA;;AAED,aAASe,yBAAT,CAAoCf,SAApC,EAA+CC,OAA/C,EAAwDC,MAAxD,EAAgEC,KAAhE,EAAuEC,OAAvE,EAAgFC,MAAhF,EAAwFC,KAAxF,EAA+F5C,KAA/F,EAAuG;AAEtG,UAAIiC,CAAC,GAAG,CAAR;AAAA,UAAWc,CAAX;AAAA,UAAcC,CAAd;AACA,UAAI9B,KAAK,GAAGd,MAAM,CAACc,KAAnB;;AAEA,WAAM8B,CAAC,GAAGT,OAAV,EAAmBS,CAAC,KAAKP,KAAzB,EAAgCO,CAAC,IAAIR,MAArC,EAA8C;AAE7C,aAAMO,CAAC,GAAGL,OAAV,EAAmBK,CAAC,KAAKH,KAAzB,EAAgCG,CAAC,IAAIJ,MAAL,EAAaV,CAAC,IAAI,CAAlD,EAAsD;AAErDK,UAAAA,SAAS,CAAE,CAAES,CAAC,GAAG7B,KAAK,GAAG8B,CAAd,IAAoB,CAApB,GAAwB,CAA1B,CAAT,GAAyChD,KAAK,CAAEiC,CAAC,GAAG,CAAN,CAA9C;AACAK,UAAAA,SAAS,CAAE,CAAES,CAAC,GAAG7B,KAAK,GAAG8B,CAAd,IAAoB,CAApB,GAAwB,CAA1B,CAAT,GAAyChD,KAAK,CAAEiC,CAAC,GAAG,CAAN,CAA9C;AACAK,UAAAA,SAAS,CAAE,CAAES,CAAC,GAAG7B,KAAK,GAAG8B,CAAd,IAAoB,CAApB,GAAwB,CAA1B,CAAT,GAAyChD,KAAK,CAAEiC,CAAC,GAAG,CAAN,CAA9C;AACAK,UAAAA,SAAS,CAAE,CAAES,CAAC,GAAG7B,KAAK,GAAG8B,CAAd,IAAoB,CAApB,GAAwB,CAA1B,CAAT,GAAyChD,KAAK,CAAEiC,CAAC,GAAG,CAAN,CAA9C;AAEA;AAED;;AAED,aAAOK,SAAP;AAEA;;AAED,aAASgB,UAAT,CAAqB7B,IAArB,EAA2BP,KAA3B,EAAkCC,MAAlC,EAA0CnB,KAA1C,EAAiDuD,OAAjD,EAA2D;AAE1D,UAAIb,OAAJ,EACCH,OADD,EAECI,MAFD,EAGCH,MAHD,EAICI,KAJD,EAKCH,KALD;;AAOA,cAAS,CAAErC,MAAM,CAACoD,KAAP,GAAeC,eAAjB,KAAsCC,gBAA/C;AAEC;AACA,aAAKC,aAAL;AACCjB,UAAAA,OAAO,GAAG,CAAV;AACAC,UAAAA,MAAM,GAAG,CAAT;AACAC,UAAAA,KAAK,GAAG1B,KAAR;AACAqB,UAAAA,OAAO,GAAG,CAAV;AACAC,UAAAA,MAAM,GAAG,CAAT;AACAC,UAAAA,KAAK,GAAGtB,MAAR;AACA;;AAED,aAAKyC,aAAL;AACClB,UAAAA,OAAO,GAAG,CAAV;AACAC,UAAAA,MAAM,GAAG,CAAT;AACAC,UAAAA,KAAK,GAAG1B,KAAR;AACAqB,UAAAA,OAAO,GAAGpB,MAAM,GAAG,CAAnB;AACAqB,UAAAA,MAAM,GAAG,CAAE,CAAX;AACAC,UAAAA,KAAK,GAAG,CAAE,CAAV;AACA;;AAED,aAAKoB,aAAL;AACCnB,UAAAA,OAAO,GAAGxB,KAAK,GAAG,CAAlB;AACAyB,UAAAA,MAAM,GAAG,CAAE,CAAX;AACAC,UAAAA,KAAK,GAAG,CAAE,CAAV;AACAL,UAAAA,OAAO,GAAG,CAAV;AACAC,UAAAA,MAAM,GAAG,CAAT;AACAC,UAAAA,KAAK,GAAGtB,MAAR;AACA;;AAED,aAAK2C,aAAL;AACCpB,UAAAA,OAAO,GAAGxB,KAAK,GAAG,CAAlB;AACAyB,UAAAA,MAAM,GAAG,CAAE,CAAX;AACAC,UAAAA,KAAK,GAAG,CAAE,CAAV;AACAL,UAAAA,OAAO,GAAGpB,MAAM,GAAG,CAAnB;AACAqB,UAAAA,MAAM,GAAG,CAAE,CAAX;AACAC,UAAAA,KAAK,GAAG,CAAE,CAAV;AACA;AArCF;;AAyCA,UAAKsB,QAAL,EAAgB;AAEf,gBAAS3D,MAAM,CAACgB,UAAhB;AAEC,eAAK,CAAL;AACCgC,YAAAA,wBAAwB,CAAE3B,IAAF,EAAQc,OAAR,EAAiBC,MAAjB,EAAyBC,KAAzB,EAAgCC,OAAhC,EAAyCC,MAAzC,EAAiDC,KAAjD,EAAwD5C,KAAxD,CAAxB;AACA;;AAED,eAAK,EAAL;AACCqD,YAAAA,yBAAyB,CAAE5B,IAAF,EAAQc,OAAR,EAAiBC,MAAjB,EAAyBC,KAAzB,EAAgCC,OAAhC,EAAyCC,MAAzC,EAAiDC,KAAjD,EAAwD5C,KAAxD,CAAzB;AACA;;AAED;AACCW,YAAAA,OAAO,CAACC,KAAR,CAAe,wCAAf;AACA;AAZF;AAgBA,OAlBD,MAkBO;AAEN,gBAASR,MAAM,CAACgB,UAAhB;AAEC,eAAK,CAAL;AACCiB,YAAAA,oBAAoB,CAAEZ,IAAF,EAAQc,OAAR,EAAiBC,MAAjB,EAAyBC,KAAzB,EAAgCC,OAAhC,EAAyCC,MAAzC,EAAiDC,KAAjD,EAAwD5C,KAAxD,EAA+DuD,OAA/D,CAApB;AACA;;AAED,eAAK,EAAL;AACCN,YAAAA,qBAAqB,CAAExB,IAAF,EAAQc,OAAR,EAAiBC,MAAjB,EAAyBC,KAAzB,EAAgCC,OAAhC,EAAyCC,MAAzC,EAAiDC,KAAjD,EAAwD5C,KAAxD,CAArB;AACA;;AAED,eAAK,EAAL;AACCkD,YAAAA,qBAAqB,CAAEzB,IAAF,EAAQc,OAAR,EAAiBC,MAAjB,EAAyBC,KAAzB,EAAgCC,OAAhC,EAAyCC,MAAzC,EAAiDC,KAAjD,EAAwD5C,KAAxD,CAArB;AACA;;AAED,eAAK,EAAL;AACCmD,YAAAA,qBAAqB,CAAE1B,IAAF,EAAQc,OAAR,EAAiBC,MAAjB,EAAyBC,KAAzB,EAAgCC,OAAhC,EAAyCC,MAAzC,EAAiDC,KAAjD,EAAwD5C,KAAxD,CAArB;AACA;;AAED;AACCW,YAAAA,OAAO,CAACC,KAAR,CAAe,wCAAf;AACA;AApBF;AAwBA,OA9FyD,CAgG1D;AACA;AACA;;;AACA,aAAOa,IAAP;AAEA,KAtYyB,CAwY1B;;;AAEA,QAAIR,gBAAgB,GAAG,CAAvB;AAAA,QACCX,gBAAgB,GAAG,CADpB;AAAA,QAECO,YAAY,GAAG,CAFhB;AAAA,QAGCC,aAAa,GAAG,CAHjB;AAAA,QAICP,oBAAoB,GAAG,CAJxB;AAAA,QAKCQ,gBAAgB,GAAG,EALpB;AAAA,QAMCC,iBAAiB,GAAG,EANrB;AAAA,QAQCyC,eAAe,GAAG,IARnB;AAAA,QASCC,gBAAgB,GAAG,IATpB;AAAA,QAUCE,aAAa,GAAG,IAVjB;AAAA,QAWCE,aAAa,GAAG,IAXjB;AAAA,QAYCH,aAAa,GAAG,IAZjB;AAAA,QAaCE,aAAa,GAAG,IAbjB;AAeA,QAAK9D,MAAM,CAACiE,MAAP,GAAgB,EAArB,EAA0BrD,OAAO,CAACC,KAAR,CAAe,qDAAf;AAE1B,QAAIqD,OAAO,GAAG,IAAInC,UAAJ,CAAgB/B,MAAhB,CAAd;AAAA,QACCyB,MAAM,GAAG,CADV;AAAA,QAECpB,MAAM,GAAG;AACR8D,MAAAA,SAAS,EAAED,OAAO,CAAEzC,MAAM,EAAR,CADV;AAERd,MAAAA,aAAa,EAAEuD,OAAO,CAAEzC,MAAM,EAAR,CAFd;AAGRnB,MAAAA,UAAU,EAAE4D,OAAO,CAAEzC,MAAM,EAAR,CAHX;AAIR2C,MAAAA,cAAc,EAAEF,OAAO,CAAEzC,MAAM,EAAR,CAAP,GAAuByC,OAAO,CAAEzC,MAAM,EAAR,CAAP,IAAwB,CAJvD;AAKRhB,MAAAA,eAAe,EAAEyD,OAAO,CAAEzC,MAAM,EAAR,CAAP,GAAuByC,OAAO,CAAEzC,MAAM,EAAR,CAAP,IAAwB,CALxD;AAMRf,MAAAA,aAAa,EAAEwD,OAAO,CAAEzC,MAAM,EAAR,CANd;AAOR4C,MAAAA,MAAM,EAAE,CACPH,OAAO,CAAEzC,MAAM,EAAR,CAAP,GAAuByC,OAAO,CAAEzC,MAAM,EAAR,CAAP,IAAwB,CADxC,EAEPyC,OAAO,CAAEzC,MAAM,EAAR,CAAP,GAAuByC,OAAO,CAAEzC,MAAM,EAAR,CAAP,IAAwB,CAFxC,CAPA;AAWRN,MAAAA,KAAK,EAAE+C,OAAO,CAAEzC,MAAM,EAAR,CAAP,GAAuByC,OAAO,CAAEzC,MAAM,EAAR,CAAP,IAAwB,CAX9C;AAYRL,MAAAA,MAAM,EAAE8C,OAAO,CAAEzC,MAAM,EAAR,CAAP,GAAuByC,OAAO,CAAEzC,MAAM,EAAR,CAAP,IAAwB,CAZ/C;AAaRJ,MAAAA,UAAU,EAAE6C,OAAO,CAAEzC,MAAM,EAAR,CAbX;AAcRgC,MAAAA,KAAK,EAAES,OAAO,CAAEzC,MAAM,EAAR;AAdN,KAFV,CA3Z0B,CA8azB;;AAEDrB,IAAAA,cAAc,CAAEC,MAAF,CAAd;;AAEA,QAAKA,MAAM,CAAC8D,SAAP,GAAmB1C,MAAnB,GAA4BzB,MAAM,CAACiE,MAAxC,EAAiD;AAEhDrD,MAAAA,OAAO,CAACC,KAAR,CAAe,2BAAf;AAEA,KAtbyB,CAwb1B;;;AAEAY,IAAAA,MAAM,IAAIpB,MAAM,CAAC8D,SAAjB,CA1b0B,CA4b1B;;AAEA,QAAI5C,OAAO,GAAG,KAAd;AAAA,QACCC,OAAO,GAAG,KADX;AAAA,QAECwC,QAAQ,GAAG,KAFZ;;AAIA,YAAS3D,MAAM,CAACC,UAAhB;AAEC,WAAKE,oBAAL;AACCe,QAAAA,OAAO,GAAG,IAAV;AACAC,QAAAA,OAAO,GAAG,IAAV;AACA;;AAED,WAAKjB,gBAAL;AACCiB,QAAAA,OAAO,GAAG,IAAV;AACA;;AAED,WAAKR,gBAAL;AACCO,QAAAA,OAAO,GAAG,IAAV;AACA;;AAED,WAAKT,YAAL;AACC;;AAED,WAAKG,iBAAL;AACCM,QAAAA,OAAO,GAAG,IAAV;AACAyC,QAAAA,QAAQ,GAAG,IAAX;AACA;;AAED,WAAKjD,aAAL;AACCiD,QAAAA,QAAQ,GAAG,IAAX;AACA;AAzBF,KAlc0B,CA+d1B;;;AAEA,QAAIM,YAAY,GAAG,OAAOC,eAAP,KAA2B,WAA9C;AAEA,QAAIC,MAAM,GAAGF,YAAY,GAAG,IAAIC,eAAJ,CAAqBlE,MAAM,CAACc,KAA5B,EAAmCd,MAAM,CAACe,MAA1C,CAAH,GAAwDqD,QAAQ,CAACC,aAAT,CAAwB,QAAxB,CAAjF;AACAF,IAAAA,MAAM,CAACrD,KAAP,GAAed,MAAM,CAACc,KAAtB;AACAqD,IAAAA,MAAM,CAACpD,MAAP,GAAgBf,MAAM,CAACe,MAAvB;AAEA,QAAIuD,OAAO,GAAGH,MAAM,CAACI,UAAP,CAAmB,IAAnB,CAAd;AACA,QAAIrC,SAAS,GAAGoC,OAAO,CAACE,eAAR,CAAyBxE,MAAM,CAACc,KAAhC,EAAuCd,MAAM,CAACe,MAA9C,CAAhB;AAEA,QAAI0D,MAAM,GAAGxD,QAAQ,CAAEC,OAAF,EAAWC,OAAX,EAAoBnB,MAApB,EAA4BoB,MAA5B,EAAoCyC,OAApC,CAArB;AACA,QAAIa,QAAQ,GAAGxB,UAAU,CAAEhB,SAAS,CAACb,IAAZ,EAAkBrB,MAAM,CAACc,KAAzB,EAAgCd,MAAM,CAACe,MAAvC,EAA+C0D,MAAM,CAACnD,UAAtD,EAAkEmD,MAAM,CAACjD,QAAzE,CAAzB;AAEA8C,IAAAA,OAAO,CAACK,YAAR,CAAsBzC,SAAtB,EAAiC,CAAjC,EAAoC,CAApC;AAEA,WAAO+B,YAAY,GAAGE,MAAM,CAACS,qBAAP,EAAH,GAAoCT,MAAvD;AAEA,GAhhBoB;AAkhBrB1E,EAAAA,OAAO,EAAE,iBAAWoF,KAAX,EAAmB;AAE3B,SAAKnF,IAAL,GAAYmF,KAAZ;AACA,WAAO,IAAP;AAEA;AAvhBoB,CAAtB;AA2hBA,SAASlG,SAAT”,“sourcesContent”:[“/**n * @author Daosheng Mu / github.com/DaoshengMu/n * @author mrdoob / mrdoob.com/n * @author takahirox / github.com/takahirox/n */nnimport {ntDefaultLoadingManager,ntFileLoader,ntTexturen} from "three";nnvar TGALoader = function ( manager ) {nntthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;nn};nnTGALoader.prototype = {nntconstructor: TGALoader,nntload: function ( url, onLoad, onProgress, onError ) {nnttvar scope = this;nnttvar texture = new Texture();nnttvar loader = new FileLoader( this.manager );nttloader.setResponseType( 'arraybuffer' );nttloader.setPath( this.path );nnttloader.load( url, function ( buffer ) {nnttttexture.image = scope.parse( buffer );nttttexture.needsUpdate = true;nntttif ( onLoad !== undefined ) {nnttttonLoad( texture );nnttt}nntt}, onProgress, onError );nnttreturn texture;nnt},nntparse: function ( buffer ) {nntt// reference from vthibault, github.com/vthibault/roBrowser/blob/master/src/Loaders/Targa.jsnnttfunction tgaCheckHeader( header ) {nntttswitch ( header.image_type ) {nntttt// check indexed typennttttcase TGA_TYPE_INDEXED:nttttcase TGA_TYPE_RLE_INDEXED:ntttttif ( header.colormap_length > 256 || header.colormap_size !== 24 || header.colormap_type !== 1 ) {nnttttttconsole.error( 'THREE.TGALoader: Invalid type colormap data for indexed type.' );nnttttt}ntttttbreak;nntttt// check colormap typennttttcase TGA_TYPE_RGB:nttttcase TGA_TYPE_GREY:nttttcase TGA_TYPE_RLE_RGB:nttttcase TGA_TYPE_RLE_GREY:ntttttif ( header.colormap_type ) {nnttttttconsole.error( 'THREE.TGALoader: Invalid type colormap data for colormap type.' );nnttttt}ntttttbreak;nntttt// What the need of a file without data ?nnttttcase TGA_TYPE_NO_DATA:ntttttconsole.error( 'THREE.TGALoader: No data.' );nntttt// Invalid type ?nnttttdefault:ntttttconsole.error( 'THREE.TGALoader: Invalid type "%s".', header.image_type );nnttt}nnttt// check image width and heightnntttif ( header.width <= 0 || header.height <= 0 ) {nnttttconsole.error( 'THREE.TGALoader: Invalid image size.' );nnttt}nnttt// check image pixel sizenntttif ( header.pixel_size !== 8 && header.pixel_size !== 16 &&nttttheader.pixel_size !== 24 && header.pixel_size !== 32 ) {nnttttconsole.error( 'THREE.TGALoader: Invalid pixel size "%s".', header.pixel_size );nnttt}nntt}nntt// parse tga image buffernnttfunction tgaParse( use_rle, use_pal, header, offset, data ) {nntttvar pixel_data,nttttpixel_size,nttttpixel_total,nttttpalettes;nntttpixel_size = header.pixel_size >> 3;ntttpixel_total = header.width * header.height * pixel_size;nnttt // read palettesnnttt if ( use_pal ) {nntttt palettes = data.subarray( offset, offset += header.colormap_length * ( header.colormap_size >> 3 ) );nnttt }nnttt // read RLEnnttt if ( use_rle ) {nntttt pixel_data = new Uint8Array( pixel_total );nnttttvar c, count, i;nttttvar shift = 0;nttttvar pixels = new Uint8Array( pixel_size );nnttttwhile ( shift < pixel_total ) {nntttttc = data[ offset ++ ];ntttttcount = ( c & 0x7f ) + 1;nnttttt// RLE pixelsnntttttif ( c & 0x80 ) {nntttttt// bind pixel tmp arraynnttttttfor ( i = 0; i < pixel_size; ++ i ) {nntttttttpixels[ i ] = data[ offset ++ ];nntttttt}nntttttt// copy pixel arraynnttttttfor ( i = 0; i < count; ++ i ) {nntttttttpixel_data.set( pixels, shift + i * pixel_size );nntttttt}nnttttttshift += pixel_size * count;nnttttt} else {nntttttt// raw pixelsnnttttttcount *= pixel_size;nttttttfor ( i = 0; i < count; ++ i ) {nntttttttpixel_data[ shift + i ] = data[ offset ++ ];nntttttt}nttttttshift += count;nnttttt}nntttt}nnttt } else {nntttt// raw pixelsnnttttpixel_data = data.subarray(nttttt offset, offset += ( use_pal ? header.width * header.height : pixel_total )ntttt);nnttt }nnttt return {nttttpixel_data: pixel_data,nttttpalettes: palettesnttt };nntt}nnttfunction tgaGetImageData8bits( imageData, y_start, y_step, y_end, x_start, x_step, x_end, image, palettes ) {nntttvar colormap = palettes;ntttvar color, i = 0, x, y;ntttvar width = header.width;nntttfor ( y = y_start; y !== y_end; y += y_step ) {nnttttfor ( x = x_start; x !== x_end; x += x_step, i ++ ) {nntttttcolor = image[ i ];ntttttimageData[ ( x + width * y ) * 4 + 3 ] = 255;ntttttimageData[ ( x + width * y ) * 4 + 2 ] = colormap[ ( color * 3 ) + 0 ];ntttttimageData[ ( x + width * y ) * 4 + 1 ] = colormap[ ( color * 3 ) + 1 ];ntttttimageData[ ( x + width * y ) * 4 + 0 ] = colormap[ ( color * 3 ) + 2 ];nntttt}nnttt}nntttreturn imageData;nntt}nnttfunction tgaGetImageData16bits( imageData, y_start, y_step, y_end, x_start, x_step, x_end, image ) {nntttvar color, i = 0, x, y;ntttvar width = header.width;nntttfor ( y = y_start; y !== y_end; y += y_step ) {nnttttfor ( x = x_start; x !== x_end; x += x_step, i += 2 ) {nntttttcolor = image[ i + 0 ] + ( image[ i + 1 ] << 8 ); // Inversed ?ntttttimageData[ ( x + width * y ) * 4 + 0 ] = ( color & 0x7C00 ) >> 7;ntttttimageData[ ( x + width * y ) * 4 + 1 ] = ( color & 0x03E0 ) >> 2;ntttttimageData[ ( x + width * y ) * 4 + 2 ] = ( color & 0x001F ) >> 3;ntttttimageData[ ( x + width * y ) * 4 + 3 ] = ( color & 0x8000 ) ? 0 : 255;nntttt}nnttt}nntttreturn imageData;nntt}nnttfunction tgaGetImageData24bits( imageData, y_start, y_step, y_end, x_start, x_step, x_end, image ) {nntttvar i = 0, x, y;ntttvar width = header.width;nntttfor ( y = y_start; y !== y_end; y += y_step ) {nnttttfor ( x = x_start; x !== x_end; x += x_step, i += 3 ) {nntttttimageData[ ( x + width * y ) * 4 + 3 ] = 255;ntttttimageData[ ( x + width * y ) * 4 + 2 ] = image[ i + 0 ];ntttttimageData[ ( x + width * y ) * 4 + 1 ] = image[ i + 1 ];ntttttimageData[ ( x + width * y ) * 4 + 0 ] = image[ i + 2 ];nntttt}nnttt}nntttreturn imageData;nntt}nnttfunction tgaGetImageData32bits( imageData, y_start, y_step, y_end, x_start, x_step, x_end, image ) {nntttvar i = 0, x, y;ntttvar width = header.width;nntttfor ( y = y_start; y !== y_end; y += y_step ) {nnttttfor ( x = x_start; x !== x_end; x += x_step, i += 4 ) {nntttttimageData[ ( x + width * y ) * 4 + 2 ] = image[ i + 0 ];ntttttimageData[ ( x + width * y ) * 4 + 1 ] = image[ i + 1 ];ntttttimageData[ ( x + width * y ) * 4 + 0 ] = image[ i + 2 ];ntttttimageData[ ( x + width * y ) * 4 + 3 ] = image[ i + 3 ];nntttt}nnttt}nntttreturn imageData;nntt}nnttfunction tgaGetImageDataGrey8bits( imageData, y_start, y_step, y_end, x_start, x_step, x_end, image ) {nntttvar color, i = 0, x, y;ntttvar width = header.width;nntttfor ( y = y_start; y !== y_end; y += y_step ) {nnttttfor ( x = x_start; x !== x_end; x += x_step, i ++ ) {nntttttcolor = image[ i ];ntttttimageData[ ( x + width * y ) * 4 + 0 ] = color;ntttttimageData[ ( x + width * y ) * 4 + 1 ] = color;ntttttimageData[ ( x + width * y ) * 4 + 2 ] = color;ntttttimageData[ ( x + width * y ) * 4 + 3 ] = 255;nntttt}nnttt}nntttreturn imageData;nntt}nnttfunction tgaGetImageDataGrey16bits( imageData, y_start, y_step, y_end, x_start, x_step, x_end, image ) {nntttvar i = 0, x, y;ntttvar width = header.width;nntttfor ( y = y_start; y !== y_end; y += y_step ) {nnttttfor ( x = x_start; x !== x_end; x += x_step, i += 2 ) {nntttttimageData[ ( x + width * y ) * 4 + 0 ] = image[ i + 0 ];ntttttimageData[ ( x + width * y ) * 4 + 1 ] = image[ i + 0 ];ntttttimageData[ ( x + width * y ) * 4 + 2 ] = image[ i + 0 ];ntttttimageData[ ( x + width * y ) * 4 + 3 ] = image[ i + 1 ];nntttt}nnttt}nntttreturn imageData;nntt}nnttfunction getTgaRGBA( data, width, height, image, palette ) {nntttvar x_start,ntttty_start,nttttx_step,ntttty_step,nttttx_end,ntttty_end;nntttswitch ( ( header.flags & TGA_ORIGIN_MASK ) >> TGA_ORIGIN_SHIFT ) {nnttttdefault:nttttcase TGA_ORIGIN_UL:ntttttx_start = 0;ntttttx_step = 1;ntttttx_end = width;nttttty_start = 0;nttttty_step = 1;nttttty_end = height;ntttttbreak;nnttttcase TGA_ORIGIN_BL:ntttttx_start = 0;ntttttx_step = 1;ntttttx_end = width;nttttty_start = height - 1;nttttty_step = - 1;nttttty_end = - 1;ntttttbreak;nnttttcase TGA_ORIGIN_UR:ntttttx_start = width - 1;ntttttx_step = - 1;ntttttx_end = - 1;nttttty_start = 0;nttttty_step = 1;nttttty_end = height;ntttttbreak;nnttttcase TGA_ORIGIN_BR:ntttttx_start = width - 1;ntttttx_step = - 1;ntttttx_end = - 1;nttttty_start = height - 1;nttttty_step = - 1;nttttty_end = - 1;ntttttbreak;nnttt}nntttif ( use_grey ) {nnttttswitch ( header.pixel_size ) {nntttttcase 8:ntttttttgaGetImageDataGrey8bits( data, y_start, y_step, y_end, x_start, x_step, x_end, image );nttttttbreak;nntttttcase 16:ntttttttgaGetImageDataGrey16bits( data, y_start, y_step, y_end, x_start, x_step, x_end, image );nttttttbreak;nntttttdefault:nttttttconsole.error( 'THREE.TGALoader: Format not supported.' );nttttttbreak;nntttt}nnttt} else {nnttttswitch ( header.pixel_size ) {nntttttcase 8:ntttttttgaGetImageData8bits( data, y_start, y_step, y_end, x_start, x_step, x_end, image, palette );nttttttbreak;nntttttcase 16:ntttttttgaGetImageData16bits( data, y_start, y_step, y_end, x_start, x_step, x_end, image );nttttttbreak;nntttttcase 24:ntttttttgaGetImageData24bits( data, y_start, y_step, y_end, x_start, x_step, x_end, image );nttttttbreak;nntttttcase 32:ntttttttgaGetImageData32bits( data, y_start, y_step, y_end, x_start, x_step, x_end, image );nttttttbreak;nntttttdefault:nttttttconsole.error( 'THREE.TGALoader: Format not supported.' );nttttttbreak;nntttt}nnttt}nnttt// Load image data according to specific methodnttt// var func = 'tgaGetImageData' + (use_grey ? 'Grey' : '') + (header.pixel_size) + 'bits';nttt// func(data, y_start, y_step, y_end, x_start, x_step, x_end, width, image, palette );ntttreturn data;nntt}nntt// TGA constantsnnttvar TGA_TYPE_NO_DATA = 0,ntttTGA_TYPE_INDEXED = 1,ntttTGA_TYPE_RGB = 2,ntttTGA_TYPE_GREY = 3,ntttTGA_TYPE_RLE_INDEXED = 9,ntttTGA_TYPE_RLE_RGB = 10,ntttTGA_TYPE_RLE_GREY = 11,nntttTGA_ORIGIN_MASK = 0x30,ntttTGA_ORIGIN_SHIFT = 0x04,ntttTGA_ORIGIN_BL = 0x00,ntttTGA_ORIGIN_BR = 0x01,ntttTGA_ORIGIN_UL = 0x02,ntttTGA_ORIGIN_UR = 0x03;nnttif ( buffer.length < 19 ) console.error( 'THREE.TGALoader: Not enough data to contain header.' );nnttvar content = new Uint8Array( buffer ),ntttoffset = 0,ntttheader = {nttttid_length: content[ offset ++ ],nttttcolormap_type: content[ offset ++ ],nttttimage_type: content[ offset ++ ],nttttcolormap_index: content[ offset ++ ] | content[ offset ++ ] << 8,nttttcolormap_length: content[ offset ++ ] | content[ offset ++ ] << 8,nttttcolormap_size: content[ offset ++ ],nttttorigin: [ntttttcontent[ offset ++ ] | content[ offset ++ ] << 8,ntttttcontent[ offset ++ ] | content[ offset ++ ] << 8ntttt],nttttwidth: content[ offset ++ ] | content[ offset ++ ] << 8,nttttheight: content[ offset ++ ] | content[ offset ++ ] << 8,nttttpixel_size: content[ offset ++ ],nttttflags: content[ offset ++ ]nttt};nnttt// check tga if it is valid formatnntttgaCheckHeader( header );nnttif ( header.id_length + offset > buffer.length ) {nntttconsole.error( 'THREE.TGALoader: No data.' );nntt}nntt// skip the needn't datannttoffset += header.id_length;nntt// get targa information about RLE compression and palettennttvar use_rle = false,ntttuse_pal = false,ntttuse_grey = false;nnttswitch ( header.image_type ) {nntttcase TGA_TYPE_RLE_INDEXED:nttttuse_rle = true;nttttuse_pal = true;nttttbreak;nntttcase TGA_TYPE_INDEXED:nttttuse_pal = true;nttttbreak;nntttcase TGA_TYPE_RLE_RGB:nttttuse_rle = true;nttttbreak;nntttcase TGA_TYPE_RGB:nttttbreak;nntttcase TGA_TYPE_RLE_GREY:nttttuse_rle = true;nttttuse_grey = true;nttttbreak;nntttcase TGA_TYPE_GREY:nttttuse_grey = true;nttttbreak;nntt}nntt//nnttvar useOffscreen = typeof OffscreenCanvas !== 'undefined';nnttvar canvas = useOffscreen ? new OffscreenCanvas( header.width, header.height ) : document.createElement( 'canvas' );nttcanvas.width = header.width;nttcanvas.height = header.height;nnttvar context = canvas.getContext( '2d' );nttvar imageData = context.createImageData( header.width, header.height );nnttvar result = tgaParse( use_rle, use_pal, header, offset, content );nttvar rgbaData = getTgaRGBA( imageData.data, header.width, header.height, result.pixel_data, result.palettes );nnttcontext.putImageData( imageData, 0, 0 );nnttreturn useOffscreen ? canvas.transferToImageBitmap() : canvas;nnt},nntsetPath: function ( value ) {nnttthis.path = value;nttreturn this;nnt}nn};nnexport { TGALoader };”]},“metadata”:{},“sourceType”:“module”}