mirror of
https://github.com/tonytins/CozyPixelStudio.git
synced 2025-06-26 13:34:42 -04:00
Created a new Cel class, to handle cel information
Like the Layer class, it is used in place of Canvas.layers nested array mess. It hasn't been tested thoroughly yet, so there may be crashes.
This commit is contained in:
parent
f246ed1a7a
commit
df0032c515
15 changed files with 108 additions and 110 deletions
|
@ -87,8 +87,8 @@ func _on_CreateNewImage_confirmed() -> void:
|
|||
Global.layers = Global.layers # To trigger Global.layers_changed()
|
||||
Global.project_has_changed = false
|
||||
if fill_color.a > 0:
|
||||
Global.canvas.layers[0][0].fill(fill_color)
|
||||
Global.canvas.layers[0][0].lock()
|
||||
Global.canvas.layers[0].image.fill(fill_color)
|
||||
Global.canvas.layers[0].image.lock()
|
||||
Global.canvas.update_texture(0)
|
||||
|
||||
|
||||
|
|
|
@ -367,13 +367,13 @@ func blend_layers(image: Image, canvas: Canvas, origin: Vector2 = Vector2(0, 0))
|
|||
for layer in canvas.layers:
|
||||
if Global.layers[layer_i].visible:
|
||||
var layer_image := Image.new()
|
||||
layer_image.copy_from(layer[0])
|
||||
layer_image.copy_from(layer.image)
|
||||
layer_image.lock()
|
||||
if layer[2] < 1: # If we have layer transparency
|
||||
if layer.opacity < 1: # If we have layer transparency
|
||||
for xx in layer_image.get_size().x:
|
||||
for yy in layer_image.get_size().y:
|
||||
var pixel_color := layer_image.get_pixel(xx, yy)
|
||||
var alpha : float = pixel_color.a * layer[2]
|
||||
var alpha : float = pixel_color.a * layer.opacity
|
||||
layer_image.set_pixel(xx, yy, Color(pixel_color.r, pixel_color.g, pixel_color.b, alpha))
|
||||
DrawingAlgos.blend_rect(image, layer_image, Rect2(canvas.position, canvas.size), origin)
|
||||
layer_i += 1
|
||||
|
|
|
@ -23,7 +23,7 @@ func _ready() -> void:
|
|||
|
||||
|
||||
func _on_HSVDialog_about_to_show() -> void:
|
||||
current_layer = Global.canvas.layers[Global.current_layer][0]
|
||||
current_layer = Global.canvas.layers[Global.current_layer].image
|
||||
preview_image.copy_from(current_layer)
|
||||
update_preview()
|
||||
|
||||
|
|
|
@ -64,22 +64,14 @@ func _on_ImportSprites_files_selected(paths : PoolStringArray) -> void:
|
|||
canvas.size = image.get_size()
|
||||
image.convert(Image.FORMAT_RGBA8)
|
||||
image.lock()
|
||||
var tex := ImageTexture.new()
|
||||
tex.create_from_image(image, 0)
|
||||
# Store [Image, ImageTexture, Opacity]
|
||||
canvas.layers.append([image, tex, 1])
|
||||
canvas.layers.append(Cel.new(image, 1))
|
||||
|
||||
for _i in range(1, Global.layers.size()):
|
||||
var empty_sprite := Image.new()
|
||||
empty_sprite.create(canvas.size.x, canvas.size.y, false, Image.FORMAT_RGBA8)
|
||||
empty_sprite.fill(Color(0, 0, 0, 0))
|
||||
empty_sprite.lock()
|
||||
|
||||
var empty_tex := ImageTexture.new()
|
||||
empty_tex.create_from_image(empty_sprite, 0)
|
||||
|
||||
# Store [Image, ImageTexture, Opacity]
|
||||
canvas.layers.append([empty_sprite, empty_tex, 1])
|
||||
canvas.layers.append(Cel.new(empty_sprite, 1))
|
||||
|
||||
canvas.frame = i
|
||||
Global.canvases.append(canvas)
|
||||
|
@ -119,21 +111,14 @@ func _on_ImportSprites_files_selected(paths : PoolStringArray) -> void:
|
|||
canvas.size = cropped_image.get_size()
|
||||
cropped_image.convert(Image.FORMAT_RGBA8)
|
||||
cropped_image.lock()
|
||||
var tex := ImageTexture.new()
|
||||
tex.create_from_image(cropped_image, 0)
|
||||
# Store [Image, ImageTexture, Opacity]
|
||||
canvas.layers.append([cropped_image, tex, 1])
|
||||
canvas.layers.append(Cel.new(cropped_image, 1))
|
||||
|
||||
for _i in range(1, Global.layers.size()):
|
||||
var empty_sprite := Image.new()
|
||||
empty_sprite.create(canvas.size.x, canvas.size.y, false, Image.FORMAT_RGBA8)
|
||||
empty_sprite.fill(Color(0, 0, 0, 0))
|
||||
empty_sprite.lock()
|
||||
|
||||
var empty_tex := ImageTexture.new()
|
||||
empty_tex.create_from_image(empty_sprite, 0)
|
||||
|
||||
# Store [Image, ImageTexture, Opacity]
|
||||
canvas.layers.append([empty_sprite, empty_tex, 1])
|
||||
canvas.layers.append(Cel.new(empty_sprite, 1))
|
||||
|
||||
canvas.frame = i
|
||||
Global.canvases.append(canvas)
|
||||
|
|
|
@ -10,7 +10,7 @@ func _on_OutlineDialog_confirmed() -> void:
|
|||
var diagonal : bool = $OptionsContainer/DiagonalCheckBox.pressed
|
||||
var inside_image : bool = $OptionsContainer/InsideImageCheckBox.pressed
|
||||
|
||||
var image : Image = Global.canvas.layers[Global.current_layer][0]
|
||||
var image : Image = Global.canvas.layers[Global.current_layer].image
|
||||
if image.is_invisible():
|
||||
return
|
||||
var new_image := Image.new()
|
||||
|
|
|
@ -12,10 +12,10 @@ func _on_ScaleImage_confirmed() -> void:
|
|||
Global.undo_redo.add_do_property(c, "size", Vector2(width, height).floor())
|
||||
for i in range(c.layers.size() - 1, -1, -1):
|
||||
var sprite := Image.new()
|
||||
sprite.copy_from(c.layers[i][0])
|
||||
sprite.copy_from(c.layers[i].image)
|
||||
sprite.resize(width, height, interpolation)
|
||||
Global.undo_redo.add_do_property(c.layers[i][0], "data", sprite.data)
|
||||
Global.undo_redo.add_undo_property(c.layers[i][0], "data", c.layers[i][0].data)
|
||||
Global.undo_redo.add_do_property(c.layers[i].image, "data", sprite.data)
|
||||
Global.undo_redo.add_undo_property(c.layers[i].image, "data", c.layers[i].image.data)
|
||||
Global.undo_redo.add_undo_property(c, "size", c.size)
|
||||
|
||||
Global.undo_redo.add_undo_method(Global, "undo", Global.canvases)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue