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

14795 commits

Author SHA1 Message Date
reuk
faf6d9976a
Windows: Fix WM_NCCALCSIZE behaviour for frameless windows on multiple display systems
Previously, maximising a frameless window on a secondary display could
result in the window's coordinates being computed incorrectly, leading
to graphical glitches.
2024-09-05 12:16:39 +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
735f99418c
OpenGL: Ensure window repainting messages are emitted correctly on Windows
This fixes an issue introduced in
340f531c71 where embedded OpenGL windows
would incorrectly have the WS_EX_LAYERED style bit set, which in turn
prevented them from displaying correctly.

Before the window-transparency refactoring, OpenGL windows would not
have the layered bit set because only peers with windowIsSemiTransparent
were created with the layered bit, and the layered bit was only updated
if the peer alpha was changed.

The new behaviour is to always set WS_EX_LAYERED if the peer's component
is non-opaque with no titlebar, or if the component has an alpha < 1.0f.
The OpenGLContext's placeholder component has no titlebar, so it must be
opaque in order to avoid setting the layered style bit.
2024-09-05 12:14:54 +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
92cbbf3db1
VST3 SDK: Remove unused manifest 2024-09-05 12:12:37 +01:00
reuk
b106b19eae
AU Host: Avoid leaking CoreFoundation types returned from property queries 2024-09-05 12:12:01 +01:00
reuk
11821d88a4
Windows: Avoid attempting to dismiss modals during minimise/restore 2024-09-05 12:11:30 +01:00
reuk
5befcd43a9
EdgeTable: Use CopyableHeapBlock in implementation 2024-09-05 12:10:33 +01:00
reuk
2733c60a99
Resave all projects 2024-09-05 12:10:30 +01:00
reuk
5e9473ba89 CopyableHeapBlock: Add initial implementation 2024-09-04 18:53:18 +01:00
Anthony Nicholls
9b3a513ae3 VST3: Update SDK to 3.7.12 2024-09-04 15:49:36 +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
Paul Gration
51edcaf842 Docs: Remove duplicate apt dependency 2024-08-27 14:51:45 +01:00
Yuki
faa850a48c Oboe: Remove an erroneous semicolon 2024-08-27 14:22:49 +01:00
attila
853e2052ff Use WebViewLifetimeListener in WebControlRelays 2024-08-26 15:30:58 +02:00
attila
b395239884 WebBrowserComponent: Add WebViewLifetimeListener 2024-08-26 13:25:28 +02:00
Anthony Nicholls
0802db13ee VST3: Support loading a VST2 state when a plugin implements getCompatibleClasses() 2024-08-24 08:38:10 +01:00
Anthony Nicholls
2c606d6612 VST3: Fix an issue migrating VST2 to VST3 states in Reaper
Reaper uses an undocumented version 0 of the fxbank struct, this could
be handled by JUCE but instead this solution switches to using methods
provided by the VST3 SDK to save and load VST2 states. This also has
the added benefit of no longer requiring the VST2 SDK to build a VST3
plugin that supports saving and loading VST2 states.
2024-08-24 08:38:10 +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
191dfe2e19
CMake: Fix uninitialized variable warnings when configuring for iOS 2024-08-23 16:12:30 +01:00
reuk
0ed2ae64fa
Windows: Fix issue where windows with titlebars reported the wrong transparency kind 2024-08-23 16:12:29 +01: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
340f531c71
Direct2D: Reinstate support for transparent windows 2024-08-22 20:19:49 +01:00
reuk
6f2293d91b
Windows: Fix conversion of WindowsBitmapImages to SoftwareBitmapImages 2024-08-22 18:18:17 +01:00
reuk
b7db89cb8e
Windows: Fix capture of software-rendered windows with per-pixel alpha 2024-08-22 18:18:17 +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
2a108ca582
Direct2D: Rename GDIContext and D2DContext 2024-08-22 18:18:16 +01:00
reuk
831c5142a4
Windows: Refactor WindowsBitmapData to expose updateLayeredWindow 2024-08-22 18:18:16 +01:00
reuk
328ad60d9e
Windows: Move definition of GDI window snapshot function 2024-08-22 18:18:16 +01:00
reuk
b90498d79b
Windows: Always use WS_POPUP style for windows without a native titlebar or shadow
If we don't do this, the top corners of the window may have unwanted
clipping applied, making the corners appear rounded.
2024-08-22 18:18:16 +01:00
reuk
afaf97fe16
Windows: Update minimise and maximise window flags
The docs for WS_MINIMIZEBOX and WS_MAXIMIZEBOX specify that WS_SYSMENU must be specified.
The docs for WS_SYSMENU specify that WS_CAPTION must be specified.
2024-08-22 18:18:16 +01:00
reuk
e9f2a94d62
Windows: Use new client rect helper in implementation of getScreenPosition() 2024-08-22 18:18:16 +01:00
reuk
4a76872f54
Windows: Add helper to find client rect in screen coordinates 2024-08-22 18:18:16 +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
19aade443a
Windows: Fix bug where plugins with additional top-level windows could fail to repaint after changing the display config 2024-08-22 18:18:14 +01:00