OSSIM - Open Source Software Image Map  Version 1.9.0 (20180803)
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
ossimBumpShadeTileSource Class Reference

This uses a derivative of Blinn's bump function to compute a 3-D looking image. More...

#include <ossimBumpShadeTileSource.h>

Inheritance diagram for ossimBumpShadeTileSource:
ossimImageCombiner ossimImageSource ossimConnectableObjectListener ossimSource ossimListener ossimConnectableObject ossimErrorStatusInterface ossimObject ossimListenerManager ossimPropertyInterface ossimReferenced

Public Member Functions

 ossimBumpShadeTileSource ()
 
ossimString getShortName () const
 
ossimString getLongName () const
 
ossimRefPtr< ossimImageDatagetTile (const ossimIrect &tileRect, ossim_uint32 resLevel=0)
 
virtual bool getTile (ossimImageData *tile, ossim_uint32 resLevel=0)
 Method to get a tile. More...
 
virtual ossim_uint32 getNumberOfOutputBands () const
 This should always return 3. More...
 
virtual ossimScalarType getOutputScalarType () const
 The output scalar type should always be 8-bit. More...
 
virtual double getNullPixelValue () const
 the null pixel is 0.0. More...
 
virtual double getMinPixelValue (ossim_uint32 band=0) const
 the min pixel is 1.0. More...
 
virtual double getMaxPixelValue (ossim_uint32 band=0) const
 the max pixel is 255. More...
 
virtual double getAzimuthAngle () const
 
virtual double getElevationAngle () const
 
virtual void setAzimuthAngle (double angle)
 
virtual void setElevationAngle (double angle)
 
virtual void initialize ()
 
virtual bool loadState (const ossimKeywordlist &kwl, const char *prefix=0)
 Method to the load (recreate) the state of an object from a keyword list. More...
 
virtual bool saveState (ossimKeywordlist &kwl, const char *prefix=0) const
 Method to save the state of an object to a keyword list. More...
 
bool canConnectMyInputTo (ossim_int32 inputIndex, const ossimConnectableObject *object) const
 required to be overriden by derived classes More...
 
virtual void connectInputEvent (ossimConnectionEvent &event)
 
virtual void disconnectInputEvent (ossimConnectionEvent &event)
 
virtual void propertyEvent (ossimPropertyEvent &event)
 
virtual void refreshEvent (ossimRefreshEvent &event)
 
void computeLightDirection ()
 Will re-compute the light direction given the elevation angle and azimuth angle. More...
 
virtual void setProperty (ossimRefPtr< ossimProperty > property)
 
virtual ossimRefPtr< ossimPropertygetProperty (const ossimString &name) const
 
virtual void getPropertyNames (std::vector< ossimString > &propertyNames) const
 
void setRgbColorSource (ossim_uint8 r, ossim_uint8 g, ossim_uint8 b)
 Set the red, green and blue color source values. More...
 
void getRgbColorSource (ossim_uint8 &r, ossim_uint8 &g, ossim_uint8 &b) const
 Gets the red, green and blue color source values. More...
 
- Public Member Functions inherited from ossimImageCombiner
 ossimImageCombiner ()
 
 ossimImageCombiner (ossimObject *owner, int numberOfInputs, int numberOfOutputs, bool inputListIsFixedFlag, bool outputListIsFixedFlag)
 
 ossimImageCombiner (ossimConnectableObject::ConnectableObjectList &inputSources)
 
virtual ossimIrect getBoundingRect (ossim_uint32 resLevel=0) const
 This will return the bounding rect of the source. More...
 
virtual void updateRects ()
 This will go through and precompute the bounding rects of each input image. More...
 
virtual ossim_uint32 getNumberOfInputBands () const
 Returns the number of bands available from the input. More...
 
virtual ossim_uint32 getTileWidth () const
 Returns the default processing tile width. More...
 
virtual ossim_uint32 getTileHeight () const
 Returns the default processing tile height. More...
 
virtual double getNullPixelValue (ossim_uint32 band=0) const
 Each band has a null pixel associated with it. More...
 
virtual ossim_uint32 getNumberOfOverlappingImages (const ossimIrect &rect, ossim_uint32 resLevel=0) const
 Used to retrieve the number of overlapping images withint the given rect. More...
 
virtual void getOverlappingImages (std::vector< ossim_uint32 > &result, const ossimIrect &rect, ossim_uint32 resLevel=0) const
 Used to populate the result with the index of the overlapping images. More...
 
virtual ossimRefPtr< ossimImageDatagetNextTile (ossim_uint32 &returnedIdx, const ossim_uint32 startIdx, const ossimIrect &tileRect, ossim_uint32 resLevel=0)
 
virtual ossimRefPtr< ossimImageDatagetNextTile (ossim_uint32 &returnedIdx, const ossimIrect &tileRect, ossim_uint32 resLevel=0)
 
virtual bool getNextTile (ossim_uint32 &returnedIdx, const ossim_uint32 startIdx, ossimImageData *tile, ossim_uint32 resLevel=0)
 
virtual ossimRefPtr< ossimImageDatagetNextNormTile (ossim_uint32 &returnedIdx, const ossim_uint32 index, const ossimIrect &tileRect, ossim_uint32 resLevel=0)
 
virtual ossimRefPtr< ossimImageDatagetNextNormTile (ossim_uint32 &returnedIdx, const ossimIrect &tileRect, ossim_uint32 resLevel=0)
 
virtual bool hasDifferentInputs () const
 
- Public Member Functions inherited from ossimImageSource
 ossimImageSource (ossimObject *owner=0)
 
 ossimImageSource (ossimObject *owner, ossim_uint32 inputListSize, ossim_uint32 outputListSize, bool inputListIsFixedFlag=true, bool outputListIsFixedFlag=true)
 
virtual ~ossimImageSource ()
 
virtual ossimRefPtr< ossimImageDatagetTile (const ossimIpt &origin, ossim_uint32 resLevel=0)
 
virtual ossimObjectgetObject ()
 For RTTI support. More...
 
virtual const ossimObjectgetObject () const
 For RTTI support. More...
 
virtual void getDecimationFactor (ossim_uint32 resLevel, ossimDpt &result) const
 Will return the decimation factor for the given resolution level. More...
 
virtual void getDecimationFactors (std::vector< ossimDpt > &decimations) const
 Will return an array of all decimations for each resolution level. More...
 
virtual ossim_uint32 getNumberOfDecimationLevels () const
 Will return the number of resolution levels. More...
 
virtual void getOutputBandList (std::vector< ossim_uint32 > &bandList) const
 Initializes bandList. More...
 
virtual void getBoundingRect (ossimIrect &rect, ossim_uint32 resLevel=0) const
 Gets the bounding rectangle of the source. More...
 
virtual void getValidImageVertices (std::vector< ossimIpt > &validVertices, ossimVertexOrdering ordering=OSSIM_CLOCKWISE_ORDER, ossim_uint32 resLevel=0) const
 ordering specifies how the vertices should be arranged. More...
 
virtual ossimRefPtr< ossimImageGeometrygetImageGeometry ()
 Returns the image geometry object associated with this tile source or NULL if not defined. More...
 
virtual void setImageGeometry (const ossimImageGeometry *geom)
 Default implementation sets geometry of the first input to the geometry specified. More...
 
