add basic forme drawer

This commit is contained in:
Edouard Dupin 2012-03-14 18:30:38 +01:00
parent 64b4f4254f
commit d2034bf69b
19 changed files with 676 additions and 34 deletions

View File

@ -43,6 +43,7 @@
#include <ewol/WidgetManager.h>
#include <globalMsg.h>
#include <widgetDrawer.h>
#include <elementManager.h>
#include <Debug.h>
@ -57,7 +58,9 @@
class MaListExemple : public ewol::List
{
public:
MaListExemple(void) { };
MaListExemple(void) {
RegisterMultiCast(drawMsgListElementChange);
};
~MaListExemple(void) { };
/*
virtual color_ts GetBasicBG(void) {
@ -77,22 +80,19 @@ class MaListExemple : public ewol::List
return true;
};
uint32_t GetNuberOfRaw(void) {
return 3;
return drawElement::Size();
};
bool GetElement(int32_t colomn, int32_t raw, etk::UString &myTextToWrite, color_ts &fg, color_ts &bg) {
switch (raw) {
case 0:
myTextToWrite = "Ligne 1";
break;
case 1:
myTextToWrite = "ma ligne 2";
break;
case 2:
myTextToWrite = "test de clipping du text et plus si afinitee";
break;
default:
myTextToWrite = "ERROR";
break;
drawElement::Base* elementLocal = drawElement::Get(raw);
myTextToWrite = "[";
myTextToWrite += raw;
myTextToWrite += "] ";
if (NULL == elementLocal) {
myTextToWrite += "????";
} else {
myTextToWrite += elementLocal->GetType();
myTextToWrite += "-";
myTextToWrite += elementLocal->GetName();
}
fg.red = 0.0;
fg.green = 0.0;
@ -118,7 +118,19 @@ class MaListExemple : public ewol::List
}
return false;
}
/**
* @brief Receive a message from an other EObject with a specific eventId and data
* @param[in] CallerObject Pointer on the EObject that information came from
* @param[in] eventId Message registered by this class
* @param[in] data Data registered by this class
* @return ---
*/
virtual void OnReceiveMessage(ewol::EObject * CallerObject, const char * eventId, etk::UString data)
{
if (eventId == drawMsgListElementChange) {
MarkToReedraw();
}
}
};
@ -151,19 +163,19 @@ class MainWindows :public ewol::Windows
(void)myMenu->Add(idMenuFile, "Save", "", drawMsgGuiSave);
(void)myMenu->Add(idMenuFile, "Save As ...", "", drawMsgGuiSaveAs);
(void)myMenu->AddSpacer();
/*
int32_t idMenuEdit = myMenu->AddTitle("Edit");
(void)myMenu->Add(idMenuEdit, "Undo", "", drawMsgGuiUndo);
(void)myMenu->Add(idMenuEdit, "Redo", "", drawMsgGuiRedo);
*/
int32_t idMenuElement = myMenu->AddTitle("Element");
(void)myMenu->Add(idMenuElement, "Element new", "", drawMsgGuiElementNew);
(void)myMenu->Add(idMenuElement, "Element Remove", "", drawMsgGuiElementRemove);
(void)myMenu->Add(idMenuElement, "Element hide/show", "", drawMsgGuiElementHideShow);
(void)myMenu->AddSpacer();
(void)myMenu->Add(idMenuElement, "Dot Add", "", drawMsgGuiDotAdd);
(void)myMenu->Add(idMenuElement, "Dot Rm", "", drawMsgGuiDotRm);
(void)myMenu->AddSpacer();
(void)myMenu->Add(idMenuElement, "Link Start", "", drawMsgGuiLinkStart);
(void)myMenu->Add(idMenuElement, "Link Stop", "", drawMsgGuiLinkStop);
(void)myMenu->Add(idMenuElement, "new mesh", "", drawMsgGuiElementNewMesh);
(void)myMenu->Add(idMenuElement, "new circle", "", drawMsgGuiElementNewCircle);
(void)myMenu->Add(idMenuElement, "new disk", "", drawMsgGuiElementNewDisk);
(void)myMenu->Add(idMenuElement, "new rectangle", "", drawMsgGuiElementNewRectangle);
(void)myMenu->Add(idMenuElement, "new polygone", "", drawMsgGuiElementNewPolygone);
(void)myMenu->Add(idMenuElement, "Remove", "", drawMsgGuiElementRemove);
(void)myMenu->Add(idMenuElement, "hide/show", "", drawMsgGuiElementHideShow);
// generate the display :
ewol::SizerHori * mySizer = new ewol::SizerHori();
@ -228,6 +240,13 @@ class MainWindows :public ewol::Windows
RegisterMultiCast(drawMsgGuiOpen);
RegisterMultiCast(drawMsgGuiSave);
RegisterMultiCast(drawMsgGuiElementNewMesh);
RegisterMultiCast(drawMsgGuiElementNewCircle);
RegisterMultiCast(drawMsgGuiElementNewDisk);
RegisterMultiCast(drawMsgGuiElementNewRectangle);
RegisterMultiCast(drawMsgGuiElementNewPolygone);
RegisterMultiCast(drawMsgGuiElementRemove);
RegisterMultiCast(drawMsgGuiElementHideShow);
};
~MainWindows(void)
@ -304,6 +323,16 @@ class MainWindows :public ewol::Windows
}
}
}
} else if (eventId == drawMsgGuiElementNewMesh) {
drawElement::Add(drawElement::DRAW_ELEMENT_TYPE_MESH);
} else if (eventId == drawMsgGuiElementNewCircle) {
drawElement::Add(drawElement::DRAW_ELEMENT_TYPE_CIRCLE);
} else if (eventId == drawMsgGuiElementNewDisk) {
drawElement::Add(drawElement::DRAW_ELEMENT_TYPE_DISK);
} else if (eventId == drawMsgGuiElementNewRectangle) {
drawElement::Add(drawElement::DRAW_ELEMENT_TYPE_RECTANGLE);
} else if (eventId == drawMsgGuiElementNewPolygone) {
drawElement::Add(drawElement::DRAW_ELEMENT_TYPE_POLYGONE);
}
return;
};

