Re-arrange so inline vectors come last in structs.

This might make the memory tools more effective in finding OOBs.

Change-Id: Id093bb0a88c37954c80d612ac00b5a168e75bdbf
Reviewed-on: https://pdfium-review.googlesource.com/29550
Reviewed-by: dsinclair <dsinclair@chromium.org>
Commit-Queue: Tom Sepez <tsepez@chromium.org>
diff --git a/core/fpdfapi/font/cpdf_cidfont.h b/core/fpdfapi/font/cpdf_cidfont.h
index 68fce2c..0bf5f7a 100644
--- a/core/fpdfapi/font/cpdf_cidfont.h
+++ b/core/fpdfapi/font/cpdf_cidfont.h
@@ -81,13 +81,13 @@
   uint16_t m_DefaultWidth;
   RetainPtr<CPDF_StreamAcc> m_pStreamAcc;
   bool m_bAnsiWidthsFixed;
-  FX_RECT m_CharBBox[256];
   std::vector<uint32_t> m_WidthList;
   short m_DefaultVY;
   short m_DefaultW1;
   std::vector<uint32_t> m_VertMetrics;
   bool m_bAdobeCourierStd;
   std::unique_ptr<CFX_CTTGSUBTable> m_pTTGSUBTable;
+  FX_RECT m_CharBBox[256];
 };
 
 #endif  // CORE_FPDFAPI_FONT_CPDF_CIDFONT_H_
diff --git a/core/fpdfapi/font/cpdf_cmapparser.h b/core/fpdfapi/font/cpdf_cmapparser.h
index fc46c58..c70d408 100644
--- a/core/fpdfapi/font/cpdf_cmapparser.h
+++ b/core/fpdfapi/font/cpdf_cmapparser.h
@@ -40,10 +40,10 @@
   UnownedPtr<CPDF_CMap> const m_pCMap;
   int m_Status;
   int m_CodeSeq;
-  uint32_t m_CodePoints[4];
   std::vector<CPDF_CMap::CodeRange> m_CodeRanges;
   std::vector<CPDF_CMap::CIDRange> m_AdditionalCharcodeToCIDMappings;
   ByteString m_LastWord;
+  uint32_t m_CodePoints[4];
 };
 
 #endif  // CORE_FPDFAPI_FONT_CPDF_CMAPPARSER_H_
diff --git a/core/fpdfapi/font/cpdf_simplefont.h b/core/fpdfapi/font/cpdf_simplefont.h
index 9cb730d..3aa68d7 100644
--- a/core/fpdfapi/font/cpdf_simplefont.h
+++ b/core/fpdfapi/font/cpdf_simplefont.h
@@ -39,13 +39,13 @@
   void LoadCharMetrics(int charcode);
 
   CPDF_FontEncoding m_Encoding;
+  int m_BaseEncoding;
+  bool m_bUseFontWidth;
+  std::vector<ByteString> m_CharNames;
   uint16_t m_GlyphIndex[256];
   uint16_t m_ExtGID[256];
-  std::vector<ByteString> m_CharNames;
-  int m_BaseEncoding;
   uint16_t m_CharWidth[256];
   FX_RECT m_CharBBox[256];
-  bool m_bUseFontWidth;
 };
 
 #endif  // CORE_FPDFAPI_FONT_CPDF_SIMPLEFONT_H_
diff --git a/core/fpdfapi/page/cpdf_colorspace.cpp b/core/fpdfapi/page/cpdf_colorspace.cpp
index fde0ed4..e1dd598 100644
--- a/core/fpdfapi/page/cpdf_colorspace.cpp
+++ b/core/fpdfapi/page/cpdf_colorspace.cpp
@@ -89,9 +89,9 @@
                           bool bTransMask) const override;
 
  private:
+  float m_Gamma;
   float m_WhitePoint[3];
   float m_BlackPoint[3];
-  float m_Gamma;
 };
 
 class CPDF_CalRGB : public CPDF_ColorSpace {
@@ -112,12 +112,12 @@
                           int image_height,
                           bool bTransMask) const override;
 
+  bool m_bGamma;
+  bool m_bMatrix;
   float m_WhitePoint[3];
   float m_BlackPoint[3];
   float m_Gamma[3];
   float m_Matrix[9];
