108 lines
2.6 KiB
C++
108 lines
2.6 KiB
C++
/**
|
|
*******************************************************************************
|
|
* @file elementManager.cpp
|
|
* @brief ewol drawer element manager (Sources)
|
|
* @author Edouard DUPIN
|
|
* @date 14/03/2012
|
|
* @par Project
|
|
* EwolDrawer
|
|
*
|
|
* @par Copyright
|
|
* Copyright 2010 Edouard DUPIN, all right reserved
|
|
*
|
|
*******************************************************************************
|
|
*/
|
|
|
|
#include <Debug.h>
|
|
#include <elementManager.h>
|
|
#include <etk/VectorType.h>
|
|
#include <ewol/EObject.h>
|
|
#include <globalMsg.h>
|
|
|
|
static etk::VectorType<drawElement::Base*> l_listElements;
|
|
|
|
void drawElement::RemoveAll(void)
|
|
{
|
|
for (int32_t iii=l_listElements.Size()-1; iii>=0; iii--) {
|
|
if (l_listElements[iii]!=NULL) {
|
|
delete(l_listElements[iii]);
|
|
l_listElements[iii] = NULL;
|
|
}
|
|
}
|
|
l_listElements.Clear();
|
|
etk::UString tmpString("");
|
|
ewol::EObjectMessageMultiCast::AnonymousSend(drawMsgListElementChange, tmpString);
|
|
}
|
|
|
|
int32_t drawElement::Size(void)
|
|
{
|
|
return l_listElements.Size();
|
|
}
|
|
|
|
drawElement::Base* drawElement::Get(int32_t id)
|
|
{
|
|
if (id < l_listElements.Size() && id >=0) {
|
|
return l_listElements[id];
|
|
}
|
|
return NULL;
|
|
}
|
|
|
|
void drawElement::Rm(int32_t id)
|
|
{
|
|
if (id < l_listElements.Size() && id >=0) {
|
|
if (l_listElements[id]!=NULL) {
|
|
delete(l_listElements[id]);
|
|
l_listElements[id] = NULL;
|
|
}
|
|
l_listElements.Erase(id);
|
|
}
|
|
etk::UString tmpString("");
|
|
ewol::EObjectMessageMultiCast::AnonymousSend(drawMsgListElementChange, tmpString);
|
|
}
|
|
|
|
void drawElement::Add(elementType_te type)
|
|
{
|
|
drawElement::Base* newElement = NULL;
|
|
switch(type) {
|
|
case drawElement::DRAW_ELEMENT_TYPE_CIRCLE:
|
|
newElement = new drawElement::Circle();
|
|
break;
|
|
case drawElement::DRAW_ELEMENT_TYPE_DISK:
|
|
newElement = new drawElement::Disk();
|
|
break;
|
|
case drawElement::DRAW_ELEMENT_TYPE_MESH:
|
|
newElement = new drawElement::Mesh();
|
|
break;
|
|
case drawElement::DRAW_ELEMENT_TYPE_POLYGONE:
|
|
newElement = new drawElement::Polygone();
|
|
break;
|
|
case drawElement::DRAW_ELEMENT_TYPE_RECTANGLE:
|
|
newElement = new drawElement::Rectangle();
|
|
break;
|
|
default:
|
|
DRAW_ERROR("Unknow element type : " << type);
|
|
return;
|
|
}
|
|
if (NULL == newElement) {
|
|
DRAW_ERROR("Ellocation ERROR in the new element ... ");
|
|
return;
|
|
}
|
|
l_listElements.PushBack(newElement);
|
|
etk::UString tmpString("");
|
|
ewol::EObjectMessageMultiCast::AnonymousSend(drawMsgListElementChange, tmpString);
|
|
}
|
|
|
|
void drawElement::Up(int32_t id)
|
|
{
|
|
|
|
etk::UString tmpString("");
|
|
ewol::EObjectMessageMultiCast::AnonymousSend(drawMsgListElementChange, tmpString);
|
|
}
|
|
|
|
void drawElement::Down(int32_t id)
|
|
{
|
|
|
|
etk::UString tmpString("");
|
|
ewol::EObjectMessageMultiCast::AnonymousSend(drawMsgListElementChange, tmpString);
|
|
}
|