Commit Graph

71 Commits

Author SHA1 Message Date
Vadim Zeitlin
070336470f Make wxSVGFileDC::GetClippingBox() actually work
wxSVGFileDCImpl class uses the default, i.e. inherited from wxDCImpl,
implementation of this method, but for it to work, the clipping box
coordinates stored in wxDCImpl need to be updated when the clipping
region changes or is destroyed and this wasn't done before.

Fix this now and add a unit test verifying that this indeed works.
2018-06-18 17:11:16 +02:00
Paul Cornett
cd1c3fab0c Use static linkage for various local names 2017-09-24 09:29:26 -07:00
Prince David
f375293704 Fix wxSVGFileDC build with wxUSE_MARKUP==0
Just add the missing wxUSE_MARKUP checks.
2017-03-27 00:27:09 +02:00
Vadim Zeitlin
0bfc8c4d63 Use fabs() instead of abs() for non-integer variables in SVG DC
::abs() truncates floating point values to ints, so use fabs() instead. This
could have been also corrected by using std::abs(), which is overloaded for
multiple types, but use fabs() for consistency with the existing code.

This fixes a problem introduced in 1e0719ad81.

See #17557.
2016-11-20 22:09:32 +01:00
Maarten Bent
97c7ac4289 Code cleanup in wxSVGFileDC.
Consistent white-space usage.
Use wxS macros for strings.
Check if output stream is OK when writing.
Removed unnecessary Borland pragmas.
2016-06-12 18:40:12 +02:00
Maarten Bent
1e0719ad81 Fixed drawing elliptic arcs in wxSVGFileDC.
For some combinations of start and end angles, the wrong large-arc-flag was calculated. Fixed by correctly converting the wxDC angles to SVG angles (shift -90 degrees, and invert to clockwise direction).
Arcs with the same start and end point (circles) where not drawn because the angle becomes 0 degrees. Fixed by drawing two half circles.
Elliptic arcs with a non-transparent brush had an extra line from the center to the start point of the arc. Fixed by first drawing the arc without border, then only the border.
Arcs with small angles would become invisible because the start and end point map to the same (integer) coordinate. Very large arcs would be distorted because the start and end point coordinates did not line up. Using floating point values resolves this.
See issue #17557.
2016-06-12 18:40:12 +02:00
Maarten Bent
2dcaa43f0b Fixed drawing ellipses and arcs in wxSVGFileDC.
Ellipses with the same start and end point (circles) where not drawn because the angle becomes 0 degrees. Fixed by drawing two half circles.
Do not close ellipses if a transparent brush is used (to match wxDC behavior).
See issue #17557.
2016-06-12 18:40:12 +02:00
Maarten Bent
9e07ba8fae Support SetDeviceOrigin and SetAxisOrientation in wxSVGFileDC.
Override SetDeviceOrigin, SetLogicalOrigin and SetAxisOrientation from wxDC and mark the graphics as changed, so the correct transform translations are applied.
2016-06-12 18:40:11 +02:00
Maarten Bent
1717db0373 Improved memory management in wxSVGFileDC. 2016-06-12 18:40:11 +02:00
Maarten Bent
b55a18f6b8 Generate valid XML in wxSVGFileDC and updated wxSVGVersion.
Use the correct doc-type and specify the encoding. 'title' is not a valid attribute of <image> so remove it.
Removed superfluous white-space and improved indenting in generated XML.
2016-06-12 18:40:10 +02:00
Maarten Bent
045265a7bb Allow to set the SVG title when creating a wxSVGFileDC. 2016-06-12 15:59:28 +02:00
Maarten Bent
2171d407e1 Support more brush styles in wxSVGFileDC. 2016-06-12 15:59:27 +02:00
Maarten Bent
4641710217 Support more pen styles in wxSVGFileDC. 2016-06-12 15:59:27 +02:00
Maarten Bent
3cc4d51c9b Implemented Clear in wxSVGFileDC.
Draw a rectangle with the background colour and a transparent pen.
Closes #15788.
2016-06-12 15:59:27 +02:00
Maarten Bent
b424445078 Improvements to printing text in wxSVGFileDC.
Support underlined and strike-through text.
Set the text length (see http://trac.wxwidgets.org/ticket/17271).
Preserve leading and trailing white-space.
Use wxS macro consistently.
Closes #17271.
2016-06-12 15:59:27 +02:00
Maarten Bent
b4c9927892 Support multi-line text in wxSVGFileDC. 2016-06-12 15:59:26 +02:00
Maarten Bent
5084c6d423 Draw lines in wxSVGFileDC as one connected line.
Do not draw each line separately because the lines will not be connected. E.g. when editing a SVG, moving a point should also move the connecting lines.
2016-06-12 15:59:26 +02:00
Maarten Bent
444c5fd630 Correctly draw poly-polygons in wxSVGFileDC.
Each polygon in the poly-polygon needs to end with the start-point. The implementation is similar to the wxDCImpl implementation, except for the extra end points that are inserted.
2016-06-12 15:59:26 +02:00
Maarten Bent
ebab640578 Enable usage of clipping regions in wxSVGFileDC.
It was implemented 3 and half years ago in 614e38d.
Close remaining clipping regions when closing the SVG file.
2016-06-12 15:59:26 +02:00
Vadim Zeitlin
f6d5f9728c Don't use arrays indexed by font weight/styles in wxSVGFileDC.
This is not natural for the non-consecutive values of the font styles and
doesn't properly check for the array indices being valid, resulting in static
analysis tools warnings about a possibly out of bound array access.
2015-05-31 18:14:17 +02:00
Dimitri Schoolwerth
8f8d58d193 Use wx-prefixed macros throughout the repository.
Change {DECLARE,IMPLEMENT}_*CLASS and {DECLARE,BEGIN,END}_EVENT_TABLE
occurrences to use the wx-prefixed version of the macros.
2015-04-23 22:00:35 +04:00
Vadim Zeitlin
a380c1e46f Add public wxDegToRad() and wxRadToDeg() functions.
Define these functions just once in wx/math.h instead of duplicating them in a
dozen of places.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@76555 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2014-05-17 12:29:15 +00:00
Paul Cornett
75297d8842 avoid warnings about double-to-float conversion
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@76293 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2014-04-06 19:33:26 +00:00
Vadim Zeitlin
a2a846e473 Allow customizing bitmap handling in wxSVGFileDC.
Provide a built-in alternative for using external files for the bitmaps in
SVG: allow embedding them inside the SVG itself using "data:" URI.

And also allow to define custom handlers to make the behaviour even more
flexible.

Closes #15968.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@75981 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2014-02-22 17:26:27 +00:00
Vadim Zeitlin
451e456a91 Fix special characters handling in wxSVGFileDC::DrawText().
Special XML characters need to be quoted before being saved in an SVG file
(which is also an XML file).

Closes #15602.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@75068 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2013-10-25 21:23:11 +00:00
Vadim Zeitlin
3f66f6a5b3 Remove all lines containing cvs/svn "$Id$" keyword.
This keyword is not expanded by Git which means it's not replaced with the
correct revision value in the releases made using git-based scripts and it's
confusing to have lines with unexpanded "$Id$" in the released files. As
expanding them with Git is not that simple (it could be done with git archive
and export-subst attribute) and there are not many benefits in having them in
the first place, just remove all these lines.

If nothing else, this will make an eventual transition to Git simpler.

Closes #14487.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@74602 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2013-07-26 16:02:46 +00:00
Paul Cornett
4787c92d39 use const arrays for wxDC array parameters, closes #10712
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@73382 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2013-01-18 17:27:51 +00:00
Vadim Zeitlin
614e38dbb2 Implement clipping in wxSVGFileDC.
Support setting the clipping region and add update the documentation and the
sample accordingly.

Closes #14462.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@72762 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2012-10-24 23:40:41 +00:00
Vadim Zeitlin
c84c7347ba No real changes, just avoid unnecessary string operations in wxSVGFileDCImpl.
Simply write string together instead of concatenating them during run-time.

See #14462.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@72761 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2012-10-24 23:40:17 +00:00
Vadim Zeitlin
5d9dd2c6e1 No changes, just remove unused variable from wxSVGFileDCImpl.
sWarn was never used, drop it.

See #14462.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@72760 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2012-10-24 23:39:55 +00:00
Vadim Zeitlin
66815259f5 Fix text origin and bounding box computations in wxSVGFileDC.
Text origin was calculated incorrectly for the rotated text and the bounding
box was wrong even in non-rotated case.

Fix this by using correct definition of the text anchor according to the SVG
specification and add a test to the svg sample demonstrating this.

Closes #14489.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@72494 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2012-09-15 23:19:35 +00:00
Vadim Zeitlin
c9848e6318 No real changes, just slightly simplify wxSVGFileDCImpl code.
Move m_graphics_changed check inside NewGraphics() itself instead of checking
whether it's true each time before calling it, it is better to both test the
flag and reset it inside this function rather than do the first part in the
caller and the second one in the callee.

Also rename the function to NewGraphicsIfNeeded() to make its meaning more
clear.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@72493 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2012-09-15 23:19:11 +00:00
Vadim Zeitlin
007d2de3c4 Handle colours with alpha channel correctly in wxSVGFileDC.
wxColour::GetAsString(wxC2S_HTML_SYNTAX) doesn't accept colours with alpha
channel as alpha is not representable in HTML syntax, so avoid calling this
function with such colours, remove the alpha component in the caller before
using it instead.

Also slightly simplify wxBrushString() and wxPenString() functions code in
wxSVGFileDC implementation.

Closes #13214.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@67883 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-06-07 22:27:35 +00:00
Dimitri Schoolwerth
a1b806b982 Replaced Ok() occurrences with IsOk() throughout trunk.
Additionally renamed wxOSX' private wxNativePrinterDC::Ok() function to IsOk().

Didn't deprecate the various Ok() functions: given the amount of changes already introduced in 3.0 a trivial one like this seems more suitable for after 3.0.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@67681 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-05-03 16:29:04 +00:00
Vadim Zeitlin
b2a1c6f51b No real changes, just some more minor cleanup in wxSVGFileDC.
Harmonize spaces, remove unnecessary semicolons, remove useless return
statements from void functions.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@67376 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-04-02 16:38:04 +00:00
Vadim Zeitlin
af58e08750 Remove wxSVG_DEBUG from wxSVGFileDC.
Remove the weird wxSVG_DEBUG which could apparently be used to trace the code
execution by triggering asserts in all functions. This is really not the right
way to implement tracing and seems pretty useless, just remove it.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@67375 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-04-02 16:38:02 +00:00
Vadim Zeitlin
85675f1019 Clean up of string operations in wxSVGFileDC code.
Use operator+=() instead of "s = s + ...".

See #13086.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@67374 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-04-02 16:37:58 +00:00
Vadim Zeitlin
403695b323 Add support for alpha channel in colours in wxSVGFileDC.
Use stroke-opacity and fill-opacity SVG attributes to handle pens and brushes
created from colours with alpha channel in wxSVGFileDC.

Closes #13086.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@67373 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-04-02 16:37:54 +00:00
Vadim Zeitlin
b72ed64277 No changes, just merge some strings in wxSVGFileDC.
Concatenate string literals at compile-time instead of run-time.

See #13086.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@67372 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-04-02 16:37:50 +00:00
Dimitri Schoolwerth
80fdcdb90e No changes, synchronised source names that appear commented at the top of files with the actual path to the files.
Fixed commented names (path, filename, and extension) of files in include/ and src/. Prepended the names in src/ with "src/" everywhere, while starting those in include/wx/ with "wx/".

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@67254 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-03-20 00:14:35 +00:00
Vadim Zeitlin
1f4d7e441c No changes, just clean up wxSVGFileDC code a little.
Use literal strings instead of macros such as "newline", "space" and
"semicolon" and also use wxColour::GetAsString() instead of reimplementing it.

Closes #13037.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@67195 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-03-14 23:25:58 +00:00
Vadim Zeitlin
caef3ffacc Produce correct SVG files in all locales.
Using wxSVGFileDC in locales using comma as decimal separator resulted in
invalid SVG files being created as a decimal period should always be used in
them.

Fix this by replacing "%g" format specification with wxString::FromCDouble()
call (wrapped in a convenient NumStr() helper function).

Closes #12008.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@67188 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-03-14 11:54:43 +00:00
Vadim Zeitlin
526954c596 Globally use "wxWindows licence" consistently.
Use "wxWindows licence" and not "wxWidgets licence" (the latter doesn't
exist) and consistently spell "licence" using British spelling.

See #12165.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@64940 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2010-07-13 13:29:13 +00:00
Francesco Montorsi
89efaf2b65 change generic ints to enums in wxDC (closes #9959)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@57907 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-01-08 14:21:53 +00:00
Francesco Montorsi
13cfc51d63 only formatting changes. s/FALSE/false and s/TRUE/true; remove excessive empty lines; remove TABs; s/ ;/;
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@57844 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-01-05 19:12:41 +00:00
Chris Elliott
fd5ed78ca0 cast both ints to doubles for the X and Y scale factors
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@57400 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-12-17 14:21:57 +00:00
Chris Elliott
ddabd45b61 same as r57054 in 2.8
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@57376 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-12-16 21:46:21 +00:00
Chris Elliott
053025ac94 same as r57053 in 2.8
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@57375 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-12-16 21:26:55 +00:00
Paul Cornett
04ee05f92a fix a huge number of build errors
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@52586 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-03-17 18:26:00 +00:00
Robert Roebling
78cededfdc remove test for new dc
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@50374 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2007-11-30 20:00:19 +00:00