Overview

SwipeTransitionEffectLib creates a page-fold/swipe transition where the page corner is "pulled" to a position, revealing the target image underneath — like turning a page in a book. Wraps the FireMonkey TSwipeTransitionEffect component.

PropertyDetails
LibrarySwipeTransitionEffectLib
Prefixswipetrans_
WrapsTSwipeTransitionEffect
Functions20
TypeTransition effect
CategoryCountDescription
Creation / Destruction2Create and free effect
Target Image4Set/get/load target bitmap
Mouse Point4Get/set X and Y fold positions
Fold Depth2Get/set fold intensity
Effect Control4Enabled and trigger get/set
Error Handling4Error codes and messages
⚠ Pixel Coordinates: MousePoint uses pixel values, not normalized 0–1 ranges. For a 200×150 image, MouseX ranges from 0 to 200+ and MouseY from 0 to 150+.
📖 Page Turn: The page folds from the top-left corner (default). Moving the MousePoint diagonally away from that corner creates the fold. The target image is revealed under the lifted page — like turning a real page.

Cross-Platform Support

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

Creation & Destruction

swipetrans#(parent#)

Creates a new swipe transition effect attached to the specified visual control.

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

swipetrans_free(effect#)

Destroys the effect and releases associated resources.

Error Handling

FunctionSignatureDescription
swipetrans_error()swipetrans_error@Returns last error code (0 = none)
swipetrans_errormsg$()swipetrans_errormsg$@Returns last error message
swipetrans_strerror$(code)swipetrans_strerror$@nConverts error code to text
swipetrans_clearerror()swipetrans_clearerror@Clears the error state

Target Image

The target image is revealed underneath the folded page.

FunctionSignatureDescription
swipetrans_target#(effect#, bitmap#)swipetrans_target#@##Sets target from bitmap pointer
swipetrans_target#(effect#)swipetrans_target#@#Gets target bitmap pointer
swipetrans_loadtarget#(effect#, url$)swipetrans_loadtarget#@#$Loads target from URL or file
swipetrans_targetfromimage#(effect#, img#)swipetrans_targetfromimage#@##Sets target from image control

Mouse Point

Controls where the page corner is "pulled" to, in pixel coordinates. The page folds from the top-left corner by default, so moving the point diagonally toward the bottom-right creates the fold.

FunctionSignatureDescription
swipetrans_mousex#(effect#, value)swipetrans_mousex#@#nSet X position (pixels)
swipetrans_mousex(effect#)swipetrans_mousex@#Get X position
swipetrans_mousey#(effect#, value)swipetrans_mousey#@#nSet Y position (pixels)
swipetrans_mousey(effect#)swipetrans_mousey@#Get Y position
MouseX, MouseYEffect
0, 0No fold (corner at origin)
imgW/2, imgH/2Fold to center (halfway turned)
imgW, imgHFull page turn (corner at opposite end)

Fold Depth

Controls how curved or folded the page appears. Higher values create a more dramatic curl.

FunctionSignatureDescription
swipetrans_deep#(effect#, value)swipetrans_deep#@#nSet fold depth (0–100)
swipetrans_deep(effect#)swipetrans_deep@#Get depth
ValueEffect
0–10Nearly flat fold
20–40Natural page curl (recommended)
50–100Very dramatic fold/curl

Effect Control

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

Complete Examples

Example 1: Interactive Page Fold

╯ swipe-control.bas
let frm# = Pointer#(0)
let img# = Pointer#(0)
let swipe# = Pointer#(0)
let trkX# = Pointer#(0)
let trkY# = Pointer#(0)
let trkDeep# = Pointer#(0)
let lblX# = Pointer#(0)
let lblY# = Pointer#(0)
let lblDeep# = Pointer#(0)
let imgW = 200
let imgH = 150

frm# = form#("Swipe Control", 500, 500)

img# = image#(frm#)
image_bounds#(img#, 150, 20, imgW, imgH)
image_load#(img#, "https://picsum.photos/200/150?random=1")

swipe# = swipetrans#(img#)
swipetrans_loadtarget#(swipe#, "https://picsum.photos/200/150?random=2")
swipetrans_mousex#(swipe#, 100)
swipetrans_mousey#(swipe#, 75)
swipetrans_deep#(swipe#, 30)

lblX# = label#(frm#, "Mouse X: 100", 30, 190)
trkX# = trackbar#(frm#)
trackbar_bounds#(trkX#, 30, 215, 440, 25)
trackbar_max#(trkX#, imgW)
trackbar_value#(trkX#, 100)
trackbar_onchange#(trkX#, "OnX")

lblY# = label#(frm#, "Mouse Y: 75", 30, 260)
trkY# = trackbar#(frm#)
trackbar_bounds#(trkY#, 30, 285, 440, 25)
trackbar_max#(trkY#, imgH)
trackbar_value#(trkY#, 75)
trackbar_onchange#(trkY#, "OnY")

lblDeep# = label#(frm#, "Deep: 30", 30, 330)
trkDeep# = trackbar#(frm#)
trackbar_bounds#(trkDeep#, 30, 355, 440, 25)
trackbar_max#(trkDeep#, 100)
trackbar_value#(trkDeep#, 30)
trackbar_onchange#(trkDeep#, "OnDeep")

form_show(frm#)

function OnX(sender#) local v
  let v = trackbar_value(trkX#)
  swipetrans_mousex#(swipe#, v)
  label_text#(lblX#, "Mouse X: " + str$(v))
endfunction

function OnY(sender#) local v
  let v = trackbar_value(trkY#)
  swipetrans_mousey#(swipe#, v)
  label_text#(lblY#, "Mouse Y: " + str$(v))
endfunction

function OnDeep(sender#) local v
  let v = trackbar_value(trkDeep#)
  swipetrans_deep#(swipe#, v)
  label_text#(lblDeep#, "Deep: " + str$(v))
endfunction

Example 2: Animated Page Turn

╯ page-turn.bas
let frm# = Pointer#(0)
let img# = Pointer#(0)
let swipe# = Pointer#(0)
let tmr# = Pointer#(0)
let btn# = Pointer#(0)
let progress = 0
let imgW = 200
let imgH = 150

frm# = form#("Page Turn", 400, 350)

img# = image#(frm#)
image_bounds#(img#, 100, 30, imgW, imgH)
image_load#(img#, "https://picsum.photos/200/150?random=1")

swipe# = swipetrans#(img#)
swipetrans_loadtarget#(swipe#, "https://picsum.photos/200/150?random=2")
swipetrans_mousex#(swipe#, 0)
swipetrans_mousey#(swipe#, 0)
swipetrans_deep#(swipe#, 30)

tmr# = timer#()
timer_interval#(tmr#, 30)
timer_enabled#(tmr#, 0)
timer_ontimer#(tmr#, "Animate")

btn# = button#(frm#, "Turn Page")
button_bounds#(btn#, 140, 210, 120, 30)
button_onclick#(btn#, "StartTurn")

form_show(frm#)

function StartTurn(sender#)
  progress = 0
  timer_enabled#(tmr#, 1)
  button_enabled#(btn#, 0)
endfunction

function Animate(sender#) local x, y
  progress = progress + 0.03
  let x = progress * imgW
  let y = progress * imgH
  swipetrans_mousex#(swipe#, x)
  swipetrans_mousey#(swipe#, y)
  
  if progress >= 1 then
    timer_enabled#(tmr#, 0)
    button_enabled#(btn#, 1)
  endif
endfunction

Quick Reference

FunctionSignatureDescription
CREATION & DESTRUCTION
swipetrans#(parent#)swipetrans#@#Create effect
swipetrans_free(effect#)swipetrans_free@#Destroy effect
TARGET IMAGE
swipetrans_target#(effect#, bitmap#)swipetrans_target#@##Set target bitmap
swipetrans_target#(effect#)swipetrans_target#@#Get target bitmap
swipetrans_loadtarget#(effect#, url$)swipetrans_loadtarget#@#$Load target
swipetrans_targetfromimage#(effect#, img#)swipetrans_targetfromimage#@##Target from image
MOUSE POINT
swipetrans_mousex#(effect#, value)swipetrans_mousex#@#nSet X (pixels)
swipetrans_mousex(effect#)swipetrans_mousex@#Get X
swipetrans_mousey#(effect#, value)swipetrans_mousey#@#nSet Y (pixels)
swipetrans_mousey(effect#)swipetrans_mousey@#Get Y
FOLD DEPTH
swipetrans_deep#(effect#, value)swipetrans_deep#@#nSet fold depth (0–100)
swipetrans_deep(effect#)swipetrans_deep@#Get depth
EFFECT CONTROL
swipetrans_enabled#(effect#, value)swipetrans_enabled#@#nEnable/disable
swipetrans_enabled(effect#)swipetrans_enabled@#Get enabled state
swipetrans_trigger#(effect#, trigger$)swipetrans_trigger#@#$Set trigger
swipetrans_trigger$(effect#)swipetrans_trigger$@#Get trigger
ERROR HANDLING
swipetrans_error()swipetrans_error@Last error code
swipetrans_errormsg$()swipetrans_errormsg$@Last error message
swipetrans_strerror$(code)swipetrans_strerror$@nCode to text
swipetrans_clearerror()swipetrans_clearerror@Clear error state

See Also

LibraryDescription
SlideTransitionEffectLibSlide transition
FadeTransitionEffectLibCross-fade transition
DropTransitionEffectLibDrop transition