Advertisement
vipulraheja

Untitled

Jun 14th, 2011
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 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. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement