Skip to content

Commit c392454

Browse files
committed
rewriting save file
1 parent 24ece08 commit c392454

File tree

3 files changed

+41
-6
lines changed

3 files changed

+41
-6
lines changed

src/pg/inputPixelEditor/__examples__/basic/basic.ts

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ export default class XPgInputPixelEditorBasic extends HTMLElement {
124124
suggestedName: 'Canvas',
125125
types: [{
126126
description: 'SVG Document',
127-
accept: {'image/svg+xml': ['.svg']},
127+
accept: { 'image/svg+xml': ['.svg'] },
128128
}],
129129
});
130130
const writable = await handle.createWritable();
@@ -143,7 +143,7 @@ export default class XPgInputPixelEditorBasic extends HTMLElement {
143143
suggestedName: 'CanvasName',
144144
types: [{
145145
description: 'SVG Document',
146-
accept: {'image/svg+xml': ['.svg']},
146+
accept: { 'image/svg+xml': ['.svg'] },
147147
}],
148148
});
149149
const writable = await handle.createWritable();
@@ -184,7 +184,7 @@ export default class XPgInputPixelEditorBasic extends HTMLElement {
184184
];
185185
this.$layers.addEventListener('action', (e: any) => {
186186
const { getColumn, getRows, key } = e.detail;
187-
switch(key) {
187+
switch (key) {
188188
case 'select':
189189
getRows().forEach(({ getColumn }) => {
190190
getColumn('selected').value = false;
@@ -259,15 +259,28 @@ export default class XPgInputPixelEditorBasic extends HTMLElement {
259259
});
260260
}));
261261
this.$colors.addEventListener('action', (e: any) => {
262-
const { getColumn, getRows, key } = e.detail;
263-
switch(key) {
262+
const { getColumn, getRows, key, value, index } = e.detail;
263+
const [r, g, b, a] = this.$input.getColor(index);
264+
switch (key) {
264265
case 'select':
265266
getRows().forEach(({ getColumn }) => {
266267
getColumn('selected').value = false;
267268
});
268269
getColumn('selected').value = true;
269270
this.$input.selectColor(getColumn('select').value);
270271
break;
272+
case 'r':
273+
this.$input.setColor(index, value, g, b, a);
274+
break;
275+
case 'g':
276+
this.$input.setColor(index, r, value, b, a);
277+
break;
278+
case 'b':
279+
this.$input.setColor(index, r, g, value, a);
280+
break;
281+
case 'a':
282+
this.$input.setColor(index, r, g, b, value);
283+
break;
271284
}
272285
});
273286
this.$addColor.addEventListener('click', () => {
@@ -295,7 +308,7 @@ export default class XPgInputPixelEditorBasic extends HTMLElement {
295308
if (files.length !== 1) {
296309
throw new Error('select only 1 file');
297310
}
298-
switch(files[0].type) {
311+
switch (files[0].type) {
299312
case 'image/svg+xml':
300313
// Read the file
301314
const reader = new FileReader();

src/pg/inputPixelEditor/inputPixelEditor.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import createLayer from './utils/createLayer';
1717
import diffGrid from './utils/diffGrid';
1818
import { getGuides } from './utils/getGuides';
1919
import { getOutline } from './utils/getOutline';
20+
import { getGridColorIndexes } from './utils/getGridColorIndexes';
2021

2122
type Color = [number, number, number, number];
2223

@@ -1042,6 +1043,10 @@ export default class PgInputPixelEditor extends HTMLElement {
10421043
this.#colors.splice(index, 1);
10431044
}
10441045

1046+
getColor(index) {
1047+
return this.#colors[index];
1048+
}
1049+
10451050
setColor(index, r, g, b, a) {
10461051
this.#colors[index] = [r, g, b, a];
10471052
}
@@ -1094,6 +1099,10 @@ export default class PgInputPixelEditor extends HTMLElement {
10941099

10951100
}
10961101

1102+
getLayerColorIndexes() {
1103+
return getGridColorIndexes(this.#data[this.#layer]);
1104+
}
1105+
10971106
getLayerPaths() {
10981107
return this.#data.map(layer => bitmaskToPath(layer, { scale: 1 }));
10991108
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
export function getGridColorIndexes(arr: number[][]) {
2+
const seen = new Set();
3+
const result: number[] = [];
4+
for (const innerArray of arr) {
5+
for (const value of innerArray) {
6+
if (!seen.has(value)) {
7+
seen.add(value);
8+
result.push(value);
9+
}
10+
}
11+
}
12+
return result;
13+
}

0 commit comments

Comments
 (0)