⛏️ index : haiku.git

/*
 * GP.h
 * Copyright 1999-2000 Y.Takagi. All Rights Reserved.
 */
#ifndef __GP_H
#define __GP_H


#include "GPBinding.h"
#include "GPCapabilities.h"
#include "GraphicsDriver.h"
#include "OutputStream.h"

class Halftone;


class GPDriver : public GraphicsDriver, public OutputStream
{
public:
				GPDriver(BMessage* msg, PrinterData* printer_data,
					const PrinterCap* printer_cap);

	void		Write(const void *buffer, size_t size)
					/* throw(TransportException) */;

protected:
	bool		StartDocument();
	void		SetParameter(BString& parameter, PrinterCap::CapID category,
					int value);
	void		SetDriverSpecificSettings();
	void		AddDriverSpecificSetting(PrinterCap::CapID category,
					const char* key);
	void		AddDriverSpecificBooleanSetting(PrinterCap::CapID category,
					const char* key);
	void		AddDriverSpecificIntSetting(PrinterCap::CapID category,
					const char* key);
	void		AddDriverSpecificDimensionSetting(PrinterCap::CapID category,
					const char* key);
	void		AddDriverSpecificDoubleSetting(PrinterCap::CapID category,
					const char* key);
	bool		StartPage(int page);
	bool		NextBand(BBitmap* bitmap, BPoint* offset);
	bool		EndPage(int page);
	bool		EndDocument(bool success);
	void		ShowError(const char* message);

private:
	GPBinding		fBinding;
	GPJobConfiguration	fConfiguration;
};

#endif // __GP_H