Compare commits

...

2461 Commits

Author SHA1 Message Date
42aa73520b Fix debug build 2026-05-23 18:57:58 +03:00
ad6094b18c Merge branch 'develop' into feature/libxml2 2026-05-19 18:47:54 +03:00
c0cad5429e Addons for previous commit 2026-05-19 17:54:52 +03:00
e353ff1b96 Fix EncodeXmlString method 2026-05-19 17:48:55 +03:00
5f6075ca33 Merge branch 'release/v9.4.0' into develop 2026-05-19 16:46:09 +03:00
55e5f973b0 Fix UTF-8 BOM position 2026-05-19 09:37:04 +03:00
78ed5b3d74 . 2026-05-18 17:59:14 +03:00
ba0e0f7449 Merge branch 'develop' of https://git.onlyoffice.com/ONLYOFFICE/core into develop 2026-05-18 16:31:05 +03:00
ba992cc401 . 2026-05-18 16:30:25 +03:00
fba14fcf7b Merge pull request 'fix bug #74293' (#763) from fix/bug74293 into develop
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/763
2026-05-18 12:25:26 +00:00
a2c24b8dc0 Merge pull request 'Fix bug 77975' (#764) from fix/forbug77975 into develop
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/764
2026-05-18 07:13:43 +00:00
073f100fe0 Fix prev 2026-05-18 10:11:07 +03:00
e30a6acc87 Fix bug 77975 2026-05-17 23:00:22 +03:00
a016fc2868 Fix crash with downloads with file:// scheme 2026-05-17 18:03:58 +03:00
b77b3dc7e2 Remove unused files 2026-05-17 15:35:33 +03:00
c0a9c1a1dc Revert "Refactoring"
This reverts commit a982ff0ce2.
2026-05-16 09:08:57 +03:00
a982ff0ce2 Refactoring 2026-05-15 17:37:26 +03:00
a1fe8752fa Update wasm build 2026-05-15 17:13:34 +03:00
30f21fc3c7 Fix prev commit 2026-05-15 17:11:44 +03:00
b2c2a0ec6c Fix build wasm 2026-05-15 14:50:00 +03:00
77ef943473 Refactoring PdfFile 2026-05-15 13:53:02 +03:00
67ae9115c9 Fix compile on windows with far/near defines 2026-05-14 16:02:23 +03:00
be921d6be7 fix bug #81371 2026-05-14 12:28:56 +03:00
67733c1733 fix bug #74293 2026-05-14 11:30:40 +03:00
76ee07f61c [copyright] Update copyright header
Co-authored-by: Alexander Trofimov <alexander.trofimov@onlyoffice.com>
Co-committed-by: Alexander Trofimov <alexander.trofimov@onlyoffice.com>
2026-05-14 08:23:56 +00:00
ff32068a97 Merge pull request 'Fix bug 80333' (#761) from fix/bug-80333 into release/v9.4.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/761
2026-05-14 07:45:04 +00:00
a1ce3b53c2 Fix bug 80333 2026-05-14 10:19:45 +03:00
df08ed4614 Update LICENSE with restructured AGPLv3 additional terms 2026-05-13 22:00:21 +03:00
bd92a3550f libxml2 has been moved to 3dParty 2026-05-13 16:01:47 +03:00
812c59beaa Fix bug 81426 2026-05-13 14:31:41 +03:00
bee1e30e12 Revert prev commit 2026-05-12 23:07:49 +03:00
2da2866862 Refactoring 2026-05-12 21:39:13 +03:00
075052dd3f Merge pull request 'Fix bug 81448' (#760) from fix/big-81448 into release/v9.4.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/760
2026-05-12 10:29:29 +00:00
4207d697fa Fix bug 81448 2026-05-12 13:26:39 +03:00
c5b798b8a9 Merge pull request 'Update OFD file interface' (#759) from fix/OFD into develop
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/759
2026-05-08 13:01:58 +00:00
8a4e115384 Merge pull request 'fix bug #75103' (#758) from fix/bug75103 into release/v9.4.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/758
2026-05-08 12:52:14 +00:00
f4b2184985 fix bug #75103
(cherry picked from commit 1c9ce65ba9)
2026-05-08 15:49:45 +03:00
6a6c85b6bd Added getting the links in OFD file 2026-05-07 16:59:38 +03:00
0e40482b9f . 2026-05-07 11:06:24 +03:00
742dfb54b8 fix bug #66296 2026-05-07 10:51:27 +03:00
52b21fbaed Added getting the structure in OFD file 2026-05-07 01:56:10 +03:00
aef42511ad . 2026-05-06 16:47:43 +03:00
692eb8c878 . 2026-05-06 16:39:19 +03:00
7f16ac66f0 Merge remote-tracking branch 'origin/fix/bug81411' into develop 2026-05-06 13:12:56 +03:00
a94d46ee06 fix bug #81411 2026-05-06 13:12:17 +03:00
2dd929dc95 Merge pull request 'fix/FillingSM' (#673) from fix/FillingSM into develop
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/673
2026-05-05 15:30:46 +00:00
1cfce0fe84 Merge pull request 'fix bug #81408' (#757) from fix/bug81408 into develop
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/757
2026-05-05 15:26:55 +00:00
1fc363c189 fix bug #81408 2026-05-05 21:16:16 +06:00
3a0c438b9c Merge branch 'fix/fix-build-html2' into develop 2026-05-04 19:25:39 +03:00
25b30b3a73 Fix bug 81335 2026-05-04 13:23:09 +03:00
8c2c4060a7 Fix bug 81273 2026-05-04 11:40:24 +03:00
f2bf914e72 Fix build 2026-05-03 16:55:48 +03:00
62a25fa847 Refactoring HTML tags 2026-05-03 04:18:39 +03:00
f5a0278d4b Move files to data repo 2026-04-30 19:59:28 +03:00
7ac9645010 Merge remote-tracking branch 'origin/fix/fix-bugs' into develop 2026-04-30 15:08:09 +03:00
4250382f87 fix bug #81350 2026-04-30 15:04:12 +03:00
4eca22efde . 2026-04-30 14:45:11 +03:00
9db2d2f328 for bug #53378 2026-04-30 13:01:23 +03:00
a868451b5d . 2026-04-30 10:48:14 +03:00
cb217be2a2 . 2026-04-30 10:38:36 +03:00
6ccf19e036 Merge remote-tracking branch 'origin/release/v9.4.0' into develop 2026-04-30 10:07:24 +03:00
2582927c72 Merge remote-tracking branch 'origin/feature/add-xls-writing' into develop 2026-04-30 10:04:54 +03:00
764a8e4cd9 Fix bug 81335 2026-04-29 18:10:44 +03:00
3fe3382c1e Merge remote-tracking branch 'origin/feature/odf-drawingfile' into develop 2026-04-29 17:10:04 +03:00
b139dec538 Fix bug 2026-04-29 16:22:47 +03:00
0b12c5b521 Added some fields to GetInfo in OFD 2026-04-29 14:40:37 +03:00
4c0c47a3cf Added font selection by glyph in ofd in the WASM module 2026-04-29 14:39:58 +03:00
234f867837 Fix LoadFont 2026-04-29 11:57:06 +03:00
6366306f9c Add gradient fill conversion 2026-04-29 13:26:46 +06:00
75f97349ca Fix build 2026-04-28 23:46:45 +03:00
9ef4de7010 Fix build 2026-04-28 22:54:51 +03:00
6a45740f98 Fix mac|ios build 2026-04-28 18:53:14 +03:00
dfe6d300d8 Fixes with rand 2026-04-28 18:17:32 +03:00
cce7058d46 Merge branch 'release/v9.4.0' of https://git.onlyoffice.com/ONLYOFFICE/core into release/v9.4.0 2026-04-28 18:12:13 +03:00
71a8a22d2e Add security rand function 2026-04-28 18:11:51 +03:00
5bf72dcfb6 Added retrieval of information about the OFD file 2026-04-28 17:29:59 +03:00
7c7ebd5f2a Merge pull request 'Fix Embedded font use in pushbutton' (#756) from fix/pdf-pushbutton into release/v9.4.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/756
2026-04-28 11:52:06 +00:00
7890f5b87f Fix Embedded font use in pushbutton 2026-04-28 14:49:38 +03:00
f6decd4754 add border clr ext conversion 2026-04-28 17:23:21 +06:00
f4a0f3f01a add font clr ext conversion 2026-04-28 15:28:17 +06:00
69a066fac9 Merge pull request 'Fix bug 80336' (#755) from fix/bug-80336 into release/v9.4.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/755
2026-04-28 09:27:58 +00:00
1a94960abf Fix bug 80336 2026-04-28 12:20:59 +03:00
50816132e9 Fix rgb ext color conversion 2026-04-28 14:38:28 +06:00
00bee83d0e Merge pull request 'fix bug #81283' (#754) from fix/bug81283 into release/v9.4.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/754
2026-04-27 17:01:14 +00:00
37d83faffd fix bug #81283 2026-04-27 19:46:31 +03:00
8e596451a9 Work with fonts in OFD for the WASM module has been updated 2026-04-27 19:38:31 +03:00
8364bc02a6 Fix xlx version in bof 2026-04-27 22:11:24 +06:00
5b15d9b77b Fix bug 81149 2026-04-27 18:12:54 +03:00
c5a040c807 For bug 81147 2026-04-27 16:52:52 +03:00
bb9e3a2a7e Add readme 2026-04-27 16:45:46 +03:00
e2c560d5ad For bug 81146 2026-04-27 16:37:38 +03:00
815b6623a3 Merge pull request 'fix bug #81244' (#753) from fix/bug81244 into develop
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/753
2026-04-27 08:58:08 +00:00
051f1d2c94 Merge pull request 'fix bug #80899' (#737) from fix/bug80899 into develop
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/737
2026-04-27 08:57:59 +00:00
c2000257aa fix bug #81244 2026-04-27 14:50:04 +06:00
c5b2f3d1f2 fix flipH 2026-04-27 07:01:09 +03:00
72f7aaa6c2 Improved font handling in OFD in the WASM module 2026-04-24 19:22:00 +03:00
2ed3521355 Merge pull request 'fix bugs' (#752) from fix/fix-bugs into release/v9.4.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/752
2026-04-24 15:51:37 +00:00
1c1947459d fix bug #81251 2026-04-24 18:50:20 +03:00
29b2b2e086 Merge pull request 'Fix bug 81148' (#751) from fix/bug-81148 into release/v9.4.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/751
2026-04-24 14:45:31 +00:00
2761614b8d Fix bug 81148 2026-04-24 17:42:29 +03:00
2deb6b8c42 fix bug #81241 2026-04-24 16:48:47 +03:00
13b19cc13f Fix build 2026-04-24 15:56:49 +03:00
9720bd18a4 TODO 2026-04-24 13:37:50 +03:00
a46e0d0a67 Test ofd 2026-04-24 13:31:35 +03:00
59e4d02f01 Merge pull request 'fix bug #81216' (#750) from fix/bug81216 into release/v9.4.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/750
2026-04-24 08:18:34 +00:00
99b31a46f7 fix bug #81216 2026-04-24 11:10:57 +03:00
5a0bc5a19d Merge pull request 'fix bugs' (#749) from fix/fix-bugs into release/v9.4.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/749
2026-04-23 09:02:45 +00:00
38bbe37f40 fix bug #81042 2026-04-23 11:50:35 +03:00
eb4c5cfc2a fix bug #81038 2026-04-23 11:26:25 +03:00
6262048e75 fix bug #81038 2026-04-23 11:13:49 +03:00
7877f542b3 fix bug #81037 2026-04-23 10:56:59 +03:00
f00581fd1d fix bug #81039 2026-04-23 10:52:25 +03:00
bd3dd15a4f fix bug #81040 2026-04-23 10:41:30 +03:00
a796e92fe1 fix bug #81215 2026-04-23 10:32:30 +03:00
9ddd969b01 fix size shape 2026-04-22 22:32:36 +03:00
828eee5ed5 Added memory reading for ofd 2026-04-22 20:44:45 +03:00
a95d8712d3 Create IOfficeDrawingFilePainter 2026-04-22 13:51:34 +03:00
3f76fca0f7 Merge pull request 'Fix html conversion' (#746) from fix/markdown into develop
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/746
2026-04-22 07:07:01 +00:00
1c9ce65ba9 fix bug #75103 2026-04-22 09:12:47 +03:00
09b1d56a9a Merge remote-tracking branch 'origin/release/v9.4.0' into develop 2026-04-22 08:50:01 +03:00
3d7381dc68 Merge pull request 'Fix bug 81092' (#748) from fix/bug-81092 into release/v9.4.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/748
2026-04-21 13:46:39 +00:00
e33e3d6b42 Fix bug 81092 2026-04-21 16:13:34 +03:00
c03fd25b6d Fix build 2026-04-21 16:06:19 +03:00
bc59e34153 Fix OFD detected 2026-04-21 14:28:07 +03:00
9679c6e7f8 OFD detected 2026-04-21 14:18:32 +03:00
2ffc0a7844 drawingfile build OFDFile 2026-04-21 13:29:18 +03:00
c7c98d3f69 Merge pull request 'fix bug #81148' (#747) from fix/bug81148- into release/v9.4.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/747
2026-04-21 10:00:55 +00:00
d9d7ffef26 fix bug #81148 2026-04-21 12:50:49 +03:00
c7e7fd4aa1 Dependency on boost has been removed 2026-04-21 11:29:45 +03:00
1846056b74 Fix bug 81029 2026-04-20 14:38:20 +03:00
378841d655 Fix bug 80025 2026-04-20 11:47:09 +03:00
facd131d7b fix rotate 2026-04-17 13:43:56 +03:00
f39716a5da fix bug #80887 2026-04-17 13:39:12 +03:00
d1fada2542 Refactoring 2026-04-16 17:21:11 +03:00
16929b3a54 Merge branch 'develop' into fix/markdown 2026-04-16 17:15:01 +03:00
a2f52951b2 Fix build 2026-04-16 16:29:06 +03:00
b0efeafd27 Merge pull request 'Add patch for fix build Xcode 26+ Clang treats enum-constexpr-conversion as hard error' (#742) from fix/boost-integral-wrapper-xcode into release/v9.4.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/742
2026-04-16 07:18:21 +00:00
f3d34b1363 . 2026-04-15 22:27:35 +03:00
07e563afe8 fix bug #81054 2026-04-15 22:12:12 +03:00
75b3665ad5 Fix bugs in html to OOXML/Markdown conversion 2026-04-15 21:14:30 +03:00
bdbad87830 Merge remote-tracking branch 'origin/feature/add-xls-writing' into develop 2026-04-15 18:07:31 +03:00
290e4a0884 Fix AP removal for modified annotations on split-merge 2026-04-15 10:50:34 +03:00
0242c5885b Merge pull request 'add horizontal rule' (#736) from fix/doc into develop
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/736
2026-04-14 19:25:15 +00:00
8a3a922dba Merge pull request 'Fix bug 81029' (#744) from fix/bug-81029 into release/v9.4.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/744
2026-04-14 13:20:10 +00:00
b78bcb10dc Fix bug 81029 2026-04-14 16:16:38 +03:00
1c13c80197 Fix AP removal for modified annotations on split-merge 2026-04-14 11:25:41 +03:00
653ff24c0e Merge pull request 'Fix AP removal for modified annotations' (#743) from fix/pdf-bugs into release/v9.4.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/743
2026-04-14 07:52:40 +00:00
a62f97627b Fix AP removal for modified annotations 2026-04-14 10:50:07 +03:00
ddd991601c Fix bug 57854 2026-04-13 12:23:34 +03:00
57c26eb998 Add default theme writing 2026-04-10 19:37:16 +06:00
2c35b5f422 Fix bugs in html conversion 2026-04-09 16:46:37 +03:00
ab76f46fd4 add extProps conversion 2026-04-09 16:41:28 +06:00
2dd2f3bcc6 fix xfext frt 2026-04-09 16:19:29 +06:00
612c26cf6c Add patch for fix build Xcode 26+ Clang treats enum-constexpr-conversion as hard error 2026-04-09 11:07:45 +03:00
2873418d74 Merge pull request 'Fix bug 80951' (#741) from fix/bug-80951 into release/v9.4.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/741
2026-04-08 12:52:43 +00:00
77346270a4 Fix bug 80951 2026-04-08 15:07:22 +03:00
5f005b4501 for bug #53378 2026-04-08 13:29:34 +03:00
5f39acbe51 Merge pull request 'For bug 80374' (#740) from fix/forbug80374 into release/v9.4.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/740
2026-04-08 08:34:04 +00:00
6badba384c For bug 80374 2026-04-08 11:27:44 +03:00
0830ed031e Merge branch 'develop' into feature/add-xls-writing 2026-04-08 13:16:56 +06:00
e63d62bb04 Merge pull request 'fix conversion to xls' (#739) from fix/xls-conversion into develop
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/739
2026-04-08 07:13:31 +00:00
90029fb2f3 fix conversion to xls 2026-04-08 13:04:57 +06:00
c96df4e62e Fix bugs in fromUnicode method 2026-04-07 22:11:37 +03:00
d4e1b31e10 Merge branch 'release/v9.4.0' into develop 2026-04-07 15:11:10 +03:00
1580494bdb fix bug #80899 2026-04-07 16:30:32 +06:00
f4fc487ce3 Fix bugs and refactoring in html cenversion 2026-04-06 21:47:03 +03:00
a5bfa94770 Fix bugs in HTML to OOXML conversion 2026-04-06 19:41:29 +03:00
85a615cc9a add xfs Crc writing 2026-04-06 21:33:04 +06:00
91701ed58d add horizontal rule 2026-04-06 13:49:45 +03:00
be200af7d9 Merge remote-tracking branch 'origin/fix/comments-i18n' into release/v9.4.0 2026-04-06 12:05:13 +03:00
279349323f Merge remote-tracking branch 'origin/fix/bug-65751' into develop 2026-04-06 10:52:40 +03:00
1dae175272 Fix bug 65751 2026-04-06 10:51:27 +03:00
7c6f9f2ad6 edit the flipV 2026-04-04 09:29:15 +03:00
efc9bab6ed for bug #53378 2026-04-04 09:26:06 +03:00
73b32984e2 fix ptgList toArea conversion 2026-04-03 21:47:41 +06:00
19758d579d . 2026-04-03 16:55:46 +03:00
f269db67bb Read Type3 font 2026-04-03 16:54:05 +03:00
2fd10fc33f . 2026-04-03 15:57:38 +03:00
685b2bb9e0 Merge pull request 'Fix bug 77975' (#735) from fix/bug77975 into develop
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/735
2026-04-03 12:18:02 +00:00
55fe2e968f Fix bug 77975 2026-04-03 14:56:34 +03:00
d90c3aa3ac Add row fields check 2026-04-03 15:44:01 +06:00
47fed9cb63 Fix CssCalculator, EpubTest, HWPFile
Checked:
- Apple
- HtmlFile2
- DesktopEditor\raster\Metafile
- EpubFile
- Fb2File
- HWPFile
- OFDFile
2026-04-02 23:21:57 +03:00
e3e247e835 fix date fields in pivot cache 2026-04-02 21:50:37 +06:00
bd245cd62a Fix drawingfile, htmltoxhtml, Fb2File, HtmlFile2, PdfFile
Also checked:
Common/3dParty/html/htmltoxhtml.cpp
DesktopEditor/doctrenderer/drawingfile.h
DjVuFile
EpubFile
Fb2File
HtmlFile2/htmlfile2.cpp
PdfFile
XpsFile
2026-04-02 13:43:56 +03:00
87c3f9beff fix pivot row items conversion 2026-04-02 16:34:07 +06:00
9b196ada1f Fix bug 68657 2026-04-02 10:04:28 +03:00
10b2b0d3d0 standardize comments in English 2026-04-02 08:10:57 +03:00
cd58508d0f Fix pivot cache conversion 2026-04-01 21:00:31 +06:00
d41aef7ec6 Fix bug 68459 2026-04-01 11:20:35 +03:00
cda332109e Update 3rdParty licences info 2026-03-31 18:42:03 +03:00
bdc22190bd fix pivot cache ref conversion 2026-03-31 18:14:27 +06:00
9989510d60 add shared item index conversion 2026-03-31 16:59:21 +06:00
2f1a76fba6 Improved work with images in the html converter 2026-03-30 20:41:14 +03:00
0693bdc115 add pivot items conversion 2026-03-30 18:38:20 +06:00
ffb528636f Fix bug 80784 2026-03-30 14:52:50 +03:00
abc4619924 add pivot cache file check 2026-03-30 15:48:05 +06:00
fe36b3e1e6 add inlineStr cell value conversion 2026-03-27 20:47:01 +06:00
e72a4f8e8c add picture file check 2026-03-27 19:50:06 +06:00
0b2babbefc for bug #53378 2026-03-27 12:28:44 +03:00
32da1a4901 Refactoring 2026-03-27 01:53:35 +03:00
d2c6a4821c Merge pull request 'Fix bug 80374' (#733) from fix/bug-80374 into release/v9.4.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/733
2026-03-26 19:54:01 +00:00
15e3b57c58 Fix bug 80374 2026-03-26 19:23:11 +03:00
15f423dbb9 Merge pull request 'add horizontal rule' (#732) from fix/bugrtf into develop
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/732
2026-03-26 14:19:15 +00:00
5d4e08a86f Merge pull request 'fix hr shade' (#731) from fix/fix-hr into release/v9.4.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/731
2026-03-26 13:02:38 +00:00
6b3db7355b fix hr shade 2026-03-26 15:29:15 +03:00
b5c29e49e2 Add emf image conversion 2026-03-26 17:14:09 +06:00
9a4f929510 fix build 2026-03-25 19:02:05 +03:00
206ee9c976 Transparency Group for stamp 2026-03-25 14:41:43 +03:00
7a8669d7f8 Merge remote-tracking branch 'origin/feature/pdf-annots' into develop 2026-03-25 13:42:10 +03:00
ea28ff69a9 Write stamp opacity to AP 2026-03-25 13:28:44 +03:00
88626378a7 Create IgnoreStampOpacity for drawingfile 2026-03-25 12:52:31 +03:00
261cf72685 fix surface chart conversion 2026-03-24 21:23:12 +06:00
219bf06855 add seriesAxis conversion 2026-03-24 18:29:29 +06:00
23e736051f Merge remote-tracking branch 'origin/feature/add-xls-writing' into develop 2026-03-24 15:06:48 +03:00
8870516a8a Fix bug 68012 2026-03-23 16:07:38 +03:00
dbe56878b1 fix drawing conversion 2026-03-23 18:18:23 +06:00
1f9ee8628e Merge branch 'develop' into fix/FillingSM 2026-03-23 11:47:07 +03:00
84aa409b1e Merge branch 'develop' into feature/add-xls-writing 2026-03-23 13:06:49 +06:00
6df60b9b4e Redesigned the principle of working with tables in html 2026-03-23 03:14:08 +03:00
22bbfa3729 Merge pull request 'for bug #79358' (#729) from fix/fix-bugs2 into release/v9.4.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/729
2026-03-20 19:40:48 +00:00
52096d1b0b add horizontal rule 2026-03-20 21:10:37 +03:00
b1623b203b for bug #79358 2026-03-20 17:10:08 +03:00
8fa5f8944e Fix bug 56081 2026-03-20 14:56:53 +03:00
27dc6403d7 add several image conversion 2026-03-20 17:50:25 +06:00
ecaef0fbed fix drawing group pict conversion 2026-03-19 20:48:49 +06:00
ca08c74fb4 Merge pull request 'Fix bug 80686' (#728) from fix/bug-80686 into release/v9.4.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/728
2026-03-19 13:18:17 +00:00
7d161bda01 Fix bug 80686 2026-03-19 16:10:42 +03:00
2addc5a3d8 fix bstoreContainer size 2026-03-19 18:21:34 +06:00
4e1afe5c55 add file blip store entry writin 2026-03-19 16:49:36 +06:00
9ae5855ed0 refactor drawing generation methods 2026-03-18 16:26:40 +06:00
8d4e216852 Link RD read and write 2026-03-18 10:42:20 +03:00
866bf08da3 Merge pull request 'Fix bug 80655' (#727) from fix/bug-80655 into develop
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/727
2026-03-17 18:36:25 +00:00
9e1bb2cd22 Fix bug 80655 2026-03-17 21:30:04 +03:00
bb97d00ae7 add imageWriting 2026-03-17 18:51:26 +06:00
66eaed4f18 Merge remote-tracking branch 'origin/feature/pdf-screen' into develop 2026-03-16 15:55:29 +03:00
4739b9f9dd Merge remote-tracking branch 'origin/develop' into feature/pdf-screen 2026-03-16 15:54:10 +03:00
57c99df412 Merge pull request 'Fix bug 80646' (#724) from fix/bug-80646 into release/v9.4.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/724
2026-03-16 12:49:48 +00:00
e8f1691348 Write FileAttachment annot 2026-03-16 15:48:12 +03:00
0b42267c43 Merge pull request 'fix bug #68331' (#726) from fix/bug68331 into develop
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/726
2026-03-16 12:20:22 +00:00
6f1bfc3064 Merge pull request 'fix/bug79255' (#725) from fix/bug79255 into develop
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/725
2026-03-16 12:19:35 +00:00
f57f573ac4 fix bug #79471 2026-03-16 14:20:41 +03:00
df86855ccf Fix bug 80646 2026-03-16 14:14:53 +03:00
0579b93796 fix bug #79255 2026-03-16 14:10:11 +03:00
2074785963 add cell anchor writing for pics 2026-03-13 21:55:00 +06:00
ed697edba2 add pic conversion method 2026-03-13 20:43:39 +06:00
686c72a1c8 Write Screen annot 2026-03-13 15:21:54 +03:00
41124d3301 pdf write Screen and FileAttachment annots 2026-03-13 13:37:33 +03:00
95d6c6c927 Merge branch 'release/v9.4.0' into feature/add-xls-writing 2026-03-13 14:22:03 +06:00
9ae76b07a1 fix bug #79246 2026-03-13 10:39:01 +03:00
da769a642b Merge branch hotfix/v9.3.1 into release/v9.4.0 2026-03-12 15:19:51 +00:00
0d7e535114 Merge branch hotfix/v9.3.1 into develop 2026-03-12 15:19:49 +00:00
b18715ae81 Merge branch hotfix/v9.3.1 into master 2026-03-12 15:19:46 +00:00
e0af1357e5 Merge pull request 'for bug #80497' (#723) from fix/bmpConversion into develop
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/723
2026-03-12 13:58:54 +00:00
d4f80ea036 for bug #80497 2026-03-12 19:55:56 +06:00
8e90fbac69 pdf read Screen annots 2026-03-12 15:31:41 +03:00
12083ae8c9 Merge pull request 'Fix bugs 75897, 80163' (#722) from fix/pdf-bug into release/v9.4.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/722
2026-03-12 12:29:03 +00:00
322fda0e07 fix bug #71064 2026-03-12 15:28:28 +03:00
b0d70ff38a Merge remote-tracking branch 'origin/feature/add-xls-writing' into develop 2026-03-12 14:34:08 +03:00
2a409336a3 fix multiple comment writing 2026-03-12 17:15:03 +06:00
6819a41452 Fix bug 75897 2026-03-12 14:06:57 +03:00
4cdc416e0b fix bug #79301 2026-03-12 12:34:51 +03:00
5d5732161a Fix bug 80163 2026-03-12 11:11:32 +03:00
7046f1d465 Merge pull request 'fix/bug73640' (#721) from fix/bug73640 into develop
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/721
2026-03-11 15:17:16 +00:00
61f25af847 fix/bug73640
fix bug #73640
2026-03-11 18:13:45 +03:00
9304d10674 Merge remote-tracking branch 'origin/release/v9.4.0' into develop 2026-03-11 18:12:11 +03:00
21dd6c2a61 Merge pull request 'fix prev hr' (#720) from fix/fix-bugs into release/v9.4.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/720
2026-03-11 15:11:31 +00:00
278dffc7c7 fix bug #80491 2026-03-11 18:11:16 +03:00
b607aeb4c6 fix prev hr 2026-03-11 18:08:12 +03:00
bd7aa2df96 Add multiple comment writing 2026-03-11 19:17:02 +06:00
3d4dc3116e fix comment conversion 2026-03-11 18:14:51 +06:00
f2fdcf4efd Merge branch 'develop' into fix/bug73640 2026-03-11 11:51:07 +03:00
ae7dbf291f Merge remote-tracking branch 'origin/release/v9.4.0' into develop 2026-03-10 19:49:07 +03:00
e83dbf57af Fixed a bug with unnecessary transfer of images to markdown 2026-03-10 18:52:19 +03:00
3aa729d65b Fixed a bug with formatted spaces in markdown 2026-03-10 18:51:44 +03:00
cb0176ecca add comment writing 2026-03-10 21:00:46 +06:00
e1b3fe270a Merge pull request 'fix/fix-bugs' (#719) from fix/fix-bugs into release/v9.4.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/719
2026-03-10 12:33:19 +00:00
615cf0982d fix hr in odf 2026-03-10 10:52:20 +03:00
b75afead99 Merge pull request 'fix/bug59695' (#717) from fix/bug45616 into develop
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/717
2026-03-10 07:12:08 +00:00
290a134cdb Reapply "fix/bug59695"
This reverts commit 6d9a2e0d09.
2026-03-10 10:06:11 +03:00
6d9a2e0d09 Revert "fix/bug59695"
This reverts commit 32c4964cca.
2026-03-10 10:05:45 +03:00
32c4964cca fix/bug59695
fix bug #59695
2026-03-10 10:01:08 +03:00
a027644bf0 fix hr 2026-03-09 21:51:31 +03:00
9983161e3d Merge branch 'hotfix/v9.3.1' of https://git.onlyoffice.com/ONLYOFFICE/core into hotfix/v9.3.1 2026-03-09 21:14:43 +03:00
33c4b5130e Revert missed file 2026-03-09 21:14:26 +03:00
c2dd7b5108 fix bug #68331 2026-03-09 19:06:21 +03:00
0101774675 Fix safeUrl method 2026-03-09 13:35:40 +03:00
de9709ea50 Fix fromUnicode on ios 2026-03-09 13:35:02 +03:00
22e7c5bed4 Change download method 2026-03-06 23:25:00 +03:00
11000aa465 Merge pull request 'fix/bug79974' (#715) from fix/bug79974 into develop
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/715
2026-03-05 19:59:28 +00:00
eada4b4ebe Merge pull request 'fix/bug79818' (#714) from fix/bug79818 into release/v9.4.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/714
2026-03-05 14:51:33 +00:00
6630a882ed Merge remote-tracking branch 'origin/release/v9.4.0' into develop 2026-03-05 17:23:02 +03:00
e20143fa2e for bug #66794 2026-03-05 17:17:18 +03:00
57ca5da2c0 fix/bug79818
fix bug #79818
2026-03-05 13:36:32 +03:00
08bad0753a Merge pull request 'Fix bug 80374' (#713) from fix/bug80374 into release/v9.4.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/713
2026-03-05 10:11:56 +00:00
6224b6384d Fix prev 2026-03-05 12:59:26 +03:00
be1aed4cae Fix bug 80374 2026-03-05 12:27:40 +03:00
e40603df61 add chart file check 2026-03-05 15:22:33 +06:00
6d0db29975 Merge remote-tracking branch 'origin/develop' into fix/bug80407 2026-03-05 11:26:26 +03:00
3fe2ed032d Merge branch hotfix/v9.3.1 into master 2026-03-05 07:46:21 +00:00
a43af51577 . 2026-03-04 20:16:08 +03:00
cf0f2be204 fix axis conversion 2026-03-04 20:09:47 +06:00
44e3e77631 refactoring 2026-03-04 16:59:25 +03:00
e4df8df318 fix drawing conversion 2026-03-04 15:18:34 +06:00
3676400e66 Merge branch release/v9.3.0 into release/v9.4.0 2026-03-04 09:17:05 +00:00
573b85932f Merge branch release/v9.3.0 into hotfix/v9.3.1 2026-03-04 09:17:03 +00:00
eca98f612c Merge branch release/v9.3.0 into develop 2026-03-04 09:17:01 +00:00
c5f1a08422 Merge branch release/v9.3.0 into master 2026-03-04 09:16:59 +00:00
3b0c9cea7e Merge pull request 'Fix swap rgba for djvu' (#711) from fix/bug-75351 into release/v9.4.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/711
2026-03-03 13:34:27 +00:00
3dc0f482c8 Fix swap rgba for djvu 2026-03-03 16:21:20 +03:00
7043b36093 Merge branch hotfix/v9.3.1 into master 2026-03-03 11:57:42 +00:00
e429ff685f Merge branch 'release/v9.4.0' into feature/add-xls-writing 2026-03-03 17:14:06 +06:00
03334267c9 fix table conversion 2026-03-03 16:54:16 +06:00
417c3a55ec Merge branch 'hotfix/v9.3.1' into develop 2026-03-03 11:07:46 +03:00
90eb06ac20 fix/bug73635
fix bug #73635

(cherry picked from commit 84b2849f53730af5f544c8245800da4478e95463)
2026-03-02 20:58:39 +03:00
031c1c91e6 fix bug #80407 2026-03-02 18:31:45 +03:00
d17c22772f Merge pull request 'Fix bug 80395' (#708) from fix/bug-80395 into release/v9.4.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/708
2026-03-02 14:21:35 +00:00
2a09f9da90 Fix bug 80395 2026-03-02 17:05:50 +03:00
8a8e17562b fix defined names conversion 2026-03-02 19:17:40 +06:00
52f8640b10 Merge pull request 'fix prev' (#707) from fix/fix-bugs into hotfix/v9.3.1
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/707
2026-03-02 10:46:12 +00:00
9f36c04d33 fix title pos 2026-03-02 15:56:10 +06:00
8a1a45f403 fix prev 2026-03-02 10:04:34 +03:00
7dffc8245a Merge remote-tracking branch 'origin/hotfix/v9.3.1' into develop 2026-02-28 11:07:16 +03:00
869774bcc1 fix/bug79974
fix bug #79974
2026-02-27 18:59:52 +03:00
27103958fe add default theme clrs to chart 2026-02-27 20:44:47 +06:00
2b46e0251f Merge pull request 'fix for prev binary' (#705) from fix/fix-bugs into hotfix/v9.3.1
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/705
2026-02-27 13:42:47 +00:00
078a58772c fix for prev binary 2026-02-27 16:37:30 +03:00
95c9c95a2e fix chartsheet conversion 2026-02-27 17:43:23 +06:00
1753007900 Merge pull request 'Fix bug 80293' (#704) from fix/bug80293 into develop
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/704
2026-02-27 08:55:33 +00:00
f43230dcaf Fix bug 80293 2026-02-27 11:45:55 +03:00
df576b6e99 Merge pull request 'fix/fix-bugs' (#703) from fix/fix-bugs into release/v9.4.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/703
2026-02-26 15:23:19 +00:00
bb7d2ce8ee Merge pull request 'fix/bug79307' (#702) from fix/bug79307 into develop
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/702
2026-02-26 14:57:59 +00:00
ed8a47cbb7 fix/bug79307
fix bug #79307
2026-02-26 17:27:18 +03:00
3c707ebbf4 Fix bug 78204 2026-02-26 15:44:32 +03:00
3b2721e2da fix/bug79307
fix bug #79307
2026-02-26 15:15:23 +03:00
b430c3f296 fix bug #78514 2026-02-26 14:26:41 +03:00
c21827825b fix bug #79266 2026-02-26 13:22:58 +03:00
19c66750a8 fix/bug79307
fix bug #79307
2026-02-25 23:09:05 +03:00
0424c73db0 Merge pull request 'fix/fix-bugs' (#700) from fix/fix-bugs into release/v9.4.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/700
2026-02-25 16:54:14 +00:00
dc6a72892c Merge branch 'release/v9.4.0' into fix/fix-bugs 2026-02-25 19:47:12 +03:00
4b61f6e62a Merge branch 'release/v9.4.0' into feature/add-xls-writing 2026-02-25 22:36:59 +06:00
927f49291a Merge branch release/v9.3.0 into develop 2026-02-25 15:14:16 +00:00
72b57be353 fix numFmt conversion 2026-02-25 18:01:46 +06:00
ef295fc115 fix aboveAverage condFmt conversion 2026-02-25 16:36:39 +06:00
a62528e90e fix category axis conversion 2026-02-24 20:59:14 +06:00
d54f0326cd Merge branch release/v9.3.0 into master 2026-02-24 14:07:21 +00:00
269dd9b8bc Merge pull request 'Fix bugs 80287, 80300, 80281' (#699) from fix/bug-80287 into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/699
2026-02-24 14:00:15 +00:00
9da0b82ead Fix bug 80281 2026-02-24 16:45:55 +03:00
e3334cbea5 Fix bug 80300 2026-02-24 14:27:45 +03:00
01c928c724 Fix bug 80287 2026-02-24 13:41:01 +03:00
cf72c836a1 fix bug #79708 2026-02-24 12:33:36 +03:00
b9a905f6b2 fix bug #80221 2026-02-24 11:37:37 +03:00
644ec4e651 fix separate chart conversion 2026-02-24 14:05:03 +06:00
e5c1dc4bc3 Merge pull request 'fix bug #79951' (#698) from fix/fix_bugs into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/698
2026-02-23 16:20:47 +00:00
2c5cd93ac5 fix bug #79951 2026-02-23 19:14:03 +03:00
1ff1334746 Merge pull request 'Fix bugs 80285, 80286' (#697) from fix/pdf-bugs into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/697
2026-02-23 15:13:03 +00:00
de096d4229 Fix bug 80286 2026-02-23 17:58:42 +03:00
6c9d795167 Fix bug 80285 2026-02-23 15:39:09 +03:00
8116322018 Fix build on windows 2026-02-23 08:18:44 +03:00
5428c28874 Fix bug 80220 2026-02-23 02:50:05 +03:00
e389b4d799 Merge pull request 'Fix memory init' (#696) from fix/pict into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/696
2026-02-22 19:59:27 +00:00
8c607a429a Fix memory init 2026-02-22 22:55:54 +03:00
00e80b68f6 Merge pull request 'For bug 79086' (#695) from fix/pict into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/695
2026-02-22 19:46:58 +00:00
377317892d For bug 79086 2026-02-22 22:41:43 +03:00
ef77688ea2 Merge pull request 'For bug 80280' (#694) from fix/bug-80280 into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/694
2026-02-22 17:26:59 +00:00
eb756fab5c For bug 80280 2026-02-22 20:20:53 +03:00
2d2bb7cee7 Merge pull request 'Fix stroke with images' (#693) from fix/docx-renderer into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/693
2026-02-20 17:25:52 +00:00
1abe5b2dcc Fix stroke with images 2026-02-20 20:22:03 +03:00
2b4bdfdc05 Merge pull request 'Fix paragraph line spacing' (#692) from fix/docx-renderer into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/692
2026-02-20 16:13:46 +00:00
007c70bcc0 Fix paragraph line spacing 2026-02-20 19:11:20 +03:00
017b43dd66 Merge pull request 'fix bug #80155' (#691) from fix/fix-bugs into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/691
2026-02-20 14:40:36 +00:00
88a6760086 fix bug #80155 2026-02-20 17:39:07 +03:00
98a0551123 Merge pull request 'fix/bug80153' (#690) from fix/bug80153 into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/690
2026-02-20 14:36:15 +00:00
6ca34d9c69 fix several charts conversion 2026-02-20 19:20:59 +06:00
49cb1cdbca fix/bug80153
fix bug #80153 and #80152
2026-02-20 14:39:17 +03:00
73e00a5096 Merge pull request 'fix bug #80011' (#689) from fix/bug80011 into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/689
2026-02-20 11:11:46 +00:00
462eeda60c fix bug #80011 2026-02-20 12:22:26 +03:00
e1f81b6830 Merge pull request 'Fix bug 80240' (#688) from fix/bug-80240 into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/688
2026-02-20 08:39:06 +00:00
d63a6e2ba4 Fix buf 80240 2026-02-20 11:35:44 +03:00
b9cf1bd204 Merge pull request 'Fix bug #80228' (#687) from fix/bug-80228 into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/687
2026-02-20 08:04:03 +00:00
81ec569f59 Fix bug #80228 2026-02-20 03:55:40 +03:00
236913f902 Merge pull request 'Fix default CheckBox border style' (#686) from fix/pdf-bugs into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/686
2026-02-19 14:52:53 +00:00
2a6d9faaf8 Fix default CheckBox border style 2026-02-19 17:49:30 +03:00
7a78e1bbc6 Merge pull request 'Fix bug 80175' (#685) from fix/bug-80175 into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/685
2026-02-19 14:30:24 +00:00
f2db0df9f5 Fix bug 80175 2026-02-19 17:26:01 +03:00
c2dfac0d27 Merge pull request 'Fix bug 77348' (#684) from fix/bug-77348 into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/684
2026-02-19 11:55:58 +00:00
902497b299 Fix CropBox offset 2026-02-19 14:38:33 +03:00
473f6aef1e add several chart conversion 2026-02-19 16:58:22 +06:00
35aa329619 Fix MediaBox offset 2026-02-19 13:10:45 +03:00
6ace9b1cc5 Fix bug 77348 2026-02-19 13:09:50 +03:00
f6bc46c551 Merge pull request 'fix/bug80151' (#680) from fix/bug80151 into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/680
2026-02-18 16:44:28 +00:00
790049d14a Merge pull request 'fix/bug79610' (#682) from fix/bug79610 into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/682
2026-02-18 15:27:50 +00:00
ccc9f8f91f Merge pull request 'Fix bug 78772' (#681) from fix/bug78772 into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/681
2026-02-18 15:05:22 +00:00
f2eace2b53 Merge pull request 'fix/bug80009' (#679) from fix/bug80009 into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/679
2026-02-18 15:04:52 +00:00
dfe7a64e1a fix/bug79610 2026-02-18 16:33:49 +03:00
65f89c1e4b fix/bug79610
fix bug #79610
2026-02-18 16:32:15 +03:00
ea7ff62816 Fix bug 78772 2026-02-18 16:08:04 +03:00
4ac45f41cb fix bug #80011 2026-02-18 15:32:27 +03:00
947e5a1f5d fix bug #80151 2026-02-18 15:31:35 +03:00
3e724e6164 fix/bug80009
fix bug #80009
2026-02-18 11:59:26 +03:00
8ef0713adc Merge pull request 'fix bug #80172' (#678) from fix/fix-bugs into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/678
2026-02-18 07:37:33 +00:00
2f74b3b69b fix bug #80172 2026-02-18 10:30:46 +03:00
7ce71b6f5d Merge pull request 'fix/fix-bugs' (#677) from fix/fix-bugs into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/677
2026-02-18 06:28:02 +00:00
9b5847e653 for bug #76556 2026-02-17 22:36:15 +03:00
d81e26eff7 fix bug #80155 2026-02-17 22:11:25 +03:00
67e987e389 Merge pull request 'Fix bug 80103' (#676) from fix/bug80103 into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/676
2026-02-17 15:08:26 +00:00
bc91106ea4 Merge pull request 'Fix right postiton via width in font' (#675) from fix/docx-renderer into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/675
2026-02-17 13:44:18 +00:00
d91a19cbc2 Fix right postiton via width in font 2026-02-17 16:17:26 +03:00
970720575a Fix bug 80103 2026-02-17 14:51:18 +03:00
85027065e6 Add drawing group conversion 2026-02-17 15:01:53 +06:00
f11045c87f Merge pull request 'Fix bugs in html to md conversion' (#674) from fix/html2md into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/674
2026-02-17 07:14:42 +00:00
70e819c56b Added a new constructor to CStringBuilder 2026-02-17 01:52:35 +03:00
5a662b3567 Fix bug #80116 2026-02-17 01:51:21 +03:00
0f920531ac Fix bugs in html2md conversion 2026-02-16 22:25:31 +03:00
84d3ea7a21 Fix bug #80121 2026-02-16 20:16:50 +03:00
4893ff96fd Fix bug in html2md conversion 2026-02-16 18:45:44 +03:00
6a7791ae0a Fix bug #80119 2026-02-16 18:23:37 +03:00
78ac7bb427 Refactoring 2026-02-16 17:50:54 +03:00
8180a20cb8 Fix bug #80112 2026-02-16 17:37:59 +03:00
eb51861f39 fix bug #80117 2026-02-16 17:36:32 +03:00
e4cc737c38 . 2026-02-16 16:14:00 +03:00
f66c646c2c add drawingGroup writing 2026-02-16 19:00:09 +06:00
6c89a66b3d Merge pull request 'Fix set Kids for widget Parents' (#672) from fix/pdf-bugs into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/672
2026-02-16 12:49:12 +00:00
b127bd3ac1 Fix set Kids for widget Parents 2026-02-16 15:42:50 +03:00
0cca75b662 fix build 2026-02-16 15:39:29 +03:00
08dc0c99cf Merge pull request 'for bug #54521' (#579) from fix/bug54521 into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/579
2026-02-16 09:47:25 +00:00
d2af89a2f6 Merge pull request 'fix bug #80011' (#670) from fix/bug80011 into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/670
2026-02-16 09:46:48 +00:00
836787f151 fix bug #80012 2026-02-16 12:18:20 +03:00
eb78332705 Merge pull request 'Fix bug 80093' (#671) from fix/bug-80093 into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/671
2026-02-16 09:17:27 +00:00
f232d0ca51 Fix bug 80093 2026-02-16 12:11:25 +03:00
24d436fb9c fix bug #80011 2026-02-15 20:48:31 +03:00
1d362cf69a Merge remote-tracking branch 'origin/feature/add-xls-writing' into release/v9.3.0 2026-02-15 16:45:38 +03:00
6c0326d660 Merge pull request 'fix/bug79610' (#669) from fix/bug79610 into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/669
2026-02-14 19:23:55 +00:00
4400c9d4f4 Api => Asc.editor 2026-02-14 00:07:22 +03:00
71c7d25c9e fix/bug79610
fix bug #79610
2026-02-13 22:41:51 +03:00
ab1dd7a48b fix/bug79610
fix bug #79610
2026-02-13 22:34:41 +03:00
6e3d625420 Merge pull request 'fix/docx-renderer' (#668) from fix/docx-renderer into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/668
2026-02-13 16:11:11 +00:00
ebb0eb8136 Merge pull request 'Add signature info' (#667) from fix/pdf-signature into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/667
2026-02-13 15:24:55 +00:00
10f34fb67d Add signature info 2026-02-13 18:17:25 +03:00
98d2f62f9e Fix paragraphs splits with overlapping text lines 2026-02-13 18:07:58 +03:00
096df8fc31 Fix logic with paragraph lines 2026-02-13 16:48:47 +03:00
a7886c5cd6 Fix bugs 2026-02-13 15:27:18 +03:00
ee6ea683d1 Added definition of md text styles from html styles 2026-02-13 15:06:39 +03:00
9343f73818 Merge pull request 'Fix bug 80055' (#666) from fix/pdf-bugs into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/666
2026-02-13 11:53:56 +00:00
61aeb6f386 Fixed a bug with the initial number of the list element 2026-02-13 14:41:10 +03:00
06e8d136bf Merge pull request 'To Markdown conversion' (#660) from feature/html2md into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/660
2026-02-13 11:28:47 +00:00
c1d649b506 Fix bug 80055 2026-02-13 14:23:53 +03:00
4386e9c794 Fix shape merging 2026-02-12 23:12:00 +03:00
4900305b4a Merge branch 'release/v9.3.0' of https://git.onlyoffice.com/ONLYOFFICE/core into release/v9.3.0 2026-02-12 18:32:29 +03:00
e1f923c593 fix bug #79470 2026-02-12 18:32:03 +03:00
07ef2269ac Merge pull request 'For bug 80007' (#665) from fix/bug-80007 into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/665
2026-02-12 15:31:48 +00:00
cf44441645 For bug 80007 2026-02-12 18:29:43 +03:00
7157d209d7 add worksheet drawing conversion 2026-02-12 20:02:41 +06:00
64a560679c add cell anchor pos getter 2026-02-12 18:29:29 +06:00
2682e49090 fix drawing conversion 2026-02-12 18:28:28 +06:00
7fd4219ff4 add clientAnchorSheet writing 2026-02-12 16:35:48 +06:00
4f9c229f77 Merge pull request 'Fix bug 79949' (#664) from fix/bug-79949 into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/664
2026-02-12 09:10:37 +00:00
6d8454c39d Fix bug 79949 2026-02-12 12:03:08 +03:00
58deecba88 Merge pull request 'Fix bug #79894' (#663) from fix/bug-79894 into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/663
2026-02-11 16:06:57 +00:00
1940bc53f7 Fix bug #79894 2026-02-11 18:58:35 +03:00
a6ac765676 add office art client data writing 2026-02-11 21:24:12 +06:00
08624e8334 Merge pull request 'Fix bug 79999' (#662) from fix/pdf-bugs into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/662
2026-02-11 14:59:29 +00:00
1f078c8c49 Merge pull request 'Fix bug 79885' (#661) from fix/bug-79885 into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/661
2026-02-11 14:53:51 +00:00
e6036b37be Fix bug 79885 2026-02-11 17:51:17 +03:00
04f1c30036 The possible md conversion formats have been expanded 2026-02-11 17:44:05 +03:00
86f84f89de Fix bugs in html2md conversion 2026-02-11 17:30:42 +03:00
17b80ac96e fix bug #79968 2026-02-11 17:00:25 +03:00
710bfef301 Add clientAnchor writing 2026-02-11 17:32:08 +06:00
aa75825a73 Fix bug 79999 2026-02-11 13:53:29 +03:00
f74caacbd0 Merge pull request 'fix/bug56564' (#659) from fix/bug56564 into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/659
2026-02-11 10:50:48 +00:00
4d903b58b8 fix/bug56564
fix bug #56564
2026-02-11 13:45:41 +03:00
6434965f09 Merge pull request 'Fix pdf signature' (#658) from fix/pdf-signature into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/658
2026-02-11 09:03:17 +00:00
f60f957d00 Fix comment 2026-02-11 11:58:04 +03:00
bad5b172d5 Fix x2t 2026-02-11 11:37:55 +03:00
7b6f29a5f0 Merge pull request 'HTML to Markdown' (#657) from feature/html2md into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/657
2026-02-11 07:59:58 +00:00
b5e1cf9d06 Change PrepareSignature 2026-02-11 10:03:50 +03:00
0f73b2aa8b Added html to md conversion in x2t 2026-02-10 22:34:04 +03:00
e3b5d72ec8 add client anchor writing 2026-02-10 21:43:50 +06:00
8f8a9ad29b fix bug #56683 2026-02-10 16:12:41 +03:00
1417b4bbd4 add embedded chartsheet substream writing 2026-02-10 18:26:39 +06:00
87c9f66c58 Merge pull request 'Fix pdf bugs' (#656) from fix/pdf-bugs into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/656
2026-02-10 11:27:36 +00:00
d0a9d2cfe2 Merge pull request 'fix/bug78280' (#654) from fix/bug78280 into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/654
2026-02-10 11:19:41 +00:00
627d5913e6 Merge pull request 'feature/x2ttester' (#655) from feature/x2ttester into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/655
2026-02-10 10:57:05 +00:00
5ca60f6bcd Add md suppot and fix default delim in tsv 2026-02-10 13:55:38 +03:00
72f679b649 Fix actrion GoTo flag 2026-02-10 13:50:54 +03:00
c84c35933e Add more parms for tsv format 2026-02-10 13:44:07 +03:00
63f160641d Fix bug 79962
Add tsv format
2026-02-10 13:39:31 +03:00
7a8ccfdfa0 fix bug 2026-02-10 12:58:13 +03:00
6091a7b5cd Fix build 2026-02-10 11:58:52 +03:00
95b4461961 Fix bug 79937 2026-02-10 11:15:48 +03:00
ec5afc1f17 fix bug #79859 2026-02-10 11:11:04 +03:00
9dd13a2f74 Merge pull request 'Fix docx-renderer' (#653) from fix/docx-renderer into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/653
2026-02-10 06:30:00 +00:00
b850450c25 Fix build 2026-02-10 03:42:13 +03:00
098d40d44f Modification of the html converter 2026-02-10 02:18:38 +03:00
82769d3c0e Fix paragraph build 2026-02-09 23:30:30 +03:00
5121f74851 Fix subscript/superscript 2026-02-09 23:15:28 +03:00
6fa8b51541 Merge pull request 'Fix missprint' (#652) from fix/docx-renderer-missprint into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/652
2026-02-09 19:51:15 +00:00
3b32ba4d14 Fix missprint 2026-02-09 22:47:22 +03:00
e23acc8881 Merge pull request 'Fix flipY in tiles' (#651) from fix/docx-renderer into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/651
2026-02-09 18:23:25 +00:00
c266ffa85f Fix flipY in tiles 2026-02-09 21:13:18 +03:00
bd2af5f455 Merge pull request 'Fix bug 75900' (#648) from fix/bug-75900 into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/648
2026-02-09 15:54:39 +00:00
ec8c0182c3 Merge pull request 'Fix bug 79790' (#650) from fix/bug-79790 into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/650
2026-02-09 15:47:17 +00:00
04ad9d4e47 Merge pull request 'Fix bug 79879' (#649) from fix/bug-79879 into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/649
2026-02-09 15:47:04 +00:00
3261ba0d0c Fix bug 79790 2026-02-09 18:19:41 +03:00
2189934a50 Fix bug 79879 2026-02-09 17:45:04 +03:00
e3842c796a fix bug #79811 2026-02-09 17:08:56 +03:00
7507b6c71f Fix bug 75900 2026-02-09 16:48:07 +03:00
8a406c9612 fix value axis conversion 2026-02-09 19:44:40 +06:00
3a004e8495 fix scatter chart conversion 2026-02-09 17:47:16 +06:00
404748ec5a fix axis conversion 2026-02-09 14:46:19 +06:00
d4f7767c45 fix bug #78279 2026-02-08 12:19:50 +03:00
f91cc79e7d for bug #79472 2026-02-08 12:18:34 +03:00
b14e7fd3a2 Merge pull request 'fix/bug79610' (#646) from fix/bug79610 into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/646
2026-02-07 19:14:06 +00:00
fce8173ce4 Merge pull request 'Fix bug 78774' (#647) from fix/bug78774 into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/647
2026-02-07 19:13:34 +00:00
8f5bfef6b2 Merge pull request 'Fix bug 59750' (#645) from fix/bug67390 into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/645
2026-02-07 19:13:22 +00:00
f6bf73dfab Fix bug 78774 2026-02-06 18:48:55 +03:00
3b10e1a0f3 add axis hiding 2026-02-06 21:13:12 +06:00
f7555af6b3 fix/bug79610
fix bug #79610
2026-02-06 17:33:50 +03:00
3e09e5ad48 Fix bug 59750 2026-02-06 16:24:20 +03:00
655bc0698f Merge pull request 'Fix pdf signature' (#644) from fix/pdf-signature into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/644
2026-02-06 12:40:51 +00:00
e16b85f671 Fix x2t pdfSign 2026-02-06 15:04:30 +03:00
981b8b16a3 Fix unsuccessful signing 2026-02-06 14:26:54 +03:00
70aa8c7e64 add val axis style conversion 2026-02-06 17:13:37 +06:00
4144723822 Merge pull request 'fix/bug-79086' (#643) from fix/bug-79086 into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/643
2026-02-06 09:47:04 +00:00
2663e412ef Fix AppFonts initialize 2026-02-06 12:41:52 +03:00
9a91e8192c Fix xref 2026-02-06 11:34:38 +03:00
bff86db600 Merge branch 'develop' into feature/add-xls-writing 2026-02-06 14:05:44 +06:00
668804035a fix svg in base64 2026-02-06 10:47:59 +03:00
cb97ee9fdc Fix bug 79867 2026-02-06 09:31:41 +03:00
56b8e41875 Added some alternative tags 2026-02-05 23:38:21 +03:00
565b2ec494 Fix bugs 2026-02-05 23:09:46 +03:00
a243e60e5a add axis line format conversion 2026-02-05 22:00:39 +06:00
96ce3c22f1 Fix bug 79086 2026-02-05 18:57:33 +03:00
6b58358186 Create PrepareSignature and FinalizeSignature 2026-02-05 18:55:26 +03:00
6c95810f63 add chart gridlines 2026-02-05 21:25:54 +06:00
d9260e5eee Fix bug with heading styles 2026-02-05 17:26:33 +03:00
63510a1fe9 Merge pull request 'Fix bug #79431' (#642) from fix/bug-79478 into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/642
2026-02-05 13:00:42 +00:00
1e05ab9acb for bug #70264 2026-02-04 22:33:00 +03:00
c1236815a3 Fix bug #79431 2026-02-04 19:55:12 +03:00
c822a995c1 Merge pull request 'Fix bugs' (#641) from fix/bug-72703 into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/641
2026-02-04 14:04:36 +00:00
e612306d75 fix chart size 2026-02-04 19:54:10 +06:00
2d6382e61a Fix bug #79797 2026-02-04 16:51:54 +03:00
2f34fd917e Refactoring 2026-02-04 16:30:08 +03:00
024a5e0192 Merge pull request 'Fix pdf bugs' (#640) from fix/pdf-bugs into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/640
2026-02-04 11:26:56 +00:00
a6183fa4cd Fix bug 79336 2026-02-04 11:18:47 +03:00
13912c93ef Fix different FontKey 2026-02-04 10:54:57 +03:00
adcdbc164f Fix buid 2026-02-04 10:18:35 +03:00
a48a78c1c5 Merge pull request 'Fix clipRect clear' (#639) from fix/bug-79522 into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/639
2026-02-03 20:01:10 +00:00
da57bd115c Fix clipRect clear 2026-02-03 22:46:34 +03:00
71b21ea79d add window conversion for chartsheet 2026-02-03 21:42:48 +06:00
5fbb998524 For bug 79437 2026-02-03 18:15:35 +03:00
ea47a90763 Merge pull request 'fix/bug79616' (#637) from fix/bug79554 into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/637
2026-02-03 13:16:49 +00:00
daefd8744a Merge pull request 'Fix repeat font name' (#638) from fix/pdf-font into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/638
2026-02-03 12:30:38 +00:00
647327a0c5 Fix repeat font name 2026-02-03 15:12:56 +03:00
58b221f4fa fix/bug79616
for bug #79616
2026-02-03 13:31:14 +03:00
22eaf8241b fix legend pos conversion 2026-02-03 15:18:46 +06:00
64c7b7a3fd handout binary 2026-02-02 22:36:39 +03:00
858c2e14c8 Fix bug #79697 2026-02-02 20:54:26 +03:00
2024302fbe Merge pull request 'Fix bug 79443' (#617) from fix/bug-79443 into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/617
2026-02-02 17:42:29 +00:00
00f4752dda Fix bug #72703 2026-02-02 18:36:03 +03:00
90b329e06c fix sheet ref conversion 2026-02-02 20:34:04 +06:00
d286b8459b Add offset for unexisted symbol (last width) 2026-02-02 15:36:07 +03:00
ff93f1e8b3 Merge pull request 'Fix bug #79712' (#636) from fix/bug-79712 into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/636
2026-02-02 11:08:52 +00:00
65a4fa90a5 Fixed bugs 2026-02-01 23:53:35 +03:00
4471940b92 Fix bug #79712 2026-01-31 18:26:05 +03:00
c4daa0acd4 for bug #79472 2026-01-30 17:43:32 +03:00
6df0cf26f3 Merge pull request 'fix bug #79684' (#634) from fix/bug79684 into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/634
2026-01-30 14:24:20 +00:00
720d66ad74 Merge pull request 'fix bug #79698' (#633) from fix/bug79698 into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/633
2026-01-30 14:23:49 +00:00
e6522c6ce4 Merge pull request 'fix bug #79699' (#632) from fix/bug79699 into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/632
2026-01-30 14:23:23 +00:00
9b3c2291d8 Merge pull request 'Fix subset tag font' (#635) from fix/pdf-font into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/635
2026-01-30 13:49:31 +00:00
e7cfb67962 Fix subset tag font 2026-01-30 16:44:57 +03:00
8725be55f0 fix bug #79699 2026-01-30 18:48:21 +06:00
37ae77d0d2 fix bug #79698 2026-01-30 16:23:03 +06:00
4c6ded76a1 Merge pull request 'Fix bug 67390' (#631) from fix/bug67390 into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/631
2026-01-30 08:54:09 +00:00
2d8701cd4f Fix bug 67390 2026-01-30 11:25:45 +03:00
d5c321d47d fix bug #79684 2026-01-30 14:25:41 +06:00
bddfadabb2 fix bug #78280 2026-01-30 11:00:00 +03:00
324f7b3933 Merge pull request 'feature/add-xls-writing' (#630) from feature/add-xls-writing into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/630
2026-01-30 07:21:45 +00:00
edef6a83c8 Merge pull request 'feature/docx-renderer' (#629) from feature/docx-renderer into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/629
2026-01-30 05:02:42 +00:00
e7c21fb2cd Fix bugs 2026-01-30 06:43:34 +03:00
be8ba62c3f Merge pull request 'release/v9.3.0' from release/v9.3.0 into feature/docx-renderer 2026-01-29 22:26:04 +00:00
fda8c8e445 No calc asc/desc using spaces in text lines 2026-01-30 01:15:24 +03:00
d9ebae1724 Change single line width 2026-01-29 23:53:19 +03:00
92ec3d854e Added html to md conversion for some tags 2026-01-29 23:19:02 +03:00
f4867bd9f9 Fix more bugs 2026-01-29 22:26:37 +03:00
9b9da90dcc Fix bugs 2026-01-29 22:03:24 +03:00
cba4bc8085 add legend conversion 2026-01-29 20:41:24 +06:00
325c2d3000 Fix text line shape between lines of paragraph 2026-01-29 16:50:48 +03:00
3187913c8e fix bug #79660 2026-01-29 16:46:05 +03:00
8958d13b56 fix bug #78766 2026-01-29 15:25:40 +03:00
9d13526724 add line 3d chart conversion 2026-01-29 16:56:37 +06:00
93f70176bc add area chart3d conversion 2026-01-29 16:40:44 +06:00
e2ad965d7c add 3dBarChartConversion 2026-01-29 15:58:06 +06:00
d535aa64ef Merge pull request 'Fix bug 75486' (#607) from fix/bug75486 into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/607
2026-01-29 09:46:37 +00:00
c155a4c53a add chart3d conversion 2026-01-29 15:11:42 +06:00
97cbd8dcc7 Fix text shape offsets 2026-01-29 09:42:54 +03:00
5e58298d1e Migrated most of the html conversion to the new architecture 2026-01-29 00:38:08 +03:00
d38576085c Merge pull request 'fix/bug79554' (#627) from fix/bug79554 into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/627
2026-01-28 17:48:19 +00:00
46dd9efa2e for bug #47231 2026-01-28 16:58:30 +03:00
6af52920a2 fix/bug79554
fix bug #79554
2026-01-28 16:51:11 +03:00
f13baca136 Fix build with c++14 2026-01-28 16:16:32 +03:00
28a91a1519 add area chart conversion 2026-01-28 17:57:30 +06:00
0e48e65ef1 add radar chart conversion 2026-01-28 17:44:31 +06:00
ad1709d4af Merge pull request 'Fix include' (#626) from fix/pdf-font into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/626
2026-01-28 11:26:33 +00:00
e2c6ecec9b Fix include 2026-01-28 14:20:27 +03:00
ef55594f90 Merge pull request 'Fix pdf font' (#625) from fix/pdf-font into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/625
2026-01-28 09:48:08 +00:00
223bbe3347 Fix bug 79318 2026-01-28 12:23:29 +03:00
eca0cdb318 Fix GIDByUnicode for non-CID font 2026-01-28 11:35:21 +03:00
4a52368c30 Merge remote-tracking branch 'origin/release/v9.3.0' into release/v9.3.0 2026-01-27 16:23:22 +00:00
73f4e20c56 Fix qmake bug 2026-01-27 19:21:05 +03:00
d53768969b . 2026-01-27 16:20:16 +00:00
324d6ec0bd Merge pull request 'fix/bug79433' (#624) from fix/bug79433 into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/624
2026-01-27 13:25:07 +00:00
767b652ef2 fix/bug79433
fix bug #79433 and fix 51965
2026-01-27 16:10:42 +03:00
68f2f0760d fix surface conversion 2026-01-27 18:35:55 +06:00
694282a013 Merge pull request 'Fix bug 79426' (#623) from fix/bug-79426 into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/623
2026-01-27 10:39:07 +00:00
e64eeb26af Fix bug 79426 2026-01-27 13:31:41 +03:00
873b2b9351 Add scatter chart conversion 2026-01-27 16:23:03 +06:00
d5ecb00472 Add surf chart conversion 2026-01-27 16:22:46 +06:00
2ac6801afa add area chart conversion 2026-01-27 14:39:29 +06:00
213c65fe54 Add line chart conversion 2026-01-27 14:23:07 +06:00
8269c14207 Merge pull request 'fix/bug77970' (#622) from fix/bug77970 into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/622
2026-01-27 08:20:57 +00:00
f438a17779 fix bug #79483 2026-01-27 00:39:19 +03:00
9c8b739d0e fix bug #77970 2026-01-27 00:38:21 +03:00
a9dc790f92 Migrated most of the html conversion to the new architecture 2026-01-26 19:03:34 +03:00
7f0720bb95 Merge pull request 'Fix merging conts' (#621) from fix/docx-renderer-merge-conts-fix into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/621
2026-01-26 15:28:13 +00:00
846b212882 Fix merging conts 2026-01-26 18:22:05 +03:00
344a096e24 Merge pull request 'PdfWriter use embedded fonts' (#619) from fix/pdf-font into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/619
2026-01-26 14:07:14 +00:00
15eb4793f5 Fix CodeToUnicode and CodeToGID 2026-01-26 15:31:44 +03:00
3ce4b4bfe8 Merge pull request 'Fix readAnnotationsInfoFromBinary Link' (#620) from fix/pdf-action into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/620
2026-01-26 10:00:29 +00:00
b8fab6f4df Fix readAnnotationsInfoFromBinary Link 2026-01-26 12:56:03 +03:00
14bb45d2fe Migrated most of the html conversion to the new architecture 2026-01-25 22:53:08 +03:00
347c1f82a9 Migrated most of the html conversion to the new architecture 2026-01-25 01:39:48 +03:00
7ebf12c1e4 Complete PdfFont 2026-01-23 17:16:58 +03:00
1813e09e1f add chart title conversion 2026-01-23 20:02:11 +06:00
e32b48524e Migrated most of the html conversion to the new architecture 2026-01-22 20:16:47 +03:00
d2a986c480 Merge pull request 'fix/bug59965' (#618) from fix/bug59965 into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/618
2026-01-22 13:27:24 +00:00
73880f6207 fix/bug59965
fix #bug59965
2026-01-22 16:22:47 +03:00
24ad4adf6f Merge pull request 'fix/bug79432' (#616) from fix/bug79432 into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/616
2026-01-22 13:15:38 +00:00
e4ea19ed81 fix/bug79432
fix #bug79432
2026-01-22 15:59:33 +03:00
575e379c4b Develop PdfFont 2026-01-22 15:11:17 +03:00
86d8c7bfa3 Change anchor 2026-01-22 14:20:41 +03:00
a3e1efb75b add pie chart conversion 2026-01-22 17:13:59 +06:00
e1f7feb5c1 fix bar chart conversion 2026-01-22 15:43:49 +06:00
2a3f565b44 Fix bug 79443 2026-01-22 01:53:25 +03:00
13008c60e5 Merge pull request 'Fix signature size of xref' (#615) from fix/pdf-signature into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/615
2026-01-21 15:41:53 +00:00
df69099689 Fix Copy ProxyObject 2026-01-21 18:36:26 +03:00
4e6f6e44bd Fix clear ProxyObject 2026-01-21 18:32:44 +03:00
67b54dc371 Fix signature size of xref 2026-01-21 18:28:21 +03:00
b0c3172ae5 Remove wrong comment 2026-01-21 18:13:11 +03:00
91d21a80ac Add support sign params 2026-01-21 18:11:03 +03:00
e820a9c936 fix chart conversion 2026-01-21 19:08:27 +06:00
b38b12dfaf Merge pull request 'Fix empty password' (#614) from fix/pdf-password into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/614
2026-01-21 13:03:16 +00:00
39b9e89e77 Fix empty password 2026-01-21 16:01:24 +03:00
0b6ea2a399 Create PdfFont 2026-01-21 15:51:28 +03:00
eee3161833 save tsv 2026-01-21 13:53:11 +03:00
fc422bb2e7 fix chartsheet writing 2026-01-21 16:30:57 +06:00
f359f180bb Merge branch 'develop' into feature/add-xls-writing 2026-01-21 13:26:04 +06:00
b0338919fe [android] Add ooxmlsignature 2026-01-21 09:05:41 +03:00
41358e3308 Fix build 2026-01-20 23:38:47 +03:00
1a29fb1389 Merge pull request 'feature/ios-swiftc' (#613) from feature/ios-swiftc into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/613
2026-01-20 20:30:42 +00:00
2fa048303f Add ooxmlsirnature ref to x2t 2026-01-20 20:57:02 +03:00
79f8e14d07 The division of the html converter into components has begun 2026-01-20 20:22:40 +03:00
e837479426 Fix build 2026-01-20 19:57:20 +03:00
e8f68e3a40 Merge pull request 'for/bug70498' (#612) from for/bug70498 into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/612
2026-01-20 16:24:30 +00:00
702987e00c Merge pull request 'Password NULL and empty' (#608) from fix/pdf-password into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/608
2026-01-20 15:56:50 +00:00
83745da5f3 add attached label conversion 2026-01-20 21:47:55 +06:00
6b73faac12 fix variable 2026-01-20 17:53:04 +03:00
cab91648ce Merge pull request 'fix/bug74265' (#611) from fix/bug74265 into for/bug70498
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/611
2026-01-20 14:47:32 +00:00
57b51a8854 fix prev 2026-01-20 17:44:40 +03:00
4a84b8887f Use environment variables set from build_tools 2026-01-20 17:11:04 +04:00
23027e4c2c Merge pull request 'fix bug #79436' (#610) from fix/bug79436 into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/610
2026-01-20 12:31:17 +00:00
52c61219dc fix bug #79436 2026-01-20 16:57:10 +06:00
2c37dac18c Merge pull request 'For bug 59181' (#609) from fix/forbug59181 into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/609
2026-01-20 10:02:27 +00:00
aa7f104e60 Fix prev 2026-01-20 12:59:08 +03:00
83ea144c16 Merge branch 'release/v9.3.0' into fix/forbug59181 2026-01-20 12:22:50 +03:00
ea6fdc8872 For bug 59181 2026-01-20 11:47:09 +03:00
b64b31a972 Merge remote-tracking branch 'origin/release/v9.3.0' into develop 2026-01-20 11:35:55 +03:00
59fb6e4838 fix bug #79287 2026-01-20 11:16:58 +03:00
d38ce5b836 . 2026-01-19 22:23:33 +03:00
bb4ceb14e5 Password NULL and empty 2026-01-19 17:14:26 +03:00
ef9f25aa4d Fix bug 75486 2026-01-19 16:04:31 +03:00
0c2a5eac1b fix barChart conversion 2026-01-19 16:58:32 +06:00
0f85422315 Merge pull request 'fix bug #79291' (#595) from fix/bug79291 into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/595
2026-01-19 09:28:31 +00:00
38fa7436c0 Merge pull request 'fix/bug59181' (#603) from fix/bug59181 into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/603
2026-01-19 07:50:40 +00:00
e2ce58a055 Fix compilation for ios simulators 2026-01-18 20:54:56 +04:00
cadba798b0 for bug #70498 2026-01-18 16:54:18 +03:00
3941d5ced2 Add m_sCmapDir param 2026-01-16 21:20:38 +03:00
c529cc6d5c Merge pull request 'feature/docx-renderer' (#606) from feature/docx-renderer into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/606
2026-01-16 18:19:45 +00:00
31f274fbc4 add barChart crt conversion 2026-01-16 21:37:14 +06:00
58fe8ae679 Fix to compile both on ios and simulator
TODO: fails to compile for x86_64 ios_simulator
2026-01-16 18:35:26 +04:00
e3f77e11e0 Fix spacing problem 2026-01-16 17:17:57 +03:00
6e696daa15 add dv axis conversion 2026-01-16 20:15:31 +06:00
21dd930d30 Merge pull request 'Fix bug 79329' (#604) from fix/bug-79329 into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/604
2026-01-16 13:45:33 +00:00
c4708222c6 Merge branch 'develop' into feature/add-xls-writing 2026-01-16 19:02:08 +06:00
34aae89432 Merge pull request 'Fix bug #79297' (#605) from fix/bug-79297 into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/605
2026-01-16 12:53:48 +00:00
273454a391 Fix path reset 2026-01-16 14:53:19 +03:00
ae4edab75e For bug 79329 2026-01-16 14:20:28 +03:00
e61aa447f2 Merge pull request 'fix bug #76076' (#601) from fix/bug76076 into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/601
2026-01-15 14:30:24 +00:00
6609e84bd1 Merge pull request 'for bug #78691' (#602) from fix/bug78691 into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/602
2026-01-15 14:30:05 +00:00
402fe2c796 for bug #78691 2026-01-15 20:26:40 +06:00
e2aab8a241 Merge pull request 'Fix GetGIDByUnicode' (#599) from fix/pdf-text into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/599
2026-01-15 12:06:34 +00:00
555a251211 Fix GetGIDByUnicode 2026-01-15 15:04:42 +03:00
4a605d2424 Remove charspace fix 2026-01-15 13:33:47 +03:00
e49c4bc7fe Fix calcucaltion bug 2026-01-15 13:30:27 +03:00
f5a4e570bb Merge pull request 'Fix bug 78932' (#598) from fix/bug-78932 into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/598
2026-01-15 10:30:23 +00:00
af5a87327b fix bug #76076 2026-01-15 16:28:35 +06:00
11c637deeb Fix bug 78932 2026-01-15 13:07:47 +03:00
b3a7e20b35 Merge pull request 'release/v9.3.0' (#597) from release/v9.3.0 into feature/docx-renderer
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/597
2026-01-15 09:13:16 +00:00
915576a819 [android] add libStarMathConverter 2026-01-15 11:35:33 +03:00
38a07b3c4d Merge pull request 'Fix Redact repeat XObject' (#596) from fix/pdf-bugs into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/596
2026-01-14 12:48:08 +00:00
ead20d7bfe Merge commit '2ff12c06a428232d1742d5f76970e8e87d83dc4f' into develop 2026-01-14 15:39:56 +03:00
90dc792fae Update ContText.cpp 2026-01-14 10:22:51 +03:00
0561ed2182 Fix Redact repeat forms 2026-01-13 17:47:04 +03:00
116ec89cd2 add ivaxis conversion 2026-01-13 19:20:37 +06:00
f44de11437 fix bug #79291 2026-01-13 15:15:37 +06:00
f5395b8b5f Add support swift files (TODO: calculate sdk/arch) 2026-01-12 23:00:01 +03:00
614222ee44 Fix bug #79297 2026-01-12 22:05:31 +03:00
1b5d71a14c Fix Redact repeat images 2026-01-12 17:27:27 +03:00
2ff12c06a4 Merge pull request 'fix bug #79272' (#594) from fix/bug79272 into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/594
2026-01-12 11:45:21 +00:00
a3b6295058 fix bug #79272 2026-01-12 15:57:19 +06:00
efd9e3a29e Merge pull request 'Fix type of pdf print' (#593) from fix/pdf-print into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/593
2025-12-30 12:49:20 +00:00
0fa13f3659 Fix type of pdf print 2025-12-30 15:08:18 +03:00
8133e3f7b7 add axisParent conversion 2025-12-30 16:07:33 +06:00
7eabfd0838 Merge pull request 'fix/bug76636' (#592) from fix/bug76636 into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/592
2025-12-29 18:45:28 +00:00
3081d02c9c Add ser2crt conversion 2025-12-29 19:24:13 +06:00
fd2710e46e For bug 59181 2025-12-29 14:57:48 +03:00
bc076fb5b6 fix/bug76636
fix bug #76636
2025-12-29 14:09:56 +03:00
33fa3fa38b Merge pull request 'Feature pdf print' (#590) from feature/pdf-print into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/590
2025-12-29 11:03:41 +00:00
9bc03ffdef Fix pdf PrintPages 2025-12-29 13:56:42 +03:00
91afd3d340 Merge branch 'develop' into feature/add-xls-writing 2025-12-29 15:28:05 +06:00
6018add7a5 Merge remote-tracking branch 'origin/release/v9.3.0' into feature/pdf-print 2025-12-29 11:23:19 +03:00
b616ce6fd7 Merge branch 'release/v9.3.0' into develop 2025-12-28 14:35:30 +03:00
570482b60d fix build 2025-12-28 14:32:22 +03:00
201cae0e6f pdf PrintPages 2025-12-26 23:08:41 +03:00
1cca5e3c12 Merge branch hotfix/v9.2.1 into release/v9.3.0 2025-12-26 16:24:55 +00:00
048eebc613 Merge branch hotfix/v9.2.1 into develop 2025-12-26 16:24:54 +00:00
7d06219664 Merge branch hotfix/v9.2.1 into master 2025-12-26 16:24:51 +00:00
760b4f9079 Merge pull request 'fix bug #79244' (#588) from fix/bug79244 into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/588
2025-12-26 14:17:27 +00:00
578118380e add series style conversion 2025-12-26 19:53:11 +06:00
59f376908c Merge branch 'develop' into feature/add-xls-writing 2025-12-26 18:35:06 +06:00
38ceb61e4a Merge pull request 'Fix paths in pro file for starmath lib' (#589) from fix/build-starmath into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/589
2025-12-26 11:42:54 +00:00
b3a76d5678 Fix paths in pro file 2025-12-26 14:43:03 +04:00
c2d1bf113b fix bug #79244 2025-12-26 15:18:32 +06:00
bde1115962 Merge remote-tracking branch 'origin/release/v9.3.0' into feature/pdf-print 2025-12-26 10:19:42 +03:00
d8dc82ea35 Strip binaries on macos 2025-12-26 01:18:06 +03:00
0ef0518f1a Remove old linker flag on macos 2025-12-25 23:11:46 +03:00
f2da15defa Fix previous commit 2025-12-25 23:01:52 +03:00
e3272a5e91 Add strip binaries 2025-12-25 21:50:17 +03:00
d29dae37cb Merge pull request '[mac] Fix path to binary in docbuilder.py' (#587) from fix/py-mac-docbuilder into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/587
2025-12-25 18:31:07 +00:00
d82c96dc0f Fix path to binary in docbuilder.py on mac 2025-12-25 22:18:09 +04:00
69948ba383 . 2025-12-25 16:36:20 +03:00
d04f9cb8cf Merge pull request 'feature/EQN2OOXml2' (#419) from feature/EQN2OOXml2 into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/419
2025-12-25 12:50:58 +00:00
5d6caf8a93 Add BRAI records conversion 2025-12-25 18:10:16 +06:00
f6ede7a53f Merge pull request 'Feature pdf new renderer command' (#586) from feature/pdf-new-command into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/586
2025-12-25 11:37:22 +00:00
3839ab4c15 Brush offset, brush scale, tile flip 2025-12-25 14:26:35 +03:00
e936b0e4e7 Merge branch hotfix/v9.2.1 into master 2025-12-25 10:57:58 +00:00
6283a68841 add seriesFormat conversion 2025-12-25 16:06:52 +06:00
75477e8c03 fix text direction 2025-12-25 12:30:33 +03:00
527cc5f89f Merge branch 'release/v9.3.0' into develop 2025-12-25 11:53:08 +03:00
f4cb421b49 refactoring 2025-12-25 11:51:44 +03:00
83d8a073a7 Merge remote-tracking branch 'origin/release/v9.3.0' into fix/fix-bugs 2025-12-25 09:12:16 +03:00
55ba36f4d2 Merge pull request 'Add logs during snapshot creation' (#585) from feature/v8-snapshots-android into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/585
2025-12-24 18:58:57 +00:00
f760d03281 Remove LOGD in platform-common code 2025-12-24 22:57:52 +04:00
50ae7db2f0 add area format conversion 2025-12-24 17:38:27 +06:00
0e02919540 Merge pull request 'release/v9.3.0' (#584) from release/v9.3.0 into feature/EQN2OOXml2
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/584
2025-12-24 10:59:04 +00:00
1237991ffb Fix typo 2025-12-24 13:11:47 +03:00
5e5293b77b Merge remote-tracking branch 'origin/release/v9.3.0' into fix/fix-bugs 2025-12-24 12:35:09 +03:00
8250b59558 Test ConvertToRasterBase64 2025-12-24 11:10:19 +03:00
646c29166e Merge remote-tracking branch 'origin/feature/texture-fill' into release/v9.3.0 2025-12-23 19:34:09 +03:00
a2fc927b39 Resolve merge conflict 2025-12-23 17:58:22 +03:00
b6f024b73f Refactoring 2025-12-23 16:43:29 +03:00
3aca7bec15 Merge pull request 'For bug 79199' (#582) from fix/bug-79199 into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/582
2025-12-23 13:40:02 +00:00
078ec02efd For bug 79199 2025-12-23 16:23:42 +03:00
dd17cb7243 add frame conversion 2025-12-23 19:16:45 +06:00
deff23eaac Merge pull request 'Fix bugs' (#581) from fix/svg into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/581
2025-12-22 12:58:25 +00:00
b3988b002f add chartformats conversion 2025-12-22 18:51:32 +06:00
db2a9e88a1 Merge pull request 'Fix bug 79153' (#580) from fix/bug-79153 into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/580
2025-12-22 10:11:01 +00:00
a8fe05fb6a Fix bug 79153 2025-12-22 12:15:15 +03:00
bb3091b6f1 Merge branch 'develop' into feature/add-xls-writing 2025-12-22 13:26:37 +06:00
d908cb668e Refactoring sysroots 2025-12-22 05:55:07 +03:00
d595d3ea86 Refactoring sysroots 2025-12-20 23:42:01 +03:00
dde96288ed for bug #54521 2025-12-19 16:21:52 +06:00
41d79b0df6 Merge pull request 'Fix bug 79082' (#578) from fix/bug-79082 into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/578
2025-12-19 10:11:19 +00:00
2330f1dae8 Fix unicode=code when isCIDFont 2025-12-19 13:02:53 +03:00
8f108582b9 Fix bug 79082 2025-12-19 12:42:44 +03:00
6c6d575908 Merge pull request 'Fix bug 79141' (#577) from fix/bug-79141 into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/577
2025-12-19 07:41:26 +00:00
14dd41a2a2 Fix bug 79141 2025-12-19 10:24:42 +03:00
b000343b86 For bug 59181 2025-12-18 17:59:59 +03:00
c7e1250287 Merge pull request 'fix text paragraph conversion' (#508) from fix/TextStyle into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/508
2025-12-18 14:53:16 +00:00
dc6ca55b57 For bug 79141 2025-12-18 16:07:37 +03:00
707aab41f3 refactoring 2025-12-18 14:42:44 +03:00
fba3767e36 Merge pull request 'add tsv conversion support' (#576) from feature/add-tsv-conversion into release/v9.3.0
fix bug #47231
2025-12-18 09:42:13 +00:00
7b8eae26c1 add tsv conversion support 2025-12-18 14:51:55 +06:00
c445c0444d Merge pull request 'fix linux build' (#575) from fix/linux-build into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/575
2025-12-18 08:09:58 +00:00
94edfff846 fix linux build 2025-12-18 14:02:42 +06:00
482810712e Merge branch hotfix/v9.2.1 into develop 2025-12-17 15:27:40 +00:00
43ba8fca21 fix bug #71085 2025-12-17 17:30:51 +03:00
f38759d071 Refactoring 2025-12-17 17:29:48 +03:00
52e47745de Added the latex formula processing flag in md 2025-12-17 14:49:11 +03:00
554d3d0dfd Fix bug in html 2025-12-17 14:48:15 +03:00
c9100737e0 fix prev 2025-12-17 14:38:52 +03:00
a22f0bfb60 Merge branch hotfix/v9.2.1 into master 2025-12-17 11:33:19 +00:00
d21b44a0b8 Merge pull request 'Fix libfont' (#574) from fix/libfont into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/574
2025-12-17 11:23:53 +00:00
0da5ad2f48 Fix libfont 2025-12-17 14:19:57 +03:00
8611c5f781 Fix build 2025-12-17 12:39:12 +03:00
ea338db68a add chart drawing conversion 2025-12-17 14:17:37 +06:00
5089a76b43 Merge pull request 'Feature docx-renderer' (#573) from feature/docx-renderer into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/573
2025-12-17 08:14:05 +00:00
a8678c5d10 Add _GetGIDByUnicode 2025-12-17 11:10:22 +03:00
ac5c7d6d76 refactoring 2025-12-16 17:09:33 +03:00
080ae0d924 Merge remote-tracking branch 'origin/hotfix/v9.2.1' into release/v9.3.0 2025-12-16 16:10:00 +03:00
77c9bd8c6d Merge pull request 'fix rotWithShape' (#572) from fix/fix-bugs into hotfix/v9.2.1 2025-12-16 13:09:35 +00:00
8144f98bb8 fix rotWithShape 2025-12-16 16:08:23 +03:00
aec1220bff Create GetGIDByUnicode 2025-12-16 15:41:14 +03:00
76f3afc6c0 Merge branch 'develop' into feature/add-xls-writing 2025-12-16 16:16:04 +06:00
3e78043cdd Merge pull request 'fix xls conversion' (#571) from fix/xls-conversion into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/571
2025-12-16 07:37:49 +00:00
0319918827 fix xls conversion 2025-12-16 13:33:30 +06:00
80d8f4b12e Merge remote-tracking branch 'origin/hotfix/v9.2.1' into release/v9.3.0 2025-12-16 10:29:05 +03:00
c52cfd0886 Merge pull request 'fix bug #78986' (#570) from fix/bug78986 into hotfix/v9.2.1
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/570
2025-12-15 18:09:15 +00:00
4c9a24bf71 fix bug #78986 2025-12-15 21:07:19 +03:00
9ece4889a1 Add ordering for any object 2025-12-15 13:28:16 +03:00
00c24f9d68 Add fix with two lines in paragraph 2025-12-15 12:10:43 +03:00
0223b1beab Fix missprint 2025-12-12 16:20:42 +03:00
5c15b76598 Merge branch 'release/v9.3.0' of https://git.onlyoffice.com/ONLYOFFICE/core into release/v9.3.0 2025-12-12 14:57:04 +03:00
72315df901 Merge pull request 'Fix bug 78919' (#569) from fix/bug-78919 into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/569
2025-12-12 11:19:15 +00:00
cb0e361490 Fix bug 78919 2025-12-12 14:08:52 +03:00
db279bd725 Merge branch 'release/v9.3.0' of https://git.onlyoffice.com/ONLYOFFICE/core into release/v9.3.0 2025-12-12 12:21:50 +03:00
40c4c922c1 Merge pull request 'fix xls record size check' (#568) from fix/record-size-check into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/568
2025-12-12 09:18:33 +00:00
67f287f30f fix xls record size check 2025-12-12 14:58:43 +06:00
964a44ed93 . 2025-12-11 19:51:50 +03:00
57984ca8a2 Merge branch 'hotfix/v9.2.1' into release/v9.3.0 2025-12-11 17:05:36 +03:00
a30f7dfdf4 Merge pull request 'Fix bug 65734' (#567) from fix/bug65734 into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/567
2025-12-11 14:04:21 +00:00
b369c32e9e fix value array xlsx 2025-12-11 17:03:42 +03:00
40a4fa1a92 Fix bug 65734 2025-12-11 17:02:56 +03:00
3870d23511 Realize AddPath in IRenderer 2025-12-11 15:58:40 +03:00
9c12c0b30a Merge remote-tracking branch 'origin/release/v9.3.0' into develop 2025-12-11 11:20:42 +03:00
2779542061 Merge branch 'hotfix/v9.2.1' into release/v9.3.0 2025-12-11 11:20:23 +03:00
e232fc779d Merge remote-tracking branch 'origin/hotfix/v9.2.1' into develop 2025-12-11 11:19:31 +03:00
3209c8e42e Merge pull request 'fix/fix-bugs-9.2.1' (#566) from fix/fix-bugs-9.2.1 into hotfix/v9.2.1
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/566
2025-12-11 08:16:12 +00:00
037057ea7a fix bug #78960
(cherry picked from commit bebb39a619)
2025-12-11 11:13:01 +03:00
d373a8cc4c fix bug #78953
(cherry picked from commit 84847f1e74)
2025-12-11 11:09:34 +03:00
13e2efe724 fix bug #78955
(cherry picked from commit 6ea64599bd)
2025-12-11 11:08:56 +03:00
b09d441987 fix bug #78958
(cherry picked from commit e15391ea35)
2025-12-11 11:06:44 +03:00
9e835d5cc1 Merge pull request 'For bug 79029' (#565) from fix/bug-79029 into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/565
2025-12-11 07:24:25 +00:00
f75df05824 Fix SetDV for radiobutton 2025-12-11 10:14:13 +03:00
0d6d273573 Fix bug #74628 2025-12-10 19:07:26 +03:00
d7a1642a62 Merge pull request 'Fix bug 79005' (#564) from fixbugs/rtf into release/v9.3.0 2025-12-10 15:12:28 +00:00
d74899a116 Fix bug 79005 2025-12-10 18:08:20 +03:00
981df3fce7 add chart sheet conversion 2025-12-10 20:43:38 +06:00
d0dfd6737c [x2t] Add m_sSigningKeyStorePath to params.xml and SIGNING_KEYSTORE_PASSPHRASE to env for pdf 2025-12-10 16:50:43 +03:00
05d7d88481 Add logs during snapshot creation 2025-12-10 17:17:51 +04:00
cec10b7058 Fix problem with shape top and height 2025-12-10 15:58:50 +03:00
c3b3a1b5ef Fix SetDV for radiobutton 2025-12-10 15:23:40 +03:00
47258d9c30 Fix typo 2025-12-10 15:23:29 +03:00
10ab7009a1 Refactoring 2025-12-10 15:23:22 +03:00
3623b0970b Merge pull request 'Fix bug 78932' (#563) from fix/bug-78932 into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/563
2025-12-10 11:38:48 +00:00
7ecab52601 Add Ascent/Descent bot and top in shape form 2025-12-10 12:54:01 +03:00
9fedabc0e2 Fix write Opt radiobutton at child 2025-12-10 12:46:52 +03:00
85d98daedd Merge branch 'develop' into feature/add-xls-writing 2025-12-10 15:43:25 +06:00
fa46455e74 Fix Opt radiobutton at child 2025-12-10 12:19:26 +03:00
0c87e66785 Fix Parent page 2025-12-10 12:17:52 +03:00
9dacd4a548 Merge pull request 'fix bug #54521' (#562) from fix/bug54521 into develop
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/562
2025-12-10 09:17:46 +00:00
e815f39905 Fix bug 2025-12-10 12:04:57 +03:00
fb8a72cd6b fix bug #54521 2025-12-10 15:01:52 +06:00
ad6113cf21 Fix bugs 2025-12-10 11:50:57 +03:00
11914f8dc2 Fix non-collecting meta-info 2025-12-10 11:30:22 +03:00
50b2656c44 Change comment 2025-12-10 11:12:29 +03:00
39235f7fd6 Add ignoring meta-info in covertion and add bFontSubstitution 2025-12-10 11:10:22 +03:00
d2527e5707 Fix stretch not rotate 2025-12-09 19:46:05 +03:00
3484834b9d Test PrintPdf 2025-12-09 18:45:41 +03:00
81b4ba3493 Rollback 2025-12-09 16:28:15 +03:00
44e217cf7c Move AddPath to IRenderer 2025-12-09 15:53:54 +03:00
61311457be Merge pull request 'fix bug #78958' (#561) from fix/bug78958 into develop
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/561
2025-12-09 12:33:45 +00:00
e15391ea35 fix bug #78958 2025-12-09 16:43:05 +06:00
fefeb483e5 Fix bug 78932 2025-12-09 12:56:53 +03:00
e31e02d993 Font substitution info 2025-12-09 10:42:13 +03:00
5c7ef5a6eb add rdValueData 2025-12-08 23:42:44 +03:00
bcdcfa8bf7 fix bug #74265 2025-12-08 16:36:25 +03:00
fc110a004d Merge remote-tracking branch 'origin/feature/pdf-link' into develop 2025-12-08 11:33:57 +03:00
12d33fad53 Merge remote-tracking branch 'origin/develop' into feature/pdf-link 2025-12-08 11:31:42 +03:00
2534d2b5c9 Fix swap rectangle 2025-12-08 11:20:59 +03:00
7019b192bd Merge pull request 'fix bug #78955' (#558) from fix/bug78955 into develop
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/558
2025-12-05 14:30:49 +00:00
ac97a5680b Merge pull request 'fix bug #78960' (#559) from fix/bug78960 into develop
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/559
2025-12-05 14:24:41 +00:00
bebb39a619 fix bug #78960 2025-12-05 20:10:56 +06:00
1ee8baa672 Develop PrintPages 2025-12-05 17:06:26 +03:00
d014383a6d Merge pull request 'fix/bug59965' (#557) from fix/bug45616 into develop
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/557
2025-12-05 13:45:12 +00:00
6422ce7f78 Fix bugs in html 2025-12-05 15:55:23 +03:00
31f7136f70 Fix bug #78915 2025-12-05 14:05:19 +03:00
f2023f626b fix/bug59965
fix bug #59965
2025-12-05 13:57:34 +03:00
6ea64599bd fix bug #78955 2025-12-05 16:09:45 +06:00
d1d94f481d . 2025-12-04 18:49:57 +03:00
82eb921f05 Merge pull request 'fix bug #78953' (#556) from fix/bug78953 into develop
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/556
2025-12-04 15:22:13 +00:00
84847f1e74 fix bug #78953 2025-12-04 21:19:39 +06:00
3730827cd8 Create PrintPages 2025-12-04 17:51:23 +03:00
eab6d5530b Fix build 2025-12-04 11:43:56 +03:00
dd00be6dce add fontlist writing 2025-12-04 13:53:42 +06:00
8391667147 Merge pull request 'Fix bug #48033' (#554) from fix/rtf into develop
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/554
2025-12-03 14:26:26 +00:00
b8748e40d5 Merge pull request 'release/v9.2.0' (#555) from release/v9.2.0 into feature/docx-renderer
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/555
2025-12-03 12:48:30 +00:00
39da47bc21 Fix bug #48033 2025-12-03 12:57:51 +03:00
3a201b8b28 Merge pull request 'fix bug #78778' (#553) from fix/bug78778 into develop
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/553
2025-12-02 14:04:25 +00:00
bbfbe4a149 Merge remote-tracking branch 'origin/fix/bug-78854' into develop 2025-12-02 16:28:20 +03:00
0c1c57ccb3 Fix bug 78854 2025-12-02 16:27:25 +03:00
fa532edad6 Deferred Link resolution 2025-12-02 15:10:49 +03:00
df82306306 Merge remote-tracking branch 'origin/develop' into feature/pdf-link 2025-12-02 12:59:10 +03:00
7a3464b985 Fix test 2025-12-02 12:56:54 +03:00
49924e23ac AcroForm at the beginning 2025-12-02 12:56:07 +03:00
b5f0b39258 Remove pure virtual functions 2025-12-02 11:22:12 +03:00
3f6a800dd8 Rollback 2025-12-02 02:06:17 +03:00
1c8ad7a5c4 Add docxmethods for test 2025-12-02 01:44:07 +03:00
8464d3aeb7 Add AddPath method for test 2025-12-02 01:41:15 +03:00
ed939ebd1d Add html methods for test 2025-12-02 01:37:30 +03:00
fe6c5614d4 Add pdf methods for test 2025-12-02 01:24:49 +03:00
1eaac39e48 . 2025-12-01 22:34:28 +03:00
7624e24027 Merge remote-tracking branch 'origin/master' into develop 2025-12-01 21:53:15 +03:00
44ffa4b72e For bug 78854 2025-12-01 19:59:30 +03:00
10bdf2703a Merge pull request 'fix/bug69510' (#552) from fix/bug69510 into develop
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/552
2025-12-01 16:09:59 +00:00
c488384dbc fix/bug69510
fix bug #69510
2025-12-01 18:57:08 +03:00
cd80bca553 Fix fill with context color in svg 2025-12-01 16:49:44 +03:00
6e49670513 Implemented support for the BaselineShift property in svg 2025-12-01 16:13:49 +03:00
b1b3e1fb7c Merge branch release/v9.2.0 into master 2025-12-01 07:25:12 +00:00
d78487e0f5 . 2025-11-29 12:25:03 +03:00
5069b68247 fix build 2025-11-28 20:46:03 +03:00
31433e20de Fix year detection on windows 2025-11-28 19:55:26 +03:00
86d0d2113e . 2025-11-28 17:30:28 +03:00
8f2b4e4153 Merge remote-tracking branch 'origin/feature/add-xls-writing' into develop 2025-11-28 15:03:05 +03:00
0be867c47d for bug #78766 2025-11-28 15:02:03 +03:00
78aae7e9d0 Merge pull request 'fix/bug76076' (#551) from fix/bug76076 into develop
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/551
2025-11-28 11:58:23 +00:00
10e63543dc Merge pull request 'fix bug #77811' (#550) from fix/bug77811 into develop
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/550
2025-11-28 11:57:22 +00:00
900cf01902 Merge pull request 'fix bug #78487' (#549) from fix/bug78487 into develop
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/549
2025-11-28 11:56:50 +00:00
f6a52876ce Fix bug 78801 2025-11-27 18:26:36 +03:00
45ad566eb1 Merge pull request 'Fix bug #75486' (#548) from fix/rtf into develop
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/548
2025-11-27 15:09:08 +00:00
5bbea51848 Fix bug #75486 2025-11-27 18:07:12 +03:00
28a1828000 fix bug #78778 2025-11-27 17:43:59 +06:00
816430e0e2 Generate doctrenderer embed 2025-11-27 13:40:37 +03:00
29a29cc818 Fix bug 78786 2025-11-27 13:37:05 +03:00
bf66c1d9c0 fix bug #78766 2025-11-27 11:39:26 +03:00
2a3982a884 Merge pull request 'Fix bug #69318' (#546) from fix/rtf into develop
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/546
2025-11-27 08:12:46 +00:00
9f94166f82 Fix bug 78773 2025-11-27 10:37:43 +03:00
f11beb659f Merge pull request 'Fix html bugs' (#547) from fix/html into release/v9.2.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/547
2025-11-26 16:37:47 +00:00
9a9182a1e9 Fix bug #71375 2025-11-26 19:22:01 +03:00
c7cce459bc Fix bug #78770 2025-11-26 19:21:27 +03:00
b5fb8a34dc fix shared formulas conversion 2025-11-26 19:54:45 +06:00
11f0c937f4 Fix bug #69318 2025-11-26 16:28:07 +03:00
5e435d322f Merge branch 'develop' into feature/add-xls-writing 2025-11-26 17:03:08 +06:00
05660e8c31 Merge pull request 'Fix libVLC build for win_arm64' (#545) from fix/libvlc-winarm64 into release/v9.2.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/545
2025-11-26 10:05:40 +00:00
b9ff6ba943 Fix libVLC build for win_arm64 2025-11-26 01:59:44 -08:00
d603e4f5dd Merge pull request 'Fix bug 78733' (#544) from fix/bug-78733 into release/v9.2.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/544
2025-11-26 07:25:21 +00:00
207dd32a5d Fix bug 78733 2025-11-26 10:22:54 +03:00
f2d0d7ac4c Fix bug 74149 2025-11-25 23:08:21 +03:00
842d17f79e Merge pull request 'fix/bug37832' (#543) from fix/bug37832 into develop
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/543
2025-11-25 13:55:07 +00:00
d48a28fe1d Fix Redact merge image&form 2025-11-25 16:42:16 +03:00
2a22c5e1f3 fix/bug37832
fix bug #37832
2025-11-25 15:30:06 +03:00
629a35213e Merge remote-tracking branch 'origin/release/v9.2.0' into develop 2025-11-24 22:30:18 +03:00
7b995bb45f Merge pull request 'fix bug #78714' (#542) from fix/bug78714 into release/v9.2.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/542
2025-11-24 19:24:33 +00:00
08502f0b24 fix bug #78714 2025-11-25 00:50:38 +06:00
aeca319710 Merge pull request 'fix bug #78713' (#541) from fix/fix-bugs into release/v9.2.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/541
2025-11-24 18:24:15 +00:00
7425d53eb3 fix bug #78713 2025-11-24 20:58:34 +03:00
a056b2e4a9 Merge pull request 'Fix direction determination' (#540) from fix/boolean-op into develop
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/540
2025-11-24 14:46:42 +00:00
2dd35a7d81 Fix direction determination 2025-11-24 17:31:01 +03:00
080d89c8a0 Merge remote-tracking branch 'origin/fix/bug69510' into develop 2025-11-24 15:57:45 +03:00
1809f7f4c2 Merge remote-tracking branch 'origin/fix/pdf-redact' into develop 2025-11-24 15:16:17 +03:00
4bfd4f0a08 Fix Encrypt with Redact 2025-11-24 15:13:35 +03:00
3ef5651dfd fix/bug69510
fix bug #69510
2025-11-24 14:52:55 +03:00
8231809ef0 fix bug #78487 2025-11-24 16:42:46 +06:00
7f3d073d63 Fix hierarchy of heading levels 2025-11-24 13:12:55 +03:00
5f09e91944 . 2025-11-23 12:39:22 +03:00
f4359e0b7f no message 2025-11-22 17:25:10 +03:00
ca9cf4ee61 . 2025-11-21 16:58:09 +03:00
f52538f66a . 2025-11-21 15:52:56 +03:00
bd76b2add0 Merge pull request 'Fix bug 78624' (#539) from fix/bug-78624 into release/v9.2.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/539
2025-11-21 11:18:36 +00:00
0436e39722 Fix bug 78624 2025-11-21 13:52:20 +03:00
15359be125 fix bug #77811 2025-11-21 16:10:49 +06:00
07be806ae3 Merge pull request 'Fix bug 74748' (#536) from fix/bug-74748 into release/v9.2.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/536
2025-11-21 09:47:22 +00:00
fc2a12c6f2 Merge remote-tracking branch 'origin/fix/bug69510' into develop 2025-11-21 10:34:42 +03:00
42030372fe fix logging 2025-11-21 10:29:36 +03:00
bbf6c2d8e9 fix/bug69510
fix bug #69510
2025-11-20 23:42:25 +03:00
cb15cc18eb Merge pull request 'fix/bug69510' (#538) from fix/bug69510 into develop
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/538
2025-11-20 11:46:32 +00:00
389bf976a9 fix/bug69510
fix bug #69510
2025-11-20 14:41:10 +03:00
4d1b516cc9 Merge remote-tracking branch 'origin/feature/pdf-password' into develop 2025-11-20 13:28:08 +03:00
600a59c966 Fix Open with owner password 2025-11-20 13:11:37 +03:00
94f06bf997 Merge pull request 'fix bug #78614' (#537) from fix/bug78614 into release/v9.2.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/537
2025-11-20 10:09:25 +00:00
230316aefa fix bug #78614 2025-11-20 12:51:35 +03:00
66b2f3c828 Fix bug 78602 2025-11-20 12:48:09 +03:00
64e077da19 For bug 76845 2025-11-20 12:08:43 +03:00
499fe52b8c Merge remote-tracking branch 'origin/release/v9.2.0' into develop 2025-11-20 11:31:17 +03:00
6f9c376040 Create CheckPerm 2025-11-20 10:41:43 +03:00
f0b266793f Refactoring 2025-11-19 23:24:05 +03:00
490281dda0 Fix compare double 2025-11-19 23:14:28 +03:00
b98b808cda Delete unused methods 2025-11-19 22:40:25 +03:00
6c77718f17 Fix reset rotation 2025-11-19 22:30:47 +03:00
1e18352e77 Create CheckOwnerPassword 2025-11-19 18:23:23 +03:00
c3f4f32702 fix read alternative drawing 2025-11-19 18:17:33 +03:00
50c7e106fb Merge pull request 'Fix bug #78449' (#535) from fix/bug-78449 into release/v9.2.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/535
2025-11-19 15:16:23 +00:00
6b5ee390a2 Fix bug #78449 2025-11-19 18:08:55 +03:00
6df7a7e01e Merge pull request 'Fix bug #53908' (#534) from fix/rtf into develop
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/534
2025-11-19 13:54:00 +00:00
6167f23a08 Fix bug #53908 2025-11-19 15:36:42 +03:00
7c544729bc Fix drawForm 2025-11-19 13:23:51 +03:00
74a2b3b06f Fix Not rotate 2025-11-18 22:41:23 +03:00
8f3e19a5db Fix offset 2025-11-18 22:06:42 +03:00
d60c102dbb fix xlst->xlsb conversion 2025-11-18 19:41:06 +06:00
9049e2e6a8 Merge pull request 'Fix bugs' (#533) from fix/metafile into release/v9.2.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/533
2025-11-18 11:26:53 +00:00
67c6707072 Merge pull request 'Fix bug 76845' (#531) from fix/bug-76845 into release/v9.2.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/531
2025-11-18 08:10:19 +00:00
0c29a5d436 Fix bug 76845 2025-11-18 11:06:10 +03:00
d709598563 Fix SaveRGBAToStream 2025-11-18 10:32:38 +03:00
0019f589bc Fix scale tile texture 2025-11-18 10:12:59 +03:00
02d492ff90 Fix typo 2025-11-17 23:02:02 +03:00
a7026ccb8d Fix bug #77816 2025-11-17 23:01:50 +03:00
200c17ee40 Fix not rotate 2025-11-17 19:37:30 +03:00
4543bfa6cd Fix add path to renderer 2025-11-17 11:26:07 +03:00
16e78d87a4 Add logic for customRect 2025-11-17 10:14:35 +03:00
051597a78a Add new commands to CheckBuffer 2025-11-17 10:14:06 +03:00
7afad1fe49 fix bug #76076 2025-11-14 21:27:49 +06:00
aa53d6302f Fix RedactOutputDev::drawImageMask 2025-11-14 17:09:22 +03:00
13e03328af Renumbering tile flip 2025-11-14 16:58:09 +03:00
04ccd4fe27 Fix scale for tile 2025-11-14 16:56:43 +03:00
ae8fb19147 Merge pull request 'fix bug #78248' (#530) from fix/fix-bugs into release/v9.2.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/530
2025-11-14 08:05:38 +00:00
12083905dc fix bug #78248 2025-11-14 10:46:48 +03:00
e653442b8c Merge pull request 'Fix bug #74743' (#529) from fix/bug-74743 into release/v9.2.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/529
2025-11-13 18:10:58 +00:00
511cfb6158 Fix bug #74743 2025-11-13 20:08:15 +03:00
7f665b96a5 Create Image for InlineImg 2025-11-13 18:00:15 +03:00
6b80b39d4d Merge pull request 'fix bug #78278' (#525) from fix/bug78278 into release/v9.2.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/525
2025-11-13 14:32:04 +00:00
8926c15908 fix numFmt conversion 2025-11-13 19:49:14 +06:00
033c45b7a0 . 2025-11-13 16:40:30 +03:00
cbf138b1eb Merge pull request 'fix/fix-bugs' (#528) from fix/fix-bugs into release/v9.2.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/528
2025-11-13 12:43:13 +00:00
897f8fa9f2 Merge pull request 'fix/sysroot' (#527) from fix/sysroot into release/v9.2.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/527
2025-11-13 12:19:14 +00:00
8feb44225d Fix bug 2025-11-13 14:52:11 +03:00
517e337049 Fix building with newer qmake 2025-11-13 14:31:35 +03:00
c05231cf58 Merge pull request 'Fix bug in metafile conversion' (#526) from fix/metafile into release/v9.2.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/526
2025-11-13 10:57:15 +00:00
66b1007ab4 fix bug #78278 2025-11-13 12:44:09 +03:00
16d75fe498 Merge branch 'develop' into feature/add-xls-writing 2025-11-13 15:02:17 +06:00
62413b8df5 Fix bug in metafile conversion 2025-11-13 03:03:25 +03:00
fe2e1568fa Merge pull request 'fix/bug51597' (#524) from fix/bug51597 into develop
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/524
2025-11-12 18:27:24 +00:00
f93c259977 . 2025-11-12 20:57:32 +03:00
7e057bab6e fix list fmla conversion 2025-11-12 19:31:42 +06:00
910ff6a6dd Merge pull request 'Fix bug 78223' (#523) from fix/bug-78223 into release/v9.2.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/523
2025-11-12 10:42:18 +00:00
22e5bcbde3 Fix bug 78223 2025-11-12 13:05:51 +03:00
4bf8308bff Merge branch 'develop' into feature/add-xls-writing 2025-11-12 14:16:45 +06:00
a77cbf903b fix bug #77941 2025-11-12 10:52:37 +03:00
9b4416952f Merge pull request 'fix bug #78156' (#521) from fix/bug78156 into release/v9.2.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/521
2025-11-12 07:10:09 +00:00
a320b5bd5a Fix build 2025-11-11 22:46:36 +03:00
34a1f117c9 Merge pull request 'For bug #74646' (#522) from fix/md into release/v9.2.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/522
2025-11-11 16:16:23 +00:00
ec4700ac38 For bug #74646 2025-11-11 18:57:35 +03:00
6af3f2fe35 Do RedactOutputDev::drawImageMask 2025-11-11 17:05:02 +03:00
b61d8df484 fix ptgArea3d conversion 2025-11-11 16:25:20 +06:00
fc3748e516 for bug #40743 2025-11-11 11:26:46 +03:00
468dcd7ba4 Merge remote-tracking branch 'origin/release/v9.2.0' into develop 2025-11-11 10:21:53 +03:00
85047874b7 fix bug #78156 2025-11-11 10:03:48 +03:00
52bf1a6988 Merge pull request 'Fix bugs' (#517) from fix/bug-77446 into release/v9.2.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/517
2025-11-10 12:46:20 +00:00
27746f5c2b Merge pull request 'fix bug #76076' (#519) from fix/bug76076 into release/v9.2.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/519
2025-11-10 11:57:02 +00:00
d3710a755e Merge pull request 'Fix md bugs' (#518) from fix/md into release/v9.2.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/518
2025-11-10 11:56:06 +00:00
5c8dcd7ed2 Merge pull request 'Fix bug 78035' (#520) from fix/pdf-bugs into release/v9.2.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/520
2025-11-10 11:51:18 +00:00
5c0b3744ee Fix bug 78035 2025-11-10 13:53:51 +03:00
7048f132c6 Fix action GoTo FitR 2025-11-10 13:13:52 +03:00
1f3467d75f Fix serNum loading 2025-11-10 15:38:25 +06:00
238cdc8084 Merge branch 'develop' into feature/add-xls-writing 2025-11-10 15:08:26 +06:00
a1d8597b4f fix bug #76076 2025-11-10 15:02:27 +06:00
15dc718211 Fix bug #74969 2025-11-08 00:23:30 +03:00
1db12e66c6 For bug #74743 2025-11-08 00:07:43 +03:00
580283ef45 Merge remote-tracking branch 'origin/fix/rtf' into develop 2025-11-07 16:50:47 +03:00
5de19652f2 Fix bug #74726 2025-11-07 14:36:31 +03:00
fd648a7dd3 Merge remote-tracking branch 'origin/release/v9.2.0' into fix/pdf-redact
# Conflicts:
#	PdfFile/SrcReader/Adaptors.cpp
2025-11-07 14:03:51 +03:00
76b5bd594d Fix bug #77446 2025-11-07 13:22:07 +03:00
61b55c9230 Merge pull request 'Fix bugs in svg' (#516) from fix/bug-78017 into release/v9.2.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/516
2025-11-07 09:51:04 +00:00
22aecb56ec Fix bug in svg 2025-11-07 12:48:08 +03:00
4d4f3be717 Fix bug #77975 2025-11-07 11:32:31 +03:00
6e481f6a34 Merge pull request 'fix/bug51965' (#515) from fix/bug51965 into develop
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/515
2025-11-07 06:47:08 +00:00
2059e4bb95 fix/bug51965
fix bug #51965
2025-11-07 00:58:31 +03:00
3586a010a8 Fix bug #78017 2025-11-06 20:48:57 +03:00
146fc90746 Merge pull request 'Fix bug 78049' (#513) from fix/bug-78049 into release/v9.2.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/513
2025-11-06 13:37:03 +00:00
4452d7bf3d Fix bug 78049 2025-11-06 16:18:42 +03:00
673678e80a Merge pull request 'Fix bug in svg' (#512) from fix/svg into release/v9.2.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/512
2025-11-06 12:43:45 +00:00
b51960e925 fix bug #78023 2025-11-06 15:24:42 +03:00
6a5186c411 fix 2025-11-06 14:55:28 +03:00
b5ea9d68e2 fix defined names fmlas xls conversion 2025-11-06 16:24:04 +06:00
71e96930c9 Fix read Action 2025-11-06 12:08:23 +03:00
d9be0df8fb Fix data validations conversion 2025-11-06 15:00:38 +06:00
0477002e85 Fix bug in svg 2025-11-06 00:59:45 +03:00
68f1c6f97d for bug #78007 2025-11-05 18:05:49 +03:00
3cee4b0212 Merge pull request 'For bug 77757' (#511) from rtfbugs/fix into develop
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/511
2025-11-05 12:22:52 +00:00
6f85ce7116 Merge pull request 'Fix bugs 77966, 77904' (#510) from fix/pdf-bugs into release/v9.2.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/510
2025-11-05 11:20:13 +00:00
d920492afe Fix bug 77966 2025-11-05 14:03:25 +03:00
d69a54de38 Fix bug 77904 2025-11-05 14:03:02 +03:00
cfb62d599d For bug 77757 2025-11-05 13:55:43 +03:00
919d117a1f Fix ptgList conversion 2025-11-05 16:14:58 +06:00
d4b289d0ca Fix RedactOutputDev::drawSoftMaskedImage 2025-11-05 12:58:48 +03:00
cbb1df1522 Merge pull request 'Fix SVG' (#509) from fix/svg into release/v9.2.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/509
2025-11-01 18:50:12 +00:00
3b0e98fc4a Fix typo 2025-11-01 18:16:43 +03:00
a29eb52e1a Fix build 2025-11-01 18:15:14 +03:00
270e8e41dd fix ptg list xls conversion 2025-11-01 19:44:50 +06:00
16eb1b51e7 fix bug #77963 2025-11-01 13:10:54 +03:00
751b82dc51 fix dxfs conversion 2025-11-01 13:09:43 +06:00
320e30c857 Do RedactOutputDev::drawSoftMaskedImage 2025-10-31 17:13:38 +03:00
e4c84e2972 fix text paragraph conversion 2025-10-31 16:50:04 +03:00
527ff672d9 Merge pull request 'Fix md/html bugs' (#507) from fix/md into hotfix/v9.2.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/507
2025-10-31 13:27:05 +00:00
aa24268a2e Fix bug #74743 2025-10-31 16:19:42 +03:00
39e4c3a09c Fix build 2025-10-31 15:03:44 +03:00
a6898c8235 Merge branch 'develop' into feature/add-xls-writing 2025-10-31 13:58:33 +06:00
8158ace0eb Fix bug #74969 2025-10-31 02:58:19 +03:00
463ca05404 Do RedactOutputDev::drawImage 2025-10-30 18:44:06 +03:00
f38ce7b61b change type in binary paraId 2025-10-30 18:37:46 +03:00
95a1b39fb1 Fix bugs 2025-10-30 18:15:47 +03:00
f58be7754a Fixed a bug calculating complex styles in CSS 2025-10-30 18:15:34 +03:00
a31c3ee00a Fix bug #74646 2025-10-30 16:41:07 +03:00
548cee436a Merge remote-tracking branch 'origin/hotfix/v9.2.0' into develop 2025-10-30 15:13:03 +03:00
b1a36d546b fix ptgName writing 2025-10-30 18:06:11 +06:00
23e9187f5a fix bug #77929 2025-10-30 14:40:52 +03:00
07d3f371a2 Merge pull request 'fix/bug77123' (#506) from fix/bug77123 into develop
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/506
2025-10-30 11:02:46 +00:00
278cac8a61 Merge branch 'fix/bug77123' into fix/bug51965 2025-10-30 13:56:13 +03:00
07fd1e87d7 Merge branch 'develop' into fix/bug51965 2025-10-30 13:55:14 +03:00
817ee4dde0 fix/bug77123
fix bug #77123
2025-10-30 13:50:56 +03:00
d93bd27896 Do RedactOutputDev::drawImage 2025-10-29 18:05:39 +03:00
0e991719bf fix bug #77664 2025-10-29 17:18:11 +03:00
be56209baf Fix empty cells conversion 2025-10-29 20:10:34 +06:00
6a573d0da7 Merge branch 'develop' into feature/add-xls-writing 2025-10-29 16:12:17 +06:00
ca2504edb6 Fix bug #74647 2025-10-28 18:49:06 +03:00
e936e330d9 Do RedactOutputDev::drawForm 2025-10-28 18:21:00 +03:00
07bedd847e Fix bug #77940 2025-10-28 18:13:02 +03:00
bda95fc03d Fix column styles conversion 2025-10-28 20:04:27 +06:00
c0c0289ffb Merge remote-tracking branch 'origin/Rtf/fixbugs' into develop 2025-10-28 15:57:46 +03:00
5c110799a6 . 2025-10-28 15:51:41 +03:00
1b6c81407b Merge branch 'develop' of https://git.onlyoffice.com/ONLYOFFICE/core into develop 2025-10-28 15:46:25 +03:00
1e0d662838 Fix previous 2025-10-28 15:35:46 +03:00
ae2680c419 fix defined names formula conversion 2025-10-28 18:18:57 +06:00
506a805654 Merge branch release/v9.1.0 into hotfix/v9.2.0 2025-10-28 11:58:13 +00:00
1b61353b2e Merge branch release/v9.1.0 into develop 2025-10-28 11:58:11 +00:00
7777048790 Merge branch release/v9.1.0 into master 2025-10-28 11:58:09 +00:00
fd6c0907bd Merge pull request 'fix/bug77123' (#504) from fix/bug77123 into develop
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/504
2025-10-28 11:33:11 +00:00
1bdff9e7fe For bug #74647 2025-10-28 14:15:00 +03:00
8fab1802df Added support for text fill transparency in svg 2025-10-28 14:13:12 +03:00
2aef5daf12 fix/bug77123 2025-10-28 14:06:05 +03:00
6cf6ade6e3 Fix bug 2025-10-28 13:11:40 +03:00
2399ba41e4 Fix miss place 2025-10-28 13:07:03 +03:00
fe2fb0c08d Add meta info 2025-10-28 13:04:00 +03:00
bfffcda0c5 Fix bug in SVG 2025-10-28 12:15:14 +03:00
e96ceab1e3 Fix bugs in svg gradient 2025-10-28 12:05:05 +03:00
317e21af6a Merge remote-tracking branch 'origin/hotfix/v9.2.0' into develop 2025-10-28 11:29:01 +03:00
5046c1b326 add labeledCheckBox 2025-10-28 11:27:56 +03:00
4bc78e7bb4 Fix bug 74748 2025-10-28 11:16:53 +03:00
4f6daaae67 fix/bug77123
fix correct receipt page parametrs
2025-10-28 10:51:52 +03:00
8203492999 Merge branch 'develop' into feature/add-xls-writing 2025-10-28 13:19:12 +06:00
6616a11e7c Merge pull request 'Fix bugs' (#501) from fix/bug-72300 into hotfix/v9.2.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/501
2025-10-27 16:43:58 +00:00
45e97b76f0 Merge branch 'hotfix/v9.2.0' into fix/bug-72300 2025-10-27 19:37:13 +03:00
d3017c2777 Merge pull request 'Fix MD bugs' (#500) from fix/md into hotfix/v9.2.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/500
2025-10-27 16:24:39 +00:00
910f453ce8 Do RedactOutputDev::drawForm 2025-10-27 19:17:36 +03:00
54fb5a7891 remove smart_ptr for IFileConteiner (rels) 2025-10-27 18:54:00 +03:00
93b96e5555 fix bug #77324 2025-10-27 18:53:09 +03:00
41c4032fe8 Fix build 2025-10-27 17:54:56 +03:00
9e57f8c3b1 Improve txt 2025-10-27 17:47:58 +03:00
57221c0e32 fix/bug77123
fix bug when the tabs were longer than available width
2025-10-27 16:27:48 +03:00
76b7099a37 Fix merged cells conversion 2025-10-27 19:04:55 +06:00
85f428fda6 fix formula conversion 2025-10-27 16:49:25 +06:00
d97a62442f Improve txt file writer 2025-10-27 13:40:48 +03:00
41fb12d58b Merge branch 'develop' into feature/add-xls-writing 2025-10-27 13:36:21 +06:00
df49a4fbde Redesigned bounds calculation in svg and refactoring 2025-10-26 20:53:31 +03:00
3d586a4bb6 Added processing of hidden elements in html 2025-10-26 17:57:21 +03:00
6d76fd71cc Fixed a bug with CSS styles calculation 2025-10-26 17:56:50 +03:00
ed0811d8ab For bug #50842 2025-10-25 11:52:35 +03:00
84cc97f035 Merge remote-tracking branch 'origin/hotfix/v9.2.0' into develop 2025-10-25 11:41:47 +03:00
170cada6e6 Remove logs 2025-10-24 19:45:17 +03:00
984807d611 fix pivot cache id conversion 2025-10-24 19:23:02 +06:00
250c85c077 Add meta info in docx-renderer 2025-10-24 15:26:33 +03:00
dbd92bfdfa Fix Link Border 2025-10-24 15:01:51 +03:00
e4825294ed Merge pull request 'For bug 77199' (#499) from for/bug-77199 into hotfix/v9.2.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/499
2025-10-24 11:31:36 +00:00
17c336d57c Fix build 2025-10-24 14:24:02 +03:00
4e7af40367 For bug 77199 2025-10-24 14:23:45 +03:00
b7230d16fc Merge pull request 'fix/bugs' (#498) from fix/bugs into hotfix/v9.2.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/498
2025-10-24 11:12:01 +00:00
22a7e6bb05 fix bug #77587 2025-10-24 13:17:02 +03:00
a4ed2dea41 fix bug #77232 2025-10-24 13:14:22 +03:00
ab2eabdd23 Merge pull request 'Fix bug 77823' (#497) from fix/bug-77823 into hotfix/v9.2.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/497
2025-10-24 09:15:58 +00:00
2796fbed8b Optimization read drawSoftMaskedImage 2025-10-24 12:10:33 +03:00
ab052c7c59 . 2025-10-24 10:23:24 +03:00
2b209ed5e4 Fix bug #77443 2025-10-24 01:45:24 +03:00
04bce828be Fix bug #77442 2025-10-24 01:38:24 +03:00
4c5259494d Refactoring 2025-10-24 01:37:24 +03:00
289a77a978 . 2025-10-23 20:29:57 +03:00
a22cc4e410 add ext logging 2025-10-23 20:26:35 +03:00
9ccbb25acd Improve txt file writer 2025-10-23 17:48:08 +03:00
954d86ed0f fix sxdb conversion 2025-10-23 20:01:28 +06:00
091af38e0d fix bug #73635 2025-10-23 15:35:09 +03:00
4b335fc796 Add mirror for tile brush 2025-10-23 14:41:34 +03:00
5e177412e2 Add scale for brush rect 2025-10-23 14:37:48 +03:00
2b214ab07d Fix bug 77823 2025-10-23 13:13:15 +03:00
c8b34959d7 fix bug #77807 2025-10-23 12:07:31 +03:00
2bf44900de Fix bug #77441 2025-10-22 20:29:38 +03:00
c235a4c646 Fix bug #77440 2025-10-22 18:58:37 +03:00
3bdd0e2053 Merge pull request 'fix bug #77651' (#495) from fix/bug77651 into hotfix/v9.2.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/495
2025-10-22 13:23:04 +00:00
339820e5df Merge pull request 'fix bug #76076' (#496) from fix/bug76076 into hotfix/v9.2.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/496
2025-10-22 13:22:34 +00:00
1dd5eb3368 Write Link annots 2025-10-22 16:19:43 +03:00
47e0a0c9e7 Improve txt file reader 2025-10-22 12:37:03 +03:00
475cbb6f8a fix bug #77651 2025-10-22 14:57:57 +06:00
5a491aea3e Read Link annots 2025-10-21 17:04:30 +03:00
2d7c5ec2df fix defined names conversion 2025-10-21 19:03:16 +06:00
ee784a7189 Merge pull request 'Fix pdf bugs' (#494) from fix/pdf-bugs into hotfix/v9.2.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/494
2025-10-20 14:22:46 +00:00
650fb84b6d For bug 75161 2025-10-20 17:18:41 +03:00
dec13334db Add not rotation with shape 2025-10-20 16:57:13 +03:00
4a2d0b5e1f Fix reset font settings 2025-10-20 16:11:16 +03:00
54ce32cfaf Add file to ignore 2025-10-20 16:05:16 +03:00
38079e8692 comment unfinished functionality 2025-10-20 16:01:45 +06:00
ac75675367 optimized theme colors conversion 2025-10-20 15:41:44 +06:00
a0fc634f5f Merge branch 'develop' into feature/add-xls-writing 2025-10-20 14:03:42 +06:00
1d58d8fc7f Fix bug 77608 2025-10-20 10:15:25 +03:00
1624a2dda2 Fix bug 75990 2025-10-19 14:53:49 +03:00
b0a850745d Merge branch 'fix/fix-bugs' into hotfix/v9.2.0 2025-10-17 20:57:29 +03:00
2ebade4413 add theme colors conversion 2025-10-17 21:38:28 +06:00
a0a9d899a8 fix binary paraId 2025-10-17 17:56:14 +03:00
5e9f99e960 For bug #50842 2025-10-17 11:59:06 +03:00
a67935908a Merge remote-tracking branch 'origin/master' into develop 2025-10-16 18:57:38 +03:00
da1bc5d2d6 add theme colors registration 2025-10-16 20:33:32 +06:00
7156669830 Intermediate refactoring 2025-10-15 19:06:28 +03:00
9d5388a7bf fix pivotCache id conversion 2025-10-15 20:38:36 +06:00
3b85841ea6 fix bug #77472 2025-10-15 12:37:04 +03:00
4899ed4e7f fix bug #77562 2025-10-15 12:36:08 +03:00
f335a5b024 fix bug #73585 2025-10-15 12:35:03 +03:00
2cdb04656d Fix pivotfrt writing 2025-10-15 15:16:39 +06:00
6eeae2e804 Intermediate refactoring 2025-10-14 20:42:24 +03:00
3934c28eb8 Fix pivot table conversion 2025-10-14 21:17:58 +06:00
82e281cf6b Merge branch release/v9.1.0 into master 2025-10-14 14:36:21 +00:00
f6337bb12c add pivot table styles conversion 2025-10-14 18:30:59 +06:00
1d88830b38 fix/bug51597
fix bug when document convert from odt to docx and docx to odt and after this document cells width will smaller then before convertation.
2025-10-14 12:33:13 +03:00
b4395efa91 Merge pull request 'fix bug #77588' (#492) from fix/bug77588 into release/v9.1.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/492
2025-10-13 15:33:25 +00:00
32f683137a fix bug #77588 2025-10-13 18:31:21 +03:00
9737038776 add addlStyles writing 2025-10-13 19:19:11 +06:00
915c3497e4 add pivotAddl writing 2025-10-13 16:26:19 +06:00
d59573c3b3 Merge pull request 'Fix bug 77556' (#491) from fix/pdf-bugs into release/v9.1.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/491
2025-10-13 08:15:25 +00:00
abb884c714 Fix bug 77556 2025-10-13 09:18:24 +03:00
befeed6233 Merge pull request 'Fix goto and variable declaration' (#490) from fix/pdf-bugs into release/v9.1.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/490
2025-10-12 17:24:31 +00:00
54e329915c Fix goto and variable declaration
cannot jump from this goto statement to its label
2025-10-12 20:20:01 +03:00
f27d78ef48 Merge pull request 'Fix bug 77560' (#489) from fix/bug-77560 into release/v9.1.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/489
2025-10-12 17:04:22 +00:00
58ee2582d6 Fix 2025-10-12 19:59:53 +03:00
4c3af930a5 Merge pull request 'Fix bug 77560' (#488) from fix/bug-77560 into release/v9.1.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/488
2025-10-12 16:58:05 +00:00
db86830824 Fix bug 77560
Related bug 76533
2025-10-12 19:51:35 +03:00
77496c6df7 Merge pull request 'Fix RedactOutputDev' (#487) from fix/pdf-bugs into release/v9.1.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/487
2025-10-12 14:20:11 +00:00
dd73d05dd1 Fix 2025-10-12 17:18:58 +03:00
cabd994f5f Fix RedactOutputDev 2025-10-12 17:09:38 +03:00
2a3f90ab93 Merge pull request 'Fix pdf bugs' (#486) from fix/pdf-bugs into release/v9.1.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/486
2025-10-11 13:25:18 +00:00
1849f7a69f Fix bug 76533 2025-10-11 16:08:32 +03:00
e898a9bb99 Fix bug 77224 2025-10-11 16:04:17 +03:00
bed0f29ac6 Fix bug 76445 2025-10-11 12:04:06 +03:00
320d000030 Fix default memory limit 2025-10-10 21:39:29 +03:00
1fb9ef4713 Fix bug 76926 2025-10-10 21:32:01 +03:00
264edeb9b6 Merge pull request 'fix/bug-76927' (#485) from fix/bug-76927 into release/v9.1.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/485
2025-10-10 17:18:17 +00:00
4e48821faf Fix compare double 2025-10-10 17:36:14 +03:00
fd5d6f41dc Merge pull request 'Fix pdf bugs' (#483) from fix/pdf-bugs into release/v9.1.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/483
2025-10-10 14:07:19 +00:00
29b9cf515a Fix Clear Content 2025-10-10 17:05:53 +03:00
53c4f320f6 add pivot frt writing 2025-10-10 19:33:23 +06:00
e126ceef3c Fix bug 77348 2025-10-10 15:09:22 +03:00
df22ad3855 Fix curve subtraction 2025-10-10 14:07:38 +03:00
a40e246d7d fix bug 2025-10-10 13:52:46 +03:00
9a17338be7 Fix condition 2025-10-10 13:49:24 +03:00
e344c4ca0d Fix bug 77371 2025-10-10 13:34:29 +03:00
1aec69965d add dateType pivot oper parsing 2025-10-10 15:15:22 +06:00
1212a78d58 Merge pull request 'Fix bug 77353' (#482) from fix/bug-77353 into release/v9.1.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/482
2025-10-10 08:57:29 +00:00
869bbf6cc9 Fix bug 77353 2025-10-10 11:55:00 +03:00
afdac778b0 Merge branch 'develop' into feature/add-xls-writing 2025-10-10 13:34:45 +06:00
6de079a487 Fix bug 76927 2025-10-10 00:47:56 +03:00
78085554b5 Merge pull request 'Fix pdf bugs' (#481) from fix/pdf-bugs into release/v9.1.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/481
2025-10-09 16:40:08 +00:00
7310eb49a9 For bug 77353 2025-10-09 19:34:28 +03:00
66d94cf00c Intermediate refactoring 2025-10-09 18:59:40 +03:00
d0f1691a5e Fix bug #72300 2025-10-09 17:36:17 +03:00
26b598784e Merge pull request 'Fix bug 77333' (#480) from fix/bug77333 into release/v9.1.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/480
2025-10-09 14:27:31 +00:00
8795539c20 Fix bug 77333 2025-10-09 17:03:01 +03:00
0ccff9944d Merge branch 'release/v9.1.0' into fix/bug-72300 2025-10-09 16:50:28 +03:00
c6d1f5e502 For bug 77407 2025-10-09 16:49:46 +03:00
fbc42a514f Fix pivots conversion 2025-10-09 19:46:21 +06:00
5b5a1d461c For bug 77407 2025-10-09 15:15:26 +03:00
c567c9739c Merge remote-tracking branch 'origin/release/v9.1.0' into develop 2025-10-09 12:00:09 +03:00
992f6616e0 Fix intersection line and rectangles 2025-10-09 11:54:06 +03:00
686b719bff add pivot cache records conversion 2025-10-08 20:12:59 +06:00
c5a047f83a Merge pull request 'Fix pdf bugs' (#479) from pdf/fix-bugs into release/v9.1.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/479
2025-10-08 13:47:12 +00:00
97560748aa Fix Redact in progress 2025-10-08 16:43:13 +03:00
6481c2d531 Fix prev commit 2025-10-08 15:49:46 +03:00
0f51381926 Add method gid => unicode 2025-10-08 15:49:30 +03:00
7e012dac94 C in OC for Redact annot 2025-10-08 15:43:29 +03:00
c4525f8ae1 Fix bug 77362 2025-10-08 14:07:47 +03:00
fc0d3abd6a Fix Redact coords 2025-10-08 13:36:45 +03:00
cebd668fe9 Fix coords order 2025-10-08 11:46:53 +03:00
2f965fd578 Fix bug 77405
For bug 77404
2025-10-08 11:08:46 +03:00
115c51cd7c Merge pull request 'fix/pict-bugs' (#478) from fix/pict-bugs into release/v9.1.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/478
2025-10-07 18:26:14 +00:00
a123af1066 Fix bug 77400 2025-10-07 21:20:03 +03:00
e640331750 Fix bug 77403 2025-10-07 21:19:55 +03:00
a42310d2c5 Fix bug 77398 2025-10-07 21:19:08 +03:00
24e7c822ff Fix bug 77395 2025-10-07 21:18:56 +03:00
9c2c9509db Fix bug 77333 2025-10-07 21:11:13 +03:00
a3d947d855 Redact 8xN 2025-10-07 18:37:32 +03:00
9900726e43 Fix AP 2025-10-07 18:35:56 +03:00
f05fa7c0ee add pivotCache source conversion 2025-10-07 20:59:28 +06:00
9a46a6b514 Fix proxy 2025-10-07 15:59:01 +03:00
497c64e713 Fix Annot without Type, only Subtype 2025-10-07 15:55:02 +03:00
104a6ee3ae Merge pull request 'Fix bug 77312' (#477) from fix/bug-77312 into release/v9.1.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/477
2025-10-07 12:16:58 +00:00
ed99de9976 Fix bug 77312 2025-10-07 15:12:00 +03:00
ada62871eb Fix bug 76350 2025-10-07 14:33:49 +03:00
0d646a32c4 add workbook pivotCache conversion 2025-10-07 17:09:10 +06:00
80a2cfc0fe Fix bug 76352 2025-10-07 12:44:40 +03:00
8c91eea87a Fix copy proxy object 2025-10-07 12:44:13 +03:00
7a2c32cb47 Merge pull request 'fx bug #74266' (#476) from fix/fix-bugs into release/v9.1.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/476
2025-10-07 07:59:04 +00:00
503e462366 fx bug #74266 2025-10-07 10:56:33 +03:00
917c33e76d Fix pivot cache conversion 2025-10-06 21:08:26 +06:00
1301da284c Merge pull request 'Fix bugs 77268, 77299' (#475) from fix/pdf-bugs into release/v9.1.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/475
2025-10-06 14:05:57 +00:00
4d9a4ed300 Fix bug 77268 2025-10-06 16:37:37 +03:00
1937895a56 add sqlTypes conversion 2025-10-06 18:14:34 +06:00
01fbf07c9e add pivot field properties conversion 2025-10-06 16:56:13 +06:00
173a29419a Fix bug 77299 2025-10-06 13:26:13 +03:00
526e53e465 Fix test Split&Merge 2025-10-06 13:02:07 +03:00
d208215814 Merge branch 'develop' into feature/add-xls-writing 2025-10-06 13:15:13 +06:00
605e5e2c9d Fix crash on open pdf 2025-10-05 21:34:06 +03:00
c45c63f914 Merge pull request 'release/v9.1.0' (#474) from release/v9.1.0 into develop
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/474
2025-10-04 19:25:57 +00:00
66d36b64b0 for bug #68408 2025-10-04 19:52:32 +03:00
59bd457253 Merge pull request 'fix/pdf-redact' (#473) from fix/pdf-redact into release/v9.1.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/473
2025-10-03 20:21:14 +00:00
4db7b36303 Fix bug 77215 2025-10-03 23:14:23 +03:00
23cc9ec824 Merge pull request 'Fix pdf bugs' (#472) from fix/pdf-bugs into release/v9.1.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/472
2025-10-03 15:12:57 +00:00
63d74183a1 Fix intersect XObject 2025-10-03 18:06:49 +03:00
542837dd3a For bug 76974 2025-10-03 16:42:31 +03:00
7a4dfdbbe4 For bug 77238 2025-10-03 13:39:40 +03:00
a220822b7b fix bug #76076 2025-10-03 16:06:46 +06:00
a9a391c960 Fix create AP for Line 2025-10-03 12:04:27 +03:00
7a8f926852 Fix bug 76352 2025-10-03 10:59:02 +03:00
3bd50dbece Fix trace path 2025-10-02 19:14:46 +03:00
a306faf286 Merge pull request 'fix bug #77171' (#470) from fix/fix-bugs into release/v9.1.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/470
2025-10-02 15:41:54 +00:00
63d6430502 fix bug #77171 2025-10-02 18:35:51 +03:00
21a637594a For bug #72300 2025-10-02 18:20:12 +03:00
5c5a18de0d add pivotCache properties conversion 2025-10-02 20:04:29 +06:00
add2a66da9 Merge pull request 'Fix pdf bugs' (#469) from fix/pdf-bugs into release/v9.1.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/469
2025-10-02 13:34:36 +00:00
954f3c91bb Merge pull request 'release/v9.1.0' (#468) from release/v9.1.0 into fix/FillingSM
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/468
2025-10-02 12:39:53 +00:00
2213f6415d Merge remote-tracking branch 'origin/release/v9.1.0' into fix/pdf-bugs 2025-10-02 15:31:12 +03:00
e26f220a40 Fix bug 76737 2025-10-02 15:25:42 +03:00
9f24bda011 add pivotCache files conversion 2025-10-02 18:13:24 +06:00
0e68a83f0d Fix Redact with shapes 2025-10-02 15:11:42 +03:00
10d05760dd Merge pull request 'fix/bug65069' (#467) from fix/bug65096 into release/v9.1.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/467
2025-10-02 11:33:53 +00:00
db5f239cb1 fix/bug65069
fix bug when we activate "Keep with next" parametr and after conversation from docx to odt it lose
2025-10-02 14:28:23 +03:00
8cc18975b7 Fix build 2025-10-02 14:11:32 +03:00
2bc14634bb Fix bug 77022 2025-10-02 14:10:30 +03:00
408d677640 Merge pull request 'Fix bug #77184' (#461) from fix/bug-77184 into release/v9.1.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/461
2025-10-02 10:40:55 +00:00
dc904a1f13 Fix build 2025-10-02 12:55:32 +03:00
fdb9eaa2a5 Add pivotCache stream writing 2025-10-02 15:41:11 +06:00
3e9b0ffbda add default params for SXEx 2025-10-02 14:30:16 +06:00
e28aea4734 Merge pull request 'fix/sysroot' (#462) from fix/sysroot into release/v9.1.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/462
2025-10-02 05:44:53 +00:00
28584e7df1 Fix build 2025-10-02 08:39:13 +03:00
7a6e00a792 Fix bug #77184 2025-10-02 00:53:49 +03:00
e7d913e1d2 Merge remote-tracking branch 'origin/fix/pict' into release/v9.1.0 2025-10-01 22:59:02 +03:00
3e2223ae6d Merge pull request 'Add selfInters' (#460) from fix/boolean-op into release/v9.1.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/460
2025-10-01 18:02:20 +00:00
d3793169aa Add CFLAGS for sysroot 2025-10-01 20:20:28 +03:00
6dccf05e92 Add selfInters 2025-10-01 18:39:27 +03:00
eb2ba042ef add pivotEx default writing 2025-10-01 21:22:55 +06:00
1111f421d9 Fix sxli conversion 2025-10-01 19:24:36 +06:00
28c2e748a3 Merge pull request 'Fix save Redact' (#459) from fix/pdf-bugs into release/v9.1.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/459
2025-10-01 11:39:27 +00:00
e2bda52737 fix sxvd conversion 2025-10-01 17:38:08 +06:00
ad496ca7cd Fix save Redact 2025-10-01 14:30:46 +03:00
8ee1c33532 Merge pull request 'Fix bug #55424' (#458) from Rtf/Fixbugs into release/v9.1.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/458
2025-10-01 11:15:58 +00:00
6c9c2cf538 fix pivot view header conversion 2025-10-01 17:13:56 +06:00
303c395c84 Fix bug #55424 2025-10-01 13:38:50 +03:00
62d826d8c6 Merge branch 'develop' into feature/add-xls-writing 2025-10-01 14:05:17 +06:00
964a3b455b Merge pull request 'Fix build' (#457) from fix/pdf-redact into release/v9.1.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/457
2025-10-01 08:01:51 +00:00
96ba4495ed Fix build 2025-10-01 10:59:56 +03:00
ec246526ac Merge pull request 'Feature pdf redact' (#456) from feature/pdf-redact-fix into release/v9.1.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/456
2025-09-30 16:07:38 +00:00
5cf633ede6 Fix text color 2025-09-30 18:41:22 +03:00
a8d34f2437 Merge remote-tracking branch 'origin/release/v9.1.0' into feature/pdf-redact-fix 2025-09-30 12:36:03 +03:00
c3d2761c10 Fix setFillColorN 2025-09-30 12:22:51 +03:00
dfbdb869d7 add row&column items conversion 2025-09-30 15:04:03 +06:00
98d10c0c33 Merge pull request 'Add pdf/pptx -> txt convertion in x2ttester' (#455) from feature/x2ttester into release/v9.1.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/455
2025-09-30 05:42:25 +00:00
2f6b41d06a Add pdf/pptx -> txt convertion in x2ttester 2025-09-30 08:24:20 +03:00
ed7a50855e Merge remote-tracking branch 'origin/release/v9.1.0' into develop 2025-09-29 21:58:01 +03:00
87e4738481 Merge pull request 'Fix bug #76691' (#453) from Rtf/Fixbugs into release/v9.1.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/453
2025-09-29 15:17:17 +00:00
c622fa54fc Redact writer 2025-09-29 17:32:33 +03:00
c45b9fa0df Merge pull request 'Added support HWPML format' (#454) from feature/HWPML into release/v9.1.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/454
2025-09-29 14:22:46 +00:00
fe877b128b Fix bug in HWP conversion 2025-09-29 17:21:53 +03:00
aa4b0c8844 Fixed conversion of geometric shapes in HWP 2025-09-29 17:00:06 +03:00
14e9a198c4 Fix bug #76691 2025-09-29 16:31:54 +03:00
b96e024145 fix bug #77019 2025-09-29 15:36:25 +03:00
4734d58ba6 Fix build 2025-09-29 14:36:05 +03:00
526a21da57 Merge branch 'develop' into feature/add-xls-writing 2025-09-29 17:06:24 +06:00
fb6bda209b add pivotIvd conversion 2025-09-29 17:04:36 +06:00
414afabce7 Fix stroke 2025-09-29 13:57:51 +03:00
4b0f79a1ab add sxdi conversion 2025-09-29 16:00:11 +06:00
c3c9dfcc70 m_oPathRedact in class 2025-09-29 10:40:55 +03:00
2cd69351c7 Fix bugs in HWPX/HWPML conversion 2025-09-27 17:56:13 +03:00
de8a054b26 fix subtraction op 2025-09-26 18:59:32 +03:00
e1157b8507 Test 2025-09-26 18:50:41 +03:00
e5946892c9 add pivot field items conversion 2025-09-26 20:37:04 +06:00
d399027127 Add pivotField conversion 2025-09-26 19:31:23 +06:00
a873787fd7 Use Aggplus::CalcBooleanOperation 2025-09-26 15:56:29 +03:00
2e732ce62f add sxview conversion 2025-09-26 15:59:28 +06:00
21a166208f Merge remote-tracking branch 'origin/release/v9.1.0' into feature/pdf-redact-fix 2025-09-26 11:04:54 +03:00
c3f98e011d Fix iterator 2025-09-26 11:04:13 +03:00
49fc001aa3 Fix bugs in HWPX/HWPML conversion and refactoring 2025-09-26 00:25:26 +03:00
cc47abad5f fix bug #76687 2025-09-25 18:58:56 +03:00
a7b0b0a938 Redact writer 2025-09-25 17:48:08 +03:00
c8ebcfac87 Add offset for brush rect 2025-09-25 16:12:07 +03:00
44e6774c5a add pivot table writing 2025-09-25 18:37:33 +06:00
2931c4b53e Aff offset metafile command 2025-09-25 13:58:55 +03:00
c4ad01a30f fix bug #76688 2025-09-25 13:30:42 +03:00
7ddb363d60 fix build 2025-09-25 13:19:47 +03:00
74ba5d20ec fix bug #76601 2025-09-25 13:04:35 +03:00
ecd333e238 Merge pull request 'feature/compound2' (#452) from feature/compound2 into develop
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/452
2025-09-25 09:27:18 +00:00
b377493ecb Merge branch 'develop' into feature/compound_any 2025-09-25 12:23:12 +03:00
afeeeab564 Merge remote-tracking branch 'origin/release/v9.1.0' into develop 2025-09-25 10:23:12 +03:00
b52dff617b Refactoring in HWPX/HWPML conversion 2025-09-24 18:47:24 +03:00
31644cc5d7 Fix bugs in HWPX/HWPML conversion 2025-09-24 18:21:03 +03:00
460abc0d55 fix xls color conversion 2025-09-24 20:48:11 +06:00
1aa17ba09e Fix shape with redact 2025-09-24 17:32:11 +03:00
d50d1b04e5 fix bug #76948 2025-09-24 16:49:58 +03:00
e2faddf21f Merge pull request 'fix/bug55175' (#451) from fix/bug55175 into release/v9.1.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/451
2025-09-24 13:49:24 +00:00
670c788625 fix/bug55175
fix bug when text stick together
2025-09-24 16:19:24 +03:00
cd2f1a2b2a Merge pull request 'Fix bug 76539' (#450) from fix/odf-bugs into release/v9.1.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/450
2025-09-24 12:26:03 +00:00
71fe030440 For bug 76352 2025-09-24 13:26:11 +03:00
d654092289 ctRedact change format 2025-09-24 12:52:08 +03:00
01b2aaedb2 add table styles conversion 2025-09-23 20:41:56 +06:00
7577bd2d20 Fix writer content 2025-09-23 17:13:13 +03:00
9453e9c87d Fix bugs in HWPML conversion 2025-09-23 16:24:48 +03:00
580c896b72 fix table conversion 2025-09-23 18:13:47 +06:00
fbce3f44dc Fix typo 2025-09-23 15:13:12 +03:00
8916814106 Try Redact writer 2025-09-23 14:16:46 +03:00
46947ea869 fix bug #76795 2025-09-23 13:19:49 +03:00
9cbb2ae79e Add test for metafiles (stream binary) 2025-09-23 12:59:18 +03:00
bff6054c2b Fix build 2025-09-23 12:14:36 +03:00
7ac1ab3f06 fix build 2025-09-23 10:27:26 +03:00
b272bbe977 Fix build 2025-09-22 18:36:50 +03:00
03a1d9fa4c add table conversion 2025-09-22 19:37:14 +06:00
81e517c320 Fix bug 76539
Check CXIMAGE_MAX_MEMORY limit
2025-09-22 14:38:11 +03:00
5e5ac22fd3 Add dat file for arm64 arch 2025-09-22 13:29:00 +03:00
a64242d0ec Merge pull request 'feature/libvlc-arm' (#449) from feature/libvlc-arm into release/v9.1.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/449
2025-09-22 09:25:30 +00:00
5d383fe297 Merge pull request 'feature/pptx-txt' (#448) from feature/pptx-txt into release/v9.1.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/448
2025-09-22 09:20:17 +00:00
0fd709bf93 Fix test 2025-09-22 10:33:43 +03:00
e16d3b3695 Change plugins url to releases 2025-09-21 22:45:20 +03:00
3a047cfab0 Refactoring in HWPX/HWPML conversion 2025-09-19 22:04:34 +03:00
0ed11abb38 HWPML format added to x2t and refactoring 2025-09-19 16:46:51 +03:00
f2044aef8d Add PptxTxtConverter to x2t 2025-09-19 15:31:08 +03:00
61d199a0c1 add list12 writing 2025-09-19 16:16:00 +06:00
7a463f7984 . 2025-09-19 10:04:39 +03:00
9322ad72d2 Update PptxTxtConverter 2025-09-18 21:43:39 +03:00
e7a57c1584 Expanded support for the HWPML format 2025-09-18 20:10:39 +03:00
1241d41102 Add PptxTxtConverter 2025-09-18 20:07:30 +03:00
4ea31dcb00 Merge remote-tracking branch 'origin/release/v9.1.0' into develop 2025-09-18 19:07:44 +03:00
127803b181 for old binary 2025-09-18 18:28:01 +03:00
54a0c7f231 add feature11 writing 2025-09-18 20:36:54 +06:00
a4d60a1ae1 fix list parsed formula 2025-09-18 19:09:18 +06:00
b7b3e0dd65 add feat11field parts writing 2025-09-18 19:08:52 +06:00
3e31c4ca4f Disable libheif on windows xp 2025-09-18 16:07:58 +03:00
c28a6bf1ea add feat11fieldData writing 2025-09-18 17:57:14 +06:00
842a44ccf9 Expanded support for the HWPML format 2025-09-18 12:42:52 +03:00
9f24254cc7 add feat11 writing 2025-09-18 14:20:32 +06:00
5c3f228ff3 fix bug #68538 2025-09-18 10:25:57 +03:00
c71937d08e fix build 2025-09-17 20:23:01 +03:00
33b54e01a0 Add support "with_childs" mode 2025-09-17 17:56:01 +03:00
e105eca426 add tablestyle element conversion 2025-09-17 19:51:02 +06:00
02a923afb4 add table styles conversion 2025-09-17 18:06:07 +06:00
9b6e2477d5 Merge pull request 'feature/txt-renderer' (#447) from feature/txt-renderer into release/v9.1.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/447
2025-09-16 19:59:11 +00:00
c7a0996a6c Fix condfmt colors conversion 2025-09-16 21:33:48 +06:00
51de435393 Expanded support for the HWPML format 2025-09-16 17:59:22 +03:00
a0f67ef148 Merge pull request 'For bug #50842' (#446) from Rtf/Fixbugs into release/v9.1.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/446
2025-09-16 14:22:47 +00:00
c53e7416cc For bug #50842 2025-09-16 17:18:59 +03:00
a41a16b720 Add TxtRenderer to x2t 2025-09-16 16:50:21 +03:00
58e86051e6 Merge pull request 'Fix icu version for Windows XP' (#444) from fix/icu-win-xp into release/v9.1.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/444
2025-09-16 12:37:13 +00:00
10fbb547da Update TxtRenderer 2025-09-16 14:59:18 +03:00
0ce18534a5 Merge pull request 'Add isRGBA flag to Heif' (#445) from fix/Heif_isRGBA into release/v9.1.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/445
2025-09-16 10:27:35 +00:00
054128d981 Add isRGBA flag to Heif 2025-09-16 12:34:55 +03:00
26adb8d565 Developing txt renderer
but UB
2025-09-15 19:44:38 +03:00
deb5b75e1f Develop TxtRenderer 2025-09-15 18:34:21 +03:00
6d27231e15 add OfficeArtFOPT writing 2025-09-15 21:11:32 +06:00
3f7152be08 Fix icu version for win_xp 2025-09-15 19:09:12 +04:00
a2a5ef8fcd add author writing to notes 2025-09-15 19:20:20 +06:00
1c877ebe59 add spgroup writing 2025-09-15 17:48:06 +06:00
836a488376 Developing 2025-09-12 20:09:48 +03:00
5921714566 Developing 2025-09-12 20:07:58 +03:00
f03248ca86 fix TextObject writing 2025-09-12 16:47:46 +06:00
624f7858e9 pptx modern comments to old 2025-09-12 12:30:30 +03:00
a4005412a7 Merge branch 'develop' into feature/add-xls-writing 2025-09-12 13:37:30 +06:00
d5434f190f Added the implementation of the object property parse in HWPML 2025-09-11 23:33:24 +03:00
e50016259a add textObject processing 2025-09-11 21:38:36 +06:00
5a6ec24618 for bug #68538 2025-09-11 17:14:35 +03:00
0ed5be36a8 Rollback IsRGB 2025-09-11 16:40:26 +03:00
d5a6c935e5 add obj specifying for comment 2025-09-11 17:56:50 +06:00
81a80fd469 Merge branch 'release/v9.1.0' of https://git.onlyoffice.com/ONLYOFFICE/core into release/v9.1.0 2025-09-11 14:25:56 +03:00
9fbef96ee9 Merge branch 'fix/rtfFormat' into release/v9.1.0 2025-09-11 14:25:39 +03:00
ac66f7afdf Merge pull request 'fix/bug53250' (#443) from fix/bug53250 into release/v9.1.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/443
2025-09-11 11:23:44 +00:00
380aac0fca fix/bug52250
fix bug with unexpected indents
2025-09-11 14:20:19 +03:00
7d40c402bc Refactoring test 2025-09-11 14:11:25 +03:00
a9fa5b8072 Refactoring default styles 2025-09-11 13:43:53 +03:00
aa3d4cb3ce add drawing preparation 2025-09-11 16:20:34 +06:00
73fa9b6aac Merge pull request 'fix bug 74748' (#439) from fix/bug-74748 into develop
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/439
2025-09-11 08:54:43 +00:00
c9a0d6e4e5 Merge branch hotfix/v9.0.4 into develop 2025-09-11 08:40:08 +00:00
a517cef437 Merge branch hotfix/v9.0.4 into master 2025-09-11 08:40:05 +00:00
6499d296a6 fix bug #76598 2025-09-10 19:55:30 +03:00
e57c7ed76e fix bug #76601 2025-09-10 19:31:13 +03:00
333df23bbf Merge pull request 'Fix: update icu libraries version' (#441) from fix/docbuilder-java into release/v9.1.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/441
2025-09-10 12:48:05 +00:00
ac9bf053f2 Fix: update icu libraries version 2025-09-10 16:46:03 +04:00
130de28e4b Add comments conversion 2025-09-10 18:10:17 +06:00
2ee94c4920 Text conversion from HWPML format is implemented 2025-09-10 13:59:15 +03:00
20e3b1eb9f Merge pull request 'Fix bug 61632' (#440) from Rtf/Fixbugs into release/v9.1.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/440
2025-09-10 07:44:55 +00:00
dee37793f5 Fix bug 61632
(cherry picked from commit b14b1a3f3e)
2025-09-10 10:38:49 +03:00
09ddeaad9e Merge pull request 'For bug 50842' (#436) from Rtf/Fixbugs into release/v9.1.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/436
2025-09-09 16:37:31 +00:00
144399868b Fix bug 76541 2025-09-09 18:55:18 +03:00
cd53c06be3 fix bug 74748 2025-09-09 17:53:21 +03:00
39a7f38dfb Merge pull request 'Fix bug #76515' (#437) from fix/bug-76515 into release/v9.1.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/437
2025-09-09 14:19:34 +00:00
4b0fb0633f Merge pull request 'fix/custom-sysroot' (#438) from fix/custom-sysroot into release/v9.1.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/438
2025-09-09 13:48:46 +00:00
1d978af98e Fix gcc ver check 2025-09-09 16:47:06 +03:00
122a54f510 add textObjectWriting 2025-09-09 18:45:39 +06:00
cde1cb8f0b fix prev 2025-09-09 13:25:36 +03:00
498227ed7a Add flag 2025-09-09 12:21:29 +03:00
c9905b3c4c Remove mac builds as unnecessary 2025-09-09 12:19:24 +04:00
f96dd51403 Fix bug #73727 2025-09-08 17:40:18 +03:00
9463ae5487 Add libVLC build for linux_arm64 2025-09-08 16:23:59 +04:00
8676bde7bc Rebuild libVLC for linux_64 2025-09-08 15:56:16 +04:00
b425405744 add gboData writing 2025-09-08 17:36:02 +06:00
28ffd27fca add FtLbsData writing 2025-09-08 16:11:51 +06:00
15f2d9f1b1 Fix bug #76515 2025-09-08 12:59:00 +03:00
f1c51c0fe8 For bug 50842
(cherry picked from commit 31b8fdbd8d)
2025-09-08 12:58:14 +03:00
9bc9d86dd6 add pict fmla writing 2025-09-08 14:43:35 +06:00
b14b1a3f3e Fix bug 61632 2025-09-08 11:03:40 +03:00
a96460f096 Merge pull request 'hotfix/v9.0.4' (#434) from hotfix/v9.0.4 into release/v9.1.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/434
2025-09-08 07:20:47 +00:00
d5d211dbe0 Merge pull request 'fix bug 75855' (#399) from fix/bug-75855 into hotfix/v9.0.4
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/399
2025-09-08 07:19:46 +00:00
602207ab6d Update unit-tests 2025-09-08 09:48:38 +03:00
39e6c1e2c6 Fix curve intersection 2025-09-08 09:47:53 +03:00
1d723fee65 Merge pull request 'fix/CustomShapePath' (#433) from fix/CustomShapePath into release/v9.1.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/433
2025-09-06 11:54:07 +00:00
a1891b597f add pictFmla writing 2025-09-05 21:24:54 +06:00
bf9ce4f535 add ft macro writing 2025-09-05 19:10:52 +06:00
508d8f25db add obj writing 2025-09-05 18:09:11 +06:00
3be712f2a1 . 2025-09-04 23:38:11 +03:00
efbfcaed37 add OfficeArtSpContainer writing 2025-09-04 20:54:51 +06:00
62317f95a1 [android] remove legacy packaging 2025-09-04 17:33:46 +03:00
deb90037d5 StarMath conversion to a dynamic library 2025-09-04 17:12:15 +03:00
22c70d1c49 Rebuild libVLC for win32 2025-09-04 17:38:42 +04:00
5463d8dcc0 fix bug #76571 2025-09-04 16:05:19 +03:00
097aa15104 Update win_64 build
(Remove subtitle-related plugins)
2025-09-04 17:01:41 +04:00
d1fc31ac28 add OfficeArtFRITContainer writing 2025-09-04 18:50:50 +06:00
b8efe6c554 add fdg writing 2025-09-04 17:26:28 +06:00
31b8fdbd8d For bug 50842 2025-09-04 11:19:25 +03:00
f95f4bdfd5 Add win_arm64 build 2025-09-03 20:47:34 +04:00
22a984b4ac Add configuration for win_arm64 build 2025-09-03 20:44:16 +04:00
a696f9a7a9 Merge pull request 'fix/bug76397' (#431) from fix/bug76397 into release/v9.1.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/431
2025-09-03 14:49:42 +00:00
801fad7c74 fix bug 2025-09-03 16:55:27 +03:00
13410f8467 add objects writing 2025-09-03 19:37:32 +06:00
a1e120e901 Merge pull request 'Fix bug #76513' (#432) from fix/bug-76513 into release/v9.1.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/432
2025-09-03 12:51:56 +00:00
c84855b17e [android] improved clarity 2025-09-03 12:49:15 +03:00
3a389147dd add dbb writing 2025-09-03 15:13:04 +06:00
8a339386f4 Fix build 2025-09-03 08:46:43 +03:00
47aa4ebb77 Fix build 2025-09-02 23:33:04 +03:00
f52643b750 Add method for system directory 2025-09-02 22:46:39 +03:00
da278aba0b fix/bug76397
fix bug when text:section  is interpreted like text:properties
2025-09-02 18:05:49 +03:00
ba203f734d add fdb writing 2025-09-02 20:19:02 +06:00
e6da8e50f5 Fix bug #76513 2025-09-02 17:05:44 +03:00
8a42229186 Rebuild libVLC for win64 with new version 2025-09-02 16:21:15 +04:00
758454747d add sxformula writing 2025-09-02 16:46:39 +06:00
fbf4c0f81a Add initial Dockerfile for winarm 2025-09-02 13:16:04 +04:00
d904245e9a Refactoring CPictFile 2025-09-02 11:06:06 +03:00
950482095c fix bug #76358 2025-09-02 10:11:09 +03:00
8ca89ca9b7 [android] Update icu path, enable resource shrinking 2025-09-02 08:21:01 +03:00
da705edfb8 fix bug #76472 2025-09-01 17:03:24 +03:00
bf175e92a3 add sxdb writing 2025-09-01 20:02:35 +06:00
0c9b5821e7 add pivotcache stream writing 2025-09-01 19:29:29 +06:00
2ed318df0f fix bug #76417 2025-09-01 15:41:29 +03:00
98dae842ae Add data validations conversion 2025-09-01 18:26:48 +06:00
771ee80ec5 fix bug #71797 2025-09-01 13:12:46 +03:00
4ddf4521c4 fix macros in embedded 2025-09-01 12:41:04 +03:00
7e6252a0bf Fix bug 56387 2025-08-29 16:23:50 +03:00
03d7f3489c path conversion 2025-08-29 15:05:49 +03:00
1491bd8802 Merge pull request 'Fix bugs' (#429) from fix/fb2-html-hwp into release/v9.1.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/429
2025-08-29 10:12:51 +00:00
7bb68aedca Merge remote-tracking branch 'origin/release/v9.1.0' into feature/pdf-redact-fix 2025-08-29 10:28:59 +03:00
e7de9af0e0 Fix build 2025-08-28 19:33:34 +03:00
5475c246ab Fix test Redact 2025-08-28 18:09:25 +03:00
703ec47e67 Merge pull request 'fix bug #76433' (#428) from fix/bug76433 into release/v9.1.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/428
2025-08-28 15:07:44 +00:00
708e37d0a5 Merge pull request 'Fix bug 45529' (#427) from fix/rtfFormat into release/v9.1.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/427
2025-08-28 15:06:51 +00:00
e11b946d62 fix bug #76433 2025-08-28 21:05:16 +06:00
331401ea86 Fix bug 45529 2025-08-28 18:02:53 +03:00
40809ea3c2 fix build 2025-08-28 15:34:21 +03:00
b79001a9fd Merge branch 'fix/ofd' into fix/fb2-html-hwp 2025-08-28 14:57:02 +03:00
49d4b5c1d2 Merge remote-tracking branch 'origin/fix/html-bugs' into fix/fb2-html-hwp 2025-08-28 14:56:12 +03:00
fa513eb83f Merge remote-tracking branch 'origin/fix/hwp-bugs' into fix/fb2-html-hwp 2025-08-28 14:55:56 +03:00
e84e0a6ce8 Merge branch 'fix/fb2' into fix/fb2-html-hwp 2025-08-28 14:55:43 +03:00
13158b2956 Merge pull request 'fix bug #76439' (#422) from fix/bug76439 into release/v9.1.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/422
2025-08-28 11:22:22 +00:00
9e8beb5651 Merge pull request 'fix/bug56564' (#425) from fix/bug56564 into release/v9.1.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/425
2025-08-28 11:20:43 +00:00
5864ab8e7a Fix test 2025-08-28 13:47:42 +03:00
03809c0a1c Add SetEditType 2025-08-28 13:45:56 +03:00
711e80e62c Merge pull request 'Fix bug 76484, 76443' (#426) from fix/bug-76484 into release/v9.1.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/426
2025-08-28 10:28:36 +00:00
3404aab782 Fix bug 76484 2025-08-28 12:10:22 +03:00
9c3ba26fab fix/bug56564 2025-08-28 11:38:17 +03:00
02f4c10cd6 Merge branch 'fix/bug56564' of git.onlyoffice.com:ONLYOFFICE/core into fix/bug56564 2025-08-28 11:30:09 +03:00
0d912533bf fix/bug56564 2025-08-28 11:30:06 +03:00
066793921b revert 518a38e178
revert fix/bug56564

fix bug with uncorrected table of contents
2025-08-28 08:29:11 +00:00
9b2b7263c2 revert 518a38e178
revert fix/bug56564

fix bug with uncorrected table of contents
2025-08-28 08:25:05 +00:00
31c28903d6 Merge pull request 'Fix bug 56419' (#423) from fix/rtfFormat into release/v9.1.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/423
2025-08-27 22:46:36 +00:00
518a38e178 fix/bug56564
fix bug with uncorrected table of contents
2025-08-27 22:39:10 +03:00
631c2d4490 Fix bug 56419 2025-08-27 22:04:15 +03:00
6c3f0e88cb Fix CropBox 2025-08-27 17:03:31 +03:00
0d0003ad5a fix bug #76439 2025-08-27 19:12:03 +06:00
bb40cd0467 Fix coords 2025-08-27 15:18:59 +03:00
eb3bedd840 Fix build with xcode 14- 2025-08-27 13:55:11 +03:00
0e9db67173 Merge pull request 'Fix bug 76416' (#421) from fix/bug-76416 into release/v9.1.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/421
2025-08-27 09:18:46 +00:00
5c98a92faf Merge remote-tracking branch 'origin/fix/bug-76416' into feature/pdf-redact-fix 2025-08-27 12:13:41 +03:00
1a65242d46 Fix build 2025-08-27 12:04:48 +03:00
2b54cfaf37 Add drawing line, text, arc methods for PICT 2025-08-27 07:20:58 +03:00
30da4b631f Fix build 2025-08-26 16:07:41 +03:00
00cd3a9497 RGB to arrayBufferFiller 2025-08-26 14:40:03 +03:00
a988e6741c Merge branch 'release/v9.1.0' of https://git.onlyoffice.com/ONLYOFFICE/core into release/v9.1.0 2025-08-26 09:56:18 +03:00
29c2239df2 Fix build 2025-08-26 09:56:07 +03:00
0d7ddfb580 Merge pull request 'Fix bug 56063' (#420) from fix/rtfFormat into release/v9.1.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/420
2025-08-26 06:03:47 +00:00
a7b5866bc6 Fix bug in HWP 2025-08-26 08:44:29 +03:00
a488266ba1 Fix drawing methods for PICT 2025-08-26 06:30:04 +03:00
65f4acc2ac Add drawing recr, oval methods for PICT 2025-08-26 04:35:16 +03:00
8bbb21263d Fix build 2025-08-25 22:53:43 +03:00
ff53c1b474 Add others template params for cf12 conversion 2025-08-25 21:12:27 +06:00
a652bd6591 Fix bug 56063 2025-08-25 16:19:02 +03:00
78532c27cf Fix bug 76416 2025-08-25 16:01:47 +03:00
a47f3df7bf Add drawing polygon method for PICT converter 2025-08-25 15:32:39 +03:00
abd4c2f4a8 Fix cliping 2025-08-25 12:54:54 +03:00
63d3999072 Fix build with c++17 2025-08-22 23:50:22 +03:00
d055522aa0 Merge branch 'feature/libheif' into release/v9.1.0 2025-08-22 22:33:26 +03:00
334f9602b4 add conditional formatting filter conversion 2025-08-22 20:06:20 +06:00
c5e63a8d26 fix bug #76396 2025-08-22 16:23:28 +03:00
e32aea2138 Redact stroke path 2025-08-22 14:56:44 +03:00
fed94358fe add multistate conversion 2025-08-22 17:44:53 +06:00
89b669e319 fix databar conversion 2025-08-22 15:16:06 +06:00
e56da8e641 Add ios and android libheif support 2025-08-22 13:15:44 +04:00
ba63cfc622 Merge pull request 'feature/custom-sysroot' (#417) from feature/custom-sysroot into release/v9.1.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/417
2025-08-22 07:50:56 +00:00
7486182be7 Merge pull request 'release/v9.1.0' (#416) from release/v9.1.0 into feature/custom-sysroot
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/416
2025-08-22 07:41:42 +00:00
6f171bd5d7 Merge pull request 'Fix bug 57050' (#415) from fix/rtfFormat into release/v9.1.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/415
2025-08-21 16:39:09 +00:00
dad2fdd3e0 Fix prev 2025-08-21 19:38:49 +03:00
48bc54311c Fix bug 57050 2025-08-21 19:08:37 +03:00
db213d3ae4 add cf databar conversion 2025-08-21 21:35:04 +06:00
a71b7ec6e7 Fix pro file path 2025-08-21 17:07:56 +03:00
292e6b0431 Merge pull request 'fix/fix-bugs' (#414) from fix/fix-bugs into release/v9.1.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/414
2025-08-21 13:52:17 +00:00
5649de0877 Merge remote-tracking branch 'origin/fix/bug73365' into fix/fix-bugs 2025-08-21 16:50:07 +03:00
79df81301f add colorScale cond fmt conversion 2025-08-21 18:52:07 +06:00
3cf3a3e098 Try DoPathStroke 2025-08-21 15:47:26 +03:00
7aa2056785 Merge branch 'fix/bug73365' of git.onlyoffice.com:ONLYOFFICE/core into fix/bug73365 2025-08-21 14:29:40 +03:00
b1c8969ede fix/bug73365
fix bug when after conversion text move to next column. Also detect and fix a new bug, when we have explicit break column but break is happening early
2025-08-21 14:28:47 +03:00
d3805e81d7 Refactoring win arm build 2025-08-20 17:43:39 +03:00
7e78b9b190 Merge pull request 'release/v9.1.0' (#412) from release/v9.1.0 into fix/CustomShapePath
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/412
2025-08-20 13:56:34 +00:00
197bbf7027 Add aligment conversion to conditional formatting 2025-08-20 18:17:03 +06:00
d092b88d9b Redact Do&Undo 2025-08-20 14:54:02 +03:00
a466592bc2 add protection conversion 2025-08-20 14:48:03 +06:00
4bce73d81d Add numfmt convesion to dxf 2025-08-20 14:06:50 +06:00
2a6c50db89 Redact PdfReader 2025-08-19 17:39:36 +03:00
8171939be6 Merge pull request 'fix/rtfFormat' (#411) from fix/rtfFormat into release/v9.1.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/411
2025-08-19 13:19:54 +00:00
ed13e54d26 Add dxf border conversion 2025-08-19 19:18:01 +06:00
5178de4254 Fix bug 75790 2025-08-19 15:49:48 +03:00
e0dee3720f Try CalcBooleanOperation 2025-08-19 14:25:43 +03:00
4686fb4081 Merge remote-tracking branch 'origin/develop' into feature/pdf-redact-fix 2025-08-19 13:14:11 +03:00
f3ee3c8c91 Fix image size in HWP format 2025-08-19 12:16:12 +03:00
e108591a7e Fix bug #74898 2025-08-19 12:15:09 +03:00
29f1dc454b Fix bug #73730 2025-08-19 11:42:46 +03:00
b534907bc9 Remove checkout 2025-08-19 10:16:18 +03:00
4a8b7455ca Revert previous commit 2025-08-18 23:09:48 +03:00
b957d3aeea Fix build 2025-08-18 23:07:48 +03:00
be93c7f621 Fix linux build 2025-08-18 23:05:07 +03:00
520c345f00 Merge branch 'release/v9.1.0' of https://git.onlyoffice.com/ONLYOFFICE/core into release/v9.1.0 2025-08-18 21:52:43 +03:00
08ce05e5d3 Fix windows build 2025-08-18 21:52:32 +03:00
a8125114de fix bug #76361 (add custom xml in pptx) 2025-08-18 21:50:39 +03:00
dda020a1d5 Create SetExtGrStateKey 2025-08-18 17:48:23 +03:00
e371f7ccf1 add font condfmt conversion 2025-08-18 20:42:46 +06:00
14a0e4713c add fills conversion to conditional formatting 2025-08-18 17:03:07 +06:00
13a4986eb7 Merge pull request 'fix/bug-with-break-column' (#410) from fix/bug-with-break-column into release/v9.1.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/410
2025-08-18 10:40:53 +00:00
62003d97bb revert 98af93c631
revert fix/bug-with-break-columns

update comments
2025-08-18 10:40:37 +00:00
3e0a88a487 fix/bug-with-break-columns
update comments
2025-08-18 13:36:58 +03:00
1969229659 fix/bug-with-break-columns
update comments
2025-08-18 13:31:19 +03:00
74b9a426c2 fix/bug-with break-columns
update comments
2025-08-18 13:27:29 +03:00
98af93c631 fix/bug-with-break-columns
update comments
2025-08-18 13:25:23 +03:00
a4ebe56f28 Fix/bug73365
fix bug with convert from docx to odt
2025-08-17 10:18:47 +03:00
247b90ce1a Merge pull request 'feature/win-arm64' (#408) from feature/win-arm64 into release/v9.1.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/408
2025-08-16 11:14:01 +00:00
aef05de075 Merge pull request 'Switch to mac framework builds' (#400) from feature/mac-frameworks into release/v9.1.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/400
2025-08-16 11:12:57 +00:00
43c7e2c9a8 Add global info using in conversion 2025-08-15 20:55:34 +06:00
cac28771d3 Test pathkit 2025-08-15 17:30:21 +03:00
39b9c28607 fix dxfn conversion 2025-08-15 17:34:07 +06:00
5b12d7fff3 Fix boost build 2025-08-14 22:23:52 +03:00
4223f9c265 Change major ver of icu 2025-08-14 18:23:18 +03:00
9e60a7e3ab Fix build for boost 2025-08-14 17:58:05 +03:00
6e57d7e4e7 fix cfParsed formula conversion 2025-08-14 20:40:20 +06:00
5de9bd7e67 For bug 75790 extra underline 2025-08-14 16:49:55 +03:00
a938ce4c76 Fix drawForm 2025-08-14 16:05:33 +03:00
f831d9a22d add condFmt conversion 2025-08-14 17:56:01 +06:00
930165a993 fix bugs 2025-08-14 14:50:46 +03:00
dacde4c593 fix bug #76316 2025-08-14 13:46:25 +03:00
fc56b22d40 Test easy Redact 2025-08-14 11:29:36 +03:00
97385c3f37 fix bug #76313 2025-08-14 11:23:35 +03:00
edd17cd7c3 Fix for win_arm64 2025-08-13 21:28:33 +03:00
c53fff1ffb Write text 2025-08-13 18:16:16 +03:00
e373adf717 Merge pull request 'fix/fix-bugs-9.1' (#407) from fix/fix-bugs-9.1 into release/v9.1.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/407
2025-08-13 13:48:07 +00:00
2ad1771333 fix bug with break columns
Clear comment text_elements.cpp

(cherry picked from commit e01517714c)
2025-08-13 16:46:14 +03:00
73f40edc7e Fix bug with break columns
clear all comments into code

(cherry picked from commit 3f7edeec4f)
2025-08-13 16:46:08 +03:00
182a3cea90 Fix bug with columns break
Fix bug with convert from odf to docx

(cherry picked from commit 688632c373)
2025-08-13 16:45:54 +03:00
72f0b0403e Fix for Linux 2025-08-13 16:19:47 +04:00
7f54430813 Add dxf conversion 2025-08-13 17:21:03 +06:00
3d5d871911 Merge branch 'develop' into fix/bug73365 2025-08-13 14:16:58 +03:00
1fbffa673c fix/bug73365 2025-08-13 11:42:59 +03:00
06c47b07ec Remove usage of C++17 features in heif code 2025-08-13 11:38:12 +04:00
e2bcf62cc4 Fix for windows 2025-08-13 11:36:10 +04:00
ea42899b9e Merge branch 'develop' into feature/add-xls-writing 2025-08-13 13:20:11 +06:00
f5a91c33b5 Fix line break and tab bug 2025-08-12 19:12:23 +03:00
79ab0bc04b Change gitignore files 2025-08-12 19:08:56 +03:00
b420fd731f Add borders style conversion 2025-08-12 20:59:33 +06:00
dbbf4d04f9 Add blanc cell processing 2025-08-12 20:16:16 +06:00
242aa2c9d6 Merge pull request 'Fix bug with columns break' (#406) from fix/bug-with-break-columns into develop
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/406
2025-08-12 12:27:57 +00:00
e01517714c fix bug with break columns
Clear comment text_elements.cpp
2025-08-12 12:24:11 +03:00
3f7edeec4f Fix bug with break columns
clear all comments into code
2025-08-12 12:16:40 +03:00
d854608d45 Begin drawForm 2025-08-12 11:19:10 +03:00
fe2b631c87 Merge pull request 'release/v9.1.0' (#405) from release/v9.1.0 into feature/EQN2OOXml2
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/405
2025-08-12 08:13:11 +00:00
18d36179bd add hash annotation 2025-08-12 10:27:21 +03:00
9cef29c201 Fix for unix 2025-08-11 18:52:51 +04:00
688632c373 Fix bug with columns break
Fix bug with convert from odf to docx
2025-08-11 17:03:03 +03:00
71e1f7c726 Redact create path 2025-08-11 15:32:27 +03:00
c86387c015 Merge branch 'feature/mac-frameworks' into feature/libheif 2025-08-11 16:26:32 +04:00
e8f7720387 Move libs and includes to heif.pri 2025-08-11 16:26:17 +04:00
62132c27bd add fills conversion 2025-08-11 17:09:43 +06:00
4ea504f688 Fix bug #76165 2025-08-11 00:31:40 +03:00
c3dd5c8fc9 Add heif directory to 3dParty 2025-08-09 00:15:39 +04:00
6e1357f276 fix bug #76039
(cherry picked from commit 53d5f4517b)
2025-08-08 17:22:58 +03:00
fee71647a9 fix bug #74231
(cherry picked from commit 03e21d19f1)
2025-08-08 17:22:43 +03:00
6c516b7ce2 fix bug #74142
(cherry picked from commit cd05b830b1)
2025-08-08 17:22:32 +03:00
239d82deb4 Fix remove entry from xref 2025-08-08 17:01:34 +03:00
e4449d7aa9 Add font color conversion 2025-08-08 18:55:02 +06:00
cb304293b7 Add palette conversion 2025-08-08 14:20:56 +06:00
ffb62243a9 Merge branch 'develop' into feature/add-xls-writing 2025-08-08 13:27:43 +06:00
53d5f4517b fix bug #76039 2025-08-08 09:59:00 +03:00
03e21d19f1 fix bug #74231 2025-08-07 17:59:21 +03:00
63a80580cc fix number value conversion 2025-08-07 20:04:19 +06:00
cd05b830b1 fix bug #74142 2025-08-07 13:39:44 +03:00
fed142690b Add data consolidation conversion 2025-08-07 15:13:09 +06:00
8d368ca91c Merge branch 'develop' into feature/add-xls-writing 2025-08-07 13:07:10 +06:00
2cc2434982 fix continue record writing 2025-08-06 20:27:16 +06:00
f5989b979a Fix autofilter record writing 2025-08-06 18:44:53 +06:00
bf05a63db0 Merge branch hotfix/v9.0.4 into develop 2025-08-06 08:28:20 +00:00
5bab01517a New function for RedactOutputDev 2025-08-06 10:19:07 +03:00
62955d5f6e Add autofilter writing 2025-08-05 21:35:39 +06:00
bc96c82ff9 Merge branch hotfix/v9.0.4 into master 2025-08-05 14:08:27 +00:00
4187522006 fix bug #70515 2025-08-05 11:27:20 +03:00
cb68e4389e EQN conversion added to HWPX 2025-08-04 20:16:57 +03:00
72a445fb54 Create Redact annotation 2025-08-04 18:13:44 +03:00
a82cf375b7 Fixed a color bug in OFD 2025-08-04 17:54:26 +03:00
81f057ba78 Merge branch 'hotfix/v9.0.4' into feature/libheif 2025-08-04 17:47:50 +04:00
9fc3fcabcb Fix sort data record writing 2025-08-04 19:01:27 +06:00
6af0b89c1d Add sort state conversion 2025-08-04 17:48:04 +06:00
c2a733f465 Fixed PageBlock positioning in OFD 2025-08-04 14:45:28 +03:00
fcd7818675 Add test for heif 2025-08-04 12:51:33 +03:00
7451ba6e10 Merge remote-tracking branch 'origin/develop' into feature/pdf-redact 2025-08-04 11:54:40 +03:00
c34b9e00e5 Merge branch 'develop' into feature/add-xls-writing 2025-08-04 13:14:17 +06:00
baf8321c61 Fix bug 57586 (up version for fonts selection) 2025-08-02 21:33:34 +03:00
826bd168ad fix bug #74266 2025-08-01 15:51:04 +03:00
e715da8680 Add header and footer conversion 2025-08-01 18:33:49 +06:00
b1dff84b1b fix bug #74757 2025-08-01 15:32:24 +03:00
c65460e49b . 2025-08-01 15:30:40 +03:00
d6c58a4655 Create RedactOutputDev 2025-08-01 14:01:27 +03:00
7a26c345c5 Fix margin conversion 2025-08-01 16:42:57 +06:00
f5fa14a230 Merge branch 'develop' of git.onlyoffice.com:ONLYOFFICE/core into develop 2025-08-01 13:23:45 +03:00
db744e6fdc fix bug #76172 2025-08-01 13:23:19 +03:00
a15156fcb3 Merge remote-tracking branch 'origin/hotfix/v9.0.4' into develop 2025-08-01 13:13:23 +03:00
2a6e76a2bc Add pagesetup conversion 2025-08-01 15:42:05 +06:00
dbc54e5879 Fix typo 2025-08-01 12:33:09 +03:00
adfc79938d Merge branch 'develop' into feature/add-xls-writing 2025-08-01 14:00:31 +06:00
2a09e2ef67 Merge pull request 'Fix bug #76008' (#404) from fix/bug-76008 into hotfix/v9.0.4
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/404
2025-07-31 19:27:02 +00:00
17534abdda Fix bug #76008 2025-07-31 22:16:41 +03:00
e4a7cf63c9 Added support for Annotations in OFD 2025-07-31 21:04:31 +03:00
c3ce1d2756 Fix hlink conversion 2025-07-31 19:14:09 +06:00
0eadce28da fix bug #74757 2025-07-31 15:51:45 +03:00
29c53f751b Merge pull request 'fix bug #76186' (#402) from fix/bug76186 into hotfix/v9.0.4
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/402
2025-07-31 12:17:57 +00:00
6500e65edc fix bug #76186 2025-07-31 18:13:52 +06:00
e8ecb2cdfb Fix bug 57586 2025-07-31 12:27:49 +03:00
3046b1557f Update gitignore 2025-07-31 11:25:31 +03:00
fbf4ef22d8 Fix remove MEOptions 2025-07-31 11:23:14 +03:00
cf5208d6a5 Add hyperlinks conversion 2025-07-31 13:53:14 +06:00
56e6a0a3b8 Merge branch 'develop' into feature/add-xls-writing 2025-07-31 13:06:10 +06:00
9b7bb7c602 fix bug 70337 2025-07-30 16:47:18 +03:00
628908e96c Merge remote-tracking branch 'origin/fix/pdf-rtl' into develop 2025-07-30 16:40:22 +03:00
78df0b3780 Fix emscripten 2025-07-30 16:35:55 +03:00
d8c0e9b68d Merge remote-tracking branch 'origin/develop' into fix/pdf-rtl
# Conflicts:
#	DesktopEditor/graphics/commands/AnnotField.cpp
#	DesktopEditor/graphics/pro/js/wasm/js/drawingfile.js
#	DesktopEditor/graphics/pro/js/wasm/src/drawingfile_test.cpp
#	PdfFile/PdfWriter.cpp
#	PdfFile/SrcReader/PdfAnnot.cpp
2025-07-30 16:30:59 +03:00
df8f8636b6 Fix MEOptions to 21 widget and 11 parent 2025-07-30 16:20:57 +03:00
c1bb697725 Create Redact function 2025-07-30 15:31:40 +03:00
5722599351 fix bug #76106 2025-07-30 15:09:53 +03:00
0a7ad2f560 Add worksheet protection conversion 2025-07-30 17:25:53 +06:00
fede5921e1 add workbook protection conversion 2025-07-30 16:54:57 +06:00
897ea781b7 Fix font conversion 2025-07-30 15:45:59 +06:00
f4489a3926 for bug #76151 2025-07-29 18:08:30 +03:00
91f27bf771 fix bug #76151 2025-07-29 17:21:32 +03:00
f95014f46f Add phonetic string conversion 2025-07-29 17:25:33 +06:00
49a743944f fix bug 75855 2025-07-29 11:27:44 +03:00
eb3daff8d6 fix bug #70652 2025-07-28 19:01:26 +03:00
92fae52a6d Fix rich string xls conversion 2025-07-28 21:52:30 +06:00
afb0f44af2 Add crun shared string conversion 2025-07-28 20:49:38 +06:00
1027f3cc6b Fix Edit in WriteNew mode 2025-07-28 16:18:18 +03:00
af20b1f63d fix cell xf index writiong 2025-07-28 18:34:52 +06:00
6d707ebae2 Fix decode 2025-07-28 13:28:20 +03:00
bab8da0475 Change framework versions to A 2025-07-28 10:54:50 +04:00
66501ab353 Fixed a problem with text rendering in OFD 2025-07-26 18:58:32 +03:00
c779654a58 Add cell styles conversion 2025-07-25 21:04:32 +06:00
d1c99891c6 Add xfs conversion 2025-07-25 18:12:27 +06:00
ffc94bf455 Add numFmts conversion 2025-07-25 15:27:53 +06:00
680c83853a Add fonts conversion 2025-07-25 14:44:08 +06:00
a865901405 Fix bug 57586 2025-07-25 11:21:08 +03:00
33e698242c Merge branch 'develop' into feature/add-xls-writing 2025-07-25 13:16:39 +06:00
c1987b196e Fix Stamp InRect 2025-07-25 09:31:46 +03:00
e8ad643a0e Add bookviewsConversion 2025-07-24 21:24:07 +06:00
609e3bc158 Add worksheet view conversion 2025-07-24 20:50:37 +06:00
8899966508 Add use fonts folder to builder 2025-07-24 14:50:08 +03:00
f04c60fbb0 Develop WriteNew 2025-07-24 14:13:14 +03:00
41dc23ce53 Add Release/Debug libs 2025-07-24 12:10:26 +03:00
7e51dd143a Add colls & merged cells conversion 2025-07-24 15:02:36 +06:00
31d65dea7c Merge branch 'develop' into feature/add-xls-writing 2025-07-24 13:02:00 +06:00
3a555aa223 fix bug #76084 2025-07-24 09:58:08 +03:00
89172a9047 add relsSorting 2025-07-23 20:45:04 +06:00
0103717241 add dimensions conversion 2025-07-23 20:44:54 +06:00
2168216009 Fix meta drawingfile 2025-07-23 17:16:00 +03:00
13b42d71e2 Write OMetadata for all annots 2025-07-23 17:11:35 +03:00
58cd88a93f OMetadata for all annots 2025-07-23 17:03:45 +03:00
cc294ab2b2 New mode WriteNew 2025-07-23 16:50:31 +03:00
c012662402 Add array formula writing 2025-07-23 17:21:30 +06:00
0f1cb37153 edit of the previous comment 2025-07-22 18:23:24 +03:00
95bad7b071 writing Arabic characters 2025-07-22 18:04:52 +03:00
00c3085a90 Merge branch 'develop' into feature/add-xls-writing 2025-07-22 17:37:35 +06:00
f1fa861c8a Add shared formula conversion 2025-07-22 17:35:57 +06:00
48d6ce60ee Merge remote-tracking branch 'origin/develop' into feature/pdf-redact 2025-07-22 10:58:03 +03:00
4dc1d88bc9 Fix Java wrapper for mac frameworks 2025-07-21 19:21:51 +04:00
c37f96da2d Add formula conversion 2025-07-21 19:20:37 +06:00
3b4097310b Write Redact 2025-07-21 16:09:12 +03:00
ef2d554265 Return AP for readAnnotationsInfoFromBinary 2025-07-21 16:08:26 +03:00
2d08404f72 ctWidgetsInfo add to readAnnotationsInfoFromBinary 2025-07-21 13:10:55 +03:00
cd6c4c56c3 . 2025-07-21 11:45:33 +03:00
96f7de8534 Add executable rights 2025-07-20 15:20:37 +03:00
dba4be73dd Add support woff2 fonts 2025-07-20 14:53:35 +03:00
f3101fd2ec fix bug #76021 2025-07-18 18:45:36 +03:00
89473c5ba0 Add simple shared strings conversion 2025-07-18 20:03:37 +06:00
08716fc4ce fix bug #75800 2025-07-18 16:59:16 +03:00
986125a3e6 fix bug #76005 2025-07-18 16:29:32 +03:00
b655a4e109 Merge remote-tracking branch 'origin/fix/pdf-copy-paste' into develop 2025-07-18 16:14:07 +03:00
7ce6602951 Merge remote-tracking branch 'origin/feature/pdf-redact' into fix/pdf-copy-paste 2025-07-18 16:12:09 +03:00
f45b3ba0da Fix DA in SetFont 2025-07-18 14:24:27 +03:00
5ec24525b8 Not need AP 2025-07-18 13:25:11 +03:00
07afc6e4c3 add simple cells conversion 2025-07-18 16:16:03 +06:00
05404c1bad Merge pull request 'develop' (#398) from develop into feature/EQN2OOXml2
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/398
2025-07-18 09:21:14 +00:00
b0e810013d editing conversion and parsing, fixing bugs, adding tests 2025-07-18 12:18:27 +03:00
0c601c1c82 Redact read font from DA 2025-07-18 12:02:20 +03:00
34c34018a0 Merge branch 'develop' into feature/add-xls-writing 2025-07-18 14:48:55 +06:00
c7d3e5df14 Fix python wrapper 2025-07-18 12:05:57 +04:00
2351b1f052 Link statically with ICU on framework builds 2025-07-18 12:05:57 +04:00
b93ea3bb41 Add support for mac framework builds 2025-07-18 12:05:57 +04:00
697f604fc4 . 2025-07-18 10:25:34 +03:00
a817cd54d5 Fix static build 2025-07-17 20:11:46 +03:00
05dd636a1c Add cellType processing function 2025-07-17 21:36:00 +06:00
1fc61459b8 Fixed a numbering bug in html 2025-07-17 18:06:58 +03:00
e1b3474a06 Create Redact 2025-07-17 17:57:16 +03:00
e6158043b9 add sheet data conversion 2025-07-17 18:42:22 +06:00
041325b440 Merge pull request 'For bug 70337' (#397) from fix/docx-renderer into hotfix/v9.0.4
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/397
2025-07-17 12:26:02 +00:00
064a04a600 Fix bug #38609 2025-07-17 15:18:21 +03:00
cfd1dcc3ee Add worksheets conversion 2025-07-17 17:14:12 +06:00
7a2944ce58 Add defined names conversion 2025-07-17 15:26:34 +06:00
df4e1445f6 fix bug #75800 2025-07-17 10:36:02 +03:00
8a11fa5aac Merge branch 'develop' into feature/add-xls-writing 2025-07-17 13:03:44 +06:00
cc6132cd77 For bug 70337
Fix shape rotation and negative position for pdf editor
2025-07-16 19:08:01 +03:00
aa2127b55f Add bundlesheet conversion 2025-07-16 20:28:40 +06:00
86a2d66d83 Add xlsx2xls conversion 2025-07-16 19:13:12 +06:00
c7a209048f Merge pull request 'feature/add-xls-writing' (#396) from feature/add-xls-writing into develop
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/396
2025-07-16 12:27:45 +00:00
a359060684 Merge remote-tracking branch 'origin/hotfix/v9.0.4' into fix/pdf-copy-paste 2025-07-16 12:14:51 +03:00
08fafaa655 fix formula writing 2025-07-15 19:18:08 +06:00
57923e4266 Merge pull request 'Fix bug 75958' (#395) from fix/bug-75958 into hotfix/v9.0.4
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/395
2025-07-15 09:32:15 +00:00
b488623e81 Fix bug 75958 2025-07-15 12:11:33 +03:00
2462074f63 Merge branch 'develop' into feature/add-xls-writing 2025-07-15 13:11:37 +06:00
5e121188d8 Merge pull request 'Fix bugs 75871, 75897' (#394) from fix/bug-75871 into hotfix/v9.0.4
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/394
2025-07-15 06:49:52 +00:00
114f9a0da3 Fix build for gcc 5.4.1 2025-07-15 00:01:49 +03:00
7c4b85600d Fix sst writing 2025-07-14 19:14:56 +06:00
48e2defbcd Fix bug 75897 2025-07-14 15:55:17 +03:00
07bd804009 Merge pull request 'Refactoring the hwpx parser' (#393) from fix/HWP into develop
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/393
2025-07-14 11:50:21 +00:00
348fc71e1c Merge pull request 'Fix bug #75723' (#392) from fix/bug-75723 into hotfix/v9.0.4
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/392
2025-07-14 11:49:43 +00:00
d123b0f610 fix bug #75882 2025-07-14 14:29:50 +03:00
13e30bf918 Fix bug 75871 2025-07-14 12:54:33 +03:00
e74a96884c Fix multy sheet writing 2025-07-14 15:44:41 +06:00
c67d87b1f0 Fix split button AP 2025-07-14 12:05:54 +03:00
1e73aed4a5 Merge branch 'develop' into feature/add-xls-writing 2025-07-14 13:11:35 +06:00
63da89d846 Merge pull request 'hotfix/v9.0.4' (#391) from hotfix/v9.0.4 into develop
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/391
2025-07-12 06:44:47 +00:00
9f223deee7 fix row conversion 2025-07-11 20:55:58 +06:00
d49789ea19 Removed dbcells writing 2025-07-11 20:55:32 +06:00
738583d0d4 Fix empty document writing 2025-07-11 18:55:15 +06:00
47a1e26ff5 Fix build 2025-07-11 14:24:06 +03:00
ecca7a5cdd Add default values for xls records 2025-07-11 14:47:35 +06:00
407993cd40 fix bug #73585 2025-07-11 11:05:39 +03:00
7e5d3bb3eb fix bug #75841 2025-07-11 09:20:57 +03:00
381daebcb9 . 2025-07-10 19:21:27 +03:00
7e6d6b407c Merge pull request 'Fix metadata xlst conversion' (#390) from fix/metadata-conversion into hotfix/v9.0.4
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/390
2025-07-10 15:43:16 +00:00
5e9f0d762a Fix metadata xlst conversion 2025-07-10 21:41:22 +06:00
f5ddf8c6ce Fix build 2025-07-10 18:27:15 +03:00
4f95713790 Fix bug #75723 2025-07-10 16:15:10 +03:00
337847f606 Fixed a tab bug in hwpx 2025-07-10 13:51:56 +03:00
a84491cf74 Fix param type 2025-07-10 13:36:06 +03:00
689eaddd5b fix bug #75885 2025-07-09 21:05:46 +03:00
2cc56a9f9f fix bug #75880 2025-07-09 20:56:05 +03:00
33c6640ce0 fix bug #75754 2025-07-09 18:15:26 +03:00
e6e93549c9 Merge remote-tracking branch 'origin/hotfix/v9.0.4' into fix/HWP 2025-07-09 15:47:38 +03:00
00e5c8bd2e Fixed a bug with glued text in hwpx 2025-07-09 15:46:06 +03:00
ae063b3d41 Merge pull request 'Fix bug 75687' (#389) from fix/pre9.0.4 into hotfix/v9.0.4
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/389
2025-07-09 08:32:03 +00:00
01d6a7d090 Add message for arm64 building 2025-07-08 18:30:59 +03:00
98c998b3ee Refactoring 2025-07-08 15:07:40 +03:00
f6c8356684 Merge branch hotfix/v9.0.3 into master 2025-07-08 11:37:44 +00:00
880951a611 Refactoring 2025-07-08 14:24:44 +03:00
2895f829e3 Refactoring ZipFolder 2025-07-08 14:24:28 +03:00
671b88d8bc Add ibXF writing 2025-07-08 15:58:44 +06:00
c0ba4267d2 Fix for arm 2025-07-07 22:58:32 +03:00
29355d337b Fix encode 2025-07-07 18:01:25 +03:00
6f7a414888 Merge branch hotfix/v9.0.2 into develop 2025-07-07 14:38:42 +00:00
031fc7517b Merge pull request 'hotfix/v9.0.2' (#388) from hotfix/v9.0.2 into hotfix/v9.0.3
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/388
2025-07-07 12:59:29 +00:00
a040e89ae5 Merge branch 'develop' into feature/add-xls-writing 2025-07-07 13:09:31 +06:00
e025ae2779 Refactoring 2025-07-06 22:53:38 +03:00
21ca48c6f6 Fir bug 75101 2025-07-04 23:08:11 +03:00
ec906774dd Fix bug 75101 2025-07-04 23:04:18 +03:00
e17b99554d Fix Split mode 2025-07-04 19:40:08 +03:00
09ac9f8609 add mandatory formatting writing 2025-07-04 21:25:30 +06:00
97178ae328 Merge pull request 'fix images' (#387) from fix/fix-bugs-9.0.3 into hotfix/v9.0.3
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/387
2025-07-04 14:33:59 +00:00
1dc8990c9d fix images 2025-07-04 17:31:44 +03:00
f68825c6d3 Merge pull request 'For bug 75781' (#386) from fix/pdf-button into hotfix/v9.0.3
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/386
2025-07-04 12:42:28 +00:00
4770a2b22b Fix bug 75687 2025-07-04 14:27:16 +03:00
dda00c3b18 Fix get MK.RI & MK.IX 2025-07-04 14:18:04 +03:00
156578ca82 Fix base64 image 2025-07-04 14:16:48 +03:00
2ec63f2cb7 Change ChangeFullNameAnnot 2025-07-04 12:26:42 +03:00
62d2deaefb Add featHdr writing 2025-07-04 15:00:26 +06:00
fbed837a47 Fix change parrent FullName 2025-07-04 10:59:33 +03:00
0715c0c5a5 Fix merge prefix name 2025-07-04 10:53:00 +03:00
103c8dd575 Fix return errors 2025-07-03 20:45:30 +03:00
5dc5a200b8 Merge pull request 'Fix HWP bugs' (#385) from fix/HWP-bugs into hotfix/v9.0.3
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/385
2025-07-03 17:18:28 +00:00
23008b3737 Fix bug #75718 2025-07-03 19:43:13 +03:00
03f490047d Merge pull request 'fix/fix-bugs-9.0.3' (#384) from fix/fix-bugs-9.0.3 into hotfix/v9.0.3
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/384
2025-07-03 16:12:58 +00:00
36454f4c6e Fix bug #75679 2025-07-03 18:52:52 +03:00
34e1dabefb fix bug #75722 2025-07-03 18:37:03 +03:00
3d39d5837f Fixed unnecessary strikethrough in hwp conversion 2025-07-03 17:58:31 +03:00
a6efd8a374 Fix bug #75673 2025-07-03 17:39:25 +03:00
3bfa3643e6 . 2025-07-03 16:36:19 +03:00
453e17ac0e Fix xls writing 2025-07-03 19:03:13 +06:00
88620dc8cd Merge pull request 'fix bug #75733' (#383) from fix/fix-bugs-9.0.3 into hotfix/v9.0.3
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/383
2025-07-03 11:35:06 +00:00
cc9b00329e fix bug #75733 2025-07-03 14:17:49 +03:00
88c84ad577 Fix loading dicts for hyphenation 2025-07-02 23:06:18 +00:00
ee22e8e8b4 Merge pull request 'Fix bug 55007' (#380) from fix/bug-55007 into hotfix/v9.0.3
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/380
2025-07-02 15:56:14 +00:00
1756d58c6d Merge pull request 'Fix bug 75688' (#381) from fix/bug-75688 into hotfix/v9.0.3
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/381
2025-07-02 15:44:05 +00:00
ecab418202 Fix bug 75688 2025-07-02 16:51:09 +03:00
d3430ace10 Add worksheet filepos writing 2025-07-02 18:08:15 +06:00
10a6f6e617 fix bug #75568 2025-07-02 14:04:02 +03:00
8c6a26895b Add read from memory 2025-07-02 13:22:30 +03:00
5142536e17 Add worksheet pos collecting 2025-07-01 21:47:46 +06:00
fd05f3b16d fix bug #75551 2025-07-01 17:18:46 +03:00
e0840e73d2 . 2025-07-01 17:00:40 +03:00
ae2918ec71 fix ShortXLUnicodeString writing 2025-07-01 18:36:07 +06:00
17369e8bee fix bug #75568 2025-07-01 12:30:41 +03:00
3047a9fb47 Fix bug 55007 2025-07-01 12:19:18 +03:00
1495581b00 Merge remote-tracking branch 'origin/fix/pdf-copy-ap' into develop 2025-07-01 11:42:38 +03:00
6c2fce16a8 Merge remote-tracking branch 'origin/develop' into fix/pdf-copy-ap 2025-07-01 11:41:07 +03:00
58be006bb9 fix bug #75635 2025-07-01 11:37:15 +03:00
6c2a8205ec Fix m_bSplit 2025-07-01 11:07:39 +03:00
29cee43448 Add split mode for PdfWriter 2025-07-01 10:46:38 +03:00
0154543b01 Remove temp file 2025-06-30 16:25:28 +03:00
3e2dee5719 Fix heif encode 2025-06-30 16:13:03 +03:00
8b4fe95291 Merge pull request 'Fix bugs 75101, 75574' (#379) from fix/bug-75101 into hotfix/v9.0.3
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/379
2025-06-30 11:03:08 +00:00
c25f8cc204 Fix heif image convert 2025-06-30 13:51:05 +03:00
010d1ce4c9 PDF Write TU for parent field 2025-06-30 13:48:39 +03:00
6ac9349ccb Fix bug 75574 2025-06-30 13:33:19 +03:00
c3bf7ad49b Fix bug 75101 2025-06-30 11:13:56 +03:00
b5d56d1d6d Fix build 2025-06-29 11:27:02 +03:00
d3aae6dfcb Add heif decode and encode 2025-06-29 10:08:51 +03:00
fb07c0c468 Add xls_writer 2025-06-27 21:10:21 +06:00
9b3b6caef9 pars diacritical marks 2025-06-27 13:12:49 +03:00
327d00bacf Merge branch 'develop' into feature/add-xls-writing 2025-06-27 14:30:49 +06:00
fe0d95009c Merge pull request 'fix bug #69371' (#378) from fix/bug69371 into develop
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/378
2025-06-26 14:29:06 +00:00
bcc5f67ec8 Merge branch hotfix/v9.0.2 into master 2025-06-26 12:55:22 +00:00
9200c29d42 Merge branch 'develop' into feature/add-xls-writing 2025-06-26 17:03:58 +06:00
c13027c9d1 fix bug #69371 2025-06-26 16:43:29 +06:00
6acb9855a1 For bug 74201 2025-06-26 12:48:51 +03:00
1619e421f2 . 2025-06-25 18:20:20 +03:00
2b1e5faef9 Added tabulation support in HWP 2025-06-25 17:38:26 +03:00
ea214f942f Add dbQueryExt writin 2025-06-25 15:41:22 +06:00
ccbff8d8da Merge branch 'develop' into feature/add-xls-writing 2025-06-25 14:15:44 +06:00
1cd72ab988 Fix for 64 bit 2025-06-24 22:26:46 +03:00
63937e706e Merge remote-tracking branch 'origin/hotfix/v9.0.3' into develop 2025-06-24 19:23:51 +03:00
54a903d2e7 fix bug #74484 2025-06-24 18:56:47 +03:00
e48fab418d Merge pull request 'For bug 71235' (#377) from fix/bug-71235 into hotfix/v9.0.3
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/377
2025-06-24 14:41:58 +00:00
537304ad24 add querytable writing 2025-06-24 19:14:23 +06:00
fa9e3cb48e For bug 71235 2025-06-24 12:34:05 +03:00
d362999e2a Add custom sysroot in base.pri 2025-06-24 10:47:06 +03:00
6e73b593ba fix bug #75443 2025-06-24 09:59:21 +03:00
46fbf81b4d [x2t] Fix typo 2025-06-23 19:36:13 +03:00
519a93ecaf Merge pull request '[x2t] Add oformAsPdf to params.xml to override checker format' (#376) from fix/oformAsPdf2 into hotfix/v9.0.2
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/376
2025-06-23 16:15:07 +00:00
90ded6788f [x2t] Add oformAsPdf to params.xml to override checker format 2025-06-23 19:01:04 +03:00
1f4a420d35 Add dcon writing 2025-06-23 20:39:43 +06:00
087146ce77 Merge pull request 'fix bugs' (#373) from fix/OOXml2Odt into hotfix/v9.0.1
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/373
2025-06-23 13:27:05 +00:00
b4ac2a9515 Merge pull request 'for bug #75064' (#374) from for/bug75064 into fix/OOXml2Odt
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/374
2025-06-23 13:23:15 +00:00
d11e0492f2 Add bookExt writing 2025-06-23 17:09:12 +06:00
4b3c4242f6 Add theme writing 2025-06-23 15:33:42 +06:00
482a821974 fix text in controls xlsx 2025-06-21 16:42:56 +03:00
2e1538b3dc Merge branch 'fix/pre9.0.1' into hotfix/v9.0.1 2025-06-21 10:20:55 +03:00
48ec45c1dd Add metadata writing 2025-06-20 20:59:37 +06:00
809ed63ca0 for bug #75064 2025-06-20 17:10:17 +03:00
91badde27d Add mdblock writing 2025-06-20 18:26:22 +06:00
618b1a9ca8 Add MDTInfo writing 2025-06-20 15:35:28 +06:00
95d523370d Merge pull request 'Fix bug 71235' (#372) from fix/bug-71235 into fix/pre9.0.1
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/372
2025-06-20 09:27:56 +00:00
a2768af989 Fix DW 2025-06-20 11:44:36 +03:00
85e8d253a9 Add userBview writing 2025-06-20 14:34:10 +06:00
d4e623f277 Fix WritePrivateDictionary 2025-06-20 11:07:57 +03:00
827dc4c1b9 Merge branch 'develop' into feature/add-xls-writing 2025-06-19 20:52:27 +06:00
5d033bef69 fix bugs 2025-06-19 17:07:15 +03:00
18e22f0f05 Add autofilter12 writing 2025-06-19 19:56:05 +06:00
426cd08d57 Refactoring 2025-06-19 16:18:03 +03:00
d1a64d29c0 Fix WriteCharsets
In this case, the SID is our assigned ushCode glyph on the entry in the page content stream
2025-06-19 15:28:59 +03:00
b8053ae388 Merge remote-tracking branch 'origin/fix/pre9.0.1' into develop 2025-06-19 13:44:30 +03:00
c56cfaf71f Add dfttext writing 2025-06-19 15:12:24 +06:00
2680fd7073 Merge branch 'fix/fix-bugs-9.0' into fix/pre9.0.1 2025-06-19 12:12:23 +03:00
cfdeca436b fix bug #75232 2025-06-19 12:06:36 +03:00
db3769eb13 WritePrivateDictionary 2025-06-18 16:42:10 +03:00
e5fcbcf5f3 Add dropbar writing 2025-06-18 19:26:48 +06:00
6d4ff364b3 nsid 2025-06-18 14:57:25 +03:00
8a9277d1d8 Add MEOptions 2025-06-18 13:49:50 +03:00
f3d3755a31 Add axm writing 2025-06-18 16:44:17 +06:00
ffab501ce9 Add seriesformat writing 2025-06-18 15:25:05 +06:00
74b21f5b4c Merge branch release/v9.0.0 into master 2025-06-18 09:23:26 +00:00
3e9d3bed35 Merge pull request 'fix/fix-bugs-9.0' (#370) from fix/fix-bugs-9.0 into release/v9.0.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/370
2025-06-17 15:35:44 +00:00
8ddb6e7f05 for bug #75064 2025-06-17 18:33:18 +03:00
db9fd85f22 Add dataformat writing 2025-06-17 21:21:29 +06:00
e54e8d7a8a fix bug #74263 2025-06-17 16:38:32 +03:00
8e0e1203c6 Complete CharStringType2Interpreter 2025-06-17 15:38:40 +03:00
9a74609366 Add axes writing 2025-06-17 16:52:32 +06:00
d9f24ca635 Merge pull request 'Fix bug 73392' (#369) from fix/bug-73392 into fix/pre9.0.1
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/369
2025-06-17 09:33:50 +00:00
ebddab233c Fix bug 73392 2025-06-17 12:25:00 +03:00
0bdd7f098d for bug #75177 2025-06-17 11:58:13 +03:00
efadc23a50 Create CharStringType2Interpreter 2025-06-17 11:06:09 +03:00
36db67cba3 Fix bug 74031 2025-06-17 02:33:31 +03:00
c9e5320ea3 Merge pull request 'For bug 75249' (#368) from fix/pdf-bugs into release/v9.0.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/368
2025-06-16 16:57:49 +00:00
58f12dbbee For bug 75249 2025-06-16 19:47:39 +03:00
1656d0dd6d Merge pull request 'fix/fix-bugs-9.0' (#367) from fix/fix-bugs-9.0 into release/v9.0.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/367
2025-06-16 15:02:01 +00:00
39090a2423 fix bug #74447 2025-06-16 17:56:49 +03:00
8241d85596 fix bug #70421 2025-06-16 16:52:57 +03:00
8ebc312dc7 Merge pull request 'Fix bug 75259' (#366) from fix/bug-75259 into release/v9.0.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/366
2025-06-16 13:30:21 +00:00
aaf744353f Add dat writing 2025-06-16 19:29:39 +06:00
4cff6dfe57 Fix bug 75259 2025-06-16 16:21:29 +03:00
15ee6ecf91 Merge remote-tracking branch 'origin/release/v9.0.0' into fix/bug-71235 2025-06-16 14:46:06 +03:00
67a5b7f087 Add frame writing 2025-06-16 17:04:24 +06:00
c6e2ad0fef Merge pull request 'Fix bugs 75158, 66505' (#365) from fix/bug-75158 into release/v9.0.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/365
2025-06-16 10:57:32 +00:00
5b9141ce1d Fix bug 66505
In pdf, child field actions become parent - this applies to date format, text field format and placeholder
2025-06-16 13:48:36 +03:00
502312fe20 Fix bug 75158 2025-06-16 12:55:01 +03:00
a10b8ee6fb Merge pull request 'Fix bug 74554' (#364) from fix/bug-74554 into release/v9.0.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/364
2025-06-16 09:21:27 +00:00
7c6cd1107d Fix bug 74554 2025-06-16 12:08:45 +03:00
05be4876e8 Fix build 2025-06-13 15:30:29 +03:00
d9806dfbc8 Merge pull request 'Fix HWP/HWPX bugs' (#363) from fix/hwp into release/v9.0.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/363
2025-06-13 06:13:46 +00:00
00e9d050ae Fixed a bug in reading HWP 2025-06-13 01:53:41 +03:00
405a2c1f59 Fix bug in HWP/HWPX with breaks 2025-06-13 01:05:20 +03:00
d287fc016e Fix bug #73665 2025-06-13 01:04:32 +03:00
383a616c97 For bug #73683 2025-06-12 23:28:06 +03:00
4e272d8ecf Refactoring 2025-06-12 21:44:21 +03:00
f6900b5d11 Fixed a bug in reading HWP 2025-06-12 21:43:58 +03:00
0a7a3c3a99 Fix bug 73477 2025-06-12 21:07:47 +03:00
2aeec01f1e fix index 2025-06-12 16:40:26 +03:00
556ea0dce4 Merge pull request 'fix/fix-bugs-9.0' (#362) from fix/fix-bugs-9.0 into release/v9.0.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/362
2025-06-12 13:13:54 +00:00
62dde72acc shape props for controls xlsx in binary 2025-06-12 16:09:30 +03:00
5e45f5fb09 fix bug #75177 2025-06-12 09:53:51 +03:00
750b28d866 Add Attachedlabel writing 2025-06-11 20:51:44 +06:00
33b246b9da Fix bug 75176 2025-06-11 17:26:12 +03:00
6c8e053bb2 Fix bug #73728 2025-06-11 14:48:32 +03:00
db7ebc5765 Add ld writing 2025-06-11 17:44:00 +06:00
84462ab1da Merge pull request 'Fix bug 75102' (#361) from fix/bug-75102 into release/v9.0.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/361
2025-06-11 11:08:25 +00:00
7cb08f3a87 Fix bug #75154 2025-06-11 13:54:25 +03:00
16b28e60a4 Fix remove name of Fields 2025-06-11 13:52:00 +03:00
8ac1c4d158 Add series list writing 2025-06-11 16:39:25 +06:00
5f78402f2a Fix bug 75102 2025-06-11 13:01:50 +03:00
fa80e4913f Create CharStringType2Flattener 2025-06-11 11:46:26 +03:00
aa5012928c Merge pull request 'Fix bug 75101' (#360) from fix/bug-75101 into release/v9.0.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/360
2025-06-10 18:04:47 +00:00
c0f5336a5a For bug 75012 2025-06-10 20:19:01 +03:00
646f2ca6b1 Fix bug 75101 2025-06-10 20:11:55 +03:00
18f92b56ba Merge branch 'develop' into feature/add-xls-writing 2025-06-10 18:13:13 +06:00
bc34a76127 Fix bug 75045 2025-06-10 15:13:04 +03:00
ad5670cde7 Merge pull request 'fix/bug74531' (#359) from fix/bug74531 into release/v9.0.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/359
2025-06-10 11:29:27 +00:00
b09fc50b62 for bug #74531 2025-06-10 17:19:39 +06:00
b04f9bda4a For bug #73716 2025-06-10 14:11:39 +03:00
046b39478a Merge pull request 'Fix md bugs' (#358) from fix/md into release/v9.0.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/358
2025-06-10 10:39:04 +00:00
4e59cac4cd Fix bug #74982 2025-06-10 13:02:56 +03:00
0d79f941b9 Fixed a bug with the calculation of style in html 2025-06-10 12:02:35 +03:00
d69d71ec07 Create CPrimitiveWriter 2025-06-10 11:42:30 +03:00
0ebc0da7b2 Merge pull request 'fix/fix-bugs-v9.0' (#357) from fix/fix-bugs-v9.0 into release/v9.0.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/357
2025-06-10 06:34:54 +00:00
3db0662c14 fix bug #75069 2025-06-10 09:19:03 +03:00
49477554a4 Merge pull request 'Fix crash on destroying inserted graphics object' (#356) from fix/insert-image into release/v9.0.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/356
2025-06-09 18:23:22 +00:00
55e758e3f8 Merge pull request 'for bug #75011' (#355) from for/bug75011 into release/v9.0.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/355
2025-06-09 17:38:26 +00:00
c11171fbf2 Fix crash on destroying inserted graphics object 2025-06-09 21:20:27 +04:00
8c4fc0d94c fix bug #74677 2025-06-09 18:23:28 +03:00
e6570a6ccc for bug #75011 2025-06-09 17:58:46 +03:00
ecda52ae5c fix reading xml 2025-06-09 17:50:11 +03:00
5df1ec97c3 Merge branch 'release/v9.0.0' into fix/bug74531 2025-06-09 17:54:17 +06:00
78577f70e5 fix bug #74531 2025-06-09 17:49:11 +06:00
78e20f5358 Merge pull request 'Fix bug 75044' (#353) from fix/bug-75044 into release/v9.0.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/353
2025-06-09 10:12:48 +00:00
dba3b263e6 For bug 75044
Fix rotate stamp with CropBox
Fix invisible background radiobutton with Beveled/Inset border
2025-06-09 12:59:47 +03:00
40ce56d7f8 Fix bug 75044 2025-06-09 11:48:14 +03:00
33864a1a1e [x2t] Fix <cp IX="0"></cp> reading; For bug 74677 2025-06-08 13:20:10 +03:00
602879432a fix bug #74501 2025-06-07 11:42:01 +03:00
cbc36b0b0a Merge pull request 'Fix bug #74743' (#352) from fix/bug-74743 into release/v9.0.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/352
2025-06-07 04:19:25 +00:00
dfc4048630 Fix bug #74743 2025-06-07 06:31:46 +03:00
adc2930f0b Merge pull request 'Fix HWP bugs' (#350) from fix/hwp into release/v9.0.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/350
2025-06-06 19:16:07 +00:00
599566c5e2 Create CCFFWriter 2025-06-06 17:15:37 +03:00
17c1e0a2bb fix bug #75000 2025-06-06 16:19:52 +03:00
462523cfa5 fix bug #74736 2025-06-06 16:11:13 +03:00
fcdbdff42f fix bug #75006 2025-06-06 15:09:11 +03:00
e7b231feed Fix type overflow 2025-06-06 14:49:08 +03:00
3264e0764e Merge pull request 'Fix memory leaks and implement FreeEmbedObject' (#349) from feature/free_native_object into release/v9.0.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/349
2025-06-06 08:52:50 +00:00
5f4cfa5bdf Merge pull request 'Fix button R/D AP' (#351) from fix/pdf-button into release/v9.0.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/351
2025-06-06 08:49:58 +00:00
b159b76018 Fix button R/D AP 2025-06-06 11:43:32 +03:00
a006479964 Fix CStream::ReadOffset 2025-06-06 11:29:46 +03:00
2012fef748 Fix bug #73706 2025-06-05 23:47:41 +03:00
c8288b8b7b Fix bug #74897 2025-06-05 20:39:11 +03:00
7f31f40843 fix bug #74750 2025-06-05 19:23:20 +03:00
414b376f04 Fix bug #73685 2025-06-05 19:10:22 +03:00
10427d151d Merge pull request 'fix/bug74880' (#348) from fix/bug74880 into release/v9.0.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/348
2025-06-05 15:40:20 +00:00
8e9198f307 fix bug 2025-06-05 18:35:59 +03:00
a3399b3119 fix bug #74490 2025-06-05 18:24:52 +03:00
646bbd405f For CCFFReader 2025-06-05 17:53:19 +03:00
04663e7653 Merge pull request 'feature/docx-renderer-merge' (#347) from feature/docx-renderer-merge into release/v9.0.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/347
2025-06-05 14:06:58 +00:00
240b78b0a6 Merge branch 'feature/docx-renderer' into feature/docx-renderer-merge 2025-06-05 17:02:55 +03:00
9a147d9817 Fix cast to int in bin points of vector graphics 2025-06-05 16:44:53 +03:00
e20231dc88 For CCFFReader 2025-06-05 16:21:18 +03:00
9c7d4e6d90 Merge pull request 'Fix bug 74843' (#345) from fix/bug-74843 into release/v9.0.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/345
2025-06-05 12:32:48 +00:00
c936c4419c fix prev commit 2025-06-05 15:23:17 +03:00
622617d16d fix bug#74880 2025-06-05 15:13:40 +03:00
1daaaad842 Fix bug with pathW pathH 2025-06-05 15:07:49 +03:00
4d9744190e Fix bug 74843 2025-06-05 15:03:16 +03:00
575e45a0b2 Complete COpenTypeReader, Create CCFFReader 2025-06-05 14:45:04 +03:00
e9e88f616b fix bug #73486 2025-06-05 13:29:22 +03:00
ee67e5dbc5 Fix rId correction for any shapes 2025-06-05 13:22:18 +03:00
c53f6fe09f Fix count shapes 2025-06-05 12:31:47 +03:00
624e5477ae Fix bug 2025-06-04 21:16:06 +03:00
5938d38219 Fix bug 74739 2025-06-04 19:56:19 +03:00
6cc0b5e215 Fix bug with required length 2025-06-04 19:04:37 +03:00
3d9045e0d4 Read Head, MaxP, HHea, HMtx 2025-06-04 18:55:02 +03:00
01e1cb14bf Rewrite len writting 2025-06-04 18:54:52 +03:00
011e2a8592 Fix missprint 2025-06-04 18:44:45 +03:00
b3e297bb08 Add a record in AdvancedCommand function 2025-06-04 18:39:43 +03:00
68e10572f1 Merge pull request 'Fix hwp bugs' (#343) from fix/hwp into release/v9.0.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/343
2025-06-04 15:22:44 +00:00
ae1266d506 Fix bug #74910 2025-06-04 18:17:16 +03:00
b86dfb8d90 Fix bug #74888 2025-06-04 17:54:26 +03:00
fd9d46fc3c Update AdvancedCommand 2025-06-04 17:37:20 +03:00
c53009ee3d Refactoring and support binary shapes inside own pdf 2025-06-04 15:49:13 +03:00
02a845d451 Merge remote-tracking branch 'origin/release/v9.0.0' into fix/bug-71235
# Conflicts:
#	DesktopEditor/graphics/pro/js/wasm/src/drawingfile_test.cpp
2025-06-04 13:25:38 +03:00
b380692fe5 Merge pull request 'Fix bug 74890' (#341) from fix/bug-74890 into release/v9.0.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/341
2025-06-04 10:11:57 +00:00
8123c0e409 Fix bug 74890 2025-06-04 13:03:36 +03:00
cae981891b Fix repassword pdf 2025-06-04 11:54:45 +03:00
49fad86617 Merge pull request 'Fix pdf edit' (#340) from fix/pdf-edit into release/v9.0.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/340
2025-06-04 07:25:56 +00:00
feb3c7af90 Fix pdf edit without changes is copy 2025-06-04 10:06:15 +03:00
0f169b1491 Add marR marL
and add AddCompleteBinBase64 funtion
2025-06-04 03:28:31 +03:00
22e89be7a3 Fix ToBin function 2025-06-04 02:31:47 +03:00
ced5bb6c71 fix bug #74742 2025-06-03 18:23:40 +03:00
26cb45ceaa fix bug #74740 2025-06-03 18:00:09 +03:00
9091f12828 Merge pull request 'For bug 74676' (#339) from fix/bug-74676 into release/v9.0.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/339
2025-06-03 13:13:17 +00:00
500cf8fca3 For bug 74676 2025-06-03 16:10:17 +03:00
b17b3dec40 For bug 74676 2025-06-03 16:09:55 +03:00
57b854355e Merge pull request 'Fix bugs 74727, 74842' (#338) from fix/bug-74554 into release/v9.0.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/338
2025-06-03 12:39:31 +00:00
2d758b155d fix bug #74747 2025-06-03 14:20:09 +03:00
29c81f7653 Fix test 2025-06-03 14:07:30 +03:00
d86afbe693 Merge pull request 'Fix html and md' (#337) from fix/html into release/v9.0.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/337
2025-06-03 10:21:36 +00:00
b9120f5c29 Improved styles for inserting code into md 2025-06-03 12:59:09 +03:00
49841da755 For bug 74727 2025-06-03 12:29:39 +03:00
76bed5ae36 Fixed a bug with the definition of encoding in html 2025-06-03 11:32:45 +03:00
4451768f4e For bug 74625 2025-06-03 00:17:16 +03:00
102fdb83bc Fix bug 74659 2025-06-02 21:10:42 +03:00
a5f5a2921f Merge remote-tracking branch 'origin/release/v9.0.0' into fix/bug-74554 2025-06-02 17:59:32 +03:00
353f8ddbac Fib button delete AP 2025-06-02 17:55:38 +03:00
916f293c89 . 2025-06-02 17:43:57 +03:00
f6e214b0c3 Merge pull request 'Fix bug 74431' (#336) from fix/bug-74431 into release/v9.0.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/336
2025-06-02 13:25:06 +00:00
4f63982e2f Fix bug 74431
x2t doctrenderer and edit use the same CPdfFile instance
2025-06-02 16:17:57 +03:00
f570c88d29 Merge pull request 'Fix bug 74424' (#335) from fix/bug-74424 into release/v9.0.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/335
2025-06-02 10:17:30 +00:00
10e6664313 Fix bug 74424
LoadFromMemory memory is copied
MergePages memory is either taken or freed
2025-06-02 12:45:35 +03:00
00a82a7693 Merge pull request 'Fix bug #74782' (#333) from fix/html into release/v9.0.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/333
2025-06-02 09:07:39 +00:00
0dfe7c8dcc Merge pull request 'Fix hwpx bugs' (#334) from fix/hwp into release/v9.0.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/334
2025-06-02 09:07:11 +00:00
04b54cf980 Merge pull request 'Pdf fix bugs' (#332) from pdf/fix-bugs into release/v9.0.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/332
2025-05-30 19:52:13 +00:00
56b09897d7 Fix bug #74782 2025-05-30 20:01:13 +03:00
e3e49b4497 Merge pull request 'fix conversion overstrike' (#331) from fix/MathOOXml2Odf into release/v9.0.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/331
2025-05-30 14:17:50 +00:00
4f31164447 edit the size calculation 2025-05-30 16:47:34 +03:00
5179739cf6 Fix bug 65928 2025-05-30 16:44:18 +03:00
d044959b0d fix conversion overstrike 2025-05-30 16:13:13 +03:00
3886951671 [JSC] Fix memory leaks due to pending exceptions 2025-05-30 13:16:09 +04:00
326fe32013 Fix Link border 2025-05-30 10:58:57 +03:00
344a0caf37 Fix bug 73947 2025-05-30 10:20:21 +03:00
bed33af917 for binary vsdx 2025-05-29 18:14:31 +03:00
777eb2697d Fix build 2025-05-29 18:07:39 +03:00
a824e9c25d Merge branch 'release/v9.0.0' into fix/hwp 2025-05-29 17:28:58 +03:00
6402c0cb73 [V8] Add FreeEmbedObject function 2025-05-29 17:15:23 +04:00
14df0d2b58 fix bug #74780 2025-05-29 16:00:23 +03:00
29c01ac9c9 [V8] Fix memory leaks with weak handles 2025-05-29 16:56:17 +04:00
cc9cb8ca05 for bug #74487 2025-05-29 15:03:44 +03:00
ba77ddc78e Fix button delete icon 2025-05-29 13:10:44 +03:00
03463ee0e4 Merge remote-tracking branch 'origin/release/v9.0.0' into develop 2025-05-29 12:34:25 +03:00
32cfb4f71b Merge remote-tracking branch 'origin/fix/customs' into release/v9.0.0 2025-05-29 12:29:52 +03:00
243cc43771 fix bug #74488 2025-05-29 12:28:55 +03:00
daf8fb9dd7 Fix bug #73716 2025-05-28 20:46:32 +03:00
a90422c3a7 Merge pull request 'Fixed scale calculation for embedded emfs in emfplus' (#329) from fix/metafile into release/v9.0.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/329
2025-05-28 14:33:29 +00:00
16e7528cff Fixed scale calculation for embedded emfs in emfplus 2025-05-28 17:07:02 +03:00
ae71fefd92 [V8] Fix tests 2025-05-28 17:24:17 +04:00
8be104e3c1 Merge pull request 'Fix bugs 65813, 74529, 74727' (#328) from fix/pdf-bugs into release/v9.0.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/328
2025-05-28 11:58:51 +00:00
fbcb387f51 Fix bug 65813 2025-05-28 14:52:41 +03:00
c4eb6ef445 Fix write strings 2025-05-28 13:11:22 +03:00
4754569381 Fix bug 74727 2025-05-28 11:51:47 +03:00
44948c850e Merge pull request 'fix/Tensor-luminosity-gradient' (#326) from fix/Tensor-luminosity-gradient into release/v9.0.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/326
2025-05-27 18:38:41 +00:00
3163177b89 Fix gradient drawing 2025-05-27 21:21:20 +03:00
66513e895f Merge pull request 'For bug #8257' (#325) from fix/metafile into release/v9.0.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/325
2025-05-27 17:43:27 +00:00
8bcf2ee154 Merge pull request 'Fix bug #74694' (#324) from fix/html into release/v9.0.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/324
2025-05-27 17:42:28 +00:00
7d9e756f3f For bug #8257 2025-05-27 20:19:17 +03:00
b2d28a7185 Fix bug #74694 2025-05-27 20:01:50 +03:00
f285120de5 Fix tile in ToBin function 2025-05-27 20:00:14 +03:00
5f56a0d2d7 Fix misprint 2025-05-27 17:22:21 +03:00
79bb238b5f [JSC] Add FreeEmbedObject function 2025-05-27 18:14:29 +04:00
8c6baa9c0b Fix bugs 2025-05-27 16:50:51 +03:00
5c2171db93 js_internal tests rework
in favor of easier debugging on different platforms
2025-05-27 17:15:28 +04:00
e73b1e2db2 Fix images in ToBin function 2025-05-27 14:18:34 +03:00
1a62f01cf7 Fix bug 74529 2025-05-27 13:42:54 +03:00
b518d5642f Merge pull request 'Fin button form rotate' (#323) from fix/pdf-bugs into release/v9.0.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/323
2025-05-27 06:46:28 +00:00
e9dcafed07 Add GetFillColor method 2025-05-27 02:05:51 +03:00
9bd79e2752 Fix boolean operations 2025-05-27 02:05:24 +03:00
77f363f737 add operator == and != in agg::rgba8 2025-05-27 02:04:54 +03:00
3a866d2f55 Add generations for dictionaries 2025-05-26 21:29:11 +03:00
3b8b1cff55 Fix rgb values 2025-05-26 21:20:47 +03:00
a96d51bad2 Develop ToBin metohod for images 2025-05-26 20:53:43 +03:00
1eb681992e Fix bug #73684 2025-05-26 18:19:51 +03:00
c140c6ef6a Fix ToBin function 2025-05-26 18:02:56 +03:00
8c5a8fd7bc Fix bug #73683 2025-05-26 17:56:29 +03:00
0d148f0efa Fin button form rotate 2025-05-26 17:32:28 +03:00
9395c14324 For bug #73666 2025-05-26 17:15:08 +03:00
3bd151445d Fixed missing empty paragraphs in hwp/hwpx conversion 2025-05-26 16:43:51 +03:00
90b0b667ce Fix bug #73575 2025-05-26 16:36:34 +03:00
c741cc4bba Merge pull request 'Fix html bugs' (#322) from fix/html-bugs into release/v9.0.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/322
2025-05-26 13:16:59 +00:00
c58203cdc1 Merge pull request 'Fix pdf bugs' (#321) from fix/pdf-bugs into release/v9.0.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/321
2025-05-26 10:19:29 +00:00
e56f807826 Fix bug 74615 2025-05-26 13:04:12 +03:00
ef3a93cb13 Fix bug 74616 2025-05-26 12:15:03 +03:00
fa55bd4c95 . 2025-05-26 11:13:39 +03:00
62a4de7a1d . 2025-05-26 10:34:59 +03:00
a85d77b493 Merge pull request 'adding size calculation' (#319) from feature/SizeMath into release/v9.0.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/319
2025-05-26 07:22:01 +00:00
57b2cc5436 Fix typo 2025-05-25 23:33:11 +03:00
5894736c2a Fixed the merge conflict 2025-05-25 22:52:30 +03:00
fa407297c7 Merge branch 'release/v9.0.0' into fix/html-bugs 2025-05-25 22:42:15 +03:00
3d77b1d8c6 Fix bug #73904 2025-05-25 21:44:24 +03:00
fc2aca59aa Fix luminosity drawing 2025-05-25 14:29:00 +03:00
0b79502804 Developing ToBin functions 2025-05-24 22:22:50 +03:00
ab893e371c Fix bug #73573 2025-05-24 22:04:54 +03:00
5174ea0ce6 More developing ToBin function 2025-05-24 16:31:15 +03:00
44bb82919f Fix ToBin function 2025-05-24 00:13:11 +03:00
e2021faa33 adding size calculation 2025-05-23 22:28:44 +03:00
3ac479ccdc Fix bug #73698 2025-05-23 18:58:43 +03:00
9a4dd96072 Fix ListBox rotate 2025-05-23 17:53:27 +03:00
3e9afa1d15 Merge pull request 'fix bug #74531' (#318) from fix/bug74531 into release/v9.0.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/318
2025-05-23 14:46:22 +00:00
1c9e394549 fix bug #74531 2025-05-23 20:42:25 +06:00
f8a901e2d0 Rotate form 2025-05-23 17:04:56 +03:00
59cd16f300 Merge pull request 'Fix pdf bugs' (#316) from fix/pdf-bugs into release/v9.0.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/316
2025-05-23 06:52:19 +00:00
b063c4af35 Merge branch 'release/v9.0.0' into fix/customs 2025-05-22 17:27:54 +03:00
5942b88c8d Merge pull request 'release/v9.0.0' from release/v9.0.0 into feature/docx-renderer 2025-05-22 14:13:11 +00:00
9f50c9d660 Fix bug 74581
Fix inheritable page attributes
2025-05-22 13:59:53 +03:00
942480d895 Create COpenTypeReader 2025-05-22 13:01:48 +03:00
e16972f410 . 2025-05-22 11:38:59 +03:00
77855a12e9 fix bug #74247 2025-05-22 11:28:52 +03:00
cc8c771f61 Fix build on linux 2025-05-22 11:00:48 +03:00
31e5d626ca vsdx in ole 2025-05-21 19:27:10 +03:00
5067d33c84 fix binary xlsx 2025-05-21 19:24:00 +03:00
931b66e038 Create FontCFFWriter 2025-05-21 18:15:25 +03:00
cb9dce54a7 Merge pull request 'release/v9.0.0' from release/v9.0.0 into feature/docx-renderer 2025-05-21 14:31:21 +00:00
5892c2fa1b Developing ToBin method 2025-05-21 17:30:03 +03:00
d50ee7467e Add crt chart types writing 2025-05-21 19:40:59 +06:00
6b3173e65f Merge pull request 'fix/bug74095' (#313) from fix/bug74095 into release/v9.0.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/313
2025-05-21 13:19:31 +00:00
65fc2852ec . 2025-05-20 18:21:22 +03:00
f51fb711b4 Fix Strings count & PrivateDictStart 2025-05-20 17:58:50 +03:00
d15ac8b84f Add axis parent writing 2025-05-20 20:06:59 +06:00
00176a0425 Add chartformats wriging 2025-05-20 19:23:50 +06:00
14f0a757ac Add series data writing 2025-05-20 17:30:22 +06:00
0385087f98 Fix prev commit 2025-05-20 13:44:38 +03:00
7b51ade6f5 Improved image size calculation in hwp/hwpx conversion 2025-05-20 13:38:48 +03:00
49bd1657ab Merge remote-tracking branch 'origin/release/v9.0.0' into fix/bug-71235 2025-05-20 13:34:22 +03:00
366b122c51 editing the conversion of diacritics and text 2025-05-20 13:30:38 +03:00
d50f2b3ccc Fixed a bug with text margins in hwp/hwpx conversion 2025-05-20 13:08:22 +03:00
f7110040b1 . 2025-05-20 12:44:56 +03:00
8ff979c2e9 Fix bugs in hwp/hwpx conversion 2025-05-19 16:46:22 +03:00
e4a69da400 Fixed a bug with image transformation in hwpx/hwp 2025-05-19 16:45:41 +03:00
9b24261b2b Add sxviewlink wriging 2025-05-19 18:04:46 +06:00
211f151346 Add chartSheet writing 2025-05-19 14:58:19 +06:00
adc9445231 For bug 73837 2025-05-19 10:21:21 +03:00
6c8cbec6ba Add worbook stream writing 2025-05-16 21:04:58 +06:00
9507e3b3f2 Fixed a bug with image positioning in HWP 2025-05-16 17:59:16 +03:00
a49951f392 Merge pull request 'Fix memory leak' (#312) from fix/bug-73947 into release/v9.0.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/312
2025-05-16 14:07:49 +00:00
3963f1fcef For bug 73947 2025-05-16 17:02:02 +03:00
755a357e3d Add sheetExt writing 2025-05-16 17:55:57 +06:00
2a7256eb48 Add customview binary writing 2025-05-16 17:17:47 +06:00
41e0b5fe83 ConvertToOrigin for vsdx 2025-05-15 19:22:20 +03:00
5caf111308 Merge pull request 'Fix getReader' (#311) from fix/pdf-split into release/v9.0.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/311
2025-05-15 14:09:03 +00:00
7e7265827d Fix getReader 2025-05-15 17:06:41 +03:00
65829b6e96 Merge branch 'release/v9.0.0' of https://git.onlyoffice.com/ONLYOFFICE/core into release/v9.0.0 2025-05-15 16:04:51 +03:00
e10aa90618 Realize pdf split/merge in native js wrapper 2025-05-15 16:04:29 +03:00
5210ffbd50 . 2025-05-15 15:43:41 +03:00
9b45589937 fix bug 2025-05-15 14:03:45 +03:00
9c9ac53475 Merge pull request 'Fix bug 74294' (#310) from fix/bug-74294 into release/v9.0.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/310
2025-05-15 07:57:12 +00:00
d70c26f5ce . 2025-05-15 10:28:36 +03:00
0e8c37c293 Add supbook writing 2025-05-14 21:16:18 +06:00
284d54f456 Fix bug #74441 2025-05-14 17:16:52 +03:00
6070cd54e2 Fix bug 74450 2025-05-14 17:11:16 +03:00
5fd6709d04 for bug #74435 2025-05-14 17:01:32 +03:00
0424b92b04 Refactoring 2025-05-14 16:58:42 +03:00
923f39fada Fix bug 74294 2025-05-14 16:45:35 +03:00
6b6118ffcc fix bug #74435 2025-05-14 16:41:24 +03:00
84de7e98be for bug #73678 2025-05-14 16:33:56 +03:00
906aace0df Fix bug #73486 2025-05-14 16:29:35 +03:00
3fbb430b7f Merge pull request 'fix bug #74140' (#308) from fix/bug74140 into release/v9.0.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/308
2025-05-13 17:37:02 +00:00
c2de8a822a read themes in incorrect vsdx 2025-05-13 20:35:14 +03:00
490180dbba Add new extensions 2025-05-13 18:15:49 +03:00
d928151fdb Merge pull request 'Fix bugs 74314, 74420' (#309) from fix/pdf-bugs into release/v9.0.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/309
2025-05-13 14:07:48 +00:00
c63a8adbb3 Fix bug 74420 2025-05-13 15:16:01 +03:00
a7e647d58a fix bug #74140 2025-05-13 18:14:42 +06:00
b7062837c8 fix bug #70991 2025-05-13 14:53:00 +03:00
f7a46174ad Fix bug 74314 2025-05-13 14:32:07 +03:00
992bc0095f [android] Add MD format 2025-05-13 10:49:09 +03:00
bf67498f3e Mark params for opening file as default 2025-05-13 10:27:46 +03:00
c4676f1b28 Merge pull request 'Fix bug #74141' (#306) from fix/bug74141 into release/v9.0.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/306
2025-05-12 18:33:05 +00:00
b4c9184a0d Merge pull request 'Fix bug 74168' (#307) from fix/pdf-bugs into release/v9.0.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/307
2025-05-12 15:32:02 +00:00
748b5d061b Fix bug 74168 2025-05-12 18:28:22 +03:00
ea15b54837 Fix bug #73907 2025-05-12 17:42:12 +03:00
9d19af8749 Fix bug 74168 2025-05-12 17:05:14 +03:00
05cef3635c Refactoring 2025-05-12 14:49:14 +03:00
1b03e3e71f Fix bug #74141 2025-05-12 17:34:15 +06:00
d15d681659 for bug #70752 2025-05-12 14:04:40 +03:00
58189602cc Fix bug #73990 2025-05-12 06:23:30 +03:00
6fd19e7618 for bug #71673 2025-05-08 11:28:57 +03:00
dbfdfcb202 Merge pull request 'Fix pdf bugs' (#305) from fix/pdf-bugs into release/v9.0.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/305
2025-05-07 15:51:57 +00:00
bf00185275 Add SXSRC binary writing 2025-05-07 21:24:14 +06:00
801b5e604e Fix bug 74372 2025-05-07 17:26:58 +03:00
6ed57dae6c Add pivot cache definition writing 2025-05-07 16:33:41 +06:00
cb34481460 Fix bug 74364 2025-05-07 13:12:48 +03:00
a1ff4a8de2 Merge pull request 'Fix pdf bugs' (#304) from fix/pdf-bugs into release/v9.0.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/304
2025-05-06 17:52:56 +00:00
d82f9a4d7a Merge pull request 'fix defined names binary conversion' (#303) from fix/binary-conversion into release/v9.0.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/303
2025-05-06 13:50:30 +00:00
6d9d709183 Fix bug 74357 2025-05-06 15:16:12 +03:00
3f317a6d1f fix defined names binary conversion 2025-05-06 17:44:50 +06:00
c2c085f57d Checkbox with text color 2025-05-06 14:02:44 +03:00
5719444c94 fix bug #74289 2025-05-06 13:20:53 +03:00
2c5d36d618 fix bug #74324 2025-05-06 10:47:34 +03:00
36d8b8afe9 Merge pull request 'Fix bug #73314' (#302) from fix/bug73314 into release/v9.0.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/302
2025-05-06 07:39:14 +00:00
0f6cd18603 Merge pull request 'Added md file conversion' (#300) from feature/md2html into release/v9.0.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/300
2025-05-05 19:12:38 +00:00
32c22eee70 Merge pull request 'Fix bug 74294, 74244' (#301) from fix/pdf-bugs into release/v9.0.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/301
2025-05-05 13:19:39 +00:00
cea739dc2c Fix test 2025-05-05 16:12:10 +03:00
4a769c1faa Fix bug 74294 2025-05-05 15:46:25 +03:00
a77f612973 Added md to html conversion in x2t 2025-05-05 15:13:07 +03:00
198e878eb5 for bug #74280 2025-05-05 14:56:54 +03:00
0942bc78ab fix bug #74290 2025-05-05 13:14:35 +03:00
ca53d3d035 fix bug #71673 2025-05-01 08:34:01 +03:00
a4f271d7b0 Merge pull request 'Fix bug #74258' (#296) from fix/bug74258 into release/v9.0.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/296
2025-05-01 04:21:44 +00:00
c99b304ec2 Fix bug 74312 2025-04-30 18:17:21 +03:00
1b032f3d74 Improved styling when converting md file to html 2025-04-30 18:15:41 +03:00
db57d253d9 Merge pull request 'Fix bugs 74268, 74307' (#298) from fix/pdf-bugs into release/v9.0.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/298
2025-04-30 13:23:38 +00:00
8e64dcc5a4 Fix build & bug 2025-04-30 15:10:06 +03:00
b48909edaa Fix test 2025-04-30 14:00:30 +03:00
1bfb055a50 Fix bug 74307 2025-04-30 13:58:58 +03:00
149d3a2030 Fix bug 74268 2025-04-30 13:04:25 +03:00
8bad09ea5a Merge pull request 'Fix originalIndex with SplitPages' (#297) from fix/pdf-split into release/v9.0.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/297
2025-04-30 09:23:52 +00:00
91656095fa Fix originalIndex with SplitPages 2025-04-30 12:20:11 +03:00
9e89e48c07 Fix bug #74258 2025-04-30 14:47:40 +06:00
1e2b91e77f Developing 2025-04-29 17:36:09 +03:00
fe89b146d7 Merge branch 'fix/SMCustomShape' into fix/customs 2025-04-29 17:00:50 +03:00
1c5bd6cbab Merge pull request 'Fix bug 74279' (#295) from fix/x2ttester into release/v9.0.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/295
2025-04-29 13:43:41 +00:00
8ba7535fc8 fix bug #74281 2025-04-29 16:42:02 +03:00
038fa50194 Fix bug 74279 2025-04-29 14:58:38 +03:00
c94a294317 Merge pull request 'Fix SplitPages with changes' (#294) from fix/pdf-split into release/v9.0.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/294
2025-04-29 10:53:41 +00:00
d220685cff Fix delete annot with split changes 2025-04-29 13:32:48 +03:00
edae000326 Fix index split pages 2025-04-29 12:53:40 +03:00
2cbc83b389 Test split with changes 2025-04-29 11:02:51 +03:00
d05afa3106 fix bug #74254 2025-04-28 18:44:15 +03:00
de56349019 fix bug #74171 2025-04-28 18:20:13 +03:00
821f9cacd0 for vsdx binary 2025-04-28 18:04:37 +03:00
eb472e27b4 add PIVOTEX writing 2025-04-28 18:40:36 +06:00
4f38f17bd1 Fix build 2025-04-28 14:56:07 +03:00
9f4a145b48 Fix SaveToMemory 2025-04-28 14:12:49 +03:00
51aed7ae53 Add PIVOTIVD- PIVOTLI writing 2025-04-28 15:47:20 +06:00
eaa0bbf047 Merge pull request 'For bug 74253' (#293) from fix/bug-74253 into release/v9.0.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/293
2025-04-28 09:00:58 +00:00
e78391c68b For bug 74253 2025-04-28 11:29:09 +03:00
109a5fe2b4 Split with changes 2025-04-28 10:40:06 +03:00
70412f5f8e pars index(without underover) 2025-04-27 20:22:26 +03:00
a908c42910 Added md file conversion to html 2025-04-27 19:20:17 +03:00
ecf59a75a7 Add pivotView writing 2025-04-25 18:57:23 +06:00
a19bf4bedd for bug#74095 2025-04-25 12:38:40 +03:00
9039ff53db Add fngroups writing 2025-04-25 14:52:32 +06:00
b53b2859de Add lblWriting 2025-04-24 20:58:14 +06:00
fe1372882e Add Hfpicture writing 2025-04-24 19:38:47 +06:00
34e0b7e69a Add record12 writing 2025-04-24 18:22:50 +06:00
856ae09f69 Add sortdatafilter writing 2025-04-23 21:04:59 +06:00
28f2e14bce Add autofilter binary writing 2025-04-23 18:49:34 +06:00
e74199b3d2 Developing
but grid span is not working for now
2025-04-23 14:50:04 +03:00
b8d9ba3b1d Add dcon writing 2025-04-23 16:08:28 +06:00
5fe6dd8730 Add extsst binary writing 2025-04-22 20:13:40 +06:00
ab573cf9ba Merge branch 'develop' into feature/add-xls-writing 2025-04-22 14:57:43 +06:00
b1885e5b91 pars oper 2025-04-22 10:55:36 +03:00
92902724a0 Add SharedStringsWriting 2025-04-21 20:01:53 +06:00
7e116dbd41 Add bundlesheet writing 2025-04-21 15:06:55 +06:00
c964ed7d58 Merge branch hotfix/v8.3.3 into develop 2025-04-21 09:03:54 +00:00
88db7ec840 Merge branch hotfix/v8.3.3 into master 2025-04-21 09:03:52 +00:00
b456a094ee Add xfext writing 2025-04-21 14:24:55 +06:00
a19dc86ea9 Add tablestyles writing 2025-04-18 19:50:05 +06:00
62ba3fa029 Add formatting binary writing 2025-04-18 19:02:23 +06:00
58c2fa783e Add xf binary writing 2025-04-18 17:47:05 +06:00
8e2d1e2c16 parse development 2025-04-17 22:19:08 +03:00
678101f7e4 Add window1 binary writing 2025-04-17 20:54:48 +06:00
17fb69ee8a Add protection writing to global substream 2025-04-17 18:13:45 +06:00
0833c97c99 add globals substream writing 2025-04-16 20:18:43 +06:00
5d64c7c6e7 Add note records writing 2025-04-16 19:39:06 +06:00
0f3ef78362 Add protection binary writing 2025-04-16 15:45:22 +06:00
fa65a546da Merge branch hotfix/v8.3.3 into master 2025-04-16 07:32:32 +00:00
1a54c8f8b9 Merge branch 'develop' into feature/add-xls-writing 2025-04-15 13:05:01 +06:00
9aa6bceddf Fix bug with non-nullptr conttext 2025-04-07 17:05:56 +03:00
6d6f87cae6 Add worksheet substream wrting 2025-04-07 19:41:34 +06:00
3d9a783d46 fix globals writing 2025-04-07 18:31:40 +06:00
21028c2ca5 Merge pull request 'hotfix/v8.3.3' (#276) from hotfix/v8.3.3 into develop
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/276
2025-04-07 11:58:23 +00:00
8c16766e9f Merge branch 'develop' into feature/add-xls-writing 2025-04-07 13:14:58 +06:00
c8ca725523 Add hlink writing 2025-04-04 17:53:24 +06:00
b0b99dec3e add test 2025-04-04 14:21:04 +03:00
3c2fd33c7a Merge pull request 'FIx bug #73451' (#272) from fix/bug73451 into develop
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/272
2025-04-04 10:44:44 +00:00
f9062d7d38 Merge pull request 'Fix bug #73585' (#271) from fix/bug73585 into develop
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/271
2025-04-04 10:44:33 +00:00
25fa05b701 add condfmts union writing 2025-04-03 20:17:58 +06:00
6f66b0c533 Add condfmt12 writing 2025-04-03 19:59:03 +06:00
99252cc950 fix bug 2025-04-02 19:47:58 +03:00
bf89efd471 Add cf12 writing 2025-04-02 22:00:58 +06:00
8f14a0f30b Fix cf writing 2025-04-02 20:26:21 +06:00
494b7b52cb Add dxfn12 writing 2025-04-02 17:54:32 +06:00
e5d6f5df47 Add dxfn struct writing 2025-04-02 16:41:21 +06:00
6f1ffaad40 Merge branch 'develop' into feature/add-xls-writing 2025-04-02 15:17:33 +06:00
e76398db01 Add cond fmt records writing 2025-04-01 21:08:05 +06:00
7c9ae624e9 Fix build for c++11 2025-04-01 11:46:33 +03:00
cafdb1d2a5 Merge branch hotfix/v8.3.2 into develop 2025-04-01 08:34:19 +00:00
06bfb07f0d Merge branch hotfix/v8.3.2 into master 2025-04-01 08:34:17 +00:00
e3c60a6b05 Fix bug in text command renderer 2025-04-01 11:30:43 +03:00
4a03b8cc4a Develop text cells tables building
in progress
2025-04-01 10:49:46 +03:00
5a0d23f6af Add better line splittig 2025-04-01 06:06:43 +03:00
652940657c Update textcommandrenderer 2025-04-01 05:08:56 +03:00
421f5bb0f2 Add window binary writing 2025-03-31 15:43:12 +06:00
61640a9a06 Add celltable writing 2025-03-28 19:13:13 +06:00
87f0835010 Add formula writing 2025-03-28 17:00:25 +06:00
eb71d95944 Merge branch 'develop' into feature/add-xls-writing 2025-03-27 16:30:56 +06:00
cab887c161 Refactoring 2025-03-26 15:37:33 +03:00
b1b4c0e5ff Merge pull request 'release/v9.0.0' (#267) from release/v9.0.0 into feature/docx-renderer 2025-03-26 11:10:54 +00:00
c5cd520bfe Merge pull request 'release/v9.0.0' (#265) from release/v9.0.0 into feature/docx-renderer 2025-03-26 10:34:26 +00:00
f0dbf92bde Refactoring 2025-03-26 13:32:44 +03:00
1d27cc61f4 Add simple cells writing 2025-03-26 16:24:26 +06:00
f535cef848 Add dimensions writing 2025-03-25 20:20:00 +06:00
7ad49a5650 Add headerFooter & columns writing 2025-03-25 18:14:24 +06:00
71201f4446 Add new lines groupping algo 2025-03-25 14:48:02 +03:00
3ad2fff67b Add page setup binary writing 2025-03-25 15:53:51 +06:00
66b56360da Add BOF writing 2025-03-25 14:47:44 +06:00
e8f88ab20d Add globals xls writing 2025-03-24 18:42:03 +06:00
7857106d76 Fix bug #73585 2025-03-21 13:43:19 +05:00
64c74192c7 FIx bug #73451 2025-03-20 16:09:36 +05:00
3ec47d195e Refactoring 2025-03-18 16:17:59 +03:00
daf6dd5af2 Developing TextCommandRederer 2025-03-11 17:40:17 +03:00
9b8f01b293 Fix logic 2025-03-10 17:17:26 +03:00
3c60ee114c Fix bug with hor ver lines 2025-03-01 14:20:45 +03:00
8165c6ffde Fix bug 2025-02-28 17:38:08 +03:00
7dc753a868 Develop base table logic 2025-02-28 17:23:40 +03:00
ea475e2828 Fixed bugs in hwp conversion 2025-02-28 15:42:49 +03:00
c1f29d5317 Fix bug #73314 2025-02-27 20:13:08 +05:00
5cb7ad11e4 Updating the calculation of styles in hwp format and bug fixes 2025-02-25 15:40:12 +03:00
68c9d3cfa5 Add logic for one color gradient 2025-02-10 20:58:02 +03:00
bbb9165a99 Add logic for luminocity gradient 2025-02-10 18:06:32 +03:00
17fe60ecdc Add color mixing in gradient render 2025-02-10 18:05:43 +03:00
ec01f4a77e Create String Index 2025-02-06 11:16:49 +03:00
ef1fc051d5 Set better indents for alignment 2025-02-03 14:50:49 +03:00
daa90eee79 Shape coverage possible fix 2025-02-03 14:42:22 +03:00
f253eb5448 Fix build 2025-02-03 13:58:08 +03:00
a7457fd058 Merge branch 'release/v8.3.0' 2025-02-03 13:54:01 +03:00
6791799fcb Write Top DICT 2025-01-30 17:14:45 +03:00
a03e397234 Read/Write Top DICT 2025-01-29 18:38:44 +03:00
4db56e4536 Add lminosity gradient to test case 2025-01-28 11:03:29 +03:00
99224aecb9 Add fill color for tensor patch gradient 2025-01-28 11:02:01 +03:00
dcf8f0fb01 Header and Name Index 2025-01-24 17:51:50 +03:00
d04146db5b Create CIDFontType0C 2025-01-23 17:51:48 +03:00
5a7d3de597 Fix bug with width of border 2025-01-23 14:32:54 +03:00
6cb6631d1a Update table logic 2025-01-23 14:10:35 +03:00
1a3ce88654 Develop tables 2025-01-23 13:02:10 +03:00
037879ca65 Add more style logic in tables 2025-01-22 18:06:14 +03:00
cabecb0116 Improved the speed of html format conversion 2025-01-17 17:31:25 +03:00
d6ed01e1df fix compound2 function 2023-09-04 12:25:28 +03:00
0fcf29eddc fix compound converter 2023-09-01 18:01:58 +03:00
474a500819 Add compound file to checker 2023-08-31 18:15:27 +03:00
15757 changed files with 348617 additions and 1089450 deletions

1
.gitignore vendored
View File

@ -46,5 +46,6 @@ DesktopEditor/fontengine/js/common/freetype-2.10.4
.qtc_clangd
Common/3dParty/openssl/openssl/
Common/3dParty/libxml/libxml2/
msvc_make.bat

View File

@ -16,3 +16,14 @@
- cryptopp ([BSL](https://raw.githubusercontent.com/weidai11/cryptopp/master/License.txt))
- openssl ([Apache-2.0](https://raw.githubusercontent.com/openssl/openssl/master/LICENSE.txt))
- v8 ([3-clause BSD License](https://raw.githubusercontent.com/v8/v8/main/LICENSE))
- googletest ([3-clause BSD License](https://raw.githubusercontent.com/google/googletest/refs/heads/main/LICENSE))
- glm ([MIT](https://raw.githubusercontent.com/g-truc/glm/refs/heads/master/copying.txt))
- mdds ([MIT](https://raw.githubusercontent.com/kohei-us/mdds/refs/heads/master/LICENSES/MIT.txt))
- librevenge ([MPL-2](https://raw.githubusercontent.com/Distrotech/librevenge/refs/heads/distrotech-librevenge/COPYING.MPL))
- libodfgen ([MPL-2](https://raw.githubusercontent.com/Distrotech/libodfgen/refs/heads/master/COPYING.MPL))
- libetonyek ([MPL-2](https://raw.githubusercontent.com/LibreOffice/libetonyek/refs/heads/master/COPYING))
- md4c ([MIT](https://raw.githubusercontent.com/mity/md4c/refs/heads/master/LICENSE.md))
- libheif([MIT](https://raw.githubusercontent.com/strukturag/libheif/refs/heads/master/COPYING))
- libde265([MIT](https://raw.githubusercontent.com/strukturag/libde265/refs/heads/master/COPYING))
- x265([GPL 2.0](https://bitbucket.org/multicoreware/x265_git/raw/cfee9638c82b655c5887cedbdf1aa856f81b906a/COPYING))
- pole([FREE](https://github.com/otofoto/Pole/blob/master/pole/LICENSE))

View File

@ -1,3 +1,38 @@
/*
* Copyright (C) Ascensio System SIA, 2009-2026
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation, together with the
* additional terms provided in the LICENSE file.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: https://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA by email at info@onlyoffice.com
* or by postal mail at 20A-6 Ernesta Birznieka-Upisha Street, Riga,
* LV-1050, Latvia, European Union.
*
* The interactive user interfaces in modified versions of the Program
* are required to display Appropriate Legal Notices in accordance with
* Section 5 of the GNU AGPL version 3.
*
* No trademark rights are granted under this License.
*
* All non-code elements of the Product, including illustrations,
* icon sets, and technical writing content, are licensed under the
* Creative Commons Attribution-ShareAlike 4.0 International License:
* https://creativecommons.org/licenses/by-sa/4.0/legalcode
*
* This license applies only to such non-code elements and does not
* modify or replace the licensing terms applicable to the Program's
* source code, which remains licensed under the GNU Affero General
* Public License v3.
*
* SPDX-License-Identifier: AGPL-3.0-only
*/
#include "IWork.h"
#include "../DesktopEditor/common/File.h"
#include "../DesktopEditor/common/Directory.h"
@ -53,7 +88,7 @@ bool GetRVNGInputStream(const DATA_TYPE_INPUTFILE& sFile, std::shared_ptr<librev
IWorkFileType CIWorkFile::GetType(const std::wstring& sFile) const
{
//TODO:: так как на данный момент мы работает только напрямую с файлом, то работа с директорией нам пока не нужна
//TODO:: since currently we work directly with file only, directory handling is not needed yet
if (NSDirectory::PathIsDirectory(sFile))
return IWorkFileType::None;
@ -107,7 +142,7 @@ int Convert(const std::wstring& wsOutputFile, std::shared_ptr<librevenge::RVNGIn
int CIWorkFile::Convert2Odf(const std::wstring& sFile, const std::wstring& sOutputFile) const
{
//TODO:: так как на данный момент мы работает только напрямую с файлом, то работа с директорией нам пока не нужна
//TODO:: since currently we work directly with file only, directory handling is not needed yet
if (NSDirectory::PathIsDirectory(sFile))
return -1;

View File

@ -1,3 +1,38 @@
/*
* Copyright (C) Ascensio System SIA, 2009-2026
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation, together with the
* additional terms provided in the LICENSE file.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: https://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA by email at info@onlyoffice.com
* or by postal mail at 20A-6 Ernesta Birznieka-Upisha Street, Riga,
* LV-1050, Latvia, European Union.
*
* The interactive user interfaces in modified versions of the Program
* are required to display Appropriate Legal Notices in accordance with
* Section 5 of the GNU AGPL version 3.
*
* No trademark rights are granted under this License.
*
* All non-code elements of the Product, including illustrations,
* icon sets, and technical writing content, are licensed under the
* Creative Commons Attribution-ShareAlike 4.0 International License:
* https://creativecommons.org/licenses/by-sa/4.0/legalcode
*
* This license applies only to such non-code elements and does not
* modify or replace the licensing terms applicable to the Program's
* source code, which remains licensed under the GNU Affero General
* Public License v3.
*
* SPDX-License-Identifier: AGPL-3.0-only
*/
#ifndef _IWORKFILE_IWORKFILE_H
#define _IWORKFILE_IWORKFILE_H

View File

@ -1,3 +1,36 @@
# Copyright (C) Ascensio System SIA, 2009-2026
#
# This program is a free software product. You can redistribute it and/or
# modify it under the terms of the GNU Affero General Public License (AGPL)
# version 3 as published by the Free Software Foundation, together with the
# additional terms provided in the LICENSE file.
#
# This program is distributed WITHOUT ANY WARRANTY; without even the implied
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
# details, see the GNU AGPL at: https://www.gnu.org/licenses/agpl-3.0.html
#
# You can contact Ascensio System SIA by email at info@onlyoffice.com
# or by postal mail at 20A-6 Ernesta Birznieka-Upisha Street, Riga,
# LV-1050, Latvia, European Union.
#
# The interactive user interfaces in modified versions of the Program
# are required to display Appropriate Legal Notices in accordance with
# Section 5 of the GNU AGPL version 3.
#
# No trademark rights are granted under this License.
#
# All non-code elements of the Product, including illustrations,
# icon sets, and technical writing content, are licensed under the
# Creative Commons Attribution-ShareAlike 4.0 International License:
# https://creativecommons.org/licenses/by-sa/4.0/legalcode
#
# This license applies only to such non-code elements and does not
# modify or replace the licensing terms applicable to the Program's
# source code, which remains licensed under the GNU Affero General
# Public License v3.
#
# SPDX-License-Identifier: AGPL-3.0-only
QT -= core
QT -= gui

View File

@ -1,33 +1,36 @@
/*
* (c) Copyright Ascensio System SIA 2010-2023
* Copyright (C) Ascensio System SIA, 2009-2026
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
* version 3 as published by the Free Software Foundation, together with the
* additional terms provided in the LICENSE file.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: https://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at 20A-6 Ernesta Birznieka-Upish
* street, Riga, Latvia, EU, LV-1050.
* You can contact Ascensio System SIA by email at info@onlyoffice.com
* or by postal mail at 20A-6 Ernesta Birznieka-Upisha Street, Riga,
* LV-1050, Latvia, European Union.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* The interactive user interfaces in modified versions of the Program
* are required to display Appropriate Legal Notices in accordance with
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
* No trademark rights are granted under this License.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
* All non-code elements of the Product, including illustrations,
* icon sets, and technical writing content, are licensed under the
* Creative Commons Attribution-ShareAlike 4.0 International License:
* https://creativecommons.org/licenses/by-sa/4.0/legalcode
*
* This license applies only to such non-code elements and does not
* modify or replace the licensing terms applicable to the Program's
* source code, which remains licensed under the GNU Affero General
* Public License v3.
*
* SPDX-License-Identifier: AGPL-3.0-only
*/
#include "../IWork.h"

View File

@ -1,3 +1,36 @@
# Copyright (C) Ascensio System SIA, 2009-2026
#
# This program is a free software product. You can redistribute it and/or
# modify it under the terms of the GNU Affero General Public License (AGPL)
# version 3 as published by the Free Software Foundation, together with the
# additional terms provided in the LICENSE file.
#
# This program is distributed WITHOUT ANY WARRANTY; without even the implied
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
# details, see the GNU AGPL at: https://www.gnu.org/licenses/agpl-3.0.html
#
# You can contact Ascensio System SIA by email at info@onlyoffice.com
# or by postal mail at 20A-6 Ernesta Birznieka-Upisha Street, Riga,
# LV-1050, Latvia, European Union.
#
# The interactive user interfaces in modified versions of the Program
# are required to display Appropriate Legal Notices in accordance with
# Section 5 of the GNU AGPL version 3.
#
# No trademark rights are granted under this License.
#
# All non-code elements of the Product, including illustrations,
# icon sets, and technical writing content, are licensed under the
# Creative Commons Attribution-ShareAlike 4.0 International License:
# https://creativecommons.org/licenses/by-sa/4.0/legalcode
#
# This license applies only to such non-code elements and does not
# modify or replace the licensing terms applicable to the Program's
# source code, which remains licensed under the GNU Affero General
# Public License v3.
#
# SPDX-License-Identifier: AGPL-3.0-only
CONFIG -= qt
QT -= core gui

1
Common/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
**/module.version

View File

@ -6,12 +6,13 @@ import os
if not base.is_dir("glm"):
base.cmd("git", ["clone", "https://github.com/g-truc/glm.git"])
base.cmd_in_dir("glm", "git", ["checkout", "33b4a621a697a305bc3a7610d290677b96beb181", "--quiet"])
base.replaceInFile("./glm/glm/detail/func_common.inl", "vec<L, T, Q> v;", "vec<L, T, Q> v{};")
if not base.is_dir("mdds"):
base.cmd("git", ["clone", "https://github.com/kohei-us/mdds.git"])
base.cmd_in_dir("mdds", "git", ["checkout", "0783158939c6ce4b0b1b89e345ab983ccb0f0ad0"], "--quiet")
fix_cpp_version = "#if __cplusplus < 201402L\n"
fix_cpp_version = "#if __cplusplus < 201703L\n"
fix_cpp_version += "#ifndef _MSC_VER\n"
fix_cpp_version += "namespace std {\n"
fix_cpp_version += " template<bool __v>\n"

View File

@ -26,14 +26,21 @@ bundle_xcframeworks {
}
}
core_win_arm64 {
DEFINES += MICROSOFT_WINDOWS_WINBASE_H_DEFINE_INTERLOCKED_CPLUSPLUS_OVERLOADS=0
}
core_windows {
VS_VERSION=140
VS_DEBUG=
VS_ARCH=x64
core_debug:VS_DEBUG=gd-
core_win_32:VS_ARCH=x32
core_win_arm64:VS_ARCH=a64
vs2019:VS_VERSION=142
DEFINES += BOOST_USE_WINDOWS_H BOOST_WINAPI_NO_REDECLARATIONS
BOOST_POSTFIX = -vc$${VS_VERSION}-mt-$${VS_DEBUG}$${VS_ARCH}-1_72
core_boost_libs:LIBS += -L$$CORE_BOOST_LIBS -llibboost_system$$BOOST_POSTFIX -llibboost_filesystem$$BOOST_POSTFIX

View File

@ -0,0 +1,36 @@
<<<<<<<
#if BOOST_WORKAROUND(__EDG_VERSION__, <= 243)
private:
BOOST_STATIC_CONSTANT(AUX_WRAPPER_VALUE_TYPE, next_value = BOOST_MPL_AUX_STATIC_CAST(AUX_WRAPPER_VALUE_TYPE, (N + 1)));
BOOST_STATIC_CONSTANT(AUX_WRAPPER_VALUE_TYPE, prior_value = BOOST_MPL_AUX_STATIC_CAST(AUX_WRAPPER_VALUE_TYPE, (N - 1)));
public:
typedef AUX_WRAPPER_INST(next_value) next;
typedef AUX_WRAPPER_INST(prior_value) prior;
#elif BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x561)) \
|| BOOST_WORKAROUND(__IBMCPP__, BOOST_TESTED_AT(502)) \
|| (BOOST_WORKAROUND(__HP_aCC, <= 53800) && (BOOST_WORKAROUND(__hpxstd98, != 1)))
typedef AUX_WRAPPER_INST( BOOST_MPL_AUX_STATIC_CAST(AUX_WRAPPER_VALUE_TYPE, (N + 1)) ) next;
typedef AUX_WRAPPER_INST( BOOST_MPL_AUX_STATIC_CAST(AUX_WRAPPER_VALUE_TYPE, (N - 1)) ) prior;
#else
typedef AUX_WRAPPER_INST( BOOST_MPL_AUX_STATIC_CAST(AUX_WRAPPER_VALUE_TYPE, (value + 1)) ) next;
typedef AUX_WRAPPER_INST( BOOST_MPL_AUX_STATIC_CAST(AUX_WRAPPER_VALUE_TYPE, (value - 1)) ) prior;
#endif
=======
#if BOOST_WORKAROUND(__EDG_VERSION__, <= 243) \
|| defined(__clang__)
private:
BOOST_STATIC_CONSTANT(AUX_WRAPPER_VALUE_TYPE, next_value = BOOST_MPL_AUX_STATIC_CAST(AUX_WRAPPER_VALUE_TYPE, (N + 1)));
BOOST_STATIC_CONSTANT(AUX_WRAPPER_VALUE_TYPE, prior_value = BOOST_MPL_AUX_STATIC_CAST(AUX_WRAPPER_VALUE_TYPE, (N - 1)));
public:
typedef AUX_WRAPPER_INST(next_value) next;
typedef AUX_WRAPPER_INST(prior_value) prior;
#elif BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x561)) \
|| BOOST_WORKAROUND(__IBMCPP__, BOOST_TESTED_AT(502)) \
|| (BOOST_WORKAROUND(__HP_aCC, <= 53800) && (BOOST_WORKAROUND(__hpxstd98, != 1)))
typedef AUX_WRAPPER_INST( BOOST_MPL_AUX_STATIC_CAST(AUX_WRAPPER_VALUE_TYPE, (N + 1)) ) next;
typedef AUX_WRAPPER_INST( BOOST_MPL_AUX_STATIC_CAST(AUX_WRAPPER_VALUE_TYPE, (N - 1)) ) prior;
#else
typedef AUX_WRAPPER_INST( BOOST_MPL_AUX_STATIC_CAST(AUX_WRAPPER_VALUE_TYPE, (value + 1)) ) next;
typedef AUX_WRAPPER_INST( BOOST_MPL_AUX_STATIC_CAST(AUX_WRAPPER_VALUE_TYPE, (value - 1)) ) prior;
#endif
>>>>>>>

2
Common/3dParty/brotli/.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
brotli/
module.version

View File

@ -0,0 +1,9 @@
SRC_DIR = $$PWD/brotli/c
DEFINES += FT_CONFIG_OPTION_USE_BROTLI
INCLUDEPATH += \
$$SRC_DIR/include
SOURCES += $$files($$SRC_DIR/common/*.c)
SOURCES += $$files($$SRC_DIR/dec/*.c)
#SOURCES += $$files($$SRC_DIR/enc/*.c)

20
Common/3dParty/brotli/make.py Executable file
View File

@ -0,0 +1,20 @@
#!/usr/bin/env python
import sys
import os
sys.path.append("../../../../build_tools/scripts")
import base
def clear_module():
if base.is_dir("brotli"):
base.delete_dir_with_access_error("brotli")
return
base.check_module_version("1", clear_module)
# fetch harfbuzz
if not base.is_dir("brotli"):
base.cmd("git", ["clone", "https://github.com/google/brotli.git"])
os.chdir("brotli")
base.cmd("git", ["checkout", "a47d7475063eb223c87632eed806c0070e70da29"])
os.chdir("../")

4
Common/3dParty/heif/.gitignore vendored Normal file
View File

@ -0,0 +1,4 @@
x265_git
libde265
libheif
ios-cmake

View File

@ -0,0 +1,42 @@
DEFINES += LIBHEIF_STATIC_BUILD
HEIF_BUILDS_PLATFORM_PREFIX = $$CORE_BUILDS_PLATFORM_PREFIX
core_ios : xcframework_platform_ios_simulator {
HEIF_BUILDS_PLATFORM_PREFIX = ios_simulator
}
HEIF_BUILD_PATH = $$PWD/libheif/build/$$HEIF_BUILDS_PLATFORM_PREFIX/$$CORE_BUILDS_CONFIGURATION_PREFIX
INCLUDEPATH += \
$$PWD/libheif/libheif/api \
$$HEIF_BUILD_PATH # for heif_version.h
core_windows {
core_debug {
BUILD_TYPE = Debug
} else {
BUILD_TYPE = Release
}
LIBS += \
-L$$PWD/x265_git/build/$$HEIF_BUILDS_PLATFORM_PREFIX/$$CORE_BUILDS_CONFIGURATION_PREFIX/$$BUILD_TYPE -lx265-static \
-L$$PWD/libde265/build/$$HEIF_BUILDS_PLATFORM_PREFIX/$$CORE_BUILDS_CONFIGURATION_PREFIX/libde265/$$BUILD_TYPE -llibde265 \
-L$$HEIF_BUILD_PATH/libheif/$$BUILD_TYPE -lheif
}
core_linux | core_android {
# we need to wrap x265 and de265 libraries in `whole-archive` flags to avoid "undefined symbol" errors when later linking with graphics.so
LIBS += \
-Wl,--whole-archive \
-L$$PWD/x265_git/build/$$HEIF_BUILDS_PLATFORM_PREFIX/$$CORE_BUILDS_CONFIGURATION_PREFIX -lx265 \
-L$$PWD/libde265/build/$$HEIF_BUILDS_PLATFORM_PREFIX/$$CORE_BUILDS_CONFIGURATION_PREFIX/libde265 -lde265 \
-Wl,--no-whole-archive \
-L$$HEIF_BUILD_PATH/libheif -lheif
}
core_mac | core_ios {
LIBS += \
-L$$PWD/x265_git/build/$$HEIF_BUILDS_PLATFORM_PREFIX/$$CORE_BUILDS_CONFIGURATION_PREFIX -lx265 \
-L$$PWD/libde265/build/$$HEIF_BUILDS_PLATFORM_PREFIX/$$CORE_BUILDS_CONFIGURATION_PREFIX/libde265 -lde265 \
-L$$HEIF_BUILD_PATH/libheif -lheif
}

View File

@ -3,6 +3,8 @@ DEPENDPATH += $$PWD
CORE_ROOT_DIR = $$PWD/../../../..
include($$CORE_ROOT_DIR/Common/3dParty/boost/boost.pri)
css_calculator_without_xhtml {
HEADERS += \
$$PWD/src/CCssCalculator_Private.h \

View File

@ -7,25 +7,26 @@
#include <iterator>
#include <map>
#include <iostream>
#include "../../../../../DesktopEditor/common/File.h"
#include "StaticFunctions.h"
#include "ConstValues.h"
#define DEFAULT_FONT_SIZE 14
#define DEFAULT_FONT_SIZE 12
namespace NSCSS
{
typedef std::map<std::wstring, std::wstring>::const_iterator styles_iterator;
CCompiledStyle::CCompiledStyle() : m_nDpi(96), m_UnitMeasure(Point), m_dCoreFontSize(DEFAULT_FONT_SIZE)
CCompiledStyle::CCompiledStyle()
: m_nDpi(96), m_UnitMeasure(Point), m_dCoreFontSize(DEFAULT_FONT_SIZE)
{}
CCompiledStyle::CCompiledStyle(const CCompiledStyle& oStyle) :
m_arParentsStyles(oStyle.m_arParentsStyles), m_sId(oStyle.m_sId),
m_nDpi(oStyle.m_nDpi), m_UnitMeasure(oStyle.m_UnitMeasure), m_dCoreFontSize(oStyle.m_dCoreFontSize),
m_oFont(oStyle.m_oFont), m_oMargin(oStyle.m_oMargin), m_oPadding(oStyle.m_oPadding), m_oBackground(oStyle.m_oBackground),
m_oText(oStyle.m_oText), m_oBorder(oStyle.m_oBorder), m_oDisplay(oStyle.m_oDisplay), m_oTransform(oStyle.m_oTransform){}
m_oText(oStyle.m_oText), m_oBorder(oStyle.m_oBorder), m_oDisplay(oStyle.m_oDisplay), m_oTransform(oStyle.m_oTransform)
{}
CCompiledStyle::~CCompiledStyle()
{
@ -34,6 +35,8 @@ namespace NSCSS
CCompiledStyle& CCompiledStyle::operator+= (const CCompiledStyle &oElement)
{
m_arParentsStyles.insert(oElement.m_arParentsStyles.begin(), oElement.m_arParentsStyles.end());
if (oElement.Empty())
return *this;
@ -69,6 +72,8 @@ namespace NSCSS
m_oDisplay = oElement.m_oDisplay;
m_oTransform = oElement.m_oTransform;
m_arParentsStyles = oElement.m_arParentsStyles;
return *this;
}
@ -109,7 +114,8 @@ namespace NSCSS
bool CCompiledStyle::Empty() const
{
return m_oBackground.Empty() && m_oBorder.Empty() && m_oFont.Empty() &&
m_oMargin.Empty() && m_oPadding.Empty() && m_oText.Empty() && m_oDisplay.Empty();
m_oMargin.Empty() && m_oPadding.Empty() && m_oText.Empty() &&
m_oDisplay.Empty() && m_oTransform.Empty();
}
void CCompiledStyle::AddPropSel(const std::wstring& sProperty, const std::wstring& sValue, const unsigned int unLevel, const bool& bHardMode)
@ -314,6 +320,7 @@ namespace NSCSS
}
//BORDER TOP
CASE(L"border-top"):
CASE(L"mso-border-top-alt"):
{
m_oBorder.SetTopSide(pPropertie.second, unLevel, bHardMode);
break;
@ -335,6 +342,7 @@ namespace NSCSS
}
//BORDER RIGHT
CASE(L"border-right"):
CASE(L"mso-border-right-alt"):
{
m_oBorder.SetRightSide(pPropertie.second, unLevel, bHardMode);
break;
@ -356,6 +364,7 @@ namespace NSCSS
}
//BORDER bottom
CASE(L"border-bottom"):
CASE(L"mso-border-bottom-alt"):
{
m_oBorder.SetBottomSide(pPropertie.second, unLevel, bHardMode);
break;
@ -377,6 +386,7 @@ namespace NSCSS
}
//BORDER LEFT
CASE(L"border-left"):
CASE(L"mso-border-left-alt"):
{
m_oBorder.SetLeftSide(pPropertie.second, unLevel, bHardMode);
break;
@ -435,6 +445,11 @@ namespace NSCSS
m_oDisplay.SetVAlign(pPropertie.second, unLevel, bHardMode);
break;
}
CASE(L"white-space"):
{
m_oDisplay.SetWhiteSpace(pPropertie.second, unLevel, bHardMode);
break;
}
//TRANSFORM
CASE(L"transform"):
{
@ -521,7 +536,7 @@ namespace NSCSS
{
return m_sId;
}
bool CCompiledStyle::HaveThisParent(const std::wstring &wsParentName) const
{
return m_arParentsStyles.end() != m_arParentsStyles.find(wsParentName);

View File

@ -1,9 +1,6 @@
#ifndef CCOMPILEDSTYLE_H
#define CCOMPILEDSTYLE_H
#include "CssCalculator_global.h"
#include "ConstValues.h"
#include <map>
#include <set>
#include <vector>

View File

@ -13,14 +13,9 @@ namespace NSCSS
delete m_pInternal;
}
CCompiledStyle CCssCalculator::GetCompiledStyle(const std::vector<CNode> &arSelectors) const
bool CCssCalculator::CalculateCompiledStyle(std::vector<CNode>& arSelectors) const
{
return m_pInternal->GetCompiledStyle(arSelectors);
}
bool CCssCalculator::GetCompiledStyle(CCompiledStyle &oStyle, const std::vector<CNode> &arSelectors) const
{
return m_pInternal->GetCompiledStyle(oStyle, arSelectors);
return m_pInternal->CalculateCompiledStyle(arSelectors);
}
std::wstring CCssCalculator::CalculateStyleId(const CNode& oNode)
@ -63,6 +58,11 @@ namespace NSCSS
return m_pInternal->GetDpi();
}
bool CCssCalculator::HaveStylesById(const std::wstring& wsId) const
{
return m_pInternal->HaveStylesById(wsId);
}
void CCssCalculator::ClearPageData()
{
m_pInternal->ClearPageData();

View File

@ -2,10 +2,8 @@
#define CCSSCALCULATOR_H
#include "CssCalculator_global.h"
#include "CCompiledStyle.h"
#include "ConstValues.h"
#include <iostream>
#include <map>
#include "StyleProperties.h"
#include "CNode.h"
#include <vector>
namespace NSCSS
@ -19,8 +17,7 @@ namespace NSCSS
CCssCalculator();
~CCssCalculator();
CCompiledStyle GetCompiledStyle(const std::vector<CNode> &arSelectors) const;
bool GetCompiledStyle(CCompiledStyle& oStyle, const std::vector<CNode> &arSelectors) const;
bool CalculateCompiledStyle(std::vector<CNode>& arSelectors) const;
std::wstring CalculateStyleId(const CNode& oNode);
bool CalculatePageStyle(NSProperties::CPage& oPageData, const std::vector<CNode> &arSelectors);
@ -35,6 +32,8 @@ namespace NSCSS
std::wstring GetEncoding() const;
unsigned short int GetDpi() const;
bool HaveStylesById(const std::wstring& wsId) const;
void ClearPageData();
void ClearEmbeddedStyles();
void ClearAllowedStyleFiles();

View File

@ -2,8 +2,6 @@
#include <string>
#include <vector>
#include <fstream>
#include <cmath>
#include <algorithm>
#include <numeric>
@ -17,29 +15,33 @@ inline static std::wstring StringifyValueList(const KatanaArray* oValues);
inline static std::wstring StringifyValue(const KatanaValue* oValue);
inline static bool IsTableElement(const std::wstring& wsNameTag);
bool operator<(const std::vector<NSCSS::CNode> &arLeftSelectors, const std::vector<NSCSS::CNode> &arRightSelectors)
{
const size_t& sizeLeftSelectors = arLeftSelectors.size();
const size_t& sizeRightSelectors = arRightSelectors.size();
if (sizeLeftSelectors < sizeRightSelectors)
return true;
else if (sizeLeftSelectors > sizeRightSelectors)
return false;
for (size_t i = 0; i < arLeftSelectors.size(); ++i)
{
if (arLeftSelectors[i] < arRightSelectors[i])
return true;
}
return false;
}
namespace NSCSS
{
bool operator<(const std::vector<NSCSS::CNode> &arLeftSelectors, const std::vector<NSCSS::CNode> &arRightSelectors)
{
if (arLeftSelectors.size() < arRightSelectors.size())
return true;
else if (arLeftSelectors.size() > arRightSelectors.size())
return false;
for (size_t i = 0; i < arLeftSelectors.size(); ++i)
{
if (arLeftSelectors[i] == arRightSelectors[i])
continue;
if (arLeftSelectors[i] < arRightSelectors[i])
return true;
else if (arRightSelectors[i] < arLeftSelectors[i])
return false;
}
return false;
}
CStyleStorage::CStyleStorage()
{}
{
InitDefaultStyles();
}
CStyleStorage::~CStyleStorage()
{
@ -64,6 +66,7 @@ namespace NSCSS
m_arEmptyStyleFiles.clear();
ClearEmbeddedStyles();
ClearDefaultStyles();
ClearAllowedStyleFiles();
#ifdef CSS_CALCULATOR_WITH_XHTML
@ -186,7 +189,7 @@ namespace NSCSS
}
#endif
const CElement* CStyleStorage::FindElement(const std::wstring& wsSelector)
const CElement* CStyleStorage::FindElement(const std::wstring& wsSelector) const
{
if (wsSelector.empty())
return nullptr;
@ -210,6 +213,16 @@ namespace NSCSS
return nullptr;
}
const CElement* CStyleStorage::FindDefaultElement(const std::wstring& wsSelector) const
{
if (wsSelector.empty())
return nullptr;
const CElement* pFoundElement = FindSelectorFromStyleData(wsSelector, m_mDefaultStyleData);
return (nullptr != pFoundElement) ? pFoundElement : nullptr;
}
void CStyleStorage::AddStyles(const std::string& sStyle, std::map<std::wstring, CElement*>& mStyleData)
{
if (sStyle.empty())
@ -229,6 +242,15 @@ namespace NSCSS
m_mEmbeddedStyleData.clear();
}
void CStyleStorage::ClearDefaultStyles()
{
for (std::map<std::wstring, CElement*>::iterator oIter = m_mDefaultStyleData.begin(); oIter != m_mDefaultStyleData.end(); ++oIter)
if (oIter->second != nullptr)
delete oIter->second;
m_mDefaultStyleData.clear();
}
void CStyleStorage::ClearAllowedStyleFiles()
{
m_arAllowedStyleFiles.clear();
@ -472,7 +494,7 @@ namespace NSCSS
}
}
const CElement* CStyleStorage::FindSelectorFromStyleData(const std::wstring& wsSelector, const std::map<std::wstring, CElement*>& mStyleData)
const CElement* CStyleStorage::FindSelectorFromStyleData(const std::wstring& wsSelector, const std::map<std::wstring, CElement*>& mStyleData) const
{
std::map<std::wstring, CElement*>::const_iterator itFound = mStyleData.find(wsSelector);
@ -482,15 +504,141 @@ namespace NSCSS
return nullptr;
}
CCssCalculator_Private::CCssCalculator_Private() : m_nDpi(96), m_nCountNodes(0), m_sEncoding(L"UTF-8"){}
void CStyleStorage::InitDefaultStyles()
{
m_mDefaultStyleData[L"b"] = new CElement(L"b", {{L"font-weight", L"bold"}});
m_mDefaultStyleData[L"center"] = new CElement(L"center", {{L"text-align", L"center"}});
m_mDefaultStyleData[L"i"] = new CElement(L"i", {{L"font-style", L"italic"}});
m_mDefaultStyleData[L"code"] = new CElement(L"code", {{L"font-family", L"Courier New"}});
m_mDefaultStyleData[L"kbd"] = new CElement(L"kbd", {{L"font-family", L"Courier New"},
{L"font_weight", L"bold"}});
m_mDefaultStyleData[L"s"] = new CElement(L"s", {{L"text-decoration", L"line-through"}});
m_mDefaultStyleData[L"u"] = new CElement(L"u", {{L"text-decoration", L"underline"}});
m_mDefaultStyleData[L"mark"] = new CElement(L"mark", {{L"background-color", L"yellow"}});
m_mDefaultStyleData[L"sup"] = new CElement(L"sup", {{L"vertical-align", L"top"}});
m_mDefaultStyleData[L"sub"] = new CElement(L"sub", {{L"vertical-align", L"bottom"}});
m_mDefaultStyleData[L"dd"] = new CElement(L"dd", {{L"margin-left", L"720tw"}});
m_mDefaultStyleData[L"pre"] = new CElement(L"pre", {{L"font-family", L"Courier New"},
{L"margin-top", L"0"},
{L"margin-bottom", L"0"}});
m_mDefaultStyleData[L"blockquote"] = new CElement(L"blockquote", {{L"margin", L"0px"}});
m_mDefaultStyleData[L"ul"] = new CElement(L"ul", {{L"margin-top", L"100tw"},
{L"margin-bottom", L"100tw"}});
m_mDefaultStyleData[L"textarea"] = new CElement(L"textarea", {{L"border", L"1px solid black"}});
m_mDefaultStyleData[L"th"] = new CElement(L"b", {{L"font-weight", L"bold"}});
}
CCssCalculator_Private::CCssCalculator_Private()
: m_nDpi(96), m_nCountNodes(0), m_sEncoding(L"UTF-8")
{
}
CCssCalculator_Private::~CCssCalculator_Private()
{}
#ifdef CSS_CALCULATOR_WITH_XHTML
bool CCssCalculator_Private::CalculateCompiledStyle(std::vector<CNode>& arSelectors)
{
if (arSelectors.empty())
return false;
if (L"#text" == arSelectors.back().m_wsName)
{
if (arSelectors.size() > 1 && arSelectors.back().m_pCompiledStyle->Empty())
*arSelectors.back().m_pCompiledStyle += *(arSelectors.end() - 2)->m_pCompiledStyle;
if(arSelectors.crend() != std::find_if(arSelectors.crbegin(), arSelectors.crend(),
[](const CNode& oNode){ return IsTableElement(oNode.m_wsName); }))
{
arSelectors.back().m_pCompiledStyle->m_oBackground.Clear();
arSelectors.back().m_pCompiledStyle->m_oBorder.Clear();
}
if (arSelectors.size() > 1)
arSelectors.back().m_pCompiledStyle->AddParent(arSelectors[arSelectors.size() - 2].m_wsName);
arSelectors.back().m_pCompiledStyle->SetID(L"text-" + std::to_wstring(++m_nCountNodes));
return true;
}
const std::map<std::vector<CNode>, CCompiledStyle>::const_iterator oItem = m_mUsedStyles.find(arSelectors);
if (oItem != m_mUsedStyles.cend() && (arSelectors.back().m_wsId.empty() || !HaveStylesById(arSelectors.back().m_wsId)))
{
arSelectors.back().SetCompiledStyle(new CCompiledStyle(oItem->second));
return true;
}
if (!arSelectors.back().m_pCompiledStyle->Empty())
return true;
arSelectors.back().m_pCompiledStyle->SetDpi(m_nDpi);
unsigned int unStart = 0;
std::vector<CNode>::const_reverse_iterator itFound = std::find_if(arSelectors.crbegin(), arSelectors.crend(), [](const CNode& oNode){ return !oNode.m_pCompiledStyle->Empty(); });
if (itFound != arSelectors.crend())
unStart = itFound.base() - arSelectors.cbegin();
std::vector<std::wstring> arNodes = CalculateAllNodes(arSelectors, unStart, arSelectors.size());
std::vector<std::wstring> arPrevNodes = CalculateAllNodes(arSelectors, 0, unStart);
bool bInTable = false;
for (size_t i = 0; i < unStart; ++i)
{
if (!bInTable)
bInTable = IsTableElement(arSelectors[i].m_wsName);
else
break;
}
for (size_t i = unStart; i < arSelectors.size(); ++i)
{
if (0 != i)
*arSelectors[i].m_pCompiledStyle += *arSelectors[i - 1].m_pCompiledStyle;
if (i != arSelectors.size() - 1)
arSelectors[i].m_pCompiledStyle->AddParent(arSelectors[i].m_wsName);
if (!bInTable)
bInTable = IsTableElement(arSelectors[i].m_wsName);
if (bInTable)
{
arSelectors[i].m_pCompiledStyle->m_oBackground.Clear();
arSelectors[i].m_pCompiledStyle->m_oBorder.Clear();
arSelectors[i].m_pCompiledStyle->m_oDisplay.Clear();
}
arSelectors[i].m_pCompiledStyle->AddStyle(arSelectors[i].m_mAttributes, i + 1);
for (const CElement* oElement : FindElements(arNodes, arPrevNodes))
arSelectors[i].m_pCompiledStyle->AddStyle(oElement->GetStyle(), i + 1);
if (!arSelectors[i].m_wsStyle.empty())
arSelectors[i].m_pCompiledStyle->AddStyle(arSelectors[i].m_wsStyle, i + 1, true);
// Reset some external styles that are overridden inside the table
if (bInTable && i < arSelectors.size() - 1)
{
arSelectors[i].m_pCompiledStyle->m_oFont.GetLineHeight().Clear();
arSelectors[i].m_pCompiledStyle->m_oPadding.Clear();
arSelectors[i].m_pCompiledStyle->m_oMargin.Clear();
}
}
arSelectors.back().m_pCompiledStyle->SetID(CalculateStyleId(arSelectors.back()));
if (!arSelectors.back().m_pCompiledStyle->Empty())
m_mUsedStyles[arSelectors] = *arSelectors.back().m_pCompiledStyle;
return true;
}
void CCssCalculator_Private::SetPageData(NSProperties::CPage &oPage, const std::map<std::wstring, std::wstring> &mData, unsigned int unLevel, bool bHardMode)
{
//TODO:: пересмотреть данный метод
//TODO:: review this method
m_oStyleStorage.SetPageData(oPage, mData, unLevel, bHardMode);
}
@ -505,11 +653,14 @@ namespace NSCSS
}
#endif
std::vector<std::wstring> CCssCalculator_Private::CalculateAllNodes(const std::vector<CNode> &arSelectors)
std::vector<std::wstring> CCssCalculator_Private::CalculateAllNodes(const std::vector<CNode> &arSelectors, unsigned int unStart, unsigned int unEnd)
{
if ((0 != unEnd && (unEnd < unStart || unEnd > arSelectors.size())) || (unStart == unEnd))
return std::vector<std::wstring>();
std::vector<std::wstring> arNodes;
for (std::vector<CNode>::const_reverse_iterator oNode = arSelectors.rbegin(); oNode != arSelectors.rend(); ++oNode)
for (std::vector<CNode>::const_reverse_iterator oNode = arSelectors.rbegin() + ((0 != unEnd) ? (arSelectors.size() - unEnd) : 0); oNode != arSelectors.rend() - unStart; ++oNode)
{
if (!oNode->m_wsName.empty())
arNodes.push_back(oNode->m_wsName);
@ -521,8 +672,8 @@ namespace NSCSS
std::vector<std::wstring> arClasses = NS_STATIC_FUNCTIONS::GetWordsW(oNode->m_wsClass, false, L" ");
arNodes.push_back(std::accumulate(arClasses.begin(), arClasses.end(), std::wstring(),
[](std::wstring sRes, const std::wstring& sClass)
{return sRes += L'.' + sClass + L' ';}));
[](std::wstring sRes, const std::wstring& sClass)
{return sRes += L'.' + sClass + L' ';}));
}
else
arNodes.push_back(L'.' + oNode->m_wsClass);
@ -540,7 +691,7 @@ namespace NSCSS
if (arNextNodes.empty())
return;
const std::vector<CElement*> arTempPrev = pElement->GetPrevElements(arNextNodes.crbegin() + 1, arNextNodes.crend());
const std::vector<CElement*> arTempPrev = pElement->GetPrevElements(arNextNodes.cbegin(), arNextNodes.cend());
const std::vector<CElement*> arTempKins = pElement->GetNextOfKin(wsName, arClasses);
if (!arTempPrev.empty())
@ -550,6 +701,36 @@ namespace NSCSS
arFindedElements.insert(arFindedElements.end(), arTempKins.begin(), arTempKins.end());
}
inline std::wstring GetAlternativeDefaultNodeName(const std::wstring& wsNodeName)
{
if (L"strong" == wsNodeName)
return L"b";
if (L"cite" == wsNodeName || L"dfn" == wsNodeName || L"em" == wsNodeName ||
L"var" == wsNodeName || L"adress" == wsNodeName)
return L"i";
if (L"tt" == wsNodeName || L"samp" == wsNodeName)
return L"code";
if (L"strike" == wsNodeName || L"del" == wsNodeName)
return L"s";
if (L"ins" == wsNodeName)
return L"u";
if (L"xmp" == wsNodeName || L"nobr" == wsNodeName)
return L"pre";
if (L"ol" == wsNodeName)
return L"ul";
if (L"fieldset" == wsNodeName)
return L"textarea";
return wsNodeName;
}
std::vector<const CElement*> CCssCalculator_Private::FindElements(std::vector<std::wstring> &arNodes, std::vector<std::wstring> &arNextNodes)
{
if (arNodes.empty())
@ -557,20 +738,19 @@ namespace NSCSS
std::vector<const CElement*> arFindedElements;
std::wstring wsName, wsId;
std::wstring wsName, wsClasses, wsId;
std::vector<std::wstring> arClasses;
if (!arNodes.empty() && arNodes.back()[0] == L'#')
{
wsId = arNodes.back();
arNodes.pop_back();
arNextNodes.push_back(wsId);
}
if (!arNodes.empty() && arNodes.back()[0] == L'.')
{
arClasses = NS_STATIC_FUNCTIONS::GetWordsW(arNodes.back(), false, L" ");
arNextNodes.push_back(arNodes.back());
wsClasses = arNodes.back();
arClasses = NS_STATIC_FUNCTIONS::GetWordsW(wsClasses, false, L" ");
arNodes.pop_back();
}
@ -578,7 +758,6 @@ namespace NSCSS
{
wsName = arNodes.back();
arNodes.pop_back();
arNextNodes.push_back(wsName);
}
if (!wsId.empty())
@ -610,6 +789,11 @@ namespace NSCSS
}
}
const CElement* pFoundDefault = m_oStyleStorage.FindDefaultElement(GetAlternativeDefaultNodeName(wsName));
if (nullptr != pFoundDefault)
arFindedElements.push_back(pFoundDefault);
const CElement* pFoundName = m_oStyleStorage.FindElement(wsName);
if (nullptr != pFoundName)
@ -620,6 +804,16 @@ namespace NSCSS
FindPrevAndKindElements(pFoundName, arNextNodes, arFindedElements, wsName, arClasses);
}
const CElement* pFoundAll = m_oStyleStorage.FindElement(L"*");
if (nullptr != pFoundAll)
{
if (!pFoundAll->Empty())
arFindedElements.push_back(pFoundAll);
FindPrevAndKindElements(pFoundAll, arNextNodes, arFindedElements, wsName, arClasses);
}
if (arFindedElements.size() > 1)
{
std::sort(arFindedElements.rbegin(), arFindedElements.rend(),
@ -627,83 +821,18 @@ namespace NSCSS
{ return oFirstElement->GetWeight() > oSecondElement->GetWeight(); });
}
if (!wsId.empty())
arNextNodes.push_back(wsId);
if (!wsClasses.empty())
arNextNodes.push_back(wsClasses);
arNextNodes.push_back(wsName);
return arFindedElements;
}
#ifdef CSS_CALCULATOR_WITH_XHTML
CCompiledStyle CCssCalculator_Private::GetCompiledStyle(const std::vector<CNode>& arSelectors)
{
if (arSelectors.empty())
return CCompiledStyle();
CCompiledStyle oStyle;
GetCompiledStyle(oStyle, arSelectors);
return oStyle;
}
bool CCssCalculator_Private::GetCompiledStyle(CCompiledStyle &oStyle, const std::vector<CNode> &arSelectors)
{
if (arSelectors.empty())
return false;
const std::map<std::vector<CNode>, CCompiledStyle>::iterator oItem = m_mUsedStyles.find(arSelectors);
if (oItem != m_mUsedStyles.end())
{
oStyle = oItem->second;
return true;
}
oStyle.SetDpi(m_nDpi);
std::vector<std::wstring> arNodes = CalculateAllNodes(arSelectors);
std::vector<std::wstring> arPrevNodes;
bool bInTable = false;
for (size_t i = 0; i < arSelectors.size(); ++i)
{
oStyle.AddParent(arSelectors[i].m_wsName);
if (!bInTable)
bInTable = IsTableElement(arSelectors[i].m_wsName);
if (bInTable)
{
oStyle.m_oBackground.Clear();
oStyle.m_oBorder.Clear();
}
CCompiledStyle oTempStyle;
oTempStyle.AddStyle(arSelectors[i].m_mAttributes, i + 1);
for (const CElement* oElement : FindElements(arNodes, arPrevNodes))
oTempStyle.AddStyle(oElement->GetStyle(), i + 1);
if (!arSelectors[i].m_wsStyle.empty())
oTempStyle.AddStyle(arSelectors[i].m_wsStyle, i + 1, true);
oStyle += oTempStyle;
// Скидываем некоторые внешние стили, которые внутри таблицы переопределяются
if (bInTable && i < arSelectors.size() - 1)
{
oStyle.m_oFont.GetLineHeight().Clear();
oStyle.m_oPadding.Clear();
oStyle.m_oMargin.Clear();
}
}
oStyle.SetID(CalculateStyleId(arSelectors.back()));
if (!oStyle.Empty())
m_mUsedStyles[arSelectors] = oStyle;
return true;
}
std::wstring CCssCalculator_Private::CalculateStyleId(const CNode& oNode)
{
return oNode.m_wsName + ((!oNode.m_wsClass.empty()) ? L'.' + oNode.m_wsClass : L"") + ((oNode.m_wsId.empty()) ? L"" : L'#' + oNode.m_wsId) + L'-' + std::to_wstring(++m_nCountNodes);
@ -714,7 +843,7 @@ namespace NSCSS
if (arSelectors.empty())
return false;
std::vector<std::wstring> arNodes = CalculateAllNodes(arSelectors);
std::vector<std::wstring> arNodes = CalculateAllNodes(arSelectors, 0, arSelectors.size());
std::vector<std::wstring> arNextNodes;
for (size_t i = 0; i < arSelectors.size(); ++i)
@ -766,6 +895,11 @@ namespace NSCSS
return m_nDpi;
}
bool CCssCalculator_Private::HaveStylesById(const std::wstring& wsId) const
{
return nullptr != m_oStyleStorage.FindElement(L'#' + wsId);
}
void CCssCalculator_Private::ClearEmbeddedStyles()
{
m_oStyleStorage.ClearEmbeddedStyles();
@ -910,4 +1044,11 @@ inline static std::wstring StringifyValue(const KatanaValue* oValue)
return str;
}
inline static bool IsTableElement(const std::wstring& wsNameTag)
{
return L"td" == wsNameTag || L"tr" == wsNameTag || L"table" == wsNameTag ||
L"tbody" == wsNameTag || L"thead" == wsNameTag || L"tfoot" == wsNameTag ||
L"th" == wsNameTag;
}

View File

@ -27,6 +27,7 @@ namespace NSCSS
void AddStylesFromFile(const std::wstring& wsFileName);
void ClearEmbeddedStyles();
void ClearDefaultStyles();
void ClearAllowedStyleFiles();
void ClearStylesFromFile(const std::wstring& wsFileName);
@ -37,7 +38,8 @@ namespace NSCSS
void ClearPageData();
#endif
const CElement* FindElement(const std::wstring& wsSelector);
const CElement* FindElement(const std::wstring& wsSelector) const;
const CElement* FindDefaultElement(const std::wstring& wsSelector) const;
private:
typedef struct
{
@ -49,6 +51,7 @@ namespace NSCSS
std::set<std::wstring> m_arAllowedStyleFiles;
std::vector<TStyleFileData*> m_arStyleFiles;
std::map<std::wstring, CElement*> m_mEmbeddedStyleData;
std::map<std::wstring, CElement*> m_mDefaultStyleData;
#ifdef CSS_CALCULATOR_WITH_XHTML
typedef struct
@ -77,7 +80,9 @@ namespace NSCSS
void GetOutputData(KatanaOutput* oOutput, std::map<std::wstring, CElement*>& mStyleData);
const CElement* FindSelectorFromStyleData(const std::wstring& wsSelector, const std::map<std::wstring, CElement*>& mStyleData);
const CElement* FindSelectorFromStyleData(const std::wstring& wsSelector, const std::map<std::wstring, CElement*>& mStyleData) const;
void InitDefaultStyles();
};
class CCssCalculator_Private
@ -102,8 +107,7 @@ namespace NSCSS
~CCssCalculator_Private();
#ifdef CSS_CALCULATOR_WITH_XHTML
CCompiledStyle GetCompiledStyle(const std::vector<CNode> &arSelectors);
bool GetCompiledStyle(CCompiledStyle& oStyle, const std::vector<CNode> &arSelectors);
bool CalculateCompiledStyle(std::vector<CNode>& arSelectors);
std::wstring CalculateStyleId(const CNode& oNode);
bool CalculatePageStyle(NSProperties::CPage& oPageData, const std::vector<CNode> &arSelectors);
@ -111,7 +115,7 @@ namespace NSCSS
void ClearPageData();
#endif
std::vector<std::wstring> CalculateAllNodes(const std::vector<CNode>& arSelectors);
std::vector<std::wstring> CalculateAllNodes(const std::vector<CNode>& arSelectors, unsigned int unStart, unsigned int unEnd);
std::vector<const CElement*> FindElements(std::vector<std::wstring>& arNodes, std::vector<std::wstring>& arNextNodes);
void AddStyles(const std::string& sStyle);
@ -123,6 +127,8 @@ namespace NSCSS
std::wstring GetEncoding() const;
unsigned short int GetDpi() const;
bool HaveStylesById(const std::wstring& wsId) const;
void ClearEmbeddedStyles();
void ClearAllowedStyleFiles();
void ClearStylesFromFile(const std::wstring& wsFilePath);

View File

@ -9,6 +9,13 @@ namespace NSCSS
CElement::CElement()
{
}
CElement::CElement(const std::wstring& wsSelector, std::map<std::wstring, std::wstring> mStyle)
: m_mStyle(mStyle), m_sSelector(wsSelector), m_sFullSelector(wsSelector)
{
UpdateWeight();
}
CElement::~CElement()
{
for (CElement* oElement : m_arPrevElements)
@ -18,7 +25,6 @@ namespace NSCSS
continue;
m_mStyle.clear();
}
std::wstring CElement::GetSelector() const
@ -176,14 +182,14 @@ namespace NSCSS
return arElements;
}
std::vector<CElement *> CElement::GetPrevElements(const std::vector<std::wstring>::const_reverse_iterator& oNodesRBegin, const std::vector<std::wstring>::const_reverse_iterator& oNodesREnd) const
std::vector<CElement *> CElement::GetPrevElements(const std::vector<std::wstring>::const_iterator& oNodesBegin, const std::vector<std::wstring>::const_iterator& oNodesEnd) const
{
if (oNodesRBegin >= oNodesREnd || m_arPrevElements.empty())
if (oNodesBegin >= oNodesEnd || m_arPrevElements.empty())
return std::vector<CElement*>();
std::vector<CElement*> arElements;
for (std::vector<std::wstring>::const_reverse_iterator iWord = oNodesRBegin; iWord != oNodesREnd; ++iWord)
for (std::vector<std::wstring>::const_iterator iWord = oNodesBegin; iWord != oNodesEnd; ++iWord)
{
if ((*iWord)[0] == L'.' && ((*iWord).find(L" ") != std::wstring::npos))
{
@ -195,7 +201,7 @@ namespace NSCSS
if (oPrevElement->m_sSelector == wsClass)
{
arElements.push_back(oPrevElement);
std::vector<CElement*> arTempElements = oPrevElement->GetPrevElements(iWord + 1, oNodesREnd);
std::vector<CElement*> arTempElements = oPrevElement->GetPrevElements(iWord + 1, oNodesEnd);
arElements.insert(arElements.end(), arTempElements.begin(), arTempElements.end());
}
}
@ -208,9 +214,8 @@ namespace NSCSS
if (oPrevElement->m_sSelector == *iWord)
{
arElements.push_back(oPrevElement);
std::vector<CElement*> arTempElements = oPrevElement->GetPrevElements(iWord + 1, oNodesREnd);
std::vector<CElement*> arTempElements = oPrevElement->GetPrevElements(iWord + 1, oNodesEnd);
arElements.insert(arElements.end(), arTempElements.begin(), arTempElements.end());
// return arElements;
}
}
}

View File

@ -22,6 +22,7 @@ namespace NSCSS
public:
CElement();
CElement(const std::wstring& wsSelector, std::map<std::wstring, std::wstring> mStyle);
~CElement();
std::wstring GetSelector() const;
@ -39,7 +40,7 @@ namespace NSCSS
std::map<std::wstring, std::wstring> GetFullStyle(const std::vector<CNode>& arSelectors) const;
std::map<std::wstring, std::wstring> GetFullStyle(const std::vector<std::wstring>& arNodes) const;
std::vector<CElement *> GetNextOfKin(const std::wstring& sName, const std::vector<std::wstring>& arClasses = {}) const;
std::vector<CElement *> GetPrevElements(const std::vector<std::wstring>::const_reverse_iterator& oNodesRBegin, const std::vector<std::wstring>::const_reverse_iterator& oNodesREnd) const;
std::vector<CElement *> GetPrevElements(const std::vector<std::wstring>::const_iterator& oNodesBegin, const std::vector<std::wstring>::const_iterator& oNodesEnd) const;
std::map<std::wstring, std::wstring> GetConvertStyle(const std::vector<CNode>& arNodes) const;
CElement *FindPrevElement(const std::wstring& sSelector) const;

View File

@ -1,19 +1,74 @@
#include "CNode.h"
#ifdef CSS_CALCULATOR_WITH_XHTML
#include "CCompiledStyle.h"
#endif
namespace NSCSS
{
CNode::CNode()
#ifdef CSS_CALCULATOR_WITH_XHTML
: m_pCompiledStyle(new CCompiledStyle())
#endif
{}
CNode::CNode(const CNode& oNode)
: m_wsName(oNode.m_wsName), m_wsClass(oNode.m_wsClass), m_wsId(oNode.m_wsId),
m_wsStyle(oNode.m_wsStyle), m_mAttributes(oNode.m_mAttributes)
{
#ifdef CSS_CALCULATOR_WITH_XHTML
m_pCompiledStyle = new CCompiledStyle(*oNode.m_pCompiledStyle);
#endif
}
CNode::CNode(const std::wstring& wsName, const std::wstring& wsClass, const std::wstring& wsId)
: m_wsName(wsName), m_wsClass(wsClass), m_wsId(wsId)
#ifdef CSS_CALCULATOR_WITH_XHTML
, m_pCompiledStyle(new CCompiledStyle())
#endif
{}
CNode::~CNode()
{
#ifdef CSS_CALCULATOR_WITH_XHTML
if (nullptr != m_pCompiledStyle)
delete m_pCompiledStyle;
#endif
}
bool CNode::Empty() const
{
return m_wsName.empty() && m_wsClass.empty() && m_wsId.empty() && m_wsStyle.empty();
}
bool CNode::GetAttributeValue(const std::wstring& wsAttributeName, std::wstring& wsAttributeValue) const
{
const std::map<std::wstring, std::wstring>::const_iterator itFound{m_mAttributes.find(wsAttributeName)};
if (m_mAttributes.cend() == itFound)
return false;
wsAttributeValue = itFound->second;
return true;
}
std::wstring CNode::GetAttributeValue(const std::wstring& wsAttributeName) const
{
const std::map<std::wstring, std::wstring>::const_iterator itFound{m_mAttributes.find(wsAttributeName)};
return (m_mAttributes.cend() != itFound) ? itFound->second : std::wstring();
}
#ifdef CSS_CALCULATOR_WITH_XHTML
void CNode::SetCompiledStyle(CCompiledStyle* pCompiledStyle)
{
if (nullptr != m_pCompiledStyle)
delete m_pCompiledStyle;
m_pCompiledStyle = new CCompiledStyle();
*m_pCompiledStyle = *pCompiledStyle;
}
#endif
void CNode::Clear()
{
m_wsName .clear();
@ -47,6 +102,9 @@ namespace NSCSS
if(m_wsStyle != oNode.m_wsStyle)
return m_wsStyle < oNode.m_wsStyle;
if (m_mAttributes.size() != oNode.m_mAttributes.size())
return m_mAttributes.size() < oNode.m_mAttributes.size();
if (m_mAttributes != oNode.m_mAttributes)
return m_mAttributes < oNode.m_mAttributes;
@ -55,10 +113,9 @@ namespace NSCSS
bool CNode::operator==(const CNode& oNode) const
{
return((m_wsId == oNode.m_wsId) &&
(m_wsName == oNode.m_wsName) &&
(m_wsClass == oNode.m_wsClass) &&
(m_wsStyle == oNode.m_wsStyle) &&
(m_mAttributes == oNode.m_mAttributes));
return((m_wsName == oNode.m_wsName) &&
(m_wsClass == oNode.m_wsClass) &&
(m_wsStyle == oNode.m_wsStyle) &&
(m_mAttributes == oNode.m_mAttributes));
}
}

View File

@ -7,21 +7,37 @@
namespace NSCSS
{
#ifdef CSS_CALCULATOR_WITH_XHTML
class CCompiledStyle;
#endif
class CNode
{
public:
std::wstring m_wsName; // Имя тэга
std::wstring m_wsClass; // Класс тэга
std::wstring m_wsId; // Id тэга
std::wstring m_wsStyle; // Стиль тэга
std::map<std::wstring, std::wstring> m_mAttributes; // Остальные аттрибуты тэга
std::wstring m_wsName; // Tag name
std::wstring m_wsClass; // Tag class
std::wstring m_wsId; // Tag id
std::wstring m_wsStyle; // Tag style
std::map<std::wstring, std::wstring> m_mAttributes; // Other tag attributes
//TODO:: perhaps using std::wstring is excessive
#ifdef CSS_CALCULATOR_WITH_XHTML
CCompiledStyle *m_pCompiledStyle;
#endif
public:
CNode();
CNode(const CNode& oNode);
CNode(const std::wstring& wsName, const std::wstring& wsClass, const std::wstring& wsId);
~CNode();
bool Empty() const;
bool GetAttributeValue(const std::wstring& wsAttributeName, std::wstring& wsAttributeValue) const;
std::wstring GetAttributeValue(const std::wstring& wsAttributeName) const;
#ifdef CSS_CALCULATOR_WITH_XHTML
void SetCompiledStyle(CCompiledStyle* pCompiledStyle);
#endif
void Clear();
std::vector<std::wstring> GetData() const;

View File

@ -23,7 +23,7 @@ namespace NSCSS
case NSCSS::Inch:
return dValue / (double)ushDPI;
case NSCSS::Peak:
return dValue * 6. / (double)ushDPI; // 1 дюйм = 6 пик
return dValue * 6. / (double)ushDPI; // 1 inch = 6 peak
case NSCSS::Twips:
return dValue * 1440. / (double)ushDPI;
default:
@ -36,17 +36,17 @@ namespace NSCSS
switch (enUnitMeasure)
{
case NSCSS::Point:
return dValue * 28.3465 ; // 1 см = (2.54 / 72) пункта
return dValue * 28.3465 ; // 1 cm = (2.54 / 72) points
case NSCSS::Pixel:
return dValue * (double)ushDPI / 2.54;
case NSCSS::Millimeter:
return dValue * 10.;
case NSCSS::Inch:
return dValue / 2.54; // 1 дюйм = 2.54 см
return dValue / 2.54; // 1 inch = 2.54 cm
case NSCSS::Peak:
return dValue * 2.36; // 2.36 = 6 / 2.54
case NSCSS::Twips:
return dValue * 567.; // 1 см = (1440 / 2.54) твипов
return dValue * 567.; // 1 cm = (1440 / 2.54) twips
default:
return dValue;
}
@ -57,7 +57,7 @@ namespace NSCSS
switch (enUnitMeasure)
{
case NSCSS::Point:
return dValue * 2.8346; // 1 мм = (25.4 / 72) пункта
return dValue * 2.8346; // 1 mm = (25.4 / 72) points
case NSCSS::Pixel:
return dValue * (double)ushDPI / 25.4;
case NSCSS::Cantimeter:
@ -82,7 +82,7 @@ namespace NSCSS
case NSCSS::Pixel:
return dValue * (double)ushDPI;
case NSCSS::Cantimeter:
return dValue * 2.54; // 1 дюйм = 2.54 см
return dValue * 2.54; // 1 inch = 2.54 cm
case NSCSS::Millimeter:
return dValue * 25.4;
case NSCSS::Peak:
@ -105,9 +105,9 @@ namespace NSCSS
case NSCSS::Millimeter:
return dValue * 0.3528;
case NSCSS::Inch:
return dValue / 72.; // 1 дюйм = 72 пункта
return dValue / 72.; // 1 inch = 72 points
case NSCSS::Peak:
return dValue * 0.0833; // 0.0833 = 6 / 72 (1 пункт = 1/72 дюйма)
return dValue * 0.0833; // 0.0833 = 6 / 72 (1 point = 1/72 inch)
case NSCSS::Twips:
return dValue * 20.; // 20 = 1440 / 72
default:
@ -122,7 +122,7 @@ namespace NSCSS
case NSCSS::Point:
return dValue * 12.; // 12 = 72 / 6
case NSCSS::Pixel:
return dValue * (double)ushDPI / 6.; // 1 дюйм = 6 пика
return dValue * (double)ushDPI / 6.; // 1 inch = 6 peak
case NSCSS::Cantimeter:
return dValue * 0.423; // 0.423 = 2.54 / 6
case NSCSS::Millimeter:
@ -143,13 +143,13 @@ namespace NSCSS
case NSCSS::Point:
return dValue * 0.05; // 0.05 = 72. / 1440.
case NSCSS::Pixel:
return dValue * (double)ushDPI / 1440.; // 1 дюйм = 1440 твипов
return dValue * (double)ushDPI / 1440.; // 1 inch = 1440 twips
case NSCSS::Cantimeter:
return dValue * 0.001764; // 0.001764 = 2.54 / 1440
case NSCSS::Millimeter:
return dValue * 0.01764;
case NSCSS::Inch:
return dValue * 1440.;
return dValue / 1440.;
case NSCSS::Peak:
return dValue * 0.004167; // 0.004167 = 6 / 1440
default:

View File

@ -69,7 +69,10 @@ namespace NSCSS
R_Highlight,
R_Shd,
R_SmallCaps,
R_Kern
R_Kern,
R_Vanish,
R_Strike,
R_VertAlign
} RunnerProperties;
typedef enum

View File

@ -16,14 +16,14 @@ namespace NS_STATIC_FUNCTIONS
std::string GetContentAsUTF8(const std::wstring& sFileName)
{
std::string sContent;
// читаем файл как есть. utf-8 тут просто название.
// read file as-is. utf-8 here is just a name.
if(!NSFile::CFileBinary::ReadAllTextUtf8A(sFileName, sContent))
return sContent;
std::string sEncoding;
if (true)
{
// определяем кодировку
//determining the encoding
const std::string::size_type& posCharset = sContent.find("@charset");
if (std::string::npos != posCharset)

File diff suppressed because it is too large Load Diff

View File

@ -4,11 +4,14 @@
#include <map>
#include <string>
#include <vector>
#include <sstream>
#include "../../../../DesktopEditor/graphics/Matrix.h"
#include "CUnitMeasureConverter.h"
#include <boost/optional.hpp>
#include "boost/blank.hpp"
#include <boost/variant2/variant.hpp>
namespace NSCSS
{
namespace NSProperties
@ -16,33 +19,34 @@ namespace NSCSS
#define NEXT_LEVEL UINT_MAX, true
template<typename T>
class CValue
class CValueBase
{
friend class CString;
friend class CMatrix;
friend class CDigit;
friend class CColor;
friend class CEnum;
friend class CURL;
protected:
CValueBase()
: m_unLevel(0), m_bImportant(false)
{}
CValueBase(const CValueBase& oValue)
: m_oValue(oValue.m_oValue), m_unLevel(oValue.m_unLevel), m_bImportant(oValue.m_bImportant)
{}
CValueBase(const T& oValue, unsigned int unLevel, bool bImportant)
: m_oValue(oValue), m_unLevel(unLevel), m_bImportant(bImportant)
{}
T m_oValue;
unsigned int m_unLevel;
bool m_bImportant;
public:
CValue(const T& oValue, unsigned int unLevel, bool bImportant) :
m_oValue(oValue), m_unLevel(unLevel), m_bImportant(bImportant)
{
}
virtual bool Empty() const = 0;
virtual void Clear() = 0;
virtual bool SetValue(const std::wstring& wsValue, unsigned int unLevel, bool bHardMode) = 0;
virtual bool Empty() const = 0;
virtual void Clear() = 0;
virtual int ToInt() const = 0;
virtual double ToDouble() const = 0;
virtual std::wstring ToWString() const = 0;
static void Equation(CValue &oFirstValue, CValue &oSecondValue)
static void Equation(CValueBase &oFirstValue, CValueBase &oSecondValue)
{
if (oFirstValue.m_bImportant && !oSecondValue.m_bImportant && oFirstValue.Empty())
oSecondValue.Clear();
@ -57,18 +61,39 @@ namespace NSCSS
}
}
static bool LevelIsSame(const CValue& oFirstValue, const CValue& oSecondValue)
static bool LevelIsSame(const CValueBase& oFirstValue, const CValueBase& oSecondValue)
{
return oFirstValue.m_unLevel == oSecondValue.m_unLevel;
}
bool operator==(const T& oValue) const { return m_oValue == oValue; }
bool operator>=(const T& oValue) const { return m_oValue >= oValue; }
bool operator<=(const T& oValue) const { return m_oValue <= oValue; }
bool operator> (const T& oValue) const { return m_oValue > oValue; }
bool operator< (const T& oValue) const { return m_oValue < oValue; }
friend bool operator==(const CValueBase& oLeftValue, const CValueBase& oRightValue)
{
if (oLeftValue.Empty() && oRightValue.Empty())
return true;
virtual CValue& operator =(const CValue& oValue)
if (( oLeftValue.Empty() && !oRightValue.Empty()) ||
(!oLeftValue.Empty() && oRightValue.Empty()))
return false;
return oLeftValue.m_oValue == oRightValue.m_oValue;
}
friend bool operator!=(const CValueBase& oLeftValue, const CValueBase& oRightValue)
{
return !(oLeftValue == oRightValue);
}
bool operator==(const T& oValue) const
{
return m_oValue == oValue;
}
bool operator!=(const T& oValue) const
{
return m_oValue != oValue;
}
virtual CValueBase& operator =(const CValueBase& oValue)
{
m_oValue = oValue.m_oValue;
m_unLevel = oValue.m_unLevel;
@ -77,70 +102,98 @@ namespace NSCSS
return *this;
}
virtual CValue& operator =(const T& oValue)
virtual CValueBase& operator =(const T& oValue)
{
//m_oValue = oValue.m_oValue;
m_oValue = oValue;
return *this;
}
virtual CValue& operator+=(const CValue& oValue)
virtual CValueBase& operator+=(const CValueBase& oValue)
{
if (m_unLevel > oValue.m_unLevel || (m_bImportant && !oValue.m_bImportant) || oValue.Empty())
return *this;
m_oValue = oValue.m_oValue;
m_unLevel = oValue.m_unLevel;
m_bImportant = oValue.m_bImportant;
*this = oValue;
return *this;
}
virtual bool operator==(const CValue& oValue) const
bool LessSignificantThen(const CValueBase& oValue) const
{
return m_oValue == oValue.m_oValue;
}
virtual bool operator!=(const CValue& oValue) const
{
return m_oValue != oValue.m_oValue;
return oValue.m_unLevel >= m_unLevel && (!m_bImportant || oValue.m_bImportant) && !oValue.Empty();
}
};
class CString : public CValue<std::wstring>
template<typename T>
class CValueOptional : public CValueBase<boost::optional<T>>
{
protected:
CValueOptional() = default;
CValueOptional(const T& oValue, unsigned int unLevel = 0, bool bImportant = false)
: CValueBase<boost::optional<T>>(oValue, unLevel, bImportant)
{}
public:
virtual bool Empty() const override
{
return !this->m_oValue.has_value();
}
void Clear() override
{
this->m_oValue.reset();
this->m_unLevel = 0;
this->m_bImportant = false;
}
bool operator==(const T& oValue) const
{
if (!this->m_oValue.has_value())
return false;
return this->m_oValue.value() == oValue;
}
virtual CValueOptional& operator=(const T& oValue)
{
this->m_oValue = oValue;
return *this;
}
};
class CString : public CValueOptional<std::wstring>
{
public:
CString();
CString(const std::wstring& wsValue, unsigned int unLevel, bool bImportant = false);
CString() = default;
CString(const std::wstring& wsValue, unsigned int unLevel = 0, bool bImportant = false);
bool SetValue(const std::wstring& wsValue, unsigned int unLevel, bool bHardMode) override;
bool SetValue(const std::wstring& wsValue, const std::vector<std::wstring>& arValiableValues, unsigned int unLevel, bool bHardMode);
bool SetValue(const std::wstring& wsValue, const std::map<std::wstring, std::wstring>& arValiableValues, unsigned int unLevel, bool bHardMode);
bool Empty() const override;
void Clear() override;
int ToInt() const override;
double ToDouble() const override;
std::wstring ToWString() const override;
CString& operator+=(const CString& oString);
bool operator==(const wchar_t* pValue) const;
bool operator!=(const wchar_t* pValue) const;
using CValueOptional<std::wstring>::operator=;
};
class CDigit : public CValue<double>
class CDigit : public CValueOptional<double>
{
UnitMeasure m_enUnitMeasure;
double ConvertValue(double dPrevValue, UnitMeasure enUnitMeasure) const;
public:
CDigit();
CDigit(double dValue);
CDigit(double dValue, unsigned int unLevel, bool bImportant = false);
CDigit(const double& dValue, unsigned int unLevel = 0, bool bImportant = false);
bool SetValue(const std::wstring& wsValue, unsigned int unLevel = 0, bool bHardMode = true) override;
bool SetValue(const CDigit& oValue);
bool SetValue(const double& dValue, unsigned int unLevel, bool bHardMode);
bool SetValue(const double& dValue, UnitMeasure enUnitMeasure, unsigned int unLevel = 0, bool bHardMode = true);
bool Empty() const override;
bool Zero() const;
void Clear() override;
@ -156,7 +209,7 @@ namespace NSCSS
UnitMeasure GetUnitMeasure() const;
bool operator==(const double& oValue) const;
bool operator==(const double& dValue) const;
bool operator==(const CDigit& oDigit) const;
bool operator!=(const double& oValue) const;
@ -171,11 +224,19 @@ namespace NSCSS
CDigit& operator+=(const CDigit& oDigit);
CDigit& operator-=(const CDigit& oDigit);
CDigit& operator+=(double dValue);
CDigit& operator-=(double dValue);
CDigit& operator*=(double dValue);
CDigit& operator/=(double dValue);
CDigit& operator =(double dValue);
CDigit& operator+=(const double& dValue);
CDigit& operator-=(const double& dValue);
CDigit& operator*=(const double& dValue);
CDigit& operator/=(const double& dValue);
using CValueOptional<double>::operator=;
private:
UnitMeasure m_enUnitMeasure;
double ConvertValue(double dPrevValue, UnitMeasure enUnitMeasure) const;
template <typename Operation>
CDigit ApplyOperation(const CDigit& oDigit, Operation operation) const;
};
struct TRGB
@ -186,6 +247,8 @@ namespace NSCSS
bool Empty() const;
int ToInt() const;
bool operator==(const TRGB& oRGB) const;
bool operator!=(const TRGB& oRGB) const;
};
@ -211,31 +274,58 @@ namespace NSCSS
typedef enum
{
ColorEmpty,
ColorNone,
ColorRGB,
ColorHEX,
ColorUrl,
ColorContextStroke,
ColorContextFill
} ColorType;
} EColorType;
class CColor : public CValue<void*>
class CColorValue
{
using color_value = boost::variant2::variant<boost::blank, std::wstring, TRGB, CURL>;
protected:
EColorType m_eType;
public:
CColorValue();
CColorValue(const CColorValue& oValue);
CColorValue(const std::wstring& wsValue);
CColorValue(const TRGB& oValue);
CColorValue(const CURL& oValue);
EColorType GetType() const;
bool operator==(const CColorValue& oValue) const;
color_value m_oValue;
};
class CColorValueContextStroke : public CColorValue
{
public:
CColorValueContextStroke();
};
class CColorValueContextFill : public CColorValue
{
public:
CColorValueContextFill();
};
class CColor : public CValueOptional<CColorValue>
{
public:
CColor();
CColor(const CColor& oColor);
~CColor();
bool SetValue(const std::wstring& wsValue, unsigned int unLevel = 0, bool bHardMode = true) override;
bool SetOpacity(const std::wstring& wsValue, unsigned int unLevel = 0, bool bHardMode = true);
bool Empty() const override;
bool None() const;
bool Url() const;
void Clear() override;
ColorType GetType() const;
EColorType GetType() const;
double GetOpacity() const;
@ -249,21 +339,15 @@ namespace NSCSS
static TRGB ConvertHEXtoRGB(const std::wstring& wsValue);
static std::wstring ConvertRGBtoHEX(const TRGB& oValue);
bool operator==(const CColor& oColor) const;
bool operator!=(const CColor& oColor) const;
CColor& operator =(const CColor& oColor);
CColor& operator+=(const CColor& oColor);
using CValueOptional<CColorValue>::operator=;
private:
CDigit m_oOpacity;
ColorType m_enType;
CDigit m_oOpacity;
void SetEmpty(unsigned int unLevel = 0);
void SetRGB(unsigned char uchR, unsigned char uchG, unsigned char uchB);
void SetRGB(const TRGB& oRGB);
void SetHEX(const std::wstring& wsValue);
void SetUrl(const std::wstring& wsValue);
void SetNone();
bool SetUrl(const std::wstring& wsValue);
};
typedef enum
@ -279,7 +363,7 @@ namespace NSCSS
typedef std::vector<std::pair<std::vector<double>, TransformType>> MatrixValues;
class CMatrix : public CValue<MatrixValues>
class CMatrix : public CValueBase<MatrixValues>
{
std::vector<std::wstring> CutTransforms(const std::wstring& wsValue) const;
public:
@ -302,32 +386,41 @@ namespace NSCSS
void ApplyTranform(Aggplus::CMatrix& oMatrix, Aggplus::MatrixOrder order = Aggplus::MatrixOrderPrepend) const;
bool operator==(const CMatrix& oMatrix) const;
CMatrix& operator+=(const CMatrix& oMatrix);
CMatrix& operator-=(const CMatrix& oMatrix);
using CValueBase<MatrixValues>::operator=;
};
class CEnum : public CValue<int>
class CEnum : public CValueOptional<int>
{
std::map<std::wstring, int> m_mMap;
public:
CEnum();
bool SetValue(const std::wstring& wsValue, unsigned int unLevel, bool bHardMode) override;
void SetMapping(const std::map<std::wstring, int>& mMap, int nDefaulvalue = -1);
bool Empty() const override;
void Clear() override;
CEnum &operator =(int nValue);
bool operator==(int nValue) const;
bool operator!=(int nValue) const;
int ToInt() const override;
using CValueOptional<int>::operator=;
private:
double ToDouble() const override;
std::wstring ToWString() const override;
int m_nDefaultValue;
std::map<std::wstring, int> m_mMap;
};
// PROPERTIES
typedef enum
{
Normal,
Nowrap,
Pre,
Pre_Line,
Pre_Wrap
} EWhiteSpace;
class CDisplay
{
public:
@ -347,6 +440,8 @@ namespace NSCSS
bool SetDisplay(const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
bool SetWhiteSpace(const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
const CDigit& GetX() const;
const CDigit& GetY() const;
const CDigit& GetWidth() const;
@ -357,7 +452,10 @@ namespace NSCSS
const CString& GetDisplay() const;
const CEnum& GetWhiteSpace() const;
bool Empty() const;
void Clear();
CDisplay& operator+=(const CDisplay& oDisplay);
bool operator==(const CDisplay& oDisplay) const;
@ -371,6 +469,8 @@ namespace NSCSS
CString m_oVAlign;
CString m_oDisplay;
CEnum m_eWhiteSpace;
};
class CStroke
@ -457,7 +557,7 @@ namespace NSCSS
bool SetValue(const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
bool SetWidth(const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
bool SetWidth(const double& dValue, unsigned int unLevel, bool bHardMode = false);
bool SetWidth(const double& dValue, UnitMeasure enUnitMeasure, unsigned int unLevel, bool bHardMode = false);
bool SetStyle(const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
bool SetColor(const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
@ -509,7 +609,7 @@ namespace NSCSS
bool SetSides(const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
bool SetWidth(const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
bool SetWidth(const double& dValue, unsigned int unLevel, bool bHardMode = false);
bool SetWidth(const double& dValue, UnitMeasure enUnitMeasure, unsigned int unLevel, bool bHardMode = false);
bool SetStyle(const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
bool SetColor(const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
bool SetCollapse(const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
@ -517,28 +617,28 @@ namespace NSCSS
//Left Side
bool SetLeftSide (const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
bool SetWidthLeftSide (const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
bool SetWidthLeftSide (const double& dValue, unsigned int unLevel, bool bHardMode = false);
bool SetWidthLeftSide (const double& dValue, UnitMeasure enUnitMeasure, unsigned int unLevel, bool bHardMode = false);
bool SetStyleLeftSide (const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
bool SetColorLeftSide (const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
//Top Side
bool SetTopSide (const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
bool SetWidthTopSide (const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
bool SetWidthTopSide (const double& dValue, unsigned int unLevel, bool bHardMode = false);
bool SetWidthTopSide (const double& dValue, UnitMeasure enUnitMeasure, unsigned int unLevel, bool bHardMode = false);
bool SetStyleTopSide (const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
bool SetColorTopSide (const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
//Right Side
bool SetRightSide (const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
bool SetWidthRightSide (const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
bool SetWidthRightSide (const double& dValue, unsigned int unLevel, bool bHardMode = false);
bool SetWidthRightSide (const double& dValue, UnitMeasure enUnitMeasure, unsigned int unLevel, bool bHardMode = false);
bool SetStyleRightSide (const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
bool SetColorRightSide (const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
//Bottom Side
bool SetBottomSide (const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
bool SetWidthBottomSide(const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
bool SetWidthBottomSide(const double& dValue, unsigned int unLevel, bool bHardMode = false);
bool SetWidthBottomSide(const double& dValue, UnitMeasure enUnitMeasure, unsigned int unLevel, bool bHardMode = false);
bool SetStyleBottomSide(const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
bool SetColorBottomSide(const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
@ -601,6 +701,30 @@ namespace NSCSS
bool operator==(const TTextDecoration& oTextDecoration) const;
};
typedef enum
{
Baseline,
Sub,
Super,
Percentage,
Length
} EBaselineShift;
class CBaselineShift
{
CEnum m_eType;
CDigit m_oValue;
public:
CBaselineShift();
bool Empty() const;
EBaselineShift GetType() const;
double GetValue() const;
bool SetValue(const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
};
class CText
{
public:
@ -608,11 +732,12 @@ namespace NSCSS
static void Equation(CText &oFirstText, CText &oSecondText);
bool SetIndent (const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
bool SetAlign (const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
bool SetDecoration(const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
bool SetColor (const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
bool SetHighlight (const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
bool SetIndent (const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
bool SetAlign (const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
bool SetDecoration (const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
bool SetColor (const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
bool SetHighlight (const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
bool SetBaselineShift (const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
const CDigit& GetIndent() const;
const CString& GetAlign() const;
@ -620,6 +745,9 @@ namespace NSCSS
const CColor& GetColor() const;
const CColor& GetHighlight() const;
EBaselineShift GetBaselineShiftType() const;
double GetBaselineShiftValue() const;
bool Empty() const;
bool Underline() const;
@ -629,6 +757,7 @@ namespace NSCSS
CText& operator+=(const CText& oText);
bool operator==(const CText& oText) const;
private:
CBaselineShift m_oBaselineShift;
TTextDecoration m_oDecoration;
CDigit m_oIndent;
CString m_oAlign;
@ -651,13 +780,15 @@ namespace NSCSS
bool SetValues (const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
bool SetTop (const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
bool SetTop (const double& dValue, unsigned int unLevel, bool bHardMode = false);
bool SetRight (const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
bool SetRight (const double& dValue, unsigned int unLevel, bool bHardMode = false);
bool SetBottom (const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
bool SetBottom (const double& dValue, unsigned int unLevel, bool bHardMode = false);
bool SetLeft (const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
bool SetLeft (const double& dValue, unsigned int unLevel, bool bHardMode = false);
bool SetValues (const double& dValue, UnitMeasure enUnitMeasure, unsigned int unLevel, bool bHardMode = false);
bool SetTop (const double& dValue, UnitMeasure enUnitMeasure, unsigned int unLevel, bool bHardMode = false);
bool SetRight (const double& dValue, UnitMeasure enUnitMeasure, unsigned int unLevel, bool bHardMode = false);
bool SetBottom (const double& dValue, UnitMeasure enUnitMeasure, unsigned int unLevel, bool bHardMode = false);
bool SetLeft (const double& dValue, UnitMeasure enUnitMeasure, unsigned int unLevel, bool bHardMode = false);
void UpdateAll (const double& dParentFontSize, const double& dCoreFontSize);
void UpdateTop (const double& dParentFontSize, const double& dCoreFontSize);
@ -670,6 +801,9 @@ namespace NSCSS
const CDigit& GetBottom() const;
const CDigit& GetLeft () const;
bool GetAfterAutospacing () const;
bool GetBeforeAutospacing() const;
bool Empty() const;
bool Zero() const;
@ -697,7 +831,7 @@ namespace NSCSS
bool SetValue (const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
bool SetSize (const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
bool SetSize (const double& dValue, unsigned int unLevel, bool bHardMode = false);
bool SetSize (const double& dValue, UnitMeasure enUnitMeasure, unsigned int unLevel, bool bHardMode = false);
bool SetLineHeight (const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
bool SetFamily (const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
bool SetStretch (const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
@ -730,7 +864,7 @@ namespace NSCSS
CDigit m_oSize;
CDigit m_oLineHeight;
CString m_oFamily;
//TODO:: возможно стоит перейти в слудующих переменных на enum
//TODO:: perhaps should switch to enum for the following variables
CString m_oStretch;
CString m_oStyle;
CString m_oVariant;
@ -747,6 +881,12 @@ namespace NSCSS
bool SetFooter (const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
bool SetHeader (const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
bool SetWidth (const double& dValue, UnitMeasure enUnitMeasure, unsigned int unLevel, bool bHardMode = false);
bool SetHeight (const double& dValue, UnitMeasure enUnitMeasure, unsigned int unLevel, bool bHardMode = false);
bool SetMargin (const double& dValue, UnitMeasure enUnitMeasure, unsigned int unLevel, bool bHardMode = false);
bool SetFooter (const double& dValue, UnitMeasure enUnitMeasure, unsigned int unLevel, bool bHardMode = false);
bool SetHeader (const double& dValue, UnitMeasure enUnitMeasure, unsigned int unLevel, bool bHardMode = false);
const CDigit& GetWidth() const;
const CDigit& GetHeight() const;
const CIndent& GetMargin() const;

View File

@ -1,6 +1,5 @@
#include "CDocumentStyle.h"
#include <iostream>
#include <unordered_set>
#include <wchar.h>
#include <math.h>
@ -9,7 +8,7 @@
#include <list>
#define DEFAULT_LINEHEIGHT 240
#define LINEHEIGHTSCALE 10 // Значение LineHeight в OOXML должно быть в 10 раз больше чем указано в стиле
#define LINEHEIGHTSCALE 10 // LineHeight value in OOXML must be 10 times larger than specified in style
#define VALUE_TO_INT(value, unit_measure) \
(NSCSS::UnitMeasure::None != value.GetUnitMeasure()) ? \
@ -22,10 +21,15 @@ namespace NSCSS
: m_oStyle(oStyle), m_bIsPStyle(bIsPStyle)
{}
bool CheckArrays(const std::vector<std::wstring>& arInitial, const std::set<std::wstring>& arFirst, const std::set<std::wstring>& arSecond)
void CStyleUsed::SetFinalId(const std::wstring& wsFinalId)
{
m_wsFinalId = wsFinalId;
}
bool CheckArrays(const std::vector<std::wstring>& arInitial, const std::set<std::wstring>& arFirst, const std::set<std::wstring>& arSecond)
{
std::unordered_set<std::wstring> arInitialSet(arInitial.begin(), arInitial.end());
std::vector<std::wstring> arCommonElements1;
std::vector<std::wstring> arCommonElements2;
@ -57,19 +61,14 @@ namespace NSCSS
m_oStyle == oUsedStyle.m_oStyle;
}
std::wstring CStyleUsed::getId()
std::wstring CStyleUsed::GetId() const
{
if (m_bIsPStyle)
return m_oStyle.GetId();
return m_oStyle.GetId() + L"-c";
return m_wsFinalId;
}
CDocumentStyle::CDocumentStyle() : m_arStandardStyles(Names_Standard_Styles)
{
for (const std::wstring& oNameStandardStyle : Names_Standard_Styles)
m_arStandardStyles.push_back(oNameStandardStyle + L"-c");
}
CDocumentStyle::CDocumentStyle()
: m_arStandardStyles(Names_Standard_Styles)
{}
CDocumentStyle::~CDocumentStyle()
{
@ -85,7 +84,7 @@ namespace NSCSS
std::wstring CDocumentStyle::GetIdAndClear()
{
std::wstring sId = m_sId;
const std::wstring sId = m_sId;
Clear();
return sId;
}
@ -110,10 +109,10 @@ namespace NSCSS
m_sId = sId;
}
void CDocumentStyle::CombineStandardStyles(const std::vector<std::wstring>& arStandartedStyles, CXmlElement& oElement)
bool CDocumentStyle::CombineStandardStyles(const std::vector<std::wstring>& arStandartedStyles, CXmlElement& oElement)
{
if (arStandartedStyles.empty())
return;
return false;
std::vector<std::wstring> arStyles;
for (const std::wstring& sStyleName : arStandartedStyles)
@ -123,7 +122,7 @@ namespace NSCSS
}
if (arStyles.empty())
return;
return false;
std::wstring sId;
for (std::vector<std::wstring>::const_reverse_iterator iStyleName = arStyles.rbegin(); iStyleName != arStyles.rend(); ++iStyleName)
@ -142,18 +141,25 @@ namespace NSCSS
oElement.AddBasicProperties(BProperties::B_Name, sId);
oElement.AddBasicProperties(BProperties::B_StyleId, sId);
return true;
}
void CDocumentStyle::CreateStandardStyle(const std::wstring& sNameStyle, CXmlElement& oElement)
bool CDocumentStyle::CreateStandardStyle(const std::wstring& sNameStyle, CXmlElement& oElement)
{
if (std::find(m_arStandardStyles.begin(), m_arStandardStyles.end(), sNameStyle) != m_arStandardStyles.end())
{
oElement.CreateDefaultElement(sNameStyle);
return true;
}
return false;
}
void CDocumentStyle::ConvertStyle(const NSCSS::CCompiledStyle& oStyle, CXmlElement& oElement, bool bIsPStyle)
bool CDocumentStyle::ConvertStyle(const NSCSS::CCompiledStyle& oStyle, CXmlElement& oElement, bool bIsPStyle)
{
if (oStyle.GetId().empty())
return;
return false;
std::wstring sName = oStyle.GetId();
const size_t posPoint = sName.find(L'.');
@ -183,25 +189,25 @@ namespace NSCSS
for (std::wstring& sParentName : arParentsName)
sParentName += L"-c";
bool bResult{false};
if (!arParentsName.empty())
{
CombineStandardStyles(arParentsName, oParentStyle);
bResult = CombineStandardStyles(arParentsName, oParentStyle);
if (!oParentStyle.Empty())
{
oParentStyle.AddBasicProperties(BProperties::B_BasedOn, L"normal");
oParentStyle.AddBasicProperties(BProperties::B_StyleId, L"(" + oParentStyle.GetStyleId() + L")");
oParentStyle.AddBasicProperties(BProperties::B_StyleId, oParentStyle.GetStyleId());
if (!bIsPStyle)
{
oParentStyle.AddBasicProperties(BProperties::B_StyleId, oParentStyle.GetStyleId() + L"-c");
oParentStyle.AddBasicProperties(BProperties::B_Type, L"character");
}
}
}
CXmlElement oStandardXmlElement;
if (std::find(m_arStandardStyles.begin(), m_arStandardStyles.end(), sName) != m_arStandardStyles.end())
CreateStandardStyle(sName, oStandardXmlElement);
if (CreateStandardStyle(sName, oStandardXmlElement))
bResult = true;
if (oStandardXmlElement.Empty() && !oParentStyle.Empty())
{
@ -221,7 +227,7 @@ namespace NSCSS
if (oStyle.Empty())
{
m_sId = sParentsStyleID;
return;
return true;
}
oElement.AddBasicProperties(BProperties::B_BasedOn, sParentsStyleID);
@ -234,7 +240,7 @@ namespace NSCSS
if (oStyle.Empty())
{
m_sId = sStandPlusParent;
return;
return true;
}
oElement.AddBasicProperties(BProperties::B_BasedOn, sStandPlusParent);
}
@ -258,7 +264,7 @@ namespace NSCSS
if (oStyle.Empty())
{
m_sId = sStandPlusParent;
return;
return true;
}
oElement.AddBasicProperties(BProperties::B_BasedOn, oTempElement.GetStyleId());
}
@ -281,7 +287,7 @@ namespace NSCSS
if (oStyle.Empty())
{
m_sId = sStandartStyleID;
return;
return true;
}
oElement.AddBasicProperties(BProperties::B_BasedOn, sStandartStyleID);
}
@ -289,7 +295,7 @@ namespace NSCSS
if (oStyle.Empty() && oElement.Empty())
{
m_sId = L"normal";
return;
return true;
}
m_sId = oStyle.GetId();
@ -302,15 +308,19 @@ namespace NSCSS
oElement.AddBasicProperties(BProperties::B_Name, m_sId);
oElement.AddBasicProperties(BProperties::B_Type, bIsPStyle ? L"paragraph" : L"character");
oElement.AddBasicProperties(BProperties::B_CustomStyle, L"1");
return bResult;
}
void CDocumentStyle::SetPStyle (const NSCSS::CCompiledStyle& oStyle, CXmlElement& oXmlElement, bool bIsLite)
bool CDocumentStyle::SetPStyle(const NSCSS::CCompiledStyle& oStyle, CXmlElement& oXmlElement, bool bIsLite)
{
bool bResult{false};
if (!bIsLite)
ConvertStyle(oStyle, oXmlElement, true);
bResult = ConvertStyle(oStyle, oXmlElement, true);
if (oStyle.Empty())
return;
return bResult;
const bool bInTable{oStyle.HaveThisParent(L"table")};
@ -341,14 +351,14 @@ namespace NSCSS
sSpacingValue.reserve(128);
if (!oStyle.m_oMargin.GetTop().Empty() && !oStyle.m_oMargin.GetTop().Zero())
sSpacingValue += L"w:before=\"" + std::to_wstring(VALUE_TO_INT(oStyle.m_oMargin.GetTop(), NSCSS::Twips)) + L"\" w:beforeAutospacing=\"0\"";
sSpacingValue += L"w:before=\"" + std::to_wstring(VALUE_TO_INT(oStyle.m_oMargin.GetTop(), NSCSS::Twips)) + L"\" w:beforeAutospacing=\"1\"";
else if (oStyle.m_oMargin.GetBottom().Zero() || bInTable)
sSpacingValue += L"w:before=\"0\" w:beforeAutospacing=\"0\"";
sSpacingValue += L"w:before=\"0\" w:beforeAutospacing=\"1\"";
if (!oStyle.m_oMargin.GetBottom().Empty() && !oStyle.m_oMargin.GetBottom().Zero())
sSpacingValue += L" w:after=\"" + std::to_wstring(VALUE_TO_INT(oStyle.m_oMargin.GetBottom(), NSCSS::Twips)) + L"\" w:afterAutospacing=\"0\"";
sSpacingValue += L" w:after=\"" + std::to_wstring(VALUE_TO_INT(oStyle.m_oMargin.GetBottom(), NSCSS::Twips)) + L"\" w:afterAutospacing=\"1\"";
else if (oStyle.m_oMargin.GetBottom().Zero() || bInTable)
sSpacingValue += L" w:after=\"0\" w:afterAutospacing=\"0\"";
sSpacingValue += L" w:after=\"0\" w:afterAutospacing=\"1\"";
if (!oStyle.m_oFont.GetLineHeight().Empty() && !oStyle.m_oFont.GetLineHeight().Zero())
{
@ -390,6 +400,8 @@ namespace NSCSS
SetBorderStyle(oStyle, oXmlElement, PProperties::P_LeftBorder);
}
}
return bResult || !oXmlElement.Empty();
}
void CDocumentStyle::SetBorderStyle(const CCompiledStyle &oStyle, CXmlElement &oXmlElement, const PProperties &enBorderProperty)
@ -441,7 +453,7 @@ namespace NSCSS
int nWidth = static_cast<int>(std::round(oBorder.GetWidth().ToDouble(Point) * 8.));
if (L"double" == wsStyle)
nWidth /= 3; // в ooxml double граница формируется из трёх линий
nWidth /= 3; // in ooxml double border is formed from three lines
if (nWidth <= 3)
nWidth = 2;
@ -470,22 +482,21 @@ namespace NSCSS
int nSpace{0};
if (NULL != pPadding && !pPadding->Empty() && !pPadding->Zero())
nSpace = pPadding->ToInt(NSCSS::Point);
return L"w:val=\"" + wsStyle + L"\" w:sz=\"" + std::to_wstring(nWidth) + + L"\" w:space=\"" + std::to_wstring(nSpace) + L"\" w:color=\"" + wsColor + L"\"";
}
void CDocumentStyle::SetRStyle(const NSCSS::CCompiledStyle& oStyle, CXmlElement& oXmlElement, bool bIsLite)
bool CDocumentStyle::SetRStyle(const NSCSS::CCompiledStyle& oStyle, CXmlElement& oXmlElement, bool bIsLite)
{
bool bResult{false};
if (!bIsLite)
ConvertStyle(oStyle, oXmlElement, false);
bResult = ConvertStyle(oStyle, oXmlElement, false);
if (oStyle.Empty() && oXmlElement.Empty())
return;
return bResult;
if (!oStyle.m_oFont.GetSize().Empty())
oXmlElement.AddPropertiesInR(RProperties::R_Sz, std::to_wstring(static_cast<int>(oStyle.m_oFont.GetSize().ToDouble(NSCSS::Point) * 2. * oStyle.m_oTransform.GetMatrix().GetFinalValue().sy() + 0.5))); // Значения шрифта увеличивает на 2
oXmlElement.AddPropertiesInR(RProperties::R_Sz, std::to_wstring(static_cast<int>(oStyle.m_oFont.GetSize().ToDouble(NSCSS::Point) * 2. * oStyle.m_oTransform.GetMatrix().GetFinalValue().sy() + 0.5))); // Font value is multiplied by 2
if (oStyle.m_oText.GetDecoration().m_oLine.Underline())
oXmlElement.AddPropertiesInR(RProperties::R_U, (!oStyle.m_oText.GetDecoration().m_oStyle.Empty()) ? oStyle.m_oText.GetDecoration().m_oStyle.ToWString() : L"single");
@ -512,10 +523,25 @@ namespace NSCSS
else if (L"serif" == wsFontFamily)
wsFontFamily = L"Times New Roman";
if (oStyle.m_oDisplay.GetDisplay() == L"none")
oXmlElement.AddPropertiesInR(RProperties::R_Vanish, L"true");
oXmlElement.AddPropertiesInR(RProperties::R_RFonts, oStyle.m_oFont.GetFamily().ToWString());
oXmlElement.AddPropertiesInR(RProperties::R_I, oStyle.m_oFont.GetStyle().ToWString());
oXmlElement.AddPropertiesInR(RProperties::R_B, oStyle.m_oFont.GetWeight().ToWString());
oXmlElement.AddPropertiesInR(RProperties::R_SmallCaps, oStyle.m_oFont.GetVariant().ToWString());
if (oStyle.m_oText.LineThrough())
{
if (L"double" == oStyle.m_oText.GetDecoration().m_oStyle.ToWString())
oXmlElement.AddPropertiesInR(RProperties::R_Strike, L"dstrike");
else
oXmlElement.AddPropertiesInR(RProperties::R_Strike, L"strike");
}
oXmlElement.AddPropertiesInR(RProperties::R_VertAlign, oStyle.m_oDisplay.GetVAlign().ToWString());
return bResult || !oXmlElement.Empty();
}
bool CDocumentStyle::WriteRStyle(const NSCSS::CCompiledStyle& oStyle)
@ -531,16 +557,16 @@ namespace NSCSS
if (oItem != m_arStyleUsed.end())
{
m_sId = (*oItem).getId();
m_sId = (*oItem).GetId();
return true;
}
CXmlElement oXmlElement;
SetRStyle(oStyle, oXmlElement);
if (oXmlElement.Empty())
if (!SetRStyle(oStyle, oXmlElement))
return false;
structStyle.SetFinalId(m_sId);
m_arStyleUsed.push_back(structStyle);
m_sStyle += oXmlElement.GetRStyle();
@ -559,7 +585,7 @@ namespace NSCSS
if (oXmlElement.Empty())
return false;
m_sStyle += oXmlElement.GetPStyle(true);
return true;
}
@ -593,16 +619,16 @@ namespace NSCSS
if (oItem != m_arStyleUsed.end())
{
m_sId = (*oItem).getId();
m_sId = (*oItem).GetId();
return true;
}
CXmlElement oXmlElement;
SetPStyle(oStyle, oXmlElement);
if (oXmlElement.Empty())
if (!SetPStyle(oStyle, oXmlElement))
return false;
structStyle.SetFinalId(m_sId);
m_arStyleUsed.push_back(structStyle);
m_sStyle += oXmlElement.GetPStyle();

View File

@ -12,16 +12,19 @@ namespace NSCSS
{
CCompiledStyle m_oStyle;
bool m_bIsPStyle;
std::wstring m_wsFinalId;
public:
CStyleUsed(const CCompiledStyle& oStyle, bool bIsPStyle);
void SetFinalId(const std::wstring& wsFinalId);
bool operator==(const CStyleUsed& oUsedStyle) const;
std::wstring getId();
std::wstring GetId() const;
};
static const std::vector<std::wstring> Names_Standard_Styles = {L"a", L"li", L"h1", L"h2", L"h3", L"h4", L"h5", L"h6",L"p", L"div"};
static const std::vector<std::wstring> Names_Standard_Styles = {L"a", L"a-c", L"li", L"h1", L"h2", L"h3", L"h4", L"h5", L"h6", L"h1-c", L"h2-c", L"h3-c", L"h4-c", L"h5-c", L"h6-c"};
class CSSCALCULATOR_EXPORT CDocumentStyle
{
@ -36,12 +39,12 @@ namespace NSCSS
std::wstring m_sStyle;
std::wstring m_sId;
void CombineStandardStyles(const std::vector<std::wstring>& arStandartedStyles, CXmlElement& oElement);
void CreateStandardStyle (const std::wstring& sNameStyle, CXmlElement& oElement);
void ConvertStyle (const NSCSS::CCompiledStyle& oStyle, CXmlElement& oElement, bool bIsPStyle);
bool CombineStandardStyles(const std::vector<std::wstring>& arStandartedStyles, CXmlElement& oElement);
bool CreateStandardStyle (const std::wstring& sNameStyle, CXmlElement& oElement);
bool ConvertStyle (const NSCSS::CCompiledStyle& oStyle, CXmlElement& oElement, bool bIsPStyle);
void SetRStyle(const NSCSS::CCompiledStyle& oStyle, CXmlElement& oXmlElement, bool bIsLite = false);
void SetPStyle(const NSCSS::CCompiledStyle& oStyle, CXmlElement& oXmlElement, bool bIsLite = false);
bool SetRStyle(const NSCSS::CCompiledStyle& oStyle, CXmlElement& oXmlElement, bool bIsLite = false);
bool SetPStyle(const NSCSS::CCompiledStyle& oStyle, CXmlElement& oXmlElement, bool bIsLite = false);
void SetBorderStyle(const NSCSS::CCompiledStyle& oStyle, CXmlElement& oXmlElement, const PProperties& enBorderProperty);
public:

View File

@ -5,7 +5,6 @@
#include <cwctype>
#include <functional>
#include <iostream>
#include "../ConstValues.h"
#define DEFAULTFONTNAME L"Times New Roman"
@ -67,7 +66,7 @@ void CXmlElement::CreateDefaultElement(const std::wstring& sNameDefaultElement)
AddBasicProperties(CSSProperties::BasicProperties::B_Link, L"h1-c");
AddPropertiesInP(CSSProperties::ParagraphProperties::P_OutlineLvl, L"0");
// AddPropertiesInP(CSSProperties::ParagraphProperties::P_Spacing, L"w:before=\"100\" w:beforeAutospacing=\"1\" w:after=\"100\" w:afterAutospacing=\"1\"");
AddPropertiesInP(CSSProperties::ParagraphProperties::P_Spacing, L"w:before=\"100\" w:beforeAutospacing=\"1\" w:after=\"100\" w:afterAutospacing=\"1\"");
}
else if (sNameDefaultElement == L"h2")
{
@ -78,7 +77,7 @@ void CXmlElement::CreateDefaultElement(const std::wstring& sNameDefaultElement)
AddBasicProperties(CSSProperties::BasicProperties::B_Link, L"h2-c");
AddPropertiesInP(CSSProperties::ParagraphProperties::P_OutlineLvl, L"1");
// AddPropertiesInP(CSSProperties::ParagraphProperties::P_Spacing, L"w:before=\"100\" w:beforeAutospacing=\"1\" w:after=\"100\" w:afterAutospacing=\"1\"");
AddPropertiesInP(CSSProperties::ParagraphProperties::P_Spacing, L"w:before=\"100\" w:beforeAutospacing=\"1\" w:after=\"100\" w:afterAutospacing=\"1\"");
}
else if (sNameDefaultElement == L"h3")
{
@ -89,7 +88,7 @@ void CXmlElement::CreateDefaultElement(const std::wstring& sNameDefaultElement)
AddBasicProperties(CSSProperties::BasicProperties::B_Link, L"h3-c");
AddPropertiesInP(CSSProperties::ParagraphProperties::P_OutlineLvl, L"2");
// AddPropertiesInP(CSSProperties::ParagraphProperties::P_Spacing, L"w:before=\"100\" w:beforeAutospacing=\"1\" w:after=\"100\" w:afterAutospacing=\"1\"");
AddPropertiesInP(CSSProperties::ParagraphProperties::P_Spacing, L"w:before=\"100\" w:beforeAutospacing=\"1\" w:after=\"100\" w:afterAutospacing=\"1\"");
}
else if (sNameDefaultElement == L"h4")
{
@ -100,7 +99,7 @@ void CXmlElement::CreateDefaultElement(const std::wstring& sNameDefaultElement)
AddBasicProperties(CSSProperties::BasicProperties::B_Link, L"h4-c");
AddPropertiesInP(CSSProperties::ParagraphProperties::P_OutlineLvl, L"3");
// AddPropertiesInP(CSSProperties::ParagraphProperties::P_Spacing, L"w:before=\"100\" w:beforeAutospacing=\"1\" w:after=\"100\" w:afterAutospacing=\"1\"");
AddPropertiesInP(CSSProperties::ParagraphProperties::P_Spacing, L"w:before=\"100\" w:beforeAutospacing=\"1\" w:after=\"100\" w:afterAutospacing=\"1\"");
}
else if (sNameDefaultElement == L"h5")
{
@ -111,7 +110,7 @@ void CXmlElement::CreateDefaultElement(const std::wstring& sNameDefaultElement)
AddBasicProperties(CSSProperties::BasicProperties::B_Link, L"h5-c");
AddPropertiesInP(CSSProperties::ParagraphProperties::P_OutlineLvl, L"4");
// AddPropertiesInP(CSSProperties::ParagraphProperties::P_Spacing, L"w:before=\"100\" w:beforeAutospacing=\"1\" w:after=\"100\" w:afterAutospacing=\"1\"");
AddPropertiesInP(CSSProperties::ParagraphProperties::P_Spacing, L"w:before=\"100\" w:beforeAutospacing=\"1\" w:after=\"100\" w:afterAutospacing=\"1\"");
}
else if (sNameDefaultElement == L"h6")
@ -123,13 +122,13 @@ void CXmlElement::CreateDefaultElement(const std::wstring& sNameDefaultElement)
AddBasicProperties(CSSProperties::BasicProperties::B_Link, L"h6-c");
AddPropertiesInP(CSSProperties::ParagraphProperties::P_OutlineLvl, L"5");
// AddPropertiesInP(CSSProperties::ParagraphProperties::P_Spacing, L"w:before=\"100\" w:beforeAutospacing=\"1\" w:after=\"100\" w:afterAutospacing=\"1\"");
AddPropertiesInP(CSSProperties::ParagraphProperties::P_Spacing, L"w:before=\"100\" w:beforeAutospacing=\"1\" w:after=\"100\" w:afterAutospacing=\"1\"");
}
else if (sNameDefaultElement == L"h1-c")
{
AddBasicProperties(CSSProperties::BasicProperties::B_Type, L"character");
AddBasicProperties(CSSProperties::BasicProperties::B_StyleId, L"h1-c");
AddBasicProperties(CSSProperties::BasicProperties::B_Name, L"Title 1 Sign");
AddBasicProperties(CSSProperties::BasicProperties::B_Name, L"Heading 1 Sign");
AddBasicProperties(CSSProperties::BasicProperties::B_CustomStyle, L"1");
AddBasicProperties(CSSProperties::BasicProperties::B_UiPriority, L"9");
AddBasicProperties(CSSProperties::BasicProperties::B_Link, L"h1");
@ -142,7 +141,7 @@ void CXmlElement::CreateDefaultElement(const std::wstring& sNameDefaultElement)
{
AddBasicProperties(CSSProperties::BasicProperties::B_Type, L"character");
AddBasicProperties(CSSProperties::BasicProperties::B_StyleId, L"h2-c");
AddBasicProperties(CSSProperties::BasicProperties::B_Name, L"Title 2 Sign");
AddBasicProperties(CSSProperties::BasicProperties::B_Name, L"Heading 2 Sign");
AddBasicProperties(CSSProperties::BasicProperties::B_CustomStyle, L"1");
AddBasicProperties(CSSProperties::BasicProperties::B_UiPriority, L"9");
AddBasicProperties(CSSProperties::BasicProperties::B_UnhideWhenUsed, L"true");
@ -155,7 +154,7 @@ void CXmlElement::CreateDefaultElement(const std::wstring& sNameDefaultElement)
{
AddBasicProperties(CSSProperties::BasicProperties::B_Type, L"character");
AddBasicProperties(CSSProperties::BasicProperties::B_StyleId, L"h3-c");
AddBasicProperties(CSSProperties::BasicProperties::B_Name, L"Title 3 Sign");
AddBasicProperties(CSSProperties::BasicProperties::B_Name, L"Heading 3 Sign");
AddBasicProperties(CSSProperties::BasicProperties::B_CustomStyle, L"1");
AddBasicProperties(CSSProperties::BasicProperties::B_UiPriority, L"9");
AddBasicProperties(CSSProperties::BasicProperties::B_UnhideWhenUsed, L"true");
@ -168,7 +167,7 @@ void CXmlElement::CreateDefaultElement(const std::wstring& sNameDefaultElement)
{
AddBasicProperties(CSSProperties::BasicProperties::B_Type, L"character");
AddBasicProperties(CSSProperties::BasicProperties::B_StyleId, L"h4-c");
AddBasicProperties(CSSProperties::BasicProperties::B_Name, L"Title 4 Sign");
AddBasicProperties(CSSProperties::BasicProperties::B_Name, L"Heading 4 Sign");
AddBasicProperties(CSSProperties::BasicProperties::B_CustomStyle, L"1");
AddBasicProperties(CSSProperties::BasicProperties::B_UiPriority, L"9");
AddBasicProperties(CSSProperties::BasicProperties::B_UnhideWhenUsed, L"true");
@ -181,7 +180,7 @@ void CXmlElement::CreateDefaultElement(const std::wstring& sNameDefaultElement)
{
AddBasicProperties(CSSProperties::BasicProperties::B_Type, L"character");
AddBasicProperties(CSSProperties::BasicProperties::B_StyleId, L"h5-c");
AddBasicProperties(CSSProperties::BasicProperties::B_Name, L"Title 5 Sign");
AddBasicProperties(CSSProperties::BasicProperties::B_Name, L"Heading 5 Sign");
AddBasicProperties(CSSProperties::BasicProperties::B_CustomStyle, L"1");
AddBasicProperties(CSSProperties::BasicProperties::B_UiPriority, L"9");
AddBasicProperties(CSSProperties::BasicProperties::B_UnhideWhenUsed, L"true");
@ -194,7 +193,7 @@ void CXmlElement::CreateDefaultElement(const std::wstring& sNameDefaultElement)
{
AddBasicProperties(CSSProperties::BasicProperties::B_Type, L"character");
AddBasicProperties(CSSProperties::BasicProperties::B_StyleId, L"h6-c");
AddBasicProperties(CSSProperties::BasicProperties::B_Name, L"Title 6 Sign");
AddBasicProperties(CSSProperties::BasicProperties::B_Name, L"Heading 6 Sign");
AddBasicProperties(CSSProperties::BasicProperties::B_CustomStyle, L"1");
AddBasicProperties(CSSProperties::BasicProperties::B_UiPriority, L"9");
AddBasicProperties(CSSProperties::BasicProperties::B_UnhideWhenUsed, L"true");
@ -473,6 +472,25 @@ std::wstring CXmlElement::ConvertRStyle(bool bIsLite) const
sRStyle += L"<w:kern w:val=\"" + oItem.second + L"\"/>";
break;
}
case CSSProperties::RunnerProperties::R_Vanish:
{
if (oItem.second == L"true")
sRStyle += L"<w:vanish/>";
break;
}
case CSSProperties::RunnerProperties::R_Strike:
{
sRStyle += L"<w:" + oItem.second + L"/>";
break;
}
case CSSProperties::RunnerProperties::R_VertAlign:
{
if (L"top" == oItem.second)
sRStyle += L"<w:vertAlign w:val=\"superscript\"/>";
else if (L"bottom" == oItem.second)
sRStyle += L"<w:vertAlign w:val=\"subscript\"/>";
break;
}
default:
break;
}

View File

@ -371,10 +371,10 @@ int main(int argc, char *argv[])
}
std::cout << "-----END-----" << std::endl;
// Тесты багов
// Bug tests
/*
// Стандарный katana_parser не считывает @page
// Также, если заккомитить всё, что было до тестов бага, то всё будет крашиться с ошибкой "-1073741819"
// Standard katana_parser doesn't read @page
// Also, if you uncomment everything before bug tests, it will crash with error "-1073741819"
const char* css = "#page{margin:10px; padding:5pt} "
"@page{color:white;}";
@ -382,7 +382,7 @@ int main(int argc, char *argv[])
katana_dump_output(output);
katana_destroy_output(output);
// Из-за того, что стандарный katana_parser не считывает @page, не считывает и CCssCalculator
// Because standard katana_parser doesn't read @page, CCssCalculator doesn't read it either
std::wstring sFilePath = NSFile::GetProcessDirectory() + L"../../../../cssFiles/test.css";
NSCSS::CCssCalculator oCSS;

View File

@ -10,14 +10,14 @@ base_directory = os.getcwd()
if not base.is_dir("gumbo-parser"):
base.cmd("git", ["clone", "https://github.com/google/gumbo-parser.git"])
base.cmd_in_dir("gumbo-parser", "git", ["checkout", "aa91b27b02c0c80c482e24348a457ed7c3c088e0"])
base.cmd_in_dir("gumbo-parser", "git", ["checkout", "aa91b27b02c0c80c482e24348a457ed7c3c088e0", "--quiet"])
# fix gumbo
base.replaceInFile(base_directory + "/gumbo-parser/src/tag.c", "isspace(*c)", "isspace((unsigned char)*c)")
if not base.is_dir("katana-parser"):
base.cmd("git", ["clone", "https://github.com/jasenhuang/katana-parser.git"])
base.cmd_in_dir("katana-parser", "git", ["checkout", "be6df458d4540eee375c513958dcb862a391cdd1"])
base.cmd_in_dir("katana-parser", "git", ["checkout", "be6df458d4540eee375c513958dcb862a391cdd1", "--quiet"])
# fix katana
base.replaceInFileUtf8(base_directory + "/katana-parser/src/tokenizer.c", "static inline bool katana_is_html_space(char c);", "static inline bool2 katana_is_html_space(char c);")

View File

@ -7,4 +7,5 @@ core_windows:INCLUDEPATH += $$PWD/gumbo-parser/visualc/include
HEADERS += $$files($$PWD/gumbo-parser/src/*.h, true) \
$$PWD/htmltoxhtml.h
SOURCES += $$files($$PWD/gumbo-parser/src/*.c, true)
SOURCES += $$files($$PWD/gumbo-parser/src/*.c, true) \
$$PWD/htmltoxhtml.cpp

View File

@ -0,0 +1,657 @@
#include "htmltoxhtml.h"
#include <map>
#include <cctype>
#include <vector>
#include <algorithm>
#include "gumbo-parser/src/gumbo.h"
#include "../../../DesktopEditor/common/File.h"
#include "../../../DesktopEditor/common/Directory.h"
#include "../../../DesktopEditor/common/StringBuilder.h"
#include "../../../UnicodeConverter/UnicodeConverter.h"
#include "../../../HtmlFile2/src/StringFinder.h"
namespace HTML
{
#if defined(CreateDirectory)
#undef CreateDirectory
#endif
static std::string nonbreaking_inline = "|a|abbr|acronym|b|bdo|big|cite|code|dfn|em|font|i|img|kbd|nobr|s|small|span|strike|strong|sub|sup|tt|";
static std::string empty_tags = "|area|base|basefont|bgsound|br|command|col|embed|event-source|frame|hr|image|img|input|keygen|link|menuitem|meta|param|source|spacer|track|wbr|";
static std::string preserve_whitespace = "|pre|textarea|script|style|";
static std::string special_handling = "|html|body|";
static std::string treat_like_inline = "|p|";
static std::vector<std::string> html_tags = {"div","span","a","img","p","h1","h2","h3","h4","h5","h6",
"ul", "ol", "li","td","tr","table","thead","tbody","tfoot","th",
"br","form","input","button","section","nav","header","footer",
"main","figure","figcaption","strong","em","i", "b", "u","pre",
"code","blockquote","hr","script","link","meta","style","title",
"head","body","html","legend","optgroup","option","select","dl",
"dt","dd","time","data","abbr","address","area","base","bdi",
"bdo","cite","col","iframe","video","source","track","textarea",
"label","fieldset","colgroup","del","ins","details","summary",
"dialog","embed","kbd","map","mark","menu","meter","object",
"output","param","progress","q","samp","small","sub","sup","var",
"wbr","acronym","applet","article","aside","audio","basefont",
"bgsound","big","blink","canvas","caption","center","command",
"comment","datalist","dfn","dir","font","frame","frameset",
"hgroup","isindex","keygen","marquee","nobr","noembed","noframes",
"noscript","plaintext","rp","rt","ruby","s","strike","tt","xmp"};
static std::vector<std::string> unchecked_nodes_new = {"svg"};
static void replace_all(std::string& s, const std::string& s1, const std::string& s2)
{
size_t pos = s.find(s1);
while(pos != std::string::npos)
{
s.replace(pos, s1.length(), s2);
pos = s.find(s1, pos + s2.length());
}
}
static bool NodeIsUnprocessed(const std::string& sTagName)
{
return "xml" == sTagName;
}
static bool IsUnckeckedNodes(const std::string& sValue)
{
return unchecked_nodes_new.end() != std::find(unchecked_nodes_new.begin(), unchecked_nodes_new.end(), sValue);
}
static std::string Base64ToString(const std::string& sContent, const std::string& sCharset)
{
std::string sRes;
int nSrcLen = (int)sContent.length();
int nDecodeLen = NSBase64::Base64DecodeGetRequiredLength(nSrcLen);
BYTE* pData = new BYTE[nDecodeLen];
if (TRUE == NSBase64::Base64Decode(sContent.c_str(), nSrcLen, pData, &nDecodeLen))
{
std::wstring sConvert;
if(!sCharset.empty() && NSStringFinder::Equals<std::string>("utf-8", sCharset))
{
NSUnicodeConverter::CUnicodeConverter oConverter;
sConvert = oConverter.toUnicode(reinterpret_cast<char *>(pData), (unsigned)nDecodeLen, sCharset.data());
}
sRes = sConvert.empty() ? std::string(reinterpret_cast<char *>(pData), nDecodeLen) : U_TO_UTF8(sConvert);
}
RELEASEARRAYOBJECTS(pData);
return sRes;
}
static std::string QuotedPrintableDecode(const std::string& sContent, std::string& sCharset)
{
NSStringUtils::CStringBuilderA sRes;
size_t ip = 0;
size_t i = sContent.find('=');
if(i == 0)
{
size_t nIgnore = 12;
std::string charset = sContent.substr(0, nIgnore);
if(charset == "=00=00=FE=FF")
sCharset = "UTF-32BE";
else if(charset == "=FF=FE=00=00")
sCharset = "UTF-32LE";
else if(charset == "=2B=2F=76=38" || charset == "=2B=2F=76=39" ||
charset == "=2B=2F=76=2B" || charset == "=2B=2F=76=2F")
sCharset = "UTF-7";
else if(charset == "=DD=73=66=73")
sCharset = "UTF-EBCDIC";
else if(charset == "=84=31=95=33")
sCharset = "GB-18030";
else
{
nIgnore -= 3;
charset.erase(nIgnore);
if(charset == "=EF=BB=BF")
sCharset = "UTF-8";
else if(charset == "=F7=64=4C")
sCharset = "UTF-1";
else if(charset == "=0E=FE=FF")
sCharset = "SCSU";
else if(charset == "=FB=EE=28")
sCharset = "BOCU-1";
else
{
nIgnore -= 3;
charset.erase(nIgnore);
if(charset == "=FE=FF")
sCharset = "UTF-16BE";
else if(charset == "=FF=FE")
sCharset = "UTF-16LE";
else
nIgnore -= 6;
}
}
ip = nIgnore;
i = sContent.find('=', ip);
}
while(i != std::string::npos && i + 2 < sContent.length())
{
sRes.WriteString(sContent.c_str() + ip, i - ip);
std::string str = sContent.substr(i + 1, 2);
if(str.front() == '\n' || str.front() == '\r')
{
char ch = str[1];
if(ch != '\n' && ch != '\r')
sRes.WriteString(&ch, 1);
}
else
{
char* err;
char ch = (int)strtol(str.data(), &err, 16);
if(*err)
sRes.WriteString('=' + str);
else
sRes.WriteString(&ch, 1);
}
ip = i + 3;
i = sContent.find('=', ip);
}
if(ip != std::string::npos)
sRes.WriteString(sContent.c_str() + ip);
return sRes.GetData();
}
static std::string mhtTohtml(const std::string& sFileContent);
static void ReadMht(const std::string& sMhtContent, std::map<std::string, std::string>& sRes, NSStringUtils::CStringBuilderA& oRes)
{
size_t unContentPosition = 0, unCharsetBegin = 0, unCharsetEnd = std::string::npos;
NSStringFinder::TFoundedData<char> oData;
// Content-Type
oData = NSStringFinder::FindProperty(sMhtContent, "content-type", {":"}, {";", "\\n", "\\r"});
const std::string sContentType{oData.m_sValue};
if (sContentType.empty())
return;
if (NSStringFinder::Equals(sContentType, "multipart/alternative"))
{
oRes.WriteString(mhtTohtml(sMhtContent.substr(oData.m_unEndPosition, sMhtContent.length() - oData.m_unEndPosition)));
return;
}
unContentPosition = std::max(unContentPosition, oData.m_unEndPosition);
unCharsetBegin = oData.m_unEndPosition;
// name
// std::string sName = NSStringFinder::FindProperty(sMhtContent, "name", {"="}, {";", "\\n", "\\r"}, 0, unLastPosition);
// unContentPosition = std::max(unContentPosition, unLastPosition);
// Content-Location
oData = NSStringFinder::FindProperty(sMhtContent, "content-location", {":"}, {";", "\\n", "\\r"});
std::string sContentLocation{oData.m_sValue};
if (!oData.Empty())
unContentPosition = std::max(unContentPosition, oData.m_unEndPosition);
// Content-ID
oData = NSStringFinder::FindProperty(sMhtContent, "content-id", {":"}, {";", "\\n", "\\r"});
std::string sContentID{oData.m_sValue};
if (!oData.Empty())
{
unContentPosition = std::max(unContentPosition, oData.m_unEndPosition);
unCharsetEnd = std::min(unCharsetEnd, oData.m_unBeginPosition);
NSStringFinder::CutInside<std::string>(sContentID, "<", ">");
}
if (sContentLocation.empty() && !sContentID.empty())
sContentLocation = "cid:" + sContentID;
// Content-Transfer-Encoding
oData = NSStringFinder::FindProperty(sMhtContent, "content-transfer-encoding", {":"}, {";", "\\n", "\\r"});
const std::string sContentEncoding{oData.m_sValue};
if (!oData.Empty())
{
unContentPosition = std::max(unContentPosition, oData.m_unEndPosition);
unCharsetEnd = std::min(unCharsetEnd, oData.m_unBeginPosition);
}
// charset
std::string sCharset = "utf-8";
if (std::string::npos != unCharsetEnd && unCharsetBegin < unCharsetEnd)
{
sCharset = NSStringFinder::FindProperty(sMhtContent.substr(unCharsetBegin, unCharsetEnd - unCharsetBegin), "charset", {"="}, {";", "\\n", "\\r"}).m_sValue;
NSStringFinder::CutInside<std::string>(sCharset, "\"");
}
// Content
std::string sContent = sMhtContent.substr(unContentPosition, sMhtContent.length() - unContentPosition);
// std::wstring sExtention = NSFile::GetFileExtention(UTF8_TO_U(sName));
// std::transform(sExtention.begin(), sExtention.end(), sExtention.begin(), tolower);
// Main document
if (NSStringFinder::Equals(sContentType, "multipart/alternative"))
oRes.WriteString(mhtTohtml(sContent));
else if ((NSStringFinder::Find(sContentType, "text") /*&& (sExtention.empty() || NSStringFinder::EqualOf(sExtention, {L"htm", L"html", L"xhtml", L"css"}))*/)
|| (NSStringFinder::Equals(sContentType, "application/octet-stream") && NSStringFinder::Find(sContentLocation, "css")))
{
// Styles are enclosed in <style> tag
const bool bAddTagStyle = NSStringFinder::Equals(sContentType, "text/css") /*|| NSStringFinder::Equals(sExtention, L"css")*/ || NSStringFinder::Find(sContentLocation, "css");
if (bAddTagStyle)
oRes.WriteString("<style>");
if (NSStringFinder::Equals(sContentEncoding, "base64"))
sContent = Base64ToString(sContent, sCharset);
else if (NSStringFinder::EqualOf(sContentEncoding, {"8bit", "7bit"}) || sContentEncoding.empty())
{
if (!NSStringFinder::Equals(sCharset, "utf-8") && !sCharset.empty())
{
NSUnicodeConverter::CUnicodeConverter oConverter;
sContent = U_TO_UTF8(oConverter.toUnicode(sContent, sCharset.data()));
}
}
else if (NSStringFinder::Equals(sContentEncoding, "quoted-printable"))
{
sContent = QuotedPrintableDecode(sContent, sCharset);
if (!NSStringFinder::Equals(sCharset, "utf-8") && !sCharset.empty())
{
NSUnicodeConverter::CUnicodeConverter oConverter;
sContent = U_TO_UTF8(oConverter.toUnicode(sContent, sCharset.data()));
}
}
if (NSStringFinder::Equals(sContentType, "text/html"))
sContent = U_TO_UTF8(htmlToXhtml(sContent, false));
oRes.WriteString(sContent);
if(bAddTagStyle)
oRes.WriteString("</style>");
}
// Images
else if ((NSStringFinder::Find(sContentType, "image") /*|| NSStringFinder::Equals(sExtention, L"gif")*/ || NSStringFinder::Equals(sContentType, "application/octet-stream")) &&
NSStringFinder::Equals(sContentEncoding, "base64"))
{
// if (NSStringFinder::Equals(sExtention, L"ico") || NSStringFinder::Find(sContentType, "ico"))
// sContentType = "image/jpg";
// else if(NSStringFinder::Equals(sExtention, L"gif"))
// sContentType = "image/gif";
int nSrcLen = (int)sContent.length();
int nDecodeLen = NSBase64::Base64DecodeGetRequiredLength(nSrcLen);
BYTE* pData = new BYTE[nDecodeLen];
if (TRUE == NSBase64::Base64Decode(sContent.c_str(), nSrcLen, pData, &nDecodeLen))
sRes.insert(std::make_pair(sContentLocation, "data:" + sContentType + ";base64," + sContent));
RELEASEARRAYOBJECTS(pData);
}
}
static std::string mhtTohtml(const std::string& sFileContent)
{
std::map<std::string, std::string> sRes;
NSStringUtils::CStringBuilderA oRes;
// Search for boundary
NSStringFinder::TFoundedData<char> oData{NSStringFinder::FindProperty(sFileContent, "boundary", {"="}, {"\\r", "\\n", "\""})};
size_t nFound{oData.m_unEndPosition};
std::string sBoundary{oData.m_sValue};
if (sBoundary.empty())
{
size_t nFoundEnd = sFileContent.length();
nFound = 0;
ReadMht(sFileContent.substr(nFound, nFoundEnd), sRes, oRes);
return oRes.GetData();
}
NSStringFinder::CutInside<std::string>(sBoundary, "\"");
size_t nFoundEnd{nFound};
sBoundary = "--" + sBoundary;
size_t nBoundaryLength = sBoundary.length();
nFound = sFileContent.find(sBoundary, nFound) + nBoundaryLength;
// Loop through boundary
while(nFound != std::string::npos)
{
nFoundEnd = sFileContent.find(sBoundary, nFound + nBoundaryLength);
if(nFoundEnd == std::string::npos)
break;
ReadMht(sFileContent.substr(nFound, nFoundEnd - nFound), sRes, oRes);
nFound = sFileContent.find(sBoundary, nFoundEnd);
}
std::string sFile = oRes.GetData();
for(const std::pair<std::string, std::string>& item : sRes)
{
std::string sName = item.first;
size_t found = sFile.find(sName);
size_t sfound = sName.rfind('/');
if(found == std::string::npos && sfound != std::string::npos)
found = sFile.find(sName.erase(0, sfound + 1));
while(found != std::string::npos)
{
size_t fq = sFile.find_last_of("\"\'>=", found);
if (std::string::npos == fq)
break;
char ch = sFile[fq];
if(ch != '\"' && ch != '\'')
fq++;
size_t tq = sFile.find_first_of("\"\'<> ", found) + 1;
if (std::string::npos == tq)
break;
if(sFile[tq] != '\"' && sFile[tq] != '\'')
tq--;
if(ch != '>')
{
std::string is = '\"' + item.second + '\"';
sFile.replace(fq, tq - fq, is);
found = sFile.find(sName, fq + is.length());
}
else
found = sFile.find(sName, tq);
}
}
return sFile;
}
// Replaces entities &,<,> in text
static void substitute_xml_entities_into_text(std::string& text)
{
// replacing & must come first
replace_all(text, "&", "&amp;");
replace_all(text, "<", "&lt;");
replace_all(text, ">", "&gt;");
}
// After running through Gumbo, the values of type "&#1;" are replaced with the corresponding code '0x01'
// Since the attribute value does not use control characters (value <= 0x09),
// then just delete them, otherwise XmlUtils::CXmlLiteReader crashes on them.
// bug#73486
static void remove_control_symbols(std::string& text)
{
std::string::iterator itFound = std::find_if(text.begin(), text.end(), [](unsigned char chValue){ return chValue <= 0x09; });
while (itFound != text.end())
{
itFound = text.erase(itFound);
itFound = std::find_if(itFound, text.end(), [](unsigned char chValue){ return chValue <= 0x09; });
}
}
// Replaces entity " in text
static void substitute_xml_entities_into_attributes(std::string& text)
{
remove_control_symbols(text);
substitute_xml_entities_into_text(text);
replace_all(text, "\"", "&quot;");
}
static std::string handle_unknown_tag(GumboStringPiece* text)
{
if (text->data == NULL)
return "";
GumboStringPiece gsp = *text;
gumbo_tag_from_original_text(&gsp);
std::string sAtr = std::string(gsp.data, gsp.length);
size_t found = sAtr.find_first_of("-'+,./=?;!*#@$_%<>&;\"\'()[]{}");
while(found != std::string::npos)
{
sAtr.erase(found, 1);
found = sAtr.find_first_of("-'+,./=?;!*#@$_%<>&;\"\'()[]{}", found);
}
return sAtr;
}
static std::string get_tag_name(GumboNode* node)
{
std::string tagname = (node->type == GUMBO_NODE_DOCUMENT ? "document" : gumbo_normalized_tagname(node->v.element.tag));
if (tagname.empty())
tagname = handle_unknown_tag(&node->v.element.original_tag);
return tagname;
}
static void build_doctype(GumboNode* node, NSStringUtils::CStringBuilderA& oBuilder)
{
if (node->v.document.has_doctype)
{
oBuilder.WriteString("<!DOCTYPE ");
oBuilder.WriteString(node->v.document.name);
std::string pi(node->v.document.public_identifier);
remove_control_symbols(pi);
if ((node->v.document.public_identifier != NULL) && !pi.empty())
{
oBuilder.WriteString(" PUBLIC \"");
oBuilder.WriteString(pi);
oBuilder.WriteString("\" \"");
oBuilder.WriteString(node->v.document.system_identifier);
oBuilder.WriteString("\"");
}
oBuilder.WriteString(">");
}
}
static void build_attributes(const GumboVector* attribs, NSStringUtils::CStringBuilderA& atts)
{
std::vector<std::string> arrRepeat;
for (size_t i = 0; i < attribs->length; ++i)
{
GumboAttribute* at = static_cast<GumboAttribute*>(attribs->data[i]);
std::string sVal(at->value);
std::string sName(at->name);
remove_control_symbols(sVal);
remove_control_symbols(sName);
atts.WriteString(" ");
bool bCheck = false;
size_t nBad = sName.find_first_of("+,.=?#%<>&;\"\'()[]{}");
while(nBad != std::string::npos)
{
sName.erase(nBad, 1);
nBad = sName.find_first_of("+,.=?#%<>&;\"\'()[]{}", nBad);
if(sName.empty())
break;
bCheck = true;
}
if(sName.empty())
continue;
while(sName.front() >= '0' && sName.front() <= '9')
{
sName.erase(0, 1);
if(sName.empty())
break;
bCheck = true;
}
if(bCheck)
{
GumboAttribute* check = gumbo_get_attribute(attribs, sName.c_str());
if(check || std::find(arrRepeat.begin(), arrRepeat.end(), sName) != arrRepeat.end())
continue;
else
arrRepeat.push_back(sName);
}
if(sName.empty())
continue;
atts.WriteString(sName);
// determine original quote character used if it exists
std::string qs ="\"";
atts.WriteString("=");
atts.WriteString(qs);
substitute_xml_entities_into_attributes(sVal);
atts.WriteString(sVal);
atts.WriteString(qs);
}
}
static void prettyprint(GumboNode* node, NSStringUtils::CStringBuilderA& oBuilder, bool bCheckValidNode = true);
static void prettyprint_contents(GumboNode* node, NSStringUtils::CStringBuilderA& contents, bool bCheckValidNode)
{
std::string key = "|" + get_tag_name(node) + "|";
bool keep_whitespace = preserve_whitespace.find(key) != std::string::npos;
bool is_inline = nonbreaking_inline.find(key) != std::string::npos;
bool is_like_inline = treat_like_inline.find(key) != std::string::npos;
GumboVector* children = &node->v.element.children;
for (size_t i = 0; i < children->length; i++)
{
GumboNode* child = static_cast<GumboNode*> (children->data[i]);
if (child->type == GUMBO_NODE_TEXT)
{
std::string val(child->v.text.text);
remove_control_symbols(val);
substitute_xml_entities_into_text(val);
// Remove FF
size_t found = val.find_first_of("\014");
while(found != std::string::npos)
{
val.erase(found, 1);
found = val.find_first_of("\014", found);
}
contents.WriteString(val);
}
else if ((child->type == GUMBO_NODE_ELEMENT) || (child->type == GUMBO_NODE_TEMPLATE))
prettyprint(child, contents, bCheckValidNode);
else if (child->type == GUMBO_NODE_WHITESPACE)
{
if (keep_whitespace || is_inline || is_like_inline)
contents.WriteString(child->v.text.text);
}
else if (child->type != GUMBO_NODE_COMMENT)
{
// Error message
// Does this actually exist: (child->type == GUMBO_NODE_CDATA)
// fprintf(stderr, "unknown element of type: %d\n", child->type);
}
}
}
static void prettyprint(GumboNode* node, NSStringUtils::CStringBuilderA& oBuilder, bool bCheckValidNode)
{
// special case the document node
if (node->type == GUMBO_NODE_DOCUMENT)
{
build_doctype(node, oBuilder);
prettyprint_contents(node, oBuilder, bCheckValidNode);
return;
}
std::string tagname = get_tag_name(node);
remove_control_symbols(tagname);
if (NodeIsUnprocessed(tagname))
return;
if (bCheckValidNode)
bCheckValidNode = !IsUnckeckedNodes(tagname);
if (bCheckValidNode && html_tags.end() == std::find(html_tags.begin(), html_tags.end(), tagname))
{
prettyprint_contents(node, oBuilder, bCheckValidNode);
return;
}
std::string close = "";
std::string closeTag = "";
std::string key = "|" + tagname + "|";
bool is_empty_tag = empty_tags.find(key) != std::string::npos;
// determine closing tag type
if (is_empty_tag)
close = "/";
else
closeTag = "</" + tagname + ">";
// build results
oBuilder.WriteString("<" + tagname);
// build attr string
const GumboVector* attribs = &node->v.element.attributes;
build_attributes(attribs, oBuilder);
oBuilder.WriteString(close + ">");
// prettyprint your contents
prettyprint_contents(node, oBuilder, bCheckValidNode);
oBuilder.WriteString(closeTag);
}
std::wstring htmlToXhtml(std::string& sFileContent, bool bNeedConvert)
{
if (bNeedConvert)
{ // Encoding detection
std::string sEncoding = NSStringFinder::FindProperty(sFileContent, "charset", {"="}, {";", "\\n", "\\r", " ", "\"", "'"}).m_sValue;
if (sEncoding.empty())
sEncoding = NSStringFinder::FindProperty(sFileContent, "encoding", {"="}, {";", "\\n", "\\r", " "}).m_sValue;
if (!sEncoding.empty() && !NSStringFinder::Equals("utf-8", sEncoding))
{
NSUnicodeConverter::CUnicodeConverter oConverter;
sFileContent = U_TO_UTF8(oConverter.toUnicode(sFileContent, sEncoding.c_str()));
}
}
// Remove extra characters before <...
boost::regex oRegex("<[a-zA-Z]");
boost::match_results<typename std::string::const_iterator> oResult;
if (boost::regex_search(sFileContent, oResult, oRegex))
sFileContent.erase(0, oResult.position());
//Remove <a ... />
while (NSStringFinder::RemoveEmptyTag(sFileContent, "a"));
//Remove <title ... />
while (NSStringFinder::RemoveEmptyTag(sFileContent, "title"));
//Remove <script ... />
while (NSStringFinder::RemoveEmptyTag(sFileContent, "script"));
// Gumbo
GumboOptions options = kGumboDefaultOptions;
GumboOutput* output = gumbo_parse_with_options(&options, sFileContent.data(), sFileContent.length());
// prettyprint
NSStringUtils::CStringBuilderA oBuilder;
prettyprint(output->document, oBuilder);
// Convert from string utf8 to wstring
return UTF8_TO_U(oBuilder.GetData());
}
std::wstring mhtToXhtml(std::string& sFileContent)
{
sFileContent = mhtTohtml(sFileContent);
// Gumbo
GumboOptions options = kGumboDefaultOptions;
GumboOutput* output = gumbo_parse_with_options(&options, sFileContent.data(), sFileContent.length());
// prettyprint
NSStringUtils::CStringBuilderA oBuilder;
prettyprint(output->document, oBuilder);
// Convert from string utf8 to wstring
return UTF8_TO_U(oBuilder.GetData());
}
}

View File

@ -2,647 +2,11 @@
#define HTMLTOXHTML_H
#include <string>
#include <map>
#include <cctype>
#include <vector>
#include <algorithm>
#include "gumbo-parser/src/gumbo.h"
#include "../../../DesktopEditor/common/File.h"
#include "../../../DesktopEditor/common/Directory.h"
#include "../../../DesktopEditor/common/StringBuilder.h"
#include "../../../DesktopEditor/xml/include/xmlutils.h"
#include "../../../UnicodeConverter/UnicodeConverter.h"
#include "../../../HtmlFile2/src/StringFinder.h"
static std::string nonbreaking_inline = "|a|abbr|acronym|b|bdo|big|cite|code|dfn|em|font|i|img|kbd|nobr|s|small|span|strike|strong|sub|sup|tt|";
static std::string empty_tags = "|area|base|basefont|bgsound|br|command|col|embed|event-source|frame|hr|image|img|input|keygen|link|menuitem|meta|param|source|spacer|track|wbr|";
static std::string preserve_whitespace = "|pre|textarea|script|style|";
static std::string special_handling = "|html|body|";
static std::string treat_like_inline = "|p|";
static std::vector<std::string> html_tags = {"div","span","a","img","p","h1","h2","h3","h4","h5","h6",
"ul", "ol", "li","td","tr","table","thead","tbody","tfoot","th",
"br","form","input","button","section","nav","header","footer",
"main","figure","figcaption","strong","em","i", "b", "u","pre",
"code","blockquote","hr","script","link","meta","style","title",
"head","body","html","legend","optgroup","option","select","dl",
"dt","dd","time","data","abbr","address","area","base","bdi",
"bdo","cite","col","iframe","video","source","track","textarea",
"label","fieldset","colgroup","del","ins","details","summary",
"dialog","embed","kbd","map","mark","menu","meter","object",
"output","param","progress","q","samp","small","sub","sup","var",
"wbr","acronym","applet","article","aside","audio","basefont",
"bgsound","big","blink","canvas","caption","center","command",
"comment","datalist","dfn","dir","font","frame","frameset",
"hgroup","isindex","keygen","marquee","nobr","noembed","noframes",
"noscript","plaintext","rp","rt","ruby","s","strike","tt","xmp"};
static std::vector<std::string> unchecked_nodes_new = {"svg"};
static void prettyprint(GumboNode*, NSStringUtils::CStringBuilderA& oBuilder, bool bCheckValidNode = true);
static std::string mhtTohtml(const std::string &sFileContent);
// Заменяет в строке s все символы s1 на s2
static void replace_all(std::string& s, const std::string& s1, const std::string& s2)
namespace HTML
{
size_t pos = s.find(s1);
while(pos != std::string::npos)
{
s.replace(pos, s1.length(), s2);
pos = s.find(s1, pos + s2.length());
}
}
static bool NodeIsUnprocessed(const std::string& wsTagName)
{
return "xml" == wsTagName;
}
static bool IsUnckeckedNodes(const std::string& sValue)
{
return unchecked_nodes_new.end() != std::find(unchecked_nodes_new.begin(), unchecked_nodes_new.end(), sValue);
}
static std::wstring htmlToXhtml(std::string& sFileContent, bool bNeedConvert)
{
if (bNeedConvert)
{ // Определение кодировки
std::string sEncoding = NSStringFinder::FindPropety(sFileContent, "charset", {"="}, {";", "\\n", "\\r", " ", "\""}).m_sValue;
if (sEncoding.empty())
sEncoding = NSStringFinder::FindPropety(sFileContent, "encoding", {"="}, {";", "\\n", "\\r", " "}).m_sValue;
if (!sEncoding.empty() && !NSStringFinder::Equals("utf-8", sEncoding))
{
NSUnicodeConverter::CUnicodeConverter oConverter;
sFileContent = U_TO_UTF8(oConverter.toUnicode(sFileContent, sEncoding.c_str()));
}
}
// Избавляемся от лишних символов до <...
boost::regex oRegex("<[a-zA-Z]");
boost::match_results<typename std::string::const_iterator> oResult;
if (boost::regex_search(sFileContent, oResult, oRegex))
sFileContent.erase(0, oResult.position());
//Избавление от <a ... />
while (NSStringFinder::RemoveEmptyTag(sFileContent, "a"));
//Избавление от <title ... />
while (NSStringFinder::RemoveEmptyTag(sFileContent, "title"));
//Избавление от <script ... />
while (NSStringFinder::RemoveEmptyTag(sFileContent, "script"));
// Gumbo
GumboOptions options = kGumboDefaultOptions;
GumboOutput* output = gumbo_parse_with_options(&options, sFileContent.data(), sFileContent.length());
// prettyprint
NSStringUtils::CStringBuilderA oBuilder;
prettyprint(output->document, oBuilder);
// Конвертирование из string utf8 в wstring
return UTF8_TO_U(oBuilder.GetData());
}
static std::string Base64ToString(const std::string& sContent, const std::string& sCharset)
{
std::string sRes;
int nSrcLen = (int)sContent.length();
int nDecodeLen = NSBase64::Base64DecodeGetRequiredLength(nSrcLen);
BYTE* pData = new BYTE[nDecodeLen];
if (TRUE == NSBase64::Base64Decode(sContent.c_str(), nSrcLen, pData, &nDecodeLen))
{
std::wstring sConvert;
if(!sCharset.empty() && NSStringFinder::Equals<std::string>("utf-8", sCharset))
{
NSUnicodeConverter::CUnicodeConverter oConverter;
sConvert = oConverter.toUnicode(reinterpret_cast<char *>(pData), (unsigned)nDecodeLen, sCharset.data());
}
sRes = sConvert.empty() ? std::string(reinterpret_cast<char *>(pData), nDecodeLen) : U_TO_UTF8(sConvert);
}
RELEASEARRAYOBJECTS(pData);
return sRes;
}
static std::string QuotedPrintableDecode(const std::string& sContent, std::string& sCharset)
{
NSStringUtils::CStringBuilderA sRes;
size_t ip = 0;
size_t i = sContent.find('=');
if(i == 0)
{
size_t nIgnore = 12;
std::string charset = sContent.substr(0, nIgnore);
if(charset == "=00=00=FE=FF")
sCharset = "UTF-32BE";
else if(charset == "=FF=FE=00=00")
sCharset = "UTF-32LE";
else if(charset == "=2B=2F=76=38" || charset == "=2B=2F=76=39" ||
charset == "=2B=2F=76=2B" || charset == "=2B=2F=76=2F")
sCharset = "UTF-7";
else if(charset == "=DD=73=66=73")
sCharset = "UTF-EBCDIC";
else if(charset == "=84=31=95=33")
sCharset = "GB-18030";
else
{
nIgnore -= 3;
charset.erase(nIgnore);
if(charset == "=EF=BB=BF")
sCharset = "UTF-8";
else if(charset == "=F7=64=4C")
sCharset = "UTF-1";
else if(charset == "=0E=FE=FF")
sCharset = "SCSU";
else if(charset == "=FB=EE=28")
sCharset = "BOCU-1";
else
{
nIgnore -= 3;
charset.erase(nIgnore);
if(charset == "=FE=FF")
sCharset = "UTF-16BE";
else if(charset == "=FF=FE")
sCharset = "UTF-16LE";
else
nIgnore -= 6;
}
}
ip = nIgnore;
i = sContent.find('=', ip);
}
while(i != std::string::npos && i + 2 < sContent.length())
{
sRes.WriteString(sContent.c_str() + ip, i - ip);
std::string str = sContent.substr(i + 1, 2);
if(str.front() == '\n' || str.front() == '\r')
{
char ch = str[1];
if(ch != '\n' && ch != '\r')
sRes.WriteString(&ch, 1);
}
else
{
char* err;
char ch = (int)strtol(str.data(), &err, 16);
if(*err)
sRes.WriteString('=' + str);
else
sRes.WriteString(&ch, 1);
}
ip = i + 3;
i = sContent.find('=', ip);
}
if(ip != std::string::npos)
sRes.WriteString(sContent.c_str() + ip);
return sRes.GetData();
}
static void ReadMht(const std::string& sMhtContent, std::map<std::string, std::string>& sRes, NSStringUtils::CStringBuilderA& oRes)
{
size_t unContentPosition = 0, unCharsetBegin = 0, unCharsetEnd = std::string::npos;
NSStringFinder::TFoundedData<char> oData;
// Content-Type
oData = NSStringFinder::FindPropety(sMhtContent, "content-type", {":"}, {";", "\\n", "\\r"});
const std::string sContentType{oData.m_sValue};
if (sContentType.empty())
return;
if (NSStringFinder::Equals(sContentType, "multipart/alternative"))
{
oRes.WriteString(mhtTohtml(sMhtContent.substr(oData.m_unEndPosition, sMhtContent.length() - oData.m_unEndPosition)));
return;
}
unContentPosition = std::max(unContentPosition, oData.m_unEndPosition);
unCharsetBegin = oData.m_unEndPosition;
// name
// std::string sName = NSStringFinder::FindPropety(sMhtContent, "name", {"="}, {";", "\\n", "\\r"}, 0, unLastPosition);
// unContentPosition = std::max(unContentPosition, unLastPosition);
// Content-Location
oData = NSStringFinder::FindPropety(sMhtContent, "content-location", {":"}, {";", "\\n", "\\r"});
std::string sContentLocation{oData.m_sValue};
if (!oData.Empty())
unContentPosition = std::max(unContentPosition, oData.m_unEndPosition);
// Content-ID
oData = NSStringFinder::FindPropety(sMhtContent, "content-id", {":"}, {";", "\\n", "\\r"});
std::string sContentID{oData.m_sValue};
if (!oData.Empty())
{
unContentPosition = std::max(unContentPosition, oData.m_unEndPosition);
unCharsetEnd = std::min(unCharsetEnd, oData.m_unBeginPosition);
NSStringFinder::CutInside<std::string>(sContentID, "<", ">");
}
if (sContentLocation.empty() && !sContentID.empty())
sContentLocation = "cid:" + sContentID;
// Content-Transfer-Encoding
oData = NSStringFinder::FindPropety(sMhtContent, "content-transfer-encoding", {":"}, {";", "\\n", "\\r"});
const std::string sContentEncoding{oData.m_sValue};
if (!oData.Empty())
{
unContentPosition = std::max(unContentPosition, oData.m_unEndPosition);
unCharsetEnd = std::min(unCharsetEnd, oData.m_unBeginPosition);
}
// charset
std::string sCharset = "utf-8";
if (std::string::npos != unCharsetEnd && unCharsetBegin < unCharsetEnd)
{
sCharset = NSStringFinder::FindPropety(sMhtContent.substr(unCharsetBegin, unCharsetEnd - unCharsetBegin), "charset", {"="}, {";", "\\n", "\\r"}).m_sValue;
NSStringFinder::CutInside<std::string>(sCharset, "\"");
}
// Content
std::string sContent = sMhtContent.substr(unContentPosition, sMhtContent.length() - unContentPosition);
// std::wstring sExtention = NSFile::GetFileExtention(UTF8_TO_U(sName));
// std::transform(sExtention.begin(), sExtention.end(), sExtention.begin(), tolower);
// Основной документ
if (NSStringFinder::Equals(sContentType, "multipart/alternative"))
oRes.WriteString(mhtTohtml(sContent));
else if ((NSStringFinder::Find(sContentType, "text") /*&& (sExtention.empty() || NSStringFinder::EqualOf(sExtention, {L"htm", L"html", L"xhtml", L"css"}))*/)
|| (NSStringFinder::Equals(sContentType, "application/octet-stream") && NSStringFinder::Find(sContentLocation, "css")))
{
// Стили заключаются в тэг <style>
const bool bAddTagStyle = NSStringFinder::Equals(sContentType, "text/css") /*|| NSStringFinder::Equals(sExtention, L"css")*/ || NSStringFinder::Find(sContentLocation, "css");
if (bAddTagStyle)
oRes.WriteString("<style>");
if (NSStringFinder::Equals(sContentEncoding, "base64"))
sContent = Base64ToString(sContent, sCharset);
else if (NSStringFinder::EqualOf(sContentEncoding, {"8bit", "7bit"}) || sContentEncoding.empty())
{
if (!NSStringFinder::Equals(sCharset, "utf-8") && !sCharset.empty())
{
NSUnicodeConverter::CUnicodeConverter oConverter;
sContent = U_TO_UTF8(oConverter.toUnicode(sContent, sCharset.data()));
}
}
else if (NSStringFinder::Equals(sContentEncoding, "quoted-printable"))
{
sContent = QuotedPrintableDecode(sContent, sCharset);
if (!NSStringFinder::Equals(sCharset, "utf-8") && !sCharset.empty())
{
NSUnicodeConverter::CUnicodeConverter oConverter;
sContent = U_TO_UTF8(oConverter.toUnicode(sContent, sCharset.data()));
}
}
if (NSStringFinder::Equals(sContentType, "text/html"))
sContent = U_TO_UTF8(htmlToXhtml(sContent, false));
oRes.WriteString(sContent);
if(bAddTagStyle)
oRes.WriteString("</style>");
}
// Картинки
else if ((NSStringFinder::Find(sContentType, "image") /*|| NSStringFinder::Equals(sExtention, L"gif")*/ || NSStringFinder::Equals(sContentType, "application/octet-stream")) &&
NSStringFinder::Equals(sContentEncoding, "base64"))
{
// if (NSStringFinder::Equals(sExtention, L"ico") || NSStringFinder::Find(sContentType, "ico"))
// sContentType = "image/jpg";
// else if(NSStringFinder::Equals(sExtention, L"gif"))
// sContentType = "image/gif";
int nSrcLen = (int)sContent.length();
int nDecodeLen = NSBase64::Base64DecodeGetRequiredLength(nSrcLen);
BYTE* pData = new BYTE[nDecodeLen];
if (TRUE == NSBase64::Base64Decode(sContent.c_str(), nSrcLen, pData, &nDecodeLen))
sRes.insert(std::make_pair(sContentLocation, "data:" + sContentType + ";base64," + sContent));
RELEASEARRAYOBJECTS(pData);
}
}
static std::string mhtTohtml(const std::string& sFileContent)
{
std::map<std::string, std::string> sRes;
NSStringUtils::CStringBuilderA oRes;
// Поиск boundary
NSStringFinder::TFoundedData<char> oData{NSStringFinder::FindPropety(sFileContent, "boundary", {"="}, {"\\r", "\\n", "\""})};
size_t nFound{oData.m_unEndPosition};
std::string sBoundary{oData.m_sValue};
if (sBoundary.empty())
{
size_t nFoundEnd = sFileContent.length();
nFound = 0;
ReadMht(sFileContent.substr(nFound, nFoundEnd), sRes, oRes);
return oRes.GetData();
}
NSStringFinder::CutInside<std::string>(sBoundary, "\"");
size_t nFoundEnd{nFound};
sBoundary = "--" + sBoundary;
size_t nBoundaryLength = sBoundary.length();
nFound = sFileContent.find(sBoundary, nFound) + nBoundaryLength;
// Цикл по boundary
while(nFound != std::string::npos)
{
nFoundEnd = sFileContent.find(sBoundary, nFound + nBoundaryLength);
if(nFoundEnd == std::string::npos)
break;
ReadMht(sFileContent.substr(nFound, nFoundEnd - nFound), sRes, oRes);
nFound = sFileContent.find(sBoundary, nFoundEnd);
}
std::string sFile = oRes.GetData();
for(const std::pair<std::string, std::string>& item : sRes)
{
std::string sName = item.first;
size_t found = sFile.find(sName);
size_t sfound = sName.rfind('/');
if(found == std::string::npos && sfound != std::string::npos)
found = sFile.find(sName.erase(0, sfound + 1));
while(found != std::string::npos)
{
size_t fq = sFile.find_last_of("\"\'>=", found);
if (std::string::npos == fq)
break;
char ch = sFile[fq];
if(ch != '\"' && ch != '\'')
fq++;
size_t tq = sFile.find_first_of("\"\'<> ", found) + 1;
if (std::string::npos == tq)
break;
if(sFile[tq] != '\"' && sFile[tq] != '\'')
tq--;
if(ch != '>')
{
std::string is = '\"' + item.second + '\"';
sFile.replace(fq, tq - fq, is);
found = sFile.find(sName, fq + is.length());
}
else
found = sFile.find(sName, tq);
}
}
return sFile;
}
static std::wstring mhtToXhtml(std::string& sFileContent)
{
sFileContent = mhtTohtml(sFileContent);
// Gumbo
GumboOptions options = kGumboDefaultOptions;
GumboOutput* output = gumbo_parse_with_options(&options, sFileContent.data(), sFileContent.length());
// prettyprint
NSStringUtils::CStringBuilderA oBuilder;
prettyprint(output->document, oBuilder);
// Конвертирование из string utf8 в wstring
return UTF8_TO_U(oBuilder.GetData());
}
// Заменяет сущности &,<,> в text
static void substitute_xml_entities_into_text(std::string& text)
{
// replacing & must come first
replace_all(text, "&", "&amp;");
replace_all(text, "<", "&lt;");
replace_all(text, ">", "&gt;");
}
// After running through Gumbo, the values of type "&#1;" are replaced with the corresponding code '0x01'
// Since the attribute value does not use control characters (value <= 0x1F),
// then just delete them, otherwise XmlUtils::CXmlLiteReader crashes on them.
// bug#73486
static void remove_control_symbols(std::string& text)
{
std::string::iterator itFound = std::find_if(text.begin(), text.end(), [](char chValue){ return chValue <= 0x1F; });
while (itFound != text.end())
{
itFound = text.erase(itFound);
itFound = std::find_if(itFound, text.end(), [](char chValue){ return chValue <= 0x1F; });
}
}
// Заменяет сущности " в text
static void substitute_xml_entities_into_attributes(std::string& text)
{
remove_control_symbols(text);
substitute_xml_entities_into_text(text);
replace_all(text, "\"", "&quot;");
}
static std::string handle_unknown_tag(GumboStringPiece* text)
{
if (text->data == NULL)
return "";
GumboStringPiece gsp = *text;
gumbo_tag_from_original_text(&gsp);
std::string sAtr = std::string(gsp.data, gsp.length);
size_t found = sAtr.find_first_of("-'+,./=?;!*#@$_%<>&;\"\'()[]{}");
while(found != std::string::npos)
{
sAtr.erase(found, 1);
found = sAtr.find_first_of("-'+,./=?;!*#@$_%<>&;\"\'()[]{}", found);
}
return sAtr;
}
static std::string get_tag_name(GumboNode* node)
{
std::string tagname = (node->type == GUMBO_NODE_DOCUMENT ? "document" : gumbo_normalized_tagname(node->v.element.tag));
if (tagname.empty())
tagname = handle_unknown_tag(&node->v.element.original_tag);
return tagname;
}
static void build_doctype(GumboNode* node, NSStringUtils::CStringBuilderA& oBuilder)
{
if (node->v.document.has_doctype)
{
oBuilder.WriteString("<!DOCTYPE ");
oBuilder.WriteString(node->v.document.name);
std::string pi(node->v.document.public_identifier);
if ((node->v.document.public_identifier != NULL) && !pi.empty())
{
oBuilder.WriteString(" PUBLIC \"");
oBuilder.WriteString(pi);
oBuilder.WriteString("\" \"");
oBuilder.WriteString(node->v.document.system_identifier);
oBuilder.WriteString("\"");
}
oBuilder.WriteString(">");
}
}
static void build_attributes(const GumboVector* attribs, NSStringUtils::CStringBuilderA& atts)
{
std::vector<std::string> arrRepeat;
for (size_t i = 0; i < attribs->length; ++i)
{
GumboAttribute* at = static_cast<GumboAttribute*>(attribs->data[i]);
std::string sVal(at->value);
std::string sName(at->name);
atts.WriteString(" ");
bool bCheck = false;
size_t nBad = sName.find_first_of("+,.=?#%<>&;\"\'()[]{}");
while(nBad != std::string::npos)
{
sName.erase(nBad, 1);
nBad = sName.find_first_of("+,.=?#%<>&;\"\'()[]{}", nBad);
if(sName.empty())
break;
bCheck = true;
}
if(sName.empty())
continue;
while(sName.front() >= '0' && sName.front() <= '9')
{
sName.erase(0, 1);
if(sName.empty())
break;
bCheck = true;
}
if(bCheck)
{
GumboAttribute* check = gumbo_get_attribute(attribs, sName.c_str());
if(check || std::find(arrRepeat.begin(), arrRepeat.end(), sName) != arrRepeat.end())
continue;
else
arrRepeat.push_back(sName);
}
if(sName.empty())
continue;
atts.WriteString(sName);
// determine original quote character used if it exists
std::string qs ="\"";
atts.WriteString("=");
atts.WriteString(qs);
substitute_xml_entities_into_attributes(sVal);
atts.WriteString(sVal);
atts.WriteString(qs);
}
}
static void prettyprint_contents(GumboNode* node, NSStringUtils::CStringBuilderA& contents, bool bCheckValidNode)
{
std::string key = "|" + get_tag_name(node) + "|";
bool keep_whitespace = preserve_whitespace.find(key) != std::string::npos;
bool is_inline = nonbreaking_inline.find(key) != std::string::npos;
bool is_like_inline = treat_like_inline.find(key) != std::string::npos;
GumboVector* children = &node->v.element.children;
for (size_t i = 0; i < children->length; i++)
{
GumboNode* child = static_cast<GumboNode*> (children->data[i]);
if (child->type == GUMBO_NODE_TEXT)
{
std::string val(child->v.text.text);
substitute_xml_entities_into_text(val);
// Избавление от FF
size_t found = val.find_first_of("\014");
while(found != std::string::npos)
{
val.erase(found, 1);
found = val.find_first_of("\014", found);
}
contents.WriteString(val);
}
else if ((child->type == GUMBO_NODE_ELEMENT) || (child->type == GUMBO_NODE_TEMPLATE))
prettyprint(child, contents, bCheckValidNode);
else if (child->type == GUMBO_NODE_WHITESPACE)
{
if (keep_whitespace || is_inline || is_like_inline)
contents.WriteString(child->v.text.text);
}
else if (child->type != GUMBO_NODE_COMMENT)
{
// Сообщение об ошибке
// Does this actually exist: (child->type == GUMBO_NODE_CDATA)
// fprintf(stderr, "unknown element of type: %d\n", child->type);
}
}
}
static void prettyprint(GumboNode* node, NSStringUtils::CStringBuilderA& oBuilder, bool bCheckValidNode)
{
// special case the document node
if (node->type == GUMBO_NODE_DOCUMENT)
{
build_doctype(node, oBuilder);
prettyprint_contents(node, oBuilder, bCheckValidNode);
return;
}
std::string tagname = get_tag_name(node);
if (NodeIsUnprocessed(tagname))
return;
if (bCheckValidNode)
bCheckValidNode = !IsUnckeckedNodes(tagname);
if (bCheckValidNode && html_tags.end() == std::find(html_tags.begin(), html_tags.end(), tagname))
{
prettyprint_contents(node, oBuilder, bCheckValidNode);
return;
}
std::string close = "";
std::string closeTag = "";
std::string key = "|" + tagname + "|";
bool is_empty_tag = empty_tags.find(key) != std::string::npos;
// determine closing tag type
if (is_empty_tag)
close = "/";
else
closeTag = "</" + tagname + ">";
// build results
oBuilder.WriteString("<" + tagname);
// build attr string
const GumboVector* attribs = &node->v.element.attributes;
build_attributes(attribs, oBuilder);
oBuilder.WriteString(close + ">");
// prettyprint your contents
prettyprint_contents(node, oBuilder, bCheckValidNode);
oBuilder.WriteString(closeTag);
std::wstring htmlToXhtml(std::string& sFileContent, bool bNeedConvert);
std::wstring mhtToXhtml(std::string& sFileContent);
}
#endif // HTMLTOXHTML_H

View File

@ -1,5 +1,2 @@
emsdk/
hunspell/
deploy/
o
hunspell.data

View File

@ -0,0 +1,43 @@
import os
import glob
import json
import subprocess
curDirectory = os.path.dirname(os.path.realpath(__file__))
dictionatiesDirectory = curDirectory + "/../../../../../dictionaries"
all_dictionaties = {}
for dir in glob.glob(dictionatiesDirectory + "/*"):
if not os.path.isdir(dir):
continue
dictionaryName = os.path.basename(dir)
configFile = dictionatiesDirectory + "/" + dictionaryName + "/" + dictionaryName + ".json"
if not os.path.isfile(configFile):
continue
isHyphen = False
hyphenFile = dictionatiesDirectory + "/" + dictionaryName + "/hyph_" + dictionaryName + ".dic"
if os.path.isfile(hyphenFile):
isHyphen = True
with open(configFile, 'r', encoding='utf-8') as file:
data = json.loads(file.read())
for lang in data["codes"]:
all_dictionaties[str(lang)] = {
"name": dictionaryName,
"hyphen": isHyphen
}
content = ""
content += "#define DictionaryRec_count " + str(len(all_dictionaties)) + "\n"
content += "typedef struct {\n"
content += " const char* m_name;\n"
content += " int m_lang;\n"
content += "} DictionaryRec;\n\n"
content += "static const DictionaryRec Dictionaries[DictionaryRec_count] = {\n"
for lang in all_dictionaties:
info = all_dictionaties[lang]
content += " { \"" + info["name"] + "\", " + str(lang) + " },\n"
content += "};\n"
with open("./records.h", 'w', encoding='utf-8') as f:
f.write(content)

View File

@ -0,0 +1,73 @@
#define DictionaryRec_count 65
typedef struct {
const char* m_name;
int m_lang;
} DictionaryRec;
static const DictionaryRec Dictionaries[DictionaryRec_count] = {
{ "ar", 1025 },
{ "ar", 2049 },
{ "ar", 3073 },
{ "ar", 4097 },
{ "ar", 5121 },
{ "ar", 6145 },
{ "ar", 7169 },
{ "ar", 8193 },
{ "ar", 9217 },
{ "ar", 10241 },
{ "ar", 11265 },
{ "ar", 12289 },
{ "ar", 13313 },
{ "ar", 14337 },
{ "ar", 15361 },
{ "ar", 16385 },
{ "az_Latn_AZ", 1068 },
{ "bg_BG", 1026 },
{ "ca_ES", 1027 },
{ "ca_ES_valencia", 2051 },
{ "cs_CZ", 1029 },
{ "da_DK", 1030 },
{ "de_AT", 3079 },
{ "de_CH", 2055 },
{ "de_DE", 1031 },
{ "el_GR", 1032 },
{ "en_AU", 3081 },
{ "en_CA", 4105 },
{ "en_GB", 2057 },
{ "en_US", 1033 },
{ "en_ZA", 7177 },
{ "es_ES", 3082 },
{ "eu_ES", 1069 },
{ "fr_FR", 1036 },
{ "gl_ES", 1110 },
{ "hr_HR", 1050 },
{ "hu_HU", 1038 },
{ "id_ID", 1057 },
{ "it_IT", 1040 },
{ "kk_KZ", 1087 },
{ "ko_KR", 1042 },
{ "lb_LU", 1134 },
{ "lt_LT", 1063 },
{ "lv_LV", 1062 },
{ "mn_MN", 1104 },
{ "nb_NO", 1044 },
{ "nl_NL", 1043 },
{ "nl_NL", 2067 },
{ "nn_NO", 2068 },
{ "oc_FR", 1154 },
{ "pl_PL", 1045 },
{ "pt_BR", 1046 },
{ "pt_PT", 2070 },
{ "ro_RO", 1048 },
{ "ru_RU", 1049 },
{ "sk_SK", 1051 },
{ "sl_SI", 1060 },
{ "sr_Cyrl_RS", 10266 },
{ "sr_Latn_RS", 9242 },
{ "sv_SE", 1053 },
{ "tr_TR", 1055 },
{ "uk_UA", 1058 },
{ "uz_Cyrl_UZ", 2115 },
{ "uz_Latn_UZ", 1091 },
{ "vi_VN", 1066 },
};

View File

@ -1,49 +0,0 @@
{
"name": "spell",
"res_folder": "./deploy/spell",
"wasm": true,
"asm": true,
"embed_mem_file": true,
"run_before": "before.py",
"run_after": "import sys;sys.path.append(\"../../../../build_tools/scripts\");import base;base.configure_common_apps();base.replaceInFile(\"./deploy/spell/spell.js\", \"__ATPOSTRUN__=[];\", \"__ATPOSTRUN__=[function(){self.onEngineInit();}];\");base.replaceInFile(\"./deploy/spell/spell.js\", \"function getBinaryPromise(){\", \"function getBinaryPromise2(){\");base.replaceInFile(\"./deploy/spell/spell_ie.js\", \"__ATPOSTRUN__=[];\", \"__ATPOSTRUN__=[function(){self.onEngineInit();}];\");base.replaceInFile(\"./deploy/spell/spell_ie.js\", \"function getBinaryPromise(){\", \"function getBinaryPromise2(){\");base.copy_file(\"./wasm/js/code.js\", \"./deploy/spell.js\");base.copy_file(\"./wasm/js/index.html\", \"./deploy/index.html\")",
"base_js_content": "./wasm/js/spell.js",
"compiler_flags": [
"-O3",
"-fno-exceptions",
"-fno-rtti",
"-Wno-unused-command-line-argument",
"-s ALLOW_MEMORY_GROWTH=1",
"-s FILESYSTEM=0",
"-s ENVIRONMENT='web,worker'"
],
"exported_functions": [
"_malloc",
"_free",
"_Spellchecker_Malloc",
"_Spellchecker_Free",
"_Spellchecker_Create",
"_Spellchecker_Destroy",
"_Spellchecker_AddDictionary",
"_Spellchecker_RemoveDicrionary",
"_Spellchecker_Load",
"_Spellchecker_Spell",
"_Spellchecker_Suggest",
"_Spellchecker_RemoveEngine",
"_Spellchecker_TotalAllocatedMemory"
],
"include_path": ["./hunspell/src/hunspell", "./wasm/src"],
"define": ["WIN32", "NDEBUG", "HUNSPELL_STATIC", "BUILDING_LIBHUNSPELL", "HUNSPELL_WASM_MODULE"],
"compile_files_array": [
{
"name": "h",
"folder": "./hunspell/src/hunspell/",
"files": ["affentry.cxx", "affixmgr.cxx", "csutil.cxx", "hashmgr.cxx", "hunspell.cxx", "hunzip.cxx", "phonet.cxx", "replist.cxx", "suggestmgr.cxx"]
},
{
"name": "s",
"folder": "./wasm/src/",
"files": ["filemgr_wrapper_new.cxx", "base.cpp"]
}
]
}

View File

@ -1,33 +1,36 @@
/*
* (c) Copyright Ascensio System SIA 2010-2023
* Copyright (C) Ascensio System SIA, 2009-2026
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
* version 3 as published by the Free Software Foundation, together with the
* additional terms provided in the LICENSE file.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: https://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at 20A-6 Ernesta Birznieka-Upish
* street, Riga, Latvia, EU, LV-1050.
* You can contact Ascensio System SIA by email at info@onlyoffice.com
* or by postal mail at 20A-6 Ernesta Birznieka-Upisha Street, Riga,
* LV-1050, Latvia, European Union.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* The interactive user interfaces in modified versions of the Program
* are required to display Appropriate Legal Notices in accordance with
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
* No trademark rights are granted under this License.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
* All non-code elements of the Product, including illustrations,
* icon sets, and technical writing content, are licensed under the
* Creative Commons Attribution-ShareAlike 4.0 International License:
* https://creativecommons.org/licenses/by-sa/4.0/legalcode
*
* This license applies only to such non-code elements and does not
* modify or replace the licensing terms applicable to the Program's
* source code, which remains licensed under the GNU Affero General
* Public License v3.
*
* SPDX-License-Identifier: AGPL-3.0-only
*/
#include "../../../../Common/3dParty/hunspell/hunspell/src/hunspell/hunspell.h"

View File

@ -1,125 +0,0 @@
function CSpellchecker(settings)
{
useWasm = false;
var webAsmObj = window["WebAssembly"];
if (typeof webAsmObj === "object")
{
if (typeof webAsmObj["Memory"] === "function")
{
if ((typeof webAsmObj["instantiateStreaming"] === "function") || (typeof webAsmObj["instantiate"] === "function"))
useWasm = true;
}
}
var enginePath = "./spell/";
if (settings && settings.enginePath)
{
enginePath = settings.enginePath;
if (enginePath.substring(enginePath.length - 1) != "/")
enginePath += "/";
}
var dictionariesPath = "./../dictionaries";
if (settings && settings.dictionariesPath)
{
dictionariesPath = settings.dictionariesPath;
if (dictionariesPath.substring(dictionariesPath.length - 1) == "/")
dictionariesPath = dictionariesPath.substr(0, dictionariesPath.length - 1);
}
var isUseSharedWorker = !!window.SharedWorker;
if (isUseSharedWorker && (false === settings.useShared))
isUseSharedWorker = false;
var worker_src = useWasm ? "spell.js" : "spell_ie.js";
worker_src = enginePath + worker_src;
var _worker = this;
var _port = null;
if (isUseSharedWorker)
{
this.worker = new SharedWorker(worker_src, "onlyoffice-spellchecker");
_port = this.worker.port;
}
else
{
this.worker = new Worker(worker_src);
_port = this.worker;
}
this.languages = {
"1068" : "az_Latn_AZ",
"1026" : "bg_BG",
"1027" : "ca_ES",
"2051" : "ca_ES_valencia",
"1029" : "cs_CZ",
"1030" : "da_DK",
"3079" : "de_AT",
"2055" : "de_CH",
"1031" : "de_DE",
"1032" : "el_GR",
"3081" : "en_AU",
"4105" : "en_CA",
"2057" : "en_GB",
"1033" : "en_US",
"7177" : "en_ZA",
"3082" : "es_ES",
"1069" : "eu_ES",
"1036" : "fr_FR",
"1110" : "gl_ES",
"1050" : "hr_HR",
"1038" : "hu_HU",
"1057" : "id_ID",
"1040" : "it_IT",
"1087" : "kk_KZ",
"1042" : "ko_KR",
"1134" : "lb_LU",
"1063" : "lt_LT",
"1062" : "lv_LV",
"1104" : "mn_MN",
"1044" : "nb_NO",
"1043" : "nl_NL",
"2068" : "nn_NO",
"1045" : "pl_PL",
"1046" : "pt_BR",
"2070" : "pt_PT",
"1048" : "ro_RO",
"1049" : "ru_RU",
"1051" : "sk_SK",
"1060" : "sl_SI",
"10266" : "sr_Cyrl_RS",
"9242" : "sr_Latn_RS",
"1053" : "sv_SE",
"1055" : "tr_TR",
"1058" : "uk_UA",
"1066" : "vi_VN",
"2067" : "nl_NL" // nl_BE
};
_port.onmessage = function(message) {
_worker.oncommand && _worker.oncommand(message.data);
};
_port.postMessage({ "type" : "init", "dictionaries_path" : dictionariesPath, "languages" : this.languages });
this.stop = function()
{
this.worker.terminate();
this.worker = null;
};
this.command = function(message)
{
_port && _port.postMessage(message);
};
this.oncommand = function(message) { console.log(message); };
this.checkDictionary = function(lang) {
return (undefined !== this.languages["" + lang]) ? true : false;
};
this.getLanguages = function() {
var ret = [];
for (var lang in this.languages)
ret.push(lang);
return ret;
};
}

View File

@ -1,33 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Demo of spellchecker</title>
<meta name="viewport" content="width=device-width">
<script src="./spell.js"></script>
<script type="text/javascript">
window.spellcheck = new CSpellchecker({
enginePath : "./spell",
dictionariesPath : "./../dictionaries"
});
window.spellcheck.oncommand = function(message) {
console.log(message);
};
window.spellcheck.command({
"type" : "spell",
"usrLang" : [1033, 1033, 1049],
"usrWords" : ["hello", "hellop", "привет"]
});
window.spellcheck.command({
"type" : "suggest",
"usrLang" : [1033],
"usrWords" : ["hellop"]
});
</script>
</head>
<body>
</body>
</html>

View File

@ -1,546 +0,0 @@
var printErr = undefined;
var FS = undefined;
var print = undefined;
var fetch = self.fetch;
var getBinaryPromise = null;
if (self.AscDesktopEditor && document.currentScript && 0 == document.currentScript.src.indexOf("file:///"))
{
fetch = undefined; // fetch not support file:/// scheme
getBinaryPromise = function() {
var wasmPath = "ascdesktop://fonts/" + wasmBinaryFile.substr(8);
return new Promise(function (resolve, reject) {
var xhr = new XMLHttpRequest();
xhr.open('GET', wasmPath, true);
xhr.responseType = 'arraybuffer';
if (xhr.overrideMimeType)
xhr.overrideMimeType('text/plain; charset=x-user-defined');
else
xhr.setRequestHeader('Accept-Charset', 'x-user-defined');
xhr.onload = function () {
if (this.status == 200) {
resolve(new Uint8Array(this.response));
}
};
xhr.send(null);
});
}
}
else
{
getBinaryPromise = function() {
return getBinaryPromise2();
}
}
//polyfill
//module
self.spellchecker = null;
function onMessageEvent(data, port)
{
if (data.type == "init")
{
if (self.spellchecker)
return;
self.spellchecker = new Spellchecker();
self.spellchecker.languagesPath = data.dictionaries_path;
var languages = data.languages;
for (var i in languages)
self.spellchecker.addDefaultLanguage(i, languages[i]);
self.spellchecker.init();
return;
}
if (!self.spellchecker)
return;
self.spellchecker.messages.push(data);
if (port)
self.spellchecker.ports.push(port);
if (1 < self.spellchecker.messages.length)
{
// значит еще грузим что-то
return;
}
self.spellchecker.checkMessage();
}
self.onconnect = function(e)
{
var port = e.ports[0];
port.onmessage = function(e) {
onMessageEvent(e.data, port);
}
};
self.onmessage = function(e)
{
onMessageEvent(e.data);
};
self.engineInit = false;
self.onEngineInit = function()
{
self.engineInit = true;
if (self.spellchecker)
{
self.spellchecker.init();
self.spellchecker.checkMessage();
}
};
function Dictionary()
{
this.dataAff = null;
this.dataDic = null;
this.status = 0;
this.id = 0;
this.language = null;
this.load_file = function(src, params)
{
var xhr = new XMLHttpRequest();
xhr.sender = this;
xhr.params = params;
xhr.open('GET', src, true);
xhr.responseType = 'arraybuffer';
if (xhr.overrideMimeType)
xhr.overrideMimeType('text/plain; charset=x-user-defined');
else
xhr.setRequestHeader('Accept-Charset', 'x-user-defined');
xhr.onload = function()
{
if (xhr.sender.status >= 2)
return;
if (this.response && this.status == 200)
{
var uintData = new Uint8Array(this.response);
switch (this.params)
{
case "aff":
{
this.sender.dataAff = uintData;
break;
}
case "dic":
{
this.sender.dataDic = uintData;
break;
}
default:
break;
}
xhr.sender.status++;
}
if (xhr.sender.status == 2)
{
self.spellchecker.onLoadDictionary(this.sender);
}
};
xhr.onerror = function()
{
xhr.sender.status = 2;
self.spellchecker.onLoadDictionary(this.sender);
};
xhr.send(null);
};
this.load = function()
{
if (!this.language)
{
this.status = 2;
self.spellchecker.onLoadDictionary(this);
return;
}
this.load_file(self.spellchecker.languagesPath + "/" + this.language.aff, "aff");
this.load_file(self.spellchecker.languagesPath + "/" + this.language.dic, "dic");
};
this.freeUnusedData = function()
{
this.dataAff = null;
this.dataDic = null;
};
}
function Spellchecker()
{
this.languagesPath = "";
this.languages = {};
this.readyLanguages = {};
this.messages = [];
this.ports = [];
this.tmpStrings = new ArrayBuffer(1000);
this.engine = 0;
this.maxEngines = 3;
this.maxDictionaries = 5;
this.languageQueue = [];
this.maxDictionariesHandler = function()
{
if (this.languageQueue.length > this.maxDictionaries)
{
var toDelete = this.languageQueue.length - this.maxDictionaries;
for (let i = 0; i < toDelete; i++)
{
var lk = this.languageQueue[0];
this.deleteDictionaty(lk);
delete this.readyLanguages[lk];
this.languageQueue.shift();
}
}
};
this.deleteDictionaty = function(lk)
{
if (!lk)
return;
var affID = lk + ".aff";
var dicID = lk + ".dic"
var engineID = affID + dicID;
var engineIDptr = this.allocString(engineID);
var langAffptr = this.allocString(affID);
var langDicptr = this.allocString(dicID);
Module._Spellchecker_RemoveDicrionary(this.engine, langAffptr);
Module._Spellchecker_RemoveDicrionary(this.engine, langDicptr);
Module._Spellchecker_RemoveEngine(this.engine, engineIDptr);
this.freeString(engineIDptr);
this.freeString(langAffptr);
this.freeString(langDicptr);
};
this.init = function()
{
if (0 == this.engine && self.engineInit)
this.engine = this.createEngine();
};
this.addDefaultLanguage = function(id, path)
{
this.languages["" + id] = {
aff : path + "/" + path + ".aff",
dic : path + "/" + path + ".dic"
};
};
this.onLoadDictionary = function(dictionary)
{
if (!dictionary.dataAff || !dictionary.dataDic)
{
this.checkMessage();
return;
}
var aff_path = this.allocString(dictionary.id + ".aff");
var dic_path = this.allocString(dictionary.id + ".dic");
var pointerAff = Module._Spellchecker_Malloc(dictionary.dataAff.length);
Module.HEAP8.set(dictionary.dataAff, pointerAff);
var pointerDic = Module._Spellchecker_Malloc(dictionary.dataDic.length);
Module.HEAP8.set(dictionary.dataDic, pointerDic);
Module._Spellchecker_AddDictionary(this.engine, aff_path, pointerAff, dictionary.dataAff.length);
Module._Spellchecker_AddDictionary(this.engine, dic_path, pointerDic, dictionary.dataDic.length);
this.freeString(aff_path);
this.freeString(dic_path);
dictionary.freeUnusedData();
this.checkMessage();
};
this.checkMessage = function()
{
if (0 == this.messages.length || !self.engineInit)
return;
var m = this.messages[0];
var isReady = true;
for (var indexLang = 0, lenLangs = m.usrLang.length; indexLang < lenLangs; indexLang++)
{
var lang_key = "" + m.usrLang[indexLang];
var readyLang = this.readyLanguages[lang_key];
if (!readyLang)
{
// начнем грузить
var langToReady = new Dictionary();
langToReady.id = lang_key;
langToReady.language = this.languages[lang_key];
this.readyLanguages[lang_key] = langToReady;
this.languageQueue.push(lang_key); // push lang info into the queue
langToReady.load();
isReady = false;
break;
}
else if (readyLang.status != 2)
{
// ждем
isReady = false;
break;
}
else
{
// все готово.
continue;
}
}
if (!isReady)
{
// ждем
return;
}
switch (m.type)
{
case "spell":
{
this.Spell(m);
break;
}
case "suggest":
{
this.Suggest(m);
break;
}
default:
break;
}
this.maxDictionariesHandler();
this.messages.shift();
};
this.allocString = function(string)
{
var inputLen = string.length;
var testLen = 6 * inputLen + 1;
if (testLen > this.tmpStrings.byteLength)
this.tmpStrings = new ArrayBuffer(testLen);
var code = 0;
var index = 0;
var outputIndex = 0;
var outputDataTmp = new Uint8Array(this.tmpStrings);
var outputData = outputDataTmp;
while (index < inputLen)
{
code = string.charCodeAt(index++);
if (code >= 0xD800 && code <= 0xDFFF && index < inputLen)
{
code = 0x10000 + (((code & 0x3FF) << 10) | (0x03FF & string.charCodeAt(index++)));
}
if (code < 0x80)
{
outputData[outputIndex++] = code;
}
else if (code < 0x0800)
{
outputData[outputIndex++] = 0xC0 | (code >> 6);
outputData[outputIndex++] = 0x80 | (code & 0x3F);
}
else if (code < 0x10000)
{
outputData[outputIndex++] = 0xE0 | (code >> 12);
outputData[outputIndex++] = 0x80 | ((code >> 6) & 0x3F);
outputData[outputIndex++] = 0x80 | (code & 0x3F);
}
else if (code < 0x1FFFFF)
{
outputData[outputIndex++] = 0xF0 | (code >> 18);
outputData[outputIndex++] = 0x80 | ((code >> 12) & 0x3F);
outputData[outputIndex++] = 0x80 | ((code >> 6) & 0x3F);
outputData[outputIndex++] = 0x80 | (code & 0x3F);
}
else if (code < 0x3FFFFFF)
{
outputData[outputIndex++] = 0xF8 | (code >> 24);
outputData[outputIndex++] = 0x80 | ((code >> 18) & 0x3F);
outputData[outputIndex++] = 0x80 | ((code >> 12) & 0x3F);
outputData[outputIndex++] = 0x80 | ((code >> 6) & 0x3F);
outputData[outputIndex++] = 0x80 | (code & 0x3F);
}
else if (code < 0x7FFFFFFF)
{
outputData[outputIndex++] = 0xFC | (code >> 30);
outputData[outputIndex++] = 0x80 | ((code >> 24) & 0x3F);
outputData[outputIndex++] = 0x80 | ((code >> 18) & 0x3F);
outputData[outputIndex++] = 0x80 | ((code >> 12) & 0x3F);
outputData[outputIndex++] = 0x80 | ((code >> 6) & 0x3F);
outputData[outputIndex++] = 0x80 | (code & 0x3F);
}
}
outputData[outputIndex++] = 0;
var tmpBuffer = new Uint8Array(this.tmpStrings, 0, outputIndex);
var pointer = Module._Spellchecker_Malloc(outputIndex);
Module.HEAP8.set(tmpBuffer, pointer);
return pointer;
};
this.freeString = function(stringPointer)
{
Module._Spellchecker_Free(stringPointer);
};
this.readFromUtf8 = function(buffer, start, len)
{
var result = "";
var index = start;
var end = start + len;
while (index < end)
{
var u0 = buffer[index++];
if (!(u0 & 128))
{
result += String.fromCharCode(u0);
continue;
}
var u1 = buffer[index++] & 63;
if ((u0 & 224) == 192)
{
result += String.fromCharCode((u0 & 31) << 6 | u1);
continue;
}
var u2 = buffer[index++] & 63;
if ((u0 & 240) == 224)
{
u0 = (u0 & 15) << 12 | u1 << 6 | u2;
}
else
{
u0 = (u0 & 7) << 18 | u1 << 12 | u2 << 6 | buffer[index++] & 63;
}
if (u0 < 65536)
{
result += String.fromCharCode(u0);
}
else
{
var ch = u0 - 65536;
result += String.fromCharCode(55296 | ch >> 10, 56320 | ch & 1023);
}
}
return result;
};
this.readSuggests = function(pointer)
{
if (0 == pointer)
return [];
var lenArray = new Int32Array(Module["HEAP8"].buffer, pointer, 4);
var len = lenArray[0];
len -= 4;
var buffer = new Uint8Array(Module["HEAP8"].buffer, pointer + 4, len);
var index = 0;
var ret = [];
while (index < len)
{
var lenRec = buffer[index] | buffer[index + 1] << 8 | buffer[index + 2] << 16 | buffer[index + 3] << 24;
index += 4;
ret.push(this.readFromUtf8(buffer, index, lenRec));
index += lenRec;
}
return ret;
};
this.createEngine = function()
{
return Module._Spellchecker_Create(this.maxEngines);
};
this.destroyEngine = function()
{
Module._Spellchecker_Destroy();
};
this.Spell = function(data)
{
var len = Math.min(data.usrLang.length, data.usrWords.length);
if (0 == len)
return;
data.usrCorrect = new Array(len);
var curLang = "";
for (var i = 0; i < len; i++)
{
if (curLang != ("" + data.usrLang[i]))
{
curLang = "" + data.usrLang[i];
var aff = this.allocString(curLang + ".aff");
var dic = this.allocString(curLang + ".dic");
ret = Module._Spellchecker_Load(this.engine, aff, dic);
this.freeString(aff);
this.freeString(dic);
}
var word = this.allocString(data.usrWords[i]);
data.usrCorrect[i] = (1 == Module._Spellchecker_Spell(this.engine, word)) ? true : false;
this.freeString(word);
}
this.sendAnswer(data);
};
this.Suggest = function(data)
{
var len = Math.min(data.usrLang.length, data.usrWords.length);
if (0 == len)
return;
data.usrSuggest = new Array(len);
var curLang = "";
for (var i = 0; i < len; i++)
{
if (curLang != ("" + data.usrLang[i]))
{
curLang = "" + data.usrLang[i];
var aff = this.allocString(curLang + ".aff");
var dic = this.allocString(curLang + ".dic");
ret = Module._Spellchecker_Load(this.engine, aff, dic);
this.freeString(aff);
this.freeString(dic);
}
var word = this.allocString(data.usrWords[i]);
var pointerSuggests = Module._Spellchecker_Suggest(this.engine, word);
data.usrSuggest[i] = this.readSuggests(pointerSuggests);
this.freeString(word);
}
this.sendAnswer(data);
};
this.sendAnswer = function(data)
{
if (self.spellchecker.ports.length == 0)
{
self.postMessage(data);
}
else
{
var port = self.spellchecker.ports.shift();
port.postMessage(data);
}
setTimeout(function(){
self.spellchecker.checkMessage();
}, 1);
};
}

View File

@ -1,61 +0,0 @@
#include "base.h"
#include "engine.h"
std::map<std::string, CFileMemory*> CSpellchecker::g_dictionaries;
void* Spellchecker_Malloc(unsigned int size)
{
return ::malloc(size);
}
void Spellchecker_Free(void* p)
{
if (p)
::free(p);
}
CSpellchecker* Spellchecker_Create(size_t max_engine_number)
{
return new CSpellchecker(max_engine_number);
}
void Spellchecker_Destroy(CSpellchecker* p)
{
delete p;
}
int Spellchecker_AddDictionary(CSpellchecker* p, const char* id, unsigned char* data, unsigned int size)
{
if (!p)
return 0;
return p->AddDictionary(id, data, size);
}
void Spellchecker_RemoveDicrionary(CSpellchecker* p, const char* id)
{
if (!p)
return;
p->RemoveDictionary(id);
}
int Spellchecker_Load(CSpellchecker* p, const char* aff_id, const char* dic_id)
{
if (!p) return 0;
return p->Load(aff_id, dic_id);
}
int Spellchecker_Spell(CSpellchecker* p, const char* word_utf8)
{
return p->Spell(word_utf8);
}
unsigned char* Spellchecker_Suggest(CSpellchecker* p, const char* word_utf8)
{;
return p->Suggest(word_utf8);
}
void Spellchecker_RemoveEngine(CSpellchecker* p, const char* sid)
{
p->RemoveEngine(sid);
}
double Spellchecker_TotalAllocatedMemory()
{
struct mallinfo a;
a = mallinfo(); // Debug
return (double)a.uordblks / 1000. / 1000.;
}

View File

@ -1,22 +0,0 @@
#include <memory>
#include <malloc.h>
class CSpellchecker;
extern "C"
{
void* Spellchecker_Malloc(unsigned int size);
void Spellchecker_Free(void* p);
CSpellchecker* Spellchecker_Create(size_t max_engine_number);
void Spellchecker_Destroy(CSpellchecker*);
int Spellchecker_AddDictionary(CSpellchecker* p, const char* sid, unsigned char* data, unsigned int size);
void Spellchecker_RemoveDicrionary(CSpellchecker* p, const char* sid);
int Spellchecker_Load(CSpellchecker* p, const char* aff_id, const char* dic_id);
int Spellchecker_Spell(CSpellchecker* p, const char* word_utf8);
void Spellchecker_RemoveEngine(CSpellchecker* p, const char* sid);
unsigned char* Spellchecker_Suggest(CSpellchecker* p, const char* word_utf8);
double Spellchecker_TotalAllocatedMemory(); //Debug
}

View File

@ -1,355 +0,0 @@
#include "hunspell.h"
#include <iostream>
#include <stdlib.h>
#include "base.h"
#include <map>
#include <queue>
#include <string>
#include <memory.h>
//#define WASM_LOGGING fprintf
class CFileMemory
{
public:
unsigned char* data;
unsigned int len;
public:
CFileMemory(unsigned char* _data = NULL, unsigned int _len = 0)
{
data = _data;
len = _len;
}
~CFileMemory()
{
if (data)
{
Spellchecker_Free(data);
data = NULL;
}
}
};
class CSuggests
{
protected:
char* m_pData;
size_t m_lSize;
char* m_pDataCur;
size_t m_lSizeCur;
public:
CSuggests()
{
m_pData = NULL;
m_lSize = 0;
m_pDataCur = m_pData;
m_lSizeCur = m_lSize;
}
CSuggests(const size_t& nLen)
{
m_lSize = nLen;
m_pData = (char*)malloc(m_lSize * sizeof(char));
m_lSizeCur = 0;
m_pDataCur = m_pData;
}
virtual ~CSuggests()
{
Clear();
}
inline void AddSize(const size_t& nSize)
{
if (NULL == m_pData)
{
m_lSize = 1000;
if (nSize > m_lSize)
m_lSize = nSize;
m_pData = (char*)malloc(m_lSize * sizeof(char));
m_lSizeCur = 0;
m_pDataCur = m_pData;
return;
}
if ((m_lSizeCur + nSize) > m_lSize)
{
while ((m_lSizeCur + nSize) > m_lSize)
{
m_lSize *= 2;
}
char* pRealloc = (char*)realloc(m_pData, m_lSize * sizeof(char));
if (NULL != pRealloc)
{
// реаллок сработал
m_pData = pRealloc;
m_pDataCur = m_pData + m_lSizeCur;
}
else
{
char* pMalloc = (char*)malloc(m_lSize * sizeof(char));
memcpy(pMalloc, m_pData, m_lSizeCur * sizeof(char));
free(m_pData);
m_pData = pMalloc;
m_pDataCur = m_pData + m_lSizeCur;
}
}
}
public:
void AddInt(const unsigned int& value)
{
AddSize(4);
memcpy(m_pDataCur, &value, sizeof(unsigned int));
m_pDataCur += 4;
m_lSizeCur += 4;
}
void WriteString(const char* value, const unsigned int& len)
{
AddSize(len + 4);
memcpy(m_pDataCur, &len, sizeof(unsigned int));
m_pDataCur += 4;
m_lSizeCur += 4;
memcpy(m_pDataCur, value, len);
m_pDataCur += len;
m_lSizeCur += len;
}
unsigned char* GetBuffer()
{
return (unsigned char*)m_pData;
}
void Clear()
{
free(m_pData);
m_pData = NULL;
m_lSize = 0;
m_pDataCur = m_pData;
m_lSizeCur = 0;
}
void ClearNoAttack()
{
m_pDataCur = m_pData;
m_lSizeCur = 0;
}
unsigned int GetSize()
{
return (unsigned int)m_lSizeCur;
}
void SkipLen()
{
AddInt(0);
}
void WriteLen()
{
unsigned int len = (unsigned int)m_lSizeCur;
memcpy(m_pData, &len, sizeof(unsigned int));
}
};
class LimitedEngineMap
{
public:
LimitedEngineMap(size_t _maxEngineNumer)
{
m_nMaxEngineNumber = _maxEngineNumer;
}
~LimitedEngineMap()
{
for (std::pair<const std::string, Hunhandle*> &i : m_mapDictionariesEngines)
{
Hunspell_destroy(i.second);
}
m_mapDictionariesEngines.clear();
}
std::map<std::string, Hunhandle*>::iterator find(const std::string &to_find)
{
return m_mapDictionariesEngines.find(to_find);
}
std::map<std::string, Hunhandle*>::iterator end()
{
return m_mapDictionariesEngines.end();
}
std::pair<std::map<std::string, Hunhandle*>::iterator,bool> insert(const std::pair<std::string, Hunhandle*> &data)
{
if (m_qEngineQueue.size() == m_nMaxEngineNumber)
{
if (m_mapDictionariesEngines.find(m_qEngineQueue.front()) !=
m_mapDictionariesEngines.end())
{
Hunspell_destroy(m_mapDictionariesEngines[m_qEngineQueue.front()]);
m_mapDictionariesEngines.erase(m_qEngineQueue.front());
m_qEngineQueue.pop();
}
}
m_qEngineQueue.push(data.first);
return m_mapDictionariesEngines.insert(data);
}
void RemoveEngine(const char* id)
{
if (m_mapDictionariesEngines.find(id) == m_mapDictionariesEngines.end())
{
return;
}
std::queue<std::string> new_queue;;
Hunspell_destroy(m_mapDictionariesEngines[id]);
m_mapDictionariesEngines.erase(id);
while (!m_qEngineQueue.empty())
{
if (m_qEngineQueue.front() != id)
{
new_queue.push(m_qEngineQueue.front());
}
m_qEngineQueue.pop();
}
m_qEngineQueue = new_queue;
}
private:
std::map<std::string, Hunhandle*> m_mapDictionariesEngines;
std::queue<std::string> m_qEngineQueue;
size_t m_nMaxEngineNumber;
};
class CSpellchecker
{
public:
static std::map<std::string, CFileMemory*> g_dictionaries;
public:
LimitedEngineMap m_oDictionariesEngines;
std::string m_sCurrentDictionaryId;
Hunhandle* m_pCurrentDictionary;
CSuggests m_oSuggests;
public:
CSpellchecker(size_t _MaxEngineNumber) :
m_oDictionariesEngines(_MaxEngineNumber)
{
m_sCurrentDictionaryId = "";
m_pCurrentDictionary = NULL;
}
~CSpellchecker()
{
m_pCurrentDictionary = NULL;
for (std::pair<const std::string, CFileMemory*> &i : g_dictionaries)
{
delete i.second;
}
g_dictionaries.clear();
}
public:
int AddDictionary(const char*& id, unsigned char* data, unsigned int size)
{
#ifdef WASM_LOGGING
WASM_LOGGING(stderr, "add dictionary: [%s, %d]\n", id, (int)size);
#endif
RemoveDictionary(id);
g_dictionaries.insert(std::pair<std::string, CFileMemory*>(std::string(id), new CFileMemory(data, size)));
return 1;
}
void RemoveDictionary(const char*& id)
{
std::string sid(id);
std::map<std::string, CFileMemory*>::iterator iter = g_dictionaries.find(sid);
if (iter != g_dictionaries.end())
{
CFileMemory* file = iter->second;
g_dictionaries.erase(iter);
delete file;
}
}
static CFileMemory* Get(const char*& id)
{
std::map<std::string, CFileMemory*>::iterator iter = g_dictionaries.find(std::string(id));
if (iter == g_dictionaries.end())
return NULL;
return iter->second;
}
int Load(const char*& aff_id, const char*& dic_id)
{
#ifdef WASM_LOGGING
WASM_LOGGING(stderr, "load: [%s, %s]\n", aff_id, dic_id);
#endif
return (NULL != SetLanguage(aff_id, dic_id)) ? 1 : 0;
}
int Spell(const char*& word)
{
#ifdef WASM_LOGGING
WASM_LOGGING(stderr, "spell: [%s]\n", word);
#endif
if (!m_pCurrentDictionary)
return 0;
return Hunspell_spell(m_pCurrentDictionary, word);
}
unsigned char* Suggest(const char*& word)
{
#ifdef WASM_LOGGING
WASM_LOGGING(stderr, "suggest: [%s]\n", word);
#endif
if (!m_pCurrentDictionary)
return NULL;
char** pSuggest;
int nSuggestCount = Hunspell_suggest(m_pCurrentDictionary, &pSuggest, word);
m_oSuggests.ClearNoAttack();
m_oSuggests.SkipLen();
for (int i = 0; i < nSuggestCount; ++i)
{
m_oSuggests.WriteString(pSuggest[i], (unsigned int)strlen(pSuggest[i]));
}
m_oSuggests.WriteLen();
if (0 < nSuggestCount)
Hunspell_free_list(m_pCurrentDictionary, &pSuggest, nSuggestCount);
return m_oSuggests.GetBuffer();
}
void RemoveEngine(const char* id)
{
m_oDictionariesEngines.RemoveEngine(id);
if (m_sCurrentDictionaryId == id)
{
m_sCurrentDictionaryId = "";
m_pCurrentDictionary = NULL;
}
}
protected:
Hunhandle* SetLanguage(const std::string& aff_id, const std::string& dic_id)
{
if ((aff_id + dic_id) == m_sCurrentDictionaryId)
return m_pCurrentDictionary;
m_sCurrentDictionaryId = aff_id + dic_id;
m_pCurrentDictionary = NULL;
std::map<std::string, Hunhandle*>::iterator iterEngine = m_oDictionariesEngines.find(m_sCurrentDictionaryId);
if (iterEngine != m_oDictionariesEngines.end())
{
m_pCurrentDictionary = iterEngine->second;
return m_pCurrentDictionary;
}
Hunhandle* pDictionary = Hunspell_create(aff_id.c_str(), dic_id.c_str());
m_oDictionariesEngines.insert(std::pair<std::string, Hunhandle*>(m_sCurrentDictionaryId, pDictionary));
m_pCurrentDictionary = pDictionary;
return m_pCurrentDictionary;
}
};

View File

@ -1,58 +0,0 @@
#include "license.hunspell"
#include "license.myspell"
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include "filemgr.hxx"
#include "csutil.hxx"
#include "./engine.h"
int FileMgr::fail(const char * err, const char * par) {
fprintf(stderr, err, par);
return -1;
}
FileMgr::FileMgr(const char * file, const char * key)
: hin(NULL), fin(NULL), linenum(0)
{
in[0] = '\0';
CFileMemory* file_memory = CSpellchecker::Get(file);
if (!file_memory)
{
fail(MSG_OPEN, file);
}
else
{
index = 0;
size = file_memory->len;
memory = (char*)file_memory->data;
}
}
FileMgr::~FileMgr()
{
if (fin) fclose(fin);
if (hin) delete hin;
}
char * FileMgr::getline() {
if(index >= size)
return NULL;
int i = 0,
l = BUFSIZE -1;
for(;index < size && memory[index] != '\n' && memory[index] != EOF && i <= l; index++, i++)
in[i] = memory[index];
in[i] = '\0';
index++;
if(index < size)
linenum++;
return strdup(in);
}
int FileMgr::getlinenum() {
return linenum;
}

View File

@ -1,52 +0,0 @@
//#include "license.hunspell"
//#include "license.myspell"
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include "./filemgr.hxx"
#include "csutil.hxx"
#include "./engine.h"
int FileMgr::fail(const char *err, const char *par)
{
fprintf(stderr, err, par);
return -1;
}
FileMgr::FileMgr(const char *file, const char *key)
: hin(NULL), linenum(0), memin(NULL)
{
in[0] = '\0';
CFileMemory *file_memory = CSpellchecker::Get(file);
if (!file_memory)
{
fail(MSG_OPEN, file);
}
else
{
memin.from_buffer((char *)file_memory->data, file_memory->len);
}
}
FileMgr::~FileMgr()
{
if (hin)
delete hin;
}
bool FileMgr::getline(std::string &dest)
{
bool ret = memin.get_line(dest);
if (ret)
++linenum;
return ret;
}
int FileMgr::getlinenum()
{
return linenum;
}

View File

@ -1,37 +0,0 @@
#include "./base.h"
#include <iostream>
int main()
{
CSpellchecker* spell = Spellchecker_Create(100);
FILE* fAff = fopen("en_GB.aff", "rb");
fseek(fAff, 0, SEEK_END);
unsigned int nAffSize = (unsigned int)ftell(fAff);
fseek(fAff, 0, SEEK_SET);
unsigned char* pAffData = (unsigned char*)Spellchecker_Malloc(nAffSize);
size_t nAffSizeRead = fread((void*)pAffData, 1, (size_t)nAffSize, fAff);
fclose(fAff);
FILE* fDic = fopen("en_GB.dic", "rb");
fseek(fDic, 0, SEEK_END);
unsigned int nDicSize = (unsigned int)ftell(fDic);
fseek(fDic, 0, SEEK_SET);
unsigned char* pDicData = (unsigned char*)Spellchecker_Malloc(nDicSize);
size_t nDicSizeRead = fread((void*)pDicData, 1, (size_t)nDicSize, fDic);
fclose(fDic);
int bIsAdd1 = Spellchecker_AddDictionary(spell, "en_US.aff", pAffData, nAffSize);
int bIsAdd2 = Spellchecker_AddDictionary(spell, "en_US.dic", pDicData, nDicSize);
while(1) {
Spellchecker_Load(spell, "en_US.aff", "en_US.dic");
Spellchecker_RemoveEngine(spell, "en_US.affen_US.dic");
std::cout << Spellchecker_Debug() << std::endl;
}
// int nCheck1 = Spellchecker_Spell(spell, "hello");
// int nCheck2 = Spellchecker_Spell(spell, "hellop");
// unsigned char* pSuggestData = Spellchecker_Suggest(spell, "hellop");
Spellchecker_Destroy(spell);
return 0;
}

View File

@ -1,50 +0,0 @@
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
class string_buffer_stream
{
private:
char* m_buffer;
unsigned int m_pos;
unsigned int m_size;
public:
string_buffer_stream(char* buf = NULL, unsigned int len = 0)
{
m_buffer = buf;
m_pos = 0;
m_size = len;
}
void from_buffer(char* buf, unsigned int len)
{
m_buffer = buf;
m_pos = 0;
m_size = len;
}
// emulate
// https://en.cppreference.com/w/cpp/string/basic_string/getline
bool get_line(std::string& data)
{
data.erase();
if (m_pos >= m_size)
return false;
while (m_pos < m_size)
{
char c = m_buffer[m_pos++];
if (c == '\n')
break;
if (c == '\r')
{
if (m_pos < m_size && m_buffer[m_pos] == '\n')
++m_pos;
break;
}
data += c;
}
return true;
}
};

View File

@ -1,14 +0,0 @@
import sys
sys.path.append("../../../../../../build_tools/scripts")
import base
base.configure_common_apps()
base.replaceInFile("../deploy/engine/hyphen.js", "__ATPOSTRUN__=[];", "__ATPOSTRUN__=[onLoadModule];")
base.replaceInFile("../deploy/engine/hyphen_ie.js", "__ATPOSTRUN__=[];", "__ATPOSTRUN__=[onLoadModule];")
base.replaceInFile("../deploy/engine/hyphen.js", "__ATPOSTRUN__ = [];", "__ATPOSTRUN__=[onLoadModule];")
base.replaceInFile("../deploy/engine/hyphen_ie.js", "__ATPOSTRUN__ = [];", "__ATPOSTRUN__=[onLoadModule];")
base.replaceInFile("../deploy/engine/hyphen.js", "function getBinaryPromise()", "function getBinaryPromise2()")
base.replaceInFile("../deploy/engine/hyphen_ie.js", "function getBinaryPromise()", "function getBinaryPromise2()")
base.copy_file("../library.js", "../deploy/hyphen.js")

View File

@ -1,40 +0,0 @@
{
"name": "hyphen",
"res_folder": "../deploy/engine",
"wasm": true,
"asm": true,
"embed_mem_file": true,
"run_before": "",
"run_after": "after.py",
"base_js_content": "../module.js",
"compiler_flags": [
"-O3",
"-fno-exceptions",
"-fno-rtti",
"-Wno-unused-command-line-argument",
"-sALLOW_MEMORY_GROWTH"
],
"exported_functions": [
"_malloc",
"_free",
"_hyphenCreateApplication",
"_hyphenDestroyApplication",
"_hyphenLoadDictionary",
"_hyphenWord"
],
"include_path": ["../src"],
"define": ["GRAPHICS_NO_USE_DYNAMIC_LIBRARY", "HYPHEN_ENGINE_DISABLE_FILESYSTEM"],
"compile_files_array": [
{
"name": "h_e",
"folder": "../../../../../DesktopEditor/fontengine",
"files": ["TextHyphen.cpp"]
},
{
"name": "h_m",
"folder": "../src",
"files": ["hyphen.cpp"]
}
]
}

View File

@ -1,43 +0,0 @@
(function(window) {
window.hyphen = window.hyphen || {};
window.hyphen.isReady = false;
var not_ready = function() {
console.log('Module is not ready');
}
window.hyphen.destroyApplication = not_ready;
window.hyphen.loadDictionary = not_ready;
window.hyphen.hyphenWord = not_ready;
window.hyphen.onLoadModule = function(exports) {
window.hyphen.isReady = true;
window.hyphen.destroyApplication = exports.destroyApplication;
window.hyphen.loadDictionary = exports.loadDictionary;
window.hyphen.hyphenWord = exports.hyphenWord;
};
window.hyphen.loadModule = function() {
var path = '../deploy/engine/';
// wasm support check
var useWasm = false;
const webAsmObj = window['WebAssembly'];
if (typeof webAsmObj === 'object') {
if (typeof webAsmObj['Memory'] === 'function') {
if ((typeof webAsmObj['instantiateStreaming'] === 'function') || (typeof webAsmObj['instantiate'] === 'function')) {
useWasm = true;
}
}
}
path += (useWasm ? 'hyphen.js' : 'hyphen_ie.js');
const script = document.createElement('script');
script.type = 'text/javascript';
script.src = path;
document.head.appendChild(script);
}
})(self);

View File

@ -1,81 +0,0 @@
(function(window) {
var isModuleLoaded = false;
var application;
function onLoadModule() {
isModuleLoaded = true;
application = Module._hyphenCreateApplication();
if (window.hyphen) {
window.hyphen.onLoadModule && window.hyphen.onLoadModule({
destroyApplication: function() {
Module._hyphenDestroyApplication(application);
},
loadDictionary: hyphenLoadDictionary,
hyphenWord: hyphenWord
});
}
};
//desktop_fetch
//polyfill
//string_utf8
//module
/**
*
* @param {Number} app
* @param {Number} lang
* @param {arraybuffer} dict
* @returns {Boolean} isSuccess
*/
function hyphenLoadDictionary(lang, dict)
{
if (!isModuleLoaded)
return;
let dictSize = dict.byteLength;
let dictPointer = Module._malloc(dictSize);
Module.HEAP8.set(new Uint8ClampedArray(dict), dictPointer);
let result = Module._hyphenLoadDictionary(application, lang, dictPointer, dictSize);
Module._free(dictPointer);
return (result === 0) ? true : false;
}
/**
*
* @param {Number} lang
* @param {String} word
* @returns {Array}
* Returns hyphen vector of word
*/
function hyphenWord(lang, word)
{
if (!isModuleLoaded)
return;
let wordPointer = word.toUtf8Pointer();
let wordLen = wordPointer.length;
let hyphens = [];
if (wordPointer)
{
const ptr = Module._hyphenWord(application, lang, wordPointer.ptr, wordLen);
wordPointer.free();
let vector = new Uint8ClampedArray(Module.HEAP8.buffer, ptr, wordLen + 5);
for (let i = 0; vector[i] != 0; i++)
{
if (1 == (vector[i] & 1))
hyphens.push((i + 1));
}
}
return hyphens;
}
})(self);

View File

@ -1,68 +0,0 @@
/*
* (c) Copyright Ascensio System SIA 2010-2023
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at 20A-6 Ernesta Birznieka-Upish
* street, Riga, Latvia, EU, LV-1050.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#include "../../../../../DesktopEditor/fontengine/TextHyphen.h"
#ifdef _WIN32
#define WASM_EXPORT __declspec(dllexport)
#else
#define WASM_EXPORT __attribute__((visibility("default")))
#endif
#ifdef __cplusplus
extern "C" {
#endif
WASM_EXPORT NSHyphen::CEngine* hyphenCreateApplication()
{
return new NSHyphen::CEngine();
}
WASM_EXPORT void hyphenDestroyApplication(NSHyphen::CEngine* app)
{
delete app;
}
WASM_EXPORT int hyphenLoadDictionary(NSHyphen::CEngine* app, const int lang, const char *dict, const unsigned int dict_size)
{
return app->LoadDictionary(lang, (const unsigned char*)dict, dict_size);
}
WASM_EXPORT int hyphenCheckDictionary(NSHyphen::CEngine* app, const int lang)
{
return app->IsDictionaryExist(lang) ? 1 : 0;
}
WASM_EXPORT char* hyphenWord(NSHyphen::CEngine* app, const int lang, const char *word, const int word_len)
{
return app->Process(lang, word, word_len);
}
#ifdef __cplusplus
}
#endif

View File

@ -1,52 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>test</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<form>
<textarea id = "textarea"></textarea>
<button type = "submit">OK</button>
<select name = "combobox" id = "combobox">
<option></option>
<option value = "bg_BG">bg_BG</option>
<option value = "ca_ES">ca_ES</option>
<option value = "da_DK">da_DK</option>
<option value = "de_AT">de_AT</option>
<option value = "de_CH">de_CH</option>
<option value = "de_DE">de_DE</option>
<option value = "el_GR">el_GR</option>
<option value = "en_AU">en_AU</option>
<option value = "en_GB">en_GB</option>
<option value = "en_US">en_US</option>
<option value = "es_ES">es_ES</option>
<option value = "fr_FR">fr_FR</option>
<option value = "gl_ES">gl_ES</option>
<option value = "hr_HR">hr_HR</option>
<option value = "hu_HU">hu_HU</option>
<option value = "id_ID">id_ID</option>
<option value = "it_IT">it_IT</option>
<option value = "lv_LV">lv_LV</option>
<option value = "mn_MN">mn_MN</option>
<option value = "nb_NO">nb_NO</option>
<option value = "nl_NL">nl_NL</option>
<option value = "nn_NO">nn_NO</option>
<option value = "pl_PL">pl_PL</option>
<option value = "pt_BR">pt_BR</option>
<option value = "pt_PT">pt_PT</option>
<option value = "ro_RO">ro_RO</option>
<option value = "ru_RU">ru_RU</option>
<option value = "sk_SK">sk_SK</option>
<option value = "sl_SI">sl_SI</option>
<option value = "sr_Cyrl_RS">sr_Cyrl_RS</option>
<option value = "sr_Latn_RS">sr_Latn_RS</option>
<option value = "sv_SE">sv_SE</option>
<option value = "uk_UA">uk_UA</option>
</select>
</form>
<script src = "../deploy/hyphen.js"></script>
<script src = "main.js"></script>
</body>
</html>

View File

@ -1,117 +0,0 @@
(function (window, undefined) {
window.hyphen.loadModule();
var langs = {
"az_Latn_AZ" : 1068,
"bg_BG" : 1026,
"ca_ES" : 1027,
"ca_ES_valencia" : 2051,
"cs_CZ" : 1029,
"da_DK" : 1030,
"de_AT" : 3079,
"de_CH" : 2055,
"de_DE" : 1031,
"el_GR" : 1032,
"en_AU" : 3081,
"en_CA" : 4105,
"en_GB" : 2057,
"en_US" : 1033,
"en_ZA" : 7177,
"es_ES" : 3082,
"eu_ES" : 1069,
"fr_FR" : 1036,
"gl_ES" : 1110,
"hr_HR" : 1050,
"hu_HU" : 1038,
"id_ID" : 1057,
"it_IT" : 1040,
"kk_KZ" : 1087,
"ko_KR" : 1042,
"lb_LU" : 1134,
"lt_LT" : 1063,
"lv_LV" : 1062,
"mn_MN" : 1104,
"nb_NO" : 1044,
"nl_NL" : 1043,
"nn_NO" : 2068,
"oc_FR" : 1154,
"pl_PL" : 1045,
"pt_BR" : 1046,
"pt_PT" : 2070,
"ro_RO" : 1048,
"ru_RU" : 1049,
"sk_SK" : 1051,
"sl_SI" : 1060,
"sr_Cyrl_RS" : 10266,
"sr_Latn_RS" : 9242,
"sv_SE" : 1053,
"tr_TR" : 1055,
"uk_UA" : 1058,
"uz_Cyrl_UZ" : 2115,
"uz_Latn_UZ" : 1091,
"vi_VN" : 1066,
"nl_NL" : 2067
};
var textarea = document.getElementById("textarea");
var form = document.querySelector("form");
var combobox = document.getElementById("combobox");
combobox.value = "en_US";
textarea.value = "expedition";
form.onsubmit = function(event)
{
if(combobox.value == "")
return;
var lang = combobox.value;
var text = textarea.value.split("\n").join(" ").split(" ");
var request = new XMLHttpRequest();
var path = '../../../../../../dictionaries/' + lang + '/' + 'hyph_' + lang + '.dic';
request.responseType = 'arraybuffer';
if (request.overrideMimeType) {
request.overrideMimeType('text/plain; charset=x-user-defined');
} else {
request.setRequestHeader('Accept-Charset', 'x-user-defined');
}
request.open('GET', path, true);
request.send(null);
request.onload = function ()
{
var dict = request.response;
var langInt = langs[lang];
window.hyphen.loadDictionary(langInt, dict);
for (var i = 0; i < text.length; i++)
{
var hyphens = window.hyphen.hyphenWord(langInt, text[i].toLowerCase());
let itemUtf8 = text[i].toUtf8(true);
let start = 0;
let hword = "";
for (let j = 0, len = hyphens.length; j < len; j++)
{
hword += "".fromUtf8(itemUtf8, start, hyphens[j] - start);
hword += "=";
start = hyphens[j];
}
if (start < itemUtf8.length)
{
hword += "".fromUtf8(itemUtf8, start);
hword += "=";
}
console.log(hword);
}
}
event.preventDefault();
}
})(self);

View File

@ -1,10 +0,0 @@
button {
width: 60px;
height: 30px;
}
#textarea{
display: block;
width: 300px;
height: 300px;
}

View File

@ -1,13 +1,21 @@
ICU_MAJOR_VER = 58
ICU_MAJOR_VER = 74
core_windows {
exists($$PWD/$$CORE_BUILDS_PLATFORM_PREFIX/icu) {
INCLUDEPATH += $$PWD/$$CORE_BUILDS_PLATFORM_PREFIX/icu/include
} else {
INCLUDEPATH += $$PWD/icu/include
build_xp {
INCLUDEPATH += $$PWD/icu58/include
} else {
INCLUDEPATH += $$PWD/icu/include
}
}
LIBS += -L$$PWD/$$CORE_BUILDS_PLATFORM_PREFIX/build -licuuc
ICU_LIBS_PATH_WIN = $$PWD/$$CORE_BUILDS_PLATFORM_PREFIX/build
build_xp {
ICU_LIBS_PATH_WIN = $$ICU_LIBS_PATH_WIN/xp
}
LIBS += -L$$ICU_LIBS_PATH_WIN -licuuc
}
core_linux {
@ -20,8 +28,15 @@ core_linux {
core_mac {
INCLUDEPATH += $$PWD/$$CORE_BUILDS_PLATFORM_PREFIX/build/include
LIBS += $$PWD/$$CORE_BUILDS_PLATFORM_PREFIX/build/libicuuc.$${ICU_MAJOR_VER}.dylib
LIBS += $$PWD/$$CORE_BUILDS_PLATFORM_PREFIX/build/libicudata.$${ICU_MAJOR_VER}.dylib
ICU_LIBS_PATH_MAC = $$PWD/$$CORE_BUILDS_PLATFORM_PREFIX/build
bundle_dylibs {
LIBS += $$ICU_LIBS_PATH_MAC/libicudata.a
LIBS += $$ICU_LIBS_PATH_MAC/libicui18n.a
LIBS += $$ICU_LIBS_PATH_MAC/libicuuc.a
} else {
LIBS += $$ICU_LIBS_PATH_MAC/libicuuc.$${ICU_MAJOR_VER}.dylib
LIBS += $$ICU_LIBS_PATH_MAC/libicudata.$${ICU_MAJOR_VER}.dylib
}
}
core_ios {

View File

@ -1,7 +1,5 @@
#!/bin/bash
ICU_VERSION="58"
ICU_DIR="$PWD/icu"
ICU_SOURCE="${ICU_DIR}/source"
@ -47,8 +45,6 @@ defines_utypes=(
function prebuild() {
svn export http://source.icu-project.org/repos/icu/tags/release-${ICU_VERSION}/icu4c/ ${ICU_DIR} --native-eol LF
echo "===== REMOVING data from bundle ====="
#Data bundle reduction

View File

@ -1,2 +1,4 @@
vlc
vlc.*
src
!build

View File

@ -2,7 +2,7 @@
* deprecated.h: libvlc deprecated API
*****************************************************************************
* Copyright (C) 1998-2008 VLC authors and VideoLAN
* $Id: 27323a434498604ca281900c3e4087a42d22a5d8 $
* $Id$
*
* Authors: Clément Stenac <zorglub@videolan.org>
* Jean-Paul Saman <jpsaman@videolan.org>

View File

@ -2,7 +2,7 @@
* libvlc.h: libvlc external API
*****************************************************************************
* Copyright (C) 1998-2009 VLC authors and VideoLAN
* $Id: b12d900469fa6438c41421f2ac7697b93ffc8a35 $
* $Id$
*
* Authors: Clément Stenac <zorglub@videolan.org>
* Jean-Paul Saman <jpsaman@videolan.org>

View File

@ -2,7 +2,7 @@
* libvlc_media.h: libvlc external API
*****************************************************************************
* Copyright (C) 1998-2009 VLC authors and VideoLAN
* $Id: 383f366b6940f7b3d89f5945e015793833ea541f $
* $Id$
*
* Authors: Clément Stenac <zorglub@videolan.org>
* Jean-Paul Saman <jpsaman@videolan.org>
@ -30,6 +30,12 @@
extern "C" {
# endif
#if defined(_MSC_VER)
#include <basetsd.h>
typedef SSIZE_T ssize_t;
#endif
/** \defgroup libvlc_media LibVLC media
* \ingroup libvlc
* @ref libvlc_media_t is an abstract representation of a playable media.

View File

@ -2,7 +2,7 @@
* libvlc_media_discoverer.h: libvlc external API
*****************************************************************************
* Copyright (C) 1998-2009 VLC authors and VideoLAN
* $Id: 96c0515ffec98f439867814d68525288b2702b0f $
* $Id$
*
* Authors: Clément Stenac <zorglub@videolan.org>
* Jean-Paul Saman <jpsaman@videolan.org>

View File

@ -2,7 +2,7 @@
* libvlc_media_library.h: libvlc external API
*****************************************************************************
* Copyright (C) 1998-2009 VLC authors and VideoLAN
* $Id: facbf813aa16140461c6e72f166d2985c52b1d6f $
* $Id$
*
* Authors: Clément Stenac <zorglub@videolan.org>
* Jean-Paul Saman <jpsaman@videolan.org>

View File

@ -2,7 +2,7 @@
* libvlc_media_list.h: libvlc_media_list API
*****************************************************************************
* Copyright (C) 1998-2008 VLC authors and VideoLAN
* $Id: fa3b90932be8c3a9cce27925d4867aeddde748d7 $
* $Id$
*
* Authors: Pierre d'Herbemont
*

View File

@ -2,7 +2,7 @@
* libvlc_media_list_player.h: libvlc_media_list API
*****************************************************************************
* Copyright (C) 1998-2008 VLC authors and VideoLAN
* $Id: 04f7d9b9f0d47e1b8304b51ca20fd2b1045a0ff2 $
* $Id$
*
* Authors: Pierre d'Herbemont
*

View File

@ -2,7 +2,7 @@
* libvlc_media_player.h: libvlc_media_player external API
*****************************************************************************
* Copyright (C) 1998-2015 VLC authors and VideoLAN
* $Id: c431c235e92ced9e6e7d7712eb7ff0e73dc4f933 $
* $Id$
*
* Authors: Clément Stenac <zorglub@videolan.org>
* Jean-Paul Saman <jpsaman@videolan.org>
@ -559,6 +559,8 @@ LIBVLC_API uint32_t libvlc_media_player_get_xwindow ( libvlc_media_player_t *p_m
* render its video output. If LibVLC was built without Win32/Win64 API output
* support, then this has no effects.
*
* \warning the HWND must have the WS_CLIPCHILDREN set in its style.
*
* \param p_mi the Media Player
* \param drawable windows handle of the drawable
*/

View File

@ -39,7 +39,7 @@
# define LIBVLC_VERSION_MINOR (0)
/** LibVLC revision */
# define LIBVLC_VERSION_REVISION (18)
# define LIBVLC_VERSION_REVISION (21)
# define LIBVLC_VERSION_EXTRA (0)

View File

@ -2,7 +2,7 @@
* libvlc_vlm.h: libvlc_* new external API
*****************************************************************************
* Copyright (C) 1998-2008 VLC authors and VideoLAN
* $Id: cfa2d956463056b287cdb0a4faeb46442040a010 $
* $Id$
*
* Authors: Clément Stenac <zorglub@videolan.org>
* Jean-Paul Saman <jpsaman _at_ m2x _dot_ nl>

View File

@ -2,7 +2,7 @@
* vlc_access.h: Access descriptor, queries and methods
*****************************************************************************
* Copyright (C) 1999-2006 VLC authors and VideoLAN
* $Id: da06554814885d03823aefbf58e858f6941b3400 $
* $Id$
*
* Authors: Laurent Aimar <fenrir@via.ecp.fr>
*

View File

@ -2,7 +2,7 @@
* vlc_actions.h: handle vlc actions
*****************************************************************************
* Copyright (C) 2003-2016 VLC authors and VideoLAN
* $Id: 404c1662a82ef3f3ffc983a81fa73b90f5773eef $
* $Id$
*
* Authors: Sigmund Augdal Helberg <dnumgis@videolan.org>
*

View File

@ -129,7 +129,7 @@ struct audio_output
/**< Stops the existing stream (optional, may be NULL).
* \note A stream must have been started when called.
*/
int (*time_get)(audio_output_t *, mtime_t *delay);
int (*time_get)(audio_output_t *, vlc_tick_t *delay);
/**< Estimates playback buffer latency (optional, may be NULL).
* \param delay pointer to the delay until the next sample to be written
* to the playback buffer is rendered [OUT]
@ -140,7 +140,7 @@ struct audio_output
/**< Queues a block of samples for playback (mandatory, cannot be NULL).
* \note A stream must have been started when called.
*/
void (*pause)( audio_output_t *, bool pause, mtime_t date);
void (*pause)( audio_output_t *, bool pause, vlc_tick_t date);
/**< Pauses or resumes playback (optional, may be NULL).
* \param pause pause if true, resume from pause if false
* \param date timestamp when the pause or resume was requested

View File

@ -2,7 +2,7 @@
* vlc_aout_volume.h: audio volume module
*****************************************************************************
* Copyright (C) 2002-2009 VLC authors and VideoLAN
* $Id: df85b8fd14e00454e88c08061e3059fa67927dab $
* $Id$
*
* Authors: Christophe Massiot <massiot@via.ecp.fr>
* Laurent Aimar <fenrir _AT_ videolan _DOT_ org>

View File

@ -2,7 +2,7 @@
* vlc_arrays.h : Arrays and data structures handling
*****************************************************************************
* Copyright (C) 1999-2004 VLC authors and VideoLAN
* $Id: 39b69952ffce040330da239f52778c3e82024bc4 $
* $Id$
*
* Authors: Samuel Hocevar <sam@zoy.org>
* Clément Stenac <zorglub@videolan.org>

View File

@ -2,7 +2,7 @@
* vlc_bits.h : Bit handling helpers
*****************************************************************************
* Copyright (C) 2001, 2002, 2003, 2006, 2015 VLC authors and VideoLAN
* $Id: 395a789eba46ac42413f5fb5418619332589f824 $
* $Id$
*
* Authors: Laurent Aimar <fenrir@via.ecp.fr>
* Gildas Bazin <gbazin at videolan dot org>

View File

@ -2,7 +2,7 @@
* vlc_block.h: Data blocks management functions
*****************************************************************************
* Copyright (C) 2003 VLC authors and VideoLAN
* $Id: 1c9478301687233398adbb7de7da4ffc4a101f89 $
* $Id$
*
* Authors: Laurent Aimar <fenrir@via.ecp.fr>
*
@ -49,7 +49,7 @@
* - i_flags may not always be set (ie could be 0, even for a key frame
* it depends where you receive the buffer (before/after a packetizer
* and the demux/packetizer implementations.
* - i_dts/i_pts could be VLC_TS_INVALID, it means no pts/dts
* - i_dts/i_pts could be VLC_TICK_INVALID, it means no pts/dts
* - i_length: length in microseond of the packet, can be null except in the
* sout where it is mandatory.
*
@ -121,9 +121,9 @@ struct block_t
uint32_t i_flags;
unsigned i_nb_samples; /* Used for audio */
mtime_t i_pts;
mtime_t i_dts;
mtime_t i_length;
vlc_tick_t i_pts;
vlc_tick_t i_dts;
vlc_tick_t i_length;
/* Rudimentary support for overloading block (de)allocation. */
block_free_t pf_release;
@ -175,7 +175,7 @@ VLC_API block_t *block_Realloc(block_t *, ssize_t pre, size_t body) VLC_USED;
*
* @note
* If the block is in a chain, this function does <b>not</b> release any
* subsequent block in the chain. Use block_ChainRelease() for that purpose.
* subsequent block in the chain. Use block_ChainRelease() for that purpose.
*
* @param block block to release (cannot be NULL)
*/
@ -364,10 +364,10 @@ static size_t block_ChainExtract( block_t *p_list, void *p_data, size_t i_max )
return i_total;
}
static inline void block_ChainProperties( block_t *p_list, int *pi_count, size_t *pi_size, mtime_t *pi_length )
static inline void block_ChainProperties( block_t *p_list, int *pi_count, size_t *pi_size, vlc_tick_t *pi_length )
{
size_t i_size = 0;
mtime_t i_length = 0;
vlc_tick_t i_length = 0;
int i_count = 0;
while( p_list )
@ -390,7 +390,7 @@ static inline void block_ChainProperties( block_t *p_list, int *pi_count, size_t
static inline block_t *block_ChainGather( block_t *p_list )
{
size_t i_total = 0;
mtime_t i_length = 0;
vlc_tick_t i_length = 0;
block_t *g;
if( p_list->p_next == NULL )
@ -534,7 +534,7 @@ VLC_API void vlc_fifo_WaitCond(vlc_fifo_t *, vlc_cond_t *);
* Atomically unlocks the FIFO and waits until one thread signals the FIFO up
* to a certain date, then locks the FIFO again. See vlc_fifo_Wait().
*/
int vlc_fifo_TimedWaitCond(vlc_fifo_t *, vlc_cond_t *, mtime_t);
int vlc_fifo_TimedWaitCond(vlc_fifo_t *, vlc_cond_t *, vlc_tick_t);
/**
* Queues a linked-list of blocks into a locked FIFO.

View File

@ -3,7 +3,7 @@
*****************************************************************************
* Copyright (C) 2003-2005 VLC authors and VideoLAN
* Copyright © 2005-2010 Rémi Denis-Courmont
* $Id: c77f19892047f406a69695a255aaf9ef6ef32ec3 $
* $Id$
*
* Author: Rémi Denis-Courmont
*

View File

@ -2,7 +2,7 @@
* vlc_codec.h: Definition of the decoder and encoder structures
*****************************************************************************
* Copyright (C) 1999-2003 VLC authors and VideoLAN
* $Id: 3499ede27c1dbb94ff665a51d000c55bd45f2794 $
* $Id$
*
* Authors: Gildas Bazin <gbazin@netcourrier.com>
*
@ -169,7 +169,7 @@ struct decoder_t
/* Display date
* XXX use decoder_GetDisplayDate */
mtime_t (*pf_get_display_date)( decoder_t *, mtime_t );
vlc_tick_t (*pf_get_display_date)( decoder_t *, vlc_tick_t );
/* Display rate
* XXX use decoder_GetDisplayRate */
@ -409,7 +409,7 @@ VLC_API int decoder_GetInputAttachments( decoder_t *, input_attachment_t ***ppp_
* to mdate().
* You MUST use it *only* for gathering statistics about speed.
*/
VLC_API mtime_t decoder_GetDisplayDate( decoder_t *, mtime_t ) VLC_USED;
VLC_API vlc_tick_t decoder_GetDisplayDate( decoder_t *, vlc_tick_t ) VLC_USED;
/**
* This function returns the current input rate.

View File

@ -152,7 +152,11 @@
* epoch). Note that date and time intervals can be manipulated using regular
* arithmetic operators, and that no special functions are required.
*/
typedef int64_t mtime_t;
typedef int64_t vlc_tick_t;
typedef vlc_tick_t mtime_t; /* deprecated, use vlc_tick_t */
#define VLC_TICK_INVALID VLC_TS_INVALID
#define VLC_TICK_0 VLC_TS_0
/**
* The vlc_fourcc_t type.
@ -943,6 +947,11 @@ static inline void SetQWLE (void *p, uint64_t qw)
# define O_NONBLOCK 0
# endif
/* the mingw32 swab() and win32 _swab() prototypes expect a char* instead of a
const void* */
# define swab(a,b,c) swab((char*) (a), (char*) (b), (c))
# include <tchar.h>
#endif /* _WIN32 */

View File

@ -2,7 +2,7 @@
* vlc_config_cat.h : Definition of configuration categories
*****************************************************************************
* Copyright (C) 2003 VLC authors and VideoLAN
* $Id: 55d2e468d1ccc3fcd8d165dcecc10ec753021a5e $
* $Id$
*
* Authors: Clément Stenac <zorglub@videolan.org>
* Anil Daoud <anil@videolan.org>

View File

@ -4,7 +4,7 @@
* It includes functions allowing to declare, get or set configuration options.
*****************************************************************************
* Copyright (C) 1999-2006 VLC authors and VideoLAN
* $Id: 209168615be2a7bc5db889282b32389093ab262e $
* $Id$
*
* Authors: Gildas Bazin <gbazin@videolan.org>
*

View File

@ -2,7 +2,7 @@
* vlc_demux.h: Demuxer descriptor, queries and methods
*****************************************************************************
* Copyright (C) 1999-2005 VLC authors and VideoLAN
* $Id: f359f547fa79d9818ed74420d906a6683be3d037 $
* $Id$
*
* Authors: Laurent Aimar <fenrir@via.ecp.fr>
*

View File

@ -2,7 +2,7 @@
* vlc_epg.h: Electronic Program Guide
*****************************************************************************
* Copyright (C) 2007 VLC authors and VideoLAN
* $Id: f7b9044e7c0aa1af4a44066d73f2ead943fc6a46 $
* $Id$
*
* Authors: Laurent Aimar <fenrir@via.ecp.fr>
*

View File

@ -2,7 +2,7 @@
* vlc_es.h: Elementary stream formats descriptions
*****************************************************************************
* Copyright (C) 1999-2012 VLC authors and VideoLAN
* $Id: 3c8e04e1b15740166df2e0b2d9a651ffb2c5bc2f $
* $Id$
*
* Authors: Laurent Aimar <fenrir@via.ecp.fr>
*

View File

@ -2,7 +2,7 @@
* vlc_es_out.h: es_out (demuxer output) descriptor, queries and methods
*****************************************************************************
* Copyright (C) 1999-2004 VLC authors and VideoLAN
* $Id: fe53c2a3d34f76eec76d83032cd0d3111be915aa $
* $Id$
*
* Authors: Laurent Aimar <fenrir@via.ecp.fr>
*
@ -93,8 +93,8 @@ enum es_out_query_e
ES_OUT_SET_META, /* arg1=const vlc_meta_t * */
/* PCR system clock manipulation for external clock synchronization */
ES_OUT_GET_PCR_SYSTEM, /* arg1=mtime_t *, arg2=mtime_t * res=can fail */
ES_OUT_MODIFY_PCR_SYSTEM, /* arg1=int is_absolute, arg2=mtime_t, res=can fail */
ES_OUT_GET_PCR_SYSTEM, /* arg1=vlc_tick_t *, arg2=vlc_tick_t * res=can fail */
ES_OUT_MODIFY_PCR_SYSTEM, /* arg1=int is_absolute, arg2=vlc_tick_t, res=can fail */
ES_OUT_POST_SUBNODE, /* arg1=input_item_node_t *, res=can fail */
@ -167,11 +167,11 @@ static inline int es_out_ControlSetMeta( es_out_t *out, const vlc_meta_t *p_meta
return es_out_Control( out, ES_OUT_SET_META, p_meta );
}
static inline int es_out_ControlGetPcrSystem( es_out_t *out, mtime_t *pi_system, mtime_t *pi_delay )
static inline int es_out_ControlGetPcrSystem( es_out_t *out, vlc_tick_t *pi_system, vlc_tick_t *pi_delay )
{
return es_out_Control( out, ES_OUT_GET_PCR_SYSTEM, pi_system, pi_delay );
}
static inline int es_out_ControlModifyPcrSystem( es_out_t *out, bool b_absolute, mtime_t i_system )
static inline int es_out_ControlModifyPcrSystem( es_out_t *out, bool b_absolute, vlc_tick_t i_system )
{
return es_out_Control( out, ES_OUT_MODIFY_PCR_SYSTEM, b_absolute, i_system );
}

View File

@ -3,7 +3,7 @@
* Interface used to send events.
*****************************************************************************
* Copyright (C) 2007 VLC authors and VideoLAN
* $Id: 229f4f677029763a837558932dad3e47b283e61c $
* $Id$
*
* Authors: Pierre d'Herbemont
*
@ -142,7 +142,7 @@ typedef struct vlc_event_t
} input_item_subitem_tree_added;
struct vlc_input_item_duration_changed
{
mtime_t new_duration;
vlc_tick_t new_duration;
} input_item_duration_changed;
struct vlc_input_item_preparsed_changed
{

View File

@ -95,7 +95,7 @@ struct filter_t
int, int, int );
/** Generate a subpicture (sub source) */
subpicture_t *(*pf_sub_source)( filter_t *, mtime_t );
subpicture_t *(*pf_sub_source)( filter_t *, vlc_tick_t );
/** Filter a subpicture (sub filter) */
subpicture_t *(*pf_sub_filter)( filter_t *, subpicture_t * );
@ -431,7 +431,7 @@ VLC_API void filter_chain_VideoFlush( filter_chain_t * );
* \param display_date of subpictures
*/
void filter_chain_SubSource(filter_chain_t *chain, spu_t *,
mtime_t display_date);
vlc_tick_t display_date);
/**
* Apply filter chain to subpictures.

View File

@ -2,7 +2,7 @@
* vlc_fourcc.h: Definition of various FOURCC and helpers
*****************************************************************************
* Copyright (C) 2009 Laurent Aimar
* $Id: 97827bd4c146461408fbfd5d0aed6e45a91dc89a $
* $Id$
*
* Authors: Laurent Aimar <fenrir _AT_ videolan _DOT_ com>
*

View File

@ -2,7 +2,7 @@
* vlc_http.h: Shared code for HTTP clients
*****************************************************************************
* Copyright (C) 2001-2008 VLC authors and VideoLAN
* $Id: a48ea794963ad476fc059eb3ffcf787186b78b47 $
* $Id$
*
* Authors: Laurent Aimar <fenrir@via.ecp.fr>
* Christophe Massiot <massiot@via.ecp.fr>

View File

@ -2,7 +2,7 @@
* vlc_httpd.h: builtin HTTP/RTSP server.
*****************************************************************************
* Copyright (C) 2004-2006 VLC authors and VideoLAN
* $Id: 29b8229e7b6baa7a8eedf37f6fdb1e97bf6a9ca7 $
* $Id$
*
* Authors: Laurent Aimar <fenrir@via.ecp.fr>
*

View File

@ -2,7 +2,7 @@
* vlc_image.h : wrapper for image reading/writing facilities
*****************************************************************************
* Copyright (C) 2004 VLC authors and VideoLAN
* $Id: 2b308fd0e52f4d4d6e20f95d08e0d63c53822eef $
* $Id$
*
* Authors: Gildas Bazin <gbazin@videolan.org>
*

View File

@ -2,7 +2,7 @@
* vlc_input.h: Core input structures
*****************************************************************************
* Copyright (C) 1999-2015 VLC authors and VideoLAN
* $Id: d20585ba33030980fa496cd042227b543f10827a $
* $Id$
*
* Authors: Christophe Massiot <massiot@via.ecp.fr>
* Laurent Aimar <fenrir@via.ecp.fr>
@ -485,8 +485,8 @@ enum input_query_e
INPUT_SET_RENDERER, /* arg1=vlc_renderer_item_t* */
/* External clock managments */
INPUT_GET_PCR_SYSTEM, /* arg1=mtime_t *, arg2=mtime_t * res=can fail */
INPUT_MODIFY_PCR_SYSTEM,/* arg1=int absolute, arg2=mtime_t res=can fail */
INPUT_GET_PCR_SYSTEM, /* arg1=vlc_tick_t *, arg2=vlc_tick_t * res=can fail */
INPUT_MODIFY_PCR_SYSTEM,/* arg1=int absolute, arg2=vlc_tick_t res=can fail */
};
/** @}*/
@ -631,14 +631,14 @@ static inline int input_GetEsObjects( input_thread_t *p_input, int i_id,
/**
* \see input_clock_GetSystemOrigin
*/
static inline int input_GetPcrSystem( input_thread_t *p_input, mtime_t *pi_system, mtime_t *pi_delay )
static inline int input_GetPcrSystem( input_thread_t *p_input, vlc_tick_t *pi_system, vlc_tick_t *pi_delay )
{
return input_Control( p_input, INPUT_GET_PCR_SYSTEM, pi_system, pi_delay );
}
/**
* \see input_clock_ChangeSystemOrigin
*/
static inline int input_ModifyPcrSystem( input_thread_t *p_input, bool b_absolute, mtime_t i_system )
static inline int input_ModifyPcrSystem( input_thread_t *p_input, bool b_absolute, vlc_tick_t i_system )
{
return input_Control( p_input, INPUT_MODIFY_PCR_SYSTEM, b_absolute, i_system );
}

View File

@ -2,7 +2,7 @@
* vlc_input_item.h: Core input item
*****************************************************************************
* Copyright (C) 1999-2009 VLC authors and VideoLAN
* $Id: f22c3d9330af98a15992ef08e362424313774d6f $
* $Id$
*
* Authors: Christophe Massiot <massiot@via.ecp.fr>
* Laurent Aimar <fenrir@via.ecp.fr>
@ -66,7 +66,7 @@ struct input_item_t
unsigned optflagc;
input_item_opaque_t *opaques; /**< List of opaque pointer values */
mtime_t i_duration; /**< Duration in microseconds */
vlc_tick_t i_duration; /**< Duration in microseconds */
int i_categories; /**< Number of info categories */
@ -265,8 +265,8 @@ VLC_API char * input_item_GetTitleFbName( input_item_t * p_i ) VLC_USED;
VLC_API char * input_item_GetURI( input_item_t * p_i ) VLC_USED;
VLC_API char * input_item_GetNowPlayingFb( input_item_t *p_item ) VLC_USED;
VLC_API void input_item_SetURI( input_item_t * p_i, const char *psz_uri );
VLC_API mtime_t input_item_GetDuration( input_item_t * p_i );
VLC_API void input_item_SetDuration( input_item_t * p_i, mtime_t i_duration );
VLC_API vlc_tick_t input_item_GetDuration( input_item_t * p_i );
VLC_API void input_item_SetDuration( input_item_t * p_i, vlc_tick_t i_duration );
VLC_API bool input_item_IsPreparsed( input_item_t *p_i );
VLC_API bool input_item_IsArtFetched( input_item_t *p_i );
@ -327,7 +327,7 @@ VLC_API void input_item_MergeInfos( input_item_t *, info_category_t * );
*/
VLC_API input_item_t * input_item_NewExt( const char *psz_uri,
const char *psz_name,
mtime_t i_duration, int i_type,
vlc_tick_t i_duration, int i_type,
enum input_item_net_type i_net ) VLC_USED;
#define input_item_New( psz_uri, psz_name ) \

Some files were not shown because too many files have changed in this diff Show More