Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2021-08-29Fix BLI_strncpy_wchar_from_utf8 result on WindowsCampbell Barton
This function was documented to return the length but returned an error value for WIN32. While this doesn't cause any bugs at the moment, it could cause problems in the future. Oversight in 5496d8cd361385268316f91afa150e69b5345ab0.
2021-08-28BLI_string_utf8: add buffer size arg to BLI_str_utf8_from_unicodeCampbell Barton
Besides helping to avoid buffer overflow errors this reduces complexity of BLI_str_utf32_as_utf8 which needed a special loop for the last 6 characters to avoid writing past the buffer bounds. Also add BLI_str_utf8_from_unicode_len which only returns the length.
2021-08-27Cleanup: quiet maybe-used-uninitialized warningJacques Lucke
2021-08-27Cleanup: utf8 stepping functionsCampbell Barton
Various changes to reduce risk of out of bounds errors in utf8 seeking. - Remove BLI_str_prev_char_utf8 This function could potentially scan past the beginning of a string. Use BLI_str_find_prev_char_utf8 instead which takes a limiting string start argument. - Swap arguments for BLI_str_find_prev_char_utf8 so the stepping argument is first and the limiting argument is last. This matches BLI_str_find_next_char_utf8. - Change behavior of these functions to return it the start or end pointers instead of NULL, which complicated use of these functions to calculate offsets. Callers that need to check if the limits were reached can compare the return value with the start/end pointers. - Return 'const char *' from these functions so they don't remove const from the input arguments.
2021-08-26Cleanup: use BLI_UTF8_MAX defineCampbell Barton
2021-08-26Cleanup: add ATTR_WARN_UNUSED_RESULT to BLI_string_utf8.hCampbell Barton
2021-08-26Cleanup: soft CMake file listsCampbell Barton
2021-08-25Fix assert caused by 38630711a02e553f209ace9a8627a7a851820a2dCampbell Barton
2021-08-25Correct error in 38630711a02e553f209ace9a8627a7a851820a2dCampbell Barton
2021-08-25BLI_string_utf8: remove unnecessary utf8 decoding functionsCampbell Barton
Remove BLI_str_utf8_as_unicode_and_size and BLI_str_utf8_as_unicode_and_size_safe. Use BLI_str_utf8_as_unicode_step instead since it takes a buffer bounds argument to prevent buffer over-reading.
2021-08-25BLI_string_utf8: simplify utf8 stepping logicCampbell Barton
There were multiple utf8 functions which treated errors slightly differently. Split BLI_str_utf8_as_unicode_step into two functions. - BLI_str_utf8_as_unicode_step_or_error returns error value when decoding fails and doesn't step. - BLI_str_utf8_as_unicode_step always steps forward at least one returning the byte value without decoding (needed to display some latin1 file-paths). Font drawing uses BLI_str_utf8_as_unicode_step and no longer check for error values.
2021-08-24Fix BLI_str_utf8_as_unicode_step reading past intended boundsCampbell Barton
Add a string length argument to BLI_str_utf8_as_unicode_step to prevent reading past the buffer bounds or the intended range since some callers of this function take a string length to operate on part of the string. Font drawing for example didn't respect the length argument, potentially causing a buffer over-read with multi-byte characters that could read past the end of the string. The following command would read 5 bytes past the end of the input. `BLF_draw(font_id, (char[]){252}, 1);` In practice strings are typically null terminated so this didn't crash reading past buffer bounds. Nevertheless, this wasn't correct and could cause bugs in the future. Clamping by the length now has the same behavior as a null byte. Add test to ensure this is working as intended.
2021-08-24Cleanup: spellingCampbell Barton
2021-08-23Using relative threshold for floats in mesh comparisonHimanshi Kalra
Changes the threshold comparison from absolute to relative. Removes threshold for MLoopCol comparison. Adds a compare relative threshold function. Reviewed By: JacquesLucke Differential Revision: https://developer.blender.org/D12273
2021-08-23Compositor: Full frame Bokeh Blur and Blur nodesManuel Castilla
Adds full frame implementation to these nodes operations. When enabling "extend bounds" node option, tiled implementation result is slightly different because it's using `TranslateOperation` with bilinear sampling for centering. Full frame always uses nearest to don't lose image quality. It has the disadvantage of causing image jiggling on backdrop when switching size values as it's not pixel perfect. This is fixed by rounding to even. No functional changes. Part of T88150. Reviewed By: jbakker Differential Revision: https://developer.blender.org/D12167
2021-08-23Cleanup: use BLI_str_utf8 prefixCampbell Barton
Rename: - BLI_str_utf8_invalid_byte (was BLI_utf8_invalid_byte) - BLI_str_utf8_invalid_strip (was BLI_utf8_invalid_strip)
2021-08-21Use Zstandard compression for the sequencer cacheLukas Stockner
Reviewed By: campbellbarton, brecht, mont29 Differential Revision: https://developer.blender.org/D5799
2021-08-21Add support for Zstandard compression for .blend filesLukas Stockner
Compressing blendfiles can help save a lot of disk space, but the slowdown while loading and saving is a major annoyance. Currently Blender uses Zlib (aka gzip aka Deflate) for compression, but there are now several more modern algorithms that outperform it in every way. In this patch, I decided for Zstandard aka Zstd for several reasons: - It is widely supported, both in other programs and libraries as well as in general-purpose compression utilities on Unix - It is extremely flexible - spanning several orders of magnitude of compression speeds depending on the level setting. - It is pretty much on the Pareto frontier for all of its configurations (meaning that no other algorithm is both faster and more efficient). One downside of course is that older versions of Blender will not be able to read these files, but one can always just re-save them without compression or decompress the file manually with an external tool. The implementation here saves additional metadata into the compressed file in order to allow for efficient seeking when loading. This is standard-compliant and will be ignored by other tools that support Zstd. If the metadata is not present (e.g. because you manually compressed a .blend file with another tool), Blender will fall back to sequential reading. Saving is multithreaded to improve performance. Loading is currently not multithreaded since it's not easy to predict the access patterns of the loading code when seeking is supported. In the future, we might want to look into making this more predictable or disabling seeking for the main .blend file, which would then allow for multiple background threads that decompress data ahead of time. The compression level was chosen to get sizes comparable to previous versions at much higher speeds. In the future, this could be exposed as an option. Reviewed By: campbellbarton, brecht, mont29 Differential Revision: https://developer.blender.org/D5799
2021-08-21Refactor low-level blendfile reading into separate filesLukas Stockner
Instead of handling mmap, compression etc. all directly in readfile.c, refactor the code to use a generic FileReader. This makes it easier to add new compression methods or similar, and allows to reuse the logic in other places (e.g. thumbnail reading). Reviewed By: campbellbarton, brecht, mont29 Differential Revision: https://developer.blender.org/D5799
2021-08-20BLI: add utility methods to IndexMaskJacques Lucke
2021-08-17Cleanup: unused definesCampbell Barton
2021-08-13Revert "Mesh: replace saacos with acosf for normal calculation"Campbell Barton
This reverts commit 41e650981861c2f18ab0548e18851d1d761066ff. This broke "CubeMaskFirst" test. Any value even slightly outside the [-1.0..1.0] range caused the result to be nan, which can happen when calculating the dot-product between two unit length vectors.
2021-08-13Mesh: replace saacos with acosf for normal calculationCampbell Barton
The clamped version of acos isn't needed as degenerate (nan) coordinates result in zeroed vectors which don't need clamping.
2021-08-13Docs: note that normalize_v# functions zero out input containing nanCampbell Barton
2021-08-06Cleanup: use range2f in `ED_keylist_find_any_between`.Jeroen Bakker
2021-08-05Cleanup: remove redundant parenthesisCampbell Barton
2021-08-05Cleanup: license headersCampbell Barton
These were removed globally in 65ec7ec524e667ec95ce947a95f6273088dffee6. Some files re-introduced these conventions since.
2021-08-04VSE: Allow Wingdings and Symbol FontsHarley Acheson
This patch makes us less restrictive on the allowed types of FreeType font character maps we allow, rather than primarily unicode-only. This allows us to use some legacy, symbol, specialty, and proprietary fonts like Wingdings. Note we were a little less restrictive with vfonts, used for 3D Text Objects, so this patch primarily helps VSE. See D12124 for details and examples. Differential Revision: https://developer.blender.org/D12124 Reviewed by Brecht Van Lommel
2021-08-04UI: VFont Display NamesHarley Acheson
When displaying the names of fonts for 3D Text objects, use the same format as shown in File Browser: Family name + Style name. They are currently shown with Postscript Name, which doesn't match well. see D12069 for more details. Differential Revision: https://developer.blender.org/D12069 Reviewed by Campbell Barton
2021-08-04BLI: add double version of 'scaleform'Germano Cavalcante
No functional changes. New utility.
2021-08-04Cleanup: use C comments for descriptive textCampbell Barton
2021-08-04Cleanup: spellingCampbell Barton
2021-08-03Fix calculation of 'projmat_dimensions'Germano Cavalcante
`r_left`, `r_right`, `r_bottom` and `r_top` were ignoring `clip_near` value when in perspective view. Also rename `projmat` to `winmat` in these cases.
2021-08-03Fix broken logic in Windows directory query functionJulian Eisel
Mistake in a5bbdd6998ab
2021-08-03Fix T90387: division by zero when trying to invert scaleSybren A. Stüvel
Fix division by zero when `BKE_bone_parent_transform_invert()` inverts a scale vector with zero components. Zero values in the to-be-inverted vector are now simply skipped, i.e. remain zero after inversion. This at least ensures that `invert_v3_safe(invert_v3_safe(vector))` results in the same vector. This commit does NOT fix the conceptual problem that an inversion of a potentially non-invertible vector is relied upon. It just avoids the division by zero.
2021-08-03Cleanup: Hide implementation details for ED_keyframe_keylist.Jeroen Bakker
For T78995 we want to change the data structure of keylists to improve performance. (Probably a Vector with bin-search capabilities). This patch hides the internal structure of the keylists behind `AnimKeylist` structure. This allows us to change the internals without 'breaking' where it is being used. The change adds functions to create, free, find and walk over the keylist. Reviewed By: sybren Maniphest Tasks: T78995 Differential Revision: https://developer.blender.org/D11974
2021-08-03Cleanup: use C++ comments or 'if 0' for commented codeCampbell Barton
2021-08-02Cleanup: spellingCampbell Barton
2021-07-30Cleanup: clarify license and origin of voronoi and dithering codeBrecht Van Lommel
2021-07-30Cleanup: missing leading '*' from comment blocksCampbell Barton
2021-07-30Cleanup: clang-format (re-run after v12 version bump)Campbell Barton
2021-07-29Fix 'BLI_task_parallel_mempool' keeping 'user_chunk' unchangedGermano Cavalcante
When `BLI_task_parallel_mempool` does not use threading, the `userdata_chunk` is allocated locally simulating a TLS. However `func_reduce` is not called so the original chunk is ignored. `task_parallel_iterator_no_threads` is another function that doesn't call `func_reduce`. It also ignores `userdata_chunk_local` in the main iterator. The solution in these cases is not to create a `userdata_chunk_local`. This fixes T90131 Differential Revision: https://developer.blender.org/D12067
2021-07-29UI: Fix time labels drawingRichard Antalik
Calculate frequency of time/frame label drawing, such that labels have at least 10px margin and don't overlap. Change timecode format: - Use at least `mm:ss` format - Don't display frames if all labels would end with +00 Reviewed By: Severin Differential Revision: https://developer.blender.org/D11792
2021-07-27Add `StringRef::trim()` functionsSybren A. Stüvel
Add three functions that trim characters from the front & end of a `StringRef`. All functions return a new `StringRef` that references a sub-string of the original `StringRef`. - `trim(chars_to_remove)`: strips all characters from the start and end that occur in `chars_to_remove`. - `trim(char_to_remove)`: same, but with a single character to remove. - `trim()`: remove leading & trailing whitespace, so same as `trim(" \r\n\t")` Reviewed By: JacquesLucke Differential Revision: https://developer.blender.org/D12031
2021-07-25Fix T89391, etc. Boolean bugs when objects have negative scale.Howard Trickey
The old modifier code, now just used for Fast, has code in it to flip faces of arguments when their tranform's negativity differs from the main object's transform's negativity. I had neglected to put that logic in when I made the change that skipped the round trip through BMesh. Fixing this means that the results are more what the user expects when some or all operands have negative scales.
2021-07-23Fix: avoid creating improper rotation matrixJacques Lucke
This might change the rotation of some instances after a Curve to Points. Unfortunately, there is not much we can do about that, the math before was just wrong. The forward and up axis stayed the same though. Differential Revision: https://developer.blender.org/D12006
2021-07-23Another slight increase in speed for Delaunay CDT.Howard Trickey
When the new "need_ids" flag is false and the output type is not one of the valid BMesh kinds, there is no need to propagate even a dummy id to all of the faces.
2021-07-23Cleanup: code comments punctuation / spacingCampbell Barton
2021-07-21Fix incorrect use of BLI_assert with error stringsCampbell Barton
Some asserts were never raised because of invalid checks.
2021-07-21Fix bug in assert in delaunay test.Howard Trickey
Assert was trying to say x coords of arcs lined up, and didn't do that.