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 "../../../include/fpdfapi/fpdf_page.h" | 7 #include "../../../include/fpdfapi/fpdf_page.h" |
8 #include "../../../include/fpdfapi/fpdf_module.h" | 8 #include "../../../include/fpdfapi/fpdf_module.h" |
9 #include "../../../include/fxcodec/fx_codec.h" | 9 #include "../../../include/fxcodec/fx_codec.h" |
10 #include "pageint.h" | 10 #include "pageint.h" |
(...skipping 1274 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1285 ReleaseColorSpace(); | 1285 ReleaseColorSpace(); |
1286 } | 1286 } |
1287 void CPDF_Color::ReleaseBuffer() | 1287 void CPDF_Color::ReleaseBuffer() |
1288 { | 1288 { |
1289 if (!m_pBuffer) { | 1289 if (!m_pBuffer) { |
1290 return; | 1290 return; |
1291 } | 1291 } |
1292 if (m_pCS->GetFamily() == PDFCS_PATTERN) { | 1292 if (m_pCS->GetFamily() == PDFCS_PATTERN) { |
1293 PatternValue* pvalue = (PatternValue*)m_pBuffer; | 1293 PatternValue* pvalue = (PatternValue*)m_pBuffer; |
1294 CPDF_Pattern* pPattern = pvalue->m_pPattern; | 1294 CPDF_Pattern* pPattern = pvalue->m_pPattern; |
1295 if (pPattern && m_pDocument) { | 1295 if (pPattern && pvalue->m_pPattern->m_pDocument) { |
Tom Sepez
2014/09/09 23:59:04
nit: (pPattern && pPattern->m_pDocument)
Bo Xu
2014/09/10 00:04:42
Done.
| |
1296 CPDF_DocPageData *pPageData = m_pDocument->GetPageData(); | 1296 CPDF_DocPageData *pPageData = pvalue->m_pPattern->m_pDocument->GetPa geData(); |
Tom Sepez
2014/09/09 23:59:04
nit: ditto
Bo Xu
2014/09/10 00:04:42
Done.
| |
1297 if (pPageData && !pPageData->IsForceClear()) { | 1297 if (pPageData && !pPageData->IsForceClear()) { |
1298 pPageData->ReleasePattern(pPattern->m_pPatternObj); | 1298 pPageData->ReleasePattern(pPattern->m_pPatternObj); |
1299 } | 1299 } |
1300 } | 1300 } |
1301 } | 1301 } |
1302 FX_Free(m_pBuffer); | 1302 FX_Free(m_pBuffer); |
1303 m_pBuffer = NULL; | 1303 m_pBuffer = NULL; |
1304 } | 1304 } |
1305 void CPDF_Color::ReleaseColorSpace() | 1305 void CPDF_Color::ReleaseColorSpace() |
1306 { | 1306 { |
1307 if (m_pDocument && m_pCS && m_pCS->GetArray()) { | 1307 if (m_pCS && m_pCS->m_pDocument && m_pCS->GetArray()) { |
1308 m_pDocument->GetPageData()->ReleaseColorSpace(m_pCS->GetArray()); | 1308 m_pCS->m_pDocument->GetPageData()->ReleaseColorSpace(m_pCS->GetArray()); |
1309 m_pCS = NULL; | 1309 m_pCS = NULL; |
1310 m_pDocument = NULL; | |
1311 } | 1310 } |
1312 } | 1311 } |
1313 void CPDF_Color::SetColorSpace(CPDF_ColorSpace* pCS) | 1312 void CPDF_Color::SetColorSpace(CPDF_ColorSpace* pCS) |
1314 { | 1313 { |
1315 if (m_pCS == pCS) { | 1314 if (m_pCS == pCS) { |
1316 if (m_pBuffer == NULL) { | 1315 if (m_pBuffer == NULL) { |
1317 m_pBuffer = pCS->CreateBuf(); | 1316 m_pBuffer = pCS->CreateBuf(); |
1318 } | 1317 } |
1319 ReleaseColorSpace(); | 1318 ReleaseColorSpace(); |
1320 m_pCS = pCS; | 1319 m_pCS = pCS; |
1321 m_pDocument = pCS->m_pDocument; | |
1322 return; | 1320 return; |
1323 } | 1321 } |
1324 ReleaseBuffer(); | 1322 ReleaseBuffer(); |
1325 ReleaseColorSpace(); | 1323 ReleaseColorSpace(); |
1326 m_pCS = pCS; | 1324 m_pCS = pCS; |
1327 m_pDocument = pCS->m_pDocument; | |
1328 if (m_pCS) { | 1325 if (m_pCS) { |
1329 m_pBuffer = pCS->CreateBuf(); | 1326 m_pBuffer = pCS->CreateBuf(); |
1330 pCS->GetDefaultColor(m_pBuffer); | 1327 pCS->GetDefaultColor(m_pBuffer); |
1331 } | 1328 } |
1332 } | 1329 } |
1333 void CPDF_Color::SetValue(FX_FLOAT* comps) | 1330 void CPDF_Color::SetValue(FX_FLOAT* comps) |
1334 { | 1331 { |
1335 if (m_pBuffer == NULL) { | 1332 if (m_pBuffer == NULL) { |
1336 return; | 1333 return; |
1337 } | 1334 } |
1338 if (m_pCS->GetFamily() != PDFCS_PATTERN) { | 1335 if (m_pCS->GetFamily() != PDFCS_PATTERN) { |
1339 FXSYS_memcpy32(m_pBuffer, comps, m_pCS->CountComponents() * sizeof(FX_FL OAT)); | 1336 FXSYS_memcpy32(m_pBuffer, comps, m_pCS->CountComponents() * sizeof(FX_FL OAT)); |
1340 } | 1337 } |
1341 } | 1338 } |
1342 void CPDF_Color::SetValue(CPDF_Pattern* pPattern, FX_FLOAT* comps, int ncomps) | 1339 void CPDF_Color::SetValue(CPDF_Pattern* pPattern, FX_FLOAT* comps, int ncomps) |
1343 { | 1340 { |
1344 if (ncomps > MAX_PATTERN_COLORCOMPS) { | 1341 if (ncomps > MAX_PATTERN_COLORCOMPS) { |
1345 return; | 1342 return; |
1346 } | 1343 } |
1347 if (m_pCS == NULL || m_pCS->GetFamily() != PDFCS_PATTERN) { | 1344 if (m_pCS == NULL || m_pCS->GetFamily() != PDFCS_PATTERN) { |
1348 if (m_pBuffer) { | 1345 if (m_pBuffer) { |
1349 FX_Free(m_pBuffer); | 1346 FX_Free(m_pBuffer); |
1350 } | 1347 } |
1351 m_pCS = CPDF_ColorSpace::GetStockCS(PDFCS_PATTERN); | 1348 m_pCS = CPDF_ColorSpace::GetStockCS(PDFCS_PATTERN); |
1352 m_pBuffer = m_pCS->CreateBuf(); | 1349 m_pBuffer = m_pCS->CreateBuf(); |
1353 } | 1350 } |
1354 PatternValue* pvalue = (PatternValue*)m_pBuffer; | 1351 PatternValue* pvalue = (PatternValue*)m_pBuffer; |
1355 if (pvalue->m_pPattern && m_pDocument) { | 1352 if (pvalue->m_pPattern && pvalue->m_pPattern->m_pDocument) { |
1356 CPDF_DocPageData *pDocPageData = m_pDocument->GetPageData(); | 1353 CPDF_DocPageData *pDocPageData = pvalue->m_pPattern->m_pDocument->GetPag eData(); |
1357 if (pDocPageData && !pDocPageData->IsForceClear()) { | 1354 if (pDocPageData && !pDocPageData->IsForceClear()) { |
1358 pDocPageData->ReleasePattern(pvalue->m_pPattern->m_pPatternObj); | 1355 pDocPageData->ReleasePattern(pvalue->m_pPattern->m_pPatternObj); |
1359 } | 1356 } |
1360 } | 1357 } |
1361 pvalue->m_nComps = ncomps; | 1358 pvalue->m_nComps = ncomps; |
1362 pvalue->m_pPattern = pPattern; | 1359 pvalue->m_pPattern = pPattern; |
1363 if (ncomps) { | 1360 if (ncomps) { |
1364 FXSYS_memcpy32(pvalue->m_Comps, comps, ncomps * sizeof(FX_FLOAT)); | 1361 FXSYS_memcpy32(pvalue->m_Comps, comps, ncomps * sizeof(FX_FLOAT)); |
1365 } | 1362 } |
1366 } | 1363 } |
1367 void CPDF_Color::Copy(const CPDF_Color* pSrc) | 1364 void CPDF_Color::Copy(const CPDF_Color* pSrc) |
1368 { | 1365 { |
1369 ReleaseBuffer(); | 1366 ReleaseBuffer(); |
1370 ReleaseColorSpace(); | 1367 ReleaseColorSpace(); |
1371 m_pCS = pSrc->m_pCS; | 1368 m_pCS = pSrc->m_pCS; |
1372 if (m_pCS && m_pCS->m_pDocument) { | 1369 if (m_pCS && m_pCS->m_pDocument) { |
1373 CPDF_Array* pArray = m_pCS->GetArray(); | 1370 CPDF_Array* pArray = m_pCS->GetArray(); |
1374 if (pArray) { | 1371 if (pArray) { |
1375 m_pCS = m_pCS->m_pDocument->GetPageData()->GetCopiedColorSpace(pArra y); | 1372 m_pCS = m_pCS->m_pDocument->GetPageData()->GetCopiedColorSpace(pArra y); |
1376 } | 1373 } |
1377 } | 1374 } |
1378 if (m_pCS == NULL) { | 1375 if (m_pCS == NULL) { |
1379 return; | 1376 return; |
1380 } | 1377 } |
1381 m_pBuffer = m_pCS->CreateBuf(); | 1378 m_pBuffer = m_pCS->CreateBuf(); |
1382 FXSYS_memcpy32(m_pBuffer, pSrc->m_pBuffer, m_pCS->GetBufSize()); | 1379 FXSYS_memcpy32(m_pBuffer, pSrc->m_pBuffer, m_pCS->GetBufSize()); |
1383 if (m_pCS->GetFamily() == PDFCS_PATTERN) { | 1380 if (m_pCS->GetFamily() == PDFCS_PATTERN) { |
1384 PatternValue* pvalue = (PatternValue*)m_pBuffer; | 1381 PatternValue* pvalue = (PatternValue*)m_pBuffer; |
1385 if (pvalue->m_pPattern && m_pDocument) { | 1382 if (pvalue->m_pPattern && pvalue->m_pPattern->m_pDocument) { |
1386 pvalue->m_pPattern = m_pDocument->GetPageData()->GetPattern(pvalue-> m_pPattern->m_pPatternObj, FALSE, &pvalue->m_pPattern->m_ParentMatrix); | 1383 pvalue->m_pPattern = pvalue->m_pPattern->m_pDocument->GetPageData()- >GetPattern(pvalue->m_pPattern->m_pPatternObj, FALSE, &pvalue->m_pPattern->m_Par entMatrix); |
1387 } | 1384 } |
1388 } | 1385 } |
1389 } | 1386 } |
1390 FX_BOOL CPDF_Color::GetRGB(int& R, int& G, int& B) const | 1387 FX_BOOL CPDF_Color::GetRGB(int& R, int& G, int& B) const |
1391 { | 1388 { |
1392 if (m_pCS == NULL || m_pBuffer == NULL) { | 1389 if (m_pCS == NULL || m_pBuffer == NULL) { |
1393 return FALSE; | 1390 return FALSE; |
1394 } | 1391 } |
1395 FX_FLOAT r=0.0f, g=0.0f, b=0.0f; | 1392 FX_FLOAT r=0.0f, g=0.0f, b=0.0f; |
1396 if (!m_pCS->GetRGB(m_pBuffer, r, g, b)) { | 1393 if (!m_pCS->GetRGB(m_pBuffer, r, g, b)) { |
(...skipping 27 matching lines...) Expand all Loading... | |
1424 PatternValue* pvalue = (PatternValue*)m_pBuffer; | 1421 PatternValue* pvalue = (PatternValue*)m_pBuffer; |
1425 return pvalue->m_nComps ? pvalue->m_Comps : NULL; | 1422 return pvalue->m_nComps ? pvalue->m_Comps : NULL; |
1426 } | 1423 } |
1427 FX_BOOL CPDF_Color::IsEqual(const CPDF_Color& other) const | 1424 FX_BOOL CPDF_Color::IsEqual(const CPDF_Color& other) const |
1428 { | 1425 { |
1429 if (m_pCS != other.m_pCS || m_pCS == NULL) { | 1426 if (m_pCS != other.m_pCS || m_pCS == NULL) { |
1430 return FALSE; | 1427 return FALSE; |
1431 } | 1428 } |
1432 return FXSYS_memcmp32(m_pBuffer, other.m_pBuffer, m_pCS->GetBufSize()) == 0; | 1429 return FXSYS_memcmp32(m_pBuffer, other.m_pBuffer, m_pCS->GetBufSize()) == 0; |
1433 } | 1430 } |
OLD | NEW |