reuk
2712f63628
Graphics: Use unique_ptr instead of raw pointers in RenderingHelpers
2025-08-14 14:13:09 +01:00
attila
fa0ed2801d
Fix J8 vertical text placement regression in the software renderer
2025-08-13 17:28:30 +01:00
attila
f97355b9f6
Direct2D: Fix seams between tiles for large bitmaps
2025-07-25 20:45:17 +02:00
attila
19906c9d2f
Direct2DGraphicsContextTests: Ignore the image edges to allow for differences in anti-aliasing
2025-07-25 20:45:17 +02:00
attila
3f898f6fee
Direct2D: Fix jitter when drawing bitmaps with non-unity scaling
...
Reverts ca3abbb96d .
Prior to this fix gradually changing the Component scale would lead to
the jittery movement of drawn bitmaps, as their position would be
snapped to an arbitrary integral representation.
2025-07-25 20:45:17 +02:00
attila
5bc44c301f
Make Direct2DGraphicsContextTests acceptance criteria stricter
2025-07-25 20:45:17 +02:00
reuk
5bb20e8e04
Direct2DImage: Flush CPU-only changes if necessary when copying images
2025-06-30 20:04:56 +01:00
reuk
a3d64c7784
Typeface: Enable advanced colour glyph rendering on Android
...
Android 15+ removed the 'legacy' png-based emoji font. Modern Android
versions may include only a COLR-v1-based font, which JUCE cannot
render itself.
As a workaround, on Android, we use a Canvas object to render each emoji
glyph into a bitmap, and then render that bitmap in the same way as a
legacy png-based glyph. This won't look as crisp as rendering COLRv1
glyphs directly, especially at larger sizes, but this is a sufficient
stop-gap for the time being.
2025-06-16 16:59:55 +01:00
reuk
72e345cdd7
Direct2DImage: Add missing data change notification when creating writable BitmapData
...
The OpenGL renderer listens for imageDataChanged() to invalidated cached
textures.
Before this change, the SimpleFFTDemo would display a static (outdated)
image on Windows when using the OpenGLRenderer.
2025-05-27 18:01:53 +01:00
reuk
415aed4bea
Direct2DImage: Sync CPU storage when creating a BitmapData view over a subsection of the image
...
When syncing from CPU->GPU storage, we currently copy the entire image
contents. The contents of the CPU backup completely replace the old GPU
image. Therefore, if any pixels need to retain their existing values, we
need to read those pixels before overwriting them. This in turn implies
that, when a BitmapData refers to a subsection of the image, we should
always flush GPU->CPU storage first, so that the subsequent CPU->GPU
sync doesn't clobber pixels outside of the BitmapData region with
outdated values.
It's clear that copying the entire image back and forth could be
suboptimal when writing to image subsections, but to optimise this
process we'd have to keep track of dirty image regions or similar, which
may in turn pessimise more common cases.
2025-05-27 18:01:53 +01:00
reuk
4012677fdf
Direct2DImage: Mark CPU storage as outdated after modifying GPU storage by copying
2025-05-27 18:01:53 +01:00
attila
7fc75c35f9
Android: Suppress availability macro warning
2025-05-19 13:30:27 +01:00
Oli
6972c4f0e3
Direct2D: Fix ETW tracing build errors
...
This makes Direct2DMetrics and current frameId accessible to implementation subclasses.
It also replaces JUCE_WRITE_TRACE_LOG with JUCE_WRITE_TRACE_LOG_VA as intended in original implementation.
Co-authored-by: Matt Gonzalez <matt@echoaudio.com>
2025-04-30 10:50:52 +01:00
reuk
243d3756fc
Direct2D: Hide implementation of RectangleListSpriteBatch::fillRectangles
2025-04-24 13:58:24 +01:00
reuk
49948d5dd4
Direct2D: Remove unused declarations
2025-04-24 13:58:24 +01:00
reuk
98d4ddef87
Direct2D: Move MemoryFontFileLoader to DirectX.cpp
2025-04-24 13:58:24 +01:00
reuk
234e75b2be
Direct2D: Move MemoryFontFileFileStream to DirectX.cpp
2025-04-24 13:58:24 +01:00
reuk
96683e49a1
Direct2D: Move FontFileEnumerator to DirectX.cpp
2025-04-24 13:58:24 +01:00
reuk
8d29edec92
Direct2D: Move CompositionTree to Direct2DHwndContext.cpp
2025-04-24 13:58:24 +01:00
reuk
1f6c1737eb
Direct2D: Remove declaration of makeGradientStopCollection()
2025-04-24 13:58:24 +01:00
reuk
8d33428dcf
Direct2D: Move WindowsScopedEvent to Direct2DHwndContext.cpp
2025-04-24 13:58:24 +01:00
reuk
f56c7faf40
Direct2D: Move SwapChain into Direct2DHwndContext.cpp
2025-04-24 13:58:24 +01:00
reuk
43c9f28d59
Direct2D: Move ScopedGeometryWithSink to Direct2DGraphicsContextImpl.cpp
2025-04-24 13:58:24 +01:00
reuk
137d9820b1
Direct2D: Move D2DHelpers to Direct2DGraphicsContext.cpp
2025-04-24 13:58:24 +01:00
reuk
2aed72d0d7
Direct2D: Move paintPrimitive implementation into Direct2DGraphicsContext
2025-04-24 13:58:24 +01:00
reuk
b061d5f5a4
Direct2D: Hide D2D SavedState in .cpp file
2025-04-24 13:58:24 +01:00
reuk
0071f4741c
Direct2D: Make protected members of Pimpl private/public as appropriate
2025-04-24 13:58:24 +01:00
reuk
170b463400
Direct2D: Remove unused hwnd data member from D2DGraphicsContext::Pimpl
2025-04-24 13:58:24 +01:00
reuk
93d227b6af
Direct2D: Split declaration and definition of Direct2DGraphicsContext::Pimpl
2025-04-24 13:58:24 +01:00
reuk
352f77083d
DirectX: Remove unused ScopedMultithread
2025-04-24 13:58:24 +01:00
reuk
87abc7919b
DirectX: Split out function definitions into a separate cpp file
2025-04-24 13:58:24 +01:00
Oli
ca3abbb96d
Direct2D: Round virtual texture tile position
...
This fixes the issue reported here: https://forum.juce.com/t/regression-in-drawimage/65084/5
2025-04-24 13:58:24 +01:00
Oli
5d6cd1f2d7
Direct2DGraphicsContext: Fix rendering for rectangles smaller than 1x1
...
This should also fix https://forum.juce.com/t/bug-d2d-renderer-does-not-draw-purely-horizontal-vertical-paths/65686/3
Co-authored-by: Matt Gonzalez <matt@echoaudio.com>
2025-04-24 13:58:24 +01:00
Oli
1dce4ae0fe
Direct2DGraphicsContext: Use path bounds to check for emptiness
...
Co-authored-by: Matt Gonzalez <matt@echoaudio.com>
2025-04-24 13:58:24 +01:00
Oliver James
16326d13d3
Direct2D: Use the 'focused' window when acquiring metrics
...
Co-authored-by: Matt Gonzalez <matt@echoaudio.com>
2025-04-24 13:58:23 +01:00
Oli
9374f2c9f7
Graphics: Use preferred temporary image type for transparency layers
...
Co-authored-by: Matt Gonzalez <matt@echoaudio.com>
2025-04-24 13:58:23 +01:00
Oli
250abe9cf4
LowLevelGraphicsContext: Add preferred image type for temporary images
...
Co-authored-by: Matt Gonzalez <matt@echoaudio.com>
2025-04-24 13:58:23 +01:00
Oli
bf940ae42a
Direct2D: Do image cloning on GPU when possible
...
Co-authored-by: Matt Gonzalez <matt@echoaudio.com>
2025-04-24 13:58:23 +01:00
Oli
ae784a941e
Direct2D: Implement moveValidatedImageSection
...
Co-authored-by: Matt Gonzalez <matt@echoaudio.com>
2025-04-24 13:58:23 +01:00
reuk
c167c6dfde
Direct2D: Move ImagePixelDataNativeExtensions into separate header
2025-04-24 13:58:23 +01:00
Oli
5e5258591f
Direct2D: Move Direct2DGraphicsContext::Impl into separate header
2025-04-24 13:58:23 +01:00
reuk
6deb508e96
Direct2D: Move Direct2DFactories to juce_DirectX_windows.h
2025-04-24 13:58:23 +01:00
reuk
18b508343d
Direct2D: Move Direct2DResources to juce_DirectX_windows.h
2025-04-24 13:58:23 +01:00
reuk
b5b7dd5696
Direct2D: Move Direct2DHelpers into juce_DirectX_windows.h
2025-04-24 13:58:23 +01:00
Oli
3b43b7ca13
Direct2D: Reduce DirectX resource thrashing in Direct2D Swapchain
2025-04-22 12:53:46 +01:00
attila
c786e6160c
Direct2D: Fix fillAlphaChannelWithCurrentBrush when the source position is non-zero
2025-04-17 10:27:24 +02:00
reuk
eca83213eb
Direct2D: Fix issue where vertical/horizontal lines were ignored by strokePath
2025-04-02 10:57:09 +01:00
attila
5aab60f4e5
Direct2D: Fix text drawing using gradients
2025-03-28 12:19:11 +01:00
attila
273c7936d3
Direct2D: Fix text drawing using gradients when the screen scaling is 1
2025-03-17 15:32:59 +01:00
attila
1b595311d0
Move ShapedText to the detail namespace and expose it in the headers
...
This makes it accessible for the new TextEditor implementation in
juce_gui_basics.
2025-03-13 12:16:16 +01:00