aboutsummaryrefslogtreecommitdiffhomepage
path: root/public/bluebey-studio/src/faceArt.js
diff options
context:
space:
mode:
Diffstat (limited to 'public/bluebey-studio/src/faceArt.js')
-rw-r--r--public/bluebey-studio/src/faceArt.js16
1 files changed, 8 insertions, 8 deletions
diff --git a/public/bluebey-studio/src/faceArt.js b/public/bluebey-studio/src/faceArt.js
index 48ffd67..ba748f5 100644
--- a/public/bluebey-studio/src/faceArt.js
+++ b/public/bluebey-studio/src/faceArt.js
@@ -1361,12 +1361,11 @@ export function drawEyes(ctx, p) {
const irisScale = style.irisScale ?? 1;
const lookMax = style.lookMax ?? 1;
const highlightOn = style.highlight !== false;
- const heartScale = style.heartScale ?? 0.85;
+ const heartScale = 2;
const heartColor = style.heartColor ?? '#e0344f';
const irisRadius = EYE_LAYOUT.irisRadius * irisScale;
const travel = Math.max(0, EYE_LAYOUT.radius - irisRadius);
const heartTravel = EYE_LAYOUT.radius * 0.9;
- const lowerLid = clamp(style.lowerLid ?? 0, 0, 1);
const lidFlat = (style.lidShape ?? 'curve') === 'flat';
// How much the whole narrowed eye is tilted (e.g. an angry or gentle squint).
const lidTilt = clamp(style.lidTilt ?? 0, -45, 45);
@@ -1387,6 +1386,8 @@ export function drawEyes(ctx, p) {
};
const lineStyle = { line: lineColor, width: lidWidth };
const isHeart = (spec.irisShape ?? 'circle') === 'heart';
+ // The lower lid is per eye (falling back to the shared value).
+ const lowerLid = clamp(spec.lowerLid ?? style.lowerLid ?? 0, 0, 1);
drawBrow(ctx, eye, spec, style, limits);
@@ -1600,12 +1601,11 @@ export function drawMouth(ctx, p) {
// --- a round "O" mouth (surprised, singing) ---------------------------
const roundAmount = clamp(p.round ?? 0, 0, 1);
if (roundAmount > 0.004) {
- let ry = L.sag * 0.42 * roundAmount * clamp(p.thickness ?? 1, 0.5, 2);
- // The nose hides the middle of the upper face, so keep the whole oval below
- // it and inside the plate. (`L.safeBottom` is only the round mouth's own size
- // limit; it no longer has to stay clear of the canvas edge.)
- ry = Math.min(ry, (L.safeBottom - thickness / 2 - L.noseClear) / 2.1);
- const rx = Math.min(ry * 1.15 * clamp(p.width ?? 1, 0.2, 1.6), L.halfChord * 0.8);
+ let ry = L.sag * 1.05 * roundAmount * clamp(p.thickness ?? 1, 0.5, 2);
+ // Keep the oval below the nose and inside the plate, but allow it to grow to
+ // roughly half the head.
+ ry = Math.min(ry, (edgeBottom - thickness / 2 - L.noseClear) / 2.1);
+ const rx = Math.min(ry * 1.15 * clamp(p.width ?? 1, 0.2, 1.6), L.halfChord * 1.4);
const centreY = clamp(y0 + sag * 0.5, L.noseClear + ry * 1.02, edgeBottom - thickness / 2 - ry * 1.02);
if (ry > 5) {
ctx.save();