@sl-utils/map 1.0.6 → 1.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/demo/App.vue +31 -0
  2. package/demo/app.d.ts +3 -0
  3. package/demo/main.js +7 -0
  4. package/demo/main.js.map +1 -0
  5. package/demo/main.ts +5 -0
  6. package/demo/style.css +2 -0
  7. package/dist/sl-utils-map.es.js +12926 -0
  8. package/dist/sl-utils-map.umd.js +6 -0
  9. package/index.cjs +2 -2
  10. package/index.html +13 -0
  11. package/package.json +11 -2
  12. package/src/leaflet/slu-leaflet-net-map.ts +0 -15
  13. package/src/map/canvas-map.ts +3 -2
  14. package/src/sl-utils-map.d.ts +15 -5
  15. package/tsconfig.json +10 -4
  16. package/vite.config.ts +17 -0
  17. package/dist/canvas/index.js +0 -21
  18. package/dist/canvas/index.js.map +0 -1
  19. package/dist/canvas/slu-canvas-gif.js +0 -471
  20. package/dist/canvas/slu-canvas-gif.js.map +0 -1
  21. package/dist/canvas/slu-canvas-img.js +0 -49
  22. package/dist/canvas/slu-canvas-img.js.map +0 -1
  23. package/dist/canvas/slu-canvas-text.js +0 -151
  24. package/dist/canvas/slu-canvas-text.js.map +0 -1
  25. package/dist/canvas/slu-canvas.js +0 -163
  26. package/dist/canvas/slu-canvas.js.map +0 -1
  27. package/dist/leaflet/index.js +0 -19
  28. package/dist/leaflet/index.js.map +0 -1
  29. package/dist/leaflet/leaflet-tilelayer-wmts.js +0 -83
  30. package/dist/leaflet/leaflet-tilelayer-wmts.js.map +0 -1
  31. package/dist/leaflet/slu-leaflet-net-map.js +0 -204
  32. package/dist/leaflet/slu-leaflet-net-map.js.map +0 -1
  33. package/dist/map/canvas-draw.js +0 -214
  34. package/dist/map/canvas-draw.js.map +0 -1
  35. package/dist/map/canvas-event.js +0 -210
  36. package/dist/map/canvas-event.js.map +0 -1
  37. package/dist/map/canvas-layer.js +0 -159
  38. package/dist/map/canvas-layer.js.map +0 -1
  39. package/dist/map/canvas-map.js +0 -98
  40. package/dist/map/canvas-map.js.map +0 -1
  41. package/dist/sl-utils-map.js +0 -27
  42. package/dist/sl-utils-map.js.map +0 -1
  43. package/dist/utils/slu-map.js +0 -341
  44. package/dist/utils/slu-map.js.map +0 -1
  45. package/dist/utils/txt.js +0 -181
  46. package/dist/utils/txt.js.map +0 -1
package/index.cjs CHANGED
@@ -2,8 +2,8 @@
2
2
  "use strict";
3
3
 
4
4
  const path = require("path");
5
- const minified = path.join(__dirname, "dist/sl-utils-map.js");
6
- const unminified = path.join(__dirname, "Build/CesiumUnminified/index.cjs");
5
+ const minified = path.join(__dirname, "dist/sl-utils-map.es.js");
6
+ const unminified = path.join(__dirname, "dist/sl-utils-map.umd.js");
7
7
 
8
8
  // If in 'production' mode, use the combined/minified/optimized version of Cesium
9
9
  module.exports =
