Commit Graph

142 Commits

Author SHA1 Message Date
Maarten Bent
c538e8f9d6 Add wxGraphicsRenderer::CreateFontAtDPI to support font with fractional pixel-size 2019-10-09 22:24:28 +02:00
Robin Dunn
a8a19e25ee Various typo and coding style fixes 2019-09-05 13:33:15 -07:00
Robin Dunn
f7896d4dff Use new parameter names in the existing CreateRadialGradientBrush methods too 2019-09-04 14:19:24 -07:00
Robin Dunn
80f24d9e74 User more easily understandable names for the radial gradient coordinate parameters in wxGraphicsPenInfo 2019-09-04 14:19:24 -07:00
Robin Dunn
320acc1796 Only clone the gradient's matrix when there is one 2019-09-04 14:19:24 -07:00
Robin Dunn
222049f3ce Move wxMacCoreGraphicsMatrixData so it can be used in wxMacCoreGraphicsPenBrushDataBase 2019-09-04 14:19:24 -07:00
Robin Dunn
97b8d67984 Make section header comments a little more consistent 2019-09-04 14:19:24 -07:00
Robin Dunn
239b8a17b1 Add stroking a path with a gradient on OSX, and also gradient transforms 2019-09-04 14:19:24 -07:00
Robin Dunn
2738565c0d Just API updates to allow building to succeed 2019-09-04 14:19:24 -07:00
Hartwig
f668f5b36f Update wxImage used by Mac image graphics context in Flush()
Calling Flush() is supposed to make everything drawn so far immediately
visible, which means propagating it to the wxImage being drawn on in the
case of image-based graphics context, but wxMacCoreGraphicsImageContext
didn't do it, unlike Cairo and GDI+ version.

Fix this by overriding Flush() in it to explicitly update m_image.

Closes https://github.com/wxWidgets/wxWidgets/pull/1321
2019-05-13 16:49:57 +02:00
Stefan Csomor
099de4ecab Guarding call to wxOSXDrawNSImage with a valid m_cgContext
Fixes #18356
2019-03-10 09:54:08 +01:00
Paul Cornett
7c3ce912e0 Use ctor-initializer rather than assignment for non-POD class members 2019-02-25 10:23:35 -08:00
Maarten Bent
39ff5b90e5 Replace wxDeprecatedGUIConstants enum values 2018-11-25 21:29:32 +01:00
Maarten Bent
86c49283f5 Remove trailing spaces 2018-11-25 20:22:25 +01:00
Vadim Zeitlin
c252ececda Consistently set m_enableOffset for wxMacCoreGraphicsContext
Previously it was set to true if content scale factor was less or equal
to 1 in some places or if it was strictly less than 2 in some others.

Fix this by adding a new helper SetEnableOffsetFromScaleFactor()
function and using it everywhere to consistently only enable offset for
non-high DPI displays in all cases.
2018-11-10 23:29:54 +01:00
Vadim Zeitlin
5e53b22bd4 Add wxGraphicsContext::GetWindow()
This method allows to retrieve the window this context is associated
with, if any.

Add "wxWindow*" argument to wxGraphicsContext ctor and provide the
window pointer to it when available, i.e. when creating the context from
a wxWindow directly or from wxWindowDC, which is also associated with a
window, in platform-specific code.

No real changes yet.
2018-11-06 03:36:53 +01:00
Stefan Csomor
7dfbe50fc0 fixing proper font rendering color when using emulated bold
when the stroke width is set in macOS (emulated bold), the stroke color was not correctly set - unless text color was black
2018-10-22 17:43:31 +02:00
Artur Wieczorek
f96c37eacc Preserve wxGraphicsContext settings while resetting the clipping
To reset the clipping there is necessary
to restore all CGContext settings so we need
to set them back to the previous values based
on the stored wxGraphicsContext attributes.
2018-09-27 22:57:41 +02:00
Stefan Csomor
7254515c54 emoving non-native bitmap code, using common code for iOS and macOS
second part, sources were missing
2018-09-24 00:12:33 +02:00
Stefan Csomor
bca583234e use direct NSImage drawing commands 2018-09-24 00:11:31 +02:00
Stefan Csomor
e768046774 fixing iOS builds with new SKDs 2018-09-22 17:30:37 +02:00
Vadim Zeitlin
0a23e8dfbe Use portable wxFont ctor instead of Mac-specific one
No real changes, just use wxFont ctor taking wxFontInfo instead of a
Mac-specific ctor.

