*********************************** * IrseeSoft - Meinrad-Spiess-Platz 2 * D-87660 Irsee - Germany * * * Versione italiana a cura della Fractal Minds di Marco Kohler * Via Principe Eugenio 23 - * 00185 Roma * Tel/Fax (+39) (0)6 4457035 * Email: m.kohler@agora.stm.it *********************************** La presente documentazione è valida per TurboPrint Pro V3 o superiori Copyright IrseeSoft Dicembre 1995 Copyright Fractal Minds 1997 per la traduzione italiana Come lavora TurboPrint? La stampa grafica viene fatta da due parti del S.O. Amiga: -> il printer.device e il driver della stampante La parte principale del rendering grafico viene fatta dal printer.device, che legge l'immagine a bitmap, calcola i colori per ogni pixel della stampante e passa il risultato al driver della stampante. Problema: solo 4 bit per ogni valore RGB vengono elaborati e quindi non c'è modo per il driver della stampante di stampare più di 4096 colori. Per evitare questa riduzione di colori e di qualità senza perdere compatibilità con il software per Amiga, abbiamo completamente riscritto il printer.device. Quando TurboPrint viene lanciato, il vecchio printer.device viene rimosso dalla memoria e ne viene installato uno nuovo, che funziona come quello sostituito, ma riesce ad usare le informazioni per una stampa in true-color, al contrario di quello che permettono i modi standard di Amiga. Questo permette di stampare un'immagine con 256 toni di grigio o di tipo HAM-8, senza perdita di colori. Come stampare BitMap in HighColor e in TrueColor usando TurboPrint: Poichè TurboPrint rimpiazza il printer.device originale, potete usare quasi lo stesso metodo sia per stampare immagini in TrueColor, che per stampare normali immagini BitMap per Amiga. Ci sono tre modi per inviare un'immagine a 24 bit al printer.device di TurboPrint: 1) Il printer.device di TurboPrint accetta bitmap con 24 bitplanes. (cioè ogni pixel contiene dati "full colour" e non viene usata una ColorMap). 2) Inviate una bitmap CyberGraphX, perchè TurboPrint conosce questo tipo di formato (Solo TurboPrint Pro V4.1 o superiori). 3) Metodo consigliato: Per un pieno controllo della stampa abbiamo aggiunto un nuovo comando PRDTPEXT_DUMPRPORT al nostro printer.device. Con questo comando potete anche stampare "custom High Color" e Bitmap True Color di vari formati (ad es. 8bit chunky o 16bit RGB). Un'altra possibilità è quella di lanciare il PrintManager personalizzato con dei flag sulle linee di comando. Il PrintManager stampa l'immagine da HD. Per ulteriori informazioni sul PrintManager, consultate il manuale di TurboPrint. Ulteriori spiegazioni dei metodi menzionati nella pagina precedente: 1) Usate il comando normale PRD_DUMPRPORT che passa le bitmap con 24 piani, ogni pixel contiene informazioni di true color. BitMap.Depth della vostra RastPort->BitMap deve essere impostato a 24. Un pixel è definito da 24 bitplane nel seguente modo: bitplane 0 = R0 bitplane 1 = R1 ..... bitplane 8 = G0 ..... bitplane 16 = B0 ..... bitplane 23 = B7 cioè: bitmap da 0 a 7 determinano il rosso bitmap da 8 a 15 determinano il verde bitmap da 16 a 23 determinano il blu 3) Usando il comando esteso DumpRastPort ("PRD_TPEXTDUMPRPORT"): Abbiamo aggiunto un comando speciale PRD_TPEXTDUMPRPORT al printer.device; questo lavora quasi come il comando normale PRD_DUMPRPORT. Ma ora RastPorts può usare Bitmaps con diversi formati RGB dei dati, variando da un 8bit chunky sino a un 24bit true color. Per indicare il formato grafico che state usando, TurboPrint vuole una nuova struttura chiamata TPExtIODRP. Invece del viewmode/ScreenModeID un puntatore a questa struttura deve essere memorizzata nel campo IODRPReq.io_Modes. Uso: Valorizzate la struttura IODRPReq nello stesso modo in cui lo fate con la PRD_DUMPRPORT Impostate il comando IODRPReq.io in PRD_TPEXTDUMPRPORT Fornite una struttura ExtIODRP (definita in ) Impostate ExtIODRP.PixAspX e .PixAspY alle corrette proporzioni tra i Pixel X/Y (ad es. 1/1) Impostate il formato corretto della bitmap in ExtIODRP.Mode (ad es. TPFMT_RGB24) Mettete un puntatore in questa struttura ExtIODRP nel campo IODRPReq.io_Modes. Sono supportati i seguenti formati bitmap: TPFMT_Chunky8: Un bitplane contiene 1 byte per pixel con la color lookup table (puntatore in io_ColorMap, 256 entries) TPFMT_RGB15 2 bytes per pixel, bits 0..15: 0RRRRRGGGGGBBBBB TPFMT_RGB16 2 bytes per pixel, bits 0..15: RRRRRGGGGGGBBBBB TPFMT_RGB24 3 bytes per pixel, 1 byte rosso, 1 verde, 1 blu TPFMT_BGR15 2 bytes per pixel, bits 0..15: GGGBBBBB0RRRRRGG (bytes swaped, INTEL format) TPFMT_BGR16 2 bytes per pixel, bits 0..15: GGGBBBBBRRRRRGGG ( -"- ) TPFMT_BGR24 3 bytes per pixel, il primo blu, il secondo verde, il terzo rosso disponibile dalla Version 4.1 di TurboPrint: TPFMT_CyberGfx un bitmap CyberGraphX (qualsiasi formato di pixel CyberGraphX) supportato anche i formati Pixel (normal bitmap Amiga): TPFMT_BitPlanes: TurboPrint assume sino a 8 bitplane con la tabella color lookup o 12/24 bitplane con 4/8-bit per i valori RGB TPFMT_HAM 6/8 bitplane con Hold&Modify-Colors TPFMT_EHB Modo Extra-half-brite con bitplane Cosa dovete fare prima di usare il TurboPrint printer.device: -> Verificate che TurboPrint sia installato / disponibile. 1) Aprite il printer.device con OpenDevice (exec.library) Dopo aver aperto il device, il campo "Device" del vostro IORequest punterà alla struttura PrinterData. 2) Verificate la terza longword in PrinterData.pd_OldStack[]. Se uguale a TPMATCHWORD, TurboPrint è installato. esempio: OpenDevice("printer.device",0,MyIORequest,0); PD = (struct PrinterData)MyIORequest->Device; (BOOL)TP_Installed = (((ULONG*)(PD->pd_OldStk))[2] == TPMATCHWORD); 3) Verificate il numero di versione del device. Dalla versione 39, è disponibile l'interfaccia a 24bit. esempio: version = MyIORequest->io_Device->dd_Library.lib_Version; 4) Se vi serve avere la versione esatta di TurboPrint, controllate la IDString esempio: IDString = (char*)MyIORequest->io_Device->dd_Library.lib_IdString; Nota: Il primo carattere di questa stringa è uno zero! Quindi iniziate dal carattere 2. La cosa migliore è verificare i caratteri 25, 26 e 27 per '4.1' etc.