From 518367b8eb745f1c4df5e9e185cb0c766b799e0c Mon Sep 17 00:00:00 2001 From: hyzboy Date: Tue, 3 Dec 2019 11:49:02 +0800 Subject: [PATCH] update ConvertImage --- CMakeLists.txt | 34 ++++++++++++++++++++-------------- ConvertImage.cpp | 43 ++++++++++++------------------------------- ConvertImage.h | 30 ------------------------------ main.cpp | 10 ++++------ 4 files changed, 36 insertions(+), 81 deletions(-) delete mode 100644 ConvertImage.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 63df51c..a027b83 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,23 +7,29 @@ add_definitions(-DUNICODE -D_UNICODE) include_directories("DevIL Windows SDK/include") link_directories("DevIL Windows SDK/lib/x64/unicode/Release") -set(SOURCE_FILE main.cpp pixel_format.cpp - ILImage.h - ILImageSupport.cpp - ConvertImage.cpp - TextureFileCreater.h - TextureFileCreater.cpp - TextureFileCreaterR.cpp - TextureFileCreaterRG.cpp - TextureFileCreaterRGB.cpp - TextureFileCreaterRGBA.cpp) +SET(ILIMAGE_SOURCE ILImage.h + ILImageSupport.cpp) -set(HEADER_FILE pixel_format.h ConvertImage.h) +SET(PIXEL_FORMAT_SOURCE pixel_format.cpp + pixel_format.h) -SOURCE_GROUP("Header Files" FILES ${HEADER_FILE}) -SOURCE_GROUP("Source Files" FILES ${SOURCE_FILE}) +SET(TEXTURE_FILE_CREATER_SOURCE TextureFileCreater.h + TextureFileCreater.cpp + TextureFileCreaterR.cpp + TextureFileCreaterRG.cpp + TextureFileCreaterRGB.cpp + TextureFileCreaterRGBA.cpp) -add_executable(TexConv ${SOURCE_FILE} ${HEADER_FILE}) +set(SOURCE_FILE main.cpp + ConvertImage.cpp) + +set(HEADER_FILE ) + +SOURCE_GROUP("Image File" FILES ${ILIMAGE_SOURCE}) +SOURCE_GROUP("Pixel Format" FILES ${PIXEL_FORMAT_SOURCE}) +SOURCE_GROUP("Texture File Creater" FILES ${TEXTURE_FILE_CREATER_SOURCE}) + +add_executable(TexConv ${SOURCE_FILE} ${ILIMAGE_SOURCE} ${PIXEL_FORMAT_SOURCE} ${TEXTURE_FILE_CREATER_SOURCE}) target_link_libraries(TexConv PRIVATE DevIL) diff --git a/ConvertImage.cpp b/ConvertImage.cpp index dd9ed49..d6e0422 100644 --- a/ConvertImage.cpp +++ b/ConvertImage.cpp @@ -1,4 +1,4 @@ -#include"ConvertImage.h" +#include #include"ILImage.h" #include"TextureFileCreater.h" @@ -7,45 +7,25 @@ TextureFileCreater *CreateTextureFileCreaterRG(const PixelFormat *,ILImage *); TextureFileCreater *CreateTextureFileCreaterRGB(const PixelFormat *,ILImage *); TextureFileCreater *CreateTextureFileCreaterRGBA(const PixelFormat *,ILImage *); -ConvertImage::ConvertImage() +bool ConvertImage(const OSString &filename,const PixelFormat **pf) { - image=nullptr; -} + ILImage image; -ConvertImage::~ConvertImage() -{ - SAFE_CLEAR(image); -} + LOG_INFO(OS_TEXT("File: ")+filename); -bool ConvertImage::Load(const OSString &fn) -{ - LOG_INFO(OS_TEXT("File: ")+fn); - - image=new ILImage(); - - if(!image->LoadFile(fn)) - { - delete image; + if(!image.LoadFile(filename)) return(false); - } - filename=fn; + image.Bind(); - return(true); -} - -bool ConvertImage::Convert(const PixelFormat **pf) -{ - image->Bind(); - - const uint channels=image->channels(); + const uint channels=image.channels(); TextureFileCreater *tex_file_creater; - if(channels==1)tex_file_creater=CreateTextureFileCreaterR(pf[0],image);else - if(channels==2)tex_file_creater=CreateTextureFileCreaterRG(pf[1],image);else - if(channels==3)tex_file_creater=CreateTextureFileCreaterRGB(pf[2],image);else - if(channels==4)tex_file_creater=CreateTextureFileCreaterRGBA(pf[3],image);else + if(channels==1)tex_file_creater=CreateTextureFileCreaterR(pf[0],&image);else + if(channels==2)tex_file_creater=CreateTextureFileCreaterRG(pf[1],&image);else + if(channels==3)tex_file_creater=CreateTextureFileCreaterRGB(pf[2],&image);else + if(channels==4)tex_file_creater=CreateTextureFileCreaterRGBA(pf[3],&image);else { LOG_ERROR(OS_TEXT("image format don't support ")); return(false); @@ -69,3 +49,4 @@ bool ConvertImage::Convert(const PixelFormat **pf) delete tex_file_creater; return(true); } + diff --git a/ConvertImage.h b/ConvertImage.h deleted file mode 100644 index 923fc2c..0000000 --- a/ConvertImage.h +++ /dev/null @@ -1,30 +0,0 @@ -#pragma once - -#include -#include -#include"pixel_format.h" - -using namespace hgl; - -class ILImage; - -class ConvertImage -{ - OSString filename; - - ILImage *image; - -private: - - bool CreateTextureFile(const PixelFormat *); - -private: - -public: - - ConvertImage(); - ~ConvertImage(); - - bool Load(const OSString &fn); - bool Convert(const PixelFormat **); -};//class ConvertImage \ No newline at end of file diff --git a/main.cpp b/main.cpp index 54690ce..3ba7ccc 100644 --- a/main.cpp +++ b/main.cpp @@ -6,7 +6,7 @@ #include #include #include -#include"ConvertImage.h" +#include"pixel_format.h" using namespace hgl; using namespace hgl::filesystem; @@ -20,6 +20,8 @@ bool gen_mipmaps =false; //是否产生mipmaps bool use_color_key =false; //是否使用ColorKey uint8 color_key[3]; //ColorKey颜色 +bool ConvertImage(const OSString &filename,const PixelFormat **pf); + const PixelFormat *ParseParamFormat(const CmdParse &cmd,const os_char *flag,const PixelFormat *default_format) { OSString fmtstr; @@ -74,11 +76,7 @@ protected: void ProcFile(EnumFileConfig *efc,FileInfo &fi) override { - ConvertImage ci; - - if(!ci.Load(fi.fullname))return; - - if(!ci.Convert(pixel_fmt))return; + ConvertImage(fi.fullname,pixel_fmt); } public: