From 08ea66621a5b4a1a672734efea3f3d47f00b844b Mon Sep 17 00:00:00 2001 From: Paolo Cignoni cignoni Date: Sun, 4 May 2008 20:05:01 +0000 Subject: [PATCH] Last CVS commit: update of file --- src/fgt/edit_texture/edittexture.cpp | 2 +- src/fgt/edit_texture/renderarea.cpp | 34 +++++++++++++++++++--------- src/fgt/edit_texture/renderarea.h | 1 + 3 files changed, 25 insertions(+), 12 deletions(-) diff --git a/src/fgt/edit_texture/edittexture.cpp b/src/fgt/edit_texture/edittexture.cpp index d0b8fdb92..1ebcb848f 100644 --- a/src/fgt/edit_texture/edittexture.cpp +++ b/src/fgt/edit_texture/edittexture.cpp @@ -50,7 +50,7 @@ const PluginInfo &EditTexturePlugin::Info() { static PluginInfo ai; ai.Date=tr(__DATE__); - ai.Version = tr("0.9"); + ai.Version = tr("1.0.1"); ai.Author = ("Riccardo Dini"); return ai; } diff --git a/src/fgt/edit_texture/renderarea.cpp b/src/fgt/edit_texture/renderarea.cpp index 9ee42932f..5cafec66a 100644 --- a/src/fgt/edit_texture/renderarea.cpp +++ b/src/fgt/edit_texture/renderarea.cpp @@ -943,11 +943,7 @@ void RenderArea::ChangeMode(int modenumber) model->cm.face.EnableVFAdjacency(); model->cm.vert.EnableVFAdjacency(); model->cm.face.EnableFFAdjacency(); - vcg::tri::UpdateTopology::FaceFaceFromTexCoord(model->cm); - vcg::tri::UpdateTopology::VertexFace(model->cm); - model->clearDataMask(MeshModel::MM_BORDERFLAG); - vcg::tri::UpdateFlags::FaceBorderFromFF(model->cm); - vcg::tri::UpdateFlags::VertexBorderFromFace(model->cm); + UpdateUnifyTopology(); } break; } @@ -1176,8 +1172,11 @@ void RenderArea::SelectVertexes() uvertB = ToScreenSpace((*fi).WT(j).u(), (*fi).WT(j).v()); tub = (*fi).WT(j).u(); tvb = (*fi).WT(j).v(); path.clear(); - path = FindPath(unifyA, unifyB, firstface, 0); - drawP = true; + if (unifyA->IsB() && unifyB->IsB()) + { + path = FindPath(unifyA, unifyB, firstface, 0); + drawP = true; + } this->update(); } else if (unifyRA1 == QRect()) @@ -1197,8 +1196,11 @@ void RenderArea::SelectVertexes() uvertB1 = ToScreenSpace((*fi).WT(j).u(), (*fi).WT(j).v()); tub1 = (*fi).WT(j).u(); tvb1 = (*fi).WT(j).v(); path1.clear(); - path1 = FindPath(unifyA1, unifyB1, firstface1, 1); - drawP1 = true; + if (unifyA1->IsB() && unifyB1->IsB()) + { + path1 = FindPath(unifyA1, unifyB1, firstface1, 1); + drawP1 = true; + } this->update(); } return; @@ -1363,7 +1365,7 @@ void RenderArea::UnifyCouple() void RenderArea::UnifySet() { // Unify a set of vertexes - if (path.size() == path1.size()) + if (path.size() == path1.size() && drawP && drawP1) { for (unsigned i = 0; i < path.size(); i++) { @@ -1398,7 +1400,7 @@ void RenderArea::UnifySet() if (next1 == 0) break; } } - vcg::tri::UpdateTopology::FaceFaceFromTexCoord(model->cm); + UpdateUnifyTopology(); } selectedV = false; for (unsigned i = 0; i < model->cm.vert.size(); i++) model->cm.vert[i].ClearUserBit(selVertBit); @@ -1820,6 +1822,16 @@ void RenderArea::CountVertexes() } } +void RenderArea::UpdateUnifyTopology() +{ + // Update the topology needed for unify of edge + vcg::tri::UpdateTopology::FaceFaceFromTexCoord(model->cm); + vcg::tri::UpdateTopology::VertexFace(model->cm); + model->clearDataMask(MeshModel::MM_BORDERFLAG); + vcg::tri::UpdateFlags::FaceBorderFromFF(model->cm); + vcg::tri::UpdateFlags::VertexBorderFromFace(model->cm); +} + bool RenderArea::isInside(vector > tmpCoord, TexCoord2 act) { // Support function for search in a vector diff --git a/src/fgt/edit_texture/renderarea.h b/src/fgt/edit_texture/renderarea.h index 53a1c812d..f2970f62a 100644 --- a/src/fgt/edit_texture/renderarea.h +++ b/src/fgt/edit_texture/renderarea.h @@ -155,6 +155,7 @@ private: void ShowFaces(); void UpdateUnify(); vector FindPath(CVertexO* begin, CVertexO* end, CFaceO* first, int pathN); + void UpdateUnifyTopology(); signals: void UpdateModel();