CocoPad

Matteo - 2 gen 2006

 

Questa piccola applicazione fatta in Cocoa permette di disegnare su un foglio a righe con un pennello colorato, tondo, a pressione variabile. È stata progettata per funzionare con una tavoletta grafica in modo che il disegno sia allo stesso tempo veloce e preciso. Una volta creata l'immagine, essa può essere salvata o copiata negli appunti, preservando la maschera di trasparenza - lo sfondo non appare nel file o negli appunti.

Il codice, per ora non rilasciato, parte da alcuni esempi distribuiti dalla Wacom e disponibili sul loro sito. Il disegno avviene su un NSView personalizzato che utilizza tre NSImage: una per lo sfondo, una per il foreground ed una utilizzata come maschera temporanea di cancellazione.

Per il disegno viene utilizzata una banale NSBezierPath sull'immagine di foreground e disegnato sull'NSView prima il background e poi il foreground nel solo rettangolo occupato dal pennello. Nel caso si stia utilizzando la gomma (girando la penna ovviamente), si disegna invece sulla maschera di cancellazione; la maschera di cancellazione viene quindi stampata sul foreground con NSCompositeDestinationOut (cancella dove la maschera non è trasparente).

Il disegno viene effettuato direttamente nella gestione dell'evento del mouse o della tavoletta e gli eventi vengono gestiti direttamente da un loop contenuto in mouseDown che termina con un NSLeftMouseUp, impostando peraltro il cosiddetto "mouse coalescing" a off per la durata del loop; questa proprietà impedisce al sistema di eliminare eventi di spostamento del mouse "in più" e gli impone di inviarli tutti, in modo che il disegno sia più preciso possibile. Questo sistema di disegnare è quello adottato dalla Wacom negli esempi già citati ed è sembrato l'unico adatto agli obbiettivi di questa applicazione.

 
Weblog Koan Progetti Foto Contatti