mirror of https://github.com/aseprite/aseprite.git
Add LayerFill type
This commit is contained in:
parent
9cdcb36c00
commit
147a2308c6
|
@ -365,6 +365,7 @@ NewLayer_Layer = Layer
|
|||
NewLayer_Group = Group
|
||||
NewLayer_ReferenceLayer = Reference Layer
|
||||
NewLayer_TilemapLayer = Tilemap
|
||||
NewLayer_FillLayer = Fill
|
||||
NewLayer_MaskLayer = Mask
|
||||
NewLayer_FxLayer = Fx
|
||||
NewLayer_TextLayer = Text
|
||||
|
|
|
@ -34,6 +34,7 @@
|
|||
#include "app/util/new_image_from_mask.h"
|
||||
#include "doc/layer.h"
|
||||
#include "doc/layer_audio.h"
|
||||
#include "doc/layer_fill.h"
|
||||
#include "doc/layer_fx.h"
|
||||
#include "doc/layer_hitbox.h"
|
||||
#include "doc/layer_mask.h"
|
||||
|
@ -88,6 +89,7 @@ public:
|
|||
Group,
|
||||
ReferenceLayer,
|
||||
TilemapLayer,
|
||||
FillLayer,
|
||||
MaskLayer,
|
||||
FxLayer,
|
||||
TextLayer,
|
||||
|
@ -133,6 +135,8 @@ void NewLayerCommand::onLoadParams(const Params& commandParams)
|
|||
else if (params().tilemap() || params().type() == "tilemap")
|
||||
m_type = Type::TilemapLayer;
|
||||
#ifdef ENABLE_DEVMODE // TODO not yet production-ready
|
||||
else if (params().type() == "fill")
|
||||
m_type = Type::FillLayer;
|
||||
else if (params().type() == "mask")
|
||||
m_type = Type::MaskLayer;
|
||||
else if (params().type() == "fx")
|
||||
|
@ -331,6 +335,14 @@ void NewLayerCommand::onExecute(Context* context)
|
|||
break;
|
||||
}
|
||||
|
||||
case Type::FillLayer: {
|
||||
layer = new LayerFill(parent->sprite());
|
||||
layer->setName(name);
|
||||
|
||||
api.addLayer(parent, layer, parent->lastLayer());
|
||||
break;
|
||||
}
|
||||
|
||||
case Type::MaskLayer: {
|
||||
layer = new LayerMask(parent->sprite());
|
||||
layer->setName(name);
|
||||
|
@ -627,8 +639,9 @@ std::string NewLayerCommand::layerPrefix() const
|
|||
case Type::Group: return Strings::commands_NewLayer_Group();
|
||||
case Type::ReferenceLayer: return Strings::commands_NewLayer_ReferenceLayer();
|
||||
case Type::TilemapLayer: return Strings::commands_NewLayer_TilemapLayer();
|
||||
case Type::FxLayer: return Strings::commands_NewLayer_FxLayer();
|
||||
case Type::FillLayer: return Strings::commands_NewLayer_FillLayer();
|
||||
case Type::MaskLayer: return Strings::commands_NewLayer_MaskLayer();
|
||||
case Type::FxLayer: return Strings::commands_NewLayer_FxLayer();
|
||||
case Type::TextLayer: return Strings::commands_NewLayer_TextLayer();
|
||||
case Type::VectorLayer: return Strings::commands_NewLayer_VectorLayer();
|
||||
case Type::AudioLayer: return Strings::commands_NewLayer_AudioLayer();
|
||||
|
|
|
@ -29,6 +29,7 @@
|
|||
#include "doc/image_io.h"
|
||||
#include "doc/layer.h"
|
||||
#include "doc/layer_audio.h"
|
||||
#include "doc/layer_fill.h"
|
||||
#include "doc/layer_fx.h"
|
||||
#include "doc/layer_hitbox.h"
|
||||
#include "doc/layer_mask.h"
|
||||
|
@ -477,6 +478,8 @@ private:
|
|||
|
||||
case ObjectType::LayerGroup: lay = std::make_unique<LayerGroup>(m_sprite); break;
|
||||
|
||||
case ObjectType::LayerFill: lay = std::make_unique<LayerFill>(m_sprite); break;
|
||||
|
||||
case ObjectType::LayerMask: lay = std::make_unique<LayerMask>(m_sprite); break;
|
||||
|
||||
case ObjectType::LayerFx: lay = std::make_unique<LayerFx>(m_sprite); break;
|
||||
|
|
|
@ -265,6 +265,7 @@ private:
|
|||
// writeSprite/writeAllLayersID() functions)
|
||||
break;
|
||||
|
||||
case ObjectType::LayerFill:
|
||||
case ObjectType::LayerMask:
|
||||
case ObjectType::LayerFx:
|
||||
case ObjectType::LayerText:
|
||||
|
|
|
@ -54,6 +54,7 @@
|
|||
#include "doc/algorithm/shrink_bounds.h"
|
||||
#include "doc/cel.h"
|
||||
#include "doc/layer_audio.h"
|
||||
#include "doc/layer_fill.h"
|
||||
#include "doc/layer_fx.h"
|
||||
#include "doc/layer_hitbox.h"
|
||||
#include "doc/layer_mask.h"
|
||||
|
@ -724,6 +725,7 @@ Layer* DocApi::copyLayerWithSprite(doc::Layer* layer, doc::Sprite* sprite)
|
|||
break;
|
||||
}
|
||||
|
||||
case ObjectType::LayerFill: clone = std::make_unique<LayerFill>(sprite); break;
|
||||
case ObjectType::LayerMask: clone = std::make_unique<LayerMask>(sprite); break;
|
||||
case ObjectType::LayerFx: clone = std::make_unique<LayerFx>(sprite); break;
|
||||
case ObjectType::LayerText: clone = std::make_unique<LayerText>(sprite); break;
|
||||
|
|
|
@ -48,6 +48,7 @@ add_library(doc-lib
|
|||
image_iterators2.cpp
|
||||
layer.cpp
|
||||
layer_audio.cpp
|
||||
layer_fill.cpp
|
||||
layer_fx.cpp
|
||||
layer_hitbox.cpp
|
||||
layer_io.cpp
|
||||
|
|
|
@ -0,0 +1,23 @@
|
|||
// Aseprite Document Library
|
||||
// Copyright (c) 2025 Igara Studio S.A.
|
||||
//
|
||||
// This file is released under the terms of the MIT license.
|
||||
// Read LICENSE.txt for more information.
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#include "doc/layer_fill.h"
|
||||
|
||||
namespace doc {
|
||||
|
||||
LayerFill::LayerFill(Sprite* sprite) : Layer(ObjectType::LayerFill, sprite)
|
||||
{
|
||||
}
|
||||
|
||||
LayerFill::~LayerFill()
|
||||
{
|
||||
}
|
||||
|
||||
} // namespace doc
|
|
@ -0,0 +1,27 @@
|
|||
// Aseprite Document Library
|
||||
// Copyright (C) 2025 Igara Studio S.A.
|
||||
//
|
||||
// This file is released under the terms of the MIT license.
|
||||
// Read LICENSE.txt for more information.
|
||||
|
||||
#ifndef DOC_LAYER_FILL_H_INCLUDED
|
||||
#define DOC_LAYER_FILL_H_INCLUDED
|
||||
#pragma once
|
||||
|
||||
#include "doc/layer.h"
|
||||
|
||||
namespace doc {
|
||||
|
||||
// Fills the whole canvas with a solid color or a gradient.
|
||||
// TODO to implement
|
||||
class LayerFill final : public Layer {
|
||||
public:
|
||||
LayerFill(Sprite* sprite);
|
||||
virtual ~LayerFill();
|
||||
|
||||
// TODO associated fill data per frame/keyframe
|
||||
};
|
||||
|
||||
} // namespace doc
|
||||
|
||||
#endif
|
|
@ -19,6 +19,7 @@
|
|||
#include "doc/image_io.h"
|
||||
#include "doc/layer.h"
|
||||
#include "doc/layer_audio.h"
|
||||
#include "doc/layer_fill.h"
|
||||
#include "doc/layer_fx.h"
|
||||
#include "doc/layer_hitbox.h"
|
||||
#include "doc/layer_io.h"
|
||||
|
@ -132,6 +133,7 @@ Layer* read_layer(std::istream& is, SubObjectsFromSprite* subObjects, const Seri
|
|||
switch (static_cast<ObjectType>(layer_type)) {
|
||||
case ObjectType::LayerImage:
|
||||
case ObjectType::LayerTilemap:
|
||||
case ObjectType::LayerFill:
|
||||
case ObjectType::LayerMask:
|
||||
case ObjectType::LayerFx:
|
||||
case ObjectType::LayerText:
|
||||
|
@ -147,6 +149,9 @@ Layer* read_layer(std::istream& is, SubObjectsFromSprite* subObjects, const Seri
|
|||
case ObjectType::LayerTilemap:
|
||||
layer = std::make_unique<LayerTilemap>(subObjects->sprite(), 0);
|
||||
break;
|
||||
case ObjectType::LayerFill:
|
||||
layer = std::make_unique<LayerFill>(subObjects->sprite());
|
||||
break;
|
||||
case ObjectType::LayerMask:
|
||||
layer = std::make_unique<LayerMask>(subObjects->sprite());
|
||||
break;
|
||||
|
|
|
@ -38,13 +38,15 @@ enum class ObjectType : uint16_t {
|
|||
Tileset = 15,
|
||||
Tilesets = 16,
|
||||
|
||||
LayerMask = 17,
|
||||
LayerFx = 18,
|
||||
LayerText = 19,
|
||||
LayerVector = 20,
|
||||
LayerAudio = 21,
|
||||
LayerSubsprite = 22,
|
||||
LayerFill = 17,
|
||||
LayerMask = 18,
|
||||
LayerFx = 19,
|
||||
LayerText = 20,
|
||||
LayerVector = 21,
|
||||
LayerAudio = 22,
|
||||
LayerHitbox = 23,
|
||||
|
||||
LayerSubsprite = 24,
|
||||
};
|
||||
|
||||
} // namespace doc
|
||||
|
|
Loading…
Reference in New Issue