From e4a3cc3a28db24bca2face84032930b9826219fe Mon Sep 17 00:00:00 2001 From: Paolo Cignoni cignoni Date: Sat, 12 Apr 2008 14:32:17 +0000 Subject: [PATCH] Improved interface --- src/fgt/edit_texture/images/invertsel.png | Bin 0 -> 2842 bytes src/fgt/edit_texture/meshlab.qrc | 1 + src/fgt/edit_texture/renderarea.cpp | 30 ++++++++++++++- src/fgt/edit_texture/renderarea.h | 1 + src/fgt/edit_texture/textureeditor.cpp | 5 +++ src/fgt/edit_texture/textureeditor.h | 1 + src/fgt/edit_texture/textureeditor.ui | 43 ++++++++++++++++++++++ 7 files changed, 80 insertions(+), 1 deletion(-) create mode 100644 src/fgt/edit_texture/images/invertsel.png diff --git a/src/fgt/edit_texture/images/invertsel.png b/src/fgt/edit_texture/images/invertsel.png new file mode 100644 index 0000000000000000000000000000000000000000..60fc624d779d5d2a051216af6029d14245b0b085 GIT binary patch literal 2842 zcmd^=XIGPn7KLAt9s#K%2x1(8t4t9_1tZaQ= z_1gVPI1lLS7-{hF@}W^LTwPr;7|ihSaCUaKf`Wp)yu7=+J15icC=}|}ty>Zj5}KNt zP$*POY~|CZPcAMlzP`SvOiY%RmbtmPs;a7o`=Hc?3m-pzR6h4THa3=ng98SGt*?U7 z(a~@?9EZaZ>cOW^pW55or>3R`1_r7tJ_!yEt||b%yu5VeKwDc|b8~YiC#S`8R~#K3 zMMOkAxw%WZxf#!&*Vos#&;Z{jgL{mOGY|+8iNu(KXf)c&$|^n>WH~1ofB^}BrZZ4@ z2(S$UatIC%EiJ7CK0XVeUI*xV4`5`0Rb??yNlED@Ke!I?3keA&06|rN=_O|703byi zI2h#M5N8K1E?%V3Xh%m!r>CcMI(>b8eRg(sYinzNfB*3CaC&>|n82 zYisL;g@v}Zwt<0xwY9b4;^O4wFMdUwYA>f-ceCe<>lpFU0o3o5n*9rrlzKYgM(93Q~mw@B_$z6?#Yp#G0C#3=Iw2+uP^9gI~XX zEiElogn|lJKqDigy1F_v3v4Hgz{zPV){o|uTD<%KhOpizr|q!V@5&Xw7aoNUM~LP5>8;6)V_iork(@X6R@nr_&F{;|C5gSp@6~BV-DnUlt41(%q&YE1f)*uAqH5rP&iQK%=aMM_-+aw$rFou|+ zdF*UW^XRuoGF)C#^8`3wc_z+CS5Y%KskS*x8>jmpm`>+gy$xvZb94j3k7S6}@O zo;}J^GmwaJAi_|?K5x7Gym!|toiSFYchq@QMyglx(F z#Oh+;#GEkq1UDkK^p%WML>A838DConX|TUV8bWpYbX?54o->`3BG-}f)owTrZ;Tcm zQO^w0>A22c?y%T`d)NEt?=!F+)_eT%$J3p%TlnTA%fXAGSg&-$%p7uO^Q!o(rmGS= zB87}xWD%e;rc*nDJ1I9H)PmOmeY*)g5z?upg@QmX6U{v+PC_d6I^t+Vxr%!DcX<36 z>dKZX>7oq+Zmg@Pi)k^5!=4v5G_LpLrU_)^n){WMJ#Z$w%q-V^!@y?QD(AiPU>?o2 z3=HL}R+}S_$#p#!R>b+^$~WSll#LrsYbH9?q+us*mmwyQ;4q`^HTe@Ke{M+Y=XB^j zS(xXa`2yJIgPU)a6_A&X`s+2_-wUbn5oLuQn253z@sU2=Vf#jol!f z{;0T5$KEKLqVEk(9G@{FHJH*qNh&eWUPUE08-(!6zx^?Pr%aN`xBV!NmF{*>KNvjl z{0=8hF6q*Unaqb-0gVxT8833@-%L;ei0IMUOK5jriK25xWQWlw0LU1l&O zEw&>FGXJz}m+eg;H5yT286x}maLSE%;chb19y{}BqU>U36LG0Q%fs1YV&_I|gtulycY(nM&j2>V&GRkKVIV$RLcC`r%YDf7Bh$cAtaN>b8|% z?YNHi>KA18#4sa zE$XGx386;s{$bBV%YOfa>QPW)ecm&VZRYiER}rYy8wp!3b?WB|3QO?pYp60sbNx4) zaZQyrYL2kN#hPQ7irf=5spw-#Qx3Z}iI#(`$pNmA#3y55ASRQs^<``5pY}CdK66Cd zd)7AocYXu1iVEaDP4_;38#TjUkZg27&j}LgNO*WPChmtMJmCbNC=LSyoL{?1E^XsN zXJ>QQ&myk-KM*r8!;~64Msf%O-(w&@<9W9Hx zug#ixJfa)vQkOs}2e# zX5-ghODrawOcA-1M#lbLzA(G)7fKbu+B!|w{*1lxW14*q images/edit_texture.png + images/invertsel.png images/rotate.png images/scale.png images/sel_move.png diff --git a/src/fgt/edit_texture/renderarea.cpp b/src/fgt/edit_texture/renderarea.cpp index d9c491db4..c2f32b7d0 100644 --- a/src/fgt/edit_texture/renderarea.cpp +++ b/src/fgt/edit_texture/renderarea.cpp @@ -951,6 +951,34 @@ void RenderArea::ClearSelection() selection = QRect(); } +void RenderArea::InvertSelection() +{ + // Invert selected faces + if (selected) + { + for (unsigned i = 0; i < model->cm.face.size(); i++) + { + if (model->cm.face[i].WT(0).n() == textNum) + { + if (model->cm.face[i].IsUserBit(selBit)) model->cm.face[i].ClearUserBit(selBit); + else model->cm.face[i].SetUserBit(selBit); + } + } + RecalculateSelectionArea(); + this->update(); + } + else if (selectedV) + { + for (unsigned i = 0; i < model->cm.vert.size(); i++) + { + if (model->cm.vert[i].IsUserBit(selVertBit)) model->cm.vert[i].ClearUserBit(selVertBit); + else model->cm.vert[i].SetUserBit(selVertBit); + } + UpdateVertexSelection(); + this->update(); + } +} + void RenderArea::HandleScale(QPoint e) { // Move the rectangle of scaling and resize the selction area @@ -1133,7 +1161,7 @@ void RenderArea::DrawCircle(QPoint origin) for (int i = 0; i < 360; i++) { float degInRad = i*DEG2RAD; - glVertex3f(origin.x() + cos(degInRad)*r,origin.y() + sin(degInRad)*r,1.1f); + glVertex3f(origin.x() + cos(degInRad)*r,origin.y() + sin(degInRad)*r,2.0f); } glEnd(); } diff --git a/src/fgt/edit_texture/renderarea.h b/src/fgt/edit_texture/renderarea.h index 22840a2c3..5081ba26d 100644 --- a/src/fgt/edit_texture/renderarea.h +++ b/src/fgt/edit_texture/renderarea.h @@ -40,6 +40,7 @@ public: void RemapClamp(); void RemapMod(); void ClearSelection(); + void InvertSelection(); protected: void paintEvent(QPaintEvent *event); diff --git a/src/fgt/edit_texture/textureeditor.cpp b/src/fgt/edit_texture/textureeditor.cpp index 7fef78516..f44ebe012 100644 --- a/src/fgt/edit_texture/textureeditor.cpp +++ b/src/fgt/edit_texture/textureeditor.cpp @@ -133,6 +133,11 @@ void TextureEditor::on_modulusButton_clicked() ((RenderArea*)ui.tabWidget->currentWidget()->childAt(MARGIN,MARGIN))->RemapMod(); } +void TextureEditor::on_invertButton_clicked() +{ + ((RenderArea*)ui.tabWidget->currentWidget()->childAt(MARGIN,MARGIN))->InvertSelection(); +} + void TextureEditor::on_cancelButton_clicked() { ResetLayout(); diff --git a/src/fgt/edit_texture/textureeditor.h b/src/fgt/edit_texture/textureeditor.h index bd5a8025f..e79e8049e 100644 --- a/src/fgt/edit_texture/textureeditor.h +++ b/src/fgt/edit_texture/textureeditor.h @@ -46,6 +46,7 @@ private slots: void on_modulusButton_clicked(); void on_smoothButton_clicked(); void on_cancelButton_clicked(); + void on_invertButton_clicked(); public slots: void UpdateModel(); diff --git a/src/fgt/edit_texture/textureeditor.ui b/src/fgt/edit_texture/textureeditor.ui index 6627fd698..5ad8d6733 100644 --- a/src/fgt/edit_texture/textureeditor.ui +++ b/src/fgt/edit_texture/textureeditor.ui @@ -218,6 +218,49 @@ + + + + + 0 + 0 + 0 + 0 + + + + Invert selected faces/vertexes + + + + + + :/images/invertsel.png + + + + 32 + 32 + + + + false + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + +