| 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/include/fxge/fx_ge.h" | 7 #include "core/include/fxge/fx_ge.h" |
| 8 #include "core/include/fxcodec/fx_codec.h" | 8 #include "core/include/fxcodec/fx_codec.h" |
| 9 #include "text_int.h" | 9 #include "text_int.h" |
| 10 | 10 |
| (...skipping 356 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 367 if (pSource->IsAlphaMask() && (alpha < 255 || pSource->GetBPP() != 1)) { | 367 if (pSource->IsAlphaMask() && (alpha < 255 || pSource->GetBPP() != 1)) { |
| 368 return FALSE; | 368 return FALSE; |
| 369 } | 369 } |
| 370 OUTPUT_PS("q\n"); | 370 OUTPUT_PS("q\n"); |
| 371 CFX_ByteTextBuf buf; | 371 CFX_ByteTextBuf buf; |
| 372 buf << "[" << pMatrix->a << " " << pMatrix->b << " " << pMatrix->c << " " | 372 buf << "[" << pMatrix->a << " " << pMatrix->b << " " << pMatrix->c << " " |
| 373 << pMatrix->d << " " << pMatrix->e << " " << pMatrix->f << "]cm "; | 373 << pMatrix->d << " " << pMatrix->e << " " << pMatrix->f << "]cm "; |
| 374 int width = pSource->GetWidth(); | 374 int width = pSource->GetWidth(); |
| 375 int height = pSource->GetHeight(); | 375 int height = pSource->GetHeight(); |
| 376 buf << width << " " << height; | 376 buf << width << " " << height; |
| 377 if (pSource->GetBPP() == 1 && pSource->GetPalette() == NULL) { | 377 if (pSource->GetBPP() == 1 && !pSource->GetPalette()) { |
| 378 int pitch = (width + 7) / 8; | 378 int pitch = (width + 7) / 8; |
| 379 FX_DWORD src_size = height * pitch; | 379 FX_DWORD src_size = height * pitch; |
| 380 uint8_t* src_buf = FX_Alloc(uint8_t, src_size); | 380 uint8_t* src_buf = FX_Alloc(uint8_t, src_size); |
| 381 for (int row = 0; row < height; row++) { | 381 for (int row = 0; row < height; row++) { |
| 382 const uint8_t* src_scan = pSource->GetScanline(row); | 382 const uint8_t* src_scan = pSource->GetScanline(row); |
| 383 FXSYS_memcpy(src_buf + row * pitch, src_scan, pitch); | 383 FXSYS_memcpy(src_buf + row * pitch, src_scan, pitch); |
| 384 } | 384 } |
| 385 uint8_t* output_buf; | 385 uint8_t* output_buf; |
| 386 FX_DWORD output_size; | 386 FX_DWORD output_size; |
| 387 FaxCompressData(src_buf, width, height, output_buf, output_size); | 387 FaxCompressData(src_buf, width, height, output_buf, output_size); |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 426 break; | 426 break; |
| 427 case FXDIB_8bppCmyk: | 427 case FXDIB_8bppCmyk: |
| 428 if (pSource->GetPalette()) { | 428 if (pSource->GetPalette()) { |
| 429 pConverted = pSource->CloneConvert(FXDIB_Cmyk); | 429 pConverted = pSource->CloneConvert(FXDIB_Cmyk); |
| 430 } | 430 } |
| 431 break; | 431 break; |
| 432 default: | 432 default: |
| 433 break; | 433 break; |
| 434 } | 434 } |
| 435 } | 435 } |
| 436 if (pConverted == NULL) { | 436 if (!pConverted) { |
| 437 OUTPUT_PS("\nQ\n"); | 437 OUTPUT_PS("\nQ\n"); |
| 438 return FALSE; | 438 return FALSE; |
| 439 } | 439 } |
| 440 int Bpp = pConverted->GetBPP() / 8; | 440 int Bpp = pConverted->GetBPP() / 8; |
| 441 uint8_t* output_buf = NULL; | 441 uint8_t* output_buf = NULL; |
| 442 FX_STRSIZE output_size = 0; | 442 FX_STRSIZE output_size = 0; |
| 443 const FX_CHAR* filter = NULL; | 443 const FX_CHAR* filter = NULL; |
| 444 if (flags & FXRENDER_IMAGE_LOSSY) { | 444 if (flags & FXRENDER_IMAGE_LOSSY) { |
| 445 CCodec_ModuleMgr* pEncoders = CFX_GEModule::Get()->GetCodecModule(); | 445 CCodec_ModuleMgr* pEncoders = CFX_GEModule::Get()->GetCodecModule(); |
| 446 if (pEncoders && | 446 if (pEncoders && |
| 447 pEncoders->GetJpegModule()->Encode(pConverted, output_buf, | 447 pEncoders->GetJpegModule()->Encode(pConverted, output_buf, |
| 448 output_size)) { | 448 output_size)) { |
| 449 filter = "/DCTDecode filter "; | 449 filter = "/DCTDecode filter "; |
| 450 } | 450 } |
| 451 } | 451 } |
| 452 if (filter == NULL) { | 452 if (!filter) { |
| 453 int src_pitch = width * Bpp; | 453 int src_pitch = width * Bpp; |
| 454 output_size = height * src_pitch; | 454 output_size = height * src_pitch; |
| 455 output_buf = FX_Alloc(uint8_t, output_size); | 455 output_buf = FX_Alloc(uint8_t, output_size); |
| 456 for (int row = 0; row < height; row++) { | 456 for (int row = 0; row < height; row++) { |
| 457 const uint8_t* src_scan = pConverted->GetScanline(row); | 457 const uint8_t* src_scan = pConverted->GetScanline(row); |
| 458 uint8_t* dest_scan = output_buf + row * src_pitch; | 458 uint8_t* dest_scan = output_buf + row * src_pitch; |
| 459 if (Bpp == 3) { | 459 if (Bpp == 3) { |
| 460 for (int col = 0; col < width; col++) { | 460 for (int col = 0; col < width; col++) { |
| 461 *dest_scan++ = src_scan[2]; | 461 *dest_scan++ = src_scan[2]; |
| 462 *dest_scan++ = src_scan[1]; | 462 *dest_scan++ = src_scan[1]; |
| (...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 596 charpos.m_AdjustMatrix[3]; | 596 charpos.m_AdjustMatrix[3]; |
| 597 } | 597 } |
| 598 pPSFont->m_nGlyphs++; | 598 pPSFont->m_nGlyphs++; |
| 599 CFX_Matrix matrix; | 599 CFX_Matrix matrix; |
| 600 if (charpos.m_bGlyphAdjust) | 600 if (charpos.m_bGlyphAdjust) |
| 601 matrix.Set(charpos.m_AdjustMatrix[0], charpos.m_AdjustMatrix[1], | 601 matrix.Set(charpos.m_AdjustMatrix[0], charpos.m_AdjustMatrix[1], |
| 602 charpos.m_AdjustMatrix[2], charpos.m_AdjustMatrix[3], 0, 0); | 602 charpos.m_AdjustMatrix[2], charpos.m_AdjustMatrix[3], 0, 0); |
| 603 matrix.Concat(1.0f, 0, 0, 1.0f, 0, 0); | 603 matrix.Concat(1.0f, 0, 0, 1.0f, 0, 0); |
| 604 const CFX_PathData* pPathData = pFaceCache->LoadGlyphPath( | 604 const CFX_PathData* pPathData = pFaceCache->LoadGlyphPath( |
| 605 pFont, charpos.m_GlyphIndex, charpos.m_FontCharWidth); | 605 pFont, charpos.m_GlyphIndex, charpos.m_FontCharWidth); |
| 606 if (pPathData == NULL) { | 606 if (!pPathData) { |
| 607 return; | 607 return; |
| 608 } | 608 } |
| 609 CFX_PathData TransformedPath(*pPathData); | 609 CFX_PathData TransformedPath(*pPathData); |
| 610 if (charpos.m_bGlyphAdjust) { | 610 if (charpos.m_bGlyphAdjust) { |
| 611 TransformedPath.Transform(&matrix); | 611 TransformedPath.Transform(&matrix); |
| 612 } | 612 } |
| 613 CFX_ByteTextBuf buf; | 613 CFX_ByteTextBuf buf; |
| 614 buf << "/X" << ps_fontnum << " Ff/CharProcs get begin/" << ps_glyphindex | 614 buf << "/X" << ps_fontnum << " Ff/CharProcs get begin/" << ps_glyphindex |
| 615 << "{n "; | 615 << "{n "; |
| 616 for (int p = 0; p < TransformedPath.GetPointCount(); p++) { | 616 for (int p = 0; p < TransformedPath.GetPointCount(); p++) { |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 656 } | 656 } |
| 657 if ((pObject2Device->a == 0 && pObject2Device->b == 0) || | 657 if ((pObject2Device->a == 0 && pObject2Device->b == 0) || |
| 658 (pObject2Device->c == 0 && pObject2Device->d == 0)) { | 658 (pObject2Device->c == 0 && pObject2Device->d == 0)) { |
| 659 return TRUE; | 659 return TRUE; |
| 660 } | 660 } |
| 661 SetColor(color, alpha_flag, pIccTransform); | 661 SetColor(color, alpha_flag, pIccTransform); |
| 662 CFX_ByteTextBuf buf; | 662 CFX_ByteTextBuf buf; |
| 663 buf << "q[" << pObject2Device->a << " " << pObject2Device->b << " " | 663 buf << "q[" << pObject2Device->a << " " << pObject2Device->b << " " |
| 664 << pObject2Device->c << " " << pObject2Device->d << " " | 664 << pObject2Device->c << " " << pObject2Device->d << " " |
| 665 << pObject2Device->e << " " << pObject2Device->f << "]cm\n"; | 665 << pObject2Device->e << " " << pObject2Device->f << "]cm\n"; |
| 666 if (pCache == NULL) { | 666 if (!pCache) { |
| 667 pCache = CFX_GEModule::Get()->GetFontCache(); | 667 pCache = CFX_GEModule::Get()->GetFontCache(); |
| 668 } | 668 } |
| 669 CFX_FaceCache* pFaceCache = pCache->GetCachedFace(pFont); | 669 CFX_FaceCache* pFaceCache = pCache->GetCachedFace(pFont); |
| 670 FX_FONTCACHE_DEFINE(pCache, pFont); | 670 FX_FONTCACHE_DEFINE(pCache, pFont); |
| 671 int last_fontnum = -1; | 671 int last_fontnum = -1; |
| 672 for (int i = 0; i < nChars; i++) { | 672 for (int i = 0; i < nChars; i++) { |
| 673 int ps_fontnum, ps_glyphindex; | 673 int ps_fontnum, ps_glyphindex; |
| 674 FindPSFontGlyph(pFaceCache, pFont, pCharPos[i], ps_fontnum, ps_glyphindex); | 674 FindPSFontGlyph(pFaceCache, pFont, pCharPos[i], ps_fontnum, ps_glyphindex); |
| 675 if (last_fontnum != ps_fontnum) { | 675 if (last_fontnum != ps_fontnum) { |
| 676 buf << "/X" << ps_fontnum << " Ff " << font_size << " Fs Sf "; | 676 buf << "/X" << ps_fontnum << " Ff " << font_size << " Fs Sf "; |
| (...skipping 13 matching lines...) Expand all Loading... |
| 690 FX_DWORD dest_size; | 690 FX_DWORD dest_size; |
| 691 CCodec_ModuleMgr* pEncoders = CFX_GEModule::Get()->GetCodecModule(); | 691 CCodec_ModuleMgr* pEncoders = CFX_GEModule::Get()->GetCodecModule(); |
| 692 if (pEncoders && | 692 if (pEncoders && |
| 693 pEncoders->GetBasicModule()->A85Encode(data, len, dest_buf, dest_size)) { | 693 pEncoders->GetBasicModule()->A85Encode(data, len, dest_buf, dest_size)) { |
| 694 m_pOutput->OutputPS((const FX_CHAR*)dest_buf, dest_size); | 694 m_pOutput->OutputPS((const FX_CHAR*)dest_buf, dest_size); |
| 695 FX_Free(dest_buf); | 695 FX_Free(dest_buf); |
| 696 } else { | 696 } else { |
| 697 m_pOutput->OutputPS((const FX_CHAR*)data, len); | 697 m_pOutput->OutputPS((const FX_CHAR*)data, len); |
| 698 } | 698 } |
| 699 } | 699 } |
| OLD | NEW |