Voreen - Volume Rendering Engine Voreen - Volume Rendering Engine
Voreen - Volume Rendering Engine Westfälische Wilhelms-Universität Münster
  • About
  • Gallery
  • Download
  • Documentation
  • Publications
  • Community

  • Main Page
  • Related Pages
  • Namespaces
  • Classes
  • Files
  • File List

src/core/datastructures/volume/bricking/brickingregionmanager.cpp

00001 /**********************************************************************
00002  *                                                                    *
00003  * Voreen - The Volume Rendering Engine                               *
00004  *                                                                    *
00005  * Copyright (C) 2005-2010 The Voreen Team. <http://www.voreen.org>   *
00006  *                                                                    *
00007  * This file is part of the Voreen software package. Voreen is free   *
00008  * software: you can redistribute it and/or modify it under the terms *
00009  * of the GNU General Public License version 2 as published by the    *
00010  * Free Software Foundation.                                          *
00011  *                                                                    *
00012  * Voreen is distributed in the hope that it will be useful,          *
00013  * but WITHOUT ANY WARRANTY; without even the implied warranty of     *
00014  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the       *
00015  * GNU General Public License for more details.                       *
00016  *                                                                    *
00017  * You should have received a copy of the GNU General Public License  *
00018  * in the file "LICENSE.txt" along with this program.                 *
00019  * If not, see <http://www.gnu.org/licenses/>.                        *
00020  *                                                                    *
00021  * The authors reserve all rights not expressly granted herein. For   *
00022  * non-commercial academic use see the license exception specified in *
00023  * the file "LICENSE-academic.txt". To get information about          *
00024  * commercial licensing please contact the authors.                   *
00025  *                                                                    *
00026  **********************************************************************/
00027 
00028 #include "voreen/core/datastructures/volume/bricking/brickingregionmanager.h"
00029 
00030 namespace voreen {
00031 
00032     BrickingRegionManager::BrickingRegionManager(BrickingInformation& brickingInformation)
00033         : brickingInformation_(brickingInformation) {
00034 
00035         std::vector<Brick*> volumeBricks = brickingInformation_.volumeBricks;
00036 
00037         for (size_t i=0; i<volumeBricks.size(); i++) {
00038             bricksWithoutRegion_.push_back(volumeBricks.at(i));
00039         }
00040 
00041         brickingRegions_ = std::vector<BrickingRegion*>();
00042     }
00043 
00044     void BrickingRegionManager::addRegion(BrickingRegion* region) {
00045 
00046         int priority = region->getPriority();
00047 
00048         removeBricksFromVector(region);
00049 
00050         if (brickingRegions_.size() == 0) {
00051             brickingRegions_.push_back(region);
00052         } else {
00053             for (size_t i=0; i<brickingRegions_.size(); i++) {
00054                 if (priority > brickingRegions_.at(i)->getPriority()) {
00055                     brickingRegions_.insert(brickingRegions_.begin() + i, region);
00056                     break;
00057                 }
00058             }
00059         }
00060     }
00061 
00062     void BrickingRegionManager::deleteRegion(BrickingRegion* region) {
00063         for (size_t i=0; i<brickingRegions_.size(); i++) {
00064             if (brickingRegions_.at(i) == region) {
00065                 delete brickingRegions_.at(i);
00066                 brickingRegions_.erase(brickingRegions_.begin() + i);
00067                 break;
00068             }
00069         }
00070     }
00071 
00072     void BrickingRegionManager::deleteRegions(int priority) {
00073 
00074         size_t i=0;
00075         while (i < brickingRegions_.size() ) {
00076             if (brickingRegions_.at(i)->getPriority() == priority) {
00077                 delete brickingRegions_.at(i);
00078                 brickingRegions_.erase(brickingRegions_.begin() + i);
00079                 i--;
00080             }
00081             i++;
00082         }
00083     }
00084 
00085     std::vector<BrickingRegion*> BrickingRegionManager::getBrickingRegions() {
00086         return brickingRegions_;
00087     }
00088 
00089     BrickingRegionManager::~BrickingRegionManager() {
00090         for (size_t i=0; i < brickingRegions_.size(); i++) {
00091             delete brickingRegions_.at(i);
00092         }
00093     }
00094 
00095     void BrickingRegionManager::removeBricksFromVector(BrickingRegion* region) {
00096         std::vector<Brick*> bricks = region->getBricks();
00097 
00098         for (size_t i=0; i<bricks.size(); i++) {
00099             Brick* currentBrick = bricks.at(i);
00100 
00101             std::vector<Brick*>::iterator finder = find(bricksWithoutRegion_.begin(),
00102                 bricksWithoutRegion_.end(), currentBrick);
00103 
00104             if (finder != bricksWithoutRegion_.end() ) {
00105                 bricksWithoutRegion_.erase(finder);
00106             }
00107         }
00108     }
00109 
00110     std::vector<Brick*> BrickingRegionManager::getBricksWithoutRegion() {
00111         return bricksWithoutRegion_;
00112     }
00113 
00114 
00115 
00116 }
00117 
  • Getting Started
  • Video Tutorials
  • Build Instructions
  • Adding a Module
  • Programming Tutorials
  • API Documentation
  • FAQ
edit