3.7 ToolkitDaten-Struktur DM_ToolkitDataArgs

Diese Struktur kann als Daten-Parameter an die Funktion DM_GetToolkitDataEx übergeben werden. Sie dient dabei zur Kommunikation in beide Richungen und erlaubt die Übergabe und Rückgabe verschiedener Wertetypen. Als Markierung für einen gesetzten Wert dienen dabei mit logischem ODER verknüpfte DM_TKAM_*-Defines im argmask-Feld der Struktur.

Das argmask Feld muss zwingend initialisiert werden bevor DM_GetToolkitDataEx aufgerufen wird.

Die DM_Rectangle-Struktur ist eine Hilfsstruktur für die Koordinaten und Größe einer rechteckigen Objektform.

typedef struct {

DM_Int4 x;

DM_Int4 y;

DM_UInt4 width;

DM_UInt4 height;

} DM_Rectangle;

 

/*

** T O O L K I T A R G U M E N T S

**

** Extend the DM_GetToolkitData() and DM_SetToolkitData() functions

** with additional calling informationen and output data.

*/

#define DM_TKAM_index (1 << 0)

#define DM_TKAM_data (1 << 1)

#define DM_TKAM_handle (1 << 2)

#define DM_TKAM_widget (1 << 3)

#define DM_TKAM_rectangle (1 << 4)

#define DM_TKAM_tile (1 << 5)

#define DM_TKAM_dpi (1 << 6)

#define DM_TKAM_scaledpi (1 << 7)

#define DM_TKAM_tile_req (1 << 8)

 

typedef struct {

DM_UInt4 argmask;

DM_Value index;

DM_Value data;

#if defined(WSIWIN) || defined(WIN32)

HANDLE handle;

#endif

# if defined(MOTIF) || defined(QT)

# ifdef _XtIntrinsic_h

Widget widget;

# else

DM_Pointer widget;

# endif

#endif

DM_Rectangle rectangle;

 

/* structure members for DM_TKAM_tile */

struct {

DM_UInt2 gfxtype; /* the specific DM_GFX picture type */

#if defined(WSIWIN) || defined(WIN32)

DM_UInt2 datatype;

union {

struct {

HANDLE data;

HBITMAP mask;

HPALETTE palette;

};

LPUNKNOWN iunk;

};

#endif

#if defined(QT)

DM_Pointer pixmap;

#endif

#if defined(MOTIF)

# ifdef _X11_XLIB_H_

XImage* ximage;

# else

DM_Pointer ximage;

# endif

# ifdef X_H

Pixmap pixmap;

Pixmap trans_mask;

# else

DM_Pointer pixmap;

DM_Pointer trans_mask;

# endif

#endif

DM_UInt dpi;

} tile;

 

/* structure members for DM_TKAM_dpi */

DM_UInt dpi;

/* structure members for DM_TKAM_scaledpi */

struct {

DM_UInt dpi;

DM_UInt factor; /* in percent */

} scale;

 

/* structure member for DM_TKAM_tile_reqtype */

DM_UInt2 tile_req; /* the possible DM_GFX picture types (bitwise or'ed) */

} DM_ToolkitDataArgs;

Bedeutung der Elemente

DM_UInt4 argmask

Ein-/Ausgabe: Muss vor dem Aufruf initialisiert werden. Wenn Felder als Eingabe verwendet werden, dann müssen die entsprechenden Bits gesetzt sein. DM_GetToolkitDataEx füllt je nach abgefragtem Attribut Felder dieser Struktur aus und fügt die entsprechenden Bits der „armask“ hinzu. In folgender Liste wird das zugehörige Bit in Klammern hinter dem Feld aufgeführt.

DM_Value index

Eingabe: Index einer Tabellenzelle

Bits: DM_TKAM_index

DM_Value data

Ausgabe: DM_ID und Datentyp eines IDM-Objekts.

Bits: DM_TKAM_widget, DM_TKAM_widget

DM_Rectangle rectangle

Ausgabe: Koordinaten und Größe einer rechteckigen Objektform oder Breite und Höhe eines Bildes - je nach gesetzter argmask.

Bits: DM_TKAM_rectangle, DM_TKAM_tile

DM_UInt2 tile.gfxtype

Ausgabe: Wird auf den GFX Type gesetzt, der am besten passt.

