RenderRegion Class Reference

THIS IS AN ABSTRACT CLASS. Don't try to create a RenderRegion itself, but rather create one of it's derived classes. A RenderRegion object is created when an area of the screen/printer (or any destination) has become invalid and needs to be redrawn. It 'lives' for as long as that region is still invalid. It is also used for e.g. exporting files or in smart click detection. Background rendering and region merging is achieved by using a List of Render Region objects. When a new region becomes invalid, a RenderRegion is created and added to that list. If the rendering is interrupted before it is complete, then it will continue again when the OnIdle routine scans through the list of RenderRegions. RenderRegions can also be created at other times for Immediate rendering. To use a RenderRegion, create an OSRenderRegion or a GRenderRegion depending on the method of rendering required, then Attach a DC and CWnd to the region to specify the Render destination. Next call InitRender which will return the RenderRegions previous render state if it had been interrupted or Null if it has just been created. You can then set attributes, Save/Restore them, and Render objects. When rendering is complete, call ExitRender passing the current render state. More...

#include <rndrgn.h>

Inheritance diagram for RenderRegion:

ListItem CCObject SimpleCCObject FormatRegion GRenderRegion ImagemapRenderRegion OSRenderRegion ScanningRenderRegion VectorFileRenderRegion XPFRenderRegion GRenderDIB GRenderWinG OSRenderBitmap PaperRenderRegion AIEPSGradientScanRenderRegion CMXRenderRegion EPSRenderRegion FlashRenderRegion List of all members.

Public Member Functions

 RenderRegion ()
 Used by the RectTool to suspend background redrawing. Used by DocView::CanContinue Default Constructor for RenderRegion Class.
 RenderRegion (DocRect ClipRect, Matrix ConvertMatrix, FIXED16 ViewScale)
 Constructor for a RenderRegion, allowing a invalid rectangle to be specified. The matrix passed is used to convert Document coords into device coords, taking into account scaling, scroll offsets etc.
 RenderRegion (const RenderRegion &other)
 Copy Constructor for RenderRegion. This conctructs a RenderRegion based on another. This involves copying all the current attributes and also making a copy of the ContextStack.
virtual ~RenderRegion ()
 Default Destructor for RenderRegion Class. Releases any memory claimed for the ContextStack.
virtual BOOL CopyRenderInfo (const RenderRegion &Other)
 Copies all the parameters from the render region 'Other' into this render region. This was written for the region merging code. When a new region is created, due to existing regions being split up, it should be based on the original region, with a different clipping rectangle.
virtual BOOL AttachDevice (View *, CNativeDC *, Spread *SpreadToAttach=NULL, bool fOwned=false)
virtual BOOL AttachDevice (View *, CCDC *, Spread *SpreadToAttach=NULL, bool fOwned=false)
 Attaches View, wxDC and Spread pointers to the RenderRegion. The View is used to for general rendering purposes. The wxDC is the device that we are rendering to. We extract the HDC from this and store it so we can recreate another wxDC object for background rendering. The Spread is just stored for external referance and is used to continue rendering during BackGnd redraw.
virtual BOOL InitDevice ()
 Initialises the render region's connection to the device information passed in to RenderRegion::AttachDevice.
virtual BOOL ImmediateRender ()
 Used to Draw something immediately.
virtual NodeGetBackmostChangedNode ()
virtual void SetBackmostChangedNode (Node *pInvalidNode)
 

virtual void ClearBackmostChangedNode (Node *pNode)
 

virtual BOOL RenderBits (LPBITMAPINFO lpBitmapInfo, LPBYTE lpBits, DocRect rect, BOOL bForceNoTransp=TRUE, Node *pEffectsOwner=NULL)
 To blit one bitmap defined by a DocRect into the current RenderRegion.
virtual BOOL RenderBits (LPBITMAPINFO lpBitmapInfo, LPBYTE lpBits, DocCoord *pCoords, INT32 numcoords, BOOL bForceNoTransp=TRUE, Node *pEffectsOwner=NULL)
 To blit one bitmap defined by a DocRect into the current RenderRegion.
virtual BOOL RenderBits (KernelBitmap *pkBitmap, DocCoord *pCoords, INT32 numcoords, BOOL bForceNoTransp, Node *pEffectsOwner)
 To blit one bitmap defined by a DocRect into the current RenderRegion.
virtual INT64 GetTotalCount ()
virtual INT64 GetStoredCount ()
virtual void SetStoredCount (INT64 llcount)
virtual void SetMatrix (Matrix &)
 This can be used to set the RenderRegions transform matrix to the given matrix. This should really be used with care!
Matrix GetMatrix ()
virtual Matrix ConcatenateMatrix (Matrix &)
 This can be used to add a transform in to the render regions transformation matrix. The function performs the following matrix operation :- MonoOn RenderMatrix = NewMatrix * RenderMatrix; MonoOff.
virtual BOOL StartRender ()
 Initialises the device attachment, if we haven't already done so for this render region. This is so that we can have a two-stage attachment of a device to a render region. This allows us to create render regions very quickly, which makes background rendering more efficient as quite often we will just throw them away without ever needing a proper connection to the device context.
