PLUG'N SCRIPT
rapid plugin development
Tutorial
DSP
KUIML
How-to
Scripts
  • Overview
  • Tutorial
  • Reference
Layout and positioning
  • CELL
  • TABLE
Language basics
  • SKIN
  • DUMMY
  • INCLUDE
  • INCLUDE_ONCE
  • DEFINE
  • UNDEFINE
  • VARIABLE
  • LOCAL_VARIABLE
  • TEMPLATE
  • TEMPLATE_INNER_CONTENT
  • TEMPLATE_UNLOAD
  • REPEAT
Text widgets
  • TEXT
  • TEXT_FIELD
  • TEXT_EDIT_BOX
  • TOOLTIP
  • PARAM_TEXT
  • PARAM_TEXT_CONTROL
  • PARAM_TEXT_EDIT_BOX
  • PARAM_TOOLTIP
Image widgets
  • IMAGE
  • IMAGE_ACTION_BUTTON
  • IMAGE_GROUP_BOX
  • IMAGE_PARAM_BUTTON
  • IMAGE_PARAM_KNOB
  • IMAGE_PARAM_LINEAR_METER
  • IMAGE_PARAM_MENU_BUTTON
  • IMAGE_PARAM_METER
  • IMAGE_PARAM_SLIDER
  • IMAGE_PARAM_TOGGLE_SWITCH
  • XYZ_IMAGE_PARAM_JOYSTICK
Invisible controls
  • INVISIBLE_ACTION_BUTTON
  • INVISIBLE_PARAM_BUTTON
  • INVISIBLE_PARAM_KNOB
  • INVISIBLE_PARAM_MENU_BUTTON
  • INVISIBLE_PARAM_SLIDER
  • INVISIBLE_PARAM_TOGGLE_SWITCH
  • XY_PARAM_PAD
  • XY_ZOOM_SELECT_PAD
  • XYZ_PARAM_SCRATCH_PAD
  • XYZ_PARAM_CLICK_PAD
Drawing, curves & 3D
  • CANVAS
    • Graphics API
  • svg
  • CURVE_GRAPH
  • XY_CURVES_GRAPH
  • GRID
  • RULER
  • COLOR_SCALE
  • VIEW_3D
  • COLOR_SURFACE_3D
  • GRID_3D
  • GL_OBJECT_3D
    • OpenGL Cheat Sheet
  • SURFACE_COLORMAP_2DPLOT
Miscellaneous
  • SCRIPT
  • WIDGET
  • KUIML_WIDGET
  • POPUP_MENU
  • MENU_ITEM
  • MENU_SEPARATOR
  • FILE_SELECT_MENU
  • SYSTEM_ACTION_BUTTON
  • SYSTEM_PARAM_CHECKBOX
  • SYSTEM_PARAM_DROPDOWN_LIST
  • WINDOW
  • LOAD_FONT
Data model
  • STRING
  • PARAM
  • FORMULA_PARAM
  • PARAM_ANIMATOR
  • ACTION
    • Built-in action types
  • TIMER
  • ACTION_TRIGGER
  • CURVE
  • FORMULA_CURVE
  • CURVE_FROM_PARAM_OVER_TIME
  • SURFACE
  • FORMULA_SURFACE
  • SURFACE_FROM_CURVE_OVER_TIME
  • GROUP
Links and commands
  • PARAM_LINK
  • PARAM_MULTI_LINK
  • PARAM_CONNECTION
  • PARAM_TO_STRING_LINK
  • STRING_LINK
  • STRING_MULTI_LINK
  • CURVE_LINK
  • CURVE_MULTI_LINK
  • SURFACE_LINK
  • REQUIRED_OBJECTS
  • EXPOSED_OBJECTS
  • PERSISTENT_OBJECTS
Common attrubutes
  • For all elements
  • Widgets
  • Param Widgets
  • Param Controls
  • Param Info Viewers
  • Text Widgets
  • Surface Viewers
  • Curve Viewers
  • Images
  • 3D Objects
Additional information
  • All attributes
  • Attribute types
  • Cursors
  • Math formulas
  • Scripting
    • Built-in addons
  • User experience
  • Errors and solutions
  • Built-in variables
  • Runtime model
  • Parameters mapping
  • Script converter
  • LetiMix
KUIMLReferenceImages
September 01, 2025

Images

Supported Formats

The engine supports the following image formats:

  • BMP (.bmp): Requires a separate mask file for transparency if needed (e.g. my_image_mask.bmp).
  • PNG (.png): Supports embedded alpha transparency. Optional external masks can override it.
  • SVG (.svg): Supports basic SVGs with paths, fills, strokes, and gradients. Text and filters are not supported. SVGs scale automatically with zoom.
  • GIF (.gif) and JPEG (.jpg) are also supported. Animation in GIF is not supported.

Updating image files

Note that in Plug'n Script, if you update an image file while editing the .kuiml for your script, you need to fully reload the skin (not just .kuiml) to ensure the new version of the image is loaded from disk.

Paths to images

To specify the correct image path relative to the current script in Plug'n Script, you can use pre-defined variables such as $SCRIPT_DATA_PATH$ or (LM Skin only) $KUIML_DIR$.

Attributes brief detailed show all inherited

