Skip to main content

Crate fx

Crate fx 

Source

Modules§

adj
artistic
blur
color
conv
distort
enhance
hist
lochist
lut
noise
object
perlin
photo
render
stylize
warp

Structs§

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

Constants§

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

Traits§

Cancel
a cancel flag render / prepare poll (JOB_CANCEL of FXA_JOB): the pool’s JobCtl, or any flag of the caller’s

Functions§

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]

Type Aliases§

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_*