Wieder ein Update
Good news: das GDI/Direct 2D Problem ist gelöst! sPlan80 scheint auch unter Linux mit Wine und Direct 2D (D2D) zu laufen
Bug: Dabei ist mir allerdings aufgefallen, dass sPlan 8 möglicherweise einen Bug enthält (Gleitkommadivision durch 0), ähnlich oder gleich diesem Fehlerbild:
https://forum.abacom-online.de/phpBB3/v ... f=7&t=5730
Update zum Update
Die nachfolgende Beschreibung bezieht sich auf Linux-Installationen, wo es mit Direct 2D nicht funktioniert. Bei mir war das unter Arch auf dem PC. Auf dem Laptop mit Manjaro und wine 7.0-r2 läuft es anfänglich scheinbar auch, aber wenn ich eine Zeichnung lade bekomme ich die Fehlermeldung "Gleitkommadivision durch Null" und die Zeichnung ist nur teilweise oder garnicht sichtbar.
Zuerst zum Bug: Seit neuestem habe ich einen 4k Monitor mit 27 Zoll = 163 dpi. sPlan startet unter Wine mit dieser Pixeldichte
nicht sondern beendet sich mir der Fehlermeldung "Gleitkommadivision durch Null". Diese Meldung erscheint 2x und dann kommt ein Fenster ohne Text und durch das X oben rechts kann ich sPlan killen. Wenn ich in der Wine-Konfiguration die Schriftgröße auf dem Standardwert 96 dpi belassen und die Schrift damit sehr klein ist, läuft sPlan 8, allerdings ist die Zeit, die sPlan braucht um komplett gestartet zu sein hammerharte 65 Sekunden! Nach ca.36 Sekunden ist das Fenster da, die Icons oben fehlen aber noch, nach weiteren 28-29 Sek. sind dann auch die Icon da.
Zur DPI-Zahl Einstellung: Ich meine dabei dieses Fenster, dass es auch bei Windows gibt. Der Unterschied zw. normal großer Schrift und der Mikroschrift wird deutlich, wenn man die Kopfzeile und den Text im Fenster vergleicht.
Wenn ich hier den Wert auf 163 dpi ändere, was dann eine normal Schriftgröße ergeben würde, steigt sPlan 8 bei starten mit der Division durch Null Geschichte aus. Erst wenn ich 140 dpi oder weniger einstelle, läuft sPlan 8, bei 141 dpi ist also die "Ausstiegsgrenze erreicht". Keine Ahnung ob das ein Wine-Problem ist, ich denke, das wird möglicherweise auch unter Windows passieren, wobei Wine sich wie eine Windows 7 Installation verhält (alternativ könnte ich auch auf Windows 8, 8.1, 10 oder auch XP umstellen). Wine ist aber kein Emulator, sondern biegt lediglich die Windows Systemaufrufe auf POSIX-Systemaufrufe um (Wine heißt deswegen auch
nicht Windows
Emulator).
---
Direct 2D und wie man es ans Laufen bekommt. Hier der Beweis (Anm.: ein echter Beweis ist das nicht, weil die Direct2D Funktionalität wird erst dann sichtbar, wenn eine Zeichnung geladen worden ist. Beim Laden und bei nicht funktionierendem Direct2D kann der Fehler ¨Gleitkommadivision durch Null" auftreten.):
(Dass es ein Screenshot von Wine ist, erkennt man an dem Weinglas oben links im Fenster.)
D2D ist aktiv, die DPI-Zahl (Vergleich Fensterkopfzeile und -inhalt) ist eingestellt auf 163 DPI.
Ergänzend: Im Umkehrschluss würde das heißen, dass man sPlan 8 bei Monitoren mit hoher Pixeldichte nur mit D2D ans laufen bekommt. Jetzt müsste ich nochmal versuchen, ob sPlan dann auch im 30-bit Modus (3x10 Bit Farbtiefe) läuft.
Nach etwas forschen dachte ich zuerst, dass es mit dem Zusammenspiel zwischen der D2D Library und AMD Grafiktreibern klemmt, aber es scheint doch wohl die von Wine mitgebrachte D2D Library zu sein, die da Probleme macht.
Ich habe jetzt eine originale d2d1.dll von
dll-files.com gezogen, und zwar die Version 7.0.6002.18107 (gibt es nur als 32-Bit Version, steht fast ganz unten in der Liste). Das ZIP auspacken und die darin enthaltene d2d1.dll (810 kB) ins Programmverzeichnis von sPlan80 kopieren, wo sPlan80.exe liegt (standardmäßig unter ~/.wine/drive_c/Program Files (x86)/sPlan80). Im SPLAN80.INI File den Eintrag UseD2D=1 setzen sofern das File vorhanden ist (unter ~/.wine/drive_c/ProgramData/sPlan80/) und der nicht auf 0 steht. Der Parameter /NoD2D im Startup Kommando des Desktop-Icons (rechtsklick --> Properties --> Application --> Command: ...) muss natürlich dazu raus falls vorhanden.
Ergänzung: Direct 2D funktioniert auch, wenn man Wine auf das immitieren von Windows 10 stellt. Außerdem funktioniert das auch mit der neueren Version 10.0.19041.329, aber nur in der 32 Bit Version. Mit der 64 Bit Version gibt es eine Fehlermeldung.
(1) Am einfachsten ist es, die von dll-files.com gezogene d2d1.dll in das Programmverzeichnis von sPlan80.exe zu kopieren, das ist auch lt. Wine-Doku kein Problem, auch bei Wine-Updates bleibt es erhalten, daher
nicht dahin kopieren, wo Wine installiert ist, z.B. nach /usr/lib/wine/x86_64-windows/ und /usr/lib32/wine/i386-windows/.
(2) Wine mitteilen, dass Wine eine native Version von d2d1.dll (= D2D) benutzen soll, also nicht die im Wine-Paket enthaltene d2d2.dll. Dazu "winetricks" starten. Im Auswahlfenster zuerst "Standard Wineprefix auswählen" aktivieren und <OK>, dann "winecfg starten" auswählen und <OK>, es erscheint die Wine Configuration (s. Bild oben mit den DPI). Im Tab Application, Liste "Application Settings" sollte sPlan80.exe stehen. Wenn nicht, dann manuell zufügen (Add application ... und dann den Pfad zur sPlan80.exe zusammenklicken). Hier sollte letztlich sPlan80.exe ausgewählt sein. Welche Windows Version im unteren Teil stehen sollte, weiß ich nicht genau. Durch meine Versuche steht da jetzt zufällig Windows 7, normalerweise steht da meine ich "Use global settings" und unter dem Eintrag "Default Settings" im Fensterteil darüber steht dann bei mir Windows 7, macht also letztlich keinen Unterschied. Mit der downgeloadeten d2d1.dll funktioniert das aber. Evtl. läuft es besser, wenn man bspw. Windows 10 einstellt und eine 10.0.xxxx.xxxx Version von d2d1.dll runterlädt. Ausprobiert habe ich es noch nicht.
(3) Dann einen Tab weiter nach "Libraries" gehen. Im oberen Drop-Down Teil "New override for library" die Library d2d1 raussuchen und auf "Add" klicken. Im unteren Fenster "Existing overrides" erscheint nun "d2d1 (native, builtin)". Da "builtin" nicht funktioniert, habe ich mit "Edit..." diese Einstellung auf nur native geändert. Dann sollte das so aussehen:
Damit wäre das Workaround abgeschlossen und sPlan 8 sollte ohne Fehlermeldung innerhalb ein paar Sekunden starten. Beim Check in sPlan unter Settings --> General Settings --> Display sollte das Beweisbild (s.o.) zu sehen sein, also ein aktiviertes "Use new graphics-engine (Direct 2D)".
Sollte es stattdessen eine Meldung geben wie z. B. "Die neue Grafikengine DIRECT2D wird von Ihrem System nicht unterstützt! <OK>" läuft D2D nicht. Nach dem ersten erfolgreichen Starten von sPlan und beenden, wird die SPLAN80.INI geschrieben. Hier sollte in Zeile 29 (ca.) der Eintrag "UseD2D=1" vorhanden sein.
Es gibt auch lt. wine-Doku andere Methoden, wie man eine andere d2d1.dll ins Wine-Universum installiert, aber mir war dieser Weg der einfachste und es betrifft ja nur eine DLL und eine Anwendung. Eine Alternative wäre noch, das durch eine Umgebungsvariable WINEDLLOVERRIDE (oder so ähnlich) zu erreichen.
Verweise:
https://wiki.winehq.org/Wine_User's_Guide#DLL_Overrides
https://www.buhl.de/tax-software/index. ... und-linux/ - hier hatte jemand ein ähnliches Problem
https://forum.winehq.org/viewtopic.php?t=35318#p133592 - der Verweis auf die original d2d1.dll
Im übrigen ist sPlan Version 8 jetzt auch in der
WineHQ Datenbank vorhanden.