From a5451a9f7f9c5ec804bf5451c3627119d636a44c Mon Sep 17 00:00:00 2001 From: Edouard DUPIN Date: Tue, 16 Apr 2013 21:12:20 +0200 Subject: [PATCH] [DEBUG] correction of debug and expand of sizer --- external/etk | 2 +- sources/ewol/Dimension.cpp | 3 ++ sources/ewol/eObject/EObject.cpp | 10 ++++- sources/ewol/eObject/EObject.h | 4 +- sources/ewol/renderer/openGL.cpp | 42 ++++++++++++------- .../renderer/resources/Colored3DObject.cpp | 3 ++ .../ewol/renderer/resources/ConfigFile.cpp | 3 ++ .../ewol/renderer/resources/FontFreeType.cpp | 2 +- sources/ewol/renderer/resources/Image.cpp | 2 + sources/ewol/renderer/resources/Mesh.cpp | 3 ++ sources/ewol/renderer/resources/MeshObj.cpp | 2 + sources/ewol/renderer/resources/Program.cpp | 4 ++ sources/ewol/renderer/resources/Shader.cpp | 2 + sources/ewol/renderer/resources/Texture.cpp | 2 + .../ewol/renderer/resources/TexturedFont.cpp | 2 + .../resources/VirtualBufferObject.cpp | 3 ++ sources/ewol/widget/Container.cpp | 4 ++ sources/ewol/widget/ContainerN.cpp | 10 +++-- sources/ewol/widget/ContainerN.h | 2 +- sources/ewol/widget/Sizer.cpp | 6 +-- 20 files changed, 84 insertions(+), 27 deletions(-) diff --git a/external/etk b/external/etk index dffd6233..4ffe6c34 160000 --- a/external/etk +++ b/external/etk @@ -1 +1 @@ -Subproject commit dffd6233d37dd886f910ca95d9f176724b6fc4ff +Subproject commit 4ffe6c34272127f822d6643273a471a0074e7743 diff --git a/sources/ewol/Dimension.cpp b/sources/ewol/Dimension.cpp index e1a90121..e5259601 100644 --- a/sources/ewol/Dimension.cpp +++ b/sources/ewol/Dimension.cpp @@ -9,6 +9,9 @@ #include #include +#undef __class__ +#define __class__ "Dimension" + // ratio in milimeter : static vec2 ratio(9999999,888888); static vec2 invRatio(1,1); diff --git a/sources/ewol/eObject/EObject.cpp b/sources/ewol/eObject/EObject.cpp index de89fb28..8ef78a4f 100644 --- a/sources/ewol/eObject/EObject.cpp +++ b/sources/ewol/eObject/EObject.cpp @@ -153,7 +153,12 @@ void ewol::EObject::GenerateEventId(const char * generateEventId, const etk::USt // if we find the event ... if (m_externEvent[iii]->localEventId == generateEventId) { if (NULL != m_externEvent[iii]->destEObject) { - m_externEvent[iii]->destEObject->OnReceiveMessage(this, m_externEvent[iii]->destEventId, data); + if (m_externEvent[iii]->overloadData.Size()<=0){ + m_externEvent[iii]->destEObject->OnReceiveMessage(this, m_externEvent[iii]->destEventId, data); + } else { + // set the user requested data ... + m_externEvent[iii]->destEObject->OnReceiveMessage(this, m_externEvent[iii]->destEventId, m_externEvent[iii]->overloadData); + } } } } @@ -177,7 +182,7 @@ void ewol::EObject::RegisterMultiCast(const char* const messageId) MultiCastAdd(this, messageId); } -void ewol::EObject::RegisterOnEvent(ewol::EObject * destinationObject, const char * eventId, const char * eventIdgenerated) +void ewol::EObject::RegisterOnEvent(ewol::EObject * destinationObject, const char * eventId, const char * eventIdgenerated, const etk::UString& overloadData) { if (NULL == destinationObject) { EWOL_ERROR("Input ERROR NULL pointer EObject ..."); @@ -216,6 +221,7 @@ void ewol::EObject::RegisterOnEvent(ewol::EObject * destinationObject, const cha } tmpEvent->localEventId = eventId; tmpEvent->destEObject = destinationObject; + tmpEvent->overloadData = overloadData; if (NULL != eventIdgenerated) { tmpEvent->destEventId = eventIdgenerated; } else { diff --git a/sources/ewol/eObject/EObject.h b/sources/ewol/eObject/EObject.h index 93dd918a..60159eed 100644 --- a/sources/ewol/eObject/EObject.h +++ b/sources/ewol/eObject/EObject.h @@ -29,6 +29,7 @@ namespace ewol { const char* localEventId; //!< local event Id generation ewol::EObject* destEObject; //!< destination widget that might be call const char* destEventId; //!< Generated event ID on the distant widget + etk::UString overloadData; //!< sometimes the user prefer to receive some specific data on an event (instead of the one sed by the widget) }; /** @@ -107,8 +108,9 @@ namespace ewol { * @param[in] destinationObject pointer on the object that might be call when an event is generated * @param[in] eventId Event generate inside the object * @param[in] eventIdgenerated event generated when call the distant EObject.OnReceiveMessage(...) + * @param[in] overloadData When the user prever to receive a data specificly for this event ... */ - void RegisterOnEvent(ewol::EObject * destinationObject, const char * eventId, const char * eventIdgenerated = NULL); + void RegisterOnEvent(ewol::EObject * destinationObject, const char * eventId, const char * eventIdgenerated = NULL, const etk::UString& overloadData=""); /** * @brief Inform object that an other object is removed ... diff --git a/sources/ewol/renderer/openGL.cpp b/sources/ewol/renderer/openGL.cpp index 3560f729..a4039418 100644 --- a/sources/ewol/renderer/openGL.cpp +++ b/sources/ewol/renderer/openGL.cpp @@ -236,21 +236,21 @@ void ewol::openGL::UpdateAllFlags(void) void ewol::openGL::ActiveTexture(uint32_t flagID) { - if (l_programId>0) { + if (l_programId>=0) { glActiveTexture(flagID); } } void ewol::openGL::DesActiveTexture(uint32_t flagID) { - if (l_programId>0) { + if (l_programId>=0) { } } void ewol::openGL::DrawArrays(uint32_t mode, int32_t first, int32_t count) { - if (l_programId>0) { + if (l_programId>=0) { UpdateAllFlags(); glDrawArrays(mode, first, count); } @@ -258,7 +258,7 @@ void ewol::openGL::DrawArrays(uint32_t mode, int32_t first, int32_t count) void ewol::openGL::DrawElements(uint32_t mode, const etk::Vector& indices) { - if (l_programId>0) { + if (l_programId>=0) { UpdateAllFlags(); //EWOL_DEBUG("Request draw of " << indices.Size() << "elements"); glDrawElements(mode, indices.Size(), GL_UNSIGNED_INT, &indices[0]); @@ -267,7 +267,7 @@ void ewol::openGL::DrawElements(uint32_t mode, const etk::Vector& indi void ewol::openGL::DrawElements16(uint32_t mode, const etk::Vector& indices) { - if (l_programId>0) { + if (l_programId>=0) { UpdateAllFlags(); glDrawElements(mode, indices.Size(), GL_UNSIGNED_SHORT, &indices[0]); } @@ -275,7 +275,7 @@ void ewol::openGL::DrawElements16(uint32_t mode, const etk::Vector& in void ewol::openGL::DrawElements8(uint32_t mode, const etk::Vector& indices) { - if (l_programId>0) { + if (l_programId>=0) { UpdateAllFlags(); glDrawElements(mode, indices.Size(), GL_UNSIGNED_BYTE, &indices[0]); } @@ -284,15 +284,27 @@ void ewol::openGL::DrawElements8(uint32_t mode, const etk::Vector& indi void ewol::openGL::UseProgram(int32_t id) { - // note : program at -1 mean that no use of a program on open GL (here we did not use it ) when 0 ==> program error ... - if (-1==id) { - // not used ==> because it is unneded - return; - } - if (l_programId != id) { - l_programId = id; - glUseProgram(l_programId); - } + //EWOL_DEBUG("USE prog : " << id); + #if 1 + // note : In normal openGL case, the system might call with the program ID and at the end with 0, + // here, we wrap this use to prevent over call of glUseProgram ==> then we set -1 when the + // user no more use this program, and just stop grnerating. (chen 0 ==> this is an errored program ... + if (-1==id) { + // not used ==> because it is unneded + return; + } + if (l_programId != id) { + l_programId = id; + glUseProgram(l_programId); + } + #else + if (-1==id) { + glUseProgram(0); + } else { + l_programId = id; + glUseProgram(id); + } + #endif } diff --git a/sources/ewol/renderer/resources/Colored3DObject.cpp b/sources/ewol/renderer/resources/Colored3DObject.cpp index 508fa6d3..4f942b03 100644 --- a/sources/ewol/renderer/resources/Colored3DObject.cpp +++ b/sources/ewol/renderer/resources/Colored3DObject.cpp @@ -10,6 +10,9 @@ #include #include +#undef __class__ +#define __class__ "Colored3DObject" + ewol::Colored3DObject::Colored3DObject(etk::UString genName) : ewol::Resource(genName), diff --git a/sources/ewol/renderer/resources/ConfigFile.cpp b/sources/ewol/renderer/resources/ConfigFile.cpp index 07d8b7ba..b1434c36 100644 --- a/sources/ewol/renderer/resources/ConfigFile.cpp +++ b/sources/ewol/renderer/resources/ConfigFile.cpp @@ -10,6 +10,9 @@ #include #include +#undef __class__ +#define __class__ "ConfigFile" + void ewol::SimpleConfigElement::Parse(const etk::UString& value) { diff --git a/sources/ewol/renderer/resources/FontFreeType.cpp b/sources/ewol/renderer/resources/FontFreeType.cpp index 5b2a5086..577a5c80 100644 --- a/sources/ewol/renderer/resources/FontFreeType.cpp +++ b/sources/ewol/renderer/resources/FontFreeType.cpp @@ -19,7 +19,7 @@ #undef __class__ -#define __class__ "ewol::FontFreeType" +#define __class__ "FontFreeType" // free Font hnadle of librairies ... entry for acces ... diff --git a/sources/ewol/renderer/resources/Image.cpp b/sources/ewol/renderer/resources/Image.cpp index fddfdb78..cd8c57ab 100644 --- a/sources/ewol/renderer/resources/Image.cpp +++ b/sources/ewol/renderer/resources/Image.cpp @@ -20,6 +20,8 @@ #include #include +#undef __class__ +#define __class__ "TextureFile" ewol::TextureFile::TextureFile(etk::UString genName, etk::UString tmpfileName, ivec2 size) : Texture(genName) diff --git a/sources/ewol/renderer/resources/Mesh.cpp b/sources/ewol/renderer/resources/Mesh.cpp index 61fbe59b..863af4bf 100644 --- a/sources/ewol/renderer/resources/Mesh.cpp +++ b/sources/ewol/renderer/resources/Mesh.cpp @@ -10,6 +10,9 @@ #include #include +#undef __class__ +#define __class__ "Mesh" + typedef enum { VERTEX_OLD, VERTEX_CENTER_FACE, diff --git a/sources/ewol/renderer/resources/MeshObj.cpp b/sources/ewol/renderer/resources/MeshObj.cpp index 2d9683c9..b5da6b31 100644 --- a/sources/ewol/renderer/resources/MeshObj.cpp +++ b/sources/ewol/renderer/resources/MeshObj.cpp @@ -14,6 +14,8 @@ #include #include +#undef __class__ +#define __class__ "MeshObj" ewol::MeshObj::MeshObj(etk::UString _fileName) : ewol::Mesh(_fileName) diff --git a/sources/ewol/renderer/resources/Program.cpp b/sources/ewol/renderer/resources/Program.cpp index 78ad53f5..de2dedc3 100644 --- a/sources/ewol/renderer/resources/Program.cpp +++ b/sources/ewol/renderer/resources/Program.cpp @@ -16,6 +16,9 @@ //#define LOCAL_DEBUG EWOL_VERBOSE #define LOCAL_DEBUG EWOL_DEBUG +#undef __class__ +#define __class__ "Program" + ewol::Program::Program(const etk::UString& filename) : ewol::Resource(filename), m_exist(false), @@ -177,6 +180,7 @@ void ewol::Program::UpdateContext(void) checkGlError("glCreateProgram", __LINE__); return; } + EWOL_DEBUG("Create program with oglID=" << m_program); // first attach vertex shader, and after fragment shader for (int32_t iii=0; iii +#undef __class__ +#define __class__ "Shader" ewol::Shader::Shader(const etk::UString& filename): ewol::Resource(filename), diff --git a/sources/ewol/renderer/resources/Texture.cpp b/sources/ewol/renderer/resources/Texture.cpp index aabdc0af..513ee3a7 100644 --- a/sources/ewol/renderer/resources/Texture.cpp +++ b/sources/ewol/renderer/resources/Texture.cpp @@ -16,6 +16,8 @@ #include +#undef __class__ +#define __class__ "Texture" /** * @brief get the next power 2 if the input diff --git a/sources/ewol/renderer/resources/TexturedFont.cpp b/sources/ewol/renderer/resources/TexturedFont.cpp index 261e64f7..469b4c4d 100644 --- a/sources/ewol/renderer/resources/TexturedFont.cpp +++ b/sources/ewol/renderer/resources/TexturedFont.cpp @@ -16,6 +16,8 @@ #include #include +#undef __class__ +#define __class__ "TexturedFont" static int32_t nextP2(int32_t value) { diff --git a/sources/ewol/renderer/resources/VirtualBufferObject.cpp b/sources/ewol/renderer/resources/VirtualBufferObject.cpp index 835d7096..e3ad8156 100644 --- a/sources/ewol/renderer/resources/VirtualBufferObject.cpp +++ b/sources/ewol/renderer/resources/VirtualBufferObject.cpp @@ -11,6 +11,9 @@ #include #include +#undef __class__ +#define __class__ "VirtualBufferObject" + ewol::VirtualBufferObject::VirtualBufferObject(const etk::UString& accesMode): ewol::Resource(), m_exist(false) diff --git a/sources/ewol/widget/Container.cpp b/sources/ewol/widget/Container.cpp index a9e10dab..f4ed073e 100644 --- a/sources/ewol/widget/Container.cpp +++ b/sources/ewol/widget/Container.cpp @@ -12,6 +12,10 @@ #include +#undef __class__ +#define __class__ "Container" + + widget::Container::Container(ewol::Widget* subElement) : m_subWidget(subElement) { diff --git a/sources/ewol/widget/ContainerN.cpp b/sources/ewol/widget/ContainerN.cpp index 869c5db0..aa167202 100644 --- a/sources/ewol/widget/ContainerN.cpp +++ b/sources/ewol/widget/ContainerN.cpp @@ -11,6 +11,9 @@ #include #include +#undef __class__ +#define __class__ "ContainerN" + widget::ContainerN::ContainerN(void) : m_lockExpand(false,false), @@ -33,11 +36,12 @@ bvec2 widget::ContainerN::CanExpand(void) res.setX(true); } } - if (false==m_lockExpand.x()) { - if (true==m_subExpend.x()) { - res.setX(false); + if (false==m_lockExpand.y()) { + if (true==m_subExpend.y()) { + res.setY(true); } } + //EWOL_DEBUG("Expend check : user=" << m_userExpand << " lock=" << m_lockExpand << " sub=" << m_subExpend << " res=" << res); return res; } diff --git a/sources/ewol/widget/ContainerN.h b/sources/ewol/widget/ContainerN.h index fe050003..e1d362f2 100644 --- a/sources/ewol/widget/ContainerN.h +++ b/sources/ewol/widget/ContainerN.h @@ -41,7 +41,7 @@ namespace widget */ void LockExpand(const bvec2& lockExpand); // herited function - bvec2 CanExpand(void); + virtual bvec2 CanExpand(void); public: /** * @brief Remove all sub element from the widget. diff --git a/sources/ewol/widget/Sizer.cpp b/sources/ewol/widget/Sizer.cpp index ada0eea8..963dea3a 100644 --- a/sources/ewol/widget/Sizer.cpp +++ b/sources/ewol/widget/Sizer.cpp @@ -140,7 +140,7 @@ void widget::Sizer::CalculateSize(const vec2& availlable) void widget::Sizer::CalculateMinMaxSize(void) { //EWOL_DEBUG("[" << GetId() << "] Update minimum Size"); - m_userExpand.setValue(false, false); + m_subExpend.setValue(false, false); m_minSize = m_userMinSize.GetPixel(); vec2 tmpBorderSize = m_borderSize.GetPixel(); @@ -149,10 +149,10 @@ void widget::Sizer::CalculateMinMaxSize(void) if (NULL != m_subWidget[iii]) { m_subWidget[iii]->CalculateMinMaxSize(); if (true == m_subWidget[iii]->CanExpand().x()) { - m_userExpand.setX(true); + m_subExpend.setX(true); } if (true == m_subWidget[iii]->CanExpand().y()) { - m_userExpand.setY(true); + m_subExpend.setY(true); } vec2 tmpSize = m_subWidget[iii]->GetCalculateMinSize(); //EWOL_DEBUG("[" << GetId() << "] NewMinSize=" << tmpSize);