Name DescriptionDefault
image_scalingScaling of the image1 is 100%, 0.5 is 50%1
image_mouse_maskPath to the image file used to define the 'active' (clickable) zone of the imagethis is the zone of the image where the mouse is detected for clicks and movements. If we want the mouse to be active only on the round part of the knob in the previous example, we can add a sample_mouse_mask.bmp file which defines where the mouse is active. The white parts is active area, black parts - inactive.
There is also image_focus_mouse_mask and image_hover_mouse_mask for very specific cases.
empty
opaque_mouse_maskWhen set to 'true' makes the entire area of the widget clickable (if mouse sensitive)Note that image_mouse_mask="" and opaque_mouse_mask="true" seem to do the same. The slight difference is that opaque_mouse_mask entirely bypasses the whole image finding algorithm, so it is faster than having the equivalent such as image_mouse_mask="", image_focus_mouse_mask="", image_hover_mouse_mask="".false
ignore_mask_fileWhen set to "true" mask file is not used
ignore_mouse_mask_fileWhen set to "true" mouse mask file is not used
ignore_mask_filesWhen set to "true" mask files are not usedfalse
Common attributesRead about `common`
idIdentifier of the elementThe id of an element has to be globally unique. Don't start with a digit for AngelScript compatibility.empty
Name Value type Default Description Comment
image_scalingfloat1Scaling of the image1 is 100%, 0.5 is 50%
image_mouse_maskimage file pathemptyPath to the image file used to define the 'active' (clickable) zone of the imagethis is the zone of the image where the mouse is detected for clicks and movements. If we want the mouse to be active only on the round part of the knob in the previous example, we can add a sample_mouse_mask.bmp file which defines where the mouse is active. The white parts is active area, black parts - inactive.
There is also image_focus_mouse_mask and image_hover_mouse_mask for very specific cases.
opaque_mouse_maskbooleanfalseWhen set to 'true' makes the entire area of the widget clickable (if mouse sensitive)Note that image_mouse_mask="" and opaque_mouse_mask="true" seem to do the same. The slight difference is that opaque_mouse_mask entirely bypasses the whole image finding algorithm, so it is faster than having the equivalent such as image_mouse_mask="", image_focus_mouse_mask="", image_hover_mouse_mask="".
ignore_mask_fileWhen set to "true" mask file is not used
ignore_mouse_mask_fileWhen set to "true" mouse mask file is not used
ignore_mask_filesbooleanfalseWhen set to "true" mask files are not used
Common attributesRead about `common`
ididentifieremptyIdentifier of the elementThe id of an element has to be globally unique. Don't start with a digit for AngelScript compatibility.

Mouse Mask

Another file can be used to define the 'active' zone of the image: this is the zone of the image where the mouse is detected for clicks and movements. If we want the mouse to be active only on the round part of the knob in the previous example, we can add a sample_mouse_mask.bmp file which defines where the mouse is active:

Note: if this file does not exist, the system will choose by default the mask file (or the transparency layer for a transparent image). If you want the entire rectangle of the widget to be active, just set the image_mouse_mask attribute to “” (empty string).

Naming Conventions

By default, the engine looks for:

  • _mask suffix for transparency mask (e.g. my_img_mask.bmp)
  • _mouse_mask suffix for mouse interaction mask (e.g. my_img_mouse_mask.bmp)

If the mouse mask is not found, the mask file is used instead. You can override defaults using the image_mask and image_mouse_mask attributes. You can also make them empty ("") if you don't want to use them.

The same convention is recursively applied to other attributes for widgets that require multiple images. For example, for an IMAGE_PARAM_KNOB that requires image and image_hover attributes, the resolution of files for image_hover is done the following way:

  • if the “image_hover” attribute is set, use the file name.
  • else look for a file which name corresponds to “image” attribute suffixed with “hover”.
  • if not found, use the same file as for “image”

For the mask and mouse_mask, it works the same way. That means that you can use the same mask and mouse_mask file for all your widget states if they have the same shape. It avoids you to use copies of the same image and waste memory and disk space and also avoids you to have to fill all the attributes.

Opaque Mouse Mask

Use opaque_mouse_mask="true" to make the entire image area clickable, regardless of transparency. It is very handy for widgets that use transparent images and should be clickable in the entire area. 

Note that image_mouse_mask="" and opaque_mouse_mask="true" seem to do the same. The slight difference is that opaque_mouse_mask entirely bypasses the whole image finding algorithm, so it is faster than having the equivalent such as image_mouse_mask="", image_focus_mouse_mask="", image_hover_mouse_mask="".

Image Scaling

Use image_scaling attribute that represents the scaling factor to be used to load images. With this attribute, images will be scaled by the engine upon load.

Descendent elements

  • Images
    • IMAGE
    • IMAGE_ACTION_BUTTON
    • IMAGE_PARAM_BUTTON
    • IMAGE_PARAM_KNOB
    • IMAGE_PARAM_LINEAR_METER
    • IMAGE_PARAM_MENU_BUTTON
    • IMAGE_PARAM_METER
    • IMAGE_PARAM_SLIDER
    • IMAGE_PARAM_TOGGLE_SWITCH

Comments

Please, authorize to view and post comments.

2020 - 2026 © Site by LetiMix · Donate  |  Plug'n Script and KUIML by Blue Cat Audio