gecko/widget/nsPrintSettingsImpl.h
Bob Owen fccfdb71cd Bug 1238964 Part 2: Move separate DEVMODE to nsIPrintSettings copying into nsPrintSettingsWin. r=jimm
This also corrects what I think are long standing issues with the mapping to and
from print settings on Windows.
Firstly it only uses the DEVMODE flags to decide what should get stored, in the
old code if paper size was not set, it would then use that possibly invalid
paper size to map to length and width. Paper setting prefs are mapped back if
they were stored or if they have been manually set to something sane.
Secondly it corrects the calculation that was used to convert from millimeters
to tenths of millimeters.
It also gets rid of the paperSizeType field, which was only used on Windows and
doesn't actually make sense according to the DEVMODE documentation as the
dmPaperLength and dmPaperWidth fields override the dmPaperSize, but can in
theory be specified at the same time.
2016-01-12 17:40:07 +00:00

104 lines
3.0 KiB
C++

/* -*- Mode: IDL; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#ifndef nsPrintSettingsImpl_h__
#define nsPrintSettingsImpl_h__
#include "nsIPrintSettings.h"
#include "nsMargin.h"
#include "nsString.h"
#include "nsWeakReference.h"
#define NUM_HEAD_FOOT 3
//*****************************************************************************
//*** nsPrintSettings
//*****************************************************************************
class nsPrintSettings : public nsIPrintSettings
{
public:
NS_DECL_ISUPPORTS
NS_DECL_NSIPRINTSETTINGS
nsPrintSettings();
nsPrintSettings(const nsPrintSettings& aPS);
nsPrintSettings& operator=(const nsPrintSettings& rhs);
protected:
virtual ~nsPrintSettings();
// May be implemented by the platform-specific derived class
virtual nsresult _Clone(nsIPrintSettings **_retval);
virtual nsresult _Assign(nsIPrintSettings *aPS);
typedef enum {
eHeader,
eFooter
} nsHeaderFooterEnum;
nsresult GetMarginStrs(char16_t * *aTitle, nsHeaderFooterEnum aType, int16_t aJust);
nsresult SetMarginStrs(const char16_t * aTitle, nsHeaderFooterEnum aType, int16_t aJust);
// Members
nsWeakPtr mSession; // Should never be touched by Clone or Assign
// mMargin, mEdge, and mUnwriteableMargin are stored in twips
nsIntMargin mMargin;
nsIntMargin mEdge;
nsIntMargin mUnwriteableMargin;
int32_t mPrintOptions;
// scriptable data members
int16_t mPrintRange;
int32_t mStartPageNum; // only used for ePrintRange_SpecifiedRange
int32_t mEndPageNum;
double mScaling;
bool mPrintBGColors; // print background colors
bool mPrintBGImages; // print background images
int16_t mPrintFrameTypeUsage;
int16_t mPrintFrameType;
int16_t mHowToEnableFrameUI;
bool mIsCancelled;
bool mPrintSilent;
bool mPrintPreview;
bool mShrinkToFit;
bool mShowPrintProgress;
int32_t mPrintPageDelay;
nsString mTitle;
nsString mURL;
nsString mPageNumberFormat;
nsString mHeaderStrs[NUM_HEAD_FOOT];
nsString mFooterStrs[NUM_HEAD_FOOT];
nsString mPaperName;
int16_t mPaperData;
double mPaperWidth;
double mPaperHeight;
int16_t mPaperSizeUnit;
bool mPrintReversed;
bool mPrintInColor; // a false means grayscale
int32_t mOrientation; // see orientation consts
int32_t mResolution;
int32_t mDuplex;
int32_t mNumCopies;
nsXPIDLString mPrinter;
bool mPrintToFile;
nsString mToFileName;
int16_t mOutputFormat;
bool mIsInitedFromPrinter;
bool mIsInitedFromPrefs;
bool mPersistMarginBoxSettings;
};
#endif /* nsPrintSettings_h__ */