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;