Skip to content

Commit

Permalink
Initial release. Some files may missing, please report.
Browse files Browse the repository at this point in the history
Dependency not included.

Deps: EasyHook, FreeType
  • Loading branch information
snowie2000 committed May 30, 2016
1 parent 0a89093 commit 07a1eee
Show file tree
Hide file tree
Showing 160 changed files with 60,648 additions and 0 deletions.
770 changes: 770 additions & 0 deletions GdiPlusTypes2.h

Large diffs are not rendered by default.

117 changes: 117 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
# usage:
# nmake release build
# nmake debug=1 debug build
# nmake ddk=1 using DDK compiler
# nmake sse=1 build for SSE capable CPUs (uses with ddk=1)
# nmake clean clean all file(s)
# nmake cleanobj clean object file(s)

GDI_PREFIX = ..\gdi++
GDI_PREFIX_DDK = ..\gdi++
GDI_PREFIX_SSE = ..\gdi++_sse

TARGET_EXE = $(GDI_PREFIX).exe
TARGET_DLL = $(GDI_PREFIX).dll

EXE_OBJS = run.obj gdiexe.res
DLL_OBJS = hook.obj override.obj settings.obj cache.obj misc.obj expfunc.obj ft.obj fteng.obj ft2vert.obj gdidll.res
LINK_LIBS = memcpy_amd.lib

EXE_PREFIX = ..\gdiexe
DLL_PREFIX = ..\gdidll

.SUFFIXES: .c .cpp .obj .rc .res

CPPFLAGS = /nologo /D "WIN32"
LINKFLAGS = /nologo
LINK_EXE = /map:$(EXE_PREFIX).map
LINK_DLL = /map:$(DLL_PREFIX).map

CPPOPT = /G6 /Gy /QI0f- /QIfdiv-
LINKOPT = /opt:nowin98 /opt:icf /opt:ref

!ifdef ddk
TARGET_DLL = $(GDI_PREFIX_DDK).dll
DLL_PREFIX = ..\gdidll

!ifdef sse
TARGET_EXE = $(GDI_PREFIX_SSE).exe
TARGET_DLL = $(GDI_PREFIX_SSE).dll
CPPOPT = $(CPPOPT) /GL /arch:SSE
!else
CPPOPT = /G7 /Gy /QI0f- /QIfdiv- /GL /arch:SSE2
!endif

LINKOPT = $(LINKOPT) /ltcg /ignore:4070,4078 bufferoverflowU.lib
LINK_LIBS = detoured_.lib detours_.lib $(LINK_LIBS)

!else
LINK_LIBS = detoured.lib detours.lib $(LINK_LIBS)
!endif

!ifdef ftstatic
CPPFLAGS = $(CPPFLAGS) /D "FREETYPE_STATIC"
FTLIB = freetypeMT
!else
FTLIB = freetype
!endif

!ifdef debug
CPPFLAGS = $(CPPFLAGS) /Od /MDd /FD /GZ /Zi /D "DEBUG" /D "_DEBUG"
LINKFLAGS = $(LINKFLAGS) /incremental:no /debug /machine:I386 /opt:ref /opt:noicf
LINK_EXE = $(LINK_EXE) /pdb:$(EXE_PREFIX).pdb
#LINK_DLL = $(LINK_DLL) $(FTLIB)D.lib /pdb:$(DLL_PREFIX).pdb
LINK_DLL = $(LINK_DLL) $(FTLIB).lib /pdb:$(DLL_PREFIX).pdb
!else
CPPFLAGS = $(CPPFLAGS) $(CPPOPT) /O2 /MD
LINK_DLL = $(LINK_DLL) $(LINKOPT) $(FTLIB).lib
LINK_EXE = $(LINK_EXE) $(LINKOPT)
!endif

all: $(TARGET_EXE) $(TARGET_DLL)

$(TARGET_EXE): $(EXE_OBJS)
link $(LINKFLAGS) $(LINK_EXE) $(LINK_LIBS) /out:$@ $(EXE_OBJS)

$(TARGET_DLL): $(DLL_OBJS) expfunc.def
link /dll $(LINKFLAGS) $(LINK_DLL) $(LINK_LIBS) /def:expfunc.def /out:$@ $(DLL_OBJS)

.c.obj:
cl $(CPPFLAGS) /GF /GA /W3 /Fo$@ /c $<

.cpp.obj:
cl $(CPPFLAGS) /GF /GA /W3 /Fo$@ /c $<

.rc.res:
rc /l 0x411 $<

clean: cleanobj
@-erase "$(TARGET_EXE)"
@-erase "$(TARGET_DLL)"

