def painter(vp, frame): if(is_list(vp[0])): def get_depth(x,y,dir): global spread nonlocal pixels for c in range(spread): ox = round(x+dir*(-0.3*spread+c)) if(ox>=0 and ox<viewport_size): if type(pixels[ox,y]) is int: #this is a workaround for black/white pictures. curr = pixels[ox,y] else: curr = pixels[ox, y][0] d = abs(curr - 255*c/spread) if(d<=tolerance*255): return curr return 255 def ana_out_loop(port, count): nonlocal img size = graphics.get_image_size(img) MAX_X = size[0] MAX_Y = size[1] tsize = graphics.get_image_size(port) TMAX_X = tsize[0] TMAX_Y = tsize[1] tgtpixels = graphics.get_pixels(port) inv_transform = inverse_transform_posn(frame) # for y in range(MAX_Y): # for x in range(MAX_X): # col = get_depth(x,y,count) # if(col>255*limit): # col = 999 # else: # col = frame.z1 + (frame.z2 - frame.z1) * col # if col<=255: # transposn = transform(Posn(x,y)) # if(transposn.x>=0 and transposn.y>=0 and transposn.x<TMAX_X and transposn.y<TMAX_Y): # tgtpixels[transposn.x, transposn.y] = (col,col,col) #sorry, no supersampling. Takes long enough as it is. for y in range(TMAX_Y): for x in range(TMAX_X): orig = inv_transform(Posn(x,y)) rx = round(orig.x) ry = round(orig.y) if (rx>=0 and ry>=0 and rx<MAX_X and ry<MAX_Y): #within bounds col = get_depth(rx, ry, count) if(col>255*limit): col = 999 else: col = round(frame.z1*255 + (frame.z2 - frame.z1) * col) if(col<=255): #tgtpixels[x,y] = (col, col, col) tgtpixels[x,y] = (min(col, tgtpixels[x,y][0]),min(col, tgtpixels[x,y][1]),min(col, tgtpixels[x,y][2])) graphics.pixels_to_canvas(port) pixels = graphics.get_pixels(img) for count, port in enumerate(vp): ana_out_loop(port, ((2*count)/(len(vp)-1) - 1)) else: transform = inverse_transform_posn(frame) graphics.blit_pixels(vp, transform, graphics.get_pixels(img), graphics.get_image_size(vp), graphics.get_image_size(img), True, frame.z1, frame.z2) #block level image transfer
def ana_out_loop(port, count): nonlocal img size = graphics.get_image_size(img) MAX_X = size[0] MAX_Y = size[1] tsize = graphics.get_image_size(port) TMAX_X = tsize[0] TMAX_Y = tsize[1] tgtpixels = graphics.get_pixels(port) inv_transform = inverse_transform_posn(frame) # for y in range(MAX_Y): # for x in range(MAX_X): # col = get_depth(x,y,count) # if(col>255*limit): # col = 999 # else: # col = frame.z1 + (frame.z2 - frame.z1) * col # if col<=255: # transposn = transform(Posn(x,y)) # if(transposn.x>=0 and transposn.y>=0 and transposn.x<TMAX_X and transposn.y<TMAX_Y): # tgtpixels[transposn.x, transposn.y] = (col,col,col) #sorry, no supersampling. Takes long enough as it is. for y in range(TMAX_Y): for x in range(TMAX_X): orig = inv_transform(Posn(x, y)) rx = round(orig.x) ry = round(orig.y) if (rx >= 0 and ry >= 0 and rx < MAX_X and ry < MAX_Y): #within bounds col = get_depth(rx, ry, count) if (col > 255 * limit): col = 999 else: col = round(frame.z1 * 255 + (frame.z2 - frame.z1) * col) if (col <= 255): #tgtpixels[x,y] = (col, col, col) tgtpixels[x, y] = (min(col, tgtpixels[x, y][0]), min(col, tgtpixels[x, y][1]), min(col, tgtpixels[x, y][2])) graphics.pixels_to_canvas(port)
def ana_out_loop(port, count): nonlocal img size = graphics.get_image_size(img) MAX_X = size[0] MAX_Y = size[1] tsize = graphics.get_image_size(port) TMAX_X = tsize[0] TMAX_Y = tsize[1] tgtpixels = graphics.get_pixels(port) inv_transform = inverse_transform_posn(frame) # for y in range(MAX_Y): # for x in range(MAX_X): # col = get_depth(x,y,count) # if(col>255*limit): # col = 999 # else: # col = frame.z1 + (frame.z2 - frame.z1) * col # if col<=255: # transposn = transform(Posn(x,y)) # if(transposn.x>=0 and transposn.y>=0 and transposn.x<TMAX_X and transposn.y<TMAX_Y): # tgtpixels[transposn.x, transposn.y] = (col,col,col) #sorry, no supersampling. Takes long enough as it is. for y in range(TMAX_Y): for x in range(TMAX_X): orig = inv_transform(Posn(x,y)) rx = round(orig.x) ry = round(orig.y) if (rx>=0 and ry>=0 and rx<MAX_X and ry<MAX_Y): #within bounds col = get_depth(rx, ry, count) if(col>255*limit): col = 999 else: col = round(frame.z1*255 + (frame.z2 - frame.z1) * col) if(col<=255): #tgtpixels[x,y] = (col, col, col) tgtpixels[x,y] = (min(col, tgtpixels[x,y][0]),min(col, tgtpixels[x,y][1]),min(col, tgtpixels[x,y][2])) graphics.pixels_to_canvas(port)
def painter(vp, frame): def ana_out_loop(port, count): inverse_transform = inverse_transform_posn(frame) tgtpixels = graphics.get_pixels(port) size = graphics.get_image_size(port) MAX_X = size[0] MAX_Y = size[1] tgtpixels = graphics.get_pixels(port) for y in range(MAX_Y): for x in range(MAX_X): posn = inverse_transform(Posn(x, y)) col = get_depth(posn.x, posn.y, count, frame) if (col > 1): col = 1 col = round(col * 255) if (col < 255): #tgtpixels[x,y] = (col, col, col) tgtpixels[x, y] = (min(col, tgtpixels[x, y][0]), min(col, tgtpixels[x, y][1]), min(col, tgtpixels[x, y][2])) graphics.pixels_to_canvas(port) if (is_list(vp[0])): for count, port in enumerate(vp): ana_out_loop(port, ((2 * count) / (len(vp) - 1) - 1)) else: inverse_transform = inverse_transform_posn(frame) tgtpixels = graphics.get_pixels(vp) size = graphics.get_image_size(vp) MAX_X = size[0] MAX_Y = size[1] for y in range(MAX_Y): for x in range(MAX_X): posn = inverse_transform(Posn(x, y)) color = depth_fun(posn.x, posn.y) if (color != 1): color = frame.z1 + ((frame.z2 - frame.z1) * color) if (color > 1): color = 1 color = round(color * 255) if (color < 255 ): #assuming that white is the transparency color #tgtpixels[x,y] = (color, color, color) tgtpixels[x, y] = (min(color, tgtpixels[x, y][0]), min(color, tgtpixels[x, y][1]), min(color, tgtpixels[x, y][2])) graphics.pixels_to_canvas(vp)
def ana_out_loop(port, count): inverse_transform = inverse_transform_posn(frame) tgtpixels = graphics.get_pixels(port) size = graphics.get_image_size(port) MAX_X = size[0] MAX_Y = size[1] tgtpixels = graphics.get_pixels(port) for y in range(MAX_Y): for x in range(MAX_X): posn = inverse_transform(Posn(x,y)) col = get_depth(posn.x, posn.y, count, frame) if (col>1): col = 1 col = round(col*255) if(col<255): #tgtpixels[x,y] = (col, col, col) tgtpixels[x,y] = (min(col, tgtpixels[x,y][0]), min(col, tgtpixels[x,y][1]), min(col, tgtpixels[x,y][2])) graphics.pixels_to_canvas(port)
def painter(vp, frame): def ana_out_loop(port, count): inverse_transform = inverse_transform_posn(frame) tgtpixels = graphics.get_pixels(port) size = graphics.get_image_size(port) MAX_X = size[0] MAX_Y = size[1] tgtpixels = graphics.get_pixels(port) for y in range(MAX_Y): for x in range(MAX_X): posn = inverse_transform(Posn(x,y)) col = get_depth(posn.x, posn.y, count, frame) if (col>1): col = 1 col = round(col*255) if(col<255): #tgtpixels[x,y] = (col, col, col) tgtpixels[x,y] = (min(col, tgtpixels[x,y][0]), min(col, tgtpixels[x,y][1]), min(col, tgtpixels[x,y][2])) graphics.pixels_to_canvas(port) if(is_list(vp[0])): for count, port in enumerate(vp): ana_out_loop(port, ((2*count)/(len(vp)-1) - 1)) else: inverse_transform = inverse_transform_posn(frame) tgtpixels = graphics.get_pixels(vp) size = graphics.get_image_size(vp) MAX_X = size[0] MAX_Y = size[1] for y in range(MAX_Y): for x in range(MAX_X): posn = inverse_transform(Posn(x,y)) color = depth_fun(posn.x, posn.y) if(color != 1): color = frame.z1 + ((frame.z2 - frame.z1) * color) if (color>1): color = 1 color = round(color*255) if(color<255): #assuming that white is the transparency color #tgtpixels[x,y] = (color, color, color) tgtpixels[x,y] = (min(color, tgtpixels[x,y][0]), min(color, tgtpixels[x,y][1]), min(color, tgtpixels[x,y][2])) graphics.pixels_to_canvas(vp)