virtual BOOL StopRender ()=0
virtual void SetClean (BOOL bResetChangedBounds, BOOL FillWhite)
 Virtual function used to inform render region that defers update that it should set its render state to be 'clean', i.e. if no more rendering occurs then it need not update the device. This is used for render regions such as GRenderRegions, where we render the paper using the host OS graphics primitives, but we have to render the paper into the GRenderRegion too, otherwise we will get garbage. Equally though, we don't want the GRenderRegion to do a potentially slow blit if all it is going to draw is some paper. It also allows the 'changed box' to be reset, so if we only have a small object on the page, then only the area containing the object is updated using a blit. The default implementation of this function does nothing - most render regions won't need to over-ride this null behaviour.
virtual BOOL IsClean ()
virtual BOOL CloseDown ()
 Base class declaration of the CloseDown function. It allows the CloseDown functions in the EPS and CMX filters to be virtual over-rides, which means that I don't need the IsKindOfs cluttering up the rendering loops.
virtual void ConditionalSuicide (void)
 Causes the object to commit suicide. This is to get around using a few if IS_A calls elsewhere in Camelot.
NodeGetRenderState ()
 Returns the Current Render State of the RenderRegion, which is a pointer to the next Node to render. If NULL then it is not currently rendering.
void SetRenderState (Node *RenderState)
SubRenderContextGetSubRenderState ()
void SetSubRenderState (SubRenderContext *SubRenderState)
BOOL IsSubRenderStateLocked (void) const
void LockSubRenderState (BOOL Lock)
CNativeDCGetRenderDC ()
INT32 GetTimeslice () const
void DefaultRender (BOOL bForceImmediate=FALSE)
 Calls the attatched view to render itself. This is used to continue rendering into a suspended RenderRegion.
ViewGetRenderView ()
SpreadGetRenderSpread ()
BOOL IsPrinting ()
BOOL IsRendering ()
BOOL IsVeryMono ()
BOOL IsHitDetect () const
BOOL IsUsingSmoothedBitmaps ()
void SetUsingSmoothedBitmaps (BOOL set)
void SaveContext ()
void RestoreContext ()
virtual BOOL SaveAttribute (UINT32 Index, AttributeValue *pAttr, BOOL Temp)
 Saves the current attribute on the attribute context stack, and installs the given attribute as the new attribute. If the attribute object is temporary, then it is deleted when the attribute is popped off the stack. See RenderRegion::RestoreAttribute.
void RestoreAttribute (UINT32 Index, AttributeValue *pAttr, BOOL Temp)
 Restore the given attribute to the current attribute array. This is called when the rendering context stack is popped - the current attribute is ousted (and deleted if it is a temporary object), and the given one is installed in its place.
virtual BOOL WantsGrids ()
 This function is designed to help with the rendering of grids, as they are not always wanted (eg xara eps). If your class of render region does not want grids to appear, then overide this function and get it to return FALSE. The default behaviour is to return TRUE, which will allow grids to render if they want to.
void SetBackgroundColour (DocColour &Colour)
 Sets the value of mBackground colour, which is used whenever the program needs to know what the background colour of a file is.
virtual void DrawPath (Path *PathToRender, PathProcessor *pCaller=NULL, PathShape psThis=PATHSHAPE_PATH)
 Renders a path (main entry-point). May start a binary-recursive rendering pipeline off by calling any active path processors to do their stuff.
PathProcessorGetFirstPathProcessor (void)
void PushPathProcessor (PathProcessor *pProcessor)
 Adds a PathProcessor to the rendering PathProcessor stack.
void PopPathProcessor (void)
 Pops a PathProcessor from the top of the rendering PathProcessor stack.
void EnableAllBrushPathProcessors (BOOL Enable)
 Enables or disables all the brush path processors on the stack.
virtual void DrawPathToOutputDevice (Path *PathToRender, PathShape shapePath=PATHSHAPE_PATH)=0
virtual void DrawRect (DocRect *RectToRender)=0
virtual void DrawDragRect (DocRect *RectToRender)=0
virtual void DrawDragBounds (DocRect *RectToRender)
 Used to draw a "rectangle" to screen (for dragging). However, the corners of the rectangle are passed through the current rendering matrix, so the rect may well be rotated or skewed by the time it reaches the screen.
virtual void DrawDashLine (const DocCoord &StartPoint, const DocCoord &EndPoint)
 Draws a dashed line between the two points. Uses the technology from DrawDragBounds().
