| 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 "pageint.h" | 7 #include "pageint.h" |
| 8 | 8 |
| 9 #include "core/include/fpdfapi/fpdf_page.h" | 9 #include "core/include/fpdfapi/fpdf_page.h" |
| 10 | 10 |
| (...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 122 m_pCountedCS = NULL; | 122 m_pCountedCS = NULL; |
| 123 m_nFuncs = 0; | 123 m_nFuncs = 0; |
| 124 } | 124 } |
| 125 | 125 |
| 126 FX_BOOL CPDF_ShadingPattern::Load() { | 126 FX_BOOL CPDF_ShadingPattern::Load() { |
| 127 if (m_ShadingType != kInvalidShading) | 127 if (m_ShadingType != kInvalidShading) |
| 128 return TRUE; | 128 return TRUE; |
| 129 | 129 |
| 130 CPDF_Dictionary* pShadingDict = | 130 CPDF_Dictionary* pShadingDict = |
| 131 m_pShadingObj ? m_pShadingObj->GetDict() : NULL; | 131 m_pShadingObj ? m_pShadingObj->GetDict() : NULL; |
| 132 if (pShadingDict == NULL) { | 132 if (!pShadingDict) { |
| 133 return FALSE; | 133 return FALSE; |
| 134 } | 134 } |
| 135 if (m_nFuncs) { | 135 if (m_nFuncs) { |
| 136 for (int i = 0; i < m_nFuncs; i++) | 136 for (int i = 0; i < m_nFuncs; i++) |
| 137 delete m_pFunctions[i]; | 137 delete m_pFunctions[i]; |
| 138 m_nFuncs = 0; | 138 m_nFuncs = 0; |
| 139 } | 139 } |
| 140 CPDF_Object* pFunc = pShadingDict->GetElementValue("Function"); | 140 CPDF_Object* pFunc = pShadingDict->GetElementValue("Function"); |
| 141 if (pFunc) { | 141 if (pFunc) { |
| 142 if (CPDF_Array* pArray = pFunc->AsArray()) { | 142 if (CPDF_Array* pArray = pFunc->AsArray()) { |
| 143 m_nFuncs = std::min<int>(pArray->GetCount(), 4); | 143 m_nFuncs = std::min<int>(pArray->GetCount(), 4); |
| 144 | 144 |
| 145 for (int i = 0; i < m_nFuncs; i++) { | 145 for (int i = 0; i < m_nFuncs; i++) { |
| 146 m_pFunctions[i] = CPDF_Function::Load(pArray->GetElementValue(i)); | 146 m_pFunctions[i] = CPDF_Function::Load(pArray->GetElementValue(i)); |
| 147 } | 147 } |
| 148 } else { | 148 } else { |
| 149 m_pFunctions[0] = CPDF_Function::Load(pFunc); | 149 m_pFunctions[0] = CPDF_Function::Load(pFunc); |
| 150 m_nFuncs = 1; | 150 m_nFuncs = 1; |
| 151 } | 151 } |
| 152 } | 152 } |
| 153 CPDF_Object* pCSObj = pShadingDict->GetElementValue("ColorSpace"); | 153 CPDF_Object* pCSObj = pShadingDict->GetElementValue("ColorSpace"); |
| 154 if (pCSObj == NULL) { | 154 if (!pCSObj) { |
| 155 return FALSE; | 155 return FALSE; |
| 156 } | 156 } |
| 157 CPDF_DocPageData* pDocPageData = m_pDocument->GetPageData(); | 157 CPDF_DocPageData* pDocPageData = m_pDocument->GetPageData(); |
| 158 m_pCS = pDocPageData->GetColorSpace(pCSObj, NULL); | 158 m_pCS = pDocPageData->GetColorSpace(pCSObj, NULL); |
| 159 if (m_pCS) { | 159 if (m_pCS) { |
| 160 m_pCountedCS = pDocPageData->FindColorSpacePtr(m_pCS->GetArray()); | 160 m_pCountedCS = pDocPageData->FindColorSpacePtr(m_pCS->GetArray()); |
| 161 } | 161 } |
| 162 | 162 |
| 163 m_ShadingType = ToShadingType(pShadingDict->GetInteger("ShadingType")); | 163 m_ShadingType = ToShadingType(pShadingDict->GetInteger("ShadingType")); |
| 164 | 164 |
| (...skipping 27 matching lines...) Expand all Loading... |
| 192 if (nComps > 8) { | 192 if (nComps > 8) { |
| 193 return FALSE; | 193 return FALSE; |
| 194 } | 194 } |
| 195 m_nComps = nFuncs ? 1 : nComps; | 195 m_nComps = nFuncs ? 1 : nComps; |
| 196 if (((int)m_nComps < 0) || m_nComps > 8) { | 196 if (((int)m_nComps < 0) || m_nComps > 8) { |
| 197 return FALSE; | 197 return FALSE; |
| 198 } | 198 } |
| 199 m_CoordMax = m_nCoordBits == 32 ? -1 : (1 << m_nCoordBits) - 1; | 199 m_CoordMax = m_nCoordBits == 32 ? -1 : (1 << m_nCoordBits) - 1; |
| 200 m_CompMax = (1 << m_nCompBits) - 1; | 200 m_CompMax = (1 << m_nCompBits) - 1; |
| 201 CPDF_Array* pDecode = pDict->GetArray("Decode"); | 201 CPDF_Array* pDecode = pDict->GetArray("Decode"); |
| 202 if (pDecode == NULL || pDecode->GetCount() != 4 + m_nComps * 2) { | 202 if (!pDecode || pDecode->GetCount() != 4 + m_nComps * 2) { |
| 203 return FALSE; | 203 return FALSE; |
| 204 } | 204 } |
| 205 m_xmin = pDecode->GetNumber(0); | 205 m_xmin = pDecode->GetNumber(0); |
| 206 m_xmax = pDecode->GetNumber(1); | 206 m_xmax = pDecode->GetNumber(1); |
| 207 m_ymin = pDecode->GetNumber(2); | 207 m_ymin = pDecode->GetNumber(2); |
| 208 m_ymax = pDecode->GetNumber(3); | 208 m_ymax = pDecode->GetNumber(3); |
| 209 for (FX_DWORD i = 0; i < m_nComps; i++) { | 209 for (FX_DWORD i = 0; i < m_nComps; i++) { |
| 210 m_ColorMin[i] = pDecode->GetNumber(i * 2 + 4); | 210 m_ColorMin[i] = pDecode->GetNumber(i * 2 + 4); |
| 211 m_ColorMax[i] = pDecode->GetNumber(i * 2 + 5); | 211 m_ColorMax[i] = pDecode->GetNumber(i * 2 + 5); |
| 212 } | 212 } |
| (...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 324 } | 324 } |
| 325 } | 325 } |
| 326 stream.m_BitStream.SkipBits(stream.m_nComps * stream.m_nCompBits * | 326 stream.m_BitStream.SkipBits(stream.m_nComps * stream.m_nCompBits * |
| 327 color_count); | 327 color_count); |
| 328 if (bGouraud) | 328 if (bGouraud) |
| 329 stream.m_BitStream.ByteAlign(); | 329 stream.m_BitStream.ByteAlign(); |
| 330 } | 330 } |
| 331 rect.Transform(pMatrix); | 331 rect.Transform(pMatrix); |
| 332 return rect; | 332 return rect; |
| 333 } | 333 } |
| OLD | NEW |