OLD | NEW |
1 // Copyright 2014 PDFium Authors. All rights reserved. | 1 // Copyright 2014 PDFium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
6 | 6 |
7 #include <limits.h> | 7 #include <limits.h> |
8 | 8 |
9 #include "../../../../third_party/base/numerics/safe_conversions_impl.h" | 9 #include "../../../../third_party/base/numerics/safe_conversions_impl.h" |
10 #include "../../../include/fpdfapi/fpdf_module.h" | 10 #include "../../../include/fpdfapi/fpdf_module.h" |
(...skipping 800 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
811 CPDF_Function* CPDF_Function::Load(CPDF_Object* pFuncObj) { | 811 CPDF_Function* CPDF_Function::Load(CPDF_Object* pFuncObj) { |
812 if (pFuncObj == NULL) { | 812 if (pFuncObj == NULL) { |
813 return NULL; | 813 return NULL; |
814 } | 814 } |
815 CPDF_Function* pFunc = NULL; | 815 CPDF_Function* pFunc = NULL; |
816 int type; | 816 int type; |
817 if (pFuncObj->GetType() == PDFOBJ_STREAM) { | 817 if (pFuncObj->GetType() == PDFOBJ_STREAM) { |
818 type = ((CPDF_Stream*)pFuncObj) | 818 type = ((CPDF_Stream*)pFuncObj) |
819 ->GetDict() | 819 ->GetDict() |
820 ->GetInteger(FX_BSTRC("FunctionType")); | 820 ->GetInteger(FX_BSTRC("FunctionType")); |
821 } else if (pFuncObj->GetType() == PDFOBJ_DICTIONARY) { | 821 } else if (CPDF_Dictionary* pDict = pFuncObj->AsDictionary()) { |
822 type = ((CPDF_Dictionary*)pFuncObj)->GetInteger(FX_BSTRC("FunctionType")); | 822 type = pDict->GetInteger(FX_BSTRC("FunctionType")); |
823 } else { | 823 } else { |
824 return NULL; | 824 return NULL; |
825 } | 825 } |
826 if (type == 0) { | 826 if (type == 0) { |
827 pFunc = new CPDF_SampledFunc; | 827 pFunc = new CPDF_SampledFunc; |
828 } else if (type == 2) { | 828 } else if (type == 2) { |
829 pFunc = new CPDF_ExpIntFunc; | 829 pFunc = new CPDF_ExpIntFunc; |
830 } else if (type == 3) { | 830 } else if (type == 3) { |
831 pFunc = new CPDF_StitchFunc; | 831 pFunc = new CPDF_StitchFunc; |
832 } else if (type == 4) { | 832 } else if (type == 4) { |
(...skipping 13 matching lines...) Expand all Loading... |
846 } | 846 } |
847 CPDF_Function::~CPDF_Function() { | 847 CPDF_Function::~CPDF_Function() { |
848 FX_Free(m_pDomains); | 848 FX_Free(m_pDomains); |
849 FX_Free(m_pRanges); | 849 FX_Free(m_pRanges); |
850 } | 850 } |
851 FX_BOOL CPDF_Function::Init(CPDF_Object* pObj) { | 851 FX_BOOL CPDF_Function::Init(CPDF_Object* pObj) { |
852 CPDF_Dictionary* pDict; | 852 CPDF_Dictionary* pDict; |
853 if (pObj->GetType() == PDFOBJ_STREAM) { | 853 if (pObj->GetType() == PDFOBJ_STREAM) { |
854 pDict = ((CPDF_Stream*)pObj)->GetDict(); | 854 pDict = ((CPDF_Stream*)pObj)->GetDict(); |
855 } else { | 855 } else { |
856 pDict = (CPDF_Dictionary*)pObj; | 856 pDict = pObj->AsDictionary(); |
857 } | 857 } |
858 CPDF_Array* pDomains = pDict->GetArray(FX_BSTRC("Domain")); | 858 CPDF_Array* pDomains = pDict->GetArray(FX_BSTRC("Domain")); |
859 if (pDomains == NULL) { | 859 if (pDomains == NULL) { |
860 return FALSE; | 860 return FALSE; |
861 } | 861 } |
862 m_nInputs = pDomains->GetCount() / 2; | 862 m_nInputs = pDomains->GetCount() / 2; |
863 if (m_nInputs == 0) { | 863 if (m_nInputs == 0) { |
864 return FALSE; | 864 return FALSE; |
865 } | 865 } |
866 m_pDomains = FX_Alloc2D(FX_FLOAT, m_nInputs, 2); | 866 m_pDomains = FX_Alloc2D(FX_FLOAT, m_nInputs, 2); |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
909 for (int i = 0; i < m_nOutputs; i++) { | 909 for (int i = 0; i < m_nOutputs; i++) { |
910 if (results[i] < m_pRanges[i * 2]) { | 910 if (results[i] < m_pRanges[i * 2]) { |
911 results[i] = m_pRanges[i * 2]; | 911 results[i] = m_pRanges[i * 2]; |
912 } else if (results[i] > m_pRanges[i * 2 + 1]) { | 912 } else if (results[i] > m_pRanges[i * 2 + 1]) { |
913 results[i] = m_pRanges[i * 2 + 1]; | 913 results[i] = m_pRanges[i * 2 + 1]; |
914 } | 914 } |
915 } | 915 } |
916 } | 916 } |
917 return TRUE; | 917 return TRUE; |
918 } | 918 } |
OLD | NEW |