DrawMode-aware graphics facade. With window.DrawMode == 0 its resource factories use GDI+; with window.DrawMode == 1 they create the corresponding Direct2D resources instead. A Worker uses the DrawMode captured when that Worker is created, so the same gdi.* calls match the parent panel graphics backend.
Brush(type, param1, param2, param3, param4)
Creates a drawing brush of the specified type. The meaning of the brush's input parameters depends on its type.
For type == BrushType.Solid:
- param1: brush colour in ARGB
For type == BrushType.LinearGradient:
- param1: start point coords of linear gradient in form of Array(2) (for ex.: [0, 0])
- param2: end point coords of linear gradient in form of Array(2) (for ex.: [100, 0])
- param3: gradient stops specified as an array with alternating position and color values for each stop (for ex.: [0.0, 0xFF000000, 0.5, 0xFFFF0000, 1.0, 0xFFFFFFFF])
- param4: wrap mode responsible for how the gradient is repeated when drawing. See BrushWrapMode. Default is BrushWrapMode.Tile
For type == BrushType.RadialGradient:
- param1: center point coords of radial gradient in form of Array(2) (for ex.: [50, 50])
- param2: radius values for X and Y axes in form of Array(2) (for ex.: [50, 50])
- param3: gradient stops specified as an array with alternating position and color values for each stop (for ex.: [0.0, 0xFF000000, 0.5, 0xFFFF0000, 1.0, 0xFFFFFFFF])
- param4: wrap mode responsible for how the gradient is repeated when drawing. See BrushWrapMode. Default is BrushWrapMode.Tile
For type == BrushType.Bitmap:
- param1: GdiBitmap object used for drawing by brush
- param2: wrap mode responsible for how the image is repeated when drawing. See BrushWrapMode
Parameters
| Name | Type | Description |
type | BrushType | |
param1 | * | |
param2 = undefinedoptional | * | |
param3 = undefinedoptional | * | |
param4 = undefinedoptional | * | |
Returns
GdiBrush —
Brush object used in Draw/Fill methods
Throws
Error —
If the brush parameters are invalid, including malformed points, radius values, gradient stops, or bitmap input.
CreateImage(w, h)
Parameters
| Name | Type | Description |
w | number | |
h | number | |
CreateImageFromPixelData(pixelData, width, height, format = "bgra32")
Create GdiBitmap from raw pixel data in memory.
Parameters
| Name | Type | Description |
pixelData | Uint8Array | Raw pixel bytes |
width | number | Image width in pixels |
height | number | Image height in pixels |
format = "bgra32"optional | string | Pixel format string (default: "bgra32") Supported formats: "bgra32" 32bpp BGRA "rgba32" 32bpp RGBA "bgr24" 24bpp BGR "rgb24" 24bpp RGB
|
Returns
GdiBitmap —
null if was an error (for example pixelData array length is not suitable for the specified parameters)
Throws
Error —
If data is not a non-empty Uint8Array.
Font(name, size_px, style)
Performance note: avoid using inside on_paint.
Performance note II: try caching and reusing GdiFont objects, since the maximum amount of such objects is hard-limited by Windows. GdiFont creation will fail after reaching this limit.
Parameters
| Name | Type | Description |
name | string | |
size_px | number | See Point2Pixel function for conversions |
style = 0optional | number | See FontStyle flags |
Returns
?GdiFont —
null, if font is not present.
Image(path)
Parameters
| Name | Type | Description |
path | string | |
Example
let img = gdi.Image('e:\\images folder\\my_image.png');
LoadImageAsync(window_id, path)
Load image from file asynchronously.
Relative filesystem paths are resolved as described in utils.ReadTextFile.
Parameters
| Name | Type | Description |
window_id | number | unused |
path | string | |
Throws
Error —
If the panel host is unavailable or foobar2000 is not fully initialized.
LoadImageAsyncV2(window_id, path)
Load image from file asynchronously. Returns a Promise object, which will be resolved when image loading is done.
Relative filesystem paths are resolved as described in utils.ReadTextFile.
Parameters
| Name | Type | Description |
window_id | number | unused |
path | string | |
Throws
Error —
If the panel host is unavailable or foobar2000 is not fully initialized.
LoadSVG(path_or_xml, max_width)
Loads rasterized image from SVG file or XML string
Relative filesystem paths are resolved as described in utils.ReadTextFile. Raw SVG/XML strings are used as-is.
Parameters
| Name | Type | Description |
path_or_xml | string | string containing SVG file path or raw XML |
max_width = 0optional | number | If specified rasterizes with width = max_width and height according to the proportions, otherwise uses "width" and "height" attributes in SVG header if exist |
Returns
?GdiBitmap —
Rasterized bitmap, null in case of error
Example
const svg_file = fb.ComponentPath + 'samples\\svg\\android.svg';
const original = gdi.LoadSVG(svg_file);
const large = gdi.LoadSVG(svg_file, 512);
function on_paint(gr) {
gr.DrawImage(original, 0, 0, original.Width, original.Height, 0, 0, original.Width, original.Height);
gr.DrawImage(large, original.Width, 0, large.Width, large.Height, 0, 0, large.Width, large.Height);
}