diff options
author | vandebo@chromium.org <vandebo@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-04-08 00:21:20 +0000 |
---|---|---|
committer | vandebo@chromium.org <vandebo@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-04-08 00:21:20 +0000 |
commit | 8f87929b97f7e22bdf2c58e65fb24440c726a2d0 (patch) | |
tree | bc4d5682558209ec8e334d7eec0e799eacdd0a29 /printing/pdf_metafile_skia.h | |
parent | 636bffade735efe9ea47b32e766596672f780fc5 (diff) | |
download | chromium_src-8f87929b97f7e22bdf2c58e65fb24440c726a2d0.zip chromium_src-8f87929b97f7e22bdf2c58e65fb24440c726a2d0.tar.gz chromium_src-8f87929b97f7e22bdf2c58e65fb24440c726a2d0.tar.bz2 |
+ This CL pulls in all the PDF code (i.e. we are now compiling the PDF backend on Chrome).
+ Add a Metafile to contain Skia PDF content.
+ Add a VectorPlatformDevice for use with the Skia PDF backend.
BUG=62889
TEST=NONE
Committed: http://src.chromium.org/viewvc/chrome?view=rev&revision=80841
Reverted: http://src.chromium.org/viewvc/chrome?view=rev&revision=80857
Review URL: http://codereview.chromium.org/6499024
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@80873 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'printing/pdf_metafile_skia.h')
-rw-r--r-- | printing/pdf_metafile_skia.h | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/printing/pdf_metafile_skia.h b/printing/pdf_metafile_skia.h new file mode 100644 index 0000000..4e8a003 --- /dev/null +++ b/printing/pdf_metafile_skia.h @@ -0,0 +1,74 @@ +// Copyright (c) 2011 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. + +#ifndef PRINTING_PDF_METAFILE_SKIA_H_ +#define PRINTING_PDF_METAFILE_SKIA_H_ + +#include "base/basictypes.h" +#include "base/logging.h" +#include "base/scoped_ptr.h" +#include "build/build_config.h" +#include "printing/native_metafile.h" + +#if defined(OS_WIN) +#include <windows.h> +#endif + +namespace printing { + +struct PdfMetafileSkiaData; + +// This class uses Skia graphics library to generate a PDF document. +class PdfMetafileSkia : public NativeMetafile { + public: + virtual ~PdfMetafileSkia(); + + // NativeMetafile interface + virtual bool Init(); + virtual bool InitFromData(const void* src_buffer, uint32 src_buffer_size); + + virtual skia::PlatformDevice* StartPageForVectorCanvas( + const gfx::Size& page_size, + const gfx::Point& content_origin, + const float& scale_factor); + virtual bool StartPage(const gfx::Size& page_size, + const gfx::Point& content_origin, + const float& scale_factor); + virtual bool FinishPage(); + virtual bool FinishDocument(); + + virtual uint32 GetDataSize() const; + virtual bool GetData(void* dst_buffer, uint32 dst_buffer_size) const; + + virtual bool SaveTo(const FilePath& file_path) const; + + virtual gfx::Rect GetPageBounds(unsigned int page_number) const; + virtual unsigned int GetPageCount() const; + + virtual gfx::NativeDrawingContext context() const; + +#if defined(OS_WIN) + virtual bool Playback(gfx::NativeDrawingContext hdc, const RECT* rect) const; + virtual bool SafePlayback(gfx::NativeDrawingContext hdc) const; + virtual HENHMETAFILE emf() const; +#endif // if defined(OS_WIN) + +#if defined(OS_CHROMEOS) + virtual bool SaveToFD(const base::FileDescriptor& fd) const = 0; +#endif // if defined(OS_CHROMEOS) + + protected: + PdfMetafileSkia(); + + private: + friend class NativeMetafileFactory; + + scoped_ptr<PdfMetafileSkiaData> data_; + + DISALLOW_COPY_AND_ASSIGN(PdfMetafileSkia); +}; + +} // namespace printing + +#endif // PRINTING_PDF_METAFILE_MAC_H_ |