Added Area.Repaint() and implemented it on GTK+. Untested as of yet.

This commit is contained in:
Pietro Gagliardi 2014-08-21 11:43:37 -04:00
parent c9f8955758
commit 5ddef41133
2 changed files with 13 additions and 0 deletions

View File

@ -37,6 +37,11 @@ type Area interface {
// It panics if width or height is zero or negative.
SetSize(width int, height int)
// Repaint marks the given rectangle of the Area as needing to be redrawn.
// The given rectangle is clipped to the Area's size.
// If, after clipping, the rectangle is empty, Repaint does nothing.
Repaint(r image.Rectangle)
// RepaintAll marks the entirety of the Area as needing to be redrawn.
RepaintAll()
}

View File

@ -70,6 +70,14 @@ func (a *area) SetSize(width, height int) {
C.gtk_widget_set_size_request(a._widget, C.gint(a.width), C.gint(a.height))
}
func (a *area) Repaint(r image.Rectangle) {
r = image.Rect(0, 0, a.width, a.height).Intersect(r)
if r.Empty() {
return
}
C.gtk_widget_queue_draw_area(a._widget, C.gint(r.Min.X), C.gint(r.Max.Y), C.gint(r.Dx()), C.gint(r.Dy()))
}
func (a *area) RepaintAll() {
C.gtk_widget_queue_draw(a._widget)
}