root/src/add-ons/print/drivers/postscript/PS.h
/*
 * PS.h
 * Copyright 1999-2000 Y.Takagi. All Rights Reserved.
 */
#ifndef __PS_H
#define __PS_H


#include "GraphicsDriver.h"


class FilterIO;
class Halftone;


class PSDriver : public GraphicsDriver {
public:
                                                PSDriver(BMessage* message, PrinterData* printerData,
                                                        const PrinterCap* printerCap);

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:
                        void            _SetupCTM();
                        void            _JobStart();
                        void            _StartRasterGraphics(int x, int y, int width,
                                                        int height, int widthByte);
                        void            _EndRasterGraphics();
                        void            _RasterGraphics(int compression_method,
                                                        const uchar* buffer, int size);
                        void            _JobEnd();

                        void            _StartFilterIfNeeded();
                        void            _FlushFilterIfNeeded();
                        void            _WritePSString(const char* format, ...);
                        void            _WritePSData(const void* data, size_t size);

                        int                     fPrintedPages;
                        int                     fCompressionMethod;
                        Halftone*       fHalftone;
                        FilterIO*       fFilterIO;
};

#endif // __PS_H