This is more clear and will continue to work after Mac-specific ctor is
removed.
2018-09-17 15:24:41 +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
Artur Wieczorek
52d0462aa5 Fix closing empty subpath (Core Graphics)
CGPathCloseSubpath() shouldn't be invoked if the path is empty to suppress harmless warning displayed on console.
2018-07-28 14:19:33 +02:00
Artur Wieczorek
c948e1e15e Fix retrieving empty bounding box for Core Graphics graphics path
Return "zero" rectangle if bounding box is empty
2018-07-28 11:48:21 +02:00
Artur Wieczorek
9acb2fe3a0 Fix AddArcToPoint when no current point is set on wxGraphicsPath
Current behavior of AddArcToPoint() when there is no current point is not
documented and moreover it is not the same in native macOS and in generic
implementation. Under macOS nothing is done and "no current point" error
is raised but under other ports (generic implementation) only arc
is drawn (without initial line).
When there is no current point, in similar functions AddCurveToPoint(),
AddQuadCurveToPoint() it is initially set to the some known control point
of the curve but this approach cannot be applied to AddArcToPoint().
The only well defined fallback point seems to be (0, 0) and this option
is implemented here.

See #18086.
2018-07-02 22:31:24 +02:00
Artur Wieczorek
fd5576a326 Explicitly return (0,0) if no current point is set for graphics path (macOS)
This is to suppress a harmless warning displayed in the console
if CGPathGetCurrentPoint() is called when no current point is set.
2018-07-02 20:50:44 +02:00
Artur Wieczorek
534b8840d2 Fix AddCurveToPoint and AddQuadCurveToPoint if no current point is set (macOS)
If current point is not yet set, these functions should behave
as if they were preceded by a call to MoveToPoint(cx1, cy1).

Closes #18111.
2018-07-02 20:39:42 +02:00
Artur Wieczorek
8349c4bf7f Fix AddLineToPoint() if no current point is set (macOS)
AddLineToPoint() should behave as MoveToPoint() if there is no current point.

See #18111.
2018-07-02 20:32:30 +02:00
Vadim Zeitlin
9b554c0974 Avoid narrowing conversion in wxMac struct initialization
Multiplying 2 float values is promoted to double, which is then narrowed
to float when initializing CGPoint with it, resulting in errors in C++11
build.

Fix this by initializing the CGFloat variable, which doesn't uniform
initialization, to the correct value instead, as this also seems more
clear ("height" is the height at which the strike is drawn).

Closes https://github.com/wxWidgets/wxWidgets/pull/793
2018-05-01 15:10:55 +02:00
Vadim Zeitlin
76fd05b147 Leave only wxGraphicsRenderer::CreatePen(wxGraphicsPenInfo) overload
It doesn't make much sense to require all the graphics backends to
create wxGraphicsPen from either wxPen or wxGraphicsPenInfo when the
former can be handled just once in the common code.

So do just this, leaving CreatePen() overload taking wxGraphicsPenInfo
where the real pen construction takes place and implementing
wxGraphicsPen creation from wxPen in the common wxGraphicsContext code.

This is not 100% backwards-compatible as any code inheriting from
wxGraphicsRenderer and overriding its CreatePen() will now be broken,
however this should be extremely rare (there is no good reason to
inherit from this class in the user code) and result in compile errors
if it does happen.
2017-09-10 01:48:30 +02:00
Vadim Zeitlin
cc91a7d6d4 Minor formatting and style changes in wxPenInfo code
Use more standard formatting, wrap some overlong lines.
2017-09-10 01:11:06 +02:00
Adrien Tétar
999c750ca7 Review feedback 2017-09-10 01:02:21 +02:00
Adrien Tétar
2305604565 Introduce wxGraphicsPenInfo class 2017-09-10 01:02:20 +02:00
Artur Wieczorek
3105134548 Don't attempt to get CTM if CGContext is NULL
When wxMacCoreGraphicsContext is constructed with CGContext==NULL, initial
transformation matrix can be assumed as an identity matrix.
2017-07-09 14:49:44 +02:00
Artur Wieczorek
796ffb3671 Initialize variable holding initial transformation matrix
When wxMacCoreGraphicsContext is created for wxGraphicsRenderer, initial transformation matrix is just an identity matrix.
2017-07-09 10:13:40 +02:00
arturs
715608fe6a Return (0,0,0,0) rectangle if clipping region is empty
When clipping region is empty, CGContextGetClipBoundingBox() returns (+Inf,+Inf,0,0) rectangle but we need to return (0,0,0,0) rectangle in this case.

