From f8c4ae5c47afcdc339a0d85cfefeb577134efca2 Mon Sep 17 00:00:00 2001 From: Ivan Mahonin Date: Oct 26 2025 10:24:17 +0000 Subject: jigsaw: fix2 --- diff --git a/projects/jigsaw/menu.c b/projects/jigsaw/menu.c index c8b7d84..757fecf 100644 --- a/projects/jigsaw/menu.c +++ b/projects/jigsaw/menu.c @@ -33,6 +33,7 @@ static Animation loadThumb(const char *imgname, Framebuffer fb, int w, int h) { else tw = (int)round(h/(double)fh*fw); if (tw < 1) tw = 1; else if (tw > w) tw = w; if (th < 1) th = 1; else if (th > h) th = h; + DBG("[%dx%d] -> [%dx%d]", fw, fh, tw, th); saveState(); resetState(); @@ -56,8 +57,10 @@ static Animation loadThumb(const char *imgname, Framebuffer fb, int w, int h) { } else if (!imageSave(tpath, iw, ih, pixels)) { WRN("loadThumb: cannot save thumbnail to: %s", tpath); + thumb = createAnimationFromImageEx(iw, ih, pixels, FALSE, FALSE, TRUE, TRUE); + } else { + thumb = createAnimationEx(tpath, TRUE, FALSE, FALSE); } - thumb = createAnimationFromImageEx(iw, ih, pixels, FALSE, FALSE, TRUE, TRUE); free(pixels); } else { WRN("loadThumb: cannot capture vieport: %s", imgpath); diff --git a/projects/jigsaw/phisics.group.c b/projects/jigsaw/phisics.group.c index a346631..8d167f1 100644 --- a/projects/jigsaw/phisics.group.c +++ b/projects/jigsaw/phisics.group.c @@ -41,7 +41,7 @@ void phGroupRecalc(PhGroup *g) { n->gk = d2 > PRECISION2 ? vdiv(d, d2) : vzero(); } - g->dx = vec(1, 0); + if (!(vlen2(g->dx) > PRECISION2)) g->dx = vec(1, 0); } diff --git a/projects/jigsaw/puzzle.chunk.c b/projects/jigsaw/puzzle.chunk.c index ba98354..9540cc9 100644 --- a/projects/jigsaw/puzzle.chunk.c +++ b/projects/jigsaw/puzzle.chunk.c @@ -117,6 +117,7 @@ void chunkMerge(Chunk *a, Chunk *b) { Puzzle *pz = a->pz; PhGroup *pa = a->parent, *pb = b->parent; phGroupMerge(pa, pb); + phGroupFix(pa, !pz->turn); for(int r = 0; r < pz->rows; ++r) for(int c = 0; c < pz->cols; ++c) {