Nutzung von libcairo in pvbrowser
Zurück Inhalt Vor

Widgets mit libcairo

Wir haben gesehen, dass man die Malfunktionen von libcairo mit der Klasse pvCairo in den pvserver eines pvbrowser Projektes einbinden kann. Es wäre aber darüber hinaus wünschenswert zumindest rudimentäre Widgets zur Verfügung zu haben, mit denen man ein "Point and Click" Interface komfortabel aufbauen kann. Dabei ist insbesondere zu berücksichtigen, dass der Ort, an dem die Grafik mit libcairo erzeugt wird, auf einem Server liegen kann, während der Benutzer auf seinem Bediengerät (PC/Mobilgerät) arbeitet.

gallery.png
Widgets

Wir verwenden zur Definition der Widgets einfach eine Tabelle (rlSpreadsheetTable aus rllib) und stellen diese im pvbrowser dar. Die wesentlichen Parameter eines Widgets sollen seine Koordinaten x,z,w,h (x,z,width,height) sein, die in einer Spalte eingetragen werden. Diese dienen später für den Test, ob die Maus über einem Widget gedrückt worden ist.

pvscairodesigner1.png
Ein pvserver als einfacher Widgetdesigner

Ein Widget besteht aus einem rlSpreadsheetRow *row; dessen erste Zelle den "name" (aka. Typ) des Widget bedeuten soll. Die Spalte "text" wäre der Standardtext eines Widgets, wie z.B. eine Beschriftung auf einem Bedienknopf. Die weiteren Zellen der rlSpreadsheetRow *widget; Tabellenzeile können frei nach Typ des Widget belegt werden. Das soll dem Anwender möglichst viel Flexibilität geben.

Die einzelnen Widgets werden gemalt, indem eine Schleife die Zeilen der Tabelle Widget für Widget abarbeitet und malt. Dabei übermalen weiter unten liegende Widgets evtl. schon vorher gemalte Widgets teilweise.

Ein "hitTest", ob die Maus über einem Widget betätigt wurde, wird ebenfalls Zeile für Zeile abgearbeitet und liefert damit das letzte (zuoberst liegende) Widget, das unter der Maus liegt.

Die "Widgets", die links in der Tabelle eingegeben werden, erscheinen automatisch rechts im Fenster in gerenderter Form, wie sie später in der fertigen Anwendung aussehen. Der Benutzer kann Sie verschieben und ihre Größe ändern, indem er die Knöpfe in der Mitte betätigt.

Dieser pvserver ist eine Vorlage für eigene Widgets. Rudimentäre Widgets und auch schon ein Diagram Widget sind darin bereits vorhanden.


Zurück Inhalt Vor