Initial commit: Complete open-source Decal rebuild

All 5 phases of the open-source Decal rebuild:

Phase 1: 14 decompiled .NET projects (Interop.*, Adapter, FileService, DecalUtil)
Phase 2: 10 native DLLs rewritten as C# COM servers with matching GUIDs
  - DecalDat, DHS, SpellFilter, DecalInput, DecalNet, DecalFilters
  - Decal.Core, DecalControls, DecalRender, D3DService
Phase 3: C++ shims for Inject.DLL (D3D9 hooking) and LauncherHook.DLL
Phase 4: DenAgent WinForms tray application
Phase 5: WiX installer and build script

25 C# projects building with 0 errors.
Native C++ projects require VS 2022 + Windows SDK (x86).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
erik 2026-02-08 18:27:56 +01:00
commit d1442e3747
1382 changed files with 170725 additions and 0 deletions

59
Native/Inject/IconCache.h Normal file
View file

@ -0,0 +1,59 @@
// IconCache.h : Declaration of the cIconCache
#ifndef __ICONCACHE_H_
#define __ICONCACHE_H_
#include "resource.h" // main symbols
/////////////////////////////////////////////////////////////////////////////
// cIconCache
class ATL_NO_VTABLE cIconCache :
public CComObjectRootEx<CComMultiThreadModel>,
public IIconCache
{
public:
cIconCache()
{
}
SIZE m_szIcon;
long m_nEdge;
struct cIconID
{
HMODULE m_hMod;
DWORD m_dwID;
long m_lBColor; //Moputu - 05172002: Added to make icons with different colored bordered unique.
};
typedef std::vector< cIconID > cIDList;
class cIconBuffer
{
public:
cIDList m_icons;
CComPtr< ICanvas > m_pSurface;
};
typedef std::list< cIconBuffer > cIconBufferList;
cIconBufferList m_icons;
bool findIcon( HMODULE hMod, DWORD dwFile, cIconBuffer *&pBuffer, int &nIndex, long lColor = -1 ); //Moputu - 05172002: Added long lColor = -1 to make icons with different colored borders unique.
void findFreeSlot( cIconBuffer *&pBuffer, int &nIndex );
bool loadIcon( DWORD dwFile, cIconBuffer *&pBuffer, int &nIndex, long lColor = -1 );
bool loadIconResource( HMODULE hMod, DWORD dwResourceID, cIconBuffer *&pBuffer, int &nIndex, long lColor = -1 ); //Moputu - 05172002: Added long lColor = -1 to make icons with different colored borders unique.
void drawIcon( LPPOINT pPos, ICanvas *pDest, cIconBuffer *pBuffer, int nIndex );
BEGIN_COM_MAP(cIconCache)
COM_INTERFACE_ENTRY(IIconCache)
END_COM_MAP()
// IIconCache
public:
STDMETHOD(DrawIcon)( LPPOINT ppt, long nFile, long nModule, ICanvas *pTarget );
STDMETHOD(DrawIconEx)( LPPOINT ppt, long nFile, long nModule, ICanvas *pTarget, long lColor );
};
#endif //__ICONCACHE_H_