gecko/layout/svg/base/src/nsSVGPaintServerFrame.h

62 lines
1.8 KiB
C
Raw Normal View History

/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2012-05-21 04:12:37 -07:00
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#ifndef __NS_SVGPAINTSERVERFRAME_H__
#define __NS_SVGPAINTSERVERFRAME_H__
#include "nsCOMPtr.h"
#include "nsFrame.h"
#include "nsIFrame.h"
#include "nsQueryFrame.h"
#include "nsSVGContainerFrame.h"
#include "nsSVGUtils.h"
class gfxContext;
class gfxPattern;
class nsStyleContext;
class nsSVGGeometryFrame;
struct gfxRect;
typedef nsSVGContainerFrame nsSVGPaintServerFrameBase;
class nsSVGPaintServerFrame : public nsSVGPaintServerFrameBase
{
protected:
nsSVGPaintServerFrame(nsStyleContext* aContext)
: nsSVGPaintServerFrameBase(aContext)
{
AddStateBits(NS_STATE_SVG_NONDISPLAY_CHILD);
}
public:
NS_DECL_FRAMEARENA_HELPERS
/**
* Constructs a gfxPattern of the paint server rendering.
*/
virtual already_AddRefed<gfxPattern>
GetPaintServerPattern(nsIFrame *aSource,
nsStyleSVGPaint nsStyleSVG::*aFillOrStroke,
float aOpacity,
const gfxRect *aOverrideBounds = nsnull) = 0;
/**
* Configure paint server prior to rendering
* @return false to skip rendering
*/
virtual bool SetupPaintServer(gfxContext *aContext,
nsSVGGeometryFrame *aSource,
nsStyleSVGPaint nsStyleSVG::*aFillOrStroke,
float aOpacity);
virtual bool IsFrameOfType(PRUint32 aFlags) const
{
return nsSVGPaintServerFrameBase::IsFrameOfType(aFlags & ~nsIFrame::eSVGPaintServer);
}
};
#endif // __NS_SVGPAINTSERVERFRAME_H__