diff --git a/dlanguilib.visualdproj b/dlanguilib.visualdproj
index 5e780b00..3363aac3 100644
--- a/dlanguilib.visualdproj
+++ b/dlanguilib.visualdproj
@@ -66,7 +66,7 @@
0
0
- Unicode USE_SDL
+ Unicode USE_SDL USE_OPENGL
0
0
1
diff --git a/examples/example1/example1.visualdproj b/examples/example1/example1.visualdproj
index b04fc227..ab51d9aa 100644
--- a/examples/example1/example1.visualdproj
+++ b/examples/example1/example1.visualdproj
@@ -66,7 +66,7 @@
0
0
- Unicode USE_SDL
+ Unicode USE_SDL USE_OPENGL
0
3
0
diff --git a/examples/example1/src/main.d b/examples/example1/src/main.d
index 58fd8931..ee9c5c37 100644
--- a/examples/example1/src/main.d
+++ b/examples/example1/src/main.d
@@ -115,6 +115,8 @@ extern (C) int UIAppMain(string[] args) {
// load theme from file "theme_default.xml"
Platform.instance.uiTheme = "theme_default";
+ //drawableCache.get("tx_fabric.tiled");
+
// create window
Window window = Platform.instance.createWindow("My Window", null);
diff --git a/src/dlangui/graphics/images.d b/src/dlangui/graphics/images.d
index a0e36be8..7eb7fd51 100644
--- a/src/dlangui/graphics/images.d
+++ b/src/dlangui/graphics/images.d
@@ -112,6 +112,7 @@ static if (USE_FREEIMAGE) {
//get the image width and height, and size per pixel
int width = FreeImage_GetWidth(dib);
int height = FreeImage_GetHeight(dib);
+ int stride = FreeImage_GetLine(dib);
int bpp = FreeImage_GetBPP(dib);
int pixelSize = (bpp + 7)/8;
FREE_IMAGE_COLOR_TYPE colorType = FreeImage_GetColorType(dib);
@@ -125,7 +126,7 @@ static if (USE_FREEIMAGE) {
transparencyCount = FreeImage_GetTransparencyCount(dib);
transparencyTable = FreeImage_GetTransparencyTable(dib);
}
- int size = width*height*pixelSize;
+ //int size = stride*height;
ColorDrawBuf res = new ColorDrawBuf(width, height);
@@ -135,7 +136,7 @@ static if (USE_FREEIMAGE) {
uint r, g, b, a;
for( int i = 0, ii = height-1; i < height ; ++i, --ii ) {
dst = res.scanLine(i);
- src = data + (ii * width) * pixelSize;
+ src = data + ii * stride;
for( int j = 0; j < width; ++j, ++dst, src += pixelSize ) {
if (colorType == FIC_PALETTE) {
ubyte index = src[0];
diff --git a/src/dlangui/graphics/resources.d b/src/dlangui/graphics/resources.d
index fe6ed560..a89a36b2 100644
--- a/src/dlangui/graphics/resources.d
+++ b/src/dlangui/graphics/resources.d
@@ -297,8 +297,22 @@ class ImageDrawable : Drawable {
tiley0 %= imgdy;
if (tiley0 < 0)
tiley0 += imgdy;
-
- buf.drawRescaled(rc, _image.get, Rect(0, 0, _image.width, _image.height));
+ int xx0 = rc.left;
+ int yy0 = rc.top;
+ if (tilex0)
+ xx0 -= imgdx - tilex0;
+ if (tiley0)
+ yy0 -= imgdy - tiley0;
+ for (int yy = yy0; yy < rc.bottom; yy += imgdy) {
+ for (int xx = xx0; xx < rc.right; xx += imgdx) {
+ Rect dst = Rect(xx, yy, xx + imgdx, yy + imgdy);
+ Rect src = Rect(0, 0, imgdx, imgdy);
+ if (dst.intersects(rc))
+ buf.drawFragment(dst.left, dst.top, _image.get, src);
+ }
+ }
+ buf.drawImage(rc.left + 30, rc.top + 30, _image);
+ buf.drawFrame(Rect(rc.left + 30, rc.top + 30, rc.left + imgdx + 30, rc.top + imgdy + 30), 0x80800000, Rect(2,2,2,2));
} else {
// rescaled or normal
if (rc.width != _image.width || rc.height != _image.height)