diff --git a/frontend/src/App.svelte b/frontend/src/App.svelte
index 6c970c3..e9ca3bf 100644
--- a/frontend/src/App.svelte
+++ b/frontend/src/App.svelte
@@ -9,15 +9,16 @@
import { LoadedFile } from './types/file'
import "carbon-components-svelte/css/all.css"
- import { Tabs, Tab, TabContent, Theme, Button, Modal, Truncate, ButtonSet } from "carbon-components-svelte"
+ import { Tabs, Tab, TabContent, Theme, Button, Modal, Truncate, ButtonSet, NumberInput } from "carbon-components-svelte"
import { ComposedModal } from "carbon-components-svelte"
import { OverflowMenu, OverflowMenuItem } from "carbon-components-svelte"
- import { Close, Erase, PaintBrushAlt, RainDrop, Redo, Select_01, Undo } from "carbon-icons-svelte"
+ import { Close, Erase, PaintBrushAlt, RainDrop, Redo, Select_01, Undo, Scale } from "carbon-icons-svelte"
import StackPreview from './sections/StackPreview.svelte'
import type { Canvas } from './types/canvas'
import { BrushTool, EraserTool, FillTool, type Tool } from './types/tools';
+ import BrushSize from './components/BrushSize.svelte';
let theme: 'white'|'g10'|'g80'|'g90'|'g100' = 'g90'
@@ -38,6 +39,7 @@
let toolErase = new EraserTool()
let toolBrush = new BrushTool()
let currentTool: Tool = toolBrush
+ let brushSize: number = 1
function swapTool(tool: Tool) {
currentTool = tool
@@ -104,6 +106,13 @@
+
{#each files as file, index}
selectFile(file, index)}>
@@ -116,7 +125,7 @@
{#each files as file}
-
+
{/each}
@@ -173,10 +182,21 @@
display: flex;
flex-direction: column;
justify-content: flex-start;
+ padding-top: 2rem;
+ }
+ .toolsettings {
+ display: flex;
+ flex-direction: row;
+ justify-content: flex-start;
+ align-items: center;
+ min-height: 2rem;
+ }
+ :global(menu.toolsettings > .bx--form-item) {
+ flex: initial;
}
.middle {
display: grid;
- grid-template-rows: auto minmax(0, 1fr);
+ grid-template-rows: auto auto minmax(0, 1fr);
}
.tab {
display: inline-grid;
@@ -193,4 +213,14 @@
overflow: hidden;
text-overflow: ellipsis;
}
+ :global(.middle .bx--tabs__nav-link) {
+ height: 1rem;
+ }
+ :global(.middle .bx--tabs) {
+ min-height: 1.4rem;
+ }
+ :global(.middle .bx--tabs .bx--btn) {
+ padding-top: 0;
+ top: -.25rem;
+ }
diff --git a/frontend/src/components/BrushSize.svelte b/frontend/src/components/BrushSize.svelte
new file mode 100644
index 0000000..f8e5eab
--- /dev/null
+++ b/frontend/src/components/BrushSize.svelte
@@ -0,0 +1,34 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/frontend/src/sections/Editor2D.svelte b/frontend/src/sections/Editor2D.svelte
index 7f9973d..3c0f30a 100644
--- a/frontend/src/sections/Editor2D.svelte
+++ b/frontend/src/sections/Editor2D.svelte
@@ -27,6 +27,7 @@
export let primaryColorIndex: number
export let secondaryColorIndex: number
+ export let brushSize: number
let rootCanvas: HTMLCanvasElement
let overlayCanvas: HTMLCanvasElement = document.createElement('canvas')
@@ -208,9 +209,9 @@
if (e.button === 0) {
if (currentTool instanceof BrushTool) {
- currentTool.pointerDown({file, brushSize: 3, colorIndex: primaryColorIndex}, {x: mousePixelX, y: mousePixelY, id: e.button })
+ currentTool.pointerDown({file, brushSize, colorIndex: primaryColorIndex}, {x: mousePixelX, y: mousePixelY, id: e.button })
} else if (currentTool instanceof EraserTool) {
- currentTool.pointerDown({file, brushSize: 3}, {x: mousePixelX, y: mousePixelY, id: e.button })
+ currentTool.pointerDown({file, brushSize}, {x: mousePixelX, y: mousePixelY, id: e.button })
} else if (currentTool instanceof FillTool) {
currentTool.pointerDown({file, colorIndex: primaryColorIndex}, {x: mousePixelX, y: mousePixelY, id: e.button })
} else {
@@ -268,9 +269,9 @@
if (buttons.has(0)) {
if (currentTool.isActive()) {
if (currentTool instanceof BrushTool) {
- currentTool.pointerMove({file, brushSize: 3, colorIndex: primaryColorIndex}, {x: mousePixelX, y: mousePixelY, id: 0 })
+ currentTool.pointerMove({file, brushSize, colorIndex: primaryColorIndex}, {x: mousePixelX, y: mousePixelY, id: 0 })
} else if (currentTool instanceof EraserTool) {
- currentTool.pointerMove({file, brushSize: 3}, {x: mousePixelX, y: mousePixelY, id: 0 })
+ currentTool.pointerMove({file, brushSize}, {x: mousePixelX, y: mousePixelY, id: 0 })
} else if (currentTool instanceof FillTool) {
currentTool.pointerMove({file, colorIndex: primaryColorIndex}, {x: mousePixelX, y: mousePixelY, id: 0 })
} else {
diff --git a/frontend/src/sections/Palette.svelte b/frontend/src/sections/Palette.svelte
index ed213ee..6e54a6f 100644
--- a/frontend/src/sections/Palette.svelte
+++ b/frontend/src/sections/Palette.svelte
@@ -31,6 +31,7 @@