Skip to content

Commit bd7d3b1

Browse files
Add a crop_image boolean parameter to Palette.convert_to_image()
Fixes some issues with the Palettize effect where the output would be different if the palette size changed and empty swatches were added, even if the colors themselves stayed the same.
1 parent 996a234 commit bd7d3b1

File tree

2 files changed

+6
-4
lines changed

2 files changed

+6
-4
lines changed

src/Classes/ImageExtended.gd

+2-2
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ func update_palette() -> void:
8484
func convert_indexed_to_rgb() -> void:
8585
if not is_indexed:
8686
return
87-
var palette_image := Palettes.current_palette.convert_to_image()
87+
var palette_image := Palettes.current_palette.convert_to_image(false)
8888
var palette_texture := ImageTexture.create_from_image(palette_image)
8989
var shader_image_effect := ShaderImageEffect.new()
9090
var indices_texture := ImageTexture.create_from_image(indices_image)
@@ -98,7 +98,7 @@ func convert_indexed_to_rgb() -> void:
9898
func convert_rgb_to_indexed() -> void:
9999
if not is_indexed:
100100
return
101-
var palette_image := Palettes.current_palette.convert_to_image()
101+
var palette_image := Palettes.current_palette.convert_to_image(false)
102102
var palette_texture := ImageTexture.create_from_image(palette_image)
103103
var params := {
104104
"palette_texture": palette_texture, "rgb_texture": ImageTexture.create_from_image(self)

src/Palette/Palette.gd

+4-2
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ var colors_max := 0
2525

2626

2727
class PaletteColor:
28-
var color := Color.TRANSPARENT
28+
var color := Color(0, 0, 0, 0)
2929
var index := -1
3030

3131
func _init(init_color := Color.BLACK, init_index := -1) -> void:
@@ -358,9 +358,11 @@ static func strip_unvalid_characters(string_to_strip: String) -> String:
358358
return regex.sub(string_to_strip, "", true)
359359

360360

361-
func convert_to_image() -> Image:
361+
func convert_to_image(crop_image := true) -> Image:
362362
var image := Image.create(colors_max, 1, false, Image.FORMAT_RGBA8)
363363
for i in colors_max:
364364
if colors.has(i):
365365
image.set_pixel(i, 0, Color(colors[i].color.to_html()))
366+
if crop_image:
367+
image.copy_from(image.get_region(image.get_used_rect()))
366368
return image

0 commit comments

Comments
 (0)