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

49 commits

Author SHA1 Message Date
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
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
5befcd43a9
EdgeTable: Use CopyableHeapBlock in implementation 2024-09-05 12:10:33 +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
reuk
0444e3d69c
EdgeTable: Avoid reinterpret_cast in multiplyLevels 2024-05-20 12:49:55 +01:00
reuk
ce0fe3dc1e
EdgeTable: Keep better track of buffer memory ranges
Occasionally, on Linux, Address Sanitizer can complain about a memory
region overlap in the arguments to memcpy, originating in
EdgeTable::intersectWithEdgeTableLine. I haven't been able to reproduce
this personally.

The final memcpy call in this function requires there to be
"srcNum1 * 2" valid entries after the current "src1" ptr, and none of
those entries may overlap with the area starting at "temp".

On inspection, I think that the memory region being read is too large.
At the point of the call, src1 will point to a LineItem::level, not
LineItem::x, so there will actually be (srcNum1 * 2 - 1) valid items
following it.

All this pointer arithmetic is very difficult to understand. In an
effort to make this function slightly more understandable, I've switched
to using Spans to delineate lines of the table, which makes it easier to
keep track of the size of each line.
2024-05-20 12:49:55 +01:00
reuk
417d97b36e
EdgeTable: Implement using vector to simplify special member functions 2024-05-20 12:49:54 +01:00
Tom Poole
94d98a2b10 Update licensing information 2024-04-16 11:39:35 +01:00
reuk
c8c4cdc7d5
EdgeTable: Add offset before truncating to somewhat restore old rounding behaviour 2023-06-08 15:05:43 +01:00
reuk
4f67a18a3f
EdgeTable: Avoid integer truncation when rendering paths with large coordinates
Previously, if the PathFlatteningIterator returned a line segment with
very large x or y positions, the result of
    roundToInt (iter.y1 * 256.0f)
could be incorrect, if the result was too large to fit in an int.

Using int64_t to store intermediate results, converting to int when
updating the edge table itself produces accurate results for a wider
range of inputs.
2023-06-01 18:49:32 +01:00
Tom Poole
2ec861d99e Update licensing banners to JUCE 7 2022-05-16 17:55:48 +01:00
Tom Poole
dea3fe60e4 Update copyright banners 2022-04-04 12:36:32 +01:00
reuk
1a4296e98b
EdgeTable: Avoid shifts of negative numbers 2021-09-28 14:04:10 +01:00
reuk
31a7c62baf
Windows: Fix and suppress some analysis warnings
This fixes warnings that are emitted when building with the `-analyze`
flag enabled.
2021-05-26 15:34:26 +01:00
ed
009d685179 Updated all license headers 2020-06-29 08:30:22 +01:00
Tom Poole
894e7d2bd2 Updated all license headers 2020-04-23 17:30:39 +01:00
reuk
327f817b9b Copyrights: Update commercial/gpl headers to be gpl-only 2020-04-09 15:22:56 +01:00
jules
b028f299b8 Fixed some subtle (but benign) undefined behaviour with negative bit-shifts 2017-12-19 14:22:39 +00:00
jules
5e9267e5d8 Simplified the Path class by making it use an Array for starage. 2017-12-18 12:22:02 +00:00
jules
9d56e2990d Optimised the GL renderer to avoid splitting large rectangles into horizontal strips unnecessarily 2017-11-03 13:51:37 +00:00
jules
24f023bb23 Added some heuristics to EdgeTable to try to improve the table size prediction 2017-10-11 15:28:32 +01:00
jules
93a22599d1 Tweaked the rate at which EdgeTable grows its internal storage, to improve performance rendering large and complex paths 2017-10-09 14:53:56 +01:00
jules
27a6903cac Changed the way isPositiveAndBelow is written to avoid needing to cast the second parameter to an int 2017-09-27 12:24:02 +01:00
jules
eda613c6db Moved all "namespace juce" declarations from module headers to the individual .h and .cpp source files. This makes life a lot easier for Intellisense and other IDE autocompletion tools 2017-09-08 08:59:55 +01:00
hogliux
b5afccc37c Updated file headers and the README with the JUCE 5 license 2017-04-27 14:43:04 +01:00
jules
38d49a5ee7 Modernised a few RectangleList iterators 2017-04-03 16:08:07 +01:00
hogliux
c7b8e77031 Update copyright notice 2015-07-22 15:59:34 +01:00
jules
863895d107 Minor cleanups. 2013-11-10 17:43:02 +00:00
jules
a53110de06 Big speedup to path rendering on GL/software. 2013-11-07 14:38:59 +00:00
jules
59d719cc26 Increased the gamma of software-rendered fonts. 2013-10-29 21:37:36 +00:00
jules
bb98c00d0d Avoided some pedantic compiler warnings in the audio plugin code. 2013-10-01 11:53:17 +01:00
jules
1c8a03c05e Fix for edgetable rendering. 2013-09-24 23:02:28 +01:00
jules
abd3babc02 Minor optimisations and clean-ups. 2013-09-21 13:41:16 +01:00
jules
fc772941d6 Fixed some pedantic warnings. 2013-09-16 18:47:28 +01:00
jules
59d8d8172d Replaced the crappy old juce sortArray function with std::sort, which seems to run twice as fast. This greatly speeds up edge table rendering. 2013-09-05 09:46:30 +01:00
jules
dbf7053861 New method Graphics::fillRectList(), which performs better (and looks better when scaled) than multiple calls to fillRect or drawVerticalLine. Also fixed DPI detection in Windows. 2013-08-30 18:20:51 +01:00
jules
29ada09816 Cleaned up some unused variables. 2013-08-01 12:40:50 +01:00
jules
08c9d5d22f EdgeTable performance tuning. 2013-07-30 17:18:04 +01:00
jules
32c98223ac Refactored some lowlevelgraphicscontext classes to remove duplicated code. 2013-07-30 09:59:03 +01:00
jules
1b9a60e52c Added a templated type to the RectangleList class. If you've used this class and these changes cause syntax errors, all you need to do to your code is to replace "RectangleList" with "RectangleList<int>" and everything will work as it did before. 2013-07-28 18:08:28 +01:00
jules
03c2801f3f Copyright header update in all module files. juce_core modules are now ISC licensed. All other modules are GPLv2/3/AGPLv3 2013-06-13 13:17:12 +01:00
jules
667a18712f Added begin()/end() iterators to RectangleList. You should use these in preference to RectangleList::Iterator, as they're faster. 2012-11-15 13:58:49 +00:00
jules
07e7188eb1 Tidied up a few compiler warnings. 2012-11-07 20:50:45 +00:00
jules
295d125142 Stopped using the old BEGIN_JUCE_NAMESPACE macros, and just used hard-coded namespaces where necessary instead. The macro definitions are still there, so this shouldn't affect anyone's code. 2012-02-11 14:09:23 +00:00
jules
aff5fea6b4 Minor introjucer clean-ups. 2012-01-22 10:04:19 +00:00
jules
2c0902833d Lock for multithreaded font rendering. Tweaks for some openGL settings. Updated the demo to have an openGL rendering engine option. 2011-12-20 13:32:11 +00:00
jules
115a171d76 Big OpenGLRenderer rewrite, plus a revamped OpenGL demo page to demonstrate 2D rendering. 2011-11-01 20:43:19 +00:00
Julian Storer
b70e0a28d2 First check-in of the "jucequake": a major re-organisation of the library to break it up into modules. For more details about this, see the website forum.. 2011-08-12 10:04:52 +01:00
Renamed from src/gui/graphics/contexts/juce_EdgeTable.cpp (Browse further)