1cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Copyright (c) 2010 The Chromium Authors. All rights reserved. 2cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// found in the LICENSE file. 4cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 5cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#ifndef PDF_PDFIUM_PDFIUM_MEM_BUFFER_FILE_WRITE_ 6cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#define PDF_PDFIUM_PDFIUM_MEM_BUFFER_FILE_WRITE_ 7cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 8cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include <string> 9cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 10cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "third_party/pdfium/fpdfsdk/include/fpdfsave.h" 11cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 12cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)namespace chrome_pdf { 13cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 14cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Implementation of FPDF_FILEWRITE into a memory buffer. 15cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class PDFiumMemBufferFileWrite : public FPDF_FILEWRITE { 16cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) public: 17cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) PDFiumMemBufferFileWrite(); 18cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) ~PDFiumMemBufferFileWrite(); 19cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 20cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) const std::basic_string<unsigned char>& buffer() { return buffer_; } 21cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) size_t size() { return buffer_.size(); } 22cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 23cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) private: 24cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) int DoWriteBlock(const void* data, unsigned long size); 25cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) static int WriteBlockImpl(FPDF_FILEWRITE* this_file_write, const void* data, 26cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) unsigned long size); 27cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 28cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) std::basic_string<unsigned char> buffer_; 29cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}; 30cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 31cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)} // namespace chrome_pdf 32cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 33cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#endif // PDF_PDFIUM_PDFIUM_MEM_BUFFER_FILE_WRITE_ 34cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 35