• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2016 PDFium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6 
7 #include "core/fpdfapi/font/cpdf_type3char.h"
8 
9 #include "core/fpdfapi/page/cpdf_form.h"
10 #include "core/fpdfapi/page/cpdf_image.h"
11 #include "core/fpdfapi/page/cpdf_imageobject.h"
12 #include "core/fpdfapi/page/cpdf_pageobject.h"
13 #include "core/fxge/fx_dib.h"
14 
CPDF_Type3Char(CPDF_Form * pForm)15 CPDF_Type3Char::CPDF_Type3Char(CPDF_Form* pForm)
16     : m_pForm(pForm), m_bColored(false) {}
17 
~CPDF_Type3Char()18 CPDF_Type3Char::~CPDF_Type3Char() {}
19 
LoadBitmap(CPDF_RenderContext * pContext)20 bool CPDF_Type3Char::LoadBitmap(CPDF_RenderContext* pContext) {
21   if (m_pBitmap || !m_pForm)
22     return true;
23 
24   if (m_pForm->GetPageObjectList()->size() != 1 || m_bColored)
25     return false;
26 
27   auto& pPageObj = m_pForm->GetPageObjectList()->front();
28   if (!pPageObj->IsImage())
29     return false;
30 
31   m_ImageMatrix = pPageObj->AsImage()->matrix();
32   std::unique_ptr<CFX_DIBSource> pSource =
33       pPageObj->AsImage()->GetImage()->LoadDIBSource();
34   if (pSource)
35     m_pBitmap = pSource->Clone();
36   m_pForm.reset();
37   return true;
38 }
39