From a49ed49d5d283e3f4b83b183e9fca561c6f646da Mon Sep 17 00:00:00 2001 From: Viktor Vaczi Date: Sun, 22 Mar 2026 12:48:05 +0100 Subject: [PATCH] wasm: validate kicad hi-dpi scaling --- docker/build.sh | 3 +- kicad | 2 +- tests/apps/Makefile.wasm | 14 +- tests/apps/kicad/pcbnew.html | 5 +- .../retinascale/retinascale_test.cpp | 109 ++++++ tests/e2e/retinascale.spec.ts | 16 + tests/kicad/pcbnew.spec.ts | 345 +++++++++++++++++- tests/package.json | 2 +- tests/scripts/setup-kicad-wasm.sh | 11 +- tests/wizard-04-finish-headless.png | Bin 0 -> 122508 bytes wasm/kiplatform/ui.cpp | 11 +- wxwidgets | 2 +- 12 files changed, 490 insertions(+), 30 deletions(-) create mode 100644 tests/apps/standalone/retinascale/retinascale_test.cpp create mode 100644 tests/e2e/retinascale.spec.ts create mode 100644 tests/wizard-04-finish-headless.png diff --git a/docker/build.sh b/docker/build.sh index 30f8561..290112a 100755 --- a/docker/build.sh +++ b/docker/build.sh @@ -56,7 +56,8 @@ docker compose -f docker/docker-compose.yml exec kicad-wasm-builder \ bash -c "mkdir -p /workspace/output && \ cp /workspace/build-wasm/kicad-pcbnew/pcbnew/pcbnew.{js,wasm,wasm.debug.wasm,wasm.map,worker.js} /workspace/output/ 2>/dev/null || \ cp /workspace/build-wasm/kicad-pcbnew/pcbnew/pcbnew.{js,wasm} /workspace/output/; \ - cp /workspace/build-wasm/kicad-pcbnew/resources/images.tar.gz /workspace/output/ 2>/dev/null || true" + cp /workspace/build-wasm/kicad-pcbnew/resources/images.tar.gz /workspace/output/ 2>/dev/null || true; \ + cp /workspace/build-wasm/wxwidgets/build/wasm/wx.js /workspace/output/ 2>/dev/null || true" # Inject dynCall shims into pcbnew.js # This fixes "dynCall_* is not defined" errors in Emscripten 4.x diff --git a/kicad b/kicad index 4ddb9b4..9b008c1 160000 --- a/kicad +++ b/kicad @@ -1 +1 @@ -Subproject commit 4ddb9b47f5f9dc3f30ed6d59778e7bc407fdc3cd +Subproject commit 9b008c10559e6ca36226880580a34a2b3ab1e565 diff --git a/tests/apps/Makefile.wasm b/tests/apps/Makefile.wasm index f9b319a..a8ca26e 100644 --- a/tests/apps/Makefile.wasm +++ b/tests/apps/Makefile.wasm @@ -146,7 +146,8 @@ all: minimal_test.html \ $(S)/maximize/maximize_test.html \ $(S)/earlysize/earlysize_test.html \ $(S)/threadpool/threadpool_test.html \ - $(S)/logerror/logerror_test.html + $(S)/logerror/logerror_test.html \ + $(S)/retinascale/retinascale_test.html # Main test app (uses GL) minimal_test.o: minimal_test.cpp @@ -493,8 +494,17 @@ earlysize: $(S)/earlysize/earlysize_test.html threadpool: $(S)/threadpool/threadpool_test.html logerror: $(S)/logerror/logerror_test.html +# Retina/HiDPI scaling test +$(S)/retinascale/retinascale_test.o: $(S)/retinascale/retinascale_test.cpp + $(CXX) -c $(CXXFLAGS) $< -o $@ + +$(S)/retinascale/retinascale_test.html: $(S)/retinascale/retinascale_test.o $(WX_CORE_LIB) + $(CXX) $< $(LDFLAGS_NOGL) --pre-js $(JS) --shell-file $(HTML) -o $@ + +retinascale: $(S)/retinascale/retinascale_test.html + clean: rm -f minimal_test.o minimal_test.html minimal_test.js minimal_test.wasm rm -f $(S)/*/*.o $(S)/*/*.html $(S)/*/*.js $(S)/*/*.wasm -.PHONY: all clean menu clipboard filedialog layout aui toolbar grid dialog timer tree dataview htmlwin stc print dnd propgrid pickers collapsible listctrl infobar dataviewvirtual auinotebook wizard gridedit calendar gridrenderers printpreview bitmapbuttons specialized validators ownerdrawn popup xml wasmedge fontenum textdecor bitmask regions maximize earlysize threadpool logerror +.PHONY: all clean menu clipboard filedialog layout aui toolbar grid dialog timer tree dataview htmlwin stc print dnd propgrid pickers collapsible listctrl infobar dataviewvirtual auinotebook wizard gridedit calendar gridrenderers printpreview bitmapbuttons specialized validators ownerdrawn popup xml wasmedge fontenum textdecor bitmask regions maximize earlysize threadpool logerror retinascale diff --git a/tests/apps/kicad/pcbnew.html b/tests/apps/kicad/pcbnew.html index c3ea906..240c087 100644 --- a/tests/apps/kicad/pcbnew.html +++ b/tests/apps/kicad/pcbnew.html @@ -79,11 +79,10 @@ var canvas = document.createElement('canvas'); canvas.id = 'canvas'; canvas.style.display = 'none'; - // Set both CSS display size and internal pixel resolution + // wx.js owns the backing-store size via setWindowRect(); keep the HTML + // shell responsible only for the CSS size. var width = window.innerWidth; var height = window.innerHeight; - canvas.width = width; - canvas.height = height; canvas.style.width = width + 'px'; canvas.style.height = height + 'px'; canvas.oncontextmenu = function() { event.preventDefault(); }; diff --git a/tests/apps/standalone/retinascale/retinascale_test.cpp b/tests/apps/standalone/retinascale/retinascale_test.cpp new file mode 100644 index 0000000..4323fc3 --- /dev/null +++ b/tests/apps/standalone/retinascale/retinascale_test.cpp @@ -0,0 +1,109 @@ +// Retina/HiDPI Scaling Test +// Verifies that bitmaps render at correct logical pixel sizes regardless of +// display scale factor. Icons should appear the same size on 1x and 2x displays. + +#include "wx/wx.h" +#include "wx/dcmemory.h" + +// Create a colored icon bitmap at the given size with scaleFactor=1.0 +// (matching how KiCad creates toolbar icons via KiScaledBitmap) +wxBitmap CreateTestIcon(const wxColour& color, int size) +{ + wxBitmap bmp(size, size); + wxMemoryDC dc(bmp); + + dc.SetBackground(wxBrush(wxColour(240, 240, 240))); + dc.Clear(); + + dc.SetPen(wxPen(*wxBLACK, 1)); + dc.SetBrush(wxBrush(color)); + dc.DrawRectangle(1, 1, size - 2, size - 2); + + // Draw a diagonal cross to make scaling visible + dc.SetPen(wxPen(color, 2)); + dc.DrawLine(2, 2, size - 2, size - 2); + dc.DrawLine(size - 2, 2, 2, size - 2); + + return bmp; +} + +class RetinaScaleFrame : public wxFrame +{ +public: + RetinaScaleFrame() : wxFrame(nullptr, wxID_ANY, "Retina Scale Test", + wxDefaultPosition, wxSize(800, 600)) + { + // Log scale factor info + double contentSF = GetContentScaleFactor(); + double dpiSF = GetDPIScaleFactor(); + wxLogMessage("ContentScaleFactor: %.1f, DPIScaleFactor: %.1f", contentSF, dpiSF); + + wxPanel* panel = new wxPanel(this); + wxBoxSizer* mainSizer = new wxBoxSizer(wxVERTICAL); + + // Create a toolbar with icons at different sizes + wxToolBar* toolbar = CreateToolBar(); + toolbar->SetName("toolbar"); + + wxBitmap icon16 = CreateTestIcon(*wxRED, 16); + wxBitmap icon24 = CreateTestIcon(*wxBLUE, 24); + wxBitmap icon32 = CreateTestIcon(*wxGREEN, 32); + + toolbar->AddTool(1001, "Icon16", icon16, "16px icon"); + toolbar->AddTool(1002, "Icon24", icon24, "24px icon"); + toolbar->AddTool(1003, "Icon32", icon32, "32px icon"); + toolbar->Realize(); + + // Info label + wxString info = wxString::Format( + "Scale: content=%.1f dpi=%.1f\n" + "Icons should be 16, 24, 32 logical pixels wide respectively.\n" + "Below: bitmap buttons with the same icons for comparison.", + contentSF, dpiSF); + + wxStaticText* label = new wxStaticText(panel, wxID_ANY, info); + label->SetName("info"); + mainSizer->Add(label, 0, wxALL, 10); + + // Bitmap buttons row for comparison + wxBoxSizer* btnSizer = new wxBoxSizer(wxHORIZONTAL); + + wxBitmapButton* btn16 = new wxBitmapButton(panel, wxID_ANY, icon16); + btn16->SetName("btn16"); + btnSizer->Add(btn16, 0, wxALL, 5); + + wxBitmapButton* btn24 = new wxBitmapButton(panel, wxID_ANY, icon24); + btn24->SetName("btn24"); + btnSizer->Add(btn24, 0, wxALL, 5); + + wxBitmapButton* btn32 = new wxBitmapButton(panel, wxID_ANY, icon32); + btn32->SetName("btn32"); + btnSizer->Add(btn32, 0, wxALL, 5); + + mainSizer->Add(btnSizer, 0, wxLEFT, 5); + + // Reference line: a static text showing expected sizes + wxStaticText* refLabel = new wxStaticText(panel, wxID_ANY, + "If scaling is correct, the red icon above should be ~16px, " + "blue ~24px, green ~32px (logical pixels)."); + refLabel->SetName("reference"); + mainSizer->Add(refLabel, 0, wxALL, 10); + + panel->SetSizer(mainSizer); + + wxLogMessage("RetinaScaleFrame created successfully"); + } +}; + +class RetinaScaleApp : public wxApp +{ +public: + bool OnInit() override + { + RetinaScaleFrame* frame = new RetinaScaleFrame(); + frame->Show(true); + return true; + } +}; + +wxIMPLEMENT_APP(RetinaScaleApp); diff --git a/tests/e2e/retinascale.spec.ts b/tests/e2e/retinascale.spec.ts new file mode 100644 index 0000000..c4ff51f --- /dev/null +++ b/tests/e2e/retinascale.spec.ts @@ -0,0 +1,16 @@ +// Retina/HiDPI Scaling Test - Verifies bitmaps render at correct logical pixel sizes +import { test, expect, tryLoadApp } from './utils/fixtures'; + +test.describe('Retina Scale Tests', () => { + + test('Bitmap icons render at correct logical size', async ({ page, testLogger }) => { + await page.goto('/standalone/retinascale/retinascale_test.html'); + const loaded = await tryLoadApp(page); + + await page.screenshot({ path: 'test-results/retinascale-01-loaded.png', fullPage: true }); + + expect(loaded, 'Retina scale test app should load').toBe(true); + expect(testLogger.errors.filter(e => !e.includes('favicon'))).toHaveLength(0); + }); + +}); diff --git a/tests/kicad/pcbnew.spec.ts b/tests/kicad/pcbnew.spec.ts index 1af1e38..b576568 100644 --- a/tests/kicad/pcbnew.spec.ts +++ b/tests/kicad/pcbnew.spec.ts @@ -1,3 +1,6 @@ +import * as fs from 'fs'; +import * as path from 'path'; +import type { Page } from '@playwright/test'; import { test, expect } from './fixtures'; import { clickByLabel } from '../e2e/utils/element-tracker'; @@ -5,44 +8,352 @@ import { clickByLabel } from '../e2e/utils/element-tracker'; * PCBnew WASM E2E Tests */ +const PCBNEW_REFERENCE = path.resolve(__dirname, '../wizard-04-finish-headless.png'); +const REFERENCE_REGIONS = [ + { name: 'header', x: 0, y: 0, width: 1280, height: 90, maxDiffRatio: 0.12, maxMeanChannelDiff: 12 }, +] as const; + +type CanvasMetrics = { + dpr: number; + mainCanvas: null | { + width: number; + height: number; + rectWidth: number; + rectHeight: number; + }; + glCanvas: null | { + id: string; + width: number; + height: number; + rectWidth: number; + rectHeight: number; + viewport: number[] | null; + }; +}; + +type RegistryMetrics = { + elementStats: null | { + total: number; + byType: Record; + }; + renderedStats: null | { + total: number; + byType: Record; + }; + toolbars: Array<{ + id: string; + typeName: string; + screenX: number; + screenY: number; + width: number; + height: number; + label: string; + name: string; + }>; + auiParts: Array<{ + id: string; + subType: string; + label: string; + screenX: number; + screenY: number; + width: number; + height: number; + }>; +}; + +type ReferenceComparison = { + name: string; + actualWidth: number; + actualHeight: number; + referenceWidth: number; + referenceHeight: number; + diffPixels: number; + diffRatio: number; + meanChannelDiff: number; +}; + +type ReferenceRegion = typeof REFERENCE_REGIONS[number]; + +async function compareToReference( + page: Page, + actualPng: Buffer, + referencePath: string, + region: ReferenceRegion +): Promise { + const referencePng = fs.readFileSync(referencePath); + + return page.evaluate(async ({ actualBase64, referenceBase64, crop }) => { + const loadImage = async (base64: string): Promise => { + const image = new Image(); + image.src = `data:image/png;base64,${base64}`; + await image.decode(); + return image; + }; + + const [actual, reference] = await Promise.all([ + loadImage(actualBase64), + loadImage(referenceBase64), + ]); + + if (actual.width !== reference.width || actual.height !== reference.height) { + return { + name: crop.name, + actualWidth: actual.width, + actualHeight: actual.height, + referenceWidth: reference.width, + referenceHeight: reference.height, + diffPixels: Number.POSITIVE_INFINITY, + diffRatio: Number.POSITIVE_INFINITY, + meanChannelDiff: Number.POSITIVE_INFINITY, + }; + } + + const canvas = document.createElement('canvas'); + canvas.width = crop.width; + canvas.height = crop.height; + + const context = canvas.getContext('2d', { willReadFrequently: true }); + + if (!context) { + throw new Error('2D canvas context unavailable for screenshot comparison'); + } + + context.drawImage(actual, crop.x, crop.y, crop.width, crop.height, 0, 0, crop.width, crop.height); + const actualData = context.getImageData(0, 0, canvas.width, canvas.height).data; + + context.clearRect(0, 0, canvas.width, canvas.height); + context.drawImage(reference, crop.x, crop.y, crop.width, crop.height, 0, 0, crop.width, crop.height); + const referenceData = context.getImageData(0, 0, canvas.width, canvas.height).data; + + let diffPixels = 0; + let totalChannelDiff = 0; + + for (let i = 0; i < actualData.length; i += 4) { + const dr = Math.abs(actualData[i] - referenceData[i]); + const dg = Math.abs(actualData[i + 1] - referenceData[i + 1]); + const db = Math.abs(actualData[i + 2] - referenceData[i + 2]); + const da = Math.abs(actualData[i + 3] - referenceData[i + 3]); + const maxDiff = Math.max(dr, dg, db, da); + + totalChannelDiff += dr + dg + db + da; + + if (maxDiff > 16) { + diffPixels += 1; + } + } + + return { + name: crop.name, + actualWidth: actual.width, + actualHeight: actual.height, + referenceWidth: reference.width, + referenceHeight: reference.height, + diffPixels, + diffRatio: diffPixels / (canvas.width * canvas.height), + meanChannelDiff: totalChannelDiff / actualData.length, + }; + }, { + actualBase64: actualPng.toString('base64'), + referenceBase64: referencePng.toString('base64'), + crop: region, + }); +} + +async function getCanvasMetrics(page: Page): Promise { + return page.evaluate(() => { + const dpr = window.devicePixelRatio || 1; + const mainCanvas = document.querySelector('#canvas') as HTMLCanvasElement | null; + const glCanvas = + Array.from(document.querySelectorAll('[id^="glcanvas-"]')) + .map((canvas) => canvas as HTMLCanvasElement) + .find((canvas) => { + const rect = canvas.getBoundingClientRect(); + const style = window.getComputedStyle(canvas); + return style.display !== 'none' && rect.width > 0 && rect.height > 0; + }) ?? + document.querySelector('[id^="glcanvas-"]') as HTMLCanvasElement | null; + + const mainRect = mainCanvas?.getBoundingClientRect(); + const glRect = glCanvas?.getBoundingClientRect(); + const gl = + glCanvas?.getContext('webgl2') || + glCanvas?.getContext('webgl'); + const viewport = gl ? Array.from(gl.getParameter(gl.VIEWPORT) as Int32Array | number[]) : null; + + return { + dpr, + mainCanvas: mainCanvas && mainRect ? { + width: mainCanvas.width, + height: mainCanvas.height, + rectWidth: mainRect.width, + rectHeight: mainRect.height, + } : null, + glCanvas: glCanvas && glRect ? { + id: glCanvas.id, + width: glCanvas.width, + height: glCanvas.height, + rectWidth: glRect.width, + rectHeight: glRect.height, + viewport, + } : null, + }; + }); +} + +async function getRegistryMetrics(page: Page): Promise { + return page.evaluate(() => { + const registry = window.wxElementRegistry; + + if (!registry) { + return { + elementStats: null, + renderedStats: null, + toolbars: [], + auiParts: [], + }; + } + + const allElements = registry.findAll({ visible: true }); + const toolbars = allElements + .filter((element) => /ToolBar/.test(element.typeName)) + .map((element) => ({ + id: element.id, + typeName: element.typeName, + screenX: element.screenX, + screenY: element.screenY, + width: element.width, + height: element.height, + label: element.label, + name: element.name, + })); + + const auiParts = registry.findAllRendered + ? registry.findAllRendered({ elementType: 'auipart' }) + .map((part) => ({ + id: part.id, + subType: part.subType, + label: part.label, + screenX: part.screenX, + screenY: part.screenY, + width: part.width, + height: part.height, + })) + : []; + + return { + elementStats: registry.getStats(), + renderedStats: registry.getRenderedStats ? registry.getRenderedStats() : null, + toolbars, + auiParts, + }; + }); +} + test.describe('PCBnew WASM', () => { test.beforeEach(async ({ page }) => { await page.goto('/kicad/pcbnew.html'); }); - test('click through setup wizard to load PCBnew', async ({ page, testLogger }) => { - // Wait for main canvas to be visible (KiCad takes time to initialize) + test('click through setup wizard to load PCBnew', async ({ page }) => { await expect(page.locator('#canvas')).toBeVisible({ timeout: 90000 }); + await page.waitForFunction(() => !!window.wxElementRegistry, null, { timeout: 90000 }); await page.waitForTimeout(2000); - // Screenshot initial wizard state - await page.screenshot({ path: 'test-results/wizard-00-initial.png' }); + await page.screenshot({ path: 'test-results/wizard-00-initial.png', scale: 'device' }); - // Click through wizard - try Next >, then Finish if not found for (let i = 1; i <= 10; i++) { let clicked = await clickByLabel(page, 'Next >'); - if (clicked) { - // Continue to next page - } else { - // Try Finish button + + if (!clicked) { clicked = await clickByLabel(page, 'Finish'); + if (clicked) { await page.waitForTimeout(500); - await page.screenshot({ path: `test-results/wizard-${String(i).padStart(2, '0')}-finish.png` }); - break; - } else { - break; + await page.screenshot({ + path: `test-results/wizard-${String(i).padStart(2, '0')}-finish.png`, + scale: 'device' + }); } + + break; } + await page.waitForTimeout(500); - await page.screenshot({ path: `test-results/wizard-${String(i).padStart(2, '0')}.png` }); + await page.screenshot({ + path: `test-results/wizard-${String(i).padStart(2, '0')}.png`, + scale: 'device' + }); } - // Wait for PCBnew to fully load await page.waitForTimeout(2000); - await page.screenshot({ path: 'test-results/pcbnew-loaded.png' }); + const metrics = await getCanvasMetrics(page); + const registryMetrics = await getRegistryMetrics(page); + + expect(metrics.dpr).toBeGreaterThan(1); + expect(metrics.mainCanvas).not.toBeNull(); + expect(metrics.glCanvas).not.toBeNull(); + expect(registryMetrics.toolbars.length).toBeGreaterThanOrEqual(4); + + if (!metrics.mainCanvas || !metrics.glCanvas) { + throw new Error('KiCad canvases not initialized'); + } + + expect(Math.round(metrics.mainCanvas.rectWidth * metrics.dpr)).toBe(metrics.mainCanvas.width); + expect(Math.round(metrics.mainCanvas.rectHeight * metrics.dpr)).toBe(metrics.mainCanvas.height); + expect(metrics.glCanvas.rectWidth).toBeGreaterThan(800); + expect(metrics.glCanvas.rectHeight).toBeGreaterThan(500); + expect(Math.round(metrics.glCanvas.rectWidth * metrics.dpr)).toBe(metrics.glCanvas.width); + expect(Math.round(metrics.glCanvas.rectHeight * metrics.dpr)).toBe(metrics.glCanvas.height); + + const viewport = metrics.glCanvas.viewport; + expect(viewport).not.toBeNull(); + + if (!viewport) { + throw new Error('WebGL viewport unavailable'); + } + + expect(viewport[2]).toBe(metrics.glCanvas.width); + expect(viewport[3]).toBe(metrics.glCanvas.height); + + const verticalToolbars = registryMetrics.toolbars.filter((toolbar) => toolbar.height > 100); + expect(verticalToolbars).toHaveLength(2); + + for (const toolbar of verticalToolbars) { + expect(toolbar.width).toBeLessThanOrEqual(40); + } + + const appearancePane = registryMetrics.auiParts.find((part) => + part.subType === 'content' && part.label === 'Appearance' + ); + expect(appearancePane).toBeTruthy(); + + if (!appearancePane) { + throw new Error('Appearance pane metrics unavailable'); + } + + expect(appearancePane.width).toBeGreaterThanOrEqual(200); + expect(appearancePane.width).toBeLessThanOrEqual(240); + + await page.evaluate(() => { + document.documentElement.style.cursor = 'none'; + document.body.style.cursor = 'none'; + }); + + const cssScreenshot = await page.screenshot({ + path: 'test-results/pcbnew-loaded-css.png', + scale: 'css' + }); + for (const region of REFERENCE_REGIONS) { + const reference = await compareToReference(page, cssScreenshot, PCBNEW_REFERENCE, region); + + expect(reference.actualWidth).toBe(reference.referenceWidth); + expect(reference.actualHeight).toBe(reference.referenceHeight); + expect(reference.diffRatio, `${reference.name} diff ratio`).toBeLessThan(region.maxDiffRatio); + expect(reference.meanChannelDiff, `${reference.name} mean channel diff`).toBeLessThan(region.maxMeanChannelDiff); + } + + await page.screenshot({ path: 'test-results/pcbnew-loaded.png', scale: 'device' }); - // Verify PCBnew loaded const canvasCount = await page.locator('canvas').count(); expect(canvasCount).toBeGreaterThan(0); }); diff --git a/tests/package.json b/tests/package.json index d314128..d194fb3 100644 --- a/tests/package.json +++ b/tests/package.json @@ -9,7 +9,7 @@ "build-wasm": "cd apps && make -f Makefile.wasm", "serve": "npx serve apps -p 8080 -c ../serve.json", "setup:kicad": "./scripts/setup-kicad-wasm.sh", - "test:kicad": "npm run setup:kicad && playwright test --config=playwright-kicad.config.ts --project=firefox", + "test:kicad": "npm run setup:kicad && playwright test --config=playwright-kicad.config.ts --project=firefox --headed", "test:kicad:headed": "npm run setup:kicad && playwright test --config=playwright-kicad.config.ts --project=chromium --headed" }, "devDependencies": { diff --git a/tests/scripts/setup-kicad-wasm.sh b/tests/scripts/setup-kicad-wasm.sh index 06179bf..1ffaba2 100755 --- a/tests/scripts/setup-kicad-wasm.sh +++ b/tests/scripts/setup-kicad-wasm.sh @@ -43,7 +43,16 @@ fi # wxWidgets WASM JavaScript glue code (defines JS functions called from WASM) echo "Copying wxWidgets WASM glue code..." -cp "$PROJECT_ROOT/wxwidgets/build/wasm/wx.js" "$KICAD_TEST/" +if [ -f "$OUTPUT_DIR/wx.js" ]; then + cp "$OUTPUT_DIR/wx.js" "$KICAD_TEST/" +else + if docker compose -f "$PROJECT_ROOT/docker/docker-compose.yml" cp \ + kicad-wasm-builder:/workspace/build-wasm/wxwidgets/build/wasm/wx.js "$KICAD_TEST/" 2>/dev/null; then + : + else + cp "$PROJECT_ROOT/wxwidgets/build/wasm/wx.js" "$KICAD_TEST/" + fi +fi echo "KiCad WASM files copied to $KICAD_TEST" ls -lh "$KICAD_TEST" diff --git a/tests/wizard-04-finish-headless.png b/tests/wizard-04-finish-headless.png new file mode 100644 index 0000000000000000000000000000000000000000..db88ac5d13aae3d36c674a3d0397138516b8c9f3 GIT binary patch literal 122508 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