Bits: DM_TKAM_tile

DM_UInt tile.dpi

Ausgabe: Der DPI Wert für den die vom IDM geladenen Bilder entworfen wurden.

Bits: DM_TKAM_tile

DM_UInt dpi

Ausgabe: Standard DPI Wert des Systems (meist 96). (Microsoft Windows: siehe unten)

Bits: DM_TKAM_dpi, DM_TKAM_tile

int scale.dpi

Ausgabe: Der vom System entsprechend der eingestellten Skalierung gesetzte DPI-Wert. (Microsoft Windows: siehe unten)

Bits: DM_TKAM_scaledpi, DM_TKAM_tile

int scale.factor

Ausgabe: Systemskalierungfaktor (Microsoft Windows: siehe unten)

Bits: DM_TKAM_scaledpi, DM_TKAM_tile

DM_UInt2 tile_req

Eingabe: Gewünschter Datentyp bei Abfrage einer tile Ressource.

Bit: DM_TKAM_tile_reqtype

3.7.1 Spezifische Strukturelemente für Microsoft Windows

Die für das Fenstersystem Microsoft Windows spezifischen Parameter sind wie folgt definiert:

HANDLE handle

Eingabe: Je nach abgefragtem Attribut kann hier ein Microsoft Windows Handle als zusätzlicher Eingabeparameter gesetzt werden.

Bits: DM_TKAM_handle

DM_UInt2 tile.gfxtype

Ausgabe: Wird auf den GFX-Type gesetzt, der zurückgeliefert wird. Mögliche Werte sind:

- DM_GFX_BMP: GDI Bitmap Handle (HBITMAP) in "tile.data"
- DM_GFX_WMF: GDI Metafile Handle (HMETAFILE) in "tile.data"
- DM_GFX_EMF: GDI Enhanced Metafile Handle (HENHMETAFILE) in "tile.data"
- DM_GFX_ICO: GDI Icon Handle (HICON) in "tile.data"
- DM_GFX_D2D1BMP: Direct2D Bitmap (ID2D1Bitmap *) in "tile.iunk"
- DM_GFX_D2D1SVG: Direct2D SVG Document (ID2D1SvgDocument *) in "tile.iunk"
- DM_GFX_D2D1EMF: Direct2D Metafile (ID2D1GdiMetafile *) in "tile.iunk"

Bits: DM_TKAM_tile

DM_UInt2 tile.datatype

Ausgabe: Wird auf den "DMF_TlkData*"" Type gesetzt, der zurückgeliefert wird. Mögliche Werte sind:

- DMF_TlkDataIsIcon: Microsoft Windows Icon Handle in "tile.data"
- DMF_TlkDataIsWMF: Microsoft Windows Metafile Handle in "tile.data"
- DMF_TlkDataIsEMF: Microsoft Windows Enhanced Metafile Handle in "tile.data"
- DMF_TlkDataIsD2D1Bmp: Microsoft Direct2D Bitmap (ID2D1Bitmap *) in "tile.iunk"
- DMF_TlkDataIsD2D1SVG: Microsoft Direct2D SVG Documnet (ID2D1SvgDocument *)
in "tile.iunk"
- DMF_TlkDataIsD2D1EMF: Microsoft Direct2D Metafile (ID2D1GdiMetafile *) in "tile.iunk"
- sonst: Microsoft-Windows Bitmap Handle in "tile.data"

Bits: DM_TKAM_tile

HANDLE tile.data

Ausgabe: Wird auf die Daten gesetzt, der genaue Typ ist abhängig von tile.gfxtype bzw.
tile.datatype:

  • HICON: wenn DM_GFX_ICO bzw. DMF_TlkDataIsIcon

  • HBITMAP: wenn DM_GFX_BMP bzw. 0

  • HMETAFILE: wenn DM_GFX_WMF bzw. DMF_TlkDataIsWMF

  • HENHMETAFILE: wenn DM_GFX_EMF bzw. DMF_TlkDataIsEMF

Bits: DM_TKAM_tile

HBITMAP tile.mask

Ausgabe: Wird auf die monochrome Maske gesetzt, falls eine vorhanden ist. Dies kann nur bei DM_GFX_BMP vorkommen.

Bits: DM_TKAM_tile

