Hinweis
Wenn bei der Einrichtung deines Bank-Zugangs (PIN/TAN, Chipkarte, Schlüsseldatei) Fehler auftreten, lege bitte keinen Bug-Report an. In aller Regel ist die Ursache kein Bug in Hibiscus sondern ein Fehler in der Konfiguration des Bank-Zugangs. Im Wiki findest du Anleitungen zu Kartenlesern und getesteten Banken. Im onlinebanking-forum.de findest du ebenfalls hilfreiche Tipps.
Bug 1731 - Icons sind zu klein für hochauflösende Bildschirme
Summary: Icons sind zu klein für hochauflösende Bildschirme
Status: RESOLVED FIXED
Alias: None
Product: Jameica
Classification: Unclassified
Component: GUI (show other bugs)
Version: 2.6
Hardware: All All
: P2 enhancement
Assignee: Olaf Willuhn
URL:
Depends on: 286
Blocks:
  Show dependency treegraph
 
Reported: 2016-05-17 22:12 CEST by Jörg
Modified: 2018-05-14 17:02 CEST (History)
1 user (show)

See Also:


Attachments
Kleine Icons (227.95 KB, image/png)
2016-05-17 22:12 CEST, Jörg
Details
Jameica 2.6.6 HiDpi (193.68 KB, image/png)
2017-09-29 10:50 CEST, Tom Mittelstädt
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Jörg 2016-05-17 22:12:54 CEST
Created attachment 691 [details]
Kleine Icons

Die Icons sind für hochauflösende Bildschirme viel zu klein. Ich nutze einen Laptop mit QHD Bildschirm (3.200 x 1.800). Die Icons lassen sich hier nur noch erahnen. Im Anhang ist ein Screenshot.

Da die Verbreitung von hochauflösenden Bildschirmen rasant zunehmen wird, sollten hier die Icons in verschiedenen Auflösungen zur Verfügung stehen.  

----
OS: Windows 10 64bit
QHD: https://en.wikipedia.org/wiki/Graphics_display_resolution#QHD.2B_.283200x1800.29
Comment 1 Olaf Willuhn 2016-05-17 22:41:50 CEST
Unter https://jaxenter.com/netbeans/hidpi-with-eclipse-and-netbeans ist ein Workaround fuer Eclipse beschrieben, der in Jameica auch funktionieren sollte.
Comment 2 Jörg 2016-05-17 23:16:47 CEST
Da ich auch Eclipse Nutzer bin, konnte ich den Workaround für mein Eclipse erfolgreich testen. Die Icons hatten anschließend zwar wieder normale größe, aber die ganze Software (vor allem die Schriften) war anschließend unscharf und ist eigentlich nicht zu benutzen (das machen die Augen nach wenigen Minuten nicht mehr mit).

Habe trotzdem versucht den Workaround für Hibiscus auszuführen - leider ohne Erfolg. Die Icons blieben klein. Da die Schriften auch scharf blieben, wird der Workaround hier wohl nicht 1:1 übertragbar sein?

Ich habe es vergeblich versucht mit den Dateien "jameica-win64.exe.manifest" und "jameica-win64.jar.manifest".
Comment 3 Jörg 2016-05-19 20:46:50 CEST
Das Problem mit Eclipse hat sich mit der aktuellen (noch nicht finalen) Version  4.6RC1 (Neon) erledigt. 

"SWT provides resolution-based auto-scaling"
https://www.eclipse.org/eclipse/news/4.6/M6/

Habe es installiert und es funktioniert Prima. Besteht die Hoffnung, dass Jameica irgendwann auf diese SWT Version upgraden wird?
Comment 4 Tom Mittelstädt 2017-09-29 10:50:29 CEST
Created attachment 726 [details]
Jameica 2.6.6 HiDpi

Das Problem besteht auch noch in der aktuellen Version unter Linux.

