diff --git a/dlanguilib.visualdproj b/dlanguilib.visualdproj index 695e44a7..6f603064 100644 --- a/dlanguilib.visualdproj +++ b/dlanguilib.visualdproj @@ -47,7 +47,7 @@ 0 0 $(DMDInstallDir)windows\bin\dmd.exe - 3rdparty ../DerelictGL3/source ../DerelictUtil/source ../DerelictFT/source ../de_image/source/interfaces ../de_image/source/png + 3rdparty ../DerelictGL3/source ../DerelictUtil/source ../DerelictFT/source ../de_image/source/interfaces ../de_image/source/png $(SolutionDir)/../dlib $(ConfigurationName) $(OutDir) @@ -250,6 +250,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dub.json b/dub.json index caa4d08d..e4afc38c 100644 --- a/dub.json +++ b/dub.json @@ -21,10 +21,6 @@ "copyFiles": ["res"], - "copyFiles-windows": [ - "lib/FreeImage.dll" - ], - "sourceFiles": [ "project.ddoc" ], @@ -94,9 +90,9 @@ "dependencies": { "derelict-sdl2": "~master", "derelict-gl3": "~master", - "derelict-fi": "~master", "derelict-ft": "~master", "de_image:png": ">=0.2.3", + "dlib": ">=0.4.0" }, "-ddoxFilterArgs": ["--unittest-examples", "--min-protection=Protected", "--ex", "win32.", "--ex", "src.dlangui"] }, diff --git a/examples/example1/example1.visualdproj b/examples/example1/example1.visualdproj index 84d680e3..4d266fe4 100644 --- a/examples/example1/example1.visualdproj +++ b/examples/example1/example1.visualdproj @@ -47,7 +47,7 @@ 0 0 $(DMDInstallDir)windows\bin\dmd.exe - $(SolutionDir)/src $(SolutionDir)/3rdparty $(SolutionDir)/3rdparty/libpng/source $(SolutionDir)/../DerelictGL3/source $(SolutionDir)/../DerelictUtil/source $(SolutionDir)/../DerelictFT/source $(SolutionDir)/../DerelictSDL2/source $(SolutionDir)/../de_image/source/interfaces $(SolutionDir)/../de_image/source/png + $(SolutionDir)/src $(SolutionDir)/3rdparty $(SolutionDir)/3rdparty/libpng/source $(SolutionDir)/../DerelictGL3/source $(SolutionDir)/../DerelictUtil/source $(SolutionDir)/../DerelictFT/source $(SolutionDir)/../DerelictSDL2/source $(SolutionDir)/../de_image/source/interfaces $(SolutionDir)/../de_image/source/png $(SolutionDir)/../dlib $(ConfigurationName) $(OutDir) diff --git a/examples/helloworld/helloworld.visualdproj b/examples/helloworld/helloworld.visualdproj index 22d389df..f42555ad 100644 --- a/examples/helloworld/helloworld.visualdproj +++ b/examples/helloworld/helloworld.visualdproj @@ -47,7 +47,7 @@ 0 0 $(DMDInstallDir)windows\bin\dmd.exe - $(SolutionDir)/src $(SolutionDir)/3rdparty $(SolutionDir)/3rdparty/libpng/source $(SolutionDir)/../DerelictGL3/source $(SolutionDir)/../DerelictUtil/source $(SolutionDir)/../DerelictFT/source $(SolutionDir)/../DerelictSDL2/source $(SolutionDir)/../de_image/source/interfaces $(SolutionDir)/../de_image/source/png + $(SolutionDir)/src $(SolutionDir)/3rdparty $(SolutionDir)/3rdparty/libpng/source $(SolutionDir)/../DerelictGL3/source $(SolutionDir)/../DerelictUtil/source $(SolutionDir)/../DerelictFT/source $(SolutionDir)/../DerelictSDL2/source $(SolutionDir)/../de_image/source/interfaces $(SolutionDir)/../de_image/source/png $(SolutionDir)/../dlib $(ConfigurationName) $(OutDir) diff --git a/examples/tetris/tetris.visualdproj b/examples/tetris/tetris.visualdproj index d369a7af..3b5addfc 100644 --- a/examples/tetris/tetris.visualdproj +++ b/examples/tetris/tetris.visualdproj @@ -47,7 +47,7 @@ 0 0 $(DMDInstallDir)windows\bin\dmd.exe - $(SolutionDir)/src $(SolutionDir)/3rdparty $(SolutionDir)/3rdparty/libpng/source $(SolutionDir)/../DerelictGL3/source $(SolutionDir)/../DerelictUtil/source $(SolutionDir)/../DerelictFT/source $(SolutionDir)/../DerelictSDL2/source $(SolutionDir)/../de_image/source/interfaces $(SolutionDir)/../de_image/source/png + $(SolutionDir)/src $(SolutionDir)/3rdparty $(SolutionDir)/3rdparty/libpng/source $(SolutionDir)/../DerelictGL3/source $(SolutionDir)/../DerelictUtil/source $(SolutionDir)/../DerelictFT/source $(SolutionDir)/../DerelictSDL2/source $(SolutionDir)/../de_image/source/interfaces $(SolutionDir)/../de_image/source/png $(SolutionDir)/../dlib $(ConfigurationName) $(OutDir) diff --git a/lib/FreeImage.dll b/lib/FreeImage.dll deleted file mode 100644 index 3ce0a708..00000000 Binary files a/lib/FreeImage.dll and /dev/null differ diff --git a/src/dlangui/graphics/images.d b/src/dlangui/graphics/images.d index 3348300a..2df1ca48 100644 --- a/src/dlangui/graphics/images.d +++ b/src/dlangui/graphics/images.d @@ -21,17 +21,21 @@ Authors: Vadim Lopatin, coolreader.org@gmail.com module dlangui.graphics.images; //immutable bool USE_FREEIMAGE = true; + //version = USE_FREEIMAGE; - -version = USE_DEIMAGE; - - +//version = USE_DEIMAGE; +version = USE_DLIBIMAGE; version (USE_DEIMAGE) { import devisualization.image; import devisualization.image.png; } +version (USE_DLIBIMAGE) { + import dlib.image.io.io; + import dlib.image.image; +} + import dlangui.core.logger; import dlangui.core.types; import dlangui.graphics.drawbuf; @@ -41,7 +45,22 @@ import std.conv : to; /// load and decode image from file to ColorDrawBuf, returns null if loading or decoding is failed ColorDrawBuf loadImage(string filename) { Log.d("Loading image from file " ~ filename); - version (USE_DEIMAGE) { + version (USE_DLIBIMAGE) { + SuperImage image = dlib.image.io.io.loadImage(filename); + if (!image) + return null; + int w = image.width; + int h = image.height; + ColorDrawBuf buf = new ColorDrawBuf(w, h); + for (int y = 0; y < h; y++) { + uint * dstLine = buf.scanLine(y); + for (int x = 0; x < w; x++) { + auto pixel = image[x, h - 1 - y].convert(8); + dstLine[x] = makeRGBA(pixel.r, pixel.g, pixel.b, 255 - pixel.a); + } + } + return buf; + } else version (USE_DEIMAGE) { try { Image image = imageFromFile(filename); int w = cast(int)image.width;