Skip to main content

MgraDots

BoardSupported
Host SystemYes
V4L2Yes
Clarity UHDYes
Concord PoENo
GenTLYes
GevIQYes
GigE VisionYes
IndioNo
Iris GTXYes
Radient eV-CLYes
Rapixo CLYes
Rapixo CoFYes
Rapixo CXPYes
USB3 VisionYes

Draw one or more dots in an image, or add them to a 2D graphics list.

Syntax

void MgraDots(
AIL_ID ContextGraId, //in
AIL_ID DstImageBufOrListGraId, //out
AIL_INT NumberOfDots, //in
const AIL_DOUBLE * PosXArrayPtr, //in
const AIL_DOUBLE * PosYArrayPtr, //in
AIL_INT64 ControlFlag //in
)

Description

This function draws one or more dots destructively (raster-based) in the specified image. Alternatively, this function can add a vector-based version of the dots to the specified 2D graphics list, allowing you to, for example, non-destructively annotate a display without pixelation effects upon scaling.

Dots are based on the points positioned at PosXArrayPtr and PosYArrayPtr. The dots inherit all the relevant settings of the specified 2D graphics context, such as the foreground color (see MgraAlloc for default context settings). If part of the dots fall outside of the specified area (image or display), that part is clipped off.

To modify or inquire 2D graphics context settings, use MgraControl or MgraInquire. To modify or inquire 2D graphics list settings, use MgraControlList or MgraInquireList.

The coordinates of the dots are interpreted with respect to the input coordinate system, specified using MgraControl or MgraControlList with M_INPUT_UNITS. Note that if you set your input coordinate system to M_WORLD and you pass MgraDots an uncalibrated image, the function will generate an error.

To create a single dot without the option of creating multiple dots, use MgraDot.

Note that prior to Aurora Imaging Library 9.0, this function only supported integer positions; the PosXArrayPtr and PosYArrayPtr parameters only accepted arrays of type long. As of Aurora Imaging Library 9.0, this function includes support for positions with floating-point precision. To implement this change and maintain backwards compatibility when using a C++ compiler (.cpp), MgraDots is available as an inline function which automatically calls MgraDotsDouble, MgraDotsInt32, and,MgraDotsInt64 depending on whether PosXArrayPtr and PosYArrayPtr receive arrays of type AIL_DOUBLE, AIL_INT32, or AIL_INT64, respectively. To maintain backwards compatibility when using a C compiler (.c), MgraDots maps to MgraDotsInt32 when working on a 32-bit system, or MgraDotsInt64 when working on a 64-bit system; you must explicitly call MgraDotsDouble to pass PosXArrayPtr and PosYArrayPtr arrays of type_AIL_DOUBLE_. If you are an advanced user and want to retrieve a pointer to MgraDots, you must use the Double, Int64, or Int32 version of this function, since MgraDots is actually a macro or an overloaded function.

Note: Unlike most other functions that modify an Aurora Imaging Library object, you can call this function concurrently from multiple threads on the same Aurora Imaging Library 2D graphics list (DstImageBufOrListGraId) without using an M_MUTEX object, as long as all the other parameters of the concurrent calls do not also share data.

Parameters

ContextGraId (in, AIL_ID)

Specifies the identifier of the 2D graphics context. This parameter must be set to one of the following values:

For the identifier of the 2D graphics context

ValueDescription
M_DEFAULTSpecifies that the default 2D graphics context of the current Aurora Imaging Library application is used.

Note: Note that there is a different default 2D graphics context for each thread. | | 2D graphics context identifier | Specifies the identifier of the 2D graphics context, which you have allocated using MgraAlloc. |

DstImageBufOrListGraId (out, AIL_ID)

Specifies the identifier of a valid image buffer in which to draw the dots or the identifier of a valid 2D graphics list in which to add the dots. You must have allocated the image buffer or the 2D graphics list using MbufAlloc... or MgraAllocList, respectively.

NumberOfDots (in, AIL_INT)

Specifies the number of dots to draw.

PosXArrayPtr *(in, AIL_DOUBLE)

Specifies the address of the array containing the X-coordinate(s) of the dots to be drawn in the input coordinate system.

PosYArrayPtr *(in, AIL_DOUBLE)

Specifies the address of the array containing the Y-coordinate(s) of the dots to be drawn in the input coordinate system.

ControlFlag (in, AIL_INT64)

Reserved for future expansion. This parameter must be set to M_DEFAULT.

Copyright © 2026 Zebra Technologies.