Skip to content
Snippets Groups Projects
Select Git revision
  • 6f33f1036973372b33941d75c6f357a0722462ec
  • master default protected
  • 67-multithreading-is-plattform-dependent
  • cmake_windows
  • v0.8.4
  • v0.8.3
  • v0.8.2
  • v0.8
  • v0.7
  • v0.6
  • v0.5-alpha
  • v0.4
12 results

GeometryFactory.cpp

Blame
  • user avatar
    Ulrich Kemloh authored
    6f33f103
    History
    GeometryFactory.cpp 7.57 KiB
    #include "GeometryFactory.h"
    
    #include "FacilityGeometry.h"
    #include <vtkRenderer.h>
    #include <vtkAssembly.h>
    
    GeometryFactory::GeometryFactory()
    {
    
    }
    
    void GeometryFactory::Init(vtkRenderer* renderer)
    {
        for (auto&& rooms: _geometryFactory)
        {
            for(auto&& subroom:rooms.second)
            {
                subroom.second->CreateActors();
                renderer->AddActor(subroom.second->getActor2D());
                renderer->AddActor(subroom.second->getActor3D());
            }
        }
    }
    
    void GeometryFactory::Set2D(bool status)
    {
        for (auto&& room: _geometryFactory)
        {
            for(auto&& subroom:room.second)
            {
                if(_geometryFactory[room.first][subroom.first]->getVisibility())
                    subroom.second->set2D(status);
            }
        }
    }
    
    void GeometryFactory::Set3D(bool status)
    {
        for (auto&& room: _geometryFactory)
        {
            for(auto&& subroom:room.second)
            {
                if(_geometryFactory[room.first][subroom.first]->getVisibility())
                    subroom.second->set3D(status);
            }
        }
    }
    
    void GeometryFactory::Clear()
    {
        for (auto&& src: _geometryFactory)
        {
            cout<<"cleaning...";
        }
    }
    
    void GeometryFactory::ChangeWallsColor(double* color)
    {
        for (auto&& room: _geometryFactory)
        {
            for(auto&& subroom:room.second)
            {
                if(_geometryFactory[room.first][subroom.first]->getVisibility())
                    subroom.second->changeWallsColor(color);
            }
        }
    }
    
    void GeometryFactory::ChangeExitsColor(double* color)
    {
        for (auto&& room: _geometryFactory)
        {
            for(auto&& subroom:room.second)
            {
                if(_geometryFactory[room.first][subroom.first]->getVisibility())
                    subroom.second->changeExitsColor(color);
            }
        }
    }
    
    void GeometryFactory::ChangeNavLinesColor(double* color)
    {
        for (auto&& room: _geometryFactory)
        {
            for(auto&& subroom:room.second)
            {
                if(_geometryFactory[room.first][subroom.first]->getVisibility())
                    subroom.second->changeNavLinesColor(color);
            }
        }
    }
    
    void GeometryFactory::ChangeFloorColor(double* color)
    {
        for (auto&& room: _geometryFactory)
        {
            for(auto&& subroom:room.second)
            {
                if(_geometryFactory[room.first][subroom.first]->getVisibility())
                    subroom.second->changeFloorColor(color);
            }
        }
    }
    
    void GeometryFactory::ChangeObstaclesColor(double* color)
    {
        for (auto&& room: _geometryFactory)
        {
            for(auto&& subroom:room.second)
            {
                if(_geometryFactory[room.first][subroom.first]->getVisibility())
                    subroom.second->changeObstaclesColor(color);
            }
        }
    }
    
    void GeometryFactory::ShowDoors(bool status)
    {
        for (auto&& room: _geometryFactory)
        {
            for(auto&& subroom:room.second)
            {
                if(_geometryFactory[room.first][subroom.first]->getVisibility())
                    subroom.second->showDoors(status);
            }
        }
    }
    
    void GeometryFactory::ShowStairs(bool status)
    {
        for (auto&& room: _geometryFactory)
        {
            for(auto&& subroom:room.second)
            {
                if(_geometryFactory[room.first][subroom.first]->getVisibility())
                    subroom.second->showStairs(status);
            }
        }
    }
    
    void GeometryFactory::ShowWalls(bool status)
    {
        for (auto&& room: _geometryFactory)
        {
            for(auto&& subroom:room.second)
            {
                if(_geometryFactory[room.first][subroom.first]->getVisibility())
                    subroom.second->showWalls(status);
            }
        }
    }
    
    void GeometryFactory::ShowNavLines(bool status)
    {
        for (auto&& room: _geometryFactory)
        {
            for(auto&& subroom:room.second)
            {
                if(_geometryFactory[room.first][subroom.first]->getVisibility())
                    subroom.second->showNavLines(status);
            }
        }
    }
    
    void GeometryFactory::ShowFloor(bool status)
    {
        for (auto&& room: _geometryFactory)
        {
            for(auto&& subroom:room.second)
            {
                if(_geometryFactory[room.first][subroom.first]->getVisibility())
                    subroom.second->showFloor(status);
            }
        }
    }
    void GeometryFactory::ShowObstacles(bool status)
    {
        for (auto&& room: _geometryFactory)
        {
            for(auto&& subroom:room.second)
            {
                if(_geometryFactory[room.first][subroom.first]->getVisibility())
                    subroom.second->showObstacles(status);
            }
        }
    }
    
    
    void GeometryFactory::ShowGradientField(bool status)
    {
        for (auto&& room: _geometryFactory)
        {
            for(auto&& subroom:room.second)
            {
                if(_geometryFactory[room.first][subroom.first]->getVisibility())
                    subroom.second->showGradientField(status);
            }
        }
    }
    
    void GeometryFactory::ShowGeometryLabels(int status)
    {
        for (auto&& room: _geometryFactory)
        {
            for(auto&& subroom:room.second)
            {
                if(_geometryFactory[room.first][subroom.first]->getVisibility())
                    subroom.second->showGeometryLabels(status);
            }
        }
    }
    
    bool GeometryFactory::RefreshView()
    {
        if(_model.objectName()!="initialized")
        {
            _model.setObjectName("initialized");
            _model.setHorizontalHeaderItem( 0, new QStandardItem( "Entity" ) );
            //_model.setHorizontalHeaderItem( 1, new QStandardItem( "Description" ) );
    
            for (auto&& room: _geometryFactory)
            {
                //room caption
                //QStandardItem *roomcaption = new QStandardItem( QString("R %0").arg(room.first));
                //roomcaption->setEditable( false );
                //_model.setItem(room.first, 1, roomcaption);
    
                QStandardItem *item = new QStandardItem( QString("Room:%0").arg(room.first));
                item->setCheckable(true);
                item->setCheckState(Qt::Checked);
    
                for(auto&& subroom:room.second)
                {
                    QStandardItem *child = new QStandardItem(
                                QString("%0: (%1)")
                                .arg(QString::fromStdString(subroom.second->GetDescription()))
                                .arg(subroom.first)
                                );
    
                    child->setEditable(false);
                    child->setCheckable(true);
                    child->setCheckState(Qt::Checked);
                    item->appendRow( child );
                    _model.setItem(room.first, 0, item);
                    QString data = QString("%0:%1").arg(room.first).arg(subroom.first);
                    child->setData(data);
    
                    //Subroom caption
                    //QStandardItem *childcaption = new QStandardItem( QString("S %0").arg(subroom.first));
                    //childcaption->setEditable( false );
                    //_model.setItem(room.first, 1, childcaption);
                }
            }
            return true;
        }
        return false;
    }
    
    const std::map<int , std::map<int, std::shared_ptr<FacilityGeometry> > > & GeometryFactory::GetGeometry() const
    {
        return _geometryFactory;
    }
    
    void GeometryFactory::AddElement(int room, int subroom, std::shared_ptr<FacilityGeometry> geo)
    {
        _geometryFactory[room][subroom]=geo;
    }
    
    std::shared_ptr<FacilityGeometry> GeometryFactory::GetElement(int room, int subroom)
    {
        if(_geometryFactory.count(room))
        {
            if(_geometryFactory[room].count(subroom))
            {
                return _geometryFactory[room][subroom];
            }
        }
        return nullptr;
    }
    
    void GeometryFactory::UpdateVisibility(int room,int subroom,bool status)
    {
        if(_geometryFactory.count(room))
        {
            if(_geometryFactory[room].count(subroom))
            {
                _geometryFactory[room][subroom]->setVisibility(status);
            }
        }
    }
    
    QStandardItemModel& GeometryFactory::GetModel()
    {
        return _model;
    }