def jpeg.progressive.refine.bit
gralha-jpeg-decode@0.1.0.1 · jpeg.bend:302
import gralha-jpeg-decode@0.1.0.1/jpeg.bend as Jpeg
import Base
import gralha-text-scan@0.1.0.1/scan.bend as U
import gralha-bytes@0.1.0.1/bytes.bend as Bin
302def jpeg.progressive.refine.bit(read: JPEGRead, +coefficients: Bin.Bytes, predictor: U32, +at: U32, +p1: U32) -> JPEGBlock:
303 JPEGRead{bit, stream} = read
304 +old = Bin.bytes.get(coefficients, at)
305 +negative = U32.is_ge(old, 2147483648)
306 +magnitude = U.choose(U32, negative, (0 - old : U32), old)
307 +adjust = U32.is_eq(bit, 1) && U32.is_eq(U32.and(magnitude, p1), 0)
308 JPEGBlock{stream, Bin.bytes.set(coefficients, at, U.choose(U32, adjust, (old + U.choose(U32, negative, (0 - p1 : U32), p1) : U32), old)), predictor}