Location:
w32std.h
Link against: ws32.lib
CWindowGc
Supported from 5.0
Window graphics context.
Most window graphics context drawing functions map to equivalent
CFbsBitGc
functions — they are implemented on the screen
with any co-ordinates being relative to the top left corner of the window.
However extra clipping is applied. The drawing will always be clipped to the
visible part of the window, in addition it will be clipped to the non-invalid
part if you are not doing a redraw and to the region being validated if you are
doing a redraw.
Note:
In general, server side functions which encounter conditions
which would normally cause a leave, do not leave but instead return an error
value indicating the leave condition. In this way the leave can be handled on
the appropriate side of the client/server boundary. For example, a client can
choose to wrap server calls with User::LeaveIfError()
— which
causes a leave with the specified error.
The above advice is true of many functions in this class, and in its derived classes.
|
Defined in CWindowGc
:
Activate()
, BitBlt()
, BitBltMasked()
, CWindowGc()
, CancelClippingRect()
, CancelClippingRegion()
, Clear()
, Construct()
, CopyRect()
, Deactivate()
, Device()
, DiscardBrushPattern()
, DiscardFont()
, DrawArc()
, DrawBitmap()
, DrawEllipse()
, DrawLine()
, DrawLineBy()
, DrawLineTo()
, DrawPie()
, DrawPolyLine()
, DrawPolygon()
, DrawRect()
, DrawRoundRect()
, DrawText()
, DrawTextVertical()
, MapColors()
, MoveBy()
, MoveTo()
, Plot()
, Reset()
, SetBrushColor()
, SetBrushOrigin()
, SetBrushStyle()
, SetCharJustification()
, SetClippingRect()
, SetClippingRegion()
, SetDitherOrigin()
, SetDrawMode()
, SetFaded()
, SetFadingParameters()
, SetOrigin()
, SetPenColor()
, SetPenSize()
, SetPenStyle()
, SetStrikethroughStyle()
, SetUnderlineStyle()
, SetWordJustification()
, UseBrushPattern()
, UseFont()
, ~CWindowGc()
Inherited from CBase
:
operator new()
Inherited from CGraphicsContext
:
EAlternate
,
EAnd
,
ECenter
,
EDashedPen
,
EDiamondCrossHatchBrush
,
EDotDashPen
,
EDotDotDashPen
,
EDottedPen
,
EDrawModeAND
,
EDrawModeANDNOT
,
EDrawModeNOTAND
,
EDrawModeNOTANDNOT
,
EDrawModeNOTOR
,
EDrawModeNOTORNOT
,
EDrawModeNOTPEN
,
EDrawModeNOTSCREEN
,
EDrawModeNOTXOR
,
EDrawModeOR
,
EDrawModeORNOT
,
EDrawModePEN
,
EDrawModeXOR
,
EForwardDiagonalHatchBrush
,
EHorizontalHatchBrush
,
EInvertPen
,
EInvertScreen
,
ELeft
,
ELogicalOp
,
ENullBrush
,
ENullPen
,
EOr
,
EPatternedBrush
,
EPenmode
,
ERearwardDiagonalHatchBrush
,
ERight
,
ESolidBrush
,
ESolidPen
,
ESquareCrossHatchBrush
,
EVerticalHatchBrush
,
EWinding
,
EXor
,
JustificationInPixels()
,
TBrushStyle
,
TDrawMode
,
TDrawModeComponents
,
TDrawTextParam
,
TFillRule
,
TPenStyle
,
TTextAlign
Inherited from MWsClientClass
:
WsHandle()
CWindowGc(CWsScreenDevice *aDevice);
Constructor which creates, but does not initialise a graphics context.
|
virtual TInt Construct();
Completes construction.
|
virtual void Activate(RDrawableWindow &aWindow);
Activates the context for a given window.
When drawing is complete, the code using the context should
call Deactivate()
. Draw methods invoked after an
Activate()
will affect the window specified. A graphics context
can only be active for one window at a time.
|
|
virtual void Deactivate();
Frees the graphics context to be used with another window.
This method should be called when the application has completed drawing to the window.
virtual TInt SetClippingRegion(const TRegion& aClippingRegion);
Sets the clipping region.
Note:
A region is made up of one or more rectangles
Drawing is always clipped to the visible area of a window. The region specified by this function is in addition to that area.
|
|
virtual void SetClippingRect(const TRect& aRect);
Sets a clipping rectangle.
Graphics drawn to the window are clipped, so that only items which fall within the rectangle are displayed.
Note:
Clipping is additive. If a clipping regions has been set using
SetClippingRegion()
then clipping will be to the intersection of
that region and this rectangle.
|
virtual void DrawText(const TDesC &aString,const TPoint &aPosition);
Draws horizontal text with no surrounding box.
Text drawing is subject to drawing mode, the current font, pen colour, drawing mode, word justification and character justification.
|
|
virtual void DrawText(const TDesC &aString, const TRect &aBox, TInt aBaselineOffset, TTextAlign aHoriz=ELeft, TInt aLeftMrg=0);
Draws horizontal text within a cleared box.
Text drawing is subject to drawing mode, the current font, pen
colour, word justification and character justification. It is also subject to
the background brush (set brush to ENullBrush
for no effect on
background).
Note:
The text is clipped to the box. You must ensure that the specified string is not too large.
|
|
virtual void DrawTextVertical(const TDesC& aText, const TPoint& aPosition, TBool aUp);
Draws vertical text in the specified direction.
|
|
virtual void DrawTextVertical(const TDesC& aText, const TRect& aBox, TInt aBaselineOffset, TBool aUp, TTextAlign aVert=ELeft, TInt aMargin=0);
Draws text vertically in the specified direction, within a box of the specified size.
|
|
virtual void UseFont(const CFont *aFont);
Sets this context's current font.
The font is used for text drawing. If the font is already in the font and bitmap server's memory the GDI will share that copy.
Note that this function must be called prior to drawing text or the calling thread will panic.
|
virtual void BitBlt(const TPoint &aPos, const CFbsBitmap *aDevice);
Performs a bitmap block transfer.
|
virtual void BitBlt(const TPoint &aPos, const CFbsBitmap *aDevice, const TRect &aRect);
Performs a bitmap block transfer of a rectangular piece of a bitmap.
Notes:
If the rectangle aRect
is larger than the
bitmap then the bitmap will be padded with white.
|
virtual void BitBlt(const TPoint &aPos, const CWsBitmap* aDevice);
Performs a bitmap block transfer on a bitmap to which the window server already has a handle.
This function should be used in preference to the
CFbsBitmap
overload if the bitmap is to be used more than once, as
it is a lot quicker.
|
virtual void BitBlt(const TPoint& aPos, const CWsBitmap* aDevice, const TRect &aRect);
Performs a bitmap block transfer of a rectangular piece of a bitmap to which the window server already has a handle.
This function should be used in preference to the
CFbsBitmap
overload if the bitmap is to be used more than once, as
it is a lot quicker.
Notes:
If the rectangle aRect
is larger than the
bitmap then the bitmap will be padded with white.
|
virtual void BitBltMasked(const TPoint& aPoint,const CFbsBitmap* aBitmap,const TRect& aSourceRect,const CFbsBitmap* aMaskBitmap,TBool aInvertMask);
Performs a masked bitmap block transfer of a memory resident source bitmap.
The mask bitmap can be used as either a positive or negative mask. Masked pixels are not mapped to the destination rectangle.
A black and white (binary) mask bitmap is used. With
aInvertMask=ETrue
, black pixels in the mask bitmap stop
corresponding pixels in the source bitmap from being transferred to the
destination rectangle. With aInvertMask=EFalse
, white pixels in
the mask bitmap stop corresponding pixels in the source bitmap from being
transferred to the destination rectangle.
|
virtual void BitBltMasked(const TPoint& aPoint,const CWsBitmap *aBitmap,const TRect& aSourceRect,const CWsBitmap *aMaskBitmap,TBool aInvertMask);
Performs a masked bitmap block transfer of a window server bitmap.
The mask bitmap can be used as either a positive or negative mask. Masked pixels are not mapped to the destination rectangle.
A black and white (binary) mask bitmap is used. With
aInvertMask=ETrue
, black pixels in the mask bitmap stop
corresponding pixels in the source bitmap from being transferred to the
destination rectangle. With aInvertMask=EFalse
, white pixels in
the mask bitmap stop corresponding pixels in the source bitmap from being
transferred to the destination rectangle.
This function should be used in preference to the
CFbsBitmap
overload if the bitmap is to be used more than once, as
it is a lot quicker.
|
virtual void Clear();
Clears the whole window.
The cleared area is filled with the current brush colour.
virtual void Clear(const TRect &aRect);
Clears a rectangular area of a window.
The cleared area is filled with the current brush colour.
|
virtual void CopyRect(const TPoint& aOffset,const TRect& aRect);
Copies a rectangle from any part of the screen into the window that the gc is active on.
The copy part of the operation applies to the whole rectangle, irrespective of whether or not it within the window, however the "paste" is clipped to the drawing area.
The rectangle is specified in window coordinates (if the top-left of the rectangle is (0,0) then the area of the screen it specifies has it's top-left at the top left corner of the window, if it is (-10,-10) then it start 10 pixels above and to the left of the window.)
Note:
Shadows in the source rectangle will be copied. None of the area drawn to will gain shadowing (even if the window is already in shadow).
This version of this function is only really suitable for testing.
|
virtual CGraphicsDevice* Device() const;
Gets a pointer to the current graphics device.
This is the device that was passed into the constructor, and is
therefore a CWsScreenDevice
.
|
virtual void DiscardBrushPattern();
Discards a non-built-in brush pattern.
This frees up the memory used for the bitmap, if it is not being shared by another process.
Notes
If no brush pattern set when this function is used then it is no effect.
virtual void DiscardFont();
Discards a font.
This frees up the memory used (if the font is not being shared with some other process).
Notes
If no font in use when this function is called, then there is no effect.
virtual void DrawArc(const TRect &aRect,const TPoint &aStart,const TPoint &aEnd);
Draws an arc. An arc is a portion of an ellipse.
The point aStart
is used to define one end of a
line from the geometric centre of the ellipse. The point of intersection
between this line and the ellipse defines the start point of the arc. The point
aEnd
is used to define one end of a second line from the geometric
centre of the ellipse. The point of intersection between this line and the
ellipse defines the end point of the arc. The pixels at both the start point
and the end point are drawn.
The arc itself is the segment of the ellipse in an anti-clockwise direction from the start point to the end point.
Notes
A rectangle is used in the construction of the ellipse of
which the arc is a segment. This rectangle is passed as an argument of type
TRect
.
A wide line arc is drawn with the pixels distributed either side of a true ellipse, in such a way that the outer edge of the line would touch the edge of the construction rectangle. In other words, the ellipse used to construct it is slightly smaller than that for a single pixel line size.
If aStart
or aEnd
are the ellipse
centre then the line that defines the start/end of the arc defaults to one
extending vertically above the centre point.
If aStart
and aEnd
are the same
point, or points on the same line through the ellipse centre then a complete
unfilled ellipse is drawn.
Line drawing is subject to pen colour, width and style and draw mode
|
virtual void DrawBitmap(const TPoint &aTopLeft, const CFbsBitmap *aSource);
Draws a bitmap at a specified point.
The function does a compress/stretch based on its internally stored size in twips. Note that if the twips value of the bitmap is not set then nothing is drawn (this is the default situation).
Note:
This member function uses the bitmap's size in twips and does a stretch/compress blit using a linear DDA.
|
virtual void DrawBitmap(const TRect& aDestRect, const CFbsBitmap* aSource);
Draws a bitmap in a rectangle.
The bitmap is compressed/stretched to fit the specified rectangle. Note that if the twips value of the bitmap is not set then nothing is drawn (this is the default situation).
Notes:
This member function uses the bitmap's size in pixels and does a stretch/compress blit using a linear DDA.
|
virtual void DrawBitmap(const TRect& aDestRect, const CFbsBitmap* aSource, const TRect& aSourceRect);
Draws a specified rectangle from a bitmap into another rectangle.
The function compresses/stretches the specified rectangle from the bitmap to fit the destination rectangle. Note that if the twips value of the bitmap is not set then nothing is drawn (this is the default situation).
Note:
This member function uses rectangle sizes in pixels and does a stretch/compress blit using a linear DDA.
|
virtual void DrawEllipse(const TRect& aRect);
Draws and fills an ellipse.
The ellipse is drawn inside the rectangle defined by the
aRect
argument. Any TRect
that has odd pixel
dimensions, has the bottom right corner trimmed to give even pixel dimensions
before the ellipse is constructed.
The column and row of pixels containing the bottom right
co-ordinate of the aRect
argument are not part of the rectangle
(see Arguments of type TRect
).
Notes
A wide outline ellipse is drawn with the pixels distributed either side of a true ellipse, in such a way that the outer edge of the line touches the edge of the construction rectangle. In other words, the ellipse used to construct it is smaller than that for a single pixel line size.
|
virtual void DrawLine(const TPoint& aPoint1,const TPoint& aPoint2);
Draws a straight line between two points.
|
virtual void DrawLineBy(const TPoint& aVector);
Draws a straight line relative to the current internal drawing position, using a vector.
The start point of the line is the current internal drawing
position. The vector aVector
is added to the internal drawing
position to give the end point of the line
|
virtual void DrawLineTo(const TPoint& aPoint);
Draws a straight line from the current internal drawing position to a point.
|
virtual void DrawPie(const TRect& aRect,const TPoint& aStart,const TPoint& aEnd);
Draws and fills a pie-shaped slice of an ellipse.
Outlines are subject to the current pen colour, width, style
and draw mode. Set the pen to ENullPen
for no outline. The fill is
subject to brush style (colour, hash or pattern), the origin and the current
drawing mode. set the brush to ENullBrush
for no fill.
The point aStart
is used to define one end of a
line to the centre of the ellipse. The point of intersection between this line
and the ellipse defines the start point of the arc bounding the pie slice. The
point aEnd
is used to define one end of a second line to the
centre of the ellipse. The point of intersection between this line and the
ellipse defines the end point of the arc bounding the pie slice. The pixels at
the end point are not drawn.
The pie slice itself is the area bounded by:
the arc of the ellipse in an anticlockwise direction from the start point to the end point
the straight line from the start point from the geometric centre of the ellipse
the straight line from the end point from the geometric centre of the ellipse
The line drawn by the pen goes inside the rectangle given by
the aRect
argument.
Notes
A rectangle is used in the construction of the pie slice.
This rectangle is passed as an argument of type TRect
. The curved
edge of the pie slice is an arc of an ellipse constructed within the
rectangle.
A wide line edged pie slice has the arc drawn with the pixels distributed either side of a true ellipse. This is done in such a way that the outer edge of the line would touch the edge of the construction rectangle. In other words, the ellipse used to construct it is slightly smaller than that for a single pixel line size.
If aStart
or aEnd
are the ellipse
centre then the line that defines the start/end of the arc defaults to one
extending vertically above the centre point.
If aStart
and aEnd
are the same
point, or points on the same line through the ellipse centre then a complete
filled ellipse is drawn. A line is also drawn from the edge to the ellipse
centre.
|
virtual void DrawPolyLine(const CArrayFix<TPoint>* aPointList);
Draws a polyline using points in an array.
A polyline is a series of concatenated straight lines joining a set of points.
|
virtual void DrawPolyLine(const TPoint* aPointList,TInt aNumPoints);
Draws a polyline using points in a list.
A polyline is a series of concatenated straight lines joining a set of points.
|
virtual TInt DrawPolygon(const CArrayFix<TPoint> *aPointList,TFillRule aFillRule=EAlternate);
Draws and fills a polygon using points defined in an array.
The first TPoint
in the array defines the start of
the first side of the polygon. The second TPoint
defines the
second vertex (the end point of the first side and the start point of the
second side) and so on. The final side of the polygon is drawn using the last
TPoint
from the array or list, and the line drawn to the start
point of the first side.
Self-crossing polygons can be filled according to one of two
rules, TFillRule::EAlternate
(the default), or
TFillRule::EWinding
. To explain the difference between these
rules, the concept of a winding number needs to be introduced. The area outside
any of the loops of the polygon has a winding number of zero, and is never
filled. An inside a loop which is bounded by an area with winding number 0 has
a winding number of 1. If an area is within a loop that is bounded by an area
with winding number 1, e.g. a loop within a loop, has a winding number of 2,
and so on.
The filling of a polygon proceeds according to this algorithm:
If aFillRule
is
TFillRule::EAlternate
(default) and it has an odd winding number,
then fill the surrounding area.
If aFillRule
is
TFillRule::EWinding
and it has a winding number greater than zero,
then fill the surrounding area.
|
|
virtual TInt DrawPolygon(const TPoint* aPointList,TInt aNumPoints,TFillRule aFillRule=EAlternate);
Draws and fills a polygon using points defined in a list.
The first TPoint
in the list defines the start of
the first side of the polygon. The second TPoint
defines the
second vertex (the end point of the first side and the start point of the
second side) and so on. The final side of the polygon is drawn using the last
TPoint
from the array or list, and the line drawn to the start
point of the first side.
Self-crossing polygons can be filled according to one of two
rules, TFillRule::EAlternate
(the default), or
TFillRule::EWinding
. To explain the difference between these
rules, the concept of a winding number needs to be introduced. The area outside
any of the loops of the polygon has a winding number of zero, and is never
filled. An inside a loop which is bounded by an area with winding number 0 has
a winding number of 1. If an area is within a loop that is bounded by an area
with winding number 1, e.g. a loop within a loop, has a winding number of 2,
and so on.
The filling of a polygon proceeds according to this algorithm:
If aFillRule
is
TFillRule::EAlternate
(default) and it has an odd winding number,
then fill the surrounding area.
If aFillRule
is
TFillRule::EWinding
and it has a winding number greater than zero,
then fill the surrounding area.
|
|
virtual void DrawRect(const TRect& aRect);
Draws and fills a rectangle.
The rectangle's border is drawn with the pen, and it is filled using the brush.
|
virtual void DrawRoundRect(const TRect& aRect,const TSize& aEllipse);
Draws and fills a rectangle with rounded corners.
The rounded corners are each constructed as an arc of an
ellipse. The dimensions of each corner (corner size and corner height) are
given by aEllipse
. See DrawArc()
for a description of
arc construction.
The line drawn by the pen (if any) goes inside the rectangle
given by the TRect
argument.
Notes
Dotted and dashed pen styles cannot be used for the outline of a rounded rectangle.
If either corner size dimension is greater than half the corresponding rectangle length, the corner size dimension is reduced to half the rectangle size.
|
virtual void MapColors(const TRect& aRect, const TRgb* aColors, TInt aNumPairs=2, TBool aMapForwards=ETrue);
Re-maps pixel colours within a rectangle.
aColors
is an array of paired colour values. The
rectangle is scanned and the colour value of each pixel is looked up in the
array, and if found is replaced by the value with which it is paired. The
arguments specify the rectangle, the array of pairs, the number of pairs in the
array, and the 'direction' of lookup. If no entry is found for the colour value
of a given pixel it remains unchanged.
This function was designed for cursor display. A cursor is
normally displayed as the XOR of the background against which it appears.
However in some graphics modes, certain colours XOR to very similar shades.
MapColors()
allows more pleasing maps to be specified.
|
virtual void MoveBy(const TPoint &aVector);
Moves the internal drawing position by a vector, without drawing a line.
The internal drawing position is moved relative to its current co-ordinates.
|
virtual void MoveTo(const TPoint& aPoint);
Moves the internal drawing position relative to the co-ordinate origin, without drawing a line.
A subsequent call to DrawLineTo()
or
DrawLineBy()
will then use the new internal drawing position as
the start point for the line drawn.
Notes
The operations DrawLine()
,
DrawLineTo()
, DrawLineBy()
and
DrawPolyline()
also change the internal drawing position to the
last point of the drawn line(s).
The internal drawing position is set to the co-ordinate origin if no drawing or moving operations have yet taken place.
|
virtual void Plot(const TPoint& aPoint);
Draws a single point.
The point is drawn with the current pen settings using the current drawing mode.
Note:
If the pen size is greater than one pixel, a filled circle
of the current pen colour is drawn, with the pen size as the diameter and the
plotted point as the centre. If the pen size is an even number of pixels, the
extra pixels are drawn below and to the right of the centre. See
SetPenSize()
.
|
virtual void Reset();
Resets the graphics context to its default settings.
These are:
the drawing mode is TDrawMode::EDrawModePen
(pen and brush colours used as they are)
there is no clipping rectangle
the pen settings are: black, solid, single pixel size
the brush style is null
no text font is selected
virtual void SetBrushColor(const TRgb &aColor);
Sets the brush colour.
The effective brush colour depends on the drawing mode (see
SetDrawMode()
). If no brush colour has been set, it defaults to
white. However the default brush style is null, so when drawing to a window the
default appears to be the window's background colour.
|
virtual void SetBrushOrigin(const TPoint& aOrigin);
Sets the brush pattern origin.
This specifies the position of the pixel in the top left corner of a reference pattern tile, (in absolute device co-ordinates). Other copies of the pattern file are then tiled around the reference one. Thus the brush origin can be set as the top left corner of a shape.
The brush pattern may be a built-in style (see
SetBrushStyle()
), or a bitmap. To use a bitmap, the brush must
have a pattern set (see UseBrushPattern()
) and the brush style
must be set to TBrushStyle::EPatternedBrush
.
Notes:
If SetBrushOrigin()
is not used, then the
origin defaults to (0,0).
This brush origin remains in effect for all fillable shapes drawn subsequently, until a new brush origin is set. Shapes can thus be considered as windows onto a continuous pattern field (covering the whole clipping region of a screen device, or the whole device area of a printer).
|
virtual void SetBrushStyle(TBrushStyle aBrushStyle);
Sets the line drawing style for the brush.
The GDI provides ten brush styles, including six built-in
hatching patterns (see CGraphicsContext::TBrushStyle
enum).
Notes
Use TBrushStyle::ENullBrush
to draw the
outline of a fillable shape on its own, without filling.
If the TBrushStyle::EPatternedBrush
style is
set, but no bitmap pattern has been selected using
UseBrushPattern()
, then the brush defaults to
TBrushStyle::ENullBrush
.
Hatching lines are done in the current brush colour, set
using SetBrushColor()
. Hatching can be overlaid on other graphics.
The hatching pattern starts at the brush origin, set using
SetBrushOrigin()
.
|
virtual void SetCharJustification(TInt aExcessWidth,TInt aNumChars);
Sets the character justification. This function is used primarily to get accurate WYSIWYG, and is not intended for regular use by developers.
The text line that is to be justified has a certain number of characters (this includes the spaces between the words). It also has a distance (in pixels) between the end of the last word and the actual end of the line (right hand margin, usually). These excess width pixels are distributed amongst all the characters, increasing the gaps between them, to achieve full justification of the text line.
This function is particularly useful for WYSIWYG underlining or strikethrough, as it ensures that the lines extend into the gaps between characters.
See the linked function for more information.
|
virtual void SetDitherOrigin(const TPoint& aPoint);
Sets the origin used for colour dithering.
|
virtual void SetDrawMode(TDrawMode aDrawingMode);
Sets the drawing mode.
This affects the colour that is actually drawn, because it defines the way that the current screen colour logically combines with the current pen colour and brush colour.
There are 13 drawing modes (see
CGraphicsContext::TDrawMode
enum), each giving different logical
combinations of pen, brush and screen colours. Each mode is produced by ORing
together different combinations of seven drawing mode components (see
CGraphicsContext::TDrawModeComponents
enum).
The three most important modes are
TDrawMode::EDrawModePEN
,
TDrawMode::EDrawModeNOTSCREEN
and
TDrawMode::EDrawModeXOR
. The default drawing mode is
TDrawMode::EDrawModePEN
.
The drawing mode is over-ridden for line and shape drawing
functions when a wide pen line has been selected. It is forced to
TDrawMode::EDrawModePEN
. This is to prevent undesired effects at
line joins (vertexes).
Notes:
TDrawMode::EDrawModeAND
gives a "colour filter"
effect. For example:
ANDing with white gives the original colour
ANDing with black gives black
TDrawMode::EDrawModeOR
gives a "colour boost"
effect. For example:
ORing with black gives the original colour
ORing with white gives white
TDrawMode::EDrawModeXOR
gives an "Exclusive OR"
effect. For example:
white XOR black gives white
white XOR white gives black
black XOR black gives black
|
void SetFaded(TBool aFaded);
Sets whether the graphics context is faded.
Fading is used to change the colour of a window to make other windows stand out. For example, you would fade all other windows when displaying a dialogue.
|
void SetFadingParameters(TUint8 aBlackMap,TUint8 aWhiteMap);
Supported from 6.0
Set fading parameters.
This function allows you to override the map used when drawing with a faded GC. However if you draw to a faded window with a faded GC, then fading on the GC is ignored and it will use the fading of the window.
Fading is used to change the colour of a window to make other
windows stand out. For example, you would fade all other windows when
displaying a dialogue. Fading can either make a faded window closer to white or
closer to black. The fading map allows you to over-ride the default fading
parameters set in RWsSession::SetDefaultFadingParameters()
.
Fading re-maps colours in the faded gc to fall between the
specified black and white map values. If aBlackMap
=0 and
aWhiteMap
=255 then the colours are mapped unchanged. As the values
converge the colours are mapped to a smaller range — so the differences
between colours in the faded gc decrease. If the values are reversed then the
colours are inverted (i.e. where the gc would be black, it is now white).
|
virtual void SetOrigin(const TPoint &aPos=TPoint(0,0));
Sets the position of the co-ordinate origin.
All subsequent drawing operations are then done relative to this origin. The default origin is (0,0), the top left corner of the window.
|
virtual void SetPenColor(const TRgb &aColor);
Sets the pen colour. The effective pen colour depends on the
drawing mode (see SetDrawMode()
).
The default pen colour is black.
|
virtual void SetPenSize(const TSize& aSize);
Sets the line drawing size for the pen.
Lines of size greater than one pixel are drawn with rounded
ends that extend beyond the end points, (as if the line is drawn using a
circular pen tip of the specified size). Rounded ends of lines drawn with a
wide pen are always drawn in TDrawMode::EDrawModePEN
mode,
overriding whatever mode has been set using SetDrawMode()
.
See the linked topic below for more information.
|
virtual void SetPenStyle(TPenStyle aPenStyle);
Sets the line drawing style for the pen.
The pen is used when drawing lines and for the outline of
filled shapes. There are 6 pen styles (see
CGraphicsContext::TPenStyle
enum). If no pen style is set the
default is TPenStyle::ESolidPen
.
To use a pen style its full context must be given, e.g. for a
null pen: CGraphicsContext::TPenStyle::ENullPen
.
For more information see the linked topic below.
|
virtual void SetStrikethroughStyle(TFontStrikethrough aStrikethroughStyle);
Sets the strikethrough style for all subsequently drawn text.
|
virtual void SetUnderlineStyle(TFontUnderline aUnderlineStyle);
Sets the underline style for all subsequently drawn text.
|
virtual void SetWordJustification(TInt aExcessWidth,TInt aNumGaps);
Sets word justification. This function is not intended for regular use by developers.
This function is particularly useful for doing WYSIWYG underlining or strikethrough, as it ensures that the lines extend correctly into the gaps between words.
See the linked topic below for more information.
|
virtual void UseBrushPattern(const CFbsBitmap *aBitmap);
Sets the brush pattern to the specified bitmap.
For the brush to actually use the bitmap,
TBrushStyle::EPatternedBrush
must be used to set the brush style
(see SetBrushStyle()
). When the brush pattern is no longer
required, use DiscardBrushPattern()
to free up the memory used,
(if the bitmap is not being shared). If UseBrushPattern()
is used
again without using DiscardBrushPattern()
then the previous
pattern is discarded automatically.
Notes:
When loading a bitmap, the GDI checks to see if the bitmap is already in memory. If the bitmap is already there, then that copy is shared.
The brush does not need to have a pattern set at all. There
are several built-in hatching patterns, which can be selected using
SetBrushStyle()
.
|