OSSIM - Open Source Software Image Map  Version 1.9.0 (20180803)
ossimImageChain.h
Go to the documentation of this file.
1 //*******************************************************************
2 // Copyright (C) 2000 ImageLinks Inc.
3 //
4 // License: MIT
5 //
6 // See LICENSE.txt file in the top level directory for more details.
7 //
8 // Author: Garrett Potts
9 //
10 //*************************************************************************
11 // $Id: ossimImageChain.h 20316 2011-12-02 15:56:38Z oscarkramer $
12 #ifndef ossimImageChain_HEADER
13 #define ossimImageChain_HEADER
14 #include <vector>
15 #include <map>
16 using namespace std;
17 
20 #include <ossim/base/ossimId.h>
22 
26 {
27 public:
29  virtual ~ossimImageChain();
30 
32  const ossimConnectableObject::ConnectableObjectList& getChainList()const{return theImageChainList;}
33 
42  ossimConnectableObject* operator[](ossim_uint32 index);
43 
56  virtual ossimConnectableObject* getConnectableObject(ossim_uint32 index);
57 
58  virtual ossim_int32 indexOf(ossimConnectableObject* obj)const;
63  virtual ossimImageSource* getFirstSource();
64  virtual const ossimImageSource* getFirstSource() const;
65 
66  virtual ossimObject* getFirstObject();
67 
72  virtual ossimImageSource* getLastSource();
73  virtual const ossimImageSource* getLastSource() const;
74 
75  virtual ossimObject* getLastObject();
76 
77 
84  bool addFirst(ossimConnectableObject* obj);
85 
91  bool addLast(ossimConnectableObject* obj);
92 
98  bool deleteFirst();
99 
105  bool deleteLast();
106 
110  bool insertRight(ossimConnectableObject* newObj,
111  ossimConnectableObject* rightOfThisObj);
112 
116  bool insertRight(ossimConnectableObject* newObj,
117  const ossimId& id);
118 
122  bool insertLeft(ossimConnectableObject* newObj,
123  const ossimId& id);
127  bool insertLeft(ossimConnectableObject* newObj,
128  ossimConnectableObject* leftOfThisObj);
129 
130  bool replace(ossimConnectableObject* newObj,
131  ossimConnectableObject* oldObj);
141  virtual bool add(ossimConnectableObject* source);
142 
147  virtual ossimRefPtr<ossimImageData> getTile(const ossimIrect& tileRect,
148  ossim_uint32 resLevel=0);
149 
153  virtual ossim_uint32 getNumberOfInputBands() const;
154 
158  virtual ossimScalarType getOutputScalarType() const;
159 
160  virtual double getNullPixelValue(ossim_uint32 band=0)const;
161  virtual double getMinPixelValue(ossim_uint32 band=0)const;
162  virtual double getMaxPixelValue(ossim_uint32 band=0)const;
163 
164  virtual void getOutputBandList(std::vector<ossim_uint32>& bandList) const;
165 
169  virtual ossim_uint32 getTileWidth()const;
170 
174  virtual ossim_uint32 getTileHeight()const;
175 
179  virtual ossimIrect getBoundingRect(ossim_uint32 resLevel=0)const;
180  virtual void getValidImageVertices(vector<ossimIpt>& validVertices,
182  ossim_uint32 resLevel=0)const;
183 
184  virtual ossimRefPtr<ossimImageGeometry> getImageGeometry();
185 
186  virtual void getDecimationFactor(ossim_uint32 resLevel,
187  ossimDpt& result) const;
188  virtual void getDecimationFactors(vector<ossimDpt>& decimations) const;
189  virtual ossim_uint32 getNumberOfDecimationLevels()const;
190 
194  virtual bool saveState(ossimKeywordlist& kwl,
195  const char* prefix=NULL)const;
196 
200  virtual bool loadState(const ossimKeywordlist& kwl,
201  const char* prefix=NULL);
202 
203  virtual void initialize();
204  virtual void enableSource();
205  virtual void disableSource();
206 
207  bool canConnectMyInputTo(ossim_int32 myInputIndex,
208  const ossimConnectableObject* object)const
209  {
210  if(theImageChainList.size()&&
211  theImageChainList[theImageChainList.size()-1].valid())
212  {
213  ossimConnectableObject* obj = PTR_CAST(ossimConnectableObject, theImageChainList[theImageChainList.size()-1].get());
214  if(obj)
215  {
216  return obj->canConnectMyInputTo(myInputIndex,
217  object);
218  }
219  }
220  else if(!theImageChainList.size())
221  {
222  return true;
223  }
224  return false;
225  }
226 
227 // bool canConnectMyOutputTo(int32 myOutputIndex,
228 // const ossimConnectableObject* object)const
229 // {
230 // if(theImageChainList.size()&&theImageChainList[0])
231 // {
232 // ossimConnectableObject* obj = PTR_CAST(ossimConnectableObject, theImageChainList[0]);
233 // if(obj)
234 // {
235 // return obj->canConnectMyOutputTo(myOutputIndex,
236 // object);
237 // }
238 // }
239 
240 // return false;
241 // }
242 
243  // ________________________CONNECTABLE CONTAINER DEFINTIONS_________________
244  //
245 
256  OSSIM_DEPRECATE_METHOD( virtual ossimConnectableObject::ConnectableObjectList findAllObjectsOfType(const RTTItypeid& typeInfo,
257  bool recurse=true));
268  OSSIM_DEPRECATE_METHOD(virtual ossimConnectableObject::ConnectableObjectList findAllObjectsOfType(const ossimString& className,
269  bool recurse=true));
270 
281  OSSIM_DEPRECATE_METHOD(virtual ossimConnectableObject* findFirstObjectOfType(const RTTItypeid& typeInfo,
282  bool recurse=true));
293  OSSIM_DEPRECATE_METHOD(virtual ossimConnectableObject* findFirstObjectOfType(const ossimString& className,
294  bool recurse=true));
295 
306  OSSIM_DEPRECATE_METHOD(virtual ossimConnectableObject* findObject(const ossimId& id,
307  bool recurse=true));
308 
310  bool recurse=true));
311 
317  virtual void makeUniqueIds();
318 
327  virtual ossim_uint32 getNumberOfObjects(bool recurse=true)const;
328 
335  virtual ossim_uint32 getNumberOfSources() const;
336 
341  virtual bool addChild(ossimConnectableObject* attachableObject);
342 
347  virtual bool removeChild(ossimConnectableObject* object);
348  virtual ossimConnectableObject* removeChild(const ossimId& id);
349 
350  virtual void getChildren(vector<ossimConnectableObject*>& children,
351  bool immediateChildrenOnlyFlag);
352  //______________END CONNECTABLE CONTAINER INTERFACE____________
353 
354  virtual void disconnectInputEvent(ossimConnectionEvent& event);
355  virtual void disconnectOutputEvent(ossimConnectionEvent& event);
356  virtual void connectInputEvent(ossimConnectionEvent& event);
357  virtual void connectOutputEvent(ossimConnectionEvent& event);
358  virtual void objectDestructingEvent(ossimObjectDestructingEvent& event);
359 
360  virtual void propagateEventToOutputs(ossimEvent& event);
361  virtual void propagateEventToInputs(ossimEvent& event);
362 
363  virtual void processEvent(ossimEvent& event);
364 
365  virtual void accept(ossimVisitor& visitor);
366  void deleteList();
367 
373  virtual ossimConnectableObject::ConnectableObjectList& imageChainList() { return theImageChainList; }
374  virtual const ossimConnectableObject::ConnectableObjectList& imageChainList() const { return theImageChainList; }
375 
384  //virtual bool fillContainer(ossimConnectableContainer& container);
385 
386 protected:
387  void prepareForRemoval(ossimConnectableObject* connectableObject);
388 
395 
397  // mutable bool thePropagateEventFlag;
398  mutable bool theLoadStateFlag;
405  bool addAllSources(map<ossimId, vector<ossimId> >& idMapping,
406  const ossimKeywordlist& kwl,
407  const char* prefix = NULL);
408  void findInputConnectionIds(vector<ossimId>& result,
409  const ossimKeywordlist& kwl,
410  const char* prefix=NULL);
411  bool connectAllSources(const map<ossimId, vector<ossimId> >& idMapping);
412 
413 
414 TYPE_DATA
415 };
416 #endif /* #ifndef ossimImageChain_HEADER */
#define OSSIMDLLEXPORT
Represents serializable keyword/value map.
#define OSSIM_DEPRECATE_METHOD(func)
WARNINGS SECTION:
std::vector< ossimRefPtr< ossimConnectableObject > > ConnectableObjectList
ossimVertexOrdering
#define TYPE_DATA
Definition: ossimRtti.h:339
bool canConnectMyInputTo(ossim_int32 myInputIndex, const ossimConnectableObject *object) const
required to be overriden by derived classes
virtual ossimConnectableObject::ConnectableObjectList & imageChainList()
These access methods greatly facilitate the implementation of an image chain adaptor class...
const ossimConnectableObject::ConnectableObjectList & getChainList() const
unsigned int ossim_uint32
#define PTR_CAST(T, p)
Definition: ossimRtti.h:321
ossimScalarType
ossimConnectableObject::ConnectableObjectList & getChainList()
virtual const ossimConnectableObject::ConnectableObjectList & imageChainList() const
ossimConnectableObject::ConnectableObjectList theImageChainList
This will hold a sequence of image sources.
ossimRefPtr< ossimImageData > theBlankTile
virtual bool canConnectMyInputTo(ossim_int32 myInputIndex, const ossimConnectableObject *object) const =0
required to be overriden by derived classes
int ossim_int32