Commit Graph

138 Commits

Author SHA1 Message Date
Artur Wieczorek
cd6548c80e Use dedicated helper function to get window client area size 2021-02-14 00:13:48 +01:00
Artur Wieczorek
bce6c0911e Don't call obsolete method
ID2D1Factory::GetDesktopDpi() is reported as deprecated.
2021-02-14 00:12:47 +01:00
Artur Wieczorek
418ca872ec Fix reference count in wxD2DDeviceContextResourceHolder 2021-02-14 00:11:40 +01:00
Artur Wieczorek
0723da5168 Return proper Direct2D version if using ID2D1DeviceContext is enabled
ID2D1DeviceContext is available since Direct2D 1.1.
2021-02-14 00:10:37 +01:00
Artur Wieczorek
b86878c272 Cleanup Direct2D renderer
Move shared code to convert between wxImage amd IWICBitmap to the separate
methods.
2021-02-14 00:04:02 +01:00
Artur Wieczorek
a25e66d479 Create native D2D representation of wxGraphicsBitmap directly from wxImage
Skip the conversion from wxImage to wxBitmap.
2021-02-14 00:01:53 +01:00
Artur Wieczorek
5b52a8646b Use IWICBitmap to cache bitmap in wxD2DBitmapResourceHolder (Direct2D)
IWICBitmap is more native than wxBitmap so it should better represent
the internal state of D2DBitmap.
2021-02-06 21:43:46 +01:00
Artur Wieczorek
46302896e1 Fix caching source bitmap in wxD2DBitmapResourceHolder (Direct2D)
Because cached wxBitmap is used only to help in representing native D2D
bitmap in some operations it shouldn't be exposed directly and dedicated
methods should be implemented instead.
2021-02-06 00:36:45 +01:00
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
Maarten Bent
5e57976bba Don't use ID2D1Bitmap::GetSize() to get source bitmap size
Closes https://github.com/wxWidgets/wxWidgets/pull/2074

See #17171, #18686.
2020-10-05 17:22:35 +02:00
Maarten Bent
542887080b Fix -Wdelete-non-abstract-non-virtual-dtor warning 2020-04-27 00:33:01 +02:00
Maarten Bent
abb2eb9ed0 Fix -Wmicrosoft-exception-spec warning 2020-04-27 00:33:01 +02:00
Maarten Bent
08ae164417 Fix -Wreorder-ctor warning 2020-04-27 00:33:01 +02:00
Paul Cornett
896512c732 Change fractional point size from float to double
There doesn't seem to be any compelling reason to use float. Using double
is simpler, and avoids otherwise unnecessary float<->double conversions.
2020-04-21 09:00:04 -07:00
Vadim Zeitlin
893f3a6c00 Add wxDirect2DModule dependency on wxOleInitModule
This avoids the need for calling CoInitializeEx() and CoUninitialize()
in this module itself, it's enough to ensure that wxOleInitModule does
it before, or after, before this one is initialized, or uninitialized,
respectively.

This replaces the earlier fix of 450019dc21 (Ensure COM is still active
when Direct2D renderer is in use, 2015-12-30).

See #17308.
2020-04-19 17:04:36 +02:00
Artur Wieczorek
1dc0c777ae Return value of the proper type
Returned value should be the same type like the memeber variable.
2020-04-05 22:06:00 +02:00
Vadim Zeitlin
13b6b9ef18 Merge branch 'd2d-drawbitmap' of https://github.com/MaartenBent/wxWidgets
Fix DrawBitmap() in Direct2D renderer to resize the bitmap if necessary.

See https://github.com/wxWidgets/wxWidgets/pull/1752
2020-03-11 23:20:56 +01:00
Maarten Bent
c85da7e06f Fix DrawBitmap in Direct2D renderer
When the bitmap is larger than the draw area, it should be resized. Do this by
providing the correct size parameters for ID2D1RenderTarget::DrawBitmap.

Also update DrawBitmap code guarded with wxD2D_DEVICE_CONTEXT_SUPPORTED so it
will compile successfully when enabled. However, the drawing behaviour is,
and was, different from the normal behaviour. It does not resize the bitmap.

Closes #18686
2020-03-10 21:04:15 +01:00
Artur Wieczorek
7c6d816d4a Add support for private fonts in Direct2D renderer
Since it appears it's not possible to create DirectWrite fonts with
IDWriteGdiInterop::CreateFontFromLOGFONT() for fonts registered with
AddFontResourceEx() as private ones (with FR_PRIVATE flag), we need to
maintain a custom DirectWrite font collection and use it as source of
font data if call to CreateFontFromLOGFONT() fails. This collection
consists of IDWriteFontFileEnumerator and IDWriteFontCollectionLoader
objects which are seeded with font data based on the private fonts list
taken from wxGetPrivateFontFileNames().

Closes https://github.com/wxWidgets/wxWidgets/pull/1753

