forked from mirrors/gecko-dev
Where supported (print preview and print-to-PDF), this implements changing the orientation and/or rotation of print sheets, as appropriate, in response to CSS `page-orientation`. When supported we: - in the single page-per-sheet case, rotate the sheet in order to implement any `page-orientation` rotation on the sheet. Rotating the sheet is necessary so that when we output PDF files the pages visually have the correct orientation. - in the multiple pages-per-sheet case, we already rotate individual pages in their grid cell. This commit keeps such pages rotated, as appropriate, but augments that behavior by switching the orientation of the sheet (based on the first page on the sheet), if necessary, to make best use of the space on the sheet. (We can't know what orientation any subsequent pages on the sheet will have, so we assume the same orientation as the first one.) Depends on D179423 Differential Revision: https://phabricator.services.mozilla.com/D179448
39 lines
1.1 KiB
C++
39 lines
1.1 KiB
C++
/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
|
* 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/. */
|
|
|
|
#ifndef MOZILLA_GFX_PRINTTARGETPDF_H
|
|
#define MOZILLA_GFX_PRINTTARGETPDF_H
|
|
|
|
#include "nsCOMPtr.h"
|
|
#include "nsIOutputStream.h"
|
|
#include "PrintTarget.h"
|
|
|
|
namespace mozilla {
|
|
namespace gfx {
|
|
|
|
/**
|
|
* PDF printing target.
|
|
*/
|
|
class PrintTargetPDF final : public PrintTarget {
|
|
public:
|
|
static already_AddRefed<PrintTargetPDF> CreateOrNull(
|
|
nsIOutputStream* aStream, const IntSize& aSizeInPoints);
|
|
|
|
nsresult BeginPage(const IntSize& aSizeInPoints) override;
|
|
nsresult EndPage() override;
|
|
void Finish() override;
|
|
|
|
private:
|
|
PrintTargetPDF(cairo_surface_t* aCairoSurface, const IntSize& aSize,
|
|
nsIOutputStream* aStream);
|
|
virtual ~PrintTargetPDF();
|
|
|
|
nsCOMPtr<nsIOutputStream> mStream;
|
|
};
|
|
|
|
} // namespace gfx
|
|
} // namespace mozilla
|
|
|
|
#endif /* MOZILLA_GFX_PRINTTARGETPDF_H */
|