21 template <> LayerManager* Singleton<LayerManager>::msInstance =
nullptr;
22 template <>
const char* Singleton<LayerManager>::mClassTypeName =
"LayerManager";
26 mCategoryName(
"Layer")
60 mIsInitialise =
false;
63 void LayerManager::clear()
65 for (VectorLayer::iterator iter = mLayerNodes.begin(); iter != mLayerNodes.end(); ++iter)
77 while (layer.
next(mCategoryName))
84 MYGUI_LOG(Warning,
"Attribute 'name' not found (file : " << _file <<
")");
88 for (VectorLayer::iterator iter = layers.begin(); iter != layers.end(); ++iter)
90 MYGUI_ASSERT((*iter)->getName() != name,
"Layer '" << name <<
"' already exist (file : " << _file <<
")");
94 if (type.empty() && _version <=
Version(1, 0))
97 type = overlapped ?
"OverlappedLayer" :
"SharedLayer";
101 MYGUI_ASSERT(
object !=
nullptr,
"factory '" << type <<
"' is not found");
106 layers.push_back(item);
113 void LayerManager::_unlinkWidget(
Widget* _widget)
121 MYGUI_ASSERT(
nullptr != _item,
"pointer must be valid");
128 for (VectorLayer::iterator iter = mLayerNodes.begin(); iter != mLayerNodes.end(); ++iter)
130 if (_name == (*iter)->getName())
138 MYGUI_LOG(Error,
"Layer '" << _name <<
"' is not found");
144 MYGUI_ASSERT(
nullptr != _item,
"pointer must be valid");
150 MYGUI_ASSERT(
nullptr != _item,
"pointer must be valid");
156 return getByName(_name,
false) !=
nullptr;
161 for (VectorLayer::iterator iter = mLayerNodes.begin(); iter != mLayerNodes.end(); ++iter)
163 if ((*iter) ==
nullptr)
continue;
165 std::string name = (*iter)->
getName();
166 for (VectorLayer::iterator iter2 = _layers.begin(); iter2 != _layers.end(); ++iter2)
168 if (name == (*iter2)->getName())
186 mLayerNodes = _layers;
189 void LayerManager::destroy(
ILayer* _layer)
197 VectorLayer::reverse_iterator iter = mLayerNodes.rbegin();
198 while (iter != mLayerNodes.rend())
201 if (item !=
nullptr)
return static_cast<Widget*
>(item);
209 for (VectorLayer::iterator iter = mLayerNodes.begin(); iter != mLayerNodes.end(); ++iter)
211 (*iter)->renderToTarget(_target, _update);
217 for (VectorLayer::const_iterator iter = mLayerNodes.begin(); iter != mLayerNodes.end(); ++iter)
219 if (_name == (*iter)->getName())
222 MYGUI_ASSERT(!_throw,
"Layer '" << _name <<
"' not found");
233 for (VectorLayer::const_iterator iter = mLayerNodes.begin(); iter != mLayerNodes.end(); ++iter)
234 (*iter)->resizeView(_viewSize);
239 return mLayerNodes.size();
245 return mLayerNodes[_index];
250 return mCategoryName;
virtual void detachFromLayer()
const std::string & getName() const
void unregisterLoadXmlDelegate(const std::string &_key)
virtual void deserialization(xml::ElementPtr _node, Version _version)
LoadXmlDelegate & registerLoadXmlDelegate(const std::string &_key)
delegates::IDelegate0 * newDelegate(void(*_func)())
static WidgetManager & getInstance()
std::vector< ILayer * > VectorLayer
bool findAttribute(const std::string &_name, std::string &_value)
static const char * getClassTypeName()
virtual void upLayerItem()
size_t getLayerCount() const
const std::string & getCategoryName() const
bool isExist(const std::string &_name) const
virtual void attachLayerItem(ILayerItem *_item)=0
#define MYGUI_LOG(level, text)
void resizeView(const IntSize &_viewSize)
virtual ILayerNode * createChildItemNode()=0
Enumerator< VectorLayer > EnumeratorLayer
EnumeratorLayer getEnumerator() const
void detachFromLayer(Widget *_item)
#define MYGUI_ASSERT(exp, dest)
ILayer * getLayer(size_t _index)
void attachToLayerNode(const std::string &_name, Widget *_item)
virtual ILayerItem * getLayerItemByPoint(int _left, int _top) const =0
Type * castType(bool _throw=true)
void unregisterFactory(const std::string &_category, const std::string &_type)
bool parseBool(const std::string &_value)
#define MYGUI_ASSERT_RANGE(index, size, owner)
void registerFactory(const std::string &_category, const std::string &_type, Delegate::IDelegate *_delegate)
ElementEnumerator getElementEnumerator()
Widget * getWidgetFromPoint(int _left, int _top)
ILayer * getByName(const std::string &_name, bool _throw=true) const
IObject * createObject(const std::string &_category, const std::string &_type)
void renderToTarget(IRenderTarget *_target, bool _update)
void upLayerItem(Widget *_item)