import cairo
surface = cairo.SVGSurface("esempio.svg", 400, 400)
context = cairo.Context(surface)
context.move_to(10, 10)
context.line_to(20, 50)
context.stroke()
context.move_to(20, 10)
context.show_text("abcd")
context.show_page()
surface.flush()
surface.finish()
stessi comandi
il font iniziale si può già usare
servono per la trasparenza e alterazioni di colore in generale (es schiarimento)
non ci sono in postscript
# un quadrato 10 10 moveto 10 120 lineto 120 120 lineto 120 10 lineto closepath # un altro quadrato 80 80 moveto 80 190 lineto 190 190 lineto 190 80 lineto closepath # riempiti fill
due quadrati riempiti di nero
# un quadrato 10 10 moveto 10 120 lineto 120 120 lineto 120 10 lineto closepath # un altro quadrato 80 80 moveto 80 190 lineto 190 190 lineto 190 80 lineto closepath # riempiti fill
interpretazione data finora:
quello che è stato tracciato viene disegnato sulla pagina
tre superfici: sorgente, maschera e destinazione
# un quadrato 10 10 moveto 10 120 lineto 120 120 lineto 120 10 lineto closepath # un altro quadrato 80 80 moveto 80 190 lineto 190 190 lineto 190 80 lineto closepath # riempiti
il disegno viene tracciato sulla maschera
|
|
|
|
fill
fa due cose
la seconda operazione di fill dipende dalla sorgente
inizialmente la sorgente è tutta nera
|
|
|
|
fill
fill
effetto complessivo: compare il disegno, riempito
[stesso disegno]
1.0 0.0 1.0 setrgbcolor
fill
setrgbcolor cambia la sorgente
da tutta nera a tutta azzurra
... 1.0 0.0 1.0 setrgbcolor fill
stesso di prima:
la sorgente viene copiata sulla destinazione
ma solo dove la maschera è vuota
risultato: il disegno è del nuovo colore
la sorgente può essere un motivo (pattern)
stessa operazione:
la sorgente viene copiata sulla destinazione
ma solo dove la maschera è vuota
effetto complessivo: quadrati con il motivo
la sorgente può essere un disegno arbitrario
stessa operazione:
viene trasferito sulla destinazione
ma solo dove la maschera lo permette
la sorgente viene trasferita sulla destinazione
ma solo dove la maschera lo permette
operatore di composizione "over",
quello inizialmente impostato
over: copia la sorgente sulla destinazione
dove lo permette la maschera
esistono altri operatori: add, atop, dest, burn, …
un altro operatore di composizione
add:
somma i colori di sorgente e destinazione dove la destinazione è disegnata
copia la sorgente sulla destinazione dove non lo è
fuori dalla maschera mantiene il colore precedente
sorgente rossa
destinazione con un disegno precedente
|
|
|
|
sorgente disegnata con un rettangolo rosso
sfondo della sorgente: zero colore, nero
sempre operatore add
|
|
|
|
effetto di add:
<canvas id="main" width="300" height="300"></canvas>
<script>
canvas = document.getElementById("main");
ctx = canvas.getContext("2d");
…
ctx.beginPath(); ctx.moveTo(10, 10); ctx.lineTo(110, 10); ctx.lineTo(110, 110); ctx.lineTo(10, 110); ctx.closePath(); ctx.fill(); </script>
<canvas id="main" width="300" height="300"></canvas>
<script>
canvas = document.getElementById("main");
ctx = canvas.getContext("2d");
ctx.beginPath(); ctx.moveTo(10, 10); ctx.lineTo(110, 10); ctx.lineTo(110, 110); ctx.lineTo(10, 110); ctx.closePath(); ctx.fill(); </script>
function draw(event) {
ctx.beginPath();
…
}
canvas = document.getElementById("main");
ctx = canvas.getContext("2d");
canvas.addEventListener("click", draw);