diff options
| author | trustable-code <krauter.simon@arcor.de> | 2018-04-03 20:27:52 +0200 |
|---|---|---|
| committer | trustable-code <krauter.simon@arcor.de> | 2018-04-03 20:27:52 +0200 |
| commit | 8d7951569b69d747c68fd60ce2f6a63937b0a9f0 (patch) | |
| tree | aa518877141743f76ac5d98560dc83cf67933fed /src/nigui/private/gtk3/platform_impl.nim | |
| parent | b4c3624a1015b6552d8a267dd515181bc361e1b3 (diff) | |
| download | NiGui-8d7951569b69d747c68fd60ce2f6a63937b0a9f0.tar.gz NiGui-8d7951569b69d747c68fd60ce2f6a63937b0a9f0.zip | |
Add Image.beginPixelDataAccess() and endPixelDataAccess() for fast image manipulation
Diffstat (limited to 'src/nigui/private/gtk3/platform_impl.nim')
| -rwxr-xr-x | src/nigui/private/gtk3/platform_impl.nim | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/src/nigui/private/gtk3/platform_impl.nim b/src/nigui/private/gtk3/platform_impl.nim index 0d0c420..09db57c 100755 --- a/src/nigui/private/gtk3/platform_impl.nim +++ b/src/nigui/private/gtk3/platform_impl.nim @@ -468,10 +468,10 @@ method setPixel(canvas: Canvas, x, y: int, color: Color) = raiseError("Pixel is out of range.") cairo_surface_flush(canvasImpl.fSurface) let i = y * canvasImpl.fStride + x * 4 - canvasImpl.fData[i + 0] = color.blue.chr - canvasImpl.fData[i + 1] = color.green.chr - canvasImpl.fData[i + 2] = color.red.chr - canvasImpl.fData[i + 3] = 255.chr + canvasImpl.fData[i + 0] = color.blue + canvasImpl.fData[i + 1] = color.green + canvasImpl.fData[i + 2] = color.red + canvasImpl.fData[i + 3] = 255 cairo_surface_mark_dirty(canvasImpl.fSurface) method `fontFamily=`(canvas: CanvasImpl, fontFamily: string) = @@ -555,6 +555,14 @@ method saveToJpegFile(image: Image, filePath: string, quality = 80) = if not gdk_pixbuf_save(pixbuf, filePath, "jpeg", error.addr, "quality", $quality, nil): pRaiseGError(error) +method beginPixelDataAccess(image: Image): ptr UncheckedArray[byte] = + let canvas = cast[CanvasImpl](image.canvas) + result = canvas.fData + +method endPixelDataAccess(image: Image) = + let canvas = cast[CanvasImpl](image.canvas) + cairo_surface_mark_dirty(canvas.fSurface) + # ---------------------------------------------------------------------------------------- # Window |
