Source code

Revision control

Copy as Markdown

Other Tools

/* -*- Mode: C++; c-basic-offset: 2; indent-tabs-mode: nil; tab-width: 8 -*- */
/* 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 protocol PRemotePrintJob;
namespace mozilla {
namespace embedding {
struct CStringKeyValue {
nsCString key;
nsCString value;
};
struct PrintData {
nullable PRemotePrintJob remotePrintJob;
double edgeTop;
double edgeLeft;
double edgeBottom;
double edgeRight;
double marginTop;
double marginLeft;
double marginBottom;
double marginRight;
double unwriteableMarginTop;
double unwriteableMarginLeft;
double unwriteableMarginBottom;
double unwriteableMarginRight;
double scaling;
bool printBGColors;
bool printBGImages;
bool honorPageRuleMargins;
bool usePageRuleSizeAsPaperSize;
bool ignoreUnwriteableMargins;
bool showMarginGuides;
bool printSelectionOnly;
int32_t[] pageRanges;
nsString title;
nsString docURL;
nsString headerStrLeft;
nsString headerStrCenter;
nsString headerStrRight;
nsString footerStrLeft;
nsString footerStrCenter;
nsString footerStrRight;
bool printSilent;
bool shrinkToFit;
nsString paperId;
double paperWidth;
double paperHeight;
short paperSizeUnit;
bool printReversed;
bool printInColor;
int32_t orientation;
int32_t numCopies;
int32_t numPagesPerSheet;
// We do not transfer the following to the child process, since the child
// process should not need this information, and we don't want to leak it if
// the child process is compromised.
//nsString printerName;
//nsString toFileName;
// TODO: Do we really need to deal with these in child processes?
short outputDestination;
short outputFormat;
int32_t printPageDelay;
int32_t resolution;
int32_t duplex;
bool isInitializedFromPrinter;
bool isInitializedFromPrefs;
/* Windows-specific things */
nsString driverName;
nsString deviceName;
uint8_t[] devModeData;
/**
* GTK-specific things. Some of these might look like dupes of the
* information we're already passing, but the generalized settings that
* we hold in nsIPrintSettings don't map perfectly to GTK's GtkPrintSettings,
* so there are some nuances. GtkPrintSettings, for example, stores both an
* internal name for paper size, as well as the display name.
*/
CStringKeyValue[] GTKPrintSettings;
/*
* macOS-specific things:
* What the Cocoa print system is supposed to do with the job.
*/
nsString disposition;
uint16_t destination;
};
} // namespace embedding
} // namespace mozilla