// 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;
import "printing/mojom/print.mojom";
import "ui/gfx/geometry/mojom/geometry.mojom";
// Basic information for a specific printer.
// Corresponds to `printing::PrinterBasicInfo` in
// printing/backend/print_backend.h.
struct PrinterBasicInfo {
string printer_name;
string display_name;
string printer_description;
map<string, string> options;
};
// Margins for a paper.
// Corresponds to `printing::PaperMargins` in
// printing/backend/print_backend.h.
[EnableIf=is_chromeos]
struct PaperMargins {
int32 top_margin_um;
int32 right_margin_um;
int32 bottom_margin_um;
int32 left_margin_um;
};
// Paper used by printer semantic capabilities and defaults.
// Corresponds to `printing::PrinterSemanticCapsAndDefaults::Paper` in
// printing/backend/print_backend.h.
struct Paper {
string display_name;
string vendor_id;
gfx.mojom.Size size_um;
gfx.mojom.Rect printable_area_um;
int32 max_height_um;
bool has_borderless_variant;
[EnableIf=is_chromeos]
PaperMargins? supported_margins_um;
};
// Media type used by printer semantic capabilities and defaults.
// Corresponds to `printing::PrinterSemanticCapsAndDefaults::MediaType` in
// printing/backend/print_backend.h.
struct MediaType {
string display_name;
string vendor_id;
};
// An advanced capability value for ChromeOS printing.
// Paper used by printer semantic capabilities and defaults.
// Corresponds to `printing::AdvancedCapabilityValue` in
// printing/backend/print_backend.h.
[EnableIf=is_chromeos]
struct AdvancedCapabilityValue {
string name;
string display_name;
};
// The type of the values for advanced capabilities.
// Corresponds to `printing::AdvancedCapability::Type` in
// printing/backend/print_backend.h.
[EnableIf=is_chromeos]
enum AdvancedCapabilityType {
kString,
kBoolean,
kFloat,
kInteger,
};
// An advanced capability for ChromeOS printing.
// Corresponds to `printing::AdvancedCapability` in
// printing/backend/print_backend.h.
[EnableIf=is_chromeos]
struct AdvancedCapability {
string name;
string display_name;
AdvancedCapabilityType type;
string default_value;
array<AdvancedCapabilityValue> values;
};
// Attributes of a Page Output Quality of XPS printer for Windows printing.
// Corresponds to `printing::PageOutpuQualityAttribute` in
// printing/backend/print_backend.h.
[EnableIf=is_win]
struct PageOutputQualityAttribute {
string display_name;
string name;
};
// Page Output Quality from XPS printer for Windows printing. Corresponds to
// `printing::PageOutputQuality` in printing/backend/print_backend.h.
[EnableIf=is_win]
struct PageOutputQuality {
array<PageOutputQualityAttribute> qualities; // No duplicates.
string? default_quality; // Default selection of `qualities`.
// Null if no default.
};
// The semantic capabilities and defaults used for a printer.
// Corresponds to `printing::PrinterSemanticCapsAndDefaults` in
// printing/backend/print_backend.h.
struct PrinterSemanticCapsAndDefaults {
bool collate_capable = false;
bool collate_default = false;
int32 copies_max = 1; // Valid values are only >= 1.
array<DuplexMode> duplex_modes;
DuplexMode duplex_default = kUnknownDuplexMode;
bool color_changeable = false;
bool color_default = false;
ColorModel color_model = kUnknownColorModel;
ColorModel bw_model = kUnknownColorModel;
array<Paper> papers; // Empty and duplicates allowed.
array<Paper> user_defined_papers;
Paper default_paper;
array<gfx.mojom.Size> dpis; // Duplicates allowed.
gfx.mojom.Size default_dpi;
[EnableIf=is_chromeos]
bool pin_supported = false;
[EnableIf=is_chromeos]
array<AdvancedCapability> advanced_capabilities;
// Null if feature flag `kReadPrinterCapabilitiesWithXps` is disabled.
// Null if printer doesn't have this capability.
[EnableIf=is_win]
PageOutputQuality? page_output_quality;
array<MediaType>? media_types; // Allowed to be empty.
MediaType? default_media_type;
// Print scaling capability
[EnableIf=is_chromeos]
array<PrintScalingType> print_scaling_types; // Allowed to be empty.
[EnableIf=is_chromeos]
PrintScalingType print_scaling_type_default = kUnknownPrintScalingType;
};