Compare commits

..

1735 Commits

Author SHA1 Message Date
8550bdeed6 Generate all projects if ommited 2024-10-24 18:05:56 +04:00
5aae57aad8 Log generated project files 2024-10-24 17:43:04 +04:00
1d4f825ea6 Add note to change builder directory for cpp & cs 2024-10-23 13:53:30 +04:00
0527472fef Use space indentation for consistency 2024-10-22 22:00:45 +04:00
c911733bd7 Fix crash on mac 2024-10-22 21:51:21 +04:00
46f254c85d Fix incorrect convertation to string 2024-10-22 20:43:03 +04:00
a6a7d919e6 Add README.md 2024-10-21 16:47:52 +04:00
755d6cd970 Add some Java samples 2024-10-21 15:04:22 +04:00
604dc14d23 Add some python samples 2024-10-18 18:00:54 +04:00
2263d7bf80 Fix Makefile for mac 2024-10-18 14:04:30 +04:00
ef415aad3f Fixes for mac 2024-10-17 18:55:42 +04:00
6744c172f4 Remove C++ compile warnings 2024-10-17 17:43:53 +04:00
6ea3a9551e Add generation of Makefile 2024-10-17 17:35:51 +04:00
f48ab0351c Update help message with C# projects 2024-10-17 15:28:29 +04:00
632ddf9805 Remove asterisks due to portability 2024-10-17 15:22:27 +04:00
2c61e84e94 Fix unresolved symbols on linux 2024-10-17 14:38:21 +04:00
375b37e9aa Add include paths for utils 2024-10-16 19:07:29 +04:00
bb3e2e3bc2 Fix issue with relative paths to resources 2024-10-16 18:20:04 +04:00
1a5b8b4bbd Add generation of Qt C++ projects 2024-10-16 18:17:40 +04:00
901c44b486 Add generation of VS .NET projects 2024-10-15 19:00:29 +04:00
88eadd9955 Add remaining C++ samples 2024-10-15 16:04:23 +04:00
b5f88cebaf Fix C++ projects for old VS versions
+ Add spreadsheet test
2024-10-15 14:52:14 +04:00
e0e7e31568 Add generation of VS C++ projects 2024-10-14 20:18:57 +04:00
00344df9ad Fix for -D with brackets 2024-10-09 11:27:54 +03:00
cfb060e142 Fix build 2024-10-09 11:05:28 +03:00
0565e6164b Add data for hard update hunspell module 2024-10-09 10:47:24 +03:00
306cc3f985 For bug 70578 2024-10-08 23:31:46 +03:00
2739dd3abd Fix bug 69154 2024-10-08 22:54:19 +03:00
70e6df5aae fix bug #70440 2024-10-08 22:00:45 +03:00
96030aa322 Set timelimits of dictionaries tester bigger 2024-10-08 15:18:40 +03:00
fee801eeeb Merge pull request 'Add custom timelimits logic in dictionariestester' (#59) from fix/dictionariestester into release/v8.2.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/59
2024-10-08 11:55:37 +00:00
750273b526 Change timelimits 2024-10-08 14:51:48 +03:00
cfdb541c28 Add custom timelimits logic in dictionariestester 2024-10-08 14:36:30 +03:00
11121961d9 Fix typo 2024-10-08 08:47:12 +00:00
45828709ee Merge pull request 'Fix bug #70515' (#57) from fix/bug70515 into release/v8.2.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/57
2024-10-08 08:15:23 +00:00
40916e5ccc Merge pull request 'Fix bug 60796' (#56) from fix/bug60796 into release/v8.2.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/56
2024-10-08 08:07:18 +00:00
319610c58d Fix bug 60796 2024-10-08 10:22:32 +03:00
1837a2737e Fix RefTo id 2024-10-07 15:17:03 +00:00
686fc60860 For bug 61203 2024-10-07 15:17:03 +00:00
51216f27f4 Fix bug 70466 2024-10-07 17:47:12 +03:00
2eb33ddd22 Merge pull request 'Fix bug #70484' (#30) from fix/bug70484 into release/v8.2.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/30
2024-10-07 14:05:10 +00:00
58c80b052b Merge pull request 'Fix bug #70492' (#34) from fix/bug70492 into release/v8.2.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/34
2024-10-07 14:04:42 +00:00
5eee408eeb Merge pull request 'Fix bug #70617' (#54) from fix/bug70617 into release/v8.2.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/54
2024-10-07 14:04:20 +00:00
b6ae1f272c Fix bug #70617 2024-10-07 15:41:28 +05:00
045f23d921 Fix bug 68091 2024-10-07 02:46:38 +03:00
d06b52988c Fix bug 70352 2024-10-06 18:56:06 +00:00
4717b47388 Fix bug in metafile conversion 2024-10-06 17:11:32 +00:00
31ce9f6a18 Fix bug #66337 2024-10-06 17:11:32 +00:00
e44c9fa4c9 Fix bug #31062 2024-10-06 17:11:32 +00:00
3c59ba7a13 fixed a bug with the location of the embedded metafile 2024-10-06 17:11:32 +00:00
42e84249e8 For bug #68708 2024-10-06 17:11:32 +00:00
e2dbde8722 fix bug #70163 2024-10-06 11:43:33 +03:00
36c67d79d5 fix bug #70717 2024-10-06 11:17:16 +03:00
cdc14d22f0 fix bug #70684 2024-10-04 22:22:16 +03:00
baed05236b fix bug #70368 2024-10-04 20:41:18 +03:00
c644f94c0b fix bug #69104 2024-10-04 20:23:36 +03:00
087e4433f2 For bug 69977 2024-10-04 13:31:36 +00:00
bc11a5cf5f Fix bug 70574 2024-10-04 16:28:30 +03:00
d86303e290 Fix bug 69704 2024-10-03 15:44:14 +00:00
51f1faa51a Fix uncheckedsqrfx conversion to xlsx
(cherry picked from commit 9f62108376)
2024-10-03 18:12:10 +03:00
6775dccc2c Fix font tables 2024-10-03 13:29:46 +00:00
ee3b4c612d Merge pull request 'Fix bug 70563' (#45) from fix/bug-70563 into release/v8.2.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/45
2024-10-03 12:37:44 +00:00
1144bb166c Remove using bitcode on ios 2024-10-03 14:19:08 +03:00
a9752208f6 Fix bug #70515 2024-10-03 15:43:45 +05:00
84016cf8cf Fix bug 70563 2024-10-03 13:00:18 +03:00
cb7edc373c Disable bitcode for ios builds with xcode 16+ 2024-10-03 12:11:31 +03:00
d1e43d68dc Fix getOriginPage 2024-10-03 11:47:04 +03:00
b5ab5f9b2b Fix bug 70559 2024-10-03 11:31:39 +03:00
761c5bec53 Fix detect allfonts path for builder 2024-10-03 00:11:28 +03:00
8cc7034c22 For bug 70566 2024-10-02 15:48:33 +00:00
ee1c385b54 Fix Bug 70566 2024-10-02 15:48:33 +00:00
ded640825b Fix alpha 2024-10-02 15:48:33 +00:00
84301531c8 . 2024-10-02 17:54:59 +03:00
310cd6d8fd Add full GetContext function 2024-10-02 13:51:43 +00:00
2d37cf634a Add new dependent libraries 2024-10-02 13:51:43 +00:00
04880b4e1d Merge pull request 'Fix bug 70590' (#41) from fix/bug-70590 into release/v8.2.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/41
2024-10-02 13:38:15 +00:00
1000b5d5bd Merge pull request 'Add full GetContext function to docbuilder python wrapper' (#40) from feature/docbuilder-wrappers-getcontext into release/v8.2.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/40
2024-10-02 12:56:45 +00:00
c324b4a11c Add to python wrapper 2024-10-02 16:02:23 +04:00
a51fe4134c fix bug #68406 2024-10-01 19:37:56 +03:00
985d258bc1 Fix bug with rotated crop 2024-10-01 17:22:30 +03:00
fee5c112b4 Merge pull request 'fix bug70534' (#37) from fix/bug70534 into release/v8.2.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/37
2024-10-01 12:23:24 +00:00
9b50f9fbc2 Fix bug 68091 2024-10-01 14:43:27 +03:00
10f770fdbc Fix bug 70566 2024-10-01 13:10:52 +03:00
eb53c40135 fix 2024-10-01 12:32:29 +03:00
ded1655a04 Fix bug 70561 2024-10-01 12:20:54 +03:00
20c11889aa Fix bug 70590 2024-10-01 11:49:33 +03:00
910c2418d6 fix chartEx 2024-10-01 08:33:39 +03:00
e6ffdc0ae8 Merge remote-tracking branch 'origin/for-bug#68406' into release/v8.2.0 2024-09-30 19:27:52 +03:00
0335d330b8 Merge pull request 'Fix bug 69602' (#33) from fix/pdf-bugs into release/v8.2.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/33
2024-09-30 14:55:14 +00:00
af2e86e777 Fix name OUserID 2024-09-30 17:16:30 +03:00
bcf7d08c51 Fix bug 69602 2024-09-30 16:26:03 +03:00
11886dcdf7 Add user-id for annots 2024-09-30 15:05:39 +03:00
615d0b682c formula size calculation 2024-09-30 12:50:46 +03:00
535028fa0e For bug 70559 2024-09-30 12:44:09 +03:00
5a6386e08b Fix bug #70492 2024-09-27 20:07:14 +05:00
7ca8b22160 fix bug #70518 2024-09-27 16:59:57 +03:00
ec16e247e9 Fix build 2024-09-27 13:39:27 +00:00
9a76575082 Fix bug 2024-09-27 13:39:27 +00:00
c1a586cb56 Fix bug 69974 2024-09-27 16:14:24 +03:00
7707aeb914 Fix NULL borderStyle in FreeText 2024-09-27 15:56:16 +03:00
50a8540f75 Fix build 2024-09-27 15:45:06 +03:00
cc2e755bca Fix bug 2024-09-26 15:18:30 +00:00
9c1efdeac2 Fix bug with text 2024-09-26 15:18:30 +00:00
ea1538bc11 Fix bug in xps 2024-09-26 15:18:30 +00:00
c0d0fb6f5c Critical fix 2024-09-26 15:18:30 +00:00
5e5e07b406 Fix bug 67321 2024-09-26 15:18:30 +00:00
9b5f762420 Fix bug #70484 2024-09-26 17:35:25 +05:00
7020548f06 Merge pull request 'Fix bug 69009' (#28) from fix/docx-renderer into release/v8.2.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/28
2024-09-26 10:43:03 +00:00
2d2e15671a Fix bug 69009 2024-09-26 13:36:28 +03:00
00ad32d420 Merge pull request 'For bug #70040' (#27) from fix/bug70040 into release/v8.2.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/27
2024-09-26 08:23:58 +00:00
ba2cf66c31 Fix build 2024-09-26 10:44:12 +03:00
57ed9d0c32 Fix build 2024-09-26 06:15:42 +00:00
40d82f3287 Fix 2024-09-26 06:15:42 +00:00
9bdcbf0d89 Rollback std::vector 2024-09-26 06:15:42 +00:00
c1774219ec Fix pdf editor build 2024-09-26 06:15:42 +00:00
2a6f0bb1b6 Close any clip-path fix 2024-09-26 06:15:42 +00:00
a23ce22950 Add unit-tests 2024-09-26 06:15:42 +00:00
b4f0d32b6d Fix bugs 2024-09-26 06:15:42 +00:00
83db7f2165 Remove STL from export 2024-09-26 06:15:42 +00:00
3ce03d897d Fix bug 2024-09-26 06:15:42 +00:00
be12237042 Fix bug 2024-09-26 06:15:42 +00:00
cf7252b92d Fix bounds 2024-09-26 06:15:42 +00:00
523f3f24f9 Fix wrong bounds 2024-09-26 06:15:42 +00:00
0196a4bb57 Fix one inters 2024-09-26 06:15:42 +00:00
9ee9192cd4 Refactoring 2024-09-26 06:15:42 +00:00
5df63a58b7 Add more bullets 2024-09-26 06:15:42 +00:00
d107bd5df2 Fix unused font names in PDF 2024-09-26 06:15:42 +00:00
f51c1fced2 Fix bug 69109 2024-09-26 06:15:42 +00:00
86cba0bdcd Fix bug 70340 2024-09-26 06:15:42 +00:00
cceec83568 Transition from pointers to smart pointers 2024-09-26 06:15:42 +00:00
f733543b44 Fix memory leak 2024-09-26 06:15:42 +00:00
bb9d777c14 Refactoring 2024-09-26 06:15:42 +00:00
694dd852d0 Fix bug 2024-09-26 06:15:42 +00:00
18a18eaa40 Fix linux build 2024-09-26 06:15:42 +00:00
fb021b33ec Add limits 2024-09-26 06:15:42 +00:00
95ecd8468a Refactoring 2024-09-26 06:15:42 +00:00
fbb57d7009 Fix memory leak 2024-09-26 06:15:42 +00:00
22e9873208 Done gradients support 2024-09-26 06:15:42 +00:00
2581e9235d Develop rtl support 2024-09-26 06:15:42 +00:00
270fd0601f Fix close path 2024-09-26 06:15:42 +00:00
5f69b4f8e6 Fix bug with gradient 2024-09-26 06:15:42 +00:00
bdaf9fa10b Fix bug 2024-09-26 06:15:42 +00:00
77e64af80c Fix bug with gradient 2024-09-26 06:15:42 +00:00
6e3beac6bf Fix one point inters and refactoring 2024-09-26 06:15:42 +00:00
641297ac48 Fix bug with non-closed-paths 2024-09-26 06:15:42 +00:00
dcca1f06f4 Developing gradients 2024-09-26 06:15:42 +00:00
22d7cfb240 Fix bug 2024-09-26 06:15:42 +00:00
fa51ea21b4 Developing gradient support 2024-09-26 06:15:42 +00:00
7632be9f2f Fix stack overflow 2024-09-26 06:15:42 +00:00
cbf40d36f5 Develop gradient support (in porgress) 2024-09-26 06:15:42 +00:00
2b8e70e67f Add compound paths 2024-09-26 06:15:42 +00:00
4b05eb9a50 Indents fix + gitignore 2024-09-26 06:15:42 +00:00
3221e41e89 Add subtraction for all overlap 2024-09-26 06:15:42 +00:00
58cc6cf6e8 Fix epsilon 2024-09-26 06:15:42 +00:00
c86a8edd30 Fix 2024-09-26 06:15:42 +00:00
db1d6a935f Add metainfo in ToXmlPptx (CContText)
+ fix main in test
2024-09-26 06:15:42 +00:00
cb9589f6b4 Fix curve for pdf 2024-09-26 06:15:42 +00:00
cbad285a9f FIx curve conversion 2024-09-26 06:15:42 +00:00
82a3fa6132 Fix 2024-09-26 06:15:42 +00:00
0821eefbd3 Add figure "Cross" to test 2024-09-26 06:15:42 +00:00
38a9dfcd14 Fix subtract 2024-09-26 06:15:42 +00:00
0f222c15e9 Fix all overlap 2024-09-26 06:15:42 +00:00
d0a554c701 Fix overlap paths 2024-09-26 06:15:42 +00:00
acfec0ceb1 Rollback 2024-09-26 06:15:42 +00:00
899b27d697 Fix bug with stride for adobe 2024-09-26 06:15:42 +00:00
5a5db3e8c6 Fix bug with close 2024-09-26 06:15:42 +00:00
57fdf7eed5 Add test for negative vertices 2024-09-26 06:15:42 +00:00
7f13020f2f Fix bug with no clear clip vector 2024-09-26 06:15:42 +00:00
020298b023 Update clip logic
crop
2024-09-26 06:15:42 +00:00
8eb249056b Fix negative vertices 2024-09-26 06:15:42 +00:00
2ed7e803ca Fix 2024-09-26 06:15:42 +00:00
b9230ef5ff Develop clip + tile images 2024-09-26 06:15:42 +00:00
3907110e44 Fix + refactoring 2024-09-26 06:15:42 +00:00
787575a53f Fix including paths 2024-09-26 06:15:42 +00:00
b58554a3da Refactorting
in progress
2024-09-26 06:15:42 +00:00
9e8c0dfb16 Add clip logic
clip on clip is not working for now
2024-09-26 06:15:42 +00:00
6831820dd4 Fix 2024-09-26 06:15:42 +00:00
cac79cb66e Refactor includes + fix build dll 2024-09-26 06:15:42 +00:00
323213a63d Refacoring 2024-09-26 06:15:42 +00:00
473ef17be3 Fix 2024-09-26 06:15:42 +00:00
5e56d26a06 Fix bugs 2024-09-26 06:15:42 +00:00
a390c1ee18 Fix 2024-09-26 06:15:42 +00:00
4158ebcd98 FIx 2024-09-26 06:15:42 +00:00
7fc65a84ab Fix 2024-09-26 06:15:42 +00:00
69ffd656af Fix 2024-09-26 06:15:42 +00:00
cb929fc5c5 Fix 2024-09-26 06:15:42 +00:00
7cd7c9f98f Refactoring Winding 2024-09-26 06:15:42 +00:00
015c10495c Refactoring 2024-09-26 06:15:42 +00:00
e973c8f70b Refactoring test 2024-09-26 06:15:42 +00:00
a77987488b Refactoring 2024-09-26 06:15:42 +00:00
1cfd17e2f3 Fix and Refactoring 2024-09-26 06:15:42 +00:00
b4c6f69cee Add Test for Clip 2024-09-26 06:15:42 +00:00
67194499a8 Fix 2024-09-26 06:15:42 +00:00
9ec6489083 Fix 2024-09-26 06:15:42 +00:00
3971400c78 Fix 2024-09-26 06:15:42 +00:00
e21ed47019 Finish CGraphicsPathClip 2024-09-26 06:15:42 +00:00
2cf83df7d0 add new methods for clip 2024-09-26 06:15:42 +00:00
7f96336e75 add mathematical functions for clip 2024-09-26 06:15:42 +00:00
99da1e3b8c Move CPathForClip methods to CGraphicsPath 2024-09-26 06:15:42 +00:00
6d152880bd Add Clip lib for GraphicsPath 2024-09-26 06:15:42 +00:00
dd9fca2a5c Fix hor/ver shape trough logic 2024-09-26 06:15:42 +00:00
67043cf718 Fix & add logic 2024-09-26 06:15:42 +00:00
ba239f139d Images -> shapes 2024-09-26 06:15:42 +00:00
a99733c5a1 Fix bug 70119 2024-09-25 23:42:03 +03:00
a60bc542c7 Fix bug 70043 2024-09-25 14:36:12 +00:00
97d36fa1cd Fix multiline Text Widget indentation 2024-09-25 14:36:12 +00:00
87fa0f93be Fix bug 69972 2024-09-25 14:36:12 +00:00
29a48da730 Fix bug 69976 2024-09-25 14:36:12 +00:00
e0352541be Fix bug 69990 2024-09-25 16:53:33 +03:00
2e26a3697d For bug #70040 2024-09-25 18:23:21 +05:00
cd124d5112 Fix page sizes on build pdf file 2024-09-25 15:28:08 +03:00
4242d32d95 Fix release build 2024-09-25 12:18:18 +03:00
a6b5e7e010 Merge remote-tracking branch 'origin/release/v8.2.0' into release/v8.2.0 2024-09-24 22:05:25 +03:00
57800ec8dd fix bug #33177 2024-09-24 21:46:58 +03:00
0f3de35eb4 Fix bug 69927 2024-09-24 21:44:52 +03:00
8c83b18216 fix bug #70440 2024-09-24 21:23:16 +03:00
e1c2bf19d9 Fix build 2024-09-24 18:08:40 +03:00
f38767ccbb Merge pull request 'Fix bug #69036' (#22) from fix/bug-69036 into release/v8.2.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/22
2024-09-24 11:25:57 +00:00
fc94de8549 Refactoring and improving the debug mod 2024-09-24 11:48:59 +03:00
812fae8f6c Fix bug #69036 2024-09-24 11:46:34 +03:00
c938e2756e Merge pull request 'Fix bug #44363' (#20) from fix/bug44363 into release/v8.2.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/20
2024-09-24 07:23:22 +00:00
5679a7902f Merge pull request 'Fix placeholder styles conversion' (#19) from fix/placeholder_conversion into release/v8.2.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/19
2024-09-24 07:22:22 +00:00
056bfb84ce Fix typo 2024-09-23 22:40:21 +03:00
2d745de7e2 Merge branch 'feature/pdf-font' into release/v8.2.0 2024-09-23 22:02:48 +03:00
a5c73127fd Fix pdf bugs (add build with embedded fonts in changes) 2024-09-23 21:59:36 +03:00
f0f4e39f5c Fix bug 70042 2024-09-23 19:08:27 +03:00
b536d6eb41 Create test GetEmbeddedFont 2024-09-23 15:43:48 +03:00
0af65b1137 Convert odp placeholder styles to pptx 2024-09-23 16:44:16 +05:00
5c3a697880 Fix for drawingfile 2024-09-23 13:31:55 +03:00
1b8c59ff87 Separate GetFontPath 2024-09-23 13:15:39 +03:00
6b4b645180 Create GetEmbeddedFontPath 2024-09-23 13:09:05 +03:00
30868b81bc Fix bug #70339 2024-09-21 16:16:53 +03:00
4c44edc9c9 Merge branch 'fix/bug70318' into fix/placeholder_conversion 2024-09-21 00:07:59 +05:00
60f9021bdd Merge pull request 'Fix bug #70318' (#15) from fix/bug70318 into release/v8.2.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/15
2024-09-19 14:57:52 +00:00
fd90fbae21 Fix bug #70318 2024-09-19 13:01:07 +05:00
c4979075aa Merge pull request 'Fix bug #70320' (#14) from fix/bug-70320 into release/v8.2.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/14
2024-09-19 05:16:16 +00:00
6c067ba6ee Merge pull request 'Fix SVG conversion' (#13) from fix/SVG into release/v8.2.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/13
2024-09-19 05:16:01 +00:00
2456501f1d Fixes for txt/csv 2024-09-19 08:03:30 +03:00
07c0c58375 Fix bug #70320 2024-09-18 20:50:33 +03:00
db28751875 Fix placeholder conversion 2024-09-18 22:02:54 +05:00
81c9ae120f Fix bug 70293 2024-09-18 14:45:20 +03:00
830c5ec12c fix bug #46132 2024-09-18 10:52:04 +03:00
375f79cdac fix bug #69904 2024-09-17 21:22:24 +03:00
33627ab79c Added support for marker orientation in svg conversion 2024-09-17 19:45:13 +03:00
9f81e37196 fox bug #70227 2024-09-17 18:11:18 +03:00
32a409bb13 Merge pull request 'Enter new contexts by default' (#10) from feature/scoped-context into release/v8.2.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/10
2024-09-17 14:27:31 +00:00
b53a1b3cd6 Merge pull request 'Add static CreateObject function to builder' (#11) from fix/bug70010 into release/v8.2.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/11
2024-09-17 14:27:12 +00:00
f5f0630b2d Redesigned the drawing of markers in svg conversion 2024-09-16 22:02:10 +03:00
19e5a2db2d fix bug #70240 2024-09-16 19:06:11 +03:00
8ad7b123aa Fix build pdf files 2024-09-16 14:39:43 +03:00
312a95d9e1 Fix bug #70010 2024-09-13 16:08:42 +04:00
0ac882b207 Merge branch hotfix/v8.1.3 into release/v8.2.0 2024-09-13 10:37:31 +00:00
4378becd0b Enter new contexts by default 2024-09-13 14:30:53 +04:00
8c62dc448a Fixed bug width text position in svg conversion 2024-09-12 20:04:22 +03:00
7f7e89babf fix bug #69781 2024-09-12 18:07:19 +03:00
d89d63e0db fix bug #70136 2024-09-12 14:50:41 +03:00
42a4fe53dd fix bug #70160 2024-09-12 11:01:32 +03:00
f738aa95ad . 2024-09-12 10:38:26 +03:00
a68b7e7354 fix bug #70134 2024-09-11 17:38:40 +03:00
3c16ba01f0 Fix max font size in svg conversion 2024-09-11 13:23:36 +03:00
106f448042 Fix build for xp 2024-09-11 12:15:46 +04:00
81d90420dd Normalize JSON in tests 2024-09-10 22:27:54 +00:00
2673b15835 Implement objects parsing in FromJSON 2024-09-10 22:27:54 +00:00
436d9ecdb7 Implement arrays parsing in FromJSON 2024-09-10 22:27:54 +00:00
150079e2f6 Implement FromJSON for primitives 2024-09-10 22:27:54 +00:00
ad18d65f7c Implement toJSON 2024-09-10 22:27:54 +00:00
56551c3745 Add IsBool function to Java wrapper
+ Add functionality of generating JNI headers
2024-09-10 22:25:25 +00:00
71342eb03d Add IsBool function to NET wrapper 2024-09-10 22:25:25 +00:00
f811822364 Fix bug #70046 2024-09-10 22:25:25 +00:00
765c27bdab Remove creation of empty string by default 2024-09-10 22:24:06 +00:00
f90022c50c Fix bug #70086 2024-09-10 22:24:06 +00:00
e345eff63a Fix build pdf files 2024-09-11 01:09:50 +03:00
0b16086ff5 Fix bugs in svg conversion and optimization 2024-09-10 21:08:12 +03:00
5904bb3507 Fix bug #69865 2024-09-10 21:07:39 +03:00
8917390185 binary mrun 2024-09-10 16:25:23 +03:00
6a2d3838ae Fix bug #70044 2024-09-10 03:24:57 +05:00
493cec92c6 Move methods from graphics renderer to base interface 2024-09-09 15:03:59 +03:00
f21d92ee92 Enable drawing file in doctrenderer 2024-09-09 14:23:54 +03:00
d1dd3b4791 Merge pull request 'fix bug70020' (#5) from fix/bug70020 into release/v8.2.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/5
2024-09-09 08:24:43 +00:00
b79c173f59 Add dependencies for doctrenderer 2024-09-09 07:48:27 +03:00
5a7909a901 Fix pivot cache definition conversion 2024-09-06 15:46:26 +06:00
47ec9ab80d Fix bugs and refactoring 2024-09-05 10:23:31 +00:00
8a56072454 Fix bugs and refactoring 2024-09-05 10:23:31 +00:00
b6593c89a3 Merge pull request 'Fix bug #69988' (#2) from fix/bug69988 into release/v8.2.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/2
2024-09-05 08:59:29 +00:00
978ec43047 printPr 2024-09-04 20:01:10 +03:00
f6c48c1edb Fix bug #70039 2024-09-04 20:48:28 +05:00
386bce9b68 Fix bug #70020 2024-09-04 20:22:34 +06:00
ceeaff9585 Fixes for pdf 2024-09-04 14:51:31 +03:00
20a8de9440 Fix bug #69988 2024-09-04 16:32:52 +05:00
1cf1d16cf5 Merge pull request 'Fix non-existing dicts bug' (#1) from fix/dictionariestester into release/v8.2.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/1
2024-09-04 09:29:28 +00:00
ae98f0551a Delete src/dst dictionariestester 2024-09-04 12:27:52 +03:00
eddfd2abe4 Fix non-existing dicts bug 2024-09-04 12:25:02 +03:00
4c9c79628f Fix bug #69957 2024-09-03 13:20:36 +05:00
7625183fe3 Merge pull request #1636 from ONLYOFFICE/fix/office-utils
Fix Bug 69900
2024-09-02 06:08:59 -07:00
0567de6d9f . 2024-09-02 11:49:18 +03:00
7f23f77866 fix bug #69770 2024-09-02 10:31:01 +03:00
b3ce882885 Merge pull request #1635 from ONLYOFFICE/fix/bug69889
Fix bug #69889
2024-08-29 18:42:18 +03:00
2685f2807c fix bug #69947 2024-08-29 18:11:58 +03:00
a748b08143 for bug #69781 2024-08-29 18:08:37 +03:00
a14e684528 Fix Bug 69900 2024-08-29 18:00:26 +03:00
58c35139ea Merge branch 'fix/bug44363' of https://github.com/ONLYOFFICE/core into fix/bug44363
# Conflicts:
#	OdfFile/Reader/Format/text_elements.cpp
2024-08-29 19:41:23 +05:00
7d804f1c70 Fix bug #44363 2024-08-29 19:39:34 +05:00
ddf33fb441 Fix bug #69889 2024-08-29 18:07:35 +06:00
64dfeee050 Merge pull request #1634 from ONLYOFFICE/fix/docbuilder-snapshots
Some small fixes in snapshot related code
2024-08-29 04:27:53 -07:00
ea58d59b68 Remove static functions from editors.h 2024-08-29 14:12:22 +04:00
a73c9cc659 Some defines and typo fixes 2024-08-29 13:52:51 +04:00
58b927edb6 Merge pull request #1633 from ONLYOFFICE/fix/bug-69862
Fix bugs 69862, 69863
2024-08-29 01:51:28 -07:00
c7b72698a8 Fix ctm for write 2024-08-29 10:52:13 +03:00
b00c2eb773 Fix bug 69862 2024-08-29 10:45:55 +03:00
13088c6ed4 fix bug #69892 2024-08-28 16:45:32 +03:00
3b47ce04b4 Disable embedded drawing file 2024-08-28 16:07:31 +03:00
c9117df33d Fix work with snapshots 2024-08-28 15:57:05 +03:00
1771ce2354 Fix typo 2024-08-28 13:30:07 +03:00
e9248fe046 Merge pull request #1632 from ONLYOFFICE/feature/pdfBuild
Feature/pdf build
2024-08-28 03:08:50 -07:00
447e1f5ccc Fix for snapshots 2024-08-28 13:08:06 +03:00
94a67ed007 Fix build 2024-08-28 10:45:16 +03:00
06ee659edc Fixwork with replaceAll function 2024-08-27 23:07:25 +03:00
fe35178e26 Add support snapshots 2024-08-27 22:52:05 +03:00
13590d4c2e Refactoring work with cache 2024-08-27 13:04:20 +03:00
2ce1ee6b33 Merge pull request #1630 from ONLYOFFICE/fix/bug-69855
Fix bug 69855
2024-08-27 03:00:37 -07:00
ea77177077 Fix bug 69855 2024-08-27 12:30:31 +03:00
39c03bb5be Merge pull request #1628 from ONLYOFFICE/fix/bug56747
Fix bug #56747
2024-08-26 15:17:28 +03:00
5bbff01782 Merge remote-tracking branch 'origin/fix/bug57197' into release/v8.2.0 2024-08-26 15:14:52 +03:00
9cee5480b6 Merge remote-tracking branch 'origin/fix/bug61364' into release/v8.2.0 2024-08-26 15:13:38 +03:00
5debf76cda Merge remote-tracking branch 'origin/fix/bug59708' into release/v8.2.0 2024-08-26 15:13:11 +03:00
d5ebbf0542 Merge pull request #1627 from ONLYOFFICE/fix/bug63952
Fix bug #63952
2024-08-26 15:11:11 +03:00
84fc9f876e Add flag for fonts generation 2024-08-26 13:56:36 +03:00
7d118102a5 fix bug #69846 2024-08-25 18:43:19 +03:00
c87a043bd0 fix bug #69847 2024-08-25 18:34:30 +03:00
a72fcb705b fix bug #69850 2024-08-25 18:12:50 +03:00
dbd8344e6d Fix bug #63952 2024-08-24 19:37:44 +05:00
8b56f22d76 Fix bug #59708 2024-08-22 22:58:17 +05:00
5efb325394 Merge pull request #1626 from ONLYOFFICE/fix/bug-58084
Fix bug 58084
2024-08-22 07:12:32 -07:00
d61fe20d12 Merge pull request #1625 from ONLYOFFICE/fix/bug-65310
Fix bug 65310
2024-08-22 07:11:07 -07:00
1ac4ec3b0d Fix bug 58084 2024-08-22 15:16:55 +03:00
6ebccd7f4a Add DjVu test 2024-08-22 14:25:37 +03:00
685f8d2442 Fix bug 65310 2024-08-22 14:25:06 +03:00
5564e397ca Fix bug #61364 2024-08-22 14:13:50 +05:00
12e1f1f992 Fix bug #61364 2024-08-22 14:12:40 +05:00
e8cf13e89d Merge pull request #1624 from ONLYOFFICE/fix/bug66675
Fix bug #66675
2024-08-22 10:35:03 +03:00
ec3d6fa05b Fix bug #61364 2024-08-22 02:00:42 +05:00
c0f4ce46f0 Fix undefined values in conversion 2024-08-21 20:43:00 +06:00
e91c72a265 Fix bug #57197 2024-08-21 16:40:13 +05:00
c4530caac1 Merge pull request #1623 from ONLYOFFICE/release/v8.2.0
Release/v8.2.0
2024-08-21 04:17:49 -07:00
c018d57081 fix bug #69634 2024-08-21 12:52:16 +03:00
43f49b7a9d fix bug #69775 2024-08-21 12:14:48 +03:00
f8e19a7f0b Merge pull request #1620 from ONLYOFFICE/fix/bug-69767
Fix bug #69767
2024-08-20 05:39:52 -07:00
f245985bbd fix bug #69774 2024-08-20 11:29:57 +03:00
68171df991 Merge branch 'release/v8.2.0' of https://github.com/ONLYOFFICE/core into release/v8.2.0 2024-08-20 11:27:58 +03:00
bbf4003ec7 Refactoring 2024-08-20 11:00:12 +03:00
75cc7d8457 Fix bug #69767 2024-08-20 10:59:32 +03:00
7018402a58 Merge pull request #1619 from ONLYOFFICE/fix/pdf-bugs
Fix pdf bugs
2024-08-20 00:04:03 -07:00
6ce30ccaad Fix test 2024-08-20 09:23:10 +03:00
670677c23b Fix pdf clip 2024-08-20 09:22:39 +03:00
208f6efcc5 fix bug #69781 2024-08-20 08:39:42 +03:00
685165d270 fix bug #69780 2024-08-20 08:39:02 +03:00
b18bdcc0a0 Fix bug #56747 2024-08-20 04:29:45 +05:00
f18eb2ef5b Developing 2024-08-20 00:23:59 +03:00
facdff46fe Refactoring 2024-08-19 18:24:06 +03:00
feb3f4cdf0 Fix bug #66675 2024-08-19 19:35:23 +06:00
8843c3dd36 Merge pull request #1617 from ONLYOFFICE/feature/docbuilder-java
Add JAVA_HOME environment variable support when compiling docbuilder Java-wrapper
2024-08-19 04:50:27 -07:00
2708479152 Add class for embed pdf object 2024-08-19 13:57:26 +03:00
f3facfa8e8 Fix for some JDK versions 2024-08-19 14:13:19 +04:00
1e26e1723a For buf 59297 2024-08-19 12:57:30 +03:00
6d9242e1dd Add building support for JDK > 8 2024-08-19 13:49:43 +04:00
e8de8dc03b fix bug #60796 2024-08-16 17:39:11 +03:00
57447f757f Merge pull request #1618 from ONLYOFFICE/fix/pdf-time
Fix pdf clip
2024-08-16 04:24:27 -07:00
46d6eaa793 Fix test Save/Restore graphics 2024-08-16 13:35:03 +03:00
837ad1d8f7 Merge remote-tracking branch 'origin/release/v8.2.0' into develop 2024-08-16 09:33:59 +03:00
def502c7eb Refactoring drawingfile (native realization support) 2024-08-15 22:00:37 +03:00
1e5e43cbe5 Fix clip 2024-08-15 16:59:00 +03:00
60a888fc19 Fix PdfFile test 2024-08-15 16:58:39 +03:00
01ca25d798 Fix test 2024-08-15 16:58:20 +03:00
6812ebaa42 fix bug #68293 2024-08-15 10:46:06 +03:00
aacb2842f7 Fix typo 2024-08-14 16:39:41 +04:00
27a2a47cbe Fixes 2024-08-14 16:35:22 +04:00
02f8178c01 Merge pull request #1616 from ONLYOFFICE/fix/bug65304
Fix bug 65304
2024-08-14 01:55:26 -07:00
7dda21d1e1 Merge remote-tracking branch 'origin/release/v8.2.0' into develop 2024-08-14 11:28:37 +03:00
a0e2384409 fix bug #69490 2024-08-13 21:33:51 +03:00
56088e9eff Add support for JAVA_HOME environment variable 2024-08-13 20:44:46 +04:00
1d6b895496 Refactoring 2024-08-13 16:32:41 +03:00
fa4b8c8d76 Fix build 2024-08-13 11:40:51 +03:00
2db2b98c8f Fix bug 65304 2024-08-13 10:54:23 +03:00
f45fb3c6be for bug #69599 2024-08-13 09:40:06 +03:00
6f60d75863 Fix build 2024-08-13 00:24:51 +03:00
d1acdf35d8 Refactoring 2024-08-13 00:16:51 +03:00
a1bf6a76ed fix bug #69658 2024-08-12 19:25:27 +03:00
3634d59ece Merge branch 'release/v8.2.0' of https://github.com/ONLYOFFICE/core into release/v8.2.0 2024-08-12 19:07:54 +03:00
1b21e8f136 fix bug #69647 2024-08-12 19:07:07 +03:00
554ca5ec7c Merge pull request #1615 from ONLYOFFICE/fix/docbuilder-script-cache
Fix script caching on Windows
2024-08-12 08:15:16 -07:00
dc2e0edf80 fix bug #25787 2024-08-12 18:13:52 +03:00
e38fa336d2 Fix script caching with v8_89 2024-08-12 17:32:14 +04:00
357450f242 Merge pull request #1614 from ONLYOFFICE/fix/html
Fix html to ooxml conversion
2024-08-12 03:20:37 -07:00
4ed9925aff Merge pull request #1610 from ONLYOFFICE/feature/MetafileSize
The size setting of metafiles has been changed
2024-08-12 03:20:17 -07:00
796537565b Fixed unnecessary use of standard styles in html to ooxml conversion 2024-08-09 15:43:55 +03:00
fcf8e28ae8 Added tabs to the text in html to ooxml conversion 2024-08-09 15:27:29 +03:00
de949afbb6 fix bug #69618 2024-08-09 12:33:40 +03:00
fb7bb041c1 Merge pull request #1613 from ONLYOFFICE/fix/pdf-leaks
Fix pdf leaks, clip and read jpeg
2024-08-09 02:03:52 -07:00
8d6e15627b Refactoring RenderOutputDev and test diff 2024-08-08 18:42:43 +03:00
0583cbb5cc Merge branch 'release/v8.2.0' of https://github.com/ONLYOFFICE/core into release/v8.2.0 2024-08-08 17:31:35 +03:00
a68bec86df Improved html to ooxml conversion 2024-08-08 16:05:19 +03:00
6554185ec7 Refacroting DrawImage 2024-08-07 18:07:12 +03:00
22bbde155d fix bug #44738 2024-08-07 12:03:23 +03:00
4a123d33ea fix bug #69552 2024-08-07 08:18:32 +03:00
c7d0f27f6b Fix ReadImage 2024-08-06 18:59:28 +03:00
f1ddd51164 Add support /* comments in script files 2024-08-06 18:08:47 +03:00
1d636b717f [x2t] Fix bug 69574 2024-08-06 15:53:40 +03:00
c026f33aa7 Improved html to ooxml conversion 2024-08-06 15:47:58 +03:00
29e5769d6d fix bug #30042 2024-08-06 10:54:09 +03:00
6ba96b0ae8 Merge remote-tracking branch 'origin/release/v8.2.0' into develop 2024-08-06 09:38:42 +03:00
9d750ad3d4 . 2024-08-06 08:53:05 +03:00
5b156d72c0 Fix bug #44363 2024-08-06 01:19:19 +03:00
85a7c82aa7 . 2024-08-05 22:48:25 +03:00
6586fc39ee Merge pull request #1612 from ONLYOFFICE/feature/gradients
Feature/gradients
2024-08-05 11:50:27 -07:00
8a4b1672c9 . 2024-08-05 20:31:01 +03:00
0d71f1c158 . 2024-08-05 19:15:36 +03:00
394582df7a fix build 2024-08-05 18:50:23 +03:00
e8c7a4f670 Fix ReadDCT 2024-08-05 18:14:56 +03:00
ead6b305b2 Create ReadDCT for jpeg image in pdf 2024-08-05 16:36:50 +03:00
2de6a6d199 Merge pull request #1611 from ONLYOFFICE/feature/docbuilder-java
Feature/docbuilder java
2024-08-05 05:38:52 -07:00
c6ca99994b Fix build into JAR on mac and linux 2024-08-02 19:35:13 +04:00
b707510c88 Remove explicit workDirectory setting 2024-08-02 18:38:40 +04:00
7171dcb9f0 Set library path at runtime
Now there is no need to pass `-D...` parameter to run java program
2024-08-02 18:26:15 +04:00
49dedc7a6d fix bug #69392 2024-08-02 16:43:20 +03:00
431fa060c4 fix bug #69488 2024-08-02 16:10:50 +03:00
0fc5133d98 Fix for building test example 2024-08-02 16:05:08 +04:00
8d5fc7d6ca Fix build for JDK 8 and force build into JAR 2024-08-02 15:58:13 +04:00
3221d20d81 Remove docbuilder_jni_utils helper library 2024-08-02 12:36:17 +04:00
9fdb81554a fix bug #69518 2024-08-02 10:58:01 +03:00
95a1983e75 Refactoring RendererOutputDev 2024-08-01 18:59:19 +03:00
bef68d03c9 Merge pull request #1609 from ONLYOFFICE/feature/add-future-functions-conversion
Feature/add future functions conversion
2024-08-01 17:05:53 +03:00
a1100f0091 Fix copiright dates 2024-08-01 17:04:10 +06:00
15b18adf90 Fix copyright dates 2024-08-01 17:01:45 +06:00
c27aa4d807 Improved html to ooxml conversion 2024-08-01 13:54:07 +03:00
c4f8c524b5 Merge remote-tracking branch 'origin/release/v8.2.0' into fix/pdf-leaks 2024-08-01 12:32:12 +03:00
1a0a63c8dd Merge branch 'develop' into feature/add-future-functions-conversion 2024-08-01 15:23:44 +06:00
9010dcc220 Add initialization checks and default values in xslx 2 xlsb conversion 2024-08-01 15:22:57 +06:00
f7d55c08d8 fix bug #69474 2024-07-31 21:56:23 +03:00
4cfb8cc97a fix bug #69104 2024-07-31 21:51:15 +03:00
a41ecb0715 for bug #69405 2024-07-31 21:32:50 +03:00
faa9e5e640 Merge pull request #1608 from ONLYOFFICE/fix/bug-65822
For bug 65822
2024-07-31 05:40:58 -07:00
ac2ee1b56d Save line AP 2024-07-31 14:01:34 +03:00
b722238d21 Draw AP for markup annots 2024-07-31 14:00:24 +03:00
dca5f4f7c5 Add prefix check for future functions names 2024-07-31 16:55:05 +06:00
9875aed0a0 Add default values to style conversion 2024-07-31 15:17:47 +06:00
83e20057f4 Merge pull request #1607 from ONLYOFFICE/feature/docx-renderer
Feature/docx renderer
2024-07-30 10:34:35 -07:00
373786fca6 Update Clip 2024-07-30 18:35:57 +03:00
0fa1b4feec Add return 0/1 for builder external scripts 2024-07-30 11:47:13 +03:00
6a6204ae33 Fix add to conts & highlights 2024-07-30 11:35:39 +03:00
f02147b97c Fix jar build 2024-07-30 12:25:54 +04:00
88b1660735 Add another way to load native libraries 2024-07-30 11:36:47 +04:00
f5f7cb1aec . 2024-07-29 22:13:28 +03:00
af01306997 . 2024-07-29 21:58:34 +03:00
ef30a30e00 Fix first word width in splitted lines 2024-07-29 20:33:20 +03:00
16ae48ef4e Fix memory leaks 2024-07-29 17:56:48 +03:00
ab4fa069d1 Add xlsb buffer size reset after writing file 2024-07-29 20:41:52 +06:00
d00919e139 Fix fonts bls 2024-07-29 20:38:48 +06:00
0eb8c93cf9 Merge pull request #1606 from ONLYOFFICE/fix/bug66692
Fix bug #66692
2024-07-29 14:50:16 +03:00
c98285ffef Merge pull request #1605 from ONLYOFFICE/fix/bug66675
Fix bug #66675
2024-07-29 14:50:03 +03:00
4b99c4179b Fixed inaccuracies when converting html to ooxml elements big and small 2024-07-29 12:39:51 +03:00
e98dec952f Fix build 2024-07-26 21:43:43 +03:00
8b2d7035c1 Add build to JAR 2024-07-26 19:42:37 +04:00
234def9cd7 Autowrap function arguments
+ Add constructor from Java arrays
2024-07-26 19:10:32 +04:00
ce92766ef6 Fix paths 2024-07-26 17:16:06 +03:00
59c95c5039 Merge pull request #1597 from ONLYOFFICE/feature/pdf-layer
Feature pdf layer
2024-07-26 07:05:38 -07:00
a23002225a Merge pull request #1598 from ONLYOFFICE/fix/bug-59297
Feature pdf headings
2024-07-26 07:03:52 -07:00
cb64a5a266 Fix bug #66675 2024-07-26 16:51:24 +06:00
65483d0460 fix bug #69395 2024-07-26 13:31:16 +03:00
41758f0552 Merge pull request #1604 from ONLYOFFICE/feature/docx-renderer
Fix bug with spacing
2024-07-26 02:30:17 -07:00
bfd790ba11 Fix bug with spacing 2024-07-26 12:26:59 +03:00
81d9e3cfd7 Merge pull request #1603 from ONLYOFFICE/feature/docx_renderer
Feature/docx renderer
2024-07-26 01:42:31 -07:00
2920527898 Reformat code 2024-07-26 11:40:01 +03:00
7013fdcb8d Merge branch hotfix/v8.1.1 into release/v8.2.0 2024-07-26 08:05:06 +00:00
feda29eb77 Merge branch hotfix/v8.1.1 into develop 2024-07-26 08:05:02 +00:00
caf90eb3a3 Merge branch hotfix/v8.1.1 into master 2024-07-26 08:04:53 +00:00
0d84e22e79 Fix spaces more 2024-07-25 19:13:29 +03:00
f2acef6bb2 Add docbuilder.utils.Utils class to edit PATH on Windows 2024-07-25 20:06:11 +04:00
84b8850a52 Fix bug with spaces 2024-07-25 16:12:40 +03:00
b2a3de852a Fix bug #66692 2024-07-25 17:51:20 +06:00
a8fa59d64d Added ruby support and bug fixes 2024-07-25 14:44:20 +03:00
59b84f26ee Merge remote-tracking branch 'origin/fix/bug68344' into release/v8.2.0 2024-07-25 10:44:47 +03:00
5b17009fb9 Merge remote-tracking branch 'origin/fix/bug68540' into release/v8.2.0 2024-07-25 10:41:50 +03:00
a5827f187c Merge remote-tracking branch 'origin/fix/bug68585' into release/v8.2.0 2024-07-25 10:41:09 +03:00
6ae25ca4c4 Merge remote-tracking branch 'origin/fix/bug69238' into release/v8.2.0 2024-07-25 10:39:58 +03:00
ff4425e977 fix grad 2024-07-24 18:36:10 +03:00
06edc93c7b Fix bug #69238 2024-07-24 18:16:50 +03:00
8f9b35d94a Fix inline destination 2024-07-24 16:35:14 +03:00
14c06e4e7b Fix x coord Outlines 2024-07-24 15:16:21 +03:00
abaaa54bc2 Fix SetByIndex and test example
(now it does work)
2024-07-24 14:05:29 +04:00
7d0683e338 Update test example
(it doesn't work yet)
2024-07-23 20:32:44 +04:00
f9d6b49a05 Rename Call() to call() 2024-07-23 20:31:43 +04:00
01916b7de6 Add file type constants 2024-07-23 19:49:14 +04:00
666d62239e Add class CDocBuilderContext to Java and JNI 2024-07-23 19:36:49 +04:00
2e25f5dc64 Get previous array on return 2024-07-23 18:36:27 +03:00
cc61536a90 Fix function naming for CDocBuilderContextScope 2024-07-23 19:36:01 +04:00
58b5417ab4 Add class CDocBuilderContextScope to Java and JNI 2024-07-23 19:10:08 +04:00
c056c14303 Add hint how to run compiled Java example 2024-07-23 18:15:39 +04:00
1b975c7048 Get headings as an array
Get headings as an array with levels and convert to tree
2024-07-23 17:07:04 +03:00
3fd5b5612b Add test Java example 2024-07-23 17:32:51 +04:00
b8a8d36b8b Improved html to ooxml conversion 2024-07-23 14:55:38 +03:00
ccbeb28f8a fix bug #69325 2024-07-23 14:23:35 +03:00
6ab0d9d106 Fixes in Java code 2024-07-22 21:31:27 +04:00
79309d3f02 Add Java code for CDocBuilder
+ Change private members to package-private
2024-07-22 17:09:48 +04:00
c8c4edf592 Add JNI code for CDocBuilder 2024-07-22 16:37:17 +04:00
eac73b31b3 Add cell metadata conversion 2024-07-22 18:17:49 +06:00
64afe55078 Add Java code for CDocBuilderValue
+ Changed all JNI functions to static
2024-07-22 15:28:15 +04:00
383375ade2 Add metadata mdx binary reading 2024-07-22 15:54:10 +06:00
967a5728c7 fix build 2024-07-22 11:46:35 +03:00
16324b7bf1 Add future metadata bynary reading 2024-07-22 14:16:52 +06:00
62b96623a0 Add missed files 2024-07-22 11:04:18 +03:00
8a105d35d5 Merge pull request #1596 from ONLYOFFICE/fix/bug-69284
Fix bug 69284
2024-07-22 00:56:50 -07:00
d48e3ab6e0 Merge branch 'develop' into feature/add-future-functions-conversion 2024-07-22 13:12:00 +06:00
eaf2c02b86 Fix bug 69284 2024-07-20 13:37:23 +03:00
46f30b980f Add JNI code for CDocBuilderValue 2024-07-19 20:35:42 +04:00
ac4f15b999 Improved html to ooxml conversion 2024-07-19 16:59:58 +03:00
918a940e05 . 2024-07-19 15:18:58 +03:00
a28f12e170 Add metadata blocks conversion from bin 2024-07-19 17:09:59 +06:00
43e506cff1 Add metadata types conversion from bin 2024-07-19 16:17:45 +06:00
21cf3df902 Add esstr conversion from bin 2024-07-19 15:39:55 +06:00
47961709ad Fix docbuilder.c ToString function 2024-07-19 13:13:34 +04:00
a47e72cf2f fix bug #69311 2024-07-19 11:07:47 +03:00
91d63bc49f Merge branch 'develop' into feature/add-future-functions-conversion 2024-07-19 13:38:57 +06:00
bc65bf962e Fix metadata conversion to xlsb 2024-07-18 16:00:51 +06:00
4abc5b6bcc Add mdx metadata conversion 2024-07-18 14:38:16 +06:00
472c9ecd0d for bug #61035 2024-07-17 18:21:03 +03:00
7b8aa38c37 Fix bug 45813 2024-07-17 17:40:11 +03:00
5c87955ae2 Fix bug 56118 2024-07-17 16:12:53 +03:00
c37aa9d9dc Fix bug 55429 2024-07-17 16:11:02 +03:00
d699c30bda Fix bug 48721 2024-07-17 16:09:42 +03:00
4af9055ade Add future metadata conversion 2024-07-17 15:19:43 +06:00
9db017b9f4 Fix bug 69136 2024-07-17 12:16:44 +03:00
70fe676300 Improved colgroup support in html to ooxml conversion 2024-07-16 18:36:09 +03:00
e73d4455c2 Fix bug 55995
Support pTransferFunc for setSoftMask
2024-07-16 17:57:52 +03:00
96d994dc65 Add metadata blocks conversion to bin 2024-07-16 20:51:47 +06:00
87f7be4bc6 Add binary writing ESSTR and ESMDT 2024-07-16 19:40:20 +06:00
3158e830ff Indetns fix 2024-07-16 13:56:17 +03:00
33daee696c Delete unused 2024-07-16 13:13:28 +03:00
305492ec7b Fix flip SoftMask 2024-07-15 18:22:06 +03:00
e9f8045568 Add metadata records reading 2024-07-15 18:00:30 +06:00
90d46b55d8 Merge branch hotfix/v8.1.1 into master 2024-07-15 11:40:21 +00:00
2d213df8af Create CSoftMask 2024-07-12 18:25:11 +03:00
4bb3953171 Added colgroup implementation for tables in html to ooxml conversion 2024-07-12 18:03:18 +03:00
02c54d90c6 Add binary record reading 2024-07-12 20:45:53 +06:00
ce69cf40d2 Add mdxSet bin records 2024-07-12 19:39:03 +06:00
013ab00f06 Add Mdx Tuple binary records 2024-07-12 18:31:23 +06:00
2ef1e8f820 Add bmrIstr binary record 2024-07-12 16:47:16 +06:00
db980db306 Add mdxKpi binary struct 2024-07-12 16:24:55 +06:00
45a7827b1b Merge branch 'develop' into feature/add-future-functions-conversion 2024-07-12 13:49:11 +06:00
f8e894af67 Testing agg::scanline_u8_am 2024-07-11 18:27:49 +03:00
f1d932c084 Add Mdxmbrprop bin structs 2024-07-11 19:22:48 +06:00
a452a20049 Add Mdx bin structures 2024-07-11 18:53:39 +06:00
d69b861ff7 Merge branch 'develop' into feature/add-future-functions-conversion 2024-07-11 18:20:28 +06:00
4305ececd3 Add Esmdx bin structs 2024-07-11 18:20:18 +06:00
777be23513 [android] Replace dependencies 2024-07-11 14:59:43 +03:00
12adcfc8f1 Add ESMBD bin structures 2024-07-11 16:43:49 +06:00
b8af955fcd fix bug #69104 2024-07-11 10:52:47 +03:00
176290adaf Fix bug + refactoring 2024-07-10 19:34:01 +03:00
32a46c6859 Merge branch 'develop' into feature/add-future-functions-conversion 2024-07-10 20:06:27 +06:00
c89de96a1b Add Esstr bin records 2024-07-10 20:04:45 +06:00
b3868ff146 fix bug #54575 2024-07-10 16:49:08 +03:00
f30aba8bf1 Added support for the rules attribute for tables in html to ooxml conversion 2024-07-10 15:23:05 +03:00
b039eeca38 fix bug #69097 2024-07-10 13:00:33 +03:00
450cbf0ab1 fix bug #69096 2024-07-10 12:10:14 +03:00
2e33e7d097 fix bug #69095 2024-07-10 12:00:34 +03:00
e9af537e63 Merge remote-tracking branch 'origin/hotfix/v8.1.1' into develop 2024-07-10 11:27:41 +03:00
849d3fb09a Merge pull request #1592 from ONLYOFFICE/fix/pdf-layer 2024-07-09 20:24:32 -07:00
ea76a114f3 Fix Alpha type SoftMask and nesting of layers 2024-07-09 23:15:22 +03:00
fb209c6c8a Fix bugs 2024-07-09 19:49:21 +03:00
d4af1308c0 Merge pull request #1591 from ONLYOFFICE/feature/svg-font
Added custom SVG font
2024-07-09 18:48:00 +03:00
824d9c59cf Fix shapes merging 2024-07-09 16:56:43 +03:00
d4f3cd3801 Fix bugs in html to ooxml conversion 2024-07-09 16:44:50 +03:00
c7fc2bc3a7 The blockquote tag implementation has been added to the html to ooxml conversion 2024-07-09 16:44:32 +03:00
f9ecfee609 Merge pull request #1590 from ONLYOFFICE/pdf/fix-rotate-layer
Fix rotate layer
2024-07-09 06:37:59 -07:00
a8c815d7bd Fix bugs
Fix paragpraph bug
Fix bug with lines in tables
2024-07-09 16:25:32 +03:00
64234659aa Merge pull request #1589 from ONLYOFFICE/fix/bug69073
Fix bug #69073
2024-07-09 06:16:59 -07:00
09c066def3 Change whitespaces on tabs 2024-07-09 19:15:12 +06:00
685434b2ab Merge remote-tracking branch 'origin/hotfix/v8.1.1' into develop 2024-07-09 16:04:22 +03:00
bcfb9b3630 Fix rotate layer 2024-07-09 16:02:57 +03:00
17e6ebeb31 Merge pull request #1584 from ONLYOFFICE/fix/bug68998
Fix bug #68998
2024-07-09 05:28:27 -07:00
ae0e888186 Merge pull request #1588 from ONLYOFFICE/fix/bug-69049
Fix bug 69049
2024-07-09 05:15:46 -07:00
4559d53a97 Change CContText logic 2024-07-09 15:01:34 +03:00
dac41ff6f7 Fix bug #69073 2024-07-09 17:12:21 +06:00
8cecbf1fb1 Merge branch 'develop' into feature/add-future-functions-conversion 2024-07-09 16:27:37 +06:00
5e5fec1666 add bg 2024-07-09 11:37:35 +03:00
a2d32b59a1 Fix bug 69049 2024-07-09 10:33:56 +03:00
0889f82c76 Merge pull request #1587 from ONLYOFFICE/feature/x2ttester
Fix bug 69056
2024-07-08 11:22:05 -07:00
56f2b18184 Add metadata info and future metadata bin structures 2024-07-08 21:31:44 +06:00
ee6ea32ad1 Fix bug 69056 2024-07-08 17:30:49 +03:00
69e6ff99f6 Merge pull request #1586 from ONLYOFFICE/fix/EmfPlus
Fix EmfPlus
2024-07-08 04:04:26 -07:00
b763041695 Fixed working with the embedded EmfPlusOnly metafile 2024-07-08 13:58:23 +03:00
712d603ff2 Add metadata conversion structures 2024-07-08 01:24:16 +06:00
adfc64f01e fix bug #69031 2024-07-06 14:00:09 +03:00
f465f17b93 Merge pull request #1585 from ONLYOFFICE/fix/pdf-layer
Fix bugs #69016, #56088, #69019
2024-07-05 09:09:27 -07:00
efd7b5ac9a fix bug #69023 2024-07-05 17:24:33 +03:00
2375b476d0 Fix drawMaskedImage 2024-07-05 17:05:48 +03:00
f97bb4e688 Fix actual fonts 2024-07-05 17:04:56 +03:00
aff7b42f71 Add Isolated for AlphaMask and TransparencyGroup 2024-07-05 15:46:57 +03:00
0675b8c5b5 Fix bug 69019 2024-07-05 15:28:30 +03:00
a27c26dbe3 Fix bug #68998 2024-07-05 18:09:07 +06:00
74d7bbca7c Improvement in html to xml conversion of image size calculation 2024-07-04 18:00:32 +03:00
6eba82f433 Improvement in html to ooxml conversion of multi-level lists 2024-07-04 18:00:06 +03:00
d1460a057e Merge remote-tracking branch 'origin/fix/bug68957' into develop 2024-07-04 15:36:26 +03:00
21ba3ac0c9 fix bug #68957 2024-07-04 15:35:36 +03:00
1e2535f6e1 Remove metadata xlsb conversion 2024-07-04 16:52:19 +06:00
14196ddc9f Add Mask and Layer for pdf 2024-07-03 17:34:25 +03:00
18db2f8614 Merge pull request #1574 from ONLYOFFICE/fix/bug-68843
Fix bug #68843
2024-07-03 06:58:26 -07:00
81f01f49ed Merge pull request #1583 from ONLYOFFICE/fix/bug-68928
Fix bug 68928
2024-07-03 06:58:08 -07:00
4cb159a794 Fix bug #68928 2024-07-03 16:53:50 +03:00
ce6f6ea256 Add custom functions conversion 2024-07-03 19:05:39 +06:00
e164168418 fix bug #68971 2024-07-03 15:07:35 +03:00
fd60059dd6 fix bug #68974 2024-07-03 15:03:03 +03:00
e40be65c55 Merge pull request #1582 from ONLYOFFICE/fix/bug-68951
Fix bug 68951
2024-07-02 09:19:54 -07:00
0bf9663169 Fix bug 68951 2024-07-02 18:51:25 +03:00
a391316529 Merge branch 'develop' into feature/add-future-functions-conversion 2024-07-02 16:41:30 +06:00
b1ff8b79d3 Merge remote-tracking branch 'origin/hotfix/v8.1.1' into develop 2024-07-02 09:52:52 +03:00
efb9095dc5 fix bug #55042 2024-07-02 09:43:40 +03:00
06a60b2846 Add other future function names 2024-07-01 21:18:40 +06:00
3aab7fd183 fix bug #45681 2024-07-01 17:33:14 +03:00
0c0cd575ad Merge pull request #1579 from ONLYOFFICE/fix/pdf-bugs
Fix bug 60317
2024-07-01 03:17:14 -07:00
75b22f6e19 Merge branch 'develop' into feature/add-future-functions-conversion 2024-07-01 13:13:33 +06:00
82c06b5aaa Merge pull request #1581 from ONLYOFFICE/feature/libvlc-linux
Update libvlc build with changed RPATHs
2024-06-29 11:32:24 -07:00
efa4433195 Added rendering of custom fonts in svg 2024-06-28 21:18:00 +03:00
e9c9530d66 Update build with changed rpaths 2024-06-28 20:27:57 +04:00
6c36fc7146 Add script to change rpaths in libvlc build 2024-06-28 20:27:36 +04:00
d2724ac712 Add static constructor 2024-06-28 20:51:59 +06:00
34db65ff5e fix bug #68916 2024-06-28 14:36:40 +03:00
e4e35ab579 Add future function parser 2024-06-28 15:01:57 +06:00
5770551ed4 Merge remote-tracking branch 'origin/hotfix/v8.1.1' into develop 2024-06-28 11:28:45 +03:00
75c56c13fc fix bug #68864 2024-06-28 11:10:48 +03:00
e5b0c0f1f9 fix bug #68873 2024-06-28 10:46:51 +03:00
723dcef8aa fix bug #68895 2024-06-28 10:34:42 +03:00
bc56b97ce0 Merge branch release/v8.1.0 into master 2024-06-26 10:42:10 +00:00
880b96acfc Fix build 2024-06-26 12:30:03 +03:00
81806d96d0 Fix bug 60317 2024-06-26 12:29:51 +03:00
78c47b2007 Merge branch 'develop' into feature/add-future-functions-conversion 2024-06-26 14:58:21 +06:00
49a9205aad Merge pull request #1576 from ONLYOFFICE/fix/bug68834
Fix bug #68834
2024-06-26 11:58:10 +03:00
971205b325 For bug 59297 2024-06-26 11:02:05 +03:00
73fc80aa7d Merge remote-tracking branch 'origin/fix/bug23800' into develop 2024-06-26 10:03:49 +03:00
84836a3e8b Merge remote-tracking branch 'origin/fix/bug53148' into develop 2024-06-26 10:03:27 +03:00
6dc7ff0874 fix bug #49062 2024-06-26 09:51:20 +03:00
eec0fa47ce Merge remote-tracking branch 'origin/hotfix/v8.1.1' into develop 2024-06-26 09:14:19 +03:00
ebadb754c5 fix bug #68471 2024-06-26 08:59:12 +03:00
7d3bf0c328 Merge branch 'develop' of https://github.com/ONLYOFFICE/core into develop 2024-06-26 08:41:11 +03:00
7e7ed8d746 Merge pull request #1577 from ONLYOFFICE/feature/libvlc-linux
Add new libva libraries to linux libVLC build
2024-06-25 11:30:59 -07:00
cd7b39acf2 fix bug #68852 2024-06-25 18:47:51 +03:00
92a3c6cfce Fix Dockerfile 2024-06-25 19:14:16 +04:00
f3e6b5bc21 Add libva libraries to build 2024-06-25 18:42:16 +04:00
95d2939a73 Fix bug 61747 2024-06-25 17:39:06 +03:00
da06f82447 [x2t] Fix bug 68805 2024-06-25 17:17:03 +03:00
5ad4cca9f4 Fix bug #68834 2024-06-25 20:15:58 +06:00
3d528bf8b5 Fix bug #68843
Added switch implementation in svg
2024-06-25 16:39:42 +03:00
fe489b9da0 Rebuild libvlc with libva2 2024-06-25 17:38:25 +04:00
6d9bccee65 fix bug #68601 2024-06-25 16:22:35 +03:00
6ae6c37ef1 Added reading of custom fonts in svg 2024-06-25 15:51:04 +03:00
cc3528c226 Merge pull request #1573 from ONLYOFFICE/fix/bug-68549
Fix bug 68549
2024-06-25 03:36:54 -07:00
db4ae797a1 Fix bug 68549 2024-06-25 13:25:47 +03:00
b1810af6f0 Merge branch 'develop' of https://github.com/ONLYOFFICE/core into develop 2024-06-25 10:59:46 +03:00
54468d21d5 Merge branch 'develop' into feature/add-future-functions-conversion 2024-06-25 13:32:05 +06:00
263b48dea0 Fix bug #53148 2024-06-24 23:04:22 +05:00
128e09f839 Merge pull request #1571 from ONLYOFFICE/fix/bug68007
Fix bug #68007
2024-06-24 17:36:58 +03:00
5b16ea0693 Merge pull request #1570 from ONLYOFFICE/fix/bug58826
Fix bug #58826
2024-06-24 17:36:42 +03:00
be821d6b45 Fix bug #23800 2024-06-24 19:29:28 +05:00
4c08e60ecc Merge pull request #1572 from ONLYOFFICE/fix/bug-68712
Fix bugs 68712, 68751
2024-06-24 07:27:18 -07:00
e55101141c [x2t] Save changes.zip in applyChangesPdf; Fix bug 67341 2024-06-24 16:03:28 +03:00
ce9268f166 Fix for PdfWriter 2024-06-24 15:46:28 +03:00
e7751e891a Fix bug #58826 2024-06-24 17:47:13 +06:00
a3a734a558 fix bug #68769 2024-06-23 10:43:21 +03:00
7326f88aa0 Create CAnnotFonts 2024-06-21 17:23:00 +03:00
83f98f3186 Merge branch 'fix/pre-hotfix' into hotfix/v8.1.1 2024-06-21 17:19:38 +03:00
b60a956b84 Add future function conversion 2024-06-21 20:17:39 +06:00
2d6ef9a38b fix bug #68767 2024-06-21 16:02:21 +03:00
baae7b0a15 Fix bug 68754 2024-06-21 12:17:51 +03:00
5e7caad32a fix bug#68764 2024-06-20 16:16:28 +03:00
a517809a5d fix bug #68766 2024-06-20 16:11:44 +03:00
255fa70292 Fix bug 68751 2024-06-20 12:44:32 +03:00
71ecf1a1e0 Fix bug 68712 2024-06-19 18:29:03 +03:00
8d092ad6e4 Fix bug #68711 2024-06-19 17:55:43 +06:00
d9269bcd33 fix bug #68406 2024-06-19 13:23:11 +03:00
2f45e0952e Fix bug with cloud images 2024-06-19 11:28:22 +03:00
05293f43ce Merge branch release/v8.1.0 into master 2024-06-19 08:22:01 +00:00
df6c20b57d Fix bug #68007 2024-06-18 19:36:37 +06:00
59b3862d89 Fix bug #68585 2024-06-18 17:18:41 +05:00
e80e545024 Merge pull request #1566 from ONLYOFFICE/fix/bug-68688 2024-06-17 07:56:13 -07:00
2245952739 Merge pull request #1567 from ONLYOFFICE/fix/bug-68252 2024-06-17 07:55:25 -07:00
ff52afecc9 Fix bug #68252 2024-06-17 17:50:50 +03:00
5503208e95 Fix bug 68237 2024-06-17 17:29:04 +03:00
90c1ffe7de Fix bugs 68688, 68689
Related bugs 46629, 61014, 68479, 68545
2024-06-17 17:08:18 +03:00
23ef8fd8af Merge pull request #1565 from ONLYOFFICE/fix/bug-68638
Fix bug #68638
2024-06-17 05:01:09 -07:00
e5559e4cf8 Fix bug #68638 2024-06-17 14:22:19 +03:00
91b82d9dcb Merge remote-tracking branch 'origin/release/v8.1.0' into develop 2024-06-14 16:03:23 +03:00
142ed45a1b . 2024-06-14 16:02:49 +03:00
76623ec66d [pdf=>image] Support orientation 2024-06-14 15:51:28 +03:00
d5a4cf73ec Merge pull request #1564 from ONLYOFFICE/feature/StarMath
Fix StarMath
2024-06-14 05:36:03 -07:00
ef530fea0b fix bug 68587 2024-06-14 14:10:51 +03:00
a72b42bd6d Fix placeholder index attribute 2024-06-14 15:58:56 +05:00
e20f98aa4a Merge pull request #1563 from ONLYOFFICE/fix/bug-68629
Fix bug 68629
2024-06-14 02:48:42 -07:00
cc27db504f Fix embedded fonts 2024-06-14 12:34:34 +03:00
1da9dc12b5 Merge pull request #1562 from ONLYOFFICE/fix/svg
Fix svg
2024-06-14 02:11:45 -07:00
6cf95e6151 Fix bug #68638 2024-06-14 12:06:45 +03:00
ad4ba02895 For bug 65310 2024-06-14 11:16:08 +03:00
79c7fced0a For bug 68629 2024-06-14 11:15:33 +03:00
b63ff91ce4 Merge pull request #1561 from ONLYOFFICE/fix/bug-68629
For bug 68237
2024-06-13 23:34:45 -07:00
d0b6c55347 For bug 68237 2024-06-14 09:16:09 +03:00
53f9629194 Merge pull request #1560 from ONLYOFFICE/fix/bug-68609
Fix bug #68609
2024-06-13 09:56:58 -07:00
272b69ae70 Fix bug #68609 2024-06-13 19:43:25 +03:00
8c081c83c9 fix bug 68586 2024-06-13 19:31:38 +03:00
37bef7c398 Merge pull request #1559 from ONLYOFFICE/fix/bug-68546
Fix bug 68546
2024-06-13 08:26:39 -07:00
aae80a161c Clear 2024-06-13 18:04:39 +03:00
a498117748 Fix bug 68546 2024-06-13 17:54:14 +03:00
7a4cebb89c fix bug #68569 2024-06-13 17:46:06 +03:00
3a8c941649 Merge remote-tracking branch 'origin/release/v8.1.0' into develop 2024-06-13 17:22:43 +03:00
32464cb685 The size setting of metafiles has been changed 2024-06-13 17:22:09 +03:00
a8787e9220 Merge pull request #1558 from ONLYOFFICE/fix/bug68545
Fix bug 68545
2024-06-13 07:01:20 -07:00
17bc68d102 Fix bug 68545 2024-06-13 16:49:13 +03:00
ca17a96d32 Fix null 2024-06-13 13:08:21 +03:00
04419326f4 Fix bug 68545 2024-06-13 13:00:13 +03:00
adfbf6ea3f Merge pull request #1549 from ONLYOFFICE/fix/bug-68532
Fix bug 68532
2024-06-13 02:15:00 -07:00
61397b67c1 Merge pull request #1557 from ONLYOFFICE/fix/propsbinary 2024-06-13 02:06:29 -07:00
a6e87b589c add props to binary 2024-06-13 11:56:10 +03:00
5927b0113f Merge pull request #1556 from ONLYOFFICE/fix/bug68540
fix bug #68540
2024-06-11 22:01:39 +03:00
e03b3e9f1b fix bug #68540 2024-06-11 22:01:06 +03:00
ecef6154ff Merge pull request #1555 from ONLYOFFICE/fix/bug65788
fix bug #65788
2024-06-11 21:38:19 +03:00
e16578c3a1 fix bug #65788 2024-06-11 21:36:15 +03:00
3e709a99ed Merge pull request #1548 from ONLYOFFICE/fix/bug68485
Fix bug #68485
2024-06-11 19:56:16 +03:00
c2f0390b6a Merge pull request #1550 from ONLYOFFICE/fix/bug68503
Fix bug #68503
2024-06-11 19:56:04 +03:00
27619798b9 Merge pull request #1551 from ONLYOFFICE/fix/bug68510
Fix bug #68510
2024-06-11 19:55:50 +03:00
e62585a7fc Merge pull request #1553 from ONLYOFFICE/fix/bug68404
Fix bug #68404
2024-06-11 19:45:19 +03:00
19c4a674f6 Merge pull request #1554 from ONLYOFFICE/fix/bug68238
fix bug #68238
2024-06-11 19:45:06 +03:00
505d8093ef fix bug #68238 2024-06-11 19:42:41 +03:00
3316216f8e Fix bug #68404 2024-06-11 19:35:41 +06:00
7131129ba0 Merge pull request #1552 from ONLYOFFICE/feature/StarMath
Fix StarMath
2024-06-11 06:19:47 -07:00
4070725515 Fix bug #68510 2024-06-11 18:34:27 +06:00
5dfeeeb809 Fix bug #68503 2024-06-11 15:52:14 +06:00
14b66e2bb3 Fix bug 68532 2024-06-11 11:39:04 +03:00
9a5e1464bd Fix bug #68485 2024-06-11 12:32:39 +06:00
af9a69d0f2 Update logic & fix bugs 2024-06-11 08:00:48 +03:00
819e568a35 Merge pull request #1547 from ONLYOFFICE/fix/bug-64722
Fix bug #64722
2024-06-10 03:36:46 -07:00
c8ce9c8a35 Merge pull request #1546 from ONLYOFFICE/fix/bug-68479
Fix bug 68479
2024-06-10 01:39:53 -07:00
95f91b816a Fix bug #64722 2024-06-10 11:18:54 +03:00
29788a5d1b Fix bug 68479 2024-06-10 11:14:55 +03:00
a81fb19e1a fix bug 68445 2024-06-10 10:35:08 +03:00
c82c8743f8 improvement of parsing and bracket conversion 2024-06-10 10:08:23 +03:00
ebef9ad556 Merge pull request #1545 from ONLYOFFICE/fix/bug68186 2024-06-07 18:45:05 +03:00
a564d289b7 Merge pull request #1543 from ONLYOFFICE/fix/html-bugs
Fix html bugs
2024-06-07 18:31:25 +03:00
a98ee52dc5 Fix bug 68186 2024-06-07 17:32:55 +03:00
f39355156c Merge remote-tracking branch 'origin/release/v8.1.0' into develop 2024-06-07 17:28:36 +03:00
99a560bebd Merge pull request #1544 from ONLYOFFICE/fix/bug68390
Fix bug #68390
2024-06-07 14:28:46 +03:00
cb10bccd6a Merge pull request #1538 from ONLYOFFICE/fix/bug68404
Fix bug #68404
2024-06-07 14:27:57 +03:00
c219ce8b06 Merge pull request #1537 from ONLYOFFICE/fix/bug68402
Fix bug #68402
2024-06-07 14:27:04 +03:00
afc8dd6e48 Merge pull request #1536 from ONLYOFFICE/fix/bug68400
Fix bug #68400
2024-06-07 14:24:14 +03:00
505c28f88d Merge pull request #1532 from ONLYOFFICE/fix/bug68238
Fix bug #68238
2024-06-07 14:23:44 +03:00
49d789dc77 Merge pull request #1524 from ONLYOFFICE/fix/bug65172
Fix bug #65172
2024-06-07 14:22:56 +03:00
2da89c8b03 Fix bug #68390 2024-06-07 15:59:35 +06:00
24fb53ac6f Fix bug #68426 2024-06-07 12:20:28 +03:00
4af39960da Fix bug #50286 2024-06-07 12:20:08 +03:00
29115060b4 Merge pull request #1540 from ONLYOFFICE/release/v8.1.0
Release/v8.1.0
2024-06-06 23:03:36 +03:00
dc485997f0 Merge pull request #1539 from ONLYOFFICE/feature/StarMath
Fix StarMath
2024-06-06 22:15:52 +03:00
2e6d5450b4 fix bug #66811 2024-06-06 16:22:04 +03:00
4ed4c5596f Fix bug #68404 2024-06-06 17:38:26 +06:00
dea44f1829 Fix bug #68402 2024-06-06 16:57:06 +06:00
b428487d07 Merge pull request #1535 from ONLYOFFICE/fix/bug-68123
Fix bug 68123
2024-06-06 13:22:30 +03:00
f366cae604 Fix bug #68400 2024-06-06 16:20:11 +06:00
96ea86e3c0 Fix bug 68123 2024-06-06 13:09:07 +03:00
5c7d0a61be fix bug 68332 2024-06-06 11:59:48 +03:00
4014d4914f fix bug 68327 2024-06-06 11:02:30 +03:00
0b77fb2bba fix bug 68333 2024-06-06 10:38:01 +03:00
2e1ccbc985 For bug 46629 2024-06-06 10:21:51 +03:00
f5202108a1 Merge pull request #1534 from ONLYOFFICE/fix/bug-68252
Fix bug #68252
2024-06-06 09:45:18 +03:00
2f7407bd8e Merge pull request #1533 from ONLYOFFICE/fix/bug-67967
Fix bug 67967
2024-06-06 09:45:00 +03:00
ac721572f2 Fix bug #67967 2024-06-06 08:51:59 +03:00
33da43b2f4 Fix bug 67747 2024-06-05 19:57:56 +03:00
6000944cc9 Fix bug #68238 2024-06-05 19:20:58 +06:00
591dffc965 Merge pull request #1531 from ONLYOFFICE/feature/StarMath
fix bug 68328
2024-06-05 15:57:20 +03:00
cd74ef4ded fix bug 68328 2024-06-05 15:52:33 +03:00
c7612a259d Add support create & save pdf forms 2024-06-05 14:41:41 +03:00
f665afc1ad Fix bug #68344 2024-06-05 14:31:48 +05:00
586455310a Merge pull request #1530 from ONLYOFFICE/fix/pdf-tilingPattern
Fix swap RGB pdf tilingPattern
2024-06-05 12:25:31 +03:00
96008085d6 Fix swap RGB 2024-06-05 11:46:30 +03:00
282b87e518 Merge pull request #1529 from ONLYOFFICE/fix/bug-63346
Fix bugs 63346, 66523
2024-06-05 11:16:00 +03:00
115a60c273 For bug 68216 2024-06-05 02:26:58 +03:00
66d48673cf Fix min tilingPattern 2024-06-04 15:41:58 +03:00
29ef74770a Fix bug 66523 2024-06-04 13:22:18 +03:00
15247d39f0 Fix bug 63346 2024-06-04 12:22:21 +03:00
e18fc06c7b Fix bug in first word splitting 2024-06-04 11:12:18 +03:00
145154690b Merge pull request #1528 from ONLYOFFICE/fix/bug-68349
For bug 68349
2024-06-04 09:59:16 +03:00
4f28d8d3d8 For bug 68349 2024-06-04 09:55:42 +03:00
4cd6e99531 Merge pull request #1527 from ONLYOFFICE/release/v8.1.0
Release/v8.1.0
2024-06-03 20:10:54 +03:00
2d3cd6bd3a Merge remote-tracking branch 'origin/release/v8.1.0' into develop 2024-06-03 16:15:48 +03:00
2fdd88bee2 Merge remote-tracking branch 'origin/fix/bug68170' into release/v8.1.0 2024-06-03 14:50:28 +03:00
7c501fe5a3 Fix bug #68252 2024-06-03 12:06:29 +03:00
acbf5b0c40 Fix bug #68170
Add image alternative text and description
2024-06-03 13:22:38 +05:00
d843cf1fe1 Fix bug #63489
Convert text divided into columns
2024-06-03 13:21:35 +05:00
50529346e4 Merge remote-tracking branch 'origin/release/v8.1.0' into fix/bug63489 2024-06-03 13:21:03 +05:00
803fcf3602 fix bug #68304 2024-06-02 17:35:48 +03:00
d83930bf67 fix bug #68307 2024-06-02 16:59:20 +03:00
cd5ca284e1 Change IsDouble method: return true if value has integer type 2024-06-02 15:37:04 +03:00
7a1a59a883 For bug 68028 2024-06-02 10:20:52 +03:00
56a08867db refactoring 2024-05-31 21:45:44 +03:00
bfb97ef026 Merge pull request #1526 from ONLYOFFICE/fix/pdf-tilepattern
Fix pdf rotate point
2024-05-31 16:47:41 +03:00
742cfde620 Fix rotate point 2024-05-31 16:39:41 +03:00
600fd26e30 fix build 2024-05-31 13:45:15 +03:00
92fa08303e Merge pull request #1525 from ONLYOFFICE/fix/pdf-default-color
Fix default color
2024-05-31 11:52:22 +03:00
17bd0f99dd Fix default color 2024-05-31 11:49:05 +03:00
4eaf500040 Fix bug #65172 2024-05-30 23:20:35 +06:00
d5d4d06553 Merge pull request #1517 from ONLYOFFICE/fix/bug66009
Fix bug #66009
2024-05-30 16:47:53 +03:00
400da99fa9 Merge pull request #1522 from ONLYOFFICE/fix/bug68229
Fix bug #68229
2024-05-30 16:46:56 +03:00
85be8041b1 Merge remote-tracking branch 'origin/release/v8.1.0' into develop 2024-05-30 16:42:51 +03:00
b209e00333 fix bug #68276 2024-05-30 16:30:59 +03:00
f86548c873 Refactoring 2024-05-30 16:27:00 +03:00
1859173fb6 Merge pull request #1523 from ONLYOFFICE/fix/bug-68256
Fix bug 68256
2024-05-30 13:06:54 +03:00
dfb0aeefcb Fix read/write tilingPattern in pdf 2024-05-30 12:45:56 +03:00
6ba5d1141e Fix bug 68256 2024-05-30 12:45:17 +03:00
8d6a13b24a Fix bug #68229 2024-05-30 15:41:52 +06:00
a66fdc73a5 fix bug #68264 2024-05-29 20:35:44 +03:00
a2b8fcc5e1 for bug #61035 2024-05-29 20:03:17 +03:00
7ac5ff5383 Merge pull request #1521 from ONLYOFFICE/fix/bug-68233
Fix bug 68233
2024-05-29 15:50:42 +03:00
5e560528a4 Fix bug 68233 2024-05-29 15:08:32 +03:00
b8c57da779 Merge pull request #1519 from ONLYOFFICE/fix/html
Fix html/mht bugs
2024-05-29 11:43:39 +03:00
19951d807c Merge pull request #1520 from ONLYOFFICE/feature/jsc-inspectable-context
Set contexts inspectable for JSC
2024-05-29 09:58:59 +03:00
49d1426831 Fix bug #68230 2024-05-29 01:33:56 +03:00
e8ae960a26 Fix bug #68235 2024-05-29 01:32:54 +03:00
11ddc0ab4f Set contexts inspectable for JSC 2024-05-28 23:50:21 +04:00
5361740a02 Merge pull request #1518 from ONLYOFFICE/fix/bug-68225
Fix bug 68225
2024-05-28 16:44:09 +03:00
0050c6148c Fix bug 68225 2024-05-28 16:33:41 +03:00
8e3df68ffc fix bug #50594 2024-05-28 15:27:12 +03:00
ab829fa8db fix bug #68213 2024-05-28 11:28:19 +03:00
be64e3e624 Fix spacing 2024-05-28 11:05:59 +03:00
2f6a542d02 Fix tatPlainParagraph type 2024-05-28 05:48:49 +03:00
f69b52e232 Fix bug 68004 2024-05-28 04:57:26 +03:00
ce15265d5a Fix split logic (in progress) 2024-05-27 23:28:05 +03:00
370e317b79 Updated split logic (in progress) 2024-05-27 22:21:28 +03:00
bc56de19c1 Fix bug #66009 2024-05-27 20:11:30 +06:00
1de6787014 Merge pull request #1516 from ONLYOFFICE/feature/StarMath
fix StarMath attribute
2024-05-27 13:32:11 +03:00
b02189c14d Merge pull request #1504 from ONLYOFFICE/fix/html
Fix html bugs
2024-05-27 13:23:40 +03:00
63003a5e76 fix bug 68094 2024-05-27 11:57:54 +03:00
499810dbae . 2024-05-27 08:01:06 +03:00
f55d822c4f fix build 2024-05-26 20:17:44 +03:00
4c51371b96 Merge pull request #1513 from ONLYOFFICE/fix/pdf-rotate
Fix pdf rotate
2024-05-25 21:53:19 +03:00
4be711c0bf Merge remote-tracking branch 'origin/release/v8.1.0' into develop 2024-05-24 17:43:32 +03:00
986bcae0e2 Merge pull request #1514 from ONLYOFFICE/fix/bug68109
Fix bug #68109
2024-05-24 17:20:27 +03:00
96b87265bb Merge pull request #1515 from ONLYOFFICE/fix/bug68113
Fix bug #68113
2024-05-24 17:19:24 +03:00
0be217ba05 Fix bug #68109 2024-05-24 18:23:17 +06:00
af12226bfa Fix FlateDecode for annot view 2024-05-24 14:51:30 +03:00
d51f035561 Fix AddShape for NewPage 2024-05-24 14:32:29 +03:00
d01681bb1e Fix bug #66549 2024-05-24 12:02:18 +03:00
72e975f7d9 Merge pull request #1512 from ONLYOFFICE/fix/pdf-bug
Fix bugs 54371, 67641
2024-05-24 09:57:00 +03:00
ba87df6b9d Fix bug 67641 2024-05-24 09:36:51 +03:00
a1fed79a78 Fix bug 54371 2024-05-24 09:36:31 +03:00
08111e8fde fix bug #67992 2024-05-23 17:46:02 +03:00
1286b7f458 fix bug #68122 2024-05-23 17:27:42 +03:00
dcb4364410 Fix bug 67641 2024-05-23 17:23:06 +03:00
55a009713e Fix bug 54371 2024-05-23 16:56:40 +03:00
474828364f Merge remote-tracking branch 'origin/release/v8.1.0' into fix/pdf-rotate 2024-05-23 16:31:30 +03:00
9e145ef9e0 Merge pull request #1511 from ONLYOFFICE/fix/pdf-bug
Fix 67740
2024-05-23 16:27:40 +03:00
40b6178a0d Fix c_nPenWidth0As1px for annot/field renderer 2024-05-23 16:22:52 +03:00
a70f50206d fix bug #67917 2024-05-23 14:36:14 +03:00
40fa3e60c4 Merge remote-tracking branch 'origin/release/v8.1.0' into fix/bug63489 2024-05-23 16:35:05 +05:00
105a193742 fix bug #68143 2024-05-23 14:00:28 +03:00
4ca9a94609 Fix bugs in html 2024-05-23 13:00:50 +03:00
3bfb3ee045 Fix bug #68113 2024-05-23 15:17:23 +06:00
512df584ba Merge branch 'release/v8.1.0' of https://github.com/ONLYOFFICE/core into release/v8.1.0 2024-05-23 12:03:20 +03:00
84eebc69e1 fix bug #68135 2024-05-23 12:03:14 +03:00
7abb3899a7 Merge pull request #1499 from ONLYOFFICE/fix/bug65948
fix bug #65948
2024-05-23 11:48:49 +03:00
f19906c14c Merge pull request #1500 from ONLYOFFICE/fix/bug66694
Fix bug #66694
2024-05-23 11:48:09 +03:00
fd15cdf4d0 Merge pull request #1508 from ONLYOFFICE/fix/bug66675
Fix bug #66675
2024-05-23 11:47:32 +03:00
9d3e553086 Merge pull request #1510 from ONLYOFFICE/fix/bug68111
Fix bug #68111
2024-05-23 11:46:11 +03:00
a19b4a03b3 Fixed a bug with attributes of functions and indexes 2024-05-23 11:27:28 +03:00
90650b1af8 Merge remote-tracking branch 'origin/fix/bug67380' into release/v8.1.0 2024-05-22 19:27:19 +03:00
3780922610 Fix bug #68111 2024-05-22 21:42:33 +06:00
fbb7ab93d6 Fix bug 67740 2024-05-22 17:37:33 +03:00
ca5201e704 FreeText has Rotate 2024-05-22 16:49:19 +03:00
2b13696379 Merge pull request #1509 from ONLYOFFICE/feature/docbuilder-python
Add new features to python docbuilder wrapper
2024-05-22 16:41:20 +03:00
24b32a2ba7 Fix bug #67380 2024-05-22 17:56:53 +05:00
1cdb2b0f15 Add list constructor and automatic conversion to CValue in functions 2024-05-22 16:52:13 +04:00
7758da7173 Add number constants for file types 2024-05-22 15:55:39 +04:00
3cd89354bc Fix pdf rotate for drawingfile 2024-05-22 11:08:12 +03:00
5fbed3db1c Fix double hashtag for color in RC 2024-05-22 10:30:09 +03:00
f28119e646 fix bug #68010 2024-05-21 20:47:23 +03:00
a2b0495254 Fix bug #66675 2024-05-21 21:11:57 +06:00
28f873be5c Merge pull request #1507 from ONLYOFFICE/feature/docbuilder-python
Add functionality in docbuilder python wrapper
2024-05-21 18:10:39 +03:00
5dede9304b Add support added images on recognize 2024-05-21 16:52:54 +03:00
ab52ee7486 Move PATH modify to windows-only section 2024-05-21 17:37:34 +04:00
3bf80a74fe Add split logic in paragraph 2024-05-21 12:13:43 +03:00
8f711f607f fix bug #67989 2024-05-21 11:25:57 +03:00
f2c5fed3c1 Merge pull request #1506 from ONLYOFFICE/fix/pdf-free-text
Fix FreeText renderer length
2024-05-21 10:54:01 +03:00
1602fb2106 Fix FreeText renderer length 2024-05-21 10:49:49 +03:00
c3f72756a4 Merge pull request #1505 from ONLYOFFICE/fix/pdf-build 2024-05-21 10:19:51 +03:00
5f8b557eb5 Fix pdf build 2024-05-21 10:18:18 +03:00
de31b16f91 Add Split logic 2024-05-21 09:27:54 +03:00
9d8e75a957 Fix library names for linux and mac 2024-05-20 19:40:40 +04:00
839844cb4f Merge pull request #1503 from ONLYOFFICE/fix/pdf-shape-img
Fix pdf shape image
2024-05-20 17:57:59 +03:00
fac976a22e Read and write image ref for OShapes 2024-05-20 17:52:22 +03:00
84cb59d7b2 Merge pull request #1502 from ONLYOFFICE/fix/pdf-freetext-rc
Fix pdf freetext
2024-05-20 14:09:06 +03:00
788620079d Add loadLibrary() check and automatic Dispose() 2024-05-20 14:33:43 +04:00
0e5b95f1d8 Refactoring 2024-05-20 13:29:38 +04:00
d0a82d71ee Fix build 2024-05-20 12:29:00 +03:00
97f742f816 Merge remote-tracking branch 'origin/release/v8.1.0' into fix/pdf-freetext-rc
# Conflicts:
#	PdfFile/PdfEditor.cpp
2024-05-20 10:14:57 +03:00
58980e61b7 Fix typo and create folder for tests 2024-05-19 12:02:37 +03:00
5a04f9033b Fix build 2024-05-19 11:33:45 +03:00
28785f13bc Merge pull request #1501 from ONLYOFFICE/feature/docbuilder-python
Feature/docbuilder python
2024-05-19 11:23:46 +03:00
7a73d3288c Refactoring 2024-05-19 11:21:18 +03:00
d82b2dc6ef Fix bug #68073 2024-05-18 14:14:05 +03:00
6ad319554d Fix bug with font-size 2024-05-18 13:42:32 +03:00
ff3b94a23a Fix bug #68036 2024-05-18 13:05:58 +03:00
5227a593ed Fix bug #68034 2024-05-18 13:05:34 +03:00
c802944d3b Fixes in docbuilder.py
+ Add more complex example
+ Add .gitignore
2024-05-17 23:16:02 +04:00
93d77ee945 Added all classes to docbuilder.py 2024-05-17 22:09:38 +04:00
4c101b21d0 Changed lines ending for consistency 2024-05-17 22:07:17 +04:00
05366635c1 Remove development 2024-05-17 18:10:30 +03:00
d853d42090 Fix calculating glyph widths for Base14 fonts 2024-05-17 16:00:23 +03:00
cb06eae63e Merge remote-tracking branch 'origin/release/v8.1.0' into fix/bug63489 2024-05-17 17:20:42 +05:00
6ba40aba51 Fix bug #67380 2024-05-17 16:57:40 +05:00
b8d54fb295 fix bug #65948 2024-05-17 17:55:02 +06:00
84d7eb03f2 Add example of python wrapper 2024-05-17 14:11:22 +04:00
28cd584393 Fix delete functions and add simple c++ example 2024-05-17 14:10:50 +04:00
bd6cc8a759 Merge remote-tracking branch 'origin/fix/bug67926' into release/v8.1.0 2024-05-17 12:21:01 +03:00
7cfd4e2dfa Merge remote-tracking branch 'origin/fix/bug67822' into release/v8.1.0 2024-05-17 12:20:45 +03:00
f923f4e03d Merge remote-tracking branch 'origin/fix/bug67823' into release/v8.1.0 2024-05-17 12:20:32 +03:00
e8898ce424 Merge remote-tracking branch 'origin/fix/bug61378' into release/v8.1.0 2024-05-17 12:19:39 +03:00
ebe045a833 fix bug #67995 2024-05-17 11:56:18 +03:00
140f9970f9 Add wrapper library docbuilder_functions.dll and tests for it 2024-05-17 12:07:22 +04:00
3d23e74818 Fix bug #61378 2024-05-16 21:48:26 +05:00
c24c78267b Write Base14 fonts to pdf 2024-05-16 18:56:59 +03:00
a7501e370b Fix bug #66694 2024-05-16 19:06:13 +06:00
68200895d0 Merge pull request #1496 from ONLYOFFICE/fix/StarMath
Fix/StarMath
2024-05-16 13:57:28 +03:00
b6b99ee9f0 Redirect to annotation rendering 2024-05-15 17:43:59 +03:00
5ea601cde9 fix bug #67973 2024-05-15 16:25:51 +03:00
1e7611f3f9 Add method for duplicate image links on recognize 2024-05-15 13:20:20 +03:00
c14856ac6f fix bug #68011 2024-05-15 11:15:31 +03:00
8857d3daca fix bug #67972 2024-05-15 11:00:27 +03:00
ad1bd06bb3 fix bug #67968 2024-05-15 09:55:58 +03:00
52555f4d9d fix bug #67963 2024-05-15 09:24:08 +03:00
d85b3dd7f0 Support images on recognize 2024-05-14 21:43:21 +03:00
6af44146e5 Merge pull request #1495 from ONLYOFFICE/fix/bug66658
Fix bug 66658
2024-05-14 18:30:42 +03:00
f704c44e9e Merge pull request #1497 from ONLYOFFICE/fix/bug66678
Fix bug #66678
2024-05-14 18:30:10 +03:00
a9884c1efb Merge pull request #1498 from ONLYOFFICE/fix/bug66677
Fix bug #66677
2024-05-14 18:29:50 +03:00
2dc0956b3c Create CAnnotRenderer 2024-05-14 17:52:04 +03:00
7dbe7eb3e1 Fix bug #66677 2024-05-14 19:16:08 +06:00
5617968a0c Fix bug #67926 2024-05-14 17:51:19 +05:00
3b029ae4cd Merge branch 'release/v8.1.0' into fix/StarMath 2024-05-14 14:43:16 +03:00
73dc770870 Fix bug #66678 2024-05-14 17:41:48 +06:00
46e56afa5c bug fix(crashes, parsing correction) 2024-05-14 14:31:24 +03:00
e6842f50b3 Fix bug #bug66658 2024-05-14 15:20:51 +06:00
f4ec536794 Fix bug 67809 2024-05-14 10:40:54 +03:00
f008857ab2 Find Font for FreeText 2024-05-13 18:12:23 +03:00
e7022472ff Merge pull request #1492 from ONLYOFFICE/fix/bug67936
Fix bug #67936
2024-05-13 18:00:11 +03:00
b470c4b259 Merge pull request #1493 from ONLYOFFICE/fix/bug67933
Fix bug #67933
2024-05-13 17:59:56 +03:00
155103b40f Fix bug #67933 2024-05-13 15:30:01 +06:00
0eee7ea548 Merge pull request #1491 from ONLYOFFICE/fix/bug-67916
Fix bug #67916
2024-05-13 01:58:54 -07:00
b53527c9fd Fix bug #67936 2024-05-13 14:53:32 +06:00
fb12bfa57f Add MovablePoints on Label 2024-05-13 11:17:30 +03:00
1a5af05024 Merge pull request #1490 from ONLYOFFICE/release/v8.1.0
Release/v8.1.0
2024-05-13 00:36:14 -07:00
7a842c4b14 Merge pull request #1489 from ONLYOFFICE/fix/html
Fix html
2024-05-12 12:45:44 -07:00
9779e53fe7 The algorithm for checking arrays has been rewritten 2024-05-12 21:50:04 +03:00
5c495dcf8d Merge pull request #1488 from ONLYOFFICE/release/v8.1.0
Release/v8.1.0
2024-05-12 07:16:18 -07:00
6bccf233ee Merge pull request #1477 from ONLYOFFICE/fix/html
Fix bugs in html converter
2024-05-12 06:46:37 -07:00
83e020f492 Fix bug #67916 2024-05-10 14:32:23 +03:00
84e4797ddf fix bug #67940 2024-05-10 10:53:02 +03:00
40e7685751 fix bug #67941 2024-05-10 10:40:07 +03:00
bfdd7be53c Merge pull request #1487 from ONLYOFFICE/fix/bug67919
Fix bug #67919
2024-05-08 17:41:06 +03:00
198498a26d Merge pull request #1486 from ONLYOFFICE/fix/bug67922
Fix bug #67922
2024-05-08 17:40:34 +03:00
3ba74a0373 Merge pull request #1485 from ONLYOFFICE/fix/bug67923
Fix bug #67923
2024-05-08 17:40:17 +03:00
5c7b7615dd Fix find FreeText Fonts object 2024-05-08 17:40:11 +03:00
e2992c2a79 Fix bug #67919 2024-05-08 19:33:43 +06:00
aab5cfe30c Fix bug #67922 2024-05-08 19:15:45 +06:00
f32ace9737 Fix bug #67923 2024-05-08 18:50:17 +06:00
d8bed77b67 Fix bug #67823 2024-05-08 17:05:49 +05:00
7ae79f20b8 Fix bug #67822 2024-05-08 15:12:22 +05:00
0a09d4a872 Merge pull request #1482 from ONLYOFFICE/fix/bug67897
Fix bug67897
2024-05-08 13:06:42 +03:00
68e778ba1f Merge pull request #1483 from ONLYOFFICE/fix/bug67898
Fix bug #67898
2024-05-08 13:06:20 +03:00
6d28d1af1d Merge pull request #1484 from ONLYOFFICE/fix/bug67891
Fix bug #67891
2024-05-08 13:05:52 +03:00
7e7bc0eb0e Fix bug #67891 2024-05-08 15:39:02 +06:00
b32728c9f0 fix bug #66842 2024-05-08 12:06:28 +03:00
39748f9d9e fix bug #67895 2024-05-08 11:49:04 +03:00
dabe547fb4 [android] Build only arm arch 2024-05-08 11:33:09 +03:00
3104f84768 fix bug #67876 2024-05-08 10:53:05 +03:00
bb2967c3ea Write RD and CA for FreeText AP.N 2024-05-07 17:43:26 +03:00
de1c08d65a Fix bug #67898 2024-05-07 20:40:12 +06:00
a68f18c9f2 Fix bug #67897 2024-05-07 19:55:22 +06:00
d16d7a1e76 Merge pull request #1479 from ONLYOFFICE/fix/bug67867
Fix bug #67867
2024-05-07 15:21:18 +03:00
2338218fa6 Merge pull request #1478 from ONLYOFFICE/fix/bug67864
Fix bug67864
2024-05-07 15:21:05 +03:00
a46115f056 Merge pull request #1480 from ONLYOFFICE/fix/bug67860
Fix bug #67860
2024-05-07 15:20:53 +03:00
d61747c283 Merge pull request #1481 from ONLYOFFICE/feature/libvlc-player-vout
Add video output signal to libvlc
2024-05-07 05:12:50 -07:00
10afcda7a3 Add new signal to CVlcPlayer 2024-05-07 14:31:02 +04:00
680c3824f7 Fix bug #67860 2024-05-07 16:00:34 +06:00
194d1c2208 Fix bug #67864 2024-05-07 15:04:29 +06:00
88aba1cb02 Fix MK.IF.A default value 2024-05-07 11:43:20 +03:00
fd664bafae Fix bug #67867 2024-05-07 14:20:46 +06:00
c03ec96966 . 2024-05-07 10:40:24 +03:00
5e02a7c21e Merge remote-tracking branch 'origin/fix/xlsb_conversion' into release/v8.1.0 2024-05-07 10:25:34 +03:00
bce25e9788 Fix mac build 2024-05-06 22:14:57 +03:00
b8332ae05b Merge pull request #1461 from ONLYOFFICE/feature/libvlc-functions
Add some functionality to libvlc player
2024-05-06 09:39:26 -07:00
f1fbcf653b Create StartDrawFreeText 2024-05-06 17:48:12 +03:00
283d611ad7 Fix sparkline conversion 2024-05-06 20:44:19 +06:00
045ca4ad9e . 2024-05-06 16:03:34 +03:00
f7a623a052 Merge branch 'release/v8.1.0' of https://github.com/ONLYOFFICE/core into release/v8.1.0 2024-05-06 15:49:06 +03:00
0439347bc3 fix bug #67782 2024-05-06 15:49:01 +03:00
441716773f Add property for strip x2t library 2024-05-06 15:12:02 +03:00
801e068abb Merge remote-tracking branch 'origin/fix/bug67815' into release/v8.1.0 2024-05-06 14:35:09 +03:00
a44e22c726 fix bug #67818 2024-05-06 14:34:06 +03:00
63bd2a1cbf Fix bug #67815 2024-05-06 15:49:48 +05:00
c88c1aac96 [android] Fix copy libs and build 2024-05-04 20:52:51 +03:00
a2e76364e9 Fix bug #67827 2024-05-04 15:19:06 +03:00
051ae3fab6 Fix bug #67836 2024-05-04 00:34:50 +03:00
f1544a6f6c Fix bug#67829 2024-05-03 22:50:16 +03:00
715facaefc Create AP for FreeText 2024-05-03 17:32:37 +03:00
6de671ccd5 Added language consideration when converting EPUB files 2024-05-03 15:57:29 +03:00
e61a727180 Merge pull request #1475 from ONLYOFFICE/fix/pdf-link
Fix pdf link
2024-05-03 15:42:40 +03:00
30e09e731b Fix delete Link annot in edit mode 2024-05-03 15:39:54 +03:00
d516c625eb Fix EditPage when adding Link in edit mode 2024-05-03 15:39:13 +03:00
9dceffdbeb Fix write RC to NSStringUtils::CStringBuilder 2024-05-03 15:36:51 +03:00
e107a67f55 Fix delete Link annot in edit mode 2024-05-03 15:36:14 +03:00
ee85c3597e fix bug #67011 2024-05-03 15:06:19 +03:00
ddc413a1b3 Fix EditPage when adding Link in edit mode 2024-05-03 13:39:03 +03:00
5c6aaed51f Fix svg file size 2024-05-03 13:18:53 +03:00
234c1766dc Fix bug #67770 2024-05-03 13:18:26 +03:00
95d8fd2871 Fix bug #67767 2024-05-03 13:17:41 +03:00
a6d9af576d . 2024-05-03 12:38:06 +03:00
23c54255e3 Fix ptg conversion 2024-05-03 13:55:29 +06:00
013d6990ce Write RC to FreeText 2024-05-02 18:32:32 +03:00
25b33244a4 fix bug #67011 2024-05-02 15:57:47 +03:00
c8c4127fbb Merge pull request #1474 from ONLYOFFICE/fix/bug62568
Fix/bug62568
2024-05-02 14:53:13 +03:00
33fdfadcf7 fix bug #66679 2024-05-02 11:33:28 +03:00
3d7fa985f7 Change libraries list for x2t 2024-05-01 21:51:58 +03:00
63c9185fd2 Add choice of colors for non parametric gradients 2024-04-29 22:08:28 +03:00
e69dc4f898 Remove unneeded files from compilation 2024-04-27 16:45:28 +03:00
32b5dfc04a for bug #67352 2024-04-27 16:43:18 +03:00
2d78eda6ad Merge remote-tracking branch 'origin/fix/bug65612' into release/v8.1.0 2024-04-27 16:35:59 +03:00
ae03967fb6 Merge remote-tracking branch 'origin/fix/bug61378' into release/v8.1.0 2024-04-27 16:26:27 +03:00
5db50d2ff7 Merge branch 'release/v8.1.0' into fix/xlsb_conversion 2024-04-27 17:43:35 +06:00
af226ceb67 Merge pull request #1473 from ONLYOFFICE/fix/bug67544
fix bug #67544
2024-04-27 14:41:34 +03:00
b17a6be4d5 fix bug #67679 2024-04-27 14:27:17 +03:00
7f791ad265 fix bug #67544 2024-04-27 17:27:11 +06:00
03b568ad49 fix bug #67673 2024-04-27 12:24:30 +03:00
f9bfdee8c3 Merge pull request #1470 from ONLYOFFICE/release/v8.1.0
Release/v8.1.0
2024-04-27 11:53:22 +03:00
123fcf9d3c Merge pull request #1472 from ONLYOFFICE/fix/bug-63701
Fix bug #63701
2024-04-27 11:29:56 +03:00
e673fd5b38 Merge pull request #1471 from ONLYOFFICE/fix/bug-67716
Fix bug #67716
2024-04-27 11:29:24 +03:00
0b07bef0de Fix for pptx shapes 2024-04-27 02:22:33 +03:00
ba4c5b31d1 Fix previous commit 2024-04-27 01:46:43 +03:00
6b5f930a1e Add custom image storage to docxrenderer 2024-04-27 01:44:26 +03:00
51c6fe496b Add parametrs input 2024-04-26 19:40:08 +03:00
4880ff705b Merge branch 'release/v8.1.0' into fix/StarMath 2024-04-26 17:30:39 +03:00
4f7841fa85 Merge pull request #1464 from ONLYOFFICE/fix/bug67231
Fix bug 67231
2024-04-26 17:23:34 +03:00
3acb44a5c9 Fixed drop in assessment. fix bugs. 2024-04-26 17:08:50 +03:00
5108fa6b94 Fix bug 66740 2024-04-26 14:44:03 +03:00
db5909fdf5 Fix bug #67716 2024-04-26 14:39:34 +03:00
051a1fa7ef Fix bug 67444 2024-04-26 12:47:51 +03:00
2fa4cdebb9 Fix table conversion 2024-04-25 21:35:11 +06:00
3c2f4874fc Fix bug #63701 2024-04-25 16:15:48 +03:00
66d8690dc3 Fix bug 66872 2024-04-25 12:08:44 +03:00
0f9b8f14e6 Fix bug #61378 2024-04-24 22:19:35 +05:00
eb1bc2779b Fix formula types conversion 2024-04-24 18:35:38 +06:00
ed9a5f1a24 editing tabs 2024-04-23 15:55:32 +03:00
31090af440 Fix array formula conversion 2024-04-22 16:32:40 +06:00
73624f28ac Fix android build 2024-04-20 14:02:19 +03:00
9daa8a1239 Fix build 2024-04-20 13:21:45 +03:00
82b634878f Fix build 2024-04-20 12:40:01 +03:00
033f61576e Merge pull request #1466 from ONLYOFFICE/fix/mht
Improved html and mht conversion
2024-04-19 20:50:11 +03:00
283f21de86 Add class Custom label for handle click 2024-04-19 20:13:30 +03:00
6de60d2543 Fix bugs in html to ooxml conversion 2024-04-19 19:20:45 +03:00
b7af10970a Merge pull request #1465 from ONLYOFFICE/fix/csv-date-conversion
Fix csv date conversion
2024-04-19 14:26:56 +03:00
c18224ea07 Fix csv date conversion 2024-04-19 17:17:14 +06:00
0a088eb949 fix bug 67231 2024-04-18 21:32:51 +03:00
48df470387 Merge pull request #1463 from ONLYOFFICE/fix/pdf-text-annot
Fix pdf text annot
2024-04-18 18:19:01 +03:00
c3767cf68e Fix bug 67439 2024-04-18 18:01:23 +03:00
663248ae2b Merge branch 'release/v8.1.0' into fix/xlsb_conversion 2024-04-18 20:53:34 +06:00
040ead411f Fixed a bug with encoding detection 2024-04-18 15:04:50 +03:00
a94a068202 Fix cell error conversion 2024-04-18 17:58:50 +06:00
05ad136231 Draw AP for 11-16 types text annot 2024-04-18 12:18:57 +03:00
b6c81a1f05 Draw AP for 0-10 types text annot 2024-04-17 17:52:20 +03:00
513b39b156 Fix bugs in html to ooxml conversion 2024-04-17 16:33:44 +03:00
2956768477 Merge pull request #1462 from ONLYOFFICE/fix/pdf-annot-text
Fix pdf annot text
2024-04-17 13:17:01 +03:00
a782d26621 Fix build 2024-04-17 13:04:55 +03:00
c859b5c440 Rename IsEditPage 2024-04-17 12:50:43 +03:00
6065c8b1f2 Fix bug 67337 2024-04-17 12:47:42 +03:00
bd39d887cf Create DrawTextComment-N and -R 2024-04-16 17:35:52 +03:00
6778a4c0da Add operators check in pthtypesParsing 2024-04-16 18:17:49 +06:00
2901f337e7 Add some functionality to libvlc player 2024-04-16 15:15:37 +04:00
ca179304c3 Fix bugs in html to ooxml conversion 2024-04-15 21:46:24 +03:00
cb53604c13 Add parsing ptg types method 2024-04-15 19:27:19 +06:00
2ad2ad9dfd Merge pull request #1460 from ONLYOFFICE/fix/pdf-shape
Fix clear content
2024-04-15 14:34:47 +03:00
6431ba5245 Fix clear content 2024-04-15 14:02:43 +03:00
2e74e8fa11 fix bug #67398 2024-04-14 17:06:40 +03:00
1e18eb4335 Merge pull request #1459 from ONLYOFFICE/fix/x2t_date_time 2024-04-12 20:32:58 +03:00
ddb01d9478 Sets bDateTime true by default 2024-04-12 20:19:12 +03:00
e11ddf9153 Merge pull request #1458 from ONLYOFFICE/feature/pdf-shape
Feature pdf shape
2024-04-12 17:48:38 +03:00
2f916dcd11 Fix build 2024-04-12 17:45:31 +03:00
8b2b4d1bbf Add support shapes from metadata 2024-04-12 17:07:20 +03:00
6adc289948 Merge remote-tracking branch 'origin/release/v8.1.0' into feature/pdf-shape 2024-04-12 13:57:53 +03:00
4f3d495b3a Rotate page 2024-04-12 13:56:05 +03:00
79fa4f26a7 Remove GetShapes test 2024-04-12 13:55:14 +03:00
52a07814f4 Improving the quality of converting html tables to ooxml and refactoring 2024-04-12 13:17:13 +03:00
2e32a1b70a Remove GetShapes 2024-04-12 12:50:07 +03:00
79d90b89bd Merge pull request #1457 from ONLYOFFICE/fix/office_utils
Fix bug with headers in zip
2024-04-12 10:03:29 +03:00
43c05c6041 Fix fromJS method 2024-04-11 17:02:21 +03:00
3015aff491 . 2024-04-11 16:35:23 +03:00
490e3be6c4 Merge pull request #1456 from ONLYOFFICE/fix/bug66286
For bug 66286
2024-04-11 16:18:48 +03:00
1929e2e5c9 Fix page scale 2024-04-11 16:02:48 +03:00
b7ca461ba5 Fix coord shift 2024-04-11 14:42:11 +03:00
8309c5bbfe End every paragraph with a:endParaRPr 2024-04-11 15:12:26 +05:00
ad60357f6f Merge remote-tracking branch 'origin/release/v8.1.0' into feature/pdf-shape
# Conflicts:
#	DocxRenderer/src/resources/VectorGraphics.h
2024-04-11 11:13:32 +03:00
de2ecb08a0 . 2024-04-10 22:09:51 +03:00
897c7493da Fixes for .m files 2024-04-10 20:31:35 +03:00
0700038802 Refactoring 2024-04-10 19:12:01 +03:00
d733af03aa Fix icon set conversion 2024-04-10 20:30:26 +06:00
13b0458d47 Add support for external headers 2024-04-10 15:30:52 +03:00
defbcd77fb Add originIndex for drawingfile 2024-04-10 13:12:08 +03:00
5e02d5d943 Fix begin/end-MarkedContent 2024-04-10 13:07:21 +03:00
aa83a2dda2 ShapeStart, ShapeEnd for RendererOutputDev 2024-04-10 12:44:03 +03:00
5c7ebcd3ff BMC replaced by BDC for marked content 2024-04-10 12:42:32 +03:00
82d577c335 ShapeStart, ShapeEnd to DocInfo 2024-04-10 12:40:25 +03:00
cecf3fe9a8 Fix bug with headers in zip 2024-04-10 11:41:15 +03:00
3e4c531538 Add default parametrs and new gradient types 2024-04-10 01:18:40 +03:00
b4556c0254 Refactoring 2024-04-09 22:55:42 +03:00
5708517a0e fix bug #67016 2024-04-09 21:02:22 +03:00
e728a58222 Fix cond fmt conversion from xlsb to xlsx 2024-04-09 22:17:25 +06:00
7db54c9cef Merge pull request #1454 from ONLYOFFICE/fix/bug66286
Fix bug 66286
2024-04-09 17:55:59 +03:00
a9dd418841 Fix build 2024-04-09 17:39:45 +03:00
8491d20439 Add fmla test case 2024-04-09 20:31:24 +06:00
30ae04fd6e Update test files 2024-04-09 20:31:09 +06:00
85980186ac Fix bug 66286 2024-04-09 16:46:52 +03:00
471c9a4ebd Improved work with caption tables when html to ooxml conversion 2024-04-09 16:18:46 +03:00
2481f7f257 Fix build with old compilers 2024-04-09 13:09:01 +03:00
f5ca81240b Fix connection conversion 2024-04-09 14:13:29 +06:00
2038ace911 Fix build 2024-04-09 10:03:19 +03:00
2277feb87d fix bug #67327 2024-04-08 19:55:37 +03:00
229c88a7be fix build 2024-04-08 19:55:08 +03:00
7accccb3ab Merge remote-tracking branch 'origin/release/v8.1.0' into feature/pdf-shape
# Conflicts:
#	DesktopEditor/graphics/pro/js/wasm/src/drawingfile.cpp
#	DocxRenderer/src/logic/Page.cpp
2024-04-08 18:02:41 +03:00
e33e659c22 Restore write xfrm to docx shapes. Add pptx shapes to wasm module 2024-04-08 17:35:40 +03:00
4ddde8246d Add ctPageRotate, AddPage and RemovePage 2024-04-08 17:17:06 +03:00
2ab2cb7cf2 Fix connections conversion 2024-04-08 18:45:59 +06:00
dbbd6cbbe6 Merge pull request #1452 from ONLYOFFICE/feature/docx_renderer2
Feature/docx renderer2
2024-04-08 13:22:00 +03:00
29afb2aed9 Add Triangle gradient 2024-04-05 19:34:20 +03:00
8c522aa006 Fix repeat fonts 2024-04-05 17:21:51 +03:00
bb858cc24a . 2024-04-05 16:59:03 +03:00
31079f91be Merge remote-tracking branch 'origin/fix/bug60279' into release/v8.1.0 2024-04-05 16:54:46 +03:00
8ad98fae68 Merge remote-tracking branch 'origin/fix/bug61378' into release/v8.1.0 2024-04-05 16:50:09 +03:00
790f51dd1b Merge remote-tracking branch 'origin/fix/bug67089' into release/v8.1.0 2024-04-05 16:48:05 +03:00
d13e5dc3da Merge remote-tracking branch 'origin/feature/odg' into release/v8.1.0 2024-04-05 16:47:48 +03:00
10c6def10e Bug fixed. Editing sqrt and nroot, dropping parentheses. 2024-04-05 15:54:31 +03:00
b2bcdbc2bc Fix bug #61378 2024-04-05 16:02:06 +05:00
bfefe4d1b7 Merge remote-tracking branch 'origin/release/v8.1.0' into feature/pdf-shape
# Conflicts:
#	DesktopEditor/graphics/pro/js/wasm/src/pdfwriter.cpp
#	PdfFile/PdfReader.cpp
#	PdfFile/SrcWriter/Document.cpp
2024-04-05 12:25:30 +03:00
7f17f30650 for bug 67231 2024-04-04 20:42:29 +03:00
6fdac51409 Merge pull request #1451 from ONLYOFFICE/fix/bug66986
For bug #66986
2024-04-04 16:53:58 +03:00
463ca006ee Fixed bugs with tables in html to ooxml conversion 2024-04-04 16:48:52 +03:00
e8a69e39bc Fix bugs #67249, #65628 2024-04-04 16:40:41 +03:00
8b9c0d79bb Fix bug #67210 2024-04-04 14:27:48 +03:00
12fd3bd3ce Comment conditional formattings ext 2024-04-04 17:20:59 +06:00
2f7447f918 For bug #66986 2024-04-04 12:40:16 +03:00
86b53b7ede Refactoring 2024-04-04 10:22:35 +03:00
078e9afcc2 Fix conditional formatting conversion 2024-04-03 21:31:09 +06:00
91bc306369 Fix bug #67089 2024-04-03 19:58:18 +05:00
21e3293895 fix image size from pixels to millimeters 2024-04-03 15:31:07 +03:00
ab4a3ef546 fix bug #67231 2024-04-03 11:53:12 +03:00
3d2e43b5d7 fix namespace math 2024-04-03 11:50:09 +03:00
fcb4ae3909 Merge pull request #1446 from ONLYOFFICE/fix/bug66934
Fix bug #66934
2024-04-02 19:04:57 +03:00
ebe0248c3f fix bug #67016 2024-04-02 13:08:08 +03:00
083ced27c8 fix build 2024-04-02 12:32:04 +03:00
cd86a8a3c7 fix image size and GenerateImg method 2024-04-02 00:47:50 +03:00
3c8604390e Fix table styles conversion 2024-04-01 16:03:16 +06:00
d23268b76e Merge branch 'release/v8.1.0' into fix/xlsb_conversion 2024-04-01 14:30:24 +06:00
2b72bf3f53 Fix bugs (correction of indexes, without elements between them, editing of frac and binom)
(cherry picked from commit 43bee348aa)
2024-04-01 10:48:20 +03:00
110617547c improvements to attribute parsing
(cherry picked from commit 7776f15a35)
2024-04-01 10:47:46 +03:00
db95af6c58 refinement of parsing and conversion of indexes. editing and writing tests.
(cherry picked from commit 62b3b7b3c6)
2024-04-01 10:47:39 +03:00
b1794fcf96 editing parsing of indexes with operators. adding alignment.
(cherry picked from commit 1dff8bb868)
2024-04-01 10:47:27 +03:00
fcd0bec3ac conversion of unary symbols. code refactoring.
(cherry picked from commit 89287887a0)
2024-04-01 10:47:11 +03:00
3d394b173c fix bugs
(cherry picked from commit 97ddd35653)
2024-04-01 10:46:56 +03:00
0b05f25488 Merge commit '835f4ba89db4bf52993519a88948923821db17be' into feature/odf-math-2 2024-04-01 10:45:07 +03:00
c44aed0e9a Refactoring 2024-03-30 12:53:30 +03:00
2156d6e134 fix bug #66842 2024-03-29 17:28:02 +03:00
9094965909 Fix bug #60279 2024-03-29 17:04:39 +05:00
9e1e641218 Add test for Linear and Radial gradients 2024-03-29 12:37:31 +03:00
8332560d06 Fix data validations 2024-03-29 15:31:52 +06:00
b7a4c739eb fix bug #67121 2024-03-28 13:40:59 +03:00
db9015a3e7 Change ms placeholder presentation type 2024-03-28 14:01:38 +05:00
f203f73a4b fix bug #67087 2024-03-27 18:40:38 +03:00
7a31de1708 Merge branch 'release/v8.1.0' into fix/xlsb_conversion 2024-03-27 14:55:31 +06:00
e2d278c74b Fix dxfs conversion 2024-03-27 14:54:22 +06:00
c961f00fd1 fix bug #67043 2024-03-26 20:06:43 +03:00
a31361fe05 Added a method for equating any one to the nearest of the given ones 2024-03-26 19:38:12 +03:00
53b93ed9f2 fix bug #67109 2024-03-26 19:34:29 +03:00
22a255f351 Fix images bug 2024-03-26 17:57:31 +03:00
cbac820495 fix bug #67066 2024-03-26 17:37:06 +03:00
4cc7ec1ed0 Fix dxfs conversion 2024-03-26 18:03:51 +06:00
8b16b1625f Fix bug 2024-03-26 11:46:30 +03:00
9e260897b3 Fixed a bug with the percentage size of the svg file 2024-03-26 10:56:52 +03:00
b10e482fbb Fix dxf prop conversion 2024-03-25 22:21:22 +06:00
510a6a621d fix bug #67054 2024-03-25 18:13:10 +03:00
4a1f483315 Fix alignment + fix logic 2024-03-24 22:47:03 +03:00
7e1c27e5ad Merge pull request #1448 from ONLYOFFICE/fix/bug67066
Fix bug 67066
2024-03-22 14:17:39 +03:00
c223714b52 Fix bug 67066 2024-03-22 13:54:48 +03:00
23f6a3a3df Merge branch 'release/v8.1.0' into fix/xlsb_conversion 2024-03-22 13:48:24 +06:00
aad7f089e4 Fix pivot tables conversion 2024-03-21 20:31:04 +06:00
03244e9e83 For bug #65612
Fix Split/Cover transition parameter conversion
2024-03-21 14:44:44 +05:00
8adf556ea8 Merge pull request #1447 from ONLYOFFICE/fix/pdf-cropbox-ap
Fix cropbox offset for AP annots
2024-03-21 12:23:40 +03:00
bb84209b05 Fix cropbox offset for AP annots 2024-03-21 12:02:59 +03:00
e01aa641a0 Remove PdfWriter_empty 2024-03-20 18:15:42 +03:00
c9fbe4189c Added merging of extra cells in html to ooxml conversion 2024-03-20 13:51:18 +03:00
475d0be0bf fix bug #59931 2024-03-20 11:54:48 +03:00
70a4e3e792 fix bug #67008 2024-03-20 10:55:55 +03:00
7c349dfa18 Create PdfEditor 2024-03-19 18:58:52 +03:00
4943193ef7 fix bug #66868 2024-03-19 16:44:26 +03:00
3a6f74dc82 fix flags 2024-03-19 16:08:21 +03:00
8c00325004 Merge remote-tracking branch 'origin/feature/pdf-freetext' into feature/pdf-shape 2024-03-19 14:48:33 +03:00
4deae80350 Fix right alignments 2024-03-19 12:27:22 +03:00
d5a4cd43e3 Fix bug 2024-03-19 11:23:58 +03:00
6eaf5cc9d3 Fix ScanPagePptx 2024-03-19 11:15:25 +03:00
ad2c6b67f1 fix bug #66864 2024-03-19 11:00:37 +03:00
13542b1388 fIx content types writing for worksheets and pivot tables 2024-03-18 22:38:46 +06:00
1b865e9b13 Refactoring AnnotField and FormField 2024-03-18 17:53:32 +03:00
cfee077b9d Merge remote-tracking branch 'origin/fix/bug66795' into release/v8.1.0 2024-03-18 15:57:32 +03:00
30d4dbae5a Merge branch 'release/v8.1.0' into fix/xlsb_conversion 2024-03-18 18:28:44 +06:00
6874e110bb fix build 2024-03-18 15:21:21 +03:00
f89becf68f Fix bug #66934 2024-03-18 18:18:08 +06:00
88008a9e7e fix bug #66959 2024-03-17 11:34:53 +03:00
b20e29daaf fix bug #66960 2024-03-17 09:24:24 +03:00
95cf8bc4bd Merge branch 'feature/docx_renderer2' of https://github.com/ONLYOFFICE/core into feature/docx_renderer2 2024-03-15 18:38:51 +03:00
b311bb319b ScanPagePptx done 2024-03-15 18:37:48 +03:00
21f73ba724 Merge pull request #1445 from ONLYOFFICE/feature/json-strings
JSON: Simplification of working with strings
2024-03-15 17:41:20 +03:00
ce9d61a3aa Fixed json test 2024-03-15 18:31:42 +04:00
b2c8696d1d Change strings conversion function 2024-03-15 18:16:58 +04:00
be0c6b13e7 Strings unify 2024-03-15 17:56:17 +04:00
ba307e8d2b Merge pull request #1444 from ONLYOFFICE/fix/bug66947
Fix bug 66947
2024-03-15 16:43:28 +03:00
4364f95fb6 Fix bug 66947 2024-03-15 16:30:12 +03:00
fb4c8ebf32 Refactoring and fix bugs 2024-03-15 15:57:57 +03:00
e53416e934 Add worksheet write before another parts 2024-03-15 18:10:58 +06:00
1a92ec57e1 Fix multisheet reference conversion 2024-03-15 18:09:36 +06:00
d0adabc5f7 Fix bug #66795 2024-03-15 17:04:33 +05:00
b9bf82d932 Merge branch hotfix/v8.0.1 into release/v8.1.0 2024-03-15 11:12:33 +00:00
f067fc3268 Merge branch hotfix/v8.0.1 into develop 2024-03-15 11:12:29 +00:00
dc3a4a3ed9 Merge branch hotfix/v8.0.1 into master 2024-03-15 11:12:24 +00:00
53ca119a99 Improved conversion of tables from html to ooxml 2024-03-15 12:58:03 +03:00
bf63f5322c Merge pull request #1440 from ONLYOFFICE/fix/bug66933
Fix bug 66933
2024-03-15 12:51:36 +03:00
f682f51481 Fix bug 66933 2024-03-15 12:17:11 +03:00
933741ca88 Fix ios build 2024-03-15 12:12:53 +03:00
7adcec27ff Merge pull request #1439 from ONLYOFFICE/release/v8.1.0
Release/v8.1.0
2024-03-14 20:08:12 +03:00
a684336b72 Fix build 2024-03-14 20:06:20 +03:00
c3ef38b1e1 For bug 66933 2024-03-14 18:53:22 +03:00
94ceab0a03 Add multysheet xti using 2024-03-14 19:33:07 +06:00
8769924fe2 Merge pull request #1438 from ONLYOFFICE/fix/bug66721
Fix bug 66721
2024-03-14 16:06:30 +03:00
08ae2f5d2e Fix bug 66721 2024-03-14 15:37:38 +03:00
b436a70662 Merge pull request #1437 from ONLYOFFICE/fix/bug66537
Fix bug 66537
2024-03-14 12:43:05 +03:00
7d15bbc7c2 Fix build 2024-03-14 12:17:51 +03:00
00769d01c1 Fix bug 66537 2024-03-14 11:42:25 +03:00
3b1fa0a9bd Merge branch 'release/v8.1.0' of https://github.com/ONLYOFFICE/core into release/v8.1.0 2024-03-13 18:43:29 +03:00
1a676ace8b fix bug #66857 2024-03-13 18:43:13 +03:00
601ba0cedc Merge pull request #1436 from ONLYOFFICE/release/v8.1.0
Release/v8.1.0
2024-03-13 18:24:43 +03:00
261d8aad37 Merge pull request #1435 from ONLYOFFICE/hotfix/v8.0.1
Hotfix/v8.0.1
2024-03-13 18:21:50 +03:00
27ebebdd0e fix flags 2024-03-13 17:27:31 +03:00
0053b72656 Remove unused files 2024-03-13 17:13:25 +03:00
9832010dd7 Add xti reading while xml read 2024-03-13 19:22:40 +06:00
dfbb20035b Merge remote-tracking branch 'origin/feature/docx_renderer2' into feature/pdf-freetext
# Conflicts:
#	PdfFile/PdfReader.cpp
2024-03-13 13:11:58 +03:00
112dbd9e88 Fixes for build module 2024-03-13 12:18:59 +03:00
6995a5ef34 Fix endless formula conversion 2024-03-13 14:42:40 +06:00
e18edba2ba Merge pull request #1434 from ONLYOFFICE/fix/8.0.2
Fix/8.0.2
2024-03-13 11:12:36 +03:00
38ce36fa75 . 2024-03-13 11:11:58 +03:00
e518efc5e1 . 2024-03-13 11:10:31 +03:00
53677bf8cc Revert test changes 2024-03-13 11:04:55 +03:00
b065aff618 Fixes for android 2024-03-13 10:57:11 +03:00
a6370ec0a6 fix bug #66842 2024-03-13 10:37:33 +03:00
245ba212c4 fix bug #66849 2024-03-12 23:55:01 +03:00
48c1478374 fix bug #66840 2024-03-12 19:58:47 +03:00
65112e860e Fix query table conversion 2024-03-12 21:46:19 +06:00
4a22b26ac1 Fix connection conversion 2024-03-12 20:24:02 +06:00
e18883f126 Fix bugs in html to ooxml conversion 2024-03-12 14:54:08 +03:00
29a4119546 Fix inline string conversion 2024-03-12 15:04:00 +06:00
9ffc34b7e2 Developing DocxRenderer
- pptx shapes (in progress)
- no br logic
2024-03-12 11:51:47 +03:00
8a9e5ad267 Fix bugs in html to ooxml conversion 2024-03-12 10:46:05 +03:00
69a71d78ed [x2t] For bug 66819 2024-03-12 01:33:24 +03:00
db3d665f8c fix bug #66821 2024-03-11 19:27:53 +03:00
5c52489394 Fix function calling order 2024-03-11 18:04:37 +03:00
e8a4dab0ea Add office_drawing file to visual studio project 2024-03-11 18:40:48 +05:00
320dcf8a0f Add odg file format conversion 2024-03-11 18:25:03 +05:00
f10ad91f0f Merge remote-tracking branch 'origin/release/v8.1.0' into develop 2024-03-11 11:16:30 +03:00
1d594b93ea Merge remote-tracking branch 'origin/fix/xlsb_conv_errors' into release/v8.1.0 2024-03-11 11:15:00 +03:00
d68f4cedff Merge pull request #1433 from ONLYOFFICE/fix/bug27583
Fix bug 27583
2024-03-11 11:05:22 +03:00
c3571838ef Merge pull request #1432 from ONLYOFFICE/fix/bug66657
Fix bug #66657
2024-03-11 11:05:15 +03:00
76e05db9da Fix bug #66657 2024-03-11 13:54:41 +06:00
f93a628c24 Refactoring build 2024-03-10 21:58:34 +03:00
d81e70cfee fix bug #66798 2024-03-10 14:37:48 +03:00
26658a7189 fix bug #66796 2024-03-09 16:20:20 +03:00
e2ebe6a6d3 fix bug #66783 2024-03-07 16:39:55 +03:00
f9cd49a756 Fix bugs 2024-03-07 16:05:31 +03:00
e30c5fb79d fix bug #66777 2024-03-07 15:59:01 +03:00
57e06222c7 fix bug #66773 2024-03-07 15:52:13 +03:00
8bd978d2c6 Merge remote-tracking branch 'origin/fix/bug27583' into release/v8.1.0 2024-03-07 15:06:34 +03:00
04480bb9eb fix bug #66766 2024-03-06 20:06:43 +03:00
82cd32aa85 fix bug #66772 2024-03-06 19:38:20 +03:00
d92ab67b21 Fix validation 2024-03-06 16:20:28 +03:00
36dbd4f0e1 Refactoring 2024-03-06 15:55:12 +03:00
e787102046 Fix bug #27583 2024-03-06 18:47:52 +06:00
2445f6f2e3 Merge remote-tracking branch 'origin/release/v8.1.0' into develop 2024-03-06 15:38:39 +03:00
422f0736c4 Fix colot conversion 2024-03-06 17:45:57 +06:00
296383bd6f fix bug #66744 2024-03-06 12:05:45 +03:00
f6713d751b fix bug #66750 2024-03-06 11:41:39 +03:00
46fc80f423 fix bug #45218 2024-03-06 10:15:20 +03:00
b88d303ceb fix bug #66722 2024-03-04 19:43:28 +03:00
583f7b0d0c Create CFile.prototype["getShapes"] 2024-03-04 17:08:42 +03:00
86f288541f Merge branch 'release/v8.1.0' into fix/xlsb_conv_errors 2024-03-04 19:55:56 +06:00
9e24a89fd4 Fix bugs 2024-03-04 15:56:02 +03:00
f369715c55 Fix book view conversion 2024-03-04 18:12:00 +06:00
29852ddf25 Fix BeginShape to BeginMarkedContent 2024-03-04 10:31:02 +03:00
d88fc239b8 fix convert to xlsb 2024-03-02 15:42:11 +03:00
aad25c3da8 fix bug #66699 2024-03-02 15:22:30 +03:00
6bbf1190a7 Fix reference limits 2024-03-01 22:25:33 +06:00
3d1b8e64ac Fix shared formula conversion 2024-03-01 22:25:03 +06:00
e1ce2150dc Merge pull request #1431 from ONLYOFFICE/fix/bug66671
Fix bug 66671
2024-03-01 17:22:14 +03:00
1a86da3559 Fix bug #66670 2024-03-01 16:33:44 +03:00
1ff92a8e71 Fix def name conversion 2024-03-01 19:33:15 +06:00
00c95da6c0 Merge pull request #1430 from ONLYOFFICE/fix/66463
Fix bug #66463
2024-03-01 15:37:29 +03:00
bb1d5401d2 Refactoring 2024-03-01 15:24:09 +03:00
c9aad72ecc Fix bug 66671 2024-03-01 18:00:36 +06:00
e2dc625b0a Fix bugs and refactoring 2024-03-01 13:54:47 +03:00
c649de088a .
(cherry picked from commit bba6d180dc)
2024-03-01 13:29:13 +03:00
0476dedbac fix bug #66656 2024-02-29 21:54:50 +03:00
b71ed594da Add tests result 2024-02-29 20:03:36 +03:00
9c2e696710 Add words 2024-02-29 19:59:39 +03:00
f5ee86c94e Add tests for dictionaries 2024-02-29 19:44:28 +03:00
808782c1c8 Write BDC/EMC for MetaOForm 2024-02-29 17:34:37 +03:00
bba6d180dc . 2024-02-29 15:54:56 +03:00
25ca9b5fcd meta in cell from/to bin 2024-02-29 12:24:02 +03:00
c7a1e3536d Meta from Cell 2024-02-29 12:02:26 +03:00
18e3ef0932 Merge remote-tracking branch 'origin/release/v8.1.0' into feature/pdf-shape 2024-02-29 11:37:43 +03:00
448156c905 Merge pull request #1429 from ONLYOFFICE/release/v8.1.0
Release/v8.1.0
2024-02-29 10:12:09 +03:00
db340198d6 Create GetShapesXML 2024-02-29 10:04:48 +03:00
7dd1dd3c8a Disable clear font streams in ScanPage mode 2024-02-28 22:33:07 +03:00
ec2687e5d1 for bug #57082 2024-02-28 21:29:46 +03:00
1ab06e503a Fix bug 2024-02-28 21:25:25 +03:00
f973a0a952 fix bug #66651 2024-02-28 21:13:35 +03:00
6a628a21fb Add 3dParty list 2024-02-28 17:08:44 +03:00
63c38399ad fix build 2024-02-28 14:50:08 +03:00
56c3b1a6d3 Fix bugs 2024-02-28 14:31:52 +03:00
163e21acf4 fix bug #53909 2024-02-27 17:56:13 +03:00
8ebd23defb UserProtectedRangeType 2024-02-27 17:17:35 +03:00
487c750020 Create CShapeStart::Read 2024-02-27 16:26:20 +03:00
4dc1751d89 Fix color conversion 2024-02-27 18:42:33 +06:00
fc3e6592f4 Fixes for support in js module 2024-02-27 15:00:33 +03:00
ed0d1fbdb0 Refactoring 2024-02-27 14:54:45 +03:00
849ad8ac87 Fixed bugs with styles in html->ooxml conversion and refactoring 2024-02-27 14:18:04 +03:00
9bb45aa05d fix bug #66622 2024-02-27 14:15:20 +03:00
306a61ba14 Fix NSFonts::IFontList::Add 2024-02-27 12:12:56 +03:00
a91500c4b7 Fix table conversion 2024-02-26 21:10:22 +06:00
88a6f5815c Add ScanPage 2024-02-26 17:29:21 +03:00
168aa04b8f Separate CAnnotMarkup::ReadRC 2024-02-26 17:27:37 +03:00
147d8ca783 for bug #66596 2024-02-26 16:14:04 +03:00
bb9e5c590a Create ctShapeStart and ctShapeEnd 2024-02-26 14:34:31 +03:00
7733825458 Fix compile 2024-02-26 11:56:48 +03:00
8ca63e5013 Merge branch hotfix/v8.0.1 into master 2024-02-26 07:33:51 +00:00
0c998e318b fix bug #34418 2024-02-24 12:10:57 +03:00
f8184532c8 Added support for reading @page and bug fixes in html to ooxml conversion 2024-02-22 18:10:26 +03:00
0927217246 Fix repeat font 2024-02-22 16:59:39 +03:00
0a1d3ddd91 Fix SetFont for FreeText annot 2024-02-22 15:03:28 +03:00
0bc356ebff fix bug #66057 2024-02-22 13:13:37 +03:00
620827ad53 . 2024-02-22 10:28:49 +03:00
c1025cf70b Merge remote-tracking branch 'origin/fix/xlsb_conversion' into release/v8.1.0 2024-02-22 10:27:33 +03:00
3320547735 Fix bug #66463 2024-02-21 22:41:35 +03:00
c1f1c3a683 add support oleObjects from Word 2003 XML 2024-02-21 20:45:07 +03:00
e8c375c864 Add FontSelection to FreeText 2024-02-21 18:54:58 +03:00
3d2ebf31b3 Fix sheet protection conversion 2024-02-21 14:32:01 +06:00
25be75004d Merge remote-tracking branch 'origin/hotfix/v8.0.1' into develop 2024-02-20 23:14:38 +03:00
ef0e18e1c9 Fix conditional formating refs conversion 2024-02-20 23:24:20 +06:00
001768d0c6 Try get by symbol 2024-02-20 19:58:30 +03:00
5cb6c32635 Merge pull request #1424 from ONLYOFFICE/feature/pdf-metaoform
Feature pdf metaoform
2024-02-20 16:21:16 +03:00
9c6c3e845b Merge remote-tracking branch 'origin/develop' into feature/docx_renderer2 2024-02-20 16:17:05 +03:00
f3bdeacf7e Fix bugs 2024-02-20 13:15:44 +03:00
f672fcc665 oleObjects from ppt 2024-02-19 20:07:17 +03:00
b56e21d6c7 Improved padding in html to ooxml conversion 2024-02-19 18:33:31 +03:00
5326058947 Get fotn from AP 2024-02-19 18:06:42 +03:00
91e5fae5de fix bug #62141 2024-02-19 10:55:23 +03:00
efb18b5864 [x2t] Fix fromDraw 2024-02-19 01:52:06 +03:00
49f5df9f88 [x2t] Fix COfficeFileFormatChecker::isOOXFormatFile for vsdx 2024-02-18 12:42:42 +03:00
8a6974a020 Add define to use default font to recalc 2024-02-17 14:57:38 +03:00
22508420d8 [x2t] To fix build 2024-02-16 23:30:42 +03:00
30fa4b0ea4 [x2t] For vsdx printing 2024-02-16 20:05:07 +03:00
c90394b50a Update logic 2024-02-16 19:37:52 +03:00
6b74d80cd9 Merge branch 'develop' into fix/xlsb_conversion 2024-02-16 20:48:28 +06:00
56a09831cc Improved conversion of style settings of html tables to ooxml 2024-02-16 16:39:50 +03:00
8442596372 Fix conversion table formulas with empty square brackets 2024-02-16 15:58:57 +06:00
4ee1d59803 Fix default values setting up 2024-02-16 15:56:48 +06:00
65a483461e Fix RC parser - span and #text 2024-02-16 11:57:58 +03:00
aa89e7fd4e Merge remote-tracking branch 'origin/hotfix/v8.0.1' into feature/pdf-metaoform 2024-02-16 10:48:22 +03:00
b7bc83f37d Create ValidMetaData 2024-02-16 10:47:08 +03:00
8eee4d470c Fix sparkline conversion 2024-02-15 19:29:51 +06:00
d1da32b922 add error style initialization check 2024-02-15 17:54:50 +06:00
ebc94a2615 Add new string removing from column names 2024-02-15 17:54:17 +06:00
b9a11bc30d Add ID with MetaOForm 2024-02-15 13:11:19 +03:00
17a2172673 for bug #66495 2024-02-15 12:27:23 +03:00
34dfdf970f Merge remote-tracking branch 'origin/hotfix/v8.0.1' into develop 2024-02-15 12:17:01 +03:00
95146474ff Fix comma processing 2024-02-14 16:15:37 +06:00
fa90923000 Fix table styles conversion 2024-02-14 16:03:53 +06:00
3d3daed655 Add table and column names to global info for formulas 2024-02-14 16:03:24 +06:00
c6b3238fa4 Fix dvals conversion 2024-02-14 16:02:06 +06:00
9a612d4543 Fix ptg list conversion 2024-02-14 16:01:11 +06:00
47a485999f . 2024-02-14 12:07:35 +03:00
e6ebc76ae6 metadata spreadsheets 2024-02-13 21:17:18 +03:00
4736f93aa8 Fixed the unnecessary appearance of the table border in html to ooxml conversion 2024-02-13 18:10:17 +03:00
1eec0cffdb Update paragraph logic
in progress
2024-02-13 14:08:28 +03:00
d65cbf194a Added TextAssociationTypes 2024-02-13 10:21:49 +03:00
071f27a305 Merge remote-tracking branch 'origin/fix/bug61378' into develop 2024-02-12 17:16:53 +03:00
20cd784510 Merge remote-tracking branch 'origin/fix/bug65611' into develop 2024-02-12 17:12:16 +03:00
9c33ec3518 Merge remote-tracking branch 'origin/fix/bug58244' into develop 2024-02-12 17:10:29 +03:00
6f0af189e1 Fix bug #61378 2024-02-12 16:05:06 +05:00
8a58381223 Merge remote-tracking branch 'origin/hotfix/v8.0.1' into develop 2024-02-12 10:55:12 +03:00
479943f5e2 Improved conversion of html tables to ooxml 2024-02-09 16:36:54 +03:00
80782f371c Fix pcdi conversion 2024-02-09 15:01:14 +06:00
c43536c618 Fix strings to shared strings conversion 2024-02-09 15:00:55 +06:00
835f4ba89d bug fixing 2024-02-09 11:20:24 +03:00
29fb134033 Merge remote-tracking branch 'origin/hotfix/v8.0.1' into develop 2024-02-08 20:50:47 +03:00
a7a80cb92e Fixed some inaccuracies in the conversion of html tables 2024-02-08 18:55:17 +03:00
593a7ba176 RC parser 2024-02-08 18:53:15 +03:00
0aa03275f4 Fix worbook defined names conversion 2024-02-08 19:27:33 +06:00
33058fbbce Fix worksheet parts conversion 2024-02-07 16:00:59 +06:00
587bd78f2f Fix build on macos/ios 2024-02-07 12:56:55 +03:00
127d70203c Fix worksheet writing sequence 2024-02-07 15:50:23 +06:00
4abd650b01 Merge pull request #1412 from ONLYOFFICE/fix/x2ttester
Fix/x2ttester
2024-02-07 12:13:44 +03:00
d3ea527e66 Fix output 2024-02-07 12:03:15 +03:00
b81fc6b3c7 Fix bug 2024-02-07 11:51:34 +03:00
ce2044a223 Fix default values for some structs 2024-02-07 14:42:40 +06:00
2160c86556 Fix underline xml reading 2024-02-07 14:39:57 +06:00
ae61dc5db9 Fix xml pattern fill writing 2024-02-07 14:39:30 +06:00
3e39bd8d13 Fix xf prop 2024-02-07 14:38:24 +06:00
6b29728c46 Merge pull request #1410 from ONLYOFFICE/feature/standardtester
Add diff-only arg in standardtester
2024-02-06 17:39:53 +03:00
ace39650e1 Merge pull request #1409 from ONLYOFFICE/feature/x2ttester
Feature/x2ttester
2024-02-06 17:33:13 +03:00
92663a7ae3 Fix bug #62568 2024-02-06 17:37:12 +05:00
ee0ab7f042 Fix gradient path conversion 2024-02-06 17:36:36 +05:00
2e22646c34 Convert table templates 2024-02-06 17:36:06 +05:00
f189e20064 Merge remote-tracking branch 'origin/hotfix/v8.0.1' into develop 2024-02-06 14:06:35 +03:00
8a655f8600 deleting a file entry 2024-02-06 11:17:47 +03:00
0ec05761ea Merge remote-tracking branch 'origin/fix/odf-tests' into develop 2024-02-06 11:00:28 +03:00
7e5da0b22c Fix bug #63701 2024-02-06 10:38:49 +03:00
1089bb3226 Fix bug 2024-02-06 09:30:17 +03:00
eb8e7866aa Add diff-only arg in standardtester 2024-02-06 07:57:47 +03:00
cce60166a4 Add extract mode in x2ttester 2024-02-06 03:42:48 +03:00
0e114331de Fix bug #58244 2024-02-06 02:35:06 +05:00
0d1e5198c4 Converting lim families with upper and lower indexes. Converting csub and csup. Bug fixing.Code refactoring. 2024-02-05 21:01:58 +03:00
b36c1ae9e7 Fix bug #59451 2024-02-05 18:05:55 +03:00
84f58b7b08 Add row col initialization check 2024-02-05 15:41:14 +06:00
aa8a0cfbc2 FIx array formula conversion 2024-02-02 23:18:05 +06:00
00671ffdd6 Fix shared formulas conversion 2024-02-02 14:47:45 +06:00
ba6267570b Merge pull request #1405 from ONLYOFFICE/feature/StarMathToOOXML
StarMathToOoxml
2024-02-01 16:59:47 +03:00
5b1385ca20 Merge remote-tracking branch 'origin/hotfix/v8.0.1' into develop 2024-02-01 11:44:16 +03:00
79bb09f2c2 Fix odf tests 2024-01-31 19:06:37 +05:00
d4f4f4d500 Fix whitespace showing in worksheet 2024-01-30 15:00:13 +06:00
278d629418 . 2024-01-30 11:54:32 +03:00
9bd5d10480 Merge remote-tracking branch 'origin/fix/fix-bugs-v8.0' into develop 2024-01-30 11:17:40 +03:00
efbb6f38a0 Fix cell protection 2024-01-29 20:05:20 +06:00
71fc5323c7 Fix formula value conversion 2024-01-29 15:04:34 +06:00
7d3940a382 Fix area ptg conversion 2024-01-29 15:04:03 +06:00
7adaba30da Merge pull request #1388 from ONLYOFFICE/fix/bug62427
Fix bug 62427
2024-01-29 11:28:36 +03:00
7333e6943b Fix bug #65611 2024-01-26 19:18:28 +05:00
3fbbf754a2 Fixed a bug in reading a function without an element. Adding a base attribute read. Code refactoring. 2024-01-26 12:22:13 +03:00
afdc28dbe4 Fix page setup 2024-01-25 18:44:32 +06:00
bccdeedc4e Fix cell refs conversion 2024-01-25 15:55:14 +06:00
d5de6a710d Fix ZipFile func for linux 2024-01-25 00:07:00 +03:00
9947e80e6c Fix XLUnicodeString_T operator= 2024-01-24 17:50:21 +06:00
292830aa15 Merge remote-tracking branch 'origin/fix/bug65838' into develop 2024-01-24 13:59:45 +03:00
8a03329e15 Merge remote-tracking branch 'origin/fix/bug65838' into feature/odf 2024-01-24 13:59:06 +03:00
0ac9b0bee8 Merge branch 'develop' into fix/xlsb_conversion 2024-01-24 16:42:57 +06:00
71afe4a0d5 Add relative reference saving 2024-01-24 16:41:41 +06:00
5b6735e3bf Fix formula conversion 2024-01-24 15:36:14 +06:00
755ea7761c Conversion of Greek characters, universal input of functions and operators. Writing tests. 2024-01-24 10:36:31 +03:00
6f3dae7d5d Fix bug #65838
Convert text href odp to pptx
2024-01-24 01:35:26 +05:00
ae7854d23f For bug #65838
Convert text href pptx to odp
2024-01-24 01:34:57 +05:00
6537a1998a add starmath convert 2024-01-23 19:36:48 +03:00
0be57e7316 Merge remote-tracking branch 'origin/feature/StarMathToOOXML' into feature/odf 2024-01-23 18:36:00 +03:00
312e010978 Merge remote-tracking branch 'origin/release/v8.0.0' into develop 2024-01-23 17:43:35 +03:00
daaeaee4df Add tests for time 2024-01-23 13:27:47 +03:00
d1a35c2e9c Refactoring in HtmlFile2 2024-01-22 18:39:00 +03:00
bc4449f7a7 Fix bug 62427
CFileBinary::GetTime,
CFileBinary::SetTime was updated
Fix bugs with time in Zip/Unzip
2024-01-22 02:23:23 +03:00
0bbd2d6d35 Fix xfs conversion 2024-01-18 20:03:38 +06:00
ec89b34514 editing diacritics, unary marks. bug fixing. 2024-01-18 13:05:41 +03:00
6e0a28f8c8 Fix merged cellc conversion 2024-01-17 22:02:15 +06:00
7d82d4a8b7 Fix conditional formating conversion 2024-01-17 22:01:51 +06:00
fb27d00490 Fix hyperlinks conversion 2024-01-15 15:49:20 +06:00
01ac03f24b Fix comment convert condition 2024-01-15 13:44:52 +06:00
fe2779824b Fix comment conversion error 2024-01-12 21:37:42 +06:00
5c18827224 fix chartEx 2024-01-12 17:26:47 +03:00
7af7b50f66 Fix autofilter conversion 2024-01-12 20:12:33 +06:00
508167f0f9 Fix conditional formating conversion 2024-01-11 18:08:00 +06:00
3dae061381 Merge remote-tracking branch 'origin/release/v8.0.0' into develop 2024-01-11 12:09:34 +03:00
1017b30776 Add numeric value cache for cell value 2024-01-10 14:14:09 +06:00
7266619e24 fix build 2024-01-09 17:58:25 +03:00
cdf10bbc38 fix build 2024-01-09 17:22:38 +03:00
54ec885316 Fix cell value parsing 2024-01-09 20:21:40 +06:00
3cf686e08e Merge branch 'develop' into fix/xlsb_conversion 2024-01-09 18:19:32 +06:00
83a053a1dd Fix numbers conversion 2024-01-09 18:15:15 +06:00
5bb50ffd47 . 2024-01-09 14:00:21 +03:00
fc99dedbd4 fix build 2024-01-09 12:37:47 +03:00
2588d45ffe . 2024-01-09 12:33:57 +03:00
1f92b15aae Fix blank cell conversion 2023-12-29 19:05:03 +06:00
9b06b9e7a8 Remove unused code 2023-12-29 19:04:40 +06:00
189269031a Fix shared string conversion 2023-12-29 17:49:12 +06:00
4ae8962af2 . 2023-12-27 16:53:05 +03:00
6f5fa6c4ca Switching to case-insensitive search in html2 2023-12-26 20:31:04 +03:00
3273ac74cf . 2023-12-26 16:49:50 +03:00
057eed59c1 xlst->xlsb 2023-12-25 19:42:49 +03:00
f9a40c77f8 Merge remote-tracking branch 'origin/release/v8.0.0' into develop 2023-12-25 18:38:59 +03:00
bc6e7e2831 Refinement of attributes. Code refactoring. Editing logic. 2023-12-22 17:17:18 +03:00
8ee116de7e Fix included headers paths 2023-12-19 15:04:56 +06:00
c4f49171cd Merge pull request #1362 from ONLYOFFICE/feature/xlsb_write
Add xlsb writing
2023-12-19 11:06:09 +03:00
35eb2849ef Adding conversion of indexed brackets, diacritics and attributes. Editing operator conversion. 2023-12-15 17:55:00 +03:00
48053414c9 Add frtpivot cache def version set 2023-12-15 20:02:44 +06:00
7ff4d0e167 Add chart sheet conversion test 2023-12-13 22:16:19 +06:00
03af151c30 Fix conversion 2023-12-13 22:15:23 +06:00
e01ba114d8 Add chart sheet conversion 2023-12-13 13:47:09 +06:00
f59f34eda9 Merge branch 'release/v8.0.0' into feature/xlsb_write 2023-12-12 20:43:21 +06:00
50cb0b543e Fix indent 2023-12-11 22:41:01 +03:00
c196f282af Bugfix BuildParagraphes 2023-12-11 05:25:02 +03:00
bea162aef9 BuildParagraphes update
(in progress)
2023-12-11 00:25:17 +03:00
daba967cdc Add pivot tables tests 2023-12-07 21:10:08 +06:00
5c7f07f71d Fix frtslicercache conversion 2023-12-07 20:57:56 +06:00
92312df5ad Add slicer tests 2023-12-07 20:57:20 +06:00
e4031da0ba Add comments and tables test 2023-12-07 14:24:13 +06:00
6298d21b5a Fix worksheet conversion 2023-12-06 21:43:18 +06:00
f3b23b3b47 Change example file 2023-12-06 21:05:51 +06:00
af7d46dbf7 Remove rgce check 2023-12-06 20:59:59 +06:00
93b8a80fa9 Fix parsed formula binary writing 2023-12-06 20:59:10 +06:00
2fde5de8b0 Fix defined names conversion 2023-12-06 17:54:11 +06:00
0c7963f427 Fix slicercache ext conversion 2023-12-06 15:53:17 +06:00
d5330086cc Merge branch 'feature/xlsb_write' into feature/addXlsbTests 2023-12-05 21:23:44 +06:00
45c7abfc36 Merge branch 'release/v8.0.0' into feature/xlsb_write 2023-12-05 21:23:06 +06:00
986b1114be Change test file 2023-12-05 21:21:23 +06:00
5af35f3b09 Fix styles conversion 2023-12-05 21:21:10 +06:00
b7a89a93a8 Merge branch 'feature/xlsb_write' into feature/addXlsbTests 2023-12-05 13:24:57 +06:00
04580a2fac Merge branch 'release/v8.0.0' into feature/xlsb_write 2023-12-05 13:13:32 +06:00
4f32c84e8a Add defaults for style colors 2023-12-05 13:10:51 +06:00
bfbae147f0 Add tests for simple xlsb 2023-12-05 13:10:22 +06:00
13c6193f42 Merge branch 'feature/xlsb_write' into feature/addXlsbTests 2023-12-04 20:22:00 +06:00
fcc7708a85 Merge branch 'release/v7.6.0' into feature/xlsb_write 2023-12-04 20:21:21 +06:00
0a157c4afd Remove formats from test convert params 2023-12-04 20:19:08 +06:00
1bf45a3c23 Add xlsx 2 xlsb tests 2023-12-04 13:07:30 +06:00
5533ac8a59 Adding conversion of brackets, matrices, scores and indexes. Tests. 2023-12-01 16:27:26 +03:00
e0437fcf77 Merge branch 'feature/xlsb_write' into feature/addXlsbTests 2023-12-01 19:06:17 +06:00
d404457744 FIx tables and cols conversion 2023-12-01 18:17:12 +06:00
3426704f80 mend 2023-11-30 14:00:19 +06:00
b317d304df Merge branch 'release/v7.6.0' into feature/xlsb_write 2023-11-30 13:59:46 +06:00
be08b9c6c6 Fix pivot conversion 2023-11-28 13:33:33 +06:00
fd95d72a08 Update ascent/descent
values in objects
crossing using ascent/descent
2023-11-26 01:17:33 +03:00
bfb113170f Merge branch 'release/v7.6.0' into feature/xlsb_write 2023-11-24 14:19:32 +06:00
f9b4f8402b added conversion of operations on sets and connections. tests added 2023-11-17 12:04:13 +03:00
e3a0b16578 Fix styles conversion 2023-11-16 00:45:21 +06:00
fb608d3dd5 Fix connection conversion 2023-11-14 16:33:26 +06:00
2d53f96522 Add query table conversion 2023-11-14 15:15:43 +06:00
c4085ed698 Fix xlsx 2 xlsb conversion 2023-11-10 17:21:44 +06:00
311cbe468b Merge branch 'develop' into feature/xlsb_write 2023-11-09 14:30:07 +06:00
3a17ce21ef Reworking of the CElementOperator class, reworking of some part of the conversion, tests 2023-11-08 17:24:09 +03:00
e5a4ea21b0 Fix move 2023-11-06 17:19:48 +03:00
07b33be69a Fix bug
- shared -> wear ptrs
- fix bug with sort
2023-11-06 15:49:29 +03:00
21d8353cdc Fix bug with highlighting 2023-11-03 13:00:11 +03:00
29e44fb12c Refactoring
- tables romoved (for now)
- paragraph logic is broken (fix soon)
2023-11-03 12:22:14 +03:00
91fad82d6a Refactoring
in progress
2023-11-02 23:10:29 +03:00
8b9d5c9f51 Refactoring (still in porgress) 2023-11-02 18:34:45 +03:00
83e37ba5f0 Refactoring (in progress) 2023-11-02 14:12:58 +03:00
5272f00216 Merge branch 'develop' into feature/xlsb_write 2023-11-01 16:12:41 +06:00
6374e3ba23 Refactoring 2023-10-31 17:17:17 +03:00
5b0516e398 Architecture refinement (adding connections, functions and operators) 2023-10-27 17:23:25 +03:00
eec0075e54 Сhange of architecture 2023-10-13 18:18:06 +03:00
c343625e6f Add connections conversion 2023-10-13 21:14:26 +06:00
832a57bed1 Add comments conversion 2023-10-13 20:47:35 +06:00
102fa4d4b6 Merge branch 'release/v7.5.0' into feature/xlsb_write 2023-10-12 16:25:25 +06:00
dc09bd4e01 Add external links binary writing 2023-10-11 19:30:01 +06:00
a20d28d83c Merge branch 'release/v7.5.0' into feature/xlsb_write 2023-10-10 15:27:37 +06:00
dd0ede1405 Remove nodiscard 2023-10-04 19:20:42 +03:00
46d3b94bc6 Merge branch 'develop' into feature/xlsb_write 2023-10-04 16:13:58 +06:00
416ef9c03c Add table slicer conversion 2023-10-02 20:57:53 +06:00
7ed274c3e9 Fix lines below text & size of super/sub script 2023-10-02 17:00:34 +03:00
004af5b9cc add default column width 2023-09-29 21:04:18 +06:00
2193366443 Fix pivot tables conversion 2023-09-29 20:12:31 +06:00
23c93145b1 Fix pivot table stream writing 2023-09-28 13:32:10 +06:00
417267a963 adding parsing of structures such as matrices, indexes 2023-09-25 16:12:50 +03:00
7a198ac6db Fix paragpraph logic
finally
2023-09-25 14:29:33 +03:00
85c420d501 Add pivot cache records conversion 2023-09-21 22:05:22 +06:00
4ab4f74166 Add pivot cache definition conversion 2023-09-19 20:37:28 +06:00
adcfe31832 Add pivot tables conversion 2023-09-15 19:26:02 +06:00
35fbf84683 Change logic 2023-09-14 15:17:15 +03:00
7cee2951e8 Fix slicers conversion 2023-09-12 19:23:31 +06:00
8a203f4851 Add slicer Cache conversion 2023-09-11 21:30:12 +06:00
e72afe11d3 Adding tests 2023-09-11 18:14:38 +03:00
e70589f943 Fix default values for workbook definde names 2023-09-11 18:24:48 +06:00
0c55adc82a Conversion development 2023-09-10 15:19:45 +03:00
6743757a94 Add slicer conversion 2023-09-08 16:35:45 +06:00
daba15e142 Fix workbook names conversion 2023-09-08 16:14:24 +06:00
9ae35fe594 Add default values for workbook records 2023-09-07 19:30:45 +06:00
bfaca9d414 Fix wokkbook binary type 2023-09-07 19:27:47 +06:00
b4b4596657 Fix table conversion 2023-09-06 16:05:26 +06:00
4498c5a60f Remove double binary file writing 2023-09-05 22:19:51 +06:00
9e009cc0f8 Revision of reading brackets. Conversion development. 2023-09-02 10:11:57 +03:00
7dc8a4bb9b Fix bug
dropcaps fix
2023-09-01 18:52:29 +03:00
b6f11208c9 Add table writing 2023-09-01 21:24:56 +06:00
dd532eb823 Add table conversion 2023-08-31 17:21:58 +06:00
e11e314b22 Update drop caps
drop caps is shapes now
2023-08-29 22:51:37 +03:00
6a1897d342 Fix book views conversion 2023-08-29 18:19:30 +06:00
5ac9df5d89 Improvement of functionality (brackets, scalable brackets, attributes) 2023-08-25 18:28:53 +03:00
e2143e170a Fix sheet format pr conversion 2023-08-25 20:30:42 +06:00
8a02c684f4 Fix characters 2023-08-25 14:11:18 +06:00
a38a0c302d Fix sheet view conversion 2023-08-24 20:06:32 +06:00
568582f2b5 Add default values for xlsb conversion 2023-08-23 20:37:30 +06:00
60b7fabad9 Fix shared strings conversion 2023-08-22 20:24:45 +06:00
14e78b8a93 Add shared strings writing 2023-08-22 17:37:33 +06:00
60797121d2 Add shared strings conversion 2023-08-21 22:01:47 +06:00
aa9ff37320 Development of algorithms 2023-08-18 19:44:42 +03:00
e9dc0d4c2c Fix worksheet conversion 2023-08-18 16:25:17 +06:00
6aae88e521 Merge branch 'release/v7.5.0' into feature/docx_renderer2 2023-08-17 11:09:18 +03:00
cc9c219d62 Fix fonts conversion defaults 2023-08-17 13:43:20 +06:00
d93934a2d4 Fix xfs conversion 2023-08-16 19:38:18 +06:00
5a52de4b2e Add styles conversion 2023-08-16 16:46:44 +06:00
a23d7864aa Add drawing ext conversion for styles 2023-08-16 15:23:10 +06:00
6737ac2122 Add dxfs converting 2023-08-16 15:21:31 +06:00
e180b49191 Add style colors conversion 2023-08-15 18:51:32 +06:00
a420375411 Fix include file paths 2023-08-14 21:13:07 +06:00
5b00fc4ad4 Add Table styles conversion 2023-08-14 20:48:13 +06:00
83cb27d123 Add cell styles conversion 2023-08-14 19:26:41 +06:00
a791775acf Add cell xfs conversion 2023-08-14 19:10:03 +06:00
48e3f55411 Add cell style xfs conversion 2023-08-14 18:58:10 +06:00
15cf8de9bf Add borders conversion 2023-08-14 17:32:25 +06:00
44fb83dc3a Add Fills conversion 2023-08-14 16:07:00 +06:00
deb206fad2 Add nubFmts conversion 2023-08-14 16:06:43 +06:00
38b6a583d2 Add fonts conversion 2023-08-14 16:06:26 +06:00
a735af265d fix zero height cells 2023-08-11 21:39:12 +06:00
7197545541 Started development of StarMath string parser 2023-08-11 17:38:50 +03:00
32c86f6deb added formula conversion 2023-08-11 19:11:36 +06:00
2968e8e303 Add DropCaps support
commented for now
2023-08-10 21:23:33 +03:00
bc5ab2719c Remove unused files 2023-08-10 14:37:30 +03:00
f7ecbf8ddb added Ccell conversion 2023-08-10 15:42:33 +06:00
4ebbfad654 Fix spacing in different cconts 2023-08-08 12:05:01 +03:00
fd81de66bf corrected file types 2023-08-08 13:55:00 +06:00
6afb01da00 ParagraphStyle Fix 2023-08-08 10:06:13 +03:00
1f79847c78 added xlsb type changing 2023-08-07 22:35:15 +06:00
7aa61809a6 corrected conversion 2023-08-07 22:33:56 +06:00
ca95fab62d Merge branch 'feature/xlsb_write' of github.com:ONLYOFFICE/core into feature/xlsb_write 2023-08-04 21:54:00 +06:00
3f75431018 started sheet data conversion 2023-08-04 21:49:02 +06:00
9cfb0ee82a addede worksheet writing 2023-08-04 20:59:20 +06:00
eef5b9b9cc . 2023-08-04 12:08:47 +03:00
dc95b8a92c . 2023-08-04 12:04:07 +03:00
65675e2c54 . 2023-08-04 11:52:15 +03:00
6a26c78816 . 2023-08-03 15:12:20 +03:00
d38694d94a Merge remote-tracking branch 'origin/release/v7.5.0' into feature/xlsb_write 2023-08-03 14:53:33 +03:00
d358f2eb5f added conversion attributes check 2023-08-02 14:46:55 +06:00
7118da40a2 Fix bug
reload fonts
2023-07-28 11:36:33 +03:00
a65183616f Fix check files in test 2023-07-17 10:40:12 +03:00
03335551b6 Clear fonts cache & font streams on each convertaion 2023-07-17 10:35:47 +03:00
781338fb1e Sets Gid to 0 2023-07-14 18:17:22 +03:00
b792f98dea added workbook conversion 2023-07-14 19:45:12 +06:00
537e7aa9f5 added drawing ext conversion of workbook 2023-07-14 19:44:43 +06:00
281d9abd8f added file sharing conversion 2023-07-14 18:49:04 +06:00
5398d4598b added external references conversion 2023-07-14 18:05:55 +06:00
23dee6d7ef added workbook protection conversion 2023-07-13 20:42:42 +06:00
368fdbec18 added workbookPr conversion 2023-07-13 18:30:38 +06:00
f6e6e22401 added sheets conversion 2023-07-13 17:01:00 +06:00
a0262cf5f9 added defined names conversion 2023-07-13 15:34:44 +06:00
54a85f17fb added calcPr conversion 2023-07-13 14:45:36 +06:00
21d883e083 added book views conversion 2023-07-12 21:55:13 +06:00
c4fe64423c Calc width in selected font 2023-07-12 17:19:43 +03:00
1864a6d0c0 added worksheet conversion 2023-07-12 18:08:56 +06:00
bc7bbb94aa added extension list conversion 2023-07-12 18:08:02 +06:00
0c6a72df99 Fix bug with left sort
+ Changed consts space width
2023-07-12 13:31:35 +03:00
e2932091e8 added conditional formatting conversion 2023-07-10 21:49:44 +06:00
b0721b2c16 Rename param for x2t & remove src dependency for library (paragraph) 2023-07-09 21:35:44 +03:00
9602c52fae Merge branch 'develop' into feature/docx_renderer2 2023-07-09 21:19:50 +03:00
35cec4cbd8 added data validation conversion 2023-07-07 21:01:31 +06:00
69e5dd8cdf added ProtectedRange conversion 2023-07-07 19:54:52 +06:00
dac999e9e6 Clearing cache after document, not page
more optimization
no error if convert wasnt called
2023-07-07 13:48:58 +03:00
ae185f6cd3 added data consolifate conversion 2023-07-06 21:10:34 +06:00
df147106b3 added breaks conversion 2023-07-06 16:12:49 +06:00
f70718822b added picture worksheet conversion 2023-07-06 15:31:33 +06:00
9c119635da added cheetpr conversion 2023-07-06 15:15:00 +06:00
c495089022 added controls conversion 2023-07-05 21:31:25 +06:00
a1ac26ada9 added ole objects convertation 2023-07-05 19:48:11 +06:00
1b155518c2 Less comparsions 2023-07-02 19:18:16 +03:00
e2a3e82770 Fix bug
iterator exeption
2023-07-02 18:31:27 +03:00
e42f3031f8 Add caching fontstyle
like in fontmanager
2023-07-02 18:19:07 +03:00
5e1c67b29e added table parts conversion 2023-06-30 19:31:57 +06:00
b2b628b5b7 added autofilter conversion 2023-06-30 18:55:13 +06:00
950212b23b corrected conversion 2023-06-30 18:54:39 +06:00
dee93bae01 added sortstate conversion 2023-06-30 15:14:57 +06:00
8fe5139272 added protection and headerfooter conversion 2023-06-29 17:35:19 +06:00
2d13189051 added print options conversion 2023-06-29 16:12:31 +06:00
62b480b00c added page setup conversion 2023-06-29 16:03:29 +06:00
1e068075f4 added page margins conversion 2023-06-29 14:12:54 +06:00
264bec5feb added sheet view conversion 2023-06-28 22:50:08 +06:00
7bf8a55d25 added sheetformatpr conversion 2023-06-28 17:56:42 +06:00
4f068159d7 add merged cells conversion 2023-06-28 17:55:59 +06:00
311c70816f added hyperlinks conversion 2023-06-27 21:22:23 +06:00
f56184505f added BrtLegacyDrawing conversion 2023-06-27 20:45:24 +06:00
75853c8cb3 added Cdimension conversion 2023-06-27 16:24:22 +06:00
98eb856641 add drawning conversion 2023-06-27 16:20:26 +06:00
a74bb35ecd added cols convertation 2023-06-27 16:02:49 +06:00
f5d972573e Fix bug (tabulation)
\t symbol skipped and addded during analysis
2023-06-27 10:44:25 +03:00
ee3d054373 completed external links converting 2023-06-23 21:00:47 +06:00
8669470692 Fix bug 2023-06-23 17:15:42 +03:00
0b46254fed Fix rescale pen bug 2023-06-23 17:09:54 +03:00
01b114770a . 2023-06-19 12:11:36 +03:00
25db8ee837 Fix bug 2023-05-21 15:22:31 +03:00
e626d013a8 Fix bug 2023-05-21 15:13:37 +03:00
66d846dcfc Fix bug 2023-05-19 01:26:33 +03:00
c012741f7f Fix memory leaks
Finally
2023-05-19 00:29:22 +03:00
ad3a23a708 Fix bug 2023-05-11 15:23:22 +03:00
41c351b72d Fix memory leaks 2023-05-10 13:10:29 +03:00
bac28708c1 Fix bug 2023-05-10 12:36:10 +03:00
3bb66721a1 Fix bug 2023-05-02 18:57:40 +03:00
cf85c54f43 Fix font selection 2023-04-28 00:52:58 +03:00
dcddfd15b5 Merge pull request #1168 from ONLYOFFICE/release/v7.4.0
Release/v7.4.0
2023-04-27 02:13:48 +05:00
265e9d8af8 Fix bug 2023-04-25 03:37:21 +03:00
acb9af928f Add paragraph styles 2023-04-18 22:05:29 +03:00
9a0d42b957 Update shape merging 2023-04-10 19:11:42 +03:00
531fae1486 FontStyles refactoring 2023-04-10 18:41:44 +03:00
fb22675e69 Fix bug
or not
2023-04-08 17:09:47 +03:00
49f9c96570 Refactoring 2023-04-02 10:15:43 +03:00
c3bd31a38e Add optimization 2023-04-02 05:27:15 +03:00
c69da0df04 Add path merging 2023-04-02 04:39:08 +03:00
69cbba7b2b Refactoring 2023-03-21 01:35:08 +03:00
caea7fbe2f Fix bug + refactoring 2023-03-21 01:27:58 +03:00
4007b826bf Refactoring 2023-03-20 03:44:36 +03:00
39c19db22a Refactoring (faster) 2023-03-20 02:55:43 +03:00
bacbfbf221 Fix bug 2023-03-20 02:51:15 +03:00
9cc07e916b Refactoring 2023-03-20 02:21:04 +03:00
8de7d01012 Add FontSelector (Refactoring) 2023-03-19 18:45:10 +03:00
21544a7ff7 Refactoring 2023-03-14 19:02:58 +03:00
2ab9f06493 Refactoring 2023-03-14 18:10:33 +03:00
118783c716 Fix bug 2023-03-05 13:27:15 +03:00
0d06216215 Refactoring 2023-03-05 13:06:18 +03:00
66050307ce Refactoring
CStyleManager* in conttext is useless
2023-03-02 16:48:47 +03:00
53bbeb0cdc Refactoring + VectrosGraphics update 2023-02-27 15:46:54 +03:00
623e664478 indents update
tabs instead of spaces
2023-02-19 12:37:53 +03:00
5cac25286d Refactoring 2023-02-19 12:27:08 +03:00
74c4bf6236 Fix docx_renderer test build 2023-01-19 14:02:27 +03:00
6f1018aa50 Merge pull request #1115 from ONLYOFFICE/develop
develop -> docx_renderer2
2023-01-19 13:38:23 +03:00
0a1e90958c Added base classes for table decoding.
Added a Converter class for use in various objects.
Added additional comments to the code.
Added tasks under the //todo label.
2022-10-20 14:00:12 +03:00
742ed66df1 Refactoring. Optimized operating logic. Conversion time is reduced. 2022-10-14 15:06:40 +03:00
9c0b3b33c4 Merge pull request #1046 from ONLYOFFICE/hotfix/v7.2.1
Hotfix/v7.2.1
2022-10-02 21:54:35 +03:00
e35a27e9dc Added recognition of Diacritical Symbols.
Paragraphs are allocated to shapes based on the distance between them.
2022-09-26 13:38:52 +03:00
cc69b4b830 All paragraphs on one page add to general text shape now. 2022-09-26 13:38:52 +03:00
35cc9e4f20 Added new TextAssociationType - tatParagraphToShape.
Added changes to logic of determing paragraphs.
Some fixes 6.
2022-09-26 13:38:51 +03:00
7a276227d3 Modified the packing of lines by paragraphs and the definition of the type of paragraph alignment. 2022-09-26 13:38:51 +03:00
791be217af Fix problem with determine of font name. 2022-09-26 13:38:51 +03:00
1494 changed files with 93449 additions and 32401 deletions

2
.gitignore vendored
View File

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

18
3DPARTY.md Normal file
View File

@ -0,0 +1,18 @@
## Third-party
- boost ([BSL](https://raw.githubusercontent.com/boostorg/boost/master/LICENSE_1_0.txt))
- icu ([UNICODE LICENSE V3](https://raw.githubusercontent.com/unicode-org/icu/main/LICENSE))
- freetype ([FTL](https://raw.githubusercontent.com/freetype/freetype/master/docs/FTL.TXT))
- harfbuzz ([MIT](https://raw.githubusercontent.com/harfbuzz/harfbuzz/main/COPYING))
- hyphen ([MPL](https://raw.githubusercontent.com/hunspell/hyphen/master/COPYING))
- hunspell ([MPL](https://raw.githubusercontent.com/hunspell/hunspell/master/COPYING.MPL))
- gumbo ([Apache-2.0](https://raw.githubusercontent.com/google/gumbo-parser/master/COPYING))
- katana ([MIT](https://raw.githubusercontent.com/jasenhuang/katana-parser/master/LICENSE))
- cximage ([CXIMAGE LICENCE](https://raw.githubusercontent.com/movableink/cximage/master/license.txt))
- openjpeg ([2-clause BSD License](https://raw.githubusercontent.com/uclouvain/openjpeg/master/LICENSE))
- socket.io-client-cpp ([MIT](https://raw.githubusercontent.com/socketio/socket.io-client-cpp/master/LICENSE))
- curl ([CURL LICENCE](https://raw.githubusercontent.com/curl/curl/master/COPYING))
- 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))

View File

@ -1,9 +1,20 @@
INCLUDEPATH += $$PWD/build/$$CORE_BUILDS_PLATFORM_PREFIX/include
CORE_BOOST_LIBS = $$PWD/build/$$CORE_BUILDS_PLATFORM_PREFIX/lib
core_ios:CONFIG += disable_enum_constexpr_conversion
core_android:CONFIG += disable_enum_constexpr_conversion
core_mac:CONFIG += disable_enum_constexpr_conversion
core_android {
INCLUDEPATH += $$PWD/build/android/include
CORE_BOOST_LIBS = $$PWD/build/android/lib/$$CORE_BUILDS_PLATFORM_PREFIX
DEFINES += "_HAS_AUTO_PTR_ETC=0"
}
disable_enum_constexpr_conversion {
QMAKE_CFLAGS += -Wno-enum-constexpr-conversion
QMAKE_CXXFLAGS += -Wno-enum-constexpr-conversion
}
bundle_xcframeworks {

View File

@ -1,326 +0,0 @@
#!/bin/bash
cd boost_1_72_0
OUTPUT_DIR="../build/android"
BOOST_LIBS="filesystem system date_time regex"
CPPSTD="-std=c++11 -frtti -fexceptions"
# Must set these after parseArgs to fill in overriden values
# Todo: -g -DNDEBUG are for debug builds only...
# Boost.test defines are needed to build correct instrumentable boost_unit_test_framework static lib
# it does not affect the functionality of <boost/test/included/unit_test.hpp> single-header usage.
# See http://www.boost.org/doc/libs/1_66_0/libs/test/doc/html/boost_test/adv_scenarios/static_lib_customizations/entry_point.html
EXTRA_FLAGS="-DBOOST_AC_USE_PTHREADS -DBOOST_SP_USE_PTHREADS \
-DBOOST_TEST_NO_MAIN -DBOOST_TEST_ALTERNATIVE_INIT_API -DANDROID_STL=c++_static \
-Wno-unused-local-typedef"
EXTRA_ANDROID_FLAGS="$EXTRA_FLAGS"
if [[ -n "$USE_CXX11_ABI" ]]; then
EXTRA_LINUX_FLAGS="$EXTRA_FLAGS -D_GLIBCXX_USE_CXX11_ABI=$USE_CXX11_ABI"
else
EXTRA_LINUX_FLAGS="$EXTRA_FLAGS"
fi
doneSection()
{
echo
echo "Done"
echo "================================================================="
echo
}
bootstrapBoost()
{
BOOTSTRAP_LIBS=$BOOST_LIBS
BOOST_LIBS_COMMA=$(echo $BOOTSTRAP_LIBS | sed -e "s/ /,/g")
echo "Bootstrapping for $1 (with libs $BOOST_LIBS_COMMA)"
./bootstrap.sh --with-libraries=$BOOST_LIBS_COMMA
doneSection
}
generateAndroidUserConfig()
{
HOSTOS="$(uname | awk '{ print $1}' | tr [:upper:] [:lower:])-" # darwin or linux
OSARCH="$(uname -m)"
# Boost doesn't build with <compileflags>-Werror
# Reported to boost-users@lists.boost.org
cat > "./tools/build/src/user-config.jam" <<EOF
using clang : 5.0~x86
: $ANDROID_NDK_ROOT/toolchains/llvm/prebuilt/$HOSTOS$OSARCH/bin/clang++ $EXTRA_ANDROID_FLAGS
:
<architecture>x86 <target-os>android
<compileflags>--target=i686-none-linux-android
<compileflags>--gcc-toolchain=$ANDROID_NDK_ROOT/toolchains/x86-4.9/prebuilt/$HOSTOS$OSARCH
<compileflags>--sysroot=$ANDROID_NDK_ROOT/sysroot
<compileflags>-isystem <compileflags>$ANDROID_NDK_ROOT/sources/cxx-stl/llvm-libc++/include
<compileflags>-isystem <compileflags>$ANDROID_NDK_ROOT/sources/cxx-stl/llvm-libc++abi/include
<compileflags>-isystem <compileflags>$ANDROID_NDK_ROOT/sources/android/support/include
<compileflags>-isystem <compileflags>$ANDROID_NDK_ROOT/sysroot/usr/include
<compileflags>-isystem <compileflags>$ANDROID_NDK_ROOT/sysroot/usr/include/i686-linux-android
<compileflags>-DANDROID
<compileflags>-D__ANDROID_API__=19
<compileflags>-ffunction-sections
<compileflags>-funwind-tables
<compileflags>-fstack-protector-strong
<compileflags>-fno-limit-debug-info
<compileflags>-fPIC
<compileflags>-no-canonical-prefixes
<compileflags>-mstackrealign
<compileflags>-Wa,--noexecstack
<compileflags>-Wformat
<compileflags>-Werror=format-security
<compileflags>-Wall
<compileflags>-Wshadow
;
using clang : 5.0~x86_64
: $ANDROID_NDK_ROOT/toolchains/llvm/prebuilt/$HOSTOS$OSARCH/bin/clang++ $EXTRA_ANDROID_FLAGS
:
<architecture>x86 <target-os>android
<compileflags>--target=x86_64-none-linux-android
<compileflags>--gcc-toolchain=$ANDROID_NDK_ROOT/toolchains/x86_64-4.9/prebuilt/$HOSTOS$OSARCH
<compileflags>--sysroot=$ANDROID_NDK_ROOT/sysroot
<compileflags>-isystem <compileflags>$ANDROID_NDK_ROOT/sources/cxx-stl/llvm-libc++/include
<compileflags>-isystem <compileflags>$ANDROID_NDK_ROOT/sources/cxx-stl/llvm-libc++abi/include
<compileflags>-isystem <compileflags>$ANDROID_NDK_ROOT/sources/android/support/include
<compileflags>-isystem <compileflags>$ANDROID_NDK_ROOT/sysroot/usr/include
<compileflags>-isystem <compileflags>$ANDROID_NDK_ROOT/sysroot/usr/include/x86_64-linux-android
<compileflags>-DANDROID
<compileflags>-D__ANDROID_API__=21
<compileflags>-ffunction-sections
<compileflags>-funwind-tables
<compileflags>-fstack-protector-strong
<compileflags>-fno-limit-debug-info
<compileflags>-fPIC
<compileflags>-no-canonical-prefixes
<compileflags>-mstackrealign
<compileflags>-Wa,--noexecstack
<compileflags>-Wformat
<compileflags>-Werror=format-security
<compileflags>-Wall
<compileflags>-Wshadow
;
using clang : 5.0~arm
: $ANDROID_NDK_ROOT/toolchains/llvm/prebuilt/$HOSTOS$OSARCH/bin/clang++ $EXTRA_ANDROID_FLAGS
:
<architecture>arm <target-os>android
<compileflags>--target=armv7-none-linux-androideabi
<compileflags>--gcc-toolchain=$ANDROID_NDK_ROOT/toolchains/arm-linux-androideabi-4.9/prebuilt/$HOSTOS$OSARCH
<compileflags>--sysroot=$ANDROID_NDK_ROOT/sysroot
<compileflags>-isystem <compileflags>$ANDROID_NDK_ROOT/sources/cxx-stl/llvm-libc++/include
<compileflags>-isystem <compileflags>$ANDROID_NDK_ROOT/sources/cxx-stl/llvm-libc++abi/include
<compileflags>-isystem <compileflags>$ANDROID_NDK_ROOT/sources/android/support/include
<compileflags>-isystem <compileflags>$ANDROID_NDK_ROOT/sysroot/usr/include
<compileflags>-isystem <compileflags>$ANDROID_NDK_ROOT/sysroot/usr/include/arm-linux-androideabi
<compileflags>-DANDROID
<compileflags>-D__ANDROID_API__=19
<compileflags>-ffunction-sections
<compileflags>-funwind-tables
<compileflags>-fstack-protector-strong
<compileflags>-fno-limit-debug-info
<compileflags>-fPIC
<compileflags>-fno-integrated-as
<compileflags>-no-canonical-prefixes
<compileflags>-Wa,--noexecstack
<compileflags>-Wformat
<compileflags>-Werror=format-security
<compileflags>-Wall
<compileflags>-Wshadow
<compileflags>-march=armv7-a
<compileflags>-mfloat-abi=softfp
<compileflags>-mfpu=vfpv3-d16
<compileflags>-mthumb
;
using clang : 5.0~arm64
: $ANDROID_NDK_ROOT/toolchains/llvm/prebuilt/$HOSTOS$OSARCH/bin/clang++ $EXTRA_ANDROID_FLAGS
:
<architecture>arm <target-os>android
<compileflags>--target=aarch64-none-linux-android
<compileflags>--gcc-toolchain=$ANDROID_NDK_ROOT/toolchains/aarch64-linux-android-4.9/prebuilt/$HOSTOS$OSARCH
<compileflags>--sysroot=$ANDROID_NDK_ROOT/sysroot
<compileflags>-isystem <compileflags>$ANDROID_NDK_ROOT/sources/cxx-stl/llvm-libc++/include
<compileflags>-isystem <compileflags>$ANDROID_NDK_ROOT/sources/cxx-stl/llvm-libc++abi/include
<compileflags>-isystem <compileflags>$ANDROID_NDK_ROOT/sources/android/support/include
<compileflags>-isystem <compileflags>$ANDROID_NDK_ROOT/sysroot/usr/include
<compileflags>-isystem <compileflags>$ANDROID_NDK_ROOT/sysroot/usr/include/aarch64-linux-android
<compileflags>-DANDROID
<compileflags>-D__ANDROID_API__=21
<compileflags>-ffunction-sections
<compileflags>-funwind-tables
<compileflags>-fstack-protector-strong
<compileflags>-fno-limit-debug-info
<compileflags>-fPIC
<compileflags>-no-canonical-prefixes
<compileflags>-Wa,--noexecstack
<compileflags>-Wformat
<compileflags>-Werror=format-security
<compileflags>-Wall
<compileflags>-Wshadow
;
EOF
}
buildBoost_Android()
{
mkdir -p $OUTPUT_DIR
echo > ${OUTPUT_DIR}/android-build.log
if [[ -z "$ANDROID_NDK_ROOT" ]]; then
echo "Must specify ANDROID_NDK_ROOT"
exit 1
fi
export NO_BZIP2=1
# build libicu if locale requested but not provided
# if echo $LIBRARIES | grep locale; then
# if [ -e libiconv-libicu-android ]; then
# echo "ICONV and ICU already compiled"
# else
# echo "boost_locale selected - compiling ICONV and ICU"
# git clone https://github.com/pelya/libiconv-libicu-android.git
# cd libiconv-libicu-android
# ./build.sh || exit 1
# cd ..
# fi
# fi
echo clean
./b2 --clean
echo Building release x86 Boost for Android Emulator
./b2 --build-dir=android-build --stagedir=android-build/stage \
--prefix="$OUTPUT_DIR" \
--libdir="$OUTPUT_DIR/lib/x86" toolset=clang-5.0~x86 \
architecture=x86 target-os=android define=_LITTLE_ENDIAN \
optimization=speed \
address-model=32 variant=release cxxflags="${CPPSTD}" \
link=static threading=multi install >> "${OUTPUT_DIR}/android-build.log" 2>&1
if [ $? != 0 ]; then echo "Error staging Android. Check ${OUTPUT_DIR}/android-build.log"; exit 1; fi
doneSection
echo Building release x86_64 Boost for Android Emulator
./b2 --build-dir=android-build --stagedir=android-build/stage \
--prefix="$OUTPUT_DIR" \
--libdir="$OUTPUT_DIR/lib/x86_64" toolset=clang-5.0~x86_64 \
architecture=x86 target-os=android define=_LITTLE_ENDIAN \
optimization=speed \
address-model=64 variant=release cxxflags="${CPPSTD}" \
link=static threading=multi install >> "${OUTPUT_DIR}/android-build.log" 2>&1
if [ $? != 0 ]; then echo "Error staging Android. Check ${OUTPUT_DIR}/android-build.log"; exit 1; fi
doneSection
echo Building release armv7 Boost for Android
./b2 --build-dir=android-build --stagedir=android-build/stage \
--prefix="$OUTPUT_DIR" \
--libdir="$OUTPUT_DIR/lib/armeabi-v7a" toolset=clang-5.0~arm \
abi=aapcs architecture=arm address-model=32 binary-format=elf threading=multi \
optimization=space \
target-os=android variant=release cxxflags="${CPPSTD}" \
link=static install >> "${OUTPUT_DIR}/android-build.log" 2>&1
if [ $? != 0 ]; then echo "Error installing Android. Check ${OUTPUT_DIR}/android-build.log"; exit 1; fi
doneSection
echo Building release arm64 Boost for Android
./b2 --build-dir=android-build --stagedir=android-build/stage \
--prefix="$OUTPUT_DIR" \
--libdir="$OUTPUT_DIR/lib/arm64-v8a" toolset=clang-5.0~arm64 \
abi=aapcs architecture=arm address-model=64 binary-format=elf threading=multi \
optimization=space \
target-os=android variant=release cxxflags="${CPPSTD}" \
link=static install >> "${OUTPUT_DIR}/android-build.log" 2>&1
if [ $? != 0 ]; then echo "Error installing Android. Check ${OUTPUT_DIR}/android-build.log"; exit 1; fi
doneSection
}
buildBoost_Android_debug()
{
mkdir -p $OUTPUT_DIR
echo > ${OUTPUT_DIR}/android-build.log
export NO_BZIP2=1
# build libicu if locale requested but not provided
# if echo $LIBRARIES | grep locale; then
# if [ -e libiconv-libicu-android ]; then
# echo "ICONV and ICU already compiled"
# else
# echo "boost_locale selected - compiling ICONV and ICU"
# git clone https://github.com/pelya/libiconv-libicu-android.git
# cd libiconv-libicu-android
# ./build.sh || exit 1
# cd ..
# fi
# fi
echo Building debug x86 Boost for Android Emulator
./b2 $THREADS --build-dir=android-build --stagedir=android-build/stage \
--prefix="$OUTPUT_DIR" \
--libdir="$OUTPUT_DIR/lib/debug/x86" toolset=clang-5.0~x86 \
architecture=x86 target-os=android define=_LITTLE_ENDIAN \
optimization=speed \
address-model=32 variant=debug cxxflags="${CPPSTD}" \
link=static threading=multi install >> "${OUTPUT_DIR}/android-build.log" 2>&1
if [ $? != 0 ]; then echo "Error staging Android. Check ${OUTPUT_DIR}/android-build.log"; exit 1; fi
doneSection
echo Building debug x86_64 Boost for Android Emulator
./b2 $THREADS --build-dir=android-build --stagedir=android-build/stage \
--prefix="$OUTPUT_DIR" \
--libdir="$OUTPUT_DIR/lib/debug/x86_64" toolset=clang-5.0~x86_64 \
architecture=x86 target-os=android define=_LITTLE_ENDIAN \
optimization=speed \
address-model=64 variant=debug cxxflags="${CPPSTD}" \
link=static threading=multi install >> "${OUTPUT_DIR}/android-build.log" 2>&1
if [ $? != 0 ]; then echo "Error staging Android. Check ${OUTPUT_DIR}/android-build.log"; exit 1; fi
doneSection
echo Building debug armv7 Boost for Android
./b2 $THREADS --build-dir=android-build --stagedir=android-build/stage \
--prefix="$OUTPUT_DIR" \
--libdir="$OUTPUT_DIR/lib/debug/armeabi-v7a" toolset=clang-5.0~arm \
abi=aapcs architecture=arm address-model=32 binary-format=elf threading=multi \
optimization=space \
target-os=android variant=debug cxxflags="${CPPSTD}" \
link=static install >> "${OUTPUT_DIR}/android-build.log" 2>&1
if [ $? != 0 ]; then echo "Error installing Android. Check ${OUTPUT_DIR}/android-build.log"; exit 1; fi
doneSection
echo Building debug arm64 Boost for Android
./b2 $THREADS --build-dir=android-build --stagedir=android-build/stage \
--prefix="$OUTPUT_DIR" \
--libdir="$OUTPUT_DIR/lib/debug/arm64-v8a" toolset=clang-5.0~arm64 \
abi=aapcs architecture=arm address-model=64 binary-format=elf threading=multi \
optimization=space \
target-os=android variant=debug cxxflags="${CPPSTD}" \
link=static install >> "${OUTPUT_DIR}/android-build.log" 2>&1
if [ $? != 0 ]; then echo "Error installing Android. Check ${OUTPUT_DIR}/android-build.log"; exit 1; fi
doneSection
}
bootstrapBoost
generateAndroidUserConfig
buildBoost_Android
#buildBoost_Android_debug
echo "Completed successfully"

View File

@ -27,7 +27,7 @@ CLEAN=
BOOST_VERSION=1.72.0
BOOST_VERSION2=1_72_0
MIN_IOS_VERSION=8.0
IOS_SDK_VERSION=`xcodebuild BITCODE_GENERATION_MODE="bitcode" ENABLE_BITCODE="YES" OTHER_CFLAGS="-fembed-bitcode" -showsdks | grep iphoneos | \
IOS_SDK_VERSION=`xcodebuild BITCODE_GENERATION_MODE="bitcode" ENABLE_BITCODE="NO" -showsdks | grep iphoneos | \
egrep "[[:digit:]]+\.[[:digit:]]+" -o | tail -1`
OSX_SDK_VERSION=`xcodebuild BITCODE_GENERATION_MODE="bitcode" ENABLE_BITCODE="YES" OTHER_CFLAGS="-fembed-bitcode" -showsdks | grep macosx | \
egrep "[[:digit:]]+\.[[:digit:]]+" -o | tail -1`
@ -42,7 +42,7 @@ XCODE_ROOT=`xcode-select -print-path`
#
# Should perhaps also consider/use instead: -BOOST_SP_USE_PTHREADS
EXTRA_CPPFLAGS="-DBOOST_AC_USE_PTHREADS -DBOOST_SP_USE_PTHREADS -g -DNDEBUG \
-std=c++11 -stdlib=libc++ -fvisibility=hidden -fvisibility-inlines-hidden -fembed-bitcode"
-std=c++11 -stdlib=libc++ -fvisibility=hidden -fvisibility-inlines-hidden"
EXTRA_IOS_CPPFLAGS="$EXTRA_CPPFLAGS -mios-version-min=$MIN_IOS_VERSION"
EXTRA_OSX_CPPFLAGS="$EXTRA_CPPFLAGS"
@ -259,20 +259,20 @@ buildBoost()
echo Building Boost for iPhone
# Install this one so we can copy the headers for the frameworks...
./b2 -j16 --build-dir=iphone-build --stagedir=iphone-build/stage \
cxxflags="-fembed-bitcode" \
cxxflags="" \
--prefix=$PREFIXDIR toolset=darwin architecture=arm target-os=iphone \
macosx-version=iphone-${IOS_SDK_VERSION} define=_LITTLE_ENDIAN \
link=static stage
./b2 -j16 --build-dir=iphone-build --stagedir=iphone-build/stage \
--prefix=$PREFIXDIR toolset=darwin architecture=arm \
cxxflags="-fembed-bitcode" \
cxxflags="" \
target-os=iphone macosx-version=iphone-${IOS_SDK_VERSION} \
define=_LITTLE_ENDIAN link=static install
doneSection
echo Building Boost for iPhoneSimulator
./b2 -j16 --build-dir=iphonesim-build --stagedir=iphonesim-build/stage \
cxxflags="-fembed-bitcode" \
cxxflags="" \
toolset=darwin-${IOS_SDK_VERSION}~iphonesim architecture=x86 \
target-os=iphone macosx-version=iphonesim-${IOS_SDK_VERSION} \
link=static stage

View File

@ -1,220 +0,0 @@
#!/bin/bash
#
# Copyright 2016 leenjewel
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
source ./build-common.sh
export PLATFORM_TYPE="Android"
export ARCHS=("arm" "arm64" "x86" "x86_64")
export ABIS=("armeabi-v7a" "arm64-v8a" "x86" "x86_64")
export ABI_TRIPLES=("arm-linux-androideabi" "aarch64-linux-android" "i686-linux-android" "x86_64-linux-android")
export ANDROID_API=21
# for test
# export ARCHS=("x86_64")
# export ABIS=("x86_64")
# export ABI_TRIPLES=("x86_64-linux-android")
if [[ -z ${ANDROID_NDK_ROOT} ]]; then
echo "ANDROID_NDK_ROOT not defined"
exit 1
fi
function get_toolchain() {
HOST_OS=$(uname -s)
case ${HOST_OS} in
Darwin) HOST_OS=darwin ;;
Linux) HOST_OS=linux ;;
FreeBsd) HOST_OS=freebsd ;;
CYGWIN* | *_NT-*) HOST_OS=cygwin ;;
esac
HOST_ARCH=$(uname -m)
case ${HOST_ARCH} in
i?86) HOST_ARCH=x86 ;;
x86_64 | amd64) HOST_ARCH=x86_64 ;;
esac
echo "${HOST_OS}-${HOST_ARCH}"
}
function get_android_arch() {
local common_arch=$1
case ${common_arch} in
arm)
echo "arm-v7a"
;;
arm64)
echo "arm64-v8a"
;;
x86)
echo "x86"
;;
x86_64)
echo "x86-64"
;;
esac
}
function get_target_build() {
local arch=$1
case ${arch} in
arm-v7a)
echo "arm"
;;
arm64-v8a)
echo "arm64"
;;
x86)
echo "x86"
;;
x86-64)
echo "x86_64"
;;
esac
}
function get_build_host_internal() {
local arch=$1
case ${arch} in
arm-v7a | arm-v7a-neon)
echo "arm-linux-androideabi"
;;
arm64-v8a)
echo "aarch64-linux-android"
;;
x86)
echo "i686-linux-android"
;;
x86-64)
echo "x86_64-linux-android"
;;
esac
}
function android_get_build_host() {
local arch=$(get_android_arch $1)
get_build_host_internal $arch
}
function get_clang_target_host() {
local arch=$1
local api=$2
case ${arch} in
arm-v7a | arm-v7a-neon)
echo "armv7a-linux-androideabi${api}"
;;
arm64-v8a)
echo "aarch64-linux-android${api}"
;;
x86)
echo "i686-linux-android${api}"
;;
x86-64)
echo "x86_64-linux-android${api}"
;;
esac
}
function set_android_toolchain_bin() {
export PATH=${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/$(get_toolchain)/bin:$PATH
echo PATH=$PATH
}
function set_android_toolchain() {
local name=$1
local arch=$(get_android_arch $2)
local api=$3
local build_host=$(get_build_host_internal "$arch")
local clang_target_host=$(get_clang_target_host "$arch" "$api")
export AR=${build_host}-ar
export CC=${clang_target_host}-clang
export CXX=${clang_target_host}-clang++
export AS=${build_host}-as
export LD=${build_host}-ld
export RANLIB=${build_host}-ranlib
export STRIP=${build_host}-strip
}
function get_common_includes() {
local toolchain=$(get_toolchain)
echo "-I${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/${toolchain}/sysroot/usr/include -I${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/${toolchain}/sysroot/usr/local/include"
}
function get_common_linked_libraries() {
local api=$1
local arch=$2
local toolchain=$(get_toolchain)
local build_host=$(get_build_host_internal "$arch")
echo "-L${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/${toolchain}/${build_host}/lib -L${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/${toolchain}/sysroot/usr/lib/${build_host}/${api} -L${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/${toolchain}/lib"
}
function set_android_cpu_feature() {
local name=$1
local arch=$(get_android_arch $2)
local api=$3
case ${arch} in
arm-v7a | arm-v7a-neon)
export CFLAGS="-march=armv7-a -mfpu=vfpv3-d16 -mfloat-abi=softfp -Wno-unused-function -fno-integrated-as -fstrict-aliasing -fPIC -DANDROID -D__ANDROID_API__=${api} -Os -ffunction-sections -fdata-sections $(get_common_includes)"
export CXXFLAGS="-std=c++11 -Os -ffunction-sections -fdata-sections"
export LDFLAGS="-march=armv7-a -mfpu=vfpv3-d16 -mfloat-abi=softfp -Wl,--fix-cortex-a8 -Wl,--gc-sections -Os -ffunction-sections -fdata-sections $(get_common_linked_libraries ${api} ${arch})"
export CPPFLAGS=${CFLAGS}
;;
arm64-v8a)
export CFLAGS="-march=armv8-a -Wno-unused-function -fno-integrated-as -fstrict-aliasing -fPIC -DANDROID -D__ANDROID_API__=${api} -Os -ffunction-sections -fdata-sections $(get_common_includes)"
export CXXFLAGS="-std=c++11 -Os -ffunction-sections -fdata-sections"
export LDFLAGS="-march=armv8-a -Wl,--gc-sections -Os -ffunction-sections -fdata-sections $(get_common_linked_libraries ${api} ${arch})"
export CPPFLAGS=${CFLAGS}
;;
x86)
export CFLAGS="-march=i686 -mtune=intel -mssse3 -mfpmath=sse -m32 -Wno-unused-function -fno-integrated-as -fstrict-aliasing -fPIC -DANDROID -D__ANDROID_API__=${api} -Os -ffunction-sections -fdata-sections $(get_common_includes)"
export CXXFLAGS="-std=c++11 -Os -ffunction-sections -fdata-sections"
export LDFLAGS="-march=i686 -Wl,--gc-sections -Os -ffunction-sections -fdata-sections $(get_common_linked_libraries ${api} ${arch})"
export CPPFLAGS=${CFLAGS}
;;
x86-64)
export CFLAGS="-march=x86-64 -msse4.2 -mpopcnt -m64 -mtune=intel -Wno-unused-function -fno-integrated-as -fstrict-aliasing -fPIC -DANDROID -D__ANDROID_API__=${api} -Os -ffunction-sections -fdata-sections $(get_common_includes)"
export CXXFLAGS="-std=c++11 -Os -ffunction-sections -fdata-sections"
export LDFLAGS="-march=x86-64 -Wl,--gc-sections -Os -ffunction-sections -fdata-sections $(get_common_linked_libraries ${api} ${arch})"
export CPPFLAGS=${CFLAGS}
;;
esac
}
function android_printf_global_params() {
local arch=$1
local abi=$2
local abi_triple=$3
local in_dir=$4
local out_dir=$5
echo -e "arch = $arch"
echo -e "abi = $abi"
echo -e "abi_triple = $abi_triple"
echo -e "PLATFORM_TYPE = $PLATFORM_TYPE"
echo -e "ANDROID_API = $ANDROID_API"
echo -e "in_dir = $in_dir"
echo -e "out_dir = $out_dir"
echo -e "AR = $AR"
echo -e "CC = $CC"
echo -e "CXX = $CXX"
echo -e "AS = $AS"
echo -e "LD = $LD"
echo -e "RANLIB = $RANLIB"
echo -e "STRIP = $STRIP"
echo -e "CFLAGS = $CFLAGS"
echo -e "CXXFLAGS = $CXXFLAGS"
echo -e "LDFLAGS = $LDFLAGS"
echo -e "CPPFLAGS = $CPPFLAGS"
}

View File

@ -1,128 +0,0 @@
#!/bin/bash
#
# Copyright 2016 leenjewel
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# # read -n1 -p "Press any key to continue..."
set -u
source ./build-android-common.sh
init_log_color
TOOLS_ROOT=$(pwd)
SOURCE="$0"
while [ -h "$SOURCE" ]; do
DIR="$(cd -P "$(dirname "$SOURCE")" && pwd)"
SOURCE="$(readlink "$SOURCE")"
[[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE"
done
pwd_path="$(cd -P "$(dirname "$SOURCE")" && pwd)"
echo pwd_path=${pwd_path}
echo TOOLS_ROOT=${TOOLS_ROOT}
LIB_VERSION="curl-7_68_0"
LIB_NAME="curl-7.68.0"
LIB_DEST_DIR="${pwd_path}/build/android/curl-universal"
echo "https://github.com/curl/curl/releases/download/${LIB_VERSION}/${LIB_NAME}.tar.gz"
# https://curl.haxx.se/download/${LIB_NAME}.tar.gz
# https://github.com/curl/curl/releases/download/curl-7_69_0/curl-7.69.0.tar.gz
# https://github.com/curl/curl/releases/download/curl-7_68_0/curl-7.68.0.tar.gz
rm -rf "${LIB_DEST_DIR}" "${LIB_NAME}"
[ -f "${LIB_NAME}.tar.gz" ] || curl -L -o ${LIB_NAME}.tar.gz https://github.com/curl/curl/releases/download/${LIB_VERSION}/${LIB_NAME}.tar.gz -s
[ -f "${LIB_NAME}.tar.gz" ] || log_error "curl download error!"
set_android_toolchain_bin
function configure_make() {
ARCH=$1
ABI=$2
ABI_TRIPLE=$3
log_info "configure $ABI start..."
if [ -d "${LIB_NAME}" ]; then
rm -fr "${LIB_NAME}"
fi
tar xfz "${LIB_NAME}.tar.gz"
pushd .
cd "${LIB_NAME}"
PREFIX_DIR="${pwd_path}/build/android/${ABI}"
if [ -d "${PREFIX_DIR}" ]; then
rm -fr "${PREFIX_DIR}"
fi
mkdir -p "${PREFIX_DIR}"
OUTPUT_ROOT=${TOOLS_ROOT}/build/android/${ABI}
mkdir -p ${OUTPUT_ROOT}/log
set_android_toolchain "curl" "${ARCH}" "${ANDROID_API}"
set_android_cpu_feature "curl" "${ARCH}" "${ANDROID_API}"
export ANDROID_NDK_HOME=${ANDROID_NDK_ROOT}
echo ANDROID_NDK_HOME=${ANDROID_NDK_HOME}
OPENSSL_OUT_DIR="${pwd_path}/../openssl/build/android/${ABI}"
export LDFLAGS="${LDFLAGS} -L${OPENSSL_OUT_DIR}/lib"
# export LDFLAGS="-Wl,-rpath-link,-L${OPENSSL_OUT_DIR}/lib $LDFLAGS "
android_printf_global_params "$ARCH" "$ABI" "$ABI_TRIPLE" "$PREFIX_DIR" "$OUTPUT_ROOT"
if [[ "${ARCH}" == "x86_64" ]]; then
./configure --host=$(android_get_build_host "${ARCH}") --prefix="${PREFIX_DIR}" --enable-ipv6 --with-ssl=${OPENSSL_OUT_DIR} --enable-static --disable-shared >"${OUTPUT_ROOT}/log/${ABI}.log" 2>&1
elif [[ "${ARCH}" == "x86" ]]; then
./configure --host=$(android_get_build_host "${ARCH}") --prefix="${PREFIX_DIR}" --enable-ipv6 --with-ssl=${OPENSSL_OUT_DIR} --enable-static --disable-shared >"${OUTPUT_ROOT}/log/${ABI}.log" 2>&1
elif [[ "${ARCH}" == "arm" ]]; then
./configure --host=$(android_get_build_host "${ARCH}") --prefix="${PREFIX_DIR}" --enable-ipv6 --with-ssl=${OPENSSL_OUT_DIR} --enable-static --disable-shared >"${OUTPUT_ROOT}/log/${ABI}.log" 2>&1
elif [[ "${ARCH}" == "arm64" ]]; then
./configure --host=$(android_get_build_host "${ARCH}") --prefix="${PREFIX_DIR}" --enable-ipv6 --with-ssl=${OPENSSL_OUT_DIR} --enable-static --disable-shared >"${OUTPUT_ROOT}/log/${ABI}.log" 2>&1
else
log_error "not support" && exit 1
fi
log_info "make $ABI start..."
make clean >>"${OUTPUT_ROOT}/log/${ABI}.log"
if make -j$(get_cpu_count) >>"${OUTPUT_ROOT}/log/${ABI}.log" 2>&1; then
make install >>"${OUTPUT_ROOT}/log/${ABI}.log" 2>&1
fi
popd
}
log_info "${PLATFORM_TYPE} ${LIB_NAME} start..."
for ((i = 0; i < ${#ARCHS[@]}; i++)); do
if [[ $# -eq 0 || "$1" == "${ARCHS[i]}" ]]; then
configure_make "${ARCHS[i]}" "${ABIS[i]}" "${ABI_TRIPLES[i]}"
fi
done
log_info "${PLATFORM_TYPE} ${LIB_NAME} end..."

View File

@ -78,24 +78,24 @@ function set_ios_cpu_feature() {
armv7)
export CC="xcrun -sdk iphoneos clang -arch armv7"
export CXX="xcrun -sdk iphoneos clang++ -arch armv7"
export CFLAGS="-arch armv7 -target armv7-ios-darwin -march=armv7 -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp -Wno-unused-function -fstrict-aliasing -Oz -Wno-ignored-optimization-argument -DIOS -isysroot ${sysroot} -fembed-bitcode -miphoneos-version-min=${ios_min_target} -I${sysroot}/usr/include"
export LDFLAGS="-arch armv7 -target armv7-ios-darwin -march=armv7 -isysroot ${sysroot} -fembed-bitcode -L${sysroot}/usr/lib "
export CXXFLAGS="-std=c++11 -arch armv7 -target armv7-ios-darwin -march=armv7 -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp -fstrict-aliasing -fembed-bitcode -DIOS -miphoneos-version-min=${ios_min_target} -I${sysroot}/usr/include"
export CFLAGS="-arch armv7 -target armv7-ios-darwin -march=armv7 -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp -Wno-unused-function -fstrict-aliasing -Oz -Wno-ignored-optimization-argument -DIOS -isysroot ${sysroot} -miphoneos-version-min=${ios_min_target} -I${sysroot}/usr/include"
export LDFLAGS="-arch armv7 -target armv7-ios-darwin -march=armv7 -isysroot ${sysroot} -L${sysroot}/usr/lib "
export CXXFLAGS="-std=c++11 -arch armv7 -target armv7-ios-darwin -march=armv7 -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp -fstrict-aliasing -DIOS -miphoneos-version-min=${ios_min_target} -I${sysroot}/usr/include"
;;
arm64)
export CC="xcrun -sdk iphoneos clang -arch arm64"
export CXX="xcrun -sdk iphoneos clang++ -arch arm64"
export CFLAGS="-arch arm64 -target aarch64-ios-darwin -march=armv8 -mcpu=generic -Wno-unused-function -fstrict-aliasing -Oz -Wno-ignored-optimization-argument -DIOS -isysroot ${sysroot} -fembed-bitcode -miphoneos-version-min=${ios_min_target} -I${sysroot}/usr/include"
export LDFLAGS="-arch arm64 -target aarch64-ios-darwin -march=armv8 -isysroot ${sysroot} -fembed-bitcode -L${sysroot}/usr/lib "
export CXXFLAGS="-std=c++11 -arch arm64 -target aarch64-ios-darwin -march=armv8 -mcpu=generic -fstrict-aliasing -fembed-bitcode -DIOS -miphoneos-version-min=${ios_min_target} -I${sysroot}/usr/include"
export CFLAGS="-arch arm64 -target aarch64-ios-darwin -march=armv8 -mcpu=generic -Wno-unused-function -fstrict-aliasing -Oz -Wno-ignored-optimization-argument -DIOS -isysroot ${sysroot} -miphoneos-version-min=${ios_min_target} -I${sysroot}/usr/include"
export LDFLAGS="-arch arm64 -target aarch64-ios-darwin -march=armv8 -isysroot ${sysroot} -L${sysroot}/usr/lib "
export CXXFLAGS="-std=c++11 -arch arm64 -target aarch64-ios-darwin -march=armv8 -mcpu=generic -fstrict-aliasing -DIOS -miphoneos-version-min=${ios_min_target} -I${sysroot}/usr/include"
;;
arm64e)
# -march=armv8.3 ???
export CC="xcrun -sdk iphoneos clang -arch arm64e"
export CXX="xcrun -sdk iphoneos clang++ -arch arm64e"
export CFLAGS="-arch arm64e -target aarch64-ios-darwin -Wno-unused-function -fstrict-aliasing -DIOS -isysroot ${sysroot} -fembed-bitcode -miphoneos-version-min=${ios_min_target} -I${sysroot}/usr/include"
export LDFLAGS="-arch arm64e -target aarch64-ios-darwin -isysroot ${sysroot} -fembed-bitcode -L${sysroot}/usr/lib "
export CXXFLAGS="-std=c++11 -arch arm64e -target aarch64-ios-darwin -fstrict-aliasing -fembed-bitcode -DIOS -miphoneos-version-min=${ios_min_target} -I${sysroot}/usr/include"
export CFLAGS="-arch arm64e -target aarch64-ios-darwin -Wno-unused-function -fstrict-aliasing -DIOS -isysroot ${sysroot} -miphoneos-version-min=${ios_min_target} -I${sysroot}/usr/include"
export LDFLAGS="-arch arm64e -target aarch64-ios-darwin -isysroot ${sysroot} -L${sysroot}/usr/lib "
export CXXFLAGS="-std=c++11 -arch arm64e -target aarch64-ios-darwin -fstrict-aliasing -DIOS -miphoneos-version-min=${ios_min_target} -I${sysroot}/usr/include"
;;
i386)
export CC="xcrun -sdk iphonesimulator clang -arch i386"

View File

@ -1,18 +1,10 @@
core_android {
ABI_PATH = $$replace(CORE_BUILDS_PLATFORM_PREFIX, "android_", "")
contains(ABI_PATH, "armv7" ) {
ABI_PATH = $$replace(ABI_PATH, "armv7", "armeabi-v7a")
}
contains(ABI_PATH, "arm64_v8a" ) {
ABI_PATH = $$replace(ABI_PATH, "arm64_v8a", "arm64-v8a")
}
INCLUDEPATH += \
$$PWD/build/android/$$ABI_PATH/include \
$$PWD/../openssl/build/android/$$ABI_PATH/include \
$$PWD/build/android/include \
$$PWD/../openssl/build/android/$$CORE_BUILDS_PLATFORM_PREFIX_DST/include
LIBS += \
$$PWD/build/android/$$ABI_PATH/lib/libcurl.a \
$$PWD/../openssl/build/android/$$ABI_PATH/lib/libssl.a \
$$PWD/../openssl/build/android/$$ABI_PATH/lib/libcrypto.a \
$$PWD/build/android/$$CORE_BUILDS_PLATFORM_PREFIX_DST/libcurl.a \
$$PWD/../openssl/build/android/$$CORE_BUILDS_PLATFORM_PREFIX_DST/lib/libssl.a \
$$PWD/../openssl/build/android/$$CORE_BUILDS_PLATFORM_PREFIX_DST/lib/libcrypto.a \
}

View File

@ -12,22 +12,20 @@
#include "StaticFunctions.h"
#include "ConstValues.h"
#define DEFAULTFONTSIZE 28 // 14 * 2
#define DEFAULT_FONT_SIZE 14
namespace NSCSS
{
typedef std::map<std::wstring, std::wstring>::const_iterator styles_iterator;
CCompiledStyle::CCompiledStyle() : m_nDpi(96), m_UnitMeasure(Point)
{
m_oFont.SetSize(std::to_wstring(DEFAULTFONTSIZE), 0, true);
}
{}
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_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){}
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_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){}
CCompiledStyle::~CCompiledStyle()
{
@ -36,6 +34,9 @@ namespace NSCSS
CCompiledStyle& CCompiledStyle::operator+= (const CCompiledStyle &oElement)
{
if (oElement.Empty())
return *this;
m_oBackground += oElement.m_oBackground;
m_oBorder += oElement.m_oBorder;
m_oFont += oElement.m_oFont;
@ -44,6 +45,9 @@ namespace NSCSS
m_oText += oElement.m_oText;
m_oDisplay += oElement.m_oDisplay;
if (!oElement.m_sId.empty())
m_sId += L'+' + oElement.m_sId;
return *this;
}
@ -68,9 +72,7 @@ namespace NSCSS
bool CCompiledStyle::operator== (const CCompiledStyle& oStyle) const
{
return GetId()[0] == oStyle.GetId()[0] &&
m_arParentsStyles == oStyle.m_arParentsStyles &&
m_oBackground == oStyle.m_oBackground &&
return m_oBackground == oStyle.m_oBackground &&
m_oBorder == oStyle.m_oBorder &&
m_oFont == oStyle.m_oFont &&
m_oMargin == oStyle.m_oMargin &&
@ -100,16 +102,6 @@ namespace NSCSS
m_UnitMeasure = enUnitMeasure;
}
void CCompiledStyle::SetSizeSourceWindow(const CSizeWindow &oSizeWindow)
{
m_oSourceWindow = oSizeWindow;
}
void CCompiledStyle::SetSizeDeviceWindow(const CSizeWindow &oSizeWindow)
{
m_oDeviceWindow = oSizeWindow;
}
bool CCompiledStyle::Empty() const
{
return m_oBackground.Empty() && m_oBorder.Empty() && m_oFont.Empty() &&
@ -124,8 +116,8 @@ namespace NSCSS
void CCompiledStyle::AddStyle(const std::map<std::wstring, std::wstring>& mStyle, const unsigned int unLevel, const bool& bHardMode)
{
const bool bIsThereBorder = (m_oBorder.Empty()) ? false : true;
const double dFontSize = m_oFont.GetSize().ToDouble(NSCSS::Twips);
const double dFontSize = (!m_oFont.GetSize().Empty()) ? m_oFont.GetSize().ToDouble(NSCSS::Point) : DEFAULT_FONT_SIZE;
for (std::pair<std::wstring, std::wstring> pPropertie : mStyle)
{
std::transform(pPropertie.first.begin(), pPropertie.first.end(), pPropertie.first.begin(), tolower);
@ -183,45 +175,48 @@ namespace NSCSS
if (bIsThereBorder)
break;
m_oMargin.AddValue(pPropertie.second, unLevel, bHardMode);
m_oMargin.SetValues(pPropertie.second, unLevel, bHardMode);
m_oMargin.UpdateAll(dFontSize);
break;
}
CASE(L"margin-top"):
CASE(L"topmargin"):
{
if (bIsThereBorder)
break;
m_oMargin.AddTop(pPropertie.second, unLevel, bHardMode);
m_oMargin.UpdateTop(dFontSize);
m_oMargin.SetTop(pPropertie.second, unLevel, bHardMode);
break;
}
CASE(L"margin-right"):
CASE(L"margin-block-end"):
CASE(L"rightmargin"):
{
if (bIsThereBorder)
break;
m_oMargin.AddRight(pPropertie.second, unLevel, bHardMode);
m_oMargin.SetRight(pPropertie.second, unLevel, bHardMode);
m_oMargin.UpdateRight(dFontSize);
break;
}
CASE(L"margin-bottom"):
CASE(L"bottommargin"):
{
if (bIsThereBorder)
break;
m_oMargin.AddBottom(pPropertie.second, unLevel, bHardMode);
m_oMargin.SetBottom(pPropertie.second, unLevel, bHardMode);
m_oMargin.UpdateBottom(dFontSize);
break;
}
CASE(L"margin-left"):
CASE(L"margin-block-start"):
CASE(L"leftmargin"):
{
if (bIsThereBorder)
break;
m_oMargin.AddLeft(pPropertie.second, unLevel, bHardMode);
m_oMargin.SetLeft(pPropertie.second, unLevel, bHardMode);
m_oMargin.UpdateLeft(dFontSize);
break;
}
@ -229,35 +224,35 @@ namespace NSCSS
CASE(L"padding"):
CASE(L"mso-padding-alt"):
{
m_oPadding.AddValue(pPropertie.second, unLevel, bHardMode);
m_oPadding.SetValues(pPropertie.second, unLevel, bHardMode);
m_oPadding.UpdateAll(dFontSize);
break;
}
CASE(L"padding-top"):
CASE(L"mso-padding-top-alt"):
{
m_oPadding.AddTop(pPropertie.second, unLevel, bHardMode);
m_oPadding.SetTop(pPropertie.second, unLevel, bHardMode);
m_oPadding.UpdateTop(dFontSize);
break;
}
CASE(L"padding-right"):
CASE(L"mso-padding-right-alt"):
{
m_oPadding.AddRight(pPropertie.second, unLevel, bHardMode);
m_oPadding.SetRight(pPropertie.second, unLevel, bHardMode);
m_oPadding.UpdateRight(dFontSize);
break;
}
CASE(L"padding-bottom"):
CASE(L"mso-padding-bottom-alt"):
{
m_oPadding.AddBottom(pPropertie.second, unLevel, bHardMode);
m_oPadding.SetBottom(pPropertie.second, unLevel, bHardMode);
m_oPadding.UpdateBottom(dFontSize);
break;
}
CASE(L"padding-left"):
CASE(L"mso-padding-left-alt"):
{
m_oPadding.AddLeft(pPropertie.second, unLevel, bHardMode);
m_oPadding.SetLeft(pPropertie.second, unLevel, bHardMode);
m_oPadding.UpdateLeft(dFontSize);
break;
}
@ -305,6 +300,11 @@ namespace NSCSS
m_oBorder.SetColor(pPropertie.second, unLevel, bHardMode);
break;
}
CASE(L"border-collapse"):
{
m_oBorder.SetCollapse(pPropertie.second, unLevel, bHardMode);
break;
}
//BORDER TOP
CASE(L"border-top"):
{
@ -393,20 +393,12 @@ namespace NSCSS
CASE(L"background-color"):
{
m_oBackground.SetColor(pPropertie.second, unLevel, bHardMode);
if (bIsThereBorder)
m_oBackground.InBorder();
break;
}
CASE(L"background"):
CASE(L"bgcolor"):
{
m_oBackground.SetBackground(pPropertie.second, unLevel, bHardMode);
if (bIsThereBorder)
m_oBackground.InBorder();
break;
}
//DISPLAY
@ -431,6 +423,7 @@ namespace NSCSS
break;
}
CASE(L"vertical-align"):
CASE(L"valign"):
{
m_oDisplay.SetVAlign(pPropertie.second, unLevel, bHardMode);
break;
@ -501,6 +494,11 @@ namespace NSCSS
return arParentsName;
}
std::set<std::wstring> CCompiledStyle::GetParentsNamesSet() const
{
return m_arParentsStyles;
}
void CCompiledStyle::SetID(const std::wstring& sId)
{
m_sId = sId;
@ -510,4 +508,9 @@ namespace NSCSS
{
return m_sId;
}
bool CCompiledStyle::HaveThisParent(const std::wstring &wsParentName) const
{
return m_arParentsStyles.end() != m_arParentsStyles.find(wsParentName);
}
}

View File

@ -22,9 +22,6 @@ namespace NSCSS
unsigned short int m_nDpi;
UnitMeasure m_UnitMeasure;
CSizeWindow m_oSourceWindow;
CSizeWindow m_oDeviceWindow;
public:
NSProperties::CFont m_oFont;
NSProperties::CIndent m_oMargin;
@ -41,8 +38,6 @@ namespace NSCSS
void SetDpi(const unsigned short& uiDpi);
void SetUnitMeasure(const UnitMeasure& enUnitMeasure);
void SetSizeSourceWindow(const CSizeWindow& oSizeWindow);
void SetSizeDeviceWindow(const CSizeWindow& oSizeWindow);
bool Empty() const;
@ -53,10 +48,13 @@ namespace NSCSS
void AddParent(const std::wstring& sParentName);
std::vector<std::wstring> GetParentsName() const;
std::set<std::wstring> GetParentsNamesSet() const;
void SetID(const std::wstring& sId);
std::wstring GetId() const;
bool HaveThisParent(const std::wstring& wsParentName) const;
CCompiledStyle& operator+= (const CCompiledStyle& oElement);
CCompiledStyle& operator= (const CCompiledStyle& oElement);
bool operator== (const CCompiledStyle& oElement) const;

View File

@ -1,7 +1,6 @@
#include "CCssCalculator.h"
#include "CCssCalculator_Private.h"
namespace NSCSS
{
CCssCalculator::CCssCalculator()
@ -24,6 +23,16 @@ namespace NSCSS
return m_pInternal->GetCompiledStyle(oStyle, arSelectors, bIsSettings, unitMeasure);
}
std::wstring CCssCalculator::CalculateStyleId(const CNode& oNode)
{
return m_pInternal->CalculateStyleId(oNode);
}
bool CCssCalculator::CalculatePageStyle(NSProperties::CPage& oPageData, const std::vector<CNode> &arSelectors)
{
return m_pInternal->CalculatePageStyle(oPageData, arSelectors);
}
void CCssCalculator::AddStyles(const std::string &sStyle)
{
m_pInternal->AddStyles(sStyle);
@ -54,26 +63,6 @@ namespace NSCSS
m_pInternal->SetBodyTree(oTree);
}
void CCssCalculator::SetSizeSourceWindow(const CSizeWindow &oSizeWindow)
{
m_pInternal->SetSizeSourceWindow(oSizeWindow);
}
void CCssCalculator::SetSizeDeviceWindow(const CSizeWindow &oSizeWindow)
{
m_pInternal->SetSizeDeviceWindow(oSizeWindow);
}
CSizeWindow CCssCalculator::GetSizeSourceWindow() const
{
return m_pInternal->GetSizeSourceWindow();
}
CSizeWindow CCssCalculator::GetSizeDeviceWindow() const
{
return m_pInternal->GetSizeDeviceWindow();
}
UnitMeasure CCssCalculator::GetUnitMeasure() const
{
return m_pInternal->GetUnitMeasure();

View File

@ -22,6 +22,9 @@ namespace NSCSS
CCompiledStyle GetCompiledStyle(const std::vector<CNode> &arSelectors, const bool& bIsSettings = false, const UnitMeasure& unitMeasure = Point) const;
bool GetCompiledStyle(CCompiledStyle& oStyle, const std::vector<CNode> &arSelectors, const bool& bIsSettings = false, const UnitMeasure& unitMeasure = Point) const;
std::wstring CalculateStyleId(const CNode& oNode);
bool CalculatePageStyle(NSProperties::CPage& oPageData, const std::vector<CNode> &arSelectors);
// void AddStyle(const std::vector<std::string>& sSelectors, const std::string& sStyle);
void AddStyles (const std::string& sStyle);
void AddStyles (const std::wstring& wsStyle);
@ -31,12 +34,6 @@ namespace NSCSS
void SetDpi(const unsigned short int& nValue);
void SetBodyTree(const CTree &oTree);
void SetSizeSourceWindow(const CSizeWindow& oSizeWindow);
void SetSizeDeviceWindow(const CSizeWindow& oSizeWindow);
CSizeWindow GetSizeSourceWindow() const;
CSizeWindow GetSizeDeviceWindow() const;
UnitMeasure GetUnitMeasure() const;
std::wstring GetEncoding() const;
unsigned short int GetDpi() const;

View File

@ -16,8 +16,9 @@
#define MaxNumberRepetitions 6
inline static std::wstring StringifyValueList(const KatanaArray* oValues);
inline static std::wstring StringifyValue(const KatanaValue* oValue);
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)
{
@ -52,13 +53,6 @@ namespace NSCSS
m_mData.clear();
#ifdef CSS_CALCULATOR_WITH_XHTML
for (std::map<std::vector<CNode>, CCompiledStyle*>::iterator iter = m_mUsedStyles.begin(); iter != m_mUsedStyles.end(); ++iter)
delete iter->second;
m_mUsedStyles.clear();
#endif
if (NULL != m_mStatictics)
delete m_mStatictics;
}
@ -86,6 +80,182 @@ namespace NSCSS
}
#ifdef CSS_CALCULATOR_WITH_XHTML
std::map<std::wstring, std::wstring> CCssCalculator_Private::GetPageData(const std::wstring &wsPageName)
{
if (m_arPageDatas.empty())
return {};
for (const TPageData& oPageData : m_arPageDatas)
{
if (std::find(oPageData.m_wsNames.begin(), oPageData.m_wsNames.end(), wsPageName) != oPageData.m_wsNames.end())
return oPageData.m_mData;
}
return {};
}
void CCssCalculator_Private::SetPageData(NSProperties::CPage &oPage, const std::map<std::wstring, std::wstring> &mData, unsigned int unLevel, bool bHardMode)
{
for (const std::pair<std::wstring, std::wstring> &oData : mData)
{
if (L"margin" == oData.first)
oPage.SetMargin(oData.second, unLevel, bHardMode);
else if (L"size" == oData.first)
oPage.SetSize(oData.second, unLevel, bHardMode);
else if (L"mso-header-margin" == oData.first)
oPage.SetHeader(oData.second, unLevel, bHardMode);
else if (L"mso-footer-margin" == oData.first)
oPage.SetFooter(oData.second, unLevel, bHardMode);
}
}
std::vector<std::wstring> CCssCalculator_Private::CalculateAllNodes(const std::vector<CNode> &arSelectors)
{
std::vector<std::wstring> arNodes;
for (std::vector<CNode>::const_reverse_iterator oNode = arSelectors.rbegin(); oNode != arSelectors.rend(); ++oNode)
{
if (!oNode->m_wsName.empty())
arNodes.push_back(oNode->m_wsName);
if (!oNode->m_wsClass.empty())
{
if (oNode->m_wsClass.find(L' ') != std::wstring::npos)
{
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' ';}));
}
else
arNodes.push_back(L'.' + oNode->m_wsClass);
}
if (!oNode->m_wsId.empty())
arNodes.push_back(L'#' + oNode->m_wsId);
}
return arNodes;
}
void CCssCalculator_Private::FindPrevAndKindElements(const CElement *pElement, const std::vector<std::wstring> &arNextNodes, std::vector<CElement*>& arFindedElements, const std::wstring &wsName, const std::vector<std::wstring> &arClasses)
{
if (arNextNodes.empty())
return;
const std::vector<CElement*> arTempPrev = pElement->GetPrevElements(arNextNodes.crbegin() + 1, arNextNodes.crend());
const std::vector<CElement*> arTempKins = pElement->GetNextOfKin(wsName, arClasses);
if (!arTempPrev.empty())
arFindedElements.insert(arFindedElements.end(), arTempPrev.begin(), arTempPrev.end());
if (!arTempKins.empty())
arFindedElements.insert(arFindedElements.end(), arTempKins.begin(), arTempKins.end());
}
std::vector<CElement*> CCssCalculator_Private::FindElements(std::vector<std::wstring> &arNodes, std::vector<std::wstring> &arNextNodes, bool bIsSettings)
{
if (arNodes.empty())
return {};
std::vector<CElement*> arFindedElements;
std::wstring wsName, 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());
arNodes.pop_back();
}
if (!arNodes.empty())
{
wsName = arNodes.back();
arNodes.pop_back();
arNextNodes.push_back(wsName);
}
const std::map<std::wstring, CElement*>::const_iterator oFindName = m_mData.find(wsName);
std::map<std::wstring, CElement*>::const_iterator oFindId;
if (!wsId.empty())
{
oFindId = m_mData.find(wsId);
if (oFindId != m_mData.end() && NULL != m_mStatictics)
{
std::map<StatistickElement, unsigned int>::const_iterator oFindCountId = m_mStatictics->find(StatistickElement{StatistickElement::IsId, wsId});
if ((m_mStatictics->end() != oFindCountId) &&
(((bIsSettings && oFindCountId->second < MaxNumberRepetitions) ||
(!bIsSettings && oFindCountId->second >= MaxNumberRepetitions))))
{
if (!oFindId->second->Empty())
arFindedElements.push_back(oFindId->second);
}
FindPrevAndKindElements(oFindId->second, arNextNodes, arFindedElements, wsName);
}
}
if (!arClasses.empty())
{
if (!bIsSettings)
{
for (std::vector<std::wstring>::const_reverse_iterator iClass = arClasses.rbegin(); iClass != arClasses.rend(); ++iClass)
{
const std::map<std::wstring, CElement*>::const_iterator oFindClass = m_mData.find(*iClass);
if (oFindClass != m_mData.end())
{
if (!oFindClass->second->Empty())
arFindedElements.push_back(oFindClass->second);
FindPrevAndKindElements(oFindClass->second, arNextNodes, arFindedElements, wsName);
}
}
}
}
if (oFindName != m_mData.end())
{
if (!bIsSettings)
{
if (!oFindName->second->Empty())
arFindedElements.push_back(oFindName->second);
FindPrevAndKindElements(oFindName->second, arNextNodes, arFindedElements, wsName, arClasses);
}
}
if (arFindedElements.size() > 1)
{
std::sort(arFindedElements.rbegin(), arFindedElements.rend(),
[](CElement* oFirstElement, CElement* oSecondElement)
{
return oFirstElement->GetWeight() > oSecondElement->GetWeight();
});
}
return arFindedElements;
}
#endif
void CCssCalculator_Private::AddPageData(const std::wstring &wsPageNames, const std::wstring &wsStyles)
{
m_arPageDatas.push_back({NS_STATIC_FUNCTIONS::GetWordsW(wsPageNames), NS_STATIC_FUNCTIONS::GetRules(wsStyles)});
}
inline void CCssCalculator_Private::GetStylesheet(const KatanaStylesheet *oStylesheet)
{
for (size_t i = 0; i < oStylesheet->imports.length; ++i)
@ -308,231 +478,11 @@ namespace NSCSS
if (arSelectors.empty())
return CCompiledStyle();
SetUnitMeasure(unitMeasure);
CCompiledStyle oStyle;
if (!bIsSettings)
{
const std::map<std::vector<CNode>, CCompiledStyle*>::iterator oItem = m_mUsedStyles.find(arSelectors);
GetCompiledStyle(oStyle, arSelectors, bIsSettings, unitMeasure);
if (oItem != m_mUsedStyles.end())
return *oItem->second;
}
else if (NULL == m_mStatictics || m_mStatictics->empty())
{
CCompiledStyle oStyle;
oStyle.SetDpi(m_nDpi);
oStyle.SetUnitMeasure(m_UnitMeasure);
oStyle.SetID(arSelectors.back().m_wsName + ((!arSelectors.back().m_wsClass.empty()) ? L'.' + arSelectors.back().m_wsClass : L"") + ((arSelectors.back().m_wsId.empty()) ? L"" : L'#' + arSelectors.back().m_wsId) + L'-' + std::to_wstring(++m_nCountNodes));
oStyle.SetSizeDeviceWindow(m_oDeviceWindow);
oStyle.SetSizeSourceWindow(m_oSourceWindow);
return oStyle;
}
CCompiledStyle *pStyle = new CCompiledStyle();
pStyle->SetDpi(m_nDpi);
pStyle->SetUnitMeasure(m_UnitMeasure);
pStyle->SetSizeDeviceWindow(m_oDeviceWindow);
pStyle->SetSizeSourceWindow(m_oSourceWindow);
std::vector<std::wstring> arWords;
arWords.reserve(arSelectors.size() * 2);
std::vector<std::wstring> arNextNodes;
arNextNodes.reserve(arSelectors.size() * 2);
for (std::vector<CNode>::const_reverse_iterator oNode = arSelectors.rbegin(); oNode != arSelectors.rend(); ++oNode)
{
arWords.push_back(oNode->m_wsName);
//TODO:: проверить данный момент
// if (oNode->m_sName == L"td")
// pStyle->m_oMargin.SetPermission(false);
if (oNode->m_wsName == L"table")
pStyle->m_oBorder.Block();
if (!oNode->m_wsClass.empty())
{
if (oNode->m_wsClass.find(L' ') != std::wstring::npos)
{
std::vector<std::wstring> arClasses = NS_STATIC_FUNCTIONS::GetWordsW(oNode->m_wsClass, false, L" ");
if (arClasses.size() > 1)
arClasses.resize(unique(arClasses.begin(),arClasses.end()) - arClasses.begin());
switch (arClasses.size())
{
case 1:
{
arWords.push_back(L'.' + arClasses[0]);
break;
}
case 2:
{
arWords.push_back(L'.' + arClasses[0] + L" ." + arClasses[1]);
break;
}
case 3:
{
arWords.push_back(L'.' + arClasses[0] + L" ." + arClasses[1] + L" ." + arClasses[2]);
break;
}
default:
{
arWords.push_back(std::accumulate(arClasses.begin(), arClasses.end(), std::wstring(),
[](std::wstring sRes, const std::wstring& sClass)
{return sRes += L'.' + sClass + L' ';}));
break;
}
}
}
else
arWords.push_back(L'.' + oNode->m_wsClass);
}
if (!oNode->m_wsId.empty())
arWords.push_back(L'#' + oNode->m_wsId);
}
std::vector<CElement*> arElements;
for (size_t i = 0; i < arSelectors.size(); ++i)
{
std::wstring sName, sId;
std::vector<std::wstring> arClasses;
if (arWords.back()[0] == L'#')
{
sId = arWords.back();
arWords.pop_back();
arNextNodes.push_back(sId);
}
if (arWords.back()[0] == L'.')
{
arClasses = NS_STATIC_FUNCTIONS::GetWordsW(arWords.back(), false, L" ");
arNextNodes.push_back(arWords.back());
arWords.pop_back();
}
sName = arWords.back();
arWords.pop_back();
arNextNodes.push_back(sName);
pStyle->AddParent(sName);
const std::map<std::wstring, CElement*>::const_iterator oFindName = m_mData.find(sName);
std::map<std::wstring, CElement*>::const_iterator oFindId;
std::vector<CElement*> arFindElements;
if (!sId.empty())
{
oFindId = m_mData.find(sId);
if (oFindId != m_mData.end() && NULL != m_mStatictics)
{
std::map<StatistickElement, unsigned int>::const_iterator oFindCountId = m_mStatictics->find(StatistickElement{StatistickElement::IsId, sId});
if ((m_mStatictics->end() != oFindCountId) &&
(((bIsSettings && oFindCountId->second < MaxNumberRepetitions) ||
(!bIsSettings && oFindCountId->second >= MaxNumberRepetitions))))
{
if (!oFindId->second->Empty())
arFindElements.push_back(oFindId->second);
}
const std::vector<CElement*> arTempPrev = oFindId->second->GetPrevElements(arNextNodes.rbegin() + ((arClasses.empty()) ? 1 : 2), arNextNodes.rend());
if (!arTempPrev.empty())
arFindElements.insert(arFindElements.end(), arTempPrev.begin(), arTempPrev.end());
}
}
if (!arClasses.empty())
{
if (!bIsSettings)
{
for (std::vector<std::wstring>::const_reverse_iterator iClass = arClasses.rbegin(); iClass != arClasses.rend(); ++iClass)
{
const std::map<std::wstring, CElement*>::const_iterator oFindClass = m_mData.find(*iClass);
if (oFindClass != m_mData.end())
{
if (!oFindClass->second->Empty())
arFindElements.push_back(oFindClass->second);
const std::vector<CElement*> arTempPrev = oFindClass->second->GetPrevElements(arNextNodes.rbegin() + 2, arNextNodes.rend());
const std::vector<CElement*> arTempKins = oFindClass->second->GetNextOfKin(sName);
if (!arTempPrev.empty())
arFindElements.insert(arFindElements.end(), arTempPrev.begin(), arTempPrev.end());
if (!arTempKins.empty())
arFindElements.insert(arFindElements.end(), arTempKins.begin(), arTempKins.end());
}
}
}
}
if (oFindName != m_mData.end())
{
if (!bIsSettings)
{
if (!oFindName->second->Empty())
arFindElements.push_back(oFindName->second);
const std::vector<CElement*> arTempPrev = oFindName->second->GetPrevElements(arNextNodes.rbegin() + 1, arNextNodes.rend());
const std::vector<CElement*> arTempKins = oFindName->second->GetNextOfKin(sName, arClasses);
if (!arTempPrev.empty())
arFindElements.insert(arFindElements.end(), arTempPrev.begin(), arTempPrev.end());
if (!arTempKins.empty())
arFindElements.insert(arFindElements.end(), arTempKins.begin(), arTempKins.end());
}
}
if (arFindElements.size() > 1)
{
std::sort(arFindElements.rbegin(), arFindElements.rend(),
[](CElement* oFirstElement, CElement* oSecondElement)
{
return oFirstElement->GetWeight() > oSecondElement->GetWeight();
});
}
pStyle->AddStyle(arSelectors[i].m_mAttributes, i + 1);
for (const CElement* oElement : arFindElements)
pStyle->AddStyle(oElement->GetStyle(), i + 1);
if (NULL != m_mStatictics)
{
std::map<StatistickElement, unsigned int>::const_iterator oFindCountStyle = m_mStatictics->find(StatistickElement{StatistickElement::IsStyle, arSelectors[i].m_wsStyle});
if (oFindCountStyle != m_mStatictics->end())
{
if ((bIsSettings && oFindCountStyle->second < MaxNumberRepetitions) ||
(!bIsSettings && oFindCountStyle->second >= MaxNumberRepetitions))
pStyle->AddStyle(arSelectors[i].m_wsStyle, i + 1, true);
else if (!bIsSettings)
pStyle->AddStyle(arSelectors[i].m_wsStyle, i + 1, true);
}
else if (bIsSettings)
pStyle->AddStyle(arSelectors[i].m_wsStyle, i + 1, true);
}
else
pStyle->AddStyle(arSelectors[i].m_wsStyle, i + 1, true);
}
if (!bIsSettings)
{
pStyle->SetID(arSelectors.back().m_wsName + ((!arSelectors.back().m_wsClass.empty()) ? L'.' + arSelectors.back().m_wsClass : L"") + ((arSelectors.back().m_wsId.empty()) ? L"" : L'#' + arSelectors.back().m_wsId) + L'-' + std::to_wstring(++m_nCountNodes));
m_mUsedStyles[arSelectors] = pStyle;
}
return *pStyle;
return oStyle;
}
bool CCssCalculator_Private::GetCompiledStyle(CCompiledStyle &oStyle, const std::vector<CNode> &arSelectors, const bool &bIsSettings, const UnitMeasure &unitMeasure)
@ -544,11 +494,11 @@ namespace NSCSS
if (!bIsSettings)
{
const std::map<std::vector<CNode>, CCompiledStyle*>::iterator oItem = m_mUsedStyles.find(arSelectors);
const std::map<std::vector<CNode>, CCompiledStyle>::iterator oItem = m_mUsedStyles.find(arSelectors);
if (oItem != m_mUsedStyles.end())
{
oStyle = *oItem->second;
oStyle = oItem->second;
return true;
}
}
@ -558,180 +508,35 @@ namespace NSCSS
oStyle.SetUnitMeasure(m_UnitMeasure);
oStyle.SetID(arSelectors.back().m_wsName + ((!arSelectors.back().m_wsClass.empty()) ? L'.' + arSelectors.back().m_wsClass : L"") + ((arSelectors.back().m_wsId.empty()) ? L"" : L'#' + arSelectors.back().m_wsId) + L'-' + std::to_wstring(++m_nCountNodes));
oStyle.SetSizeDeviceWindow(m_oDeviceWindow);
oStyle.SetSizeSourceWindow(m_oSourceWindow);
return false;
}
oStyle.SetDpi(m_nDpi);
oStyle.SetUnitMeasure(m_UnitMeasure);
oStyle.SetSizeDeviceWindow(m_oDeviceWindow);
oStyle.SetSizeSourceWindow(m_oSourceWindow);
std::vector<std::wstring> arWords;
arWords.reserve(arSelectors.size() * 2);
std::vector<std::wstring> arNextNodes;
arNextNodes.reserve(arSelectors.size() * 2);
for (std::vector<CNode>::const_reverse_iterator oNode = arSelectors.rbegin(); oNode != arSelectors.rend(); ++oNode)
{
arWords.push_back(oNode->m_wsName);
// if (oNode->m_sName == L"td")
// oStyle.m_pMargin.SetPermission(false);
if (oNode->m_wsName == L"table")
oStyle.m_oBorder.Block();
if (!oNode->m_wsClass.empty())
{
if (oNode->m_wsClass.find(L' ') != std::wstring::npos)
{
std::vector<std::wstring> arClasses = NS_STATIC_FUNCTIONS::GetWordsW(oNode->m_wsClass, false, L" ");
if (arClasses.size() > 1)
arClasses.resize(unique(arClasses.begin(),arClasses.end()) - arClasses.begin());
switch (arClasses.size())
{
case 1:
{
arWords.push_back(L'.' + arClasses[0]);
break;
}
case 2:
{
arWords.push_back(L'.' + arClasses[0] + L" ." + arClasses[1]);
break;
}
case 3:
{
arWords.push_back(L'.' + arClasses[0] + L" ." + arClasses[1] + L" ." + arClasses[2]);
break;
}
default:
{
arWords.push_back(std::accumulate(arClasses.begin(), arClasses.end(), std::wstring(),
[](std::wstring sRes, const std::wstring& sClass)
{return sRes += L'.' + sClass + L' ';}));
break;
}
}
}
else
arWords.push_back(L'.' + oNode->m_wsClass);
}
if (!oNode->m_wsId.empty())
arWords.push_back(L'#' + oNode->m_wsId);
}
std::vector<CElement*> arElements;
std::vector<std::wstring> arNodes = CalculateAllNodes(arSelectors);
std::vector<std::wstring> arPrevNodes;
bool bInTable = false;
for (size_t i = 0; i < arSelectors.size(); ++i)
{
std::wstring sName, sId;
std::vector<std::wstring> arClasses;
oStyle.AddParent(arSelectors[i].m_wsName);
if (arWords.back()[0] == L'#')
if (!bInTable)
bInTable = IsTableElement(arSelectors[i].m_wsName);
if (bInTable)
{
sId = arWords.back();
arWords.pop_back();
arNextNodes.push_back(sId);
oStyle.m_oBackground.Clear();
oStyle.m_oBorder.Clear();
}
if (arWords.back()[0] == L'.')
{
arClasses = NS_STATIC_FUNCTIONS::GetWordsW(arWords.back(), false, L" ");
arNextNodes.push_back(arWords.back());
arWords.pop_back();
}
CCompiledStyle oTempStyle;
sName = arWords.back();
arWords.pop_back();
arNextNodes.push_back(sName);
oStyle.AddParent(sName);
oTempStyle.AddStyle(arSelectors[i].m_mAttributes, i + 1);
const std::map<std::wstring, CElement*>::const_iterator oFindName = m_mData.find(sName);
std::map<std::wstring, CElement*>::const_iterator oFindId;
std::vector<CElement*> arFindElements;
if (!sId.empty())
{
oFindId = m_mData.find(sId);
if (oFindId != m_mData.end() && NULL != m_mStatictics)
{
std::map<StatistickElement, unsigned int>::const_iterator oFindCountId = m_mStatictics->find(StatistickElement{StatistickElement::IsId, sId});
if ((m_mStatictics->end() != oFindCountId) &&
(((bIsSettings && oFindCountId->second < MaxNumberRepetitions) ||
(!bIsSettings && oFindCountId->second >= MaxNumberRepetitions))))
{
if (!oFindId->second->Empty())
arFindElements.push_back(oFindId->second);
}
const std::vector<CElement*> arTempPrev = oFindId->second->GetPrevElements(arNextNodes.rbegin() + ((arClasses.empty()) ? 1 : 2), arNextNodes.rend());
if (!arTempPrev.empty())
arFindElements.insert(arFindElements.end(), arTempPrev.begin(), arTempPrev.end());
}
}
if (!arClasses.empty())
{
if (!bIsSettings)
{
for (std::vector<std::wstring>::const_reverse_iterator iClass = arClasses.rbegin(); iClass != arClasses.rend(); ++iClass)
{
const std::map<std::wstring, CElement*>::const_iterator oFindClass = m_mData.find(*iClass);
if (oFindClass != m_mData.end())
{
if (!oFindClass->second->Empty())
arFindElements.push_back(oFindClass->second);
const std::vector<CElement*> arTempPrev = oFindClass->second->GetPrevElements(arNextNodes.rbegin() + 2, arNextNodes.rend());
const std::vector<CElement*> arTempKins = oFindClass->second->GetNextOfKin(sName);
if (!arTempPrev.empty())
arFindElements.insert(arFindElements.end(), arTempPrev.begin(), arTempPrev.end());
if (!arTempKins.empty())
arFindElements.insert(arFindElements.end(), arTempKins.begin(), arTempKins.end());
}
}
}
}
if (oFindName != m_mData.end())
{
if (!bIsSettings)
{
if (!oFindName->second->Empty())
arFindElements.push_back(oFindName->second);
const std::vector<CElement*> arTempPrev = oFindName->second->GetPrevElements(arNextNodes.rbegin() + 1, arNextNodes.rend());
const std::vector<CElement*> arTempKins = oFindName->second->GetNextOfKin(sName, arClasses);
if (!arTempPrev.empty())
arFindElements.insert(arFindElements.end(), arTempPrev.begin(), arTempPrev.end());
if (!arTempKins.empty())
arFindElements.insert(arFindElements.end(), arTempKins.begin(), arTempKins.end());
}
}
if (arFindElements.size() > 1)
{
std::sort(arFindElements.rbegin(), arFindElements.rend(),
[](CElement* oFirstElement, CElement* oSecondElement)
{
return oFirstElement->GetWeight() > oSecondElement->GetWeight();
});
}
for (const CElement* oElement : FindElements(arNodes, arPrevNodes, bIsSettings))
oTempStyle.AddStyle(oElement->GetStyle(), i + 1);
if (NULL != m_mStatictics)
{
@ -741,31 +546,68 @@ namespace NSCSS
{
if ((bIsSettings && oFindCountStyle->second < MaxNumberRepetitions) ||
(!bIsSettings && oFindCountStyle->second >= MaxNumberRepetitions))
oStyle.AddStyle(arSelectors[i].m_wsStyle, i + 1, true);
oTempStyle.AddStyle(arSelectors[i].m_wsStyle, i + 1, true);
else if (!bIsSettings)
oStyle.AddStyle(arSelectors[i].m_wsStyle, i + 1, true);
oTempStyle.AddStyle(arSelectors[i].m_wsStyle, i + 1, true);
}
else if (bIsSettings)
oStyle.AddStyle(arSelectors[i].m_wsStyle, i + 1, true);
else /*if (bIsSettings)*/
oTempStyle.AddStyle(arSelectors[i].m_wsStyle, i + 1, true);
}
else
oStyle.AddStyle(arSelectors[i].m_wsStyle, i + 1, true);
oTempStyle.AddStyle(arSelectors[i].m_wsStyle, i + 1, true);
for (const CElement* oElement : arFindElements)
oStyle.AddStyle(oElement->GetStyle(), i + 1);
oStyle += oTempStyle;
oStyle.AddStyle(arSelectors[i].m_mAttributes, i + 1);
// Скидываем некоторые внешние стили, которые внутри таблицы переопределяются
if (bInTable && i < arSelectors.size() - 1)
{
oStyle.m_oFont.GetLineHeight().Clear();
oStyle.m_oPadding.Clear();
oStyle.m_oMargin.Clear();
}
}
if (!bIsSettings)
oStyle.SetID(CalculateStyleId(arSelectors.back()));
if (!bIsSettings && !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);
}
bool CCssCalculator_Private::CalculatePageStyle(NSProperties::CPage &oPageData, const std::vector<CNode> &arSelectors)
{
if (arSelectors.empty())
return false;
std::vector<std::wstring> arNodes = CalculateAllNodes(arSelectors);
std::vector<std::wstring> arNextNodes;
for (size_t i = 0; i < arSelectors.size(); ++i)
{
oStyle.SetID(arSelectors.back().m_wsName + ((!arSelectors.back().m_wsClass.empty()) ? L'.' + arSelectors.back().m_wsClass : L"") + ((arSelectors.back().m_wsId.empty()) ? L"" : L'#' + arSelectors.back().m_wsId) + L'-' + std::to_wstring(++m_nCountNodes));
if (!arSelectors[i].m_wsStyle.empty() && std::wstring::npos != arSelectors[i].m_wsStyle.find(L"page"))
{
std::map<std::wstring, std::wstring> mRules = NS_STATIC_FUNCTIONS::GetRules(arSelectors[i].m_wsStyle);
if (mRules.end() != mRules.find(L"page"))
SetPageData(oPageData, GetPageData(mRules[L"page"]), i + 1, true);
}
CCompiledStyle *pTemp = new CCompiledStyle(oStyle);
for (const CElement* oElement : FindElements(arNodes, arNextNodes, false))
{
std::map<std::wstring, std::wstring> mRules = oElement->GetStyle();
if (mRules.end() != mRules.find(L"page"))
SetPageData(oPageData, GetPageData(mRules[L"page"]), i + 1, true);
}
m_mUsedStyles[arSelectors] = pTemp;
if (arSelectors[i].m_mAttributes.end() != arSelectors[i].m_mAttributes.find(L"page"))
SetPageData(oPageData, GetPageData(arSelectors[i].m_mAttributes.at(L"page")), i + 1, false);
}
return true;
}
#endif
@ -784,6 +626,16 @@ namespace NSCSS
if (wsStyle.empty())
return;
std::wregex oRegex(L"@page\\s*([^{]*)(\\{[^}]*\\})");
std::wsmatch oMatch;
std::wstring::const_iterator oSearchStart(wsStyle.cbegin());
while (std::regex_search(oSearchStart, wsStyle.cend(), oMatch, oRegex))
{
AddPageData(oMatch[1].str(), oMatch[2].str());
oSearchStart = oMatch.suffix().first;
}
AddStyles(U_TO_UTF8(wsStyle));
}
@ -810,26 +662,6 @@ namespace NSCSS
CTree::CountingNumberRepetitions(oTree, *m_mStatictics);
}
void CCssCalculator_Private::SetSizeSourceWindow(const CSizeWindow &oSizeWindow)
{
m_oSourceWindow = oSizeWindow;
}
void CCssCalculator_Private::SetSizeDeviceWindow(const CSizeWindow &oSizeWindow)
{
m_oDeviceWindow = oSizeWindow;
}
CSizeWindow CCssCalculator_Private::GetSizeSourceWindow() const
{
return m_oSourceWindow;
}
CSizeWindow CCssCalculator_Private::GetSizeDeviceWindow() const
{
return m_oDeviceWindow;
}
void CCssCalculator_Private::SetUnitMeasure(const UnitMeasure& nType)
{
m_UnitMeasure = nType;
@ -863,9 +695,6 @@ namespace NSCSS
m_mData.clear();
m_arFiles.clear();
m_oDeviceWindow.Clear();
m_oSourceWindow.Clear();
}
}
inline static std::wstring StringifyValueList(const KatanaArray* oValues)
@ -968,4 +797,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

@ -26,16 +26,31 @@ namespace NSCSS
std::map<std::wstring, CElement*> m_mData;
typedef struct
{
std::vector<std::wstring> m_wsNames;
std::map<std::wstring, std::wstring> m_mData;
} TPageData;
std::vector<TPageData> m_arPageDatas;
std::map<StatistickElement, unsigned int> *m_mStatictics; // Количество повторений свойств id и style у селекторов
#ifdef CSS_CALCULATOR_WITH_XHTML
std::map<std::vector<CNode>, CCompiledStyle*> m_mUsedStyles;
std::map<std::vector<CNode>, CCompiledStyle> m_mUsedStyles;
std::map<std::wstring, std::wstring> GetPageData(const std::wstring& wsPageName);
void SetPageData(NSProperties::CPage& oPage, const std::map<std::wstring, std::wstring>& mData, unsigned int unLevel, bool bHardMode = false);
std::vector<std::wstring> CalculateAllNodes(const std::vector<CNode>& arSelectors);
void FindPrevAndKindElements(const CElement* pElement, const std::vector<std::wstring>& arNextNodes, std::vector<CElement*>& arFindedElements, const std::wstring& wsName, const std::vector<std::wstring>& arClasses = {});
std::vector<CElement*> FindElements(std::vector<std::wstring>& arNodes, std::vector<std::wstring>& arNextNodes, bool bIsSettings);
#endif
std::wstring m_sEncoding;
CSizeWindow m_oSourceWindow;
CSizeWindow m_oDeviceWindow;
void AddPageData(const std::wstring& wsPageName, const std::wstring& wsStyles);
void GetStylesheet(const KatanaStylesheet* oStylesheet);
void GetRule(const KatanaRule* oRule);
@ -59,6 +74,9 @@ namespace NSCSS
#ifdef CSS_CALCULATOR_WITH_XHTML
CCompiledStyle GetCompiledStyle(const std::vector<CNode> &arSelectors, const bool& bIsSettings = false, const UnitMeasure& unitMeasure = Point);
bool GetCompiledStyle(CCompiledStyle& oStyle, const std::vector<CNode> &arSelectors, const bool& bIsSettings = false, const UnitMeasure& unitMeasure = Point);
std::wstring CalculateStyleId(const CNode& oNode);
bool CalculatePageStyle(NSProperties::CPage& oPageData, const std::vector<CNode> &arSelectors);
#endif
void AddStyles(const std::string& sStyle);
@ -69,12 +87,6 @@ namespace NSCSS
void SetDpi(unsigned short int nValue);
void SetBodyTree(const CTree &oTree);
void SetSizeSourceWindow(const CSizeWindow& oSizeWindow);
void SetSizeDeviceWindow(const CSizeWindow& oSizeWindow);
CSizeWindow GetSizeSourceWindow() const;
CSizeWindow GetSizeDeviceWindow() const;
UnitMeasure GetUnitMeasure() const;
std::wstring GetEncoding() const;
unsigned short int GetDpi() const;

View File

@ -173,26 +173,26 @@ namespace NSCSS
return arElements;
}
std::vector<CElement *> CElement::GetPrevElements(const std::vector<std::wstring>::reverse_iterator &arNodesRBegin, const std::vector<std::wstring>::reverse_iterator &arNodesREnd) const
std::vector<CElement *> CElement::GetPrevElements(const std::vector<std::wstring>::const_reverse_iterator& oNodesRBegin, const std::vector<std::wstring>::const_reverse_iterator& oNodesREnd) const
{
if (arNodesRBegin >= arNodesREnd || m_arPrevElements.empty())
if (oNodesRBegin >= oNodesREnd || m_arPrevElements.empty())
return std::vector<CElement*>();
std::vector<CElement*> arElements;
for (std::vector<std::wstring>::reverse_iterator iWord = arNodesRBegin; iWord != arNodesREnd; ++iWord)
for (std::vector<std::wstring>::const_reverse_iterator iWord = oNodesRBegin; iWord != oNodesREnd; ++iWord)
{
if ((*iWord)[0] == L'.' && ((*iWord).find(L" ") != std::wstring::npos))
{
std::vector<std::wstring> arClasses = NS_STATIC_FUNCTIONS::GetWordsW(*iWord, false, L" ");
for (std::wstring sClass : arClasses)
for (const std::wstring& wsClass : arClasses)
{
for (CElement* oPrevElement : m_arPrevElements)
{
if (oPrevElement->m_sSelector == sClass)
if (oPrevElement->m_sSelector == wsClass)
{
arElements.push_back(oPrevElement);
std::vector<CElement*> arTempElements = oPrevElement->GetPrevElements(iWord + 1, arNodesREnd);
std::vector<CElement*> arTempElements = oPrevElement->GetPrevElements(iWord + 1, oNodesREnd);
arElements.insert(arElements.end(), arTempElements.begin(), arTempElements.end());
}
}
@ -205,7 +205,7 @@ namespace NSCSS
if (oPrevElement->m_sSelector == *iWord)
{
arElements.push_back(oPrevElement);
std::vector<CElement*> arTempElements = oPrevElement->GetPrevElements(iWord + 1, arNodesREnd);
std::vector<CElement*> arTempElements = oPrevElement->GetPrevElements(iWord + 1, oNodesREnd);
arElements.insert(arElements.end(), arTempElements.begin(), arTempElements.end());
// return arElements;
}

View File

@ -39,7 +39,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>::reverse_iterator &arNodesRBegin, const std::vector<std::wstring>::reverse_iterator &arNodesREnd) 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::map<std::wstring, std::wstring> GetConvertStyle(const std::vector<CNode>& arNodes) const;
CElement *FindPrevElement(const std::wstring& sSelector) const;

View File

@ -5,7 +5,7 @@ namespace NSCSS
CNode::CNode()
{}
CNode::CNode(std::wstring wsName, std::wstring wsClass, std::wstring wsId)
CNode::CNode(const std::wstring& wsName, const std::wstring& wsClass, const std::wstring& wsId)
: m_wsName(wsName), m_wsClass(wsClass), m_wsId(wsId)
{}
@ -14,6 +14,15 @@ namespace NSCSS
return m_wsName.empty() && m_wsClass.empty() && m_wsId.empty() && m_wsStyle.empty();
}
void CNode::Clear()
{
m_wsName .clear();
m_wsClass .clear();
m_wsId .clear();
m_wsStyle .clear();
m_mAttributes.clear();
}
std::vector<std::wstring> CNode::GetData() const
{
std::vector<std::wstring> arValues;

View File

@ -18,10 +18,12 @@ namespace NSCSS
public:
CNode();
CNode(std::wstring wsName, std::wstring wsClass, std::wstring wsId);
CNode(const std::wstring& wsName, const std::wstring& wsClass, const std::wstring& wsId);
bool Empty() const;
void Clear();
std::vector<std::wstring> GetData() const;
bool operator< (const CNode& oNode) const;
bool operator== (const CNode& oNode) const;

View File

@ -14,23 +14,21 @@ namespace NSCSS
{
switch (enUnitMeasure)
{
case NSCSS::Pixel:
return dValue;
case NSCSS::Point:
return 72. / (double)ushDPI * dValue;
return dValue * 72. / (double)ushDPI;
case NSCSS::Cantimeter:
return dValue / (double)ushDPI * 2.54;
case NSCSS::Millimeter:
return dValue / (double)ushDPI * 25.4;
case NSCSS::Inch:
return 1. / (double)ushDPI * dValue;
return dValue / (double)ushDPI;
case NSCSS::Peak:
return 0.16667 / (double)ushDPI * dValue;
return dValue * 6. / (double)ushDPI; // 1 дюйм = 6 пик
case NSCSS::Twips:
return (dValue / (double)ushDPI) * 144.;
return dValue * 1440. / (double)ushDPI;
default:
return dValue;
}
return 0.;
}
double CUnitMeasureConverter::ConvertCm(double dValue, UnitMeasure enUnitMeasure, unsigned short ushDPI)
@ -38,22 +36,20 @@ namespace NSCSS
switch (enUnitMeasure)
{
case NSCSS::Point:
return 28.35 * dValue;
return dValue * 28.3465 ; // 1 см = (2.54 / 72) пункта
case NSCSS::Pixel:
return (double)ushDPI / 2.54 * dValue;
case NSCSS::Cantimeter:
return dValue;
return dValue * (double)ushDPI / 2.54;
case NSCSS::Millimeter:
return dValue * 10.;
case NSCSS::Inch:
return dValue / 2.54f;
return dValue / 2.54; // 1 дюйм = 2.54 см
case NSCSS::Peak:
return 2.36 * dValue;
return dValue * 2.36; // 2.36 = 6 / 2.54
case NSCSS::Twips:
return (dValue) * 0.3937 * (double)ushDPI;
return dValue * 567.; // 1 см = (1440 / 2.54) твипов
default:
return dValue;
}
return 0.;
}
double CUnitMeasureConverter::ConvertMm(double dValue, NSCSS::UnitMeasure enUnitMeasure, unsigned short ushDPI)
@ -61,22 +57,20 @@ namespace NSCSS
switch (enUnitMeasure)
{
case NSCSS::Point:
return 2.835 * dValue;
return dValue * 2.8346; // 1 мм = (25.4 / 72) пункта
case NSCSS::Pixel:
return (double)ushDPI / 25.4 * dValue;
return dValue * (double)ushDPI / 25.4;
case NSCSS::Cantimeter:
return dValue / 10.;
case NSCSS::Millimeter:
return dValue;
case NSCSS::Inch:
return dValue / 25.4;
case NSCSS::Peak:
return 0.236 * dValue;
return dValue * 0.236; // 0.236 = 6 / 25.4
case NSCSS::Twips:
return (dValue / 10.) * 0.3937 * (double)ushDPI;
return dValue * 56.7;
default:
return dValue;
}
return 0.;
}
double CUnitMeasureConverter::ConvertIn(double dValue, NSCSS::UnitMeasure enUnitMeasure, unsigned short ushDPI)
@ -84,45 +78,41 @@ namespace NSCSS
switch (enUnitMeasure)
{
case NSCSS::Point:
return dValue / 6.;
return dValue / 72.;
case NSCSS::Pixel:
return dValue * (double)ushDPI;
case NSCSS::Cantimeter:
return dValue * 2.54;
return dValue * 2.54; // 1 дюйм = 2.54 см
case NSCSS::Millimeter:
return dValue * 25.4;
case NSCSS::Inch:
return dValue;
case NSCSS::Peak:
return dValue / 72.;
return dValue * 6.;
case NSCSS::Twips:
return dValue * 144.;
return dValue * 1440.;
default:
return dValue;
}
return 0.;
}
double CUnitMeasureConverter::ConvertPt(double dValue, NSCSS::UnitMeasure enUnitMeasure, unsigned short ushDPI)
{
switch (enUnitMeasure)
{
case NSCSS::Point:
return dValue;
case NSCSS::Pixel:
return (double)ushDPI / 72. * dValue;
return dValue * (double)ushDPI / 72.;
case NSCSS::Cantimeter:
return dValue * 0.03528;
return dValue * 0.03528; // 0.03528 = 2.54 / 72
case NSCSS::Millimeter:
return dValue * 0.3528;
case NSCSS::Inch:
return dValue / 72.;
return dValue / 72.; // 1 дюйм = 72 пункта
case NSCSS::Peak:
return dValue / 12.;
return dValue * 0.0833; // 0.0833 = 6 / 72 (1 пункт = 1/72 дюйма)
case NSCSS::Twips:
return (dValue / 72.) * 144.;
return dValue * 20.; // 20 = 1440 / 72
default:
return dValue;
}
return 0.;
}
double CUnitMeasureConverter::ConvertPc(double dValue, NSCSS::UnitMeasure enUnitMeasure, unsigned short ushDPI)
@ -130,27 +120,49 @@ namespace NSCSS
switch (enUnitMeasure)
{
case NSCSS::Point:
return dValue * 12.;
return dValue * 12.; // 12 = 72 / 6
case NSCSS::Pixel:
return (double)ushDPI / 6. * dValue;
return dValue * (double)ushDPI / 6.; // 1 дюйм = 6 пика
case NSCSS::Cantimeter:
return dValue * 0.423;
return dValue * 0.423; // 0.423 = 2.54 / 6
case NSCSS::Millimeter:
return dValue * 4.23;
return dValue * 4.233; // 4.23 = 25.4 / 6
case NSCSS::Inch:
return dValue / 6.;
case NSCSS::Peak:
return dValue;
case NSCSS::Twips:
return dValue * 24.;
return dValue * 3.333; // 3.333 = 20 / 6
default:
return dValue;
}
}
double CUnitMeasureConverter::ConvertTw(double dValue, UnitMeasure enUnitMeasure, unsigned short ushDPI)
{
switch (enUnitMeasure)
{
case NSCSS::Point:
return dValue * 0.05; // 0.05 = 72. / 1440.
case NSCSS::Pixel:
return dValue * (double)ushDPI / 1440.; // 1 дюйм = 1440 твипов
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.;
case NSCSS::Peak:
return dValue * 0.004167; // 0.004167 = 6 / 1440
default:
return dValue;
}
return 0.;
}
bool CUnitMeasureConverter::GetValue(const std::wstring &wsValue, double &dValue, UnitMeasure &enUnitMeasure)
{
std::wregex oRegex(LR"((-?\.\d+|-?\d+(\.\d+)?)\s*(px|pt|cm|mm|in|pc|%|em|rem)?)");
if (wsValue.empty() || wsValue.end() == std::find_if(wsValue.begin(), wsValue.end(), [](wchar_t wChar) { return iswdigit(wChar);}))
return false;
std::wregex oRegex(LR"((-?\.\d+|-?\d+(\.\d+)?)\s*(px|pt|cm|mm|in|pc|%|em|rem|tw)?)");
std::wsmatch oMatches;
if(!std::regex_search(wsValue, oMatches, oRegex))
@ -176,6 +188,8 @@ namespace NSCSS
enUnitMeasure = Em;
else if (L"rem" == oMatches[3])
enUnitMeasure = Rem;
else if (L"tw" == oMatches[3])
enUnitMeasure = Twips;
else
enUnitMeasure = None;

View File

@ -30,6 +30,7 @@ namespace NSCSS
static double ConvertIn(double dValue, UnitMeasure enUnitMeasure, unsigned short ushDPI);
static double ConvertPt(double dValue, UnitMeasure enUnitMeasure, unsigned short ushDPI);
static double ConvertPc(double dValue, UnitMeasure enUnitMeasure, unsigned short ushDPI);
static double ConvertTw(double dValue, UnitMeasure enUnitMeasure, unsigned short ushDPI);
static bool GetValue(const std::wstring& wsValue, double& dValue, UnitMeasure& enUnitMeasure);
};

View File

@ -2,45 +2,23 @@
namespace NSCSS
{
CSizeWindow::CSizeWindow()
: m_ushWidth(0), m_ushHeight(0)
{}
CSizeWindow::CSizeWindow(unsigned short unWidth, unsigned short unHeight)
: m_ushWidth(unWidth), m_ushHeight(unHeight)
{}
bool CSizeWindow::Empty() const
{
return ((0 == m_ushWidth) && (0 == m_ushHeight));
}
void CSizeWindow::Clear()
{
m_ushWidth = m_ushHeight = 0;
}
bool CSizeWindow::operator==(const CSizeWindow &oSizeWindow) const
{
return ((m_ushWidth == oSizeWindow.m_ushWidth) && (m_ushHeight == oSizeWindow.m_ushHeight));
}
bool CSizeWindow::operator!=(const CSizeWindow &oSizeWindow) const
{
return ((m_ushWidth != oSizeWindow.m_ushWidth) || (m_ushHeight != oSizeWindow.m_ushHeight));
}
bool StatistickElement::operator<(const StatistickElement &oStatistickElement) const
{
return sValue < oStatistickElement.sValue;
}
void CTree::Clear()
{
m_arrChild.clear();
m_oNode.Clear();
}
void CTree::CountingNumberRepetitions(const CTree &oTree, std::map<StatistickElement, unsigned int> &mStatictics)
{
if (!oTree.m_oNode.m_wsId.empty())
++mStatictics[StatistickElement{StatistickElement::IsId, L'#' + oTree.m_oNode.m_wsId}];
if (!oTree.m_oNode.m_wsStyle.empty())
++mStatictics[StatistickElement{StatistickElement::IsStyle, oTree.m_oNode.m_wsStyle}];
if (!oTree.m_oNode.m_wsStyle.empty())
++mStatictics[StatistickElement{StatistickElement::IsStyle, oTree.m_oNode.m_wsStyle}];
if (!oTree.m_arrChild.empty())
for (const CTree& oChildren : oTree.m_arrChild)
@ -98,7 +76,7 @@ namespace NSCSS
{L"deepskyblue", L"00BFFF"}, {L"dodgerblue", L"1E90FF"}, {L"cornflowerblue",L"6495ED"},
{L"mediumdlateblue", L"7B68EE"}, {L"royalblue", L"4169E1"}, {L"blue", L"0000FF"}, {L"LightCoral", L"#F08080"}, {L"LightCoral", L"#F08080"}, {L"LightCoral", L"#F08080"},
{L"mediumblue", L"0000CD"}, {L"darkblue", L"00008B"}, {L"navy", L"000080"},
{L"midnightblue", L"191970"},
{L"midnightblue", L"191970"}, {L"navyblue", L"A0B0E0"},
/* White tones */
{L"white", L"FFFFFF"}, {L"snow", L"FFFAFA"}, {L"honeydew", L"F0FFF0"},
{L"mintcream", L"F5FFFA"}, {L"azure", L"F0FFFF"}, {L"aliceblue", L"F0F8FF"},
@ -110,7 +88,7 @@ namespace NSCSS
{L"gainsboro", L"DCDCDC"}, {L"lightgray", L"D3D3D3"}, {L"silver", L"C0C0C0"},
{L"darkgray", L"A9A9A9"}, {L"gray", L"808080"}, {L"dimgray", L"696969"},
{L"lightslategray", L"778899"}, {L"slategray", L"708090"}, {L"darkslategray", L"2F4F4F"},
{L"black", L"000000"},
{L"black", L"000000"}, {L"grey", L"808080"},
/* Outdated */
{L"windowtext", L"000000"}, {L"transparent", L"000000"}
};

View File

@ -16,21 +16,6 @@ namespace NSCSS
ScalingDirectionY = 2
} ScalingDirection;
struct CSizeWindow
{
unsigned short m_ushWidth;
unsigned short m_ushHeight;
CSizeWindow();
CSizeWindow(unsigned short unWidth, unsigned short unHeight);
bool Empty() const;
void Clear();
bool operator==(const CSizeWindow& oSizeWindow) const;
bool operator!=(const CSizeWindow& oSizeWindow) const;
};
struct StatistickElement
{
enum TypeElement
@ -48,6 +33,8 @@ namespace NSCSS
NSCSS::CNode m_oNode;
std::vector<CTree> m_arrChild;
void Clear();
static void CountingNumberRepetitions(const CTree &oTree, std::map<StatistickElement, unsigned int> &mStatictics);
};
@ -61,66 +48,69 @@ namespace NSCSS
{
typedef enum
{
B_CustomStyle = 0,
B_StyleId = 1,
B_Type = 2,
B_Default = 3,
B_CustomStyle,
B_StyleId,
B_Type,
B_Default,
B_Name = 4,
B_BasedOn = 5,
B_QFormat = 6,
B_Link = 7,
B_UnhideWhenUsed = 8,
B_UiPriority = 9,
B_Name,
B_BasedOn,
B_QFormat,
B_Link,
B_UnhideWhenUsed,
B_UiPriority,
B_SemiHidden
} BasicProperties;
typedef enum
{
P_Jc = 0,
P_Spacing = 1,
P_ContextualSpacing = 2,
P_Ind = 3,
P_OutlineLvl = 4,
P_Shd = 5,
P_Jc,
P_Spacing,
P_ContextualSpacing,
P_Ind,
P_OutlineLvl,
P_Shd,
// <pBdr>
P_TopBorder = 6,
P_LeftBorder = 7,
P_BottomBorder = 8,
P_RightBorder = 9,
P_TopBorder,
P_LeftBorder,
P_BottomBorder,
P_RightBorder,
// </pBdr>
P_KeepLines = 10,
P_KeepNext = 11,
P_KeepLines,
P_KeepNext,
} ParagraphProperties;
typedef enum
{
R_RFonts = 0,
R_Sz = 1,
R_B = 2,
R_I = 3,
R_Color = 4,
R_U = 5,
R_Highlight = 6,
R_SmallCaps = 7
R_RFonts ,
R_Sz,
R_B,
R_I,
R_Color,
R_U,
R_Highlight,
R_Shd,
R_SmallCaps,
R_Kern
} RunnerProperties;
typedef enum
{
T_TblInd = 0,
T_TblInd ,
// <tblCellMar>
T_CellTop = 1,
T_CellLeft = 2,
T_CellBottom = 3,
T_CellRight = 4,
T_CellTop,
T_CellLeft,
T_CellBottom,
T_CellRight,
// <tblCellMar>
// <tblBorders>
T_BorderTop = 5,
T_BorderLeft = 6,
T_BorderBottom = 7,
T_BorderRight = 8,
T_BorderInsideH = 9,
T_BorderInsideV = 10
T_BorderTop ,
T_BorderLeft,
T_BorderBottom,
T_BorderRight,
T_BorderInsideH,
T_BorderInsideV
// </tblBorders>
} TableProperties;
}

View File

@ -80,6 +80,52 @@ namespace NS_STATIC_FUNCTIONS
return arValues;
}
std::vector<std::wstring> ParseCSSPropertie(const std::wstring& wsInput)
{
std::vector<std::wstring> arResult;
std::wstring wsCurrent;
bool bInQuotes = false;
bool bInFunction = false;
int nParenDepth = 0;
for (wchar_t c : wsInput)
{
if (c == ' ' && !bInQuotes && !bInFunction)
{
if (!wsCurrent.empty())
{
arResult.push_back(wsCurrent);
wsCurrent.clear();
}
}
else if (c == '"' || c == '\'')
{
bInQuotes = !bInQuotes;
wsCurrent += c;
}
else if (c == '(')
{
bInFunction = true;
nParenDepth++;
wsCurrent += c;
}
else if (c == ')')
{
nParenDepth--;
if (nParenDepth == 0)
bInFunction = false;
wsCurrent += c;
}
else
wsCurrent += c;
}
if (!wsCurrent.empty())
arResult.push_back(wsCurrent);
return arResult;
}
std::vector<std::wstring> GetWordsW(const std::wstring& wsLine, bool bWithSigns, const std::wstring& wsDelimiters)
{
if (wsLine.empty())
@ -95,7 +141,9 @@ namespace NS_STATIC_FUNCTIONS
while (std::wstring::npos != unEnd)
{
arWords.emplace_back(wsLine.data() + unStart, unEnd - unStart + ((bWithSigns) ? 1 : 0));
if (unStart != unEnd)
arWords.emplace_back(wsLine.data() + unStart, unEnd - unStart + ((bWithSigns) ? 1 : 0));
unStart = wsLine.find_first_not_of(wsDelimiters, unEnd);
unEnd = wsLine.find_first_of(wsDelimiters, unStart);
}
@ -141,30 +189,17 @@ namespace NS_STATIC_FUNCTIONS
std::map<std::wstring, std::wstring> GetRules(const std::wstring& wsStyles)
{
if (wsStyles.empty())
return {};
std::wregex oCssPropertyRegex(L"([a-zA-Z-]+)\\s*:\\s*([^;\t\n\r\f\v]+)");
std::wsmatch oMatch;
std::wstring::const_iterator oSearchStart(wsStyles.cbegin());
std::map<std::wstring, std::wstring> mRules;
std::wstring::const_iterator oStartProperty = std::find_if_not(wsStyles.begin(), wsStyles.end(), std::iswspace);
std::wstring::const_iterator oEndProperty, oStartValue, oEndValue;
while (wsStyles.end() != oStartProperty)
while (std::regex_search(oSearchStart, wsStyles.cend(), oMatch, oCssPropertyRegex))
{
oEndProperty = std::find_if(oStartProperty, wsStyles.end(), [](const wchar_t &wcChar){ return L':' == wcChar;});
oStartValue = std::find_if_not(oEndProperty + 1, wsStyles.end(), std::iswspace);
if (wsStyles.end() == oEndProperty || wsStyles.end() == oStartValue)
break;
oEndValue = std::find_if(oStartValue, wsStyles.end(), [](const wchar_t &wcChar){ return L';' == wcChar;});
mRules.insert({std::wstring(oStartProperty, oEndProperty), std::wstring(oStartValue, oEndValue)});
if (wsStyles.end() == oEndValue)
break;
oStartProperty = std::find_if_not(oEndValue + 1, wsStyles.end(), std::iswspace);
mRules.insert(std::make_pair<std::wstring, std::wstring>(oMatch[1], oMatch[2]));
oSearchStart = oMatch.suffix().first;
}
return mRules;

View File

@ -20,6 +20,7 @@ namespace NSCSS
double ReadDouble(const std::wstring& wsValue);
std::vector<double> ReadDoubleValues(const std::wstring& wsValue);
std::vector<std::wstring> ParseCSSPropertie(const std::wstring& wsInput);
std::vector<std::wstring> GetWordsW(const std::wstring& wsLine, bool bWithSigns = false, const std::wstring& wsDelimiters = L" \n\r\t\f\v:;,!");
std::vector<unsigned short int> GetWeightSelector(const std::wstring& sSelector);
std::map<std::wstring, std::wstring> GetRules(const std::wstring& wsStyles);

File diff suppressed because it is too large Load Diff

View File

@ -13,6 +13,8 @@ namespace NSCSS
{
namespace NSProperties
{
#define NEXT_LEVEL UINT_MAX, true
template<typename T>
class CValue
{
@ -21,6 +23,7 @@ namespace NSCSS
friend class CDigit;
friend class CColor;
friend class CEnum;
friend class CURL;
T m_oValue;
unsigned int m_unLevel;
@ -54,6 +57,11 @@ namespace NSCSS
}
}
static bool LevelIsSame(const CValue& oFirstValue, const CValue& 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; }
@ -69,28 +77,33 @@ namespace NSCSS
return *this;
}
CValue& operator =(const T& oValue)
virtual CValue& operator =(const T& oValue)
{
//m_oValue = oValue.m_oValue;
return *this;
}
CValue& operator+=(const CValue& oValue)
virtual CValue& operator+=(const CValue& oValue)
{
if (m_unLevel > oValue.m_unLevel || (m_bImportant && !oValue.m_bImportant) || oValue.Empty())
return *this;
m_oValue = oValue.m_oValue;
m_unLevel = std::max(m_unLevel, oValue.m_unLevel);
m_bImportant = std::max(m_bImportant, oValue.m_bImportant);
m_unLevel = oValue.m_unLevel;
m_bImportant = oValue.m_bImportant;
return *this;
}
bool operator==(const CValue& oValue) const
virtual bool operator==(const CValue& oValue) const
{
return m_oValue == oValue.m_oValue;
}
virtual bool operator!=(const CValue& oValue) const
{
return m_oValue != oValue.m_oValue;
}
};
class CString : public CValue<std::wstring>
@ -124,13 +137,15 @@ namespace NSCSS
CDigit(double dValue, unsigned int unLevel, 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 Empty() const override;
bool Zero() const;
void Clear() override;
void ConvertTo(UnitMeasure enUnitMeasure, double dPrevValue = 0.);
int ToInt() const override;
double ToDouble() const override;
std::wstring ToWString() const override;
@ -144,6 +159,9 @@ namespace NSCSS
bool operator==(const double& oValue) const;
bool operator==(const CDigit& oDigit) const;
bool operator!=(const double& oValue) const;
bool operator!=(const CDigit& oDigit) const;
CDigit operator+(const CDigit& oDigit) const;
CDigit operator-(const CDigit& oDigit) const;
CDigit operator*(const CDigit& oDigit) const;
@ -169,50 +187,41 @@ namespace NSCSS
bool Empty() const;
bool operator==(const TRGB& oRGB) const;
bool operator!=(const TRGB& oRGB) const;
};
class CURL
{
public:
CURL();
bool Empty() const;
bool LinkToId() const;
void Clear();
bool SetValue(const std::wstring& wsValue);
std::wstring GetValue() const;
bool operator==(const CURL& oValue) const;
bool operator!=(const CURL& oValue) const;
private:
std::wstring m_wsValue;
};
typedef enum
{
ColorEmpty,
ColorNone,
ColorRGB,
ColorHEX,
ColorUrl
ColorUrl,
ColorContextStroke,
ColorContextFill
} ColorType;
class Q_DECL_EXPORT CColorValue
class CColor : public CValue<void*>
{
public:
CColorValue();
CColorValue(const CColorValue& oColorValue);
~CColorValue();
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();
void Clear();
bool Empty() const;
ColorType m_enType;
void* m_pColor = NULL;
std::wstring GetColor() const;
bool operator==(const CColorValue& oColorValue) const;
CColorValue& operator= (const CColorValue& oColorValue);
};
class CColor : public CValue<CColorValue>
{
CDigit m_oOpacity;
static TRGB ConvertHEXtoRGB(const std::wstring& wsValue);
static std::wstring ConvertRGBtoHEX(const TRGB& oValue);
static std::wstring CutURL(const std::wstring& wsValue);
void SetEmpty(unsigned int unLevel = 0);
public:
CColor();
@ -220,6 +229,8 @@ namespace NSCSS
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;
@ -229,7 +240,27 @@ namespace NSCSS
int ToInt() const override;
double ToDouble() const override;
std::wstring ToWString() const override;
std::wstring EquateToColor(const std::vector<std::pair<TRGB, std::wstring>>& arColors) const;
TRGB ToRGB() const;
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);
private:
CDigit m_oOpacity;
ColorType m_enType;
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();
};
typedef enum
@ -277,7 +308,7 @@ namespace NSCSS
CEnum();
bool SetValue(const std::wstring& wsValue, unsigned int unLevel, bool bHardMode) override;
void SetMapping(const std::map<std::wstring, int>& mMap);
void SetMapping(const std::map<std::wstring, int>& mMap, int nDefaulvalue = -1);
bool Empty() const override;
void Clear() override;
@ -370,19 +401,18 @@ namespace NSCSS
bool SetColor (const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
bool SetBackground(const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
void InBorder();
const CColor& GetColor() const;
bool IsInBorder() const;
bool Empty() const;
void Clear();
bool Empty() const;
bool IsNone() const;
CBackground& operator =(const CBackground& oBackground);
CBackground& operator+=(const CBackground& oBackground);
bool operator==(const CBackground& oBackground) const;
private:
CColor m_oColor;
bool m_bInBorder;
};
class CTransform
@ -397,6 +427,11 @@ namespace NSCSS
bool SetMatrix(const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
bool SetMatrix(const Aggplus::CMatrix &oMatrix);
void Translate(double dOffsetX, double dOffsetY);
void Scale(double dScaleX, double dScaleY);
void Rotate(double dValue);
void RotateAt(double dValue, double dX, double dY);
const CMatrix& GetMatrix() const;
bool Empty() const;
@ -411,14 +446,20 @@ namespace NSCSS
{
public:
CBorderSide();
CBorderSide(const CBorderSide& oBorderSide);
void Clear();
static void Equation(CBorderSide &oFirstBorderSide, CBorderSide &oSecondBorderSide);
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 SetStyle(const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
bool SetColor(const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
void SetNone(unsigned int unLevel, bool bHardMode);
void Block();
void Unblock();
@ -429,9 +470,13 @@ namespace NSCSS
const CColor& GetColor() const;
bool Empty() const;
bool Zero() const;
bool Valid() const;
CBorderSide& operator+=(const CBorderSide& oBorderSide);
bool operator==(const CBorderSide& oBorderSide) const;
bool operator!=(const CBorderSide& oBorderSide) const;
CBorderSide& operator =(const CBorderSide& oBorderSide);
private:
CDigit m_oWidth;
CString m_oStyle;
@ -440,48 +485,71 @@ namespace NSCSS
bool m_bBlock;
};
typedef enum
{
Collapse,
Separate
} BorderCollapse;
class CBorder
{
public:
CBorder();
void Clear();
void ClearLeftSide();
void ClearTopSide();
void ClearRightSide();
void ClearBottomSide();
static void Equation(CBorder &oFirstBorder, CBorder &oSecondBorder);
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 SetStyle(const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
bool SetColor(const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
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 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);
//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 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 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 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 SetStyleBottomSide(const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
bool SetColorBottomSide(const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
void SetNone(unsigned int unLevel, bool bHardMode = false);
void Block();
void Unblock();
bool Empty() const;
bool Zero() const;
bool EqualSides() const;
const CEnum& GetCollapse() const;
const CBorderSide& GetLeftBorder() const;
const CBorderSide& GetTopBorder() const;
const CBorderSide& GetRightBorder() const;
@ -489,11 +557,15 @@ namespace NSCSS
CBorder& operator+=(const CBorder& oBorder);
bool operator==(const CBorder& oBorder) const;
bool operator!=(const CBorder& oBorder) const;
CBorder& operator =(const CBorder& oBorder);
private:
CBorderSide m_oLeft;
CBorderSide m_oTop;
CBorderSide m_oRight;
CBorderSide m_oBottom;
CEnum m_enCollapse;
};
class CTextDecorationLine
@ -513,6 +585,7 @@ namespace NSCSS
bool LineThrough() const;
CTextDecorationLine &operator+=(const CTextDecorationLine& oTextDecoration);
bool operator==(const CTextDecorationLine& oTextDecorationLine) const;
};
struct TTextDecoration
@ -522,6 +595,7 @@ namespace NSCSS
CColor m_oColor;
TTextDecoration& operator+=(const TTextDecoration& oTextDecoration);
bool operator==(const TTextDecoration& oTextDecoration) const;
};
class CText
@ -535,11 +609,13 @@ namespace NSCSS
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);
const CDigit& GetIndent() const;
const CString& GetAlign() const;
const TTextDecoration& GetDecoration() const;
const CColor& GetColor() const;
const CColor& GetHighlight() const;
bool Empty() const;
@ -554,6 +630,7 @@ namespace NSCSS
CDigit m_oIndent;
CString m_oAlign;
CColor m_oColor;
CColor m_oHighlight;
};
class CIndent
@ -561,33 +638,44 @@ namespace NSCSS
public:
CIndent();
void Clear();
static void Equation(CIndent &oFirstMargin, CIndent &oSecondMargin);
bool Equals() const;
void SetPermisson(bool bPermission);
bool AddValue (const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
bool AddLeft (const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
bool AddTop (const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
bool AddRight (const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
bool AddBottom (const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
void UpdateAll(double dFontSize);
void UpdateLeft(double dFontSize);
void UpdateTop(double dFontSize);
void UpdateRight(double dFontSize);
void UpdateBottom(double dFontSize);
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);
void UpdateAll (double dFontSize);
void UpdateTop (double dFontSize);
void UpdateRight (double dFontSize);
void UpdateBottom(double dFontSize);
void UpdateLeft (double dFontSize);
const CDigit& GetLeft () const;
const CDigit& GetTop () const;
const CDigit& GetRight () const;
const CDigit& GetBottom() const;
const CDigit& GetLeft () const;
bool Empty() const;
bool Zero() const;
CIndent& operator+=(const CIndent& oMargin);
bool operator==(const CIndent& oMargin) const;
CIndent& operator+=(const CIndent& oIndent);
bool operator==(const CIndent& oIndent) const;
bool operator!=(const CIndent& oIndent) const;
private:
bool AddValue(CDigit& oValue, const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
bool SetValues(const std::wstring& wsTopValue, const std::wstring& wsRightValue, const std::wstring& wsBottomValue, const std::wstring& wsLeftValue, unsigned int unLevel, bool bHardMode = false);
void UpdateSide(CDigit& oSide, double dFontSize);
CDigit m_oLeft;
CDigit m_oTop;
@ -606,6 +694,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 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);
@ -623,6 +712,7 @@ namespace NSCSS
const CDigit& GetSize() const;
const CDigit& GetLineHeight() const;
CDigit& GetLineHeight();
const CString& GetFamily() const;
const CString& GetStretch() const;
const CString& GetStyle() const;
@ -642,8 +732,29 @@ namespace NSCSS
CString m_oStyle;
CString m_oVariant;
CString m_oWeight;
};
TTextDecoration m_oTextDecoration;
class CPage
{
public:
CPage();
bool SetMargin (const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
bool SetSize (const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
bool SetFooter (const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
bool SetHeader (const std::wstring& wsValue, unsigned int unLevel, bool bHardMode = false);
const CDigit& GetWidth() const;
const CDigit& GetHeight() const;
const CIndent& GetMargin() const;
const CDigit& GetFooter() const;
const CDigit& GetHeader() const;
private:
CDigit m_oWidth;
CDigit m_oHeight;
CIndent m_oMargin;
CDigit m_oFooter;
CDigit m_oHeader;
};
}
}

View File

@ -1,19 +1,20 @@
#include "CDocumentStyle.h"
#include <iostream>
#include <unordered_set>
#include <wchar.h>
#include <math.h>
#include <cmath>
#include <algorithm>
#include <list>
#define DEFAULT_LINEHEIGHT 240
#define LINEHEIGHTSCALE 10 // Значение LineHeight в OOXML должно быть в 10 раз больше чем указано в стиле
#define LINEHEIGHTCOEF 24 // Используется когда необходимо перевести в twips значение
#define POINTCOEF 20 // Используется для конвертации в OOXML значение интервала между абзацами (Измерение в двадцатых долях от точки)
#define PAGEWIDTH (12240 / POINTCOEF)
#define PAGEHEIGHT (15840 / POINTCOEF)
#define DOUBLE_TO_INTW(dValue) std::to_wstring(static_cast<int>(dValue + 0.5))
#define VALUE_TO_INT(value, unit_measure) \
(NSCSS::UnitMeasure::None != value.GetUnitMeasure()) ? \
value.ToInt(unit_measure) : \
static_cast<int>(NSCSS::CUnitMeasureConverter::ConvertPx(value.ToDouble(), unit_measure, 96) + 0.5)
namespace NSCSS
{
@ -21,24 +22,55 @@ 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)
{
std::unordered_set<std::wstring> arInitialSet(arInitial.begin(), arInitial.end());
std::vector<std::wstring> arCommonElements1;
std::vector<std::wstring> arCommonElements2;
for (const std::wstring& wsValue : arFirst)
{
if (arInitialSet.count(wsValue) > 0)
arCommonElements1.push_back(wsValue);
}
for (const std::wstring& wsValue : arSecond)
{
if (arInitialSet.count(wsValue) > 0)
arCommonElements2.push_back(wsValue);
}
if (arCommonElements1.size() != arCommonElements2.size())
return false;
std::sort(arCommonElements1.begin(), arCommonElements1.end());
std::sort(arCommonElements2.begin(), arCommonElements2.end());
return arCommonElements1 == arCommonElements2;
}
bool CStyleUsed::operator==(const CStyleUsed &oUsedStyle) const
{
return (m_bIsPStyle == oUsedStyle.m_bIsPStyle) && (m_oStyle == oUsedStyle.m_oStyle);
return m_bIsPStyle == oUsedStyle.m_bIsPStyle &&
CheckArrays(Names_Standard_Styles, m_oStyle.GetParentsNamesSet(), oUsedStyle.m_oStyle.GetParentsNamesSet()) &&
m_oStyle == oUsedStyle.m_oStyle;
}
std::wstring CStyleUsed::getId()
{
return m_sId;
if (m_bIsPStyle)
return m_oStyle.GetId();
return m_oStyle.GetId() + L"-c";
}
void CStyleUsed::setId(const std::wstring &sId)
CDocumentStyle::CDocumentStyle() : m_arStandardStyles(Names_Standard_Styles)
{
m_sId = sId;
for (const std::wstring& oNameStandardStyle : Names_Standard_Styles)
m_arStandardStyles.push_back(oNameStandardStyle + L"-c");
}
CDocumentStyle::CDocumentStyle() : m_arStandardStyles({L"a", 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", L"p-c", L"p", L"div-c", L"div", L"a-c"}) {}
CDocumentStyle::~CDocumentStyle()
{
m_arStandardStyles. clear();
@ -157,6 +189,7 @@ namespace NSCSS
if (!oParentStyle.Empty())
{
oParentStyle.AddBasicProperties(BProperties::B_BasedOn, L"normal");
oParentStyle.AddBasicProperties(BProperties::B_StyleId, L"(" + oParentStyle.GetStyleId() + L")");
if (!bIsPStyle)
{
@ -271,250 +304,308 @@ namespace NSCSS
oElement.AddBasicProperties(BProperties::B_CustomStyle, L"1");
}
void CDocumentStyle::SetPStyle (const NSCSS::CCompiledStyle& oStyle, CXmlElement& oXmlElement)
void CDocumentStyle::SetPStyle (const NSCSS::CCompiledStyle& oStyle, CXmlElement& oXmlElement, bool bIsLite)
{
ConvertStyle(oStyle, oXmlElement, true);
if (oStyle.Empty() && oXmlElement.Empty())
if (!bIsLite)
ConvertStyle(oStyle, oXmlElement, true);
if (oStyle.Empty())
return;
oXmlElement.AddPropertiesInP(PProperties::P_Jc, oStyle.m_oText.GetAlign().ToWString());
const bool bInTable{oStyle.HaveThisParent(L"table")};
std::wstring wsTextAlign{oStyle.m_oText.GetAlign().ToWString()};
if (wsTextAlign.empty() && bInTable)
wsTextAlign = oStyle.m_oDisplay.GetHAlign().ToWString();
oXmlElement.AddPropertiesInP(PProperties::P_Jc, wsTextAlign);
std::wstring sInfValue;
sInfValue.reserve(64);
//TODO:: проверить Permission в Margin
if (!oStyle.m_oMargin.Empty() || !oStyle.m_oPadding.Empty() /*&& oStyle.m_oMargin.GetPermission()*/)
{
const double dLeftSide = oStyle.m_oMargin.GetLeft() .ToDouble(NSCSS::Twips) + oStyle.m_oPadding.GetLeft() .ToDouble(NSCSS::Twips);
const double dRightSide = oStyle.m_oMargin.GetRight().ToDouble(NSCSS::Twips) + oStyle.m_oPadding.GetRight().ToDouble(NSCSS::Twips);
if (!oStyle.m_oMargin.GetLeft().Empty() && !oStyle.m_oMargin.GetLeft().Zero())
sInfValue += L"w:left=\"" + std::to_wstring(oStyle.m_oMargin.GetLeft().ToInt(NSCSS::Twips)) + L"\" ";
sInfValue += L"w:left=\"" + DOUBLE_TO_INTW(dLeftSide * POINTCOEF) + L"\" ";
sInfValue += L"w:right=\"" + DOUBLE_TO_INTW(dRightSide * POINTCOEF) + L"\" ";
}
if (!oStyle.m_oMargin.GetRight().Empty() && !oStyle.m_oMargin.GetRight().Zero())
sInfValue += L"w:right=\"" + std::to_wstring(oStyle.m_oMargin.GetRight().ToInt(NSCSS::Twips)) + L"\" ";
const double dIndent = oStyle.m_oText.GetIndent().ToDouble(NSCSS::Twips);
if (0. != dIndent)
sInfValue += L"w:firstLine=\"" + DOUBLE_TO_INTW(dIndent) + L"\" ";
const int nIndent = oStyle.m_oText.GetIndent().ToInt(NSCSS::Twips);
if (0 != nIndent)
sInfValue += L"w:firstLine=\"" + std::to_wstring(nIndent) + L"\" ";
oXmlElement.AddPropertiesInP(PProperties::P_Ind, sInfValue);
std::wstring sSpacingValue;
sSpacingValue.reserve(128);
//TODO:: проверить Permission в Margin
if (!oStyle.m_oMargin.Empty() || !oStyle.m_oPadding.Empty()/*&& oStyle.m_oMargin.GetPermission()*/)
{
const double dSpacingBottom = oStyle.m_oMargin.GetBottom().ToDouble(NSCSS::Twips) + oStyle.m_oPadding.GetBottom().ToDouble(NSCSS::Twips);
const double dSpacingTop = oStyle.m_oMargin.GetTop() .ToDouble(NSCSS::Twips) + oStyle.m_oPadding.GetTop() .ToDouble(NSCSS::Twips);;
sSpacingValue += L" w:after=\"" + DOUBLE_TO_INTW(dSpacingBottom * POINTCOEF) + L"\" ";
sSpacingValue += L" w:before=\"" + DOUBLE_TO_INTW(dSpacingTop * POINTCOEF) + L"\" ";
}
else/* if (!oStyle.m_pBorder.Empty() || !oStyle.m_oMargin.GetPermission())*/
sSpacingValue += L"w:after=\"0\" w:before=\"0\"";
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\"";
else if (oStyle.m_oMargin.GetBottom().Zero() || bInTable)
sSpacingValue += L"w:before=\"0\" w:beforeAutospacing=\"0\"";
std::wstring wsLineHeight;
if (!oStyle.m_oFont.GetLineHeight().Empty())
{
double dLineHeight = oStyle.m_oFont.GetLineHeight().ToDouble(NSCSS::Twips, LINEHEIGHTCOEF) * LINEHEIGHTSCALE;
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\"";
else if (oStyle.m_oMargin.GetBottom().Zero() || bInTable)
sSpacingValue += L" w:after=\"0\" w:afterAutospacing=\"0\"";
if (NSCSS::None == oStyle.m_oFont.GetLineHeight().GetUnitMeasure())
dLineHeight *= LINEHEIGHTCOEF;
if (0. != dLineHeight)
wsLineHeight = DOUBLE_TO_INTW(dLineHeight);
}
if (!wsLineHeight.empty())
if (!oStyle.m_oFont.GetLineHeight().Empty() && !oStyle.m_oFont.GetLineHeight().Zero())
{
sSpacingValue += L" w:line=\"" + wsLineHeight + L"\" w:lineRule=\"auto\"";
const std::wstring wsLine{std::to_wstring(oStyle.m_oFont.GetLineHeight().ToInt(NSCSS::Twips, DEFAULT_LINEHEIGHT))};
const std::wstring wsLineRule{(NSCSS::Percent == oStyle.m_oFont.GetLineHeight().GetUnitMeasure() ? L"auto" : L"atLeast")};
sSpacingValue += L" w:line=\"" + wsLine + L"\" w:lineRule=\"" + wsLineRule + L"\"";
}
// else if (!oStyle.m_oBorder.Empty())
// {
// sSpacingValue += L" w:line=\"" + std::to_wstring(static_cast<short int>(oStyle.m_oFont.GetSize().ToDouble(NSCSS::Twips) * 2 * POINTCOEF + 0.5f)) + L"\" w:lineRule=\"auto\"";
// }
else if (!oStyle.m_oBorder.Empty())
sSpacingValue += L" w:line=\"240\" w:lineRule=\"auto\" ";
else if (oStyle.m_oFont.GetLineHeight().Zero() || bInTable)
sSpacingValue += L" w:lineRule=\"auto\" w:line=\"240\"";
if (!sSpacingValue.empty())
{
oXmlElement.AddPropertiesInP(PProperties::P_Spacing, sSpacingValue);
oXmlElement.AddPropertiesInP(PProperties::P_ContextualSpacing, L"true");
}
if (!oStyle.m_oBackground.Empty())
{
const std::wstring wsColor = oStyle.m_oBackground.GetColor().ToWString();
if (wsColor != L"ffffff")
oXmlElement.AddPropertiesInP(PProperties::P_Shd, wsColor);
}
if (!oStyle.m_oBackground.Empty() && !bInTable)
oXmlElement.AddPropertiesInP(PProperties::P_Shd, oStyle.m_oBackground.IsNone() ? L"auto" : oStyle.m_oBackground.GetColor().ToWString());
if (!oStyle.m_oBorder.Empty())
if (!oStyle.m_oBorder.Empty() && !bInTable)
{
if (oStyle.m_oBorder.EqualSides())
{
const std::wstring sBorderColor = oStyle.m_oBorder.GetLeftBorder().GetColor().ToWString();
const std::wstring sBorderStyle = oStyle.m_oBorder.GetLeftBorder().GetStyle().ToWString();
const std::wstring sBorderWidth = oStyle.m_oBorder.GetLeftBorder().GetWidth().ToWString();
const std::wstring sBorder = L" w:color=\"" + sBorderColor + L"\" w:space=\"0\" w:sz=\"" +
sBorderWidth + L"\" w:val=\"" + sBorderStyle + L"\"";
oXmlElement.AddPropertiesInP(PProperties::P_TopBorder, sBorder);
oXmlElement.AddPropertiesInP(PProperties::P_LeftBorder, sBorder);
oXmlElement.AddPropertiesInP(PProperties::P_BottomBorder, sBorder);
oXmlElement.AddPropertiesInP(PProperties::P_RightBorder, sBorder);
SetBorderStyle(oStyle, oXmlElement, PProperties::P_TopBorder);
SetBorderStyle(oStyle, oXmlElement, PProperties::P_LeftBorder);
SetBorderStyle(oStyle, oXmlElement, PProperties::P_BottomBorder);
SetBorderStyle(oStyle, oXmlElement, PProperties::P_RightBorder);
}
else
{
if (!oStyle.m_oBorder.GetTopBorder().Empty())
{
const std::wstring sBorderColor = oStyle.m_oBorder.GetTopBorder().GetColor().ToWString();
const std::wstring sBorderStyle = oStyle.m_oBorder.GetTopBorder().GetStyle().ToWString();
const std::wstring sBorderWidth = oStyle.m_oBorder.GetTopBorder().GetWidth().ToWString();
const std::wstring sBorder = L" w:color=\"" + sBorderColor + L"\" w:space=\"4\" w:sz=\"" +
sBorderWidth + L"\" w:val=\"" + sBorderStyle + L"\"";
oXmlElement.AddPropertiesInP(PProperties::P_TopBorder, sBorder);
}
SetBorderStyle(oStyle, oXmlElement, PProperties::P_TopBorder);
if (!oStyle.m_oBorder.GetRightBorder().Empty())
{
const std::wstring sBorderColor = oStyle.m_oBorder.GetRightBorder().GetColor().ToWString();
const std::wstring sBorderStyle = oStyle.m_oBorder.GetRightBorder().GetStyle().ToWString();
const std::wstring sBorderWidth = oStyle.m_oBorder.GetRightBorder().GetWidth().ToWString();
const std::wstring sBorder = L" w:color=\"" + sBorderColor + L"\" w:space=\"4\" w:sz=\"" +
sBorderWidth + L"\" w:val=\"" + sBorderStyle + L"\"";
oXmlElement.AddPropertiesInP(PProperties::P_RightBorder, sBorder);
}
SetBorderStyle(oStyle, oXmlElement, PProperties::P_RightBorder);
if (!oStyle.m_oBorder.GetBottomBorder().Empty())
{
const std::wstring sBorderColor = oStyle.m_oBorder.GetBottomBorder().GetColor().ToWString();
const std::wstring sBorderStyle = oStyle.m_oBorder.GetBottomBorder().GetStyle().ToWString();
const std::wstring sBorderWidth = oStyle.m_oBorder.GetBottomBorder().GetWidth().ToWString();
const std::wstring sBorder = L" w:color=\"" + sBorderColor + L"\" w:space=\"4\" w:sz=\"" +
sBorderWidth + L"\" w:val=\"" + sBorderStyle + L"\"";
oXmlElement.AddPropertiesInP(PProperties::P_BottomBorder, sBorder);
}
SetBorderStyle(oStyle, oXmlElement, PProperties::P_BottomBorder);
if (!oStyle.m_oBorder.GetLeftBorder().Empty())
{
const std::wstring sBorderColor = oStyle.m_oBorder.GetLeftBorder().GetColor().ToWString();
const std::wstring sBorderStyle = oStyle.m_oBorder.GetLeftBorder().GetStyle().ToWString();
const std::wstring sBorderWidth = oStyle.m_oBorder.GetLeftBorder().GetWidth().ToWString();
const std::wstring sBorder = L" w:color=\"" + sBorderColor + L"\" w:space=\"4\" w:sz=\"" +
sBorderWidth + L"\" w:val=\"" + sBorderStyle + L"\"";
oXmlElement.AddPropertiesInP(PProperties::P_LeftBorder, sBorder);
}
SetBorderStyle(oStyle, oXmlElement, PProperties::P_LeftBorder);
}
}
}
void CDocumentStyle::SetRStyle(const NSCSS::CCompiledStyle& oStyle, CXmlElement& oXmlElement)
void CDocumentStyle::SetBorderStyle(const CCompiledStyle &oStyle, CXmlElement &oXmlElement, const PProperties &enBorderProperty)
{
ConvertStyle(oStyle, oXmlElement, false);
const NSCSS::NSProperties::CBorderSide* pBorder = NULL;
const NSCSS::NSProperties::CDigit* pPadding = NULL;
switch(enBorderProperty)
{
case PProperties::P_BottomBorder:
{
pBorder = &oStyle.m_oBorder.GetBottomBorder();
pPadding = &oStyle.m_oPadding.GetBottom();
break;
}
case PProperties::P_LeftBorder:
{
pBorder = &oStyle.m_oBorder.GetLeftBorder();
pPadding = &oStyle.m_oPadding.GetLeft();
break;
}
case PProperties::P_RightBorder:
{
pBorder = &oStyle.m_oBorder.GetRightBorder();
pPadding = &oStyle.m_oPadding.GetRight();
break;
}
case PProperties::P_TopBorder:
{
pBorder = &oStyle.m_oBorder.GetTopBorder();
pPadding = &oStyle.m_oPadding.GetTop();
break;
}
default:
return;
}
oXmlElement.AddPropertiesInP(enBorderProperty, CalculateBorderStyle(*pBorder, pPadding));
}
std::wstring CDocumentStyle::CalculateBorderStyle(const NSProperties::CBorderSide &oBorder, const NSProperties::CDigit *pPadding)
{
if (oBorder.Empty())
return L"";
std::wstring wsColor = oBorder.GetColor().ToWString();
std::wstring wsStyle = oBorder.GetStyle().ToWString();
int nWidth = static_cast<int>(std::round(oBorder.GetWidth().ToDouble(Point) * 8.));
if (L"double" == wsStyle)
nWidth /= 3; // в ooxml double граница формируется из трёх линий
if (nWidth <= 3)
nWidth = 2;
else if (nWidth <= 5)
nWidth = 4;
else if (nWidth <= 7)
nWidth = 6;
else if (nWidth <= 9)
nWidth = 8;
else if (nWidth <= 15)
nWidth = 12;
else if (nWidth <= 21)
nWidth = 18;
else if (nWidth <= 29)
nWidth = 24;
else if (nWidth <= 41)
nWidth = 36;
else
nWidth = 48;
if (wsColor.empty())
wsColor = L"auto";
if (wsStyle.empty())
wsStyle = L"single";
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)
{
if (!bIsLite)
ConvertStyle(oStyle, oXmlElement, false);
if (oStyle.Empty() && oXmlElement.Empty())
return;
if (!oStyle.m_oFont.GetSize().Empty())
oXmlElement.AddPropertiesInR(RProperties::R_Sz, DOUBLE_TO_INTW(oStyle.m_oFont.GetSize().ToDouble(NSCSS::Twips)));
oXmlElement.AddPropertiesInR(RProperties::R_Sz, std::to_wstring(static_cast<int>(oStyle.m_oFont.GetSize().ToDouble(NSCSS::Point) * 2. + 0.5))); // Значения шрифта увеличивает на 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");
if (!oStyle.m_oBackground.GetColor().Empty() && !oStyle.m_oBackground.GetColor().None() && !oStyle.m_oBackground.GetColor().Url())
oXmlElement.AddPropertiesInR(RProperties::R_Shd, oStyle.m_oBackground.GetColor().ToWString());
const std::wstring wsHighlight{oStyle.m_oText.GetHighlight().EquateToColor({{{0, 0, 0}, L"black"}, {{0, 0, 255}, L"blue"}, {{0, 255, 255}, L"cyan"},
{{0, 255, 0}, L"green"}, {{255, 0, 255}, L"magenta"}, {{255, 0, 0}, L"red"},
{{255, 255, 0}, L"yellow"}, {{255, 255, 255}, L"white"}, {{0, 0, 139}, L"darkBlue"},
{{0, 139, 139}, L"darkCyan"}, {{0, 100, 0}, L"darkGreen"}, {{139, 0, 139}, L"darkMagenta"},
{{139, 0, 0}, L"darkRed"}, {{128, 128, 0}, L"darkYellow"},{{169, 169, 169}, L"darkGray"},
{{211, 211, 211}, L"lightGray"}})};
if (L"none" != wsHighlight)
oXmlElement.AddPropertiesInR(RProperties::R_Highlight, wsHighlight);
oXmlElement.AddPropertiesInR(RProperties::R_Highlight, oStyle.m_oBackground.GetColor().ToWString());
oXmlElement.AddPropertiesInR(RProperties::R_Color, oStyle.m_oText.GetColor().ToWString());
oXmlElement.AddPropertiesInR(RProperties::R_U, (oStyle.m_oText.GetDecoration().m_oLine.Underline()) ? L"underline" : L"");
std::wstring wsFontFamily{oStyle.m_oFont.GetFamily().ToWString()};
if (L"sans-serif" == wsFontFamily)
wsFontFamily = L"Arial";
else if (L"serif" == wsFontFamily)
wsFontFamily = L"Times New Roman";
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());
}
void CDocumentStyle::WriteRStyle (const NSCSS::CCompiledStyle& oStyle)
bool CDocumentStyle::WriteRStyle(const NSCSS::CCompiledStyle& oStyle)
{
Clear();
if(oStyle.GetId().empty())
{
m_sId = L"normal";
return;
}
return false;
CStyleUsed structStyle(oStyle, false);
std::list<CStyleUsed>::iterator oItem = std::find(m_arStyleUsed.begin(), m_arStyleUsed.end(), structStyle);
std::vector<CStyleUsed>::iterator oItem = std::find(m_arStyleUsed.begin(), m_arStyleUsed.end(), structStyle);
if (oItem != m_arStyleUsed.end())
{
m_sId = (*oItem).getId();
return;
return true;
}
CXmlElement oXmlElement;
SetRStyle(oStyle, oXmlElement);
if (!oStyle.Empty() || !oXmlElement.Empty())
{
structStyle.setId(oXmlElement.GetStyleId());
m_arStyleUsed.push_back(structStyle);
m_sStyle += oXmlElement.GetRStyle();
}
}
void CDocumentStyle::WriteLitePStyle(const CCompiledStyle &oStyle)
{
if (oStyle.Empty())
return;
CXmlElement oXmlElement;
SetPStyle(oStyle, oXmlElement);
if (!oXmlElement.Empty())
m_sStyle += oXmlElement.GetPStyle(true);
}
void CDocumentStyle::WriteLiteRStyle(const CCompiledStyle &oStyle)
{
if (oStyle.Empty())
return;
CXmlElement oXmlElement;
SetRStyle(oStyle, oXmlElement);
if (!oXmlElement.Empty())
m_sStyle += oXmlElement.GetRStyle(true);
if (oXmlElement.Empty())
return false;
m_arStyleUsed.push_back(structStyle);
m_sStyle += oXmlElement.GetRStyle();
return true;
}
void CDocumentStyle::WritePStyle (const NSCSS::CCompiledStyle& oStyle)
bool CDocumentStyle::WriteLitePStyle(const CCompiledStyle &oStyle)
{
Clear();
if (oStyle.Empty())
return false;
CXmlElement oXmlElement;
SetPStyle(oStyle, oXmlElement, true);
if (oXmlElement.Empty())
return false;
m_sStyle += oXmlElement.GetPStyle(true);
return true;
}
bool CDocumentStyle::WriteLiteRStyle(const CCompiledStyle &oStyle)
{
Clear();
if (oStyle.Empty())
return false;
CXmlElement oXmlElement;
SetRStyle(oStyle, oXmlElement, true);
if (oXmlElement.Empty())
return false;
m_sStyle += oXmlElement.GetRStyle(true);
return true;
}
bool CDocumentStyle::WritePStyle(const NSCSS::CCompiledStyle& oStyle)
{
Clear();
if(oStyle.GetId().empty())
{
m_sId = L"normal";
return;
}
return false;
CStyleUsed structStyle(oStyle, true);
std::list<CStyleUsed>::iterator oItem = std::find(m_arStyleUsed.begin(), m_arStyleUsed.end(), structStyle);
std::vector<CStyleUsed>::iterator oItem = std::find(m_arStyleUsed.begin(), m_arStyleUsed.end(), structStyle);
if (oItem != m_arStyleUsed.end())
{
m_sId = (*oItem).getId();
return;
return true;
}
CXmlElement oXmlElement;
SetPStyle(oStyle, oXmlElement);
if (!oStyle.Empty() || !oXmlElement.Empty())
{
structStyle.setId(oXmlElement.GetStyleId());
m_arStyleUsed.push_back(structStyle);
m_sStyle += oXmlElement.GetPStyle();
}
if (oXmlElement.Empty())
return false;
m_arStyleUsed.push_back(structStyle);
m_sStyle += oXmlElement.GetPStyle();
return true;
}
}

View File

@ -12,7 +12,6 @@ namespace NSCSS
{
CCompiledStyle m_oStyle;
bool m_bIsPStyle;
std::wstring m_sId;
public:
CStyleUsed(const CCompiledStyle& oStyle, bool bIsPStyle);
@ -20,18 +19,19 @@ namespace NSCSS
bool operator==(const CStyleUsed& oUsedStyle) const;
std::wstring getId();
void setId(const std::wstring& sId);
};
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"};
class CSSCALCULATOR_EXPORT CDocumentStyle
{
typedef NSConstValues::NSProperties::BasicProperties BProperties;
typedef NSConstValues::NSProperties::ParagraphProperties PProperties;
typedef NSConstValues::NSProperties::RunnerProperties RProperties;
std::list<std::wstring> m_arStandardStylesUsed;
std::list<std::wstring> m_arStandardStyles;
std::list<CStyleUsed> m_arStyleUsed;
std::vector<std::wstring> m_arStandardStylesUsed;
std::vector<std::wstring> m_arStandardStyles;
std::vector<CStyleUsed> m_arStyleUsed;
std::wstring m_sStyle;
std::wstring m_sId;
@ -40,17 +40,18 @@ namespace NSCSS
void CreateStandardStyle (const std::wstring& sNameStyle, CXmlElement& oElement);
void ConvertStyle (const NSCSS::CCompiledStyle& oStyle, CXmlElement& oElement, bool bIsPStyle);
void SetRStyle(const NSCSS::CCompiledStyle& oStyle, CXmlElement& oXmlElement);
void SetPStyle(const NSCSS::CCompiledStyle& oStyle, CXmlElement& oXmlElement);
void SetRStyle(const NSCSS::CCompiledStyle& oStyle, CXmlElement& oXmlElement, bool bIsLite = false);
void SetPStyle(const NSCSS::CCompiledStyle& oStyle, CXmlElement& oXmlElement, bool bIsLite = false);
void SetBorderStyle(const NSCSS::CCompiledStyle& oStyle, CXmlElement& oXmlElement, const PProperties& enBorderProperty);
public:
CDocumentStyle();
~CDocumentStyle();
void WritePStyle(const NSCSS::CCompiledStyle& oStyle);
void WriteRStyle(const NSCSS::CCompiledStyle& oStyle);
void WriteLitePStyle(const NSCSS::CCompiledStyle& oStyle);
void WriteLiteRStyle(const NSCSS::CCompiledStyle& oStyle);
bool WritePStyle(const NSCSS::CCompiledStyle& oStyle);
bool WriteRStyle(const NSCSS::CCompiledStyle& oStyle);
bool WriteLitePStyle(const NSCSS::CCompiledStyle& oStyle);
bool WriteLiteRStyle(const NSCSS::CCompiledStyle& oStyle);
void SetStyle(const std::wstring& sStyle);
void SetId (const std::wstring& sId);
@ -59,6 +60,8 @@ namespace NSCSS
std::wstring GetIdAndClear();
void Clear();
static std::wstring CalculateBorderStyle(const NSCSS::NSProperties::CBorderSide& oBorder, const NSCSS::NSProperties::CDigit* pPadding = NULL);
};
}
#endif // CDOCUMENTSTYLE_H

View File

@ -27,7 +27,7 @@ CXmlElement::CXmlElement(const std::wstring& sNameDefaultElement)
bool CXmlElement::Empty() const
{
return m_mBasicValues.empty() && m_mPStyleValues.empty() && m_mRStyleValues.empty();
return m_mPStyleValues.empty() && m_mRStyleValues.empty() && GetBasedOn().empty();
}
void CXmlElement::CreateDefaultElement(const std::wstring& sNameDefaultElement)
@ -35,7 +35,19 @@ void CXmlElement::CreateDefaultElement(const std::wstring& sNameDefaultElement)
if (!Empty())
Clear();
if (sNameDefaultElement == L"li")
/* if (sNameDefaultElement == L"p")
{
AddBasicProperties(CSSProperties::BasicProperties::B_Type, L"paragraph");
AddBasicProperties(CSSProperties::BasicProperties::B_StyleId, L"p");
AddBasicProperties(CSSProperties::BasicProperties::B_Name, L"Normal (Web)");
AddBasicProperties(CSSProperties::BasicProperties::B_BasedOn, L"normal");
AddBasicProperties(CSSProperties::BasicProperties::B_UiPriority, L"99");
AddBasicProperties(CSSProperties::BasicProperties::B_UnhideWhenUsed, L"true");
AddBasicProperties(CSSProperties::BasicProperties::B_SemiHidden, L"true");
// AddPropertiesInP(CSSProperties::ParagraphProperties::P_Spacing, L"w:before=\"100\" w:beforeAutospacing=\"1\" w:after=\"100\" w:afterAutospacing=\"1\"");
}
else */if (sNameDefaultElement == L"li")
{
AddBasicProperties(CSSProperties::BasicProperties::B_Type, L"paragraph");
AddBasicProperties(CSSProperties::BasicProperties::B_StyleId, L"li");
@ -55,7 +67,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:after=\"0\" w:before=\"480\"");
// AddPropertiesInP(CSSProperties::ParagraphProperties::P_Spacing, L"w:before=\"100\" w:beforeAutospacing=\"1\" w:after=\"100\" w:afterAutospacing=\"1\"");
}
else if (sNameDefaultElement == L"h2")
{
@ -66,7 +78,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:after=\"0\" w:before=\"400\"");
// AddPropertiesInP(CSSProperties::ParagraphProperties::P_Spacing, L"w:before=\"100\" w:beforeAutospacing=\"1\" w:after=\"100\" w:afterAutospacing=\"1\"");
}
else if (sNameDefaultElement == L"h3")
{
@ -77,7 +89,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:after=\"0\" w:before=\"360\"");
// AddPropertiesInP(CSSProperties::ParagraphProperties::P_Spacing, L"w:before=\"100\" w:beforeAutospacing=\"1\" w:after=\"100\" w:afterAutospacing=\"1\"");
}
else if (sNameDefaultElement == L"h4")
{
@ -88,7 +100,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:after=\"0\" w:before=\"320\"");
// AddPropertiesInP(CSSProperties::ParagraphProperties::P_Spacing, L"w:before=\"100\" w:beforeAutospacing=\"1\" w:after=\"100\" w:afterAutospacing=\"1\"");
}
else if (sNameDefaultElement == L"h5")
{
@ -99,7 +111,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:after=\"0\" w:before=\"280\"");
// AddPropertiesInP(CSSProperties::ParagraphProperties::P_Spacing, L"w:before=\"100\" w:beforeAutospacing=\"1\" w:after=\"100\" w:afterAutospacing=\"1\"");
}
else if (sNameDefaultElement == L"h6")
@ -111,7 +123,7 @@ 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:after=\"0\" w:before=\"280\"");
// AddPropertiesInP(CSSProperties::ParagraphProperties::P_Spacing, L"w:before=\"100\" w:beforeAutospacing=\"1\" w:after=\"100\" w:afterAutospacing=\"1\"");
}
else if (sNameDefaultElement == L"h1-c")
{
@ -122,9 +134,9 @@ void CXmlElement::CreateDefaultElement(const std::wstring& sNameDefaultElement)
AddBasicProperties(CSSProperties::BasicProperties::B_UiPriority, L"9");
AddBasicProperties(CSSProperties::BasicProperties::B_Link, L"h1");
AddPropertiesInR(CSSProperties::RunnerProperties::R_RFonts, DEFAULTFONTNAME);
AddPropertiesInR(CSSProperties::RunnerProperties::R_B, L"bold");
AddPropertiesInR(CSSProperties::RunnerProperties::R_Sz, L"44");
AddPropertiesInR(CSSProperties::RunnerProperties::R_Sz, L"48");
AddPropertiesInR(CSSProperties::RunnerProperties::R_Kern, L"36");
}
else if (sNameDefaultElement == L"h2-c")
{
@ -136,9 +148,8 @@ void CXmlElement::CreateDefaultElement(const std::wstring& sNameDefaultElement)
AddBasicProperties(CSSProperties::BasicProperties::B_UnhideWhenUsed, L"true");
AddBasicProperties(CSSProperties::BasicProperties::B_Link, L"h2");
AddPropertiesInR(CSSProperties::RunnerProperties::R_RFonts, DEFAULTFONTNAME);
AddPropertiesInR(CSSProperties::RunnerProperties::R_B, L"bold");
AddPropertiesInR(CSSProperties::RunnerProperties::R_Sz, L"33");
AddPropertiesInR(CSSProperties::RunnerProperties::R_Sz, L"36");
}
else if (sNameDefaultElement == L"h3-c")
{
@ -150,9 +161,8 @@ void CXmlElement::CreateDefaultElement(const std::wstring& sNameDefaultElement)
AddBasicProperties(CSSProperties::BasicProperties::B_UnhideWhenUsed, L"true");
AddBasicProperties(CSSProperties::BasicProperties::B_Link, L"h3");
AddPropertiesInR(CSSProperties::RunnerProperties::R_RFonts, DEFAULTFONTNAME);
AddPropertiesInR(CSSProperties::RunnerProperties::R_B, L"bold");
AddPropertiesInR(CSSProperties::RunnerProperties::R_Sz, L"26");
AddPropertiesInR(CSSProperties::RunnerProperties::R_Sz, L"27");
}
else if (sNameDefaultElement == L"h4-c")
{
@ -164,9 +174,8 @@ void CXmlElement::CreateDefaultElement(const std::wstring& sNameDefaultElement)
AddBasicProperties(CSSProperties::BasicProperties::B_UnhideWhenUsed, L"true");
AddBasicProperties(CSSProperties::BasicProperties::B_Link, L"h4");
AddPropertiesInR(CSSProperties::RunnerProperties::R_RFonts, DEFAULTFONTNAME);
AddPropertiesInR(CSSProperties::RunnerProperties::R_Sz, L"24");
AddPropertiesInR(CSSProperties::RunnerProperties::R_B, L"bold");
AddPropertiesInR(CSSProperties::RunnerProperties::R_Sz, L"22");
}
else if (sNameDefaultElement == L"h5-c")
{
@ -178,9 +187,8 @@ void CXmlElement::CreateDefaultElement(const std::wstring& sNameDefaultElement)
AddBasicProperties(CSSProperties::BasicProperties::B_UnhideWhenUsed, L"true");
AddBasicProperties(CSSProperties::BasicProperties::B_Link, L"h5");
AddPropertiesInR(CSSProperties::RunnerProperties::R_RFonts, DEFAULTFONTNAME);
AddPropertiesInR(CSSProperties::RunnerProperties::R_Sz, L"20");
AddPropertiesInR(CSSProperties::RunnerProperties::R_B, L"bold");
AddPropertiesInR(CSSProperties::RunnerProperties::R_Sz, L"18");
}
else if (sNameDefaultElement == L"h6-c")
{
@ -192,38 +200,16 @@ void CXmlElement::CreateDefaultElement(const std::wstring& sNameDefaultElement)
AddBasicProperties(CSSProperties::BasicProperties::B_UnhideWhenUsed, L"true");
AddBasicProperties(CSSProperties::BasicProperties::B_Link, L"h6");
AddPropertiesInR(CSSProperties::RunnerProperties::R_RFonts, DEFAULTFONTNAME);
AddPropertiesInR(CSSProperties::RunnerProperties::R_B, L"bold");
AddPropertiesInR(CSSProperties::RunnerProperties::R_Sz, L"15");
AddPropertiesInR(CSSProperties::RunnerProperties::R_B, L"bold");
}
else if (sNameDefaultElement == L"p-c")
{
AddBasicProperties(CSSProperties::BasicProperties::B_Type, L"character");
AddBasicProperties(CSSProperties::BasicProperties::B_StyleId, L"p-c");
AddBasicProperties(CSSProperties::BasicProperties::B_CustomStyle, L"1");
AddBasicProperties(CSSProperties::BasicProperties::B_Name, L"Paragraph character");
AddBasicProperties(CSSProperties::BasicProperties::B_Link, L"p");
AddPropertiesInR(CSSProperties::RunnerProperties::R_RFonts, DEFAULTFONTNAME);
}
else if (sNameDefaultElement == L"p")
{
AddBasicProperties(CSSProperties::BasicProperties::B_Type, L"paragraph");
AddBasicProperties(CSSProperties::BasicProperties::B_StyleId, L"p");
AddBasicProperties(CSSProperties::BasicProperties::B_CustomStyle, L"1");
AddBasicProperties(CSSProperties::BasicProperties::B_Name, L"Paragraph");
AddBasicProperties(CSSProperties::BasicProperties::B_BasedOn, L"normal");
AddBasicProperties(CSSProperties::BasicProperties::B_Link, L"p-c");
}
else if (sNameDefaultElement == L"div-c")
/*else if (sNameDefaultElement == L"div-c")
{
AddBasicProperties(CSSProperties::BasicProperties::B_Type, L"character");
AddBasicProperties(CSSProperties::BasicProperties::B_StyleId, L"div-c");
AddBasicProperties(CSSProperties::BasicProperties::B_CustomStyle, L"1");
AddBasicProperties(CSSProperties::BasicProperties::B_Name, L"Div character");
AddBasicProperties(CSSProperties::BasicProperties::B_Link, L"div");
AddPropertiesInR(CSSProperties::RunnerProperties::R_RFonts, DEFAULTFONTNAME);
}
else if (sNameDefaultElement == L"div")
{
@ -233,7 +219,7 @@ void CXmlElement::CreateDefaultElement(const std::wstring& sNameDefaultElement)
AddBasicProperties(CSSProperties::BasicProperties::B_Name, L"Div paragraph");
AddBasicProperties(CSSProperties::BasicProperties::B_BasedOn, L"normal");
AddBasicProperties(CSSProperties::BasicProperties::B_Link, L"div-c");
}
}*/
else if (sNameDefaultElement == L"a-c")
{
AddBasicProperties(CSSProperties::BasicProperties::B_Type, L"character");
@ -242,9 +228,9 @@ void CXmlElement::CreateDefaultElement(const std::wstring& sNameDefaultElement)
AddBasicProperties(CSSProperties::BasicProperties::B_UiPriority, L"99");
AddBasicProperties(CSSProperties::BasicProperties::B_UnhideWhenUsed, L"true");
AddPropertiesInR(CSSProperties::RunnerProperties::R_Sz, L"24");
AddPropertiesInR(CSSProperties::RunnerProperties::R_Color, L"0000FF");
AddPropertiesInR(CSSProperties::RunnerProperties::R_U, L"single");
AddPropertiesInR(CSSProperties::RunnerProperties::R_RFonts, DEFAULTFONTNAME);
}
else if (sNameDefaultElement == L"a")
{
@ -312,7 +298,7 @@ CXmlElement& CXmlElement::operator=(const CXmlElement& oElement)
return *this;
}
bool CXmlElement::operator==(const CXmlElement &oElement)
bool CXmlElement::operator==(const CXmlElement &oElement) const
{
return m_mBasicValues == oElement.m_mBasicValues &&
m_mPStyleValues == oElement.m_mPStyleValues &&
@ -364,22 +350,22 @@ std::wstring CXmlElement::ConvertPStyle(bool bIsLite) const
case CSSProperties::ParagraphProperties::P_TopBorder:
{
sPBdr += L"<w:top" + oItem.second + L"/>";
sPBdr += L"<w:top " + oItem.second + L"/>";
break;
}
case CSSProperties::ParagraphProperties::P_LeftBorder:
{
sPBdr += L"<w:left" + oItem.second + L"/>";
sPBdr += L"<w:left " + oItem.second + L"/>";
break;
}
case CSSProperties::ParagraphProperties::P_BottomBorder:
{
sPBdr += L"<w:bottom" + oItem.second + L"/>";
sPBdr += L"<w:bottom " + oItem.second + L"/>";
break;
}
case CSSProperties::ParagraphProperties::P_RightBorder:
{
sPBdr += L"<w:right" + oItem.second + L"/>";
sPBdr += L"<w:right " + oItem.second + L"/>";
break;
}
case CSSProperties::ParagraphProperties::P_KeepLines:
@ -429,8 +415,8 @@ std::wstring CXmlElement::ConvertRStyle(bool bIsLite) const
}
case CSSProperties::RunnerProperties::R_Sz:
{
sRStyle += L"<w:sz w:val=\"" + oItem.second +
L"\"/>" + L"<w:szCs w:val=\"" + oItem.second + L"\"/>";
sRStyle += L"<w:sz w:val=\"" + oItem.second + L"\"/>" +
L"<w:szCs w:val=\"" + oItem.second + L"\"/>";
break;
}
case CSSProperties::RunnerProperties::R_B:
@ -462,11 +448,18 @@ std::wstring CXmlElement::ConvertRStyle(bool bIsLite) const
sRStyle += L"<w:u w:val=\"" + oItem.second + L"\"/>";
break;
}
// case CSSProperties::RunnerProperties::R_Highlight:
// {
// sRStyle += L"<w:highlight w:val=\"" + oItem.second + L"\"/>";
// break;
// }
case CSSProperties::RunnerProperties::R_Highlight:
{
if (!oItem.second.empty())
sRStyle += L"<w:highlight w:val=\"" + oItem.second + L"\"/>";
break;
}
case CSSProperties::RunnerProperties::R_Shd:
{
if (!oItem.second.empty())
sRStyle += L"<w:shd w:val=\"clear\" w:color=\"auto\" w:fill=\"" + oItem.second + L"\"/>";
break;
}
case CSSProperties::RunnerProperties::R_SmallCaps:
{
if (oItem.second == L"smallCaps")
@ -475,6 +468,11 @@ std::wstring CXmlElement::ConvertRStyle(bool bIsLite) const
sRStyle += L"<w:smallCaps w:val=\"false\"/>";
break;
}
case CSSProperties::RunnerProperties::R_Kern:
{
sRStyle += L"<w:kern w:val=\"" + oItem.second + L"\"/>";
break;
}
default:
break;
}
@ -519,7 +517,8 @@ std::wstring CXmlElement::ConvertBasicInfoStyle() const
}
case CSSProperties::BasicProperties::B_UnhideWhenUsed:
{
sBasicInfo += L"<w:unhideWhenUsed/>";
if (L"true" == oItem.second)
sBasicInfo += L"<w:unhideWhenUsed/>";
break;
}
case CSSProperties::BasicProperties::B_UiPriority:
@ -527,6 +526,12 @@ std::wstring CXmlElement::ConvertBasicInfoStyle() const
sBasicInfo += L"<w:uiPriority w:val=\"" + oItem.second + L"\"/>";
break;
}
case CSSProperties::BasicProperties::B_SemiHidden:
{
if (L"true" == oItem.second)
sBasicInfo += L"<w:semiHidden/>";
break;
}
default:
break;
}
@ -598,7 +603,7 @@ std::wstring CXmlElement::GetPStyle(bool bIsLite) const
{
if (bIsLite)
return ConvertPStyle(true);
return GetStyle(true, true, false);
}
@ -606,7 +611,7 @@ std::wstring CXmlElement::GetRStyle(bool bIsLite) const
{
if (bIsLite)
return ConvertRStyle(true);
return GetStyle(true, false, true);
}

View File

@ -47,7 +47,7 @@ public:
CXmlElement& operator+=(const CXmlElement& oElement);
CXmlElement& operator= (const CXmlElement& oelement);
bool operator== (const CXmlElement& oElement);
bool operator== (const CXmlElement& oElement) const;
};
#endif // CXMLELEMENT_H

View File

@ -5,7 +5,6 @@ sys.path.append('../../../../build_tools/scripts')
import config
import base
import os
import build
base_directory = os.getcwd()

View File

@ -11,7 +11,9 @@
#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|";
@ -20,8 +22,27 @@ static std::string special_handling = "|html|body|";
static std::string no_entity_sub = ""; //"|style|";
static std::string treat_like_inline = "|p|";
static void prettyprint(GumboNode*, NSStringUtils::CStringBuilderA& oBuilder);
static std::string mhtTohtml(std::string& sFileContent);
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)
@ -34,70 +55,40 @@ static void replace_all(std::string& s, const std::string& s1, const std::string
}
}
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)
{
size_t posEncoding = sFileContent.find("charset=");
if (posEncoding == std::string::npos)
posEncoding = sFileContent.find("encoding=");
if (posEncoding != std::string::npos)
{
posEncoding = sFileContent.find("=", posEncoding) + 1;
char quoteSymbol = '\"';
if(sFileContent[posEncoding] == '\"' || sFileContent[posEncoding] == '\'')
{
quoteSymbol = sFileContent[posEncoding];
posEncoding += 1;
}
{ // Определение кодировки
std::string sEncoding = NSStringFinder::FindPropety(sFileContent, "charset", {"="}, {";", "\\n", "\\r", " ", "\""}).m_sValue;
size_t posEnd = sFileContent.find(quoteSymbol, posEncoding);
if (std::string::npos != posEnd)
{
std::string sEncoding = sFileContent.substr(posEncoding, posEnd - posEncoding);
if (sEncoding != "utf-8" && sEncoding != "UTF-8")
{
NSUnicodeConverter::CUnicodeConverter oConverter;
sFileContent = U_TO_UTF8(oConverter.toUnicode(sFileContent, sEncoding.c_str()));
}
}
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()));
}
}
// Избавление от <a/>
size_t posA = sFileContent.find("<a ");
while(posA != std::string::npos)
{
size_t nBegin = sFileContent.find('<', posA + 1);
size_t nEnd = sFileContent.find("/>", posA);
if(nEnd < nBegin)
sFileContent.replace(nEnd, 2, "></a>");
posA = sFileContent.find("<a ", nBegin);
}
// Избавление от <title/>
posA = sFileContent.find("<title/>");
while (posA != std::string::npos)
{
sFileContent.replace(posA, 8, "<title></title>");
posA = sFileContent.find("<title/>", posA);
}
// Избавление от <script/>
posA = sFileContent.find("<script");
while (posA != std::string::npos)
{
size_t nEnd = 0;
size_t nEnd1 = sFileContent.find("/>", posA);
size_t nEnd2 = sFileContent.find("</script>", posA);
if (nEnd1 != std::string::npos)
nEnd = nEnd1 + 2;
if (nEnd2 != std::string::npos && (nEnd == 0 || (nEnd > 0 && nEnd2 < nEnd)))
nEnd = nEnd2 + 9;
// Избавляемся от лишних символов до <...
boost::regex oRegex("<[a-zA-Z]");
boost::match_results<typename std::string::const_iterator> oResult;
sFileContent.erase(posA, nEnd - posA);
if (boost::regex_search(sFileContent, oResult, oRegex))
sFileContent.erase(0, oResult.position());
posA = sFileContent.find("<script", posA);
}
//Избавление от <a ... />
while (NSStringFinder::RemoveEmptyTag(sFileContent, "a"));
//Избавление от <title ... />
while (NSStringFinder::RemoveEmptyTag(sFileContent, "title"));
//Избавление от <script ... />
while (NSStringFinder::RemoveEmptyTag(sFileContent, "script"));
// Gumbo
GumboOptions options = kGumboDefaultOptions;
@ -120,7 +111,7 @@ static std::string Base64ToString(const std::string& sContent, const std::string
if (TRUE == NSBase64::Base64Decode(sContent.c_str(), nSrcLen, pData, &nDecodeLen))
{
std::wstring sConvert;
if(!sCharset.empty() && sCharset != "utf-8" && sCharset != "UTF-8")
if(!sCharset.empty() && NSStringFinder::Equals<std::string>("utf-8", sCharset))
{
NSUnicodeConverter::CUnicodeConverter oConverter;
sConvert = oConverter.toUnicode(reinterpret_cast<char *>(pData), (unsigned)nDecodeLen, sCharset.data());
@ -208,174 +199,125 @@ static std::string QuotedPrintableDecode(const std::string& sContent, std::strin
return sRes.GetData();
}
static void ReadMht(std::string& sFileContent, size_t& nFound, size_t& nNextFound, const std::string& sBoundary,
std::map<std::string, std::string>& sRes, NSStringUtils::CStringBuilderA& oRes)
static void ReadMht(const std::string& sMhtContent, std::map<std::string, std::string>& sRes, NSStringUtils::CStringBuilderA& oRes)
{
// Content
size_t nContentTag = sFileContent.find("\n\n", nFound);
if(nContentTag == std::string::npos || nContentTag > nNextFound)
{
nContentTag = sFileContent.find("\r\r", nFound);
if(nContentTag == std::string::npos || nContentTag > nNextFound)
{
nContentTag = sFileContent.find("\r\n\r\n", nFound);
if(nContentTag == std::string::npos || nContentTag > nNextFound)
{
nFound = nNextFound;
return;
}
else
nContentTag += 4;
}
else
nContentTag += 2;
}
else
nContentTag += 2;
size_t unContentPosition = 0, unCharsetBegin = 0, unCharsetEnd = std::string::npos;
NSStringFinder::TFoundedData<char> oData;
// Content-Type
size_t nTag = sFileContent.find("Content-Type: ", nFound);
if(nTag == std::string::npos || nTag > nContentTag)
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"))
{
nFound = nNextFound;
oRes.WriteString(mhtTohtml(sMhtContent.substr(oData.m_unEndPosition, sMhtContent.length() - oData.m_unEndPosition)));
return;
}
size_t nTagEnd = sFileContent.find_first_of(";\n\r", nTag);
nTag += 14;
if(nTagEnd == std::string::npos || nTagEnd > nContentTag)
{
nFound = nNextFound;
return;
}
std::string sContentType = sFileContent.substr(nTag, nTagEnd - nTag);
if(sContentType == "multipart/alternative")
nContentTag = nFound;
unContentPosition = std::max(unContentPosition, oData.m_unEndPosition);
unCharsetBegin = oData.m_unEndPosition;
// name
std::string sName;
nTag = sFileContent.find(" name=", nFound);
if(nTag != std::string::npos && nTag < nContentTag)
// 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())
{
nTagEnd = sFileContent.find_first_of(";\n\r", nTag);
nTag += 6;
if(nTagEnd != std::string::npos && nTagEnd < nContentTag)
sName = sFileContent.substr(nTag, nTagEnd - nTag);
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;
nTag = sFileContent.find("charset=", nFound);
if(nTag != std::string::npos && nTag < nContentTag)
{
nTagEnd = sFileContent.find_first_of(";\n\r", nTag);
nTag += 8;
if(nTagEnd != std::string::npos && nTagEnd < nContentTag)
{
if(sFileContent[nTag] == '\"')
{
nTag++;
nTagEnd--;
}
sCharset = sFileContent.substr(nTag, nTagEnd - nTag);
}
}
std::string sCharset = "utf-8";
// Content-Location
std::string sContentLocation;
nTag = sFileContent.find("Content-Location: ", nFound);
if(nTag != std::string::npos && nTag < nContentTag)
if (std::string::npos != unCharsetEnd && unCharsetBegin < unCharsetEnd)
{
nTagEnd = sFileContent.find_first_of(";\n\r", nTag);
nTag += 18;
if(nTagEnd != std::string::npos && nTagEnd < nContentTag)
sContentLocation = sFileContent.substr(nTag, nTagEnd - nTag);
}
if (sContentLocation.empty())
{
// Content-ID
std::string sContentID;
nTag = sFileContent.find("Content-ID: <", nFound);
if(nTag != std::string::npos && nTag < nContentTag)
{
nTagEnd = sFileContent.find_first_of(">", nTag);
nTag += 13;
if(nTagEnd != std::string::npos && nTagEnd < nContentTag)
sContentID = sFileContent.substr(nTag, nTagEnd - nTag);
}
if (!sContentID.empty())
sContentLocation = "cid:" + sContentID;
}
// Content-Transfer-Encoding
std::string sContentEncoding;
nTag = sFileContent.find("Content-Transfer-Encoding: ", nFound);
if(nTag != std::string::npos && nTag < nContentTag)
{
nTagEnd = sFileContent.find_first_of(";\n\r", nTag);
nTag += 27;
if(nTagEnd != std::string::npos && nTagEnd < nContentTag)
sContentEncoding = sFileContent.substr(nTag, nTagEnd - nTag);
sCharset = NSStringFinder::FindPropety(sMhtContent.substr(unCharsetBegin, unCharsetEnd - unCharsetBegin), "charset", {"="}, {";", "\\n", "\\r"}).m_sValue;
NSStringFinder::CutInside<std::string>(sCharset, "\"");
}
// Content
nTagEnd = nNextFound - 2;
if(nTagEnd == std::string::npos || nTagEnd < nContentTag)
{
nFound = nNextFound;
return;
}
std::string sContent = sFileContent.substr(nContentTag, nTagEnd - nContentTag);
std::string sContent = sMhtContent.substr(unContentPosition, sMhtContent.length() - unContentPosition);
// Удаляем лишнее
sFileContent.erase(0, nNextFound);
nFound = sFileContent.find(sBoundary);
std::wstring sExtention = NSFile::GetFileExtention(UTF8_TO_U(sName));
std::transform(sExtention.begin(), sExtention.end(), sExtention.begin(), tolower);
// std::wstring sExtention = NSFile::GetFileExtention(UTF8_TO_U(sName));
// std::transform(sExtention.begin(), sExtention.end(), sExtention.begin(), tolower);
// Основной документ
if(sContentType == "multipart/alternative")
if (NSStringFinder::Equals(sContentType, "multipart/alternative"))
oRes.WriteString(mhtTohtml(sContent));
else if((sContentType.find("text") != std::string::npos && (sExtention.empty() || sExtention == L"htm" || sExtention == L"html" || sExtention
== L"xhtml" || sExtention == L"css")) || (sContentType == "application/octet-stream" && (sContentLocation.find("css") !=
std::string::npos)))
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>
if(sContentType == "text/css" || sExtention == L"css" || sContentLocation.find("css") != std::string::npos)
const bool bAddTagStyle = NSStringFinder::Equals(sContentType, "text/css") /*|| NSStringFinder::Equals(sExtention, L"css")*/ || NSStringFinder::Find(sContentLocation, "css");
if (bAddTagStyle)
oRes.WriteString("<style>");
if(sContentEncoding == "Base64" || sContentEncoding == "base64")
oRes.WriteString(Base64ToString(sContent, sCharset));
else if(sContentEncoding == "8bit" || sContentEncoding == "7bit" || sContentEncoding.empty())
if (NSStringFinder::Equals(sContentEncoding, "base64"))
sContent = Base64ToString(sContent, sCharset);
else if (NSStringFinder::EqualOf(sContentEncoding, {"8bit", "7bit"}) || sContentEncoding.empty())
{
if (sCharset != "utf-8" && sCharset != "UTF-8" && !sCharset.empty())
if (!NSStringFinder::Equals(sCharset, "utf-8") && !sCharset.empty())
{
NSUnicodeConverter::CUnicodeConverter oConverter;
sContent = U_TO_UTF8(oConverter.toUnicode(sContent, sCharset.data()));
}
oRes.WriteString(sContent);
}
else if(sContentEncoding == "quoted-printable" || sContentEncoding == "Quoted-Printable")
else if (NSStringFinder::Equals(sContentEncoding, "quoted-printable"))
{
sContent = QuotedPrintableDecode(sContent, sCharset);
if (sCharset != "utf-8" && sCharset != "UTF-8" && !sCharset.empty())
if (!NSStringFinder::Equals(sCharset, "utf-8") && !sCharset.empty())
{
NSUnicodeConverter::CUnicodeConverter oConverter;
sContent = U_TO_UTF8(oConverter.toUnicode(sContent, sCharset.data()));
}
oRes.WriteString(sContent);
}
if(sContentType == "text/css" || sExtention == L"css" || sContentLocation.find("css") != std::string::npos)
if (NSStringFinder::Equals(sContentType, "text/html"))
sContent = U_TO_UTF8(htmlToXhtml(sContent, false));
oRes.WriteString(sContent);
if(bAddTagStyle)
oRes.WriteString("</style>");
}
// Картинки
else if((sContentType.find("image") != std::string::npos || sExtention == L"gif" || sContentType == "application/octet-stream") &&
(sContentEncoding == "Base64" || sContentEncoding == "base64"))
else if ((NSStringFinder::Find(sContentType, "image") /*|| NSStringFinder::Equals(sExtention, L"gif")*/ || NSStringFinder::Equals(sContentType, "application/octet-stream")) &&
NSStringFinder::Equals(sContentEncoding, "base64"))
{
if(sExtention == L"ico" || sContentType.find("ico") != std::string::npos)
sContentType = "image/jpg";
else if(sExtention == L"gif")
sContentType = "image/gif";
// 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];
@ -385,50 +327,46 @@ static void ReadMht(std::string& sFileContent, size_t& nFound, size_t& nNextFoun
}
}
static std::string mhtTohtml(std::string& sFileContent)
static std::string mhtTohtml(const std::string& sFileContent)
{
std::map<std::string, std::string> sRes;
NSStringUtils::CStringBuilderA oRes;
// Поиск boundary
size_t nFound = sFileContent.find("boundary=");
if(nFound == std::string::npos)
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, nFound, nFoundEnd, "no", sRes, oRes);
ReadMht(sFileContent.substr(nFound, nFoundEnd), sRes, oRes);
return oRes.GetData();
}
size_t nFoundEnd = sFileContent.find_first_of(";\n\r", nFound);
if(nFoundEnd == std::string::npos)
return "";
nFound += 9;
if(sFileContent[nFound] == '\"')
{
nFound++;
nFoundEnd--;
}
if(nFound > nFoundEnd)
return "";
std::string sBoundary = sFileContent.substr(nFound, nFoundEnd - nFound);
NSStringFinder::CutInside<std::string>(sBoundary, "\"");
size_t nFoundEnd{nFound};
sBoundary = "--" + sBoundary;
size_t nBoundaryLength = sBoundary.length();
// Удаляем лишнее
nFound = sFileContent.find(sBoundary, nFoundEnd);
sFileContent.erase(0, nFound);
nFound = sFileContent.find(sBoundary, nFound) + nBoundaryLength;
// Цикл по boundary
nFound = 0;
while(nFound != std::string::npos)
{
// Выход по --boundary--
if(sFileContent[nFound + nBoundaryLength + 1] == '-')
break;
nFoundEnd = sFileContent.find(sBoundary, nFound + nBoundaryLength);
if(nFoundEnd == std::string::npos)
break;
ReadMht(sFileContent, nFound, nFoundEnd, sBoundary, sRes, oRes);
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)
{
@ -440,10 +378,18 @@ static std::string mhtTohtml(std::string& sFileContent)
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 != '>')
@ -456,6 +402,7 @@ static std::string mhtTohtml(std::string& sFileContent)
found = sFile.find(sName, tq);
}
}
return sFile;
}
@ -587,7 +534,7 @@ static void build_attributes(const GumboVector* attribs, bool no_entities, NSStr
}
}
static void prettyprint_contents(GumboNode* node, NSStringUtils::CStringBuilderA& contents)
static void prettyprint_contents(GumboNode* node, NSStringUtils::CStringBuilderA& contents, bool bCheckValidNode)
{
std::string key = "|" + get_tag_name(node) + "|";
bool no_entity_substitution = no_entity_sub.find(key) != std::string::npos;
@ -618,7 +565,7 @@ static void prettyprint_contents(GumboNode* node, NSStringUtils::CStringBuilderA
contents.WriteString(val);
}
else if ((child->type == GUMBO_NODE_ELEMENT) || (child->type == GUMBO_NODE_TEMPLATE))
prettyprint(child, contents);
prettyprint(child, contents, bCheckValidNode);
else if (child->type == GUMBO_NODE_WHITESPACE)
{
if (keep_whitespace || is_inline || is_like_inline)
@ -633,23 +580,33 @@ static void prettyprint_contents(GumboNode* node, NSStringUtils::CStringBuilderA
}
}
static void prettyprint(GumboNode* node, NSStringUtils::CStringBuilderA& oBuilder)
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);
prettyprint_contents(node, oBuilder, bCheckValidNode);
return;
}
std::string tagname = get_tag_name(node);
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 tagname = get_tag_name(node);
std::string key = "|" + tagname + "|";
bool is_empty_tag = empty_tags.find(key) != std::string::npos;
bool no_entity_substitution = no_entity_sub.find(key) != std::string::npos;
// determine closing tag type
if (is_empty_tag)
close = "/";
@ -665,7 +622,7 @@ static void prettyprint(GumboNode* node, NSStringUtils::CStringBuilderA& oBuilde
oBuilder.WriteString(close + ">");
// prettyprint your contents
prettyprint_contents(node, oBuilder);
prettyprint_contents(node, oBuilder, bCheckValidNode);
oBuilder.WriteString(closeTag);
}

View File

@ -2,3 +2,4 @@ emsdk/
hunspell/
deploy/
o
hunspell.data

View File

@ -14,6 +14,12 @@ def get_hunspell(stable_commit):
base.replaceInFile("./src/hunspell/csutil.cxx", "void free_utf_tbl() {", "void free_utf_tbl() { \n return;\n")
# bug fix, we need to keep this utf table
# free_utf_tbl doesnt delete anything so we can destroy hunspell object
# replace & add defines to easy control of time limits (CUSTOM_LIMIT)
default_tl_defines = "#define TIMELIMIT_GLOBAL (CLOCKS_PER_SEC / 4)\n#define TIMELIMIT_SUGGESTION (CLOCKS_PER_SEC / 10)\n#define TIMELIMIT (CLOCKS_PER_SEC / 20)\n"
custom_tl_defines_tl = "#define TIMELIMIT_GLOBAL CUSTOM_TIMELIMIT_GLOBAL\n#define TIMELIMIT_SUGGESTION CUSTOM_TIMELIMIT_SUGGESTION\n#define TIMELIMIT CUSTOM_TIMELIMIT\n"
tl_defines = "#ifndef CUSTOM_TIMELIMITS\n" + default_tl_defines + "#else\n" + custom_tl_defines_tl + "#endif\n"
base.replaceInFile("./src/hunspell/atypes.hxx", default_tl_defines, tl_defines)
os.chdir("../")

View File

@ -0,0 +1,163 @@
/*
* (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 "../../../../Common/3dParty/hunspell/hunspell/src/hunspell/hunspell.h"
#include "../../../../DesktopEditor/common/StringExt.h"
#include "../../../../DesktopEditor/common/Directory.h"
#include <iostream>
bool CheckCaret(std::vector<std::wstring>& words)
{
bool bIsCaret = false;
for (int i = 0, len = (int)words.size(); i < len; ++i)
{
if (words[i].find('\r') == (words[i].length() - 1))
{
words[i] = words[i].substr(0, words[i].length() - 1);
bIsCaret = true;
}
}
return bIsCaret;
}
std::wstring CheckWord(Hunhandle* pDic, const std::wstring& sWord, const bool& bIsCaret)
{
std::wstring sResult = sWord;
std::string sWordA = U_TO_UTF8(sWord);
int nSpellResult = Hunspell_spell(pDic, sWordA.c_str());
if (0 == nSpellResult)
{
char** pSuggest;
int nSuggestCount = Hunspell_suggest(pDic, &pSuggest, sWordA.c_str());
sResult += L" [";
for (int i = 0; i < nSuggestCount; ++i)
{
std::string sSuggestA(pSuggest[i], strlen(pSuggest[i]));
std::wstring sSuggest = UTF8_TO_U(sSuggestA);
sResult += sSuggest;
if (i != (nSuggestCount - 1))
sResult += (L", ");
}
if (0 < nSuggestCount)
Hunspell_free_list(pDic, &pSuggest, nSuggestCount);
sResult += L"]";
}
if (bIsCaret)
sResult += L"\r";
sResult += L"\n";
return sResult;
}
#if defined(_WIN32) || defined(_WIN64)
#define USE_WCHAR_ARGC
#endif
#ifdef USE_WCHAR_ARGC
std::wstring GetParam(wchar_t* arg)
{
return std::wstring(arg);
}
#else
std::wstring GetParam(char* arg)
{
return NSFile::CUtf8Converter::GetUnicodeStringFromUTF8((BYTE *)arg, (LONG)strlen(arg));
}
#endif
#ifdef USE_WCHAR_ARGC
int wmain(int argc, wchar_t *argv[])
#else
int main(int argc, char *argv[])
#endif
{
std::wstring sSrcDir = NSFile::GetProcessDirectory() + L"/../src";
std::wstring sDstDir = NSFile::GetProcessDirectory() + L"/../dst";
std::wstring sDictionariesDir = NSFile::GetProcessDirectory() + L"/../../../../../../dictionaries";
if (argc > 1) sSrcDir = GetParam(argv[1]);
if (argc > 2) sDstDir = GetParam(argv[2]);
if (argc > 3) sDictionariesDir = GetParam(argv[3]);
std::vector<std::wstring> arSrcFiles = NSDirectory::GetFiles(sSrcDir);
for (int i = 0, len = (int)arSrcFiles.size(); i < len; ++i)
{
std::wstring sFileWords = arSrcFiles[i];
std::wstring sName = NSFile::GetFileName(sFileWords);
std::wstring::size_type sNamePos = sName.find(L".");
if (std::wstring::npos != sNamePos)
sName = sName.substr(0, sNamePos);
std::wstring sFileWordsContent = L"";
NSFile::CFileBinary::ReadAllTextUtf8(sFileWords, sFileWordsContent);
std::vector<std::wstring> arWords = NSStringExt::Split(sFileWordsContent, '\n');
bool bIsCaret = CheckCaret(arWords);
std::wstring sAff = sDictionariesDir + L"/" + sName + L"/" + sName + L".aff";
std::wstring sDic = sDictionariesDir + L"/" + sName + L"/" + sName + L".dic";
// skip check diffs if dictionary is not exists
if (!NSFile::CFileBinary::Exists(sAff) || !NSFile::CFileBinary::Exists(sDic))
continue;
std::string sAffA = U_TO_UTF8(sAff);
std::string sDicA = U_TO_UTF8(sDic);
Hunhandle* pDictionary = Hunspell_create(sAffA.c_str(), sDicA.c_str());
std::wstring sFileDst = sDstDir + L"/" + sName + L".txt";
std::wstring sResult = L"";
for (const std::wstring& word : arWords)
{
sResult += CheckWord(pDictionary, word, bIsCaret);
}
Hunspell_destroy(pDictionary);
NSFile::CFileBinary::SaveToFile(sFileDst, sResult, true);
std::cout << "[" << (i + 1) << " of " << (int)arSrcFiles.size() << "] " << U_TO_UTF8(sName) << std::endl;
}
return 0;
}

View File

@ -0,0 +1,48 @@
#-------------------------------------------------
#
# Project created by QtCreator 2015-07-21T18:28:42
#
#-------------------------------------------------
QT -= core gui
TARGET = dictionariestester
CONFIG += console
CONFIG -= app_bundle
DEFINES += KERNEL_USE_DYNAMIC_LIBRARY
TEMPLATE = app
CONFIG += hunspell_build_static
CORE_ROOT_DIR = $$PWD/../../../..
PWD_ROOT_DIR = $$PWD
include($$CORE_ROOT_DIR/Common/base.pri)
include($$CORE_ROOT_DIR/Common/3dParty/icu/icu.pri)
include($$CORE_ROOT_DIR/Common/3dParty/hunspell/qt/hunspell.pri)
# custom time limits of hunspell in clocks (if before.py was executed)
# when increasing the limit for each case, it is important to consider that the total time will
# also increase, so it is good to increase the global limit. this works the same for the candidate limit with suggest limit
DEFINES += CUSTOM_TIMELIMITS
escape_bracket=
!core_windows:escape_bracket=\\
# total time limit per word for all cases. (default is CLOCKS_PER_SEC/4)
DEFINES += "CUSTOM_TIMELIMIT_GLOBAL=$${escape_bracket}(20*CLOCKS_PER_SEC$${escape_bracket})"
# total time limit per "1 case" - forgotten char, double char, moved char and so on for all candidates. (default is CLOCKS_PER_SEC/10)
DEFINES += "CUSTOM_TIMELIMIT_SUGGESTION=$${escape_bracket}(5*CLOCKS_PER_SEC$${escape_bracket})"
# time limit per candidate (default is CLOCKS_PER_SEC/20)
DEFINES += "CUSTOM_TIMELIMIT=$${escape_bracket}(CLOCKS_PER_SEC$${escape_bracket}\)"
ADD_DEPENDENCY(UnicodeConverter kernel)
core_windows:LIBS += -lgdi32 -ladvapi32 -luser32 -lshell32
SOURCES += main.cpp
DESTDIR = $$CORE_BUILDS_BINARY_PATH

View File

@ -43,8 +43,7 @@ core_ios {
core_android {
INCLUDEPATH += $$PWD/android/build/include
ICU_LIBS_PATH = $$replace(CORE_BUILDS_PLATFORM_PREFIX, "android_", "")
LIBS += $$PWD/android/build/$$ICU_LIBS_PATH/libicuuc.a
LIBS += $$PWD/android/build/$$ICU_LIBS_PATH/libicudata.a
LIBS += $$PWD/android/build/$$CORE_BUILDS_PLATFORM_PREFIX_DST/libicuuc.a
LIBS += $$PWD/android/build/$$CORE_BUILDS_PLATFORM_PREFIX_DST/libicudata.a
}

View File

@ -20,9 +20,9 @@ CONFIG_PREFIX=" --enable-extras=yes \
--enable-dyload=no \
--with-data-packaging=static"
CFLAGS="-O3 -D__STDC_INT64__ -fno-exceptions -fno-short-wchar -fno-short-enums -fembed-bitcode"
CFLAGS="-O3 -D__STDC_INT64__ -fno-exceptions -fno-short-wchar -fno-short-enums"
CXXFLAGS="${CFLAGS} -std=c++11 -fembed-bitcode"
CXXFLAGS="${CFLAGS} -std=c++11"
#will set value to 1
defines_config_set_1=(
@ -215,9 +215,9 @@ function build() {
export CXX="$(xcrun -find clang++)"
export CC="$(xcrun -find clang)"
export CFLAGS="-fembed-bitcode -isysroot $SDKROOT -I$SDKROOT/usr/include/ -I./include/ -arch $ARCH $IOS_MIN_VER $ICU_FLAGS $CFLAGS ${ADDITION_FLAG}"
export CXXFLAGS="${CXXFLAGS} -fembed-bitcode -stdlib=libc++ -isysroot $SDKROOT -I$SDKROOT/usr/include/ -I./include/ -arch $ARCH $IOS_MIN_VER $ICU_FLAGS ${ADDITION_FLAG}"
export LDFLAGS="-fembed-bitcode -stdlib=libc++ -L$SDKROOT/usr/lib/ -isysroot $SDKROOT -Wl,-dead_strip $IOS_MIN_VER -lstdc++ ${ADDITION_FLAG}"
export CFLAGS="-isysroot $SDKROOT -I$SDKROOT/usr/include/ -I./include/ -arch $ARCH $IOS_MIN_VER $ICU_FLAGS $CFLAGS ${ADDITION_FLAG}"
export CXXFLAGS="${CXXFLAGS} -stdlib=libc++ -isysroot $SDKROOT -I$SDKROOT/usr/include/ -I./include/ -arch $ARCH $IOS_MIN_VER $ICU_FLAGS ${ADDITION_FLAG}"
export LDFLAGS="-stdlib=libc++ -L$SDKROOT/usr/lib/ -isysroot $SDKROOT -Wl,-dead_strip $IOS_MIN_VER -lstdc++ ${ADDITION_FLAG}"
mkdir -p ${BUILD_DIR}
cd ${BUILD_DIR}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

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