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

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

Issue 1648233002: Merge to XFA: Member function name refactoring (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@xfa
Patch Set: more xfa changes Created 4 years, 10 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
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 "pageint.h" 7 #include "pageint.h"
8 8
9 #include <limits.h> 9 #include <limits.h>
10 10
(...skipping 482 matching lines...) Expand 10 before | Expand all | Expand 10 after
493 delete m_pSampleStream; 493 delete m_pSampleStream;
494 FX_Free(m_pEncodeInfo); 494 FX_Free(m_pEncodeInfo);
495 FX_Free(m_pDecodeInfo); 495 FX_Free(m_pDecodeInfo);
496 } 496 }
497 FX_BOOL CPDF_SampledFunc::v_Init(CPDF_Object* pObj) { 497 FX_BOOL CPDF_SampledFunc::v_Init(CPDF_Object* pObj) {
498 CPDF_Stream* pStream = pObj->AsStream(); 498 CPDF_Stream* pStream = pObj->AsStream();
499 if (!pStream) 499 if (!pStream)
500 return false; 500 return false;
501 501
502 CPDF_Dictionary* pDict = pStream->GetDict(); 502 CPDF_Dictionary* pDict = pStream->GetDict();
503 CPDF_Array* pSize = pDict->GetArray("Size"); 503 CPDF_Array* pSize = pDict->GetArrayBy("Size");
504 CPDF_Array* pEncode = pDict->GetArray("Encode"); 504 CPDF_Array* pEncode = pDict->GetArrayBy("Encode");
505 CPDF_Array* pDecode = pDict->GetArray("Decode"); 505 CPDF_Array* pDecode = pDict->GetArrayBy("Decode");
506 m_nBitsPerSample = pDict->GetInteger("BitsPerSample"); 506 m_nBitsPerSample = pDict->GetIntegerBy("BitsPerSample");
507 if (m_nBitsPerSample > 32) { 507 if (m_nBitsPerSample > 32) {
508 return FALSE; 508 return FALSE;
509 } 509 }
510 m_SampleMax = 0xffffffff >> (32 - m_nBitsPerSample); 510 m_SampleMax = 0xffffffff >> (32 - m_nBitsPerSample);
511 m_pSampleStream = new CPDF_StreamAcc; 511 m_pSampleStream = new CPDF_StreamAcc;
512 m_pSampleStream->LoadAllData(pStream, FALSE); 512 m_pSampleStream->LoadAllData(pStream, FALSE);
513 m_pEncodeInfo = FX_Alloc(SampleEncodeInfo, m_nInputs); 513 m_pEncodeInfo = FX_Alloc(SampleEncodeInfo, m_nInputs);
514 FX_SAFE_DWORD nTotalSampleBits = 1; 514 FX_SAFE_DWORD nTotalSampleBits = 1;
515 for (int i = 0; i < m_nInputs; i++) { 515 for (int i = 0; i < m_nInputs; i++) {
516 m_pEncodeInfo[i].sizes = pSize ? pSize->GetInteger(i) : 0; 516 m_pEncodeInfo[i].sizes = pSize ? pSize->GetIntegerAt(i) : 0;
517 if (!pSize && i == 0) { 517 if (!pSize && i == 0) {
518 m_pEncodeInfo[i].sizes = pDict->GetInteger("Size"); 518 m_pEncodeInfo[i].sizes = pDict->GetIntegerBy("Size");
519 } 519 }
520 nTotalSampleBits *= m_pEncodeInfo[i].sizes; 520 nTotalSampleBits *= m_pEncodeInfo[i].sizes;
521 if (pEncode) { 521 if (pEncode) {
522 m_pEncodeInfo[i].encode_min = pEncode->GetFloat(i * 2); 522 m_pEncodeInfo[i].encode_min = pEncode->GetFloatAt(i * 2);
523 m_pEncodeInfo[i].encode_max = pEncode->GetFloat(i * 2 + 1); 523 m_pEncodeInfo[i].encode_max = pEncode->GetFloatAt(i * 2 + 1);
524 } else { 524 } else {
525 m_pEncodeInfo[i].encode_min = 0; 525 m_pEncodeInfo[i].encode_min = 0;
526 if (m_pEncodeInfo[i].sizes == 1) { 526 if (m_pEncodeInfo[i].sizes == 1) {
527 m_pEncodeInfo[i].encode_max = 1; 527 m_pEncodeInfo[i].encode_max = 1;
528 } else { 528 } else {
529 m_pEncodeInfo[i].encode_max = (FX_FLOAT)m_pEncodeInfo[i].sizes - 1; 529 m_pEncodeInfo[i].encode_max = (FX_FLOAT)m_pEncodeInfo[i].sizes - 1;
530 } 530 }
531 } 531 }
532 } 532 }
533 nTotalSampleBits *= m_nBitsPerSample; 533 nTotalSampleBits *= m_nBitsPerSample;
534 nTotalSampleBits *= m_nOutputs; 534 nTotalSampleBits *= m_nOutputs;
535 FX_SAFE_DWORD nTotalSampleBytes = nTotalSampleBits; 535 FX_SAFE_DWORD nTotalSampleBytes = nTotalSampleBits;
536 nTotalSampleBytes += 7; 536 nTotalSampleBytes += 7;
537 nTotalSampleBytes /= 8; 537 nTotalSampleBytes /= 8;
538 if (!nTotalSampleBytes.IsValid() || nTotalSampleBytes.ValueOrDie() == 0 || 538 if (!nTotalSampleBytes.IsValid() || nTotalSampleBytes.ValueOrDie() == 0 ||
539 nTotalSampleBytes.ValueOrDie() > m_pSampleStream->GetSize()) { 539 nTotalSampleBytes.ValueOrDie() > m_pSampleStream->GetSize()) {
540 return FALSE; 540 return FALSE;
541 } 541 }
542 m_pDecodeInfo = FX_Alloc(SampleDecodeInfo, m_nOutputs); 542 m_pDecodeInfo = FX_Alloc(SampleDecodeInfo, m_nOutputs);
543 for (int i = 0; i < m_nOutputs; i++) { 543 for (int i = 0; i < m_nOutputs; i++) {
544 if (pDecode) { 544 if (pDecode) {
545 m_pDecodeInfo[i].decode_min = pDecode->GetFloat(2 * i); 545 m_pDecodeInfo[i].decode_min = pDecode->GetFloatAt(2 * i);
546 m_pDecodeInfo[i].decode_max = pDecode->GetFloat(2 * i + 1); 546 m_pDecodeInfo[i].decode_max = pDecode->GetFloatAt(2 * i + 1);
547 } else { 547 } else {
548 m_pDecodeInfo[i].decode_min = m_pRanges[i * 2]; 548 m_pDecodeInfo[i].decode_min = m_pRanges[i * 2];
549 m_pDecodeInfo[i].decode_max = m_pRanges[i * 2 + 1]; 549 m_pDecodeInfo[i].decode_max = m_pRanges[i * 2 + 1];
550 } 550 }
551 } 551 }
552 return TRUE; 552 return TRUE;
553 } 553 }
554 FX_BOOL CPDF_SampledFunc::v_Call(FX_FLOAT* inputs, FX_FLOAT* results) const { 554 FX_BOOL CPDF_SampledFunc::v_Call(FX_FLOAT* inputs, FX_FLOAT* results) const {
555 int pos = 0; 555 int pos = 0;
556 CFX_FixedBufGrow<FX_FLOAT, 16> encoded_input_buf(m_nInputs); 556 CFX_FixedBufGrow<FX_FLOAT, 16> encoded_input_buf(m_nInputs);
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after
679 } 679 }
680 CPDF_ExpIntFunc::~CPDF_ExpIntFunc() { 680 CPDF_ExpIntFunc::~CPDF_ExpIntFunc() {
681 FX_Free(m_pBeginValues); 681 FX_Free(m_pBeginValues);
682 FX_Free(m_pEndValues); 682 FX_Free(m_pEndValues);
683 } 683 }
684 FX_BOOL CPDF_ExpIntFunc::v_Init(CPDF_Object* pObj) { 684 FX_BOOL CPDF_ExpIntFunc::v_Init(CPDF_Object* pObj) {
685 CPDF_Dictionary* pDict = pObj->GetDict(); 685 CPDF_Dictionary* pDict = pObj->GetDict();
686 if (!pDict) { 686 if (!pDict) {
687 return FALSE; 687 return FALSE;
688 } 688 }
689 CPDF_Array* pArray0 = pDict->GetArray("C0"); 689 CPDF_Array* pArray0 = pDict->GetArrayBy("C0");
690 if (m_nOutputs == 0) { 690 if (m_nOutputs == 0) {
691 m_nOutputs = 1; 691 m_nOutputs = 1;
692 if (pArray0) { 692 if (pArray0) {
693 m_nOutputs = pArray0->GetCount(); 693 m_nOutputs = pArray0->GetCount();
694 } 694 }
695 } 695 }
696 CPDF_Array* pArray1 = pDict->GetArray("C1"); 696 CPDF_Array* pArray1 = pDict->GetArrayBy("C1");
697 m_pBeginValues = FX_Alloc2D(FX_FLOAT, m_nOutputs, 2); 697 m_pBeginValues = FX_Alloc2D(FX_FLOAT, m_nOutputs, 2);
698 m_pEndValues = FX_Alloc2D(FX_FLOAT, m_nOutputs, 2); 698 m_pEndValues = FX_Alloc2D(FX_FLOAT, m_nOutputs, 2);
699 for (int i = 0; i < m_nOutputs; i++) { 699 for (int i = 0; i < m_nOutputs; i++) {
700 m_pBeginValues[i] = pArray0 ? pArray0->GetFloat(i) : 0.0f; 700 m_pBeginValues[i] = pArray0 ? pArray0->GetFloatAt(i) : 0.0f;
701 m_pEndValues[i] = pArray1 ? pArray1->GetFloat(i) : 1.0f; 701 m_pEndValues[i] = pArray1 ? pArray1->GetFloatAt(i) : 1.0f;
702 } 702 }
703 m_Exponent = pDict->GetFloat("N"); 703 m_Exponent = pDict->GetFloatBy("N");
704 m_nOrigOutputs = m_nOutputs; 704 m_nOrigOutputs = m_nOutputs;
705 if (m_nOutputs && m_nInputs > INT_MAX / m_nOutputs) { 705 if (m_nOutputs && m_nInputs > INT_MAX / m_nOutputs) {
706 return FALSE; 706 return FALSE;
707 } 707 }
708 m_nOutputs *= m_nInputs; 708 m_nOutputs *= m_nInputs;
709 return TRUE; 709 return TRUE;
710 } 710 }
711 FX_BOOL CPDF_ExpIntFunc::v_Call(FX_FLOAT* inputs, FX_FLOAT* results) const { 711 FX_BOOL CPDF_ExpIntFunc::v_Call(FX_FLOAT* inputs, FX_FLOAT* results) const {
712 for (int i = 0; i < m_nInputs; i++) 712 for (int i = 0; i < m_nInputs; i++)
713 for (int j = 0; j < m_nOrigOutputs; j++) { 713 for (int j = 0; j < m_nOrigOutputs; j++) {
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
747 FX_Free(m_pEncode); 747 FX_Free(m_pEncode);
748 } 748 }
749 FX_BOOL CPDF_StitchFunc::v_Init(CPDF_Object* pObj) { 749 FX_BOOL CPDF_StitchFunc::v_Init(CPDF_Object* pObj) {
750 CPDF_Dictionary* pDict = pObj->GetDict(); 750 CPDF_Dictionary* pDict = pObj->GetDict();
751 if (!pDict) { 751 if (!pDict) {
752 return FALSE; 752 return FALSE;
753 } 753 }
754 if (m_nInputs != kRequiredNumInputs) { 754 if (m_nInputs != kRequiredNumInputs) {
755 return FALSE; 755 return FALSE;
756 } 756 }
757 CPDF_Array* pArray = pDict->GetArray("Functions"); 757 CPDF_Array* pArray = pDict->GetArrayBy("Functions");
758 if (!pArray) { 758 if (!pArray) {
759 return FALSE; 759 return FALSE;
760 } 760 }
761 FX_DWORD nSubs = pArray->GetCount(); 761 FX_DWORD nSubs = pArray->GetCount();
762 if (nSubs == 0) { 762 if (nSubs == 0) {
763 return FALSE; 763 return FALSE;
764 } 764 }
765 m_nOutputs = 0; 765 m_nOutputs = 0;
766 for (FX_DWORD i = 0; i < nSubs; i++) { 766 for (FX_DWORD i = 0; i < nSubs; i++) {
767 CPDF_Object* pSub = pArray->GetElementValue(i); 767 CPDF_Object* pSub = pArray->GetElementValue(i);
(...skipping 13 matching lines...) Expand all
781 if (m_nOutputs) 781 if (m_nOutputs)
782 return FALSE; 782 return FALSE;
783 783
784 m_nOutputs = pFunc->CountOutputs(); 784 m_nOutputs = pFunc->CountOutputs();
785 } 785 }
786 786
787 m_pSubFunctions.push_back(pFunc.release()); 787 m_pSubFunctions.push_back(pFunc.release());
788 } 788 }
789 m_pBounds = FX_Alloc(FX_FLOAT, nSubs + 1); 789 m_pBounds = FX_Alloc(FX_FLOAT, nSubs + 1);
790 m_pBounds[0] = m_pDomains[0]; 790 m_pBounds[0] = m_pDomains[0];
791 pArray = pDict->GetArray("Bounds"); 791 pArray = pDict->GetArrayBy("Bounds");
792 if (!pArray) { 792 if (!pArray) {
793 return FALSE; 793 return FALSE;
794 } 794 }
795 for (FX_DWORD i = 0; i < nSubs - 1; i++) { 795 for (FX_DWORD i = 0; i < nSubs - 1; i++) {
796 m_pBounds[i + 1] = pArray->GetFloat(i); 796 m_pBounds[i + 1] = pArray->GetFloatAt(i);
797 } 797 }
798 m_pBounds[nSubs] = m_pDomains[1]; 798 m_pBounds[nSubs] = m_pDomains[1];
799 m_pEncode = FX_Alloc2D(FX_FLOAT, nSubs, 2); 799 m_pEncode = FX_Alloc2D(FX_FLOAT, nSubs, 2);
800 pArray = pDict->GetArray("Encode"); 800 pArray = pDict->GetArrayBy("Encode");
801 if (!pArray) { 801 if (!pArray) {
802 return FALSE; 802 return FALSE;
803 } 803 }
804 for (FX_DWORD i = 0; i < nSubs * 2; i++) { 804 for (FX_DWORD i = 0; i < nSubs * 2; i++) {
805 m_pEncode[i] = pArray->GetFloat(i); 805 m_pEncode[i] = pArray->GetFloatAt(i);
806 } 806 }
807 return TRUE; 807 return TRUE;
808 } 808 }
809 FX_BOOL CPDF_StitchFunc::v_Call(FX_FLOAT* inputs, FX_FLOAT* outputs) const { 809 FX_BOOL CPDF_StitchFunc::v_Call(FX_FLOAT* inputs, FX_FLOAT* outputs) const {
810 FX_FLOAT input = inputs[0]; 810 FX_FLOAT input = inputs[0];
811 size_t i; 811 size_t i;
812 for (i = 0; i < m_pSubFunctions.size() - 1; i++) 812 for (i = 0; i < m_pSubFunctions.size() - 1; i++)
813 if (input < m_pBounds[i + 1]) { 813 if (input < m_pBounds[i + 1]) {
814 break; 814 break;
815 } 815 }
816 if (!m_pSubFunctions[i]) { 816 if (!m_pSubFunctions[i]) {
817 return FALSE; 817 return FALSE;
818 } 818 }
819 input = PDF_Interpolate(input, m_pBounds[i], m_pBounds[i + 1], 819 input = PDF_Interpolate(input, m_pBounds[i], m_pBounds[i + 1],
820 m_pEncode[i * 2], m_pEncode[i * 2 + 1]); 820 m_pEncode[i * 2], m_pEncode[i * 2 + 1]);
821 int nresults; 821 int nresults;
822 m_pSubFunctions[i]->Call(&input, kRequiredNumInputs, outputs, nresults); 822 m_pSubFunctions[i]->Call(&input, kRequiredNumInputs, outputs, nresults);
823 return TRUE; 823 return TRUE;
824 } 824 }
825 CPDF_Function* CPDF_Function::Load(CPDF_Object* pFuncObj) { 825 CPDF_Function* CPDF_Function::Load(CPDF_Object* pFuncObj) {
826 if (!pFuncObj) { 826 if (!pFuncObj) {
827 return NULL; 827 return NULL;
828 } 828 }
829 CPDF_Function* pFunc = NULL; 829 CPDF_Function* pFunc = NULL;
830 int type; 830 int type;
831 if (CPDF_Stream* pStream = pFuncObj->AsStream()) { 831 if (CPDF_Stream* pStream = pFuncObj->AsStream()) {
832 type = pStream->GetDict()->GetInteger("FunctionType"); 832 type = pStream->GetDict()->GetIntegerBy("FunctionType");
833 } else if (CPDF_Dictionary* pDict = pFuncObj->AsDictionary()) { 833 } else if (CPDF_Dictionary* pDict = pFuncObj->AsDictionary()) {
834 type = pDict->GetInteger("FunctionType"); 834 type = pDict->GetIntegerBy("FunctionType");
835 } else { 835 } else {
836 return NULL; 836 return NULL;
837 } 837 }
838 if (type == 0) { 838 if (type == 0) {
839 pFunc = new CPDF_SampledFunc; 839 pFunc = new CPDF_SampledFunc;
840 } else if (type == 2) { 840 } else if (type == 2) {
841 pFunc = new CPDF_ExpIntFunc; 841 pFunc = new CPDF_ExpIntFunc;
842 } else if (type == 3) { 842 } else if (type == 3) {
843 pFunc = new CPDF_StitchFunc; 843 pFunc = new CPDF_StitchFunc;
844 } else if (type == 4) { 844 } else if (type == 4) {
(...skipping 12 matching lines...) Expand all
857 m_pRanges = NULL; 857 m_pRanges = NULL;
858 } 858 }
859 CPDF_Function::~CPDF_Function() { 859 CPDF_Function::~CPDF_Function() {
860 FX_Free(m_pDomains); 860 FX_Free(m_pDomains);
861 FX_Free(m_pRanges); 861 FX_Free(m_pRanges);
862 } 862 }
863 FX_BOOL CPDF_Function::Init(CPDF_Object* pObj) { 863 FX_BOOL CPDF_Function::Init(CPDF_Object* pObj) {
864 CPDF_Stream* pStream = pObj->AsStream(); 864 CPDF_Stream* pStream = pObj->AsStream();
865 CPDF_Dictionary* pDict = pStream ? pStream->GetDict() : pObj->AsDictionary(); 865 CPDF_Dictionary* pDict = pStream ? pStream->GetDict() : pObj->AsDictionary();
866 866
867 CPDF_Array* pDomains = pDict->GetArray("Domain"); 867 CPDF_Array* pDomains = pDict->GetArrayBy("Domain");
868 if (!pDomains) 868 if (!pDomains)
869 return FALSE; 869 return FALSE;
870 870
871 m_nInputs = pDomains->GetCount() / 2; 871 m_nInputs = pDomains->GetCount() / 2;
872 if (m_nInputs == 0) 872 if (m_nInputs == 0)
873 return FALSE; 873 return FALSE;
874 874
875 m_pDomains = FX_Alloc2D(FX_FLOAT, m_nInputs, 2); 875 m_pDomains = FX_Alloc2D(FX_FLOAT, m_nInputs, 2);
876 for (int i = 0; i < m_nInputs * 2; i++) { 876 for (int i = 0; i < m_nInputs * 2; i++) {
877 m_pDomains[i] = pDomains->GetFloat(i); 877 m_pDomains[i] = pDomains->GetFloatAt(i);
878 } 878 }
879 CPDF_Array* pRanges = pDict->GetArray("Range"); 879 CPDF_Array* pRanges = pDict->GetArrayBy("Range");
880 m_nOutputs = 0; 880 m_nOutputs = 0;
881 if (pRanges) { 881 if (pRanges) {
882 m_nOutputs = pRanges->GetCount() / 2; 882 m_nOutputs = pRanges->GetCount() / 2;
883 m_pRanges = FX_Alloc2D(FX_FLOAT, m_nOutputs, 2); 883 m_pRanges = FX_Alloc2D(FX_FLOAT, m_nOutputs, 2);
884 for (int i = 0; i < m_nOutputs * 2; i++) { 884 for (int i = 0; i < m_nOutputs * 2; i++) {
885 m_pRanges[i] = pRanges->GetFloat(i); 885 m_pRanges[i] = pRanges->GetFloatAt(i);
886 } 886 }
887 } 887 }
888 FX_DWORD old_outputs = m_nOutputs; 888 FX_DWORD old_outputs = m_nOutputs;
889 if (!v_Init(pObj)) { 889 if (!v_Init(pObj)) {
890 return FALSE; 890 return FALSE;
891 } 891 }
892 if (m_pRanges && m_nOutputs > (int)old_outputs) { 892 if (m_pRanges && m_nOutputs > (int)old_outputs) {
893 m_pRanges = FX_Realloc(FX_FLOAT, m_pRanges, m_nOutputs * 2); 893 m_pRanges = FX_Realloc(FX_FLOAT, m_pRanges, m_nOutputs * 2);
894 if (m_pRanges) { 894 if (m_pRanges) {
895 FXSYS_memset(m_pRanges + (old_outputs * 2), 0, 895 FXSYS_memset(m_pRanges + (old_outputs * 2), 0,
(...skipping 22 matching lines...) Expand all
918 for (int i = 0; i < m_nOutputs; i++) { 918 for (int i = 0; i < m_nOutputs; i++) {
919 if (results[i] < m_pRanges[i * 2]) { 919 if (results[i] < m_pRanges[i * 2]) {
920 results[i] = m_pRanges[i * 2]; 920 results[i] = m_pRanges[i * 2];
921 } else if (results[i] > m_pRanges[i * 2 + 1]) { 921 } else if (results[i] > m_pRanges[i * 2 + 1]) {
922 results[i] = m_pRanges[i * 2 + 1]; 922 results[i] = m_pRanges[i * 2 + 1];
923 } 923 }
924 } 924 }
925 } 925 }
926 return TRUE; 926 return TRUE;
927 } 927 }
OLDNEW
« no previous file with comments | « core/src/fpdfapi/fpdf_page/fpdf_page_doc.cpp ('k') | core/src/fpdfapi/fpdf_page/fpdf_page_graph_state.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698