1 // ReaderWriterSPT.cxx -- Provide a paged database for flightgear scenery. 2 // 3 // Copyright (C) 2010 - 2013 Mathias Froehlich 4 // 5 // This program is free software; you can redistribute it and/or 6 // modify it under the terms of the GNU General Public License as 7 // published by the Free Software Foundation; either version 2 of the 8 // License, or (at your option) any later version. 9 // 10 // This program is distributed in the hope that it will be useful, but 11 // WITHOUT ANY WARRANTY; without even the implied warranty of 12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 // General Public License for more details. 14 // 15 // You should have received a copy of the GNU General Public License 16 // along with this program; if not, write to the Free Software 17 // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 18 // 19 20 #ifndef _READERWRITERSPT_HXX 21 #define _READERWRITERSPT_HXX 22 23 #include <osgDB/ReaderWriter> 24 25 namespace simgear { 26 27 class BucketBox; 28 29 class ReaderWriterSPT : public osgDB::ReaderWriter { 30 public: 31 ReaderWriterSPT(); 32 virtual ~ReaderWriterSPT(); 33 34 virtual const char* className() const; 35 36 virtual osgDB::ReaderWriter::ReadResult readObject(const std::string& fileName, const osgDB::Options* options) const; 37 virtual osgDB::ReaderWriter::ReadResult readNode(const std::string& fileName, const osgDB::Options* options) const; 38 39 protected: 40 struct LocalOptions; 41 42 osg::ref_ptr<osg::Node> createTree(const BucketBox& bucketBox, const LocalOptions& options, bool topLevel) const; 43 osg::ref_ptr<osg::Node> createPagedLOD(const BucketBox& bucketBox, const LocalOptions& options) const; 44 osg::ref_ptr<osg::Node> createSeaLevelTile(const BucketBox& bucketBox, const LocalOptions& options) const; 45 osg::ref_ptr<osg::StateSet> getLowLODStateSet(const LocalOptions& options) const; 46 47 private: 48 struct CullCallback; 49 }; 50 51 } // namespace simgear 52 53 #endif 54