29
jni/elementBase.cpp Normal file
View File

@ -0,0 +1,29 @@
/**
*******************************************************************************
* @file elementBase.h
* @brief ewol drawer element Base (header)
* @author Edouard DUPIN
* @date 14/03/2012
* @par Project
* EwolDrawer
*
* @par Copyright
* Copyright 2010 Edouard DUPIN, all right reserved
*
*******************************************************************************
*/
#include <Debug.h>
#include <elementBase.h>
drawElement::Base::Base(const char* type)
{
m_name = "NoName";
m_type = type;
m_visible = true;
}
drawElement::Base::~Base(void)
{
}

52
jni/elementBase.h Normal file
View File

@ -0,0 +1,52 @@
/**
*******************************************************************************
* @file elementBase.h
* @brief ewol drawer element Base (header)
* @author Edouard DUPIN
* @date 14/03/2012
* @par Project
* EwolDrawer
*
* @par Copyright
* Copyright 2010 Edouard DUPIN, all right reserved
*
*******************************************************************************
*/
#ifndef __ELEMENT_BASE_H__
#define __ELEMENT_BASE_H__
#include <etk/Types.h>
#include <etk/UString.h>
#include <ewol/OObject/2DColored.h>
namespace drawElement {
class Base
{
public:
Base(const char* type);
virtual ~Base(void);
private:
etk::UString m_name;
const char* m_type;
bool m_visible;
public:
void SetName(etk::UString name) { m_name = name; };
etk::UString GetName(void) { return m_name; };
const char* GetType(void) { return m_type; };
void Show(void) { m_visible = true; };
void Hide(void) { m_visible = false; };
bool GetVisible(void) { return m_visible; };
public:
virtual void Draw(ewol::OObject2DColored &OObjects)=0;
};
};
#include <elementCircle.h>
#include <elementDisk.h>
#include <elementMesh.h>
#include <elementPolygone.h>
#include <elementRectangle.h>
#endif

36
jni/elementCircle.cpp Normal file
View File