Ein paar Elemente werden scheinbar auflösungsunabhängig mit fester Pixel-Größe gezeichnet, sodass Text abgeschnitten wird und einige Schaltflächen wirklich winzigst werden (bspw. Zurück und Drucken)
Comment 5 Olaf Willuhn 2017-09-29 11:32:34 CEST
Ja, das stimmt. Ich bin bisher leider noch nicht dazu gekommen, mich wirklich um das Thema zu kuemmern. Zumal ich auch keinen HDPi-Monitor habe, mit dem ich das sinnvoll testen koennte.
Comment 6 Tom Mittelstädt 2017-09-29 12:18:34 CEST
Das sieht so aus, als wäre https://www.willuhn.de/bugzilla/show_bug.cgi?id=286 wiederbelebt worden.

Ich schau mir den Quelltext dazu mal an. Wäre nicht die erste Java-Anwendung, der ich das austreibe :)
Comment 7 Jörg 2017-10-01 19:47:49 CEST
Das Problem besteht in Windows 10 übrigens nicht mehr. Die Icons werden in normaler Größe gerendert. Ich weiß aber nicht ob die Verbesserung durch ein Jameica/Hibiscus Update oder durch ein Windows Update kam.

OS: Windows 10 Version 1703
Auflösung: 3.200 x 1.800
Windows Skalierung: 200%
Jameica/Hibiscus: 2.6.6/2.6.20

Aus der Sicht eines Windows-Users könnte man dieses Ticket wohl schließen.
Comment 8 Tom Mittelstädt 2017-10-02 11:01:24 CEST
Microsoft hat das letzte Jahr über einiges getan um für die schlimmsten Fehldarstellungen in Windows Workarounds zu liefern, um manche Anwendungen überhaupt wieder nutzbar zu machen. Ursache für den Entwicklungsaufwand dürfte v.a. gewesen sein, dass Text in "alten" Anwendungen regelmäßig auf hochauflösenden Displays extrem unscharf wurde (durch einfaches Hochskalieren der gesamten client area inkl. hinting). 

Aber auch die haben das Problem mit den "magic numbers" im Quelltext, die zum Layouten herangezogen werden und die Pixeldichte auf dem Anzeigegerät ignorieren. Ist auch nicht verwunderlich: vor 10 Jahren war die Entwicklung zu den heute gebräuchlichen PPI's nicht absehbar, entsprechend hat natürlich niemand den Aufwand gemacht, Abstände tatsächlich auszurechnen, sondern das so hardgecoded, dass es halt schön ausschaut.

Das Problem hier in Jameica ist, dass *alle* verwendeten Graphiken Rastergraphiken mit geringer Auflösung sind:

$ file view-refresh.png 
view-refresh.png: PNG image data, 16 x 16, 8-bit/color RGBA, non-interlaced

(mit der magic number 16, weils halt bei 96DPI zufällig passt)

Das kann man "groß ziehen", das schaut dann aber nicht mehr gut aus.


Um das Issue hier zu fixen, müssen *alle* verwendeten Symbole entweder in verschiedenen Auflösungen als Rastergraphik vorliegen (wobei dann die verwendet wird, die der zu rendernden Größe am ehesten entspricht) oder in einem ordentlich skalierbaren Format vorliegen, und die Renderlogik entsprechend angepasst werden, damit die im System eingestellte Icongröße gezeichnet bzw. als Fallback die Icongröße dem Text entsprechend den eingestellten bevorzugten Abmessungen des Benutzers angepasst wird.
Comment 9 Olaf Willuhn 2018-05-09 17:00:45 CEST
Ich habe mit https://github.com/willuhn/jameica/commit/3d37c6466cd319b47622be5d03edc8bd3f2816c4 ein zweites Icon-Set fuer Jameica mit doppelter Groesse eingecheckt und in SWTUtil Anpassungen vorgenommen, damit bei Bedarf die grossen Icons geladen werden (ist aber derzeit noch per Default deaktiviert - kann mittels "application.zoom.enabled=true" in '~/.jameica/cfg/de.willuhn.jameica.system.Customizing.properties' aktiviert werden).

Ich habe leider keine Moeglichkeit, das Verhalten und die Passgenauigkeiten zu testen, da ich keinen HiDPI-Monitor habe. Und das ganze per Try/Error anhand von User-Screenshots zu implementieren,  waere zu aufwaendig und wuerde ewig dauern.