virtual void saveImageGeometry () const
 Default method to call input's saveImageGeometry. More...
 
virtual void saveImageGeometry (const ossimFilename &geometry_file) const
 Default method to call input's saveImageGeometry. More...
 
virtual bool isIndexedData () const
 
- Public Member Functions inherited from ossimSource
 ossimSource (ossimObject *owner=0)
 
 ossimSource (ossimObject *owner, ossim_uint32 inputListSize, ossim_uint32 outputListSize, bool inputListIsFixedFlag=true, bool outputListIsFixedFlag=true)
 
virtual ~ossimSource ()
 
virtual bool isSourceEnabled () const
 
virtual void enableSource ()
 
virtual void disableSource ()
 
virtual bool getEnableFlag () const
 
virtual void setEnableFlag (bool flag)
 
virtual bool isInitialized () const
 
virtual void setInitializedFlag (bool flag)
 
virtual std::ostream & print (std::ostream &out) const
 Outputs theErrorStatus as an ossimErrorCode and an ossimString. More...
 
- Public Member Functions inherited from ossimConnectableObject
 ossimConnectableObject (ossimObject *owner=0)
 Base constructor of this object. More...
 
 ossimConnectableObject (ossimObject *owner, ossim_int32 inputListSize, ossim_int32 outputListSize, bool inputListIsFixedFlag=true, bool outputListIsFixedFlag=true)
 
virtual ~ossimConnectableObject ()
 
void setId (const ossimId &id)
 All connectable objects will have id's. More...
 
const ossimIdgetId () const
 Will allow us to get this object's id. More...
 
const ossimObjectgetOwner () const
 Fetches the current owner, most likely a container but not limited to one. More...
 
virtual void changeOwner (ossimObject *owner)
 Permits changing the object's owner. More...
 
virtual void setDescription (const ossimString &description)
 
virtual ossimString getDescription () const
 
virtual bool isConnected (ossimConnectableObjectDirectionType direction=CONNECTABLE_DIRECTION_INPUT) const
 will check the direction specified to see if all slots are full. More...
 
 OSSIM_DEPRECATE_METHOD (virtual ossimConnectableObject *findConnectableObject(const ossimId &id))
 
 OSSIM_DEPRECATE_METHOD (virtual ossimConnectableObject *findObjectOfType(RTTItypeid typeId, ossimConnectableObjectDirectionType directionType, bool recurse=true))
 
 OSSIM_DEPRECATE_METHOD (virtual ossimConnectableObject *findObjectOfType(const ossimString &obj, ossimConnectableObjectDirectionType directionType, bool recurse=true))
 
 OSSIM_DEPRECATE_METHOD (virtual ossimConnectableObject *findInputObjectOfType(const ossimString &className))
 
virtual ossim_int32 findInputIndex (const ossimConnectableObject *object)
 Return a valid index of the input list if the passed in object is found else return -1. More...
 
virtual ossim_int32 findInputIndex (const ossimId &id)
 Return a valid index of the input list if the passed id is found else return -1. More...
 
virtual ossim_int32 findOutputIndex (const ossimConnectableObject *object)
 Return a valid index of the output list if the passed in object is found else return -1. More...
 
virtual ossim_int32 findOutputIndex (const ossimId &id)
 Return a valid index of the output list if the passed in object is found else return -1. More...
 
virtual ossim_int32 getMyInputIndexToConnectTo (ossimConnectableObject *object) const
 Should return the first available index to connect to. More...
 
virtual ossim_int32 getMyOutputIndexToConnectTo (ossimConnectableObject *object) const
 Should return the first available index to connect to. More...
 
virtual bool canConnectMyOutputTo (ossim_int32 myOutputIndex, const ossimConnectableObject *object) const
 default implementation is to allow anyone to connect to us. More...
 
virtual void disconnect (ossimConnectableObject *object=0)
 Will disconnect the object passed in. More...
 
virtual void disconnect (const ossimId &id)
 Will disconnect the object passed in. More...
 
virtual ossimRefPtr< ossimConnectableObjectdisconnectMyInput (ossim_int32 inputIndex, bool disconnectOutputFlag=true, bool createEventFlag=true)
 Will disconnect the object at the given input index and generate a connection event. More...
 
virtual void disconnectMyInput (ossimConnectableObject *input, bool disconnectOutputFlag=true, bool createEventFlag=true)
 Finds the index of the passed in input and calls disconnectMyInput(inputIndex, disconnectOutputFlag, createEventFlag);. More...
 
virtual void disconnectMyInputs (ConnectableObjectList &inputList, bool disconnectOutputFlag=true, bool createEventFlag=true)
 
virtual ossimRefPtr< ossimConnectableObjectdisconnectMyOutput (ossim_int32 outputIndex, bool disconnectInputFlag=true, bool createEventFlag=true)
 Will disconnect the object at the given output index and generate a connection event. More...
 
virtual void disconnectMyOutput (ossimConnectableObject *output, bool disconnectInputFlag=true, bool createEventFlag=true)
 Will disconnect the output object. More...
 
virtual void disconnectMyOutputs (ConnectableObjectList &outputList, bool disconnectOutputFlag=true, bool createEventFlag=true)
 
virtual void disconnectAllInputs ()
 Will disconnect all of the input objects. More...
 
virtual void disconnectAllOutputs ()
 Will disconnect all of the output objects. More...
 
virtual ossim_int32 connectMyInputTo (ossimConnectableObject *inputObject, bool makeOutputConnection=true, bool createEventFlag=true)
 Will try to connect this objects input to the passed in object. More...
 
virtual ossim_int32 connectMyInputTo (ossim_int32 inputIndex, ossimConnectableObject *inputObject, bool makeOutputConnection=true, bool createEventFlag=true)
 Will connect the specified input to the passed in object. More...
 
virtual bool connectMyInputTo (ConnectableObjectList &inputList, bool makeOutputConnection=true, bool createEventFlag=true)
 
virtual ossim_int32 connectMyOutputTo (ossimConnectableObject *outputObject, bool makeInputConnection=true, bool createEventFlag=true)
 Will try to connect this objects output to the passed in object. More...
 
virtual bool connectMyOutputTo (ConnectableObjectList &outputList, bool makeInputConnection=true, bool createEventFlag=true)
 
virtual bool connectInputList (ConnectableObjectList &inputList)
 Will disconnect itself from all inputs and reset to the passed in input list. More...
 
virtual bool connectOutputList (ConnectableObjectList &outputList)
 Will disconnect itself from all outputs and reset to the passed in output list. More...
 
virtual ossim_uint32 getNumberOfInputs () const
 Returns the number of input objects. More...
 
virtual ossim_uint32 getNumberOfOutputs () const
 Return the number of output objects. More...
 
ossimConnectableObjectgetInput (ossim_uint32 index=0)
 returns the object at the specified index. More...
 
const ossimConnectableObjectgetInput (ossim_uint32 index=0) const
 returns the object at the specified index. More...
 
ossimConnectableObjectgetOutput (ossim_uint32 index=0)
 returns the object at the specified index. More...
 
const ossimConnectableObjectgetOutput (ossim_uint32 index=0) const
 returns the object at the specified index. More...
 
virtual void setNumberOfInputs (ossim_int32 numberOfInputs)
 Will set the number of inputs. More...
 
virtual bool getInputListIsFixedFlag () const
 
virtual bool getOutputListIsFixedFlag () const
 