-  bool m_bGamma;
-  bool m_bMatrix;
 };
 
 class CPDF_LabCS : public CPDF_ColorSpace {
diff --git a/core/fpdfapi/page/cpdf_meshstream.h b/core/fpdfapi/page/cpdf_meshstream.h
index 7c34b25..9c97e09 100644
--- a/core/fpdfapi/page/cpdf_meshstream.h
+++ b/core/fpdfapi/page/cpdf_meshstream.h
@@ -78,10 +78,10 @@
   float m_xmax;
   float m_ymin;
   float m_ymax;
-  float m_ColorMin[kMaxComponents];
-  float m_ColorMax[kMaxComponents];
   RetainPtr<CPDF_StreamAcc> m_pStream;
   std::unique_ptr<CFX_BitStream> m_BitStream;
+  float m_ColorMin[kMaxComponents];
+  float m_ColorMax[kMaxComponents];
 };
 
 #endif  // CORE_FPDFAPI_PAGE_CPDF_MESHSTREAM_H_
diff --git a/core/fpdfapi/page/cpdf_psengine.h b/core/fpdfapi/page/cpdf_psengine.h
index 8a054cc..042a1c0 100644
--- a/core/fpdfapi/page/cpdf_psengine.h
+++ b/core/fpdfapi/page/cpdf_psengine.h
@@ -120,9 +120,10 @@
 
  private:
   static constexpr uint32_t kPSEngineStackSize = 100;
-  float m_Stack[kPSEngineStackSize];
+
   uint32_t m_StackCount;
   CPDF_PSProc m_MainProc;
+  float m_Stack[kPSEngineStackSize];
 };
 
 #endif  // CORE_FPDFAPI_PAGE_CPDF_PSENGINE_H_
diff --git a/core/fpdfapi/page/cpdf_streamcontentparser.h b/core/fpdfapi/page/cpdf_streamcontentparser.h
index de4a92f..5dcfbe5 100644
--- a/core/fpdfapi/page/cpdf_streamcontentparser.h
+++ b/core/fpdfapi/page/cpdf_streamcontentparser.h
@@ -201,7 +201,6 @@
   UnownedPtr<std::set<const uint8_t*>> const m_ParsedSet;
   CFX_Matrix m_mtContentToUser;
   const CFX_FloatRect m_BBox;
-  ContentParam m_ParamBuf[kParamBufSize];
   uint32_t m_ParamStartPos;
   uint32_t m_ParamCount;
   CPDF_StreamParser* m_pSyntax;
@@ -219,9 +218,10 @@
   ByteString m_LastImageName;
   RetainPtr<CPDF_Image> m_pLastImage;
   bool m_bColored;
-  float m_Type3Data[6];
   bool m_bResourceMissing;
   std::vector<std::unique_ptr<CPDF_AllStates>> m_StateStack;
+  float m_Type3Data[6];
+  ContentParam m_ParamBuf[kParamBufSize];
 };
 
 #endif  // CORE_FPDFAPI_PAGE_CPDF_STREAMCONTENTPARSER_H_
diff --git a/core/fpdfapi/parser/cpdf_crypto_handler.cpp b/core/fpdfapi/parser/cpdf_crypto_handler.cpp
index d963df4..c27f9dc 100644
--- a/core/fpdfapi/parser/cpdf_crypto_handler.cpp
+++ b/core/fpdfapi/parser/cpdf_crypto_handler.cpp
@@ -110,9 +110,9 @@
 
 struct AESCryptContext {
   bool m_bIV;
-  uint8_t m_Block[16];
   uint32_t m_BlockOffset;
   CRYPT_aes_context m_Context;
+  uint8_t m_Block[16];
 };
 
 void* CPDF_CryptoHandler::CryptStart(uint32_t objnum,
diff --git a/core/fpdfapi/parser/cpdf_crypto_handler.h b/core/fpdfapi/parser/cpdf_crypto_handler.h
index 32eeaef..1ca2130 100644
--- a/core/fpdfapi/parser/cpdf_crypto_handler.h
+++ b/core/fpdfapi/parser/cpdf_crypto_handler.h
@@ -69,10 +69,10 @@
                    bool bEncrypt);
   bool CryptFinish(void* context, CFX_BinaryBuf& dest_buf, bool bEncrypt);
 
-  uint8_t m_EncryptKey[32];
   int m_KeyLen;
   int m_Cipher;
   std::unique_ptr<CRYPT_aes_context, FxFreeDeleter> m_pAESContext;
+  uint8_t m_EncryptKey[32];
 };
 
 #endif  // CORE_FPDFAPI_PARSER_CPDF_CRYPTO_HANDLER_H_
