// Copyright 2020 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
module printing.mojom;
// Print job color mode values.
[Stable, Extensible]
enum ColorModel {
[Default] kUnknownColorModel,
kGray,
kColor,
kCMYK,
kCMY,
kKCMY,
kCMYPlusK, // kCMYPlusK represents CMY+K.
kBlack,
kGrayscale,
kRGB,
kRGB16,
kRGBA,
kColorModeColor, // Used in Samsung printer PPDs.
kColorModeMonochrome, // Used in Samsung printer PPDs.
kHPColorColor, // Used in HP color printer PPDs.
kHPColorBlack, // Used in HP color printer PPDs.
kPrintoutModeNormal, // Used in Foomatic PPDs.
kPrintoutModeNormalGray, // Used in Foomatic PPDs.
kProcessColorModelCMYK, // Used in Canon printer PPDs.
kProcessColorModelGreyscale, // Used in Canon printer PPDs.
kProcessColorModelRGB, // Used in Canon printer PPDs
kBrotherCUPSColor, // Used in Brother color laser printer PPDs.
kBrotherCUPSMono, // Used in Brother color laser printer PPDs.
kBrotherBRScript3Color, // Used in Brother BRScript3 color printer PPDs.
kBrotherBRScript3Black, // Used in Brother BRScript3 color printer PPDs.
kEpsonInkColor, // Used in Epson printer PPDs.
kEpsonInkMono, // Used in Epson printer PPDs.
kSharpARCModeCMColor, // Used in Sharp printer PPDs.
kSharpARCModeCMBW, // Used in Sharp printer PPDs.
kXeroxXRXColorAutomatic, // Used in Xerox printer PPDs.
kXeroxXRXColorBW, // Used in Xerox printer PPDs.
kColorModelLast = kXeroxXRXColorBW, // Obsolete, do not use
[MinVersion=1] kCanonCNColorModeColor, // Used in Canon printer PPDs.
[MinVersion=1] kCanonCNColorModeMono, // Used in Canon printer PPDs.
[MinVersion=1] kCanonCNIJGrayScaleOne, // Used in Canon printer PPDs.
[MinVersion=1] kCanonCNIJGrayScaleZero, // Used in Canon printer PPDs.
// Used in Konica Minolta printer PPDs.
[MinVersion=1] kKonicaMinoltaSelectColorColor,
[MinVersion=1] kKonicaMinoltaSelectColorGrayscale,
[MinVersion=1] kOkiOKControlColor, // Used in Oki printer PPDs.
[MinVersion=1] kOkiOKControlGray, // Used in Oki printer PPDs.
// Used in Xerox printer PPDs.
[MinVersion=1] kXeroxXROutputColorPrintAsColor,
[MinVersion=1] kXeroxXROutputColorPrintAsGrayscale,
[MinVersion=2] kHpPjlColorAsGrayNo, // Used in HP printer PPDs.
[MinVersion=2] kHpPjlColorAsGrayYes, // Used in HP printer PPDs.
};
// Print job duplex mode values.
[Stable, Extensible]
enum DuplexMode {
[Default] kUnknownDuplexMode = -1,
kSimplex,
kLongEdge,
kShortEdge,
};
// Struct that holds margin and content area sizes of a page. Units are
// arbitrary and can be chosen by the programmer.
struct PageSizeMargins {
double content_width;
double content_height;
double margin_top;
double margin_right;
double margin_bottom;
double margin_left;
};
// CSS @page page-orientation descriptor values.
enum PageOrientation { kUpright, kRotateLeft, kRotateRight };
// Describes whether to reduce/enlarge/retain the print contents to fit the
// printable area.
enum PrintScalingOption {
// Prints the upper left of a page without scaling. Crop the page contents
// that don't fit on the paper.
kNone,
// Reduces or enlarges each page to fit the printable area of the selected
// printer paper size.
kFitToPrintableArea,
// Print output page size is same as the actual source page size. Do not
// scale/center/fit to printable area.
kSourceSize,
// Reduces or enlarges each page to fit the selected printer paper size.
kFitToPaper,
// Center each page on paper. If the page is larger than the selected printer
// paper size, it will be scaled down to fit. Note that the page will never be
// scaled *up*. If it's not larger than the paper, it will just be centered.
kCenterShrinkToFitPaper,
};
// Document type that Skia graphics library generates.
enum SkiaDocumentType {
// PDF document type.
kPDF,
// MultiPictureDocument type
kMSKP,
// XPS document type.
[EnableIf=is_win]
kXPS,
};
// Metafile data type encapsulated by a player.
enum MetafileDataType {
kPDF,
[EnableIf=is_win]
kEMF,
[EnableIf=is_win]
kPostScriptEmf,
};
// What kind of document outline to generate.
enum GenerateDocumentOutline {
kNone,
kFromAccessibilityTreeHeaders,
};
// What kind of margins to use.
[Stable, Extensible]
enum MarginType {
// Default varies depending on headers being enabled or not
[Default] kDefaultMargins,
kNoMargins,
kPrintableAreaMargins,
kCustomMargins,
};
// Allowed printing modes as a bitmask.
// This is used in pref file and should never change.
[Stable, Extensible, EnableIf=is_chromeos]
enum ColorModeRestriction {
[Default] kUnset = 0x0,
kMonochrome = 0x1,
kColor = 0x2,
};
// Allowed duplex modes as a bitmask.
// This is used in pref file and should never change.
[Stable, Extensible, EnableIf=is_chromeos]
enum DuplexModeRestriction {
[Default] kUnset = 0x0,
kSimplex = 0x1,
kLongEdge = 0x2,
kShortEdge = 0x4,
kDuplex = 0x6,
};
// Allowed PIN printing modes.
// This is used in pref file and should never change.
[Stable, Extensible, EnableIf=is_chromeos]
enum PinModeRestriction {
[Default] kUnset = 0,
kPin = 1,
kNoPin = 2,
};
// Result codes distilled from system error codes.
enum ResultCode {
kSuccess,
// Generic code for uncategorized errors.
kFailed,
// Insufficient permissions to perform the operation.
kAccessDenied,
// Operation was canceled.
kCanceled,
};
// Matches print_preview.PrinterType in
// chrome/browser/resources/print_preview/data/destination_match.ts
[Stable, Extensible]
enum PrinterType {
kPrivetDeprecated,
kExtension,
kPdf,
kLocal,
kCloudDeprecated
};
[EnableIf=is_win]
enum PrinterLanguageType {
kNone = 0,
kTextOnly,
kXps,
kPostscriptLevel2,
kPostscriptLevel3,
};
// Corresponds to `printing::PageRange` in printing/page_range.h.
struct PageRange {
uint32 from;
uint32 to;
};
// Corresponds to the 'client-info' IPP attribute.
// For optional fields, missing values correspond to the 'no-value' IPP
// out-of-band value.
[Stable, EnableIf=is_chromeos]
struct IppClientInfo {
[Stable, Extensible]
enum ClientType {
kApplication = 3,
kOperatingSystem = 4,
kDriver = 5,
[Default] kOther = 6,
};
ClientType client_type;
string client_name;
string? client_patches;
string client_string_version;
string? client_version;
};