1/* 2 * PCL6.h 3 * Copyright 1999-2000 Y.Takagi. All Rights Reserved. 4 * Copyright 2003 Michael Pfeiffer. 5 */ 6#ifndef __PCL6_H 7#define __PCL6_H 8 9 10#include "GraphicsDriver.h" 11#include "PCL6Cap.h" 12#include "PCL6Writer.h" 13 14 15class Halftone; 16 17 18class PCL6Driver : public GraphicsDriver, public PCL6WriterStream 19{ 20public: 21 PCL6Driver(BMessage* message, PrinterData* printerData, 22 const PrinterCap* printerCap); 23 24 void Write(const uint8* data, uint32 size); 25 26protected: 27 virtual bool StartDocument(); 28 virtual bool StartPage(int page); 29 virtual bool NextBand(BBitmap* bitmap, BPoint* offset); 30 virtual bool EndPage(int page); 31 virtual bool EndDocument(bool success); 32 33private: 34 bool _SupportsRLECompression(); 35 bool _SupportsDeltaRowCompression(); 36 bool _UseColorMode(); 37 PCL6Writer::MediaSize _MediaSize(JobData::Paper paper); 38 PCL6Writer::MediaSource _MediaSource(JobData::PaperSource source); 39 void _Move(int x, int y); 40 void _JobStart(); 41 void _WriteBitmap(const uchar* buffer, int outSize, int rowSize, 42 int x, int y, int width, int height, int deltaRowSize); 43 void _StartRasterGraphics(int x, int y, int width, int height, 44 PCL6Writer::Compression compressionMethod); 45 void _EndRasterGraphics(); 46 void _RasterGraphics(const uchar* buffer, int bufferSize, 47 int dataSize, int rowSize, int height, 48 int compression_method); 49 void _JobEnd(); 50 51 PCL6Writer* fWriter; 52 PCL6Writer::MediaSide fMediaSide; // side if in duplex mode 53 Halftone* fHalftone; 54}; 55 56#endif // __PCL6_H 57