diff options
author | vandebo@chromium.org <vandebo@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-04-07 22:34:36 +0000 |
---|---|---|
committer | vandebo@chromium.org <vandebo@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-04-07 22:34:36 +0000 |
commit | 1e44a9a4adccf4f31d817177e2ee47b58c93f40d (patch) | |
tree | 26ec83a404b1dd4deceb479ca3ef3540141de75e /printing | |
parent | 1e14033b64fcacbd29ef345d63b6e7ed2c576f2d (diff) | |
download | chromium_src-1e44a9a4adccf4f31d817177e2ee47b58c93f40d.zip chromium_src-1e44a9a4adccf4f31d817177e2ee47b58c93f40d.tar.gz chromium_src-1e44a9a4adccf4f31d817177e2ee47b58c93f40d.tar.bz2 |
Revert 80841 - + 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=62889TEST=NONEReview URL: http://codereview.chromium.org/6499024
TBR=vandebo@chromium.org
Review URL: http://codereview.chromium.org/6814028
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@80857 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'printing')
-rw-r--r-- | printing/pdf_metafile_skia.cc | 165 | ||||
-rw-r--r-- | printing/pdf_metafile_skia.h | 74 | ||||
-rw-r--r-- | printing/printing.gyp | 5 |
3 files changed, 0 insertions, 244 deletions
diff --git a/printing/pdf_metafile_skia.cc b/printing/pdf_metafile_skia.cc deleted file mode 100644 index 72d8908..0000000 --- a/printing/pdf_metafile_skia.cc +++ /dev/null @@ -1,165 +0,0 @@ -// 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. - -#include "printing/pdf_metafile_skia.h" - -#include "base/eintr_wrapper.h" -#include "base/file_descriptor_posix.h" -#include "base/file_util.h" -#include "skia/ext/vector_platform_device_skia.h" -#include "third_party/skia/include/core/SkRefCnt.h" -#include "third_party/skia/include/core/SkStream.h" -#include "third_party/skia/include/pdf/SkPDFDevice.h" -#include "third_party/skia/include/pdf/SkPDFDocument.h" -#include "third_party/skia/include/pdf/SkPDFPage.h" -#include "ui/gfx/point.h" -#include "ui/gfx/rect.h" -#include "ui/gfx/size.h" - -namespace printing { - -struct PdfMetafileSkiaData { - SkRefPtr<SkPDFDevice> current_page_; - SkPDFDocument pdf_doc_; - SkDynamicMemoryWStream pdf_stream_; -}; - -PdfMetafileSkia::~PdfMetafileSkia() {} - -bool PdfMetafileSkia::Init() { - return true; -} -bool PdfMetafileSkia::InitFromData(const void* src_buffer, - uint32 src_buffer_size) { - return data_->pdf_stream_.write(src_buffer, src_buffer_size); -} - -skia::PlatformDevice* PdfMetafileSkia::StartPageForVectorCanvas( - const gfx::Size& page_size, const gfx::Point& content_origin, - const float& scale_factor) { - DCHECK(data_->current_page_.get() == NULL); - - skia::VectorPlatformDeviceSkia* device = - new skia::VectorPlatformDeviceSkia(page_size.width(), page_size.height(), - SkPDFDevice::kFlip_OriginTransform); - device->setInitialTransform(content_origin.x(), content_origin.y(), - scale_factor); - data_->current_page_ = device->PdfDevice(); - return device; -} - -bool PdfMetafileSkia::StartPage(const gfx::Size& page_size, - const gfx::Point& content_origin, - const float& scale_factor) { - NOTREACHED(); - return NULL; -} - -bool PdfMetafileSkia::FinishPage() { - DCHECK(data_->current_page_.get()); - - data_->pdf_doc_.appendPage(data_->current_page_); - data_->current_page_ = NULL; - return true; -} - -bool PdfMetafileSkia::FinishDocument() { - // Don't do anything if we've already set the data in InitFromData. - if (data_->pdf_stream_.getOffset()) - return true; - - if (data_->current_page_.get()) - FinishPage(); - return data_->pdf_doc_.emitPDF(&data_->pdf_stream_); -} - -uint32 PdfMetafileSkia::GetDataSize() const { - return data_->pdf_stream_.getOffset(); -} - -bool PdfMetafileSkia::GetData(void* dst_buffer, - uint32 dst_buffer_size) const { - if (dst_buffer_size < GetDataSize()) - return false; - - memcpy(dst_buffer, data_->pdf_stream_.getStream(), dst_buffer_size); - return true; -} - -bool PdfMetafileSkia::SaveTo(const FilePath& file_path) const { - DCHECK_GT(data_->pdf_stream_.getOffset(), 0U); - if (file_util::WriteFile(file_path, data_->pdf_stream_.getStream(), - GetDataSize()) != static_cast<int>(GetDataSize())) { - DLOG(ERROR) << "Failed to save file " << file_path.value().c_str(); - return false; - } - return true; -} - -gfx::Rect PdfMetafileSkia::GetPageBounds(unsigned int page_number) const { - // TODO(vandebo) add a method to get the page size for a given page to - // SkPDFDocument. - NOTIMPLEMENTED(); - return gfx::Rect(); -} - -unsigned int PdfMetafileSkia::GetPageCount() const { - // TODO(vandebo) add a method to get the number of pages to SkPDFDocument. - NOTIMPLEMENTED(); - return 0; -} - -gfx::NativeDrawingContext PdfMetafileSkia::context() const { - NOTREACHED(); - return NULL; -} - -#if defined(OS_WIN) -bool PdfMetafileSkia::Playback(gfx::NativeDrawingContext hdc, - const RECT* rect) const { - NOTREACHED(); - return false; -} - -bool PdfMetafileSkia::SafePlayback(gfx::NativeDrawingContext hdc) const { - NOTREACHED(); - return false; -} - -HENHMETAFILE PdfMetafileSkia::emf() const { - NOTREACHED(); - return NULL; -} -#endif // if defined(OS_WIN) - -#if defined(OS_CHROMEOS) -bool PdfMetafileSkia::SaveToFD(const base::FileDescriptor& fd) const { - DCHECK_GT(data_->pdf_stream_.getOffset(), 0U); - - if (fd.fd < 0) { - DLOG(ERROR) << "Invalid file descriptor!"; - return false; - } - - bool result = true; - if (file_util::WriteFileDescriptor(fd.fd, data_->pdf_stream_.getStream(), - GetDataSize()) != - static_cast<int>(GetDataSize())) { - DLOG(ERROR) << "Failed to save file with fd " << fd.fd; - result = false; - } - - if (fd.auto_close) { - if (HANDLE_EINTR(close(fd.fd)) < 0) { - DPLOG(WARNING) << "close"; - result = false; - } - } - return result; -} -#endif - -PdfMetafileSkia::PdfMetafileSkia() : data_(new PdfMetafileSkiaData) {} - -} // namespace printing diff --git a/printing/pdf_metafile_skia.h b/printing/pdf_metafile_skia.h deleted file mode 100644 index 4e8a003..0000000 --- a/printing/pdf_metafile_skia.h +++ /dev/null @@ -1,74 +0,0 @@ -// 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_ diff --git a/printing/printing.gyp b/printing/printing.gyp index 87b9485..ae61a41 100644 --- a/printing/printing.gyp +++ b/printing/printing.gyp @@ -51,8 +51,6 @@ 'pdf_metafile_cairo_linux.h', 'pdf_metafile_cg_mac.cc', 'pdf_metafile_cg_mac.h', - 'pdf_metafile_skia.h', - 'pdf_metafile_skia.cc', 'printed_document_cairo.cc', 'printed_document.cc', 'printed_document.h', @@ -109,9 +107,6 @@ '../build/linux/system.gyp:gtkprint', ], }], - ['OS=="mac"', - {'sources/': [['exclude', 'pdf_metafile_skia\\.(cc|h)$']]} - ], ['OS=="win"', { 'defines': [ # PRINT_BACKEND_AVAILABLE disables the default dummy implementation |