reuk
ded1590ecb
HarfBuzz: Silence nontrivial-memcall warnings
...
These warnings are emitted by Clang 20.1
2025-03-19 11:06:17 +00:00
attila
273c7936d3
Direct2D: Fix text drawing using gradients when the screen scaling is 1
2025-03-17 15:32:59 +01:00
attila
432a7e1c9a
Fix C++20 compilation
2025-03-14 10:03:11 +01:00
attila
427852836c
ShapedText: Break ligatures into multiple iterable placeholder glyphs
2025-03-13 12:16:16 +01:00
attila
bc093fa64c
Ranges: ShapedText: Use out params for improving TextEditor performance
2025-03-13 12:16:16 +01:00
attila
a4f73a37af
ShapedText: Fix input text range calculation logic during wrapping
2025-03-13 12:16:16 +01:00
attila
bfbdc4844d
ShapedTextOptions: Fix uninitialised member variable
2025-03-13 12:16:16 +01:00
attila
50863c144e
ShapedTextOptions: Add equality operators
2025-03-13 12:16:16 +01:00
attila
d72df5faa3
ShapedText: Add bidirectional lookup functions relating positions, input indices and glyph indices
2025-03-13 12:16:16 +01:00
attila
6cf697bd6d
Ranges: Add equality operators
2025-03-13 12:16:16 +01:00
attila
2842c8ef8e
Add detail::Ranges::getRanges()
2025-03-13 12:16:16 +01:00
attila
6c3043f082
Add detail::UnicodeHelpers::getLineBreaks
2025-03-13 12:16:16 +01:00
attila
a07098d479
Add ShapedText::getHeight()
2025-03-13 12:16:16 +01:00
attila
213d3fb56a
Add RangedValues::getIntersectionsStartingAtZeroWith
2025-03-13 12:16:16 +01:00
attila
2d24504cd1
Change the return type of RangedValues::getIntersectionsWith
...
This is to avoid converting the returned value to RangedValues at the
call site.
2025-03-13 12:16:16 +01:00
attila
8dccb38081
Make IntersectingRangedValues independent from the RangedValues type
...
With this change you can use makeIntersectingRangedValues() not just for
RangedValues objects, but any object that has a begin() and end()
function returning a RangedValuesIterator.
2025-03-13 12:16:16 +01:00
attila
5b04493fb8
Ranges: Make RangedValuesIterator independent from the RangedValues type
...
This commit also relaxes the requirements imposed on the types for which
RangedValuesIterators can be created.
2025-03-13 12:16:16 +01:00
attila
43608a5208
Ranges: Store more information in Split and Change operations
...
This allows implementing more sophisticated logic in types wrapping
Ranges and RangedValue objects.
2025-03-13 12:16:16 +01:00
attila
ef840b7472
Use detail::RangedValues<Font> on ShapedText related interfaces
...
Previously using the FontForRange type was motivated by hiding the
RangedValues type in case we wanted to expose the ShapedText API. This
introduced unnecessary conversions between FontForRange and
RangedValues<Font>.
2025-03-13 12:16:16 +01:00
attila
ad43702e88
Add detail::RangedValues::shift
2025-03-13 12:16:16 +01:00
attila
fab1de34ab
Add ShapedText::accessTogetherWith and remove ShapedText::access
...
Since the original function template has been exposed, we can now use it
directly. Also ShapedText::Detail has been removed, because it wouldn't
work across module boundaries.
2025-03-13 12:16:16 +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
attila
e31fb368b6
Unicode TR14: Always return a hard break for line breaking code points
...
Prior to this commit a soft break would be returned at the end of text,
even if the text was terminated by a newline.
2025-03-13 12:16:16 +01:00
reuk
518240cd61
Zlib: Fix unknown-symbols errors when building with clang, windows, C++20/23
2025-03-03 14:41:32 +00:00
reuk
209c86c627
Zlib: Update JUCE sources to support new zlib version
2025-02-25 12:47:13 +00:00
reuk
9bdf69e499
PathStrokeType: Avoid unnecessarily starting new subpaths
2025-02-11 18:11:12 +00:00
reuk
92c7d73d2d
Direct2D: Fix image artefacts at the edge of alpha-clipped regions
...
This addresses the same issue that
95d416ab77 was intended to fix:
Drawing a drop shadow on a high-res display on Windows could sometimes
produce thin lines around the edge of the shadow. Using the 'clamp'
rather than the 'wrap' clipping mode seems to help.
2025-02-11 18:11:12 +00:00
reuk
5aa76a7d7e
DropShadow: Revert recent shadow-scale change
...
Reverts 95d416ab77
The previous change caused the shadow to draw at higher resolution on
high-res displays, which then made the blur more expensive to compute.
2025-02-11 18:11:12 +00:00
reuk
95d416ab77
DropShadow: Draw shadows for paths at correct scale to avoid stretching the blurred bitmap
2025-02-06 18:22:33 +00:00
reuk
09b10428ec
CoreGraphics: Remove CoreImage implementations for desaturation and transparency
2025-02-06 18:22:33 +00:00
reuk
c46bcb677e
CoreGraphics: Remove CoreImage single-channel blur implementation
...
The CoreImage blur implementation is often significantly slower than
the old software blur in common scenarios such as rendering shadows.
2025-02-06 18:22:33 +00:00
reuk
19edd53842
EdgeTable: Fix issue where edges of paths could be anti-aliased incorrectly at edges of clip regions
2025-02-03 19:16:46 +00:00
reuk
56ea531298
CoreGraphics: Fix bug where subsection images were rendered incorrectly
2025-02-03 13:56:31 +00:00
reuk
a381fdf81d
Font: Allow overriding typeface ascent and descent metrics
2025-01-29 13:36:28 +00:00
reuk
f12d29899c
Direct2D: Remove SetDpi call in startFrame
...
Previously, plugins and standalone apps could produce slightly different
visual results, particularly anti-aliasing, when displaying on a display
with native scaling applied. The discrepancy was caused by SetDpi being
called with a larger-than-default value (e.g. 192 DPI on a 200% scaled
display) in a standalone app, whereas SetDpi would always be called with
the default value of 96 in a plugin.
Keeping the default value seems to produce better results, so standalone
apps will now retain the default DPI.
2025-01-29 11:00:44 +00:00
reuk
c3e8b6bff3
CoreGraphics: Use Image NativeExtensions to avoid dynamic casts in graphics context
2025-01-23 12:21:33 +00:00
reuk
d3ca5961e7
Direct2D: Use Image NativeExtensions to avoid dynamic casts in graphics context
2025-01-23 12:21:33 +00:00
reuk
9b08c8fd51
Image: Add NativeExtensions type to help with inspecting images from graphics context implementations
...
This type isn't used anywhere in this commit, but this change lays the
foundation for the following commits.
2025-01-23 12:21:33 +00:00
reuk
55e5e2082c
Image: Add new backup-extensions interface to support images with no main-memory backup
2025-01-23 12:21:33 +00:00
reuk
ada2c88b03
ImagePixelData: Update signatures of functions providing whole-image effects
2025-01-23 12:21:33 +00:00
reuk
8cb8c5e572
Image: Add new BitmapData constructor accepting a Rectangle
2025-01-23 12:20:27 +00:00
reuk
5f7d6d70fc
Direct2DContext: Remove unnecessary public constants
2025-01-23 12:20:27 +00:00
tpoole
0baffff182
Bump version number to 8.0.6
2025-01-10 09:29:00 +00:00
tpoole
902ddc7567
Bump version number to 8.0.5
2025-01-08 14:23:21 +00:00
attila
d73b1768a7
Fall back to default sans serif font if resolution would fail otherwise
...
This restores the JUCE 7 behaviour when the JUCE 8 font fallback
mechanism fails to resolve a non-null Typeface::Ptr. This behaviour is
significant when the base font specified is not available on the system.
2025-01-07 17:29:43 +01:00
attila
ba61c9edb9
Fix crash when no valid Typeface::Ptr can be resolved
2025-01-07 17:29:43 +01:00
Anthony Nicholls
ad3457434e
SimpleShapedText: Prevent running tests when no default typefaces can be found
2024-12-18 17:55:27 +00:00
Anthony Nicholls
7a1f397de6
Fonts (Linux): Return a null typeface when no default typefaces can be found
2024-12-18 16:00:44 +00:00
tpoole
df14e83838
Image: Remove an unused function
2024-12-18 13:04:27 +00:00
attila
9dd8a2af13
Fix SimpleShapedText::getTextRange() when the input text contains hard breaks
...
The issue prior to this commit would be observable when using the
GlyphArrangement functions e.g. addFittedText.
This is a fix for a regression introduced in
9223805b9c .
2024-12-17 18:27:30 +01:00