2.8 tile (Muster)

Grafiken, Bilder und Muster, die innerhalb des IDM verwendet werden, müssen als Ressource deklariert werden. Das Schlüsselwort hierzu ist tile, gefolgt von einem Bezeichner und der Musterdefinition. Die Musterdefinition ist dabei entweder direkt Bestandteil der IDM-Datei oder in einer separaten Grafikdatei enthalten.

Definition

{ export | reexport } tile <Bezeichner> <tileSpec> | <variantDef>
tileSpec ::= <tileBitmap> | "<Dateipfad>" | "<Grafikressource>" { scale | 
		noscale | numscale | propscale | } ;
tileBitmap ::= <x>, <y>,
               "<Musterzeile>"
           [ , "<Musterzeile>" ]
variantDef ::=
{
           0 :  <tileSpec> 
  [ <Nummer> :  <tileSpec> ]
}

Bei der Definition von Varianten wird empfohlen, immer eine Variante mit der Nummer 0 zu definieren, da diese als Standardvariante dient, wenn keine, eine nicht vorhandene oder eine ungültige Variante gesetzt wird. Die weiteren Nummern können beliebige natürliche Zahlen sein.

Die zu verwendende tile-Variante kann beim Start der Anwendung mit der Startoption ‑IDMtile gesetzt werden. Zur Laufzeit der Anwendung kann sie mit dem Attribut .tile des setup-Objekts abgefragt und gesetzt werden.

2.8.1 Internes Muster (Bitmap)

<x> und <y> stehen jeweils für die Anzahl der Pixel in horizontaler bzw. vertikaler Richtung. Breite (<x>) und Höhe (<y>) können beliebig gewählt werden.

<Musterzeile> bezeichnet eine Zeichenkette mit <x> Zeichen, in der jedes Zeichen ein Pixel des Musters repräsentiert. Es sind nur rechteckige Muster möglich, deshalb müssen genau <y> Musterzeilen mit jeweils <x> Zeichen definiert werden.

