mirror of
https://github.com/Orama-Interactive/Pixelorama.git
synced 2025-01-19 01:29:49 +00:00
revised project api (#945)
This commit is contained in:
parent
b71353cd75
commit
5d858eb0ec
|
@ -494,6 +494,13 @@ class SelectionAPI:
|
||||||
|
|
||||||
## Gives access to basic project manipulation functions.
|
## Gives access to basic project manipulation functions.
|
||||||
class ProjectAPI:
|
class ProjectAPI:
|
||||||
|
## The project currently in focus
|
||||||
|
var current_project: Project:
|
||||||
|
set(value):
|
||||||
|
Global.tabs.current_tab = Global.projects.find(value)
|
||||||
|
get:
|
||||||
|
return Global.current_project
|
||||||
|
|
||||||
## Creates a new project (with new tab) with name [param name], size [param size],
|
## Creates a new project (with new tab) with name [param name], size [param size],
|
||||||
## fill color [param fill_color] and frames [param frames]. The created project also
|
## fill color [param fill_color] and frames [param frames]. The created project also
|
||||||
## gets returned.[br][br]
|
## gets returned.[br][br]
|
||||||
|
@ -516,36 +523,44 @@ class ProjectAPI:
|
||||||
Global.projects.append(new_proj)
|
Global.projects.append(new_proj)
|
||||||
return new_proj
|
return new_proj
|
||||||
|
|
||||||
## Switches to the tab that contains the [param project].
|
|
||||||
func switch_to(project: Project):
|
|
||||||
Global.tabs.current_tab = Global.projects.find(project)
|
|
||||||
|
|
||||||
## Returns the project in focus.
|
|
||||||
func get_current_project() -> Project:
|
|
||||||
return Global.current_project
|
|
||||||
|
|
||||||
## Returns a dictionary containing all the project information.
|
## Returns a dictionary containing all the project information.
|
||||||
func get_project_info(project: Project) -> Dictionary:
|
func get_project_info(project: Project) -> Dictionary:
|
||||||
return project.serialize()
|
return project.serialize()
|
||||||
|
|
||||||
|
## Selects the cels and makes the last entry of [param selected_array] as the current cel
|
||||||
|
## [param selected_array] is an [Array] of [Arrays] of 2 integers (frame & layer).[br]
|
||||||
|
## Frames are counted from left to right, layers are counted from bottom to top.
|
||||||
|
## Frames/layers start at "0" and end at [param project.frames.size() - 1] and
|
||||||
|
## [param project.layers.size() - 1] respectively.
|
||||||
|
func select_cels(selected_array := [[0, 0]]):
|
||||||
|
var project := Global.current_project
|
||||||
|
project.selected_cels.clear()
|
||||||
|
for cel_position in selected_array:
|
||||||
|
if typeof(cel_position) == TYPE_ARRAY and cel_position.size() == 2:
|
||||||
|
var frame = clampi(cel_position[0], 0, project.frames.size() - 1)
|
||||||
|
var layer = clampi(cel_position[1], 0, project.layers.size() - 1)
|
||||||
|
if not [frame, layer] in project.selected_cels:
|
||||||
|
project.selected_cels.append([frame, layer])
|
||||||
|
project.change_cel(project.selected_cels[-1][0], project.selected_cels[-1][1])
|
||||||
|
|
||||||
## Returns the current cel.
|
## Returns the current cel.
|
||||||
## Cel type can be checked using function [method get_class_name] inside the cel
|
## Cel type can be checked using function [method get_class_name] inside the cel
|
||||||
## type can be GroupCel, PixelCel, Cel3D, or BaseCel.
|
## type can be GroupCel, PixelCel, Cel3D, or BaseCel.
|
||||||
func get_current_cel() -> BaseCel:
|
func get_current_cel() -> BaseCel:
|
||||||
return get_current_project().get_current_cel()
|
return current_project.get_current_cel()
|
||||||
|
|
||||||
## Frames are counted from left to right, layers are counted from bottom to top.
|
## Frames are counted from left to right, layers are counted from bottom to top.
|
||||||
## Frames/layers start at "0" and end at [param project.frames.size() - 1] and
|
## Frames/layers start at "0" and end at [param project.frames.size() - 1] and
|
||||||
## [param project.layers.size() - 1] respectively.
|
## [param project.layers.size() - 1] respectively.
|
||||||
func get_cel_at(project: Project, frame: int, layer: int) -> BaseCel:
|
func get_cel_at(project: Project, frame: int, layer: int) -> BaseCel:
|
||||||
clampi(frame, 0, project.frames.size() - 1)
|
frame = clampi(frame, 0, project.frames.size() - 1)
|
||||||
clampi(layer, 0, project.layers.size() - 1)
|
layer = clampi(layer, 0, project.layers.size() - 1)
|
||||||
return project.frames[frame].cels[layer]
|
return project.frames[frame].cels[layer]
|
||||||
|
|
||||||
## Sets an [param image] at [param frame] and [param layer] on the current project.
|
## Sets an [param image] at [param frame] and [param layer] on the current project.
|
||||||
## Frames are counted from left to right, layers are counted from bottom to top.
|
## Frames are counted from left to right, layers are counted from bottom to top.
|
||||||
func set_pixelcel_image(image: Image, frame: int, layer: int) -> void:
|
func set_pixelcel_image(image: Image, frame: int, layer: int) -> void:
|
||||||
if get_cel_at(get_current_project(), frame, layer).get_class_name() == "PixelCel":
|
if get_cel_at(current_project, frame, layer).get_class_name() == "PixelCel":
|
||||||
OpenSave.open_image_at_cel(image, layer, frame)
|
OpenSave.open_image_at_cel(image, layer, frame)
|
||||||
else:
|
else:
|
||||||
print("cel at frame ", frame, ", layer ", layer, " is not a PixelCel")
|
print("cel at frame ", frame, ", layer ", layer, " is not a PixelCel")
|
||||||
|
|
Loading…
Reference in a new issue