123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020 |
- /* -*- Mode: C++; 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/. */
- #include "nsPrintSettingsImpl.h"
- #include "nsReadableUtils.h"
- #include "nsIPrintSession.h"
- #include "mozilla/RefPtr.h"
- #define DEFAULT_MARGIN_WIDTH 0.5
- NS_IMPL_ISUPPORTS(nsPrintSettings, nsIPrintSettings)
- /** ---------------------------------------------------
- * See documentation in nsPrintSettingsImpl.h
- * @update 6/21/00 dwc
- */
- nsPrintSettings::nsPrintSettings() :
- mPrintOptions(0L),
- mPrintRange(kRangeAllPages),
- mStartPageNum(1),
- mEndPageNum(1),
- mScaling(1.0),
- mPrintBGColors(false),
- mPrintBGImages(false),
- mPrintFrameTypeUsage(kUseInternalDefault),
- mPrintFrameType(kFramesAsIs),
- mHowToEnableFrameUI(kFrameEnableNone),
- mIsCancelled(false),
- mPrintSilent(false),
- mPrintPreview(false),
- mShrinkToFit(true),
- mShowPrintProgress(true),
- mPrintPageDelay(50),
- mPaperData(0),
- mPaperWidth(8.5),
- mPaperHeight(11.0),
- mPaperSizeUnit(kPaperSizeInches),
- mPrintReversed(false),
- mPrintInColor(true),
- mOrientation(kPortraitOrientation),
- mNumCopies(1),
- mPrintToFile(false),
- mOutputFormat(kOutputFormatNative),
- mIsInitedFromPrinter(false),
- mIsInitedFromPrefs(false)
- {
- /* member initializers and constructor code */
- int32_t marginWidth = NS_INCHES_TO_INT_TWIPS(DEFAULT_MARGIN_WIDTH);
- mMargin.SizeTo(marginWidth, marginWidth, marginWidth, marginWidth);
- mEdge.SizeTo(0, 0, 0, 0);
- mUnwriteableMargin.SizeTo(0,0,0,0);
- mPrintOptions = kPrintOddPages | kPrintEvenPages;
- mHeaderStrs[0].AssignLiteral("&T");
- mHeaderStrs[2].AssignLiteral("&U");
- mFooterStrs[0].AssignLiteral("&PT"); // Use &P (Page Num Only) or &PT (Page Num of Page Total)
- mFooterStrs[2].AssignLiteral("&D");
- }
- /** ---------------------------------------------------
- * See documentation in nsPrintSettingsImpl.h
- * @update 6/21/00 dwc
- */
- nsPrintSettings::nsPrintSettings(const nsPrintSettings& aPS)
- {
- *this = aPS;
- }
- /** ---------------------------------------------------
- * See documentation in nsPrintSettingsImpl.h
- * @update 6/21/00 dwc
- */
- nsPrintSettings::~nsPrintSettings()
- {
- }
- NS_IMETHODIMP nsPrintSettings::GetPrintSession(nsIPrintSession **aPrintSession)
- {
- NS_ENSURE_ARG_POINTER(aPrintSession);
- *aPrintSession = nullptr;
-
- nsCOMPtr<nsIPrintSession> session = do_QueryReferent(mSession);
- if (!session)
- return NS_ERROR_NOT_INITIALIZED;
- *aPrintSession = session;
- NS_ADDREF(*aPrintSession);
- return NS_OK;
- }
- NS_IMETHODIMP nsPrintSettings::SetPrintSession(nsIPrintSession *aPrintSession)
- {
- // Clearing it by passing nullptr is not allowed. That's why we
- // use a weak ref so that it doesn't have to be cleared.
- NS_ENSURE_ARG(aPrintSession);
-
- mSession = do_GetWeakReference(aPrintSession);
- if (!mSession) {
- // This may happen if the implementation of this object does
- // not support weak references - programmer error.
- NS_ERROR("Could not get a weak reference from aPrintSession");
- return NS_ERROR_FAILURE;
- }
- return NS_OK;
- }
- NS_IMETHODIMP nsPrintSettings::GetStartPageRange(int32_t *aStartPageRange)
- {
- //NS_ENSURE_ARG_POINTER(aStartPageRange);
- *aStartPageRange = mStartPageNum;
- return NS_OK;
- }
- NS_IMETHODIMP nsPrintSettings::SetStartPageRange(int32_t aStartPageRange)
- {
- mStartPageNum = aStartPageRange;
- return NS_OK;
- }
- NS_IMETHODIMP nsPrintSettings::GetEndPageRange(int32_t *aEndPageRange)
- {
- //NS_ENSURE_ARG_POINTER(aEndPageRange);
- *aEndPageRange = mEndPageNum;
- return NS_OK;
- }
- NS_IMETHODIMP nsPrintSettings::SetEndPageRange(int32_t aEndPageRange)
- {
- mEndPageNum = aEndPageRange;
- return NS_OK;
- }
- NS_IMETHODIMP nsPrintSettings::GetPrintReversed(bool *aPrintReversed)
- {
- //NS_ENSURE_ARG_POINTER(aPrintReversed);
- *aPrintReversed = mPrintReversed;
- return NS_OK;
- }
- NS_IMETHODIMP nsPrintSettings::SetPrintReversed(bool aPrintReversed)
- {
- mPrintReversed = aPrintReversed;
- return NS_OK;
- }
- NS_IMETHODIMP nsPrintSettings::GetPrintInColor(bool *aPrintInColor)
- {
- //NS_ENSURE_ARG_POINTER(aPrintInColor);
- *aPrintInColor = mPrintInColor;
- return NS_OK;
- }
- NS_IMETHODIMP nsPrintSettings::SetPrintInColor(bool aPrintInColor)
- {
- mPrintInColor = aPrintInColor;
- return NS_OK;
- }
- NS_IMETHODIMP nsPrintSettings::GetOrientation(int32_t *aOrientation)
- {
- NS_ENSURE_ARG_POINTER(aOrientation);
- *aOrientation = mOrientation;
- return NS_OK;
- }
- NS_IMETHODIMP nsPrintSettings::SetOrientation(int32_t aOrientation)
- {
- mOrientation = aOrientation;
- return NS_OK;
- }
- NS_IMETHODIMP nsPrintSettings::GetResolution(int32_t *aResolution)
- {
- NS_ENSURE_ARG_POINTER(aResolution);
- *aResolution = mResolution;
- return NS_OK;
- }
- NS_IMETHODIMP nsPrintSettings::SetResolution(const int32_t aResolution)
- {
- mResolution = aResolution;
- return NS_OK;
- }
- NS_IMETHODIMP nsPrintSettings::GetDuplex(int32_t *aDuplex)
- {
- NS_ENSURE_ARG_POINTER(aDuplex);
- *aDuplex = mDuplex;
- return NS_OK;
- }
- NS_IMETHODIMP nsPrintSettings::SetDuplex(const int32_t aDuplex)
- {
- mDuplex = aDuplex;
- return NS_OK;
- }
- NS_IMETHODIMP nsPrintSettings::GetPrinterName(char16_t * *aPrinter)
- {
- NS_ENSURE_ARG_POINTER(aPrinter);
- *aPrinter = ToNewUnicode(mPrinter);
- NS_ENSURE_TRUE(*aPrinter, NS_ERROR_OUT_OF_MEMORY);
- return NS_OK;
- }
- NS_IMETHODIMP nsPrintSettings::SetPrinterName(const char16_t * aPrinter)
- {
- if (!aPrinter || !mPrinter.Equals(aPrinter)) {
- mIsInitedFromPrinter = false;
- mIsInitedFromPrefs = false;
- }
- mPrinter.Assign(aPrinter);
- return NS_OK;
- }
- NS_IMETHODIMP nsPrintSettings::GetNumCopies(int32_t *aNumCopies)
- {
- NS_ENSURE_ARG_POINTER(aNumCopies);
- *aNumCopies = mNumCopies;
- return NS_OK;
- }
- NS_IMETHODIMP nsPrintSettings::SetNumCopies(int32_t aNumCopies)
- {
- mNumCopies = aNumCopies;
- return NS_OK;
- }
- NS_IMETHODIMP nsPrintSettings::GetPrintToFile(bool *aPrintToFile)
- {
- //NS_ENSURE_ARG_POINTER(aPrintToFile);
- *aPrintToFile = mPrintToFile;
- return NS_OK;
- }
- NS_IMETHODIMP nsPrintSettings::SetPrintToFile(bool aPrintToFile)
- {
- mPrintToFile = aPrintToFile;
- return NS_OK;
- }
- NS_IMETHODIMP nsPrintSettings::GetToFileName(char16_t * *aToFileName)
- {
- //NS_ENSURE_ARG_POINTER(aToFileName);
- *aToFileName = ToNewUnicode(mToFileName);
- return NS_OK;
- }
- NS_IMETHODIMP nsPrintSettings::SetToFileName(const char16_t * aToFileName)
- {
- if (aToFileName) {
- mToFileName = aToFileName;
- } else {
- mToFileName.SetLength(0);
- }
- return NS_OK;
- }
- NS_IMETHODIMP nsPrintSettings::GetOutputFormat(int16_t *aOutputFormat)
- {
- NS_ENSURE_ARG_POINTER(aOutputFormat);
- *aOutputFormat = mOutputFormat;
- return NS_OK;
- }
- NS_IMETHODIMP nsPrintSettings::SetOutputFormat(int16_t aOutputFormat)
- {
- mOutputFormat = aOutputFormat;
- return NS_OK;
- }
- NS_IMETHODIMP nsPrintSettings::GetPrintPageDelay(int32_t *aPrintPageDelay)
- {
- *aPrintPageDelay = mPrintPageDelay;
- return NS_OK;
- }
- NS_IMETHODIMP nsPrintSettings::SetPrintPageDelay(int32_t aPrintPageDelay)
- {
- mPrintPageDelay = aPrintPageDelay;
- return NS_OK;
- }
- NS_IMETHODIMP nsPrintSettings::GetIsInitializedFromPrinter(bool *aIsInitializedFromPrinter)
- {
- NS_ENSURE_ARG_POINTER(aIsInitializedFromPrinter);
- *aIsInitializedFromPrinter = (bool)mIsInitedFromPrinter;
- return NS_OK;
- }
- NS_IMETHODIMP nsPrintSettings::SetIsInitializedFromPrinter(bool aIsInitializedFromPrinter)
- {
- mIsInitedFromPrinter = (bool)aIsInitializedFromPrinter;
- return NS_OK;
- }
- NS_IMETHODIMP nsPrintSettings::GetIsInitializedFromPrefs(bool *aInitializedFromPrefs)
- {
- NS_ENSURE_ARG_POINTER(aInitializedFromPrefs);
- *aInitializedFromPrefs = (bool)mIsInitedFromPrefs;
- return NS_OK;
- }
- NS_IMETHODIMP nsPrintSettings::SetIsInitializedFromPrefs(bool aInitializedFromPrefs)
- {
- mIsInitedFromPrefs = (bool)aInitializedFromPrefs;
- return NS_OK;
- }
- NS_IMETHODIMP nsPrintSettings::GetMarginTop(double *aMarginTop)
- {
- NS_ENSURE_ARG_POINTER(aMarginTop);
- *aMarginTop = NS_TWIPS_TO_INCHES(mMargin.top);
- return NS_OK;
- }
- NS_IMETHODIMP nsPrintSettings::SetMarginTop(double aMarginTop)
- {
- mMargin.top = NS_INCHES_TO_INT_TWIPS(float(aMarginTop));
- return NS_OK;
- }
- NS_IMETHODIMP nsPrintSettings::GetMarginLeft(double *aMarginLeft)
- {
- NS_ENSURE_ARG_POINTER(aMarginLeft);
- *aMarginLeft = NS_TWIPS_TO_INCHES(mMargin.left);
- return NS_OK;
- }
- NS_IMETHODIMP nsPrintSettings::SetMarginLeft(double aMarginLeft)
- {
- mMargin.left = NS_INCHES_TO_INT_TWIPS(float(aMarginLeft));
- return NS_OK;
- }
- NS_IMETHODIMP nsPrintSettings::GetMarginBottom(double *aMarginBottom)
- {
- NS_ENSURE_ARG_POINTER(aMarginBottom);
- *aMarginBottom = NS_TWIPS_TO_INCHES(mMargin.bottom);
- return NS_OK;
- }
- NS_IMETHODIMP nsPrintSettings::SetMarginBottom(double aMarginBottom)
- {
- mMargin.bottom = NS_INCHES_TO_INT_TWIPS(float(aMarginBottom));
- return NS_OK;
- }
- NS_IMETHODIMP nsPrintSettings::GetMarginRight(double *aMarginRight)
- {
- NS_ENSURE_ARG_POINTER(aMarginRight);
- *aMarginRight = NS_TWIPS_TO_INCHES(mMargin.right);
- return NS_OK;
- }
- NS_IMETHODIMP nsPrintSettings::SetMarginRight(double aMarginRight)
- {
- mMargin.right = NS_INCHES_TO_INT_TWIPS(float(aMarginRight));
- return NS_OK;
- }
- NS_IMETHODIMP nsPrintSettings::GetEdgeTop(double *aEdgeTop)
- {
- NS_ENSURE_ARG_POINTER(aEdgeTop);
- *aEdgeTop = NS_TWIPS_TO_INCHES(mEdge.top);
- return NS_OK;
- }
- NS_IMETHODIMP nsPrintSettings::SetEdgeTop(double aEdgeTop)
- {
- mEdge.top = NS_INCHES_TO_INT_TWIPS(float(aEdgeTop));
- return NS_OK;
- }
- NS_IMETHODIMP nsPrintSettings::GetEdgeLeft(double *aEdgeLeft)
- {
- NS_ENSURE_ARG_POINTER(aEdgeLeft);
- *aEdgeLeft = NS_TWIPS_TO_INCHES(mEdge.left);
- return NS_OK;
- }
- NS_IMETHODIMP nsPrintSettings::SetEdgeLeft(double aEdgeLeft)
- {
- mEdge.left = NS_INCHES_TO_INT_TWIPS(float(aEdgeLeft));
- return NS_OK;
- }
- NS_IMETHODIMP nsPrintSettings::GetEdgeBottom(double *aEdgeBottom)
- {
- NS_ENSURE_ARG_POINTER(aEdgeBottom);
- *aEdgeBottom = NS_TWIPS_TO_INCHES(mEdge.bottom);
- return NS_OK;
- }
- NS_IMETHODIMP nsPrintSettings::SetEdgeBottom(double aEdgeBottom)
- {
- mEdge.bottom = NS_INCHES_TO_INT_TWIPS(float(aEdgeBottom));
- return NS_OK;
- }
- NS_IMETHODIMP nsPrintSettings::GetEdgeRight(double *aEdgeRight)
- {
- NS_ENSURE_ARG_POINTER(aEdgeRight);
- *aEdgeRight = NS_TWIPS_TO_INCHES(mEdge.right);
- return NS_OK;
- }
- NS_IMETHODIMP nsPrintSettings::SetEdgeRight(double aEdgeRight)
- {
- mEdge.right = NS_INCHES_TO_INT_TWIPS(float(aEdgeRight));
- return NS_OK;
- }
- NS_IMETHODIMP nsPrintSettings::GetUnwriteableMarginTop(double *aUnwriteableMarginTop)
- {
- NS_ENSURE_ARG_POINTER(aUnwriteableMarginTop);
- *aUnwriteableMarginTop = NS_TWIPS_TO_INCHES(mUnwriteableMargin.top);
- return NS_OK;
- }
- NS_IMETHODIMP nsPrintSettings::SetUnwriteableMarginTop(double aUnwriteableMarginTop)
- {
- if (aUnwriteableMarginTop >= 0.0) {
- mUnwriteableMargin.top = NS_INCHES_TO_INT_TWIPS(aUnwriteableMarginTop);
- }
- return NS_OK;
- }
- NS_IMETHODIMP nsPrintSettings::GetUnwriteableMarginLeft(double *aUnwriteableMarginLeft)
- {
- NS_ENSURE_ARG_POINTER(aUnwriteableMarginLeft);
- *aUnwriteableMarginLeft = NS_TWIPS_TO_INCHES(mUnwriteableMargin.left);
- return NS_OK;
- }
- NS_IMETHODIMP nsPrintSettings::SetUnwriteableMarginLeft(double aUnwriteableMarginLeft)
- {
- if (aUnwriteableMarginLeft >= 0.0) {
- mUnwriteableMargin.left = NS_INCHES_TO_INT_TWIPS(aUnwriteableMarginLeft);
- }
- return NS_OK;
- }
- NS_IMETHODIMP nsPrintSettings::GetUnwriteableMarginBottom(double *aUnwriteableMarginBottom)
- {
- NS_ENSURE_ARG_POINTER(aUnwriteableMarginBottom);
- *aUnwriteableMarginBottom = NS_TWIPS_TO_INCHES(mUnwriteableMargin.bottom);
- return NS_OK;
- }
- NS_IMETHODIMP nsPrintSettings::SetUnwriteableMarginBottom(double aUnwriteableMarginBottom)
- {
- if (aUnwriteableMarginBottom >= 0.0) {
- mUnwriteableMargin.bottom = NS_INCHES_TO_INT_TWIPS(aUnwriteableMarginBottom);
- }
- return NS_OK;
- }
- NS_IMETHODIMP nsPrintSettings::GetUnwriteableMarginRight(double *aUnwriteableMarginRight)
- {
- NS_ENSURE_ARG_POINTER(aUnwriteableMarginRight);
- *aUnwriteableMarginRight = NS_TWIPS_TO_INCHES(mUnwriteableMargin.right);
- return NS_OK;
- }
- NS_IMETHODIMP nsPrintSettings::SetUnwriteableMarginRight(double aUnwriteableMarginRight)
- {
- if (aUnwriteableMarginRight >= 0.0) {
- mUnwriteableMargin.right = NS_INCHES_TO_INT_TWIPS(aUnwriteableMarginRight);
- }
- return NS_OK;
- }
- NS_IMETHODIMP nsPrintSettings::GetScaling(double *aScaling)
- {
- NS_ENSURE_ARG_POINTER(aScaling);
- *aScaling = mScaling;
- return NS_OK;
- }
- NS_IMETHODIMP nsPrintSettings::SetScaling(double aScaling)
- {
- mScaling = aScaling;
- return NS_OK;
- }
- NS_IMETHODIMP nsPrintSettings::GetPrintBGColors(bool *aPrintBGColors)
- {
- NS_ENSURE_ARG_POINTER(aPrintBGColors);
- *aPrintBGColors = mPrintBGColors;
- return NS_OK;
- }
- NS_IMETHODIMP nsPrintSettings::SetPrintBGColors(bool aPrintBGColors)
- {
- mPrintBGColors = aPrintBGColors;
- return NS_OK;
- }
- NS_IMETHODIMP nsPrintSettings::GetPrintBGImages(bool *aPrintBGImages)
- {
- NS_ENSURE_ARG_POINTER(aPrintBGImages);
- *aPrintBGImages = mPrintBGImages;
- return NS_OK;
- }
- NS_IMETHODIMP nsPrintSettings::SetPrintBGImages(bool aPrintBGImages)
- {
- mPrintBGImages = aPrintBGImages;
- return NS_OK;
- }
- NS_IMETHODIMP nsPrintSettings::GetPrintRange(int16_t *aPrintRange)
- {
- NS_ENSURE_ARG_POINTER(aPrintRange);
- *aPrintRange = mPrintRange;
- return NS_OK;
- }
- NS_IMETHODIMP nsPrintSettings::SetPrintRange(int16_t aPrintRange)
- {
- mPrintRange = aPrintRange;
- return NS_OK;
- }
- NS_IMETHODIMP nsPrintSettings::GetTitle(char16_t * *aTitle)
- {
- NS_ENSURE_ARG_POINTER(aTitle);
- if (!mTitle.IsEmpty()) {
- *aTitle = ToNewUnicode(mTitle);
- } else {
- *aTitle = nullptr;
- }
- return NS_OK;
- }
- NS_IMETHODIMP nsPrintSettings::SetTitle(const char16_t * aTitle)
- {
- if (aTitle) {
- mTitle = aTitle;
- } else {
- mTitle.SetLength(0);
- }
- return NS_OK;
- }
- NS_IMETHODIMP nsPrintSettings::GetDocURL(char16_t * *aDocURL)
- {
- NS_ENSURE_ARG_POINTER(aDocURL);
- if (!mURL.IsEmpty()) {
- *aDocURL = ToNewUnicode(mURL);
- } else {
- *aDocURL = nullptr;
- }
- return NS_OK;
- }
- NS_IMETHODIMP nsPrintSettings::SetDocURL(const char16_t * aDocURL)
- {
- if (aDocURL) {
- mURL = aDocURL;
- } else {
- mURL.SetLength(0);
- }
- return NS_OK;
- }
- /** ---------------------------------------------------
- * See documentation in nsPrintSettingsImpl.h
- * @update 1/12/01 rods
- */
- NS_IMETHODIMP
- nsPrintSettings::GetPrintOptions(int32_t aType, bool *aTurnOnOff)
- {
- NS_ENSURE_ARG_POINTER(aTurnOnOff);
- *aTurnOnOff = mPrintOptions & aType ? true : false;
- return NS_OK;
- }
- /** ---------------------------------------------------
- * See documentation in nsPrintSettingsImpl.h
- * @update 1/12/01 rods
- */
- NS_IMETHODIMP
- nsPrintSettings::SetPrintOptions(int32_t aType, bool aTurnOnOff)
- {
- if (aTurnOnOff) {
- mPrintOptions |= aType;
- } else {
- mPrintOptions &= ~aType;
- }
- return NS_OK;
- }
- /** ---------------------------------------------------
- * See documentation in nsPrintSettingsImpl.h
- * @update 1/12/01 rods
- */
- NS_IMETHODIMP
- nsPrintSettings::GetPrintOptionsBits(int32_t *aBits)
- {
- NS_ENSURE_ARG_POINTER(aBits);
- *aBits = mPrintOptions;
- return NS_OK;
- }
- NS_IMETHODIMP
- nsPrintSettings::SetPrintOptionsBits(int32_t aBits)
- {
- mPrintOptions = aBits;
- return NS_OK;
- }
- nsresult
- nsPrintSettings::GetMarginStrs(char16_t * *aTitle,
- nsHeaderFooterEnum aType,
- int16_t aJust)
- {
- NS_ENSURE_ARG_POINTER(aTitle);
- *aTitle = nullptr;
- if (aType == eHeader) {
- switch (aJust) {
- case kJustLeft: *aTitle = ToNewUnicode(mHeaderStrs[0]);break;
- case kJustCenter: *aTitle = ToNewUnicode(mHeaderStrs[1]);break;
- case kJustRight: *aTitle = ToNewUnicode(mHeaderStrs[2]);break;
- } //switch
- } else {
- switch (aJust) {
- case kJustLeft: *aTitle = ToNewUnicode(mFooterStrs[0]);break;
- case kJustCenter: *aTitle = ToNewUnicode(mFooterStrs[1]);break;
- case kJustRight: *aTitle = ToNewUnicode(mFooterStrs[2]);break;
- } //switch
- }
- return NS_OK;
- }
- nsresult
- nsPrintSettings::SetMarginStrs(const char16_t * aTitle,
- nsHeaderFooterEnum aType,
- int16_t aJust)
- {
- NS_ENSURE_ARG_POINTER(aTitle);
- if (aType == eHeader) {
- switch (aJust) {
- case kJustLeft: mHeaderStrs[0] = aTitle;break;
- case kJustCenter: mHeaderStrs[1] = aTitle;break;
- case kJustRight: mHeaderStrs[2] = aTitle;break;
- } //switch
- } else {
- switch (aJust) {
- case kJustLeft: mFooterStrs[0] = aTitle;break;
- case kJustCenter: mFooterStrs[1] = aTitle;break;
- case kJustRight: mFooterStrs[2] = aTitle;break;
- } //switch
- }
- return NS_OK;
- }
- NS_IMETHODIMP nsPrintSettings::GetHeaderStrLeft(char16_t * *aTitle)
- {
- return GetMarginStrs(aTitle, eHeader, kJustLeft);
- }
- NS_IMETHODIMP nsPrintSettings::SetHeaderStrLeft(const char16_t * aTitle)
- {
- return SetMarginStrs(aTitle, eHeader, kJustLeft);
- }
- NS_IMETHODIMP nsPrintSettings::GetHeaderStrCenter(char16_t * *aTitle)
- {
- return GetMarginStrs(aTitle, eHeader, kJustCenter);
- }
- NS_IMETHODIMP nsPrintSettings::SetHeaderStrCenter(const char16_t * aTitle)
- {
- return SetMarginStrs(aTitle, eHeader, kJustCenter);
- }
- NS_IMETHODIMP nsPrintSettings::GetHeaderStrRight(char16_t * *aTitle)
- {
- return GetMarginStrs(aTitle, eHeader, kJustRight);
- }
- NS_IMETHODIMP nsPrintSettings::SetHeaderStrRight(const char16_t * aTitle)
- {
- return SetMarginStrs(aTitle, eHeader, kJustRight);
- }
- NS_IMETHODIMP nsPrintSettings::GetFooterStrLeft(char16_t * *aTitle)
- {
- return GetMarginStrs(aTitle, eFooter, kJustLeft);
- }
- NS_IMETHODIMP nsPrintSettings::SetFooterStrLeft(const char16_t * aTitle)
- {
- return SetMarginStrs(aTitle, eFooter, kJustLeft);
- }
- NS_IMETHODIMP nsPrintSettings::GetFooterStrCenter(char16_t * *aTitle)
- {
- return GetMarginStrs(aTitle, eFooter, kJustCenter);
- }
- NS_IMETHODIMP nsPrintSettings::SetFooterStrCenter(const char16_t * aTitle)
- {
- return SetMarginStrs(aTitle, eFooter, kJustCenter);
- }
- NS_IMETHODIMP nsPrintSettings::GetFooterStrRight(char16_t * *aTitle)
- {
- return GetMarginStrs(aTitle, eFooter, kJustRight);
- }
- NS_IMETHODIMP nsPrintSettings::SetFooterStrRight(const char16_t * aTitle)
- {
- return SetMarginStrs(aTitle, eFooter, kJustRight);
- }
- NS_IMETHODIMP nsPrintSettings::GetPrintFrameTypeUsage(int16_t *aPrintFrameTypeUsage)
- {
- NS_ENSURE_ARG_POINTER(aPrintFrameTypeUsage);
- *aPrintFrameTypeUsage = mPrintFrameTypeUsage;
- return NS_OK;
- }
- NS_IMETHODIMP nsPrintSettings::SetPrintFrameTypeUsage(int16_t aPrintFrameTypeUsage)
- {
- mPrintFrameTypeUsage = aPrintFrameTypeUsage;
- return NS_OK;
- }
- NS_IMETHODIMP nsPrintSettings::GetPrintFrameType(int16_t *aPrintFrameType)
- {
- NS_ENSURE_ARG_POINTER(aPrintFrameType);
- *aPrintFrameType = (int32_t)mPrintFrameType;
- return NS_OK;
- }
- NS_IMETHODIMP nsPrintSettings::SetPrintFrameType(int16_t aPrintFrameType)
- {
- mPrintFrameType = aPrintFrameType;
- return NS_OK;
- }
- NS_IMETHODIMP nsPrintSettings::GetPrintSilent(bool *aPrintSilent)
- {
- NS_ENSURE_ARG_POINTER(aPrintSilent);
- *aPrintSilent = mPrintSilent;
- return NS_OK;
- }
- NS_IMETHODIMP nsPrintSettings::SetPrintSilent(bool aPrintSilent)
- {
- mPrintSilent = aPrintSilent;
- return NS_OK;
- }
- NS_IMETHODIMP nsPrintSettings::GetShrinkToFit(bool *aShrinkToFit)
- {
- NS_ENSURE_ARG_POINTER(aShrinkToFit);
- *aShrinkToFit = mShrinkToFit;
- return NS_OK;
- }
- NS_IMETHODIMP nsPrintSettings::SetShrinkToFit(bool aShrinkToFit)
- {
- mShrinkToFit = aShrinkToFit;
- return NS_OK;
- }
- NS_IMETHODIMP nsPrintSettings::GetShowPrintProgress(bool *aShowPrintProgress)
- {
- NS_ENSURE_ARG_POINTER(aShowPrintProgress);
- *aShowPrintProgress = mShowPrintProgress;
- return NS_OK;
- }
- NS_IMETHODIMP nsPrintSettings::SetShowPrintProgress(bool aShowPrintProgress)
- {
- mShowPrintProgress = aShowPrintProgress;
- return NS_OK;
- }
- NS_IMETHODIMP nsPrintSettings::GetPaperName(char16_t * *aPaperName)
- {
- NS_ENSURE_ARG_POINTER(aPaperName);
- if (!mPaperName.IsEmpty()) {
- *aPaperName = ToNewUnicode(mPaperName);
- } else {
- *aPaperName = nullptr;
- }
- return NS_OK;
- }
- NS_IMETHODIMP nsPrintSettings::SetPaperName(const char16_t * aPaperName)
- {
- if (aPaperName) {
- mPaperName = aPaperName;
- } else {
- mPaperName.SetLength(0);
- }
- return NS_OK;
- }
- NS_IMETHODIMP nsPrintSettings::GetHowToEnableFrameUI(int16_t *aHowToEnableFrameUI)
- {
- NS_ENSURE_ARG_POINTER(aHowToEnableFrameUI);
- *aHowToEnableFrameUI = mHowToEnableFrameUI;
- return NS_OK;
- }
- NS_IMETHODIMP nsPrintSettings::SetHowToEnableFrameUI(int16_t aHowToEnableFrameUI)
- {
- mHowToEnableFrameUI = aHowToEnableFrameUI;
- return NS_OK;
- }
- NS_IMETHODIMP nsPrintSettings::GetIsCancelled(bool *aIsCancelled)
- {
- NS_ENSURE_ARG_POINTER(aIsCancelled);
- *aIsCancelled = mIsCancelled;
- return NS_OK;
- }
- NS_IMETHODIMP nsPrintSettings::SetIsCancelled(bool aIsCancelled)
- {
- mIsCancelled = aIsCancelled;
- return NS_OK;
- }
- NS_IMETHODIMP nsPrintSettings::GetPaperWidth(double *aPaperWidth)
- {
- NS_ENSURE_ARG_POINTER(aPaperWidth);
- *aPaperWidth = mPaperWidth;
- return NS_OK;
- }
- NS_IMETHODIMP nsPrintSettings::SetPaperWidth(double aPaperWidth)
- {
- mPaperWidth = aPaperWidth;
- return NS_OK;
- }
- NS_IMETHODIMP nsPrintSettings::GetPaperHeight(double *aPaperHeight)
- {
- NS_ENSURE_ARG_POINTER(aPaperHeight);
- *aPaperHeight = mPaperHeight;
- return NS_OK;
- }
- NS_IMETHODIMP nsPrintSettings::SetPaperHeight(double aPaperHeight)
- {
- mPaperHeight = aPaperHeight;
- return NS_OK;
- }
- NS_IMETHODIMP nsPrintSettings::GetPaperSizeUnit(int16_t *aPaperSizeUnit)
- {
- NS_ENSURE_ARG_POINTER(aPaperSizeUnit);
- *aPaperSizeUnit = mPaperSizeUnit;
- return NS_OK;
- }
- NS_IMETHODIMP nsPrintSettings::SetPaperSizeUnit(int16_t aPaperSizeUnit)
- {
- mPaperSizeUnit = aPaperSizeUnit;
- return NS_OK;
- }
- NS_IMETHODIMP nsPrintSettings::GetPaperData(int16_t *aPaperData)
- {
- NS_ENSURE_ARG_POINTER(aPaperData);
- *aPaperData = mPaperData;
- return NS_OK;
- }
- NS_IMETHODIMP nsPrintSettings::SetPaperData(int16_t aPaperData)
- {
- mPaperData = aPaperData;
- return NS_OK;
- }
- /** ---------------------------------------------------
- * See documentation in nsPrintOptionsImpl.h
- * @update 6/21/00 dwc
- * @update 1/12/01 rods
- */
- NS_IMETHODIMP
- nsPrintSettings::SetMarginInTwips(nsIntMargin& aMargin)
- {
- mMargin = aMargin;
- return NS_OK;
- }
- NS_IMETHODIMP
- nsPrintSettings::SetEdgeInTwips(nsIntMargin& aEdge)
- {
- mEdge = aEdge;
- return NS_OK;
- }
- // NOTE: Any subclass implementation of this function should make sure
- // to check for negative margin values in aUnwriteableMargin (which
- // would indicate that we should use the system default unwriteable margin.)
- NS_IMETHODIMP
- nsPrintSettings::SetUnwriteableMarginInTwips(nsIntMargin& aUnwriteableMargin)
- {
- if (aUnwriteableMargin.top >= 0) {
- mUnwriteableMargin.top = aUnwriteableMargin.top;
- }
- if (aUnwriteableMargin.left >= 0) {
- mUnwriteableMargin.left = aUnwriteableMargin.left;
- }
- if (aUnwriteableMargin.bottom >= 0) {
- mUnwriteableMargin.bottom = aUnwriteableMargin.bottom;
- }
- if (aUnwriteableMargin.right >= 0) {
- mUnwriteableMargin.right = aUnwriteableMargin.right;
- }
- return NS_OK;
- }
- /** ---------------------------------------------------
- * See documentation in nsPrintOptionsImpl.h
- * @update 6/21/00 dwc
- */
- NS_IMETHODIMP
- nsPrintSettings::GetMarginInTwips(nsIntMargin& aMargin)
- {
- aMargin = mMargin;
- return NS_OK;
- }
- NS_IMETHODIMP
- nsPrintSettings::GetEdgeInTwips(nsIntMargin& aEdge)
- {
- aEdge = mEdge;
- return NS_OK;
- }
- NS_IMETHODIMP
- nsPrintSettings::GetUnwriteableMarginInTwips(nsIntMargin& aUnwriteableMargin)
- {
- aUnwriteableMargin = mUnwriteableMargin;
- return NS_OK;
- }
- /** ---------------------------------------------------
- * Stub - platform-specific implementations can use this function.
- */
- NS_IMETHODIMP
- nsPrintSettings::SetupSilentPrinting()
- {
- return NS_OK;
- }
- /** ---------------------------------------------------
- * See documentation in nsPrintOptionsImpl.h
- */
- NS_IMETHODIMP
- nsPrintSettings::GetEffectivePageSize(double *aWidth, double *aHeight)
- {
- if (mPaperSizeUnit == kPaperSizeInches) {
- *aWidth = NS_INCHES_TO_TWIPS(float(mPaperWidth));
- *aHeight = NS_INCHES_TO_TWIPS(float(mPaperHeight));
- } else {
- *aWidth = NS_MILLIMETERS_TO_TWIPS(float(mPaperWidth));
- *aHeight = NS_MILLIMETERS_TO_TWIPS(float(mPaperHeight));
- }
- if (kLandscapeOrientation == mOrientation) {
- double temp = *aWidth;
- *aWidth = *aHeight;
- *aHeight = temp;
- }
- return NS_OK;
- }
- NS_IMETHODIMP
- nsPrintSettings::GetPageRanges(nsTArray<int32_t> &aPages)
- {
- aPages.Clear();
- return NS_OK;
- }
- nsresult
- nsPrintSettings::_Clone(nsIPrintSettings **_retval)
- {
- RefPtr<nsPrintSettings> printSettings = new nsPrintSettings(*this);
- printSettings.forget(_retval);
- return NS_OK;
- }
- NS_IMETHODIMP
- nsPrintSettings::Clone(nsIPrintSettings **_retval)
- {
- NS_ENSURE_ARG_POINTER(_retval);
- return _Clone(_retval);
- }
- nsresult
- nsPrintSettings::_Assign(nsIPrintSettings *aPS)
- {
- nsPrintSettings *ps = static_cast<nsPrintSettings*>(aPS);
- *this = *ps;
- return NS_OK;
- }
- NS_IMETHODIMP
- nsPrintSettings::Assign(nsIPrintSettings *aPS)
- {
- NS_ENSURE_ARG(aPS);
- return _Assign(aPS);
- }
- //-------------------------------------------
- nsPrintSettings& nsPrintSettings::operator=(const nsPrintSettings& rhs)
- {
- if (this == &rhs) {
- return *this;
- }
- mStartPageNum = rhs.mStartPageNum;
- mEndPageNum = rhs.mEndPageNum;
- mMargin = rhs.mMargin;
- mEdge = rhs.mEdge;
- mUnwriteableMargin = rhs.mUnwriteableMargin;
- mScaling = rhs.mScaling;
- mPrintBGColors = rhs.mPrintBGColors;
- mPrintBGImages = rhs.mPrintBGImages;
- mPrintRange = rhs.mPrintRange;
- mTitle = rhs.mTitle;
- mURL = rhs.mURL;
- mHowToEnableFrameUI = rhs.mHowToEnableFrameUI;
- mIsCancelled = rhs.mIsCancelled;
- mPrintFrameTypeUsage = rhs.mPrintFrameTypeUsage;
- mPrintFrameType = rhs.mPrintFrameType;
- mPrintSilent = rhs.mPrintSilent;
- mShrinkToFit = rhs.mShrinkToFit;
- mShowPrintProgress = rhs.mShowPrintProgress;
- mPaperName = rhs.mPaperName;
- mPaperData = rhs.mPaperData;
- mPaperWidth = rhs.mPaperWidth;
- mPaperHeight = rhs.mPaperHeight;
- mPaperSizeUnit = rhs.mPaperSizeUnit;
- mPrintReversed = rhs.mPrintReversed;
- mPrintInColor = rhs.mPrintInColor;
- mOrientation = rhs.mOrientation;
- mNumCopies = rhs.mNumCopies;
- mPrinter = rhs.mPrinter;
- mPrintToFile = rhs.mPrintToFile;
- mToFileName = rhs.mToFileName;
- mOutputFormat = rhs.mOutputFormat;
- mPrintPageDelay = rhs.mPrintPageDelay;
- for (int32_t i=0;i<NUM_HEAD_FOOT;i++) {
- mHeaderStrs[i] = rhs.mHeaderStrs[i];
- mFooterStrs[i] = rhs.mFooterStrs[i];
- }
- return *this;
- }
|