1cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Copyright (c) 2012 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)#include "pdf/pdfium/pdfium_mem_buffer_file_read.h" 6cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 7cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include <string.h> 8cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 9cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)namespace chrome_pdf { 10cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 11cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)PDFiumMemBufferFileRead::PDFiumMemBufferFileRead(const void* data, 12cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) size_t size) { 13cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) m_FileLen = size; 14cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) m_Param = this; 15cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) m_GetBlock = &GetBlock; 16cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) data_ = reinterpret_cast<const unsigned char*>(data); 17cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)} 18cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 19cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)PDFiumMemBufferFileRead::~PDFiumMemBufferFileRead() { 20cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)} 21cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 22cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)int PDFiumMemBufferFileRead::GetBlock(void* param, 23cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) unsigned long position, 24cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) unsigned char* buf, 25cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) unsigned long size) { 26cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) const PDFiumMemBufferFileRead* data = 27cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) reinterpret_cast<const PDFiumMemBufferFileRead*>(param); 28cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) if (!data || position + size > data->m_FileLen) 29cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) return 0; 30cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) memcpy(buf, data->data_ + position, size); 31cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) return 1; 32cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)} 33cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 34cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)} // namespace chrome_pdf 35