An inline HSV colour picker: a saturation/value square, a vertical hue strip, a live swatch + hex readout, and a row of preset swatches. Dragging the square sets saturation (x) and value (y); dragging the strip sets hue; clicking a preset jumps to it. onChange fires continuously while dragging with the opaque 0xFFRRGGBB colour.

The square and strip are gradient fills (no bitmaps), so the widget is cheap and repaints only when the selection moves. It reuses UIColor.hsv / UIColor.toHSV.

Constructor

new(width:Float, ?initialColor:Int, ?onChange:Int ‑> Void)

Parameters:

width

layout width

initialColor

the starting colour (default red)

onChange

fired continuously while the colour changes

Variables

color:Int

The current colour (opaque 0xFFRRGGBB).

@:value([UIColor.opaque(0xE23D3D), UIColor.opaque(0xE2913D), UIColor.opaque(0xE2D63D), UIColor.opaque(0x53C24E), UIColor.opaque(0x3DB7E2), UIColor.opaque(0x4E63C2), UIColor.opaque(0x9B4EC2), UIColor.opaque(0xE2E2E2), UIColor.opaque(0x2A2A2E)])presets:Array<Int> = [UIColor.opaque(0xE23D3D), UIColor.opaque(0xE2913D), UIColor.opaque(0xE2D63D), UIColor.opaque(0x53C24E), UIColor.opaque(0x3DB7E2), UIColor.opaque(0x4E63C2), UIColor.opaque(0x9B4EC2), UIColor.opaque(0xE2E2E2), UIColor.opaque(0x2A2A2E)]

Preset swatches shown in the bottom row (opaque colours).

@:value(null)onChange:Int ‑> Void = null

Fired continuously as the colour changes.

Methods

Inherited Variables

Defined by UIComponent

@:value(true)enabled:Bool = true

Disabled widgets ignore the pointer and typically render dimmed.

@:value(0)read onlyh:Float = 0

Layout height in UI units.

@:value(MouseCursor.BUTTON)hoverCursor:MouseCursor = MouseCursor.BUTTON

Native cursor while hovering (interactive widgets; null keeps the arrow).

@:value(false)read onlyhovered:Bool = false

true while the cursor is over this widget.

@:value(false)longPressable:Bool = false

Opts a subclass that overrides onRightPress (without setting onRightClick) into long-press-as-right-click on touch. Widgets with onRightClick set are included automatically.

@:value(null)onClick:() ‑> Void = null

Fired on a completed click (press + release on this widget). Requires an interactive widget.

@:value(null)onHover:() ‑> Void = null

Fired when the cursor first enters this widget (hover-driven descriptions/previews). Interactive widgets only.

@:value(null)onRightClick:() ‑> Void = null

Fired on a right mouse press over this widget (context menus). Only interactive widgets receive pointer events, so this never fires on passive widgets like UILabel/UIPanel — attach it to a UIButton (or another interactive widget) instead. On touch, a long-press fires the same path (see UIRoot.longPressMs).

@:value(false)read onlypressed:Bool = false

true while a press that started here is held.

@:value(null)tooltip:String = null

Optional tooltip text (already-localized or a fixed string).

@:value(null)tooltipShortcut:String = null

Optional right-aligned shortcut hint rendered in the tooltip.

@:value(0)read onlyw:Float = 0

Layout width in UI units (independent of DisplayObject's content-derived width).

Inherited Methods

Defined by UIComponent

dispose():Void

Tears the widget down: listeners, pointer references, children, parent link.

invalidate():Void

Schedules a repaint for the next frame (cheap; deduplicated).

resize(width:Float, height:Float):Void

Sets the layout size and repaints when it changed.

Parameters:

width

the new layout width in UI units

height

the new layout height in UI units