/**************************************************************************** ** $Id: cmds/quickerase.h ** AutoQ3D a qt 3d model editor program ** ** Copyright (C) 2005-2007 -Gonzalo Reynaga Garcia. ** ** This program is free software; you can redistribute it and/or ** modify it under the terms of the GNU General Public Licence ** as published by the Free Software Foundation; either version 2 ** of the License, or (at your option) any later option. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA ** *****************************************************************************/ #ifndef CMDQUICKERASE_H #define CMDQUICKERASE_H #include "cmds.h" void cmds::cmdquickerase(){ int i,j,k,z,fflag,linsize,trisize; d3line *DLV; d3triangle *DTV; DLV=DataLV->data(); DTV=DataTV->data(); if((SecCmd==tr("**Cancel**"))&&!PopViewMode){ SendText(SecCmd); CmdCancel(); return; } switch(step){ case 0: if(DataSV.size()){ for(i=DataSV.size();i>0;i--){ z=i-1; fflag=0; k=DataSV[z].type; linsize=DataLV->size()-1; trisize=DataTV->size()-1; if(k==1){ for(j=0;jresize(linsize);fflag=1;DLV=DataLV->data(); j=i; } } if(!fflag){ DLV[DataSV[z].index].v1[0]=DLV[linsize].v1[0];DLV[DataSV[z].index].v1[1]=DLV[linsize].v1[1]; DLV[DataSV[z].index].v1[2]=DLV[linsize].v1[2];DLV[DataSV[z].index].v2[0]=DLV[linsize].v2[0]; DLV[DataSV[z].index].v2[1]=DLV[linsize].v2[1];DLV[DataSV[z].index].v2[2]=DLV[linsize].v2[2]; DLV[DataSV[z].index].c1[0]=DLV[linsize].c1[0];DLV[DataSV[z].index].c1[1]=DLV[linsize].c1[1]; DLV[DataSV[z].index].c1[2]=DLV[linsize].c1[2];DLV[DataSV[z].index].c2[0]=DLV[linsize].c2[0]; DLV[DataSV[z].index].c2[1]=DLV[linsize].c2[1];DLV[DataSV[z].index].c2[2]=DLV[linsize].c2[2]; DataSV.resize(DataSV.size()-1);DataLV->resize(linsize);DLV=DataLV->data(); } } if(k==2){ for(j=0;jresize(trisize);fflag=1;DTV=DataTV->data(); j=i; } } if(!fflag){ DTV[DataSV[z].index].v1[0]=DTV[trisize].v1[0];DTV[DataSV[z].index].v1[1]=DTV[trisize].v1[1]; DTV[DataSV[z].index].v1[2]=DTV[trisize].v1[2];DTV[DataSV[z].index].v2[0]=DTV[trisize].v2[0]; DTV[DataSV[z].index].v2[1]=DTV[trisize].v2[1];DTV[DataSV[z].index].v2[2]=DTV[trisize].v2[2]; DTV[DataSV[z].index].v3[0]=DTV[trisize].v3[0];DTV[DataSV[z].index].v3[1]=DTV[trisize].v3[1]; DTV[DataSV[z].index].v3[2]=DTV[trisize].v3[2]; DTV[DataSV[z].index].c1[0]=DTV[trisize].c1[0];DTV[DataSV[z].index].c1[1]=DTV[trisize].c1[1]; DTV[DataSV[z].index].c1[2]=DTV[trisize].c1[2];DTV[DataSV[z].index].c2[0]=DTV[trisize].c2[0]; DTV[DataSV[z].index].c2[1]=DTV[trisize].c2[1];DTV[DataSV[z].index].c2[2]=DTV[trisize].c2[2]; DTV[DataSV[z].index].c3[0]=DTV[trisize].c3[0];DTV[DataSV[z].index].c3[1]=DTV[trisize].c3[1]; DTV[DataSV[z].index].c3[2]=DTV[trisize].c3[2]; DTV[DataSV[z].index].texture=DTV[trisize].texture; DTV[DataSV[z].index].t1[0]=DTV[trisize].t1[0];DTV[DataSV[z].index].t1[1]=DTV[trisize].t1[1]; DTV[DataSV[z].index].t2[0]=DTV[trisize].t2[0];DTV[DataSV[z].index].t2[1]=DTV[trisize].t2[1]; DTV[DataSV[z].index].t3[0]=DTV[trisize].t3[0];DTV[DataSV[z].index].t3[1]=DTV[trisize].t3[1]; DTV[DataSV[z].index].n1[0]=DTV[trisize].n1[0];DTV[DataSV[z].index].n1[1]=DTV[trisize].n1[1]; DTV[DataSV[z].index].n1[2]=DTV[trisize].n1[2];DTV[DataSV[z].index].n2[0]=DTV[trisize].n2[0]; DTV[DataSV[z].index].n2[1]=DTV[trisize].n2[1];DTV[DataSV[z].index].n2[2]=DTV[trisize].n2[2]; DTV[DataSV[z].index].n3[0]=DTV[trisize].n3[0];DTV[DataSV[z].index].n3[1]=DTV[trisize].n3[1]; DTV[DataSV[z].index].n3[2]=DTV[trisize].n3[2]; DataSV.resize(DataSV.size()-1);DataTV->resize(trisize);DTV=DataTV->data(); } } } CmdCancel(); }else{ instruction=tr("Select objects:");emit instru(instruction); step++; } return; break; case 1: if(CmdSelectPopView()){return;} if(!SecCmd.compare("MouseRButton")||!SecCmd.compare("")){ /*SendText(QString("SVsize=%1").arg(DataSV.size())); for(i=DataSV.size();i>0;i--){ SendText(QString("DataSV[%3].index=%1,DataSV[].type=%2").arg(DataSV[i-1].index).arg(DataSV[i-1].type).arg(i-1)); }*/ for(i=DataSV.size();i>0;i--){ z=i-1; fflag=0; k=DataSV[z].type; linsize=DataLV->size()-1; trisize=DataTV->size()-1; if(k==1){ for(j=0;jresize(linsize);fflag=1;DLV=DataLV->data(); j=i; } } if(!fflag){ DLV[DataSV[z].index].v1[0]=DLV[linsize].v1[0];DLV[DataSV[z].index].v1[1]=DLV[linsize].v1[1]; DLV[DataSV[z].index].v1[2]=DLV[linsize].v1[2];DLV[DataSV[z].index].v2[0]=DLV[linsize].v2[0]; DLV[DataSV[z].index].v2[1]=DLV[linsize].v2[1];DLV[DataSV[z].index].v2[2]=DLV[linsize].v2[2]; DLV[DataSV[z].index].c1[0]=DLV[linsize].c1[0];DLV[DataSV[z].index].c1[1]=DLV[linsize].c1[1]; DLV[DataSV[z].index].c1[2]=DLV[linsize].c1[2];DLV[DataSV[z].index].c2[0]=DLV[linsize].c2[0]; DLV[DataSV[z].index].c2[1]=DLV[linsize].c2[1];DLV[DataSV[z].index].c2[2]=DLV[linsize].c2[2]; DataSV.resize(DataSV.size()-1);DataLV->resize(linsize);DLV=DataLV->data(); } } if(k==2){ for(j=0;jresize(trisize);fflag=1;DTV=DataTV->data(); j=i; } } if(!fflag){ DTV[DataSV[z].index].v1[0]=DTV[trisize].v1[0];DTV[DataSV[z].index].v1[1]=DTV[trisize].v1[1]; DTV[DataSV[z].index].v1[2]=DTV[trisize].v1[2];DTV[DataSV[z].index].v2[0]=DTV[trisize].v2[0]; DTV[DataSV[z].index].v2[1]=DTV[trisize].v2[1];DTV[DataSV[z].index].v2[2]=DTV[trisize].v2[2]; DTV[DataSV[z].index].v3[0]=DTV[trisize].v3[0];DTV[DataSV[z].index].v3[1]=DTV[trisize].v3[1]; DTV[DataSV[z].index].v3[2]=DTV[trisize].v3[2]; DTV[DataSV[z].index].c1[0]=DTV[trisize].c1[0];DTV[DataSV[z].index].c1[1]=DTV[trisize].c1[1]; DTV[DataSV[z].index].c1[2]=DTV[trisize].c1[2];DTV[DataSV[z].index].c2[0]=DTV[trisize].c2[0]; DTV[DataSV[z].index].c2[1]=DTV[trisize].c2[1];DTV[DataSV[z].index].c2[2]=DTV[trisize].c2[2]; DTV[DataSV[z].index].c3[0]=DTV[trisize].c3[0];DTV[DataSV[z].index].c3[1]=DTV[trisize].c3[1]; DTV[DataSV[z].index].c3[2]=DTV[trisize].c3[2]; DTV[DataSV[z].index].texture=DTV[trisize].texture; DTV[DataSV[z].index].t1[0]=DTV[trisize].t1[0];DTV[DataSV[z].index].t1[1]=DTV[trisize].t1[1]; DTV[DataSV[z].index].t2[0]=DTV[trisize].t2[0];DTV[DataSV[z].index].t2[1]=DTV[trisize].t2[1]; DTV[DataSV[z].index].t3[0]=DTV[trisize].t3[0];DTV[DataSV[z].index].t3[1]=DTV[trisize].t3[1]; DTV[DataSV[z].index].n1[0]=DTV[trisize].n1[0];DTV[DataSV[z].index].n1[1]=DTV[trisize].n1[1]; DTV[DataSV[z].index].n1[2]=DTV[trisize].n1[2];DTV[DataSV[z].index].n2[0]=DTV[trisize].n2[0]; DTV[DataSV[z].index].n2[1]=DTV[trisize].n2[1];DTV[DataSV[z].index].n2[2]=DTV[trisize].n2[2]; DTV[DataSV[z].index].n3[0]=DTV[trisize].n3[0];DTV[DataSV[z].index].n3[1]=DTV[trisize].n3[1]; DTV[DataSV[z].index].n3[2]=DTV[trisize].n3[2]; DataSV.resize(DataSV.size()-1);DataTV->resize(trisize);DTV=DataTV->data(); } }/*k=2*/ }/*for(i=DataSV.size();i>0;i--){*/ CmdCancel(); return; }/*if(!SecCmd.compare("MouseRButton")||!SecCmd.compare("")){*/ break; } SendText(SecCmd); SendText(tr("**Secondary Command not found**")); } #endif