Skip to content

Commit

Permalink
Change PixelPen singleton to static
Browse files Browse the repository at this point in the history
  • Loading branch information
bayu-sw committed Jun 14, 2024
1 parent 8df96ae commit 4054795
Show file tree
Hide file tree
Showing 49 changed files with 1,356 additions and 1,362 deletions.
2 changes: 1 addition & 1 deletion project/addons/net.yarvis.pixel_pen/classes/frame.gd
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ func find_layer(layer_uid : Vector3i) -> IndexedColorImage:
func get_duplicate(new_uid : bool = true) -> Frame:
var frame : Frame = (self as Frame).duplicate()
if new_uid:
frame.frame_uid = PixelPen.current_project.get_uid()
frame.frame_uid = PixelPen.singleton.current_project.get_uid()
var new_layers : Array[IndexedColorImage] = frame.layers.duplicate()
for i in range(new_layers.size()):
new_layers[i] = new_layers[i].get_duplicate(new_uid)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ var _cache_colormap : Image
func get_duplicate(new_uid : bool = true):
var new_me : IndexedColorImage = (self as IndexedColorImage).duplicate()
if new_uid:
new_me.layer_uid = PixelPen.current_project.get_uid()
new_me.layer_uid = PixelPen.singleton.current_project.get_uid()
new_me.colormap = colormap.duplicate() if colormap != null else null
return new_me

Expand Down Expand Up @@ -70,8 +70,8 @@ func set_index_on_color_map(x : int, y : int, index_color : int):


func paint_brush(x : int, y : int, index_color : int):
PixelPen.current_project.paint.set_image(colormap)
PixelPen.current_project.paint.set_pixel(x, y, Color8(index_color, 0, 0), PixelPen.current_project.brush_index)
PixelPen.singleton.current_project.paint.set_image(colormap)
PixelPen.singleton.current_project.paint.set_pixel(x, y, Color8(index_color, 0, 0), PixelPen.singleton.current_project.brush_index)


