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.
| Property | Details |
|---|---|
| Library | ToonEffectLib |
| Prefix | toon_ |
| Wraps | TToonEffect |
| Functions | 12 |
| Type | Visual effect (stylization) |
| Category | Count | Description |
|---|---|---|
| Creation / Destruction | 2 | Create and free effect |
| Color Levels | 2 | Get/set number of color levels |
| Effect Control | 4 | Enabled and trigger get/set |
| Error Handling | 4 | Error 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
| Platform | Support |
|---|---|
| Windows | ✅ Full support |
| Linux | ✅ Full support |
| Android | ✅ Full support |
Creation & Destruction
toon#(parent#)
Creates a new toon effect attached to the specified visual control.
| Parameter | Type | Description |
|---|---|---|
parent# | Pointer | Target visual control |
| Returns | Pointer | Effect handle, or 0 on failure |
toon_free(effect#)
Destroys the effect and releases associated resources.
Error Handling
| Function | Signature | Description |
|---|---|---|
toon_error() | toon_error@ | Returns last error code (0 = none) |
toon_errormsg$() | toon_errormsg$@ | Returns last error message |
toon_strerror$(code) | toon_strerror$@n | Converts 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.
| Function | Signature | Description |
|---|---|---|
toon_levels#(effect#, value) | toon_levels#@#n | Set number of color levels |
toon_levels(effect#) | toon_levels@# | Get current levels |
| Levels | Style |
|---|---|
2 | Extreme pop-art (very few colors) |
3–4 | Strong cartoon / comic-book |
5–6 | Classic cartoon look (default range) |
7–10 | Subtle posterization |
10+ | Approaches original image |
Effect Control
| Function | Signature | Description |
|---|---|---|
toon_enabled#(effect#, value) | toon_enabled#@#n | Enable (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
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
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
| Function | Signature | Description |
|---|---|---|
| CREATION & DESTRUCTION | ||
toon#(parent#) | toon#@# | Create effect |
toon_free(effect#) | toon_free@# | Destroy effect |
| COLOR LEVELS | ||
toon_levels#(effect#, value) | toon_levels#@#n | Set color levels |
toon_levels(effect#) | toon_levels@# | Get levels |
| EFFECT CONTROL | ||
toon_enabled#(effect#, value) | toon_enabled#@#n | Enable/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$@n | Code to text |
toon_clearerror() | toon_clearerror@ | Clear error state |
See Also
| Library | Description |
|---|---|
PaperSketchEffectLib | Sketch effect |
PencilStrokeEffectLib | Pencil drawing effect |
SepiaEffectLib | Sepia tone |
