| |
| |
| |
|
|
| const assert = require('assert') |
| const { drawRoundRect } = require('./utils/quote-generate/canvas-utils') |
| const { SP } = require('./utils/quote-generate/composer') |
|
|
| function px (canvas, x, y) { |
| const d = canvas.getContext('2d').getImageData(x, y, 1, 1).data |
| return { r: d[0], g: d[1], b: d[2], a: d[3] } |
| } |
|
|
| |
| const FILL = { r: 34, g: 43, b: 60 } |
| const W = 200 |
| const H = 100 |
| const c = drawRoundRect('#222b3c', W, H, 20, 0, 1.25) |
|
|
| |
| const mid = px(c, W / 2, H / 2) |
| assert.strictEqual(mid.r, FILL.r, `body tinted: r=${mid.r} != ${FILL.r}`) |
|
|
| |
| const top = px(c, W / 2, 1) |
| assert.ok(top.r > mid.r + 15, `top edge not highlighted: r=${top.r} vs body ${mid.r}`) |
|
|
| |
| |
| |
| const side = px(c, 0, H / 2) |
| assert.ok(side.r > mid.r + 8, `side border missing: r=${side.r} vs body ${mid.r}`) |
|
|
| |
| const lower = px(c, 0, Math.round(H * 0.7)) |
| assert.ok(Math.abs(lower.r - side.r) <= 6, |
| `highlight must fade out by 40% height: lower-edge r=${lower.r}, side r=${side.r}`) |
|
|
| |
| const plain = drawRoundRect('#222b3c', W, H, 20, 0) |
| assert.strictEqual(px(plain, W / 2, 1).r, FILL.r, 'plain rect must have no glass') |
|
|
| |
| |
| assert.ok(SP.shadowPadTop >= 6 - 2, |
| `shadowPadTop ${SP.shadowPadTop} < blur−offset 4 — shadow clips at the top`) |
| assert.ok(SP.shadowPad >= 6 + 2, |
| `shadowPad ${SP.shadowPad} < blur+offset 8 — shadow clips at the bottom`) |
|
|
| console.log('OK: glass style assertions passed') |
| console.log(` body r=${mid.r}, top r=${top.r}, side r=${side.r}, lower r=${lower.r}`) |
|
|