Mir faellt auch kein sinnvoller Weg ein, das Verhalten auf einem "normalen" Monitor zu simulieren. Daher setze ich den Bug auf "LATER". Ich kann bei Bedarf die "Fleiss-Arbeit" (also das Zusammensammeln der Icons in den verschiedenen Groessen fuer die noch fehlenden Plugins - also Hibiscus, SynTAX) uebernehmen. Aber ich habe wie gesagt keine Moeglichkeit, die eigentliche Skalierung in der Anzeige zu testen.
Comment 10 Olaf Willuhn 2018-05-09 17:04:21 CEST
> Um das Issue hier zu fixen, müssen *alle* verwendeten Symbole entweder in
> verschiedenen Auflösungen als Rastergraphik vorliegen (wobei dann die
> verwendet wird, die der zu rendernden Größe am ehesten entspricht) 

Siehe mein vorheriger Kommentar. Zumindest die Jameica-Icons liegen jetzt alle in 16x16 und 32x32 (Unterordner "200" fuer "200%" Skalierung) vor. Ich kann derzeit nicht wirklich beurteilen, ob und welche weiteren Skalierung fuer gebrauechliche HiDPI-Monitore noch noetig waeren.

> einem ordentlich skalierbaren Format vorliegen, und die Renderlogik

SWT unterstuetzt fuer die "Image"-Klasse kein SVG.
Comment 11 Olaf Willuhn 2018-05-09 17:27:14 CEST
(In reply to Olaf Willuhn from comment #9)

> Mir faellt auch kein sinnvoller Weg ein, das Verhalten auf einem "normalen"
> Monitor zu simulieren. 

Hier noch ein Kommentar dazu: Ich kann unter Linux (geht sowohl in KDE, als auch in Gnome und XFCE) die DPI-Zah einstellen. Das wirkt sich aber nur auf das Font-Rendering aus. Hier geht es ja aber nicht um Schriften sondern um die Icon-Auswahl in der am besten zur DPI-Zahl des Monitors passenden Groesse. Neben der Font-DPI-Zahl gibt es auch mehrere Moeglichkeiten, die Darstellung zu zoomen). Kann auch KDE nativ. Dabei wird aber alles gezoomt. Wenn ich hier 200% Zoom einstelle, werden auch die Icons doppelt so gross angezeigt. Verwende ich nun die 32x32-Pixel-Icons, fuehrt das zu einer vierfach so grossen Darstellung der Icons (da auch die ja vom Desktop nochmal gezoomt werden). Ich weiss beim besten Willen nicht, wie ich das Aussehen auf einem HiDPI-Monitor emulieren koennte, um zu testen.
Comment 12 Olaf Willuhn 2018-05-11 12:35:10 CEST
Ich glaube, das Problem ist ein Konflikt zwischen dem SWT-eigenen Auto-Scaling fuer die Icons auf der einen Seite und dem Vorhandensein passend grosser Icons fuer die jeweilige Zoom-Stufe auf der anderen Seite.

Konkret: SWT besitzt inzwischen ein System-Property "-Dswt.autoScale=quarter", mit dem man festlegen kann, ob und wie SWT die Grafiken automatisch zoomen soll, wenn das Display eine so hohe Pixel-Dichet hat, dass der User die Zoom-Stufe des Desktop vermutlich hoeher als 100% eingestellt hat. Der Default-Wert fuer das Property ist "quarter". Die Grafiken werden dann von SWT automatisch auf eines der Zoomlevel 100%/125%/150%/... (also 25%-Schritte) skaliert, welches dem tatsaechlichen Zoomlevel des Desktops am naechsten kommt.
Siehe https://www.eclipse.org/eclipse/news/4.6/platform.php#swt-autoscale-tweaks