Die Musterzeilen bestehen aus den Zeichen Punkt (.) Leerzeichen ( ) und Doppelkreuz (#), die folgende Bedeutung haben:

.
(Leerzeichen)

Übernimmt die Hintergrundfarbe, d.h. an dieser Stelle ist das Muster transparent.

Wenn die tile-Ressource im .picture- bzw. .picture[enum]-Attribut eines image-Objekts verwendet wird und dessen Attribut .imagebgc gesetzt ist, erscheint an dieser Stelle ein Pixel in der Farbe .imagebgc.

#

An dieser Stelle erscheint ein Pixel in der Vordergrundfarbe.

Bei Verwendung der tile-Ressource im .picture- bzw. .picture[enum]-Attribut eines image-Objekts ist das die Farbe, die im Attribut .imagefgc des image-Objekts gesetzt ist.

Beispiel für die Definition eines internen Musters

tile TiGray 16, 16,
  "# # # # # # # # ",
  " # # # # # # # #",
  "# # # # # # # # ",
  " # # # # # # # #",
  "# # # # # # # # ",
  " # # # # # # # #",
  "# # # # # # # # ",
  " # # # # # # # #",
  "# # # # # # # # ",
  " # # # # # # # #",
  "# # # # # # # # ",
  "# # # # # # # # ",
  " # # # # # # # #",
  "# # # # # # # # ";

2.8.2 Externes Muster

Bei der Definition über einen Dateinamen (inklusive Pfad) geht der IDM davon aus, dass die Definition des Musters in einer separaten Grafikdatei erfolgt. Der IDM lädt die entsprechende Datei und stellt ihren Inhalt mit den Systemfunktionen des jeweiligen Toolkits dar. Deshalb ist es plattformabhängig, welche Grafikformate angezeigt werden können.

Die folgende Tabelle zeigt, welche Grafikformate auf den einzelnen Plattformen unterstützt werden:

Tabelle 24-4: Von der tile-Ressource unterstützte Grafikformate

Grafikformat

Dateiendung

Microsoft Windows

Motif

Qt

Graphics Interchange Format

.gif

ja

ja

ja

Device Independent Bitmap

.bmp

ja

nein

ja

X PixMap

.xpm

nein

ab Motif 2.1

nein

JPEG File Interchange Format

.jpg

ja

ab Motif 2.3

ja

Portable Network Graphics

.png

ja

ab Motif 2.3

ja

Enhanced Metafile
Windows Metafile

.emf
.wmf

ja

nein

nein

Aldus Placeable Metafile

.apm

ja

nein

nein

Windows Icon Resource File

.ico

ja

nein

nein

Windows Icon Resource
Windows Bitmap Resource

ja

nein

nein

Scalable Vector Graphics .svg ja nein

ja

Die Definition über eine Grafikressource wird nur vom IDM für Windows unterstützt. Hier können die Bezeichner IDM_AppIcon und IDM_DefIcon der in den IDM-Bibliotheken definierten Ressourcen verwendet werden (siehe auch Attribut .icon in der „Attributreferenz“).

Unter Microsoft Windows können außerdem folgende Bezeichner für vordefinierte Bitmap-Ressourcen des Systems angegeben werden:

BTNCORNERS

BTSIZE

CHECK

CHECKBOXES

CLOSE

COMBO

DNARROW

DNARROWD

DNARROWI

LFARROW

LFARROWD

LFARROWI

MNARROW

OLD_CLOSE

OLD_DNARROW

OLD_LFARROW

OLD_REDUCE

OLD_RESTORE

OLD_RGARROW

OLD_UPARROW

OLD_ZOOM

REDUCE

REDUCED

RESTORE

RESTORED

RGARROW

RGARROWD

RGARROWI

SIZE

UPARROW

UPARROWD

UPARROWI

ZOOM

ZOOMD

 

Hinweis

Die Bilder der tile Ressource werden nun automatisch entsprechend des eingestellten Vergrößerungsfaktor vergrößert. Es wird hierbei davon ausgegangen, dass die Bilder für einen DPI-Wert von 96 entworfen wurden. Sind die Bilder der Anwendung für eine höhere Auflösung entworfen worden, dann kann dies am setup Objekt mit dem Attribut .tiledpi eingestellt werden.

Bei der Spezifikation einer externen Datei wird empfohlen, den Pfad nicht absolut, sondern mit Hilfe einer Umgebungsvariablen zu definieren, z.B. "IDM_IMAGEPATH:Check.gif".

Weitere Grafikformate können mithilfe eines selbst implementierten Grafik-Handlers (GFX-Handler) verarbeitet werden (siehe Funktion DM_PictureHandler im Handbuch „C-Schnittstelle - Funktionen“).

2.8.3 Skalierung

Durch die Angabe eines scalestyles bei der Musterdefinition wird die Größe des Musters oder Bildes nach bestimmten Kriterien an den verfügbaren Platz angepasst.

Best Practice: Muster sollten wenn möglich bereits in der richtigen bzw. verwendeten Größe vorliegen, da jede Skalierung mit Verlusten an Schärfe oder Detailreichtum verbunden ist.

scale | noscale | numscale | propscale

Bestimmt die Art der Skalierung des Musters oder Bildes.

Definition am Tile Dynamische Setzung Bedeutung
noscale scalestyle_none

Das Muster bzw. Bild wird nicht skaliert., .tiledpi hat keine Auswirkungen.

scale scalestyle_any

Höhe und Breite des Musters bzw. Bildes werden voll auf die verfügbare Fläche vergrößert.

propscale scalestyle_prop

Höhe und Breite des Musters bzw. Bildes werden auf die verfügbare Fläche vergrößert, wobei Höhen- und Breitenproportionen des Musters bzw. Bildes auf jeden Fall erhalten bleiben. D.h. es können oben und unten bzw. links und rechts Freiflächen entstehen.

numscale scalestyle_num

Die Skalierung des Musters bzw. Bildes wird durch einen numerischen Skalierungsteiler vorgenommen. Dabei wird die Skalierung in Viertel-Schritten vorgenommen, also 1.25-fach, 1.5-fach, 1.75-fach, 2-fach, 2.25-fach, 2.5-fach, usw.
Eine Verkleinerung finded bis maximal 0.25-fach statt.

dpi scalestyle_dpi

Das Muster bzw. Bild wird immer entsprechend der eingestellten Bildschirmskalierung skaliert.

Keine Angabe

scalestyle_auto

Das Muster bzw. Bild wird entsprechend der eingestellten Bildschirmskalierung skaliert. Eine zur Vorgängerversion kompatible Skalierung findet statt. Defaultwert

Siehe auch

Attribut .scalestyle im Handbuch„Attributreferenz“

2.8.4 Dynamisch änderbare Attribute

Die änderbaren Attribute können der nachfolgenden Tabelle entnommen werden. Dabei ist zu beachten, dass sich .name einerseits sowie .width, .height und .pattern andererseits gegenseitig ausschließen, sodass get zu einer Fehlermeldung can't get value führt.

Bei varianten tile-Ressourcen wird auf die Attribute der aktuellen tile-Variante zugegriffen, die mit dem Attribut .tile des setup-Objekts abgefragt und gesetzt werden kann.

Tabelle 24-5: Änderbare Attribute der tile-Ressource

Attribut

Datentyp

Indexbereich

Beschreibung

.name

string

Dateipfad einer Grafikdatei.

.width

integer

Breite des Musters in Pixeln.

.height

integer

Höhe des Musters in Pixeln.

.pattern

string

Vollständiges Muster als String.

.pattern[integer]

string

1 … .height

Einzelne Zeilen des Musters.

Die Länge jedes Strings muss gleich .width sein.

.scale

boolean

Größenanpassung an den verfügbaren Platz.

Standardwert false (keine Größenanpassung).

.scalestyle

enum

Steuert die Darstellung und Skalierung eines Tiles.

Standardwert scalestyle_auto

2.8.5 SVG-Support

Unter Windows und Qt unterstützt die Tile-Ressource nun auch Vektor-Bilder im Scalable Vector Graphics-Format (.svg).

2.8.5.1 Qt

Zwar konnte der IDM für Qt bereits SVG-Bilder anzeigen, allerdings nur über ein pixelbasiertes Stellvertreterbild das entsprechend skaliert wurde. Die Dateiendung .svg wird jetzt als SVG-Bildformat erkannt und bei der Darstellung in den diversen Objekten ein vektorbasiertes Zeichnen angewandt. Dadurch wird bei Anwendungen, die auf HiDPI-Bildschirmen dargestellt werden, eine möglichst optimale Abbildungen von Vektorbildern erzielt.
Aus Gründen der Performanz wird beim Zeichnen von Hintergrund-Tiles von Gruppierungsobjekten im Stil tilestyle_tiled, das pixelbasierte Stellvertreterbild verwendet.

Installationshinweis: Das Qt-Paket qt5-qtsvg muss bereits installiert sein um die entsprechende SVG-Unterstützungs-Bibliothek verfügbar zu machen und die Startfähigkeit einer IDM-Anwendung zu gewährleisten.

2.8.5.2 Windows

Zur Darstellung von Bildern im "Scalable Vector Graphics" (SVG) Format wird Microsoft Direct2D verwendet. Die SVG-Unterstützung von Microsoft Direct2D ist abhängig von der Microsoft Windows Version. Ab dem Windows 10 Creators Update ist die Unterstützung in eingeschränkter Form gegeben.

Hinweise zur Verwendung des SVG Formats als ICON

Das SVG-Format lässt sich nicht einwandfrei zu einem Icon wandeln, deshalb eignet es sich nicht für die Darstellung als .picture des treeview- oder notepage-Objekts. Ebenso wenig eignet es sich als .icon des window-Objekts. Es können unschöne Ränder am Übergang zwischen durchsichtigem und gezeichnetem Bereich auftreten.

Mögliche Änderungen zur Vorgängerversion:
Da dieses Grafikpaket andere Skalierungsmethoden als das Windows GDI verwendet, können Muster (Bilder), die zur Anzeige skaliert werden müssen, anders aussehen als in den Vorgängerversionen des IDM. Das gilt insbesondere für Muster die als Fenstericon oder als Bilder in den Objekten treeview und notepage verwendet werden, da hier Microsoft Windows den Icondatentyp voraussetzt.
Best practice: Die Muster (Bilder) liegen bereits in der benötigten Größe vor.

Die SVG-Unterstützung von Microsoft Direct2D

Die Unterstützung hängt von der Microsoft Windows-Version ab. Ab dem Windows 10 Creators Update werden die folgenden SVG-Elemente und -Attribute unterstützt:

Element

Unterstützte Attribute

circle

id, style, transform, cx, cy, r

clipPath

id, style, transform, clipPathUnits

defs

id, style, transform

desc

id

ellipse

id, style, transform, cx, cy, rx, ry

g

id, style, transform

image

id, style, transform, x, y, width, height, preserveAspectRatio, xlink:href

line

id, style, transform, x1, y1, x2, y2

linearGradient

id, style, x1, y1, x2, y2, gradientUnits, gradientTransform, spreadMethod, xlink:href

path

id, style, transform, d

polygon

id, style, transform, points

polyline

id, style, transform, points

radialGradient

id, style, cx, cy, r, fx, fy, gradientUnits, gradientTransform, spreadMethod, xlink:href

rect

id, style, transform, x, y, width, height, rx, ry

stop

id, style, offset

svg

id, style, x, y, width, height, viewBox, preserveAspectRatio

title

id

use

id, style, transform, x, y, width, height, xlink:href

SVG-Darstellungsattribute

- clip-path

- clip-rule

- color

- display

- fill

- fill-opacity

- fill-rule

- opacity

- overflow

- stop-color

- stop-opacity

- stroke

- stroke-dasharray

- stroke-dashoffset

- stroke-linecap

- stroke-linejoin

- stroke-miterlimit

- stroke-opacity

- stroke-width

- visibility

Unterstützte Längeneinheiten

Die Längenwerte und prozentualen Längenwerte des Benutzerbereichs sowie die absoluten Einheitenbezeichner: px, pt, pc, cm, mm und in.

Bildquellen

Das Imageelement wird nur unterstützt, wenn sein xlink:href-Attribut auf ein base64-codiertes Image festgelegt ist.

Siehe hierzu auch: https://learn.microsoft.com/en-us/windows/win32/direct2d/svg-support