Overview

ToonEffectLib applies a cartoon/posterization effect that reduces the number of color levels, wrapping the FireMonkey TToonEffect component. Creates a stylized, comic-book look by quantizing colors into discrete bands.

PropertyDetails
LibraryToonEffectLib
Prefixtoon_
WrapsTToonEffect
Functions12
TypeVisual effect (stylization)
CategoryCountDescription
Creation / Destruction2Create and free effect
Color Levels2Get/set number of color levels
Effect Control4Enabled and trigger get/set
Error Handling4Error codes and messages
🎨 Comic Book Style: Lower level values produce stronger cartoon effects. Values of 3–6 create the classic comic-book look, while 2 gives an extreme pop-art style. Values above 10 approach the original image.

Cross-Platform Support

PlatformSupport
Windows✅ Full support
Linux✅ Full support
Android✅ Full support

Creation & Destruction

toon#(parent#)

Creates a new toon effect attached to the specified visual control.

ParameterTypeDescription
parent#PointerTarget visual control
ReturnsPointerEffect handle, or 0 on failure

toon_free(effect#)

Destroys the effect and releases associated resources.

Error Handling

FunctionSignatureDescription
toon_error()toon_error@Returns last error code (0 = none)
toon_errormsg$()toon_errormsg$@Returns last error message
toon_strerror$(code)toon_strerror$@nConverts error code to text
toon_clearerror()toon_clearerror@Clears the error state

Color Levels

Controls the number of discrete color levels per channel. Fewer levels mean more dramatic posterization — the hallmark of cartoon/comic-book style.

FunctionSignatureDescription
toon_levels#(effect#, value)toon_levels#@#nSet number of color levels
toon_levels(effect#)toon_levels@#Get current levels
LevelsStyle
2Extreme pop-art (very few colors)
3–4Strong cartoon / comic-book
5–6Classic cartoon look (default range)
7–10Subtle posterization
10+Approaches original image

Effect Control

FunctionSignatureDescription
toon_enabled#(effect#, value)toon_enabled#@#nEnable (1) or disable (0)
toon_enabled(effect#)toon_enabled@#Gets enabled state
toon_trigger#(effect#, trigger$)toon_trigger#@#$Sets trigger string
toon_trigger$(effect#)toon_trigger$@#Gets trigger string

Complete Examples

Example 1: Adjustable Color Levels

╯ toon-control.bas
let frm# = Pointer#(0)
let img# = Pointer#(0)
let toon# = Pointer#(0)
let trkLvl# = Pointer#(0)
let lblLvl# = Pointer#(0)

frm# = form#("Toon Control", 450, 400)

img# = image#(frm#)
image_bounds#(img#, 125, 30, 200, 150)
image_load#(img#, "https://picsum.photos/200/150")

toon# = toon#(img#)
toon_levels#(toon#, 5)

' Levels slider
lblLvl# = label#(frm#, "Levels: 5", 180, 200)
trkLvl# = trackbar#(frm#)
trackbar_bounds#(trkLvl#, 50, 230, 350, 30)
trackbar_max#(trkLvl#, 20)
trackbar_value#(trkLvl#, 5)
trackbar_onchange#(trkLvl#, "OnLevels")

form_show(frm#)

function OnLevels(sender#) local l
  let l = trackbar_value(trkLvl#)
  if l < 2 then
    l = 2
  endif
  toon_levels#(toon#, l)
  label_text#(lblLvl#, "Levels: " + str$(l))
endfunction

Example 2: Before/After Comparison

╯ toon-compare.bas
let frm# = Pointer#(0)
let img1# = Pointer#(0)
let img2# = Pointer#(0)
let toon# = Pointer#(0)

frm# = form#("Toon Comparison", 500, 300)

' Original
img1# = image#(frm#)
image_bounds#(img1#, 50, 30, 180, 135)
image_load#(img1#, "https://picsum.photos/180/135")
let lbl1# = label#(frm#, "Original", 110, 175)

' Toon effect
img2# = image#(frm#)
image_bounds#(img2#, 270, 30, 180, 135)
image_load#(img2#, "https://picsum.photos/180/135")
toon# = toon#(img2#)
toon_levels#(toon#, 4)
let lbl2# = label#(frm#, "Toon (4 levels)", 310, 175)

form_show(frm#)

Quick Reference

FunctionSignatureDescription
CREATION & DESTRUCTION
toon#(parent#)toon#@#Create effect
toon_free(effect#)toon_free@#Destroy effect
COLOR LEVELS
toon_levels#(effect#, value)toon_levels#@#nSet color levels
toon_levels(effect#)toon_levels@#Get levels
EFFECT CONTROL
toon_enabled#(effect#, value)toon_enabled#@#nEnable/disable
toon_enabled(effect#)toon_enabled@#Get enabled state
toon_trigger#(effect#, trigger$)toon_trigger#@#$Set trigger
toon_trigger$(effect#)toon_trigger$@#Get trigger
ERROR HANDLING
toon_error()toon_error@Last error code
toon_errormsg$()toon_errormsg$@Last error message
toon_strerror$(code)toon_strerror$@nCode to text
toon_clearerror()toon_clearerror@Clear error state

See Also

LibraryDescription
PaperSketchEffectLibSketch effect
PencilStrokeEffectLibPencil drawing effect
SepiaEffectLibSepia tone