summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authortrustable-code <krauter.simon@arcor.de>2018-12-06 19:16:06 +0100
committertrustable-code <krauter.simon@arcor.de>2018-12-06 19:16:06 +0100
commitd5b65cdbe3aba910badc1adf2358447c4ee0e0c7 (patch)
tree740e70a57b74337c10383bd30b217fd397007975 /src
parent7b1941533fbd141b4f36149d729da94c555f38d6 (diff)
downloadNiGui-d5b65cdbe3aba910badc1adf2358447c4ee0e0c7.tar.gz
NiGui-d5b65cdbe3aba910badc1adf2358447c4ee0e0c7.zip
Add saveToBitmapFile() method
Diffstat (limited to 'src')
-rwxr-xr-xsrc/nigui.nim2
-rwxr-xr-xsrc/nigui/private/gtk3/gtk3.nim1
-rwxr-xr-xsrc/nigui/private/gtk3/platform_impl.nim9
-rwxr-xr-xsrc/nigui/private/windows/platform_impl.nim9
4 files changed, 20 insertions, 1 deletions
diff --git a/src/nigui.nim b/src/nigui.nim
index 55bb1ae..500eb89 100755
--- a/src/nigui.nim
+++ b/src/nigui.nim
@@ -482,6 +482,8 @@ method resize*(image: Image, width, height: int)
method loadFromFile*(image: Image, filePath: string)
+method saveToBitmapFile*(image: Image, filePath: string)
+
method saveToPngFile*(image: Image, filePath: string)
method saveToJpegFile*(image: Image, filePath: string, quality = 80)
diff --git a/src/nigui/private/gtk3/gtk3.nim b/src/nigui/private/gtk3/gtk3.nim
index 32d052f..d4d1c8e 100755
--- a/src/nigui/private/gtk3/gtk3.nim
+++ b/src/nigui/private/gtk3/gtk3.nim
@@ -481,6 +481,7 @@ proc pango_layout_set_font_description*(layout, desc: pointer) {.importc: "pango
proc pango_font_description_new*(): pointer {.importc: "pango_font_description_new", libgtk3.}
proc pango_font_description_set_family*(desc: pointer, family: cstring) {.importc: "pango_font_description_set_family", libgtk3.}
proc pango_font_description_set_size*(desc: pointer, size: cint) {.importc: "pango_font_description_set_size", libgtk3.}
+proc pango_font_description_set_weight*(desc: pointer, size: cint) {.importc: "pango_font_description_set_weight", libgtk3.}
# proc pango_font_description_get_size*(desc: pointer): cint {.importc: "pango_font_description_get_size", libgtk3.}
# proc pango_layout_set_markup*(layout: pointer, markup: cstring, length: cint) {.importc: "pango_layout_set_markup", libgtk3.}
# proc pango_layout_new*(context: pointer): pointer {.importc: "pango_layout_new", libgtk3.}
diff --git a/src/nigui/private/gtk3/platform_impl.nim b/src/nigui/private/gtk3/platform_impl.nim
index a7c2cc0..239ce59 100755
--- a/src/nigui/private/gtk3/platform_impl.nim
+++ b/src/nigui/private/gtk3/platform_impl.nim
@@ -590,6 +590,14 @@ method loadFromFile(image: Image, filePath: string) =
image.canvas.fWidth = cairo_image_surface_get_width(canvas.fSurface)
image.canvas.fHeight = cairo_image_surface_get_height(canvas.fSurface)
+method saveToBitmapFile(image: Image, filePath: string) =
+ let canvas = cast[CanvasImpl](image.fCanvas)
+ var pixbuf = gdk_pixbuf_get_from_surface(canvas.fSurface, 0, 0, image.width.cint, image.height.cint)
+ defer: g_object_unref(pixbuf)
+ var error: ptr GError
+ if not gdk_pixbuf_save(pixbuf, filePath, "bmp", error.addr, nil, nil, nil):
+ pRaiseGError(error)
+
method saveToPngFile(image: Image, filePath: string) =
let canvas = cast[CanvasImpl](image.fCanvas)
var pixbuf = gdk_pixbuf_get_from_surface(canvas.fSurface, 0, 0, image.width.cint, image.height.cint)
@@ -598,7 +606,6 @@ method saveToPngFile(image: Image, filePath: string) =
if not gdk_pixbuf_save(pixbuf, filePath, "png", error.addr, nil, nil, nil):
pRaiseGError(error)
-
method saveToJpegFile(image: Image, filePath: string, quality = 80) =
let canvas = cast[CanvasImpl](image.fCanvas)
var pixbuf = gdk_pixbuf_get_from_surface(canvas.fSurface, 0, 0, image.width.cint, image.height.cint)
diff --git a/src/nigui/private/windows/platform_impl.nim b/src/nigui/private/windows/platform_impl.nim
index cfacd77..4b60e1e 100755
--- a/src/nigui/private/windows/platform_impl.nim
+++ b/src/nigui/private/windows/platform_impl.nim
@@ -712,6 +712,15 @@ method loadFromFile(image: Image, filePath: string) =
image.canvas.fWidth = width
image.canvas.fHeight = height
+method saveToBitmapFile(image: Image, filePath: string) =
+ let canvas = cast[CanvasImpl](image.canvas)
+ var clsidEncoder: GUID
+ clsidEncoder.Data1 = 0x557cf400
+ clsidEncoder.Data2 = 0x11d31a04
+ clsidEncoder.Data3 = 0x0000739a
+ clsidEncoder.Data4 = 0x2ef31ef8
+ pCheckGdiplusStatus(GdipSaveImageToFile(canvas.fBitmap, filePath.pUtf8ToUtf16(), clsidEncoder.addr, nil), false)
+
method saveToPngFile(image: Image, filePath: string) =
let canvas = cast[CanvasImpl](image.canvas)
var clsidEncoder: GUID