@ -0,0 +1,36 @@
/**
*******************************************************************************
* @file elementCircle.cpp
* @brief ewol drawer element Circle (Sources)
* @author Edouard DUPIN
* @date 14/03/2012
* @par Project
* EwolDrawer
*
* @par Copyright
* Copyright 2010 Edouard DUPIN, all right reserved
*
*******************************************************************************
*/
#include <Debug.h>
#include <elementBase.h>
drawElement::Circle::Circle(void) : Base("Circle")
{
}
drawElement::Circle::~Circle(void)
{
}
void drawElement::Circle::Draw(ewol::OObject2DColored &OObjects)
{
OObjects.SetColor(1.0, 0.0, 1.0, 1.0);
OObjects.Circle(0.2, 0.2, 0.3, 0.05);
}

35
jni/elementCircle.h Normal file
View File

@ -0,0 +1,35 @@
/**
*******************************************************************************
* @file elementCircle.h
* @brief ewol drawer element Circle (header)
* @author Edouard DUPIN
* @date 14/03/2012
* @par Project
* EwolDrawer
*
* @par Copyright
* Copyright 2010 Edouard DUPIN, all right reserved
*
*******************************************************************************
*/
#ifndef __ELEMENT_CIRCLE_H__
#define __ELEMENT_CIRCLE_H__
namespace drawElement {
class Circle : public drawElement::Base
{
public:
Circle(void);
virtual ~Circle(void);
private:
public:
public:
virtual void Draw(ewol::OObject2DColored &OObjects);
};
};
#endif

41
jni/elementDisk.cpp Normal file
View File

@ -0,0 +1,41 @@
/**
*******************************************************************************
* @file elementDisk.cpp
* @brief ewol drawer element disk (Sources)
* @author Edouard DUPIN
* @date 14/03/2012
* @par Project
* EwolDrawer
*
* @par Copyright
* Copyright 2010 Edouard DUPIN, all right reserved
*
*******************************************************************************
*/
#include <Debug.h>
#include <elementBase.h>
drawElement::Disk::Disk(void) : Base("Disk")
{
}
drawElement::Disk::~Disk(void)
{
}
void drawElement::Disk::Draw(ewol::OObject2DColored &OObjects)
{
OObjects.SetColor(0.0, 1.0, 1.0, 1.0);
OObjects.Disc(0.7, 0.7, 0.3);
}

35
jni/elementDisk.h Normal file
View File

@ -0,0 +1,35 @@
/**
*******************************************************************************
* @file elementDisk.h
* @brief ewol drawer element disk (header)
* @author Edouard DUPIN
* @date 14/03/2012
* @par Project
* EwolDrawer
*
* @par Copyright
* Copyright 2010 Edouard DUPIN, all right reserved
*
*******************************************************************************
*/
#ifndef __ELEMENT_DISK_H__
#define __ELEMENT_DISK_H__
namespace drawElement {
class Disk : public drawElement::Base
{
public:
Disk(void);
virtual ~Disk(void);
private:
public:
public:
virtual void Draw(ewol::OObject2DColored &OObjects);
};
};
#endif

107
jni/elementManager.cpp Normal file
View File

@ -0,0 +1,107 @@
/**
*******************************************************************************
* @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);
}

41
jni/elementManager.h Normal file
View File

@ -0,0 +1,41 @@
/**
*******************************************************************************
* @file elementManager.h
* @brief ewol drawer element manager (header)
* @author Edouard DUPIN
* @date 14/03/2012
* @par Project
* EwolDrawer
*
* @par Copyright
* Copyright 2010 Edouard DUPIN, all right reserved
*
*******************************************************************************
*/
#ifndef __ELEMENT_MANAGER_H__
#define __ELEMENT_MANAGER_H__
#include <elementBase.h>
namespace drawElement {
typedef enum {
DRAW_ELEMENT_TYPE_CIRCLE,
DRAW_ELEMENT_TYPE_DISK,
DRAW_ELEMENT_TYPE_MESH,
DRAW_ELEMENT_TYPE_POLYGONE,
DRAW_ELEMENT_TYPE_RECTANGLE,
}elementType_te;
void RemoveAll(void);
int32_t Size(void);
drawElement::Base * Get(int32_t id);
void Rm(int32_t id);
void Add(elementType_te type);
void Up(int32_t id);
void Down(int32_t id);
};
#endif

37
jni/elementMesh.cpp Normal file
View File

