ccontext:PushGroup()
Diese Gruppenfunktionalität kann für die Durchführung von Zwischenkompositionen praktisch sein. Eine häufige Verwendung einer Gruppe besteht darin, Objekte innerhalb der Gruppe undurchsichtig darzustellen (so dass sie sich gegenseitig verdecken) und das Ergebnis dann durchscheinend auf das Ziel zu übertragen.
Gruppen können beliebig tief verschachtelt werden, indem ausgewogene Aufrufe
an ccontext:PushGroup() / ccontext:PopGroup() durchgeführt
werden. Bei jedem Aufruf wird die neue Zielgruppe auf bzw. von einem Stapel
verschoben bzw. entfernt.
Die Funktion ccontext:PushGroup() ruft ccontext:Save() auf,
sodass Änderungen am Grafikstatus außerhalb der Gruppe nicht sichtbar sind.
Die pop_group-Funktionen rufen ccontext:Restore() auf.
Standardmäßig hat die Zwischengruppe den Inhaltstyp
#CAIRO_CONTENT_COLOR_ALPHA. Andere Inhaltstypen können für die Gruppe
ausgewählt werden, indem stattdessen ccontext:PushGroupWithContent()
verwendet wird.
Als Beispiel sehen Sie hier, wie man einen Pfad mit Transluzenz füllen und streichen könnte, ohne dass jedoch ein Teil der Füllung unter dem Strich sichtbar wäre:
cr:PushGroup() cr:SetSource(fill_pattern) cr:FillPreserve() cr:SetSource(stroke_pattern) cr:Stroke() cr:PopGroupToSource() cr:PaintWithAlpha(alpha) |