diff options
| author | trustable-code <krauter.simon@arcor.de> | 2020-02-09 19:18:53 +0100 |
|---|---|---|
| committer | trustable-code <krauter.simon@arcor.de> | 2020-02-09 19:18:53 +0100 |
| commit | 0aa3a6ff714e19d6fa102d4ad9fccd2062785fdd (patch) | |
| tree | b87a97d6d362449cd89a7cda0e05cac981fb0cd9 /src/nigui/private/windows | |
| parent | 7d0bcd12dd14661737023f324840e39c77f961ad (diff) | |
| download | NiGui-0aa3a6ff714e19d6fa102d4ad9fccd2062785fdd.tar.gz NiGui-0aa3a6ff714e19d6fa102d4ad9fccd2062785fdd.zip | |
Add support for different interpolation modes for drawImage()
Diffstat (limited to 'src/nigui/private/windows')
| -rwxr-xr-x | src/nigui/private/windows/platform_impl.nim | 11 | ||||
| -rwxr-xr-x | src/nigui/private/windows/windows.nim | 4 |
2 files changed, 15 insertions, 0 deletions
diff --git a/src/nigui/private/windows/platform_impl.nim b/src/nigui/private/windows/platform_impl.nim index bdba314..4c6b8d5 100755 --- a/src/nigui/private/windows/platform_impl.nim +++ b/src/nigui/private/windows/platform_impl.nim @@ -748,6 +748,17 @@ method getTextLineWidth(canvas: CanvasImpl, text: string): int = canvas.pGetText method getTextLineHeight(canvas: CanvasImpl): int = canvas.pGetTextSize("a").cy +method `interpolationMode=`(canvas: CanvasImpl, mode: InterpolationMode) = + procCall canvas.Canvas.`interpolationMode=`(mode) + if canvas.fGraphics == nil: + raiseError("Canvas is not in drawing state.") + let nativeMode = + case mode: + of InterpolationMode_Default: windows.InterpolationMode_Default + of InterpolationMode_NearestNeighbor: windows.InterpolationMode_NearestNeighbor + of InterpolationMode_Bilinear: windows.InterpolationMode_Bilinear + pCheckGdiplusStatus(GdipSetInterpolationMode(canvas.fGraphics, nativeMode.int32)) + # ---------------------------------------------------------------------------------------- # Image diff --git a/src/nigui/private/windows/windows.nim b/src/nigui/private/windows/windows.nim index e7e1be9..6ab983e 100755 --- a/src/nigui/private/windows/windows.nim +++ b/src/nigui/private/windows/windows.nim @@ -75,6 +75,9 @@ const ICON_BIG* = 1 IDC_ARROW* = 32512 INVALID_HANDLE_VALUE* = cast[pointer](-1) + InterpolationMode_Default* = 0 + InterpolationMode_Bilinear* = 3 + InterpolationMode_NearestNeighbor* = 5 IMAGE_BITMAP* = 0 IMAGE_ICON* = 1 # LR_LOADFROMFILE* = 16 @@ -542,6 +545,7 @@ proc GdipDeleteFontFamily*(fontFamily: pointer): int32 {.importc, libGdiplus.} proc GdipBitmapLockBits*(bitmap: pointer, rect: var Rect, flags: int32, format: int32, lockedBitmapData: var BitmapData): int32 {.importc, libGdiplus.} proc GdipBitmapUnlockBits*(bitmap: pointer, lockedBitmapData: var BitmapData): int32 {.importc, libGdiplus.} proc GdipSetTextRenderingHint*(graphics: pointer, mode: int32): int32 {.importc, libGdiplus.} +proc GdipSetInterpolationMode*(graphics: pointer, interpolationMode: int32): int32 {.importc, libGdiplus.} # ---------------------------------------------------------------------------------------- |
