90 lines
1.6 KiB
C++
90 lines
1.6 KiB
C++
|
|
||
|
|
||
|
#include "ext/CompositeStatus.h"
|
||
|
|
||
|
#include "tgeometry.h"
|
||
|
#include "tvectorimage.h"
|
||
|
|
||
|
#include "ext/Types.h"
|
||
|
#include "ext/StrokeParametricDeformer.h"
|
||
|
|
||
|
#include <vector>
|
||
|
|
||
|
namespace ToonzExt
|
||
|
{
|
||
|
|
||
|
//---------------------------------------------------------------------------
|
||
|
/**
|
||
|
*@class CompositeStatus
|
||
|
*@brief This class mantains interal data for Dragger manipulator.
|
||
|
*/
|
||
|
CompositeStatus::CompositeStatus()
|
||
|
: dbImpl_(new std::map<std::string, CompositeStatus *>), db_(*dbImpl_)
|
||
|
{
|
||
|
}
|
||
|
|
||
|
//---------------------------------------------------------------------------
|
||
|
|
||
|
CompositeStatus::~CompositeStatus()
|
||
|
{
|
||
|
iterator
|
||
|
it = db_.begin(),
|
||
|
end = db_.end();
|
||
|
|
||
|
while (it != end) {
|
||
|
delete it->second;
|
||
|
++it;
|
||
|
}
|
||
|
|
||
|
delete dbImpl_;
|
||
|
}
|
||
|
|
||
|
//---------------------------------------------------------------------------
|
||
|
|
||
|
void CompositeStatus::add(CompositeStatus *status,
|
||
|
const std::string &name)
|
||
|
{
|
||
|
if (!status)
|
||
|
return;
|
||
|
|
||
|
CompositeStatus
|
||
|
*tmp = this->find(name);
|
||
|
|
||
|
if (tmp)
|
||
|
delete tmp;
|
||
|
|
||
|
db_[name] = status;
|
||
|
}
|
||
|
|
||
|
//---------------------------------------------------------------------------
|
||
|
|
||
|
void CompositeStatus::remove(const std::string &name)
|
||
|
{
|
||
|
iterator
|
||
|
found = db_.find(name),
|
||
|
end = db_.end();
|
||
|
|
||
|
if (found != end) {
|
||
|
delete found->second;
|
||
|
db_.erase(found);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
//---------------------------------------------------------------------------
|
||
|
|
||
|
CompositeStatus *
|
||
|
CompositeStatus::find(const std::string &name) const
|
||
|
{
|
||
|
const_iterator
|
||
|
found = db_.find(name),
|
||
|
end = db_.end();
|
||
|
|
||
|
if (found != end)
|
||
|
return found->second;
|
||
|
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
//---------------------------------------------------------------------------
|
||
|
}
|