diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 3010fe29..8ad9c8b3 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -30,3 +30,14 @@ add_library(${LIB_NAME} STATIC
# Just a hint
target_link_libraries(${LIB_NAME} gdiplus imm32 msimg32)
+
+# compile test
+add_executable(graphicstest graphicstest/maintest.cpp)
+
+target_include_directories(graphicstest BEFORE
+ PRIVATE .)
+
+target_link_libraries(graphicstest ${LIB_NAME})
+if (CMAKE_CXX_COMPILER_ID MATCHES "GNU")
+ target_link_libraries(graphicstest -mwindows)
+endif ()
diff --git a/src/graphicstest/graphicstest06.dsp b/src/graphicstest/graphicstest06.dsp
deleted file mode 100644
index 5941e6ec..00000000
--- a/src/graphicstest/graphicstest06.dsp
+++ /dev/null
@@ -1,102 +0,0 @@
-# Microsoft Developer Studio Project File - Name="graphicstest06" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=graphicstest06 - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "graphicstest06.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "graphicstest06.mak" CFG="graphicstest06 - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "graphicstest06 - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "graphicstest06 - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "graphicstest06 - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x804 /d "NDEBUG"
-# ADD RSC /l 0x804 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-
-!ELSEIF "$(CFG)" == "graphicstest06 - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD BASE RSC /l 0x804 /d "_DEBUG"
-# ADD RSC /l 0x804 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-
-!ENDIF
-
-# Begin Target
-
-# Name "graphicstest06 - Win32 Release"
-# Name "graphicstest06 - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=.\maintest.cpp
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# End Group
-# End Target
-# End Project
diff --git a/src/graphicstest/graphicstest06.dsw b/src/graphicstest/graphicstest06.dsw
deleted file mode 100644
index 21bceb18..00000000
--- a/src/graphicstest/graphicstest06.dsw
+++ /dev/null
@@ -1,29 +0,0 @@
-Microsoft Developer Studio Workspace File, Format Version 6.00
-# 警告: 不能编辑或删除该工作区文件!
-
-###############################################################################
-
-Project: "graphicstest06"=.\graphicstest06.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Global:
-
-Package=<5>
-{{{
-}}}
-
-Package=<3>
-{{{
-}}}
-
-###############################################################################
-
diff --git a/src/graphicstest/graphicstest09.sln b/src/graphicstest/graphicstest09.sln
deleted file mode 100644
index 65b0ca0b..00000000
--- a/src/graphicstest/graphicstest09.sln
+++ /dev/null
@@ -1,26 +0,0 @@
-锘
-Microsoft Visual Studio Solution File, Format Version 10.00
-# Visual Studio 2008
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "graphicstest09", "graphicstest09.vcproj", "{2A7C80E7-F2E3-4B66-8AA7-D8258A808E67}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Win32 = Debug|Win32
- Debug|x64 = Debug|x64
- Release|Win32 = Release|Win32
- Release|x64 = Release|x64
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {2A7C80E7-F2E3-4B66-8AA7-D8258A808E67}.Debug|Win32.ActiveCfg = Debug|Win32
- {2A7C80E7-F2E3-4B66-8AA7-D8258A808E67}.Debug|Win32.Build.0 = Debug|Win32
- {2A7C80E7-F2E3-4B66-8AA7-D8258A808E67}.Debug|x64.ActiveCfg = Debug|x64
- {2A7C80E7-F2E3-4B66-8AA7-D8258A808E67}.Debug|x64.Build.0 = Debug|x64
- {2A7C80E7-F2E3-4B66-8AA7-D8258A808E67}.Release|Win32.ActiveCfg = Release|Win32
- {2A7C80E7-F2E3-4B66-8AA7-D8258A808E67}.Release|Win32.Build.0 = Release|Win32
- {2A7C80E7-F2E3-4B66-8AA7-D8258A808E67}.Release|x64.ActiveCfg = Release|x64
- {2A7C80E7-F2E3-4B66-8AA7-D8258A808E67}.Release|x64.Build.0 = Release|x64
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/src/graphicstest/graphicstest09.vcproj b/src/graphicstest/graphicstest09.vcproj
deleted file mode 100644
index 8c15015c..00000000
--- a/src/graphicstest/graphicstest09.vcproj
+++ /dev/null
@@ -1,349 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/graphicstest/graphicstest10.sln b/src/graphicstest/graphicstest10.sln
deleted file mode 100644
index 678ab7e5..00000000
--- a/src/graphicstest/graphicstest10.sln
+++ /dev/null
@@ -1,26 +0,0 @@
-锘
-Microsoft Visual Studio Solution File, Format Version 11.00
-# Visual Studio 2010
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "graphicstest10", "graphicstest10.vcxproj", "{6CF620F5-1DF8-4A29-B42E-686864338127}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Win32 = Debug|Win32
- Debug|x64 = Debug|x64
- Release|Win32 = Release|Win32
- Release|x64 = Release|x64
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {6CF620F5-1DF8-4A29-B42E-686864338127}.Debug|Win32.ActiveCfg = Debug|Win32
- {6CF620F5-1DF8-4A29-B42E-686864338127}.Debug|Win32.Build.0 = Debug|Win32
- {6CF620F5-1DF8-4A29-B42E-686864338127}.Debug|x64.ActiveCfg = Debug|x64
- {6CF620F5-1DF8-4A29-B42E-686864338127}.Debug|x64.Build.0 = Debug|x64
- {6CF620F5-1DF8-4A29-B42E-686864338127}.Release|Win32.ActiveCfg = Release|Win32
- {6CF620F5-1DF8-4A29-B42E-686864338127}.Release|Win32.Build.0 = Release|Win32
- {6CF620F5-1DF8-4A29-B42E-686864338127}.Release|x64.ActiveCfg = Release|x64
- {6CF620F5-1DF8-4A29-B42E-686864338127}.Release|x64.Build.0 = Release|x64
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/src/graphicstest/graphicstest10.vcxproj b/src/graphicstest/graphicstest10.vcxproj
deleted file mode 100644
index 4ebfb9ec..00000000
--- a/src/graphicstest/graphicstest10.vcxproj
+++ /dev/null
@@ -1,146 +0,0 @@
-锘
-
-
-
- Debug
- Win32
-
-
- Debug
- x64
-
-
- Release
- Win32
-
-
- Release
- x64
-
-
-
- {6CF620F5-1DF8-4A29-B42E-686864338127}
- Win32Proj
- graphicstest10
-
-
-
- Application
- true
- Unicode
-
-
- Application
- true
- Unicode
-
-
- Application
- false
- true
- Unicode
-
-
- Application
- false
- true
- Unicode
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- false
-
-
- false
-
-
- false
-
-
- false
-
-
-
-
-
- Level3
- Disabled
- WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)
-
-
- Windows
- true
-
-
-
-
-
-
- Level3
- Disabled
- WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)
- MultiThreadedDebug
-
-
- Windows
- true
-
-
-
-
- Level3
-
-
- MaxSpeed
- true
- true
- WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
- MultiThreadedDLL
-
-
- Windows
- false
- true
- true
-
-
-
-
- Level3
-
-
- MaxSpeed
- true
- true
- WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
- MultiThreaded
-
-
- Windows
- false
- true
- true
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/src/graphicstest/graphicstest10.vcxproj.filters b/src/graphicstest/graphicstest10.vcxproj.filters
deleted file mode 100644
index aaf2aabc..00000000
--- a/src/graphicstest/graphicstest10.vcxproj.filters
+++ /dev/null
@@ -1,22 +0,0 @@
-锘
-
-
-
- {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
- cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
-
-
- {93995380-89BD-4b04-88EB-625FBE52EBFB}
- h;hpp;hxx;hm;inl;inc;xsd
-
-
- {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
- rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms
-
-
-
-
- 婧愭枃浠
-
-
-
\ No newline at end of file
diff --git a/src/graphicstest/graphicstest12.sln b/src/graphicstest/graphicstest12.sln
deleted file mode 100644
index 9996f7c4..00000000
--- a/src/graphicstest/graphicstest12.sln
+++ /dev/null
@@ -1,26 +0,0 @@
-锘
-Microsoft Visual Studio Solution File, Format Version 11.00
-# Visual Studio 2012
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "graphicstest12", "graphicstest12.vcxproj", "{6CF620F5-1DF8-4A29-B42E-686864338127}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Win32 = Debug|Win32
- Debug|x64 = Debug|x64
- Release|Win32 = Release|Win32
- Release|x64 = Release|x64
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {6CF620F5-1DF8-4A29-B42E-686864338127}.Debug|Win32.ActiveCfg = Debug|Win32
- {6CF620F5-1DF8-4A29-B42E-686864338127}.Debug|Win32.Build.0 = Debug|Win32
- {6CF620F5-1DF8-4A29-B42E-686864338127}.Debug|x64.ActiveCfg = Debug|x64
- {6CF620F5-1DF8-4A29-B42E-686864338127}.Debug|x64.Build.0 = Debug|x64
- {6CF620F5-1DF8-4A29-B42E-686864338127}.Release|Win32.ActiveCfg = Release|Win32
- {6CF620F5-1DF8-4A29-B42E-686864338127}.Release|Win32.Build.0 = Release|Win32
- {6CF620F5-1DF8-4A29-B42E-686864338127}.Release|x64.ActiveCfg = Release|x64
- {6CF620F5-1DF8-4A29-B42E-686864338127}.Release|x64.Build.0 = Release|x64
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/src/graphicstest/graphicstest12.vcxproj b/src/graphicstest/graphicstest12.vcxproj
deleted file mode 100644
index 2b0d6d58..00000000
--- a/src/graphicstest/graphicstest12.vcxproj
+++ /dev/null
@@ -1,150 +0,0 @@
-锘
-
-
-
- Debug
- Win32
-
-
- Debug
- x64
-
-
- Release
- Win32
-
-
- Release
- x64
-
-
-
- {6CF620F5-1DF8-4A29-B42E-686864338127}
- Win32Proj
- graphicstest10
-
-
-
- Application
- true
- Unicode
- v110
-
-
- Application
- true
- Unicode
- v110
-
-
- Application
- false
- true
- Unicode
- v110
-
-
- Application
- false
- true
- Unicode
- v110
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- true
-
-
- true
-
-
- false
-
-
- false
-
-
-
-
-
- Level3
- Disabled
- WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)
-
-
- Windows
- true
-
-
-
-
-
-
- Level3
- Disabled
- WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)
- MultiThreadedDebug
-
-
- Windows
- true
-
-
-
-
- Level3
-
-
- MaxSpeed
- true
- true
- WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
- MultiThreadedDLL
-
-
- Windows
- false
- true
- true
-
-
-
-
- Level3
-
-
- MaxSpeed
- true
- true
- WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
- MultiThreaded
-
-
- Windows
- false
- true
- true
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/src/graphicstest/graphicstest13.sln b/src/graphicstest/graphicstest13.sln
deleted file mode 100644
index 7526f93f..00000000
--- a/src/graphicstest/graphicstest13.sln
+++ /dev/null
@@ -1,26 +0,0 @@
-锘
-Microsoft Visual Studio Solution File, Format Version 11.00
-# Visual Studio 2012
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "graphicstest13", "graphicstest13.vcxproj", "{6CF620F5-1DF8-4A29-B42E-686864338127}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Win32 = Debug|Win32
- Debug|x64 = Debug|x64
- Release|Win32 = Release|Win32
- Release|x64 = Release|x64
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {6CF620F5-1DF8-4A29-B42E-686864338127}.Debug|Win32.ActiveCfg = Debug|Win32
- {6CF620F5-1DF8-4A29-B42E-686864338127}.Debug|Win32.Build.0 = Debug|Win32
- {6CF620F5-1DF8-4A29-B42E-686864338127}.Debug|x64.ActiveCfg = Debug|x64
- {6CF620F5-1DF8-4A29-B42E-686864338127}.Debug|x64.Build.0 = Debug|x64
- {6CF620F5-1DF8-4A29-B42E-686864338127}.Release|Win32.ActiveCfg = Release|Win32
- {6CF620F5-1DF8-4A29-B42E-686864338127}.Release|Win32.Build.0 = Release|Win32
- {6CF620F5-1DF8-4A29-B42E-686864338127}.Release|x64.ActiveCfg = Release|x64
- {6CF620F5-1DF8-4A29-B42E-686864338127}.Release|x64.Build.0 = Release|x64
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/src/graphicstest/graphicstest13.vcxproj b/src/graphicstest/graphicstest13.vcxproj
deleted file mode 100644
index 374e6f7f..00000000
--- a/src/graphicstest/graphicstest13.vcxproj
+++ /dev/null
@@ -1,150 +0,0 @@
-锘
-
-
-
- Debug
- Win32
-
-
- Debug
- x64
-
-
- Release
- Win32
-
-
- Release
- x64
-
-
-
- {6CF620F5-1DF8-4A29-B42E-686864338127}
- Win32Proj
- graphicstest10
-
-
-
- Application
- true
- Unicode
- v120
-
-
- Application
- true
- Unicode
- v120
-
-
- Application
- false
- true
- Unicode
- v120
-
-
- Application
- false
- true
- Unicode
- v120
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- true
-
-
- true
-
-
- false
-
-
- false
-
-
-
-
-
- Level3
- Disabled
- WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)
-
-
- Windows
- true
-
-
-
-
-
-
- Level3
- Disabled
- WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)
- MultiThreadedDebug
-
-
- Windows
- true
-
-
-
-
- Level3
-
-
- MaxSpeed
- true
- true
- WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
- MultiThreadedDLL
-
-
- Windows
- false
- true
- true
-
-
-
-
- Level3
-
-
- MaxSpeed
- true
- true
- WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
- MultiThreaded
-
-
- Windows
- false
- true
- true
-
-
-
-
-
-
-
-
-
\ No newline at end of file