OSSIM - Open Source Software Image Map  Version 1.9.0 (20180803)
ossimKakaduJpipHandler.h
Go to the documentation of this file.
1 //----------------------------------------------------------------------------
2 //
3 // License: See top level LICENSE.txt file
4 //
5 // Author: Garrett Potts
6 //
7 // Description: Factory for OSSIM JPIP reader using kakadu library.
8 //----------------------------------------------------------------------------
9 // $Id$
10 #ifndef ossimJpipHandler_HEADER
11 #define ossimJpipHandler_HEADER
13 #include <ossim/base/ossimUrl.h>
18 
19 #include <kdu_cache.h>
20 #include <kdu_region_decompressor.h>
21 #include <kdu_client.h>
22 #include <kdu_compressed.h>
23 
24 
26 {
27 public:
28  typedef std::vector<kdu_core::kdu_byte> ByteBuffer;
29  struct Box
30  {
33  };
34  typedef std::vector<Box> BoxList;
35  typedef std::vector<ossimIrect> RectList;
36  typedef std::vector<ossimString> StringList;
37  typedef std::vector<ossimIpt> RLevelBlockSizeList;
38  typedef std::vector<ossimAppFixedTileCache::ossimAppFixedCacheId> RLevelCacheList;
39 
41  virtual ~ossimKakaduJpipHandler();
42  virtual void close();
43  virtual bool open();
44  virtual bool isOpen()const;
46  ossim_uint32 resLevel=0);
47 
48  virtual ossim_uint32 getNumberOfLines(ossim_uint32 resLevel = 0) const;
49  virtual ossim_uint32 getNumberOfSamples(ossim_uint32 resLevel = 0) const;
50  virtual ossim_uint32 getImageTileWidth() const;
51  virtual ossim_uint32 getImageTileHeight() const;
52 
53  virtual ossim_uint32 getNumberOfInputBands() const;
54  virtual ossim_uint32 getNumberOfOutputBands() const;
56  virtual bool isImageTiled() const
57  {
58  return !m_tileSize.hasNans();
59  }
60  virtual ossimScalarType getOutputScalarType() const;
61  virtual void setProperty(ossimRefPtr<ossimProperty> property);
62  virtual ossimRefPtr<ossimProperty> getProperty(const ossimString& name)const;
63  virtual void getPropertyNames(std::vector<ossimString>& propertyNames)const;
64  virtual void extractBoxes(BoxList& boxList);
66  //virtual void extractXml(ossimString& xmlBoxes);
67  virtual bool loadState(const ossimKeywordlist& kwl, const char* prefix = 0);
68  virtual bool saveState(ossimKeywordlist& kwl, const char* prefix = 0)const;
69 
70 protected:
72  ossim_uint32 resLevel=0);
73  //void extractXmlRecurse(ossimString& xmlBoxes, jp2_input_box* pParentBox=0);
74  virtual void extractBoxes(BoxList& boxList, kdu_supp::jp2_input_box* pParentBox);
75  void showBoxes(kdu_supp::jp2_input_box* pParentBox=0);
76  bool makeConnectionIfNeeded(kdu_supp::kdu_client* client);
77  //virtual bool initializeImplementation();
78  int convertClassIdToKdu(int id);
79  void allocateTile();
80  void deleteRlevelCache();
81  void performRlevelSetup(kdu_core::kdu_codestream& codestream);
82  bool loadClient(kdu_supp::kdu_client* client, kdu_supp::kdu_window& window);
83  bool openStream();
84  void flushCache();
85  void initializeRlevelCache();
86  void allocateSession();
87 
93  bool m_signed;
99  int m_bYCC;
101 
103  kdu_supp::kdu_client* m_headerClient;
104  kdu_supp::kdu_client* m_client;
105  kdu_supp::jp2_family_src m_jp2Family;
109 
115 };
116 #endif
virtual bool saveState(ossimKeywordlist &kwl, const char *prefix=0) const
Method to save the state of an object to a keyword list.
virtual bool isImageTiled() const
Indicates whether or not the image is tiled internally.
virtual bool loadState(const ossimKeywordlist &kwl, const char *prefix=0)
Method to the load (recreate) the state of an object from a keyword list.
ossimRefPtr< ossimImageData > getTileAtRes(const ossimIrect &rect, ossim_uint32 resLevel=0)
void performRlevelSetup(kdu_core::kdu_codestream &codestream)
virtual void getPropertyNames(std::vector< ossimString > &propertyNames) const
Represents serializable keyword/value map.
virtual bool isOpen() const
Derived classes must implement this method to be concrete.
std::vector< ossimIrect > RectList
void showBoxes(kdu_supp::jp2_input_box *pParentBox=0)
virtual void extractBoxes(BoxList &boxList)
float ossim_float32
kdu_supp::kdu_client * m_client
ossimRefPtr< ossimHttpRequest > m_request
virtual ossim_uint32 getImageTileHeight() const
Returns the tile width of the image or 0 if the image is not tiled.
RLevelBlockSizeList m_rlevelTileSize
virtual ossimScalarType getOutputScalarType() const
This will be used to query the output pixel type of the tile source.
virtual ossim_uint32 getNumberOfInputBands() const
unsigned short ossim_uint16
virtual ossim_uint32 getImageTileWidth() const
Returns the tile width of the image or 0 if the image is not tiled.
virtual void close()
Deletes the overview and clears the valid image vertices.
kdu_supp::jp2_family_src m_jp2Family
std::vector< ossimIpt > RLevelBlockSizeList
std::vector< ossimString > StringList
virtual ossimRefPtr< ossimImageGeometry > getImageGeometry()
Returns the image geometry object associated with this tile source or NULL if non defined...
unsigned int ossim_uint32
ossimRefPtr< ossimImageData > m_tile
std::vector< kdu_core::kdu_byte > ByteBuffer
virtual ossimRefPtr< ossimProperty > getProperty(const ossimString &name) const
ossimScalarType
virtual bool open()
Pure virtual open.
This class defines an abstract Handler which all image handlers(loaders) should derive from...
virtual ossim_uint32 getNumberOfSamples(ossim_uint32 resLevel=0) const
Pure virtual, derived classes must implement.
bool loadClient(kdu_supp::kdu_client *client, kdu_supp::kdu_window &window)
virtual ossim_uint32 getNumberOfOutputBands() const
Returns the number of bands in a tile returned from this TileSource.
bool makeConnectionIfNeeded(kdu_supp::kdu_client *client)
virtual ossim_uint32 getNumberOfDecimationLevels() const
This returns the total number of decimation levels.
bool hasNans() const
Definition: ossimIpt.h:58
kdu_supp::kdu_client * m_headerClient
virtual void setProperty(ossimRefPtr< ossimProperty > property)
virtual ossim_uint32 getNumberOfLines(ossim_uint32 resLevel=0) const
Pure virtual, derived classes must implement.
virtual ossimRefPtr< ossimImageData > getTile(const ossimIrect &rect, ossim_uint32 resLevel=0)
std::vector< ossimAppFixedTileCache::ossimAppFixedCacheId > RLevelCacheList