diff --git a/frontend/src/App.svelte b/frontend/src/App.svelte
index d741d47..2312ed2 100644
--- a/frontend/src/App.svelte
+++ b/frontend/src/App.svelte
@@ -30,6 +30,7 @@
import ThemeSettingsModal from './components/ThemeSettingsModal.svelte';
import BackgroundSettingsModal from './components/BackgroundSettingsModal.svelte';
import New from './sections/New.svelte';
+ import PreviewSettingsModal from './components/PreviewSettingsModal.svelte';
let theme: 'white'|'g10'|'g80'|'g90'|'g100' = 'g90'
@@ -88,6 +89,7 @@
let importCanvas: Canvas = null
let showPreview: boolean = false
+ let showPreviewSettings: boolean = false
let showGridSettings: boolean = false
let showCheckerboardSettings: boolean = false
let showThemeSettings: boolean = false
@@ -104,6 +106,11 @@
let checkerboardSize: number = 8
let checkerboardColor1: string = '#888888'
let checkerboardColor2: string = '#444444'
+
+ let previewShowBaseSizeOutline: boolean = true
+ let previewBaseSizeOutlineColor: string = '#00FFFF77'
+ let previewShowSizeOutline: boolean = true
+ let previewSizeOutlineColor: string = '#FFFF0077'
let backgroundColor: string = '#111111'
@@ -257,6 +264,7 @@
Windows
showPreview = true}/>
+ showPreviewSettings = true}/>
@@ -370,9 +378,24 @@
noPadding
bind:open={showPreview}
>
-
+
{/if}
+ {#if showPreviewSettings}
+
+ {/if}
{#if showGridSettings}
{/if}
diff --git a/frontend/src/components/PreviewSettingsModal.svelte b/frontend/src/components/PreviewSettingsModal.svelte
new file mode 100644
index 0000000..29cb2bd
--- /dev/null
+++ b/frontend/src/components/PreviewSettingsModal.svelte
@@ -0,0 +1,67 @@
+
+
+
+ open = false}
+ on:click:button--secondary={() => open = false}
+ on:submit={() => {
+ showBaseSizeOutline = pendingShowBaseSizeOutline
+ baseSizeOutlineColor = pendingBaseSizeOutlineColor
+ showSizeOutline = pendingShowSizeOutline
+ sizeOutlineColor = pendingSizeOutlineColor
+ open = false
+ }}
+ primaryButtonDisabled={!changed}
+>
+
+
+
+ Show Base Size Outline
+
+
+
+
+
+ Show Size Outline
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/frontend/src/sections/StackPreview.svelte b/frontend/src/sections/StackPreview.svelte
index bb56ef4..fcd46ca 100644
--- a/frontend/src/sections/StackPreview.svelte
+++ b/frontend/src/sections/StackPreview.svelte
@@ -15,6 +15,11 @@
let zoom: number = 1
let layerDistance: number = 1
+ export let baseSizeOutlineColor: string = '#00FFFF77'
+ export let showBaseSizeOutline: boolean = true
+ export let sizeOutlineColor: string = '#FFFF0077'
+ export let showSizeOutline: boolean = true
+
let canvas: HTMLCanvasElement
function draw() {
if (!canvas) return
@@ -42,7 +47,29 @@
for (let [groupName, group] of Object.entries(file.data.groups)) {
for (let [animationName, animation] of Object.entries(group.animations)) {
for (let frame of animation.frames) {
- for (let layer of frame.layers) {
+ for (let layerIndex = 0; layerIndex < frame.layers.length; layerIndex++) {
+ let layer = frame.layers[layerIndex]
+ if (layerIndex === 0) {
+ if (showBaseSizeOutline) {
+ ctx.save()
+ ctx.translate(x, y)
+ ctx.scale(zoom, zoom)
+ ctx.strokeStyle = baseSizeOutlineColor
+ ctx.lineWidth = 1
+ ctx.strokeRect(-file.data.width/2, -file.data.height/2, file.data.width, file.data.height)
+ ctx.restore()
+ }
+ if (showSizeOutline) {
+ ctx.save()
+ ctx.translate(x, y)
+ ctx.scale(zoom, zoom)
+ ctx.rotate(rotation * Math.PI / 180)
+ ctx.strokeStyle = sizeOutlineColor
+ ctx.lineWidth = 1
+ ctx.strokeRect(-file.data.width/2, -file.data.height/2, file.data.width, file.data.height)
+ ctx.restore()
+ }
+ }
ctx.save()
ctx.translate(x, y)
ctx.scale(zoom, zoom)