virtual void DrawLine (const DocCoord &StartPoint, const DocCoord &EndPoint)=0
virtual void DrawPixel (const DocCoord &Point)=0
virtual void DrawBlob (DocCoord p, BlobType type)=0
virtual void DrawCross (const DocCoord &Point, const UINT32 Size)=0
virtual void DrawBitmap (const DocCoord &Point, KernelBitmap *pBitmap)=0
virtual void DrawBitmap (const DocCoord &Point, UINT32 BitmapID, UINT32 ToolID=0)=0
virtual BOOL DrawTransformedBitmap (NodeBitmap *pNodeBitmap)
virtual void DrawBitmapBlob (const DocCoord &Point, KernelBitmap *BlobShape)=0
virtual void DrawBitmapBlob (const DocCoord &Point, ResourceID resID)=0
virtual SlowJobResult DrawMaskedBitmap (const DocRect &Rect, KernelBitmap *pBitmap, MaskedRenderRegion *pMask, ProgressDisplay *Progress)
 Plots the bitmap using the mask supplied. The base class implementation here does nothing.
virtual void DrawFixedSystemText (StringBase *TheText, DocRect &BoundsRect, UINT32 uFormat=0x00000020|0x00000800|0x00000004)
 To draw simple text, using the default host-operating-system font. The size and style of this font are decided by the host OS (or oil code) and cannot be set in any way. To determine how much space is needed to display a string with this method, see the SeeAlso.
virtual void SetFixedSystemTextColours (DocColour *TextCol, DocColour *Background)
 To set the text and background colour(s) for any FixedSystem text rendered in this render region in the future (within the current rendering pass).
virtual void GetFixedSystemTextSize (StringBase *TheText, DocRect *BoundsRect, double *atDpi=NULL)
 To determine how much room is needed to plot a bit of text with RenderRegion::DrawFixedSystemText.
virtual BOOL DrawPathArrowHeads (DocCoord *Coords, PathVerb *Verbs, INT32 NumCoords)
 Draws arrows heads on the start or end of an open path, according to the current ArrowHead Attributes.
virtual BOOL DrawArrowHead (ArrowRec &ArrowToDraw, DocCoord &Centre, DocCoord &Direction, DocCoord *RetnCentre=NULL)
 Draw an Arrow head on the start or end of a line.
virtual void DrawPixelRect (DocRect *RectToRender)
 To try and plot a single pixel rectangle outline. It does this by using filled rectangles rather than just drawing the line itself. This is required because although GDI and GDraw fills can be made to match up, their outlines can't (at the time of writing). Assumes fill colour and line colour have already been set up along with a line width, usually assumed to be zero which means plot single-pixel lines. Usually, the fill colour is set to be the required line colour and the line colour is set to be transparent (COLOUR_TRANS).
virtual void DrawPixelLine (const DocCoord &StartPoint, const DocCoord &EndPoint)
 To try and plot a single pixel line. It does this by using a filled rectangle rather than just drawing the line itself. This is required because although GDI and GDraw fills can be made to match up, their outlines can't (at the time of writing). Assumes fill colour and line colour have already been set up along with a line width, usually assumed to be zero which means plot single-pixel lines. Usually, the fill colour is set to be the required line colour and the line colour is set to be transparent (COLOUR_TRANS).
virtual void SetLineColour (StrokeColourAttribute *, BOOL Temp)
 Set the current line colour according to an AttributeValue object, pushing the current line colour onto the context stack.
virtual void SetLineOverprint (OverprintLineAttrValue *, BOOL Temp)
 Set the line overprint state, pushing the current "overprint line" attribute onto the context stack.
virtual void SetLineTransp (StrokeTranspAttribute *, BOOL Temp)
 Set the current line colour according to an AttributeValue object, pushing the current line colour onto the context stack.
virtual void SetStrokeType (StrokeTypeAttrValue *, BOOL Temp)
 Set the current Stroke Type according to an AttributeValue object, pushing the current Stroke Type onto the context stack.
virtual void SetVariableWidth (VariableWidthAttrValue *, BOOL Temp)
 Set the current VariableWidth according to an AttributeValue object, pushing the current VariableWidth onto the context stack.
virtual void SetFillGeometry (ColourFillAttribute *, BOOL Temp)
 Set the current fill type according to an AttributeValue object, pushing the current fill type onto the context stack.
virtual void SetFillMapping (FillMappingAttribute *, BOOL Temp)
 Set the current fill type according to an AttributeValue object, pushing the current fill type onto the context stack.
virtual void SetFillEffect (FillEffectAttribute *, BOOL Temp)
 Set the current fill type according to an AttributeValue object, pushing the current fill type onto the context stack.
virtual void SetFillOverprint (OverprintFillAttrValue *, BOOL Temp)
 Set the fill overprint state, pushing the current "overprint fill" attribute onto the context stack.
virtual void SetTranspFillGeometry (TranspFillAttribute *, BOOL Temp)
 Set the current fill type according to an AttributeValue object, pushing the current fill type onto the context stack.
virtual void SetTranspFillMapping (TranspFillMappingAttribute *, BOOL Temp)
 Set the current fill type according to an AttributeValue object, pushing the current fill type onto the context stack.
virtual void SetPrintOnAllPlates (PrintOnAllPlatesAttrValue *, BOOL Temp)
 Set the PrintOnAllPlates state, pushing the current "print on all plates" attribute onto the context stack.
virtual void SetLineWidth (LineWidthAttribute *, BOOL Temp)
 Set the current line width according to an AttributeValue object, pushing the current linewidth onto the context stack.
virtual void SetStartCap (StartCapAttribute *, BOOL Temp)
 Set the current Line Cap according to an AttributeValue object, pushing the current LineCap the context stack.
virtual void SetStartArrow (StartArrowAttribute *, BOOL Temp)
 Set the current StartArrow according to an AttributeValue object, pushing the current StartArrow the context stack.
virtual void SetEndArrow (EndArrowAttribute *, BOOL Temp)
 Set the current EndArrow according to an AttributeValue object, pushing the current EndArrow the context stack.
virtual void SetJoinType (JoinTypeAttribute *, BOOL Temp)
 Set the current JoinType according to an AttributeValue object, pushing the current JoinType the context stack.
virtual void SetMitreLimit (MitreLimitAttribute *, BOOL Temp)
 Set the current MitreLimit according to an AttributeValue object, pushing the current MitreLimit the context stack.
virtual void SetDashPattern (DashPatternAttribute *, BOOL Temp)
 Set the current dash pattern according to an AttributeValue object, pushing the current dash pattern onto the context stack.
virtual void SetWindingRule (WindingRuleAttribute *, BOOL Temp)
 Set the current winding rule according to an AttributeValue object, pushing the current winding rule onto the context stack.
virtual void SetDrawingMode (DrawingModeAttribute *, BOOL Temp)
 Set the current drawing mode according to an AttributeValue object, pushing the current drawing mode onto the context stack.
virtual void SetQuality (QualityAttribute *, BOOL Temp)
 Set the current display quality according to an AttributeValue object, pushing the current quality onto the context stack.
virtual void SetWebAddress (WebAddressAttribute *, BOOL Temp)
 Set the current WebAddress.
virtual void SetTxtFontTypeface (TxtFontTypefaceAttribute *, BOOL Temp)
 Set the current Text Font Typeface according to an AttributeValue object, pushing the current Font Typeface onto the context stack.
virtual void SetTxtBold (TxtBoldAttribute *, BOOL Temp)
 Set the current Text Boldness according to an AttributeValue object, pushing the current Boldness onto the context stack.
virtual void SetTxtUnderline (TxtUnderlineAttribute *, BOOL Temp)
 Set the current Text Underline state according to an AttributeValue object, pushing the current Underline state onto the context stack.
virtual void SetTxtItalic (TxtItalicAttribute *, BOOL Temp)
 Set the current Text Italicness according to an AttributeValue object, pushing the current Italicness onto the context stack.
virtual void SetTxtAspectRatio (TxtAspectRatioAttribute *, BOOL Temp)
 Set the current Text Aspect Ratio according to an AttributeValue object, pushing the current Aspect Ratio onto the context stack.
virtual void SetTxtJustification (TxtJustificationAttribute *, BOOL Temp)
 Set the current Text Justification according to an AttributeValue object, pushing the current Justification onto the context stack.
virtual void SetTxtTracking (TxtTrackingAttribute *, BOOL Temp)
 Set the current Text Tracking according to an AttributeValue object, pushing the current Tracking onto the context stack.
virtual void SetTxtFontSize (TxtFontSizeAttribute *, BOOL Temp)
 Set the current Font Size according to an AttributeValue object, pushing the current font size state onto the context stack.
virtual void SetTxtScript (TxtScriptAttribute *, BOOL Temp)
 Set the current Text Script according to an AttributeValue object, pushing the current Script onto the context stack.
virtual void SetTxtBaseLine (TxtBaseLineAttribute *, BOOL Temp)
 Set the current Text BaseLine according to an AttributeValue object, pushing the current BaseLine onto the context stack.
virtual void SetTxtLineSpace (TxtLineSpaceAttribute *, BOOL Temp)
 Set the current Text LineSpace according to an AttributeValue object, pushing the current LineSpace onto the context stack.
virtual void SetTxtLeftMargin (TxtLeftMarginAttribute *, BOOL Temp)
 See other Set/Restore routines above.
virtual void SetTxtRightMargin (TxtRightMarginAttribute *, BOOL Temp)
virtual void SetTxtFirstIndent (TxtFirstIndentAttribute *, BOOL Temp)
virtual void SetTxtRuler (TxtRulerAttribute *, BOOL Temp)
virtual void SetSolidColours (BOOL SetSolid)
void SetLineColour (DocColour &NewLineColour)
 Set the line colour to a specific colour, pushing the current line colour onto the context stack.
void SetLineColour (StockColour NewLineColour)
 Set the line colour to a specific colour, pushing the current line colour onto the context stack.
void SetFillColour (DocColour &NewFillColour)
 Set the fill colour to a specific colour, pushing the current fill colour onto the context stack.
void SetFillColour (StockColour NewFillColour)
 Set the fill colour to a specific colour, pushing the current fill colour onto the context stack.
void SetLineWidth (MILLIPOINT NewLineWidth)
 Set the line width to a specific size, pushing the current line width onto the context stack.
void SetStartCap (LineCapType NewStartCap)
 Set the current Line Cap according to an AttributeValue object, pushing the current LineCap the context stack.
void SetStartArrow (StockArrow NewStartArrow)
 Set the current StartArrow according to an AttributeValue object, pushing the current Arrow the context stack.
void SetEndArrow (StockArrow NewEndArrow)
 Set the current EndArrow according to an AttributeValue object, pushing the current Arrow the context stack.
void SetStartArrow (ArrowRec &NewStartArrow)
 Set the current StartArrow according to an AttributeValue object, pushing the current Arrow the context stack.
void SetEndArrow (ArrowRec &NewEndArrow)
 Set the current EndArrow according to an AttributeValue object, pushing the current Arrow the context stack.
void SetJoinType (JointType NewJoinType)
 Set the current JoinType according to an AttributeValue object, pushing the current JoinType the context stack.
void SetMitreLimit (MILLIPOINT NewMitreLimit)
 Set the current MitreLimit according to an AttributeValue object, pushing the current Arrow the context stack.
void SetDashPattern (DashRec &NewDashPattern)
 Set the dash pattern, pushing the current dash pattern onto the context stack.
void SetDashPattern (StockDash NewDashPattern)
 Set the dash pattern, pushing the current dash pattern onto the context stack.
void SetWindingRule (WindingType NewWindingRule)
 Set the winding rule, pushing the current winding rule onto the context stack.
void SetDrawingMode (DrawModeType NewDrawingType)
 Set the drawing mode, pushing the current drawing mode onto the context stack.
void SetDefaultQuality ()
 Set the quality attribute to the default setting, pushing the current quality level onto the context stack.
void SetDeviceDashPattern (DashRec &NewDashPattern)
 Set the dash pattern, pushing the current dash pattern onto the context stack.
void SetDeviceDashPattern (StockDash NewDashPattern)
 Set the dash pattern, pushing the current dash pattern onto the context stack.
virtual void SetOffscreen (OffscreenAttrValue *pAttr)
 Uses attribute stacking to offscreen rendering system notified when offscreen bitmap has been rendered (ie occurs when subtree is finished rendering and attributes are being restored).
virtual void SetClipRegion (ClipRegionAttribute *, BOOL Temp)
 Set this render-region's current clipping region. See also: ClipRegionAttribute::Render(), RenderRegion::RestoreClipRegion().
virtual CCachedBitmap GrabBitmap (DocRect rectGrab)
virtual void RestoreLineColour (StrokeColourAttribute *, BOOL)
 Get rid of the current line colour, and restore the specified line colour value.
virtual void RestoreLineOverprint (OverprintLineAttrValue *, BOOL)
 Restore the previous Line Overprint state, popping the previous state from the rendering stack.
virtual void RestoreLineTransp (StrokeTranspAttribute *, BOOL)
 Get rid of the current line colour, and restore the specified line colour value.
virtual void RestoreStrokeType (StrokeTypeAttrValue *, BOOL)
 Get rid of the current stroke type, and restore the specified stroke type.
virtual void RestoreVariableWidth (VariableWidthAttrValue *, BOOL)
 Get rid of the current VariableWidth, and restore the specified VariableWidth.
virtual void RestoreFillGeometry (ColourFillAttribute *, BOOL)
 Get rid of the current fill type, and restore the specified fill type.
virtual void RestoreFillMapping (FillMappingAttribute *, BOOL)
 Get rid of the current fill type, and restore the specified fill type.
virtual void RestoreFillOverprint (OverprintFillAttrValue *, BOOL)
 Restore the previous Fill Overprint state, popping the previous state from the rendering stack.
virtual void RestoreTranspFillGeometry (TranspFillAttribute *, BOOL)
 Get rid of the current fill type, and restore the specified fill type.
virtual void RestoreTranspFillMapping (TranspFillMappingAttribute *, BOOL)
 Get rid of the current fill type, and restore the specified fill type.
virtual void RestoreFillEffect (FillEffectAttribute *, BOOL)
 Get rid of the current fill type, and restore the specified fill type.
virtual void RestoreLineWidth (LineWidthAttribute *, BOOL)
 Get rid of the current line width, and restore the specified line width.
virtual void RestoreDrawingMode (DrawingModeAttribute *, BOOL)
 Get rid of the current drawing mode, and restore the specified drawing mode.
virtual void RestoreWindingRule (WindingRuleAttribute *, BOOL)
 Get rid of the current winding rule, and restore the specified winding rule.
virtual void RestoreStartCap (StartCapAttribute *, BOOL)
 Get rid of the current start cap, and restore the specified one.
virtual void RestoreJoinType (JoinTypeAttribute *, BOOL)
 Get rid of the current JoinType, and restore the specified one.
virtual void RestoreQuality (QualityAttribute *, BOOL)
 Get rid of the current quality level, and restore the specified quality level.
virtual void RestoreDashPattern (DashPatternAttribute *, BOOL)
 Get rid of the current dash pattern, and restore the specified one.
virtual void RestoreStartArrow (StartArrowAttribute *, BOOL)
 Get rid of the current StartArrow, and restore the specified one.
virtual void RestoreEndArrow (EndArrowAttribute *, BOOL)
 Get rid of the current EndArrow, and restore the specified one.
