Public Member Functions | Static Public Member Functions | Protected Attributes

gfxAlphaBoxBlur Class Reference

Implementation of a box blur approximation of a Gaussian blur. More...

#include <gfxBlur.h>

Collaboration diagram for gfxAlphaBoxBlur:

List of all members.

Public Member Functions

 gfxAlphaBoxBlur ()
 ~gfxAlphaBoxBlur ()
gfxContextInit (const gfxRect &aRect, const gfxIntSize &aBlurRadius, const gfxRect *aDirtyRect)
 Constructs a box blur and initializes the temporary surface.
gfxContextGetContext ()
 Returns the context that should be drawn to supply the alpha mask to be blurred.
void PremultiplyAlpha (gfxFloat alpha)
 Premultiplies the image by the given alpha.
void Paint (gfxContext *aDestinationCtx, const gfxPoint &offset=gfxPoint(0.0, 0.0))
 Does the actual blurring and mask applying.

Static Public Member Functions

static gfxIntSize CalculateBlurRadius (const gfxPoint &aStandardDeviation)
 Calculates a blur radius that, when used with box blur, approximates a Gaussian blur with the given standard deviation.

Protected Attributes

gfxIntSize mBlurRadius
 The blur radius, in pixels.
nsRefPtr< gfxContextmContext
 The context of the temporary alpha surface.
nsRefPtr< gfxImageSurfacemImageSurface
 The temporary alpha surface.
gfxRect mDirtyRect
 A copy of the dirty rect passed to Init().
PRBool mHasDirtyRect

Detailed Description

Implementation of a box blur approximation of a Gaussian blur.

Creates an 8-bit alpha channel context for callers to draw in, blurs the contents of that context and applies it as an alpha mask on a different existing context.

A temporary surface is created in the Init function. The caller then draws any desired content onto the context acquired through GetContext, and lastly calls Paint to apply the blurred content as an alpha mask.


Constructor & Destructor Documentation

gfxAlphaBoxBlur::gfxAlphaBoxBlur (  ) 
gfxAlphaBoxBlur::~gfxAlphaBoxBlur (  ) 

Member Function Documentation

static gfxIntSize gfxAlphaBoxBlur::CalculateBlurRadius ( const gfxPoint aStandardDeviation  )  [static]

Calculates a blur radius that, when used with box blur, approximates a Gaussian blur with the given standard deviation.

gfxContext* gfxAlphaBoxBlur::GetContext (  )  [inline]

Returns the context that should be drawn to supply the alpha mask to be blurred.

If the returned surface is null, then there was an error in its creation.

gfxContext* gfxAlphaBoxBlur::Init ( const gfxRect aRect,
const gfxIntSize aBlurRadius,
const gfxRect aDirtyRect 
)

Constructs a box blur and initializes the temporary surface.

Parameters:
aRect The coordinates of the surface to create in device units.
aBlurRadius The blur radius in pixels
aDirtyRect A pointer to a dirty rect, measured in device units, if available. This will be used for optimizing the blur operation. It is safe to pass NULL here.
void gfxAlphaBoxBlur::Paint ( gfxContext aDestinationCtx,
const gfxPoint offset = gfxPoint(0.0, 0.0) 
)

Does the actual blurring and mask applying.

Users of this object must have drawn whatever they want to be blurred onto the internal gfxContext returned by GetContext before calling this.

Parameters:
aDestinationCtx The graphics context on which to apply the blurred mask.
void gfxAlphaBoxBlur::PremultiplyAlpha ( gfxFloat  alpha  ) 

Premultiplies the image by the given alpha.


Member Data Documentation

The blur radius, in pixels.

The context of the temporary alpha surface.

A copy of the dirty rect passed to Init().

This will only be valid if mHasDirtyRect is TRUE.

The temporary alpha surface.


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