first try at rubberband feedback
This commit is contained in:
parent
0dce80f1e3
commit
fee3619ee1
|
@ -23,8 +23,45 @@ def point_in_rect(rect, x, y):
|
||||||
return (x >= rect[0]) and (x < rect[2]) and (y >= rect[1]) and (y < rect[3])
|
return (x >= rect[0]) and (x < rect[2]) and (y >= rect[1]) and (y < rect[3])
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# --- Graphic feedback --
|
||||||
|
|
||||||
|
origin_x = 0
|
||||||
|
origin_y = 0
|
||||||
|
current_x = 0
|
||||||
|
current_y = 0
|
||||||
|
|
||||||
|
def rubberband_rectangle(x, y, down, up)
|
||||||
|
hdc.text_color = YELLOW
|
||||||
|
hdc.rop2 = upiwin.R2_XORPEN
|
||||||
|
if not down:
|
||||||
|
hdc.rectangle(min(origin_x, current_x), min(origin_y, current_y), max(origin_x, current_x), max(origin_y, current_y))
|
||||||
|
current_x = x;
|
||||||
|
current_y = y;
|
||||||
|
if not up:
|
||||||
|
hdc.rectangle(min(origin_x, current_x), min(origin_y, current_y), max(origin_x, current_x), max(origin_y, current_y))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# --- Message handlers ---
|
# --- Message handlers ---
|
||||||
|
|
||||||
|
def on_touchdown(x, y):
|
||||||
|
if point_in_rect(drawing_rect, x, y):
|
||||||
|
origin_x = x;
|
||||||
|
origin_y = y;
|
||||||
|
rubberband_rectangle(x, y, True, False)
|
||||||
|
|
||||||
|
def on_touchmove(x, y):
|
||||||
|
if point_in_rect(drawing_rect, x, y):
|
||||||
|
rubberband_rectangle(x, y, False, False)
|
||||||
|
|
||||||
|
def on_touchup(x, y):
|
||||||
|
if point_in_rect(drawing_rect, x, y):
|
||||||
|
rubberband_rectangle(x, y, False, True)
|
||||||
|
|
||||||
def on_touchclick(x, y):
|
def on_touchclick(x, y):
|
||||||
print("Click at {0},{1}".format(x, y))
|
print("Click at {0},{1}".format(x, y))
|
||||||
if point_in_rect(cmd1_rect, x, y):
|
if point_in_rect(cmd1_rect, x, y):
|
||||||
|
@ -52,6 +89,12 @@ hdc.rectangle(cmd4_rect[0], cmd4_rect[1], cmd4_rect[2], cmd4_rect[3])
|
||||||
# Main message loop
|
# Main message loop
|
||||||
msg = {}
|
msg = {}
|
||||||
while upiwin.get_message(msg):
|
while upiwin.get_message(msg):
|
||||||
|
if msg['message'] == upiwin.WM_TOUCHDOWN:
|
||||||
|
on_touchdown(msg['attrs'][0], msg['attrs'][1])
|
||||||
|
if msg['message'] == upiwin.WM_TOUCHMOVE:
|
||||||
|
on_touchmove(msg['attrs'][0], msg['attrs'][1])
|
||||||
|
if msg['message'] == upiwin.WM_TOUCHUP:
|
||||||
|
on_touchup(msg['attrs'][0], msg['attrs'][1])
|
||||||
if msg['message'] == upiwin.WM_TOUCHCLICK:
|
if msg['message'] == upiwin.WM_TOUCHCLICK:
|
||||||
on_touchclick(msg['attrs'][0], msg['attrs'][1])
|
on_touchclick(msg['attrs'][0], msg['attrs'][1])
|
||||||
elif msg['message'] == upiwin.WM_HWBUTTONCLICK:
|
elif msg['message'] == upiwin.WM_HWBUTTONCLICK:
|
||||||
|
|
Loading…
Reference in New Issue
Block a user