La comunicazione fra documento e thread di stampa

I documenti stampabili in Colibri devono possedere l’interfaccia OPERATION_CALL. In genere derivano da una classe DOCUMENT, la quale possiede questa interfaccia. Come vedremo, la definizione che stiamo dando è coerente con l’esigenza di mantenere il massimo grado di astrazione: un documento può essere qualunque cosa in grado di essere riprodotto su una stampante raster (un’immagine, una collezione di elementi vettoriali organizzati su un piano, un qualunque oggetto visualizzato sul monitor, non necessariamente raster); quindi, un documento stampabile è un qualunque oggetto che, dato un numero di linea è in grado di rimandare un vettore di byte contenente le separazioni in inks della linea). Le separazioni ovviamente faranno riferimento ai colori dell’oggetto da stampare, e saranno calcolate internamente all’oggetto in funzione di un profilo di stampa.

Lancio del thread di stampa

bool PRINTER::StartThread(OPERATION_CALL *obj,float dx_mm, float dy_mm, float resx, float resy,RES_UNMIS res_um) 

La funzione StartThread della PRINTER ha come parametri un documento (obj) le dimensioni di stampa in mm (dx_mm e dy_mm) le risoluzioni verticali e orizzontali del documento (non necessariamente uguali a quelle della stampante..) e l’unità di misura della risoluzione in dpi o ppm.

Notare che, come già scritto, il documento è definito attraverso l’interfaccia OPERATION_CALL, senza alcun riferimento al suo contenuto, quale la presenza di immagini o altre caratteristiche.

All’interno del thread, utilizzando queste informazioni verrà calcolata la dimensione in pixel del documento da riprodurre, quindi saranno richiesti al documento i dati da stampare mandando una sequenza di messaggi e parametri opportuni. E’ evidente che la classe di definizione del documento dovrà intercettare questi messaggi e costruire le informazioni in risposta;

Di seguito mostreremo quali comandi e dati sono richiesti dal thread di stampa ed il modo in cui dovranno essere ritornate le informazioni richieste. Per farlo useremo la classe documento PRINTER_OUTPUT

Pages: 1 2 3 4
Skip to toolbar