@ -0,0 +1,37 @@
/**
*******************************************************************************
* @file elementMesh.cpp
* @brief ewol drawer element mesh (Sources)
* @author Edouard DUPIN
* @date 14/03/2012
* @par Project
* EwolDrawer
*
* @par Copyright
* Copyright 2010 Edouard DUPIN, all right reserved
*
*******************************************************************************
*/
#include <Debug.h>
#include <elementBase.h>
drawElement::Mesh::Mesh(void) : Base("Mesh")
{
}
drawElement::Mesh::~Mesh(void)
{
}
void drawElement::Mesh::Draw(ewol::OObject2DColored &OObjects)
{
OObjects.SetColor(0.0, 1.0, 0.0, 1.0);
}

35
jni/elementMesh.h Normal file
View File

@ -0,0 +1,35 @@
/**
*******************************************************************************
* @file elementMesh.h
* @brief ewol drawer element mesh (header)
* @author Edouard DUPIN
* @date 14/03/2012
* @par Project
* EwolDrawer
*
* @par Copyright
* Copyright 2010 Edouard DUPIN, all right reserved
*
*******************************************************************************
*/
#ifndef __ELEMENT_MESH_H__
#define __ELEMENT_MESH_H__
namespace drawElement {
class Mesh : public drawElement::Base
{
public:
Mesh(void);
virtual ~Mesh(void);
private:
public:
public:
virtual void Draw(ewol::OObject2DColored &OObjects);
};
};
#endif

37
jni/elementPolygone.cpp Normal file
View File

@ -0,0 +1,37 @@
/**
*******************************************************************************
* @file elementPolygone.cpp
* @brief ewol drawer element polygone (Sources)
* @author Edouard DUPIN
* @date 14/03/2012
* @par Project
* EwolDrawer
*
* @par Copyright
* Copyright 2010 Edouard DUPIN, all right reserved
*
*******************************************************************************
*/
#include <Debug.h>
#include <elementBase.h>
drawElement::Polygone::Polygone(void) : Base("Polygone")
{
}
drawElement::Polygone::~Polygone(void)
{
}
void drawElement::Polygone::Draw(ewol::OObject2DColored &OObjects)
{
OObjects.SetColor(0.0, 0.0, 1.0, 1.0);
}

35
jni/elementPolygone.h Normal file
View File

@ -0,0 +1,35 @@
/**
*******************************************************************************
* @file elementPolygone.h
* @brief ewol drawer element polygone (header)
* @author Edouard DUPIN
* @date 14/03/2012
* @par Project
* EwolDrawer
*
* @par Copyright
* Copyright 2010 Edouard DUPIN, all right reserved
*
*******************************************************************************
*/
#ifndef __ELEMENT_POLYGONE_H__
#define __ELEMENT_POLYGONE_H__
namespace drawElement {
class Polygone : public drawElement::Base
{
public:
Polygone(void);
virtual ~Polygone(void);
private:
public:
public:
virtual void Draw(ewol::OObject2DColored &OObjects);
};
};
#endif

38
jni/elementRectangle.cpp Normal file
View File

@ -0,0 +1,38 @@
/**
*******************************************************************************
* @file elementRectangle.cpp
* @brief ewol drawer element Rectangle (Sources)
* @author Edouard DUPIN
* @date 14/03/2012
* @par Project
* EwolDrawer
*
* @par Copyright
* Copyright 2010 Edouard DUPIN, all right reserved
*
*******************************************************************************
*/
#include <Debug.h>
#include <elementBase.h>
drawElement::Rectangle::Rectangle(void) : Base("Rectangle")
{
}
drawElement::Rectangle::~Rectangle(void)
{
}
void drawElement::Rectangle::Draw(ewol::OObject2DColored &OObjects)
{
OObjects.SetColor(1.0, 0.0, 0.0, 1.0);
OObjects.Rectangle(0.5, 0.5, 0.3, 0.3);
}

35
jni/elementRectangle.h Normal file
View File

@ -0,0 +1,35 @@
/**
*******************************************************************************
* @file elementRectangle.h
* @brief ewol drawer element Rectangle (header)
* @author Edouard DUPIN
* @date 14/03/2012
* @par Project
* EwolDrawer
*
* @par Copyright
* Copyright 2010 Edouard DUPIN, all right reserved
*
*******************************************************************************
*/
#ifndef __ELEMENT_RECTANGLE_H__
#define __ELEMENT_RECTANGLE_H__
namespace drawElement {
class Rectangle : public drawElement::Base
{
public:
Rectangle(void);
virtual ~Rectangle(void);
private:
public:
public:
virtual void Draw(ewol::OObject2DColored &OObjects);
};
};
#endif

