Skip to content

Commit b4c3623

Browse files
Lior LahavTheNicker
authored andcommitted
Use vendored FreeImageRe for FreeImage codec
1 parent a595518 commit b4c3623

4 files changed

Lines changed: 27 additions & 17 deletions

File tree

.gitmodules

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,3 +34,6 @@
3434
[submodule "External/ExoticNumbers"]
3535
path = External/ExoticNumbers
3636
url = https://github.com/OpenImageViewer/ExoticNumbers.git
37+
[submodule "External/FreeImageRe"]
38+
path = External/FreeImageRe
39+
url = https://github.com/agruzdev/FreeImageRe.git

Codecs/CodecFreeImage/CMakeLists.txt

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,17 @@ file(GLOB_RECURSE sourceFiles
1010

1111
set(TargetName CodecFreeImage)
1212
add_library (${TargetName} STATIC ${sourceFiles})
13-
target_link_libraries(${TargetName} d:/DevelopmentExternal/FreeImage3180Win32Win64/FreeImage/Dist/x64/FreeImage.lib)
14-
include_directories(D:/DevelopmentExternal/FreeImage3180Win32Win64/FreeImage/Dist/x64)
1513

16-
#FreeImage from source
17-
#set(FreeImageFolder ../../External/FreeImage)
18-
#add_subdirectory(${FreeImageFolder} ./External/FreeImage)
19-
#target_include_directories(${TargetName} PRIVATE ${FreeImageFolder}/Source)
20-
#target_link_libraries(${TargetName} PRIVATE FreeImage)
14+
set(FreeImageReFolder ${CMAKE_CURRENT_LIST_DIR}/../../External/FreeImageRe)
15+
set(EXTERNALPROJECT_SOURCE_ROOT ${CMAKE_CURRENT_BINARY_DIR}/External/FreeImageRe/dependencies/source CACHE PATH "FreeImageRe dependency source directory")
16+
set(EXTERNALPROJECT_BINARY_ROOT ${CMAKE_CURRENT_BINARY_DIR}/External/FreeImageRe/dependencies/build CACHE PATH "FreeImageRe dependency build directory")
17+
foreach(FreeImageReBackend LIBJPEG LIBOPENJPEG LIBOPENEXR LIBPNG LIBTIFF LIBWEBP LIBRAW LIBHEIF LIBJPEGXL)
18+
set(FREEIMAGE_WITH_${FreeImageReBackend} OFF CACHE BOOL "Compile FreeImageRe with the ${FreeImageReBackend} backend" FORCE)
19+
endforeach()
20+
21+
if(NOT TARGET FreeImage)
22+
add_subdirectory(${FreeImageReFolder} ${CMAKE_CURRENT_BINARY_DIR}/External/FreeImageRe)
23+
endif()
24+
25+
target_include_directories(${TargetName} PRIVATE ${FreeImageReFolder}/Source)
26+
target_link_libraries(${TargetName} PRIVATE FreeImage)

Codecs/CodecFreeImage/Source/CodecFreeImage.h

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,15 @@ namespace IMCodec
1717
// {0CA17E19-92E7-4926-A8FC-34E7086BA27F}
1818
{ 0xca17e19, 0x92e7, 0x4926, { 0xa8, 0xfc, 0x34, 0xe7, 0x8, 0x6b, 0xa2, 0x7f } }
1919
,CodecCapabilities::Decode | CodecCapabilities::BulkCodec
20-
, L"Free image codec"
20+
, LLUTILS_TEXT("Free image codec")
2121
,
2222
{
2323
{
24-
{ L"Image formats collection"}
24+
{ LLUTILS_TEXT("Image formats collection")}
2525

26-
,{ L"BMP",L"ICO",L"JPEG",L"JNG",L"KOALA",L"LBM",L"IFF",L"MNG",L"PBM",L"PBMRAW",L"PCD",L"PGM",L"PGMRAW",L"PNG"
27-
,L"PPM",L"PPMRAW",L"RAS",L"TGA",L"TIFF",L"TIF",L"WBMP",L"PSD",L"CUT",L"XBM",L"XPM",L"DDS",L"GIF",L"HDR",L"FAXG3"
28-
,L"SGI",L"EXR",L"J2K",L"JP2",L"PFM",L"PICT",L"RAW",L"WEBP",L"JXR",L"CUR"
26+
,{ LLUTILS_TEXT("BMP"),LLUTILS_TEXT("ICO"),LLUTILS_TEXT("JNG"),LLUTILS_TEXT("KOALA"),LLUTILS_TEXT("LBM"),LLUTILS_TEXT("IFF"),LLUTILS_TEXT("MNG"),LLUTILS_TEXT("PBM"),LLUTILS_TEXT("PBMRAW"),LLUTILS_TEXT("PCD"),LLUTILS_TEXT("PGM"),LLUTILS_TEXT("PGMRAW")
27+
,LLUTILS_TEXT("PPM"),LLUTILS_TEXT("PPMRAW"),LLUTILS_TEXT("RAS"),LLUTILS_TEXT("TGA"),LLUTILS_TEXT("WBMP"),LLUTILS_TEXT("PSD"),LLUTILS_TEXT("CUT"),LLUTILS_TEXT("XBM"),LLUTILS_TEXT("XPM"),LLUTILS_TEXT("DDS"),LLUTILS_TEXT("GIF")
28+
,LLUTILS_TEXT("HDR"),LLUTILS_TEXT("FAXG3"),LLUTILS_TEXT("SGI"),LLUTILS_TEXT("PFM"),LLUTILS_TEXT("PICT"),LLUTILS_TEXT("JXR"),LLUTILS_TEXT("CUR")
2929
}
3030
}
3131
}
@@ -49,10 +49,10 @@ namespace IMCodec
4949
if (freeImageHandle && FreeImage_FlipVertical(freeImageHandle))
5050
{
5151

52-
BITMAPINFO* imageInfo = FreeImage_GetInfo(freeImageHandle);
53-
FREE_IMAGE_TYPE TexelFormat = FreeImage_GetImageType(freeImageHandle);
52+
FIBITMAPINFO* imageInfo = FreeImage_GetInfo(freeImageHandle);
53+
FREE_IMAGE_TYPE freeImageType = FreeImage_GetImageType(freeImageHandle);
5454

55-
const BITMAPINFOHEADER& header = imageInfo->bmiHeader;
55+
const FIBITMAPINFOHEADER& header = imageInfo->bmiHeader;
5656

5757
auto imageItem = std::make_shared<ImageItem>();
5858
imageItem->itemType = ImageItemType::Image;
@@ -67,7 +67,7 @@ namespace IMCodec
6767
imageItem->data.Write(reinterpret_cast<std::byte*>(FreeImage_GetBits(freeImageHandle)), 0, imageSizeInMemory);
6868

6969

70-
switch (TexelFormat)
70+
switch (freeImageType)
7171
{
7272
case FIT_BITMAP:
7373
{
@@ -120,4 +120,4 @@ namespace IMCodec
120120
return result;
121121
}
122122
};
123-
}
123+
}

External/FreeImageRe

Submodule FreeImageRe added at a515dc4

0 commit comments

Comments
 (0)