Closes #18687.
2020-03-10 02:43:32 +01:00
Artur Wieczorek
5fb7f89b14 Don't use vestor::data() to get access to the raw vector data
This method is available since C++ 11 so it can't be used currently.
2020-02-09 23:12:08 +01:00
Artur Wieczorek
55daa7103e Implement wxD2DGradientStopsHelper as a wxD2DResourceHolder
There is a dedicated template class wxD2DResourceHolder<T> to support
managing backend D2D resources and wxD2DGradientStopsHelper should be
derived from wxD2DResourceHolder<ID2D1GradientStopCollection> for the
sake of consistency with other D2D resource holders.
2020-02-09 20:46:40 +01:00
Maarten Bent
95d3064a6b Fix reference count in D2D renderer gradient brushes
Closes #18656.
2020-02-02 14:53:16 +01:00
Maarten Bent
8e2f674c0b Remove trailing whitespace 2020-02-02 14:50:57 +01:00
Maarten Bent
8ceadd3029 Improve wxD2DContext::GetDPI and wxGDIPlusContext::GetDPI
If there is a valid wxWindow, use its DPI. Otherwise use a dedicated function
of the context to get the DPI. Don't use the common wxGraphicsContext::GetDPI
because this will return hard-coded 72 when there is no valid wxWindow.
2019-10-09 22:25:08 +02:00
Maarten Bent
c538e8f9d6 Add wxGraphicsRenderer::CreateFontAtDPI to support font with fractional pixel-size 2019-10-09 22:24:28 +02:00
Maarten Bent
64f4963396 Correctly use pixelSize in wxGraphicsContext::CreateFont
It is documented as using pixel size, and this is also used in all other contexts.
For clarity, rename all parameters to sizeInPixels.

This partially reverts d5020362ff
2019-10-07 00:55:00 +02:00
Robin Dunn
1c2e71920a Remove commented-out asserts 2019-09-11 13:09:12 -07: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
78c1c6ca6d Remove TODO 2019-09-04 14:19:24 -07:00
Robin Dunn
fc35d8b49b Comment out some asserts I think are incorrect. Needs verification. 2019-09-04 14:19:24 -07:00
Robin Dunn
2571f5962c Don't use a wxRect to hold floating point values!! 2019-09-04 14:19:24 -07:00
Robin Dunn
a8eeab3af2 Add support for setting the transform on Direct2D gradient brushes 2019-09-04 14:19:24 -07:00
Robin Dunn
6d85b566ce Create gradient brushes for pens in wxD2DRenderer 2019-09-04 14:19:24 -07:00
Robin Dunn
e2fbcf0650 API updates only, to allow building. 2019-09-04 14:19:24 -07:00
Maarten Bent
d10ed0b991 Implement wxPolygonFillMode in GDI+ and D2D graphics contexts
Honour "fillStyle" parameter, which was previously ignored.

Closes https://github.com/wxWidgets/wxWidgets/pull/1478
2019-08-20 13:32:29 +02:00
Artur Wieczorek
283ac3096d Fix closing sub-path created by MoveToPoint() in Direct2D
Because call to MoveToPoint() opens a new sub-path but doesn't open
a new D2D figure (this is to avoid the situation when multiple consequtive
calls to MoveToPoint() would open a spurious figures/paths, see c8fe811636),
we need to check when sub-path is being closed if we have a sub-patch
without figure and if so, a new figure has to be open to get a required
in this case 1-point figure/path.
2019-08-11 20:07:17 +02:00
Vadim Zeitlin
463deb03c9 Merge branch 'gtk-dpi'
A bunch of improvements for per-monitor DPI support in wxGTK and
wxGraphicsContext more generally.

Closes https://github.com/wxWidgets/wxWidgets/pull/995
2018-11-10 12:15:27 +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
Maarten Bent
9554cb49d8 Fix build when enabling wxD2D_DEVICE_CONTEXT_SUPPORTED
Add missing GUID and function for dynamic linking.
2018-11-04 16:49:14 +01:00
Vadim Zeitlin
5a4d46bf7d Handle fractional point sizes in DirectWrite wxGraphicsFont
Also stop scaling the font size by DPI manually, we don't need to do it
if we use points instead of pixels. This, in turn, made it unnecessary
to pass ID2D1Factory parameter to wxD2DFontData ctor.
2018-09-17 15:24:42 +02:00
Artur Wieczorek
c8fe811636 Fix wxGraphicsPath::MoveToPoint for Direct2D
Calling MoveToPoint() shouldn't automatically open a new D2D figure (which
acts as a subpath) because in case of consecutive calls to MoveToPoint()
every next call would close the figure opened by the previous call and
we would get spurious figure(s) (consisting one point).
Opening a D2D figure (subpath) should be delgated to the functions doing
actual drawing.
2018-07-28 11:46:28 +02:00
Artur Wieczorek
74306708bc Fix retrieving empty bounding box for D2D graphics path
Return "zero rectangle" (0, 0, 0, 0) if bounding box is empty.
2018-07-28 11:43:31 +02:00
Maarten Bent
802c77b964 Fix building without precompiled headers on Windows 2018-05-22 17:04:42 +02:00
Maarten Bent
8577d9ddca Fix build warnings in Direct2D related code
Regressions since df1456e4e2 and
b936bfe85e.

See https://github.com/wxWidgets/wxWidgets/pull/731
2018-02-16 15:55:33 +01:00
Maarten Bent
d3d8778542 Reduce debug warnings of Direct2D Debug Layer 2018-02-02 23:58:52 +01:00
Vadim Zeitlin
7a24cdb861 Merge branch 'cmake-options' of https://github.com/MaartenBent/wxWidgets
See https://github.com/wxWidgets/wxWidgets/pull/694
2018-01-30 13:58:52 +01:00