| 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 #ifndef CORE_INCLUDE_FPDFAPI_FPDF_RESOURCE_H_ | 7 #ifndef CORE_INCLUDE_FPDFAPI_FPDF_RESOURCE_H_ |
| 8 #define CORE_INCLUDE_FPDFAPI_FPDF_RESOURCE_H_ | 8 #define CORE_INCLUDE_FPDFAPI_FPDF_RESOURCE_H_ |
| 9 | 9 |
| 10 #include <map> | 10 #include <map> |
| (...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 95 class CPDF_Font { | 95 class CPDF_Font { |
| 96 public: | 96 public: |
| 97 static CPDF_Font* CreateFontF(CPDF_Document* pDoc, | 97 static CPDF_Font* CreateFontF(CPDF_Document* pDoc, |
| 98 CPDF_Dictionary* pFontDict); | 98 CPDF_Dictionary* pFontDict); |
| 99 static CPDF_Font* GetStockFont(CPDF_Document* pDoc, | 99 static CPDF_Font* GetStockFont(CPDF_Document* pDoc, |
| 100 const CFX_ByteStringC& fontname); | 100 const CFX_ByteStringC& fontname); |
| 101 static const FX_DWORD kInvalidCharCode = static_cast<FX_DWORD>(-1); | 101 static const FX_DWORD kInvalidCharCode = static_cast<FX_DWORD>(-1); |
| 102 | 102 |
| 103 virtual ~CPDF_Font(); | 103 virtual ~CPDF_Font(); |
| 104 | 104 |
| 105 virtual bool IsType1Font() const { return false; } | 105 virtual bool IsType1Font() const; |
| 106 virtual bool IsTrueTypeFont() const { return false; } | 106 virtual bool IsTrueTypeFont() const; |
| 107 virtual bool IsType3Font() const { return false; } | 107 virtual bool IsType3Font() const; |
| 108 virtual bool IsCIDFont() const { return false; } | 108 virtual bool IsCIDFont() const; |
| 109 virtual const CPDF_Type1Font* AsType1Font() const { return nullptr; } | 109 virtual const CPDF_Type1Font* AsType1Font() const; |
| 110 virtual CPDF_Type1Font* AsType1Font() { return nullptr; } | 110 virtual CPDF_Type1Font* AsType1Font(); |
| 111 virtual const CPDF_TrueTypeFont* AsTrueTypeFont() const { return nullptr; } | 111 virtual const CPDF_TrueTypeFont* AsTrueTypeFont() const; |
| 112 virtual CPDF_TrueTypeFont* AsTrueTypeFont() { return nullptr; } | 112 virtual CPDF_TrueTypeFont* AsTrueTypeFont(); |
| 113 virtual const CPDF_Type3Font* AsType3Font() const { return nullptr; } | 113 virtual const CPDF_Type3Font* AsType3Font() const; |
| 114 virtual CPDF_Type3Font* AsType3Font() { return nullptr; } | 114 virtual CPDF_Type3Font* AsType3Font(); |
| 115 virtual const CPDF_CIDFont* AsCIDFont() const { return nullptr; } | 115 virtual const CPDF_CIDFont* AsCIDFont() const; |
| 116 virtual CPDF_CIDFont* AsCIDFont() { return nullptr; } | 116 virtual CPDF_CIDFont* AsCIDFont(); |
| 117 | 117 |
| 118 virtual FX_BOOL IsVertWriting() const; | 118 virtual FX_BOOL IsVertWriting() const; |
| 119 virtual FX_BOOL IsUnicodeCompatible() const { return FALSE; } | 119 virtual FX_BOOL IsUnicodeCompatible() const; |
| 120 virtual FX_DWORD GetNextChar(const FX_CHAR* pString, | 120 virtual FX_DWORD GetNextChar(const FX_CHAR* pString, |
| 121 int nStrLen, | 121 int nStrLen, |
| 122 int& offset) const; | 122 int& offset) const; |
| 123 virtual int CountChar(const FX_CHAR* pString, int size) const { return size; } | 123 virtual int CountChar(const FX_CHAR* pString, int size) const; |
| 124 virtual int AppendChar(FX_CHAR* buf, FX_DWORD charcode) const; | 124 virtual int AppendChar(FX_CHAR* buf, FX_DWORD charcode) const; |
| 125 virtual int GetCharSize(FX_DWORD charcode) const { return 1; } | 125 virtual int GetCharSize(FX_DWORD charcode) const; |
| 126 virtual int GlyphFromCharCode(FX_DWORD charcode, | 126 virtual int GlyphFromCharCode(FX_DWORD charcode, |
| 127 FX_BOOL* pVertGlyph = NULL) = 0; | 127 FX_BOOL* pVertGlyph = nullptr); |
| 128 virtual int GlyphFromCharCodeExt(FX_DWORD charcode) { | 128 virtual int GlyphFromCharCodeExt(FX_DWORD charcode); |
| 129 return GlyphFromCharCode(charcode); | |
| 130 } | |
| 131 virtual CFX_WideString UnicodeFromCharCode(FX_DWORD charcode) const; | 129 virtual CFX_WideString UnicodeFromCharCode(FX_DWORD charcode) const; |
| 132 virtual FX_DWORD CharCodeFromUnicode(FX_WCHAR Unicode) const; | 130 virtual FX_DWORD CharCodeFromUnicode(FX_WCHAR Unicode) const; |
| 133 | 131 |
| 134 const CFX_ByteString& GetBaseFont() const { return m_BaseFont; } | 132 const CFX_ByteString& GetBaseFont() const { return m_BaseFont; } |
| 135 const CFX_SubstFont* GetSubstFont() const { return m_Font.GetSubstFont(); } | 133 const CFX_SubstFont* GetSubstFont() const { return m_Font.GetSubstFont(); } |
| 136 FX_DWORD GetFlags() const { return m_Flags; } | 134 FX_DWORD GetFlags() const { return m_Flags; } |
| 137 FX_BOOL IsEmbedded() const { return IsType3Font() || m_pFontFile != NULL; } | 135 FX_BOOL IsEmbedded() const { return IsType3Font() || m_pFontFile != nullptr; } |
| 138 CPDF_StreamAcc* GetFontFile() const { return m_pFontFile; } | 136 CPDF_StreamAcc* GetFontFile() const { return m_pFontFile; } |
| 139 CPDF_Dictionary* GetFontDict() const { return m_pFontDict; } | 137 CPDF_Dictionary* GetFontDict() const { return m_pFontDict; } |
| 140 FX_BOOL IsStandardFont() const; | 138 FX_BOOL IsStandardFont() const; |
| 141 FXFT_Face GetFace() const { return m_Font.GetFace(); } | 139 FXFT_Face GetFace() const { return m_Font.GetFace(); } |
| 142 void AppendChar(CFX_ByteString& str, FX_DWORD charcode) const; | 140 void AppendChar(CFX_ByteString& str, FX_DWORD charcode) const; |
| 143 | 141 |
| 144 void GetFontBBox(FX_RECT& rect) const { rect = m_FontBBox; } | 142 void GetFontBBox(FX_RECT& rect) const { rect = m_FontBBox; } |
| 145 int GetTypeAscent() const { return m_Ascent; } | 143 int GetTypeAscent() const { return m_Ascent; } |
| 146 int GetTypeDescent() const { return m_Descent; } | 144 int GetTypeDescent() const { return m_Descent; } |
| 147 int GetItalicAngle() const { return m_ItalicAngle; } | 145 int GetItalicAngle() const { return m_ItalicAngle; } |
| (...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 250 FX_WORD m_CharWidth[256]; | 248 FX_WORD m_CharWidth[256]; |
| 251 FX_SMALL_RECT m_CharBBox[256]; | 249 FX_SMALL_RECT m_CharBBox[256]; |
| 252 FX_BOOL m_bUseFontWidth; | 250 FX_BOOL m_bUseFontWidth; |
| 253 }; | 251 }; |
| 254 | 252 |
| 255 class CPDF_Type1Font : public CPDF_SimpleFont { | 253 class CPDF_Type1Font : public CPDF_SimpleFont { |
| 256 public: | 254 public: |
| 257 CPDF_Type1Font(); | 255 CPDF_Type1Font(); |
| 258 | 256 |
| 259 // CPDF_Font: | 257 // CPDF_Font: |
| 260 bool IsType1Font() const override { return true; } | 258 bool IsType1Font() const override; |
| 261 const CPDF_Type1Font* AsType1Font() const override { return this; } | 259 const CPDF_Type1Font* AsType1Font() const override; |
| 262 CPDF_Type1Font* AsType1Font() override { return this; } | 260 CPDF_Type1Font* AsType1Font() override; |
| 263 int GlyphFromCharCodeExt(FX_DWORD charcode) override; | 261 int GlyphFromCharCodeExt(FX_DWORD charcode) override; |
| 264 | 262 |
| 265 int GetBase14Font() const { return m_Base14Font; } | 263 int GetBase14Font() const { return m_Base14Font; } |
| 266 | 264 |
| 267 protected: | 265 protected: |
| 268 // CPDF_Font: | 266 // CPDF_Font: |
| 269 FX_BOOL Load() override; | 267 FX_BOOL Load() override; |
| 270 | 268 |
| 271 // CPDF_SimpleFont: | 269 // CPDF_SimpleFont: |
| 272 void LoadGlyphMap() override; | 270 void LoadGlyphMap() override; |
| 273 | 271 |
| 274 int m_Base14Font; | 272 int m_Base14Font; |
| 275 }; | 273 }; |
| 276 | 274 |
| 277 class CPDF_TrueTypeFont : public CPDF_SimpleFont { | 275 class CPDF_TrueTypeFont : public CPDF_SimpleFont { |
| 278 public: | 276 public: |
| 279 CPDF_TrueTypeFont(); | 277 CPDF_TrueTypeFont(); |
| 280 | 278 |
| 281 // CPDF_Font: | 279 // CPDF_Font: |
| 282 bool IsTrueTypeFont() const override { return true; } | 280 bool IsTrueTypeFont() const override; |
| 283 const CPDF_TrueTypeFont* AsTrueTypeFont() const override { return this; } | 281 const CPDF_TrueTypeFont* AsTrueTypeFont() const override; |
| 284 CPDF_TrueTypeFont* AsTrueTypeFont() override { return this; } | 282 CPDF_TrueTypeFont* AsTrueTypeFont() override; |
| 285 | 283 |
| 286 protected: | 284 protected: |
| 287 // CPDF_Font: | 285 // CPDF_Font: |
| 288 FX_BOOL Load() override; | 286 FX_BOOL Load() override; |
| 289 | 287 |
| 290 // CPDF_SimpleFont: | 288 // CPDF_SimpleFont: |
| 291 void LoadGlyphMap() override; | 289 void LoadGlyphMap() override; |
| 292 }; | 290 }; |
| 293 | 291 |
| 294 class CPDF_Type3Char { | 292 class CPDF_Type3Char { |
| (...skipping 11 matching lines...) Expand all Loading... |
| 306 CFX_Matrix m_ImageMatrix; | 304 CFX_Matrix m_ImageMatrix; |
| 307 FX_RECT m_BBox; | 305 FX_RECT m_BBox; |
| 308 }; | 306 }; |
| 309 | 307 |
| 310 class CPDF_Type3Font : public CPDF_SimpleFont { | 308 class CPDF_Type3Font : public CPDF_SimpleFont { |
| 311 public: | 309 public: |
| 312 CPDF_Type3Font(); | 310 CPDF_Type3Font(); |
| 313 ~CPDF_Type3Font() override; | 311 ~CPDF_Type3Font() override; |
| 314 | 312 |
| 315 // CPDF_Font: | 313 // CPDF_Font: |
| 316 bool IsType3Font() const override { return true; } | 314 bool IsType3Font() const override; |
| 317 const CPDF_Type3Font* AsType3Font() const override { return this; } | 315 const CPDF_Type3Font* AsType3Font() const override; |
| 318 CPDF_Type3Font* AsType3Font() override { return this; } | 316 CPDF_Type3Font* AsType3Font() override; |
| 319 int GetCharWidthF(FX_DWORD charcode, int level = 0) override; | 317 int GetCharWidthF(FX_DWORD charcode, int level = 0) override; |
| 320 FX_RECT GetCharBBox(FX_DWORD charcode, int level = 0) override; | 318 FX_RECT GetCharBBox(FX_DWORD charcode, int level = 0) override; |
| 321 | 319 |
| 322 void SetPageResources(CPDF_Dictionary* pResources) { | 320 void SetPageResources(CPDF_Dictionary* pResources) { |
| 323 m_pPageResources = pResources; | 321 m_pPageResources = pResources; |
| 324 } | 322 } |
| 325 CPDF_Type3Char* LoadChar(FX_DWORD charcode, int level = 0); | 323 CPDF_Type3Char* LoadChar(FX_DWORD charcode, int level = 0); |
| 326 void CheckType3FontMetrics(); | 324 void CheckType3FontMetrics(); |
| 327 | 325 |
| 328 CFX_Matrix& GetFontMatrix() { return m_FontMatrix; } | 326 CFX_Matrix& GetFontMatrix() { return m_FontMatrix; } |
| (...skipping 26 matching lines...) Expand all Loading... |
| 355 }; | 353 }; |
| 356 | 354 |
| 357 class CPDF_CIDFont : public CPDF_Font { | 355 class CPDF_CIDFont : public CPDF_Font { |
| 358 public: | 356 public: |
| 359 CPDF_CIDFont(); | 357 CPDF_CIDFont(); |
| 360 ~CPDF_CIDFont() override; | 358 ~CPDF_CIDFont() override; |
| 361 | 359 |
| 362 static FX_FLOAT CIDTransformToFloat(uint8_t ch); | 360 static FX_FLOAT CIDTransformToFloat(uint8_t ch); |
| 363 | 361 |
| 364 // CPDF_Font: | 362 // CPDF_Font: |
| 365 bool IsCIDFont() const override { return true; } | 363 bool IsCIDFont() const override; |
| 366 const CPDF_CIDFont* AsCIDFont() const override { return this; } | 364 const CPDF_CIDFont* AsCIDFont() const override; |
| 367 CPDF_CIDFont* AsCIDFont() override { return this; } | 365 CPDF_CIDFont* AsCIDFont() override; |
| 368 int GlyphFromCharCode(FX_DWORD charcode, FX_BOOL* pVertGlyph = NULL) override; | 366 int GlyphFromCharCode(FX_DWORD charcode, FX_BOOL* pVertGlyph = NULL) override; |
| 369 int GetCharWidthF(FX_DWORD charcode, int level = 0) override; | 367 int GetCharWidthF(FX_DWORD charcode, int level = 0) override; |
| 370 FX_RECT GetCharBBox(FX_DWORD charcode, int level = 0) override; | 368 FX_RECT GetCharBBox(FX_DWORD charcode, int level = 0) override; |
| 371 FX_DWORD GetNextChar(const FX_CHAR* pString, | 369 FX_DWORD GetNextChar(const FX_CHAR* pString, |
| 372 int nStrLen, | 370 int nStrLen, |
| 373 int& offset) const override; | 371 int& offset) const override; |
| 374 int CountChar(const FX_CHAR* pString, int size) const override; | 372 int CountChar(const FX_CHAR* pString, int size) const override; |
| 375 int AppendChar(FX_CHAR* str, FX_DWORD charcode) const override; | 373 int AppendChar(FX_CHAR* str, FX_DWORD charcode) const override; |
| 376 int GetCharSize(FX_DWORD charcode) const override; | 374 int GetCharSize(FX_DWORD charcode) const override; |
| 377 FX_BOOL IsVertWriting() const override; | 375 FX_BOOL IsVertWriting() const override; |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 427 | 425 |
| 428 class CPDF_ColorSpace { | 426 class CPDF_ColorSpace { |
| 429 public: | 427 public: |
| 430 static CPDF_ColorSpace* GetStockCS(int Family); | 428 static CPDF_ColorSpace* GetStockCS(int Family); |
| 431 | 429 |
| 432 static CPDF_ColorSpace* Load(CPDF_Document* pDoc, CPDF_Object* pCSObj); | 430 static CPDF_ColorSpace* Load(CPDF_Document* pDoc, CPDF_Object* pCSObj); |
| 433 | 431 |
| 434 void ReleaseCS(); | 432 void ReleaseCS(); |
| 435 | 433 |
| 436 int GetBufSize() const; | 434 int GetBufSize() const; |
| 437 | |
| 438 FX_FLOAT* CreateBuf(); | 435 FX_FLOAT* CreateBuf(); |
| 439 | |
| 440 void GetDefaultColor(FX_FLOAT* buf) const; | 436 void GetDefaultColor(FX_FLOAT* buf) const; |
| 441 | |
| 442 int CountComponents() const { return m_nComponents; } | 437 int CountComponents() const { return m_nComponents; } |
| 443 | |
| 444 int GetFamily() const { return m_Family; } | 438 int GetFamily() const { return m_Family; } |
| 445 | |
| 446 virtual void GetDefaultValue(int iComponent, | 439 virtual void GetDefaultValue(int iComponent, |
| 447 FX_FLOAT& value, | 440 FX_FLOAT& value, |
| 448 FX_FLOAT& min, | 441 FX_FLOAT& min, |
| 449 FX_FLOAT& max) const { | 442 FX_FLOAT& max) const { |
| 450 value = 0; | 443 value = 0; |
| 451 min = 0; | 444 min = 0; |
| 452 max = 1.0f; | 445 max = 1.0f; |
| 453 } | 446 } |
| 454 | 447 |
| 455 FX_BOOL sRGB() const; | 448 FX_BOOL sRGB() const; |
| 456 | |
| 457 virtual FX_BOOL GetRGB(FX_FLOAT* pBuf, | 449 virtual FX_BOOL GetRGB(FX_FLOAT* pBuf, |
| 458 FX_FLOAT& R, | 450 FX_FLOAT& R, |
| 459 FX_FLOAT& G, | 451 FX_FLOAT& G, |
| 460 FX_FLOAT& B) const = 0; | 452 FX_FLOAT& B) const = 0; |
| 461 | |
| 462 virtual FX_BOOL SetRGB(FX_FLOAT* pBuf, | 453 virtual FX_BOOL SetRGB(FX_FLOAT* pBuf, |
| 463 FX_FLOAT R, | 454 FX_FLOAT R, |
| 464 FX_FLOAT G, | 455 FX_FLOAT G, |
| 465 FX_FLOAT B) const { | 456 FX_FLOAT B) const { |
| 466 return FALSE; | 457 return FALSE; |
| 467 } | 458 } |
| 468 | 459 |
| 469 FX_BOOL GetCMYK(FX_FLOAT* pBuf, | 460 FX_BOOL GetCMYK(FX_FLOAT* pBuf, |
| 470 FX_FLOAT& c, | 461 FX_FLOAT& c, |
| 471 FX_FLOAT& m, | 462 FX_FLOAT& m, |
| 472 FX_FLOAT& y, | 463 FX_FLOAT& y, |
| 473 FX_FLOAT& k) const; | 464 FX_FLOAT& k) const; |
| 474 | |
| 475 FX_BOOL SetCMYK(FX_FLOAT* pBuf, | 465 FX_BOOL SetCMYK(FX_FLOAT* pBuf, |
| 476 FX_FLOAT c, | 466 FX_FLOAT c, |
| 477 FX_FLOAT m, | 467 FX_FLOAT m, |
| 478 FX_FLOAT y, | 468 FX_FLOAT y, |
| 479 FX_FLOAT k) const; | 469 FX_FLOAT k) const; |
| 480 | 470 |
| 481 virtual void TranslateImageLine(uint8_t* dest_buf, | 471 virtual void TranslateImageLine(uint8_t* dest_buf, |
| 482 const uint8_t* src_buf, | 472 const uint8_t* src_buf, |
| 483 int pixels, | 473 int pixels, |
| 484 int image_width, | 474 int image_width, |
| 485 int image_height, | 475 int image_height, |
| 486 FX_BOOL bTransMask = FALSE) const; | 476 FX_BOOL bTransMask = FALSE) const; |
| 487 | 477 |
| 488 CPDF_Array*& GetArray() { return m_pArray; } | 478 CPDF_Array*& GetArray() { return m_pArray; } |
| 489 | |
| 490 int GetMaxIndex() const; | 479 int GetMaxIndex() const; |
| 491 | |
| 492 virtual CPDF_ColorSpace* GetBaseCS() const { return NULL; } | 480 virtual CPDF_ColorSpace* GetBaseCS() const { return NULL; } |
| 493 | 481 |
| 494 virtual void EnableStdConversion(FX_BOOL bEnabled); | 482 virtual void EnableStdConversion(FX_BOOL bEnabled); |
| 495 | 483 |
| 496 CPDF_Document* const m_pDocument; | 484 CPDF_Document* const m_pDocument; |
| 497 | 485 |
| 498 protected: | 486 protected: |
| 499 CPDF_ColorSpace(CPDF_Document* pDoc, int family, int nComponents) | 487 CPDF_ColorSpace(CPDF_Document* pDoc, int family, int nComponents) |
| 500 : m_pDocument(pDoc), | 488 : m_pDocument(pDoc), |
| 501 m_Family(family), | 489 m_Family(family), |
| (...skipping 276 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 778 | 766 |
| 779 FX_BOOL m_bInterpolate; | 767 FX_BOOL m_bInterpolate; |
| 780 | 768 |
| 781 CPDF_Document* m_pDocument; | 769 CPDF_Document* m_pDocument; |
| 782 | 770 |
| 783 CPDF_Dictionary* m_pOC; | 771 CPDF_Dictionary* m_pOC; |
| 784 CPDF_Dictionary* InitJPEG(uint8_t* pData, FX_DWORD size); | 772 CPDF_Dictionary* InitJPEG(uint8_t* pData, FX_DWORD size); |
| 785 }; | 773 }; |
| 786 | 774 |
| 787 #endif // CORE_INCLUDE_FPDFAPI_FPDF_RESOURCE_H_ | 775 #endif // CORE_INCLUDE_FPDFAPI_FPDF_RESOURCE_H_ |
| OLD | NEW |