Files
tubestation/layout/printing/ipc/PRemotePrintJob.ipdl
Jonathan Watt 05e63b3bcb Bug 1833244 p1. Create infrastructure to pass page dimensions to PrintTarget::BeginPage. r=dholbert,geckoview-reviewers,jonalmeida
OS print drivers/devices know nothing about page dimensions unless we tell
them. Previously, the physical page dimensions (including orientation) have
always been the same, so communicating their dimensions once at the start of
a print has been enough. In preparation for supporting different "physical"
page dimensions (in the immediate future only different page orientations) when
we save to PDF, we need to have the infrastructure to pass dimensions through
on a page-by-page basis. This patch adds that.

None of the PrintTarget subclasses do anything with this extra information yet,
but in a follow-up patch PrintTargetPDF will use this information to create
PDFs with mixed page orientations.

Differential Revision: https://phabricator.services.mozilla.com/D179423
2023-07-10 14:26:12 +00:00

58 lines
1.9 KiB
Plaintext

/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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 PContent;
namespace mozilla {
namespace layout {
[ChildImpl=virtual, ParentImpl=virtual]
async protocol PRemotePrintJob
{
manager PContent;
both:
// Tell either side to abort printing and clean up.
async AbortPrint(nsresult aRv);
parent:
// Initialize the real print device with the given information.
async InitializePrint(nsString aDocumentTitle,
int32_t aStartPage, int32_t aEndPage);
// Translate the page recording writen into |fd| and play back the events to
// the real print device.
async ProcessPage(int32_t aWidthInPoints, int32_t aHeightInPoints, uint64_t[] aDeps);
// This informs the real print device that we've finished, so it can trigger
// the actual print.
async FinalizePrint();
// Report a progress change to listeners in the parent process.
async ProgressChange(long aCurSelfProgress,
long aMaxSelfProgress,
long aCurTotalProgress,
long aMaxTotalProgress);
// Report a status change to listeners in the parent process.
async StatusChange(nsresult aStatus);
child:
// Inform the child that the print has been initialized in the parent or has
// failed with result aRv. Includes a file descriptor which the first page
// can be written to.
async PrintInitializationResult(nsresult aRv, FileDescriptor aFd);
// Inform the child that the latest page has been processed remotely. Includes
// a file descriptor which the next page can be written to.
async PageProcessed(FileDescriptor aFd);
async __delete__();
};
} // namespace layout
} // namespace mozilla