summaryrefslogtreecommitdiff
path: root/redo/area_windows.go
diff options
context:
space:
mode:
authorPietro Gagliardi <[email protected]>2014-08-21 13:01:50 -0400
committerPietro Gagliardi <[email protected]>2014-08-21 13:01:50 -0400
commit3a16648b83748c2b771cbd17b6b120318aeede20 (patch)
tree0dafc1fe86bc6ff5a5982e804a07221948772155 /redo/area_windows.go
parent5ddef4113332035429ac54b5ba62f4539eb20da0 (diff)
Implemented Area.Repaint() on Windows.
Diffstat (limited to 'redo/area_windows.go')
-rw-r--r--redo/area_windows.go17
1 files changed, 17 insertions, 0 deletions
diff --git a/redo/area_windows.go b/redo/area_windows.go
index 877f8b6..1ab3156 100644
--- a/redo/area_windows.go
+++ b/redo/area_windows.go
@@ -46,6 +46,23 @@ func (a *area) SetSize(width, height int) {
C.SendMessageW(a._hwnd, C.msgAreaSizeChanged, 0, 0)
}
+func (a *area) Repaint(r image.Rectangle) {
+ var hscroll, vscroll C.int
+ var rect C.RECT
+
+ C.SendMessageW(a._hwnd, C.msgAreaGetScroll, C.WPARAM(uintptr(unsafe.Pointer(&hscroll))), C.LPARAM(uintptr(unsafe.Pointer(&vscroll))))
+ r = r.Add(image.Pt(int(hscroll), int(vscroll))) // adjust by scroll position
+ r = image.Rect(0, 0, a.width, a.height).Intersect(r)
+ if r.Empty() {
+ return
+ }
+ rect.left = C.LONG(r.Min.X)
+ rect.top = C.LONG(r.Min.Y)
+ rect.right = C.LONG(r.Max.X)
+ rect.bottom = C.LONG(r.Max.Y)
+ C.SendMessageW(a._hwnd, C.msgAreaRepaint, 0, C.LPARAM(uintptr(unsafe.Pointer(&rect))))
+}
+
func (a *area) RepaintAll() {
C.SendMessageW(a._hwnd, C.msgAreaRepaintAll, 0, 0)
}