diff options
| author | Pietro Gagliardi <[email protected]> | 2014-08-21 13:01:50 -0400 |
|---|---|---|
| committer | Pietro Gagliardi <[email protected]> | 2014-08-21 13:01:50 -0400 |
| commit | 3a16648b83748c2b771cbd17b6b120318aeede20 (patch) | |
| tree | 0dafc1fe86bc6ff5a5982e804a07221948772155 /redo/area_windows.go | |
| parent | 5ddef4113332035429ac54b5ba62f4539eb20da0 (diff) | |
Implemented Area.Repaint() on Windows.
Diffstat (limited to 'redo/area_windows.go')
| -rw-r--r-- | redo/area_windows.go | 17 |
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) } |
