import cairo


# disegno precedente della destinazione: il rettangolo verde

def disegno_destinazione(context):
	context.set_source_rgb(0.0, 1.0, 0.0)

	context.move_to(30, 40)
	context.rel_line_to(0, 80)
	context.rel_line_to(100, 0)
	context.rel_line_to(0, -80)
	context.close_path()

	context.fill()


# disegno della sorgente: il rettangolo rosso

def disegno_sorgente(context):
	context.set_source_rgb(1.0, 0.0, 0.0)
	context.move_to(50, 10)
	context.line_to(50, 190)
	context.line_to(150, 190)
	context.line_to(150, 10)
	context.close_path()
	context.fill()


# disegno = maschera, due quadrati

def disegno_maschera(context):
	context.move_to(30, 70)
	context.rel_line_to(0, 100)
	context.rel_line_to(100, 0)
	context.rel_line_to(0, -100)
	context.close_path()

	context.move_to(70, 30)
	context.rel_line_to(0, 100)
	context.rel_line_to(100, 0)
	context.rel_line_to(0, -100)
	context.close_path()


# didascalia

def didascalia(content, testo):
	context.set_source_rgb(0.0, 0.0, 0.0)
	context.move_to(5, 195)
	context.show_text(testo)


# creazione, operatore add

surface = cairo.PDFSurface("add.pdf", 200, 200)
context = cairo.Context(surface)
context.set_operator(cairo.OPERATOR_ADD)


# pagina 1: sorgente tutta rossa

# disegno precedente della destinazione
disegno_destinazione(context)

# disegno: due quadrati
disegno_maschera(context)
context.set_source_rgb(1.0, 0.0, 0.0)	# sorgente: rosso
context.fill()

# fine pagina 1
didascalia(context, "sorgente: rosso")
context.show_page()



# pagina 2: sorgente parzialmente rossa 

# disegno precedente della destinazione
disegno_destinazione(context)

# sorgente
source = surface.create_similar(cairo.CONTENT_COLOR, 200, 200)
sourcecontext = cairo.Context(source)
disegno_sorgente(sourcecontext)

# disegno: due quadrati
disegno_maschera(context)
context.set_source_surface(source)	# sorgente: disegno di disegno_sorgente()
context.fill()

# fine pagina 2
didascalia(context, "sorgente: rettangolo rosso")
context.show_page()

