vipulraheja

src

Jun 14th, 2011
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.30 KB | None | 0 0
  1. //-----------------------------------------------------------------------------
  2. // File: Info.cpp
  3. //
  4. // License: See top level LICENSE.txt file.
  5. //
  6. // Author: David Burken
  7. //
  8. // Description: Class definition for Info.
  9. //
  10. //-----------------------------------------------------------------------------
  11. // $Id: Info.cpp 19750 2011-06-13 15:04:07Z dburken $
  12.  
  13. #include <ossimjni/Info.h>
  14. #include <ossim/base/ossimArgumentParser.h>
  15. #include <ossim/base/ossimFilename.h>
  16. #include <ossim/base/ossimKeywordlist.h>
  17. #include <ossim/base/ossimNotify.h>
  18. #include <ossim/util/ossimInfo.h>
  19.  
  20. ossimjni::Info::Info() :
  21. m_info(new ossimInfo)
  22. {
  23. }
  24.  
  25. ossimjni::Info::~Info()
  26. {
  27. if (m_info)
  28. {
  29. delete m_info;
  30. m_info = 0;
  31. }
  32. }
  33.  
  34. bool ossimjni::Info::initialize(int argc, char* argv[])
  35. {
  36. ossimArgumentParser ap(&argc, argv);
  37. return m_info->initialize(ap);
  38. }
  39.  
  40. void ossimjni::Info::execute()
  41. {
  42. m_info->execute();
  43. }
  44.  
  45. std::map<std::string, std::string> ossimjni::Info::getImageInfo(const std::string& file,
  46. bool dumpFlag,
  47. bool dnoFlag,
  48. bool imageGeomFlag,
  49. bool imageInfoFlag,
  50. bool metaDataFlag,
  51. bool paletteFlag) const
  52. {
  53. ossimFilename imageFile(file);
  54. ossimKeywordlist kwl;
  55. m_info->getImageInfo(imageFile,
  56. dumpFlag,
  57. dnoFlag,
  58. imageGeomFlag,
  59. imageInfoFlag,
  60. metaDataFlag,
  61. paletteFlag,
  62. kwl);
  63. return kwl.getMap();
  64. }
  65.  
  66. +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  67.  
  68. //----------------------------------------------------------------------------
  69. // File: Init.h
  70. //
  71. // License: See top level LICENSE.txt file.
  72. //
  73. // Author: David Burken
  74. //
  75. // Description: Class declaration for Init. Handles ossim initialization.
  76. //
  77. //----------------------------------------------------------------------------
  78. // $Id: Init.cpp 19748 2011-06-12 15:34:56Z dburken $
  79.  
  80. #include <ossimjni/Init.h>
  81.  
  82. #include <ossim/base/ossimArgumentParser.h>
  83. #include <ossim/init/ossimInit.h>
  84.  
  85. ossimjni::Init* ossimjni::Init::m_instance = 0;
  86.  
  87. ossimjni::Init::~Init()
  88. {
  89. }
  90.  
  91. ossimjni::Init* ossimjni::Init::instance()
  92. {
  93. if (!m_instance)
  94. {
  95. m_instance = new ossimjni::Init;
  96. }
  97. return m_instance;
  98. }
  99.  
  100. void ossimjni::Init::initialize(int argc, char* argv[])
  101. {
  102. if(!m_initCalledFlag)
  103. {
  104. m_initCalledFlag = true;
  105. ossimArgumentParser ap(&argc, argv);
  106. ossimInit::instance()->addOptions(ap);
  107. ossimInit::instance()->initialize(ap);
  108. }
  109. }
  110.  
  111. void ossimjni::Init::initialize()
  112. {
  113. if(!m_initCalledFlag)
  114. {
  115. m_initCalledFlag = true;
  116. ossimInit::instance()->initialize();
  117. }
  118. }
  119.  
  120. ossimjni::Init::Init() :
  121. m_initCalledFlag(false)
  122. {
  123. }
  124.  
  125. ossimjni::Init::Init(const ossimjni::Init& obj) :
  126. m_initCalledFlag(obj.m_initCalledFlag)
  127. {
  128. }
  129.  
  130. const ossimjni::Init& ossimjni::Init::operator=(const ossimjni::Init& obj)
  131. {
  132. if ( this != &obj )
  133. {
  134. m_initCalledFlag = obj.m_initCalledFlag;
  135. }
  136. return *this;
  137. }
  138.  
  139. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  140.  
  141. //-----------------------------------------------------------------------------
  142. // File: SingleImageChain.cpp
  143. //
  144. // License: See top level LICENSE.txt file.
  145. //
  146. // Author: David Burken
  147. //
  148. // Description: Class definition for SingleImageChain.
  149. //
  150. //-----------------------------------------------------------------------------
  151. // $Id: SingleImageChain.cpp 19748 2011-06-12 15:34:56Z dburken $
  152.  
  153. #include <ossimjni/SingleImageChain.h>
  154. #include <ossim/base/ossimArgumentParser.h>
  155. #include <ossim/base/ossimConstants.h>
  156. #include <ossim/base/ossimFilename.h>
  157. #include <ossim/base/ossimNotify.h>
  158. #include <ossim/base/ossimRefPtr.h>
  159. #include <ossim/imaging/ossimBandSelector.h>
  160. #include <ossim/imaging/ossimHistogramRemapper.h>
  161. #include <ossim/imaging/ossimImageHandler.h>
  162. #include <ossim/imaging/ossimSingleImageChain.h>
  163.  
  164. ossimjni::SingleImageChain::SingleImageChain() :
  165. m_img(new ossimSingleImageChain)
  166. {
  167. }
  168.  
  169. ossimjni::SingleImageChain::~SingleImageChain()
  170. {
  171. if (m_img)
  172. {
  173. delete m_img;
  174. m_img = 0;
  175. }
  176. }
  177.  
  178. bool ossimjni::SingleImageChain::open(const std::string& file)
  179. {
  180. return m_img->open(ossimFilename(file));
  181. }
  182.  
  183. bool ossimjni::SingleImageChain::open(const std::string& file, ossimjni_int32 entry)
  184. {
  185. bool result = false;
  186. if ( m_img->open(ossimFilename(file)) )
  187. {
  188. ossimRefPtr<ossimImageHandler> ih = m_img->getImageHandler();
  189. if ( ih.valid() )
  190. {
  191. result = ih->setCurrentEntry( static_cast<ossim_uint32>(entry) );
  192. }
  193. }
  194. return result;
  195. }
  196.  
  197. bool ossimjni::SingleImageChain::isOpen() const
  198. {
  199. return m_img->isOpen();
  200. }
  201.  
  202. void ossimjni::SingleImageChain::close()
  203. {
  204. m_img->close();
  205. }
  206.  
  207. std::vector<ossimjni_int32> ossimjni::SingleImageChain::getEntryList() const
  208. {
  209. std::vector<ossimjni_int32> result(0);
  210. ossimRefPtr<ossimImageHandler> ih = m_img->getImageHandler();
  211. if ( ih.valid() )
  212. {
  213. std::vector<ossim_uint32> list;
  214. ih->getEntryList(list);
  215. std::vector<ossim_uint32>::const_iterator i = list.begin();
  216. while ( i != list.end() )
  217. {
  218. result.push_back(static_cast<ossimjni_int32>(*i));
  219. ++i;
  220. }
  221. }
  222. return result;
  223. }
  224.  
  225. std::string ossimjni::SingleImageChain::getFilename() const
  226. {
  227. std::string result = m_img->getFilename();
  228. return result;
  229. }
  230.  
  231. void ossimjni::SingleImageChain::createRenderedChain()
  232. {
  233. m_img->createRenderedChain();
  234. }
  235.  
  236. bool ossimjni::SingleImageChain::selectBands(const std::vector<ossimjni_uint32>& bands)
  237. {
  238. bool result = verifyBandRange(bands);
  239. if ( result )
  240. {
  241. const ossim_uint32 IMG_BANDS = getNumberOfBands();
  242. if (IMG_BANDS > 1)
  243. {
  244. // This will add a band selector to chain if not there yet.
  245. m_img->setBandSelection(bands);
  246. }
  247. }
  248. return result;
  249. }
  250.  
  251. std::vector<ossimjni_uint32> ossimjni::SingleImageChain::getBandSelection() const
  252. {
  253. std::vector<ossimjni_uint32> result(0);
  254. const ossim_uint32 IMG_BANDS = getNumberOfBands();
  255. if ( IMG_BANDS )
  256. {
  257. if ( IMG_BANDS == 1 )
  258. {
  259. result.push_back(1);
  260. }
  261. else
  262. {
  263. ossimRefPtr<ossimBandSelector> bs = m_img->getBandSelector();
  264. if ( bs.valid() == false )
  265. {
  266. m_img->addBandSelector();
  267. bs = m_img->getBandSelector();
  268. }
  269. if ( bs.valid() )
  270. {
  271. bs->getOutputBandList(result);
  272. }
  273. }
  274. }
  275. return result;
  276. }
  277.  
  278. ossimjni_uint32 ossimjni::SingleImageChain::getNumberOfBands() const
  279. {
  280. ossimjni_uint32 result = 0;
  281. if ( isOpen() )
  282. {
  283. ossimRefPtr<ossimImageHandler> ih = m_img->getImageHandler();
  284. if ( ih.valid() )
  285. {
  286. result = ih->getNumberOfOutputBands();
  287. }
  288. }
  289. return result;
  290. }
  291.  
  292. bool ossimjni::SingleImageChain::setHistogram(const std::string& his)
  293. {
  294. bool result = false;
  295. if ( isOpen() )
  296. {
  297. ossimRefPtr<ossimHistogramRemapper> hr = m_img->getHistogramRemapper();
  298. if ( hr.valid() == false )
  299. {
  300. //---
  301. // If the chain is not created check for the need for a band selector as
  302. // it should be in front of the histogram in the chain in case bands are
  303. // filtered out.
  304. //---
  305. const ossim_uint32 IMG_BANDS = getNumberOfBands();
  306. if ( IMG_BANDS > 1 )
  307. {
  308. ossimRefPtr<ossimBandSelector> bs = m_img->getBandSelector();
  309. if ( bs.valid() == false )
  310. {
  311. m_img->addBandSelector();
  312. }
  313. }
  314. m_img->addHistogramRemapper();
  315. hr = m_img->getHistogramRemapper();
  316. }
  317. if ( hr.valid() )
  318. {
  319. result = hr->openHistogram( ossimFilename(his) );
  320. }
  321. }
  322. return result;
  323. }
  324.  
  325. std::string ossimjni::SingleImageChain::getHistogramFile() const
  326. {
  327. std::string result;
  328. ossimRefPtr<ossimHistogramRemapper> hr = m_img->getHistogramRemapper();
  329. if ( hr.valid() )
  330. {
  331. result = hr->getHistogramFile().c_str();
  332. }
  333. return result;
  334. }
  335.  
  336. bool ossimjni::SingleImageChain::setOverview(const std::string& ovr)
  337. {
  338. bool result = false;
  339. if ( isOpen() )
  340. {
  341. ossimRefPtr<ossimImageHandler> ih = m_img->getImageHandler();
  342. if ( ih.valid() )
  343. {
  344. ossimFilename f(ovr);
  345. ossimRefPtr<const ossimImageHandler> ovrIh = ih->getOverview();
  346. if ( ovrIh.valid() )
  347. {
  348. ossimFilename currentOvrFilename = ovrIh->getFilename();
  349. if ( ( f == currentOvrFilename) || (f.expand() == currentOvrFilename) )
  350. {
  351. result = true; // Already has open.
  352. }
  353. }
  354. if ( !result )
  355. {
  356. result = ih->openOverview(f);
  357. }
  358. }
  359. }
  360. return result;
  361. }
  362.  
  363. std::string ossimjni::SingleImageChain::getOverviewFile() const
  364. {
  365. std::string result;
  366. if ( isOpen() )
  367. {
  368. ossimRefPtr<ossimImageHandler> ih = m_img->getImageHandler();
  369. if ( ih.valid() )
  370. {
  371. ossimRefPtr<const ossimImageHandler> ovrIh = ih->getOverview();
  372. if ( ovrIh.valid() )
  373. {
  374. result = ovrIh->getFilename().string();
  375. }
  376. }
  377. }
  378. return result;
  379. }
  380.  
  381. bool ossimjni::SingleImageChain::verifyBandRange(const std::vector<ossimjni_uint32>& bands) const
  382. {
  383. bool result = true;
  384. if ( isOpen() && bands.size() )
  385. {
  386. const ossim_uint32 IMG_BANDS = getNumberOfBands();
  387. std::vector<ossimjni_uint32>::const_iterator i = bands.begin();
  388. while ( i != bands.end() )
  389. {
  390. if ( *i >= IMG_BANDS )
  391. {
  392. result = false;
  393. break;
  394. }
  395. ++i;
  396. }
  397. }
  398. else
  399. {
  400. result = false; // not open or no bands.
  401. }
  402. return result;
  403. }
Add Comment
Please, Sign In to add comment