virtual void RestoreMitreLimit (MitreLimitAttribute *, BOOL)
 Get rid of the current MitreLimit, and restore the specified one.
virtual void RestoreWebAddress (WebAddressAttribute *, BOOL)
 Restore the Web Address.
virtual void RestorePrintOnAllPlates (PrintOnAllPlatesAttrValue *, BOOL)
 Restore the previous print-on-all-plates state, popping the previous state from the rendering stack.
void RestoreTxtFontTypeface (TxtFontTypefaceAttribute *, BOOL)
 Get rid of the current Text Font Typeface, and restore the specified Typeface value.
void RestoreTxtBold (TxtBoldAttribute *, BOOL)
 Get rid of the current Text Boldness, and restore the specified Boldness value.
void RestoreTxtUnderline (TxtUnderlineAttribute *, BOOL)
 Get rid of the current Text underline state, and restore the specified underline value.
void RestoreTxtItalic (TxtItalicAttribute *, BOOL)
 Get rid of the current Text Italicness, and restore the specified Italicness value.
void RestoreTxtAspectRatio (TxtAspectRatioAttribute *, BOOL)
 Get rid of the current Text Aspect Ratio, and restore the specified Aspect Ratio value.
void RestoreTxtJustification (TxtJustificationAttribute *, BOOL)
 Get rid of the current Text Justification, and restore the specified Justification value.
void RestoreTxtTracking (TxtTrackingAttribute *, BOOL)
 Get rid of the current Text Tracking, and restore the specified Tracking value.
void RestoreTxtFontSize (TxtFontSizeAttribute *, BOOL)
 Get rid of the current font size, and restore the specified font size.
void RestoreTxtScript (TxtScriptAttribute *, BOOL)
 Get rid of the current Text Script, and restore the specified Script value.
void RestoreTxtBaseLine (TxtBaseLineAttribute *, BOOL)
 Get rid of the current Text BaseLine, and restore the specified BaseLine value.
void RestoreTxtLineSpace (TxtLineSpaceAttribute *, BOOL)
 Get rid of the current Text LineSpace, and restore the specified LineSpace value.
void RestoreTxtLeftMargin (TxtLeftMarginAttribute *, BOOL)
void RestoreTxtRightMargin (TxtRightMarginAttribute *, BOOL)
void RestoreTxtFirstIndent (TxtFirstIndentAttribute *, BOOL)
void RestoreTxtRuler (TxtRulerAttribute *, BOOL)
virtual void RestoreOffscreen (OffscreenAttrValue *)
virtual void RestoreClipRegion (ClipRegionAttribute *, BOOL)
 Restore this render-region's current clipping region, using the attribute supplied. See also: ClipRegionAttribute::Restore(), RenderRegion::SetClipRegion().
AttributeValueGetCurrentAttribute (UINT32 Index)
 Get a pointer to one of the render region's current attributes. The index indicates which kind of attribute should be returned.
OffscreenAttrValueGetCurrentOffscreenAttr ()
virtual BOOL CheckOffscreenBounds ()
void SetClipRect (DocRect &NewClipRect, BOOL ReCalcContextNode=FALSE)
 Sets the Clipping rectangle of the Render Region. Calls InitClipping() to acually set the clip region in an OS specific way.
DocRect GetClipRect ()
 Returns the clipping rectangle of the Render Region.
MILLIPOINT GetPixelWidth ()
MILLIPOINT GetScaledPixelWidth ()
virtual double GetPixelsPerInch ()
virtual void GetRenderRegionCaps (RRCaps *pCaps)
 This function allows a render region to declare what it can render and what it can not render. This base class version of the function says that it can render none of the options. If your render region can do some of these things then you should overide this function and set the appropriate flags.
BOOL SetRenderComplexShapes (BOOL NewState)
 This function sets the state of the flag RenderComplexShapes. This flag is used by some classes of render region to decide what shapes to draw. If the flag is TRUE, then all shapes will be drawn that are asked to be drawn. If it is FALSE, only the shapes that are not considered to be complex by the render region will rendered. OSRenderRegions use this, as they can be used as part of the 3 phase rendering system that needs to render only specific nodes.
BOOL TestForComplexShape (RRCaps *pCaps)
 This function is called whenever someone calls one of the primitive render functions in a ScanningRenderRegion. This takes a look at all the attributes (and anything else it might need to) to see if this represents a complex shape or not. If it is a complex shape, all the internal data members of the render region are updated accordingly. This function makes use of the RRCaps object that was set with the SetHostRRCaps() function to see what things the Host render region considers to be complex.
EFFECTTYPE GetFillEffect ()
 Decide what type of colour fade to use. Scope: Public.
void SetFilter (Filter *pFilter)
FilterGetFilter ()
virtual void ResizeRegion (DocRect &NewClipRect)
 Called when a Region is changed in size (eg. clipped to the client area).
virtual void ResetRegion (DocRect &NewClipRect)
 Resets the render region (after it has been merged), so that it no longer thinks it is banded etc. It also takes the Regions rectangle from the Current Clipping rectangle, so set this correctly before calling this function.
