gecko-dev/gfx/thebes/PrintTargetCG.h
Emilio Cobos Álvarez 7e23a4287f Bug 1760836 - Support printing to an nsIOutputStream. r=jfkthame,jrmuizel,webdriver-reviewers,geckoview-reviewers,agi
The trickiest bits are the PrintTargetCG ones, the rest is just plumbing
and cleanups and tests, but let me know if you want those to be split
out, can do.

The GTK change to nsPrintSettingsGTK::GetResolution is a no-op (we only
read resolution on windows), but I did that because we assume that it
doesn't fail and GTK returns a sane default anyways.

Differential Revision: https://phabricator.services.mozilla.com/D142199
2022-03-30 18:51:58 +00:00

51 lines
1.6 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_PRINTTARGETCG_H
#define MOZILLA_GFX_PRINTTARGETCG_H
#include <Carbon/Carbon.h>
#include "PrintTarget.h"
class nsIOutputStream;
namespace mozilla::gfx {
/**
* CoreGraphics printing target.
*/
class PrintTargetCG final : public PrintTarget {
public:
static already_AddRefed<PrintTargetCG> CreateOrNull(
nsIOutputStream* aOutputStream, PMPrintSession aPrintSession,
PMPageFormat aPageFormat, PMPrintSettings aPrintSettings,
const IntSize& aSize);
nsresult BeginPrinting(const nsAString& aTitle,
const nsAString& aPrintToFileName, int32_t aStartPage,
int32_t aEndPage) final;
nsresult EndPrinting() final;
nsresult AbortPrinting() final;
nsresult BeginPage() final;
nsresult EndPage() final;
already_AddRefed<DrawTarget> GetReferenceDrawTarget() final;
private:
PrintTargetCG(CGContextRef aPrintToStreamContext,
PMPrintSession aPrintSession, PMPageFormat aPageFormat,
PMPrintSettings aPrintSettings, const IntSize& aSize);
~PrintTargetCG();
CGContextRef mPrintToStreamContext = nullptr;
PMPrintSession mPrintSession;
PMPageFormat mPageFormat;
PMPrintSettings mPrintSettings;
};
} // namespace mozilla::gfx
#endif /* MOZILLA_GFX_PRINTTARGETCG_H */