OSSIM - Open Source Software Image Map  Version 1.9.0 (20180803)
ImageHandlerState.cpp
Go to the documentation of this file.
1 //*******************************************************************
2 //
3 // License: See top level LICENSE.txt file
4 //
5 //*************************************************************************
6 
10 
11 const ossimString ossim::ImageHandlerState::m_typeName = "ossim::ImageHandlerState";
12 
13 ossim::ImageHandlerState::ImageHandlerState()
14 : State(),
15 m_currentEntry(0)
16 {
17 
18 }
19 
20 ossim::ImageHandlerState::ImageHandlerState::~ImageHandlerState()
21 {
22 
23 }
24 
25 const ossimString& ossim::ImageHandlerState::getTypeName()const
26 {
27  return m_typeName;
28 }
29 
30 const ossimString& ossim::ImageHandlerState::getStaticTypeName()
31 {
32  return m_typeName;
33 }
34 
35 bool ossim::ImageHandlerState::hasMetaData()const
36 {
37  if(m_omd)
38  {
39  return m_omd->isValid();
40  }
41 
42  return false;
43 }
44 
45 bool ossim::ImageHandlerState::loadDefaults(const ossimFilename& filename,
46  ossim_uint32 entry)
47 {
48  m_connectionString = filename;
49  m_currentEntry = entry;
50 
51  // we still need to add initialization of the defaults for
52  // valid vertices and overview detections, ... etc
53  //
54 
55  return true;
56 }
57 
58 bool ossim::ImageHandlerState::load(const ossimKeywordlist& kwl,
59  const ossimString& prefix)
60 {
61  bool result = ossim::State::load(kwl, prefix);
62  m_overviewState = ossim::ImageHandlerStateRegistry::instance()->createState(kwl, prefix+"overview.");
63  m_connectionString = kwl.find(prefix, "connection_string");
64  m_imageHandlerType = kwl.find(prefix, "image_handler_type");
65  ossimString currentEntry = kwl.find(prefix, "current_entry");
66 
67  if(currentEntry.empty())
68  {
69  m_currentEntry = 0;
70  }
71  else
72  {
73  m_currentEntry = currentEntry.toUInt32();
74  }
75 
76  ossimString omdType = kwl.find(prefix, "ossimImageMetaData");
77  if(!omdType.empty())
78  {
79  m_omd = std::make_shared<ossimImageMetaData>();
80 
81  m_omd->loadState(kwl, prefix+"omd.");
82  }
83  ossimKeywordlist tempKwl;
84  kwl.extractKeysThatMatch(tempKwl, "^("+prefix+"valid_vertices.)");
85  if(tempKwl.getSize())
86  {
87  tempKwl.stripPrefixFromAll("^("+prefix+"valid_vertices.)");
88  m_validVertices = std::make_shared<ossimKeywordlist>(tempKwl);
89  }
90 
91  return result;
92 }
93 
94 bool ossim::ImageHandlerState::save(ossimKeywordlist& kwl,
95  const ossimString& prefix)const
96 {
97  bool result = ossim::State::save(kwl, prefix);
98 
99  if(m_overviewState)
100  {
101  ossimString tempPrefix = prefix + "overview.";
102  m_overviewState->save(kwl, tempPrefix);
103  }
104  if(m_omd)
105  {
106  ossimString tempPrefix = prefix + "omd.";
107  m_omd->saveState(kwl, tempPrefix);
108  }
109  kwl.add(prefix, "connection_string", m_connectionString.c_str(), true);
110  kwl.add(prefix, "image_handler_type", m_imageHandlerType.c_str(), true);
111  kwl.add(prefix, "current_entry", m_currentEntry, true);
112 
113  if(m_validVertices)
114  {
115  ossimString validVerticesPrefix = prefix+"valid_vertices.";
116  kwl.add(validVerticesPrefix.c_str(), *m_validVertices);
117  kwl.add(validVerticesPrefix, "type", "ossimValidVertices");
118  }
119 
120  return result;
121 }
void stripPrefixFromAll(const ossimString &regularExpression)
Represents serializable keyword/value map.
const char * find(const char *key) const
ossim_uint32 toUInt32() const
virtual bool save(ossimKeywordlist &kwl, const ossimString &prefix="") const =0
Allows a state to be saved to a keywordlist.
Definition: State.cpp:10
void add(const char *prefix, const ossimKeywordlist &kwl, bool overwrite=true)
virtual bool load(const ossimKeywordlist &kwl, const ossimString &prefix="")=0
Allows a state to be loaded from keywordlist.
Definition: State.cpp:4
unsigned int ossim_uint32
void extractKeysThatMatch(ossimKeywordlist &kwl, const ossimString &regularExpression) const
ossim_uint32 getSize() const
const char * c_str() const
Returns a pointer to a null-terminated array of characters representing the string&#39;s contents...
Definition: ossimString.h:396
bool empty() const
Definition: ossimString.h:411
static std::shared_ptr< ImageHandlerStateRegistry > instance()