Changeset 929
- Timestamp:
- 08/29/08 16:47:23
- Files:
-
- trunk/include/vpb/BuildOptions (modified) (2 diffs)
- trunk/include/vpb/Serializer (modified) (1 diff)
- trunk/src/vpb/BuildOptions.cpp (modified) (2 diffs)
- trunk/src/vpb/BuildOptionsIO.cpp (modified) (6 diffs)
- trunk/src/vpb/Commandline.cpp (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/include/vpb/BuildOptions
r925 r929 267 267 bool getAbortRunOnError() const { return _abortRunOnError; } 268 268 269 enum LayerOutputPolicy 270 { 271 INLINE, 272 EXTERNAL_LOCAL_DIRECTORY, 273 EXTERNAL_SET_DIRECTORY 274 }; 275 276 void setDefaultImageLayerOutputPolicy(LayerOutputPolicy policy) { _defaultImageLayerOutputPolicy = policy; } 277 LayerOutputPolicy getDefaultImageLayerOutputPolicy() const { return _defaultImageLayerOutputPolicy; } 278 279 void setDefaultElevationLayerOutputPolicy(LayerOutputPolicy policy) { _defaultElevationLayerOutputPolicy = policy; } 280 LayerOutputPolicy getDefaultElevationLayerOutputPolicy() const { return _defaultElevationLayerOutputPolicy; } 281 282 void setOptionalImageLayerOutputPolicy(LayerOutputPolicy policy) { _optionalImageLayerOutputPolicy = policy; } 283 LayerOutputPolicy getOptionalImageLayerOutputPolicy() const { return _optionalImageLayerOutputPolicy; } 284 285 void setOptionalElevationLayerOutputPolicy(LayerOutputPolicy policy) { _optionalElevationLayerOutputPolicy = policy; } 286 LayerOutputPolicy getOptionalElevationLayerOutputPolicy() const { return _optionalElevationLayerOutputPolicy; } 287 288 void clearOptionalLayerSet() { _optionalLayerSet.clear(); } 289 void addOptionalLayerSet(const std::string& setname) { _optionalLayerSet.insert(setname); } 290 void removeOptionalLayerSet(const std::string& setname) { _optionalLayerSet.erase(setname); } 291 292 bool isOptionalLayerSet(const std::string& setname) const { return _optionalLayerSet.count(setname)!=0; } 293 294 typedef std::set<std::string> OptionalLayerSet; 295 void setOptionalLayerSet(const OptionalLayerSet& ols) { _optionalLayerSet = ols; } 296 const OptionalLayerSet& getOptionalLayerSet() const { return _optionalLayerSet; } 297 269 298 protected: 270 299 … … 331 360 bool _abortTaskOnError; 332 361 bool _abortRunOnError; 362 363 LayerOutputPolicy _defaultImageLayerOutputPolicy; 364 LayerOutputPolicy _defaultElevationLayerOutputPolicy; 365 LayerOutputPolicy _optionalImageLayerOutputPolicy; 366 LayerOutputPolicy _optionalElevationLayerOutputPolicy; 367 368 OptionalLayerSet _optionalLayerSet; 333 369 }; 334 370 trunk/include/vpb/Serializer
r828 r929 104 104 { 105 105 const C& object = static_cast<const C&>(obj); 106 106 107 if (fw.getWriteOutDefaultValues() || 107 108 _default != (object.*_getter)()) trunk/src/vpb/BuildOptions.cpp
r925 r929 77 77 _abortTaskOnError = true; 78 78 _abortRunOnError = false; 79 80 _defaultImageLayerOutputPolicy = INLINE; 81 _defaultElevationLayerOutputPolicy = INLINE; 82 _optionalImageLayerOutputPolicy = EXTERNAL_SET_DIRECTORY; 83 _optionalElevationLayerOutputPolicy = EXTERNAL_SET_DIRECTORY; 79 84 } 80 85 … … 154 159 _abortTaskOnError = rhs._abortTaskOnError; 155 160 _abortRunOnError = rhs._abortRunOnError; 161 162 _defaultImageLayerOutputPolicy = rhs._defaultImageLayerOutputPolicy; 163 _defaultElevationLayerOutputPolicy = rhs._defaultElevationLayerOutputPolicy; 164 _optionalImageLayerOutputPolicy = rhs._optionalImageLayerOutputPolicy; 165 _optionalElevationLayerOutputPolicy = rhs._optionalElevationLayerOutputPolicy; 166 167 _optionalLayerSet = rhs._optionalLayerSet; 156 168 } 157 169 trunk/src/vpb/BuildOptionsIO.cpp
r925 r929 18 18 #include <string> 19 19 #include <map> 20 #include <set> 20 21 21 22 #include <osg/Vec3> … … 77 78 78 79 80 template<typename C, typename T, typename Itr> 81 class SetSerializer : public osgDB::Serializer 82 { 83 public: 84 85 typedef const T& (C::*GetterFunctionType)() const; 86 typedef void (C::*SetterFunctionType)(const T&); 87 88 SetSerializer(const char* fieldName, const T& defaultValue, GetterFunctionType getter, SetterFunctionType setter): 89 _fieldName(fieldName), 90 _default(defaultValue), 91 _getter(getter), 92 _setter(setter) {} 93 94 bool write(osgDB::Output& fw, const osg::Object& obj) 95 { 96 const C& object = static_cast<const C&>(obj); 97 if (fw.getWriteOutDefaultValues() || 98 _default != (object.*_getter)()) 99 { 100 const T& value = (object.*_getter)(); 101 if (!value.empty()) 102 { 103 fw.indent()<<_fieldName<<" {"<<std::endl; 104 fw.moveIn(); 105 106 for(Itr itr = value.begin(); 107 itr != value.end(); 108 ++itr) 109 { 110 fw.indent()<<*itr<<std::endl; 111 } 112 fw.moveOut(); 113 fw.indent()<<"}"<<std::endl; 114 } 115 } 116 117 return true; 118 } 119 120 bool read(osgDB::Input& fr, osg::Object& obj, bool& itrAdvanced) 121 { 122 C& object = static_cast<C&>(obj); 123 if (fr[0].matchWord(_fieldName.c_str()) && fr[1].isOpenBracket()) 124 { 125 T value; 126 127 int entry = fr[0].getNoNestedBrackets(); 128 129 fr += 2; 130 131 while (!fr.eof() && fr[0].getNoNestedBrackets()>entry) 132 { 133 if (fr[0].isWord()) value.insert(fr[0].getStr()); 134 ++fr; 135 } 136 137 ++fr; 138 139 (object.*_setter)(value); 140 itrAdvanced = true; 141 } 142 143 return true; 144 } 145 146 std::string _fieldName; 147 T _default; 148 GetterFunctionType _getter; 149 SetterFunctionType _setter; 150 }; 151 152 79 153 #define CREATE_ENUM_SERIALIZER(CLASS,PROPERTY,PROTOTYPE) \ 80 154 typedef osgDB::EnumSerializer<CLASS, CLASS::PROPERTY> MySerializer;\ … … 86 160 ) 87 161 162 163 #define CREATE_ENUM_SERIALIZER2(CLASS,NAME, PROPERTY,PROTOTYPE) \ 164 typedef osgDB::EnumSerializer<CLASS, CLASS::PROPERTY> MySerializer;\ 165 osg::ref_ptr<MySerializer> serializer = new MySerializer(\ 166 #NAME,\ 167 PROTOTYPE.get##NAME(),\ 168 &CLASS::get##NAME,\ 169 &CLASS::set##NAME\ 170 ) 171 88 172 89 173 #define ADD_ENUM_PROPERTY(PROPERTY) \ 90 174 CREATE_ENUM_SERIALIZER(BuildOptions, PROPERTY, prototype); \ 175 _serializerList.push_back(serializer.get()) 176 177 #define ADD_ENUM_PROPERTY2(NAME, PROPERTY) \ 178 CREATE_ENUM_SERIALIZER2(BuildOptions, NAME, PROPERTY, prototype); \ 91 179 _serializerList.push_back(serializer.get()) 92 180 … … 138 226 #define AEV ADD_ENUM_VALUE 139 227 #define AEP ADD_ENUM_PROPERTY 228 #define AEP2 ADD_ENUM_PROPERTY2 229 140 230 141 231 class BuildOptionsLookUps … … 223 313 ADD_BOOL_PROPERTY(AbortTaskOnError); 224 314 ADD_BOOL_PROPERTY(AbortRunOnError); 315 316 { AEP2(DefaultImageLayerOutputPolicy, LayerOutputPolicy); AEV(INLINE); AEV(EXTERNAL_LOCAL_DIRECTORY); AEV(EXTERNAL_SET_DIRECTORY); } 317 { AEP2(DefaultElevationLayerOutputPolicy, LayerOutputPolicy); AEV(INLINE); AEV(EXTERNAL_LOCAL_DIRECTORY); AEV(EXTERNAL_SET_DIRECTORY); } 318 319 { AEP2(OptionalImageLayerOutputPolicy, LayerOutputPolicy); AEV(INLINE); AEV(EXTERNAL_LOCAL_DIRECTORY); AEV(EXTERNAL_SET_DIRECTORY); } 320 { AEP2(OptionalElevationLayerOutputPolicy, LayerOutputPolicy); AEV(INLINE); AEV(EXTERNAL_LOCAL_DIRECTORY); AEV(EXTERNAL_SET_DIRECTORY); } 321 322 _serializerList.push_back(new SetSerializer<BuildOptions, BuildOptions::OptionalLayerSet, BuildOptions::OptionalLayerSet::const_iterator>( 323 "OptionalLayerSet", 324 prototype.getOptionalLayerSet(), 325 &BuildOptions::getOptionalLayerSet, 326 &BuildOptions::setOptionalLayerSet)); 327 225 328 } 226 329 … … 233 336 (*itr)->read(fr,db, itrAdvanced); 234 337 } 338 339 235 340 return true; 236 341 } trunk/src/vpb/Commandline.cpp
r928 r929 506 506 usage.addCommandLineOption("--no-abort-run-on-error","Hint to vpbmaster to disable abort of the run when any errors occur (default.)"); 507 507 usage.addCommandLineOption("--set <setname>","Assign the set name of imagery/dem data."); 508 usage.addCommandLineOption("--optional-set <setname>","Add setname to the list of optional layers."); 509 usage.addCommandLineOption("--remove-optional-set <setname>","Remove setname to the list of optional layers."); 508 510 } 509 511 … … 813 815 double xMin, xMax, yMin, yMax; 814 816 817 std::string optionalsetname; 818 while(arguments.read("--optional-set",optionalsetname)) { buildOptions->addOptionalLayerSet(optionalsetname); } 819 while(arguments.read("--remove-optional-set",optionalsetname)) { buildOptions->removeOptionalLayerSet(optionalsetname); } 820 821 815 822 int pos = 1; 816 823 while(pos<arguments.argc()) … … 1053 1060 } 1054 1061 } 1062 1055 1063 return 0; 1056 1064 }