virtual BOOL SetFirstBand ()
 This function gives the render region a chance to see if it want to do some banding or not. If it decides it does, then this function will set it all up ready to start. It should be called before StartRender.
virtual BOOL GetNextBand ()
 This function goes and sets up the next band in the render region ready for rendering and returns TRUE if it went OK. If there are no more bands to render then the function returns FALSE.
DocRect GetRegionRect ()
 This function returns the size of the whole render region. Note that this may be different from the Clip rect. If the region is banded, then the Clip rect will hold the rect of the band that is being rendered, while the RegionRect will always hold the rect the whole region.
BOOL IsBanded ()
 To find out if the render region is banded.
BOOL CanBeMerged ()
 This is used to help simplify the merging code with banded region. A banded render region at the start of one of its bands looks similar to a render region that has done no rendering yet, and may be merged. This function allows banded regions to stop themselves from being merged after they have started rendering into their first band.
BOOL ResetColourContext ()
ColourContextGetColourContext ()
virtual void ResetRender ()
 Reset the rendering state of this region.
virtual BOOL RenderChar (WCHAR ch, Matrix *pMatrix)
 Render a character, using the specified transform and current attributes in the render region.
virtual BOOL WriteNewLine (void)
 Writes in a new-line token if necessary. In this class, it's just a stub function that's over-ridden in the derived classes.
PathCreateCharPath (WCHAR ch, Matrix *pMatrix=NULL)
 Create a path of the specified char, using the specified transform and current attributes in the render region Note: The caller is resposible for initialising the path's flags if required.
BOOL GetAttrdCharBounds (DocRect *pRect, WCHAR ch)
 Get the bounding box of the specified char (from a cache) and apply the required transform depending on attributes (this is a character relative rect!).
BOOL GetCharAttributeMatrix (Matrix *pAttrMatrix)
 calc attribute matrix based on FontSize, AspectRatio and Script attributes
void ColourCorrectBitmap (BitmapFillAttribute *Fill, BITMAPINFO *Info, RGBQUAD **Palette)
 Applies colour correction and/or contoning to a paletted bitmap being plotted.
BOOL RenderTree (Node *pRoot, BOOL bTimeSlice=TRUE, BOOL bClip=TRUE, RenderCallback *pCallback=NULL)
 To render a specified subtree in this RenderRegion. The dominating factor in this routine is that it renders the document with as little time overhead as possible. Obviously, this is mainly down to RenderRegions and the tree scanning routines working fast but we can do a bit to help.
BOOL RenderTreeCanContinue ()
 Decide whether we can continue to render in RenderTree.
BOOL RenderTreeNoCache (Node *pRoot)
 Renders a subtree with cacheing disabled.
virtual BOOL IsWrappedRender () const
virtual BOOL TranspTypeIsRGBTCompatible (UINT32 ttype) const
virtual BOOL SetSmoothingFlags (FillGeometryAttribute *Fill)
virtual BOOL RenderPaperAsInk ()
void SetImmediateRender (BOOL SetVal)
BOOL GetImmediateRender () const
void SetForceMixTransparency (BOOL bForceMix)
virtual CaptureStartCapture (CCObject *pOwner, DocRect CaptureRect, CAPTUREINFO cinfo, BOOL bTransparent=TRUE, BOOL bCaptureBackground=FALSE, double mpPixelWidth=0, NodeRenderableInk *pDirectSupplier=NULL)
 To start a bitmap capture of whatever is subsequently rendered.
virtual BOOL StopCapture (CCObject *pOwner, BOOL bRender=TRUE, BOOL bReleaseBitmap=FALSE, LPBITMAPINFO *plpBitmapInfo=NULL, LPBYTE *plpBits=NULL, DocRect *pCaptureRect=NULL, Matrix *pmatTransform=NULL, double *pdResolution=NULL)
 To stop a bitmap capture.
virtual BOOL ChangeCapture (CAPTUREINFO cinfo, BOOL bTransparent=TRUE, BOOL bCaptureBackground=FALSE)
 To inform the capture stack that things (transparency) have changed.
virtual INT32 GetCaptureDepth ()
virtual BOOL MasterCaptureIsCurrent () const
virtual CaptureGetTopCapture () const
virtual CaptureGetMasterCapture () const
virtual BOOL LockedTransparentCaptures () const
 Search down the Capture stack from the top or from the capture specified until we find one that owns a bitmap. The master capture at the bottom of the stack should ALWAYS own a bitmap!

Static Public Member Functions

static BOOL Init ()
 Initialise the render region.
static BOOL InitPrefs ()
 Initialises the RenderRegions preferences from the preference file. This is called once as Camelot starts up.

Public Attributes

DrawModeType DrawingMode
BOOL IsWaitingForRAM
BOOL IsLastBand
BOOL NeedsOSPaper
BOOL RenderOSPaper
BOOL IsPaperRendered
BOOL IsInkRenderStarted
Quality RRQuality
BOOL m_DoCompression

