react-native-nitro-xlsx 0.1.4 → 0.2.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/NitroXlsx.podspec +27 -27
- package/Package.swift +35 -10
- package/README.md +220 -58
- package/android/CMakeLists.txt +24 -27
- package/android/cpp-adapter.cpp +12 -0
- package/android/src/main/java/com/margelo/nitro/xlsx/NitroXlsxPackage.kt +9 -0
- package/cpp/HybridNitroXlsx.cpp +25 -179
- package/cpp/HybridNitroXlsx.hpp +2 -2
- package/cpp/HybridXlsxConditionalFormat.cpp +252 -0
- package/cpp/HybridXlsxConditionalFormat.hpp +62 -0
- package/cpp/HybridXlsxConditionalFormats.cpp +46 -0
- package/cpp/HybridXlsxConditionalFormats.hpp +28 -0
- package/cpp/HybridXlsxWorkbook.cpp +159 -196
- package/cpp/HybridXlsxWorkbook.hpp +7 -2
- package/cpp/HybridXlsxWorksheet.cpp +433 -62
- package/cpp/HybridXlsxWorksheet.hpp +73 -26
- package/cpp/XlsxCacheDir.cpp +76 -0
- package/cpp/XlsxCacheDir.hpp +27 -0
- package/cpp/XlsxError.hpp +68 -0
- package/cpp/XlsxJson.cpp +185 -0
- package/cpp/XlsxJson.hpp +36 -0
- package/ios/XlsxCacheDir.mm +60 -0
- package/nitrogen/generated/android/NitroXlsx+autolinking.cmake +2 -0
- package/nitrogen/generated/shared/c++/HybridNitroXlsxSpec.hpp +5 -3
- package/nitrogen/generated/shared/c++/HybridXlsxConditionalFormatSpec.cpp +54 -0
- package/nitrogen/generated/shared/c++/HybridXlsxConditionalFormatSpec.hpp +95 -0
- package/nitrogen/generated/shared/c++/HybridXlsxConditionalFormatsSpec.cpp +24 -0
- package/nitrogen/generated/shared/c++/HybridXlsxConditionalFormatsSpec.hpp +68 -0
- package/nitrogen/generated/shared/c++/HybridXlsxWorkbookSpec.cpp +3 -0
- package/nitrogen/generated/shared/c++/HybridXlsxWorkbookSpec.hpp +6 -1
- package/nitrogen/generated/shared/c++/HybridXlsxWorksheetSpec.cpp +47 -19
- package/nitrogen/generated/shared/c++/HybridXlsxWorksheetSpec.hpp +52 -20
- package/package.json +3 -3
- package/scripts/run-cpp-tests.sh +14 -0
- package/src/__mocks__/react-native-nitro-modules.ts +1 -0
- package/src/__tests__/index.test.ts +76 -7
- package/src/index.ts +107 -18
- package/src/specs/NitroXlsx.nitro.ts +141 -44
- package/thirdparty/OpenXLSX/.clang-format +118 -0
- package/thirdparty/OpenXLSX/.clang-tidy +28 -0
- package/thirdparty/OpenXLSX/.gitignore +130 -0
- package/thirdparty/OpenXLSX/Benchmarks/2024-07-29-benchmarks_before_XMLNode_wrappers +46 -0
- package/thirdparty/OpenXLSX/Benchmarks/2024-07-29-benchmarks_with_XMLNode_wrappers_and_namespace_and_stripping +49 -0
- package/thirdparty/OpenXLSX/Benchmarks/2024-07-29-benchmarks_with_XMLNode_wrappers_and_namespace_char_support +49 -0
- package/thirdparty/OpenXLSX/Benchmarks/2024-07-29-benchmarks_with_XMLNode_wrappers_and_namespace_support +49 -0
- package/thirdparty/OpenXLSX/Benchmarks/2024-07-29-benchmarks_with_XMLNode_wrappers_and_namespaced_name_disabled +49 -0
- package/thirdparty/OpenXLSX/Benchmarks/2024-08-11-benchmarks_post-XLCellIterator-Rework +46 -0
- package/thirdparty/OpenXLSX/Benchmarks/2024-08-14-benchmarks_post-default-row-column-style-support +46 -0
- package/thirdparty/OpenXLSX/Benchmarks/2024-09-02-benchmarks +46 -0
- package/thirdparty/OpenXLSX/Benchmarks/2024-12-19-benchmarks +46 -0
- package/thirdparty/OpenXLSX/Benchmarks/2024-12-30-benchmarks-post-XLSharedStrings-by-ref +46 -0
- package/thirdparty/OpenXLSX/Benchmarks/2025-01-09-benchmarks-post-conditionalFormatsAndSheetProtection +46 -0
- package/thirdparty/OpenXLSX/Benchmarks/2025-01-10-benchmarks-post-XLCellValue-bugfix +46 -0
- package/thirdparty/OpenXLSX/Benchmarks/2025-01-31-benchmarks-post-XLComments-implementation +46 -0
- package/thirdparty/OpenXLSX/Benchmarks/2025-02-02-benchmarks-post-XLRowIterator-Rework +46 -0
- package/thirdparty/OpenXLSX/Benchmarks/2025-07-20-benchmarks-after-hiding-pugixml-internals +46 -0
- package/thirdparty/OpenXLSX/Benchmarks/2025-08-29-benchmarks-after-code-review-with-libzip +46 -0
- package/thirdparty/OpenXLSX/Benchmarks/Benchmark.cpp +249 -0
- package/thirdparty/OpenXLSX/Benchmarks/CMakeLists.txt +19 -0
- package/thirdparty/OpenXLSX/CMakeLists.txt +466 -0
- package/thirdparty/OpenXLSX/Documentation/CMakeLists.txt +31 -0
- package/thirdparty/OpenXLSX/Documentation/Doxyfile.in +2471 -0
- package/thirdparty/OpenXLSX/Documentation/DoxygenLayout.xml +194 -0
- package/thirdparty/OpenXLSX/Documentation/customdoxygen.css +1355 -0
- package/thirdparty/OpenXLSX/Examples/CMakeLists.txt +103 -0
- package/thirdparty/OpenXLSX/Examples/Demo1.cpp +279 -0
- package/thirdparty/OpenXLSX/Examples/Demo10.cpp +545 -0
- package/thirdparty/OpenXLSX/Examples/Demo1A.cpp +137 -0
- package/thirdparty/OpenXLSX/Examples/Demo2.cpp +65 -0
- package/thirdparty/OpenXLSX/Examples/Demo3.cpp +89 -0
- package/thirdparty/OpenXLSX/Examples/Demo4.cpp +86 -0
- package/thirdparty/OpenXLSX/Examples/Demo5.cpp +77 -0
- package/thirdparty/OpenXLSX/Examples/Demo6.cpp +103 -0
- package/thirdparty/OpenXLSX/Examples/Demo7.cpp +79 -0
- package/thirdparty/OpenXLSX/Examples/Demo8.cpp +117 -0
- package/thirdparty/OpenXLSX/Examples/Demo9.cpp +363 -0
- package/thirdparty/OpenXLSX/Examples/cmake/FindLIBZIP.cmake +61 -0
- package/thirdparty/OpenXLSX/Examples/external/CustomZip/CustomZip.hpp +256 -0
- package/thirdparty/OpenXLSX/LICENSE.md +29 -0
- package/thirdparty/OpenXLSX/Makefile.GNU +530 -0
- package/thirdparty/OpenXLSX/Notes/TBDs.txt +16 -0
- package/thirdparty/OpenXLSX/Notes/confirmed-TBCs.txt +8 -0
- package/thirdparty/OpenXLSX/Notes/styles-missing-support.xml +12 -0
- package/thirdparty/OpenXLSX/Notes/todo-list.txt +108 -0
- package/thirdparty/OpenXLSX/OpenXLSX/CMakeLists.txt +631 -0
- package/thirdparty/OpenXLSX/OpenXLSX/OpenXLSX.hpp +63 -0
- package/thirdparty/OpenXLSX/OpenXLSX/OpenXLSXConfig.cmake +11 -0
- package/thirdparty/OpenXLSX/OpenXLSX/cmake/bundle_static_library.cmake +198 -0
- package/thirdparty/OpenXLSX/OpenXLSX/cmake/patch_pkg_config.cmake +69 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/IZipArchive.hpp +361 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX-Exports.hpp +12 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLCell.hpp +367 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLCellIterator.hpp +252 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLCellRange.hpp +223 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLCellReference.hpp +317 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLCellValue.hpp +793 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLColor.hpp +232 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLColumn.hpp +159 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLCommandQuery.hpp +228 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLComments.hpp +270 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLConstants.hpp +18 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLContentTypes.hpp +264 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLDateTime.hpp +175 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLDocument.hpp +505 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLDrawing.hpp +452 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLException.hpp +161 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLFormula.hpp +375 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLIterator.hpp +40 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLMergeCells.hpp +216 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLProperties.hpp +348 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLRelationships.hpp +348 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLRow.hpp +721 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLRowData.hpp +488 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLSharedStrings.hpp +204 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLSheet.hpp +1640 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLStyles.hpp +2390 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLTables.hpp +132 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLWorkbook.hpp +404 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLXmlData.hpp +283 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLXmlFile.hpp +194 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLXmlParser.hpp +282 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLXmlParserForwardDeclarations.hpp +85 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLZipArchive.hpp +232 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/detail/LibZip.hpp +447 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/detail/OpenXLSXFileSystemTools.hpp +207 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/detail/Zippy.hpp +1375 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLCell.cpp +340 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLCellIterator.cpp +427 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLCellRange.cpp +221 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLCellReference.cpp +408 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLCellValue.cpp +519 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLColor.cpp +202 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLColumn.cpp +141 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLComments.cpp +637 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLContentTypes.cpp +329 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLDateTime.cpp +269 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLDocument.cpp +1678 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLDrawing.cpp +784 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLFormula.cpp +201 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLMergeCells.cpp +357 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLProperties.cpp +810 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLRelationships.cpp +529 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLRow.cpp +918 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLRowData.cpp +508 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLSharedStrings.cpp +220 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLSheet.cpp +1970 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLStyles.cpp +3014 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLTables.cpp +125 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLWorkbook.cpp +784 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLXmlData.cpp +247 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLXmlFile.cpp +160 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLXmlParser.cpp +261 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLZipArchive.cpp +266 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/utilities/XLUtilities.hpp +478 -0
- package/thirdparty/OpenXLSX/README.md +1279 -0
- package/thirdparty/OpenXLSX/Scripts/cmake-cleanup.sh +102 -0
- package/thirdparty/OpenXLSX/Scripts/compile.sh +23 -0
- package/thirdparty/OpenXLSX/Scripts/demos-cleanup.sh +25 -0
- package/thirdparty/OpenXLSX/Scripts/demos-run-all.sh +60 -0
- package/thirdparty/OpenXLSX/Scripts/guarded-xml-format.sh +47 -0
- package/thirdparty/OpenXLSX/Scripts/make-gnu.sh +11 -0
- package/thirdparty/OpenXLSX/Scripts/uninstall-manifest.sh +48 -0
- package/thirdparty/OpenXLSX/Scripts/xml-format-all.sh +19 -0
- package/thirdparty/OpenXLSX/Scripts/xml-format.sh +38 -0
- package/thirdparty/OpenXLSX/Tests/CMakeLists.txt +37 -0
- package/thirdparty/OpenXLSX/Tests/catch/catch.hpp +17799 -0
- package/thirdparty/OpenXLSX/Tests/catch/catch_reporter_automake.hpp +68 -0
- package/thirdparty/OpenXLSX/Tests/catch/catch_reporter_sonarqube.hpp +182 -0
- package/thirdparty/OpenXLSX/Tests/catch/catch_reporter_tap.hpp +278 -0
- package/thirdparty/OpenXLSX/Tests/catch/catch_reporter_teamcity.hpp +212 -0
- package/thirdparty/OpenXLSX/Tests/main.cpp +55 -0
- package/thirdparty/OpenXLSX/Tests/testXLCell.cpp +176 -0
- package/thirdparty/OpenXLSX/Tests/testXLCellRange.cpp +180 -0
- package/thirdparty/OpenXLSX/Tests/testXLCellReference.cpp +160 -0
- package/thirdparty/OpenXLSX/Tests/testXLCellValue.cpp +366 -0
- package/thirdparty/OpenXLSX/Tests/testXLCellValueProxy.cpp +255 -0
- package/thirdparty/OpenXLSX/Tests/testXLColor.cpp +75 -0
- package/thirdparty/OpenXLSX/Tests/testXLDateTime.cpp +229 -0
- package/thirdparty/OpenXLSX/Tests/testXLDocument.cpp +197 -0
- package/thirdparty/OpenXLSX/Tests/testXLFormula.cpp +131 -0
- package/thirdparty/OpenXLSX/Tests/testXLRow.cpp +597 -0
- package/thirdparty/OpenXLSX/Tests/testXLSheet.cpp +77 -0
- package/thirdparty/OpenXLSX/Tests/ziptest-with-libs.cpp +88 -0
- package/thirdparty/OpenXLSX/Tests/ziptest.cpp +735 -0
- package/thirdparty/OpenXLSX/cmake/get-git-HEAD-ID.cmake +45 -0
- package/thirdparty/OpenXLSX/cmake/libopenxlsxCPackOptions.cmake.in +20 -0
- package/thirdparty/OpenXLSX/cmake/manage_dependency.cmake +813 -0
- package/thirdparty/OpenXLSX/cmake/recursive_library_type_test.cmake +52 -0
- package/thirdparty/OpenXLSX/gnu-make-crutch/OpenXLSX-Exports-shared.hpp +42 -0
- package/thirdparty/OpenXLSX/gnu-make-crutch/OpenXLSX-Exports-static.hpp +42 -0
- package/thirdparty/OpenXLSX/vcpkg.json +24 -0
- package/thirdparty/README.md +42 -0
- package/thirdparty/miniz/.clang-format +47 -0
- package/thirdparty/miniz/.travis.yml +2 -0
- package/thirdparty/miniz/CMakeLists.txt +333 -0
- package/thirdparty/miniz/CMakePresets.json +31 -0
- package/thirdparty/miniz/ChangeLog.md +272 -0
- package/thirdparty/miniz/Config.cmake.in +1 -0
- package/thirdparty/miniz/LICENSE +22 -0
- package/thirdparty/miniz/amalgamate.sh +57 -0
- package/thirdparty/miniz/examples/example1.c +105 -0
- package/thirdparty/miniz/examples/example2.c +164 -0
- package/thirdparty/miniz/examples/example3.c +269 -0
- package/thirdparty/miniz/examples/example4.c +102 -0
- package/thirdparty/miniz/examples/example5.c +327 -0
- package/thirdparty/miniz/examples/example6.c +189 -0
- package/thirdparty/miniz/meson.build +21 -0
- package/thirdparty/miniz/miniz.c +646 -0
- package/thirdparty/miniz/miniz.h +615 -0
- package/thirdparty/miniz/miniz.pc.in +13 -0
- package/thirdparty/miniz/miniz_common.h +89 -0
- package/thirdparty/miniz/miniz_export.h +20 -0
- package/thirdparty/miniz/miniz_tdef.c +1602 -0
- package/thirdparty/miniz/miniz_tdef.h +199 -0
- package/thirdparty/miniz/miniz_tinfl.c +778 -0
- package/thirdparty/miniz/miniz_tinfl.h +150 -0
- package/thirdparty/miniz/miniz_zip.c +4895 -0
- package/thirdparty/miniz/miniz_zip.h +454 -0
- package/thirdparty/miniz/readme.md +46 -0
- package/thirdparty/miniz/test.sh +36 -0
- package/thirdparty/miniz/tests/add_in_place_fuzzer.c +87 -0
- package/thirdparty/miniz/tests/catch_amalgamated.cpp +10795 -0
- package/thirdparty/miniz/tests/catch_amalgamated.hpp +13143 -0
- package/thirdparty/miniz/tests/checksum_fuzzer.c +26 -0
- package/thirdparty/miniz/tests/compress_fuzzer.c +91 -0
- package/thirdparty/miniz/tests/flush_fuzzer.c +88 -0
- package/thirdparty/miniz/tests/fuzz_main.c +55 -0
- package/thirdparty/miniz/tests/large_fuzzer.c +133 -0
- package/thirdparty/miniz/tests/main.cpp +185 -0
- package/thirdparty/miniz/tests/miniz_tdefl_fuzzer.cc +115 -0
- package/thirdparty/miniz/tests/miniz_tester.cpp +1881 -0
- package/thirdparty/miniz/tests/miniz_zip_validate_fuzzer.cc +71 -0
- package/thirdparty/miniz/tests/miniz_zip_writer_fuzzer.cc +96 -0
- package/thirdparty/miniz/tests/ossfuzz.sh +48 -0
- package/thirdparty/miniz/tests/small_fuzzer.c +126 -0
- package/thirdparty/miniz/tests/timer.cpp +152 -0
- package/thirdparty/miniz/tests/timer.h +40 -0
- package/thirdparty/miniz/tests/uncompress2_fuzzer.c +21 -0
- package/thirdparty/miniz/tests/uncompress_fuzzer.c +30 -0
- package/thirdparty/miniz/tests/zip.dict +9 -0
- package/thirdparty/miniz/tests/zip_fuzzer.c +63 -0
- package/thirdparty/pugixml/.codecov.yml +7 -0
- package/thirdparty/pugixml/.gitattributes +1 -0
- package/thirdparty/pugixml/CMakeLists.txt +330 -0
- package/thirdparty/pugixml/LICENSE.md +24 -0
- package/thirdparty/pugixml/Makefile +98 -0
- package/thirdparty/pugixml/README.md +81 -0
- package/thirdparty/pugixml/SECURITY.md +9 -0
- package/thirdparty/pugixml/appveyor.yml +50 -0
- package/thirdparty/pugixml/docs/config.adoc +7 -0
- package/thirdparty/pugixml/docs/images/dom_tree.png +0 -0
- package/thirdparty/pugixml/docs/images/vs2005_link1.png +0 -0
- package/thirdparty/pugixml/docs/images/vs2005_link2.png +0 -0
- package/thirdparty/pugixml/docs/images/vs2005_pch1.png +0 -0
- package/thirdparty/pugixml/docs/images/vs2005_pch2.png +0 -0
- package/thirdparty/pugixml/docs/images/vs2005_pch3.png +0 -0
- package/thirdparty/pugixml/docs/images/vs2005_pch4.png +0 -0
- package/thirdparty/pugixml/docs/images/vs2010_link1.png +0 -0
- package/thirdparty/pugixml/docs/images/vs2010_link2.png +0 -0
- package/thirdparty/pugixml/docs/manual.adoc +3326 -0
- package/thirdparty/pugixml/docs/manual.html +6395 -0
- package/thirdparty/pugixml/docs/quickstart.adoc +287 -0
- package/thirdparty/pugixml/docs/quickstart.html +1107 -0
- package/thirdparty/pugixml/docs/samples/character.xml +8 -0
- package/thirdparty/pugixml/docs/samples/custom_memory_management.cpp +27 -0
- package/thirdparty/pugixml/docs/samples/include.cpp +64 -0
- package/thirdparty/pugixml/docs/samples/load_error_handling.cpp +33 -0
- package/thirdparty/pugixml/docs/samples/load_file.cpp +16 -0
- package/thirdparty/pugixml/docs/samples/load_memory.cpp +66 -0
- package/thirdparty/pugixml/docs/samples/load_options.cpp +30 -0
- package/thirdparty/pugixml/docs/samples/load_stream.cpp +97 -0
- package/thirdparty/pugixml/docs/samples/modify_add.cpp +29 -0
- package/thirdparty/pugixml/docs/samples/modify_base.cpp +43 -0
- package/thirdparty/pugixml/docs/samples/modify_remove.cpp +27 -0
- package/thirdparty/pugixml/docs/samples/save_custom_writer.cpp +116 -0
- package/thirdparty/pugixml/docs/samples/save_declaration.cpp +27 -0
- package/thirdparty/pugixml/docs/samples/save_file.cpp +17 -0
- package/thirdparty/pugixml/docs/samples/save_options.cpp +48 -0
- package/thirdparty/pugixml/docs/samples/save_stream.cpp +18 -0
- package/thirdparty/pugixml/docs/samples/save_subtree.cpp +26 -0
- package/thirdparty/pugixml/docs/samples/text.cpp +35 -0
- package/thirdparty/pugixml/docs/samples/transitions.xml +7 -0
- package/thirdparty/pugixml/docs/samples/traverse_base.cpp +51 -0
- package/thirdparty/pugixml/docs/samples/traverse_iter.cpp +27 -0
- package/thirdparty/pugixml/docs/samples/traverse_predicate.cpp +48 -0
- package/thirdparty/pugixml/docs/samples/traverse_rangefor.cpp +32 -0
- package/thirdparty/pugixml/docs/samples/traverse_walker.cpp +35 -0
- package/thirdparty/pugixml/docs/samples/tree.xml +12 -0
- package/thirdparty/pugixml/docs/samples/weekly-shift_jis.xml +78 -0
- package/thirdparty/pugixml/docs/samples/weekly-utf-16.xml +0 -0
- package/thirdparty/pugixml/docs/samples/weekly-utf-8.xml +78 -0
- package/thirdparty/pugixml/docs/samples/xgconsole.xml +12 -0
- package/thirdparty/pugixml/docs/samples/xpath_error.cpp +43 -0
- package/thirdparty/pugixml/docs/samples/xpath_query.cpp +36 -0
- package/thirdparty/pugixml/docs/samples/xpath_select.cpp +28 -0
- package/thirdparty/pugixml/docs/samples/xpath_variables.cpp +38 -0
- package/thirdparty/pugixml/readme.txt +50 -0
- package/thirdparty/pugixml/scripts/archive.py +54 -0
- package/thirdparty/pugixml/scripts/cocoapods_push.sh +4 -0
- package/thirdparty/pugixml/scripts/natvis/pugixml.natvis +77 -0
- package/thirdparty/pugixml/scripts/natvis/pugixml_compact.natvis +506 -0
- package/thirdparty/pugixml/scripts/nuget/build/native/pugixml-propertiesui.xml +17 -0
- package/thirdparty/pugixml/scripts/nuget/build/native/pugixml.targets +28 -0
- package/thirdparty/pugixml/scripts/nuget/pugixml.nuspec +20 -0
- package/thirdparty/pugixml/scripts/nuget_build.ps1 +60 -0
- package/thirdparty/pugixml/scripts/premake4.lua +92 -0
- package/thirdparty/pugixml/scripts/pugixml-config.cmake.in +12 -0
- package/thirdparty/pugixml/scripts/pugixml.pc.in +11 -0
- package/thirdparty/pugixml/scripts/pugixml.podspec +14 -0
- package/thirdparty/pugixml/scripts/pugixml.xcodeproj/project.pbxproj +212 -0
- package/thirdparty/pugixml/scripts/pugixml_airplay.mkf +13 -0
- package/thirdparty/pugixml/scripts/pugixml_codeblocks.cbp +44 -0
- package/thirdparty/pugixml/scripts/pugixml_codelite.project +56 -0
- package/thirdparty/pugixml/scripts/pugixml_dll.rc +45 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2005.vcproj +343 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2005_static.vcproj +343 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2008.vcproj +339 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2008_static.vcproj +339 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2010.vcxproj +191 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2010_static.vcxproj +191 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2013.vcxproj +199 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2013_static.vcxproj +199 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2015.vcxproj +172 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2015_static.vcxproj +176 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2017.vcxproj +172 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2017_static.vcxproj +176 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2019.vcxproj +176 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2019_static.vcxproj +180 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2022.vcxproj +176 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2022_static.vcxproj +180 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2026.vcxproj +176 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2026_static.vcxproj +180 -0
- package/thirdparty/pugixml/scripts/sbom.cdx.json +47 -0
- package/thirdparty/pugixml/src/pugiconfig.hpp +81 -0
- package/thirdparty/pugixml/src/pugixml.cpp +13776 -0
- package/thirdparty/pugixml/src/pugixml.hpp +1604 -0
- package/thirdparty/pugixml/tests/allocator.cpp +175 -0
- package/thirdparty/pugixml/tests/allocator.hpp +10 -0
- package/thirdparty/pugixml/tests/autotest-appveyor.ps1 +93 -0
- package/thirdparty/pugixml/tests/cmake-appveyor.ps1 +57 -0
- package/thirdparty/pugixml/tests/data/empty.xml +0 -0
- package/thirdparty/pugixml/tests/data/large.xml +1 -0
- package/thirdparty/pugixml/tests/data/latintest_latin1.xml +1 -0
- package/thirdparty/pugixml/tests/data/latintest_utf8.xml +1 -0
- package/thirdparty/pugixml/tests/data/multiline.xml +3 -0
- package/thirdparty/pugixml/tests/data/small.xml +1 -0
- package/thirdparty/pugixml/tests/data/truncation.xml +19 -0
- package/thirdparty/pugixml/tests/data/utftest_utf16_be.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf16_be_bom.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf16_be_clean.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf16_be_nodecl.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf16_le.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf16_le_bom.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf16_le_clean.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf16_le_nodecl.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf32_be.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf32_be_bom.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf32_be_clean.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf32_be_nodecl.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf32_le.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf32_le_bom.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf32_le_clean.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf32_le_nodecl.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf8.xml +87 -0
- package/thirdparty/pugixml/tests/data/utftest_utf8_bom.xml +87 -0
- package/thirdparty/pugixml/tests/data/utftest_utf8_clean.xml +84 -0
- package/thirdparty/pugixml/tests/data/utftest_utf8_nodecl.xml +86 -0
- package/thirdparty/pugixml/tests/data//321/202/320/265/321/201/321/202.xml +1 -0
- package/thirdparty/pugixml/tests/data_fuzz_parse/basic.xml +1 -0
- package/thirdparty/pugixml/tests/data_fuzz_parse/doctype.xml +1 -0
- package/thirdparty/pugixml/tests/data_fuzz_parse/refs.xml +1 -0
- package/thirdparty/pugixml/tests/data_fuzz_parse/types.xml +1 -0
- package/thirdparty/pugixml/tests/data_fuzz_parse/utf16.xml +0 -0
- package/thirdparty/pugixml/tests/data_fuzz_parse/utf32.xml +0 -0
- package/thirdparty/pugixml/tests/data_fuzz_xpath/basic.xpath +1 -0
- package/thirdparty/pugixml/tests/data_fuzz_xpath/functions.xpath +1 -0
- package/thirdparty/pugixml/tests/data_fuzz_xpath/math.xpath +1 -0
- package/thirdparty/pugixml/tests/data_fuzz_xpath/path.xpath +1 -0
- package/thirdparty/pugixml/tests/data_fuzz_xpath/predicate.xpath +1 -0
- package/thirdparty/pugixml/tests/fuzz_parse.cpp +14 -0
- package/thirdparty/pugixml/tests/fuzz_parse.dict +72 -0
- package/thirdparty/pugixml/tests/fuzz_setup.sh +11 -0
- package/thirdparty/pugixml/tests/fuzz_xpath.cpp +46 -0
- package/thirdparty/pugixml/tests/fuzz_xpath.dict +72 -0
- package/thirdparty/pugixml/tests/helpers.hpp +114 -0
- package/thirdparty/pugixml/tests/main.cpp +218 -0
- package/thirdparty/pugixml/tests/test.cpp +220 -0
- package/thirdparty/pugixml/tests/test.hpp +175 -0
- package/thirdparty/pugixml/tests/test_compact.cpp +150 -0
- package/thirdparty/pugixml/tests/test_deprecated.cpp +25 -0
- package/thirdparty/pugixml/tests/test_document.cpp +1910 -0
- package/thirdparty/pugixml/tests/test_dom_modify.cpp +2122 -0
- package/thirdparty/pugixml/tests/test_dom_text.cpp +601 -0
- package/thirdparty/pugixml/tests/test_dom_traverse.cpp +1481 -0
- package/thirdparty/pugixml/tests/test_header_guard.cpp +3 -0
- package/thirdparty/pugixml/tests/test_header_iosfwd_1.cpp +3 -0
- package/thirdparty/pugixml/tests/test_header_iosfwd_2.cpp +3 -0
- package/thirdparty/pugixml/tests/test_header_iostream_1.cpp +3 -0
- package/thirdparty/pugixml/tests/test_header_iostream_2.cpp +3 -0
- package/thirdparty/pugixml/tests/test_header_only_1.cpp +21 -0
- package/thirdparty/pugixml/tests/test_header_only_2.cpp +21 -0
- package/thirdparty/pugixml/tests/test_header_string_1.cpp +3 -0
- package/thirdparty/pugixml/tests/test_header_string_2.cpp +3 -0
- package/thirdparty/pugixml/tests/test_header_string_iostream.cpp +5 -0
- package/thirdparty/pugixml/tests/test_memory.cpp +303 -0
- package/thirdparty/pugixml/tests/test_parse.cpp +1463 -0
- package/thirdparty/pugixml/tests/test_parse_doctype.cpp +366 -0
- package/thirdparty/pugixml/tests/test_unicode.cpp +152 -0
- package/thirdparty/pugixml/tests/test_version.cpp +5 -0
- package/thirdparty/pugixml/tests/test_write.cpp +757 -0
- package/thirdparty/pugixml/tests/test_xpath.cpp +833 -0
- package/thirdparty/pugixml/tests/test_xpath_api.cpp +646 -0
- package/thirdparty/pugixml/tests/test_xpath_functions.cpp +844 -0
- package/thirdparty/pugixml/tests/test_xpath_operators.cpp +566 -0
- package/thirdparty/pugixml/tests/test_xpath_parse.cpp +428 -0
- package/thirdparty/pugixml/tests/test_xpath_paths.cpp +787 -0
- package/thirdparty/pugixml/tests/test_xpath_paths_abbrev_w3c.cpp +219 -0
- package/thirdparty/pugixml/tests/test_xpath_paths_w3c.cpp +312 -0
- package/thirdparty/pugixml/tests/test_xpath_variables.cpp +683 -0
- package/thirdparty/pugixml/tests/test_xpath_xalan_1.cpp +411 -0
- package/thirdparty/pugixml/tests/test_xpath_xalan_2.cpp +417 -0
- package/thirdparty/pugixml/tests/test_xpath_xalan_3.cpp +321 -0
- package/thirdparty/pugixml/tests/test_xpath_xalan_4.cpp +300 -0
- package/thirdparty/pugixml/tests/test_xpath_xalan_5.cpp +295 -0
- package/thirdparty/pugixml/tests/writer_string.cpp +79 -0
- package/thirdparty/pugixml/tests/writer_string.hpp +27 -0
- package/ios/dummy.swift +0 -2
- package/scripts/prepare-openxlsx.js +0 -109
|
@@ -0,0 +1,452 @@
|
|
|
1
|
+
/*
|
|
2
|
+
|
|
3
|
+
____ ____ ___ ____ ____ ____ ___
|
|
4
|
+
6MMMMb `MM( )M' `MM' 6MMMMb\`MM( )M'
|
|
5
|
+
8P Y8 `MM. d' MM 6M' ` `MM. d'
|
|
6
|
+
6M Mb __ ____ ____ ___ __ `MM. d' MM MM `MM. d'
|
|
7
|
+
MM MM `M6MMMMb 6MMMMb `MM 6MMb `MM. d' MM YM. `MM. d'
|
|
8
|
+
MM MM MM' `Mb 6M' `Mb MMM9 `Mb `MMd MM YMMMMb `MMd
|
|
9
|
+
MM MM MM MM MM MM MM' MM dMM. MM `Mb dMM.
|
|
10
|
+
MM MM MM MM MMMMMMMM MM MM d'`MM. MM MM d'`MM.
|
|
11
|
+
YM M9 MM MM MM MM MM d' `MM. MM MM d' `MM.
|
|
12
|
+
8b d8 MM. ,M9 YM d9 MM MM d' `MM. MM / L ,M9 d' `MM.
|
|
13
|
+
YMMMM9 MMYMMM9 YMMMM9 _MM_ _MM_M(_ _)MM_ _MMMMMMM MYMMMM9 _M(_ _)MM_
|
|
14
|
+
MM
|
|
15
|
+
MM
|
|
16
|
+
_MM_
|
|
17
|
+
|
|
18
|
+
Copyright (c) 2018, Kenneth Troldal Balslev
|
|
19
|
+
|
|
20
|
+
All rights reserved.
|
|
21
|
+
|
|
22
|
+
Redistribution and use in source and binary forms, with or without
|
|
23
|
+
modification, are permitted provided that the following conditions are met:
|
|
24
|
+
- Redistributions of source code must retain the above copyright
|
|
25
|
+
notice, this list of conditions and the following disclaimer.
|
|
26
|
+
- Redistributions in binary form must reproduce the above copyright
|
|
27
|
+
notice, this list of conditions and the following disclaimer in the
|
|
28
|
+
documentation and/or other materials provided with the distribution.
|
|
29
|
+
- Neither the name of the author nor the
|
|
30
|
+
names of any contributors may be used to endorse or promote products
|
|
31
|
+
derived from this software without specific prior written permission.
|
|
32
|
+
|
|
33
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
|
34
|
+
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
35
|
+
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
36
|
+
DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
|
|
37
|
+
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
38
|
+
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
39
|
+
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
|
40
|
+
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
41
|
+
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
42
|
+
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
43
|
+
|
|
44
|
+
*/
|
|
45
|
+
|
|
46
|
+
#ifndef OPENXLSX_XLDRAWING_HPP
|
|
47
|
+
#define OPENXLSX_XLDRAWING_HPP
|
|
48
|
+
|
|
49
|
+
// ===== External Includes ===== //
|
|
50
|
+
#include <cstdint> // uint8_t, uint16_t, uint32_t
|
|
51
|
+
#include <ostream> // std::basic_ostream
|
|
52
|
+
|
|
53
|
+
// ===== OpenXLSX Includes ===== //
|
|
54
|
+
#include "OpenXLSX-Exports.hpp"
|
|
55
|
+
// #include "XLDocument.hpp"
|
|
56
|
+
#include "XLException.hpp"
|
|
57
|
+
#include "XLXmlData.hpp"
|
|
58
|
+
#include "XLXmlFile.hpp"
|
|
59
|
+
#include "XLXmlParserForwardDeclarations.hpp"
|
|
60
|
+
|
|
61
|
+
namespace OpenXLSX
|
|
62
|
+
{
|
|
63
|
+
// <v:fill o:detectmouseclick="t" type="solid" color2="#00003f"/>
|
|
64
|
+
// <v:shadow on="t" obscured="t" color="black"/>
|
|
65
|
+
// <v:stroke color="#3465a4" startarrow="block" startarrowwidth="medium" startarrowlength="medium" joinstyle="round" endcap="flat"/>
|
|
66
|
+
// <v:path o:connecttype="none"/>
|
|
67
|
+
// <v:textbox style="mso-direction-alt:auto;mso-fit-shape-to-text:t;">
|
|
68
|
+
// <div style="text-align:left;"/>
|
|
69
|
+
// </v:textbox>
|
|
70
|
+
|
|
71
|
+
extern const std::string ShapeNodeName; // = "v:shape"
|
|
72
|
+
extern const std::string ShapeTypeNodeName; // = "v:shapetype"
|
|
73
|
+
|
|
74
|
+
// NOTE: numerical values of XLShapeTextVAlign and XLShapeTextHAlign are shared with the same alignments from XLAlignmentStyle (XLStyles.hpp)
|
|
75
|
+
enum class XLShapeTextVAlign : uint8_t {
|
|
76
|
+
Center = 3, // value="center", both
|
|
77
|
+
Top = 4, // value="top", vertical only
|
|
78
|
+
Bottom = 5, // value="bottom", vertical only
|
|
79
|
+
Invalid = 255 // all other values
|
|
80
|
+
};
|
|
81
|
+
constexpr const XLShapeTextVAlign XLDefaultShapeTextVAlign = XLShapeTextVAlign::Top;
|
|
82
|
+
|
|
83
|
+
enum class XLShapeTextHAlign : uint8_t {
|
|
84
|
+
Left = 1, // value="left", horizontal only
|
|
85
|
+
Right = 2, // value="right", horizontal only
|
|
86
|
+
Center = 3, // value="center", both
|
|
87
|
+
Invalid = 255 // all other values
|
|
88
|
+
};
|
|
89
|
+
constexpr const XLShapeTextHAlign XLDefaultShapeTextHAlign = XLShapeTextHAlign::Left;
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* @brief An encapsulation of a shape client data element x:ClientData
|
|
94
|
+
*/
|
|
95
|
+
class OPENXLSX_EXPORT XLShapeClientData
|
|
96
|
+
{
|
|
97
|
+
public: // ---------- Public Member Functions ---------- //
|
|
98
|
+
/**
|
|
99
|
+
* @brief
|
|
100
|
+
*/
|
|
101
|
+
XLShapeClientData();
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* @brief Constructor. New items should only be created through an XLShape object.
|
|
105
|
+
* @param node An XMLNode object with the x:ClientData XMLNode. If no input is provided, a null node is used.
|
|
106
|
+
*/
|
|
107
|
+
explicit XLShapeClientData(const XMLNode& node);
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* @brief Copy Constructor.
|
|
111
|
+
* @param other Object to be copied.
|
|
112
|
+
*/
|
|
113
|
+
XLShapeClientData(const XLShapeClientData& other);
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* @brief Move Constructor.
|
|
117
|
+
* @param other Object to be moved.
|
|
118
|
+
*/
|
|
119
|
+
XLShapeClientData(XLShapeClientData&& other) noexcept;
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* @brief
|
|
123
|
+
*/
|
|
124
|
+
~XLShapeClientData();
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* @brief Copy assignment operator.
|
|
128
|
+
* @param other Right hand side of assignment operation.
|
|
129
|
+
* @return A reference to the lhs object.
|
|
130
|
+
*/
|
|
131
|
+
XLShapeClientData& operator=(const XLShapeClientData& other);
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* @brief Move assignment operator.
|
|
135
|
+
* @param other Right hand side of assignment operation.
|
|
136
|
+
* @return A reference to lhs object.
|
|
137
|
+
*/
|
|
138
|
+
XLShapeClientData& operator=(XLShapeClientData&& other) noexcept;
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* @brief Getter functions
|
|
142
|
+
*/
|
|
143
|
+
std::string objectType() const; // attribute ObjectType, value "Note"
|
|
144
|
+
bool moveWithCells() const; // element x:MoveWithCells - true = present or lowercase node_pcdata "true", false = not present or lowercase node_pcdata "false"
|
|
145
|
+
bool sizeWithCells() const; // element x:SizeWithCells - logic as in MoveWithCells
|
|
146
|
+
std::string anchor() const; // element x:Anchor - Example node_pcdata: "3, 23, 0, 0, 4, 25, 3, 5" - no idea what any number means - TBD
|
|
147
|
+
bool autoFill() const; // element x:AutoFill - logic as in MoveWithCells
|
|
148
|
+
XLShapeTextVAlign textVAlign() const; // element x:TextVAlign - Top, ???
|
|
149
|
+
XLShapeTextHAlign textHAlign() const; // element x:TextHAlign - Left, ???
|
|
150
|
+
uint32_t row() const; // element x:Row, 0-indexed row of cell to which this shape is linked
|
|
151
|
+
uint16_t column() const; // element x:Column, 0-indexed column of cell to which this shape is linked
|
|
152
|
+
|
|
153
|
+
/**
|
|
154
|
+
* @brief Setter functions
|
|
155
|
+
*/
|
|
156
|
+
bool setObjectType(std::string newObjectType);
|
|
157
|
+
bool setMoveWithCells(bool set = true);
|
|
158
|
+
bool setSizeWithCells(bool set = true);
|
|
159
|
+
bool setAnchor(std::string newAnchor);
|
|
160
|
+
bool setAutoFill(bool set = true);
|
|
161
|
+
bool setTextVAlign(XLShapeTextVAlign newTextVAlign);
|
|
162
|
+
bool setTextHAlign(XLShapeTextHAlign newTextHAlign);
|
|
163
|
+
bool setRow(uint32_t newRow);
|
|
164
|
+
bool setColumn(uint16_t newColumn);
|
|
165
|
+
|
|
166
|
+
// /**
|
|
167
|
+
// * @brief Return a string summary of the x:ClientData properties
|
|
168
|
+
// * @return string with info about the x:ClientData object
|
|
169
|
+
// */
|
|
170
|
+
// std::string summary() const;
|
|
171
|
+
|
|
172
|
+
private: // ---------- Private Member Variables ---------- //
|
|
173
|
+
std::unique_ptr<XMLNode> m_clientDataNode; /**< An XMLNode object with the x:ClientData item */
|
|
174
|
+
inline static const std::vector< std::string_view > m_nodeOrder = {
|
|
175
|
+
"x:MoveWithCells",
|
|
176
|
+
"x:SizeWithCells",
|
|
177
|
+
"x:Anchor",
|
|
178
|
+
"x:AutoFill",
|
|
179
|
+
"x:TextVAlign",
|
|
180
|
+
"x:TextHAlign",
|
|
181
|
+
"x:Row",
|
|
182
|
+
"x:Column"
|
|
183
|
+
};
|
|
184
|
+
};
|
|
185
|
+
|
|
186
|
+
|
|
187
|
+
struct XLShapeStyleAttribute {
|
|
188
|
+
std::string name;
|
|
189
|
+
std::string value;
|
|
190
|
+
};
|
|
191
|
+
|
|
192
|
+
class OPENXLSX_EXPORT XLShapeStyle {
|
|
193
|
+
public:
|
|
194
|
+
/**
|
|
195
|
+
* @brief
|
|
196
|
+
*/
|
|
197
|
+
XLShapeStyle();
|
|
198
|
+
|
|
199
|
+
/**
|
|
200
|
+
* @brief Constructor. Init XLShapeStyle properties from styleAttribute
|
|
201
|
+
* @param styleAttribute a string with the value of the style attribute of a v:shape element
|
|
202
|
+
*/
|
|
203
|
+
explicit XLShapeStyle(const std::string& styleAttribute);
|
|
204
|
+
|
|
205
|
+
/**
|
|
206
|
+
* @brief Constructor. Init XLShapeStyle properties from styleAttribute and link to the attribute so that setter functions directly modify it
|
|
207
|
+
* @param styleAttribute an XMLAttribute constructed with the style attribute of a v:shape element
|
|
208
|
+
*/
|
|
209
|
+
explicit XLShapeStyle(const XMLAttribute& styleAttribute);
|
|
210
|
+
|
|
211
|
+
/**
|
|
212
|
+
* @brief
|
|
213
|
+
*/
|
|
214
|
+
~XLShapeStyle();
|
|
215
|
+
|
|
216
|
+
private:
|
|
217
|
+
/**
|
|
218
|
+
* @brief get index of an attribute name within m_nodeOrder
|
|
219
|
+
* @return index of attribute in m_nodeOrder
|
|
220
|
+
* @return -1 if not found
|
|
221
|
+
*/
|
|
222
|
+
int16_t attributeOrderIndex(std::string const& attributeName) const;
|
|
223
|
+
/**
|
|
224
|
+
* @brief XLShapeStyle internal generic getter & setter functions
|
|
225
|
+
*/
|
|
226
|
+
XLShapeStyleAttribute getAttribute(std::string const& attributeName, std::string const& valIfNotFound = "") const;
|
|
227
|
+
bool setAttribute(std::string const& attributeName, std::string const& attributeValue);
|
|
228
|
+
// bool setAttribute(XLShapeStyleAttribute const& attribute);
|
|
229
|
+
|
|
230
|
+
public:
|
|
231
|
+
/**
|
|
232
|
+
* @brief XLShapeStyle getter functions
|
|
233
|
+
*/
|
|
234
|
+
std::string position() const;
|
|
235
|
+
uint16_t marginLeft() const;
|
|
236
|
+
uint16_t marginTop() const;
|
|
237
|
+
uint16_t width() const;
|
|
238
|
+
uint16_t height() const;
|
|
239
|
+
std::string msoWrapStyle() const;
|
|
240
|
+
std::string vTextAnchor() const;
|
|
241
|
+
bool hidden() const;
|
|
242
|
+
bool visible() const;
|
|
243
|
+
|
|
244
|
+
std::string raw() const { return m_style; }
|
|
245
|
+
|
|
246
|
+
/**
|
|
247
|
+
* @brief XLShapeStyle setter functions
|
|
248
|
+
*/
|
|
249
|
+
bool setPosition(std::string newPosition);
|
|
250
|
+
bool setMarginLeft(uint16_t newMarginLeft);
|
|
251
|
+
bool setMarginTop(uint16_t newMarginTop);
|
|
252
|
+
bool setWidth(uint16_t newWidth);
|
|
253
|
+
bool setHeight(uint16_t newHeight);
|
|
254
|
+
bool setMsoWrapStyle(std::string newMsoWrapStyle);
|
|
255
|
+
bool setVTextAnchor(std::string newVTextAnchor);
|
|
256
|
+
bool hide(); // set visibility:hidden
|
|
257
|
+
bool show(); // set visibility:visible
|
|
258
|
+
|
|
259
|
+
bool setRaw(std::string newStyle) { m_style = newStyle; return true; }
|
|
260
|
+
|
|
261
|
+
private:
|
|
262
|
+
mutable std::string m_style; // mutable so getter functions can update it from m_styleAttribute if the latter is not empty
|
|
263
|
+
std::unique_ptr<XMLAttribute> m_styleAttribute;
|
|
264
|
+
inline static const std::vector< std::string_view > m_nodeOrder = {
|
|
265
|
+
"position",
|
|
266
|
+
"margin-left",
|
|
267
|
+
"margin-top",
|
|
268
|
+
"width",
|
|
269
|
+
"height",
|
|
270
|
+
"mso-wrap-style",
|
|
271
|
+
"v-text-anchor",
|
|
272
|
+
"visibility"
|
|
273
|
+
};
|
|
274
|
+
};
|
|
275
|
+
|
|
276
|
+
|
|
277
|
+
class OPENXLSX_EXPORT XLShape {
|
|
278
|
+
friend class XLVmlDrawing; // for access to m_shapeNode in XLVmlDrawing::addShape
|
|
279
|
+
public: // ---------- Public Member Functions ---------- //
|
|
280
|
+
/**
|
|
281
|
+
* @brief
|
|
282
|
+
*/
|
|
283
|
+
XLShape();
|
|
284
|
+
|
|
285
|
+
/**
|
|
286
|
+
* @brief Constructor. New items should only be created through an XLStyles object.
|
|
287
|
+
* @param node An XMLNode object with the styles item. If no input is provided, a null node is used.
|
|
288
|
+
*/
|
|
289
|
+
explicit XLShape(const XMLNode& node);
|
|
290
|
+
|
|
291
|
+
/**
|
|
292
|
+
* @brief Copy Constructor.
|
|
293
|
+
* @param other Object to be copied.
|
|
294
|
+
*/
|
|
295
|
+
XLShape(const XLShape& other);
|
|
296
|
+
|
|
297
|
+
/**
|
|
298
|
+
* @brief Move Constructor.
|
|
299
|
+
* @param other Object to be moved.
|
|
300
|
+
*/
|
|
301
|
+
XLShape(XLShape&& other) noexcept;
|
|
302
|
+
|
|
303
|
+
/**
|
|
304
|
+
* @brief
|
|
305
|
+
*/
|
|
306
|
+
~XLShape();
|
|
307
|
+
|
|
308
|
+
/**
|
|
309
|
+
* @brief Copy assignment operator.
|
|
310
|
+
* @param other Right hand side of assignment operation.
|
|
311
|
+
* @return A reference to the lhs object.
|
|
312
|
+
*/
|
|
313
|
+
XLShape& operator=(const XLShape& other);
|
|
314
|
+
|
|
315
|
+
/**
|
|
316
|
+
* @brief Move assignment operator.
|
|
317
|
+
* @param other Right hand side of assignment operation.
|
|
318
|
+
* @return A reference to lhs object.
|
|
319
|
+
*/
|
|
320
|
+
XLShape& operator=(XLShape&& other) noexcept;
|
|
321
|
+
|
|
322
|
+
/**
|
|
323
|
+
* @brief Getter functions
|
|
324
|
+
*/
|
|
325
|
+
std::string shapeId() const; // v:shape attribute id - shape_# - can't be set by the user
|
|
326
|
+
std::string fillColor() const; // v:shape attribute fillcolor, #<3 byte hex code>, e.g. #ffffc0
|
|
327
|
+
bool stroked() const; // v:shape attribute stroked "t" ("f"?)
|
|
328
|
+
std::string type() const; // v:shape attribute type, link to v:shapetype attribute id
|
|
329
|
+
bool allowInCell() const; // v:shape attribute o:allowincell "f"
|
|
330
|
+
XLShapeStyle style(); // v:shape attribute style, but constructed from the XMLAttribute
|
|
331
|
+
|
|
332
|
+
// XLShapeShadow& shadow(); // v:shape subnode v:shadow
|
|
333
|
+
// XLShapeFill& fill(); // v:shape subnode v:fill
|
|
334
|
+
// XLShapeStroke& stroke(); // v:shape subnode v:stroke
|
|
335
|
+
// XLShapePath& path(); // v:shape subnode v:path
|
|
336
|
+
// XLShapeTextbox& textbox(); // v:shape subnode v:textbox
|
|
337
|
+
XLShapeClientData clientData(); // v:shape subnode x:ClientData
|
|
338
|
+
|
|
339
|
+
/**
|
|
340
|
+
* @brief Setter functions
|
|
341
|
+
* @param value that shall be set
|
|
342
|
+
* @return true for success, false for failure
|
|
343
|
+
*/
|
|
344
|
+
// NOTE: setShapeId is not available because shape id is managed by the parent class in createShape
|
|
345
|
+
bool setFillColor(std::string const& newFillColor);
|
|
346
|
+
bool setStroked(bool set);
|
|
347
|
+
bool setType(std::string const& newType);
|
|
348
|
+
bool setAllowInCell(bool set);
|
|
349
|
+
bool setStyle(std::string const& newStyle);
|
|
350
|
+
bool setStyle(XLShapeStyle const& newStyle);
|
|
351
|
+
|
|
352
|
+
private: // ---------- Private Member Variables ---------- //
|
|
353
|
+
std::unique_ptr<XMLNode> m_shapeNode; /**< An XMLNode object with the v:shape item */
|
|
354
|
+
inline static const std::vector< std::string_view > m_nodeOrder = {
|
|
355
|
+
"v:shadow",
|
|
356
|
+
"v:fill",
|
|
357
|
+
"v:stroke",
|
|
358
|
+
"v:path",
|
|
359
|
+
"v:textbox",
|
|
360
|
+
"x:ClientData"
|
|
361
|
+
};
|
|
362
|
+
};
|
|
363
|
+
|
|
364
|
+
/**
|
|
365
|
+
* @brief The XLVmlDrawing class is the base class for worksheet comments
|
|
366
|
+
*/
|
|
367
|
+
class OPENXLSX_EXPORT XLVmlDrawing : public XLXmlFile
|
|
368
|
+
{
|
|
369
|
+
friend class XLWorksheet; // for access to XLXmlFile::getXmlPath
|
|
370
|
+
friend class XLComments; // for access to firstShapeNode
|
|
371
|
+
public:
|
|
372
|
+
/**
|
|
373
|
+
* @brief Constructor
|
|
374
|
+
*/
|
|
375
|
+
XLVmlDrawing() : XLXmlFile(nullptr) {};
|
|
376
|
+
|
|
377
|
+
/**
|
|
378
|
+
* @brief The constructor.
|
|
379
|
+
* @param xmlData the source XML of the comments file
|
|
380
|
+
*/
|
|
381
|
+
XLVmlDrawing(XLXmlData* xmlData);
|
|
382
|
+
|
|
383
|
+
/**
|
|
384
|
+
* @brief Copy constructor
|
|
385
|
+
* @param other The object to be copied.
|
|
386
|
+
* @warning XLXmlDrawing object manages shape IDs and should not be copied, but deleting this would complicate XLWorksheet copies
|
|
387
|
+
*/
|
|
388
|
+
XLVmlDrawing(const XLVmlDrawing& other);
|
|
389
|
+
|
|
390
|
+
/**
|
|
391
|
+
* @brief Move constructor
|
|
392
|
+
* @param other
|
|
393
|
+
*/
|
|
394
|
+
XLVmlDrawing(XLVmlDrawing&& other) noexcept;
|
|
395
|
+
|
|
396
|
+
/**
|
|
397
|
+
* @brief The destructor
|
|
398
|
+
* @note The default destructor is used, since cleanup of pointer data members is not required.
|
|
399
|
+
*/
|
|
400
|
+
~XLVmlDrawing();
|
|
401
|
+
|
|
402
|
+
/**
|
|
403
|
+
* @brief Copy assignment operator
|
|
404
|
+
* @param other
|
|
405
|
+
* @return
|
|
406
|
+
* @warning XLXmlDrawing object manages shape IDs and should not be copied, but deleting this would complicate XLWorksheet copies
|
|
407
|
+
*/
|
|
408
|
+
XLVmlDrawing& operator=(const XLVmlDrawing& other);
|
|
409
|
+
|
|
410
|
+
/**
|
|
411
|
+
* @brief Move assignment operator
|
|
412
|
+
* @param other
|
|
413
|
+
* @return
|
|
414
|
+
*/
|
|
415
|
+
XLVmlDrawing& operator=(XLVmlDrawing&& other) noexcept;
|
|
416
|
+
|
|
417
|
+
private: // helper functions with repeating code
|
|
418
|
+
XMLNode firstShapeNode() const;
|
|
419
|
+
XMLNode lastShapeNode() const;
|
|
420
|
+
XMLNode shapeNode(uint32_t index) const;
|
|
421
|
+
|
|
422
|
+
public:
|
|
423
|
+
|
|
424
|
+
/**
|
|
425
|
+
* @brief Get the shape XML node that is associated with the cell indicated by cellRef
|
|
426
|
+
* @param cellRef the reference to the cell for which a shape shall be found
|
|
427
|
+
* @return the XMLNode that contains the desired shape, or an empty XMLNode if not found
|
|
428
|
+
*/
|
|
429
|
+
XMLNode shapeNode(std::string const& cellRef) const;
|
|
430
|
+
|
|
431
|
+
uint32_t shapeCount() const;
|
|
432
|
+
|
|
433
|
+
XLShape shape(uint32_t index) const;
|
|
434
|
+
|
|
435
|
+
bool deleteShape(uint32_t index);
|
|
436
|
+
bool deleteShape(std::string const& cellRef);
|
|
437
|
+
|
|
438
|
+
XLShape createShape(const XLShape& shapeTemplate = XLShape());
|
|
439
|
+
|
|
440
|
+
/**
|
|
441
|
+
* @brief Print the XML contents of this XLVmlDrawing instance using the underlying XMLNode print function
|
|
442
|
+
*/
|
|
443
|
+
void print(std::basic_ostream<char>& ostr) const;
|
|
444
|
+
|
|
445
|
+
private:
|
|
446
|
+
uint32_t m_shapeCount{0};
|
|
447
|
+
uint32_t m_lastAssignedShapeId{0};
|
|
448
|
+
std::string m_defaultShapeTypeId{};
|
|
449
|
+
};
|
|
450
|
+
} // namespace OpenXLSX
|
|
451
|
+
|
|
452
|
+
#endif // OPENXLSX_XLDRAWING_HPP
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
/*
|
|
2
|
+
|
|
3
|
+
____ ____ ___ ____ ____ ____ ___
|
|
4
|
+
6MMMMb `MM( )M' `MM' 6MMMMb\`MM( )M'
|
|
5
|
+
8P Y8 `MM. d' MM 6M' ` `MM. d'
|
|
6
|
+
6M Mb __ ____ ____ ___ __ `MM. d' MM MM `MM. d'
|
|
7
|
+
MM MM `M6MMMMb 6MMMMb `MM 6MMb `MM. d' MM YM. `MM. d'
|
|
8
|
+
MM MM MM' `Mb 6M' `Mb MMM9 `Mb `MMd MM YMMMMb `MMd
|
|
9
|
+
MM MM MM MM MM MM MM' MM dMM. MM `Mb dMM.
|
|
10
|
+
MM MM MM MM MMMMMMMM MM MM d'`MM. MM MM d'`MM.
|
|
11
|
+
YM M9 MM MM MM MM MM d' `MM. MM MM d' `MM.
|
|
12
|
+
8b d8 MM. ,M9 YM d9 MM MM d' `MM. MM / L ,M9 d' `MM.
|
|
13
|
+
YMMMM9 MMYMMM9 YMMMM9 _MM_ _MM_M(_ _)MM_ _MMMMMMM MYMMMM9 _M(_ _)MM_
|
|
14
|
+
MM
|
|
15
|
+
MM
|
|
16
|
+
_MM_
|
|
17
|
+
|
|
18
|
+
Copyright (c) 2018, Kenneth Troldal Balslev
|
|
19
|
+
|
|
20
|
+
All rights reserved.
|
|
21
|
+
|
|
22
|
+
Redistribution and use in source and binary forms, with or without
|
|
23
|
+
modification, are permitted provided that the following conditions are met:
|
|
24
|
+
- Redistributions of source code must retain the above copyright
|
|
25
|
+
notice, this list of conditions and the following disclaimer.
|
|
26
|
+
- Redistributions in binary form must reproduce the above copyright
|
|
27
|
+
notice, this list of conditions and the following disclaimer in the
|
|
28
|
+
documentation and/or other materials provided with the distribution.
|
|
29
|
+
- Neither the name of the author nor the
|
|
30
|
+
names of any contributors may be used to endorse or promote products
|
|
31
|
+
derived from this software without specific prior written permission.
|
|
32
|
+
|
|
33
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
|
34
|
+
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
35
|
+
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
36
|
+
DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
|
|
37
|
+
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
38
|
+
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
39
|
+
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
|
40
|
+
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
41
|
+
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
42
|
+
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
43
|
+
|
|
44
|
+
*/
|
|
45
|
+
|
|
46
|
+
#ifndef OPENXLSX_XLEXCEPTION_HPP
|
|
47
|
+
#define OPENXLSX_XLEXCEPTION_HPP
|
|
48
|
+
|
|
49
|
+
#ifdef _MSC_VER // conditionally enable MSVC specific pragmas to avoid other compilers warning about unknown pragmas
|
|
50
|
+
# pragma warning(push)
|
|
51
|
+
# pragma warning(disable : 4251)
|
|
52
|
+
# pragma warning(disable : 4275)
|
|
53
|
+
#endif // _MSC_VER
|
|
54
|
+
|
|
55
|
+
// ===== External Includes ===== //
|
|
56
|
+
#include <stdexcept> // std::runtime_error
|
|
57
|
+
#include <string> // std::string - Issue #278 should be resolved by this
|
|
58
|
+
|
|
59
|
+
// ===== OpenXLSX Includes ===== //
|
|
60
|
+
#include "OpenXLSX-Exports.hpp"
|
|
61
|
+
|
|
62
|
+
namespace OpenXLSX
|
|
63
|
+
{
|
|
64
|
+
/**
|
|
65
|
+
* @brief
|
|
66
|
+
*/
|
|
67
|
+
class OPENXLSX_EXPORT XLException : public std::runtime_error
|
|
68
|
+
{
|
|
69
|
+
public:
|
|
70
|
+
explicit XLException(const std::string& err) : runtime_error(err) {};
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* @brief
|
|
75
|
+
*/
|
|
76
|
+
class OPENXLSX_EXPORT XLOverflowError : public XLException
|
|
77
|
+
{
|
|
78
|
+
public:
|
|
79
|
+
explicit XLOverflowError(const std::string& err) : XLException(err) {};
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* @brief
|
|
84
|
+
*/
|
|
85
|
+
class OPENXLSX_EXPORT XLValueTypeError : public XLException
|
|
86
|
+
{
|
|
87
|
+
public:
|
|
88
|
+
explicit XLValueTypeError(const std::string& err) : XLException(err) {};
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* @brief
|
|
93
|
+
*/
|
|
94
|
+
class OPENXLSX_EXPORT XLCellAddressError : public XLException
|
|
95
|
+
{
|
|
96
|
+
public:
|
|
97
|
+
explicit XLCellAddressError(const std::string& err) : XLException(err) {};
|
|
98
|
+
};
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* @brief
|
|
102
|
+
*/
|
|
103
|
+
class OPENXLSX_EXPORT XLInputError : public XLException
|
|
104
|
+
{
|
|
105
|
+
public:
|
|
106
|
+
explicit XLInputError(const std::string& err) : XLException(err) {};
|
|
107
|
+
};
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* @brief
|
|
111
|
+
*/
|
|
112
|
+
class OPENXLSX_EXPORT XLInternalError : public XLException
|
|
113
|
+
{
|
|
114
|
+
public:
|
|
115
|
+
explicit XLInternalError(const std::string& err) : XLException(err) {};
|
|
116
|
+
};
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* @brief
|
|
120
|
+
*/
|
|
121
|
+
class OPENXLSX_EXPORT XLPropertyError : public XLException
|
|
122
|
+
{
|
|
123
|
+
public:
|
|
124
|
+
explicit XLPropertyError(const std::string& err) : XLException(err) {};
|
|
125
|
+
};
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* @brief
|
|
129
|
+
*/
|
|
130
|
+
class OPENXLSX_EXPORT XLSheetError : public XLException
|
|
131
|
+
{
|
|
132
|
+
public:
|
|
133
|
+
explicit XLSheetError(const std::string& err) : XLException(err) {};
|
|
134
|
+
};
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* @brief
|
|
138
|
+
*/
|
|
139
|
+
class OPENXLSX_EXPORT XLDateTimeError : public XLException
|
|
140
|
+
{
|
|
141
|
+
public:
|
|
142
|
+
explicit XLDateTimeError(const std::string& err) : XLException(err) {};
|
|
143
|
+
};
|
|
144
|
+
|
|
145
|
+
/**
|
|
146
|
+
* @brief
|
|
147
|
+
*/
|
|
148
|
+
class OPENXLSX_EXPORT XLFormulaError : public XLException
|
|
149
|
+
{
|
|
150
|
+
public:
|
|
151
|
+
explicit XLFormulaError(const std::string& err) : XLException(err) {};
|
|
152
|
+
};
|
|
153
|
+
|
|
154
|
+
|
|
155
|
+
} // namespace OpenXLSX
|
|
156
|
+
|
|
157
|
+
#ifdef _MSC_VER // conditionally enable MSVC specific pragmas to avoid other compilers warning about unknown pragmas
|
|
158
|
+
# pragma warning(pop)
|
|
159
|
+
#endif // _MSC_VER
|
|
160
|
+
|
|
161
|
+
#endif // OPENXLSX_XLEXCEPTION_HPP
|