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 |
|
nein |
JPEG File Interchange Format |
.jpg |
ja |
|
ja |
Portable Network Graphics |
.png |
ja |
|
ja |
Enhanced Metafile |
.emf |
ja |
nein |
nein |
Aldus Placeable Metafile |
.apm |
ja |
nein |
nein |
Windows Icon Resource File |
.ico |
ja |
nein |
nein |
Windows Icon 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.
|
|
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. |
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
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.