diff --git a/core/fpdfapi/parser/cpdf_security_handler.h b/core/fpdfapi/parser/cpdf_security_handler.h
index eb95743..177c25f 100644
--- a/core/fpdfapi/parser/cpdf_security_handler.h
+++ b/core/fpdfapi/parser/cpdf_security_handler.h
@@ -88,14 +88,14 @@
 
   int m_Version;
   int m_Revision;
-  UnownedPtr<const CPDF_Dictionary> m_pEncryptDict;
   ByteString m_FileId;
   uint32_t m_Permissions;
   int m_Cipher;
-  uint8_t m_EncryptKey[32];
   int m_KeyLen;
   bool m_bOwnerUnlocked;
+  UnownedPtr<const CPDF_Dictionary> m_pEncryptDict;
   std::unique_ptr<CPDF_CryptoHandler> m_pCryptoHandler;
+  uint8_t m_EncryptKey[32];
 };
 
 #endif  // CORE_FPDFAPI_PARSER_CPDF_SECURITY_HANDLER_H_
diff --git a/core/fpdfapi/parser/cpdf_syntax_parser.cpp b/core/fpdfapi/parser/cpdf_syntax_parser.cpp
index 8b8e59f..245617d 100644
--- a/core/fpdfapi/parser/cpdf_syntax_parser.cpp
+++ b/core/fpdfapi/parser/cpdf_syntax_parser.cpp
@@ -40,8 +40,7 @@
 // static
 int CPDF_SyntaxParser::s_CurrentRecursionDepth = 0;
 
-CPDF_SyntaxParser::CPDF_SyntaxParser()
-    : m_pFileAccess(nullptr), m_pPool(WeakPtr<ByteStringPool>()) {}
+CPDF_SyntaxParser::CPDF_SyntaxParser() = default;
 
 CPDF_SyntaxParser::~CPDF_SyntaxParser() = default;
 
diff --git a/core/fpdfapi/parser/cpdf_syntax_parser.h b/core/fpdfapi/parser/cpdf_syntax_parser.h
index 50c20fc..5aad2e4 100644
--- a/core/fpdfapi/parser/cpdf_syntax_parser.h
+++ b/core/fpdfapi/parser/cpdf_syntax_parser.h
@@ -92,14 +92,14 @@
       ParseType parse_type);
 
   FX_FILESIZE m_Pos;
-  RetainPtr<CPDF_ReadValidator> m_pFileAccess;
   FX_FILESIZE m_HeaderOffset;
   FX_FILESIZE m_FileLen;
-  std::vector<uint8_t> m_pFileBuf;
-  FX_FILESIZE m_BufOffset;
-  uint8_t m_WordBuffer[257];
-  uint32_t m_WordSize;
   WeakPtr<ByteStringPool> m_pPool;
+  std::vector<uint8_t> m_pFileBuf;
+  RetainPtr<CPDF_ReadValidator> m_pFileAccess;
+  FX_FILESIZE m_BufOffset;
+  uint32_t m_WordSize;
+  uint8_t m_WordBuffer[257];
 };
 
 #endif  // CORE_FPDFAPI_PARSER_CPDF_SYNTAX_PARSER_H_
diff --git a/core/fpdfapi/render/cpdf_renderstatus.cpp b/core/fpdfapi/render/cpdf_renderstatus.cpp
index d5204fe..367519a 100644
--- a/core/fpdfapi/render/cpdf_renderstatus.cpp
+++ b/core/fpdfapi/render/cpdf_renderstatus.cpp
@@ -696,7 +696,6 @@
 
 struct Coon_Color {
   Coon_Color() { memset(comp, 0, sizeof(int) * 3); }
-  int comp[3];
 
   // Returns true if successful, false if overflow detected.
   bool BiInterpol(Coon_Color colors[4],
@@ -717,16 +716,12 @@
     return std::max({abs(comp[0] - o.comp[0]), abs(comp[1] - o.comp[1]),
                      abs(comp[2] - o.comp[2])});
   }
+
+  int comp[3];
 };
 
 #define COONCOLOR_THRESHOLD 4
 struct CPDF_PatchDrawer {
-  Coon_Color patch_colors[4];
-  int max_delta;
-  CFX_PathData path;
-  CFX_RenderDevice* pDevice;
-  int fill_mode;
-  int alpha;
   void Draw(int x_scale,
             int y_scale,
             int left,
@@ -825,6 +820,13 @@
       }
     }
   }