virtual void setNumberOfOutputs (ossim_int32 numberOfInputs)
 Will set the number of outputs. More...
 
const ConnectableObjectListgetInputList () const
 
const ConnectableObjectListgetOutputList () const
 
ConnectableObjectListgetInputList ()
 
ConnectableObjectListgetOutputList ()
 
 OSSIM_DEPRECATE_METHOD (virtual void findAllObjectsOfType(ConnectableObjectList &result, const RTTItypeid &typeInfo, bool recurse=true))
 
 OSSIM_DEPRECATE_METHOD (virtual void findAllObjectsOfType(ConnectableObjectList &result, const ossimString &className, bool recurse=true))
 
virtual void propagateEventToOutputs (ossimEvent &event)
 
virtual void propagateEventToInputs (ossimEvent &event)
 
virtual void setProperty (const ossimString &name, const ossimString &value)
 
virtual ossim_uint32 saveStateOfAllInputs (ossimKeywordlist &kwl, bool saveThisStateFlag=true, ossim_uint32 objectIndex=1, const char *prefix=0) const
 Save the state of all inputs to a keyword list. More...
 
virtual bool fillContainer (ossimConnectableContainer &container)
 Inserts this object and all of its children and inputs into the container provided. More...
 
bool moveInputUp (const ossimId &id)
 Moves the input connection matching id up one in the connection list. More...
 
bool moveInputDown (const ossimId &id)
 Moves the input connection matching id down one in the connection list. More...
 
bool moveInputToTop (const ossimId &id)
 Moves the input connection matching id to the top of the connection list. More...
 
bool moveInputToBottom (const ossimId &id)
 Moves the input connection matching id to the bottom of the connection list. More...
 
virtual void accept (ossimVisitor &visitor)
 We will add a visitor interface for all connectable objects. More...
 
- Public Member Functions inherited from ossimObject
 ossimObject ()
 
virtual ~ossimObject ()
 
virtual ossimObjectdup () const
 
virtual ossimString getClassName () const
 
virtual RTTItypeid getType () const
 
virtual bool canCastTo (ossimObject *obj) const
 
virtual bool canCastTo (const RTTItypeid &id) const
 
virtual bool canCastTo (const ossimString &parentClassName) const
 
virtual bool isEqualTo (const ossimObject &obj, ossimCompareType compareType=OSSIM_COMPARE_FULL) const
 
- Public Member Functions inherited from ossimReferenced
 ossimReferenced ()
 
 ossimReferenced (const ossimReferenced &)
 
ossimReferencedoperator= (const ossimReferenced &)
 
void ref () const
 increment the reference count by one, indicating that this object has another pointer which is referencing it. More...
 
void unref () const
 decrement the reference count by one, indicating that a pointer to this object is referencing it. More...
 
void unref_nodelete () const
 decrement the reference count by one, indicating that a pointer to this object is referencing it. More...
 
int referenceCount () const
 
- Public Member Functions inherited from ossimListenerManager
 ossimListenerManager ()
 
virtual ~ossimListenerManager ()
 
virtual void fireEvent (ossimEvent &event)
 
virtual bool addListener (ossimListener *listener)
 
virtual bool removeListener (ossimListener *listener)
 
virtual bool findListener (ossimListener *listener)
 
- Public Member Functions inherited from ossimPropertyInterface
 ossimPropertyInterface ()
 
virtual ~ossimPropertyInterface ()
 
virtual ossimString getPropertyValueAsString (const ossimString &name) const
 
void getPropertyList (std::vector< ossimRefPtr< ossimProperty > > &propertyList) const
 
void setProperties (std::vector< ossimRefPtr< ossimProperty > > &propertyList)
 
- Public Member Functions inherited from ossimErrorStatusInterface
 ossimErrorStatusInterface ()
 
virtual ~ossimErrorStatusInterface ()
 
virtual ossimErrorCode getErrorStatus () const
 
virtual ossimString getErrorStatusString () const
 
virtual void setErrorStatus (ossimErrorCode error_status) const
 
virtual void setErrorStatus () const
 
virtual void clearErrorStatus () const
 
bool hasError () const
 
- Public Member Functions inherited from ossimConnectableObjectListener
 ossimConnectableObjectListener ()
 
virtual ~ossimConnectableObjectListener ()
 
virtual void processEvent (ossimEvent &event)
 ProcessEvent. More...
 
virtual void objectDestructingEvent (ossimObjectDestructingEvent &)
 
virtual void connectionEvent (ossimConnectionEvent &)
 
virtual void disconnectOutputEvent (ossimConnectionEvent &)
 
virtual void connectOutputEvent (ossimConnectionEvent &)
 
virtual void addObjectEvent (ossimContainerEvent &)
 
virtual void removeObjectEvent (ossimContainerEvent &)
 
virtual void containerEvent (ossimContainerEvent &)
 
- Public Member Functions inherited from ossimListener
 ossimListener ()
 
virtual ~ossimListener ()
 
void enableListener ()
 
void disableListener ()
 
void setListenerEnableFlag (bool flag)
 
bool isListenerEnabled () const
 
bool getListenerEnableFlag () const
 

Protected Member Functions

virtual ~ossimBumpShadeTileSource ()
 
void allocate ()
 
void computeColor (ossim_uint8 &r, ossim_uint8 &g, ossim_uint8 &b, ossim_float64 normalX, ossim_float64 normalY, ossim_float64 normalZ, ossim_uint8 dr, ossim_uint8 dg, ossim_uint8 db) const
 
- Protected Member Functions inherited from ossimImageCombiner
virtual ~ossimImageCombiner ()
 
void precomputeBounds () const
 
- Protected Member Functions inherited from ossimImageSource
 ossimImageSource (const ossimImageSource &rhs)
 
const ossimImageSourceoperator= (const ossimImageSource &)
 
- Protected Member Functions inherited from ossimSource
 ossimSource (const ossimSource &rhs)
 
const ossimSourceoperator= (const ossimSource &rhs)
 
- Protected Member Functions inherited from ossimConnectableObject
ossimConnectableObjectfindObjectOfType (ConnectableObjectList *connectableList, ossimVisitor &visitor)
 
- Protected Member Functions inherited from ossimReferenced
virtual ~ossimReferenced ()
 
- Protected Member Functions inherited from ossimListenerManager
 ossimListenerManager (const ossimListenerManager &rhs)
 

Protected Attributes

ossimRefPtr< ossimImageDatam_tile
 The result of the illumination equation is stored in here. More...
 
double m_lightSourceElevationAngle
 Used for the light vector computation. More...
 
double m_lightSourceAzimuthAngle
 Used for the light vector computation. More...
 
NEWMAT::ColumnVector m_lightDirection
 This is computed from the elevation and azimuth angles of the light source. More...
 
ossim_uint8 m_r
 rgb values used when no color source (2nd layer) is present. More...
 
ossim_uint8 m_g
 
ossim_uint8 m_b
 
- Protected Attributes inherited from ossimImageCombiner
ossim_uint32 theLargestNumberOfInputBands
 
ossim_uint32 theInputToPassThrough
 
bool theHasDifferentInputs
 
ossimRefPtr< ossimImageDatatheNormTile
 
std::vector< ossimIrecttheFullResBounds
 
bool theComputeFullResBoundsFlag
 
ossim_uint32 theCurrentIndex
 
