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
58 lines
1.9 KiB
Plaintext
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
|