+
+  int max_delta;
+  CFX_PathData path;
+  CFX_RenderDevice* pDevice;
+  int fill_mode;
+  int alpha;
+  Coon_Color patch_colors[4];
 };
 
 void DrawCoonPatchMeshes(
diff --git a/core/fpdfapi/render/cpdf_type3cache.cpp b/core/fpdfapi/render/cpdf_type3cache.cpp
index fe9dfbf..33a440f 100644
--- a/core/fpdfapi/render/cpdf_type3cache.cpp
+++ b/core/fpdfapi/render/cpdf_type3cache.cpp
@@ -21,8 +21,9 @@
 
 struct CPDF_UniqueKeyGen {
   void Generate(int count, ...);
-  char m_Key[128];
+
   int m_KeyLen;
+  char m_Key[128];
 };
 
 void CPDF_UniqueKeyGen::Generate(int count, ...) {
diff --git a/core/fpdfapi/render/cpdf_type3glyphs.h b/core/fpdfapi/render/cpdf_type3glyphs.h
index 778b639..7756be3 100644
--- a/core/fpdfapi/render/cpdf_type3glyphs.h
+++ b/core/fpdfapi/render/cpdf_type3glyphs.h
@@ -24,10 +24,10 @@
   void AdjustBlue(float top, float bottom, int& top_line, int& bottom_line);
 
   std::map<uint32_t, std::unique_ptr<CFX_GlyphBitmap>> m_GlyphMap;
-  int m_TopBlue[TYPE3_MAX_BLUES];
-  int m_BottomBlue[TYPE3_MAX_BLUES];
   int m_TopBlueCount;
   int m_BottomBlueCount;
+  int m_TopBlue[TYPE3_MAX_BLUES];
+  int m_BottomBlue[TYPE3_MAX_BLUES];
 };
 
 #endif  // CORE_FPDFAPI_RENDER_CPDF_TYPE3GLYPHS_H_
diff --git a/core/fxcodec/codec/fx_codec_flate.cpp b/core/fxcodec/codec/fx_codec_flate.cpp
index e33a3d4..8cef6c7 100644
--- a/core/fxcodec/codec/fx_codec_flate.cpp
+++ b/core/fxcodec/codec/fx_codec_flate.cpp
@@ -40,7 +40,7 @@
 
 namespace {
 
-constexpr const static uint32_t kMaxTotalOutSize = 1024 * 1024 * 1024;  // 1 GiB
+static constexpr uint32_t kMaxTotalOutSize = 1024 * 1024 * 1024;  // 1 GiB
 
 uint32_t FlateGetPossiblyTruncatedTotalOut(void* context) {
   return std::min(pdfium::base::saturated_cast<uint32_t>(
@@ -121,11 +121,11 @@
   uint8_t* m_pOutput;
   const uint8_t* m_pInput;
   bool m_Early;
-  uint32_t m_CodeArray[5021];
   uint32_t m_nCodes;
-  uint8_t m_DecodeStack[4000];
   uint32_t m_StackLen;
   int m_CodeLen;
+  uint32_t m_CodeArray[5021];
+  uint8_t m_DecodeStack[4000];
 };
 
 void CLZWDecoder::AddCode(uint32_t prefix_code, uint8_t append_char) {
diff --git a/core/fxcodec/gif/cfx_lzwdecompressor.h b/core/fxcodec/gif/cfx_lzwdecompressor.h
index e6e0634..808f50a 100644
--- a/core/fxcodec/gif/cfx_lzwdecompressor.h
+++ b/core/fxcodec/gif/cfx_lzwdecompressor.h
@@ -54,12 +54,12 @@
   uint8_t code_first_;
   std::vector<uint8_t> decompressed_;
   size_t decompressed_next_;
-  CodeEntry code_table_[GIF_MAX_LZW_CODE];
   uint16_t code_old_;
   uint8_t* next_in_;
   uint32_t avail_in_;
   uint8_t bits_left_;
   uint32_t code_store_;
+  CodeEntry code_table_[GIF_MAX_LZW_CODE];
 };
 
 #endif  // CORE_FXCODEC_GIF_CFX_LZWDECOMPRESSOR_H_
diff --git a/core/fxcrt/cfx_fixedbufgrow.h b/core/fxcrt/cfx_fixedbufgrow.h
index b12b710..55db8b2 100644
--- a/core/fxcrt/cfx_fixedbufgrow.h
+++ b/core/fxcrt/cfx_fixedbufgrow.h
@@ -24,8 +24,8 @@
   operator DataType*() { return m_pGrowData ? m_pGrowData.get() : m_FixedData; }
 
  private:
-  DataType m_FixedData[FixedSize];
   std::unique_ptr<DataType, FxFreeDeleter> m_pGrowData;
+  DataType m_FixedData[FixedSize];
 };
 
 #endif  // CORE_FXCRT_CFX_FIXEDBUFGROW_H_
diff --git a/core/fxge/cfx_facecache.cpp b/core/fxge/cfx_facecache.cpp
index ea72905..ba316c1 100644
--- a/core/fxge/cfx_facecache.cpp
+++ b/core/fxge/cfx_facecache.cpp
@@ -40,8 +40,8 @@
 struct UniqueKeyGen {
   void Generate(int count, ...);
 
-  char key_[128];
   int key_len_;
+  char key_[128];
 };
 
 void UniqueKeyGen::Generate(int count, ...) {
diff --git a/core/fxge/cfx_fontmapper.h b/core/fxge/cfx_fontmapper.h
index 13d906c..215eec9 100644
--- a/core/fxge/cfx_fontmapper.h
+++ b/core/fxge/cfx_fontmapper.h
@@ -74,12 +74,12 @@
   };
 
   bool m_bListLoaded;
-  FXFT_Face m_MMFaces[MM_FACE_COUNT];
   ByteString m_LastFamily;
   std::vector<FaceData> m_FaceArray;
   std::unique_ptr<SystemFontInfoIface> m_pFontInfo;
-  FXFT_Face m_FoxitFaces[FOXIT_FACE_COUNT];
   UnownedPtr<CFX_FontMgr> const m_pFontMgr;
+  FXFT_Face m_MMFaces[MM_FACE_COUNT];
+  FXFT_Face m_FoxitFaces[FOXIT_FACE_COUNT];
 };
 
 #endif  // CORE_FXGE_CFX_FONTMAPPER_H_
diff --git a/core/fxge/cfx_renderdevice.h b/core/fxge/cfx_renderdevice.h
index 757dfdf..eed72eb 100644
--- a/core/fxge/cfx_renderdevice.h
+++ b/core/fxge/cfx_renderdevice.h
@@ -73,7 +73,6 @@
   FXTEXT_CHARPOS(const FXTEXT_CHARPOS&);
   ~FXTEXT_CHARPOS();
 
-  float m_AdjustMatrix[4];
   CFX_PointF m_Origin;
   uint32_t m_Unicode;
   uint32_t m_GlyphIndex;
@@ -84,6 +83,7 @@
   int32_t m_FallbackFontPosition;
   bool m_bGlyphAdjust;
   bool m_bFontStyle;
+  float m_AdjustMatrix[4];
 };
 
 class CFX_RenderDevice {
diff --git a/core/fxge/cttfontdesc.cpp b/core/fxge/cttfontdesc.cpp
index bdf2451..97a1273 100644
--- a/core/fxge/cttfontdesc.cpp
+++ b/core/fxge/cttfontdesc.cpp
@@ -10,7 +10,7 @@
 #include "third_party/base/stl_util.h"
 
 CTTFontDesc::CTTFontDesc(uint8_t* pData, FXFT_Face face)
-    : m_bIsTTC(false), m_SingleFace(face), m_pFontData(pData) {}
+    : m_bIsTTC(false), m_pFontData(pData), m_SingleFace(face) {}
 
 CTTFontDesc::CTTFontDesc(uint8_t* pData, size_t index, FXFT_Face face)
     : m_bIsTTC(true), m_pFontData(pData) {
diff --git a/core/fxge/cttfontdesc.h b/core/fxge/cttfontdesc.h
index b48e78c..bc0ea17 100644
--- a/core/fxge/cttfontdesc.h
+++ b/core/fxge/cttfontdesc.h
@@ -40,13 +40,12 @@
 
  private:
   const bool m_bIsTTC;
-
+  int m_RefCount = 1;
+  uint8_t* const m_pFontData;
   union {
     const FXFT_Face m_SingleFace;
     FXFT_Face m_TTCFaces[16];
   };
-  uint8_t* const m_pFontData;
-  int m_RefCount = 1;
 };
 
 #endif  // CORE_FXGE_CTTFONTDESC_H_
diff --git a/core/fxge/win32/cfx_psrenderer.cpp b/core/fxge/win32/cfx_psrenderer.cpp
index 6c4b8ec..036cb43 100644
--- a/core/fxge/win32/cfx_psrenderer.cpp
+++ b/core/fxge/win32/cfx_psrenderer.cpp
@@ -89,8 +89,8 @@
 
 class CPSFont {
  public:
-  PSGlyph m_Glyphs[256];
   int m_nGlyphs;
+  PSGlyph m_Glyphs[256];
 };
 
 CFX_PSRenderer::CFX_PSRenderer()
diff --git a/fxbarcode/common/reedsolomon/BC_ReedSolomonGF256.h b/fxbarcode/common/reedsolomon/BC_ReedSolomonGF256.h
index 693d943..9f0fcd3 100644
--- a/fxbarcode/common/reedsolomon/BC_ReedSolomonGF256.h
+++ b/fxbarcode/common/reedsolomon/BC_ReedSolomonGF256.h
@@ -37,10 +37,10 @@
   static CBC_ReedSolomonGF256* DataMatrixField;
 
  private:
-  int32_t m_expTable[256];
-  int32_t m_logTable[256];
   std::unique_ptr<CBC_ReedSolomonGF256Poly> m_zero;
   std::unique_ptr<CBC_ReedSolomonGF256Poly> m_one;
+  int32_t m_expTable[256];
+  int32_t m_logTable[256];
 };
 
 #endif  // FXBARCODE_COMMON_REEDSOLOMON_BC_REEDSOLOMONGF256_H_
diff --git a/xfa/fgas/font/cfgas_fontmgr.h b/xfa/fgas/font/cfgas_fontmgr.h
index 6b98fbe..f4a6284 100644
--- a/xfa/fgas/font/cfgas_fontmgr.h
+++ b/xfa/fgas/font/cfgas_fontmgr.h
@@ -71,9 +71,9 @@
   ~CFX_FontDescriptor();
 
   int32_t m_nFaceIndex;
+  uint32_t m_dwFontStyles;
   WideString m_wsFaceName;
   std::vector<WideString> m_wsFamilyNames;
-  uint32_t m_dwFontStyles;
   uint32_t m_dwUsb[4];
   uint32_t m_dwCsb[2];
 };