- Protected Attributes inherited from ossimSource
bool theEnableFlag
 
bool theInitializedFlag
 
- Protected Attributes inherited from ossimConnectableObject
ossimId theId
 
ossimString theDescription
 
ossimObjecttheOwner
 
bool theInputListIsFixedFlag
 Indicates whether the theInputObjectList is fixed. More...
 
bool theOutputListIsFixedFlag
 Indicates whether the theOutputObjectList is fixed. More...
 
ConnectableObjectList theInputObjectList
 Holds a list of input objects. More...
 
ConnectableObjectList theOutputObjectList
 Holds a list of output objects. More...
 
- Protected Attributes inherited from ossimListenerManager
std::list< ossimListener * > theListenerList
 
bool theEnabledFlag
 
std::list< ossimListener * > theDelayedAdd
 
std::list< ossimListener * > theDelayedRemove
 
bool theFireEventFlag
 
- Protected Attributes inherited from ossimErrorStatusInterface
ossimErrorCode theErrorStatus
 
- Protected Attributes inherited from ossimListener
bool theListenerEnableFlag
 

Additional Inherited Members

- Public Types inherited from ossimConnectableObject
enum  ossimConnectableObjectDirectionType { CONNECTABLE_DIRECTION_NONE = 0, CONNECTABLE_DIRECTION_INPUT = 1, CONNECTABLE_DIRECTION_OUTPUT = 2 }
 
typedef std::vector< ossimRefPtr< ossimConnectableObject > > ConnectableObjectList
 

Detailed Description

This uses a derivative of Blinn's bump function to compute a 3-D looking image.

The elevation data can be from Grey Scale image or from a Dted file. This class can take one or two inputs. The First input is an elevation input that is used to compute a perturbed Normal which is used in a simple lambertian shading equation. The second input is some color source (Grey or RGB) that defines the diffuse color used within the illumination equation for each pixel. If the diffuse color input is not supplied then an all white color is used for the color. There are several adjustable parameters that can be set: 1) the Incident light vector described by the Azimuth and Elevation Angle, 2) the pixel scale used along the x and y direction, and 3) the partial derivative matrix used for the partial derivative computation along the x and y direction.

Some examples of good values:
If we are using dted 90 meters as input for shading then:
1) set pixel scale to 180.  Since the partials do 2*dx and 2*dy then
   the scale is 2*90meters = 180.
2) set azimuth angle to 45 and set elevation angle to 45 degrees.  Change
   them to see the effects.
3) use the following matrix -1 0 1
                            -1 0 1
                            -1 0 1
                               &
                             1  1  1
                             0  0  0
                            -1 -1 -1
   for the partials along x and y directions respectively.  These matrices
   (f(x+dx, y) - f(x-dx, y))/2*dx and
   (f(x, y+dy) - f(x, y-dy))/2*dy
   for an apprximate derivative about some point x, y
If we are using pixel intesity (1 - 255) then set the scales to around
100.
 Note: varying the scales will vary the smoothness/roughness of the surface
       Smaller the scale the rougher the surface will look.
The output of this source is always a 3-band 8-bit image.
Keywords:
  type:               ossimBumpShadeTileSource
  azimuth_angle:      45.000000000000000
  elevation_angle:    45.000000000000000
  scale_per_pixel_x:  180.000000000000000  // this is the 2*dx defined above
  scale_per_pixel_y:  180.000000000000000  // this is the 2*dy defined above
  the next set of keywords are optional and the default is as defined above.
  these define the matrix.
A typical chain would look something like this:
OrthoMosaicOfElevation–>Normals–>Renderer–>|
                                              |–> BumpShade–>Output 
ColorSource--------------------—>Renderer–>|
NOTES:
1) "Normals" is an ossimImageToPlaneNormalFilter class
2) The bump map input source is used to bump or shade the input color
source.  The input color source currently must be a 1 or 3 band
image.  Note that the output of this source is always
3 bands (r, g, b).
3) If no color source (2nd input layer) is present the r,g,b values will be
used.  The method setRgbColorSource can be used to control this.
 

Definition at line 101 of file ossimBumpShadeTileSource.h.

Constructor & Destructor Documentation

◆ ossimBumpShadeTileSource()

ossimBumpShadeTileSource::ossimBumpShadeTileSource ( )

Definition at line 35 of file ossimBumpShadeTileSource.cpp.

References initialize().

36  :ossimImageCombiner(0, 2, 0, true, false),
37  m_tile(0),
41  m_r(255),
42  m_g(255),
43  m_b(255)
44 {
45  initialize();
46 }
ossim_uint8 m_r
rgb values used when no color source (2nd layer) is present.
double m_lightSourceAzimuthAngle
Used for the light vector computation.
NEWMAT::ColumnVector m_lightDirection
This is computed from the elevation and azimuth angles of the light source.
ossimRefPtr< ossimImageData > m_tile
The result of the illumination equation is stored in here.
double m_lightSourceElevationAngle
Used for the light vector computation.

◆ ~ossimBumpShadeTileSource()

ossimBumpShadeTileSource::~ossimBumpShadeTileSource ( )
protectedvirtual

Definition at line 48 of file ossimBumpShadeTileSource.cpp.

49 {
50 }

Member Function Documentation

◆ allocate()

void ossimBumpShadeTileSource::allocate ( )
protected

Definition at line 304 of file ossimBumpShadeTileSource.cpp.

References ossimImageDataFactory::create(), ossimImageData::initialize(), ossimImageDataFactory::instance(), and m_tile.

Referenced by getTile().

305 {
307  m_tile->initialize();
308 }
virtual void initialize()
Initialize the data buffer.
static ossimImageDataFactory * instance()
virtual ossimRefPtr< ossimImageData > create(ossimSource *owner, ossimScalarType scalar, ossim_uint32 bands=1) const
ossimRefPtr< ossimImageData > m_tile
The result of the illumination equation is stored in here.

◆ canConnectMyInputTo()

bool ossimBumpShadeTileSource::canConnectMyInputTo ( ossim_int32  myInputIndex,
const ossimConnectableObject object 
) const
virtual

required to be overriden by derived classes

Reimplemented from ossimImageCombiner.

Definition at line 451 of file ossimBumpShadeTileSource.cpp.

References PTR_CAST.

453 {
454  return (object&&
455  ( (inputIndex>=0) && inputIndex < 2)&&
456  PTR_CAST(ossimImageSource, object));
457 
458 }
#define PTR_CAST(T, p)
Definition: ossimRtti.h:321

◆ computeColor()

void ossimBumpShadeTileSource::computeColor ( ossim_uint8 r,
ossim_uint8 g,
ossim_uint8 b,
ossim_float64  normalX,
ossim_float64  normalY,
ossim_float64  normalZ,
ossim_uint8  dr,
ossim_uint8  dg,
ossim_uint8  db 
) const
protected

Definition at line 264 of file ossimBumpShadeTileSource.cpp.

References ossimRgbVector::clamp(), and m_lightDirection.

Referenced by getTile().

