]>
git.saurik.com Git - wxWidgets.git/blob - interface/wx/dcsvg.h
1 /////////////////////////////////////////////////////////////////////////////
3 // Purpose: interface of wxSVGFileDC
4 // Author: wxWidgets team
6 // Licence: wxWindows license
7 /////////////////////////////////////////////////////////////////////////////
12 A wxSVGFileDC is a device context onto which graphics and text can be
13 drawn, and the output produced as a vector file, in SVG format (see the W3C
14 SVG Specifications <http://www.w3.org/TR/2001/REC-SVG-20010904/>). This
15 format can be read by a range of programs, including a Netscape plugin
16 (Adobe), full details are given in the SVG Implementation and Resource
17 Directory <http://www.svgi.org/>. Vector formats may often be smaller than
20 The intention behind wxSVGFileDC is that it can be used to produce a file
21 corresponding to the screen display context, wxSVGFileDC, by passing the
22 wxSVGFileDC as a parameter instead of a wxSVGFileDC. Thus the wxSVGFileDC
23 is a write-only class.
25 As the wxSVGFileDC is a vector format, raster operations like GetPixel()
26 are unlikely to be supported. However, the SVG specification allows for PNG
27 format raster files to be embedded in the SVG, and so bitmaps, icons and
28 blit operations in wxSVGFileDC are supported.
30 A more substantial SVG library (for reading and writing) is available at
31 the wxArt2D website <http://wxart2d.sourceforge.net/>.
36 class wxSVGFileDC
: public wxDC
40 Initializes a wxSVGFileDC with the given @a f filename with the given
41 @a Width and @a Height at @a dpi resolution.
43 wxSVGFileDC(const wxString
& filename
, int width
= 320, int height
= 240, double dpi
= 72);
48 virtual ~wxSVGFileDC();
51 Copies from a source DC to this DC, specifying the destination
52 coordinates, size of area to copy, source DC, source coordinates,
53 logical function, whether to use a bitmap mask, and mask source
58 bool Blit(wxCoord xdest
, wxCoord ydest
, wxCoord width
, wxCoord height
,
59 wxDC
* source
, wxCoord xsrc
, wxCoord ysrc
, int rop
= wxCOPY
,
60 bool useMask
= false, wxCoord xsrcMask
= wxDefaultCoord
,
61 wxCoord ysrcMask
= wxDefaultCoord
);
64 Adds the specified point to the bounding box which can be retrieved
65 with wxDC::MinX(), wxDC::MaxX() and wxDC::MinY(), wxDC::MaxY()
68 void CalcBoundingBox(wxCoord x
, wxCoord y
);
71 This makes no sense in wxSVGFileDC and does nothing.
78 void CrossHair(wxCoord x
, wxCoord y
);
83 void DestroyClippingRegion();
86 Convert device X coordinate to logical coordinate, using the current
89 wxCoord
DeviceToLogicalX(wxCoord x
) const;
92 Convert device X coordinate to relative logical coordinate, using the
93 current mapping mode but ignoring the x axis orientation. Use this
94 function for converting a width, for example.
96 wxCoord
DeviceToLogicalXRel(wxCoord x
) const;
99 Converts device Y coordinate to logical coordinate, using the current
102 wxCoord
DeviceToLogicalY(wxCoord y
) const;
105 Convert device Y coordinate to relative logical coordinate, using the
106 current mapping mode but ignoring the y axis orientation. Use this
107 function for converting a height, for example.
109 wxCoord
DeviceToLogicalYRel(wxCoord y
) const;
112 Draws an arc of a circle, centred on (@a xc, @a yc), with starting
113 point (@a x1, @a y1) and ending at (@a x2, @a y2). The current pen is
114 used for the outline and the current brush for filling the shape.
116 The arc is drawn in a counter-clockwise direction from the start point
119 void DrawArc(wxCoord x1
, wxCoord y1
, wxCoord x2
, wxCoord y2
,
120 wxCoord xc
, wxCoord yc
);
123 Draw a bitmap on the device context at the specified point. If
124 @a useMask is @true and the bitmap has a transparency mask, the
125 bitmap will be drawn transparently.
127 When drawing a mono-bitmap, the current text foreground colour will be
128 used to draw the foreground of the bitmap (all bits set to 1), and the
129 current text background colour to draw the background (all bits set to
132 @see wxDC::SetTextForeground(), wxDC::SetTextBackground(), wxMemoryDC
134 void DrawBitmap(const wxBitmap
& bitmap
, wxCoord x
, wxCoord y
,
135 bool useMask
= false);
139 Draws a check mark inside the given rectangle.
141 void DrawCheckMark(wxCoord x
, wxCoord y
, wxCoord width
, wxCoord height
);
142 void DrawCheckMark(const wxRect
& rect
);
147 Draws a circle with the given centre and radius.
149 @see wxDC::DrawEllipse()
151 void DrawCircle(wxCoord x
, wxCoord y
, wxCoord radius
);
152 void DrawCircle(const wxPoint
& pt
, wxCoord radius
);
157 Draws an ellipse contained in the rectangle specified either with the
158 given top left corner and the given size or directly. The current pen
159 is used for the outline and the current brush for filling the shape.
161 @see wxDC::DrawCircle()
163 void DrawEllipse(wxCoord x
, wxCoord y
, wxCoord width
, wxCoord height
);
164 void DrawEllipse(const wxPoint
& pt
, const wxSize
& size
);
165 void DrawEllipse(const wxRect
& rect
);
169 Draws an arc of an ellipse. The current pen is used for drawing the arc
170 and the current brush is used for drawing the pie.
172 @a x and @a y specify the x and y coordinates of the upper-left corner
173 of the rectangle that contains the ellipse.
175 @a width and @a height specify the width and height of the rectangle
176 that contains the ellipse.
178 @a start and @a end specify the start and end of the arc relative to
179 the three-o'clock position from the center of the rectangle. Angles are
180 specified in degrees (360 is a complete circle). Positive values mean
181 counter-clockwise motion. If @a start is equal to @a end, a complete
182 ellipse will be drawn.
184 void DrawEllipticArc(wxCoord x
, wxCoord y
, wxCoord width
, wxCoord height
,
185 double start
, double end
);
188 Draw an icon on the display (does nothing if the device context is
189 PostScript). This can be the simplest way of drawing bitmaps on a
192 void DrawIcon(const wxIcon
& icon
, wxCoord x
, wxCoord y
);
195 Draws a line from the first point to the second. The current pen is
196 used for drawing the line.
198 void DrawLine(wxCoord x1
, wxCoord y1
, wxCoord x2
, wxCoord y2
);
202 Draws lines using an array of @a points of size @a n, or list of
203 pointers to points, adding the optional offset coordinate. The current
204 pen is used for drawing the lines. The programmer is responsible for
205 deleting the list of points.
207 void DrawLines(int n
, wxPoint points
[], wxCoord xoffset
= 0,
208 wxCoord yoffset
= 0);
209 void DrawLines(wxList
* points
, wxCoord xoffset
= 0,
210 wxCoord yoffset
= 0);
214 Draws a point using the current pen.
216 void DrawPoint(wxCoord x
, wxCoord y
);
220 Draws a filled polygon using an array of @a points of size @a n,
221 or list of pointers to points, adding the optional offset coordinate.
222 wxWidgets automatically closes the first and last points.
224 The last argument specifies the fill rule: @c wxODDEVEN_RULE (the
225 default) or @c wxWINDING_RULE.
227 The current pen is used for drawing the outline, and the current brush
228 for filling the shape. Using a transparent brush suppresses filling.
230 The programmer is responsible for deleting the list of points.
232 void DrawPolygon(int n
, wxPoint points
[], wxCoord xoffset
= 0,
233 wxCoord yoffset
= 0, int fill_style
= wxODDEVEN_RULE
);
234 void DrawPolygon(wxList
* points
, wxCoord xoffset
= 0,
235 wxCoord yoffset
= 0, int fill_style
= wxODDEVEN_RULE
);
239 Draws a rectangle with the given top left corner, and with the given
240 size. The current pen is used for the outline and the current brush
241 for filling the shape.
243 void DrawRectangle(wxCoord x
, wxCoord y
, wxCoord width
, wxCoord height
);
246 Draws the text rotated by @a angle degrees.
248 The wxMSW wxDC and wxSVGFileDC rotate the text around slightly
249 different points, depending on the size of the font.
251 void DrawRotatedText(const wxString
& text
, wxCoord x
, wxCoord y
,
255 Draws a rectangle with the given top left corner, and with the given
256 size. The corners are quarter-circles using the given radius. The
257 current pen is used for the outline and the current brush for filling
260 If @a radius is positive, the value is assumed to be the radius of the
261 rounded corner. If @a radius is negative, the absolute value is assumed
262 to be the @e proportion of the smallest dimension of the rectangle.
263 This means that the corner can be a sensible size relative to the size
264 of the rectangle, and also avoids the strange effects X produces when
265 the corners are too big for the rectangle.
267 void DrawRoundedRectangle(wxCoord x
, wxCoord y
, wxCoord width
,
268 wxCoord height
, double radius
= 20);
271 Draws a spline between all given control points, using the current pen.
272 The programmer is responsible for deleting the list of points.
273 The spline is drawn using a series of lines, using an algorithm taken from
274 the X drawing program "XFIG".
276 void DrawSpline(const wxPointList
* points
);
279 Draws a three-point spline using the current pen.
281 void DrawSpline(wxCoord x1
, wxCoord y1
, wxCoord x2
, wxCoord y2
,
282 wxCoord x3
, wxCoord y3
);
285 Draws a text string at the specified point, using the current text
286 font, and the current text foreground and background colours.
288 The coordinates refer to the top-left corner of the rectangle bounding
289 the string. See wxDC::GetTextExtent() for how to get the dimensions of
290 a text string, which can be used to position the text more precisely.
292 void DrawText(const wxString
& text
, wxCoord x
, wxCoord y
);
312 bool FloodFill(wxCoord x
, wxCoord y
, const wxColour
& colour
,
313 int style
= wxFLOOD_SURFACE
);
317 Gets the brush used for painting the background.
321 wxBrush
GetBackground() const;
322 const wxBrush
GetBackground() const;
326 Returns the current background mode: @c wxSOLID or @c wxTRANSPARENT.
328 @see SetBackgroundMode()
330 int GetBackgroundMode() const;
334 Gets the current brush.
338 wxBrush
GetBrush() const;
339 const wxBrush
GetBrush() const;
343 Gets the character height of the currently set font.
345 wxCoord
GetCharHeight() const;
348 Gets the average character width of the currently set font.
350 wxCoord
GetCharWidth() const;
355 void GetClippingBox(wxCoord
*x
, wxCoord
*y
, wxCoord
*width
, wxCoord
*height
);
359 Gets the current font.
363 wxFont
GetFont() const;
364 const wxFont
GetFont() const;
368 Gets the current logical function.
370 @see SetLogicalFunction()
372 int GetLogicalFunction() const;
375 Gets the mapping mode for the device context.
379 int GetMapMode() const;
383 Gets the current pen.
387 wxPen
GetPen() const;
388 const wxPen
GetPen() const;
394 bool GetPixel(wxCoord x
, wxCoord y
, wxColour
* colour
) const;
397 For a Windows printer device context, this gets the horizontal and
400 void GetSize(wxCoord
* width
, wxCoord
* height
);
404 Gets the current text background colour.
406 @see SetTextBackground()
408 wxColour
GetTextBackground() const;
409 const wxColour
& GetTextBackground() const;
413 Gets the dimensions of the string using the currently selected font.
416 The text string to measure.
418 This value will be set to the width after this call.
420 This value will be set to the height after this call.
422 The dimension from the baseline of the font to the bottom of the
424 @param externalLeading
425 Any extra vertical space added to the font by the font designer
428 Specifies an alternative to the currently selected font: but note
429 that this does not yet work under Windows, so you need to set a
430 font for the device context first.
432 @see wxFont, SetFont()
434 void GetTextExtent(const wxString
& string
, wxCoord
* w
, wxCoord
* h
,
435 wxCoord
* descent
= NULL
,
436 wxCoord
* externalLeading
= NULL
,
437 const wxFont
* font
= NULL
) const;
441 Gets the current text foreground colour.
443 @see SetTextForeground()
445 wxColour
GetTextForeground() const;
446 const wxColour
GetTextForeground() const;
450 Gets the current user scale factor.
454 void GetUserScale(double* x
, double* y
) const;
457 Converts logical X coordinate to device coordinate, using the current
460 wxCoord
LogicalToDeviceX(wxCoord x
) const;
463 Converts logical X coordinate to relative device coordinate, using the
464 current mapping mode but ignoring the x axis orientation. Use this for
465 converting a width, for example.
467 wxCoord
LogicalToDeviceXRel(wxCoord x
) const;
470 Converts logical Y coordinate to device coordinate, using the current
473 wxCoord
LogicalToDeviceY(wxCoord y
) const;
476 Converts logical Y coordinate to relative device coordinate, using the
477 current mapping mode but ignoring the y axis orientation. Use this for
478 converting a height, for example.
480 wxCoord
LogicalToDeviceYRel(wxCoord y
) const;
483 Gets the maximum horizontal extent used in drawing commands so far.
485 wxCoord
MaxX() const;
488 Gets the maximum vertical extent used in drawing commands so far.
490 wxCoord
MaxY() const;
493 Gets the minimum horizontal extent used in drawing commands so far.
495 wxCoord
MinX() const;
498 Gets the minimum vertical extent used in drawing commands so far.
500 wxCoord
MinY() const;
503 Returns @true if the DC is ok to use. @false values arise from being
504 unable to write the file.
509 Resets the bounding box. After a call to this function, the bounding
510 box doesn't contain anything.
512 @see CalcBoundingBox()
514 void ResetBoundingBox();
517 Sets the x and y axis orientation (i.e., the direction from lowest to
518 highest values on the axis). The default orientation is the natural
519 orientation, e.g. x axis from left to right and y axis from bottom up.
522 @true to set the x axis orientation to the natural left to right
523 orientation, @false to invert it.
525 @true to set the y axis orientation to the natural bottom up
526 orientation, @false to invert it.
528 void SetAxisOrientation(bool xLeftRight
, bool yBottomUp
);
531 Sets the current background brush for the DC.
533 void SetBackground(const wxBrush
& brush
);
536 @a mode may be one of wxSOLID and wxTRANSPARENT. This setting determines
537 whether text will be drawn with a background colour or not.
539 void SetBackgroundMode(int mode
);
542 Sets the current brush for the DC. If the argument is wxNullBrush, the
543 current brush is selected out of the device context, and the original
544 brush restored, allowing the current brush to be destroyed safely.
546 @see wxBrush, wxMemoryDC (for the interpretation of colours
547 when drawing into a monochrome bitmap).
549 void SetBrush(const wxBrush
& brush
);
555 void SetClippingRegion(wxCoord x
, wxCoord y
, wxCoord width
,
557 void SetClippingRegion(const wxPoint
& pt
, const wxSize
& sz
);
558 void SetClippingRegion(const wxRect
& rect
);
559 void SetClippingRegion(const wxRegion
& region
);
563 Sets the device origin (i.e., the origin in pixels after scaling has
564 been applied). This function may be useful in Windows printing
565 operations for placing a graphic on a page.
567 void SetDeviceOrigin(wxCoord x
, wxCoord y
);
570 Sets the current font for the DC. It must be a valid font, in
571 particular you should not pass @c wxNullFont to this method.
575 void SetFont(const wxFont
& font
);
578 Does the same as wxDC::SetLogicalFunction(), except that only wxCOPY is
579 avalaible. Trying to set one of the othe values will fail.
581 void SetLogicalFunction(int function
);
584 The mapping mode of the device context defines the unit of measurement
585 used to convert logical units to device units. Note that in X, text
586 drawing isn't handled consistently with the mapping mode; a font is
587 always specified in point size. However, setting the user scale scales
588 the text appropriately. In Windows, scalable TrueType fonts are always
589 used; in X, results depend on availability of fonts, but usually a
590 reasonable match is found.
592 Note that the coordinate origin should ideally be selectable, but for
593 now is always at the top left of the screen/printer.
595 Drawing to a Windows printer device context under UNIX uses the current
596 mapping mode, but mapping mode is currently ignored for PostScript
599 The mapping mode can be one of the following:
600 - wxMM_TWIPS - Each logical unit is 1/20 of a point, or 1/1440 of an
602 - wxMM_POINTS - Each logical unit is a point, or 1/72 of an inch.
603 - wxMM_METRIC - Each logical unit is 1 mm.
604 - wxMM_LOMETRIC - Each logical unit is 1/10 of a mm.
605 - wxMM_TEXT - Each logical unit is 1 pixel.
607 void SetMapMode(int mode
);
612 void SetPalette(const wxPalette
& palette
);
615 Sets the current pen for the DC. If the argument is wxNullPen, the
616 current pen is selected out of the device context, and the original pen
619 @see wxMemoryDC (for the interpretation of colours when drawing into a
622 void SetPen(const wxPen
& pen
);
625 Sets the current text background colour for the DC.
627 void SetTextBackground(const wxColour
& colour
);
630 Sets the current text foreground colour for the DC.
632 @see wxMemoryDC (for the interpretation of colours when drawing into a
635 void SetTextForeground(const wxColour
& colour
);
638 Sets the user scaling factor, useful for applications which require
641 void SetUserScale(double xScale
, double yScale
);
646 bool StartDoc(const wxString
& message
);