Skip to main content Crate fx Copy item path Source adj artistic blur color conv distort enhance hist lochist lut noise object perlin photo render stylize warp Dst the destination pixels of one render call: row k holds the pixels x0..x1 of row y0 + k FxArgs the arguments of prepare / render (FXARGS without the destination) FxDesc an effect (FXDESC) FxProp a property (FXPROP); slot i of the parameter block belongs to property i, except FP_PAN
(2 slots) and FP_BLOB (max slots) JobCtl a job as its item functions see it: cancel the rest, look at the progress Params the parameter block (FX_NSLOTS 8-byte slots) Surface pixels of one image: rows of stride bytes (4 per pixel, A8: 1) TMask ERR_CANCEL ERR_DIMS ERR_LIMIT ERR_NOMEM FPF_LOG FP_ANGLE FP_BLOB FP_BOOL FP_CHOICE FP_COLOR FP_DEC FP_INT FP_PAN FP_SEED FXC_ADJUST FXC_ARTISTIC FXC_BLUR FXC_COLOR FXC_DISTORT FXC_NOISE FXC_OBJECT FXC_PHOTO FXC_RENDER FXC_STYLIZE FXF_ADJ FXF_BANDS FXF_NO_DIALOG FXF_PREPARE FXF_SEED FXF_SLOW FXF_WHOLE FX_ADD_NOISE FX_AUTO_LEVEL FX_BLACK_WHITE FX_BOKEH_BLUR FX_BRIGHT_CONTRAST FX_BULGE FX_CLOUDS FX_CRYSTALIZE FX_CURVES FX_DENTS FX_DROP_SHADOW FX_EDGE_DETECT FX_EMBOSS FX_EXPOSURE FX_FRAGMENT_BLUR FX_FROSTED_GLASS FX_GAUSSIAN_BLUR FX_GLOW FX_HIGHLIGHTS_SHADOWS FX_HUE_SATURATION FX_INK_SKETCH FX_INVERT_ALPHA FX_INVERT_COLORS FX_JULIA FX_LEVELS FX_MANDELBROT FX_MEDIAN FX_MORPHOLOGY FX_MOTION_BLUR FX_NSLOTS FX_OIL_PAINTING FX_OUTLINE FX_PENCIL_SKETCH FX_PIXELATE FX_POLAR_INVERSION FX_POSTERIZE FX_QUANTIZE FX_RADIAL_BLUR FX_REDUCE_NOISE FX_RED_EYE FX_RELIEF FX_SEPIA FX_SHARPEN FX_SKETCH_BLUR FX_SOFTEN_PORTRAIT FX_SQUARE_BLUR FX_STRAIGHTEN FX_SURFACE_BLUR FX_TEMP_TINT FX_TILE_REFLECTION FX_TURBULENCE FX_TWIST FX_UNFOCUS FX_VIGNETTE FX_ZOOM_BLUR Cancel a cancel flag render / prepare poll (JOB_CANCEL of FXA_JOB): the pool’s JobCtl, or any
flag of the caller’s count the number of registered effects defaults every property’s default into its slot(s); slots without a property are 0 find the effect with this ASCII key find_id the effect with this FX_* id get the i-th registered effect (group order, then table order) hash32 deterministic per-pixel random bits: a murmur3-style finaliser over the inputs [fx_hash32] put set pixel i of a row px pixel i of a row register add a group of effects; a group already registered is ignored -> 0 | ERR_LIMIT row row y of a surface (w * 4 bytes) rows fx_rows: f(dst_row, src_row, x0, y) for every row of the ROI (rows = the pixels x0..x1);
polls the cancel flag before every row -> 0 | ERR_CANCEL tiles disjoint rectangles of a surface as destinations (clamped to the surface; empty ones are
empty destinations); panics when two rectangles overlap. store holds the row slices of
all destinations (one allocation, cleared first; pass a new or reused empty Vec):
let mut store = Vec::new();
let dsts = fx::tiles(&mut surface, &rects, &mut store); use_all register every built-in group in menu order (adjustments first) [fx_use_all] Aux the result of prepare (read-only in render; FXD_FREE = its Drop) PrepareFn FXD_PREPARE: Ok(Some(aux)) / Ok(None) / Err(ERR_*) RenderFn FXD_RENDER: 0 / ERR_CANCEL / ERR_*