Kōtuku
  • Gallery
  • API
  • Wiki
  • GitHub
    • Audio
    • Config
    • Core
    • Display
    • Document
    • Font
    • HTTP
    • Network
    • Regex
    • SVG
    • Tiri
    • Vector
    • XML
    • XQuery
    • XRandR
      • Audio
      • MP3
      • Sound
      • File
      • MetaClass
      • Module
      • StorageDevice
      • Task
      • Thread
      • Time
      • Compression
      • CompressedStream
      • Config
      • LZMAStream
      • Script
      • Tiri
      • XML
      • XQuery
      • Controller
      • BlurFX
      • ColourFX
      • CompositeFX
      • ConvolveFX
      • DisplacementFX
      • FilterEffect
      • FloodFX
      • ImageFX
      • LightingFX
      • MergeFX
      • MorphologyFX
      • OffsetFX
      • RemapFX
      • SourceFX
      • TurbulenceFX
      • WaveFunctionFX
      • Scintilla
      • Bitmap
      • Clipboard
      • Display
      • Document
      • Font
      • Image
      • Pointer
      • Surface
      • SVG
      • ClientSocket
      • HTTP
      • NetClient
      • NetLookup
      • NetServer
      • NetSocket
      • Proxy
      • Gradient
      • GradientConic
      • GradientContour
      • GradientDiamond
      • GradientDiffusion
      • GradientDistal
      • GradientGouraud
      • GradientLinear
      • GradientMesh
      • GradientRadial
      • GradientVoronoi
      • Vector
      • VectorClip
      • VectorColour
      • VectorEllipse
      • VectorFilter
      • VectorGradient
      • VectorGroup
      • VectorImage
      • VectorPath
      • VectorPattern
      • VectorPolygon
      • VectorRectangle
      • VectorScene
      • VectorShape
      • VectorSpiral
      • VectorText
      • VectorTransition
      • VectorViewport
      • VectorWave
      • Linux Builds
      • Windows Builds
      • Customising Your Build
      • Kōtuku Objects
      • Kōtuku In Depth
      • Kōtuku Design Patterns
      • Coding With AI
      • Regex Manual
      • XML Comparisons
      • Tiri Reference Manual
      • Config API
      • Defer Syntax
      • GUI API
      • HTTP Server API
      • I/O API
      • JSON API
      • OAuth API
      • Options API
      • Proxy Server API
      • Tempus API
      • URL API
      • VFX API
      • Widgets
      • RIPL Reference Manual
      • Origo
      • Flute / Unit Testing
      • Tuku
      • Embedded Document Format
      • TDL Reference Manual
      • TDL Tools
      • Action Reference Manual
      • System Error Codes

DisplacementFX Class

Applies the displacement map filter effect.

This filter effect uses the pixel values from the image from Mix to spatially displace the image from Input. This is the transformation to be performed:

P'(x,y) <- P(x + Scale * (XC(x,y) - 0.5), y + Scale * (YC(x,y) - 0.5))

where P(x,y) is the Input image, and P'(x,y) is the Target. XC(x,y) and YC(x,y) are the component values of the channel designated by the XChannel and YChannel. For example, to use the red component of Mix to control displacement in X and the green component to control displacement in Y, set XChannel to CMP::RED and YChannel to CMP::GREEN.

The displacement map defines the inverse of the mapping performed.

The Input image is to remain premultiplied for this filter effect. The calculations using the pixel values from Mix are performed using non-premultiplied colour values. If the image from Mix consists of premultiplied colour values, those values are automatically converted into non-premultiplied colour values before performing this operation.

Structure

The DisplacementFX class consists of the following fields:

Access
NameTypeComment
 ResampleMethodVSMThe resample algorithm to use for transforming the source image.

Currently NEIGHBOUR and BILINEAR are supported. Other resample methods fall back to bilinear filtering.