package/index.html ADDED
@@ -0,0 +1,13 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <link rel="icon" type="image/svg+xml" href="/vite.svg" />
6
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
+ <title>vue-demo</title>
8
+ </head>
9
+ <body>
10
+ <div id="app"></div>
11
+ <script type="module" src="/demo/main.ts"></script>
12
+ </body>
13
+ </html>
package/package.json CHANGED
@@ -1,9 +1,11 @@
1
1
  {
2
2
  "name": "@sl-utils/map",
3
- "version": "1.0.6",
3
+ "version": "1.0.8",
4
4
  "description": "",
5
5
  "main": "index.cjs",
6
6
  "module": "./src/sl-utils-map.ts",
7
+ "type": "module",
8
+ "types": "./src/sl-utils-map.d.ts",
7
9
  "scripts": {
8
10
  "test": "echo \"Error: no test specified\" && exit 1",
9
11
  "build": "npm run build:cjs",
@@ -12,13 +14,20 @@
12
14
  "dependencies": {
13
15
  "@amap/amap-jsapi-loader": "^1.0.1",
14
16
  "leaflet": "^1.9.4",
17
+ "proj4": "^2.16.2",
18
+ "proj4leaflet": "^1.0.2",
15
19
  "rbush": "^4.0.1"
16
20
  },
17
21
  "devDependencies": {
18
22
  "@types/leaflet": "^1.9.17",
19
23
  "@types/rbush": "^4.0.0",
24
+ "@vitejs/plugin-vue": "^6.0.1",
25
+ "path": "^0.12.7",
20
26
  "ts-node": "^10.9.2",
21
- "typescript": "~5.7.2"
27
+ "typescript": "~5.7.2",
28
+ "vite": "^7.1.7",
29
+ "vue": "^3.5.21",
30
+ "vue-tsc": "^3.0.7"
22
31
  },
23
32
  "exports": {
24
33
  "./package.json": "./package.json",
@@ -214,19 +214,4 @@ const MAPINFO: any = {
214
214
  Subdomains: '0123456789',
215
215
  tms: true
216
216
  }
217
- }
218
- export const SLCRS = {
219
- "Baidu": new (L as any).Proj.CRS('EPSG:900913', '+proj=merc +a=6378206 +b=6356584.314245179 +lat_ts=0.0 +lon_0=0.0 +x_0=0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs', {
220
- resolutions: function () {
221
- let level = 18
222
- let res: number[] = [];
223
- res[0] = Math.pow(2, 18);
224
- for (var i = 1; i < level; i++) {
225
- res[i] = Math.pow(2, (18 - i))
226
- }
227
- return res;
228
- }(),
229
- origin: [0, 0],
230
- bounds: L.bounds([20037508.342789244, 0], [0, 20037508.342789244])
231
- })
232
217
  }
@@ -1,6 +1,6 @@
1
1
  import { CRS, Map, latLng } from "leaflet";
2
2
  import * as AMapLoader from '@amap/amap-jsapi-loader';
3
- import { SLCRS, SLEMap, SLULeafletNetMap } from '../leaflet';
3
+ import { SLEMap, SLULeafletNetMap } from '../leaflet';
4
4
  declare var AMap: any;
5
5
 
6
6
  export class SLUMap {
@@ -21,7 +21,8 @@ export class SLUMap {
21
21
  let mapSource: string = names[0].split('.')[0]
22
22
  let center = map.getCenter();
23
23
  let zoom = map.getZoom();
24
- map.options.crs = mapSource === 'Baidu' ? SLCRS.Baidu : CRS.EPSG3857; // 根据图层坐标系设置
24
+ //百度图层暂时不添加
25
+ // map.options.crs = mapSource === 'Baidu' ? SLCRS.Baidu : CRS.EPSG3857;
25
26
  (map as any)._resetView(center, zoom, true);
26
27
  names?.forEach(name => {
27
28
  if (curs[name]) return;
@@ -1,6 +1,16 @@
1
1
  declare module '@sl-utils/map' {
2
- // 根据你的包实际导出的内容声明类型
3
- export function mapFunction<T>(array: T[], callback: (item: T) => any): any[];
4
- export const someValue: string;
5
- // 添加其他导出...
6
- }
2
+ /**leaflet 需要开发者在样式表中挂载leaflet样式 */
3
+ export class SLUMap {
4
+ constructor(ele: string);
5
+ }
6
+ // 添加其他导出...
7
+ export class MapCanvasDraw {
8
+ constructor();
9
+ }
10
+ export class MapCanvasEvent {
11
+ constructor();
12
+ }
13
+ export class MapCanvasLayer {
14
+ constructor();
15
+ }
16
+ }
package/tsconfig.json CHANGED
@@ -9,17 +9,23 @@
9
9
  "module": "commonjs",
10
10
  "outDir": "./dist",
11
11
  "rootDir": "./src",
12
+ "baseUrl": ".",
12
13
  "lib": [
13
14
  "es2020",
14
15
  "dom"
15
16
  ],
17
+ "paths": {
18
+ "@/*": ["src/*"],
19
+ "@sl-utils/*": ["src/utils/*"] // 添加这行
20
+ }
16
21
  },
17
22
  "include": [
18
23
  "src/**/*",
19
24
  "types/**/*",
25
+ "src/**/*.ts",
26
+ "src/**/*.d.ts",
27
+ "src/**/*.tsx",
28
+ "src/**/*.vue"
20
29
  ],
21
- "exclude": [
22
- "node_modules",
23
- "dist"
24
- ]
30
+ "exclude": []
25
31
  }
package/vite.config.ts ADDED
@@ -0,0 +1,17 @@
1
+ import { defineConfig } from 'vite'
2
+ import vue from '@vitejs/plugin-vue'
3
+ // https://vite.dev/config/
4
+ export default defineConfig({
5
+ plugins: [vue()],
6
+ build: {
7
+ outDir: 'dist',
8
+ lib: {
9
+ entry: 'src/sl-utils-map.ts',
10
+ name: 'test',
11
+ fileName: (format) => `sl-utils-map.${format}.js`,
12
+ },
13
+ },
14
+ server: {
15
+ port: 5172
16
+ }
17
+ })
@@ -1,21 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./slu-canvas"), exports);
18
- __exportStar(require("./slu-canvas-gif"), exports);
19
- __exportStar(require("./slu-canvas-img"), exports);
20
- __exportStar(require("./slu-canvas-text"), exports);
21
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/canvas/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA4B;AAC5B,mDAAgC;AAChC,mDAAgC;AAChC,oDAAiC"}
@@ -1,471 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SLUCanvasGif = void 0;
4
- class SLUCanvasGif {
5
- constructor() {
6
- this.canvasTool = document.createElement("canvas");
7
- this.LAST_DISPOSA_METHOD = null;
8
- this.CURRENT_FRAME_INDEX = -1;
9
- this.TRANSPARENCY = null;
10
- this.gifCache = {};
11
- this.aniIds = {};
12
- this.opts = [];
13
- }
14
- async loadGIF(opt, ctx) {
15
- let { url } = opt;
16
- let cache = this.gifCache[url];
17
- this.CTX = ctx;
18
- if (!cache) {
19
- this.gifCache[url] = { status: 0, data: null, frameList: [] };
20
- cache = this.gifCache[url];
21
- try {
22
- cache.status = 1;
23
- const data = await this.fetchGIF(url);
24
- const stream = new Stream(data);
25
- cache.status = 2;
26
- this.parseHeader(url, stream);
27
- this.parseBlock(opt, stream);
28
- }
29
- catch (error) {
30
- console.error('Error loading GIF:', error);
31
- }
32
- }
33
- else {
34
- if (cache.status === 1) {
35
- this.opts.push(opt);
36
- clearTimeout(this.timeId);
37
- this.timeId = setTimeout(() => {
38
- console.log(this.opts);
39
- let opts = this.opts;
40
- this.opts = [];
41
- opts.forEach(e => this.loadGIF(e, this.CTX));
42
- }, 100);
43
- }
44
- else if (cache.status === 2) {
45
- this.stopGif(opt);
46
- this.playGif(opt);
47
- }
48
- }
49
- }
50
- fetchGIF(url) {
51
- return new Promise((resolve, reject) => {
52
- const xhr = new XMLHttpRequest();
53
- xhr.open('GET', url, true);
54
- if ('overrideMimeType' in xhr) {
55
- xhr.overrideMimeType('text/plain; charset=x-user-defined');
56
- }
57
- xhr.onload = () => {
58
- if (xhr.status === 200) {
59
- const data = xhr.response;
60
- if (data.toString().indexOf('ArrayBuffer') > 0) {
61
- resolve(new Uint8Array(data));
62
- }
63
- else {
64
- resolve(data);
65
- }
66
- }
67
- else {
68
- reject(new Error('XHR Error - Response'));
69
- }
70
- };
71
- xhr.onerror = () => {
72
- reject(new Error('XHR Error'));
73
- };
74
- xhr.send();
75
- });
76
- }
77
- parseHeader(url, stream) {
78
- let STREAM = stream, GIF_INFO = this.gifInfo = Object.create(null), canvas = this.canvasTool;
79
- GIF_INFO.sig = STREAM.read(3);
80
- GIF_INFO.ver = STREAM.read(3);
81
- if (GIF_INFO.sig !== 'GIF')
82
- throw new Error('Not a GIF file.');
83
- GIF_INFO.width = STREAM.readUnsigned();
84
- GIF_INFO.height = STREAM.readUnsigned();
85
- let bits = this.byteToBitArr(STREAM.readByte());
86
- GIF_INFO.gctFlag = !!bits.shift();
87
- GIF_INFO.colorRes = this.bitsToNum(bits.splice(0, 3));
88
- GIF_INFO.sorted = !!bits.shift();
89
- GIF_INFO.gctSize = this.bitsToNum(bits.splice(0, 3));
90
- GIF_INFO.bgColor = STREAM.readByte();
91
- GIF_INFO.pixelAspectRatio = STREAM.readByte();
92
- if (GIF_INFO.gctFlag) {
93
- GIF_INFO.gct = this.parseCT(1 << (GIF_INFO.gctSize + 1), stream);
94
- }
95
- canvas.width = GIF_INFO.width;
96
- canvas.height = GIF_INFO.height;
97
- canvas.style.width = GIF_INFO.width + 'px';
98
- canvas.style.height = GIF_INFO.height + 'px';
99
- canvas.getContext('2d').setTransform(1, 0, 0, 1, 0, 0);
100
- }
101
- ;
102
- parseBlock(opt, stream) {
103
- let block = Object.create(null), STREAM = stream;
104
- block.sentinel = STREAM.readByte();
105
- switch (String.fromCharCode(block.sentinel)) {
106
- case '!':
107
- block.type = 'ext';
108
- this.parseExt(block, stream, opt.url);
109
- break;
110
- case ',':
111
- block.type = 'img';
112
- this.parseImg(block, stream, opt.url);
113
- break;
114
- case ';':
115
- block.type = 'eof';
116
- this.playGif(opt);
117
- break;
118
- default:
119
- throw new Error('Unknown block: 0x' + block.sentinel.toString(16));
120
- }
121
- if (block.type !== 'eof') {
122
- this.parseBlock(opt, stream);
123
- }
124
- }
125
- ;
126
- playGif(opt, index = 0) {
127
- const that = this, { delay = 0 } = opt;
128
- const { frameList: list } = that.gifCache[opt.url], len = list.length;
129
- let lastTimestamp;
130
- const animate = (timestamp) => {
131
- if (lastTimestamp === undefined)
132
- lastTimestamp = timestamp;
133
- const elapsed = timestamp - (lastTimestamp || timestamp);
134
- if (elapsed >= delay) {
135
- lastTimestamp = timestamp;
136
- index++;
137
- if (index >= len) {
138
- index = 0;
139
- }
140
- }
141
- ;
142
- that.drawFrame(opt, index);
143
- that.aniIds[opt.id] = requestAnimationFrame(animate);
144
- };
145
- that.aniIds[opt.id] = requestAnimationFrame(animate);
146
- }
147
- drawFrame(opt, index) {
148
- const that = this, ctx = that.CTX;
149
- let { point, points = [], size = [100, 100], url, sizeo, posX = 0, posY = 0, left = 0, top = 0, rotate = 0, alpha = 1, delay } = opt;
150
- let { frameList: list } = that.gifCache[opt.url];
151
- that.canvasTool.getContext("2d").putImageData(list[index].data, 0, 0);
152
- let imgEle = that.canvasTool;
153
- let sizeX = size[0], sizeY = size[1], sizeOX = sizeo && sizeo[0], sizeOY = sizeo && sizeo[1];
154
- if (point)
155
- points = [...points, point];
156
- for (let i = 0; i < points.length; i++) {
157
- const e = points[i], x = e[0], y = e[1];
158
- rotate = (rotate * Math.PI) / 180;
159
- ctx.globalAlpha = alpha;
160
- ctx.setTransform(1, 0, 0, 1, x, y);
161
- ctx.rotate(rotate);
162
- if (sizeOX && sizeOY) {
163
- ctx.drawImage(imgEle, posX, posY, sizeOX, sizeOY, -sizeX / 2 + left, -sizeY / 2 + top, sizeX, sizeY);
164
- }
165
- else {
166
- ctx.drawImage(imgEle, -sizeX / 2 + left, -sizeY / 2 + top, sizeX, sizeY);
167
- }
168
- ctx.rotate(-rotate);
169
- ctx.setTransform(1, 0, 0, 1, 0, 0);
170
- }
171
- }
172
- stopGif(opt) {
173
- const that = this, aniId = that.aniIds[opt.id];
174
- if (!aniId)
175
- return;
176
- cancelAnimationFrame(aniId);
177
- that.aniIds[opt.id] = null;
178
- }
179
- parseExt(block, stream, url) {
180
- let STREAM = stream;
181
- let parseGCExt = (block) => {
182
- STREAM.readByte();
183
- var bits = this.byteToBitArr(STREAM.readByte());
184
- block.reserved = bits.splice(0, 3);
185
- block.disposalMethod = this.bitsToNum(bits.splice(0, 3));
186
- this.LAST_DISPOSA_METHOD = block.disposalMethod;
187
- block.userInput = bits.shift();
188
- block.transparencyGiven = bits.shift();
189
- block.delayTime = STREAM.readUnsigned();
190
- block.transparencyIndex = STREAM.readByte();
191
- block.terminator = STREAM.readByte();
192
- this.pushFrame(block.delayTime, url);
193
- this.TRANSPARENCY = block.transparencyGiven ? block.transparencyIndex : null;
194
- };
195
- let parseComExt = (block) => {
196
- block.comment = this.readSubBlocks(stream);
197
- };
198
- let parsePTExt = (block) => {
199
- STREAM.readByte();
200
- block.ptHeader = STREAM.readBytes(12);
201
- block.ptData = this.readSubBlocks(stream);
202
- };
203
- let parseAppExt = (block) => {
204
- var parseNetscapeExt = function (block) {
205
- STREAM.readByte();
206
- block.unknown = STREAM.readByte();
207
- block.iterations = STREAM.readUnsigned();
208
- block.terminator = STREAM.readByte();
209
- };
210
- var parseUnknownAppExt = (block) => {
211
- block.appData = this.readSubBlocks(stream);
212
- };
213
- STREAM.readByte();
214
- block.identifier = STREAM.read(8);
215
- block.authCode = STREAM.read(3);
216
- switch (block.identifier) {
217
- case 'NETSCAPE':
218
- parseNetscapeExt(block);
219
- break;
220
- default:
221
- parseUnknownAppExt(block);
222
- break;
223
- }
224
- };
225
- let parseUnknownExt = (block) => {
226
- block.data = this.readSubBlocks(stream);
227
- };
228
- block.label = STREAM.readByte();
229
- switch (block.label) {
230
- case 0xF9:
231
- block.extType = 'gce';
232
- parseGCExt(block);
233
- break;
234
- case 0xFE:
235
- block.extType = 'com';
236
- parseComExt(block);
237
- break;
238
- case 0x01:
239
- block.extType = 'pte';
240
- parsePTExt(block);
241
- break;
242
- case 0xFF:
243
- block.extType = 'app';
244
- parseAppExt(block);
245
- break;
246
- default:
247
- block.extType = 'unknown';
248
- parseUnknownExt(block);
249
- break;
250
- }
251
- }
252
- ;
253
- pushFrame(delay, url) {
254
- let FRAME_LIST = this.gifCache[url].frameList;
255
- if (!this.ctx) {
256
- return;
257
- }
258
- ;
259
- FRAME_LIST.push({
260
- delay,
261
- data: this.ctx.getImageData(0, 0, this.gifInfo.width, this.gifInfo.height)
262
- });
263
- }
264
- ;
265
- parseImg(img, stream, url) {
266
- let STREAM = stream;
267
- function deinterlace(pixels, width) {
268
- let newPixels = new Array(pixels.length);
269
- const rows = pixels.length / width;
270
- function cpRow(toRow, fromRow) {
271
- const fromPixels = pixels.slice(fromRow * width, (fromRow + 1) * width);
272
- newPixels.splice.apply(newPixels, [toRow * width, width].concat(fromPixels));
273
- }
274
- ;
275
- const offsets = [0, 4, 2, 1], steps = [8, 8, 4, 2];
276
- let fromRow = 0;
277
- for (var pass = 0; pass < 4; pass++) {
278
- for (var toRow = offsets[pass]; toRow < rows; toRow += steps[pass]) {
279
- cpRow(toRow, fromRow);
280
- fromRow++;
281
- }
282
- }
283
- return newPixels;
284
- }
285
- ;
286
- img.leftPos = STREAM.readUnsigned();
287
- img.topPos = STREAM.readUnsigned();
288
- img.width = STREAM.readUnsigned();
289
- img.height = STREAM.readUnsigned();
290
- let bits = this.byteToBitArr(STREAM.readByte());
291
- img.lctFlag = bits.shift();
292
- img.interlaced = bits.shift();
293
- img.sorted = bits.shift();
294
- img.reserved = bits.splice(0, 2);
295
- img.lctSize = this.bitsToNum(bits.splice(0, 3));
296
- if (img.lctFlag) {
297
- img.lct = this.parseCT(1 << (img.lctSize + 1), stream);
298
- }
299
- img.lzwMinCodeSize = STREAM.readByte();
300
- const lzwData = this.readSubBlocks(stream);
301
- img.pixels = this.lzwDecode(img.lzwMinCodeSize, lzwData);
302
- if (img.interlaced) {
303
- img.pixels = deinterlace(img.pixels, img.width);
304
- }
305
- this.doImg(img, url);
306
- }
307
- ;
308
- readSubBlocks(stream) {
309
- let size, STREAM = stream, data = '';
310
- do {
311
- size = STREAM.readByte();
312
- data += STREAM.read(size);
313
- } while (size !== 0);
314
- return data;
315
- }
316
- ;
317
- lzwDecode(minCodeSize, data) {
318
- let pos = 0;
319
- function readCode(size) {
320
- let code = 0;
321
- for (let i = 0; i < size; i++) {
322
- if (data.charCodeAt(pos >> 3) & (1 << (pos & 7))) {
323
- code |= (1 << i);
324
- }
325
- pos++;
326
- }
327
- return code;
328
- }
329
- ;
330
- let output = [], clearCode = 1 << minCodeSize, eoiCode = clearCode + 1, codeSize = minCodeSize + 1, dict = [];
331
- function clear() {
332
- dict = [];
333
- codeSize = minCodeSize + 1;
334
- for (let i = 0; i < clearCode; i++) {
335
- dict[i] = [i];
336
- }
337
- dict[clearCode] = [];
338
- dict[eoiCode] = null;
339
- }
340
- ;
341
- let code = null, last = null;
342
- while (true) {
343
- last = code;
344
- code = readCode(codeSize);
345
- if (code === clearCode) {
346
- clear();
347
- continue;
348
- }
349
- if (code === eoiCode) {
350
- break;
351
- }
352
- ;
353
- if (code < dict.length) {
354
- if (last !== clearCode) {
355
- dict.push(dict[last].concat(dict[code][0]));
356
- }
357
- }
358
- else {
359
- if (code !== dict.length) {
360
- throw new Error('Invalid LZW code.');
361
- }
362
- dict.push(dict[last].concat(dict[last][0]));
363
- }
364
- output.push.apply(output, dict[code]);
365
- if (dict.length === (1 << codeSize) && codeSize < 12) {
366
- codeSize++;
367
- }
368
- }
369
- return output;
370
- }
371
- ;
372
- doImg(img, url) {
373
- let TEMP_CANVAS_CTX = this.ctx, TEMP_CANVAS = this.canvasTool, GIF_INFO = this.gifInfo;
374
- let FRAME_LIST = this.gifCache[url].frameList;
375
- if (!this.ctx) {
376
- TEMP_CANVAS_CTX = this.ctx = TEMP_CANVAS.getContext('2d');
377
- }
378
- const currIdx = FRAME_LIST.length, ct = img.lctFlag ? img.lct : GIF_INFO.gct;
379
- if (currIdx > 0) {
380
- if (this.LAST_DISPOSA_METHOD === 3) {
381
- if (this.CURRENT_FRAME_INDEX !== null && this.CURRENT_FRAME_INDEX > -1) {
382
- TEMP_CANVAS_CTX.putImageData(FRAME_LIST[this.CURRENT_FRAME_INDEX].data, 0, 0);
383
- }
384
- else {
385
- TEMP_CANVAS_CTX.clearRect(0, 0, TEMP_CANVAS.width, TEMP_CANVAS.height);
386
- }
387
- }
388
- else {
389
- this.CURRENT_FRAME_INDEX = currIdx - 1;
390
- }
391
- if (this.LAST_DISPOSA_METHOD === 2) {
392
- TEMP_CANVAS_CTX.clearRect(0, 0, TEMP_CANVAS.width, TEMP_CANVAS.height);
393
- }
394
- }
395
- let imgData = TEMP_CANVAS_CTX.getImageData(img.leftPos, img.topPos, img.width, img.height);
396
- img.pixels.forEach((pixel, i) => {
397
- if (pixel !== this.TRANSPARENCY) {
398
- imgData.data[i * 4 + 0] = ct[pixel][0];
399
- imgData.data[i * 4 + 1] = ct[pixel][1];
400
- imgData.data[i * 4 + 2] = ct[pixel][2];
401
- imgData.data[i * 4 + 3] = 255;
402
- }
403
- });
404
- TEMP_CANVAS_CTX.putImageData(imgData, img.leftPos, img.topPos);
405
- }
406
- ;
407
- byteToBitArr(bite) {
408
- let byteArr = [];
409
- for (let i = 7; i >= 0; i--) {
410
- byteArr.push(!!(bite & (1 << i)));
411
- }
412
- return byteArr;
413
- }
414
- ;
415
- bitsToNum(ba) {
416
- return ba.reduce(function (s, n) {
417
- return s * 2 + Number(n);
418
- }, 0);
419
- }
420
- ;
421
- parseCT(size, stream) {
422
- let ct = [];
423
- for (let i = 0; i < size; i++) {
424
- ct.push(stream.readBytes(3));
425
- }
426
- return ct;
427
- }
428
- ;
429
- }
430
- exports.SLUCanvasGif = SLUCanvasGif;
431
- class Stream {
432
- constructor(data) {
433
- this.pos = 0;
434
- this.data = data;
435
- this.len = data.length;
436
- this.pos = 0;
437
- }
438
- readByte() {
439
- if (this.pos >= this.data.length) {
440
- throw new Error('Attempted to read past end of stream.');
441
- }
442
- if (this.data instanceof Uint8Array)
443
- return this.data[this.pos++];
444
- else
445
- return this.data.charCodeAt(this.pos++) & 0xFF;
446
- }
447
- ;
448
- readBytes(n) {
449
- let bytes = [];
450
- for (let i = 0; i < n; i++) {
451
- bytes.push(this.readByte());
452
- }
453
- return bytes;
454
- }
455
- ;
456
- read(n) {
457
- let chars = '';
458
- for (let i = 0; i < n; i++) {
459
- chars += String.fromCharCode(this.readByte());
460
- }
461
- return chars;
462
- }
463
- ;
464
- readUnsigned() {
465
- let unsigned = this.readBytes(2);
466
- return (unsigned[1] << 8) + unsigned[0];
467
- }
468
- ;
469
- }
470
- ;
471
- //# sourceMappingURL=slu-canvas-gif.js.map