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> <scaleMode>
tileSpec ::= <tileBitmap> | "<Dateipfad>" | "<Grafikressource>" { scale | 
		noscale | numscale | propscale | dpiscale } { smooth }

 

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)(blank)

Ü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,
  "# # # # # # # # ",
  " # # # # # # # #",
  "# # # # # # # # ",
  " # # # # # # # #",
  "# # # # # # # # ",
  " # # # # # # # #",
  "# # # # # # # # ",
  " # # # # # # # #",
  "# # # # # # # # ",
  " # # # # # # # #",
  "# # # # # # # # ",
  "# # # # # # # # ",
  " # # # # # # # #",
  "# # # # # # # # ";

Hinweis zu Qt:

Bei der Nutzung von internen Mustern als Menü- oder Notepage-Bilder ist zu beachten, dass der scalestyle_none nicht zu einer realen 1:1 Pixeldarstellung führt wie bei einer Bilddatei üblich.

Wir raten von der Verwendung interner Muster als Fenstericon ab, da es hier zu einem fehlerhaften Zusammenspiel bei der parallelen Verwendung mit anderen Objektklassen, wie z.B. bei Menues, kommen kann.

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 scalestyle bei der Musterdefinition wird die Größe des Musters oder Bildes nach bestimmten Kriterien an den verfügbaren Platz angepasst.

Das Attribut .scalestyle 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.

dpiscale 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“

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.

2.8.4 Smooth Scaling

Das Skalieren von Pixel-Bilder ist meist nötig um Bilder in gewünschter Größe auf der Benutzeroberfläche darzustellen oder um Bilder für die aktuelle Skalierungsstufe des Desktops aufzubereiten.

Standardmäßig benutzt der IDM für diese Skalierungs bzw. Bildtransformation den schnellsten Skalierungalgorithmus „Nächster Nachtbar“. Dieser dupliziert schon vorhandene Pixelwerte (beim Vergrößern) oder lässt Pixel weg (beim Verkleinern).

Durch die Nutzung des smooth Schlüsselwort an der tile-Ressource kann explizit für dieses Muster auf einen interpolierenden Skalierungsalgorithmus gewechselt werden. Dieser berechnet fehlende Pixel aus den Nachbarpixeln oder „verrechnet“ mehrere Pixel beim Verkleinern.

Beide Skalierungsalgorithmen haben ihren Vor- und Nachteil und sollten nach dem Bildinhalt wie auch den möglichen Skalierungsgrößen gewählt werden.

Beispiel

Original

Nächster Nachbar / Fast Scaling

Interpoliert / Smooth Scaling

Vergrößerung auf 200% und 125%

Verkleinerung auf 75% und 50%

Vorteile

Kontrast bleibt erhalten

Bei minimalem Verkleinern/Vergrößern bleibt Bildeindruck erhalten

Interpolation verringert Treppchenbildung

Beim Verkleinern bleibt Bildinhalt erkennbar

Nachteile

Beim Vergrößern wirken sie "pixelig" oder es bilden sich "Treppen"

Informationsverlust beim Verkleinern

Kontrastreiche Bilder wirken unscharf, selbst beim minimalen Verkleinern/Vergrößern

Für einen optimalen Bildeindruck empfiehlt es sich Bilder in mehrere Größen bzw. Skalierungsstufen bereitzustellen. Dies kann als Ressource-Variante, als HiDPI-Bildvariante über @nx-Zusatzbilder (n = 2...9) oder unter Windows als Icon-Ressource mit mehreren Bildvarianten geschehen. Alternativ empfehlen sich auch Vektorbildern im SVG-Format.

2.8.5 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

.smooth_rescale

boolean

Aktiviert die interpolierende Skalierung

Standardwert false

2.8.6 SVG-Support

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

2.8.6.1 Hinweise für Qt

Die Dateiendung .svg wird 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 Hintergrundmuster 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.6.2 Hinweise für 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.

Es wird empfohlen, in einer Icondateien oder Iconressourcen nur Icondefinitionen mit derselben Farbtiefe zu verwenden, da nicht sichergestellt werden kann, dass bei gleicher Bildgröße das Bild mit der höheren Farbtiefe verwendet wird. Sind unterschiedliche Farbtiefen nötig, dann sollte eine 2. Icondatei oder Iconressource verwendet werden und auf den Variantenmechanismus des IDM zurückgegriffen werden.

Da Direct2D 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. Es wird empfohlen, für Fenstericon und Bilder der Objekte treeview und notepage eine Icondatei oder Icon-Ressource als Muster zu verwenden.

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

Siehe auch A.06.03.a