Unified · Split
| @@ -341,12 +341,6 @@ qbzr(SegQ *seg, int ns, int dw, int dh, int pitch, u8int *p) · 340 unmodified lines | ||
| 341 | 341 | rju² = 1.0 / ju²; |
| 342 | 342 | for(ju = 1; (1<<ju) < ju²; ju++); |
| 343 | 343 | |
| 344 | − /* scale */ | |
| 345 | − for(i = 0; i < ns; i++){ | |
| 346 | − for(j = 0; j < nelem(seg->v); j++) | |
| 347 | − seg[i].v[j] *= rju²; | |
| 348 | − } | |
| 349 | − | |
| 350 | 344 | /* calculate area */ |
| 351 | 345 | sl = sq = 0; |
| 352 | 346 | for(i = 0; i < ns; i++){ |
| @@ -360,8 +354,15 @@ qbzr(SegQ *seg, int ns, int dw, int dh, int pitch, u8int *p) · 7 unmodified lines | ||
| 360 | 354 | #undef det |
| 361 | 355 | #undef cL |
| 362 | 356 | #undef cQ |
| 357 | + /* scale */ | |
| 358 | + seg[i].v[0] *= rju²; | |
| 359 | + seg[i].v[1] *= rju²; | |
| 360 | + seg[i].v[2] *= rju²; | |
| 361 | + seg[i].v[3] *= rju²; | |
| 362 | + seg[i].v[4] *= rju²; | |
| 363 | + seg[i].v[5] *= rju²; | |
| 363 | 364 | } |
| 364 | − s₀ = (sl + sq/3)*QBZR_PIX_SCALE/2; | |
| 365 | + s₀ = (sl + sq/3)*QBZR_PIX_SCALE/(2*ju²*ju²); | |
| 365 | 366 | |
| 366 | 367 | /* working space: |
| 367 | 368 | * quick is-segment-in-the-cell tests (two 64-bit nums per segment) |
| @@ -448,7 +449,8 @@ qbzr(SegQ *seg, int ns, int dw, int dh, int pitch, u8int *p) · 80 unmodified lines | ||
| 448 | 449 | c = c₀x + 3*j²*j²; |
| 449 | 450 | } |
| 450 | 451 | v = s/QBZR_PIX_SCALE*255; |
| 451 | − *p++ = v < 0 ? 0 : (v > 255 ? 255 : v); | |
| 452 | + v *= v > 0; | |
| 453 | + *p++ = v < 255 ? v : 255; | |
| 452 | 454 | } |
| 453 | 455 | p += pitch - dw; |
| 454 | 456 | } |