View File

@ -4,5 +4,12 @@ FILE_LIST = Main.cpp \
Debug.cpp \
globalMsg.cpp \
widgetDrawer.cpp \
elementManager.cpp \
elementBase.cpp \
elementCircle.cpp \
elementDisk.cpp \
elementMesh.cpp \
elementPolygone.cpp \
elementRectangle.cpp

View File

@ -27,11 +27,17 @@ extern const char* const drawMsgGuiSaveAs = "draw-Msg-Gui-SaveAs";
extern const char* const drawMsgGuiUndo = "draw-Msg-Gui-Undo";
extern const char* const drawMsgGuiRedo = "draw-Msg-Gui-Redo";
extern const char* const drawMsgGuiElementNew = "draw-Msg-Gui-Element-new";
extern const char* const drawMsgGuiElementRemove = "draw-Msg-Gui-Element-remove";
extern const char* const drawMsgGuiElementHideShow = "draw-Msg-Gui-Element-hide";
extern const char* const drawMsgGuiDotAdd = "draw-Msg-Gui-Dot-Add";
extern const char* const drawMsgGuiDotRm = "draw-Msg-Gui-Dot-Rm";
extern const char* const drawMsgGuiLinkStart = "draw-Msg-Gui-Link-Start";
extern const char* const drawMsgGuiLinkStop = "draw-Msg-Gui-Link-Stop";
extern const char* const drawMsgGuiLinkNew = "draw-Msg-Gui-Link-New";
extern const char* const drawMsgGuiElementNewMesh = "draw-Msg-Gui-Element-new-mesh";
extern const char* const drawMsgGuiElementNewCircle = "draw-Msg-Gui-Element-new-circle";
extern const char* const drawMsgGuiElementNewDisk = "draw-Msg-Gui-Element-new-disk";
extern const char* const drawMsgGuiElementNewRectangle = "draw-Msg-Gui-Element-new-rectangle";
extern const char* const drawMsgGuiElementNewPolygone = "draw-Msg-Gui-Element-new-polygone";
extern const char* const drawMsgGuiElementRemove = "draw-Msg-Gui-Element-remove";
extern const char* const drawMsgGuiElementHideShow = "draw-Msg-Gui-Element-hide";
extern const char* const drawMsgGuiDotAdd = "draw-Msg-Gui-Dot-Add";
extern const char* const drawMsgGuiDotRm = "draw-Msg-Gui-Dot-Rm";
extern const char* const drawMsgGuiLinkStart = "draw-Msg-Gui-Link-Start";
extern const char* const drawMsgGuiLinkStop = "draw-Msg-Gui-Link-Stop";
extern const char* const drawMsgGuiLinkNew = "draw-Msg-Gui-Link-New";
extern const char* const drawMsgListElementChange = "draw-Msg-list_elemeChange";

View File

@ -30,7 +30,11 @@
extern const char* const drawMsgGuiUndo; // data : ""
extern const char* const drawMsgGuiRedo; // data : ""
extern const char* const drawMsgGuiElementNew;
extern const char* const drawMsgGuiElementNewMesh;
extern const char* const drawMsgGuiElementNewCircle;
extern const char* const drawMsgGuiElementNewDisk;
extern const char* const drawMsgGuiElementNewRectangle;
extern const char* const drawMsgGuiElementNewPolygone;
extern const char* const drawMsgGuiElementRemove;
extern const char* const drawMsgGuiElementHideShow;
extern const char* const drawMsgGuiDotAdd;
@ -38,6 +42,8 @@
extern const char* const drawMsgGuiLinkStart;
extern const char* const drawMsgGuiLinkStop;
extern const char* const drawMsgGuiLinkNew;
extern const char* const drawMsgListElementChange;
#endif

View File

@ -628,6 +628,7 @@ void widgetDrawer::Save(void)
TiXmlElement * element = new TiXmlElement( "element" );
element->SetAttribute( "name", "???" );
element->SetAttribute( "type", "mesh" );
mastertElement->LinkEndChild( element );
for(int32_t iii=0; iii<m_dotList.Size() ; iii++) {