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.

PropertyDetails
LibraryWrapEffectLib
Prefixwrap_
WrapsTWrapEffect
Functions18
TypeVisual effect
CategoryCountDescription
Creation / Destruction2Create and free effect
Bezier Control Points8Start, Ctrl1, Ctrl2, End get/set
Effect Control4Enabled and trigger get/set
Error Handling4Error 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

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

Creation & Destruction

wrap#(parent#)

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

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

wrap_free(effect#)

Destroys the effect and releases associated resources.

Error Handling

FunctionSignatureDescription
wrap_error()wrap_error@Returns last error code (0 = none)
wrap_errormsg$()wrap_errormsg$@Returns last error message
wrap_strerror$(code)wrap_strerror$@nConverts error code to text
wrap_clearerror()wrap_clearerror@Clears the error state

Bezier Control Points

FunctionSignatureDescription
wrap_leftstart#(effect#, value)wrap_leftstart#@#nSet start point (default 0.0)
wrap_leftstart(effect#)wrap_leftstart@#Get start point
wrap_leftctrl1#(effect#, value)wrap_leftctrl1#@#nSet first control point (default 0.33)
wrap_leftctrl1(effect#)wrap_leftctrl1@#Get control 1
wrap_leftctrl2#(effect#, value)wrap_leftctrl2#@#nSet second control point (default 0.66)
wrap_leftctrl2(effect#)wrap_leftctrl2@#Get control 2
wrap_leftend#(effect#, value)wrap_leftend#@#nSet end point (default 1.0)
wrap_leftend(effect#)wrap_leftend@#Get end point
PropertyDefaultRangeDescription
LeftStart0.00–1Bezier start point
LeftControl10.330–1First bezier control point
LeftControl20.660–1Second bezier control point
LeftEnd1.00–1Bezier end point

Effect Control

FunctionSignatureDescription
wrap_enabled#(effect#, value)wrap_enabled#@#nEnable (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

╯ wrap-curve.bas
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

FunctionSignatureDescription
CREATION & DESTRUCTION
wrap#(parent#)wrap#@#Create effect
wrap_free(effect#)wrap_free@#Destroy effect
BEZIER CONTROL POINTS
wrap_leftstart#(effect#, value)wrap_leftstart#@#nSet start
wrap_leftstart(effect#)wrap_leftstart@#Get start
wrap_leftctrl1#(effect#, value)wrap_leftctrl1#@#nSet ctrl 1
wrap_leftctrl1(effect#)wrap_leftctrl1@#Get ctrl 1
wrap_leftctrl2#(effect#, value)wrap_leftctrl2#@#nSet ctrl 2
wrap_leftctrl2(effect#)wrap_leftctrl2@#Get ctrl 2
wrap_leftend#(effect#, value)wrap_leftend#@#nSet end
wrap_leftend(effect#)wrap_leftend@#Get end
EFFECT CONTROL
wrap_enabled#(effect#, value)wrap_enabled#@#nEnable/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$@nCode to text
wrap_clearerror()wrap_clearerror@Clear error

See Also

LibraryDescription
PinchEffectLibPinch/bulge distortion
SwirlEffectLibSwirl distortion
WaveEffectLibWave distortion