xref: /haiku/headers/libs/print/libprint/PrinterDriver.h (revision 526e86ac79f9899c43e2def55f82754a5c449f8a)
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