Commit Graph

111 Commits

Author SHA1 Message Date
Vadim Zeitlin
b6cff426ce Merge branch 'remove-bcc-support'
Remove support for Borland C++ compiler, it wasn't tested since a long
time and probably didn't work anyhow and there was no interest in
keeping support for it since many years.

See https://github.com/wxWidgets/wxWidgets/pull/2087
2020-10-16 01:58:13 +02:00
Paul Cornett
b5a554b9a6 Avoid -Wdouble-promotion warnings 2020-10-14 11:07:55 -07:00
PB
f57f214122 Remove BCC-specific hdrstop pragma from everywhere 2020-10-12 21:58:37 +02:00
Paul Cornett
7298070ab0 Avoid formatting integers as floating point 2020-09-18 10:57:23 -07:00
Paul Cornett
1912528acb Avoid formatting literal zeros as floating point 2020-09-18 10:53:14 -07:00
Vadim Zeitlin
ae7a033cbd Fix units produced by wxSVGFileDC after the previous commit
Reimplement the logic of 16a02e6338 (Use DPI independent text size in
wxSVGFileDC, 2019-08-06) without using GetContentScaleFactor(), but
using wxDC::GetPPI() directly and do it under the platforms not using
logical pixels only.

This makes the units correct again in SVGs produced when using high DPI
under MSW even although wxDC::GetContentScaleFactor() now returns 1 in
this case.
2020-07-19 19:33:53 +02:00
Paul Cornett
c5faf9cfac Avoid passing float argument for "%f" printf specifier
"%f" takes a double. Eliminates some -Wdouble-promotion warnings.
2020-04-21 11:59:36 -07:00
Maarten Bent
759723795e Support transparency for brush patterns in wxSVGFileDC
Include the alpha value in the pattern name.
2020-03-01 22:29:18 +01:00
Maarten Bent
7d2f6b4608 Fix brush pattern when transparent pen is set in wxSVGFileDC
Use the default stroke settings when defining the brush pattern.
2020-03-01 22:12:03 +01:00
Paul Cornett
47163f6433 Simplify boolean expression, 'A != false' is just 'A'
And correct associated assert message
2020-01-26 09:47:29 -08:00
Maarten Bent
51254a148e Make wxSVGFileDC an abstract class 2019-11-29 01:10:43 +01:00
Vadim Zeitlin
773f8f86e3 Merge branch 'svg-misc' of https://github.com/MaartenBent/wxWidgets
Miscellaneous improvements to wxSVGFileDC, notably add gradient fill
support and shape rendering mode.

See https://github.com/wxWidgets/wxWidgets/pull/1493
2019-08-22 17:21:00 +02:00
Maarten Bent
bee6168076 Make wxSVGFileDC function parameter names consistent with wxDC 2019-08-21 22:33:36 +02:00
Maarten Bent
72ce980d1e Rename wxSVGFileDC anonymous functions 2019-08-21 22:33:36 +02:00
Maarten Bent
0b728d1bea Use base version of DrawCheckMark directly in wxSVGFileDC 2019-08-21 22:33:36 +02:00
Maarten Bent
75486529e3 Process review comments in wxSVGFileDC 2019-08-21 22:33:35 +02:00
Maarten Bent
64be484db2 Use pen width 1 for DrawPoint in wxSVGFileDC
This is consistent with other DCs.
2019-08-20 20:21:06 +02:00
Maarten Bent
dfe76430cc Implement GradientFillLinear and GradientFillConcentric for wxSVGFileDC 2019-08-20 20:21:05 +02:00
Maarten Bent
26b273bef9 Fix RTTI class declarations of wxSVGFileDC
wxIMPLEMENT_DYNAMIC_CLASS requires a default constructor (no filename). Check
if m_outfile is initialized with a valid filename before using it.
2019-08-20 20:21:05 +02:00
Maarten Bent
a41a8ded79 Allow to set wxSVGFileDC shape rendering mode 2019-08-20 20:21:05 +02:00
Maarten Bent
75f08dfd51 Use floating point positions in wxSVGFileDC DrawRotatedText and DrawEllipse 2019-08-20 20:21:05 +02:00
Maarten Bent
9412aea1f6 Implement wxBRUSHSTYLE_BDIAGONAL_HATCH for wxSVGFileDC
Create new graphics group before writing brush pattern, so pattern appears in
the same group as the elements using it.
2019-08-20 20:21:04 +02:00
Maarten Bent
e7c03a5646 Use const references in SVG helper functions
Add helper function to get pen style.
Use Col2SVG for wxBrush colours.
2019-08-20 20:21:04 +02:00
Maarten Bent
215f844502 Improve whitespace formatting in generated SVG
Write coordinates first, then styles.
2019-08-20 20:21:04 +02:00
Vadim Zeitlin
c91c94ab0e Avoid calling wxScreenDC::SetFont() more than once
This seems unnecessary when we can call it only once even with high DPI
screens.
2019-08-09 23:39:23 +02:00
Vadim Zeitlin
f3adef1047 Minor formatting fix 2019-08-09 23:38:23 +02:00
Maarten Bent
16a02e6338 Use DPI independent text size in wxSVGFileDC
Don't let the text size in the SVG file depend on the DPI of the system it was
created on. Let GetTextExtent, GetCharHeight and GetCharWidth return sizes
based on the default (96) DPI.
2019-08-06 00:08:12 +02:00
Maarten Bent
b5dcee2e35 Use fractional point size for font in wxSVGFileDC output 2019-08-04 22:37:56 +02:00
Maarten Bent
8d25f0afa8 Improve wxSVGFileDC text background colour
Draw the background rectangle per line, instead of one big rectangle.

