von preklov » Do, 03.12.2015 13:13
Hallo Balu,
die Geschichte mit den Größenunterschieden bei Dialogen ist schon erschreckend. Aber wenn man bedenkt, wie sehr dabei so unterschiedliche Faktoren wie Schriftarten und grafische Benutzeroberflächen und deren Grafikbibliotheken zusammenspielen, dann muss man vielleicht mit der Vielfalt leben.
Meine Problemstellung ist viel einfacher. Ich will die Bildinhalte aus Grafikdateien in odt-Dateien einbetten. Das ist vernünftigerweise nur möglich, wenn man ihre Ausdehnungen kennt. Ich kann mit der Methode queryGraphicDescriptor des Interface XGraphicProvider Informationen über die Grafik in einer Datei abfragen. Die stecken in den GraphicDescriptor-Eigenschaften Size100thMM resp. SizePixel. In png-Dateien beispielsweise sind Werte in Size100thMM und in SizePixel zu finden, in jpg-Dateien dagegen nur in SizePixel.
Wenn ich also jpg-Dateien finde, muss ich wissen, welchen Teil meines Bildschirms die Bilder einnehmen würden. Dazu benötige ich die Pixelausdehnungen. Mit den Basic-Funktionen TwipsPerPixelX und TwipsPerPixelY kein Problem. Naja, so lala.
Kleiner Ausflug in die konkrete Praxis: Mein Bildschirm hat laut Hersteller die Maße 518,4 x 324 mm. Ich betreibe ihn in einer Auflösung von 1920 x 1200 Pixeln. Pixelgröße laut Hersteller: 0,27 mm.
Die Ausgabe von xrandr im Terminal zeigt mir 519 x 324 mm, was praktisch der Herstellerangabe entspricht, auch die daraus berechnete Pixelgröße.
In Python kann ich die Tkinter-Bibliothek importieren (leider klappt das nicht innerhalb von AOO/LO). Mit deren Hilfe finde ich die abweichenden Maße 524 x 321 mm, mit den berechneten (unterschiedlichen) Pixelausdehnungen 0,2729 x 0,2675 mm, was immerhin gerundet noch den einheitlichen korrekten Wert 0,27 ergibt.
Die Pixelgröße von TwipsPerPixelX und TwipsPerPixelY allerdings ergibt jeweils 15, was 0,26 mm entspricht. Man kann auch damit leben, vor allem deshalb, weil die daraus berechnete Bildgröße etwas zu gering ausfällt - von Vorteil, wenn ein sehr großes Bild auf eine Writer-Seite passen soll, umgekehrt wäre es schlechter.
Sowohl die Anwendung als auch die Bilddarstellung finden auf demselben Bildschirm statt. Daran kann m.E. keine Grafikbibliothek und keine ma-Berechnung etwas ändern. Das sollte die Sache eigentlich einfach machen.
Zurück zu meinem Anliegen: Wie kann ich das Interface com.sun.star.rendering.XGraphicDevice einsetzen?
Schöne Grüße
Volker
Hallo Balu,
die Geschichte mit den Größenunterschieden bei Dialogen ist schon erschreckend. Aber wenn man bedenkt, wie sehr dabei so unterschiedliche Faktoren wie Schriftarten und grafische Benutzeroberflächen und deren Grafikbibliotheken zusammenspielen, dann muss man vielleicht mit der Vielfalt leben.
Meine Problemstellung ist viel einfacher. Ich will die Bildinhalte aus Grafikdateien in odt-Dateien einbetten. Das ist vernünftigerweise nur möglich, wenn man ihre Ausdehnungen kennt. Ich kann mit der Methode queryGraphicDescriptor des Interface XGraphicProvider Informationen über die Grafik in einer Datei abfragen. Die stecken in den GraphicDescriptor-Eigenschaften Size100thMM resp. SizePixel. In png-Dateien beispielsweise sind Werte in Size100thMM und in SizePixel zu finden, in jpg-Dateien dagegen nur in SizePixel.
Wenn ich also jpg-Dateien finde, muss ich wissen, welchen Teil meines Bildschirms die Bilder einnehmen würden. Dazu benötige ich die Pixelausdehnungen. Mit den Basic-Funktionen TwipsPerPixelX und TwipsPerPixelY kein Problem. Naja, so lala.
[i]Kleiner Ausflug in die konkrete Praxis: Mein Bildschirm hat laut Hersteller die Maße 518,4 x 324 mm. Ich betreibe ihn in einer Auflösung von 1920 x 1200 Pixeln. Pixelgröße laut Hersteller: 0,27 mm.
Die Ausgabe von xrandr im Terminal zeigt mir 519 x 324 mm, was praktisch der Herstellerangabe entspricht, auch die daraus berechnete Pixelgröße.
In Python kann ich die Tkinter-Bibliothek importieren (leider klappt das nicht innerhalb von AOO/LO). Mit deren Hilfe finde ich die abweichenden Maße 524 x 321 mm, mit den berechneten (unterschiedlichen) Pixelausdehnungen 0,2729 x 0,2675 mm, was immerhin gerundet noch den einheitlichen korrekten Wert 0,27 ergibt.
Die Pixelgröße von TwipsPerPixelX und TwipsPerPixelY allerdings ergibt jeweils 15, was 0,26 mm entspricht. Man kann auch damit leben, vor allem deshalb, weil die daraus berechnete Bildgröße etwas zu gering ausfällt - von Vorteil, wenn ein sehr großes Bild auf eine Writer-Seite passen soll, umgekehrt wäre es schlechter.[/i]
Sowohl die Anwendung als auch die Bilddarstellung finden auf demselben Bildschirm statt. Daran kann m.E. keine Grafikbibliothek und keine ma-Berechnung etwas ändern. Das sollte die Sache eigentlich einfach machen.
Zurück zu meinem Anliegen: [b]Wie kann ich das Interface com.sun.star.rendering.XGraphicDevice einsetzen?[/b]
Schöne Grüße
Volker