chromium/chrome/services/printing/public/mojom/pdf_to_pwg_raster_converter.mojom

// Copyright 2017 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 "chrome/services/printing/public/mojom/pdf_render_settings.mojom";
import "mojo/public/mojom/base/shared_memory.mojom";

// Corresponds to `printing::PwgRasterSettings` in
// printing/pwg_raster_settings.h.
struct PwgRasterSettings {
  enum TransformType {
    TRANSFORM_NORMAL,
    TRANSFORM_ROTATE_180,
    TRANSFORM_FLIP_HORIZONTAL,
    TRANSFORM_FLIP_VERTICAL
  };

  enum DuplexMode {
    SIMPLEX,
    LONG_EDGE,
    SHORT_EDGE,
  };

  DuplexMode duplex_mode;

  // How to transform odd-numbered pages.
  TransformType odd_page_transform;

  // Rotate all pages (on top of odd-numbered page transform).
  bool rotate_all_pages;

  // Rasterize pages in reverse order.
  bool reverse_page_order;

  // Rasterize pages in color.
  bool use_color;
};

interface PdfToPwgRasterConverter {
  Convert(mojo_base.mojom.ReadOnlySharedMemoryRegion pdf_region,
          PdfRenderSettings pdf_settings,
          PwgRasterSettings pwg_raster_settings)
      => (mojo_base.mojom.ReadOnlySharedMemoryRegion? pwg_raster_region,
          uint32 page_count);

  // Sets the status for enterprise policy `kPdfUseSkiaRendererEnabled`. It
  // should be called immediately once `mojom::PdfToPwgRasterConverter` remote
  // is bound and only when this policy is managed.
  SetUseSkiaRendererPolicy(bool use_skia);
};