| import string |
| |
| from socket import * |
| from gl import * |
| from GL import * |
| from DEVICE import * |
| from time import millisleep, millitimer |
| |
| PORT = 5555 |
| |
| PF = 2 # packfactor |
| HS = 40 # Header size |
| |
| def testimage(): |
| RGBcolor(0, 0, 0) |
| clear() |
| RGBcolor(0, 255, 0) |
| cmov2i(10, 10) |
| charstr('Waiting...') |
| |
| def reshape(): |
| reshapeviewport() |
| w, h = getsize() |
| ortho2(0, w, 0, h) |
| testimage() |
| return w, h |
| |
| def main(): |
| s = socket(AF_INET, SOCK_DGRAM) |
| s.bind('', PORT) |
| |
| foreground() |
| wid = winopen('tv') |
| RGBmode() |
| gconfig() |
| qdevice(ESCKEY) |
| |
| oldw, oldh = getsize() |
| ortho2(0, oldw, 0, oldh) |
| testimage() |
| |
| t1 = millitimer() |
| |
| while 1: |
| if qtest(): |
| dev, val = qread() |
| if dev == ESCKEY: |
| winclose(wid) |
| return |
| elif dev == REDRAW: |
| oldw, oldh = reshape() |
| elif s.avail(): |
| data = s.recv(17000) |
| header = string.strip(data[:HS]) |
| w, h, pf, x1, y1, x2, y2 = eval(header) |
| if (w, h) <> (oldw, oldh): |
| x, y = getorigin() |
| x, y = x-1, y+21 # TWM correction |
| winposition(x, x+w-1, y+oldh-h, y+oldh-1) |
| oldw, oldh = reshape() |
| data2 = data[HS:] |
| dx = (x2-x1+1)/pf |
| dy = (y2-y1+1)/pf |
| data3 = unpackrect(dx, dy, 1, data2) |
| rectzoom(pf, pf) |
| lrectwrite(x1, y1, x1+dx-1, y1+dy-1, data3) |
| t1 = millitimer() |
| else: |
| t2 = millitimer() |
| if t2-t1 >= 5000: |
| testimage() |
| t1 = t2 |
| else: |
| millisleep(10) |
| |
| winclose(wid) |
| return data |
| |
| main() |