2009-05-09 14 views
5

Gibt es eine Möglichkeit, Pfade in Kairo zu erstellen, indem Sie zwei Pfade durch Boolesche Operationen wie Union, Difference und Intersection kombinieren? Ich arbeite an einer Vektorgrafik-Anwendung, die Kairo zum Rendern verwendet und möchte meinen Benutzern die Möglichkeit geben, Pfade auf diese Weise zu kombinieren, aber ich kann in Kairo keine Möglichkeit finden, dies zu tun.Boolesche Operationen auf Cairo-Pfaden?

Antwort

0

Die Kombination von Pfaden mit Operatoren macht für mich keinen Sinn. Was bekommen Sie von "Linie UND Kurve ODER Bogen"?

Stattdessen können Sie compositing operators unter Verwendung cairo_set_operator() anwenden: Es wird festgelegt, wie der aktuelle Ziehvorgang (wobei cairo_fill(), cairo_stroke() oder was auch immer) soll mit dem alten Inhalt der Oberfläche gemischt werden.

+1

Ein Beispiel für das, was ich meine, ist die Art, wie Inkscape Pfade durch boolesche Operationen kombiniert: http://www.usinginkscape.com/node/34. Ich vermute, dass die meisten dieser Effekte durch eine Reihe von Compositing-Operatoren erreicht werden können, mit der Ausnahme, dass Orte, an denen sich die Pfade der zwei Figuren schneiden, nicht notwendigerweise richtige Linienverbindungen haben. –

+0

Ich verstehe immer noch nicht die Frage: Inkscape selbst verwendet Kairo seit Version 0.46: http://wiki.inkscape.org/wiki/index.php/Release_notes/0.46#Speed_and_interactivity – ntd

2

Ich habe keinen Weg gefunden, dies mit den Cairo-Bibliotheken zu tun. Aber es ist eine Funktion, nach der ich auch gesucht habe. Wäre definitiv hilfreich, wenn (zum Beispiel) die Kombination von zwei Pfaden streichen würde - Compositing-Operatoren, die von Ntd erwähnt werden, scheinen das nicht zu können.

In der Zwischenzeit versuche ich, Skripte für Inkscape zu schreiben, und inkscape die Vereinigung/Differenzierung machen lassen. Akzeptabel für das Problem, an dem ich arbeite, aber definitiv nicht für Ihr. Hattest du Glück, entweder mit Kairo oder einer anderen Bibliothek? Nach ein paar Tagen Googeln scheint es nicht trivial zu sein:/

+0

PS - Pfad Schnittpunkt/kombinieren/Overlay ist aufgeführt auf der cairo site als mögliches sommercode-projekt http://cairographics.org/summerofcode/ideas/ – ImAlsoGreg