// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

module printing.mojom;

import "ui/gfx/geometry/mojom/geometry.mojom";

struct PdfRenderSettings {
  enum Mode {
    NORMAL = 0,
    // Modes below are Windows only.
    [EnableIf=is_win]
    TEXTONLY,
    [EnableIf=is_win]
    GDI_TEXT,
    [EnableIf=is_win]
    POSTSCRIPT_LEVEL2,
    [EnableIf=is_win]
    POSTSCRIPT_LEVEL3
  };

  gfx.mojom.Rect area;
  gfx.mojom.Point offsets;
  gfx.mojom.Size dpi;
  bool autorotate;
  bool use_color;
  Mode mode;
};