HPALETTE tile.palette

Ausgabe: Wird auf die Farbpalette gesetzt, falls eine vorhanden ist.

Bits: DM_TKAM_tile

LPUNKNOWN tile.iunk

Ausgabe: In diesem Element wird gegebenenfalls der Microsoft Direct2D Interface-Zeiger abgelegt.

Bits: DM_TKAM_tile

DM_UInt dpi

Ausgabe: Wird auf den Microsoft Windows Standard DPI Wert gesetzt. Dies ist der Wert, den Anwendungen die DPI Unaware sind verwenden. Dieser Wert wird von Microsoft Windows als Konstante USER_DEFAULT_SCREEN_DPI (Wert: 96) definiert.

Diesen Wert verwendet der IDM auch für seine Pixelkoordinaten.

Bits: DM_TKAM_dpi, DM_TKAM_tile

int scale.dpi

Ausgabe: Wird auf den aktuellen DPI Wert des Objektes gesetzt. Wenn das Attribut AT_DPI abgefragt wird, ist der Rückgabewert von DM_GetToolkitDataEx und dieser Wert identisch. Dieser Wert ist beim IDM für Windows 11 dynamisch, wenn die Anwendung DPI Aware ist. Sonst, DPI Unaware oder IDM für Windows 10, ist der Wert fest auf 96 definiert.

Bits: DM_TKAM_scaledpi, DM_TKAM_tile

int scale.factor

Ausgabe: Ganzzahliger Prozentwert, der aus scale.dpi und dpi berechnet wird.)

Bits: DM_TKAM_scaledpi, DM_TKAM_tile

DM_UInt2 tile_req

Eingabe: Dient dazu, um einen bestimmten Datentyp bei der Abfrage einer tile-Ressource zu erhalten.
Es stehen folgende Werte zur Verfügung:

- DM_GFX_BMP: GDI Bitmap Handle (HBITMAP)
- DM_GFX_WMF: GDI Metafile Handle (HMETAFILE)
- DM_GFX_EMF: GDI Enhanced Metafile Handle (HENHMETAFILE)
- DM_GFX_ICO: GDI Icon Handle (HICON)
- DM_GFX_D2D1BMP: Direct2D Bitmap (ID2D1Bitmap *)
- DM_GFX_D2D1SVG: Direct2D SVG Documnet (ID2D1SvgDocument *)
- DM_GFX_D2D1EMF: Direct2D Metafile (ID2D1GdiMetafile *)

Diese Datentypen können mit "bitwise or" verknüpft angegeben werden. Der Wert DM_GFX_BMP ist als Fallback vorselektiert.

Bits: DM_TKAM_tile_req

3.7.2 Spezifische Strukturelemente für Qt

Für das Fenstersystem QT spezifischen Parameter sind wie folgt definiert:

DM_Pointer widget

Eingabe: Je nach abgefragtem Attribut kann hier ein QWidget als zusätzlicher Eingabeparameter gesetzt werden.

Bits: DM_TKAM_widget

DM_Pointer tile.pixmap

Ausgabe: Wird auf die QPixmap der Tile gesetzt. Datentyp in tile.gfxtype ist immer DM_GFX_QPIXMAP.

Bits: DM_TKAM_tile

3.7.3 Spezifische Strukturelemente für Motif

Für das Fenstersystem Motif spezifischen Parameter sind wie folgt definiert:

Widget/ DM_Pointer widget

Eingabe: Je nach abgefragtem Attribut kann hier ein XWidget als zusätzlicher Eingabeparameter gesetzt werden.

Bits: DM_TKAM_widget

XImage*/ DM_Pointer tile.ximage

Ausgabe: vollständige Bildinformationen als XImage, wenn tile.gfxtype = DM_GFX_XIMAGE

Bits: DM_TKAM_tile

Pixmap/DM_Pointer tile.pixmap

Ausgabe: Bildinformationen als Pixmap, wenn tile.gfxtype = DM_GFX_PIXMAP

Bits: DM_TKAM_tile

Pixmap/DM_Pointer tile.trans_mask

Ausgabe: die Transparenz-Clipmaske zugehörig zu den Bildinformationen in tile.pixmap, wenn tile.gfxtype = DM_GFX_PIXMAP

Bits: DM_TKAM_tile