273 {
274  double c = /*fabs*/(normalX*m_lightDirection[0] +
275  normalY*m_lightDirection[1] +
276  normalZ*m_lightDirection[2]);
277 
278  r = ossimRgbVector::clamp(ossim::round<int>(c*dr), 1, 255);
279  g = ossimRgbVector::clamp(ossim::round<int>(c*dg), 1, 255);
280  b = ossimRgbVector::clamp(ossim::round<int>(c*db), 1, 255);
281 }
static long clamp(long colorValue, unsigned char min=0, unsigned char max=255)
NEWMAT::ColumnVector m_lightDirection
This is computed from the elevation and azimuth angles of the light source.

◆ computeLightDirection()

void ossimBumpShadeTileSource::computeLightDirection ( )

Will re-compute the light direction given the elevation angle and azimuth angle.

Definition at line 310 of file ossimBumpShadeTileSource.cpp.

References ossimMatrix3x3::createRotationMatrix(), m_lightDirection, m_lightSourceAzimuthAngle, m_lightSourceElevationAngle, and ossimColumnVector3d::unit().

Referenced by initialize().

311 {
313  0.0,
314  -m_lightSourceAzimuthAngle); // make positive rotation clockwise for azimuth
315  NEWMAT::ColumnVector v(3);
316  v[0] = 0;
317  v[1] = 1;
318  v[2] = 0;
319  v = m*v;
320  // reflect Z. We need the Z pointing up from the surface and not into it.
321  //
322  ossimColumnVector3d d(v[0], v[1], -v[2]);
323  d = d.unit();
324  m_lightDirection[0] = d[0];
325  m_lightDirection[1] = d[1];
326  m_lightDirection[2] = d[2];
327 }
double m_lightSourceAzimuthAngle
Used for the light vector computation.
NEWMAT::ColumnVector m_lightDirection
This is computed from the elevation and azimuth angles of the light source.
double m_lightSourceElevationAngle
Used for the light vector computation.
static NEWMAT::Matrix createRotationMatrix(double angleX, double angleY, double angleZ, ossimCoordSysOrientMode orientationMode=OSSIM_RIGHT_HANDED)

◆ connectInputEvent()

void ossimBumpShadeTileSource::connectInputEvent ( ossimConnectionEvent event)
virtual

Reimplemented from ossimImageCombiner.

Definition at line 460 of file ossimBumpShadeTileSource.cpp.

References initialize().

461 {
462  initialize();
463 }

◆ disconnectInputEvent()

void ossimBumpShadeTileSource::disconnectInputEvent ( ossimConnectionEvent event)
virtual

Reimplemented from ossimImageCombiner.

Definition at line 465 of file ossimBumpShadeTileSource.cpp.

References initialize().

466 {
467  initialize();
468 }

◆ getAzimuthAngle()

double ossimBumpShadeTileSource::getAzimuthAngle ( ) const
virtual
Returns
Returns the rotation of the incident vector..

Definition at line 431 of file ossimBumpShadeTileSource.cpp.

References m_lightSourceAzimuthAngle.

432 {
434 }
double m_lightSourceAzimuthAngle
Used for the light vector computation.

◆ getElevationAngle()

double ossimBumpShadeTileSource::getElevationAngle ( ) const
virtual
Returns
Returns the elevation of the incident vector.

Definition at line 436 of file ossimBumpShadeTileSource.cpp.

References m_lightSourceElevationAngle.

437 {
439 }
double m_lightSourceElevationAngle
Used for the light vector computation.

◆ getLongName()

ossimString ossimBumpShadeTileSource::getLongName ( ) const
virtual

Reimplemented from ossimObject.

Definition at line 401 of file ossimBumpShadeTileSource.cpp.

402 {
403  return ossimString("Blinn's bump map filter");
404 }

◆ getMaxPixelValue()

double ossimBumpShadeTileSource::getMaxPixelValue ( ossim_uint32  band = 0) const
virtual

the max pixel is 255.

Returns
max pixel value is always 255

Reimplemented from ossimImageCombiner.

Definition at line 426 of file ossimBumpShadeTileSource.cpp.

427 {
428  return 255.0;
429 }

◆ getMinPixelValue()

double ossimBumpShadeTileSource::getMinPixelValue ( ossim_uint32  band = 0) const
virtual

the min pixel is 1.0.

Returns
min pixel value is always 1

Reimplemented from ossimImageCombiner.

Definition at line 421 of file ossimBumpShadeTileSource.cpp.

422 {
423  return 1.0;
424 }

◆ getNullPixelValue()

double ossimBumpShadeTileSource::getNullPixelValue ( ) const
virtual

the null pixel is 0.0.

Returns
null pixel value is always 0

Definition at line 416 of file ossimBumpShadeTileSource.cpp.

417 {
418  return 0.0;
419 }

◆ getNumberOfOutputBands()

ossim_uint32 ossimBumpShadeTileSource::getNumberOfOutputBands ( ) const
virtual

This should always return 3.

Reimplemented from ossimImageSource.

Definition at line 406 of file ossimBumpShadeTileSource.cpp.

407 {
408  return 3;
409 }

◆ getOutputScalarType()

ossimScalarType ossimBumpShadeTileSource::getOutputScalarType ( ) const
virtual

The output scalar type should always be 8-bit.

Reimplemented from ossimImageCombiner.

Definition at line 411 of file ossimBumpShadeTileSource.cpp.

References OSSIM_UCHAR.

412 {
413  return OSSIM_UCHAR;
414 }
8 bit unsigned iteger

◆ getProperty()

ossimRefPtr< ossimProperty > ossimBumpShadeTileSource::getProperty ( const ossimString name) const
virtual

Reimplemented from ossimImageSource.

Definition at line 497 of file ossimBumpShadeTileSource.cpp.

References ossimImageSource::getProperty(), m_lightSourceAzimuthAngle, m_lightSourceElevationAngle, ossimProperty::setCacheRefreshBit(), and ossimString::toString().

498 {
499  if(name == "lightSourceElevationAngle")
500  {
502  prop->setCacheRefreshBit();
503  return prop;
504  }
505  else if(name == "lightSourceAzimuthAngle")
506  {
508  prop->setCacheRefreshBit();
509  return prop;
510  }
511 
512  return ossimImageCombiner::getProperty(name);
513 }
static ossimString toString(bool aValue)
Numeric to string methods.
double m_lightSourceAzimuthAngle
Used for the light vector computation.
virtual ossimRefPtr< ossimProperty > getProperty(const ossimString &name) const
double m_lightSourceElevationAngle
Used for the light vector computation.
void setCacheRefreshBit()

◆ getPropertyNames()

void ossimBumpShadeTileSource::getPropertyNames ( std::vector< ossimString > &  propertyNames) const
virtual

Reimplemented from ossimImageSource.

Definition at line 515 of file ossimBumpShadeTileSource.cpp.

References ossimImageSource::getPropertyNames().

516 {
518  propertyNames.push_back("lightSourceElevationAngle");
519  propertyNames.push_back("lightSourceAzimuthAngle");
520 }
virtual void getPropertyNames(std::vector< ossimString > &propertyNames) const

◆ getRgbColorSource()

void ossimBumpShadeTileSource::getRgbColorSource ( ossim_uint8 r,
ossim_uint8 g,
ossim_uint8 b 
) const

Gets the red, green and blue color source values.

Parameters
rred
ggreen
bblue

Definition at line 531 of file ossimBumpShadeTileSource.cpp.

References m_b, m_g, and m_r.

534 {
535  r = m_r;
536  g = m_g;
537  b = m_b;
538 }
ossim_uint8 m_r
rgb values used when no color source (2nd layer) is present.