Protected Member Functions

virtual BOOL SetRenderToCapture (Capture *pCapture, BOOL ApplyClipRegion, BOOL bSetBitmap)
StrokeColourAttributePrepareLineColour (StrokeColourAttribute *SourceAttr=NULL)
 This function is used to allow 3 special attributes to function correctly. => Overprint line, Overprint fill, and Print on all plates.
ColourFillAttributePrepareFillGeometry (ColourFillAttribute *SourceAttr=NULL)
 This function is used to allow 3 special attributes to function correctly. => Overprint line, Overprint fill, and Print on all plates.
virtual void InitClipping ()=0
virtual void InitAttributes ()=0
virtual void SetLineAttributes (ChangeLineAttrType=CHANGELINEATTR_ALL)
 Inform the render region that an aspect of the path stroking attributes has changed. The base class version just updates the RenderRegion member variable StrokeFlags to reflect which aspects of the stroke attributes have become invalid. Derived render regions can either call the base class or just implement whatever methods they need for keeping track of these changes - or a combination of the two, of course. Some render regions (e.g. GRenderRegions) don't need to do anything about this at all as all attributes are invoked whenever anything is rendered. If this is the case, then this should be over-ridden to have a NULL implementation because this will improve rendering speed.
virtual void SetFillAttributes (ChangeAttrType Type=CHANGEATTR_ALL)
 Inform the render region that an aspect of the path filling attributes has changed. The base class version just updates the RenderRegion member variable FillFlags to reflect which aspects of the fill attributes have become invalid. Derived render regions can either call the base class or just implement whatever methods they need for keeping track of these changes - or a combination of the two, of course. Some render regions (e.g. GRenderRegions) don't need to do anything about this at all as all attributes are invoked whenever anything is rendered. If this is the case, then this should be over-ridden to have a NULL implementation because this will improve rendering speed.
virtual void SetTextAttributes (ChangeFillAttrType Type=CHANGEFILLATTR_ALL)
 Inform the render region that an aspect of the path filling attributes has changed. The base class version just updates the RenderRegion member variable FillFlags to reflect which aspects of the fill attributes have become invalid. Derived render regions can either call the base class or just implement whatever methods they need for keeping track of these changes - or a combination of the two, of course. Some render regions (e.g. GRenderRegions) don't need to do anything about this at all as all attributes are invoked whenever anything is rendered. If this is the case, then this should be over-ridden to have a NULL implementation because this will improve rendering speed.
virtual BOOL RenderNode (Node *pNode, Node *pRunToNode, RenderCallback *pCallback)
 Wrap up the common stuff that's done to every node we render Render a single node and find out whether we should suspend rendering at this point Helper function for RenderTree.
virtual void SetOSDrawingMode ()=0
virtual void SetQualityLevel ()
 Does nothing.
virtual MILLIPOINT CalcPixelWidth ()=0
virtual MILLIPOINT CalcScaledPixelWidth ()=0
BOOL TryToFuzzyClip (Path *pPath, DocCoord **pNewCoords, PathVerb **pNewVerbs, UINT32 *NewNumCoords)
 This function works out if clipping is needed (based on scale factor etc) and tries to clip the paths. If it works it will return TRUE, meaning that you should only try to draw that path info found in pNewCoords etc. If FALSE is returned pNewCoords etc will all be NULL. If this function returns TRUE it will have allocated memory to put the new coords and verbs in. It will be your responsibility to delete this memory after you have rendered the path.
void SetupFuzzyClipRects ()
 Sets up the fuzzy clipping rects, basing them on the CurrentClipRect. Don't ask me what they're used for - I'm just moving some useful code into a function :o).
BOOL CopyCurrentAttributes (const RenderRegion &)
 Copy the current attribute array of another render region into this render region. The copying is intelligent; i.e. if the other array contains 'temporary' objects, then it will copy them, so two render regions don't try to delete the same object when their destructor is called.

Protected Attributes

StackT< Capture * > m_CaptureStack
DocColour mBackgroundColour
DocRect InnerRect
DocRect OuterRect
BOOL RenderComplexShapes
INT64 m_countTotal
INT64 m_countStored
CCAPI RenderRegion::FlagBlock RenderFlags
RenderRegion::_StrokeFlags StrokeFlags
RenderRegion::_FillFlags FillFlags
RenderRegion::_TextFlags TextFlags
Matrix RenderMatrix
DocRect CurrentClipRect
ColourContextCurrentColContext
ViewRenderView
CNativeDCRenderDC
SpreadRenderSpread
bool m_fOwned
NodeCurrentRenderState
SubRenderContextCurrentSubRenderState
BOOL SubRenderStateLocked
FIXED16 ScaleFactor
AttributeEntryCurrentAttrs
INT32 NumCurrentAttrs
OffscreenAttrValueCurrentOffscreenAttr
INT32 Timeslice
BOOL m_bRenderTreeTimeSlice
MonotonicTime m_timeRenderTreeStartTime
MILLIPOINT PixelWidth
MILLIPOINT ScaledPixelWidth
RenderStack TheStack<