Nutzung von libcairo in pvbrowser
Inhalt Vor

libcairo

Integration in pvbrowser

Bei libcairo https://cairographics.org handelt es sich um eine leistungsfähige low Level Grafikbibliothek, die viele Ausgabeformate unterstützt und auf allen gängigen Plattformen lauffähig ist. Hier interessieren wir uns insbesondere um Rastergrafiken im PNG Format und um Vektorgrafiken im SVG Format als Ausgabe von libcairo und deren Integration in pvbrowser und in normale Webbrowser.

In https://de.wikipedia.org/wiki/Cairo_(Grafikbibliothek) findet man ein kleines Programmierbeispiel in ANSI C für libcairo.

snap1.png
Programmierbeipiel für libcairo

Die folgenden Quellen findet man im Verzeichnis "pvbaddon/template/cairo" des pvbaddon.tar.gz Zusatzpaketes für pvbrowser.

snap2.png
Programmierbeipiel in pvbrowser integriert

Die Integration von libcairo wird durch die Klasse pvCairo erreicht. Diese bietet die Möglichkeit mit "setSurfaceToUse()" auszuwählen, ob PNG oder SVG Ausgaben erzeugt werden sollen und ob diese für ein pvbrowser QDraw Widget, eine Datei oder eine Antwort auf ein HTTP GET Request sein sollen.

pvcairo.png
Einbindung mit Hilfe der Klasse pvCairo

Mit "beginDraw()" erhält man einen cairo_t Kontext, den man für die Aufrufe der Malfunktionen von libcairo benötigt. Mit "endDraw()" werden die Maloperationen beendet und dynamisch zugeordnete Ressourcen freigegeben.

Falls die Ausgabe in eine Datei erfolgt kann PARAM *p=NULL sein, sonst gibt PARAM *p die Netzwerkverbindung an, über die die Ausgabe an ein pvbrowser Widget mit der ID "int id" geschickt wird oder an einen verbundenen Web Browser als Antwort auf ein HTTP GET Request gesendet wird.

Die Methode "sendFileToQDraw()" ist eine Hilfsfunktion mit der PNG oder SVG Dateien an ein QDraw Widget in pvbrowser geschickt werden können. Falls die Zeit rlTime *ftime; Verwendung findet, sendet die Methode nur dann, wenn sich die Modifikationszeit der Datei nicht geändert hat.


Inhalt Vor