Chromium Code Reviews| Index: core/fpdfapi/fpdf_font/ttgsubtable.h |
| diff --git a/core/fpdfapi/fpdf_font/ttgsubtable.h b/core/fpdfapi/fpdf_font/ttgsubtable.h |
| index fc040b6e53ce86b8baf105d2c39e77191493ae5f..6e69517c726b4719742773ffc3ce4480c45b7a2b 100644 |
| --- a/core/fpdfapi/fpdf_font/ttgsubtable.h |
| +++ b/core/fpdfapi/fpdf_font/ttgsubtable.h |
| @@ -10,6 +10,7 @@ |
| #include <stdint.h> |
| #include <map> |
| +#include <memory> |
| #include "core/fxcrt/include/fx_basic.h" |
| #include "core/fxge/include/fx_font.h" |
| @@ -45,17 +46,13 @@ class CFX_CTTGSUBTable { |
| uint16_t LookupList; |
| }; |
| struct TLangSys { |
| - TLangSys() |
| - : LookupOrder(0), |
| - ReqFeatureIndex(0), |
| - FeatureCount(0), |
| - FeatureIndex(nullptr) {} |
| - ~TLangSys() { delete[] FeatureIndex; } |
| + TLangSys(); |
| + ~TLangSys(); |
| uint16_t LookupOrder; |
| uint16_t ReqFeatureIndex; |
| uint16_t FeatureCount; |
| - uint16_t* FeatureIndex; |
| + std::unique_ptr<uint16_t[]> FeatureIndex; |
| private: |
| TLangSys(const TLangSys&); |
| @@ -65,20 +62,19 @@ class CFX_CTTGSUBTable { |
| TLangSysRecord() : LangSysTag(0) {} |
| uint32_t LangSysTag; |
| - struct TLangSys LangSys; |
| + TLangSys LangSys; |
| private: |
| TLangSysRecord(const TLangSysRecord&); |
| TLangSysRecord& operator=(const TLangSysRecord&); |
| }; |
| struct TScript { |
| - TScript() : DefaultLangSys(0), LangSysCount(0), LangSysRecord(nullptr) {} |
| - ~TScript() { delete[] LangSysRecord; } |
| + TScript(); |
| + ~TScript(); |
| uint16_t DefaultLangSys; |
| uint16_t LangSysCount; |
| - // TODO(weili): Replace with a smart pointer type, pdfium:518. |
| - struct TLangSysRecord* LangSysRecord; |
| + std::unique_ptr<TLangSysRecord[]> LangSysRecord; |
| private: |
| TScript(const TScript&); |
| @@ -88,30 +84,30 @@ class CFX_CTTGSUBTable { |
| TScriptRecord() : ScriptTag(0) {} |
| uint32_t ScriptTag; |
| - struct TScript Script; |
| + TScript Script; |
| private: |
| TScriptRecord(const TScriptRecord&); |
| TScriptRecord& operator=(const TScriptRecord&); |
| }; |
| struct TScriptList { |
| - TScriptList() : ScriptCount(0), ScriptRecord(nullptr) {} |
| - ~TScriptList() { delete[] ScriptRecord; } |
| + TScriptList(); |
| + ~TScriptList(); |
| uint16_t ScriptCount; |
| - struct TScriptRecord* ScriptRecord; |
| + std::unique_ptr<TScriptRecord[]> ScriptRecord; |
| private: |
| TScriptList(const TScriptList&); |
| TScriptList& operator=(const TScriptList&); |
| }; |
| struct TFeature { |
| - TFeature() : FeatureParams(0), LookupCount(0), LookupListIndex(nullptr) {} |
| - ~TFeature() { delete[] LookupListIndex; } |
| + TFeature(); |
| + ~TFeature(); |
| uint16_t FeatureParams; |
| int LookupCount; |
| - uint16_t* LookupListIndex; |
| + std::unique_ptr<uint16_t[]> LookupListIndex; |
| private: |
| TFeature(const TFeature&); |
| @@ -121,18 +117,18 @@ class CFX_CTTGSUBTable { |
| TFeatureRecord() : FeatureTag(0) {} |
| uint32_t FeatureTag; |
| - struct TFeature Feature; |
| + TFeature Feature; |
| private: |
| TFeatureRecord(const TFeatureRecord&); |
| TFeatureRecord& operator=(const TFeatureRecord&); |
| }; |
| struct TFeatureList { |
| - TFeatureList() : FeatureCount(0), FeatureRecord(nullptr) {} |
| - ~TFeatureList() { delete[] FeatureRecord; } |
| + TFeatureList(); |
| + ~TFeatureList(); |
| int FeatureCount; |
| - struct TFeatureRecord* FeatureRecord; |
| + std::unique_ptr<TFeatureRecord[]> FeatureRecord; |
| private: |
| TFeatureList(const TFeatureList&); |
| @@ -148,6 +144,7 @@ class CFX_CTTGSUBTable { |
| }; |
| struct TCoverageFormatBase { |
| TCoverageFormatBase() : CoverageFormat(0) {} |
| + explicit TCoverageFormatBase(uint16_t format) : CoverageFormat(format) {} |
| virtual ~TCoverageFormatBase() {} |
| uint16_t CoverageFormat; |
| @@ -162,7 +159,7 @@ class CFX_CTTGSUBTable { |
| ~TCoverageFormat1() override; |
| uint16_t GlyphCount; |
| - uint16_t* GlyphArray; |
| + std::unique_ptr<uint16_t[]> GlyphArray; |
| private: |
| TCoverageFormat1(const TCoverageFormat1&); |
| @@ -187,56 +184,12 @@ class CFX_CTTGSUBTable { |
| ~TCoverageFormat2() override; |
| uint16_t RangeCount; |
| - struct TRangeRecord* RangeRecord; |
| + std::unique_ptr<TRangeRecord[]> RangeRecord; |
| private: |
| TCoverageFormat2(const TCoverageFormat2&); |
| TCoverageFormat2& operator=(const TCoverageFormat2&); |
| }; |
| - struct TClassDefFormatBase { |
| - TClassDefFormatBase() : ClassFormat(0) {} |
| - virtual ~TClassDefFormatBase() {} |
| - |
| - uint16_t ClassFormat; |
| - |
| - private: |
| - TClassDefFormatBase(const TClassDefFormatBase&); |
| - TClassDefFormatBase& operator=(const TClassDefFormatBase&); |
| - }; |
| - struct TClassDefFormat1 : public TClassDefFormatBase { |
| - TClassDefFormat1(); |
| - ~TClassDefFormat1() override; |
| - |
| - uint16_t StartGlyph; |
| - uint16_t GlyphCount; |
| - uint16_t* ClassValueArray; |
| - |
| - private: |
| - TClassDefFormat1(const TClassDefFormat1&); |
| - TClassDefFormat1& operator=(const TClassDefFormat1&); |
| - }; |
| - struct TClassRangeRecord { |
| - TClassRangeRecord() : Start(0), End(0), Class(0) {} |
| - |
| - uint16_t Start; |
| - uint16_t End; |
| - uint16_t Class; |
| - |
| - private: |
| - TClassRangeRecord(const TClassRangeRecord&); |
| - TClassRangeRecord& operator=(const TClassRangeRecord&); |
| - }; |
| - struct TClassDefFormat2 : public TClassDefFormatBase { |
| - TClassDefFormat2(); |
| - ~TClassDefFormat2() override; |
| - |
| - uint16_t ClassRangeCount; |
| - struct TClassRangeRecord* ClassRangeRecord; |
| - |
| - private: |
| - TClassDefFormat2(const TClassDefFormat2&); |
| - TClassDefFormat2& operator=(const TClassDefFormat2&); |
| - }; |
| struct TDevice { |
| TDevice() : StartSize(0), EndSize(0), DeltaFormat(0) {} |
| @@ -250,6 +203,7 @@ class CFX_CTTGSUBTable { |
| }; |
| struct TSubTableBase { |
| TSubTableBase() : SubstFormat(0) {} |
| + explicit TSubTableBase(uint16_t format) : SubstFormat(format) {} |
| virtual ~TSubTableBase() {} |
|
Lei Zhang
2016/07/06 23:19:56
BTW, does this need to be virtual? There are subcl
Wei Li
2016/07/07 00:03:35
yes since the destructors of subclasses are virtua
|
| uint16_t SubstFormat; |
| @@ -262,7 +216,7 @@ class CFX_CTTGSUBTable { |
| TSingleSubstFormat1(); |
| ~TSingleSubstFormat1() override; |
| - TCoverageFormatBase* Coverage; |
| + std::unique_ptr<TCoverageFormatBase> Coverage; |
| int16_t DeltaGlyphID; |
| private: |
| @@ -273,9 +227,9 @@ class CFX_CTTGSUBTable { |
| TSingleSubstFormat2(); |
| ~TSingleSubstFormat2() override; |
| - TCoverageFormatBase* Coverage; |
| + std::unique_ptr<TCoverageFormatBase> Coverage; |
| uint16_t GlyphCount; |
| - uint16_t* Substitute; |
| + std::unique_ptr<uint16_t[]> Substitute; |
| private: |
| TSingleSubstFormat2(const TSingleSubstFormat2&); |
| @@ -288,18 +242,18 @@ class CFX_CTTGSUBTable { |
| uint16_t LookupType; |
| uint16_t LookupFlag; |
| uint16_t SubTableCount; |
| - struct TSubTableBase** SubTable; |
| + std::unique_ptr<TSubTableBase* []> SubTable; |
| private: |
| TLookup(const TLookup&); |
| TLookup& operator=(const TLookup&); |
| }; |
| struct TLookupList { |
| - TLookupList() : LookupCount(0), Lookup(nullptr) {} |
| - ~TLookupList() { delete[] Lookup; } |
| + TLookupList(); |
| + ~TLookupList(); |
| int LookupCount; |
| - struct TLookup* Lookup; |
| + std::unique_ptr<TLookup[]> Lookup; |
| private: |
| TLookupList(const TLookupList&); |
| @@ -314,7 +268,7 @@ class CFX_CTTGSUBTable { |
| void ParseFeature(FT_Bytes raw, TFeature* rec); |
| void ParseLookupList(FT_Bytes raw, TLookupList* rec); |
| void ParseLookup(FT_Bytes raw, TLookup* rec); |
| - void ParseCoverage(FT_Bytes raw, TCoverageFormatBase** rec); |
| + TCoverageFormatBase* ParseCoverage(FT_Bytes raw); |
| void ParseCoverageFormat1(FT_Bytes raw, TCoverageFormat1* rec); |
| void ParseCoverageFormat2(FT_Bytes raw, TCoverageFormat2* rec); |
| void ParseSingleSubst(FT_Bytes raw, TSubTableBase** rec); |
| @@ -323,11 +277,11 @@ class CFX_CTTGSUBTable { |
| bool GetVerticalGlyphSub(uint32_t glyphnum, |
| uint32_t* vglyphnum, |
| - struct TFeature* Feature) const; |
| + TFeature* Feature) const; |
| bool GetVerticalGlyphSub2(uint32_t glyphnum, |
| uint32_t* vglyphnum, |
| - struct TLookup* Lookup) const; |
| - int GetCoverageIndex(struct TCoverageFormatBase* Coverage, uint32_t g) const; |
| + TLookup* Lookup) const; |
| + int GetCoverageIndex(TCoverageFormatBase* Coverage, uint32_t g) const; |
| uint8_t GetUInt8(FT_Bytes& p) const; |
| int16_t GetInt16(FT_Bytes& p) const; |
| @@ -338,10 +292,10 @@ class CFX_CTTGSUBTable { |
| std::map<uint32_t, uint32_t> m_featureMap; |
| FX_BOOL m_bFeautureMapLoad; |
| bool loaded; |
| - struct tt_gsub_header header; |
| - struct TScriptList ScriptList; |
| - struct TFeatureList FeatureList; |
| - struct TLookupList LookupList; |
| + tt_gsub_header header; |
| + TScriptList ScriptList; |
| + TFeatureList FeatureList; |
| + TLookupList LookupList; |
| }; |
| #endif // CORE_FPDFAPI_FPDF_FONT_TTGSUBTABLE_H_ |