2009-05-09 9 views
5

C'è un modo per costruire percorsi al Cairo combinando due percorsi insieme attraverso operazioni booleane come Unione, Differenza e Intersezione? Sto lavorando a un'applicazione di grafica vettoriale che usa il Cairo per eseguire il rendering e vorrei offrire ai miei utenti la possibilità di combinare i percorsi insieme in questo modo, ma non riesco a trovare un modo per farlo al Cairo.Operazioni booleane su Cairo Paths?

risposta

0

La combinazione di percorsi con operatori non ha alcun senso per me. Cosa ottieni dalla "linea AND curva o arco"?

Invece, è possibile applicare compositing operators utilizzando cairo_set_operator(): sarà impostato come l'operazione di disegno corrente (essendo esso cairo_fill(), cairo_stroke() o altro) deve essere miscelato con il vecchio contenuto della superficie.

+1

Un esempio di ciò che intendo è il modo in cui Inkscape combina i percorsi attraverso operazioni booleane: http://www.usinginkscape.com/node/34. Suppongo che la maggior parte di questi effetti possa essere raggiunta attraverso una serie di operatori di compositing, eccetto che i punti in cui i percorsi delle due figure si intersecano non necessariamente hanno giunzioni di linea appropriate. –

+0

Non riesco ancora a capire la domanda: inkscape utilizza cairo dalla versione 0.46: http://wiki.inkscape.org/wiki/index.php/Release_notes/0.46#Speed_and_interactivity – ntd

2

Non ho trovato un modo per farlo con le librerie cairo. Ma è una caratteristica che ho cercato anche io. Sarebbe sicuramente utile quando (per esempio) accarezzando la combinazione di due percorsi - gli operatori di compositing menzionati da ntd non sembrano in grado di farlo.

Nel frattempo, sto provando a scrivere script per inkscape e lasciando che inkscape esegua l'unione/differenziazione. Accettabile per il problema su cui sto lavorando ma sicuramente non per il tuo. Hai avuto fortuna, con cairo o qualsiasi altra libreria svg? Dopo un paio di giorni di googling, non sembra essere banale:/

+0

ps - elenco intersect/combine/overlay elencato sul sito di cairo come possibile progetto di estate del codice http://cairographics.org/summerofcode/ideas/ – ImAlsoGreg