Overview

MaskToAlphaEffectLib converts the luminosity (brightness) of an image into alpha (transparency), wrapping the FireMonkey TMaskToAlphaEffect component. Darker pixels become more transparent while lighter pixels remain opaque. This is useful for creating transparency masks from grayscale images.

PropertyDetails
LibraryMaskToAlphaEffectLib
Prefixmask2a_
WrapsTMaskToAlphaEffect
Functions10
TypeVisual effect (non-transition)
CategoryCountDescription
Creation / Destruction2Create and free effect
Effect Control4Enabled and trigger get/set
Error Handling4Error codes and messages
🎨 No Properties: This effect has no adjustable parameters beyond Enabled and Trigger. The brightness-to-alpha conversion is fully automatic — just apply it and it works. This makes it the simplest effect to use in Plan9Basic.

How It Works

The effect maps each pixel's brightness (luminosity) directly to its alpha (transparency) channel:

Pixel BrightnessRGB ValueResulting AlphaVisibility
White255, 255, 255Fully opaqueCompletely visible
Light gray192, 192, 192~75% opaqueMostly visible
Medium gray128, 128, 128~50% opaqueSemi-transparent
Dark gray64, 64, 64~25% opaqueMostly transparent
Black0, 0, 0Fully transparentInvisible
💡 See the Effect: To see the transparency, use a colored form background. Without a visible background, transparent areas will appear black or invisible and the effect may seem like it isn't working.
⚠ Colored Images: For color images, the effect uses overall luminosity (not individual channels). Bright colors stay visible while dark colors become transparent, regardless of their hue.

Cross-Platform Support

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

Creation & Destruction

mask2a#(parent#)

Creates a new mask-to-alpha effect attached to the specified visual control.

ParameterTypeDescription
parent#PointerTarget visual control (e.g., image)
ReturnsPointerEffect handle, or 0 on failure

mask2a_free(effect#)

Destroys the effect and releases associated resources.

ParameterTypeDescription
effect#PointerEffect handle to destroy
╯ create-mask2a.bas
' Create mask-to-alpha effect — instant transparency!
let mask# = mask2a#(img#)

' Clean up when done
mask2a_free(mask#)

Error Handling

All four standard error functions are available for detecting and diagnosing issues.

FunctionSignatureDescription
mask2a_error()mask2a_error@Returns last error code (0 = none)
mask2a_errormsg$()mask2a_errormsg$@Returns last error message
mask2a_strerror$(code)mask2a_strerror$@nConverts error code to text
mask2a_clearerror()mask2a_clearerror@Clears the error state
CodeMeaning
0No error
1Invalid effect handle
2Invalid parameter value

Effect Control

Enable, disable, or trigger the mask-to-alpha effect at runtime.

FunctionSignatureDescription
mask2a_enabled#(effect#, value)mask2a_enabled#@#nEnable (1) or disable (0)
mask2a_enabled(effect#)mask2a_enabled@#Gets enabled state
mask2a_trigger#(effect#, trigger$)mask2a_trigger#@#$Sets trigger string
mask2a_trigger$(effect#)mask2a_trigger$@#Gets trigger string
╯ toggle-mask.bas
' Toggle the effect on and off
if mask2a_enabled(mask#) = 1 then
  mask2a_enabled#(mask#, 0)   ' Disable — show original
else
  mask2a_enabled#(mask#, 1)   ' Enable — apply transparency
endif

Complete Examples

Example 1: Basic Mask to Alpha

╯ basic-mask2a.bas
let frm# = Pointer#(0)
let img# = Pointer#(0)
let mask# = Pointer#(0)

frm# = form#("Mask to Alpha Demo", 400, 350)
form_fill#(frm#, "LightBlue")

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

' Apply mask-to-alpha effect
mask# = mask2a#(img#)

form_show(frm#)

Example 2: Toggle Effect

╯ toggle-mask-effect.bas
let frm# = Pointer#(0)
let img# = Pointer#(0)
let mask# = Pointer#(0)
let btn# = Pointer#(0)
let isOn = 1

frm# = form#("Toggle Mask Effect", 400, 350)
form_fill#(frm#, "Coral")

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

mask# = mask2a#(img#)

btn# = button#(frm#, "Disable Effect")
button_bounds#(btn#, 140, 210, 120, 30)
button_onclick#(btn#, "Toggle")

form_show(frm#)

function Toggle(sender#)
  if isOn = 1 then
    mask2a_enabled#(mask#, 0)
    isOn = 0
    button_text#(btn#, "Enable Effect")
  else
    mask2a_enabled#(mask#, 1)
    isOn = 1
    button_text#(btn#, "Disable Effect")
  endif
endfunction

Example 3: Compare With/Without Effect

╯ mask-comparison.bas
let frm# = Pointer#(0)
let img1# = Pointer#(0)
let img2# = Pointer#(0)
let mask# = Pointer#(0)
let lbl1# = Pointer#(0)
let lbl2# = Pointer#(0)

frm# = form#("Mask Comparison", 500, 350)
form_fill#(frm#, "Orange")

' Original image
img1# = image#(frm#)
image_bounds#(img1#, 50, 30, 180, 135)
image_load#(img1#, "https://picsum.photos/180/135")
lbl1# = label#(frm#, "Original", 110, 175)

' With mask-to-alpha
img2# = image#(frm#)
image_bounds#(img2#, 270, 30, 180, 135)
image_load#(img2#, "https://picsum.photos/180/135")
mask# = mask2a#(img2#)
lbl2# = label#(frm#, "Mask to Alpha", 310, 175)

form_show(frm#)

Best Practices

PracticeWhy
Use a colored form backgroundMakes the transparency effect visible — otherwise transparent areas appear black
Works best with grayscale or high-contrast imagesProduces the clearest and most predictable transparency results
Combine with other effects for layeringUse mask-to-alpha on overlapping images to create composite scenes
Toggle for before/after comparisonLet users see the original and masked versions side by side
No parameters to tuneSimply create the effect — it works automatically with no configuration

Quick Reference

FunctionSignatureDescription
CREATION & DESTRUCTION
mask2a#(parent#)mask2a#@#Create effect
mask2a_free(effect#)mask2a_free@#Destroy effect
EFFECT CONTROL
mask2a_enabled#(effect#, value)mask2a_enabled#@#nEnable/disable
mask2a_enabled(effect#)mask2a_enabled@#Get enabled state
mask2a_trigger#(effect#, trigger$)mask2a_trigger#@#$Set trigger
mask2a_trigger$(effect#)mask2a_trigger$@#Get trigger
ERROR HANDLING
mask2a_error()mask2a_error@Last error code
mask2a_errormsg$()mask2a_errormsg$@Last error message
mask2a_strerror$(code)mask2a_strerror$@nCode to text
mask2a_clearerror()mask2a_clearerror@Clear error state

See Also

LibraryDescription
ColorKeyAlphaEffectLibMake specific colors transparent
InvertEffectLibInvert image colors
MonochromeEffectLibConvert to grayscale
FillEffectLibFill with solid color