cleanobj:
@-erase $(EXE_OBJS)
@-erase $(DLL_OBJS)
@-erase ..\gdi???.map
@-erase vc??.pdb
@-erase vc??.idb
@-erase "$(EXE_PREFIX).pdb"
@-erase "$(DLL_PREFIX).pdb"
@-erase "$(GDI_PREFIX).exp"
@-erase "$(GDI_PREFIX).lib"
@-erase "$(GDI_PREFIX_DDK).exp"
@-erase "$(GDI_PREFIX_DDK).lib"
@-erase "$(GDI_PREFIX_SSE).exp"
@-erase "$(GDI_PREFIX_SSE).lib"

hook.obj: hook.cpp ft.h hooklist.h override.h common.h array.h cache.h settings.h tlsdata.h fteng.h
override.obj: override.cpp ft.h hooklist.h override.h common.h array.h cache.h settings.h tlsdata.h fteng.h supinfo.h
cache.obj: cache.cpp hooklist.h override.h common.h array.h cache.h
misc.obj: misc.cpp common.h array.h
settings.obj: settings.cpp common.h array.h cache.h settings.h strtoken.h supinfo.h fteng.h
expfunc.obj: expfunc.cpp common.h array.h cache.h settings.h
ft.obj: ft.cpp ft.h override.h common.h array.h cache.h settings.h fteng.h ft2vert.h
fteng.obj: fteng.cpp ft.h override.h common.h array.h cache.h settings.h fteng.h
ft2vert.obj: ft2vert.c ft2vert.h
run.obj: run.cpp expfunc.cpp supinfo.h gdiexe.rc
gdiexe.res: gdiexe.rc gdidll.rc
123 changes: 123 additions & 0 deletions Makefile.vc2005
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
# usage:
# nmake release build
# nmake debug=1 debug build
# nmake ddk=1 using DDK compiler
# nmake oldpsdk=1 using old platform sdk (dynamic load SHILCreateFromPath()/SHFree())
# nmake clean clean all file(s)
# nmake cleanobj clean object file(s)

TARGET_EXE = ..\gdi++.exe
TARGET_DLL = ..\gdi++.dll

EXE_OBJS = run.obj gdiexe.res
DLL_OBJS = hook.obj override.obj settings.obj cache.obj misc.obj expfunc.obj ft.obj fteng.obj ft2vert.obj gdidll.res memcpy_amd.obj
DLL_LIBS = advapi32.lib

GDI_PREFIX = ..\gdi++
EXE_PREFIX = ..\gdiexe
DLL_PREFIX = ..\gdidll

.SUFFIXES: .c .cpp .obj .rc .res

CPPFLAGS = /nologo /D "WIN32" /I. /EHsc /D
LINKFLAGS = /nologo
LINK_EXE = /map:$(EXE_PREFIX).map
LINK_DLL = /map:$(DLL_PREFIX).map

CPPOPT = /Gy /arch:SSE
LINKOPT = /opt:nowin98 /opt:icf /opt:ref

!ifdef ddk
GDI_PREFIX = ..\gdi++_G7-GS-SSE2_ddk
TARGET_DLL = ..\gdi++_G7-GS-SSE2_ddk.dll
DLL_PREFIX = ..\gdidll_G7-GS-SSE2_ddk
CPPOPT = /G7 /Gy /GL /GS /arch:SSE2
LINKOPT = $(LINKOPT) /ltcg /ignore:4070,4078 bufferoverflowU.lib
!endif

!ifdef oldpsdk
CPPFLAGS = $(CPPFLAGS) /D "OLD_PSDK"
!endif

!ifdef usetrace
CPPFLAGS = $(CPPFLAGS) /D "USE_TRACE"
!endif

!ifdef ftstatic
CPPFLAGS = $(CPPFLAGS) /D "FREETYPE_STATIC"
FTLIB = freetypeMT
!else
FTLIB = freetype
!endif

!ifdef debug
CPPFLAGS = $(CPPFLAGS) /Od /MTd /FD /GZ /Zi /D "DEBUG" /D "_DEBUG"
LINKFLAGS = $(LINKFLAGS) /incremental:no /debug /machine:I386 /opt:ref /opt:noicf /Fm
LINK_EXE = $(LINK_EXE) /pdb:$(EXE_PREFIX).pdb
LINK_DLL = $(LINK_DLL) $(FTLIB)D.lib /pdb:$(DLL_PREFIX).pdb
!else
CPPFLAGS = $(CPPFLAGS) $(CPPOPT) /O2 /MT /GF /GL
LINK_DLL = $(LINK_DLL) $(LINKOPT) $(FTLIB).lib
LINK_EXE = $(LINK_EXE) $(LINKOPT)
!endif

!ifdef ddk
all: $(TARGET_DLL)
!else
all: $(TARGET_EXE) $(TARGET_DLL)
!endif

$(TARGET_EXE): $(EXE_OBJS)
link $(LINKFLAGS) $(LINK_EXE) /LTCG /out:$@ $(EXE_OBJS)