%ra_YQ0Z-1Wv$7oM`fW)Xh z6WDu$LXv`98nbS-`u#naDEzJ4qCvy;M22a9F0^u_aUqo^6P z0%Y8_sZr@~-f`=B8e2?%<>XUsv2?c3XiM6wowgmX6bO&DM5jG-&pu?&EJ733j!EUUEBFiB6qTrg=PG z^_>RwBdk}JFm2qGnGw|os9>l~o56AJ4sF33YGl6+g$zal-b1xjaVw+2Z#$d!fA*P$ zcK~xa@~yrkWvb+wr;!^7hl0dUF>vHDeT#moCesj8meS)zYc$<{73}Rm(#+Sm1Z0tj zc|X>I>u_#;D3yn-4**)b-M`gQyCdVmTjl3v`gd~W5{7+VM+PA(4uAI3eHD-%GCeL< zsr1_J%p6k?If+pneJS)w92TYVb2@SDW^W)79EB#Y{~pW)K@GC;9LFFd;Q@xOIPD3;1nc$JA#8;EJf>0}J^r0MK zi?I4~55_{7dB=ncl~`V536S9v?I12@_VB3Rc2Ra=ESRO0vY9tdCj%?}u_ci;s9#xK zjN^kq3K1%$wUuJ-$2}zS&rQQ>dZWoRJbtCVm2gwCTxo6DtLUQ|FNkxE*hxJpq)lyk ze7FrstR^04i0DZ-Dk`aE_uZSl+p8KK?zKwMb#W-(7b#QB7S`4CKGz_7YZP=%pzx80 zof9CkPL|3>IpqMMFtauMzVYaJG-@72N4%%88VDej_tScw`vD1u7T=6~3?At2`E3e6 zS?syEz0}f!7N3tJ(~uc-hrKl-Gfva5!=7Wlu);E(ad~D9Z@VJDe=+);B(ka68Ox{d zM&i2o9R9IFNkw><%nFnL>1csgqS7|M4E&H%wzWk+L+d9$z*t?&OflOzN83k(MR6BA zzj|)o+_z-+4SKeX#zUQU2Qz;3$yePv0@Uv z6QlHIS_p`)%d$o@<$L-8f3aHE89mTtydnZWRRWDic*(W{v}vH-|A{og@W;KYdxXxHKH4VhDVAX#(jF0MTW0?UudHxBX;E zS1h+9D{X-#$}FQD=O-6d2LV}x*S~=zOw!sk$ldnaa(<|_ws>y)+=_YT)%2ae*J*Yw zdoNjFFb(S5C(*CRb&7`0Vi!=9!l8PH_2DAc;Ug0@5pqMd*Nw#%rOrof=5pNqH3+C^`7`7j{3Y_bg-Y4K)Wt*> zqJqPNc=sS>%ISw!Jf<^z0bF>L#^KM0WcF`UEY0F%c=z9|El-Yq>;ohW5^P;nRQtnx z-xO^Pt-atKEgi8i8y&ld%u3_@*~&G&f-vxE7Taj-fz@;h?o0tAkFQ`ar(x)`=v=XA zBlqpC0mrVaeWBZGU)ba_1;2*N_F}HOnvCKXHoM2O{LF=OYShmpe?7I9qI^669qir7 zl3m+9I|pI^6kDldv)i=&=#5=4mtARMG6;4e*!y$Jj+&AG1_2-upk|qhgT@c4=~jW2 zH#_03%8fW3JRA?o{q<@V2E*r9VJs*m5_GrqTIgl>J&r&dP68p?_HQaZa;BUjOdXPp z$jV3jWGfU^W!MKpLDi0lXjrL1ZrG@?Az|y_Pgh5O(9%%t7ot>u#b3lNC4Mz=dKyC$ zB#vviq16lpL0#TAUXwQjz8~b5#=n-3{LaboxqQ1k|B?8;RbD@Oh{s&x>7r>>;`1B> znabCV|1eHHc!gMHT)`;tfMyTm^5j;>mjIa@1T;0f%>d)iLbct4^zTH+Ckg6i7_;0u z&+syC0Tq#hyOwsP`DBop-FZiSBHR1si~w0Dm%!jS_&T3==uPUP@8dmv>ZgN6z7rk9 z2R*kxXcMk|6iy1(LhDT5H?&}P0xo;6DE@B52f}VdMo6&|a<1i5hP0_ilJ)ah<9ZLuBH?#~)&9k0exUGXGXFi;073a`fgy!!q)^O1 zrTk$%HoCr{p;NRx8DBqTi}l!fVv_a>cUq%ZruhEvtsxdAC?21z*NQ>Q@e8eWYI?P8 zYeTE2Rdz@SMdQ_4r13W~WvP|CrN3enZ$4nRm#?sS+l1ZK7B`&P)xG~PrOm1wUCK(! zsF2ckQ_=`t{j;Q%g6&aCFC%zg)XZU>o>}Q^Wua1*o_Trmip=wOvg0I2+hB39Jnppb z$dSDTT%xf=Qzqu9Rp5S#fZel$P@B{4;vE=rQ@qO?Ndp2BTXS8NItj9%EPRcGyC1c! zGWA9Nz;hU^dmPZpxTLD*O4~3xm)8AqGLr(d=wFSX@6EuF5hV%K#$H)wI;>PK6ij0H zTBg%4zPO571f$!@uE)Aaf;|Pw$EAQGts+(-{)^aoE=%&lAOkXC+j@nx`%$Cw4F`Sc zch>Rz@hYw0uRXt{+#`OvX%qRCI%c|fggMG7&CB={fngGeMRk?23YtK#NCAK4acQeK z5SE+}1iDUmZgBcBA(AlVIjt`xDNlVR(dB1*j4%B6Io4Gcw*Z76-WBpVi(PKk!444hZps*LE zxT7DvrWzLr!(xk~XrN(zom(J+OUXZJ?N|=#t`x|AuHjSag{}RtVAs~7TJh@PEP6jh zJUP2)q+VP6W_;B80Xta4sSA*KtU3)0pybIXHooI;2{l9Wh9Z#xqhm>43A2c>5 zqpjp+K7*~*Y01Y~3Kg7wx6jTEA%EI!4*cDYG~EyBalCgq&(*8B+a;m{*({~nZ8L6G zB7)?{UFf{2txP)6_gXHOHz%@26%$(btp>x%OUJZM6kqs*a&aeVWA3VKqG=(gJtljz z71DT7Ivj-@>;WmF+H^%2U!QzUK)%EG8|F|+)+u$8l!Af+ZK54f9z43~8t(djj@KTr zlX2xoRG&UjaaYMw%@x*Ge@tDeclfR1crO19;a33)0xjmL5m~^C;4ZC~p4X$BR*5vA zCf&yxg$%8ERNJCjTx7hSP2QH!N(Pf_aa*wg*x*}lXb}Z73cP@7%w;I z#c;l6_VheE^9|Mc5iNn<5GNHd)_W5Jw{_@NpLV1u_Du$VT>?XL;QnLW^Dkwn2zW4u zK-~EFQX?;7AQyBmI}ltvSLWUE`%A>oP1b=>QtX5R%Aw>Y3?>jO4}Y*k&S zf8;HhoOaqjO=M#4}g3^1^+9G8Zz?dx>{tL6srrFY_~O3l(Q)xCu0x0 zL`%|dvDKKXvB8~dlE5w0=JGvZd54Z=`q+^w#ctm%ZX8^{cZf|I(YzoN?mXpvZs~Zg zdA-t`9tk>|!5z|vp+dn!Oclw^$Gzme9<$1z=_7kzkIN8MHd<`id9`IQ!ae2iP;I8Z zq4dy{o~;xNfl{ZMf5%jq;rsp_-%kz(>S#KgFgD4Uo-)1UA|Cqq8Qg5_hPyps-AGZB zbeqLkyu!qeGW*TKCXLrTZsu~xG|s$bzYcU~^@D_MK0_pbM3<&X=qS+Q!!+1HDhB1R zIOtcJfW8vnrCH#J&CG+c<;>4*!B11DV`NO;Dg*`ZF`p-baI7p;F9*c&8DssdyLHvR zVYUP7l*mahyOvb23lO+1sU$7jJElhZ_OJU_;{r{0_6p4c=SmcLEavL-pePu))N~x1 zNep)`=jD9OQp{vkA6pTpGubBtuSKLf6LVus)b+rt9HWB9wh$J{wdu+G%M}s!UGe^k zwsshnXg_FCagW6>u}hkg9lw%>$*snDD%`2dVLLROh%ueN93`3t4lS}L2su0LqtAU- z|4ULEXV!x*$=LT^-(#Ep8gN=50ll5=#mciHCL@2B!{w#bOTeL!hV6H!X$Ob>hX-fQ zEMow0r6kY6X{n$Gb*mv(;n?WUZFea&31lVPoQ>5@^*#5wCYB)#7vus|oycjUf7JS< z`p1U;$j2}BCpjm~{{+@oN*%biP2~W?j}O62*%kg%uS4~H9I57l>&+2Fb%c?kChS&s z_h5hlr<(`ja>K)CNAvHmql}q}cyQ90?e1FN|MW1?8RC~xt*Za2kiIqY7F%oa&D^i5 z_9m~P#_{hi+@%F#+THh8J7t@LTgF=50wtSMIfYu&s&-BSJx!7Ak*!R+>CcC31dxZx zd*Yz^8-jU%UjNt=xo0c!F}llr8kq}&az3cBzSL7CwG@+c-hnT*eB6obH*{O6skMwo z&s%u+bhDcX{U|iQ;eF*mzAJSKq6ZByy0rvlKPcZs1rE}&ws*KlYJ*M=_@4MCiR3oG z5Snz+MQo==sjMm296tu{Z)HMP!*(Mhlt5XRH?r=xBINy->znQn6%+2*YaW9;&X<{O+Vg7iyc+U$ZaddYv+IV9UD?0 z!ZAMPp*9G_`Uli0CqC(0F)L5Gsn}WffYZ2erMs~=$~TM(vkE5%tPq9Od)_tHr)-1W zH>32wVplduB0tEM88mm+7jm#jBRzrspY%JsTY+ECHXz~|v)(|2ZvN)O_&?oZiAxmagy>Xyuq zn}GQOheaR)gbds*ZTbb5VGQT{%l4}Dj#u=liVrL5*mNFX7oeYFlDz)MUc;J1;pb2h zK<@zAge*WW8-nuQUjZh~RxAF4m_6XOba*-Rq4!4F1(&QCjtpYA*Yu`Ocf=trBlCs@c$9VDC#*y^5Mo`rG*vw5=Z5Hm7 ztWUEvG{~SY@5T9!SZyeaGC)B#0%=bmD17~|y7QEW!|htH%?3)+#ZY5g-5l%CLr6y$ z^Bhoq2+E!zUT@PwkVMjeGIWo&6d1T+?k-TyT(NbdCw#yDIGqIg^m^1e#^AFkY`&O9 zAF#B@v4B<{EmNB>drbK1_l?rpG@0FvrG>6%)lT*I7G!s(3l30K{tCSK0ur=Ywcnm9 ztPpe)C2{{Wc14J4e^1_;ynWhS6wnex4+*lFCiW{78(Ejo;)|gLz7?tCzSfY`m2g!w z?P8(9XQ)@d+d}B){^`5VPs~JGfJXBB>0|Deh!gp7GRJ`TYLwU->bKBTn|?jj`u?rW zhwfydYP{i)vhw3J{CcPLOP@5o#nO>AyVY`g)c|1_`@=KVc*cMV`V z!<_L7xGIq*eaUJ z5xAgoO=b3D&j!^ulo}0t^SND^fL+spenVY5Rdy%%LsNe$E zaeO~+kC$2hvU-# z_Z|X2R?`L7_+&~=5}(MStrbxap>W_(d2AaUG!St!WT#7d?h~)$H@f02lIA=*QE6>y zQI<8}{IcI$=pvql+lmImdj40Q$G1aubyWK@+YytJ-Wueft4xN+O0Aa6webyV!$X(I z#sm=$lQZ@az1^cN>(jY<4Iw^@BF)V;eAU*sAm%FUqg!fE@apM1&<`ron{PDl

