/** * hasselink/tiling/delta-pixels.ts * ------------------------------------------------------ * Type-level constructors for Delta pixels. * * Delta pixels are intended to carry "semantic change" markers (logical deltas) * rather than absolute values. */ import type { BlockAssignment, PixelAssignment, TypedTiledPixel } from "./tiling.ts"; /** * A single delta pixel inside a Level-1 block. * * We intentionally keep geometry simple here: * - Level-1 is a 2x2 block, which is a convenient "ribs/metadata" scale. * - The precise position conventions belong to the strategy/impl. */ export type DeltaPixel< B extends BlockAssignment<1>, I extends 0 | 1, J extends 0 | 1 > = PixelAssignment<1> & { owner: B["owner"]; level: 1; block: B["block"]; role: B["role"]; pixel: TypedTiledPixel<1> & { block: B["block"]; index: { ix: I; iy: J }; role: "Delta"; channel: "Meta"; }; }; export type DeltaPixelsForBlock> = readonly [ DeltaPixel, DeltaPixel, DeltaPixel, DeltaPixel ];