When there are multiple lines and one line is shorter, the area behind that
line should not get a background colour.
2019-08-04 22:37:56 +02:00
Maarten Bent
ae875842c1 Fix wxSVGFileDC text size when using non-default screen DPI
The text in a wxDC is adjusted to the screen DPI, but text in a SVG file is DPI
independent. Scale the text attribute so it has the same size as in the wxDC.

Scaling will modify the position of the attribute, correct this with translate.
2019-08-04 22:37:55 +02:00
Maarten Bent
b677c8d1b2 Add replacement for deprecated white-space tag in wxSVGFileDC output 2019-08-04 22:37:55 +02:00
Maarten Bent
c34f04b758 Refactor wxSVGFileDCImpl::DoDrawRotatedText
Create the style string outside the loop, it can determined once and used for
each line.
2019-08-04 22:37:55 +02:00
Maarten Bent
36ef28c8f3 Use wxPen pattern when drawing shapes in wxSVGFileDC
Fix drawing a rectangle with a dotted line, for example.

Closes https://github.com/wxWidgets/wxWidgets/pull/1446
2019-07-29 14:39:10 +02:00
Maarten Bent
e32721247a Use wxFileName in wxSVGBitmapFileHandler constructor 2019-04-23 21:20:02 +02:00
Maarten Bent
310b06402e Remove unused variable in wxSVGFileDC 2019-04-10 23:44:26 +02:00
Maarten Bent
b7bf6640ed Restore original wxSVGBitmapFileHandler behaviour
Save the embedded images in the same directory as the SVG file, not in the
runtime directory.
2019-04-10 23:41:58 +02:00
Maarten Bent
19c66c780d White-space only changes in wxSVGFileDC code 2019-04-10 23:37:34 +02:00
Vadim Zeitlin
3dc16a7419 Compute wxDCImpl::m_mm_to_pix_[xy] on demand
If nothing else, this avoids 2 calls to each of wxGetDisplaySize() and
wxGetDisplaySizeMM() on each and every wxGCDC construction which are
completely unnecessary as wxGCDCImpl uses its own hardcoded resolution
of 72 DPI, as do some other classes deriving from wxDCImpl.

And even for the classes which do compute these fields using the display
resolution, it may still be unnecessary to do it as they can be never
used if neither GetSizeMM() nor SetLogicalScale() are called on the
corresponding wxDC object.

Finally, this is more than an optimization as when using Cairo-based
wxGCDC without display (which is explicitly supported), calling
wxGetDisplaySize() simply doesn't work at all.
2018-12-06 03:30:55 +01:00
Vadim Zeitlin
382404f0a7 Stop using wxColourDisplay() inside wxWidgets code
This function always returns true in practice and it's completely
useless to call it during each wxDC object construction, especially
because wxDC::m_colour itself is not used anywhere.
2018-10-07 00:30:12 +02:00
Stefan Csomor
4580cdb9ad Extending wxFont API & OSX Core Text Implementation (#877)
* Switch to pure Core Text Implementation, Start extended Font API

* mac fixes

* First msw implementation

* Fixing paste error

* fixing typo

* Rearranging lines to former fallthrough order

* Blind fixes for covering new abstract methods

* Blind gtk implementations

* Fixing according to travis ..

* Removing method defined in base

* formatting adaptions

* Extending the schema definition for new weights

* fixing typo, using wxRound, other fixes according to comments

* changes according to suggestions

* fixing init order, before the init of m_info was overridden by Init()

* redo

* redo

* redo

* Cleanup

Removing obsolete code snippets, proper traces for font names

* Moving common code

Only the Get/SetNumericWeight calls should now be implemented in the native part, the ‚old‘ Get/SetWeight are common code and use the numeric counterparts.

* Updating docs

* commit wa missing changes.txt

* Doc fixes

* Full stops added
2018-09-01 19:42:18 +02:00
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