◆ getShortName()

ossimString ossimBumpShadeTileSource::getShortName ( ) const
virtual

Reimplemented from ossimObject.

Definition at line 396 of file ossimBumpShadeTileSource.cpp.

397 {
398  return ossimString("bump shader");
399 }

◆ getTile() [1/2]

ossimRefPtr< ossimImageData > ossimBumpShadeTileSource::getTile ( const ossimIrect rect,
ossim_uint32  resLevel = 0 
)
virtual
Returns
the requested region of interest

Reimplemented from ossimImageSource.

Definition at line 52 of file ossimBumpShadeTileSource.cpp.

References allocate(), ossimRefPtr< T >::get(), ossimConnectableObject::getInput(), ossimImageData::initialize(), m_tile, ossimImageData::setImageRectangle(), and ossimRefPtr< T >::valid().

55 {
56  if (!getInput(0))
57  return 0;
58 
59  if(!m_tile.get())
60  {
61  allocate();
62  }
63  if(!m_tile.valid())
64  {
65  return m_tile;
66  }
67 
68  m_tile->setImageRectangle(tileRect);
69  m_tile->initialize();
70  getTile(m_tile.get(), resLevel);
71  return m_tile;
72 
73 }
virtual void setImageRectangle(const ossimIrect &rect)
bool valid() const
Definition: ossimRefPtr.h:75
virtual void initialize()
Initialize the data buffer.
ossimConnectableObject * getInput(ossim_uint32 index=0)
returns the object at the specified index.
ossimRefPtr< ossimImageData > m_tile
The result of the illumination equation is stored in here.
ossimRefPtr< ossimImageData > getTile(const ossimIrect &tileRect, ossim_uint32 resLevel=0)

◆ getTile() [2/2]

bool ossimBumpShadeTileSource::getTile ( ossimImageData result,
ossim_uint32  resLevel = 0 
)
virtual

Method to get a tile.

Parameters
resultThe tile to stuff. Note The requested rectangle in full image space and bands should be set in the result tile prior to passing. This is the default implementation that is not thread-friendly as it uses the object's tile then simply copies its buffer to the provided tile. Eventually, all image sources should override this method.
Returns
true on success false on error. If return is false, result is undefined so caller should handle appropriately with makeBlank or whatever.
Note
Derived classes should override this method to most efficiently stuff result.

Reimplemented from ossimImageSource.

Definition at line 75 of file ossimBumpShadeTileSource.cpp.

References computeColor(), ossimRefPtr< T >::get(), ossimImageData::getBuf(), ossimDataObject::getDataObjectStatus(), ossimImageData::getHeight(), ossimImageData::getImageRectangle(), ossimConnectableObject::getInput(), ossimImageData::getNullPix(), ossimImageData::getNumberOfBands(), ossimImageSource::getNumberOfOutputBands(), ossimImageSource::getOutputScalarType(), ossimRectilinearDataObject::getScalarType(), ossimImageSource::getTile(), ossimImageData::getWidth(), ossimSource::isSourceEnabled(), m_b, m_g, m_r, m_tile, ossimImageData::makeBlank(), OSSIM_DOUBLE, OSSIM_EMPTY, OSSIM_NULL, OSSIM_UCHAR, ossimNotify(), ossimNotifyLevel_NOTICE, PTR_CAST, ossimImageData::setImageRectangle(), status, ossimImageData::validate(), x, and y.

