Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(60)

Unified Diff: skia/images/SkImageDecoder_fpdfemb.cpp

Issue 113827: Remove the remainder of the skia source code from the Chromium repo.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 11 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « skia/images/SkImageDecoder.cpp ('k') | skia/images/SkImageDecoder_libbmp.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: skia/images/SkImageDecoder_fpdfemb.cpp
===================================================================
--- skia/images/SkImageDecoder_fpdfemb.cpp (revision 16859)
+++ skia/images/SkImageDecoder_fpdfemb.cpp (working copy)
@@ -1,236 +0,0 @@
-/*
- * Copyright 2007, The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "SkImageDecoder.h"
-#include "SkScaledBitmapSampler.h"
-#include "SkStream.h"
-#include "SkColorPriv.h"
-#include "SkTDArray.h"
-
-#include "fpdfemb.h"
-
-class SkFPDFEMBImageDecoder : public SkImageDecoder {
-public:
- SkFPDFEMBImageDecoder() {}
-
- virtual Format getFormat() const {
- return kBMP_Format;
- }
-
-protected:
- virtual bool onDecode(SkStream* stream, SkBitmap* bm,
- SkBitmap::Config pref, Mode mode);
-
-private:
- bool render(FPDFEMB_PAGE page, const FPDFEMB_RECT& bounds, SkBitmap* bm,
- SkBitmap::Config prefConfig, SkImageDecoder::Mode mode);
-};
-
-SkImageDecoder* SkImageDecoder_FPDFEMB_Factory(SkStream*);
-SkImageDecoder* SkImageDecoder_FPDFEMB_Factory(SkStream* stream) {
- static const char kPDFSig[] = { '%', 'P', 'D', 'F' };
-
- size_t len = stream->getLength();
- char buffer[sizeof(kPDFSig)];
-
- SkDebugf("---- SkImageDecoder_FPDFEMB_Factory len=%d\n", len);
-
- if (len != 12683) { return NULL; }
-
- if (len > sizeof(kPDFSig) &&
- stream->read(buffer, sizeof(kPDFSig)) == sizeof(kPDFSig) &&
- !memcmp(buffer, kPDFSig, sizeof(kPDFSig))) {
- return SkNEW(SkFPDFEMBImageDecoder);
- }
- return NULL;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-
-extern "C" {
- static void* pdf_alloc(FPDFEMB_MEMMGR* pMgr, unsigned int size) {
- void* addr = sk_malloc_throw(size);
- // SkDebugf("---- pdf_alloc %d %p\n", size, addr);
- return addr;
- }
-
- static void* pdf_alloc_nl(FPDFEMB_MEMMGR* pMgr, unsigned int size) {
- void* addr = sk_malloc_flags(size, 0);
- // SkDebugf("---- pdf_alloc_nl %d %p\n", size, addr);
- return addr;
- }
-
- static void* pdf_realloc(FPDFEMB_MEMMGR*, void* addr, unsigned int size) {
- void* newaddr = sk_realloc_throw(addr, size);
- // SkDebugf("---- pdf_realloc %p %d %p\n", addr, size, newaddr);
- return newaddr;
- }
-
- static void pdf_free(FPDFEMB_MEMMGR* pMgr, void* pointer) {
- // SkDebugf("---- pdf_free %p\n", pointer);
- sk_free(pointer);
- }
-
- void FX_OUTPUT_LOG_FUNC(const char* format, ...) {
- SkDebugf("---- LOG_FUNC %s\n", format);
- }
-
- static unsigned int file_getsize(FPDFEMB_FILE_ACCESS* file) {
- SkStream* stream = (SkStream*)file->user;
- return stream->getLength();
- }
-
- static FPDFEMB_RESULT file_readblock(FPDFEMB_FILE_ACCESS* file, void* dst,
- unsigned int offset, unsigned int size) {
- SkStream* stream = (SkStream*)file->user;
-// SkDebugf("---- readblock %p %p %d %d\n", stream, dst, offset, size);
- if (!stream->rewind()) {
- SkDebugf("---- rewind failed\n");
- return FPDFERR_ERROR;
- }
- if (stream->skip(offset) != offset) {
- SkDebugf("---- skip failed\n");
- return FPDFERR_ERROR;
- }
- if (stream->read(dst, size) != size) {
- SkDebugf("---- read failed\n");
- return FPDFERR_ERROR;
- }
- return FPDFERR_SUCCESS;
- }
-
- static void pdf_oom_handler(void* memory, int size) {
- SkDebugf("======== pdf OOM %p %d\n", memory, size);
- }
-}
-
-static inline int PDF2Pixels(int x) { return x / 100; }
-static inline SkScalar PDF2Scalar(int x) {
- return SkScalarMulDiv(SK_Scalar1, x, 100);
-}
-
-bool SkFPDFEMBImageDecoder::render(FPDFEMB_PAGE page, const FPDFEMB_RECT& bounds, SkBitmap* bm,
- SkBitmap::Config prefConfig, SkImageDecoder::Mode mode) {
- int width = PDF2Pixels(bounds.right - bounds.left);
- int height = PDF2Pixels(bounds.top - bounds.bottom);
-
- SkDebugf("----- bitmap size [%d %d], mode=%d\n", width, height, mode);
- bm->setConfig(SkBitmap::kARGB_8888_Config, width, height);
- if (SkImageDecoder::kDecodeBounds_Mode == mode) {
- return true;
- }
-
- // USE THE CODEC TO ALLOCATE THE PIXELS!!!!
- if (!this->allocPixelRef(bm, NULL)) {
- SkDebugf("----- failed to alloc pixels\n");
- return false;
- }
-
- bm->eraseColor(0);
-
- FPDFEMB_RESULT result;
- FPDFEMB_BITMAP dib;
-
- result = FPDFEMB_CreateDIB(width, height, FPDFDIB_BGRA, bm->getPixels(),
- bm->rowBytes(), &dib);
- SkDebugf("---- createdib %d\n", result);
-
- result = FPDFEMB_StartRender(dib, page, 0, 0, width, height, 0, 0, NULL, NULL);
- SkDebugf("---- render %d\n", result);
-
- result = FPDFEMB_DestroyDIB(dib);
- SkDebugf("---- destroydib %d\n", result);
-
- SkPMColor* dst = bm->getAddr32(0, 0);
- const uint8_t* src = (uint8_t*)dst;
- int n = bm->getSize() >> 2;
- for (int i = 0; i < n; i++) {
- int b = *src++;
- int g = *src++;
- int r = *src++;
- int a = *src++;
- *dst++ = SkPackARGB32(a, r, g, b);
- }
-
- return true;
-}
-
-#define USE_FIXED_MEM (4 * 1024 * 1024)
-
-bool SkFPDFEMBImageDecoder::onDecode(SkStream* stream, SkBitmap* bm,
- SkBitmap::Config prefConfig, Mode mode) {
-
- FPDFEMB_RESULT result;
-#ifdef USE_FIXED_MEM
- SkAutoMalloc storage(USE_FIXED_MEM);
- result = FPDFEMB_InitFixedMemory(storage.get(), USE_FIXED_MEM,
- pdf_oom_handler);
-#else
- FPDFEMB_MEMMGR memmgr;
- memmgr.Alloc = pdf_alloc;
- memmgr.AllocNL = pdf_alloc_nl;
- memmgr.Realloc = pdf_realloc;
- memmgr.Free = pdf_free;
-
- result = FPDFEMB_Init(&memmgr);
-#endif
- SkDebugf("----- SkImageDecoder_FPDFEMB_Factory init %d, streamLen = %d\n", result, stream->getLength());
-
- FPDFEMB_FILE_ACCESS file;
- file.GetSize = file_getsize;
- file.ReadBlock = file_readblock;
- file.user = stream;
-
- FPDFEMB_DOCUMENT document;
- result = FPDFEMB_StartLoadDocument(&file, NULL, &document, NULL);
- SkDebugf("----- SkImageDecoder_FPDFEMB_Factory open %d %p\n", result, document);
-
- int pageCount = FPDFEMB_GetPageCount(document);
- SkDebugf("----- SkImageDecoder_FPDFEMB_Factory pageCount %d\n", pageCount);
-
- if (pageCount > 0) {
- FPDFEMB_PAGE page;
- result = FPDFEMB_LoadPage(document, 0, &page);
- SkDebugf("----- SkImageDecoder_FPDFEMB_Factory load page %d\n", result);
-
- int width, height;
- result = FPDFEMB_GetPageSize(page, &width, &height);
- SkDebugf("----- SkImageDecoder_FPDFEMB_Factory page size %d [%d %d]\n", result, width, height);
-
- FPDFEMB_RECT rect;
- result = FPDFEMB_GetPageBBox(page, &rect);
- SkDebugf("----- SkImageDecoder_FPDFEMB_Factory page rect %d [%d %d %d %d]\n", result,
- rect.left, rect.top, rect.right, rect.bottom);
-
- SkDebugf("----- SkImageDecoder_FPDFEMB_Factory begin page parse...\n");
- result = FPDFEMB_StartParse(page, false, NULL);
- SkDebugf("----- SkImageDecoder_FPDFEMB_Factory page parse %d\n", result);
-
- if (0 == result) {
- this->render(page, rect, bm, prefConfig, mode);
- }
-
- result = FPDFEMB_ClosePage(page);
- SkDebugf("----- SkImageDecoder_FPDFEMB_Factory close page %d\n", result);
- }
-
- result = FPDFEMB_CloseDocument(document);
- SkDebugf("----- SkImageDecoder_FPDFEMB_Factory close %d\n", result);
-
- // FPDFEMB_Exit();
-
- return true;
-}
« no previous file with comments | « skia/images/SkImageDecoder.cpp ('k') | skia/images/SkImageDecoder_libbmp.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698