func get_index_on_color_map(x : int, y) -> int:
Expand Down
18 changes: 9 additions & 9 deletions project/addons/net.yarvis.pixel_pen/classes/pixel_pen_project.gd
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ func initialized(p_size : Vector2i, p_name : String = "Untitled", p_file_path :
layer_index_counter = 0
project_name = p_name
canvas_size = p_size
animation_fps = PixelPen.userconfig.default_animation_fps
animation_fps = PixelPen.singleton.userconfig.default_animation_fps
symetric_guid = canvas_size * 0.5
palette = IndexedPalette.new()
palette.set_color_index_preset()
Expand Down Expand Up @@ -159,7 +159,7 @@ func set_mode(mode : ProjectMode, mask : Image = null):
new_pool_frames[0].layers[layer_i] = new_layer
pool_frames = new_pool_frames
undo_redo = UndoRedoManager.new()
PixelPen.edit_mode_changed.emit(mode)
PixelPen.singleton.edit_mode_changed.emit(mode)


func resize_canvas(new_size : Vector2i, anchor : PixelPenEnum.ResizeAnchor):
Expand Down Expand Up @@ -529,12 +529,12 @@ func export_webp_image(path : String) -> Error:

func export_animation_gif(path : String):
# initialize exporter object with width and height of gif canvas
var exporter = PixelPen.GIFExporter.new(canvas_size.x, canvas_size.y)
var exporter = PixelPen.singleton.GIFExporter.new(canvas_size.x, canvas_size.y)
# write image using median cut quantization method and with one second animation delay
for cell in animation_timeline:
var img : Image = get_image(cell.frame)
img.convert(Image.FORMAT_RGBA8)
exporter.add_frame(img, 1.0 / animation_fps, PixelPen.MedianCutQuantization)
exporter.add_frame(img, 1.0 / animation_fps, PixelPen.singleton.MedianCutQuantization)

# when you have exported all frames of animation you, then you can save data into file
# open new file with write privlige
Expand Down Expand Up @@ -668,7 +668,7 @@ func clean_invisible_color():

func reset_brush_to_default():
var Tool := preload("../editor/editor_canvas/tool.gd")
PixelPen.userconfig.brush.clear()
PixelPen.singleton.userconfig.brush.clear()
for i in range(1, 16):
var start : Vector2 = Vector2(0.5, 0.5)
var end : Vector2 = Vector2(i, i) + Vector2(0.5, 0.5)
Expand All @@ -680,10 +680,10 @@ func reset_brush_to_default():
if image_f != null:
PixelPenCPP.fill_color(image_f, image, Color8(255, 0, 0), null)
image = image.get_region(PixelPenCPP.get_mask_used_rect(image))
PixelPen.userconfig.brush.push_back(image)
PixelPen.userconfig.save()
PixelPen.singleton.userconfig.brush.push_back(image)
PixelPen.singleton.userconfig.save()


func reset_stamp_to_default():
PixelPen.userconfig.stamp.clear()
PixelPen.userconfig.save()
PixelPen.singleton.userconfig.stamp.clear()
PixelPen.singleton.userconfig.save()
6 changes: 6 additions & 0 deletions project/addons/net.yarvis.pixel_pen/classes/pixelpen.gd
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
@tool
class_name PixelPen
extends RefCounted


static var singleton = PixelPenState.new()
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
@tool
#class_name PixelPen
class_name PixelPenState
extends Node


Expand Down Expand Up @@ -37,9 +37,9 @@ const MIN_COMPATIBILITY = 3
const EDITOR_TITTLE = "Pixel Pen"

# load gif exporter module
const GIFExporter = preload("thirdparty/gdgifexporter/exporter.gd")
const GIFExporter = preload("../thirdparty/gdgifexporter/exporter.gd")
# load quantization module that you want to use
const MedianCutQuantization = preload("thirdparty/gdgifexporter/quantization/median_cut.gd")
const MedianCutQuantization = preload("../thirdparty/gdgifexporter/quantization/median_cut.gd")


var current_project : PixelPenProject:
Expand Down
18 changes: 9 additions & 9 deletions project/addons/net.yarvis.pixel_pen/classes/theme_config.gd
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ static func init_screen():


func _ready():
PixelPen.theme_changed.connect(_on_theme_changed)
PixelPen.singleton.theme_changed.connect(_on_theme_changed)
_on_theme_changed()


Expand Down Expand Up @@ -95,13 +95,13 @@ func use_safe_area(control : Control):

func _on_theme_changed():
if type == 0:
editor_main_ui.canvas_color_base = PixelPen.userconfig.canvas_base_mode_color
editor_main_ui.canvas_color_sample = PixelPen.userconfig.canvas_sample_mode_color
editor_main_ui.canvas_color_base = PixelPen.singleton.userconfig.canvas_base_mode_color
editor_main_ui.canvas_color_sample = PixelPen.singleton.userconfig.canvas_sample_mode_color

elif type == 1:
wrapper_layer_control.default_color = PixelPen.userconfig.layer_body_color
wrapper_layer_control.active_color = PixelPen.userconfig.layer_active_color
wrapper_layer_control.secondary_active_color = PixelPen.userconfig.layer_secondary_active_color
wrapper_layer_control.color = PixelPen.userconfig.layer_placeholder_color
head_layer_control.color = PixelPen.userconfig.layer_head_color
detached_layer_control.color = PixelPen.userconfig.box_panel_darker_color
wrapper_layer_control.default_color = PixelPen.singleton.userconfig.layer_body_color
wrapper_layer_control.active_color = PixelPen.singleton.userconfig.layer_active_color
wrapper_layer_control.secondary_active_color = PixelPen.singleton.userconfig.layer_secondary_active_color
wrapper_layer_control.color = PixelPen.singleton.userconfig.layer_placeholder_color
head_layer_control.color = PixelPen.singleton.userconfig.layer_head_color
detached_layer_control.color = PixelPen.singleton.userconfig.box_panel_darker_color
8 changes: 4 additions & 4 deletions project/addons/net.yarvis.pixel_pen/classes/user_config.gd
Original file line number Diff line number Diff line change
Expand Up @@ -62,9 +62,9 @@ func save():


func make_brush_from_project(mask : Image) -> bool:
if PixelPen.current_project == null:
if PixelPen.singleton.current_project == null:
return false
brush.push_back((PixelPen.current_project as PixelPenProject).get_region_project_colormap(mask))
brush.push_back((PixelPen.singleton.current_project as PixelPenProject).get_region_project_colormap(mask))
save()
return true

Expand All @@ -76,9 +76,9 @@ func delete_brush(index : int):


func make_stamp_from_project(mask : Image) -> bool:
if PixelPen.current_project == null:
if PixelPen.singleton.current_project == null:
return false
stamp.push_back((PixelPen.current_project as PixelPenProject).get_region_project_image(mask))
stamp.push_back((PixelPen.singleton.current_project as PixelPenProject).get_region_project_image(mask))
save()
return true

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ extends Control
func _draw():
var anchor = parent_window.anchor
var color = Color.BLACK
var color_active = PixelPen.userconfig.accent_color
var color_active = PixelPen.singleton.userconfig.accent_color
var grid_size : Vector2 = size / 5

draw_line(Vector2(grid_size.x, grid_size.y * 0.5), Vector2(grid_size.x * 2, grid_size.y * 0.5), color)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,25 +34,25 @@ func _on_mouse_pressed(mouse_position : Vector2, callback : Callable):
pick_color_from_canvas(mouse_position)
return
_prev_paint_coord_array.clear()
var index_image : IndexedColorImage = (PixelPen.current_project as PixelPenProject).active_layer
var index_image : IndexedColorImage = (PixelPen.singleton.current_project as PixelPenProject).active_layer
if index_image != null:
PixelPen.current_project.paint.set_image(index_image.colormap)
PixelPen.current_project.brush_index = 0
PixelPen.singleton.current_project.paint.set_image(index_image.colormap)
PixelPen.singleton.current_project.brush_index = 0
var coord = floor(mouse_position)
var mask_selection : Image
if node.selection_tool_hint.texture != null:
mask_selection = MaskSelection.get_image_no_margin(node.selection_tool_hint.texture.get_image())
PixelPen.current_project.paint.set_mask(mask_selection)
PixelPen.singleton.current_project.paint.set_mask(mask_selection)
else:
PixelPen.current_project.paint.set_mask(null)
PixelPen.singleton.current_project.paint.set_mask(null)
if index_image.coor_inside_canvas(coord.x, coord.y, mask_selection):
is_pressed = true
is_pressed_outside = false
var action_name : String = "Pen tool" if tool_type == PixelPenEnum.ToolBox.TOOL_PEN else "Brush tool"
var layer_uid : Vector3i = index_image.layer_uid
(PixelPen.current_project as PixelPenProject).create_undo_layer(action_name, index_image.layer_uid, func ():
PixelPen.layer_image_changed.emit(layer_uid)
PixelPen.project_saved.emit(false))
(PixelPen.singleton.current_project as PixelPenProject).create_undo_layer(action_name, index_image.layer_uid, func ():
PixelPen.singleton.layer_image_changed.emit(layer_uid)
PixelPen.singleton.project_saved.emit(false))
paint_pixel(coord, _index_color, false, true)

callback.call()
Expand All @@ -67,33 +67,33 @@ func _on_mouse_released(mouse_position : Vector2, callback : Callable):
var is_mirrored : bool = false
var color : int = _index_color
for each in _prev_paint_coord_array:
if PixelPen.current_project.show_symetric_vertical:
if PixelPen.singleton.current_project.show_symetric_vertical:
var mirror : Vector2 = each
mirror.x = PixelPen.current_project.symetric_guid.x + PixelPen.current_project.symetric_guid.x - mirror.x - 1
mirror.x = PixelPen.singleton.current_project.symetric_guid.x + PixelPen.singleton.current_project.symetric_guid.x - mirror.x - 1
paint_pixel(mirror, color, false, true)
if PixelPen.current_project.show_symetric_horizontal:
mirror.y = PixelPen.current_project.symetric_guid.y + PixelPen.current_project.symetric_guid.y - mirror.y - 1
if PixelPen.singleton.current_project.show_symetric_horizontal:
mirror.y = PixelPen.singleton.current_project.symetric_guid.y + PixelPen.singleton.current_project.symetric_guid.y - mirror.y - 1
paint_pixel(mirror, color, false, true)
is_mirrored = true
if PixelPen.current_project.show_symetric_horizontal:
if PixelPen.singleton.current_project.show_symetric_horizontal:
var mirror : Vector2 = each
mirror.y = PixelPen.current_project.symetric_guid.y + PixelPen.current_project.symetric_guid.y - mirror.y - 1
mirror.y = PixelPen.singleton.current_project.symetric_guid.y + PixelPen.singleton.current_project.symetric_guid.y - mirror.y - 1
paint_pixel(mirror, color, false, true)
is_mirrored = true
_prev_paint_coord_array.clear()
if is_mirrored:
callback.call()

var index_image : IndexedColorImage = PixelPen.current_project.active_layer
var index_image : IndexedColorImage = PixelPen.singleton.current_project.active_layer
var layer_uid : Vector3i = index_image.layer_uid
(PixelPen.current_project as PixelPenProject).create_redo_layer(index_image.layer_uid, func ():
PixelPen.layer_image_changed.emit(layer_uid)
PixelPen.project_saved.emit(false)
(PixelPen.singleton.current_project as PixelPenProject).create_redo_layer(index_image.layer_uid, func ():
PixelPen.singleton.layer_image_changed.emit(layer_uid)
PixelPen.singleton.project_saved.emit(false)
)
is_pressed = false
is_pressed_outside = false
PixelPen.layer_image_changed.emit(layer_uid)
PixelPen.project_saved.emit(false)
PixelPen.singleton.layer_image_changed.emit(layer_uid)
PixelPen.singleton.project_saved.emit(false)
is_pressed = false
is_pressed_outside = false

Expand All @@ -102,7 +102,7 @@ func _on_mouse_motion(mouse_position : Vector2, event_relative : Vector2, callba
if shift_mode:
return
if is_pressed or is_pressed_outside:
var index_image : IndexedColorImage = (PixelPen.current_project as PixelPenProject).active_layer
var index_image : IndexedColorImage = (PixelPen.singleton.current_project as PixelPenProject).active_layer
if index_image == null:
return
var mask_selection : Image
Expand Down Expand Up @@ -136,9 +136,9 @@ func _on_mouse_motion(mouse_position : Vector2, event_relative : Vector2, callba
is_pressed = true
is_pressed_outside = false
var layer_uid : Vector3i = index_image.layer_uid
(PixelPen.current_project as PixelPenProject).create_undo_layer("Pen tool", index_image.layer_uid, func ():
PixelPen.layer_image_changed.emit(layer_uid)
PixelPen.project_saved.emit(false)
(PixelPen.singleton.current_project as PixelPenProject).create_undo_layer("Pen tool", index_image.layer_uid, func ():
PixelPen.singleton.layer_image_changed.emit(layer_uid)
PixelPen.singleton.project_saved.emit(false)
)
paint_pixel(to, _index_color, false, true)
paint_line(_prev_paint_coord, to, _index_color, false, true)
Expand All @@ -159,7 +159,7 @@ func _on_force_cancel():

func _on_shift_pressed(pressed : bool):
shift_mode = pressed and not is_pressed
PixelPen.toolbox_shift_mode.emit(shift_mode)
PixelPen.singleton.toolbox_shift_mode.emit(shift_mode)


func _on_draw_cursor(mouse_position : Vector2):
Expand All @@ -181,12 +181,12 @@ func _on_draw_cursor(mouse_position : Vector2):


func update_brush():
if PixelPen.current_project == null:
if PixelPen.singleton.current_project == null:
return
PixelPen.current_project.paint.clear_brush()
if PixelPen.userconfig.brush.size() > brush_index and brush_index >= 0:
var brush = PixelPen.userconfig.brush[brush_index]
PixelPen.current_project.paint.add_brush(brush)
PixelPen.singleton.current_project.paint.clear_brush()
if PixelPen.singleton.userconfig.brush.size() > brush_index and brush_index >= 0:
var brush = PixelPen.singleton.userconfig.brush[brush_index]
PixelPen.singleton.current_project.paint.add_brush(brush)
var size = brush.get_size()
var mask = Image.create(size.x + 2, size.y + 2, false, Image.FORMAT_RGBA8)
for x in range(size.x):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,68 +24,68 @@ var tool : Tool = Tool.new():
PixelPenEnum.ToolBox.TOOL_SELECT:
if tool.tool_type != PixelPenEnum.ToolBox.TOOL_SELECT:
tool = SelectTool.new()
PixelPen.toolbox_just_changed.emit(tool.active_tool_type)
PixelPen.singleton.toolbox_just_changed.emit(tool.active_tool_type)
PixelPenEnum.ToolBox.TOOL_MOVE:
if tool.tool_type != PixelPenEnum.ToolBox.TOOL_MOVE:
tool = MoveTool.new()
PixelPen.toolbox_just_changed.emit(tool.active_tool_type)
PixelPen.singleton.toolbox_just_changed.emit(tool.active_tool_type)
PixelPenEnum.ToolBox.TOOL_PAN:
if tool.tool_type != PixelPenEnum.ToolBox.TOOL_PAN:
tool = PanTool.new()
PixelPen.toolbox_just_changed.emit(tool.active_tool_type)
PixelPen.singleton.toolbox_just_changed.emit(tool.active_tool_type)
PixelPenEnum.ToolBox.TOOL_PEN:
if tool.tool_type != PixelPenEnum.ToolBox.TOOL_PEN:
tool = PenTool.new(PixelPenEnum.ToolBox.TOOL_PEN)
PixelPen.toolbox_just_changed.emit(tool.active_tool_type)
PixelPen.singleton.toolbox_just_changed.emit(tool.active_tool_type)
PixelPenEnum.ToolBox.TOOL_BRUSH:
if tool.tool_type != PixelPenEnum.ToolBox.TOOL_BRUSH:
tool = BrushTool.new()
PixelPen.toolbox_just_changed.emit(tool.active_tool_type)
PixelPen.singleton.toolbox_just_changed.emit(tool.active_tool_type)
PixelPenEnum.ToolBox.TOOL_STAMP:
if tool.tool_type != PixelPenEnum.ToolBox.TOOL_STAMP:
tool = StampTool.new()
PixelPen.toolbox_just_changed.emit(tool.active_tool_type)
PixelPen.singleton.toolbox_just_changed.emit(tool.active_tool_type)
PixelPenEnum.ToolBox.TOOL_ERASER:
if tool.tool_type != PixelPenEnum.ToolBox.TOOL_ERASER:
tool = PenTool.new(PixelPenEnum.ToolBox.TOOL_ERASER)
PixelPen.toolbox_just_changed.emit(tool.active_tool_type)
PixelPen.singleton.toolbox_just_changed.emit(tool.active_tool_type)
PixelPenEnum.ToolBox.TOOL_MAGNET:
if tool.tool_type != PixelPenEnum.ToolBox.TOOL_MAGNET:
tool = MagnetTool.new()
PixelPen.toolbox_just_changed.emit(tool.active_tool_type)
PixelPen.singleton.toolbox_just_changed.emit(tool.active_tool_type)
PixelPenEnum.ToolBox.TOOL_SELECTION:
if tool.tool_type != PixelPenEnum.ToolBox.TOOL_SELECTION:
tool = SelectionTool.new()
PixelPen.toolbox_just_changed.emit(tool.active_tool_type)
PixelPen.singleton.toolbox_just_changed.emit(tool.active_tool_type)
PixelPenEnum.ToolBox.TOOL_LINE:
if tool.tool_type != PixelPenEnum.ToolBox.TOOL_LINE:
tool = LineTool.new()
PixelPen.toolbox_just_changed.emit(tool.active_tool_type)
PixelPen.singleton.toolbox_just_changed.emit(tool.active_tool_type)
PixelPenEnum.ToolBox.TOOL_ELLIPSE:
if tool.tool_type != PixelPenEnum.ToolBox.TOOL_ELLIPSE:
tool = EllipseTool.new()
PixelPen.toolbox_just_changed.emit(tool.active_tool_type)
PixelPen.singleton.toolbox_just_changed.emit(tool.active_tool_type)
PixelPenEnum.ToolBox.TOOL_RECTANGLE:
if tool.tool_type != PixelPenEnum.ToolBox.TOOL_RECTANGLE:
tool = RectangleTool.new()
PixelPen.toolbox_just_changed.emit(tool.active_tool_type)
PixelPen.singleton.toolbox_just_changed.emit(tool.active_tool_type)
PixelPenEnum.ToolBox.TOOL_FILL:
if tool.tool_type != PixelPenEnum.ToolBox.TOOL_FILL:
tool = FillTool.new()
PixelPen.toolbox_just_changed.emit(tool.active_tool_type)
PixelPen.singleton.toolbox_just_changed.emit(tool.active_tool_type)
PixelPenEnum.ToolBox.TOOL_COLOR_PICKER:
if tool.tool_type != PixelPenEnum.ToolBox.TOOL_COLOR_PICKER:
tool = ColorPickerTool.new()
PixelPen.toolbox_just_changed.emit(tool.active_tool_type)
PixelPen.singleton.toolbox_just_changed.emit(tool.active_tool_type)
PixelPenEnum.ToolBox.TOOL_ZOOM:
if tool.tool_type != PixelPenEnum.ToolBox.TOOL_ZOOM:
tool = ZoomTool.new()
PixelPen.toolbox_just_changed.emit(tool.active_tool_type)
PixelPen.singleton.toolbox_just_changed.emit(tool.active_tool_type)
_:
if tool.active_tool_type != tool.tool_type:
tool = Tool.new()
tool.tool_type = tool.active_tool_type
PixelPen.toolbox_just_changed.emit(tool.active_tool_type)
PixelPen.singleton.toolbox_just_changed.emit(tool.active_tool_type)
return tool


Expand Down
Loading

0 comments on commit 4054795

Please sign in to comment.