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 "core/fpdfapi/fpdf_page/pageint.h" | 7 #include "core/fpdfapi/fpdf_page/pageint.h" |
8 | 8 |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
(...skipping 256 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
267 int index = m_ParamStartPos + m_ParamCount; | 267 int index = m_ParamStartPos + m_ParamCount; |
268 if (index >= PARAM_BUF_SIZE) { | 268 if (index >= PARAM_BUF_SIZE) { |
269 index -= PARAM_BUF_SIZE; | 269 index -= PARAM_BUF_SIZE; |
270 } | 270 } |
271 m_ParamCount++; | 271 m_ParamCount++; |
272 return index; | 272 return index; |
273 } | 273 } |
274 | 274 |
275 void CPDF_StreamContentParser::AddNameParam(const FX_CHAR* name, int len) { | 275 void CPDF_StreamContentParser::AddNameParam(const FX_CHAR* name, int len) { |
276 CFX_ByteStringC bsName(name, len); | 276 CFX_ByteStringC bsName(name, len); |
277 int index = GetNextParamPos(); | 277 ContentParam& param = m_ParamBuf[GetNextParamPos()]; |
278 if (len > 32) { | 278 if (len > 32) { |
279 m_ParamBuf[index].m_Type = ContentParam::OBJECT; | 279 param.m_Type = ContentParam::OBJECT; |
280 m_ParamBuf[index].m_pObject = new CPDF_Name(PDF_NameDecode(bsName)); | 280 param.m_pObject = new CPDF_Name(PDF_NameDecode(bsName)); |
281 } else { | 281 } else { |
282 m_ParamBuf[index].m_Type = ContentParam::NAME; | 282 param.m_Type = ContentParam::NAME; |
283 if (bsName.Find('#') == -1) { | 283 if (bsName.Find('#') == -1) { |
284 FXSYS_memcpy(m_ParamBuf[index].m_Name.m_Buffer, name, len); | 284 FXSYS_memcpy(param.m_Name.m_Buffer, name, len); |
285 m_ParamBuf[index].m_Name.m_Len = len; | 285 param.m_Name.m_Len = len; |
286 } else { | 286 } else { |
287 CFX_ByteString str = PDF_NameDecode(bsName); | 287 CFX_ByteString str = PDF_NameDecode(bsName); |
288 FXSYS_memcpy(m_ParamBuf[index].m_Name.m_Buffer, str.c_str(), | 288 FXSYS_memcpy(param.m_Name.m_Buffer, str.c_str(), str.GetLength()); |
289 str.GetLength()); | 289 param.m_Name.m_Len = str.GetLength(); |
290 m_ParamBuf[index].m_Name.m_Len = str.GetLength(); | |
291 } | 290 } |
292 } | 291 } |
293 } | 292 } |
294 | 293 |
295 void CPDF_StreamContentParser::AddNumberParam(const FX_CHAR* str, int len) { | 294 void CPDF_StreamContentParser::AddNumberParam(const FX_CHAR* str, int len) { |
296 int index = GetNextParamPos(); | 295 ContentParam& param = m_ParamBuf[GetNextParamPos()]; |
297 m_ParamBuf[index].m_Type = ContentParam::NUMBER; | 296 param.m_Type = ContentParam::NUMBER; |
298 FX_atonum(CFX_ByteStringC(str, len), m_ParamBuf[index].m_Number.m_bInteger, | 297 param.m_Number.m_bInteger = |
299 &m_ParamBuf[index].m_Number.m_Integer); | 298 FX_atonum(CFX_ByteStringC(str, len), ¶m.m_Number.m_Integer); |
300 } | 299 } |
| 300 |
301 void CPDF_StreamContentParser::AddObjectParam(CPDF_Object* pObj) { | 301 void CPDF_StreamContentParser::AddObjectParam(CPDF_Object* pObj) { |
302 int index = GetNextParamPos(); | 302 ContentParam& param = m_ParamBuf[GetNextParamPos()]; |
303 m_ParamBuf[index].m_Type = ContentParam::OBJECT; | 303 param.m_Type = ContentParam::OBJECT; |
304 m_ParamBuf[index].m_pObject = pObj; | 304 param.m_pObject = pObj; |
305 } | 305 } |
| 306 |
306 void CPDF_StreamContentParser::ClearAllParams() { | 307 void CPDF_StreamContentParser::ClearAllParams() { |
307 uint32_t index = m_ParamStartPos; | 308 uint32_t index = m_ParamStartPos; |
308 for (uint32_t i = 0; i < m_ParamCount; i++) { | 309 for (uint32_t i = 0; i < m_ParamCount; i++) { |
309 if (m_ParamBuf[index].m_Type == 0) { | 310 if (m_ParamBuf[index].m_Type == 0) { |
310 if (CPDF_Object* pObject = m_ParamBuf[index].m_pObject) | 311 if (CPDF_Object* pObject = m_ParamBuf[index].m_pObject) |
311 pObject->Release(); | 312 pObject->Release(); |
312 } | 313 } |
313 index++; | 314 index++; |
314 if (index == PARAM_BUF_SIZE) { | 315 if (index == PARAM_BUF_SIZE) { |
315 index = 0; | 316 index = 0; |
(...skipping 1278 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1594 } | 1595 } |
1595 } else { | 1596 } else { |
1596 bProcessed = FALSE; | 1597 bProcessed = FALSE; |
1597 } | 1598 } |
1598 if (bProcessed) { | 1599 if (bProcessed) { |
1599 last_pos = m_pSyntax->GetPos(); | 1600 last_pos = m_pSyntax->GetPos(); |
1600 } | 1601 } |
1601 break; | 1602 break; |
1602 } | 1603 } |
1603 case CPDF_StreamParser::Number: { | 1604 case CPDF_StreamParser::Number: { |
1604 if (nParams == 6) { | 1605 if (nParams == 6) |
1605 break; | 1606 break; |
1606 } | 1607 |
1607 FX_BOOL bInteger; | |
1608 int value; | 1608 int value; |
1609 FX_atonum( | 1609 bool bInteger = FX_atonum( |
1610 CFX_ByteStringC(m_pSyntax->GetWordBuf(), m_pSyntax->GetWordSize()), | 1610 CFX_ByteStringC(m_pSyntax->GetWordBuf(), m_pSyntax->GetWordSize()), |
1611 bInteger, &value); | 1611 &value); |
1612 params[nParams++] = bInteger ? (FX_FLOAT)value : *(FX_FLOAT*)&value; | 1612 params[nParams++] = bInteger ? (FX_FLOAT)value : *(FX_FLOAT*)&value; |
1613 break; | 1613 break; |
1614 } | 1614 } |
1615 default: | 1615 default: |
1616 bProcessed = FALSE; | 1616 bProcessed = FALSE; |
1617 } | 1617 } |
1618 if (!bProcessed) { | 1618 if (!bProcessed) { |
1619 m_pSyntax->SetPos(last_pos); | 1619 m_pSyntax->SetPos(last_pos); |
1620 return; | 1620 return; |
1621 } | 1621 } |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1681 } else { | 1681 } else { |
1682 PDF_ReplaceAbbr(pElement); | 1682 PDF_ReplaceAbbr(pElement); |
1683 } | 1683 } |
1684 } | 1684 } |
1685 break; | 1685 break; |
1686 } | 1686 } |
1687 default: | 1687 default: |
1688 break; | 1688 break; |
1689 } | 1689 } |
1690 } | 1690 } |
OLD | NEW |