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/src/fpdfapi/fpdf_render/render_int.h" | 7 #include "core/src/fpdfapi/fpdf_render/render_int.h" |
8 | 8 |
9 #include "core/include/fpdfapi/fpdf_pageobj.h" | 9 #include "core/include/fpdfapi/fpdf_pageobj.h" |
10 #include "core/include/fpdfapi/fpdf_render.h" | 10 #include "core/include/fpdfapi/fpdf_render.h" |
(...skipping 641 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
652 FX_FLOAT cur_pos = 0; | 652 FX_FLOAT cur_pos = 0; |
653 for (int i = 0; i < nChars; i++) { | 653 for (int i = 0; i < nChars; i++) { |
654 pCharCodes[i] = pFont->GetNextChar(str, str.GetLength(), offset); | 654 pCharCodes[i] = pFont->GetNextChar(str, str.GetLength(), offset); |
655 if (i) { | 655 if (i) { |
656 pCharPos[i - 1] = cur_pos; | 656 pCharPos[i - 1] = cur_pos; |
657 } | 657 } |
658 cur_pos += pFont->GetCharWidthF(pCharCodes[i]) * font_size / 1000; | 658 cur_pos += pFont->GetCharWidthF(pCharCodes[i]) * font_size / 1000; |
659 } | 659 } |
660 } | 660 } |
661 CFX_Matrix matrix; | 661 CFX_Matrix matrix; |
662 if (pMatrix) { | 662 if (pMatrix) |
663 matrix = *pMatrix; | 663 matrix = *pMatrix; |
664 } | 664 |
665 matrix.e = origin_x; | 665 matrix.e = origin_x; |
666 matrix.f = origin_y; | 666 matrix.f = origin_y; |
667 if (pFont->GetFontType() == PDFFONT_TYPE3) | 667 |
668 ; | 668 if (pFont->GetFontType() != PDFFONT_TYPE3) { |
669 else if (stroke_argb == 0) { | 669 if (stroke_argb == 0) { |
670 DrawNormalText(pDevice, nChars, pCharCodes, pCharPos, pFont, font_size, | 670 DrawNormalText(pDevice, nChars, pCharCodes, pCharPos, pFont, font_size, |
671 &matrix, fill_argb, pOptions); | 671 &matrix, fill_argb, pOptions); |
672 } else | 672 } else { |
673 DrawTextPath(pDevice, nChars, pCharCodes, pCharPos, pFont, font_size, | 673 DrawTextPath(pDevice, nChars, pCharCodes, pCharPos, pFont, font_size, |
674 &matrix, NULL, pGraphState, fill_argb, stroke_argb, NULL); | 674 &matrix, NULL, pGraphState, fill_argb, stroke_argb, NULL); |
| 675 } |
| 676 } |
| 677 |
675 if (nChars > 1) { | 678 if (nChars > 1) { |
676 FX_Free(pCharCodes); | 679 FX_Free(pCharCodes); |
677 FX_Free(pCharPos); | 680 FX_Free(pCharPos); |
678 } | 681 } |
679 } | 682 } |
680 FX_BOOL CPDF_TextRenderer::DrawNormalText(CFX_RenderDevice* pDevice, | 683 FX_BOOL CPDF_TextRenderer::DrawNormalText(CFX_RenderDevice* pDevice, |
681 int nChars, | 684 int nChars, |
682 FX_DWORD* pCharCodes, | 685 FX_DWORD* pCharCodes, |
683 FX_FLOAT* pCharPos, | 686 FX_FLOAT* pCharPos, |
684 CPDF_Font* pFont, | 687 CPDF_Font* pFont, |
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
780 ProcessPath(&path, pObj2Device); | 783 ProcessPath(&path, pObj2Device); |
781 } | 784 } |
782 } | 785 } |
783 | 786 |
784 CFX_PathData* CPDF_Font::LoadGlyphPath(FX_DWORD charcode, int dest_width) { | 787 CFX_PathData* CPDF_Font::LoadGlyphPath(FX_DWORD charcode, int dest_width) { |
785 int glyph_index = GlyphFromCharCode(charcode); | 788 int glyph_index = GlyphFromCharCode(charcode); |
786 if (!m_Font.GetFace()) | 789 if (!m_Font.GetFace()) |
787 return nullptr; | 790 return nullptr; |
788 return m_Font.LoadGlyphPath(glyph_index, dest_width); | 791 return m_Font.LoadGlyphPath(glyph_index, dest_width); |
789 } | 792 } |
OLD | NEW |