vectorcraft/crates/render/src
bflatastic 9bad0a24ca Part of gap 2: Effect › Pixelate (Color Halftone, Crystallize, Mezzotint, Pointillize)
Four Photoshop-style raster effects on the pixel-filter pipeline
(vectorcraft_effects::pixel::pixelate), under a new Effect › Pixelate
submenu between Blur and Sharpen in the Raster Effects section:

- Color Halftone (maxRadius 4..127, default 8; channel1..channel4 screen
  angles -360..360, defaults 108/162/90/45): each colour channel is
  screened at its angle in square cells sized so a dot of Max. Radius
  fills one; each cell's dot covers the share of the cell that is the
  channel's coverage-weighted mean there (white stays white, black
  black). RGB documents screen R, G, B (channels 1 to 3); CMYK documents
  screen C, M, Y, K inks (channels 1 to 4), also when they are drawn ink
  plane by ink plane (the K plane uses channel 4).
- Crystallize (cellSize 3..300, default 10): every pixel takes the
  colour at the nearest of one jittered point per cell (exact Voronoi
  over a 5 x 5 neighbourhood, pruned by distance).
- Mezzotint (type: Fine/Medium/Grainy/Coarse Dots, Short/Medium/Long
  Lines, Short/Medium/Long Strokes; default Fine Dots; a dropdown in the
  dialog): each channel is turned fully on or off against its own random
  threshold pattern, so the object becomes pure colours.
- Pointillize (cellSize 3..300, default 5): one dot of random size per
  cell at a jittered point, coloured by the softened object there and as
  opaque as the object at its centre, stacked in random order over a
  white canvas where the object is.

Lengths are in points (Scale Strokes & Effects scales them) and every
pattern lies in document space around the object's centre, so the
result is the same at any zoom or raster resolution, moves with the
object, and is identical on every redraw (hash noise of the pattern's
cell indices, no state). Work per pixel is bounded whatever the
parameters, which are clamped to their ranges and finite-checked; the
halftone's cell grid is capped by the raster's size and a screen finer
than 3 pixels leaves the image as it is (its average). PixelSpace gains
`channels` so the renderer tells the filters what the channels hold.

Catalogue rows with parameter docs, outsets and reaches for cropping,
menu entries, dialog labels (Max. Radius, Channel 1-4, Cell Size), the
Mezzotint Type dropdown, translations, and tests: parameters and
clamping, tone and coverage, CMYK inks, polygon crystals, pure-colour
mezzotints with ten distinct patterns, dots on a white canvas, the same
result at twice the resolution and when moved, the canvas, PDF and SVG
through the engine, the command sweep with junk parameters, the dialogs
and the menu.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 15:42:24 +07:00
..
encode Fix #787: raster exports keep translucent edges over opaque art opaque 2026-10-10 11:12:13 +07:00
brush_fx.rs M4.39: SVG symbols as <symbol>/<use>, hidden layers on Save, Dublin Core metadata 2026-10-05 09:03:52 +07:00
freeform.rs M4.98: freeform gradients export to SVG as images clipped to their shapes 2026-10-05 13:25:16 +07:00
fx.rs Part of gap 2: Effect › Pixelate (Color Halftone, Crystallize, Mezzotint, Pointillize) 2026-10-10 15:42:24 +07:00
group.rs Fix #787: raster exports keep translucent edges over opaque art opaque 2026-10-10 11:12:13 +07:00
ink.rs Fix #320: CMYK images stay CMYK from PDF import to PDF export 2026-10-08 06:04:07 +07:00
lib.rs Fix #787: raster exports keep translucent edges over opaque art opaque 2026-10-10 11:12:13 +07:00
live.rs Placed documents: the object, drawn exactly and kept as art by every exporter 2026-10-08 12:20:51 -07:00
paint.rs Placed documents: on screen, cached bitmaps made in the background 2026-10-08 12:20:51 -07:00
pattern.rs Fix #787: raster exports keep translucent edges over opaque art opaque 2026-10-10 11:12:13 +07:00
placed_document.rs Placed documents: on screen, cached bitmaps made in the background 2026-10-08 12:20:51 -07:00
proof.rs M4.75: File → Print writes the job as a print-ready PDF: paper, scale, tiles, marks and bleed, separations 2026-10-05 15:13:10 +07:00
tests.rs Part of #394: Animated Zoom, Large Tabs, Scale Cursor and anti-aliased bitmaps act 2026-10-09 11:22:43 +07:00
tests_adjust.rs Fix #122: colour adjustment live effects (Effect > Color Adjustments) 2026-10-06 00:42:26 +07:00
tests_blend.rs M3.73: blend modes follow the reference formulas on screen, in SVG and in PDF 2026-10-05 00:27:31 +07:00
tests_charstroke.rs M3.40: stroke on type — the Stroke panel edits the characters' stroke 2026-10-05 01:09:55 +07:00
tests_clip.rs M3.26: clipping sets with any clip shape 2026-10-04 17:23:57 +07:00
tests_cmykblend.rs M4.63: Links panel with status, Relink, Go To, Update, Edit Original, Embed/Unembed, Link Info and Placement Options 2026-10-05 12:40:05 +07:00
tests_container.rs M3.68: groups, layers and type have their own fills, strokes and effects, with Contents and Characters rows 2026-10-05 00:59:34 +07:00
tests_fontchange.rs Fix #36: the font menus list the installed fonts, with a search field 2026-10-06 00:49:22 +07:00
tests_freeform.rs M3.81: freeform gradients: colour points with spread, smooth lines, first points placed inside the shape 2026-10-05 01:21:38 +07:00
tests_fxzoom.rs Fix #755: blurred type no longer shifts as the view moves 2026-10-10 10:27:49 +07:00
tests_isolation.rs Fix #833: isolation mode locks and dims the art around the group 2026-10-10 10:27:57 +07:00
tests_knockout.rs M3.48: Page Isolated Blending and Page Knockout Group 2026-10-04 23:10:06 +07:00
tests_layeropts.rs Fix #743: raster export leaves guides out 2026-10-09 11:31:29 +00:00
tests_objectfx.rs M4.63: Links panel with status, Relink, Go To, Update, Edit Original, Embed/Unembed, Link Info and Placement Options 2026-10-05 12:40:05 +07:00
tests_placed_document.rs Placed documents: on screen, cached bitmaps made in the background 2026-10-08 12:20:51 -07:00
tests_setup.rs M4.63: Links panel with status, Relink, Go To, Update, Edit Original, Embed/Unembed, Link Info and Placement Options 2026-10-05 12:40:05 +07:00
tests_strokegradient.rs M3.83: gradients within, along or across a stroke 2026-10-05 05:47:54 +07:00
tests_tileedge.rs M3.72: Tile Edge Color dialog and Show Swatch Bounds in pattern editing 2026-10-05 01:50:25 +07:00