aseprite/src/doc/document.cpp

92 lines
1.3 KiB
C++
Raw Normal View History

2014-03-13 06:25:09 +08:00
// Aseprite Document Library
// Copyright (c) 2001-2015 David Capello
2014-03-13 06:25:09 +08:00
//
// This file is released under the terms of the MIT license.
// Read LICENSE.txt for more information.
2014-03-13 06:25:09 +08:00
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include "doc/document.h"
#include "base/path.h"
#include "doc/context.h"
#include "doc/sprite.h"
2014-03-13 06:25:09 +08:00
namespace doc {
Document::Document()
: Object(ObjectType::Document)
, m_sprites(this)
, m_ctx(NULL)
2014-03-13 06:25:09 +08:00
{
}
Document::~Document()
{
removeFromContext();
}
void Document::setContext(Context* ctx)
{
if (ctx == m_ctx)
return;
removeFromContext();
m_ctx = ctx;
if (ctx)
ctx->documents().add(this);
onContextChanged();
}
int Document::width() const
{
return sprite()->width();
}
int Document::height() const
{
return sprite()->height();
}
ColorMode Document::colorMode() const
{
return (ColorMode)sprite()->pixelFormat();
}
std::string Document::name() const
{
return base::get_file_name(m_filename);
}
2014-03-13 06:25:09 +08:00
void Document::setFilename(const std::string& filename)
{
m_filename = filename;
notifyObservers(&DocumentObserver::onFileNameChanged, this);
2014-03-13 06:25:09 +08:00
}
void Document::close()
{
removeFromContext();
}
void Document::onContextChanged()
{
// Do nothing
}
void Document::removeFromContext()
{
if (m_ctx) {
m_ctx->documents().remove(this);
m_ctx = NULL;
onContextChanged();
}
}
2014-03-13 06:25:09 +08:00
} // namespace doc