#ifndef PRINTERDRIVER_H
#define PRINTERDRIVER_H
#include "BlockingWindow.h"
class BFile;
class BlockingWindow;
class BNode;
class BMessage;
class PrinterDriver
{
public:
PrinterDriver(BNode* printerNode);
virtual ~PrinterDriver();
void StopPrinting();
virtual status_t PrintJob(BFile *jobFile, BMessage *jobMsg);
virtual status_t BeginJob();
virtual status_t PrintPage(int32 pageNumber, int32 pageCount);
virtual status_t EndJob();
virtual BlockingWindow* NewPageSetupWindow(BMessage *setupMsg, const char *printerName);
virtual BlockingWindow* NewJobSetupWindow(BMessage *setupMsg, const char *printerName);
virtual status_t PageSetup(BMessage *msg, const char *printerName = NULL);
virtual status_t JobSetup(BMessage *msg, const char *printerName = NULL);
virtual BMessage* GetDefaultSettings();
inline BFile *JobFile() { return fJobFile; }
inline BNode *PrinterNode() { return fPrinterNode; }
typedef enum {
PORTRAIT_ORIENTATION,
LANDSCAPE_ORIENTATION
} Orientation;
private:
bool fPrinting;
BFile *fJobFile;
BNode *fPrinterNode;
volatile Orientation fOrientation;
};
#endif