Rogue Wave Views
Foundation Package API Reference Guide
Product Documentation:

Rogue Wave Views
Documentation Home
List of all members | Public Member Functions
IlvDiffuseLightingFilter Class Reference

Diffuse Lighting filter. More...

#include <ilviews/bitmaps/filters/lighting.h>

Inheritance diagram for IlvDiffuseLightingFilter:
IlvLightingFilter IlvBitmapFilter IlvValueInterface

Public Member Functions

 IlvDiffuseLightingFilter (IlFloat surfaceScale=1.0, IlFloat diffuseConstant=1.0, IlvLightSource *light=0)
 Constructor. More...
 
 ~IlvDiffuseLightingFilter ()
 Destructor. More...
 
IlvBitmapDataapply (IlUInt count=0, const IlvBitmapData **inputs=0)
 
IlFloat getDiffuseConstant () const
 Returns the diffuse constant. More...
 
void setDiffuseConstant (IlFloat diffuse)
 Sets the diffuse constant value. More...
 
- Public Member Functions inherited from IlvLightingFilter
 IlvLightingFilter (IlFloat surfaceScale=1.0, IlvLightSource *light=0)
 Constructor. More...
 
virtual ~IlvLightingFilter ()
 Destructor. More...
 
IlFloatcomputeBumpMap (const IlvRGBBitmapData *src, IlFloat scaleX, IlFloat scaleY)
 Computes the bump map for the given image. More...
 
IlvLightSourcegetLightSource () const
 Returns the light source. More...
 
IlFloat getSurfaceScale () const
 Returns the surface scale. More...
 
void setLightSource (IlvLightSource *light)
 
void setSurfaceScale (IlFloat scale)
 Sets the surface scale. More...
 
- Public Member Functions inherited from IlvBitmapFilter
 IlvBitmapFilter ()
 Constructor. More...
 
virtual ~IlvBitmapFilter ()
 Destructor. More...
 
IlvBitmapDataapplyUnary (const IlvBitmapData *data)
 Convenience method for unary filters. More...
 
virtual const char * getClassName () const
 Returns the class name of the filter. More...
 
IlUInt getHeight () const
 Returns the height of the filter effect region. More...
 
const char *const * getInputs (IlUInt &count) const
 Returns the name of the input bitmap data. More...
 
const char * getName () const
 Returns the name of the filter. More...
 
IlUInt getRefCount () const
 Returns the reference count for this instance.
 
const char * getResult () const
 Returns the name of the result bitmap data. More...
 
IlUInt getWidth () const
 Returns the width of the filter effect region. More...
 
IlInt getX () const
 Returns the left coordinate of the filter effect region. More...
 
IlInt getY () const
 Returns the top coordinate of the filter effect region. More...
 
void lock ()
 Locks the current instance.
 
void setHeight (IlUInt height)
 Sets the height of the filter effect region. More...
 
void setInputs (IlUInt count, const char *const *name)
 Sets the input names of the filter. More...
 
void setName (const char *id)
 Sets the name of the filter. More...
 
void setResult (const char *name)
 Sets the result name of the filter. More...
 
void setWidth (IlUInt width)
 Sets the width of the filter effect region. More...
 
void setX (IlInt x)
 Sets the left coordinate of the filter effect region. More...
 
void setY (IlInt y)
 Sets the top coordinate of the filter effect region. More...
 
void unLock ()
 Unlocks the current instance. When the reference count is 0, the instance is deleted.
 
- Public Member Functions inherited from IlvValueInterface
virtual IlBoolean applyValue (const IlvValue &value)
 Apply an accessor. More...
 
virtual IlBoolean changeValue (const IlvValue &val)
 Changes the value of an accessor. More...
 
virtual IlBoolean changeValues (const IlvValue *values, IlUShort count=0)
 Changes several accessor values simultaneously. More...
 
virtual void getAccessors (const IlSymbol *const **names, const IlvValueTypeClass *const **types, IlUInt &count) const
 Retrieves the list of available accessors of an object. More...
 
virtual IlvValuequeryValue (IlvValue &val) const
 Retrieves an accessor value. More...
 
virtual void queryValues (IlvValue *values, IlUShort count) const
 Retrieves multiple accessor values simultaneously. More...
 

Additional Inherited Members

- Static Public Member Functions inherited from IlvBitmapFilter
static IlvBitmapFilterCreate (const char *classname, IlBoolean forceLoad=IlTrue)
 This static method creates an instance of a bitmap filter of given classname. If the filter class is not registered and forceLoad is IlTrue, an attempt to load a dynamic module for this filter is made. More...
 
static const char ** GetRegisteredFilters (IlUInt &num)
 This static method returns an array of registered filter class names. More...
 

Detailed Description

Diffuse Lighting filter.

Library: ilvbmpflt

This class allows you to light an image using a diffuse lighting model. The resulting image is an opaque image based on the light color. The alpha channel of the source image is used as the bump map.

The resulting image is computed as follows: Dr = kd * N.L * Lr Dg = kd * N.L * Lg Db = kd * N.L * Lb Da = 1.0 where kd = diffuse lighting constant. N = surface normal unit vector, a function of x and y. L = unit vector pointing from surface to light, a function of x and y in the point and spot light cases. Lr, Lg, Lb = RGB components of the light, a function of x and y in the spot light case. N is a function of x and y and depends on the surface gradient as follows: The surface described by the input alpha image A(x, y) is: Z(x, y) = surfaceScale * Ain(x, y)

Surface normal is calculated using the Sobel gradient 3x3 filter: Nx(x, y) = - surfaceScale * 0.25 * ((I(x+1, y-1) + 2 * I(x+1, y) + I(x+1,y))

See also
IlvRGBBitmapData, IlvBitmapFilter, IlvLightingFilter, IlvSpecularLightingFilter, IlvLightSource, IlvDistantLight, IlvPointLight, IlvSpotLight

Constructor & Destructor Documentation

IlvDiffuseLightingFilter::IlvDiffuseLightingFilter ( IlFloat  surfaceScale = 1.0,
IlFloat  diffuseConstant = 1.0,
IlvLightSource light = 0 
)

Constructor.

Initializes a new instance of the class IlvDiffuseLightingFilter.

The default surface scale is 1.0. The default diffuse constant is 1.0.

IlvDiffuseLightingFilter::~IlvDiffuseLightingFilter ( )

Destructor.

The destructor releases all the memory used by the instance.

Member Function Documentation

IlvBitmapData* IlvDiffuseLightingFilter::apply ( IlUInt  count = 0,
const IlvBitmapData **  inputs = 0 
)
virtual

Applies the diffuse lighting to the given image.

Reimplemented from IlvBitmapFilter.

IlFloat IlvDiffuseLightingFilter::getDiffuseConstant ( ) const

Returns the diffuse constant.

Returns
The diffuse constant.
void IlvDiffuseLightingFilter::setDiffuseConstant ( IlFloat  diffuse)

Sets the diffuse constant value.

Parameters
diffuseThe new diffuse constant.

© Copyright 2016, Rogue Wave Software, Inc. All Rights Reserved.
Rogue Wave is a registered trademark of Rogue Wave Software, Inc. in the United States and other countries. All other trademarks are the property of their respective owners.