Line data Source code
1 : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 : /* This Source Code Form is subject to the terms of the Mozilla Public
3 : * License, v. 2.0. If a copy of the MPL was not distributed with this
4 : * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
5 :
6 : #include "nsPrintSettingsImpl.h"
7 : #include "nsReadableUtils.h"
8 : #include "nsIPrintSession.h"
9 : #include "mozilla/RefPtr.h"
10 :
11 : #define DEFAULT_MARGIN_WIDTH 0.5
12 :
13 0 : NS_IMPL_ISUPPORTS(nsPrintSettings, nsIPrintSettings)
14 :
15 : /** ---------------------------------------------------
16 : * See documentation in nsPrintSettingsImpl.h
17 : * @update 6/21/00 dwc
18 : */
19 0 : nsPrintSettings::nsPrintSettings() :
20 : mPrintOptions(0L),
21 : mPrintRange(kRangeAllPages),
22 : mStartPageNum(1),
23 : mEndPageNum(1),
24 : mScaling(1.0),
25 : mPrintBGColors(false),
26 : mPrintBGImages(false),
27 : mPrintFrameTypeUsage(kUseInternalDefault),
28 : mPrintFrameType(kFramesAsIs),
29 : mHowToEnableFrameUI(kFrameEnableNone),
30 : mIsCancelled(false),
31 : mPrintSilent(false),
32 : mPrintPreview(false),
33 : mShrinkToFit(true),
34 : mShowPrintProgress(true),
35 : mPrintPageDelay(50),
36 : mPaperData(0),
37 : mPaperWidth(8.5),
38 : mPaperHeight(11.0),
39 : mPaperSizeUnit(kPaperSizeInches),
40 : mPrintReversed(false),
41 : mPrintInColor(true),
42 : mOrientation(kPortraitOrientation),
43 : mNumCopies(1),
44 : mPrintToFile(false),
45 : mOutputFormat(kOutputFormatNative),
46 : mIsInitedFromPrinter(false),
47 0 : mIsInitedFromPrefs(false)
48 : {
49 :
50 : /* member initializers and constructor code */
51 0 : int32_t marginWidth = NS_INCHES_TO_INT_TWIPS(DEFAULT_MARGIN_WIDTH);
52 0 : mMargin.SizeTo(marginWidth, marginWidth, marginWidth, marginWidth);
53 0 : mEdge.SizeTo(0, 0, 0, 0);
54 0 : mUnwriteableMargin.SizeTo(0,0,0,0);
55 :
56 0 : mPrintOptions = kPrintOddPages | kPrintEvenPages;
57 :
58 0 : mHeaderStrs[0].AssignLiteral("&T");
59 0 : mHeaderStrs[2].AssignLiteral("&U");
60 :
61 0 : mFooterStrs[0].AssignLiteral("&PT"); // Use &P (Page Num Only) or &PT (Page Num of Page Total)
62 0 : mFooterStrs[2].AssignLiteral("&D");
63 :
64 0 : }
65 :
66 : /** ---------------------------------------------------
67 : * See documentation in nsPrintSettingsImpl.h
68 : * @update 6/21/00 dwc
69 : */
70 0 : nsPrintSettings::nsPrintSettings(const nsPrintSettings& aPS)
71 : {
72 0 : *this = aPS;
73 0 : }
74 :
75 : /** ---------------------------------------------------
76 : * See documentation in nsPrintSettingsImpl.h
77 : * @update 6/21/00 dwc
78 : */
79 0 : nsPrintSettings::~nsPrintSettings()
80 : {
81 0 : }
82 :
83 0 : NS_IMETHODIMP nsPrintSettings::GetPrintSession(nsIPrintSession **aPrintSession)
84 : {
85 0 : NS_ENSURE_ARG_POINTER(aPrintSession);
86 0 : *aPrintSession = nullptr;
87 :
88 0 : nsCOMPtr<nsIPrintSession> session = do_QueryReferent(mSession);
89 0 : if (!session)
90 0 : return NS_ERROR_NOT_INITIALIZED;
91 0 : *aPrintSession = session;
92 0 : NS_ADDREF(*aPrintSession);
93 0 : return NS_OK;
94 : }
95 0 : NS_IMETHODIMP nsPrintSettings::SetPrintSession(nsIPrintSession *aPrintSession)
96 : {
97 : // Clearing it by passing nullptr is not allowed. That's why we
98 : // use a weak ref so that it doesn't have to be cleared.
99 0 : NS_ENSURE_ARG(aPrintSession);
100 :
101 0 : mSession = do_GetWeakReference(aPrintSession);
102 0 : if (!mSession) {
103 : // This may happen if the implementation of this object does
104 : // not support weak references - programmer error.
105 0 : NS_ERROR("Could not get a weak reference from aPrintSession");
106 0 : return NS_ERROR_FAILURE;
107 : }
108 0 : return NS_OK;
109 : }
110 :
111 0 : NS_IMETHODIMP nsPrintSettings::GetStartPageRange(int32_t *aStartPageRange)
112 : {
113 : //NS_ENSURE_ARG_POINTER(aStartPageRange);
114 0 : *aStartPageRange = mStartPageNum;
115 0 : return NS_OK;
116 : }
117 0 : NS_IMETHODIMP nsPrintSettings::SetStartPageRange(int32_t aStartPageRange)
118 : {
119 0 : mStartPageNum = aStartPageRange;
120 0 : return NS_OK;
121 : }
122 :
123 0 : NS_IMETHODIMP nsPrintSettings::GetEndPageRange(int32_t *aEndPageRange)
124 : {
125 : //NS_ENSURE_ARG_POINTER(aEndPageRange);
126 0 : *aEndPageRange = mEndPageNum;
127 0 : return NS_OK;
128 : }
129 0 : NS_IMETHODIMP nsPrintSettings::SetEndPageRange(int32_t aEndPageRange)
130 : {
131 0 : mEndPageNum = aEndPageRange;
132 0 : return NS_OK;
133 : }
134 :
135 0 : NS_IMETHODIMP nsPrintSettings::GetPrintReversed(bool *aPrintReversed)
136 : {
137 : //NS_ENSURE_ARG_POINTER(aPrintReversed);
138 0 : *aPrintReversed = mPrintReversed;
139 0 : return NS_OK;
140 : }
141 0 : NS_IMETHODIMP nsPrintSettings::SetPrintReversed(bool aPrintReversed)
142 : {
143 0 : mPrintReversed = aPrintReversed;
144 0 : return NS_OK;
145 : }
146 :
147 0 : NS_IMETHODIMP nsPrintSettings::GetPrintInColor(bool *aPrintInColor)
148 : {
149 : //NS_ENSURE_ARG_POINTER(aPrintInColor);
150 0 : *aPrintInColor = mPrintInColor;
151 0 : return NS_OK;
152 : }
153 0 : NS_IMETHODIMP nsPrintSettings::SetPrintInColor(bool aPrintInColor)
154 : {
155 0 : mPrintInColor = aPrintInColor;
156 0 : return NS_OK;
157 : }
158 :
159 0 : NS_IMETHODIMP nsPrintSettings::GetOrientation(int32_t *aOrientation)
160 : {
161 0 : NS_ENSURE_ARG_POINTER(aOrientation);
162 0 : *aOrientation = mOrientation;
163 0 : return NS_OK;
164 : }
165 0 : NS_IMETHODIMP nsPrintSettings::SetOrientation(int32_t aOrientation)
166 : {
167 0 : mOrientation = aOrientation;
168 0 : return NS_OK;
169 : }
170 :
171 0 : NS_IMETHODIMP nsPrintSettings::GetResolution(int32_t *aResolution)
172 : {
173 0 : NS_ENSURE_ARG_POINTER(aResolution);
174 0 : *aResolution = mResolution;
175 0 : return NS_OK;
176 : }
177 0 : NS_IMETHODIMP nsPrintSettings::SetResolution(const int32_t aResolution)
178 : {
179 0 : mResolution = aResolution;
180 0 : return NS_OK;
181 : }
182 :
183 0 : NS_IMETHODIMP nsPrintSettings::GetDuplex(int32_t *aDuplex)
184 : {
185 0 : NS_ENSURE_ARG_POINTER(aDuplex);
186 0 : *aDuplex = mDuplex;
187 0 : return NS_OK;
188 : }
189 0 : NS_IMETHODIMP nsPrintSettings::SetDuplex(const int32_t aDuplex)
190 : {
191 0 : mDuplex = aDuplex;
192 0 : return NS_OK;
193 : }
194 :
195 0 : NS_IMETHODIMP nsPrintSettings::GetPrinterName(char16_t * *aPrinter)
196 : {
197 0 : NS_ENSURE_ARG_POINTER(aPrinter);
198 :
199 0 : *aPrinter = ToNewUnicode(mPrinter);
200 0 : NS_ENSURE_TRUE(*aPrinter, NS_ERROR_OUT_OF_MEMORY);
201 :
202 0 : return NS_OK;
203 : }
204 :
205 0 : NS_IMETHODIMP nsPrintSettings::SetPrinterName(const char16_t * aPrinter)
206 : {
207 0 : if (!aPrinter || !mPrinter.Equals(aPrinter)) {
208 0 : mIsInitedFromPrinter = false;
209 0 : mIsInitedFromPrefs = false;
210 : }
211 :
212 0 : mPrinter.Assign(aPrinter);
213 0 : return NS_OK;
214 : }
215 :
216 0 : NS_IMETHODIMP nsPrintSettings::GetNumCopies(int32_t *aNumCopies)
217 : {
218 0 : NS_ENSURE_ARG_POINTER(aNumCopies);
219 0 : *aNumCopies = mNumCopies;
220 0 : return NS_OK;
221 : }
222 0 : NS_IMETHODIMP nsPrintSettings::SetNumCopies(int32_t aNumCopies)
223 : {
224 0 : mNumCopies = aNumCopies;
225 0 : return NS_OK;
226 : }
227 :
228 0 : NS_IMETHODIMP nsPrintSettings::GetPrintToFile(bool *aPrintToFile)
229 : {
230 : //NS_ENSURE_ARG_POINTER(aPrintToFile);
231 0 : *aPrintToFile = mPrintToFile;
232 0 : return NS_OK;
233 : }
234 0 : NS_IMETHODIMP nsPrintSettings::SetPrintToFile(bool aPrintToFile)
235 : {
236 0 : mPrintToFile = aPrintToFile;
237 0 : return NS_OK;
238 : }
239 :
240 0 : NS_IMETHODIMP nsPrintSettings::GetToFileName(char16_t * *aToFileName)
241 : {
242 : //NS_ENSURE_ARG_POINTER(aToFileName);
243 0 : *aToFileName = ToNewUnicode(mToFileName);
244 0 : return NS_OK;
245 : }
246 0 : NS_IMETHODIMP nsPrintSettings::SetToFileName(const char16_t * aToFileName)
247 : {
248 0 : if (aToFileName) {
249 0 : mToFileName = aToFileName;
250 : } else {
251 0 : mToFileName.SetLength(0);
252 : }
253 0 : return NS_OK;
254 : }
255 :
256 0 : NS_IMETHODIMP nsPrintSettings::GetOutputFormat(int16_t *aOutputFormat)
257 : {
258 0 : NS_ENSURE_ARG_POINTER(aOutputFormat);
259 0 : *aOutputFormat = mOutputFormat;
260 0 : return NS_OK;
261 : }
262 0 : NS_IMETHODIMP nsPrintSettings::SetOutputFormat(int16_t aOutputFormat)
263 : {
264 0 : mOutputFormat = aOutputFormat;
265 0 : return NS_OK;
266 : }
267 :
268 0 : NS_IMETHODIMP nsPrintSettings::GetPrintPageDelay(int32_t *aPrintPageDelay)
269 : {
270 0 : *aPrintPageDelay = mPrintPageDelay;
271 0 : return NS_OK;
272 : }
273 0 : NS_IMETHODIMP nsPrintSettings::SetPrintPageDelay(int32_t aPrintPageDelay)
274 : {
275 0 : mPrintPageDelay = aPrintPageDelay;
276 0 : return NS_OK;
277 : }
278 :
279 0 : NS_IMETHODIMP nsPrintSettings::GetIsInitializedFromPrinter(bool *aIsInitializedFromPrinter)
280 : {
281 0 : NS_ENSURE_ARG_POINTER(aIsInitializedFromPrinter);
282 0 : *aIsInitializedFromPrinter = (bool)mIsInitedFromPrinter;
283 0 : return NS_OK;
284 : }
285 0 : NS_IMETHODIMP nsPrintSettings::SetIsInitializedFromPrinter(bool aIsInitializedFromPrinter)
286 : {
287 0 : mIsInitedFromPrinter = (bool)aIsInitializedFromPrinter;
288 0 : return NS_OK;
289 : }
290 :
291 0 : NS_IMETHODIMP nsPrintSettings::GetIsInitializedFromPrefs(bool *aInitializedFromPrefs)
292 : {
293 0 : NS_ENSURE_ARG_POINTER(aInitializedFromPrefs);
294 0 : *aInitializedFromPrefs = (bool)mIsInitedFromPrefs;
295 0 : return NS_OK;
296 : }
297 0 : NS_IMETHODIMP nsPrintSettings::SetIsInitializedFromPrefs(bool aInitializedFromPrefs)
298 : {
299 0 : mIsInitedFromPrefs = (bool)aInitializedFromPrefs;
300 0 : return NS_OK;
301 : }
302 :
303 0 : NS_IMETHODIMP nsPrintSettings::GetMarginTop(double *aMarginTop)
304 : {
305 0 : NS_ENSURE_ARG_POINTER(aMarginTop);
306 0 : *aMarginTop = NS_TWIPS_TO_INCHES(mMargin.top);
307 0 : return NS_OK;
308 : }
309 0 : NS_IMETHODIMP nsPrintSettings::SetMarginTop(double aMarginTop)
310 : {
311 0 : mMargin.top = NS_INCHES_TO_INT_TWIPS(float(aMarginTop));
312 0 : return NS_OK;
313 : }
314 :
315 0 : NS_IMETHODIMP nsPrintSettings::GetMarginLeft(double *aMarginLeft)
316 : {
317 0 : NS_ENSURE_ARG_POINTER(aMarginLeft);
318 0 : *aMarginLeft = NS_TWIPS_TO_INCHES(mMargin.left);
319 0 : return NS_OK;
320 : }
321 0 : NS_IMETHODIMP nsPrintSettings::SetMarginLeft(double aMarginLeft)
322 : {
323 0 : mMargin.left = NS_INCHES_TO_INT_TWIPS(float(aMarginLeft));
324 0 : return NS_OK;
325 : }
326 :
327 0 : NS_IMETHODIMP nsPrintSettings::GetMarginBottom(double *aMarginBottom)
328 : {
329 0 : NS_ENSURE_ARG_POINTER(aMarginBottom);
330 0 : *aMarginBottom = NS_TWIPS_TO_INCHES(mMargin.bottom);
331 0 : return NS_OK;
332 : }
333 0 : NS_IMETHODIMP nsPrintSettings::SetMarginBottom(double aMarginBottom)
334 : {
335 0 : mMargin.bottom = NS_INCHES_TO_INT_TWIPS(float(aMarginBottom));
336 0 : return NS_OK;
337 : }
338 :
339 0 : NS_IMETHODIMP nsPrintSettings::GetMarginRight(double *aMarginRight)
340 : {
341 0 : NS_ENSURE_ARG_POINTER(aMarginRight);
342 0 : *aMarginRight = NS_TWIPS_TO_INCHES(mMargin.right);
343 0 : return NS_OK;
344 : }
345 0 : NS_IMETHODIMP nsPrintSettings::SetMarginRight(double aMarginRight)
346 : {
347 0 : mMargin.right = NS_INCHES_TO_INT_TWIPS(float(aMarginRight));
348 0 : return NS_OK;
349 : }
350 :
351 0 : NS_IMETHODIMP nsPrintSettings::GetEdgeTop(double *aEdgeTop)
352 : {
353 0 : NS_ENSURE_ARG_POINTER(aEdgeTop);
354 0 : *aEdgeTop = NS_TWIPS_TO_INCHES(mEdge.top);
355 0 : return NS_OK;
356 : }
357 0 : NS_IMETHODIMP nsPrintSettings::SetEdgeTop(double aEdgeTop)
358 : {
359 0 : mEdge.top = NS_INCHES_TO_INT_TWIPS(float(aEdgeTop));
360 0 : return NS_OK;
361 : }
362 :
363 0 : NS_IMETHODIMP nsPrintSettings::GetEdgeLeft(double *aEdgeLeft)
364 : {
365 0 : NS_ENSURE_ARG_POINTER(aEdgeLeft);
366 0 : *aEdgeLeft = NS_TWIPS_TO_INCHES(mEdge.left);
367 0 : return NS_OK;
368 : }
369 0 : NS_IMETHODIMP nsPrintSettings::SetEdgeLeft(double aEdgeLeft)
370 : {
371 0 : mEdge.left = NS_INCHES_TO_INT_TWIPS(float(aEdgeLeft));
372 0 : return NS_OK;
373 : }
374 :
375 0 : NS_IMETHODIMP nsPrintSettings::GetEdgeBottom(double *aEdgeBottom)
376 : {
377 0 : NS_ENSURE_ARG_POINTER(aEdgeBottom);
378 0 : *aEdgeBottom = NS_TWIPS_TO_INCHES(mEdge.bottom);
379 0 : return NS_OK;
380 : }
381 0 : NS_IMETHODIMP nsPrintSettings::SetEdgeBottom(double aEdgeBottom)
382 : {
383 0 : mEdge.bottom = NS_INCHES_TO_INT_TWIPS(float(aEdgeBottom));
384 0 : return NS_OK;
385 : }
386 :
387 0 : NS_IMETHODIMP nsPrintSettings::GetEdgeRight(double *aEdgeRight)
388 : {
389 0 : NS_ENSURE_ARG_POINTER(aEdgeRight);
390 0 : *aEdgeRight = NS_TWIPS_TO_INCHES(mEdge.right);
391 0 : return NS_OK;
392 : }
393 0 : NS_IMETHODIMP nsPrintSettings::SetEdgeRight(double aEdgeRight)
394 : {
395 0 : mEdge.right = NS_INCHES_TO_INT_TWIPS(float(aEdgeRight));
396 0 : return NS_OK;
397 : }
398 :
399 0 : NS_IMETHODIMP nsPrintSettings::GetUnwriteableMarginTop(double *aUnwriteableMarginTop)
400 : {
401 0 : NS_ENSURE_ARG_POINTER(aUnwriteableMarginTop);
402 0 : *aUnwriteableMarginTop = NS_TWIPS_TO_INCHES(mUnwriteableMargin.top);
403 0 : return NS_OK;
404 : }
405 0 : NS_IMETHODIMP nsPrintSettings::SetUnwriteableMarginTop(double aUnwriteableMarginTop)
406 : {
407 0 : if (aUnwriteableMarginTop >= 0.0) {
408 0 : mUnwriteableMargin.top = NS_INCHES_TO_INT_TWIPS(aUnwriteableMarginTop);
409 : }
410 0 : return NS_OK;
411 : }
412 :
413 0 : NS_IMETHODIMP nsPrintSettings::GetUnwriteableMarginLeft(double *aUnwriteableMarginLeft)
414 : {
415 0 : NS_ENSURE_ARG_POINTER(aUnwriteableMarginLeft);
416 0 : *aUnwriteableMarginLeft = NS_TWIPS_TO_INCHES(mUnwriteableMargin.left);
417 0 : return NS_OK;
418 : }
419 0 : NS_IMETHODIMP nsPrintSettings::SetUnwriteableMarginLeft(double aUnwriteableMarginLeft)
420 : {
421 0 : if (aUnwriteableMarginLeft >= 0.0) {
422 0 : mUnwriteableMargin.left = NS_INCHES_TO_INT_TWIPS(aUnwriteableMarginLeft);
423 : }
424 0 : return NS_OK;
425 : }
426 :
427 0 : NS_IMETHODIMP nsPrintSettings::GetUnwriteableMarginBottom(double *aUnwriteableMarginBottom)
428 : {
429 0 : NS_ENSURE_ARG_POINTER(aUnwriteableMarginBottom);
430 0 : *aUnwriteableMarginBottom = NS_TWIPS_TO_INCHES(mUnwriteableMargin.bottom);
431 0 : return NS_OK;
432 : }
433 0 : NS_IMETHODIMP nsPrintSettings::SetUnwriteableMarginBottom(double aUnwriteableMarginBottom)
434 : {
435 0 : if (aUnwriteableMarginBottom >= 0.0) {
436 0 : mUnwriteableMargin.bottom = NS_INCHES_TO_INT_TWIPS(aUnwriteableMarginBottom);
437 : }
438 0 : return NS_OK;
439 : }
440 :
441 0 : NS_IMETHODIMP nsPrintSettings::GetUnwriteableMarginRight(double *aUnwriteableMarginRight)
442 : {
443 0 : NS_ENSURE_ARG_POINTER(aUnwriteableMarginRight);
444 0 : *aUnwriteableMarginRight = NS_TWIPS_TO_INCHES(mUnwriteableMargin.right);
445 0 : return NS_OK;
446 : }
447 0 : NS_IMETHODIMP nsPrintSettings::SetUnwriteableMarginRight(double aUnwriteableMarginRight)
448 : {
449 0 : if (aUnwriteableMarginRight >= 0.0) {
450 0 : mUnwriteableMargin.right = NS_INCHES_TO_INT_TWIPS(aUnwriteableMarginRight);
451 : }
452 0 : return NS_OK;
453 : }
454 :
455 0 : NS_IMETHODIMP nsPrintSettings::GetScaling(double *aScaling)
456 : {
457 0 : NS_ENSURE_ARG_POINTER(aScaling);
458 0 : *aScaling = mScaling;
459 0 : return NS_OK;
460 : }
461 :
462 0 : NS_IMETHODIMP nsPrintSettings::SetScaling(double aScaling)
463 : {
464 0 : mScaling = aScaling;
465 0 : return NS_OK;
466 : }
467 :
468 0 : NS_IMETHODIMP nsPrintSettings::GetPrintBGColors(bool *aPrintBGColors)
469 : {
470 0 : NS_ENSURE_ARG_POINTER(aPrintBGColors);
471 0 : *aPrintBGColors = mPrintBGColors;
472 0 : return NS_OK;
473 : }
474 0 : NS_IMETHODIMP nsPrintSettings::SetPrintBGColors(bool aPrintBGColors)
475 : {
476 0 : mPrintBGColors = aPrintBGColors;
477 0 : return NS_OK;
478 : }
479 :
480 0 : NS_IMETHODIMP nsPrintSettings::GetPrintBGImages(bool *aPrintBGImages)
481 : {
482 0 : NS_ENSURE_ARG_POINTER(aPrintBGImages);
483 0 : *aPrintBGImages = mPrintBGImages;
484 0 : return NS_OK;
485 : }
486 0 : NS_IMETHODIMP nsPrintSettings::SetPrintBGImages(bool aPrintBGImages)
487 : {
488 0 : mPrintBGImages = aPrintBGImages;
489 0 : return NS_OK;
490 : }
491 :
492 0 : NS_IMETHODIMP nsPrintSettings::GetPrintRange(int16_t *aPrintRange)
493 : {
494 0 : NS_ENSURE_ARG_POINTER(aPrintRange);
495 0 : *aPrintRange = mPrintRange;
496 0 : return NS_OK;
497 : }
498 0 : NS_IMETHODIMP nsPrintSettings::SetPrintRange(int16_t aPrintRange)
499 : {
500 0 : mPrintRange = aPrintRange;
501 0 : return NS_OK;
502 : }
503 :
504 0 : NS_IMETHODIMP nsPrintSettings::GetTitle(char16_t * *aTitle)
505 : {
506 0 : NS_ENSURE_ARG_POINTER(aTitle);
507 0 : if (!mTitle.IsEmpty()) {
508 0 : *aTitle = ToNewUnicode(mTitle);
509 : } else {
510 0 : *aTitle = nullptr;
511 : }
512 0 : return NS_OK;
513 : }
514 0 : NS_IMETHODIMP nsPrintSettings::SetTitle(const char16_t * aTitle)
515 : {
516 0 : if (aTitle) {
517 0 : mTitle = aTitle;
518 : } else {
519 0 : mTitle.SetLength(0);
520 : }
521 0 : return NS_OK;
522 : }
523 :
524 0 : NS_IMETHODIMP nsPrintSettings::GetDocURL(char16_t * *aDocURL)
525 : {
526 0 : NS_ENSURE_ARG_POINTER(aDocURL);
527 0 : if (!mURL.IsEmpty()) {
528 0 : *aDocURL = ToNewUnicode(mURL);
529 : } else {
530 0 : *aDocURL = nullptr;
531 : }
532 0 : return NS_OK;
533 : }
534 0 : NS_IMETHODIMP nsPrintSettings::SetDocURL(const char16_t * aDocURL)
535 : {
536 0 : if (aDocURL) {
537 0 : mURL = aDocURL;
538 : } else {
539 0 : mURL.SetLength(0);
540 : }
541 0 : return NS_OK;
542 : }
543 :
544 : /** ---------------------------------------------------
545 : * See documentation in nsPrintSettingsImpl.h
546 : * @update 1/12/01 rods
547 : */
548 : NS_IMETHODIMP
549 0 : nsPrintSettings::GetPrintOptions(int32_t aType, bool *aTurnOnOff)
550 : {
551 0 : NS_ENSURE_ARG_POINTER(aTurnOnOff);
552 0 : *aTurnOnOff = mPrintOptions & aType ? true : false;
553 0 : return NS_OK;
554 : }
555 : /** ---------------------------------------------------
556 : * See documentation in nsPrintSettingsImpl.h
557 : * @update 1/12/01 rods
558 : */
559 : NS_IMETHODIMP
560 0 : nsPrintSettings::SetPrintOptions(int32_t aType, bool aTurnOnOff)
561 : {
562 0 : if (aTurnOnOff) {
563 0 : mPrintOptions |= aType;
564 : } else {
565 0 : mPrintOptions &= ~aType;
566 : }
567 0 : return NS_OK;
568 : }
569 :
570 : /** ---------------------------------------------------
571 : * See documentation in nsPrintSettingsImpl.h
572 : * @update 1/12/01 rods
573 : */
574 : NS_IMETHODIMP
575 0 : nsPrintSettings::GetPrintOptionsBits(int32_t *aBits)
576 : {
577 0 : NS_ENSURE_ARG_POINTER(aBits);
578 0 : *aBits = mPrintOptions;
579 0 : return NS_OK;
580 : }
581 :
582 : NS_IMETHODIMP
583 0 : nsPrintSettings::SetPrintOptionsBits(int32_t aBits)
584 : {
585 0 : mPrintOptions = aBits;
586 0 : return NS_OK;
587 : }
588 :
589 : nsresult
590 0 : nsPrintSettings::GetMarginStrs(char16_t * *aTitle,
591 : nsHeaderFooterEnum aType,
592 : int16_t aJust)
593 : {
594 0 : NS_ENSURE_ARG_POINTER(aTitle);
595 0 : *aTitle = nullptr;
596 0 : if (aType == eHeader) {
597 0 : switch (aJust) {
598 0 : case kJustLeft: *aTitle = ToNewUnicode(mHeaderStrs[0]);break;
599 0 : case kJustCenter: *aTitle = ToNewUnicode(mHeaderStrs[1]);break;
600 0 : case kJustRight: *aTitle = ToNewUnicode(mHeaderStrs[2]);break;
601 : } //switch
602 : } else {
603 0 : switch (aJust) {
604 0 : case kJustLeft: *aTitle = ToNewUnicode(mFooterStrs[0]);break;
605 0 : case kJustCenter: *aTitle = ToNewUnicode(mFooterStrs[1]);break;
606 0 : case kJustRight: *aTitle = ToNewUnicode(mFooterStrs[2]);break;
607 : } //switch
608 : }
609 0 : return NS_OK;
610 : }
611 :
612 : nsresult
613 0 : nsPrintSettings::SetMarginStrs(const char16_t * aTitle,
614 : nsHeaderFooterEnum aType,
615 : int16_t aJust)
616 : {
617 0 : NS_ENSURE_ARG_POINTER(aTitle);
618 0 : if (aType == eHeader) {
619 0 : switch (aJust) {
620 0 : case kJustLeft: mHeaderStrs[0] = aTitle;break;
621 0 : case kJustCenter: mHeaderStrs[1] = aTitle;break;
622 0 : case kJustRight: mHeaderStrs[2] = aTitle;break;
623 : } //switch
624 : } else {
625 0 : switch (aJust) {
626 0 : case kJustLeft: mFooterStrs[0] = aTitle;break;
627 0 : case kJustCenter: mFooterStrs[1] = aTitle;break;
628 0 : case kJustRight: mFooterStrs[2] = aTitle;break;
629 : } //switch
630 : }
631 0 : return NS_OK;
632 : }
633 :
634 0 : NS_IMETHODIMP nsPrintSettings::GetHeaderStrLeft(char16_t * *aTitle)
635 : {
636 0 : return GetMarginStrs(aTitle, eHeader, kJustLeft);
637 : }
638 0 : NS_IMETHODIMP nsPrintSettings::SetHeaderStrLeft(const char16_t * aTitle)
639 : {
640 0 : return SetMarginStrs(aTitle, eHeader, kJustLeft);
641 : }
642 :
643 0 : NS_IMETHODIMP nsPrintSettings::GetHeaderStrCenter(char16_t * *aTitle)
644 : {
645 0 : return GetMarginStrs(aTitle, eHeader, kJustCenter);
646 : }
647 0 : NS_IMETHODIMP nsPrintSettings::SetHeaderStrCenter(const char16_t * aTitle)
648 : {
649 0 : return SetMarginStrs(aTitle, eHeader, kJustCenter);
650 : }
651 :
652 0 : NS_IMETHODIMP nsPrintSettings::GetHeaderStrRight(char16_t * *aTitle)
653 : {
654 0 : return GetMarginStrs(aTitle, eHeader, kJustRight);
655 : }
656 0 : NS_IMETHODIMP nsPrintSettings::SetHeaderStrRight(const char16_t * aTitle)
657 : {
658 0 : return SetMarginStrs(aTitle, eHeader, kJustRight);
659 : }
660 :
661 0 : NS_IMETHODIMP nsPrintSettings::GetFooterStrLeft(char16_t * *aTitle)
662 : {
663 0 : return GetMarginStrs(aTitle, eFooter, kJustLeft);
664 : }
665 0 : NS_IMETHODIMP nsPrintSettings::SetFooterStrLeft(const char16_t * aTitle)
666 : {
667 0 : return SetMarginStrs(aTitle, eFooter, kJustLeft);
668 : }
669 :
670 0 : NS_IMETHODIMP nsPrintSettings::GetFooterStrCenter(char16_t * *aTitle)
671 : {
672 0 : return GetMarginStrs(aTitle, eFooter, kJustCenter);
673 : }
674 0 : NS_IMETHODIMP nsPrintSettings::SetFooterStrCenter(const char16_t * aTitle)
675 : {
676 0 : return SetMarginStrs(aTitle, eFooter, kJustCenter);
677 : }
678 :
679 0 : NS_IMETHODIMP nsPrintSettings::GetFooterStrRight(char16_t * *aTitle)
680 : {
681 0 : return GetMarginStrs(aTitle, eFooter, kJustRight);
682 : }
683 0 : NS_IMETHODIMP nsPrintSettings::SetFooterStrRight(const char16_t * aTitle)
684 : {
685 0 : return SetMarginStrs(aTitle, eFooter, kJustRight);
686 : }
687 :
688 0 : NS_IMETHODIMP nsPrintSettings::GetPrintFrameTypeUsage(int16_t *aPrintFrameTypeUsage)
689 : {
690 0 : NS_ENSURE_ARG_POINTER(aPrintFrameTypeUsage);
691 0 : *aPrintFrameTypeUsage = mPrintFrameTypeUsage;
692 0 : return NS_OK;
693 : }
694 0 : NS_IMETHODIMP nsPrintSettings::SetPrintFrameTypeUsage(int16_t aPrintFrameTypeUsage)
695 : {
696 0 : mPrintFrameTypeUsage = aPrintFrameTypeUsage;
697 0 : return NS_OK;
698 : }
699 :
700 0 : NS_IMETHODIMP nsPrintSettings::GetPrintFrameType(int16_t *aPrintFrameType)
701 : {
702 0 : NS_ENSURE_ARG_POINTER(aPrintFrameType);
703 0 : *aPrintFrameType = (int32_t)mPrintFrameType;
704 0 : return NS_OK;
705 : }
706 0 : NS_IMETHODIMP nsPrintSettings::SetPrintFrameType(int16_t aPrintFrameType)
707 : {
708 0 : mPrintFrameType = aPrintFrameType;
709 0 : return NS_OK;
710 : }
711 :
712 0 : NS_IMETHODIMP nsPrintSettings::GetPrintSilent(bool *aPrintSilent)
713 : {
714 0 : NS_ENSURE_ARG_POINTER(aPrintSilent);
715 0 : *aPrintSilent = mPrintSilent;
716 0 : return NS_OK;
717 : }
718 0 : NS_IMETHODIMP nsPrintSettings::SetPrintSilent(bool aPrintSilent)
719 : {
720 0 : mPrintSilent = aPrintSilent;
721 0 : return NS_OK;
722 : }
723 :
724 0 : NS_IMETHODIMP nsPrintSettings::GetShrinkToFit(bool *aShrinkToFit)
725 : {
726 0 : NS_ENSURE_ARG_POINTER(aShrinkToFit);
727 0 : *aShrinkToFit = mShrinkToFit;
728 0 : return NS_OK;
729 : }
730 0 : NS_IMETHODIMP nsPrintSettings::SetShrinkToFit(bool aShrinkToFit)
731 : {
732 0 : mShrinkToFit = aShrinkToFit;
733 0 : return NS_OK;
734 : }
735 :
736 0 : NS_IMETHODIMP nsPrintSettings::GetShowPrintProgress(bool *aShowPrintProgress)
737 : {
738 0 : NS_ENSURE_ARG_POINTER(aShowPrintProgress);
739 0 : *aShowPrintProgress = mShowPrintProgress;
740 0 : return NS_OK;
741 : }
742 0 : NS_IMETHODIMP nsPrintSettings::SetShowPrintProgress(bool aShowPrintProgress)
743 : {
744 0 : mShowPrintProgress = aShowPrintProgress;
745 0 : return NS_OK;
746 : }
747 :
748 0 : NS_IMETHODIMP nsPrintSettings::GetPaperName(char16_t * *aPaperName)
749 : {
750 0 : NS_ENSURE_ARG_POINTER(aPaperName);
751 0 : if (!mPaperName.IsEmpty()) {
752 0 : *aPaperName = ToNewUnicode(mPaperName);
753 : } else {
754 0 : *aPaperName = nullptr;
755 : }
756 0 : return NS_OK;
757 : }
758 0 : NS_IMETHODIMP nsPrintSettings::SetPaperName(const char16_t * aPaperName)
759 : {
760 0 : if (aPaperName) {
761 0 : mPaperName = aPaperName;
762 : } else {
763 0 : mPaperName.SetLength(0);
764 : }
765 0 : return NS_OK;
766 : }
767 :
768 0 : NS_IMETHODIMP nsPrintSettings::GetHowToEnableFrameUI(int16_t *aHowToEnableFrameUI)
769 : {
770 0 : NS_ENSURE_ARG_POINTER(aHowToEnableFrameUI);
771 0 : *aHowToEnableFrameUI = mHowToEnableFrameUI;
772 0 : return NS_OK;
773 : }
774 0 : NS_IMETHODIMP nsPrintSettings::SetHowToEnableFrameUI(int16_t aHowToEnableFrameUI)
775 : {
776 0 : mHowToEnableFrameUI = aHowToEnableFrameUI;
777 0 : return NS_OK;
778 : }
779 :
780 0 : NS_IMETHODIMP nsPrintSettings::GetIsCancelled(bool *aIsCancelled)
781 : {
782 0 : NS_ENSURE_ARG_POINTER(aIsCancelled);
783 0 : *aIsCancelled = mIsCancelled;
784 0 : return NS_OK;
785 : }
786 0 : NS_IMETHODIMP nsPrintSettings::SetIsCancelled(bool aIsCancelled)
787 : {
788 0 : mIsCancelled = aIsCancelled;
789 0 : return NS_OK;
790 : }
791 :
792 0 : NS_IMETHODIMP nsPrintSettings::GetPaperWidth(double *aPaperWidth)
793 : {
794 0 : NS_ENSURE_ARG_POINTER(aPaperWidth);
795 0 : *aPaperWidth = mPaperWidth;
796 0 : return NS_OK;
797 : }
798 0 : NS_IMETHODIMP nsPrintSettings::SetPaperWidth(double aPaperWidth)
799 : {
800 0 : mPaperWidth = aPaperWidth;
801 0 : return NS_OK;
802 : }
803 :
804 0 : NS_IMETHODIMP nsPrintSettings::GetPaperHeight(double *aPaperHeight)
805 : {
806 0 : NS_ENSURE_ARG_POINTER(aPaperHeight);
807 0 : *aPaperHeight = mPaperHeight;
808 0 : return NS_OK;
809 : }
810 0 : NS_IMETHODIMP nsPrintSettings::SetPaperHeight(double aPaperHeight)
811 : {
812 0 : mPaperHeight = aPaperHeight;
813 0 : return NS_OK;
814 : }
815 :
816 0 : NS_IMETHODIMP nsPrintSettings::GetPaperSizeUnit(int16_t *aPaperSizeUnit)
817 : {
818 0 : NS_ENSURE_ARG_POINTER(aPaperSizeUnit);
819 0 : *aPaperSizeUnit = mPaperSizeUnit;
820 0 : return NS_OK;
821 : }
822 0 : NS_IMETHODIMP nsPrintSettings::SetPaperSizeUnit(int16_t aPaperSizeUnit)
823 : {
824 0 : mPaperSizeUnit = aPaperSizeUnit;
825 0 : return NS_OK;
826 : }
827 :
828 0 : NS_IMETHODIMP nsPrintSettings::GetPaperData(int16_t *aPaperData)
829 : {
830 0 : NS_ENSURE_ARG_POINTER(aPaperData);
831 0 : *aPaperData = mPaperData;
832 0 : return NS_OK;
833 : }
834 0 : NS_IMETHODIMP nsPrintSettings::SetPaperData(int16_t aPaperData)
835 : {
836 0 : mPaperData = aPaperData;
837 0 : return NS_OK;
838 : }
839 :
840 : /** ---------------------------------------------------
841 : * See documentation in nsPrintOptionsImpl.h
842 : * @update 6/21/00 dwc
843 : * @update 1/12/01 rods
844 : */
845 : NS_IMETHODIMP
846 0 : nsPrintSettings::SetMarginInTwips(nsIntMargin& aMargin)
847 : {
848 0 : mMargin = aMargin;
849 0 : return NS_OK;
850 : }
851 :
852 : NS_IMETHODIMP
853 0 : nsPrintSettings::SetEdgeInTwips(nsIntMargin& aEdge)
854 : {
855 0 : mEdge = aEdge;
856 0 : return NS_OK;
857 : }
858 :
859 : // NOTE: Any subclass implementation of this function should make sure
860 : // to check for negative margin values in aUnwriteableMargin (which
861 : // would indicate that we should use the system default unwriteable margin.)
862 : NS_IMETHODIMP
863 0 : nsPrintSettings::SetUnwriteableMarginInTwips(nsIntMargin& aUnwriteableMargin)
864 : {
865 0 : if (aUnwriteableMargin.top >= 0) {
866 0 : mUnwriteableMargin.top = aUnwriteableMargin.top;
867 : }
868 0 : if (aUnwriteableMargin.left >= 0) {
869 0 : mUnwriteableMargin.left = aUnwriteableMargin.left;
870 : }
871 0 : if (aUnwriteableMargin.bottom >= 0) {
872 0 : mUnwriteableMargin.bottom = aUnwriteableMargin.bottom;
873 : }
874 0 : if (aUnwriteableMargin.right >= 0) {
875 0 : mUnwriteableMargin.right = aUnwriteableMargin.right;
876 : }
877 0 : return NS_OK;
878 : }
879 :
880 : /** ---------------------------------------------------
881 : * See documentation in nsPrintOptionsImpl.h
882 : * @update 6/21/00 dwc
883 : */
884 : NS_IMETHODIMP
885 0 : nsPrintSettings::GetMarginInTwips(nsIntMargin& aMargin)
886 : {
887 0 : aMargin = mMargin;
888 0 : return NS_OK;
889 : }
890 :
891 : NS_IMETHODIMP
892 0 : nsPrintSettings::GetEdgeInTwips(nsIntMargin& aEdge)
893 : {
894 0 : aEdge = mEdge;
895 0 : return NS_OK;
896 : }
897 :
898 : NS_IMETHODIMP
899 0 : nsPrintSettings::GetUnwriteableMarginInTwips(nsIntMargin& aUnwriteableMargin)
900 : {
901 0 : aUnwriteableMargin = mUnwriteableMargin;
902 0 : return NS_OK;
903 : }
904 :
905 : /** ---------------------------------------------------
906 : * Stub - platform-specific implementations can use this function.
907 : */
908 : NS_IMETHODIMP
909 0 : nsPrintSettings::SetupSilentPrinting()
910 : {
911 0 : return NS_OK;
912 : }
913 :
914 : /** ---------------------------------------------------
915 : * See documentation in nsPrintOptionsImpl.h
916 : */
917 : NS_IMETHODIMP
918 0 : nsPrintSettings::GetEffectivePageSize(double *aWidth, double *aHeight)
919 : {
920 0 : if (mPaperSizeUnit == kPaperSizeInches) {
921 0 : *aWidth = NS_INCHES_TO_TWIPS(float(mPaperWidth));
922 0 : *aHeight = NS_INCHES_TO_TWIPS(float(mPaperHeight));
923 : } else {
924 0 : *aWidth = NS_MILLIMETERS_TO_TWIPS(float(mPaperWidth));
925 0 : *aHeight = NS_MILLIMETERS_TO_TWIPS(float(mPaperHeight));
926 : }
927 0 : if (kLandscapeOrientation == mOrientation) {
928 0 : double temp = *aWidth;
929 0 : *aWidth = *aHeight;
930 0 : *aHeight = temp;
931 : }
932 0 : return NS_OK;
933 : }
934 :
935 : NS_IMETHODIMP
936 0 : nsPrintSettings::GetPageRanges(nsTArray<int32_t> &aPages)
937 : {
938 0 : aPages.Clear();
939 0 : return NS_OK;
940 : }
941 :
942 : nsresult
943 0 : nsPrintSettings::_Clone(nsIPrintSettings **_retval)
944 : {
945 0 : RefPtr<nsPrintSettings> printSettings = new nsPrintSettings(*this);
946 0 : printSettings.forget(_retval);
947 0 : return NS_OK;
948 : }
949 :
950 : NS_IMETHODIMP
951 0 : nsPrintSettings::Clone(nsIPrintSettings **_retval)
952 : {
953 0 : NS_ENSURE_ARG_POINTER(_retval);
954 0 : return _Clone(_retval);
955 : }
956 :
957 : nsresult
958 0 : nsPrintSettings::_Assign(nsIPrintSettings *aPS)
959 : {
960 0 : nsPrintSettings *ps = static_cast<nsPrintSettings*>(aPS);
961 0 : *this = *ps;
962 0 : return NS_OK;
963 : }
964 :
965 : NS_IMETHODIMP
966 0 : nsPrintSettings::Assign(nsIPrintSettings *aPS)
967 : {
968 0 : NS_ENSURE_ARG(aPS);
969 0 : return _Assign(aPS);
970 : }
971 :
972 : //-------------------------------------------
973 0 : nsPrintSettings& nsPrintSettings::operator=(const nsPrintSettings& rhs)
974 : {
975 0 : if (this == &rhs) {
976 0 : return *this;
977 : }
978 :
979 0 : mStartPageNum = rhs.mStartPageNum;
980 0 : mEndPageNum = rhs.mEndPageNum;
981 0 : mMargin = rhs.mMargin;
982 0 : mEdge = rhs.mEdge;
983 0 : mUnwriteableMargin = rhs.mUnwriteableMargin;
984 0 : mScaling = rhs.mScaling;
985 0 : mPrintBGColors = rhs.mPrintBGColors;
986 0 : mPrintBGImages = rhs.mPrintBGImages;
987 0 : mPrintRange = rhs.mPrintRange;
988 0 : mTitle = rhs.mTitle;
989 0 : mURL = rhs.mURL;
990 0 : mHowToEnableFrameUI = rhs.mHowToEnableFrameUI;
991 0 : mIsCancelled = rhs.mIsCancelled;
992 0 : mPrintFrameTypeUsage = rhs.mPrintFrameTypeUsage;
993 0 : mPrintFrameType = rhs.mPrintFrameType;
994 0 : mPrintSilent = rhs.mPrintSilent;
995 0 : mShrinkToFit = rhs.mShrinkToFit;
996 0 : mShowPrintProgress = rhs.mShowPrintProgress;
997 0 : mPaperName = rhs.mPaperName;
998 0 : mPaperData = rhs.mPaperData;
999 0 : mPaperWidth = rhs.mPaperWidth;
1000 0 : mPaperHeight = rhs.mPaperHeight;
1001 0 : mPaperSizeUnit = rhs.mPaperSizeUnit;
1002 0 : mPrintReversed = rhs.mPrintReversed;
1003 0 : mPrintInColor = rhs.mPrintInColor;
1004 0 : mOrientation = rhs.mOrientation;
1005 0 : mNumCopies = rhs.mNumCopies;
1006 0 : mPrinter = rhs.mPrinter;
1007 0 : mPrintToFile = rhs.mPrintToFile;
1008 0 : mToFileName = rhs.mToFileName;
1009 0 : mOutputFormat = rhs.mOutputFormat;
1010 0 : mPrintPageDelay = rhs.mPrintPageDelay;
1011 :
1012 0 : for (int32_t i=0;i<NUM_HEAD_FOOT;i++) {
1013 0 : mHeaderStrs[i] = rhs.mHeaderStrs[i];
1014 0 : mFooterStrs[i] = rhs.mFooterStrs[i];
1015 : }
1016 :
1017 0 : return *this;
1018 : }
1019 :
|