3524 Commits

Author SHA1 Message Date
Marius Volkhart
8ab53c6489 Deprecate functions that duplicate functionality
DrawingGroupRecord#processChildRecords and AbstractEscherHolderRecord#convertRawBytesToEscherRecords duplicate the functionality of AbstractEscherHolderRecord#decode. This makes the code harder to follow, as it is not clear when certain access patterns repeat. Accordingly, these functions are deprecated and flagged for removal.

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1887021 13f79535-47bb-0310-9956-ffa450edef68
2021-03-01 00:25:23 +00:00
Marius Volkhart
402d0fc5e5 Review EscherContainerRecord#getChildRecords() call sites for unnecessary work
This started off as wanting to add the EscherContainerRecord#getChildCount() function in order to do an efficient check for how many children the container has. This was desirable in new code for editing HSSF pictures. The existing option of calling getChildRecords().size() was undesirable as this requires a list copy first.

In the process of finding call sites that would benefit from replacing getChildRecords().size(), I realized that several other patterns would benefit from eliminating a copy, such as iterating over the children in a for-each loop, and indexed access to specific children.

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1887020 13f79535-47bb-0310-9956-ffa450edef68
2021-03-01 00:04:51 +00:00
Marius Volkhart
d1c9a07860 Add the ability to edit HSLFPictureData contents
Pictures can now be edited by calling HSLFPictureData#setData(byte[]). The byte[] should contain the image data as an image viewer might read it.

To enable this functionality, a tighter coupling between the EscherBSERecords of the slideshow and the HSLFPictureData was required. This ensures that changes in image data size are accurately recorded in the records.

In the course of coupling the records and the HSLFPictureData, various scenarios arose where a mapping of records to pictures was non-trivial. Accordingly, the HSLFSlideShowImpl#matchPicturesAndRecords(...) function was added to perform a more sophisticated matching pass. This function is heavily exercised by org.apache.poi.hslf.usermodel.TestBugs.testFile[5] and PPTX2PNG.render[2], as well as the new TestPictures#testSlideshowWithIncorrectOffsets().

Closes #225

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1887017 13f79535-47bb-0310-9956-ffa450edef68
2021-02-28 23:16:14 +00:00
Marius Volkhart
fab0ec3e08 Add documentation to EscherRecordTypes#DG_CONTAINER
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1887007 13f79535-47bb-0310-9956-ffa450edef68
2021-02-28 18:39:51 +00:00
Marius Volkhart
b9bbac0005 Replace magic constant use of Escher Blip Start type ID with reference
Instead of referring to the magic constant 0xF018, reference the value in the EscherRecordTypes enum.

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1886987 13f79535-47bb-0310-9956-ffa450edef68
2021-02-27 18:26:36 +00:00
Marius Volkhart
50757bca8e Fix bug with record indexes for HSSF Workbooks
We have encountered workbooks that do not have a TabIdRecord (see 55982.xls). However, the WorkbookRecordList#updateRecordPos() method would still increment the position of the TabIdRecord for such workbooks. Changing the default position of the record from 0 to -1 indicates that the record position has now been set.

