1 #ifndef _PRINTER_DRIVER_H 2 #define _PRINTER_DRIVER_H 3 4 5 #include <SupportDefs.h> 6 7 8 class BFile; 9 class BMessage; 10 class BNode; 11 class PrinterCap; 12 class PrinterData; 13 class GraphicsDriver; 14 15 #define kAttrPageSettings "libprint/page_settings" 16 #define kAttrJobSettings "libprint/job_settings" 17 18 class PrinterDriver { 19 public: 20 PrinterDriver(BNode* spoolFolder); 21 virtual ~PrinterDriver(); 22 23 virtual const char* GetSignature() const = 0; 24 virtual const char* GetDriverName() const = 0; 25 virtual const char* GetVersion() const = 0; 26 virtual const char* GetCopyright() const = 0; 27 28 virtual PrinterCap* InstantiatePrinterCap(PrinterData* printerData) = 0; 29 virtual PrinterData* InstantiatePrinterData(BNode* node); 30 virtual GraphicsDriver* InstantiateGraphicsDriver(BMessage* settings, PrinterData* printerData, PrinterCap* printerCap) = 0; 31 32 void InitPrinterDataAndCap(); 33 34 virtual void About(); 35 virtual char* AddPrinter(char* printerName); 36 BMessage* ConfigPage(BMessage* settings); 37 BMessage* ConfigJob(BMessage* settings); 38 BMessage* TakeJob(BFile* printJob, BMessage* settings); 39 40 protected: 41 42 PrinterData* GetPrinterData() { return fPrinterData; } 43 PrinterCap* GetPrinterCap() { return fPrinterCap; } 44 45 private: 46 bool ReadSettings(const char* attrName, BMessage* settings); 47 void WriteSettings(const char* attrName, BMessage* settings); 48 void MergeWithPreviousSettings(const char* attrName, BMessage* settings); 49 50 BNode* fSpoolFolder; 51 PrinterData* fPrinterData; 52 PrinterCap* fPrinterCap; 53 GraphicsDriver* fGraphicsDriver; 54 }; 55 56 PrinterDriver* instantiate_printer_driver(BNode* printerFolder = NULL); 57 58 #endif // _PRINTER_DRIVER_H 59