d9823ef5a0
* also struct _page_header_: on x86_64, these would align to 8 bytes, which the code doesn't handle well. * remove beos leftovers.
118 lines
2.5 KiB
C++
118 lines
2.5 KiB
C++
/*
|
|
* Copyright 2009, Haiku, Inc. All rights reserved.
|
|
* Distributed under the terms of the MIT License.
|
|
*/
|
|
#ifndef _PRINTSESSION_H
|
|
#define _PRINTSESSION_H
|
|
|
|
|
|
#include <Picture.h>
|
|
|
|
|
|
class BFile;
|
|
class BView;
|
|
|
|
struct print_file_header {
|
|
int32 version;
|
|
int32 page_count;
|
|
off_t first_page;
|
|
|
|
int32 _reserved[3];
|
|
} _PACKED;
|
|
|
|
struct _page_header_;
|
|
|
|
|
|
class BPrintJob {
|
|
public:
|
|
// Values returned by PrinterType()
|
|
enum {
|
|
B_BW_PRINTER = 0,
|
|
B_COLOR_PRINTER
|
|
};
|
|
|
|
|
|
BPrintJob(const char* name);
|
|
virtual ~BPrintJob();
|
|
|
|
void BeginJob();
|
|
void CommitJob();
|
|
status_t ConfigJob();
|
|
void CancelJob();
|
|
|
|
status_t ConfigPage();
|
|
void SpoolPage();
|
|
|
|
bool CanContinue();
|
|
|
|
virtual void DrawView(BView* view, BRect rect,
|
|
BPoint where);
|
|
|
|
BMessage* Settings(); // TODO: const
|
|
void SetSettings(BMessage* archive);
|
|
bool IsSettingsMessageValid(
|
|
BMessage* archive) const;
|
|
|
|
BRect PaperRect();
|
|
BRect PrintableRect();
|
|
void GetResolution(int32* xDPI, int32* yDPI);
|
|
|
|
int32 FirstPage(); // TODO: const
|
|
int32 LastPage(); // TODO: const
|
|
int32 PrinterType(void* type = NULL) const;
|
|
|
|
|
|
private:
|
|
// FBC padding and forbidden methods
|
|
virtual void _ReservedPrintJob1();
|
|
virtual void _ReservedPrintJob2();
|
|
virtual void _ReservedPrintJob3();
|
|
virtual void _ReservedPrintJob4();
|
|
|
|
BPrintJob(const BPrintJob& other);
|
|
BPrintJob& operator=(const BPrintJob& other);
|
|
|
|
private:
|
|
void _RecurseView(BView* view, BPoint origin,
|
|
BPicture* picture, BRect rect);
|
|
void _GetMangledName(char* buffer,
|
|
size_t bufferSize) const;
|
|
void _HandlePageSetup(BMessage* setup);
|
|
bool _HandlePrintSetup(BMessage* setup);
|
|
|
|
void _NewPage();
|
|
void _EndLastPage();
|
|
|
|
void _AddSetupSpec();
|
|
void _AddPicture(BPicture& picture, BRect& rect,
|
|
BPoint& where);
|
|
|
|
char* _GetCurrentPrinterName() const;
|
|
void _LoadDefaultSettings();
|
|
|
|
private:
|
|
char* fPrintJobName;
|
|
|
|
int32 _unused;
|
|
|
|
BFile* fSpoolFile;
|
|
print_file_header fSpoolFileHeader;
|
|
BRect fPaperSize;
|
|
BRect fUsableSize;
|
|
status_t fError;
|
|
char fSpoolFileName[256];
|
|
BMessage* fSetupMessage;
|
|
BMessage* fDefaultSetupMessage;
|
|
char fAbort;
|
|
int32 fFirstPage;
|
|
int32 fLastPage;
|
|
short fXResolution;
|
|
short fYResolution;
|
|
_page_header_* fCurrentPageHeader;
|
|
off_t fCurrentPageHeaderOffset;
|
|
|
|
uint32 _reserved[2];
|
|
};
|
|
|
|
#endif // _PRINTSESSION_H
|