''' 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 . ''' 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)