[MMIXER] Fix additional data size initialization for different audio formats (#6753)
[reactos.git] / dll / shellext / fontext / CFontCache.hpp
index 226c061..ba9d9e3 100644 (file)
@@ -2,7 +2,7 @@
  * PROJECT:     ReactOS Font Shell Extension
  * LICENSE:     GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later)
  * PURPOSE:     font list cache handling
- * COPYRIGHT:   Copyright 2019 Mark Jansen (mark.jansen@reactos.org)
+ * COPYRIGHT:   Copyright 2019-2021 Mark Jansen <mark.jansen@reactos.org>
  */
 
 #pragma once
@@ -14,12 +14,24 @@ private:
     CStringW m_Name;
     CStringW m_File;
     bool m_FileRead;
+
+    bool m_AttrsRead;
+    LARGE_INTEGER m_FileSize;
+    FILETIME m_FileWriteTime;
+    DWORD m_dwFileAttributes;
+
+    void ReadAttrs();
+
 public:
     CFontInfo(LPCWSTR name = L"");
 
-    const CStringW& Name() const;
-    const CStringW& File();
+    const CStringW& Name() const;   // Font display name stored in the registry
     const bool Valid() const;
+
+    const CStringW& File();         // Full path or file, depending on how it's stored in the registry
+    const LARGE_INTEGER& FileSize();
+    const FILETIME& FileWriteTime();
+    DWORD FileAttributes();
 };
 
 
@@ -27,17 +39,24 @@ class CFontCache
 {
 private:
     CAtlArray<CFontInfo> m_Fonts;
+    CStringW m_FontFolderPath;
 
 protected:
     CFontCache();
 
     void Insert(CAtlList<CFontInfo>& fonts, const CStringW& KeyName);
-    void Read();
 
 public:
+    void Read();
+
+    void SetFontDir(const LPCWSTR Path);
+    const CStringW& FontPath() const { return m_FontFolderPath; }
+
     size_t Size();
-    CStringW Name(size_t Index);
-    CStringW Filename(const FontPidlEntry* fontEntry);
+    CStringW Name(size_t Index);    // Font display name stored in the registry
+
+    CFontInfo* Find(const FontPidlEntry* fontEntry);
+    CStringW Filename(CFontInfo* info, bool alwaysFullPath = false);
 
     friend class CFontExtModule;
 };