1
0
Fork 0
mirror of https://github.com/Orama-Interactive/Pixelorama.git synced 2025-02-21 21:13:14 +00:00

Cleaned adjust_hsv in Canvas.gd a bit

Removed duplicate code & made it faster for selections
This commit is contained in:
OverloadedOrama 2020-04-17 04:35:47 +03:00
parent a3b01873a2
commit 699dfbe091
2 changed files with 37 additions and 75 deletions

View file

@ -1012,84 +1012,48 @@ func blend_rect(bg : Image, brush : Image, src_rect : Rect2, dst : Vector2) -> v
bg.set_pixel(dst_x, dst_y, out_color) bg.set_pixel(dst_x, dst_y, out_color)
brush.unlock() brush.unlock()
func adjust_hsv(img: Image, id : int, delta : float)->void: func adjust_hsv(img: Image, id : int, delta : float) -> void:
var selection_only:bool = !Global.selected_pixels.empty() var selection_only : bool = !Global.selected_pixels.empty()
var layer:Image = img var layer : Image = img
layer.lock() layer.lock()
match id: match id:
#Hue 0: # Hue
0: for i in range(west_limit, east_limit):
for i in range(layer.get_width()): for j in range(north_limit, south_limit):
for j in range(layer.get_height()): var c: Color = layer.get_pixel(i,j)
if(selection_only and Global.selected_pixels.has(Vector2(i,j))): var hue = range_lerp(c.h,0,1,-180,180)
var c: Color = layer.get_pixel(i,j) hue = hue + delta
var hue = range_lerp(c.h,0,1,-180,180)
hue = hue + delta
while(hue >= 180): while(hue >= 180):
hue -= 360 hue -= 360
while(hue < -180): while(hue < -180):
hue += 360 hue += 360
c.h = range_lerp(hue,-180,180,0,1) c.h = range_lerp(hue,-180,180,0,1)
layer.set_pixel(i,j,c) layer.set_pixel(i,j,c)
elif(!selection_only):
var c: Color = layer.get_pixel(i,j)
var hue = range_lerp(c.h,0,1,-180,180)
hue = hue + delta
while(hue >= 180): 1: # Saturation
hue -= 360 for i in range(west_limit, east_limit):
while(hue < -180): for j in range(north_limit, south_limit):
hue += 360 var c: Color = layer.get_pixel(i,j)
c.h = range_lerp(hue,-180,180,0,1) var sat = c.s
layer.set_pixel(i,j,c) if delta > 0:
sat = range_lerp(delta,0,100,c.s,1)
elif delta < 0:
sat = range_lerp(delta,-100,0,0,c.s)
c.s = sat
layer.set_pixel(i,j,c)
#Saturation 2: # Value
1: for i in range(west_limit, east_limit):
for i in range(layer.get_width()): for j in range(north_limit, south_limit):
for j in range(layer.get_height()): var c: Color = layer.get_pixel(i,j)
if(selection_only and Global.selected_pixels.has(Vector2(i,j))): var val = c.v
var c: Color = layer.get_pixel(i,j) if delta > 0:
var sat = c.s val = range_lerp(delta,0,100,c.v,1)
if delta > 0: elif delta < 0:
sat = range_lerp(delta,0,100,c.s,1) val = range_lerp(delta,-100,0,0,c.v)
elif delta < 0:
sat = range_lerp(delta,-100,0,0,c.s)
c.s = sat
layer.set_pixel(i,j,c)
elif(!selection_only):
var c: Color = layer.get_pixel(i,j)
var sat = c.s
if delta > 0:
sat = range_lerp(delta,0,100,c.s,1)
elif delta < 0:
sat = range_lerp(delta,-100,0,0,c.s)
c.s = sat
layer.set_pixel(i,j,c)
#value c.v = val
2: layer.set_pixel(i,j,c)
for i in range(layer.get_width()):
for j in range(layer.get_height()):
if(selection_only and Global.selected_pixels.has(Vector2(i,j))):
var c: Color = layer.get_pixel(i,j)
var val = c.v
if delta > 0:
val = range_lerp(delta,0,100,c.v,1)
elif delta < 0:
val = range_lerp(delta,-100,0,0,c.v)
c.v = val
layer.set_pixel(i,j,c)
elif(!selection_only):
var c: Color = layer.get_pixel(i,j)
var val = c.v
if delta > 0:
val = range_lerp(delta,0,100,c.v,1)
elif delta < 0:
val = range_lerp(delta,-100,0,0,c.v)
c.v = val
layer.set_pixel(i,j,c)
layer.unlock() layer.unlock()
pass

View file

@ -40,10 +40,8 @@ func _on_PopupMenu_id_pressed(ID : int) -> void:
match ID: match ID:
0: # Remove Frame 0: # Remove Frame
remove_frame() remove_frame()
1: # Clone Frame 1: # Clone Frame
Global.animation_timeline._on_CopyFrame_pressed(frame) Global.animation_timeline._on_CopyFrame_pressed(frame)
2: # Move Left 2: # Move Left
change_frame_order(-1) change_frame_order(-1)
3: # Move Right 3: # Move Right