This bug was discovered while adding support for editing pictures in HSSF documents.

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1886963 13f79535-47bb-0310-9956-ffa450edef68
2021-02-27 00:43:56 +00:00
PJ Fanning
bba9aa2b66 missing ooxml-schemas-lite classes
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1886892 13f79535-47bb-0310-9956-ffa450edef68
2021-02-24 21:26:33 +00:00
Andreas Beeker
eb30f2e1c8 Use upcoming XmlBeans 5.0.0 (working version 4.0.1)
Make batik optional as it doesn't work on the module-path
Use sub-components of batik as batik-all references them all again resulting in duplicated entries (maven poms haven't been migrated yet ...)
Remove SLF4j dependency

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1886777 13f79535-47bb-0310-9956-ffa450edef68
2021-02-22 00:18:37 +00:00
Marius Volkhart
259c9967ef [bug-63046] Use Log4j 2 for logging
This removes the POILogger and POILogFactory mechanism for logging. This mechanism was created at a time when the Java landscape looked very different than it does today.

Log4j 2 is an Apache Foundation project that is well maintained and is widely regarded as having good performance and capabilities. We use only the Log4j API artifact. This lets application developers choose how they want to capture logging events if at all. Integrations with Log4j 2 Core and Logback are available from the Log4j project.

Closes #224

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1886770 13f79535-47bb-0310-9956-ffa450edef68
2021-02-21 20:57:25 +00:00
PJ Fanning
62bfbd3c90 try re-eanbling xml entity config
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1886766 13f79535-47bb-0310-9956-ffa450edef68
2021-02-21 18:31:49 +00:00
Dominik Stadler
297c16f1f0 FinanceLib: Simplify code and add a few more tests
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1886658 13f79535-47bb-0310-9956-ffa450edef68
2021-02-18 10:00:13 +00:00
Marius Volkhart
36277f9e54 Code cleanup AbstractEscherHolderRecord
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1886623 13f79535-47bb-0310-9956-ffa450edef68
2021-02-17 15:41:22 +00:00
Marius Volkhart
26f3db7e14 Documentation for some EscherRecordTypes
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1886620 13f79535-47bb-0310-9956-ffa450edef68
2021-02-17 15:10:17 +00:00
Marius Volkhart
5d9dcdf3df Add documentation for DrawingGroupRecord
Documentation adapted from [MS-XLS].pdf v20190618.

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1886619 13f79535-47bb-0310-9956-ffa450edef68
2021-02-17 14:48:30 +00:00
Marius Volkhart
7a0cc6e7e5 Fix inconsistent logging statement
The conditions check for max, but the logging was copy/pasted and still uses the minimum.

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1886089 13f79535-47bb-0310-9956-ffa450edef68
2021-02-01 01:02:26 +00:00
Dominik Stadler
a10ca15627 Apply IDE suggestions, add toString(), adjust JavaDoc and simplify code slightly
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1886061 13f79535-47bb-0310-9956-ffa450edef68
2021-01-30 18:42:05 +00:00
Andreas Beeker
54fde895e6 Sonar fixes
add asserts to tests

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1885859 13f79535-47bb-0310-9956-ffa450edef68
2021-01-23 23:04:49 +00:00
PJ Fanning
06ea5add36 [github-215] Improve Performance of OperandResolver#parseDouble. Thanks to Robert Wenzel. This closes #215
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1885651 13f79535-47bb-0310-9956-ffa450edef68
2021-01-18 14:20:02 +00:00
Andreas Beeker
3778a3e9e2 Sonar fixes
constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'
reorder "final static" -> "static final"

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1885613 13f79535-47bb-0310-9956-ffa450edef68
2021-01-17 17:31:22 +00:00
Andreas Beeker
309e657b0d #65046 - Simplify integration tests
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1885538 13f79535-47bb-0310-9956-ffa450edef68
2021-01-15 23:50:42 +00:00
Dominik Stadler
4bc450ef5f Properly close file handles in extractors and when handling password-protected files
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1885229 13f79535-47bb-0310-9956-ffa450edef68
2021-01-07 06:52:57 +00:00
Dominik Stadler
ce701485d8 Improve EmptyFileException when the file actually does not exist at all
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1885227 13f79535-47bb-0310-9956-ffa450edef68
2021-01-07 06:52:46 +00:00
Dominik Stadler
eba33ddb6f Include file-name in EmptyFileException
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1885192 13f79535-47bb-0310-9956-ffa450edef68
2021-01-06 09:10:41 +00:00
Dominik Stadler
7aa6b06085 Try to avoid error "Start point cannot equalendpoint"
Happened when trying to apply a gradient to an empty text,
let's use at least 1 gradient step always to avoid this.

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1885191 13f79535-47bb-0310-9956-ffa450edef68
2021-01-06 09:10:35 +00:00
Dominik Stadler
c1397afbf3 Slightly adjust error message if requested allocations are too big
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1885189 13f79535-47bb-0310-9956-ffa450edef68
2021-01-06 09:10:28 +00:00
Dominik Stadler
b7e9cb48d0 Bug 64132: Fix regression introduced by changing factories
We need to return EscherBlipRecord for all types in the defined range of recordId,
not UnknownEscherRecord.

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1885092 13f79535-47bb-0310-9956-ffa450edef68
2021-01-04 05:51:24 +00:00
Dominik Stadler
8347bb64ac Apply some IDE suggestions and fix some JavaDoc
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1885012 13f79535-47bb-0310-9956-ffa450edef68
2021-01-01 15:51:30 +00:00
Andreas Beeker
91eb4861b7 workaround "Width (0) and height (0) cannot be <= 0" error while rendering text with textures
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1884966 13f79535-47bb-0310-9956-ffa450edef68
2020-12-30 23:13:23 +00:00
Dominik Stadler
b231366fb6 Bug 64986: Support missing or blank match_type for function Match
Excel and LibreOffice use the default value in this case

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1884959 13f79535-47bb-0310-9956-ffa450edef68
2020-12-30 21:40:12 +00:00
Dominik Stadler
de1ad1c44c Adjust some JavaDoc
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1884918 13f79535-47bb-0310-9956-ffa450edef68
2020-12-29 19:29:27 +00:00
Dominik Stadler
a7c1d84c5d Improve the speed of the styles-optimiser when there are many styles in a Workbook
Profiling showed that the call to isUserDefined() took most of the time,
so we now fetch this only once for each style and remember the result and
use it in the inner loop.

The attached sample-file took aprox. 1m30s on a decent machine, now it is down
to around 2s.

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1884917 13f79535-47bb-0310-9956-ffa450edef68
2020-12-29 19:29:22 +00:00
Andreas Beeker
d121353f61 Sonar fixes
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1884807 13f79535-47bb-0310-9956-ffa450edef68
2020-12-26 00:08:19 +00:00
Andreas Beeker
a0fa9e19b1 #65026 - Migrate tests to Junit 5
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1884783 13f79535-47bb-0310-9956-ffa450edef68
2020-12-24 18:42:29 +00:00
PJ Fanning
d20fa44305 [github-198] Remove jdk.charset module dependency for spreadsheets generation. Thanks to Robert Marcano. This closes #198
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1884631 13f79535-47bb-0310-9956-ffa450edef68
2020-12-19 19:45:09 +00:00
PJ Fanning
1e43266c7a avoid string concats
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1884581 13f79535-47bb-0310-9956-ffa450edef68
2020-12-18 00:17:50 +00:00
Andreas Beeker
bfade7c591 #64876 - Unable to convert pptx to pdf
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1884578 13f79535-47bb-0310-9956-ffa450edef68
2020-12-17 23:42:26 +00:00
PJ Fanning
fcc808d17d [github-208] Fix a few instances of incorrect NotImplemented documentation. Thanks to Marius Volkhart. This closes #208
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1884575 13f79535-47bb-0310-9956-ffa450edef68
2020-12-17 22:05:35 +00:00
PJ Fanning
2b14dc36bb avoid string concats
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1884574 13f79535-47bb-0310-9956-ffa450edef68
2020-12-17 21:54:42 +00:00
PJ Fanning
bd1d31e410 avoid string concats
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1884573 13f79535-47bb-0310-9956-ffa450edef68
2020-12-17 21:42:19 +00:00
PJ Fanning
0e0d1d56da avoid string concats
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1884572 13f79535-47bb-0310-9956-ffa450edef68
2020-12-17 21:03:27 +00:00
PJ Fanning
e1b0bc6e1d [github-207] add SLF4JLogger
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1884568 13f79535-47bb-0310-9956-ffa450edef68
2020-12-17 19:59:01 +00:00
Dominik Stadler
71d6bf0306 Do not wrap RuntimeException so we still can handle them directly
This broke the CI when the "JCE Unlimited Strength Jurisdiction Policy files"
are missing, e.g. on some Windows Jenkins nodes.

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1884529 13f79535-47bb-0310-9956-ffa450edef68
2020-12-16 20:55:14 +00:00
PJ Fanning
9c1eb6b18e use less contentious language in code comments
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1884473 13f79535-47bb-0310-9956-ffa450edef68
2020-12-15 23:04:14 +00:00
Andreas Beeker
c5f6dfa68e Bug 56205 - Upgrade OOXML schema to 3rd edition (transitional)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1884368 13f79535-47bb-0310-9956-ffa450edef68
2020-12-12 23:15:20 +00:00
PJ Fanning
e1bb2cca33 [bug-64972] HSSFPictureData#getPictureType() should return 0 for unknown picture type (to be consistent with other implementations)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1884271 13f79535-47bb-0310-9956-ffa450edef68
2020-12-09 21:04:48 +00:00
PJ Fanning
93c8c1540e [bug-64972] HSSFPictureData#getPictureType() should return 0 for unknown picture type (to be consistent with other implementations)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1884270 13f79535-47bb-0310-9956-ffa450edef68
2020-12-09 21:03:15 +00:00
PJ Fanning
ea59cc2bc9 reduce use of deprecated code in XSSFFont
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1884266 13f79535-47bb-0310-9956-ffa450edef68
2020-12-09 18:20:00 +00:00
PJ Fanning
5aef414f2a remove more deprecated code (fix some issues)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1884265 13f79535-47bb-0310-9956-ffa450edef68
2020-12-09 18:12:53 +00:00
PJ Fanning
8d54ec7cc7 remove more deprecated code
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1884263 13f79535-47bb-0310-9956-ffa450edef68
2020-12-09 18:04:56 +00:00
PJ Fanning
78596d7891 remove more deprecated code
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1884262 13f79535-47bb-0310-9956-ffa450edef68
2020-12-09 17:35:29 +00:00