76 {
77  if (!getInput(0) || !tile) return false;
78  if(!isSourceEnabled()) return true;
79 
80  tile->makeBlank();
81 
82  ossimIrect tileRect = tile->getImageRectangle();
84  ossimRefPtr<ossimImageData> colorData = 0;
85  if(colorSource)
86  {
87  colorData = new ossimImageData(colorSource, colorSource->getOutputScalarType(),
88  colorSource->getNumberOfOutputBands(),
89  tile->getWidth(), tile->getHeight());
90 
91  // Caution: Must set rect prior to getTile:
92  colorData->setImageRectangle(tileRect);
93 
94  colorSource->getTile(colorData.get(), resLevel);
95  }
96 
98  ossimRefPtr<ossimImageData> normalData =
99  new ossimImageData(normalSource, normalSource->getOutputScalarType(),
100  normalSource->getNumberOfOutputBands(),
101  tile->getWidth(), tile->getHeight());
102 
103  // Caution: Must set rect prior to getTile:
104  normalData->setImageRectangle(tileRect);
105 
106  normalSource->getTile(normalData.get(), resLevel);
108  if ((status == OSSIM_NULL) || (status == OSSIM_EMPTY) ||
109  (normalData->getNumberOfBands() != 3) ||
110  (normalData->getScalarType() != OSSIM_DOUBLE))
111  {
112  return false;
113  }
114 
115  ossim_float64* normalBuf[3];
116  normalBuf[0] = static_cast<ossim_float64*>(normalData->getBuf(0));
117  normalBuf[1] = static_cast<ossim_float64*>(normalData->getBuf(1));
118  normalBuf[2] = static_cast<ossim_float64*>(normalData->getBuf(2));
119  ossim_float64 normalNp = normalData->getNullPix(0);
120 
121  //---
122  // If we have some color data then use it for the bump
123  // else we will default to a grey scale bump shade.
124  //---
125  if ( colorData.get() &&
126  (colorData->getDataObjectStatus() != OSSIM_EMPTY) &&
127  (colorData->getDataObjectStatus() != OSSIM_NULL) )
128  {
129  switch(colorData->getScalarType())
130  {
131  case OSSIM_UCHAR:
132  {
133  ossim_uint8* resultBuf[3];
134  ossim_uint8* colorBuf[3];
135  resultBuf[0] = static_cast<ossim_uint8*>(tile->getBuf(0));
136  resultBuf[1] = static_cast<ossim_uint8*>(tile->getBuf(1));
137  resultBuf[2] = static_cast<ossim_uint8*>(tile->getBuf(2));
138  colorBuf[0] = static_cast<ossim_uint8*>(colorData->getBuf(0));
139  if(colorData->getBuf(1))
140  {
141  colorBuf[1] = static_cast<ossim_uint8*>(colorData->getBuf(1));
142  }
143  else
144  {
145  colorBuf[1] = colorBuf[0];
146  }
147  if(colorData->getBuf(2))
148  {
149  colorBuf[2] = static_cast<ossim_uint8*>(colorData->getBuf(2));
150  }
151  else
152  {
153  colorBuf[2] = colorBuf[0];
154  }
155 
156  long h = m_tile->getHeight();
157  long w = m_tile->getWidth();
158  for(long y = 0; y < h; ++y)
159  {
160  for(long x = 0; x < w; ++x)
161  {
162  if((*normalBuf[0] != normalNp) &&
163  (*normalBuf[1] != normalNp) &&
164  (*normalBuf[2] != normalNp) )
165  {
166  if((*colorBuf[0])||(*colorBuf[1])||(*colorBuf[2]))
167  {
168  computeColor(*resultBuf[0],
169  *resultBuf[1],
170  *resultBuf[2],
171  *normalBuf[0],
172  *normalBuf[1],
173  *normalBuf[2],
174  *colorBuf[0],
175  *colorBuf[1],
176  *colorBuf[2]);
177  }
178  else
179  {
180  computeColor(*resultBuf[0],
181  *resultBuf[1],
182  *resultBuf[2],
183  *normalBuf[0],
184  *normalBuf[1],
185  *normalBuf[2],
186  m_r,
187  m_g,
188  m_b);
189  }
190  }
191  else
192  {
193  *resultBuf[0] = *colorBuf[0];
194  *resultBuf[1] = *colorBuf[1];
195  *resultBuf[2] = *colorBuf[2];
196  }
197  resultBuf[0]++;
198  resultBuf[1]++;
199  resultBuf[2]++;
200  colorBuf[0]++;
201  colorBuf[1]++;
202  colorBuf[2]++;
203  normalBuf[0]++;
204  normalBuf[1]++;
205  normalBuf[2]++;
206  }
207  }
208  break;
209  }
210  default:
211  {
213  << "ossimBumpShadeTileSource::getTile NOTICE:\n"
214  << "only 8-bit unsigned char is supported." << endl;
215  }
216  }
217  }
218  else
219  {
220  ossim_uint8* resultBuf[3];
221  resultBuf[0] = static_cast<ossim_uint8*>(tile->getBuf(0));
222  resultBuf[1] = static_cast<ossim_uint8*>(tile->getBuf(1));
223  resultBuf[2] = static_cast<ossim_uint8*>(tile->getBuf(2));
224  long h = tile->getHeight();
225  long w = tile->getWidth();
226  for(long y = 0; y < h; ++y)
227  {
228  for(long x = 0; x < w; ++x)
229  {
230  if((*normalBuf[0] != normalNp) &&
231  (*normalBuf[1] != normalNp) &&
232  (*normalBuf[2] != normalNp) )
233  {
234  computeColor(*resultBuf[0],
235  *resultBuf[1],
236  *resultBuf[2],
237  *normalBuf[0],
238  *normalBuf[1],
239  *normalBuf[2],
240  m_r,
241  m_g,
242  m_b);
243  }
244  else
245  {
246  *resultBuf[0] = 0;
247  *resultBuf[1] = 0;
248  *resultBuf[2] = 0;
249  }
250  resultBuf[0]++;
251  resultBuf[1]++;
252  resultBuf[2]++;
253  normalBuf[0]++;
254  normalBuf[1]++;
255  normalBuf[2]++;
256  }
257  }
258  }
259 
260  tile->validate();
261  return true;
262 }
virtual ossim_uint32 getWidth() const
ossim_uint32 x
virtual bool isSourceEnabled() const
Definition: ossimSource.cpp:79
ossim_uint8 m_r
rgb values used when no color source (2nd layer) is present.
virtual ossim_uint32 getNumberOfBands() const
virtual void setImageRectangle(const ossimIrect &rect)
virtual ossim_uint32 getNumberOfOutputBands() const
Returns the number of bands in a tile returned from this TileSource.
ossim_uint32 y
virtual ossimDataObjectStatus getDataObjectStatus() const
virtual ossim_uint32 getHeight() const
ossimConnectableObject * getInput(ossim_uint32 index=0)
returns the object at the specified index.
double ossim_float64
void computeColor(ossim_uint8 &r, ossim_uint8 &g, ossim_uint8 &b, ossim_float64 normalX, ossim_float64 normalY, ossim_float64 normalZ, ossim_uint8 dr, ossim_uint8 dg, ossim_uint8 db) const
virtual const ossim_float64 * getNullPix() const
#define PTR_CAST(T, p)
Definition: ossimRtti.h:321
return status
virtual ossimScalarType getScalarType() const
virtual ossimScalarType getOutputScalarType() const
This will be used to query the output pixel type of the tile source.
virtual const void * getBuf() const
ossimRefPtr< ossimImageData > m_tile
The result of the illumination equation is stored in here.
ossimDataObjectStatus
Definitions for data object status.
64 bit floating point
unsigned char ossim_uint8
OSSIMDLLEXPORT std::ostream & ossimNotify(ossimNotifyLevel level=ossimNotifyLevel_WARN)
8 bit unsigned iteger
virtual ossimRefPtr< ossimImageData > getTile(const ossimIpt &origin, ossim_uint32 resLevel=0)

◆ initialize()

void ossimBumpShadeTileSource::initialize ( )
virtual

Reimplemented from ossimImageCombiner.

Definition at line 283 of file ossimBumpShadeTileSource.cpp.

References computeLightDirection(), ossimConnectableObject::getInput(), ossimImageCombiner::initialize(), ossimImageSource::initialize(), and m_tile.

Referenced by connectInputEvent(), disconnectInputEvent(), ossimBumpShadeTileSource(), propertyEvent(), and refreshEvent().

284 {
286 
287  ossimImageSource* normalSource = dynamic_cast<ossimImageSource*>( getInput(0) );
288  if ( normalSource )
289  {
290  normalSource->initialize();
291  }
292 
293  ossimImageSource* colorSource = dynamic_cast<ossimImageSource*>( getInput(1) );
294  if ( colorSource )
295  {
296  colorSource->initialize();
297  }
298 
299  m_tile = 0;
300 
302 }
void computeLightDirection()
Will re-compute the light direction given the elevation angle and azimuth angle.
ossimConnectableObject * getInput(ossim_uint32 index=0)
returns the object at the specified index.
ossimRefPtr< ossimImageData > m_tile
The result of the illumination equation is stored in here.
virtual void initialize()=0

◆ loadState()

bool ossimBumpShadeTileSource::loadState ( const ossimKeywordlist kwl,
const char *  prefix = 0 
)
virtual

Method to the load (recreate) the state of an object from a keyword list.

Return true if ok or false on error.

Reimplemented from ossimImageCombiner.

Definition at line 329 of file ossimBumpShadeTileSource.cpp.

References ossimKeywordNames::AZIMUTH_ANGLE_KW, ossimKeywordNames::ELEVATION_ANGLE_KW, ossimKeywordlist::find(), m_lightSourceAzimuthAngle, m_lightSourceElevationAngle, and ossimString::toDouble().

331 {
332  const char* elevationAngle = kwl.find(prefix, ossimKeywordNames::ELEVATION_ANGLE_KW);
333  const char* azimuthAngle = kwl.find(prefix, ossimKeywordNames::AZIMUTH_ANGLE_KW);
334 
335 
336  if(elevationAngle)
337  {
339  }
340 
341  if(azimuthAngle)
342  {
344  }
345 
346  const char* lookup = kwl.find(prefix, COLOR_RED_KW);
347  if (lookup)
348  {
349  m_r = ossimString(lookup).toUInt8();
350  }
351 
352  lookup = kwl.find(prefix, COLOR_GREEN_KW);
353  if (lookup)
354  {
355  m_g = ossimString(lookup).toUInt8();
356  }
357 
358  lookup = kwl.find(prefix, COLOR_BLUE_KW);
359  if (lookup)
360  {
361  m_b = ossimString(lookup).toUInt8();
362  }
363 
364 
366 
367  bool result = ossimImageSource::loadState(kwl, prefix);
368 
370  theOutputListIsFixedFlag = false;
372 
373  return result;
374 }
virtual void setNumberOfInputs(ossim_int32 numberOfInputs)
Will set the number of inputs.
ossim_uint8 m_r
rgb values used when no color source (2nd layer) is present.
ossim_uint8 toUInt8() const
virtual bool loadState(const ossimKeywordlist &kwl, const char *prefix=0)
Method to the load (recreate) the state of an object from a keyword list.
const char * find(const char *key) const
void computeLightDirection()
Will re-compute the light direction given the elevation angle and azimuth angle.
double m_lightSourceAzimuthAngle
Used for the light vector computation.
double toDouble() const
static const char * AZIMUTH_ANGLE_KW
virtual ossim_uint32 getNumberOfInputs() const
Returns the number of input objects.
bool theInputListIsFixedFlag
Indicates whether the theInputObjectList is fixed.
static const char * ELEVATION_ANGLE_KW
bool theOutputListIsFixedFlag
Indicates whether the theOutputObjectList is fixed.
double m_lightSourceElevationAngle
Used for the light vector computation.

