#ifndef __PCL6_H
#define __PCL6_H
#include "GraphicsDriver.h"
#include "PCL6Cap.h"
#include "PCL6Writer.h"
class Halftone;
class PCL6Driver : public GraphicsDriver, public PCL6WriterStream
{
public:
PCL6Driver(BMessage* message, PrinterData* printerData,
const PrinterCap* printerCap);
void Write(const uint8* data, uint32 size);
protected:
virtual bool StartDocument();
virtual bool StartPage(int page);
virtual bool NextBand(BBitmap* bitmap, BPoint* offset);
virtual bool EndPage(int page);
virtual bool EndDocument(bool success);
private:
bool _SupportsRLECompression();
bool _SupportsDeltaRowCompression();
bool _UseColorMode();
PCL6Writer::MediaSize _MediaSize(JobData::Paper paper);
PCL6Writer::MediaSource _MediaSource(JobData::PaperSource source);
void _Move(int x, int y);
void _JobStart();
void _WriteBitmap(const uchar* buffer, int outSize, int rowSize,
int x, int y, int width, int height, int deltaRowSize);
void _StartRasterGraphics(int x, int y, int width, int height,
PCL6Writer::Compression compressionMethod);
void _EndRasterGraphics();
void _RasterGraphics(const uchar* buffer, int bufferSize,
int dataSize, int rowSize, int height,
int compression_method);
void _JobEnd();
PCL6Writer* fWriter;
PCL6Writer::MediaSide fMediaSide;
Halftone* fHalftone;
};
#endif