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

Side by Side Diff: core/fpdfapi/fpdf_page/fpdf_page_func.cpp

Issue 2000973002: Make CPDF_Function::Load() return an unique_ptr. (Closed) Base URL: https://pdfium.googlesource.com/pdfium@master
Patch Set: fix build, nits Created 4 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 unified diff | Download patch
« no previous file with comments | « core/fpdfapi/fpdf_page/fpdf_page_doc.cpp ('k') | core/fpdfapi/fpdf_page/fpdf_page_parser.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 "core/fpdfapi/fpdf_page/pageint.h" 7 #include "core/fpdfapi/fpdf_page/pageint.h"
8 8
9 #include <limits.h> 9 #include <limits.h>
10 10
(...skipping 774 matching lines...) Expand 10 before | Expand all | Expand 10 after
785 break; 785 break;
786 } 786 }
787 input = PDF_Interpolate(input, m_pBounds[i], m_pBounds[i + 1], 787 input = PDF_Interpolate(input, m_pBounds[i], m_pBounds[i + 1],
788 m_pEncode[i * 2], m_pEncode[i * 2 + 1]); 788 m_pEncode[i * 2], m_pEncode[i * 2 + 1]);
789 int nresults; 789 int nresults;
790 m_pSubFunctions[i]->Call(&input, kRequiredNumInputs, outputs, nresults); 790 m_pSubFunctions[i]->Call(&input, kRequiredNumInputs, outputs, nresults);
791 return TRUE; 791 return TRUE;
792 } 792 }
793 793
794 // static 794 // static
795 CPDF_Function* CPDF_Function::Load(CPDF_Object* pFuncObj) { 795 std::unique_ptr<CPDF_Function> CPDF_Function::Load(CPDF_Object* pFuncObj) {
796 std::unique_ptr<CPDF_Function> pFunc;
796 if (!pFuncObj) 797 if (!pFuncObj)
797 return nullptr; 798 return pFunc;
798 799
799 int iType = -1; 800 int iType = -1;
800 if (CPDF_Stream* pStream = pFuncObj->AsStream()) 801 if (CPDF_Stream* pStream = pFuncObj->AsStream())
801 iType = pStream->GetDict()->GetIntegerBy("FunctionType"); 802 iType = pStream->GetDict()->GetIntegerBy("FunctionType");
802 else if (CPDF_Dictionary* pDict = pFuncObj->AsDictionary()) 803 else if (CPDF_Dictionary* pDict = pFuncObj->AsDictionary())
803 iType = pDict->GetIntegerBy("FunctionType"); 804 iType = pDict->GetIntegerBy("FunctionType");
804 805
805 Type type = IntegerToFunctionType(iType); 806 Type type = IntegerToFunctionType(iType);
806 std::unique_ptr<CPDF_Function> pFunc;
807 if (type == Type::kType0Sampled) 807 if (type == Type::kType0Sampled)
808 pFunc.reset(new CPDF_SampledFunc()); 808 pFunc.reset(new CPDF_SampledFunc());
809 else if (type == Type::kType2ExpotentialInterpolation) 809 else if (type == Type::kType2ExpotentialInterpolation)
810 pFunc.reset(new CPDF_ExpIntFunc()); 810 pFunc.reset(new CPDF_ExpIntFunc());
811 else if (type == Type::kType3Stitching) 811 else if (type == Type::kType3Stitching)
812 pFunc.reset(new CPDF_StitchFunc()); 812 pFunc.reset(new CPDF_StitchFunc());
813 else if (type == Type::kType4PostScript) 813 else if (type == Type::kType4PostScript)
814 pFunc.reset(new CPDF_PSFunc()); 814 pFunc.reset(new CPDF_PSFunc());
815 815
816 if (!pFunc || !pFunc->Init(pFuncObj)) 816 if (!pFunc || !pFunc->Init(pFuncObj))
817 return nullptr; 817 return std::unique_ptr<CPDF_Function>();
818 return pFunc.release(); 818 return pFunc;
819 } 819 }
820 820
821 // static 821 // static
822 CPDF_Function::Type CPDF_Function::IntegerToFunctionType(int iType) { 822 CPDF_Function::Type CPDF_Function::IntegerToFunctionType(int iType) {
823 switch (iType) { 823 switch (iType) {
824 case 0: 824 case 0:
825 case 2: 825 case 2:
826 case 3: 826 case 3:
827 case 4: 827 case 4:
828 return static_cast<Type>(iType); 828 return static_cast<Type>(iType);
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
912 return m_Type == Type::kType2ExpotentialInterpolation 912 return m_Type == Type::kType2ExpotentialInterpolation
913 ? static_cast<const CPDF_ExpIntFunc*>(this) 913 ? static_cast<const CPDF_ExpIntFunc*>(this)
914 : nullptr; 914 : nullptr;
915 } 915 }
916 916
917 const CPDF_StitchFunc* CPDF_Function::ToStitchFunc() const { 917 const CPDF_StitchFunc* CPDF_Function::ToStitchFunc() const {
918 return m_Type == Type::kType3Stitching 918 return m_Type == Type::kType3Stitching
919 ? static_cast<const CPDF_StitchFunc*>(this) 919 ? static_cast<const CPDF_StitchFunc*>(this)
920 : nullptr; 920 : nullptr;
921 } 921 }
OLDNEW
« no previous file with comments | « core/fpdfapi/fpdf_page/fpdf_page_doc.cpp ('k') | core/fpdfapi/fpdf_page/fpdf_page_parser.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698