NameDescription
VSM::AUTOThe default option is chosen by the system. This will typically be BILINEAR, but slow machines may switch to nearest neighbour and high speed machines could use more advanced methods.
VSM::BESSELUses a broad Bessel filter that can preserve detail during resampling, but is slower than the smaller-kernel methods.
VSM::BICUBICProduces a similar result to BILINEAR at a slightly higher CPU cost and a marginally sharper after-effect.
VSM::BILINEARBilinear is a common algorithm that produces a reasonable quality image quickly.
VSM::BLACKMANFive times slower than BILINEAR, the final result will be less sharp than SINC.
VSM::GAUSSIANUses a Gaussian filter that softens the result, reducing aliasing at the cost of sharp edge detail.
VSM::KAISERUses a Kaiser-windowed filter, giving smooth interpolation with low ringing and a cost close to BILINEAR.
VSM::LANCZOSThis well known algorithm may serve as a point of comparison for evaluating the results of other methods. It shares characteristics with SINC and BLACKMAN.
VSM::MITCHELLUses a Mitchell-Netravali filter, balancing sharpness and smoothness at a cost similar to BICUBIC.
VSM::NEIGHBOURNearest neighbour is the fastest sampler at the cost of poor quality.
VSM::QUADRICUses a quadratic filter with a modest kernel, giving smoother results than BILINEAR with limited extra cost.
VSM::SINCFive times slower than BILINEAR, the final result is of very good quality.
VSM::SPLINE16About twice as slow as BILINEAR, this method samples a 4x4 area and produces a considerably better result, and is a good choice for enlarging images without producing artifacts when contrasting colours are present.
 ScaleDOUBLEDisplacement scale factor.

The amount is expressed in the coordinate system established by VectorFilter⇒PrimitiveUnits on the parent VectorFilter. When the value of this field is 0, this operation has no effect on the source image.

 XChannelCMPX axis channel selection.
NameDescription
CMP::ALLAll colour channels.
CMP::ALPHAThe alpha channel.
CMP::BLUEThe blue colour channel.
CMP::GREENThe green colour channel.
CMP::REDThe red colour channel.
 XMLDefSTRINGReturns an SVG compliant XML string that describes the effect.
 YChannelCMPY axis channel selection.
NameDescription
CMP::ALLAll colour channels.
CMP::ALPHAThe alpha channel.
CMP::BLUEThe blue colour channel.
CMP::GREENThe green colour channel.
CMP::REDThe red colour channel.

Actions

The following actions are currently supported:

DrawRender the effect to the target bitmap.
ERR acDraw(*Object, DOUBLE X, DOUBLE Y, DOUBLE Width, DOUBLE Height)
ParameterDescription
XThe X position of the region to be drawn.
YThe Y position of the region to be drawn.
WidthThe width of the region to be drawn.
HeightThe height of the region to be drawn.
DisplacementFX class documentation © Paul Manias © 2010-2026

CMP Type

Component selection for RemapFX methods.

NameDescription
CMP::ALLAll colour channels.
CMP::ALPHAThe alpha channel.
CMP::BLUEThe blue colour channel.
CMP::GREENThe green colour channel.
CMP::REDThe red colour channel.
DisplacementFX module documentation © Paul Manias © 2010-2026

VSM Type

NameDescription
VSM::AUTOThe default option is chosen by the system. This will typically be BILINEAR, but slow machines may switch to nearest neighbour and high speed machines could use more advanced methods.
VSM::BESSELUses a broad Bessel filter that can preserve detail during resampling, but is slower than the smaller-kernel methods.
VSM::BICUBICProduces a similar result to BILINEAR at a slightly higher CPU cost and a marginally sharper after-effect.
VSM::BILINEARBilinear is a common algorithm that produces a reasonable quality image quickly.
VSM::BLACKMANFive times slower than BILINEAR, the final result will be less sharp than SINC.
VSM::GAUSSIANUses a Gaussian filter that softens the result, reducing aliasing at the cost of sharp edge detail.
VSM::KAISERUses a Kaiser-windowed filter, giving smooth interpolation with low ringing and a cost close to BILINEAR.
VSM::LANCZOSThis well known algorithm may serve as a point of comparison for evaluating the results of other methods. It shares characteristics with SINC and BLACKMAN.
VSM::MITCHELLUses a Mitchell-Netravali filter, balancing sharpness and smoothness at a cost similar to BICUBIC.
VSM::NEIGHBOURNearest neighbour is the fastest sampler at the cost of poor quality.
VSM::QUADRICUses a quadratic filter with a modest kernel, giving smoother results than BILINEAR with limited extra cost.
VSM::SINCFive times slower than BILINEAR, the final result is of very good quality.
VSM::SPLINE16About twice as slow as BILINEAR, this method samples a 4x4 area and produces a considerably better result, and is a good choice for enlarging images without producing artifacts when contrasting colours are present.
DisplacementFX module documentation © Paul Manias © 2010-2026