Show
Ignore:
Timestamp:
03/21/12 18:36:20 (2 years ago)
Author:
robert
Message:

Ran script to remove trailing spaces and tabs

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • OpenSceneGraph/trunk/src/osgPlugins/dxf/DXFWriterNodeVisitor.cpp

    r13017 r13041  
    88 * Based on OBJ writer plugin by Ulrich Hertlein 
    99 * 
    10  * The Open Scene Graph (OSG) is a cross platform C++/OpenGL library for  
    11  * real-time rendering of large 3D photo-realistic models.  
     10 * The Open Scene Graph (OSG) is a cross platform C++/OpenGL library for 
     11 * real-time rendering of large 3D photo-realistic models. 
    1212 * The OSG homepage is http://www.openscenegraph.org/ 
    1313 */ 
     
    1919 
    2020#include "DXFWriterNodeVisitor.h" 
    21   
     21 
    2222// ROBERT - is there any need for a value visitor like this or is it just overkill? 
    2323 
     
    2828class ValueVisitor : public osg::ValueVisitor { 
    2929    public: 
    30         ValueVisitor(std::ostream& fout, const Layer &layer,const osg::Matrix& m = osg::Matrix::identity()) :     
    31             osg::ValueVisitor(),  
    32             _fout(fout),  
    33             _layer(layer),             
    34             _m(m)           
    35         {  
    36             //_applyMatrix = (_m != osg::Matrix::identity());                 
    37         } 
    38                  
    39         virtual void apply(osg::Vec3 & inv)  
    40         {  
     30        ValueVisitor(std::ostream& fout, const Layer &layer,const osg::Matrix& m = osg::Matrix::identity()) : 
     31            osg::ValueVisitor(), 
     32            _fout(fout), 
     33            _layer(layer), 
     34            _m(m) 
     35        { 
     36            //_applyMatrix = (_m != osg::Matrix::identity()); 
     37        } 
     38 
     39        virtual void apply(osg::Vec3 & inv) 
     40        { 
    4141            osg::Vec3 point(inv) ; 
    42             point = point * _m;                         
    43             _fout << "0 \nVERTEX\n 8\n"<<_layer._name<<"\n";     
     42            point = point * _m; 
     43            _fout << "0 \nVERTEX\n 8\n"<<_layer._name<<"\n"; 
    4444            if ( _layer._color ) { 
    45                 _fout << "62\n"<<_layer._color<<"\n";                 
    46             } 
    47  
    48             _fout <<" 10\n"<<point.x()<<"\n 20\n"<<point.y()<<"\n 30\n"<<point.z()<<"\n";                                 
    49         } 
    50          
     45                _fout << "62\n"<<_layer._color<<"\n"; 
     46            } 
     47 
     48            _fout <<" 10\n"<<point.x()<<"\n 20\n"<<point.y()<<"\n 30\n"<<point.z()<<"\n"; 
     49        } 
     50 
    5151    private: 
    5252 
     
    5555        std::ostream&    _fout; 
    5656        osg::Matrix        _m; 
    57         const Layer _layer;         
     57        const Layer _layer; 
    5858}; 
    5959*/ 
     
    6161/** writes all primitives of a primitive-set out to a stream, decomposes quads to triangles, line-strips to lines etc */ 
    6262class DxfPrimitiveIndexWriter : public osg::PrimitiveIndexFunctor { 
    63      
     63 
    6464    public: 
    6565        DxfPrimitiveIndexWriter(std::ostream& fout,osg::Geometry* geo,const Layer &layer,AcadColor &acad, 
    66                                 const osg::Matrix& m = osg::Matrix::identity(),bool writeTriangleAs3DFace = true) :  
    67             osg::PrimitiveIndexFunctor(),  
    68             _fout(fout),             
     66                                const osg::Matrix& m = osg::Matrix::identity(),bool writeTriangleAs3DFace = true) : 
     67            osg::PrimitiveIndexFunctor(), 
     68            _fout(fout), 
    6969            _geo(geo), 
    7070            _layer(layer), 
     
    7373            _writeTriangleAs3DFace(writeTriangleAs3DFace) 
    7474        { 
    75              
    76         } 
    77          
     75 
     76        } 
     77 
    7878        virtual void setVertexArray(unsigned int,const osg::Vec2*) {} 
    7979 
     
    8181 
    8282        virtual void setVertexArray(unsigned int,const osg::Vec4* ) {} 
    83          
     83 
    8484        virtual void setVertexArray(unsigned int,const osg::Vec2d*) {} 
    8585 
     
    8787 
    8888        virtual void setVertexArray(unsigned int,const osg::Vec4d* ) {} 
    89          
    90          
    91         void write(unsigned int i,int c)  
    92         {             
    93             const osg::Vec3 point = ((osg::Vec3Array *)_geo->getVertexArray())->at(i) * _m;                         
    94             _fout <<c+10<<"\n "<<point.x()<<"\n"<<20+c<<"\n "<<point.y()<<"\n"<<30+c<<"\n "<<point.z()<<"\n";                         
    95         } 
    96  
    97         // operator for triangles  
     89 
     90 
     91        void write(unsigned int i,int c) 
     92        { 
     93            const osg::Vec3 point = ((osg::Vec3Array *)_geo->getVertexArray())->at(i) * _m; 
     94            _fout <<c+10<<"\n "<<point.x()<<"\n"<<20+c<<"\n "<<point.y()<<"\n"<<30+c<<"\n "<<point.z()<<"\n"; 
     95        } 
     96 
     97        // operator for triangles 
    9898        void writeTriangle(unsigned int i1, unsigned int i2, unsigned int i3) 
    99          {     
     99         { 
    100100           if (_writeTriangleAs3DFace) 
    101101           { 
    102102                _fout << "0 \n3DFACE\n 8\n"<<_layer._name<<"\n"; 
    103103                if ( _layer._color ) { 
    104                     _fout << "62\n"<<_layer._color<<"\n";                 
     104                    _fout << "62\n"<<_layer._color<<"\n"; 
    105105                } else { 
    106                     _fout << "62\n"<<_acad.findColor(DXFWriterNodeVisitor::getNodeRGB(_geo,i1))<<"\n";                 
     106                    _fout << "62\n"<<_acad.findColor(DXFWriterNodeVisitor::getNodeRGB(_geo,i1))<<"\n"; 
    107107                    // Acad2000 supports 24bit color but most dxf importers don't 
    108                     //_fout << "420\n"<<DXFWriterNodeVisitor::getNodeRGB(_geo,i1)<<"\n";                 
     108                    //_fout << "420\n"<<DXFWriterNodeVisitor::getNodeRGB(_geo,i1)<<"\n"; 
    109109                } 
    110110                write(i1,0); 
    111111                write(i2,1); 
    112112                write(i3,2); 
    113                 write(i1,3); // yes you have to write the first point again  
     113                write(i1,3); // yes you have to write the first point again 
    114114           } 
    115115           else 
     
    117117                _fout << "0 \nLINE\n 8\n"<<_layer._name<<"\n"; 
    118118                if ( _layer._color ) { 
    119                     _fout << "62\n"<<_layer._color<<"\n";                 
     119                    _fout << "62\n"<<_layer._color<<"\n"; 
    120120                } else { 
    121                     _fout << "62\n"<<_acad.findColor(DXFWriterNodeVisitor::getNodeRGB(_geo,i1))<<"\n";                                 
     121                    _fout << "62\n"<<_acad.findColor(DXFWriterNodeVisitor::getNodeRGB(_geo,i1))<<"\n"; 
    122122                } 
    123123                write(i1,0); 
     
    126126                _fout << "0 \nLINE\n 8\n"<<_layer._name<<"\n"; 
    127127                if ( _layer._color ) { 
    128                     _fout << "62\n"<<_layer._color<<"\n";                 
     128                    _fout << "62\n"<<_layer._color<<"\n"; 
    129129                } else { 
    130                     _fout << "62\n"<<_acad.findColor(DXFWriterNodeVisitor::getNodeRGB(_geo,i2))<<"\n";                                 
     130                    _fout << "62\n"<<_acad.findColor(DXFWriterNodeVisitor::getNodeRGB(_geo,i2))<<"\n"; 
    131131                } 
    132132                write(i2,0); 
     
    135135                _fout << "0 \nLINE\n 8\n"<<_layer._name<<"\n"; 
    136136                if ( _layer._color ) { 
    137                     _fout << "62\n"<<_layer._color<<"\n";                 
     137                    _fout << "62\n"<<_layer._color<<"\n"; 
    138138                } else { 
    139                     _fout << "62\n"<<_acad.findColor(DXFWriterNodeVisitor::getNodeRGB(_geo,i3))<<"\n";                                 
     139                    _fout << "62\n"<<_acad.findColor(DXFWriterNodeVisitor::getNodeRGB(_geo,i3))<<"\n"; 
    140140                } 
    141141                write(i3,0); 
     
    146146 
    147147        // operator for lines 
    148         void writeLine(unsigned int i1, unsigned int i2)  
    149         {             
     148        void writeLine(unsigned int i1, unsigned int i2) 
     149        { 
    150150            _fout << "0 \nLINE\n 8\n"<<_layer._name<<"\n"; 
    151151            if ( _layer._color ) { 
    152                 _fout << "62\n"<<_layer._color<<"\n";                 
     152                _fout << "62\n"<<_layer._color<<"\n"; 
    153153            } else { 
    154                 _fout << "62\n"<<_acad.findColor(DXFWriterNodeVisitor::getNodeRGB(_geo,i1))<<"\n";                                 
     154                _fout << "62\n"<<_acad.findColor(DXFWriterNodeVisitor::getNodeRGB(_geo,i1))<<"\n"; 
    155155            } 
    156156            write(i1,0); 
    157157            write(i2,1); 
    158158        } 
    159          
     159 
    160160        // operator for points 
    161         void writePoint(unsigned int i1)  
     161        void writePoint(unsigned int i1) 
    162162        { 
    163163            _fout << "0 \nPOINT\n 8\n"<<_layer._name<<"\n"; 
    164164            if ( _layer._color ) { 
    165                 _fout << "62\n"<<_layer._color<<"\n";                 
     165                _fout << "62\n"<<_layer._color<<"\n"; 
    166166            } else { 
    167                 _fout << "62\n"<<_acad.findColor(DXFWriterNodeVisitor::getNodeRGB(_geo,i1))<<"\n";                 
    168                 //_fout << "420\n"<<DXFWriterNodeVisitor::getNodeRGB(_geo,i1)<<"\n";                 
    169                  
    170             } 
    171             write(i1,0);             
     167                _fout << "62\n"<<_acad.findColor(DXFWriterNodeVisitor::getNodeRGB(_geo,i1))<<"\n"; 
     168                //_fout << "420\n"<<DXFWriterNodeVisitor::getNodeRGB(_geo,i1)<<"\n"; 
     169 
     170            } 
     171            write(i1,0); 
    172172        } 
    173173 
     
    191191        } 
    192192 
    193         virtual void drawArrays(GLenum mode,GLint first,GLsizei count);                     
    194          
     193        virtual void drawArrays(GLenum mode,GLint first,GLsizei count); 
     194 
    195195        virtual void drawElements(GLenum mode,GLsizei count,const GLubyte* indices) 
    196196        { 
     
    200200        { 
    201201            drawElementsImplementation<GLushort>(mode, count, indices); 
    202         }     
     202        } 
    203203 
    204204        virtual void drawElements(GLenum mode,GLsizei count,const GLuint* indices) 
    205205        { 
    206206            drawElementsImplementation<GLuint>(mode, count, indices); 
    207         }     
     207        } 
    208208 
    209209    protected: 
    210          
    211         template<typename T>void drawElementsImplementation(GLenum mode, GLsizei count, const T* indices)  
     210 
     211        template<typename T>void drawElementsImplementation(GLenum mode, GLsizei count, const T* indices) 
    212212        { 
    213213            if (indices==0 || count==0) return; 
    214214 
    215             typedef const T* IndexPointer;                     
     215            typedef const T* IndexPointer; 
    216216 
    217217            switch(mode) 
     
    222222                    for(IndexPointer  iptr=indices;iptr<ilast;iptr+=3) 
    223223                        writeTriangle(*iptr,*(iptr+1),*(iptr+2)); 
    224      
     224 
    225225                    break; 
    226226                } 
     
    271271                    IndexPointer ilast = &indices[count]; 
    272272                    for(IndexPointer  iptr=indices;iptr<ilast;++iptr) 
    273                      
     273 
    274274                    { 
    275275                        writePoint(*iptr); 
     
    289289                case(GL_LINE_STRIP): 
    290290                { 
    291                      
     291 
    292292                    IndexPointer ilast = &indices[count]; 
    293293                    for(IndexPointer  iptr=indices+1;iptr<ilast;iptr+=2) 
     
    313313                    break; 
    314314            } 
    315         }     
    316      
     315        } 
     316 
    317317    private: 
    318318 
     
    321321        std::ostream&        _fout; 
    322322        GLenum               _modeCache; 
    323         std::vector<GLuint>  _indexCache;         
    324         osg::Geometry*       _geo;         
    325          
     323        std::vector<GLuint>  _indexCache; 
     324        osg::Geometry*       _geo; 
     325 
    326326        Layer        _layer; 
    327327        AcadColor    _acad; // needed to lookup new colors 
     
    387387        case(GL_POINTS): 
    388388        { 
    389              
     389 
    390390            for(GLsizei i=0;i<count;++i) 
    391391            { 
     
    421421        } 
    422422        default: 
    423             OSG_WARN << "DXFWriterNodeVisitor :: can't handle mode " << mode << std::endl;  
     423            OSG_WARN << "DXFWriterNodeVisitor :: can't handle mode " << mode << std::endl; 
    424424            break; 
    425425    } 
    426426} 
    427                      
     427 
    428428 
    429429// TODO - illegal acad characters 
    430 std::string DXFWriterNodeVisitor::getLayerName(const std::string& defaultvalue)  
     430std::string DXFWriterNodeVisitor::getLayerName(const std::string& defaultvalue) 
    431431{ 
    432      
     432 
    433433    std::string layerName=defaultvalue; 
    434434    std::transform(layerName.begin(), layerName.end(), layerName.begin(), toupper); 
    435          
     435 
    436436    // remove illegal ACAD characters 
    437437    size_t found=0; 
     
    462462//    if (array == NULL) 
    463463//        return; 
    464 //     
    465 //    ValueVisitor vv(_fout, layer,m);     
    466 //    for(unsigned int i = 0; i < array->getNumElements(); ++i) {         
    467 //        array->accept(i, vv);         
     464// 
     465//    ValueVisitor vv(_fout, layer,m); 
     466//    for(unsigned int i = 0; i < array->getNumElements(); ++i) { 
     467//        array->accept(i, vv); 
    468468//    } 
    469 //     
     469// 
    470470//    OSG_DEBUG << "processArray "<<layer._name<<"\n"; 
    471471//    OSG_DEBUG << "# " << array->getNumElements() << " elements written" << std::endl; 
    472 //     
     472// 
    473473//} 
    474474 
    475 void DXFWriterNodeVisitor::processStateSet(osg::StateSet* ss)  
     475void DXFWriterNodeVisitor::processStateSet(osg::StateSet* ss) 
    476476{ 
    477     // anything to do if no material/texture?    
     477    // anything to do if no material/texture? 
    478478 
    479479    osg::PolygonMode * pm = dynamic_cast<osg::PolygonMode *>(ss->getAttribute(osg::StateAttribute::POLYGONMODE)); 
     
    484484} 
    485485 
    486 void DXFWriterNodeVisitor::processGeometry(osg::Geometry* geo, osg::Matrix& m)  
     486void DXFWriterNodeVisitor::processGeometry(osg::Geometry* geo, osg::Matrix& m) 
    487487{ 
    488      
     488 
    489489 
    490490    // We only want to create a new layer for geometry with something to draw 
     
    492492 
    493493        processStateSet(_currentStateSet.get()); 
    494          
     494 
    495495        if ( _firstPass ) { 
    496496            // Must have unique layer names 
     
    499499 
    500500            // if single colour include in header 
    501             if ( osg::Geometry::BIND_OVERALL == geo->getColorBinding() ) {                 
     501            if ( osg::Geometry::BIND_OVERALL == geo->getColorBinding() ) { 
    502502                _layer._color = _acadColor.findColor(getNodeRGB(geo)); // per layer color 
    503503            } else if ( osg::Geometry::BIND_OFF== geo->getColorBinding() ) { 
     
    505505            } else { 
    506506                _layer._color = 0;  // per point color 
    507             }             
     507            } 
    508508            _layers.push_back(_layer); 
    509509 
     
    511511            _layer = _layers[_count++]; 
    512512            OSG_DEBUG << "writing Layer " << _layer._name  << std::endl; 
    513             if ( geo->getNumPrimitiveSets() ) {                 
    514                 for(unsigned int i = 0; i < geo->getNumPrimitiveSets(); ++i)  
    515                 {         
     513            if ( geo->getNumPrimitiveSets() ) { 
     514                for(unsigned int i = 0; i < geo->getNumPrimitiveSets(); ++i) 
     515                { 
    516516                    osg::PrimitiveSet* ps = geo->getPrimitiveSet(i); 
    517517                    DxfPrimitiveIndexWriter pif(_fout, geo,_layer,_acadColor,m,_writeTriangleAs3DFace); 
    518518                    ps->accept(pif); 
    519                 }             
    520             } else {                             
     519                } 
     520            } else { 
    521521                // Is array visitor necessary for only dealing with vertex arrays? 
    522                 //processArray(geo->getVertexArray(),  _layer,m);                 
     522                //processArray(geo->getVertexArray(),  _layer,m); 
    523523                if ( geo->getVertexArray() ) { 
    524524                    osg::Vec3Array* data=static_cast<osg::Vec3Array*>(geo->getVertexArray()); 
     
    526526                    { 
    527527                        osg::Vec3 point = data->at(ii) * m; 
    528                         _fout << "0 \nVERTEX\n 8\n"<<_layer._name<<"\n";     
     528                        _fout << "0 \nVERTEX\n 8\n"<<_layer._name<<"\n"; 
    529529                        if ( _layer._color ) { 
    530                             _fout << "62\n"<<_layer._color<<"\n";                 
    531                         } else {                                 
    532                             _fout << "62\n"<<_acadColor.findColor(getNodeRGB(geo,ii))<<"\n";                 
     530                            _fout << "62\n"<<_layer._color<<"\n"; 
     531                        } else { 
     532                            _fout << "62\n"<<_acadColor.findColor(getNodeRGB(geo,ii))<<"\n"; 
    533533                        } 
    534                         _fout<<" 10\n"<<point.x()<<"\n 20\n"<<point.y()<<"\n 30\n"<<point.z()<<"\n";         
     534                        _fout<<" 10\n"<<point.x()<<"\n 20\n"<<point.y()<<"\n 30\n"<<point.z()<<"\n"; 
    535535                    } 
    536536                } 
     
    545545{ 
    546546 
    547     pushStateSet(node.getStateSet());     
     547    pushStateSet(node.getStateSet()); 
    548548    osg::Matrix m = osg::computeLocalToWorld(getNodePath()); 
    549549    unsigned int count = node.getNumDrawables(); 
     
    554554        if ( g != NULL ) 
    555555        { 
    556             pushStateSet(g->getStateSet());             
    557             processGeometry(g,m);             
     556            pushStateSet(g->getStateSet()); 
     557            processGeometry(g,m); 
    558558            popStateSet(g->getStateSet()); 
    559559        } 
     
    561561 
    562562 
    563     popStateSet(node.getStateSet());     
     563    popStateSet(node.getStateSet()); 
    564564} 
    565565 
     
    570570        return false; 
    571571    } 
    572     _fout << "999\n written by OpenSceneGraph" << std::endl;             
     572    _fout << "999\n written by OpenSceneGraph" << std::endl; 
    573573 
    574574    _fout << "0\nSECTION\n2\nHEADER\n"; 
    575575    _fout << "9\n$ACADVER\n1\nAC1006\n"; // specify minimum autocad version AC1006=R10 
    576      
     576 
    577577    _fout << "9\n$EXTMIN\n10\n"<<bound.center().x()-bound.radius()<<"\n20\n"<<bound.center().y()-bound.radius()<<"\n30\n"<<bound.center().z()-bound.radius()<<"\n"; 
    578578    _fout << "9\n$EXTMAX\n10\n"<<bound.center().x()+bound.radius()<<"\n20\n"<<bound.center().y()+bound.radius()<<"\n30\n"<<bound.center().z()+bound.radius()<<"\n"; 
     
    592592 
    593593    _fout << "0\nSECTION\n2\nENTITIES\n"; 
    594     _firstPass=false;  
     594    _firstPass=false; 
    595595    _count=0; 
    596596 
     
    601601{ 
    602602    _fout << "0\nENDSEC\n0\nEOF"; 
    603     _fout << std::endl;     
     603    _fout << std::endl; 
    604604} 
    605605