* JobData.h
* Copyright 1999-2000 Y.Takagi. All Rights Reserved.
*/
#ifndef __JOBDATA_H
#define __JOBDATA_H
#include <SupportDefs.h>
#include <GraphicsDefs.h>
#include <Rect.h>
#include <map>
#include <string>
#include "Halftone.h"
#include "MarginView.h"
class BMessage;
class PrinterCap;
using namespace std;
class DriverSpecificSettings
{
public:
DriverSpecificSettings();
DriverSpecificSettings(const DriverSpecificSettings& Settings);
DriverSpecificSettings &operator=(const DriverSpecificSettings &Settings);
void MakeEmpty();
bool HasString(const char* key) const;
const char* GetString(const char* key) const;
void SetString(const char* key, const char* value);
bool HasBoolean(const char* ekey) const;
bool GetBoolean(const char* key) const;
void SetBoolean(const char* key, bool value);
bool HasInt(const char* ekey) const;
int32 GetInt(const char* key) const;
void SetInt(const char* key, int32 value);
bool HasDouble(const char* ekey) const;
double GetDouble(const char* key) const;
void SetDouble(const char* key, double value);
BMessage& Message();
private:
BMessage fSettings;
};
class JobData {
public:
enum Orientation {
kPortrait,
kLandscape
};
enum Paper {
kLetter = 1,
kLetterSmall,
kTabloid,
kLedger,
kLegal,
kStatement,
kExecutive,
kA3,
kA4,
kA4Small,
kA5,
kB4,
kB5,
kFolio,
kQuarto,
k10X14,
k11X17,
kNote,
kEnv9,
kEnv10,
kEnv11,
kEnv12,
kEnv14,
kCSheet,
kDSheet,
kESheet,
kEnvDL,
kEnvC5,
kEnvC3,
kEnvC4,
kEnvC6,
kEnvC65,
kEnvB4,
kEnvB5,
kEnvB6,
kEnvItaly,
kEnvMonarch,
kEnvPersonal,
kFanFoldUS,
kFanFoldStdGerman,
kFanFoldLglGerman,
kIsoB4,
kJapanesePostcard,
k9X11,
k10X11,
k15X11,
kEnvInvite,
kReserved48,
kReserved49,
kLetterExtra,
kLegalExtra,
kTabloidExtra,
kA4Extra,
kLetterTransverse,
kA4Transverse,
kLetterExtraTransverse,
kAPlus,
kBPlus,
kLetterPlus,
kA4Plus,
kA5Transverse,
kB5Transverse,
kA3Extra,
kA5Extra,
kB5Extra,
kA2,
kA3Transverse,
kA3ExtraTransverse,
kDBLJapanesePostcard,
kA6,
kJEnvKaku2,
kJEnvKaku3,
kJEnvChou3,
kJEnvChou4,
kLetterRotated,
kA3Rotated,
kA4Rotated,
kA5Rotated,
kB4JISRotated,
kB5JISRotated,
kJapanesePostcardRotated,
kDBLJapanesePostcardRotated,
kA6Rotated,
kJEnvKaku2Rotated,
kJEnvKaku3Rotated,
kJEnvChou3Rotated,
kJEnvChou4Rotated,
kB6JIS,
kB6JISRotated,
k12X11,
kJEnvYou4,
kJEnvYou4Rotated,
kP16K,
kP32K,
kP32KBig,
kPEnv1,
kPEnv2,
kPEnv3,
kPEnv4,
kPEnv5,
kPEnv6,
kPEnv7,
kPEnv8,
kPEnv9,
kPEnv10,
kP16KRotated,
kP32KRotated,
kP32KBIGRotated,
kPEnv1Rotated,
kPEnv2Rotated,
kPEnv3Rotated,
kPEnv4Rotated,
kPEnv5Rotated,
kPEnv6Rotated,
kPEnv7Rotated,
kPEnv8Rotated,
kPEnv9Rotated,
kPEnv10Rotated,
kUserDefined = 256
};
enum PaperSource {
kAuto,
kManual,
kUpper,
kMiddle,
kLower,
kCassette1 = 21,
kCassette2,
kCassette3,
kCassette4,
kCassette5,
kCassette6,
kCassette7,
kCassette8,
kCassette9,
kUser = 256
};
enum PrintStyle {
kSimplex,
kDuplex,
kBooklet
};
enum BindingLocation {
kLongEdgeLeft,
kLongEdgeRight,
kShortEdgeTop,
kShortEdgeBottom,
kLongEdge = kLongEdgeLeft,
kShortEdge = kShortEdgeTop
};
enum PageOrder {
kAcrossFromLeft,
kDownFromLeft,
kAcrossFromRight,
kDownFromRight,
kLeftToRight = kAcrossFromLeft,
kRightToLeft = kAcrossFromRight
};
enum Quality {
kDraft = -1,
kLow = -2,
kMedium = -3,
kHigh = -4
};
*/
enum Color {
kMonochrome = 1,
kColor,
kColorCompressionDisabled
};
enum SettingType {
kPageSettings,
kJobSettings
};
enum PageSelection {
kAllPages,
kOddNumberedPages,
kEvenNumberedPages
};
JobData(BMessage* message, const PrinterCap* printerCap,
SettingType type);
~JobData();
JobData(const JobData& jobData);
JobData& operator=(const JobData& jobData);
void Load(BMessage* message, const PrinterCap* printerCap,
SettingType type);
void Save(BMessage* message = NULL);
bool GetShowPreview() const;
void SetShowPreview(bool showPreview);
Paper GetPaper() const;
void SetPaper(Paper paper);
int32 GetResolutionID() const;
void SetResolutionID(int32 resolution);
int32 GetXres() const;
void SetXres(int32 xres);
int32 GetYres() const;
void SetYres(int32 yres);
Orientation GetOrientation() const;
void SetOrientation(Orientation orientation);
float GetScaling() const;
void SetScaling(float scaling);
const BRect& GetPaperRect() const;
void SetPaperRect(const BRect& paperRect);
const BRect& GetScaledPaperRect() const;
void SetScaledPaperRect(const BRect& paperRect);
const BRect& GetPrintableRect() const;
void SetPrintableRect(const BRect& printableRect);
const BRect& GetScaledPrintableRect() const;
void SetScaledPrintableRect(const BRect& printableRect);
const BRect& GetPhysicalRect() const;
void SetPhysicalRect(const BRect& PhysicalRect);
const BRect& GetScaledPhysicalRect() const;
void SetScaledPhysicalRect(const BRect& PhysicalRect);
int32 GetNup() const;
void SetNup(int32 nup);
bool GetReverse() const;
void SetReverse(bool reverse);
int32 GetFirstPage() const;
void SetFirstPage(int32 firstPage);
int32 GetLastPage() const;
void SetLastPage(int32 lastPage);
color_space GetSurfaceType() const;
float GetGamma() const;
void SetGamma(float gamma);
float GetInkDensity() const;
void SetInkDensity(float inkDensity);
PaperSource GetPaperSource() const;
void SetPaperSource(PaperSource paperSource);
int32 GetCopies() const;
void SetCopies(int32 copies);
bool GetCollate() const;
void SetCollate(bool collate);
PrintStyle GetPrintStyle() const;
void SetPrintStyle(PrintStyle printStyle);
BindingLocation GetBindingLocation() const;
void SetBindingLocation(BindingLocation bindingLocation);
PageOrder GetPageOrder() const;
void SetPageOrder(PageOrder pageOrder);
Color GetColor() const;
void SetColor(Color color);
Halftone::DitherType GetDitherType() const;
void SetDitherType(Halftone::DitherType ditherType);
PageSelection GetPageSelection() const;
void SetPageSelection(PageSelection pageSelection);
MarginUnit GetMarginUnit() const;
void SetMarginUnit(MarginUnit marginUnit);
DriverSpecificSettings& Settings();
const DriverSpecificSettings& Settings() const;
private:
bool fShowPreview;
Paper fPaper;
int32 fResolutionID;
int32 fXRes;
int32 fYRes;
Orientation fOrientation;
float fScaling;
BRect fPaperRect;
BRect fScaledPaperRect;
BRect fPrintableRect;
BRect fScaledPrintableRect;
BRect fPhysicalRect;
BRect fScaledPhysicalRect;
int32 fNup;
int32 fFirstPage;
int32 fLastPage;
float fGamma;
float fInkDensity;
PaperSource fPaperSource;
int32 fCopies;
bool fCollate;
bool fReverse;
PrintStyle fPrintStyle;
BindingLocation fBindingLocation;
PageOrder fPageOrder;
SettingType fSettingType;
BMessage *fMsg;
Color fColor;
Halftone::DitherType fDitherType;
PageSelection fPageSelection;
MarginUnit fMarginUnit;
DriverSpecificSettings fDriverSpecificSettings;
};
inline bool
JobData::GetShowPreview() const
{
return fShowPreview;
}
inline void
JobData::SetShowPreview(bool showPreview)
{
fShowPreview = showPreview;
}
inline JobData::Paper
JobData::GetPaper() const
{
return fPaper;
}
inline void
JobData::SetPaper(Paper paper)
{
fPaper = paper;
}
inline int32
JobData::GetResolutionID() const
{
return fResolutionID;
}
inline void
JobData::SetResolutionID(int32 resolution)
{
fResolutionID = resolution;
}
inline int32
JobData::GetXres() const
{
return fXRes;
}
inline void
JobData::SetXres(int32 xres)
{
fXRes = xres;
}
inline int32
JobData::GetYres() const
{
return fYRes;
}
inline void
JobData::SetYres(int32 yres)
{
fYRes = yres;
};
inline JobData::Orientation
JobData::GetOrientation() const
{
return fOrientation;
}
inline void
JobData::SetOrientation(Orientation orientation)
{
fOrientation = orientation;
}
inline float
JobData::GetScaling() const
{
return fScaling;
}
inline void
JobData::SetScaling(float scaling)
{
fScaling = scaling;
}
inline const BRect&
JobData::GetPaperRect() const
{
return fPaperRect;
}
inline void
JobData::SetPaperRect(const BRect &rect)
{
fPaperRect = rect;
}
inline const BRect&
JobData::GetScaledPaperRect() const
{
return fScaledPaperRect;
}
inline void
JobData::SetScaledPaperRect(const BRect &rect)
{
fScaledPaperRect = rect;
}
inline const BRect &
JobData::GetPrintableRect() const
{
return fPrintableRect;
}
inline void
JobData::SetPrintableRect(const BRect &rect)
{
fPrintableRect = rect;
}
inline const BRect&
JobData::GetScaledPrintableRect() const
{
return fScaledPrintableRect;
}
inline void
JobData::SetScaledPrintableRect(const BRect &rect)
{
fScaledPrintableRect = rect;
}
inline const BRect&
JobData::GetPhysicalRect() const
{
return fPhysicalRect;
}
inline void
JobData::SetPhysicalRect(const BRect &rect)
{
fPhysicalRect = rect;
}
inline const BRect&
JobData::GetScaledPhysicalRect() const
{
return fScaledPhysicalRect;
}
inline void
JobData::SetScaledPhysicalRect(const BRect &rect)
{
fScaledPhysicalRect = rect;
}
inline int32
JobData::GetNup() const
{
return fNup;
}
inline void
JobData::SetNup(int32 nup)
{
fNup = nup;
}
inline bool
JobData::GetReverse() const
{
return fReverse;
}
inline void
JobData::SetReverse(bool reverse)
{
fReverse = reverse;
}
inline int32
JobData::GetFirstPage() const
{
return fFirstPage;
}
inline void
JobData::SetFirstPage(int32 firstPage)
{
fFirstPage = firstPage;
}
inline int32
JobData::GetLastPage() const
{
return fLastPage;
}
inline void
JobData::SetLastPage(int32 lastPage)
{
fLastPage = lastPage;
}
color_space
inline JobData::GetSurfaceType() const
{
return B_RGB32;
}
inline float
JobData::GetGamma() const
{
return fGamma;
}
inline void
JobData::SetGamma(float gamma)
{
fGamma = gamma;
}
inline float
JobData::GetInkDensity() const
{
return fInkDensity;
}
inline void
JobData::SetInkDensity(float inkDensity)
{
fInkDensity = inkDensity;
}
inline JobData::PaperSource
JobData::GetPaperSource() const
{
return fPaperSource;
}
inline void
JobData::SetPaperSource(PaperSource paperSource)
{
fPaperSource = paperSource;
};
inline int32
JobData::GetCopies() const
{
return fCopies;
}
inline void
JobData::SetCopies(int32 copies)
{
fCopies = copies;
}
inline bool
JobData::GetCollate() const
{
return fCollate;
}
inline void
JobData::SetCollate(bool collate)
{
fCollate = collate;
}
inline JobData::PrintStyle
JobData::GetPrintStyle() const
{
return fPrintStyle;
}
inline void
JobData::SetPrintStyle(PrintStyle print_style)
{
fPrintStyle = print_style;
}
inline JobData::BindingLocation
JobData::GetBindingLocation() const
{
return fBindingLocation;
}
inline void
JobData::SetBindingLocation(BindingLocation binding_location)
{
fBindingLocation = binding_location;
}
inline JobData::PageOrder
JobData::GetPageOrder() const { return fPageOrder; }
inline void
JobData::SetPageOrder(PageOrder page_order)
{
fPageOrder = page_order;
}
inline JobData::Color
JobData::GetColor() const
{
return fColor;
}
inline void
JobData::SetColor(Color color)
{
fColor = color;
}
inline Halftone::DitherType
JobData::GetDitherType() const
{
return fDitherType;
}
inline void
JobData::SetDitherType(Halftone::DitherType dither_type)
{
fDitherType = dither_type;
}
inline JobData::PageSelection
JobData::GetPageSelection() const
{
return fPageSelection;
}
inline void
JobData::SetPageSelection(PageSelection pageSelection)
{
fPageSelection = pageSelection;
}
inline MarginUnit
JobData::GetMarginUnit() const
{
return fMarginUnit;
}
inline void
JobData::SetMarginUnit(MarginUnit marginUnit)
{
fMarginUnit = marginUnit;
}
#endif