зеркало из https://github.com/mozilla/gecko-dev.git
Bug 675709 - Export the constants for paper orientation. r=haik
This commit is contained in:
Родитель
13522a9c3b
Коммит
d8a07d33fc
|
@ -64,6 +64,19 @@ NS_IMETHODIMP nsDeviceContextSpecX::Init(nsIWidget *aWidget,
|
|||
if (!settings)
|
||||
return NS_ERROR_NO_INTERFACE;
|
||||
|
||||
bool toFile;
|
||||
settings->GetPrintToFile(&toFile);
|
||||
|
||||
bool toPrinter = !toFile && !aIsPrintPreview;
|
||||
if (!toPrinter) {
|
||||
double width, height;
|
||||
settings->GetEffectivePageSize(&width, &height);
|
||||
width /= TWIPS_PER_POINT_FLOAT;
|
||||
height /= TWIPS_PER_POINT_FLOAT;
|
||||
|
||||
settings->SetCocoaPaperSize(width, height);
|
||||
}
|
||||
|
||||
mPrintSession = settings->GetPMPrintSession();
|
||||
::PMRetain(mPrintSession);
|
||||
mPageFormat = settings->GetPMPageFormat();
|
||||
|
|
|
@ -9,19 +9,6 @@
|
|||
#include "nsPrintOptionsX.h"
|
||||
#include "nsPrintSettingsX.h"
|
||||
|
||||
// The constants for paper orientation were renamed in 10.9. __MAC_10_9 is
|
||||
// defined on OS X 10.9 and later. Although 10.8 and earlier are not supported
|
||||
// at this time, this allows for building on those older OS versions. The
|
||||
// values are consistent across OS versions so the rename does not affect
|
||||
// runtime, just compilation.
|
||||
#ifdef __MAC_10_9
|
||||
#define NS_PAPER_ORIENTATION_PORTRAIT (NSPaperOrientationPortrait)
|
||||
#define NS_PAPER_ORIENTATION_LANDSCAPE (NSPaperOrientationLandscape)
|
||||
#else
|
||||
#define NS_PAPER_ORIENTATION_PORTRAIT (NSPortraitOrientation)
|
||||
#define NS_PAPER_ORIENTATION_LANDSCAPE (NSLandscapeOrientation)
|
||||
#endif
|
||||
|
||||
using namespace mozilla::embedding;
|
||||
|
||||
nsPrintOptionsX::nsPrintOptionsX()
|
||||
|
|
|
@ -9,6 +9,19 @@
|
|||
#include "nsPrintSettingsImpl.h"
|
||||
#import <Cocoa/Cocoa.h>
|
||||
|
||||
// The constants for paper orientation were renamed in 10.9. __MAC_10_9 is
|
||||
// defined on OS X 10.9 and later. Although 10.8 and earlier are not supported
|
||||
// at this time, this allows for building on those older OS versions. The
|
||||
// values are consistent across OS versions so the rename does not affect
|
||||
// runtime, just compilation.
|
||||
#ifdef __MAC_10_9
|
||||
#define NS_PAPER_ORIENTATION_PORTRAIT (NSPaperOrientationPortrait)
|
||||
#define NS_PAPER_ORIENTATION_LANDSCAPE (NSPaperOrientationLandscape)
|
||||
#else
|
||||
#define NS_PAPER_ORIENTATION_PORTRAIT (NSPortraitOrientation)
|
||||
#define NS_PAPER_ORIENTATION_LANDSCAPE (NSLandscapeOrientation)
|
||||
#endif
|
||||
|
||||
#define NS_PRINTSETTINGSX_IID \
|
||||
{ 0x0DF2FDBD, 0x906D, 0x4726, \
|
||||
{ 0x9E, 0x4D, 0xCF, 0xE0, 0x87, 0x8D, 0x70, 0x7C } }
|
||||
|
@ -51,8 +64,22 @@ public:
|
|||
void SetInchesScale(float aWidthScale, float aHeightScale);
|
||||
void GetInchesScale(float *aWidthScale, float *aHeightScale);
|
||||
|
||||
NS_IMETHOD SetPaperSizeUnit(int16_t aPaperSizeUnit) override;
|
||||
|
||||
NS_IMETHOD SetScaling(double aScaling) override;
|
||||
NS_IMETHOD SetToFileName(const char16_t * aToFileName) override;
|
||||
|
||||
NS_IMETHOD GetOrientation(int32_t *aOrientation) override;
|
||||
NS_IMETHOD SetOrientation(int32_t aOrientation) override;
|
||||
|
||||
NS_IMETHOD SetUnwriteableMarginTop(double aUnwriteableMarginTop) override;
|
||||
NS_IMETHOD SetUnwriteableMarginLeft(double aUnwriteableMarginLeft) override;
|
||||
NS_IMETHOD SetUnwriteableMarginBottom(double aUnwriteableMarginBottom) override;
|
||||
NS_IMETHOD SetUnwriteableMarginRight(double aUnwriteableMarginRight) override;
|
||||
|
||||
void SetAdjustedPaperSize(double aWidth, double aHeight);
|
||||
void GetAdjustedPaperSize(double *aWidth, double *aHeight);
|
||||
nsresult SetCocoaPaperSize(double aWidth, double aHeight);
|
||||
|
||||
protected:
|
||||
virtual ~nsPrintSettingsX();
|
||||
|
@ -63,6 +90,8 @@ protected:
|
|||
nsresult _Clone(nsIPrintSettings **_retval) override;
|
||||
nsresult _Assign(nsIPrintSettings *aPS) override;
|
||||
|
||||
int GetCocoaUnit(int16_t aGeckoUnit);
|
||||
|
||||
// The out param has a ref count of 1 on return so caller needs to PMRelase() when done.
|
||||
OSStatus CreateDefaultPageFormat(PMPrintSession aSession, PMPageFormat& outFormat);
|
||||
OSStatus CreateDefaultPrintSettings(PMPrintSession aSession, PMPrintSettings& outSettings);
|
||||
|
|
|
@ -254,8 +254,13 @@ NS_IMETHODIMP nsPrintSettingsX::SetPaperHeight(double aPaperHeight)
|
|||
NS_IMETHODIMP
|
||||
nsPrintSettingsX::GetEffectivePageSize(double *aWidth, double *aHeight)
|
||||
{
|
||||
*aWidth = NS_INCHES_TO_TWIPS(mAdjustedPaperWidth / mWidthScale);
|
||||
*aHeight = NS_INCHES_TO_TWIPS(mAdjustedPaperHeight / mHeightScale);
|
||||
if (kPaperSizeInches == GetCocoaUnit(mPaperSizeUnit)) {
|
||||
*aWidth = NS_INCHES_TO_TWIPS(mAdjustedPaperWidth / mWidthScale);
|
||||
*aHeight = NS_INCHES_TO_TWIPS(mAdjustedPaperHeight / mHeightScale);
|
||||
} else {
|
||||
*aWidth = NS_MILLIMETERS_TO_TWIPS(mAdjustedPaperWidth / mWidthScale);
|
||||
*aHeight = NS_MILLIMETERS_TO_TWIPS(mAdjustedPaperHeight / mHeightScale);
|
||||
}
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
@ -270,3 +275,221 @@ void nsPrintSettingsX::GetAdjustedPaperSize(double *aWidth, double *aHeight)
|
|||
*aWidth = mAdjustedPaperWidth;
|
||||
*aHeight = mAdjustedPaperHeight;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsPrintSettingsX::SetPaperSizeUnit(int16_t aPaperSizeUnit)
|
||||
{
|
||||
mPaperSizeUnit = aPaperSizeUnit;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsPrintSettingsX::SetScaling(double aScaling)
|
||||
{
|
||||
NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NSRESULT;
|
||||
|
||||
NSMutableDictionary* printInfoDict = [mPrintInfo dictionary];
|
||||
[printInfoDict setObject: [NSNumber numberWithFloat: aScaling]
|
||||
forKey: NSPrintScalingFactor];
|
||||
NSPrintInfo* newPrintInfo =
|
||||
[[NSPrintInfo alloc] initWithDictionary: printInfoDict];
|
||||
if (NS_WARN_IF(!newPrintInfo)) {
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
SetCocoaPrintInfo(newPrintInfo);
|
||||
[newPrintInfo release];
|
||||
return NS_OK;
|
||||
|
||||
NS_OBJC_END_TRY_ABORT_BLOCK_NSRESULT;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsPrintSettingsX::SetToFileName(const char16_t *aToFileName)
|
||||
{
|
||||
NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NSRESULT;
|
||||
|
||||
NSMutableDictionary* printInfoDict = [mPrintInfo dictionary];
|
||||
nsString filename = nsDependentString(aToFileName);
|
||||
|
||||
NSURL* jobSavingURL =
|
||||
[NSURL fileURLWithPath: nsCocoaUtils::ToNSString(filename)];
|
||||
if (jobSavingURL) {
|
||||
[printInfoDict setObject: NSPrintSaveJob forKey: NSPrintJobDisposition];
|
||||
[printInfoDict setObject: jobSavingURL forKey: NSPrintJobSavingURL];
|
||||
}
|
||||
NSPrintInfo* newPrintInfo =
|
||||
[[NSPrintInfo alloc] initWithDictionary: printInfoDict];
|
||||
if (NS_WARN_IF(!newPrintInfo)) {
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
SetCocoaPrintInfo(newPrintInfo);
|
||||
[newPrintInfo release];
|
||||
return NS_OK;
|
||||
|
||||
NS_OBJC_END_TRY_ABORT_BLOCK_NSRESULT;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsPrintSettingsX::GetOrientation(int32_t *aOrientation)
|
||||
{
|
||||
if ([mPrintInfo orientation] == NS_PAPER_ORIENTATION_PORTRAIT) {
|
||||
*aOrientation = nsIPrintSettings::kPortraitOrientation;
|
||||
} else {
|
||||
*aOrientation = nsIPrintSettings::kLandscapeOrientation;
|
||||
}
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsPrintSettingsX::SetOrientation(int32_t aOrientation)
|
||||
{
|
||||
NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NSRESULT;
|
||||
|
||||
NSMutableDictionary* printInfoDict = [mPrintInfo dictionary];
|
||||
if (aOrientation == nsIPrintSettings::kPortraitOrientation) {
|
||||
[printInfoDict setObject: [NSNumber numberWithInt: NS_PAPER_ORIENTATION_PORTRAIT]
|
||||
forKey: NSPrintOrientation];
|
||||
} else {
|
||||
[printInfoDict setObject: [NSNumber numberWithInt: NS_PAPER_ORIENTATION_LANDSCAPE]
|
||||
forKey: NSPrintOrientation];
|
||||
}
|
||||
NSPrintInfo* newPrintInfo =
|
||||
[[NSPrintInfo alloc] initWithDictionary: printInfoDict];
|
||||
if (NS_WARN_IF(!newPrintInfo)) {
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
SetCocoaPrintInfo(newPrintInfo);
|
||||
[newPrintInfo release];
|
||||
return NS_OK;
|
||||
|
||||
NS_OBJC_END_TRY_ABORT_BLOCK_NSRESULT;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsPrintSettingsX::SetUnwriteableMarginTop(double aUnwriteableMarginTop)
|
||||
{
|
||||
NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NSRESULT;
|
||||
|
||||
nsPrintSettings::SetUnwriteableMarginTop(aUnwriteableMarginTop);
|
||||
NSMutableDictionary* printInfoDict = [mPrintInfo dictionary];
|
||||
[printInfoDict setObject : [NSNumber numberWithDouble: aUnwriteableMarginTop]
|
||||
forKey : NSPrintTopMargin];
|
||||
NSPrintInfo* newPrintInfo =
|
||||
[[NSPrintInfo alloc] initWithDictionary: printInfoDict];
|
||||
if (NS_WARN_IF(!newPrintInfo)) {
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
SetCocoaPrintInfo(newPrintInfo);
|
||||
[newPrintInfo release];
|
||||
return NS_OK;
|
||||
|
||||
NS_OBJC_END_TRY_ABORT_BLOCK_NSRESULT;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsPrintSettingsX::SetUnwriteableMarginLeft(double aUnwriteableMarginLeft)
|
||||
{
|
||||
NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NSRESULT;
|
||||
|
||||
nsPrintSettings::SetUnwriteableMarginLeft(aUnwriteableMarginLeft);
|
||||
NSMutableDictionary* printInfoDict = [mPrintInfo dictionary];
|
||||
[printInfoDict setObject : [NSNumber numberWithDouble: aUnwriteableMarginLeft]
|
||||
forKey : NSPrintLeftMargin];
|
||||
NSPrintInfo* newPrintInfo =
|
||||
[[NSPrintInfo alloc] initWithDictionary: printInfoDict];
|
||||
if (NS_WARN_IF(!newPrintInfo)) {
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
SetCocoaPrintInfo(newPrintInfo);
|
||||
[newPrintInfo release];
|
||||
return NS_OK;
|
||||
|
||||
NS_OBJC_END_TRY_ABORT_BLOCK_NSRESULT;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsPrintSettingsX::SetUnwriteableMarginBottom(double aUnwriteableMarginBottom)
|
||||
{
|
||||
NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NSRESULT;
|
||||
|
||||
nsPrintSettings::SetUnwriteableMarginBottom(aUnwriteableMarginBottom);
|
||||
NSMutableDictionary* printInfoDict = [mPrintInfo dictionary];
|
||||
[printInfoDict setObject : [NSNumber numberWithDouble: aUnwriteableMarginBottom]
|
||||
forKey : NSPrintBottomMargin];
|
||||
NSPrintInfo* newPrintInfo =
|
||||
[[NSPrintInfo alloc] initWithDictionary: printInfoDict];
|
||||
if (NS_WARN_IF(!newPrintInfo)) {
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
SetCocoaPrintInfo(newPrintInfo);
|
||||
[newPrintInfo release];
|
||||
return NS_OK;
|
||||
|
||||
NS_OBJC_END_TRY_ABORT_BLOCK_NSRESULT;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsPrintSettingsX::SetUnwriteableMarginRight(double aUnwriteableMarginRight)
|
||||
{
|
||||
NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NSRESULT;
|
||||
|
||||
nsPrintSettings::SetUnwriteableMarginRight(aUnwriteableMarginRight);
|
||||
NSMutableDictionary* printInfoDict = [mPrintInfo dictionary];
|
||||
[printInfoDict setObject : [NSNumber numberWithDouble: aUnwriteableMarginRight]
|
||||
forKey : NSPrintRightMargin];
|
||||
NSPrintInfo* newPrintInfo =
|
||||
[[NSPrintInfo alloc] initWithDictionary: printInfoDict];
|
||||
if (NS_WARN_IF(!newPrintInfo)) {
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
SetCocoaPrintInfo(newPrintInfo);
|
||||
[newPrintInfo release];
|
||||
return NS_OK;
|
||||
|
||||
NS_OBJC_END_TRY_ABORT_BLOCK_NSRESULT;
|
||||
}
|
||||
|
||||
int
|
||||
nsPrintSettingsX::GetCocoaUnit(int16_t aGeckoUnit)
|
||||
{
|
||||
if (aGeckoUnit == kPaperSizeMillimeters)
|
||||
return kPaperSizeMillimeters;
|
||||
else
|
||||
return kPaperSizeInches;
|
||||
}
|
||||
|
||||
nsresult nsPrintSettingsX::SetCocoaPaperSize(double aWidth, double aHeight)
|
||||
{
|
||||
NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NSRESULT;
|
||||
|
||||
NSSize paperSize;
|
||||
NSMutableDictionary* printInfoDict = [mPrintInfo dictionary];
|
||||
if ([mPrintInfo orientation] == NS_PAPER_ORIENTATION_PORTRAIT) {
|
||||
// switch widths and heights
|
||||
paperSize = NSMakeSize(aWidth, aHeight);
|
||||
[printInfoDict setObject: [NSValue valueWithSize: paperSize]
|
||||
forKey: NSPrintPaperSize];
|
||||
} else {
|
||||
paperSize = NSMakeSize(aHeight, aWidth);
|
||||
[printInfoDict setObject: [NSValue valueWithSize: paperSize]
|
||||
forKey: NSPrintPaperSize];
|
||||
}
|
||||
NSPrintInfo* newPrintInfo =
|
||||
[[NSPrintInfo alloc] initWithDictionary: printInfoDict];
|
||||
if (NS_WARN_IF(!newPrintInfo)) {
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
SetCocoaPrintInfo(newPrintInfo);
|
||||
[newPrintInfo release];
|
||||
return NS_OK;
|
||||
|
||||
NS_OBJC_END_TRY_ABORT_BLOCK_NSRESULT;
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче