Overview
WrapEffectLib applies a wrap/warp distortion using bezier curve control points, wrapping the FireMonkey TWrapEffect. Bends and warps images along a curved path — useful for page curl, flag wave, or ribbon effects.
| Property | Details |
|---|---|
| Library | WrapEffectLib |
| Prefix | wrap_ |
| Wraps | TWrapEffect |
| Functions | 18 |
| Type | Visual effect |
| Category | Count | Description |
|---|---|---|
| Creation / Destruction | 2 | Create and free effect |
| Bezier Control Points | 8 | Start, Ctrl1, Ctrl2, End get/set |
| Effect Control | 4 | Enabled and trigger get/set |
| Error Handling | 4 | Error codes and messages |
📐 Bezier Warping: Four control points define the distortion curve. LeftStart and LeftEnd are the endpoints; LeftControl1 and LeftControl2 shape the curve. All values are normalized 0.0–1.0.
Cross-Platform Support
| Platform | Support |
|---|---|
| Windows | ✅ Full support |
| Linux | ✅ Full support |
| Android | ✅ Full support |
Creation & Destruction
wrap#(parent#)
Creates a new wrap effect attached to the specified visual control.
| Parameter | Type | Description |
|---|---|---|
parent# | Pointer | Target visual control |
| Returns | Pointer | Effect handle, or 0 on failure |
wrap_free(effect#)
Destroys the effect and releases associated resources.
Error Handling
| Function | Signature | Description |
|---|---|---|
wrap_error() | wrap_error@ | Returns last error code (0 = none) |
wrap_errormsg$() | wrap_errormsg$@ | Returns last error message |
wrap_strerror$(code) | wrap_strerror$@n | Converts error code to text |
wrap_clearerror() | wrap_clearerror@ | Clears the error state |
Bezier Control Points
| Function | Signature | Description |
|---|---|---|
wrap_leftstart#(effect#, value) | wrap_leftstart#@#n | Set start point (default 0.0) |
wrap_leftstart(effect#) | wrap_leftstart@# | Get start point |
wrap_leftctrl1#(effect#, value) | wrap_leftctrl1#@#n | Set first control point (default 0.33) |
wrap_leftctrl1(effect#) | wrap_leftctrl1@# | Get control 1 |
wrap_leftctrl2#(effect#, value) | wrap_leftctrl2#@#n | Set second control point (default 0.66) |
wrap_leftctrl2(effect#) | wrap_leftctrl2@# | Get control 2 |
wrap_leftend#(effect#, value) | wrap_leftend#@#n | Set end point (default 1.0) |
wrap_leftend(effect#) | wrap_leftend@# | Get end point |
| Property | Default | Range | Description |
|---|---|---|---|
| LeftStart | 0.0 | 0–1 | Bezier start point |
| LeftControl1 | 0.33 | 0–1 | First bezier control point |
| LeftControl2 | 0.66 | 0–1 | Second bezier control point |
| LeftEnd | 1.0 | 0–1 | Bezier end point |
Effect Control
| Function | Signature | Description |
|---|---|---|
wrap_enabled#(effect#, value) | wrap_enabled#@#n | Enable (1) or disable (0) |
wrap_enabled(effect#) | wrap_enabled@# | Gets enabled state |
wrap_trigger#(effect#, trigger$) | wrap_trigger#@#$ | Sets trigger string |
wrap_trigger$(effect#) | wrap_trigger$@# | Gets trigger string |
Complete Examples
Adjustable Wrap Curve
let frm# = Pointer#(0) let img# = Pointer#(0) let wrp# = Pointer#(0) let trkC1# = Pointer#(0) let trkC2# = Pointer#(0) let lblC1# = Pointer#(0) let lblC2# = Pointer#(0) frm# = form#("Wrap Control", 500, 450) img# = image#(frm#) image_bounds#(img#, 150, 20, 200, 150) image_load#(img#, "https://picsum.photos/200/150") wrp# = wrap#(img#) ' Control 1 slider lblC1# = label#(frm#, "Control 1: 0.33", 30, 190) trkC1# = trackbar#(frm#) trackbar_bounds#(trkC1#, 30, 215, 440, 25) trackbar_max#(trkC1#, 100) trackbar_value#(trkC1#, 33) trackbar_onchange#(trkC1#, "OnControl1") ' Control 2 slider lblC2# = label#(frm#, "Control 2: 0.66", 30, 260) trkC2# = trackbar#(frm#) trackbar_bounds#(trkC2#, 30, 285, 440, 25) trackbar_max#(trkC2#, 100) trackbar_value#(trkC2#, 66) trackbar_onchange#(trkC2#, "OnControl2") form_show(frm#) function OnControl1(sender#) local c let c = trackbar_value(trkC1#) / 100 wrap_leftctrl1#(wrp#, c) label_text#(lblC1#, "Control 1: " + stri$(c, 2)) endfunction function OnControl2(sender#) local c let c = trackbar_value(trkC2#) / 100 wrap_leftctrl2#(wrp#, c) label_text#(lblC2#, "Control 2: " + stri$(c, 2)) endfunction
Quick Reference
| Function | Signature | Description |
|---|---|---|
| CREATION & DESTRUCTION | ||
wrap#(parent#) | wrap#@# | Create effect |
wrap_free(effect#) | wrap_free@# | Destroy effect |
| BEZIER CONTROL POINTS | ||
wrap_leftstart#(effect#, value) | wrap_leftstart#@#n | Set start |
wrap_leftstart(effect#) | wrap_leftstart@# | Get start |
wrap_leftctrl1#(effect#, value) | wrap_leftctrl1#@#n | Set ctrl 1 |
wrap_leftctrl1(effect#) | wrap_leftctrl1@# | Get ctrl 1 |
wrap_leftctrl2#(effect#, value) | wrap_leftctrl2#@#n | Set ctrl 2 |
wrap_leftctrl2(effect#) | wrap_leftctrl2@# | Get ctrl 2 |
wrap_leftend#(effect#, value) | wrap_leftend#@#n | Set end |
wrap_leftend(effect#) | wrap_leftend@# | Get end |
| EFFECT CONTROL | ||
wrap_enabled#(effect#, value) | wrap_enabled#@#n | Enable/disable |
wrap_enabled(effect#) | wrap_enabled@# | Get enabled |
wrap_trigger#(effect#, trigger$) | wrap_trigger#@#$ | Set trigger |
wrap_trigger$(effect#) | wrap_trigger$@# | Get trigger |
| ERROR HANDLING | ||
wrap_error() | wrap_error@ | Last error code |
wrap_errormsg$() | wrap_errormsg$@ | Last error message |
wrap_strerror$(code) | wrap_strerror$@n | Code to text |
wrap_clearerror() | wrap_clearerror@ | Clear error |
See Also
| Library | Description |
|---|---|
PinchEffectLib | Pinch/bulge distortion |
SwirlEffectLib | Swirl distortion |
WaveEffectLib | Wave distortion |