Effekt: Auch wenn die Anwendung keine Icons in der passenden Aufloesung bereithaelt, werden die existierenden (im Fall von Jameica 16x16 Pixel) automatisch von SWT auf die o.g. Zoomstufe hochgezoomt. Das Problem hierbei: Das macht SWT dann pauschal und generell fuer alle Bilder und Icons. Unabhaengig davon, ob Jameica selbst bereits erkannt hat, dass der User einen Zoom hoeher 100% eingestellt hat und demzufolge bereits automatisch Grafiken mit hoeherer Aufloesung (also z.Bsp. 32x32 Pixel) verwendet. Das bewirkt, dass all jene Icons, die ich bereits in mehreren Groessen vorliegen habe, dann im End-Effekt doppelt so gross angezeigt werden, wie gewuenscht. Einmal ist die Grafik selbst schon groesser. Und dann kommt noch das Zoom-Level von SWT oben drauf.

Erschwerend kommt noch hinzu, dass auch die Erkennung des korrekten Zoom-Level des Desktops in SWT nicht zuverlaessig funktioniert. Windows habe ich noch nicht getestet. Aber wenn ich meinen KDE-Desktop auf Zoom-Level 1,5 stelle, ist SWT trotzdem noch der Meinung, dass er bei 100% liegt.

Das Erschwernis mal aussen vor gelassen, existieren hier zwei Loesungswege. Wobei ersterer eigentlich nicht existiert.

1) Man muesste in den Meta-Daten der PNGs angeben, fuer welche DPI-Zahl die Grafiken gedacht sind, damit SWT selbst erkennt, dass die Grafik nicht nochmal extra gezoomt werden muss. Diese Meta-Info ist aber zum einen optional, nicht wirklich standardisiert. Und SWT beruecksichtigt sie ohnehin nicht - es liest keine Bild-Metadaten.

2) Man muesste das Auto-Scaling von SWT per System-Property "-Dswt.autoScale=false" beim Start von Jameica komplett abschalten. Dann muessten aber ALLE Icons und Bilder (sowohl von Jameica als auch von allen bekannten Plugins) jeweils mehrfach in den verschiedenen Zoom-Stufen vorhanden sein. Das muesste nicht nur ich machen sondern auch alle anderen Autoren von Jameica-Plugins. Hier muesste man sich vorher noch auf ein gemeinsames Set von Zoom-Stufen einigen, die man unterstuetzen will (z.Bsp. 16x16 fuer 100%, 24x24 fuer 150% und 32x32 fuer 200%). Diese Bilder und Icons aber alle zu erstellen und zu sammeln, waere eine ziemliche Fleiss-Aufgabe. Und sie muesste vollstaendig gemacht werden. Denn: Wenn Icons in einem Plugin in der jeweiligen Zoom-Stufe fehlen (und dann dort dann stattdessen das Default-Icon in 16x16 genommen werden wuerde), wuerde das ein ziemlich inkonsistentes Bild in Jameica erzeugen. Naemlich Icons in unterschiedlichen Groessen. Und dadurch auch Buttons (wenn sie Icons enthalten) in unterschiedlichen Groessen.

Eine Mischung aus aktiviertem Autoscaling und Icons in hoher Aufloesung geht jedenfalls nicht. Es bleibt nur Weg 2. Das Autoscaling kann aber erst dann abgeschaltet werden, wenn die anderen Plugin-Autoren ebenfalls ihre Icons entsprechend erstellt haben.
Comment 13 Olaf Willuhn 2018-05-14 17:02:27 CEST
Ich habs jetzt mehr oder weniger blind implementiert.

Icons in verschiedenen Groessen:

- https://github.com/willuhn/jameica/commit/3d37c6466cd319b47622be5d03edc8bd3f2816c4
- https://github.com/willuhn/jameica/commit/d69f2128234d4e6d64b09e7fdc285e4b265358fa

Code-Anpassungen fuer Skalierung:

- https://github.com/willuhn/jameica/commit/35dffa7dd5a4b834206a771b8704bd654ad05eb8

UI in Datei->Einstellungen-Look & Feel zum manuellen Einstellen des Zoom (wenn die automatische Zoom-Erkennung nicht funktioniert - wie z.Bsp. unter GTK2):

- https://github.com/willuhn/jameica/commit/377350f6f1c398c5c750c1520e95fd88090f07ce