◆ propertyEvent()

void ossimBumpShadeTileSource::propertyEvent ( ossimPropertyEvent event)
virtual

Reimplemented from ossimImageCombiner.

Definition at line 470 of file ossimBumpShadeTileSource.cpp.

References initialize().

471 {
472  initialize();
473 }

◆ refreshEvent()

void ossimBumpShadeTileSource::refreshEvent ( ossimRefreshEvent event)
virtual

Reimplemented from ossimImageCombiner.

Definition at line 475 of file ossimBumpShadeTileSource.cpp.

References initialize().

476 {
477  initialize();
478 }

◆ saveState()

bool ossimBumpShadeTileSource::saveState ( ossimKeywordlist kwl,
const char *  prefix = 0 
) const
virtual

Method to save the state of an object to a keyword list.

Return true if ok or false on error.

Reimplemented from ossimImageCombiner.

Definition at line 376 of file ossimBumpShadeTileSource.cpp.

References ossimKeywordlist::add(), ossimKeywordNames::AZIMUTH_ANGLE_KW, ossimKeywordNames::ELEVATION_ANGLE_KW, m_lightSourceAzimuthAngle, and m_lightSourceElevationAngle.

378 {
379  kwl.add(prefix,
382  true);
383 
384  kwl.add(prefix,
387  true);
388 
389  kwl.add(prefix, COLOR_RED_KW, m_r, true);
390  kwl.add(prefix, COLOR_GREEN_KW, m_g, true);
391  kwl.add(prefix, COLOR_BLUE_KW, m_b, true);
392 
393  return ossimImageSource::saveState(kwl, prefix);
394 }
ossim_uint8 m_r
rgb values used when no color source (2nd layer) is present.
double m_lightSourceAzimuthAngle
Used for the light vector computation.
void add(const char *prefix, const ossimKeywordlist &kwl, bool overwrite=true)
static const char * AZIMUTH_ANGLE_KW
virtual bool saveState(ossimKeywordlist &kwl, const char *prefix=0) const
Method to save the state of an object to a keyword list.
static const char * ELEVATION_ANGLE_KW
double m_lightSourceElevationAngle
Used for the light vector computation.

◆ setAzimuthAngle()

void ossimBumpShadeTileSource::setAzimuthAngle ( double  angle)
virtual

Definition at line 441 of file ossimBumpShadeTileSource.cpp.

References m_lightSourceAzimuthAngle.

Referenced by ossimHillshadeTool::initProcessingChain().

442 {
444 }
double m_lightSourceAzimuthAngle
Used for the light vector computation.

◆ setElevationAngle()

void ossimBumpShadeTileSource::setElevationAngle ( double  angle)
virtual

Definition at line 446 of file ossimBumpShadeTileSource.cpp.

References m_lightSourceElevationAngle.

Referenced by ossimHillshadeTool::initProcessingChain().

447 {
449 }
double m_lightSourceElevationAngle
Used for the light vector computation.

◆ setProperty()

void ossimBumpShadeTileSource::setProperty ( ossimRefPtr< ossimProperty property)
virtual

Reimplemented from ossimImageSource.

Definition at line 480 of file ossimBumpShadeTileSource.cpp.

References m_lightSourceAzimuthAngle, m_lightSourceElevationAngle, and ossimImageSource::setProperty().

481 {
482  ossimString name = property->getName();
483  if(name == "lightSourceElevationAngle")
484  {
485  m_lightSourceElevationAngle = property->valueToString().toDouble();
486  }
487  else if(name == "lightSourceAzimuthAngle")
488  {
489  m_lightSourceAzimuthAngle = property->valueToString().toDouble();
490  }
491  else
492  {
494  }
495 }
double m_lightSourceAzimuthAngle
Used for the light vector computation.
virtual void setProperty(ossimRefPtr< ossimProperty > property)
double m_lightSourceElevationAngle
Used for the light vector computation.

◆ setRgbColorSource()

void ossimBumpShadeTileSource::setRgbColorSource ( ossim_uint8  r,
ossim_uint8  g,
ossim_uint8  b 
)

Set the red, green and blue color source values.

This sets the rgb value used when no second layer is present.

The default is: r = 255, g = 255, b = 255

Parameters
rred
ggreen
bblue

Definition at line 522 of file ossimBumpShadeTileSource.cpp.

References m_b, m_g, and m_r.

525 {
526  m_r = r;
527  m_g = g;
528  m_b = b;
529 }
ossim_uint8 m_r
rgb values used when no color source (2nd layer) is present.

Member Data Documentation

◆ m_b

ossim_uint8 ossimBumpShadeTileSource::m_b
protected

Definition at line 268 of file ossimBumpShadeTileSource.h.

Referenced by getRgbColorSource(), getTile(), and setRgbColorSource().

◆ m_g

ossim_uint8 ossimBumpShadeTileSource::m_g
protected

Definition at line 267 of file ossimBumpShadeTileSource.h.

Referenced by getRgbColorSource(), getTile(), and setRgbColorSource().

◆ m_lightDirection

NEWMAT::ColumnVector ossimBumpShadeTileSource::m_lightDirection
protected

This is computed from the elevation and azimuth angles of the light source.

Definition at line 261 of file ossimBumpShadeTileSource.h.

Referenced by computeColor(), and computeLightDirection().

◆ m_lightSourceAzimuthAngle

double ossimBumpShadeTileSource::m_lightSourceAzimuthAngle
protected

Used for the light vector computation.

Definition at line 255 of file ossimBumpShadeTileSource.h.

Referenced by computeLightDirection(), getAzimuthAngle(), getProperty(), loadState(), saveState(), setAzimuthAngle(), and setProperty().

◆ m_lightSourceElevationAngle

double ossimBumpShadeTileSource::m_lightSourceElevationAngle
protected

Used for the light vector computation.

Definition at line 250 of file ossimBumpShadeTileSource.h.

Referenced by computeLightDirection(), getElevationAngle(), getProperty(), loadState(), saveState(), setElevationAngle(), and setProperty().

◆ m_r

ossim_uint8 ossimBumpShadeTileSource::m_r
protected

rgb values used when no color source (2nd layer) is present.

Definition at line 266 of file ossimBumpShadeTileSource.h.

Referenced by getRgbColorSource(), getTile(), and setRgbColorSource().

◆ m_tile

ossimRefPtr<ossimImageData> ossimBumpShadeTileSource::m_tile
protected

The result of the illumination equation is stored in here.

This is populated on each call to getTile.

Definition at line 245 of file ossimBumpShadeTileSource.h.

Referenced by allocate(), getTile(), and initialize().


The documentation for this class was generated from the following files: