1
0
Fork 0
mirror of https://github.com/juce-framework/JUCE.git synced 2026-01-27 02:20:05 +00:00
Commit graph

1139 commits

Author SHA1 Message Date
reuk
589d9940ed
Direct2D: Add support for bitmaps spanning multiple texture pages 2024-09-18 15:44:04 +01:00
reuk
8754d87900 Windows: Fix build warnings when JUCE_DISABLE_ASSERTIONS is set 2024-09-13 13:57:10 +01:00
reuk
6e9b7dad9a Direct2D: Refactor DxgiAdapter constructor 2024-09-11 17:09:41 +01:00
Anthony Nicholls
1dd2b3c90e Formatting: Whitespace 2024-09-06 15:40:39 +00:00
attila
83720ac462 EdgeTable: Fix assertion caused by unnecessarily storing prepending zero levels
This partially restores the behaviour prior to commit
dda0719d56, in that we will never store a
segment if its level equals the last stored level.
2024-09-05 17:36:51 +02:00
reuk
add3a5de0d
Android: Fix issues with input stream special members
Fixes bugs in AndroidInputStreamWrapper introduced in
0d2e34f34c

- Now that AndroidInputStreamWrapper is moveable, its destructor must be
  able to handle the situation where stream is null
- The move assignment operators of AndroidInputStreamWrapper and
  AndroidContentUriInputStream could previously end up calling
  themselves recursively
2024-09-05 12:17:12 +01:00
reuk
25e2fa44ff
Direct2D: Correctly recreate ID2D1DeviceContext when moving transparent windows between devices 2024-09-05 12:16:02 +01:00
reuk
14d52769dc
Direct2D: Revert to using grayscale text antialisaing exclusively
Reverts b12088a1f6

After some investigation, it appears that ClearType rendering is
unsuitable when
- the render target has translucent pixels underneath rendered text, or
- the render ouput is rotated, scaled, subpixel-translated, or otherwise
  transformed before display.

This necessitates avoiding ClearType when rendering into transparent
bitmaps.

Unfortunately, a commmon use-case for transparent bitmaps is buffered
component images. Even if ClearType were enabled for opaque targets,
ClearType text could then end up displaying next to non-ClearType text
rendered to an intermediate texture, leading to an inconsistent
appearance.

There's also not a straightforward way of exposing a ClearType rendering
option in all of the places that it would be required, and a change of
this size is difficult to justify given that subpixel text rendering
controls would only have an effect on Windows.
2024-09-05 12:15:31 +01:00
reuk
109ec550b9
Direct2D: Fix typo in tests
This typo caused the Graphics tests to fail when the random seed was
0xb14c264a426e6987.
2024-09-05 12:14:03 +01:00
reuk
5befcd43a9
EdgeTable: Use CopyableHeapBlock in implementation 2024-09-05 12:10:33 +01:00
reuk
c49fe0b6be UnicodeGenerated: Improve memory usage during compilation with gcc-7 2024-09-04 14:56:29 +01:00
Anthony Nicholls
2d360165c5 macOS: Prevent negative corner sizes for rounded rectangles 2024-08-28 11:53:21 +01:00
Anthony Nicholls
514ac22d6d macOS: Prevent an image mask from filling outside the clipping bounds 2024-08-23 15:53:43 +00:00
reuk
9a93fb03a4 Direct2D: Add null check in PresentationQueue 2024-08-23 13:51:40 +01:00
reuk
b12088a1f6 Direct2D: Match system preferences for text antialiasing 2024-08-23 13:51:40 +01:00
reuk
6cd018a679
Direct2D: Fix implementation of Direct2DPixelData::fromDirect2DBitmap
Previously, this function didn't store/copy the provided bitmap, so the
resulting image was blank. This also broke createSnapshot(), which would
always return a blank image.
2024-08-22 18:18:17 +01:00
reuk
348d638581
Direct2D: Temporarily disable window transparency for D2D windows 2024-08-22 18:18:17 +01:00
reuk
d344c2bf71
Direct2D: Allow drawing to arbitrary bitmaps using Direct2DImageContext
This change also moves the startFrame and endFrame calls out of the
plain Direct2DImageContext and into a special-purpose "flushing" context
that is private to Direct2DPixelData.
2024-08-22 18:18:15 +01:00
reuk
8a1bf07f14
Direct2D: Adjust return type of getPaintAreas in Direct2DHwndContext 2024-08-22 18:18:15 +01:00
reuk
570fd4b65c
Direct2D: Track UpdateRegions in D2DContext rather than the Direct2DHwndContext 2024-08-22 18:18:15 +01:00
reuk
c94b8e1712
Direct2D: Refactor paintAreas handling in graphics contexts 2024-08-22 18:18:15 +01:00
reuk
e2b9dd9a05
Direct2D: Remove redundant adapter member from Direct2DGraphicsContext 2024-08-22 18:18:15 +01:00
reuk
45305dbfa7
Direct2D: Remove redundant adapter member from SavedState 2024-08-22 18:18:15 +01:00
reuk
68441e0726
Direct2D: Refactor DeviceResources helper 2024-08-22 18:18:15 +01:00
reuk
58c267106f
Direct2D: Move UpdateRegion helper to shared DirectX header 2024-08-22 18:18:14 +01:00
reuk
8bbcfe4d6b
Direct2D: Move DeviceContext helpers to shared DirectX header 2024-08-22 18:18:14 +01:00
reuk
f3a74896fc
Direct2D: Move bitmap helpers to shared DirectX header 2024-08-22 18:18:14 +01:00
reuk
f0f77db261
Direct2D: Share more implementation headers between modules 2024-08-22 18:18:14 +01:00
reuk
bb53174196
Direct2D: Add null check before reading from D2D texture 2024-08-22 18:18:14 +01:00
reuk
025a05d210
Windows: Remove clearWindowRedirectionBitmap() 2024-08-22 18:18:14 +01:00
reuk
1b69ba3997
Direct2DResources: Refactor CompositionTree 2024-08-22 18:18:13 +01:00
attila
5ce2fc388e Fix C++23 compilation 2024-08-15 11:15:15 +02:00
Anthony Nicholls
25ee1b9e68 macOS: Simplify the CoreGraphics pointer types and add some new ones 2024-08-09 17:20:36 +01:00
Anthony Nicholls
997c92797c macOS: Improve performance for some graphics draw functions 2024-08-09 14:29:53 +01:00
attila
29327144db
StackBasedLowLevelGraphicsContext: Prefer using RectangleListRegion clip when possible
This reverts a tiny part of 19061e6d17.
2024-08-06 17:36:19 +01:00
attila
dda0719d56
EdgeTable: Fix buggy clipToRegion corner case 2024-08-06 17:36:10 +01:00
attila
22ee31f3ff EdgeTable: Use HeapBlock instead of vector for better Android Debug drawing performance
This is reverting 417d97b36e.
2024-08-02 14:48:52 +00:00
Anthony Nicholls
cc96592e7c Graphics: Improve drawing performance for stroking paths on macOS 2024-08-02 10:28:15 +01:00
reuk
b99e66c159
Harfbuzz: Silence clang overflow warning 2024-07-29 16:11:55 +01:00
Tom Poole
46c2a95905 JUCE version 8.0.1 2024-07-29 12:47:03 +01:00
reuk
12ef0a0200 HarfBuzz: Enable atexit to silence some CRT debug memory leak warnings
Before this change, after running a JUCE app on Windows under a
debugger, and quitting it normally (e.g. pressing the close title
button), the output log would display some memory leak diagnostics. This
is because HarfBuzz expects to clean up statics using atexit, but atexit
was not enabled. This change enables atexit on supported platforms,
including Windows.
2024-07-29 12:46:38 +01:00
Tom Poole
fc0fd3042f Bump version number to 8.0.1 2024-07-29 12:43:19 +01:00
attila
04d9d36b15 TextLayout: Fix ignored AttributedText::getLineSpacing() parameter 2024-07-22 13:16:06 +02:00
attila
5de96da34d Graphics: Suppress warnings emitted by harfbuzz 2024-07-18 19:15:18 +02:00
Oliver James
57d33150d3 Unicode: Fix incorrect character ordering in Latin text
This addresses issues that could occur when re-ordering text that
contained brackets or numerical separators.
2024-07-18 19:15:17 +02:00
reuk
b35688d9a4
SimpleShapedText: Avoid wrapping when WordWrap::none is requested 2024-07-11 18:00:07 +01:00
reuk
8642cfe6b3
Direct2D: Remove rectangular clip assertion
This assertion was intended to emulate a performance warning that could
be emitted by the D2D debug layer, but it often gets in the way during
development. To check for this performance issue, users can change
D2D1_DEBUG_LEVEL_NONE to D2D1_DEBUG_LEVEL_INFORMATION in
juce_DirectX_windows.h
2024-07-09 12:47:30 +01:00
reuk
4c1a93e8d8 FreeTypeTpeface: Avoid recreating FTTypefaceList at shutdown
Calling getInstance may recreate the list singleton if it has already
been destroyed. This should only happen if a Typeface instance is being
destroyed after the app/plugin has been shutdown, e.g. if the typeface
has static storage duration.
2024-07-08 13:16:57 +01:00
reuk
a4022df686
Direct2D: Fix issue where contexts would not clear properly after pushing multiple clip layers
This issue could be seen when calling setBufferedToImage on a component
with a transparent background with a size different to the component's
size.

The details are unclear to me, but it seems like both calling Clear on
the device context, and using the COPY blend mode, ignore alpha values
and instead use a constant alpha of 1.0 when there is a geometric
clipping layer active.

As a workaround for this issue, when clearing a rectangle we now pop all
active layers, fill their intersection using the COPY blend mode while
there are no layers active, and then reinstate the layers.

The new implementation is likely to be very slow, however I think this
code path is unlikely to be used frequently in practice. The main
use-case for rendering clear transparent areas is the rendering of
buffered component images, but such cases normally use axis-aligned
clipping regions, which should be able to use the faster path.
2024-07-04 13:03:56 +01:00
reuk
f3dfd0d9be
Direct2D: Update formatting in clipToImageAlpha 2024-07-04 13:03:35 +01:00