Ejemplo n.º 1
0
    def __init__(self, parent):
        super().__init__(parent)

        self._drawing_panel = DrawingPanel(self, is_tilemap_mode=False)
        self._image_panel = ImagePanel(self, is_tilemap_mode=False)
        self._color_picker = ColorPicker(self, 11, 156, 7, with_shadow=False)
        self._tool_button = RadioButton(
            self,
            81,
            161,
            pyxel.IMAGE_BANK_FOR_SYSTEM,
            EDITOR_IMAGE_X + 63,
            EDITOR_IMAGE_Y,
            7,
            TOOL_PENCIL,
        )
        self._image_picker = NumberPicker(self, 192, 161, 0,
                                          pyxel.USER_IMAGE_BANK_COUNT - 1, 0)

        self.add_event_handler("undo", self.__on_undo)
        self.add_event_handler("redo", self.__on_redo)
        self.add_event_handler("drop", self.__on_drop)
        self.add_event_handler("update", self.__on_update)
        self.add_event_handler("draw", self.__on_draw)
        self._color_picker.add_event_handler(
            "mouse_hover", self.__on_color_picker_mouse_hover)
        self.add_tool_button_help(self._tool_button)
        self.add_number_picker_help(self._image_picker)
Ejemplo n.º 2
0
    def __init__(self, parent):
        super().__init__(parent, "image_editor.png")

        self._edit_frame = EditFrame(self, is_tilemap_mode=False)
        self._image_frame = ImageFrame(self, is_tilemap_mode=False)
        self._color_picker = ColorPicker(self, 11, 156)
        self._tool_button = RadioButton(self, 81, 161, 3, 81, 173, 7)
        self._image_number = NumberPicker(self, 192, 161, 0,
                                          RENDERER_IMAGE_COUNT - 2)

        self.color = 7
        self.tool = 1

        self.add_event_handler("undo", self.__on_undo)
        self.add_event_handler("redo", self.__on_redo)
Ejemplo n.º 3
0
    def __init__(self, parent):
        super().__init__(parent)

        self._drawing_panel = DrawingPanel(self, is_tilemap_mode=False)
        self._image_panel = ImagePanel(self, is_tilemap_mode=False)
        self._color_picker = ColorPicker(self, 11, 156, 7, with_shadow=False)
        self._tool_button = RadioButton(self, 81, 161, 3, EDITOR_IMAGE_X + 63,
                                        EDITOR_IMAGE_Y, 7, TOOL_PENCIL)
        self._image_picker = NumberPicker(self, 192, 161, 0,
                                          RENDERER_IMAGE_COUNT - 2, 0)

        self.add_event_handler("undo", self.__on_undo)
        self.add_event_handler("redo", self.__on_redo)
        self.add_event_handler("update", self.__on_update)
        self.add_event_handler("draw", self.__on_draw)
        self.add_tool_button_help(self._tool_button)
        self.add_number_picker_help(self._image_picker)
Ejemplo n.º 4
0
class ImageEditor(Editor):
    _COLOR_BUTTONS = (
        pyxel.KEY_1,
        pyxel.KEY_2,
        pyxel.KEY_3,
        pyxel.KEY_4,
        pyxel.KEY_5,
        pyxel.KEY_6,
        pyxel.KEY_7,
        pyxel.KEY_8,
    )

    def __init__(self, parent):
        super().__init__(parent)

        self._drawing_panel = DrawingPanel(self, is_tilemap_mode=False)
        self._image_panel = ImagePanel(self, is_tilemap_mode=False)
        self._color_picker = ColorPicker(self, 11, 156, 7, with_shadow=False)
        self._tool_button = RadioButton(
            self,
            81,
            161,
            pyxel.IMAGE_BANK_FOR_SYSTEM,
            EDITOR_IMAGE_X + 63,
            EDITOR_IMAGE_Y,
            7,
            TOOL_PENCIL,
        )
        self._image_picker = NumberPicker(self, 192, 161, 0,
                                          pyxel.USER_IMAGE_BANK_COUNT - 1, 0)

        self.add_event_handler("undo", self.__on_undo)
        self.add_event_handler("redo", self.__on_redo)
        self.add_event_handler("drop", self.__on_drop)
        self.add_event_handler("update", self.__on_update)
        self.add_event_handler("draw", self.__on_draw)
        self._color_picker.add_event_handler(
            "mouse_hover", self.__on_color_picker_mouse_hover)
        self.add_tool_button_help(self._tool_button)
        self.add_number_picker_help(self._image_picker)

    @property
    def color(self):
        return self._color_picker.value

    @color.setter
    def color(self, value):
        self._color_picker.value = int(value)

    @property
    def tool(self):
        return self._tool_button.value

    @tool.setter
    def tool(self, value):
        self._tool_button.value = value

    @property
    def image(self):
        return self._image_picker.value

    @property
    def drawing_x(self):
        return self._drawing_panel.viewport_x

    @drawing_x.setter
    def drawing_x(self, value):
        self._drawing_panel.viewport_x = value

    @property
    def drawing_y(self):
        return self._drawing_panel.viewport_y

    @drawing_y.setter
    def drawing_y(self, value):
        self._drawing_panel.viewport_y = value

    def __on_undo(self, data):
        img = data["image"]
        x, y = data["pos"]
        copy_array2d(pyxel.image(img).data, x, y, data["before"])

        self.drawing_x = x
        self.drawing_y = y
        self.parent.image = img

    def __on_redo(self, data):
        img = data["image"]
        x, y = data["pos"]
        copy_array2d(pyxel.image(img).data, x, y, data["after"])

        self.drawing_x = x
        self.drawing_y = y
        self.parent.image = img

    def __on_drop(self, filename):
        _, ext = os.path.splitext(filename)

        if ext.lower() == ".png":
            pyxel.image(self.image).load(0, 0, filename)
            return

    def __on_update(self):
        self.check_tool_button_shortcuts()

        for btn in self._COLOR_BUTTONS:
            if pyxel.btnp(btn):
                col = btn - pyxel.KEY_1
                if pyxel.btn(pyxel.KEY_SHIFT):
                    col += 8
                self._color_picker.value = col
                break

    def __on_draw(self):
        self.draw_panel(11, 156, 136, 17)
        self.draw_panel(157, 156, 72, 17)
        pyxel.text(170, 162, "IMAGE", 6)

    def __on_color_picker_mouse_hover(self, x, y):
        self.help_message = "COLOR:1-8/SHIFT+1-8"