mirror of
https://github.com/aseprite/aseprite.git
synced 2025-02-23 18:39:55 +00:00
Automatically increase the canvas size if bigger images are loaded in a sequence (fix #1719)
This commit is contained in:
parent
31dcd3272a
commit
76915c7cb0
@ -193,16 +193,15 @@ FileOp* FileOp::createLoadDocumentOperation(Context* context, const std::string&
|
|||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* use the "sequence" interface */
|
// Use the "sequence" interface
|
||||||
if (fop->m_format->support(FILE_SUPPORT_SEQUENCES)) {
|
if (fop->m_format->support(FILE_SUPPORT_SEQUENCES)) {
|
||||||
/* prepare to load a sequence */
|
|
||||||
fop->prepareForSequence();
|
fop->prepareForSequence();
|
||||||
fop->m_seq.flags = flags;
|
fop->m_seq.flags = flags;
|
||||||
|
|
||||||
/* per now, we want load just one file */
|
// At the moment we want load just one file (the one specified in filename)
|
||||||
fop->m_seq.filename_list.push_back(filename);
|
fop->m_seq.filename_list.push_back(filename);
|
||||||
|
|
||||||
/* don't load the sequence (just the one file/one frame) */
|
// If the user wants to load the whole sequence
|
||||||
if (!(flags & FILE_LOAD_SEQUENCE_NONE)) {
|
if (!(flags & FILE_LOAD_SEQUENCE_NONE)) {
|
||||||
std::string left, right;
|
std::string left, right;
|
||||||
int c, width, start_from;
|
int c, width, start_from;
|
||||||
@ -572,9 +571,12 @@ void FileOp::operate(IFileOpProgress* progress)
|
|||||||
frame_t frames(m_seq.filename_list.size());
|
frame_t frames(m_seq.filename_list.size());
|
||||||
frame_t frame(0);
|
frame_t frame(0);
|
||||||
Image* old_image = nullptr;
|
Image* old_image = nullptr;
|
||||||
|
gfx::Size canvasSize(0, 0);
|
||||||
|
|
||||||
// TODO setPalette for each frame???
|
// TODO setPalette for each frame???
|
||||||
auto add_image = [&]() {
|
auto add_image = [&]() {
|
||||||
|
canvasSize |= m_seq.image->size();
|
||||||
|
|
||||||
m_seq.last_cel->data()->setImage(m_seq.image);
|
m_seq.last_cel->data()->setImage(m_seq.image);
|
||||||
m_seq.layer->addCel(m_seq.last_cel);
|
m_seq.layer->addCel(m_seq.last_cel);
|
||||||
|
|
||||||
@ -657,11 +659,16 @@ void FileOp::operate(IFileOpProgress* progress)
|
|||||||
m_filename = *m_seq.filename_list.begin();
|
m_filename = *m_seq.filename_list.begin();
|
||||||
|
|
||||||
// Final setup
|
// Final setup
|
||||||
if (m_document != NULL) {
|
if (m_document) {
|
||||||
// Configure the layer as the 'Background'
|
// Configure the layer as the 'Background'
|
||||||
if (!m_seq.has_alpha)
|
if (!m_seq.has_alpha)
|
||||||
m_seq.layer->configureAsBackground();
|
m_seq.layer->configureAsBackground();
|
||||||
|
|
||||||
|
// Set the final canvas size (as the bigger loaded
|
||||||
|
// frame/image).
|
||||||
|
m_document->sprite()->setSize(canvasSize.w,
|
||||||
|
canvasSize.h);
|
||||||
|
|
||||||
// Set the frames range
|
// Set the frames range
|
||||||
m_document->sprite()->setTotalFrames(frame);
|
m_document->sprite()->setTotalFrames(frame);
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
// Aseprite Gfx Library
|
// Aseprite Gfx Library
|
||||||
// Copyright (C) 2001-2016 David Capello
|
// Copyright (C) 2001-2018 David Capello
|
||||||
//
|
//
|
||||||
// This file is released under the terms of the MIT license.
|
// This file is released under the terms of the MIT license.
|
||||||
// Read LICENSE.txt for more information.
|
// Read LICENSE.txt for more information.
|
||||||
@ -91,6 +91,14 @@ public:
|
|||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const SizeT& operator|=(const SizeT& sz) {
|
||||||
|
return *this = createUnion(sz);
|
||||||
|
}
|
||||||
|
|
||||||
|
const SizeT& operator&=(const SizeT& sz) {
|
||||||
|
return *this = createIntersection(sz);
|
||||||
|
}
|
||||||
|
|
||||||
SizeT operator+(const SizeT& sz) const {
|
SizeT operator+(const SizeT& sz) const {
|
||||||
return SizeT(w+sz.w, h+sz.h);
|
return SizeT(w+sz.w, h+sz.h);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user