$(TARGET_DLL): $(DLL_OBJS) expfunc.def
link /dll $(LINKFLAGS) $(LINK_DLL) /LTCG /def:expfunc.def /out:$@ $(DLL_OBJS) $(DLL_LIBS)
if exist $@.manifest mt -manifest $@.manifest -outputresource:$@;2

pgi:
-del gdi++*.pg*
link /dll $(LINKFLAGS) $(LINK_DLL) /LTCG:PGI /def:expfunc.def /out:gdi++.dll $(DLL_OBJS) $(DLL_LIBS)

pgo:
link /dll $(LINKFLAGS) $(LINK_DLL) /LTCG:PGO /def:expfunc.def /out:gdi++.dll $(DLL_OBJS) $(DLL_LIBS)

.c.obj:
cl $(CPPFLAGS) /W3 /Fo$@ /c $<

.cpp.obj:
cl $(CPPFLAGS) /W3 /Fo$@ /c $<

.rc.res:
rc /l 0x411 $<

clean: cleanobj
@-erase "$(TARGET_EXE)"
@-erase "$(TARGET_DLL)"

cleanobj:
@-erase $(EXE_OBJS)
@-erase $(DLL_OBJS)
@-erase vc??.pdb
@-erase vc??.idb
@-erase "$(EXE_PREFIX).pdb"
@-erase "$(DLL_PREFIX).pdb"
@-erase "$(EXE_PREFIX).map"
@-erase "$(DLL_PREFIX).map"
@-erase "$(GDI_PREFIX).exp"
@-erase "$(GDI_PREFIX).lib"

memcpy_amd.obj: optimize/memcpy__amd.cpp optimize/memcpy_amd.h
cl $(CPPFLAGS) /W3 /Fomemcpy_amd.obj /c optimize/memcpy__amd.cpp

hook.obj: hook.cpp ft.h hooklist.h override.h common.h array.h cache.h settings.h tlsdata.h fteng.h
override.obj: override.cpp ft.h hooklist.h override.h common.h array.h cache.h settings.h tlsdata.h fteng.h
cache.obj: cache.cpp hooklist.h override.h common.h array.h cache.h
misc.obj: misc.cpp common.h array.h
settings.obj: settings.cpp common.h array.h cache.h settings.h strtoken.h
expfunc.obj: expfunc.cpp common.h array.h cache.h settings.h
ft.obj: ft.cpp ft.h override.h common.h array.h cache.h settings.h fteng.h ft2vert.h
fteng.obj: fteng.cpp ft.h override.h common.h array.h cache.h settings.h fteng.h
ft2vert.obj: ft2vert.c ft2vert.h
run.obj: run.cpp expfunc.cpp gdiexe.rc
gdiexe.res: gdiexe.rc gdidll.rc
gdidll.res: gdidll.rc
58 changes: 58 additions & 0 deletions array.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
#pragma once

#ifndef _INC_SHLWAPI
#define NO_SHLWAPI_STRFCNS
#define NO_SHLWAPI_PATH
#define NO_SHLWAPI_REG
#define NO_SHLWAPI_STREAM
#define NO_SHLWAPI_GDI
#include <shlwapi.h>
#endif

#if !defined(_INC_SHLWAPI) || defined(NOSHLWAPI) || defined(NO_SHLWAPI_PATH)
BOOL WINAPI PathIsRelative(LPCTSTR pszPath);
BOOL WINAPI PathRemoveFileSpec(LPTSTR pszPath);
LPTSTR WINAPI PathFindExtension(LPCTSTR pszPath);
LPTSTR WINAPI PathAddBackslash(LPTSTR pszPath);
LPTSTR WINAPI PathCombine(LPTSTR pszDest, LPCTSTR pszDir, LPCTSTR pszFile);
#endif

#include <atlbase.h>

template <class T>
class CArray : public CSimpleArray<T>
{
public:
T* Begin() const
{
return m_aT;
}
T* End() const
{
return m_aT + m_nSize;
}
};

template <class T>
class CValArray : public CSimpleValArray<T>
{
public:
T* Begin() const
{
return m_aT;
}
T* End() const
{
return m_aT + m_nSize;
}
};

template <class T>
class CPtrArray : public CValArray<T*>
{
};

template <class TKey, class TVal>
class CMap : public CSimpleMap<TKey, TVal>
{
};
19 changes: 19 additions & 0 deletions build.vc2005.bat
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
@echo off

setlocal

set INCLUDE=..\..\..\freetype2\include;%INCLUDE%
set LIB=..\..;%LIB%

:go
nmake -f Makefile.vc2005 %*
if errorlevel 1 goto err
goto end

:err
pause
goto go

:end
endlocal
rem pause
Loading

0 comments on commit 07a1eee

Please sign in to comment.