Initial commit
This commit is contained in:
+103
@@ -0,0 +1,103 @@
|
||||
'''
|
||||
Copyright (C) 2021 Akaneyu
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
'''
|
||||
|
||||
import bpy
|
||||
from . import app
|
||||
from . import utils
|
||||
|
||||
class API:
|
||||
VERSION = (0, 0, 0) # set by register()
|
||||
|
||||
@staticmethod
|
||||
def read_pixels_from_image(img):
|
||||
return utils.read_pixels_from_image(img)
|
||||
|
||||
@staticmethod
|
||||
def write_pixels_to_image(img, pixels):
|
||||
utils.write_pixels_to_image(img, pixels)
|
||||
|
||||
@staticmethod
|
||||
def refresh_image(context):
|
||||
app.refresh_image(context)
|
||||
|
||||
@staticmethod
|
||||
def select_layer(img, layer):
|
||||
img_props = img.imageeditorplus_properties
|
||||
layers = img_props.layers
|
||||
|
||||
if layer and layer in layers:
|
||||
img_props.selected_layer_index = layers.index(layer)
|
||||
else:
|
||||
img_props.selected_layer_index = -1
|
||||
|
||||
@staticmethod
|
||||
def get_selected_layer(img):
|
||||
img_props = img.imageeditorplus_properties
|
||||
layers = img_props.layers
|
||||
selected_layer_index = img_props.selected_layer_index
|
||||
|
||||
if selected_layer_index == -1 or selected_layer_index >= len(layers):
|
||||
return None
|
||||
|
||||
return layers[selected_layer_index]
|
||||
|
||||
@staticmethod
|
||||
def create_layer(base_img, pixels, img_settings={}, layer_settings={}):
|
||||
img_settings_mod = {
|
||||
'is_float': img_settings.get('is_float', True),
|
||||
'colorspace_name': img_settings.get('colorspace_name', 'Linear')
|
||||
}
|
||||
|
||||
layer_settings_mod = {
|
||||
'rotation': layer_settings.get('rotation', 0),
|
||||
'scale': layer_settings.get('scale', [1.0, 1.0]),
|
||||
'custom_data': layer_settings.get('custom_data', '{}')
|
||||
}
|
||||
|
||||
app.create_layer(base_img, pixels, img_settings_mod, layer_settings_mod)
|
||||
|
||||
@staticmethod
|
||||
def read_pixels_from_layer(layer):
|
||||
layer_img = bpy.data.images.get(layer.name, None)
|
||||
if not layer_img:
|
||||
return 0, 0, None
|
||||
|
||||
layer_width, layer_height = layer_img.size[0], layer_img.size[1]
|
||||
|
||||
layer_pixels = utils.read_pixels_from_image(layer_img)
|
||||
|
||||
return layer_width, layer_height, layer_pixels
|
||||
|
||||
@staticmethod
|
||||
def write_pixels_to_layer(layer, pixels):
|
||||
layer_img = bpy.data.images.get(layer.name, None)
|
||||
if not layer_img:
|
||||
return
|
||||
|
||||
utils.write_pixels_to_image(layer_img, pixels)
|
||||
|
||||
@staticmethod
|
||||
def scale_layer(layer, width, height):
|
||||
layer_img = bpy.data.images.get(layer.name, None)
|
||||
if not layer_img:
|
||||
return
|
||||
|
||||
layer_img.scale(width, height)
|
||||
|
||||
@staticmethod
|
||||
def update_layers(img):
|
||||
app.rebuild_image_layers_nodes(img)
|
||||
Reference in New Issue
Block a user