
* Unused code removed. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39139 a95241bf-73f2-0310-859d-f6bbb57e9c96
416 lines
12 KiB
C++
416 lines
12 KiB
C++
/*
|
|
* JobData.cpp
|
|
* Copyright 1999-2000 Y.Takagi. All Rights Reserved.
|
|
*/
|
|
|
|
#include <InterfaceDefs.h>
|
|
#include <Message.h>
|
|
#include "JobData.h"
|
|
#include "PrinterCap.h"
|
|
#include "DbgMsg.h"
|
|
|
|
static const char *kJDXRes = "xres";
|
|
static const char *kJDYRes = "yres";
|
|
static const char *kJDCopies = "copies";
|
|
static const char *kJDOrientation = "orientation";
|
|
static const char *kJDScaling = "scale";
|
|
static const char *kJDScaledPaperRect = "paper_rect";
|
|
static const char *kJDScaledPrintableRect = "printable_rect";
|
|
static const char *kJDFirstPage = "first_page";
|
|
static const char *kJDLastPage = "last_page";
|
|
|
|
static const char *kJDShowPreview = "JJJJ_showPreview";
|
|
static const char *kJDPaper = "JJJJ_paper";
|
|
static const char *kJDNup = "JJJJ_nup";
|
|
static const char *kJDGamma = "JJJJ_gamma";
|
|
static const char *kJDInkDensity = "JJJJ_ink_density";
|
|
static const char *kJDPaperSource = "JJJJ_paper_source";
|
|
static const char *kJDCollate = "JJJJ_collate";
|
|
static const char *kJDReverse = "JJJJ_reverse";
|
|
static const char *kJDPrintStyle = "JJJJ_print_style";
|
|
static const char *kJDBindingLocation = "JJJJ_binding_location";
|
|
static const char *kJDPageOrder = "JJJJ_page_order";
|
|
static const char *kJDColor = "JJJJ_color";
|
|
static const char *kJDDitherType = "JJJJ_dither_type";
|
|
static const char *kJDPaperRect = "JJJJ_paper_rect";
|
|
static const char* kJDPrintableRect = "JJJJ_printable_rect";
|
|
static const char* kJDPageSelection = "JJJJ_page_selection";
|
|
static const char* kJDMarginUnit = "JJJJ_margin_unit";
|
|
static const char* kJDPhysicalRect = "JJJJ_physical_rect";
|
|
static const char* kJDScaledPhysicalRect = "JJJJ_scaled_physical_rect";
|
|
|
|
JobData::JobData(BMessage *msg, const PrinterCap *cap, Settings settings)
|
|
{
|
|
load(msg, cap, settings);
|
|
}
|
|
|
|
JobData::~JobData()
|
|
{
|
|
}
|
|
|
|
JobData::JobData(const JobData &job_data)
|
|
{
|
|
fShowPreview = job_data.fShowPreview;
|
|
fPaper = job_data.fPaper;
|
|
fXRes = job_data.fXRes;
|
|
fYRes = job_data.fYRes;
|
|
fOrientation = job_data.fOrientation;
|
|
fScaling = job_data.fScaling;
|
|
fPaperRect = job_data.fPaperRect;
|
|
fScaledPaperRect = job_data.fScaledPaperRect;
|
|
fPrintableRect = job_data.fPrintableRect;
|
|
fScaledPrintableRect = job_data.fScaledPrintableRect;
|
|
fNup = job_data.fNup;
|
|
fFirstPage = job_data.fFirstPage;
|
|
fLastPage = job_data.fLastPage;
|
|
fGamma = job_data.fGamma;
|
|
fInkDensity = job_data.fInkDensity;
|
|
fPaperSource = job_data.fPaperSource;
|
|
fCopies = job_data.fCopies;
|
|
fCollate = job_data.fCollate;
|
|
fReverse = job_data.fReverse;
|
|
fPrintStyle = job_data.fPrintStyle;
|
|
fBindingLocation = job_data.fBindingLocation;
|
|
fPageOrder = job_data.fPageOrder;
|
|
fSettings = job_data.fSettings;
|
|
fMsg = job_data.fMsg;
|
|
fColor = job_data.fColor;
|
|
fDitherType = job_data.fDitherType;
|
|
fPageSelection = job_data.fPageSelection;
|
|
fMarginUnit = job_data.fMarginUnit;
|
|
fPhysicalRect = job_data.fPhysicalRect;
|
|
fScaledPhysicalRect = job_data.fScaledPhysicalRect;
|
|
}
|
|
|
|
JobData &JobData::operator = (const JobData &job_data)
|
|
{
|
|
fShowPreview = job_data.fShowPreview;
|
|
fPaper = job_data.fPaper;
|
|
fXRes = job_data.fXRes;
|
|
fYRes = job_data.fYRes;
|
|
fOrientation = job_data.fOrientation;
|
|
fScaling = job_data.fScaling;
|
|
fPaperRect = job_data.fPaperRect;
|
|
fScaledPaperRect = job_data.fScaledPaperRect;
|
|
fPrintableRect = job_data.fPrintableRect;
|
|
fScaledPrintableRect = job_data.fScaledPrintableRect;
|
|
fNup = job_data.fNup;
|
|
fFirstPage = job_data.fFirstPage;
|
|
fLastPage = job_data.fLastPage;
|
|
fGamma = job_data.fGamma;
|
|
fInkDensity = job_data.fInkDensity;
|
|
fPaperSource = job_data.fPaperSource;
|
|
fCopies = job_data.fCopies;
|
|
fCollate = job_data.fCollate;
|
|
fReverse = job_data.fReverse;
|
|
fPrintStyle = job_data.fPrintStyle;
|
|
fBindingLocation = job_data.fBindingLocation;
|
|
fPageOrder = job_data.fPageOrder;
|
|
fSettings = job_data.fSettings;
|
|
fMsg = job_data.fMsg;
|
|
fColor = job_data.fColor;
|
|
fDitherType = job_data.fDitherType;
|
|
fPageSelection = job_data.fPageSelection;
|
|
fMarginUnit = job_data.fMarginUnit;
|
|
fPhysicalRect = job_data.fPhysicalRect;
|
|
fScaledPhysicalRect = job_data.fScaledPhysicalRect;
|
|
return *this;
|
|
}
|
|
|
|
void JobData::load(BMessage *msg, const PrinterCap *cap, Settings settings)
|
|
{
|
|
fMsg = msg;
|
|
fSettings = settings;
|
|
|
|
const PaperCap *paperCap = NULL;
|
|
|
|
if (msg->HasBool(kJDShowPreview))
|
|
fShowPreview = msg->FindBool(kJDShowPreview);
|
|
else
|
|
fShowPreview = false;
|
|
|
|
if (msg->HasInt32(kJDPaper))
|
|
fPaper = (Paper)msg->FindInt32(kJDPaper);
|
|
else if (cap->isSupport(PrinterCap::kPaper)) {
|
|
paperCap = (const PaperCap *)cap->getDefaultCap(PrinterCap::kPaper);
|
|
fPaper = paperCap->fPaper;
|
|
} else
|
|
fPaper = kA4;
|
|
|
|
if (msg->HasInt64(kJDXRes)) {
|
|
int64 xres64;
|
|
msg->FindInt64(kJDXRes, &xres64);
|
|
fXRes = xres64;
|
|
} else if (cap->isSupport(PrinterCap::kResolution)) {
|
|
fXRes = ((const ResolutionCap *)cap->getDefaultCap(
|
|
PrinterCap::kResolution))->fXResolution;
|
|
} else {
|
|
fXRes = 300;
|
|
}
|
|
|
|
if (msg->HasInt64(kJDYRes)) {
|
|
int64 yres64;
|
|
msg->FindInt64(kJDYRes, &yres64);
|
|
fYRes = yres64;
|
|
} else if (cap->isSupport(PrinterCap::kResolution)) {
|
|
fYRes = ((const ResolutionCap *)cap->getDefaultCap(
|
|
PrinterCap::kResolution))->fYResolution;
|
|
} else {
|
|
fYRes = 300;
|
|
}
|
|
|
|
if (msg->HasInt32(kJDOrientation))
|
|
fOrientation = (Orientation)msg->FindInt32(kJDOrientation);
|
|
else if (cap->isSupport(PrinterCap::kOrientation))
|
|
fOrientation = ((const OrientationCap *)cap->getDefaultCap(
|
|
PrinterCap::kOrientation))->fOrientation;
|
|
else
|
|
fOrientation = kPortrait;
|
|
|
|
if (msg->HasFloat(kJDScaling))
|
|
fScaling = msg->FindFloat(kJDScaling);
|
|
else
|
|
fScaling = 100.0f;
|
|
|
|
if (msg->HasRect(kJDPaperRect)) {
|
|
fPaperRect = msg->FindRect(kJDPaperRect);
|
|
} else if (paperCap != NULL) {
|
|
fPaperRect = paperCap->fPaperRect;
|
|
}
|
|
|
|
if (msg->HasRect(kJDScaledPaperRect)) {
|
|
fScaledPaperRect = msg->FindRect(kJDScaledPaperRect);
|
|
} else {
|
|
fScaledPaperRect = fPaperRect;
|
|
}
|
|
|
|
if (msg->HasRect(kJDPrintableRect)) {
|
|
fPrintableRect = msg->FindRect(kJDPrintableRect);
|
|
} else if (paperCap != NULL) {
|
|
fPrintableRect = paperCap->fPhysicalRect;
|
|
}
|
|
|
|
if (msg->HasRect(kJDScaledPrintableRect)) {
|
|
fScaledPrintableRect = msg->FindRect(kJDScaledPrintableRect);
|
|
} else {
|
|
fScaledPrintableRect = fPrintableRect;
|
|
}
|
|
|
|
if (msg->HasRect(kJDPhysicalRect)) {
|
|
fPhysicalRect = msg->FindRect(kJDPhysicalRect);
|
|
} else if (paperCap != NULL) {
|
|
fPhysicalRect = paperCap->fPhysicalRect;
|
|
}
|
|
|
|
if (msg->HasRect(kJDScaledPhysicalRect)) {
|
|
fScaledPhysicalRect = msg->FindRect(kJDScaledPhysicalRect);
|
|
} else {
|
|
fScaledPhysicalRect = fPhysicalRect;
|
|
}
|
|
|
|
if (msg->HasInt32(kJDFirstPage))
|
|
fFirstPage = msg->FindInt32(kJDFirstPage);
|
|
else
|
|
fFirstPage = 1;
|
|
|
|
if (msg->HasInt32(kJDLastPage))
|
|
fLastPage = msg->FindInt32(kJDLastPage);
|
|
else
|
|
fLastPage = -1;
|
|
|
|
if (msg->HasInt32(kJDNup))
|
|
fNup = msg->FindInt32(kJDNup);
|
|
else
|
|
fNup = 1;
|
|
|
|
if (msg->HasFloat(kJDGamma))
|
|
fGamma = fMsg->FindFloat(kJDGamma);
|
|
else
|
|
fGamma = 0.25f;
|
|
|
|
if (msg->HasFloat(kJDInkDensity))
|
|
fInkDensity = fMsg->FindFloat(kJDInkDensity);
|
|
else
|
|
fInkDensity = 0.0f;
|
|
|
|
if (msg->HasInt32(kJDPaperSource))
|
|
fPaperSource = (PaperSource)fMsg->FindInt32(kJDPaperSource);
|
|
else if (cap->isSupport(PrinterCap::kPaperSource))
|
|
fPaperSource = ((const PaperSourceCap *)cap->getDefaultCap(
|
|
PrinterCap::kPaperSource))->fPaperSource;
|
|
else
|
|
fPaperSource = kAuto;
|
|
|
|
if (msg->HasInt32(kJDCopies))
|
|
fCopies = msg->FindInt32(kJDCopies);
|
|
else
|
|
fCopies = 1;
|
|
|
|
if (msg->HasBool(kJDCollate))
|
|
fCollate = msg->FindBool(kJDCollate);
|
|
else
|
|
fCollate = false;
|
|
|
|
if (msg->HasBool(kJDReverse))
|
|
fReverse = msg->FindBool(kJDReverse);
|
|
else
|
|
fReverse = false;
|
|
|
|
if (msg->HasInt32(kJDPrintStyle))
|
|
fPrintStyle = (PrintStyle)msg->FindInt32(kJDPrintStyle);
|
|
else if (cap->isSupport(PrinterCap::kPrintStyle))
|
|
fPrintStyle = ((const PrintStyleCap *)cap->getDefaultCap(
|
|
PrinterCap::kPrintStyle))->fPrintStyle;
|
|
else
|
|
fPrintStyle = kSimplex;
|
|
|
|
if (msg->HasInt32(kJDBindingLocation))
|
|
fBindingLocation = (BindingLocation)msg->FindInt32(kJDBindingLocation);
|
|
else if (cap->isSupport(PrinterCap::kBindingLocation))
|
|
fBindingLocation = ((const BindingLocationCap *)cap->getDefaultCap(
|
|
PrinterCap::kBindingLocation))->fBindingLocation;
|
|
else
|
|
fBindingLocation = kLongEdgeLeft;
|
|
|
|
if (msg->HasInt32(kJDPageOrder))
|
|
fPageOrder = (PageOrder)msg->FindInt32(kJDPageOrder);
|
|
else
|
|
fPageOrder = kAcrossFromLeft;
|
|
|
|
if (msg->HasInt32(kJDColor))
|
|
fColor = (Color)msg->FindInt32(kJDColor);
|
|
else if (cap->isSupport(PrinterCap::kColor))
|
|
fColor = ((const ColorCap *)cap->getDefaultCap(PrinterCap::kColor))
|
|
->fColor;
|
|
else
|
|
fColor = kMonochrome;
|
|
|
|
if (msg->HasInt32(kJDDitherType))
|
|
fDitherType = (Halftone::DitherType)msg->FindInt32(kJDDitherType);
|
|
else
|
|
fDitherType = Halftone::kTypeFloydSteinberg;
|
|
|
|
if (msg->HasInt32(kJDPageSelection))
|
|
fPageSelection = (PageSelection)msg->FindInt32(kJDPageSelection);
|
|
else
|
|
fPageSelection = kAllPages;
|
|
|
|
if (msg->HasInt32(kJDMarginUnit))
|
|
fMarginUnit = (MarginUnit)msg->FindInt32(kJDMarginUnit);
|
|
else
|
|
fMarginUnit = kUnitInch;
|
|
}
|
|
|
|
void JobData::save(BMessage *msg)
|
|
{
|
|
if (msg == NULL) {
|
|
msg = fMsg;
|
|
}
|
|
|
|
// page settings
|
|
msg->RemoveName(kJDPaper);
|
|
msg->AddInt32(kJDPaper, fPaper);
|
|
|
|
msg->RemoveName(kJDXRes);
|
|
msg->AddInt64(kJDXRes, fXRes);
|
|
|
|
msg->RemoveName(kJDYRes);
|
|
msg->AddInt64(kJDYRes, fYRes);
|
|
|
|
msg->RemoveName(kJDOrientation);
|
|
msg->AddInt32(kJDOrientation, fOrientation);
|
|
|
|
msg->RemoveName(kJDScaling);
|
|
msg->AddFloat(kJDScaling, fScaling);
|
|
|
|
msg->RemoveName(kJDPaperRect);
|
|
msg->AddRect(kJDPaperRect, fPaperRect);
|
|
|
|
msg->RemoveName(kJDScaledPaperRect);
|
|
msg->AddRect(kJDScaledPaperRect, fScaledPaperRect);
|
|
|
|
msg->RemoveName(kJDPrintableRect);
|
|
msg->AddRect(kJDPrintableRect, fPrintableRect);
|
|
|
|
msg->RemoveName(kJDScaledPrintableRect);
|
|
msg->AddRect(kJDScaledPrintableRect, fScaledPrintableRect);
|
|
|
|
msg->RemoveName(kJDPhysicalRect);
|
|
msg->AddRect(kJDPhysicalRect, fPhysicalRect);
|
|
|
|
msg->RemoveName(kJDScaledPhysicalRect);
|
|
msg->AddRect(kJDScaledPhysicalRect, fScaledPhysicalRect);
|
|
|
|
msg->RemoveName(kJDMarginUnit);
|
|
msg->AddInt32(kJDMarginUnit, fMarginUnit);
|
|
|
|
// page settings end here
|
|
|
|
// job settings
|
|
|
|
// make sure job settings are not present in page settings
|
|
msg->RemoveName(kJDShowPreview);
|
|
if (fSettings == kJobSettings)
|
|
msg->AddBool(kJDShowPreview, fShowPreview);
|
|
|
|
msg->RemoveName(kJDNup);
|
|
if (fSettings == kJobSettings)
|
|
msg->AddInt32(kJDNup, fNup);
|
|
|
|
msg->RemoveName(kJDFirstPage);
|
|
if (fSettings == kJobSettings)
|
|
msg->AddInt32(kJDFirstPage, fFirstPage);
|
|
|
|
msg->RemoveName(kJDLastPage);
|
|
if (fSettings == kJobSettings)
|
|
msg->AddInt32(kJDLastPage, fLastPage);
|
|
|
|
msg->RemoveName(kJDGamma);
|
|
if (fSettings == kJobSettings)
|
|
msg->AddFloat(kJDGamma, fGamma);
|
|
|
|
msg->RemoveName(kJDInkDensity);
|
|
if (fSettings == kJobSettings)
|
|
msg->AddFloat(kJDInkDensity, fInkDensity);
|
|
|
|
msg->RemoveName(kJDPaperSource);
|
|
if (fSettings == kJobSettings)
|
|
msg->AddInt32(kJDPaperSource, fPaperSource);
|
|
|
|
msg->RemoveName(kJDCopies);
|
|
if (fSettings == kJobSettings)
|
|
msg->AddInt32(kJDCopies, fCopies);
|
|
|
|
msg->RemoveName(kJDCollate);
|
|
if (fSettings == kJobSettings)
|
|
msg->AddBool(kJDCollate, fCollate);
|
|
|
|
msg->RemoveName(kJDReverse);
|
|
if (fSettings == kJobSettings)
|
|
msg->AddBool(kJDReverse, fReverse);
|
|
|
|
msg->RemoveName(kJDPrintStyle);
|
|
if (fSettings == kJobSettings)
|
|
msg->AddInt32(kJDPrintStyle, fPrintStyle);
|
|
|
|
msg->RemoveName(kJDBindingLocation);
|
|
if (fSettings == kJobSettings)
|
|
msg->AddInt32(kJDBindingLocation, fBindingLocation);
|
|
|
|
msg->RemoveName(kJDPageOrder);
|
|
if (fSettings == kJobSettings)
|
|
msg->AddInt32(kJDPageOrder, fPageOrder);
|
|
|
|
msg->RemoveName(kJDColor);
|
|
if (fSettings == kJobSettings)
|
|
msg->AddInt32(kJDColor, fColor);
|
|
|
|
msg->RemoveName(kJDDitherType);
|
|
if (fSettings == kJobSettings)
|
|
msg->AddInt32(kJDDitherType, fDitherType);
|
|
|
|
msg->RemoveName(kJDPageSelection);
|
|
if (fSettings == kJobSettings)
|
|
msg->AddInt32(kJDPageSelection, fPageSelection);
|
|
}
|