diff --git a/xfa/fgas/layout/cfx_break.h b/xfa/fgas/layout/cfx_break.h
index 789220d..7356cff 100644
--- a/xfa/fgas/layout/cfx_break.h
+++ b/xfa/fgas/layout/cfx_break.h
@@ -82,9 +82,9 @@
   int32_t m_iDefChar;
   wchar_t m_wDefChar;
   RetainPtr<CFGAS_GEFont> m_pFont;
-  CFX_BreakLine m_Line[2];
   CFX_BreakLine* m_pCurLine;
   int8_t m_iReadyLineIndex;
+  CFX_BreakLine m_Line[2];
 
  private:
   void FontChanged();
diff --git a/xfa/fwl/theme/cfwl_checkboxtp.h b/xfa/fwl/theme/cfwl_checkboxtp.h
index e373b38..c4341ed 100644
--- a/xfa/fwl/theme/cfwl_checkboxtp.h
+++ b/xfa/fwl/theme/cfwl_checkboxtp.h
@@ -25,7 +25,6 @@
 
  protected:
   struct CKBThemeData {
-    FX_ARGB clrBoxBk[13][2];
     FX_ARGB clrSignBorderNormal;
     FX_ARGB clrSignBorderDisable;
     FX_ARGB clrSignCheck;
@@ -33,6 +32,7 @@
     FX_ARGB clrSignNeutralNormal;
     FX_ARGB clrSignNeutralHover;
     FX_ARGB clrSignNeutralPressed;
+    FX_ARGB clrBoxBk[13][2];
   };
 
   void DrawCheckSign(CFWL_Widget* pWidget,
diff --git a/xfa/fwl/theme/cfwl_scrollbartp.h b/xfa/fwl/theme/cfwl_scrollbartp.h
index eec372c..bae4e19 100644
--- a/xfa/fwl/theme/cfwl_scrollbartp.h
+++ b/xfa/fwl/theme/cfwl_scrollbartp.h
@@ -21,12 +21,12 @@
 
  protected:
   struct SBThemeData {
+    FX_ARGB clrTrackBKStart;
+    FX_ARGB clrTrackBKEnd;
     FX_ARGB clrPawColorLight[4];
     FX_ARGB clrPawColorDark[4];
     FX_ARGB clrBtnBK[4][2];
     FX_ARGB clrBtnBorder[4];
-    FX_ARGB clrTrackBKStart;
-    FX_ARGB clrTrackBKEnd;
   };
 
   void DrawThumbBtn(CXFA_Graphics* pGraphics,