Coverage Report

Created: 2018-09-25 14:53

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