See #17609.
2017-07-02 15:06:06 +02:00
Artur Wieczorek
a9fcfe1085 Fix getting/setting transformation matrix (wxOSX)
Transformation settings already applied to the source objects (CGContext, wxWindow) and inherited by wxGraphicsContext should be considered as a baseline transformation matrix for wxGC and shouldn't be exposed through e.g. GetTransform() function (like it's done in Cairo or Direct2D). To report only transformations explicitly applied to wxGC by calls to the corresponding wxGC functions, we need to store initial CTM (in a dedicated variable) and "subtract" it from the actual transformation settings.

See #17609.
2017-07-02 14:31:00 +02:00
Artur Wieczorek
214ed20697 Fix wxGCDC::Clear (wxOSX)
If underlying graphics context is rotated then drawing a rectangle with origin at (0,0) doesn't cover all the drawing area. To draw over entire area we need to get extents of the actual clipping region (with applied all transformations) and use it as coordinates of the drawn rectangle.
Solution for wxMSW and wxGTK was implemented in 12eaa61212eaa61930.

See #17636.
2017-07-02 13:46:18 +02:00
Stefan Csomor
6dfa897b4a Adding a native implementation for clearing bitmap/window contexts
Filling a bitmap surface is filled with ARGB 0,0,0,0. This way eg buffered transparent layers can be properly cleared.
2017-06-25 22:48:58 +02:00
Stefan Csomor
81dfa2ae04 Removing unnecessary font related code
The bridging API for native fonts allow for further removal of code.
2017-06-25 11:38:16 +02:00
Stefan Csomor
8b1381f2b1 OSX use fontAttributes for better emulation of bold fonts (#501)
* using fontAttributes dictionary allows for better emulation of bold typefaces, also switch to using color from context, this allows keeping the same dict throughout, as a side effect fix font caching

* reverting in order to maintain crossplatform compatibility

* applying review suggestions

* applying review suggestions
2017-06-20 17:55:26 +02:00
Václav Slavík
c9b1ebf816 Remove ATSU-related dead code from wxOSX
ATSU was deprecated for a long time and was finally removed from OS X
SDK in 10.11. wxOSX_USE_ATSU_TEXT was unconditionally disabled already,
so the code was never used and can be safely removed.
2016-12-03 12:44:10 +01:00
Artur Wieczorek
a29e6922cf Implement wxGraphicsContext::GetClipBox for Core Graphics 2016-08-21 20:58:56 +02:00
ARATA Mizuki
cf000e7e02 Fix GetPartialTextExtents() to handle non-BMP chars under OS X
On OS X, wxString operates on UTF-32 code units, but CoreText API use UTF-16
code units. So we need to take care of surrogate pairs.

Closes https://github.com/wxWidgets/wxWidgets/pull/261
2016-03-28 21:25:56 +02:00
Vadim Zeitlin
ee486dba32 Fix build error in wxOSX clang C++11 build for i386
When building for i386 in C++11 mode clang warns about narrowing conversion
from double to CGFloat (== float) in the initialization.

Fix it by using explicit suffixes for the float literals.
2016-02-29 18:05:02 +01:00
Daniel Kulp
53a5806372 Create strike-through wxGraphicsFont objects in wxOSX
Honour wxFONTFLAG_UNDERLINED in wxGraphicsFont::CreateFont() overload taking
flags.

See https://github.com/wxWidgets/wxWidgets/pull/187
2016-02-22 22:51:59 +01:00
Daniel Kulp
38fabf7012 Adjust strike-through line position under OS X
It was too high, move it down to make it look better.

Closes #17339.
2016-02-22 22:21:47 +01:00
Paul Cornett
371ee79f88 Avoid wxGraphicsContext offsetting on HiDPI displays
For a typical scale factor of 2, there won't be any odd-width lines,
and for any factor greater than 1.0, it won't be doing what was intended,
so just don't do it. See #17375
2016-02-22 10:25:16 -08:00
Tobias Taschner
5ba67c67e4 Remove wxOSX/Carbon support.
Cocoa has been the default toolkit in wxWidgets for a long time. There is really no good reason to use Carbon in 2016 and this removes a lot of unused and unmaintained code.
2016-02-01 13:48:48 +01:00