shithub: fnt

Download patch

ref: c02b0a69b60c87b5d919b027e393b8a2f19a6700
parent: 2ea187e41726a61d37d225fd8057c08414f4f8f0
author: Sigrid Solveig Haflínudóttir <sigrid@ftrv.se>
date: Wed Jul 31 08:54:14 EDT 2024

scale after area

--- a/rast.c
+++ b/rast.c
@@ -341,12 +341,6 @@
 	rju² = 1.0 / ju²;
 	for(ju = 1; (1<<ju) < ju²; ju++);
 
-	/* scale */
-	for(i = 0; i < ns; i++){
-		for(j = 0; j < nelem(seg->v); j++)
-			seg[i].v[j] *= rju²;
-	}
-
 	/* calculate area */
 	sl = sq = 0;
 	for(i = 0; i < ns; i++){
@@ -360,8 +354,15 @@
 #undef det
 #undef cL
 #undef cQ
+		/* scale */
+		seg[i].v[0] *= rju²;
+		seg[i].v[1] *= rju²;
+		seg[i].v[2] *= rju²;
+		seg[i].v[3] *= rju²;
+		seg[i].v[4] *= rju²;
+		seg[i].v[5] *= rju²;
 	}
-	s₀ = (sl + sq/3)*QBZR_PIX_SCALE/2;
+	s₀ = (sl + sq/3)*QBZR_PIX_SCALE/(2*ju²*ju²);
 
 	/* working space:
 	 * quick is-segment-in-the-cell tests (two 64-bit nums per segment)
@@ -448,7 +449,8 @@
 				c = c₀x + 3*j²*j²;
 			}
 			v = s/QBZR_PIX_SCALE*255;
-			*p++ = v < 0 ? 0 : (v > 255 ? 255 : v);
+			v *= v > 0;
+			*p++ = v < 255 ? v : 255;
 		}
 		p += pitch - dw;
 	}
--