root/src/add-ons/print/drivers/gutenprint/GPDriver.h
/*
 * 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