JY 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 F{|Dfz)WiS) literal 0 HcmV?d00001 diff --git a/wasm/kiplatform/ui.cpp b/wasm/kiplatform/ui.cpp index c66d770..ed935b1 100644 --- a/wasm/kiplatform/ui.cpp +++ b/wasm/kiplatform/ui.cpp @@ -93,11 +93,14 @@ void EllipsizeChoiceBox( wxChoice* aChoice ) double GetPixelScaleFactor( const wxWindow* aWindow ) { + // Return actual device pixel ratio for hi-res bitmap loading and bundle + // selection. KiCad keeps its own logical content scale at 1.0 in WASM, so + // bitmap selection must stay decoupled from layout sizing. #ifdef __EMSCRIPTEN__ - double scale = EM_ASM_DOUBLE({ + double scale = aWindow ? aWindow->GetDPIScaleFactor() : EM_ASM_DOUBLE({ return window.devicePixelRatio || 1.0; }); - return scale; + return scale >= 1.5 ? 2.0 : 1.0; #else if( aWindow ) return aWindow->GetContentScaleFactor(); @@ -107,7 +110,9 @@ double GetPixelScaleFactor( const wxWindow* aWindow ) double GetContentScaleFactor( const wxWindow* aWindow ) { - return GetPixelScaleFactor( aWindow ); + // KiCad layout uses logical coordinates in WASM. wxWidgets window/content + // scaling still reports the display scale separately for DIP conversions. + return aWindow ? aWindow->GetContentScaleFactor() : 1.0; } void GetInfoBarColours( wxColour& aFGColour, wxColour& aBGColour ) diff --git a/wxwidgets b/wxwidgets index 915a2ac..e01f29a 160000 --- a/wxwidgets +++ b/wxwidgets @@ -1 +1 @@ -Subproject commit 915a2ac4d87afc7dbd8005dab3238cb9bbd0a52c +Subproject commit e01f29abc429fc899c8bb09953b527dcb0652a87