Compare commits

...

216 Commits

Author SHA1 Message Date
84871ecb52 Merge pull request #487 from ONLYOFFICE/feature/mac_arm64
.
2021-02-05 16:07:07 +03:00
c4491e12c7 x2t - fix linux/android build 2021-02-02 13:44:03 +03:00
297653733a . 2021-02-02 10:36:38 +03:00
3588900943 . 2021-02-02 02:28:17 +03:00
4c38d2ea54 . 2021-02-01 12:16:33 +03:00
81ef6f71c5 . 2021-01-29 02:23:50 +03:00
7535e4ccd5 . 2021-01-28 00:19:37 +03:00
ccb2957df2 Merge remote-tracking branch 'origin/feature/develop' into develop 2021-01-27 16:00:54 +03:00
5c7a6c03b6 Ooxml, bin - chartEx, chartColors, chartStyle 2021-01-27 15:52:35 +03:00
7c8c5b0b11 Merge pull request #471 from ONLYOFFICE/fix/bug47289
Fix bugs 47289 48178 47850
2021-01-25 19:24:15 +03:00
45b6f1702d Fixed a typo 2021-01-25 18:01:55 +03:00
91bc1f74ae fix htmltoxhtml 2021-01-25 17:44:18 +03:00
bbf97e2098 Fix merge 2021-01-25 17:31:39 +03:00
0f80aba351 Merge branch 'develop' into fix/bug47289 2021-01-25 15:46:11 +03:00
f58b7c9a67 Fix bug 47850
if element is not found
2021-01-25 15:19:12 +03:00
d82a9886b2 Fixed a bug with lineHeight and Color 2021-01-25 13:00:17 +03:00
9bd7784bcc Fixed bugs and Ability of styles 2021-01-22 05:12:18 +03:00
026c85097f [x2t] For bug 48247 2021-01-21 19:08:31 +03:00
30c2d81bbd [x2t] Add font theme properties to Editor.bin 2021-01-20 20:03:27 +03:00
b8b16ecbe8 Fixed bugs 2021-01-19 21:48:38 +03:00
76ef6b792f Refactoring and fixed bugs 2021-01-18 21:58:31 +03:00
2c4d5baac2 fix tree of body
The problem was caused by the ReadNextSiblingNode function
2021-01-18 12:30:02 +03:00
43feea8012 table borders
Added table borders in case of using border attribute
2021-01-18 11:58:15 +03:00
2003743229 Fix bug 48178
The font size and line spacing of the text in the table has been corrected. Removed extra paragraph after the table.
2021-01-18 10:58:46 +03:00
6496ebd2e8 Intermediate Commit 2021-01-14 21:48:04 +03:00
d26620973b Reduced the number of unused styles 2021-01-13 20:59:30 +03:00
260765b17a for build 2021-01-12 20:46:31 +03:00
1b1db8e70b Added support for the "!important " modifier 2021-01-11 21:10:47 +03:00
7b2f693235 Merge remote-tracking branch 'origin/release/v6.2.0' into feature/develop 2021-01-09 12:26:12 +03:00
0bc6264d93 . 2021-01-06 19:06:04 +03:00
93dc4cee9c Integrating "paragraph and runner settings" in html file2 2020-12-28 21:35:17 +03:00
0cd5815f0d Merge remote-tracking branch 'origin/fix/v6.2.0-fix_bugs' into feature/develop 2020-12-28 11:43:24 +03:00
0f7552c96f Merge branch 'hotfix/v6.1.1' into fix/v6.2.0-fix_bugs 2020-12-28 11:40:48 +03:00
988d134f0e [test] Add Croatian Kuna as Currency 2020-12-25 16:20:05 +03:00
762266238e x2t - fix bug #48026 2020-12-24 13:36:18 +03:00
0afacbada8 Intermediate commit 2020-12-18 21:48:59 +03:00
3a4c034a71 Added calculation of repetitions of the "id" and "style" fields in selectors 2020-12-17 20:20:08 +03:00
0ca1b533a7 Merge remote-tracking branch 'origin/feature/ppt_4_merge' into develop 2020-12-16 23:47:16 +03:00
9831ba0f4d Merge commit '081e163e8aaf5dd9b7f1b7596c239c9ac4f2e96d' into feature/ppt_4_merge 2020-12-16 23:43:19 +03:00
2202de0b85 Refactoring 2020-12-16 20:01:39 +03:00
266949a9c8 Delete submodules 2020-12-16 19:27:24 +03:00
78079ce900 fix delete 2020-12-16 18:46:03 +03:00
e7f784365c add animScale 2020-12-16 17:25:28 +03:00
1bade8fc10 add animRot 2020-12-16 16:02:04 +03:00
61eb76c005 fix ANM_ArabicPeriod. Set it by default 2020-12-16 14:46:30 +03:00
7845871a90 Add animMotion 2020-12-16 13:59:05 +03:00
f9dd2dc239 Merge pull request #459 from ONLYOFFICE/feature/ios-restrict-mode
[ios] Handle restrict mode
2020-12-16 12:00:47 +03:00
256f5c05e3 [ios] Handle restrict mode 2020-12-16 11:59:23 +03:00
cb06c8c255 Merge pull request #458 from ONLYOFFICE/fix/bug47289_CSS
Fix/bug47289_css
2020-12-15 20:10:09 +03:00
8148b0065d Merge pull request #456 from ONLYOFFICE/feature/develop
.
2020-12-15 17:50:42 +03:00
f2b8bd9d47 . 2020-12-15 17:46:24 +03:00
081e163e8a Merge pull request #455 from ONLYOFFICE/feature/develop
.
2020-12-15 14:33:47 +03:00
e612b9bd0b . 2020-12-15 14:30:50 +03:00
60c99483c4 Refactoring and fixed bugs 2020-12-14 20:44:32 +03:00
32d56dcb56 Revert "add namespace PPT_FORMAT everywhere. But program cannot compile."
This reverts commit f38d221946.
2020-12-14 18:19:17 +03:00
f38d221946 add namespace PPT_FORMAT everywhere. But program cannot compile. 2020-12-14 18:18:46 +03:00
2c6a25b219 delete directory Text 2020-12-14 16:19:26 +03:00
e975b8bcfe delete directory Slide 2020-12-14 15:25:23 +03:00
ed7c8e78f9 Merge pull request #453 from ONLYOFFICE/feature/develop
Pptx Animation to binary (fix bug #42961)
2020-12-14 15:13:42 +03:00
ceb0d864f5 Pptx Animation to binary (fix bug #42961) 2020-12-14 15:11:45 +03:00
dcf5b8820c CRecordOfficeArtClientData has already inherited from CRecordsContainer 2020-12-14 14:19:51 +03:00
89a53628ec add LoadAutoNumbering 2020-12-14 12:29:09 +03:00
d541b11138 Fixed bugs 2020-12-11 20:18:06 +03:00
e065bd72ff Fixed bugs 2020-12-10 20:18:23 +03:00
3125ec4899 Merge pull request #452 from ONLYOFFICE/fix/develop_2
.
2020-12-10 11:53:21 +03:00
d2a8ef12db . 2020-12-10 11:51:49 +03:00
ec210a444b Merge pull request #451 from ONLYOFFICE/fix/develop_1
.
2020-12-10 10:07:22 +03:00
e8dd903f2e . 2020-12-10 10:03:34 +03:00
9a99d4da72 Merge branch 'release/v6.2.0' into develop 2020-12-10 09:55:46 +03:00
62ed1da12c . 2020-12-10 02:20:36 +03:00
452115f57b Merge pull request #448 from ONLYOFFICE/feature/ppt_2_1_merge
Feature/ppt 2 1 merge
2020-12-10 02:12:14 +03:00
11d4b176f4 Merge branch 'feature/ppt_2_1' into feature/ppt_2_1_merge 2020-12-10 02:00:17 +03:00
20fdf3f6eb Revert "Update PlaceholderAtom.h"
This reverts commit c575a4f40a.
2020-12-10 01:59:02 +03:00
72de286fb2 Merge remote-tracking branch 'origin/develop' into feature/ppt_2_1_merge
# Conflicts:
#	Common/DocxFormat/Source/DocxFormat/FileFactory.cpp
#	EpubFile/src/CEpubFile.cpp
2020-12-10 01:54:31 +03:00
b87b38bb15 . <from develop> 2020-12-10 01:46:42 +03:00
59ccda7344 . 2020-12-10 00:05:36 +03:00
c575a4f40a Update PlaceholderAtom.h 2020-12-09 23:50:17 +03:00
68d75c3ff3 Refactoring 2020-12-09 20:23:55 +03:00
eff7bb6a51 delete and, or 2020-12-09 17:13:18 +03:00
a412ab0324 Merge branch 'feature/ppt_2_1' of https://github.com/ONLYOFFICE/core into feature/ppt_2_1 2020-12-09 16:09:06 +03:00
4a99e5d17b Merge branch 'feature/ppt_2_1' of https://github.com/ONLYOFFICE/core into feature/ppt_2_1 2020-12-09 16:08:39 +03:00
625b647a59 Merge branch 'feature/ppt_2_1' of https://github.com/ONLYOFFICE/core into feature/ppt_2_1 2020-12-09 15:16:23 +03:00
a268e88747 fix single numbering, remove console output 2020-12-09 15:15:17 +03:00
b5a038de2c Merge branch 'feature/monolith' into develop
* feature/monolith:
  new events
2020-12-09 15:14:42 +03:00
b2868f3c99 fix single numbering 2020-12-09 15:07:17 +03:00
edb18a87f5 fix extra layer 2020-12-09 11:14:15 +03:00
dc52678838 Changed the way CSS properties are stored 2020-12-08 20:09:55 +03:00
6c219d6d21 Intermediate commit 2020-12-07 20:19:13 +03:00
6b8092d9bb Merge branch 'release/v6.1.0' into develop 2020-12-07 15:30:29 +03:00
b026d77b4d Rewrite LoadSlide, it didn't help 2020-12-04 23:39:51 +03:00
3a95871089 Change LoadSlide, but didn't help 2020-12-04 19:03:21 +03:00
6c7a124c77 It work, but problem with master layer 2020-12-04 18:41:08 +03:00
b4d62b7ef4 Refactoring sc 2020-12-04 15:08:44 +03:00
0c2a5ee0c7 Intermediate commit 2020-12-02 19:15:46 +03:00
9706f5a530 add Numbering and check xml, BUT Program cannot finish just crash 2020-12-02 18:02:47 +03:00
b39ed42e20 html body tree
Fixed bug with early copying of local data into a vector. Removed duplicate code from readSryle function.
2020-12-01 14:01:04 +03:00
45bbe26910 Intermediate commit 2020-11-30 21:03:54 +03:00
a6801103f3 add numbering, but need to write more 2020-11-30 19:24:48 +03:00
eb3827a32b html tree
At the first pass of the file, an html tree with style attributes is formed
2020-11-30 18:16:32 +03:00
eda3cbf4cf Changed CSS property storage 2020-11-30 11:30:49 +03:00
25aecb7d7a justify
tab before br only happens when justify
2020-11-26 15:50:12 +03:00
40450b295e fix <a/>
If <a/> is encountered in html, then gumbo assumes that all the following text is nested within the link, since the link tag must not be empty
2020-11-26 13:43:16 +03:00
2ce1d9fbf1 this moment break programm 2020-11-19 22:14:47 +03:00
19c0e2e4d7 Revert "add RT_Drawing"
This reverts commit 56bca855c3.
2020-11-19 19:01:28 +03:00
973229656e Revert "catch ArtDatawith TextBox"
This reverts commit 88cd576f06.
2020-11-19 19:01:27 +03:00
fcdf797be4 Revert "add autoNum within fun, but break programm"
This reverts commit cd7218584b.
2020-11-19 19:01:25 +03:00
cd7218584b add autoNum within fun, but break programm 2020-11-19 19:00:44 +03:00
88cd576f06 catch ArtDatawith TextBox 2020-11-18 22:48:28 +03:00
56bca855c3 add RT_Drawing 2020-11-13 23:21:29 +03:00
e74469cf0e Can read autoNumbering paragraph 2020-11-12 23:30:51 +03:00
f265724464 Merge branch 'develop' into feature/monolith
* develop: (63 commits)
  Fix merging from release/v6.1.0
  [x2t] For bug 47175; Add opening/saving SuppressLineNumbers
  Fix linux build
  Add test for embeded mode
  Fix work with icudatadir
  OdfFormat - fix user file
  OdfFormat - fix bug #47146
  Switch zlib to 1.2.11 (graphics)
  fix bag
  Fix macos build
  Fix build for macos
  Fix the issue with reading CCITFax images
  .
  PdfWriter => ft2104
  TxtFormat - fix bug #45695
  .
  Switch to ft 2.10.4
  DocFormat - fix bug #46844, #46843, #45728
  Fix uninitialized data
  DocFormat - fix bugs #47057, #46115
  ...
2020-11-05 14:59:43 +03:00
f268a814b0 add CRecordDocInfoListContainer with CRecordPP9DocBinaryTagExtension only 2020-11-02 18:31:21 +03:00
c05ada24fd add CRecordPP9SlideBinaryTagExtension 2020-10-30 18:35:01 +03:00
f53acc2326 start adding records and classes for paragraph 2020-10-26 18:42:53 +03:00
c5f7aac996 fix CRecordTimeAnimationEntry 2020-10-20 16:31:34 +03:00
7781a73352 Fix CRecordTimeVariant for p:anim 2020-10-20 16:25:46 +03:00
4612076bee Merge branch 'develop' into feature/monolith
* develop:
  Add test for metafile =>  raster
  Fix CArray => vector
  Fix CArray => vector
  Add new mode for copy files
2020-10-20 12:10:12 +03:00
883dda0f3f Fix CRecordTimeVariant for p:anim 2020-10-19 18:33:38 +03:00
e545cb4c54 Friday commit. Add more args for p:anim 2020-10-16 18:34:16 +03:00
2bc4726ca9 add text animation for shape 2020-10-16 17:36:27 +03:00
b20ffdcc8e Merge branch 'feature/ppt_1' of https://github.com/ONLYOFFICE/core into feature/ppt_1 2020-10-14 18:41:45 +03:00
f8e96ee867 Add some attr for animClr, animEffect, cBhvr, bldP 2020-10-14 18:38:54 +03:00
4cc866d5a3 Merge branch 'develop' into feature/monolith
* develop:
  .
2020-10-14 11:22:57 +03:00
2ad6553bb0 Merge branch 'develop' into feature/monolith
* develop:
  remove CArray
  [x2t] Fix c_oSerTableTypes conflict with release branch
2020-10-14 10:33:17 +03:00
e9120c8687 Merge branch 'develop' into feature/monolith
* develop:
  [android][editors] add setIcuDataPath
  DocxFormat - glossary - fix bug #46488
  .
  [android][libs] add libEpubFile
  .
2020-10-13 13:01:18 +03:00
562b7a7eea finish marge with ppt branch 2020-10-12 18:38:49 +03:00
55abc7d9c2 finish marge with ppt branch 2020-10-12 18:17:40 +03:00
38f9bec1a0 Merge remote-tracking branch 'origin/feature/ppt' into feature/ppt_1 2020-10-12 11:35:20 +03:00
c15e096f6d add p:animClr 2020-10-09 17:38:31 +03:00
85d3b86017 Merge branch 'develop' into feature/monolith
* develop: (377 commits)
  Build icu as static library on android
  Fix typo
  Fix previous commit
  Remove version from icu libs on android
  Return the error code if can't save to pdf
  update fetch.py
  update test htmlfile2
  .
  .
  Revert "TestMetafile - vc2015"
  .
  Revert "Revert "TestMetafile - vc2015""
  Revert "TestMetafile - vc2015"
  TestMetafile - vc2015
  DocFormat - glossary
  Add changes for previous commit
  Andriod builds
  fix warning
  fix bug wells-wheels-of-chance
  fix bug 1681_978
  ...
2020-10-09 13:47:35 +03:00
9514f915ab fix p:TnLst -> p:tnLst & p:seg -> p:seq 2020-10-05 18:30:24 +03:00
a4d1dcd164 fix p:tavLst and p:cond:tgtEl 2020-10-05 17:54:02 +03:00
5b40569188 fix p:cond:tn:val 2020-10-05 16:41:59 +03:00
1705cce230 add new attr for CTn 2020-10-05 13:16:15 +03:00
015f3171bc add p:anim 2020-10-02 19:07:16 +03:00
bea0ddeaf5 add main struct and anim with bugs 2020-10-02 17:21:43 +03:00
dbf3cbe24b fix CTn struct 2020-09-29 18:31:12 +03:00
ef8d0624ce add simple anim, but don't work in pp 2020-09-28 18:31:59 +03:00
dbb54ec25b Add p:set and p:cond and some problems with them 2020-09-25 19:12:44 +03:00
9bde9c9557 removed PPTX dependencies 2020-09-24 22:22:40 +03:00
d073526216 add p:seq 2020-09-21 20:10:08 +03:00
1aaa19baf9 add some atrb 2020-09-21 16:28:57 +03:00
bca41ae58c add some atrb 2020-09-18 20:39:18 +03:00
2f9c765c14 add empty for args cTn 2020-09-16 19:24:51 +03:00
6818500ac2 Add ConvertCRecordBuildListContainerToBldLst() 2020-09-14 16:37:32 +03:00
5edfe05924 fix pointer problem and add translator for p:bldP 2020-09-14 15:07:43 +03:00
371fc2573e add BldP. null pointer problems 2020-09-11 18:44:02 +03:00
1278496492 add BldP. null pointer problems 2020-09-11 18:38:40 +03:00
e33f92bc04 add BldP. null pointer problems 2020-09-11 18:28:17 +03:00
b13593bae2 add empty p:timing convert function 2020-09-11 14:21:08 +03:00
ba5b663df7 add empty p:timing convert function 2020-09-11 11:46:04 +03:00
dd9004f192 some fix 2020-09-02 18:20:24 +03:00
6e08d09163 fixed CreateByType() 2020-09-02 11:42:52 +03:00
3d64c86da9 trying to fix The program has unexpectedly finished 2020-09-01 18:48:46 +03:00
19dd5259f9 fix CRecordSlideProgTagsContainer->ReadFromStream() 2020-09-01 15:05:59 +03:00
2b1c25bcfa fix #4 CreateByRecord() 2020-08-28 20:51:59 +03:00
046a7839d4 fix #3 CreateByRecord() 2020-08-28 13:41:58 +03:00
b35dfb7158 fix #2 CreateByType() 2020-08-27 18:56:53 +03:00
fb54c393f4 fix CreateByType() 2020-08-27 17:51:55 +03:00
f6d3028a22 added RTE enums 2020-08-27 15:42:45 +03:00
30f801f5e2 fixed new compilation errors 2020-08-27 11:48:00 +03:00
b07c008de6 compilation errors fixed 2020-08-26 14:09:22 +03:00
1a2d2157c2 started fixing compilation errors 2020-08-25 18:46:09 +03:00
0ed2e406ac rewrite function CreateByType() 2020-08-25 17:01:03 +03:00
90444cc6d9 added rewrited SlideProgTagsContainer 2020-08-25 13:17:47 +03:00
66156cd8e4 added fulled CRecordPP10SlideBinaryTagExtension 2020-08-24 19:30:29 +03:00
62513d85d4 add new file Slide 2020-08-24 13:58:27 +03:00
2c74f9578b add StreamSeek for Containers 2020-08-24 12:07:04 +03:00
034521b1a0 added all Animation records, but the code is not compiled 2020-08-21 17:56:21 +03:00
1addfcb6ef new events 2020-08-20 17:08:16 +03:00
b8e749fb82 add enum for record type 2020-08-17 15:56:48 +03:00
e2b04f4cc1 Revert "rewriting of records started"
This reverts commit 7061b4e88c.
2020-08-14 18:05:13 +03:00
a14432587e Revert "add new enums"
This reverts commit a174df63e8.
2020-08-14 17:57:08 +03:00
b01f578486 Revert "Add all enums without types"
This reverts commit c7777fd7f8.
2020-08-14 17:57:08 +03:00
8423b72acf Revert "added all records, but some empty"
This reverts commit 7576142dd8.
2020-08-14 17:57:08 +03:00
fc06862474 Revert "trying to rewrite BuildListContainer"
This reverts commit 4fa9abfb26.
2020-08-14 17:57:08 +03:00
e94848468e Revert "moved class IRecord in IRecord.h/cpp"
This reverts commit 49d471d4c0.
2020-08-14 17:57:08 +03:00
e654a94465 Revert "Revert "moved class IRecord in IRecord.h/cpp""
This reverts commit 6fc317590b.
2020-08-14 17:57:08 +03:00
258d42dc0e Revert "Revert "Revert "moved class IRecord in IRecord.h/cpp"""
This reverts commit 3d0741bc49.
2020-08-14 17:57:08 +03:00
3d0741bc49 Revert "Revert "moved class IRecord in IRecord.h/cpp""
This reverts commit 6fc317590b.
2020-08-14 17:54:29 +03:00
6fc317590b Revert "moved class IRecord in IRecord.h/cpp"
This reverts commit 49d471d4c0.
2020-08-14 17:50:54 +03:00
49d471d4c0 moved class IRecord in IRecord.h/cpp 2020-08-14 12:13:55 +03:00
4fa9abfb26 trying to rewrite BuildListContainer 2020-08-13 18:37:32 +03:00
7576142dd8 added all records, but some empty 2020-08-12 18:24:30 +03:00
c7777fd7f8 Add all enums without types 2020-08-11 18:34:55 +03:00
a174df63e8 add new enums 2020-08-11 11:48:35 +03:00
7061b4e88c rewriting of records started 2020-08-10 18:38:06 +03:00
4a43fd11df add empty struct PP9SlideBinaryTagExtension for SlideProgTagsContainer 2020-08-05 18:46:59 +03:00
d0a3c5798f add struct PP10SlideBinaryTagExtension and it was checked 2020-08-05 16:51:09 +03:00
e0c2daacb8 Fix transition moved some data to CSlideShowInfo 2020-07-31 16:58:17 +03:00
71142b0b5c fix order of flags in CRecordAnimationInfoAtom 2020-07-30 18:23:12 +03:00
60e148de81 add advTm & advClick to do auto transition 2020-07-30 16:18:15 +03:00
0d1693c159 Revert "add exp realization of class CRecordTimeAnimationValueAtom"
This reverts commit 5bd2ad6487.
2020-07-29 12:02:15 +03:00
a7f528d240 Revert "add exp realization of class CRecordTimeVariantBool"
This reverts commit 54d555e4d6.
2020-07-29 12:02:14 +03:00
975f19c98e Revert "add exp realizations of classes for TimeVariant"
This reverts commit d6d4a3e006.
2020-07-29 12:02:10 +03:00
0f515c9e83 Revert "add exp classes TimeVariant4TimeNode"
This reverts commit 0613e138f1.
2020-07-29 12:01:06 +03:00
0613e138f1 add exp classes TimeVariant4TimeNode 2020-07-28 15:57:03 +03:00
d6d4a3e006 add exp realizations of classes for TimeVariant 2020-07-27 18:23:01 +03:00
54d555e4d6 add exp realization of class CRecordTimeVariantBool 2020-07-27 17:11:10 +03:00
5bd2ad6487 add exp realization of class CRecordTimeAnimationValueAtom 2020-07-27 13:43:19 +03:00
c584a27727 add exp realization of class CRecordTimeAnimateBehaviorAtom and fix CRecordTimeNodeAtom flags 2020-07-27 13:07:46 +03:00
7dab2f7f20 add exp realization of class CRecordDiagramBuildContainer 2020-07-22 18:53:15 +03:00
72c5ff0e51 add exp realization of CRecordBuildAtom 2020-07-22 15:27:13 +03:00
f26eeb10ef deleted exp realization of CRecordKinoskuContainer 2020-07-22 14:36:36 +03:00
b2efe4183e add experimental class CRecordDiagramBuildAtom 2020-07-21 18:51:51 +03:00
6ef9388f99 add experimental class CRecordChartBuildAtom 2020-07-20 18:58:32 +03:00
db7ccd281f CRecordAnimationInfoContainer added to CreateByType() 2020-07-20 17:44:59 +03:00
2bb35f193d add experimental class CRecordAnimationInfoContainer 2020-07-20 17:31:44 +03:00
2ad5200e3a add experimental class CRecordKinsokuFollowingAtom and name fix 2020-07-20 13:46:18 +03:00
63a076fc2a add experimental class CRecordKinsokuLeadingAtom 2020-07-20 13:33:44 +03:00
e1d5b58c66 Bug of debug 2020-07-17 18:20:37 +03:00
7ae9986f67 name fix 2020-07-17 15:28:46 +03:00
c3ad1b86d5 uncommented RECORD_TYPE_ANIMATIONINFO 2020-07-17 15:22:33 +03:00
326daad961 fix struct's name 2020-07-17 14:04:11 +03:00
a8be92a272 fix masks 2020-07-17 13:41:06 +03:00
56609c5d53 added experimental implementation of the class CRecordAnimationInfoAtom 2020-07-16 17:57:59 +03:00
449 changed files with 31742 additions and 14816 deletions

View File

@ -39,7 +39,7 @@
namespace Writers
{
FileWriter::FileWriter(std::wstring sDirOutput,std::wstring sFontDir, bool bNoFontDir, int nVersion, bool bSaveChartAsImg, NSBinPptxRW::CDrawingConverter* pDrawingConverter, std::wstring sThemePath)
FileWriter::FileWriter(std::wstring sDirOutput,std::wstring sFontDir, bool bNoFontDir, int nVersion, NSBinPptxRW::CDrawingConverter* pDrawingConverter, std::wstring sThemePath)
:
m_oMain(sDirOutput, sFontDir, bNoFontDir, nVersion),
m_oGlossary(sDirOutput, sFontDir, bNoFontDir, nVersion),
@ -47,7 +47,6 @@ FileWriter::FileWriter(std::wstring sDirOutput,std::wstring sFontDir, bool bNoFo
m_oChartWriter (sDirOutput),
m_oCustomXmlWriter (sDirOutput, pDrawingConverter),
m_pDrawingConverter (pDrawingConverter),
m_bSaveChartAsImg (bSaveChartAsImg),
m_sThemePath (sThemePath),
m_oDocumentRelsWriter (sDirOutput),
m_nDocPrIndex (0),

View File

@ -120,7 +120,7 @@ namespace Writers
_part_summary_writers m_oGlossary;
public:
FileWriter(std::wstring sDirOutput, std::wstring sFontDir, bool bNoFontDir, int nVersion, bool bSaveChartAsImg, NSBinPptxRW::CDrawingConverter* pDrawingConverter, std::wstring sThemePath);
FileWriter(std::wstring sDirOutput, std::wstring sFontDir, bool bNoFontDir, int nVersion, NSBinPptxRW::CDrawingConverter* pDrawingConverter, std::wstring sThemePath);
~FileWriter();
FontTableWriter& get_font_table_writer() { return m_bGlossaryMode ? m_oGlossary.font_table : m_oMain.font_table; }
@ -161,7 +161,7 @@ namespace Writers
smart_ptr<OOX::VbaProject> m_pVbaProject;
NSBinPptxRW::CDrawingConverter* m_pDrawingConverter;
bool m_bSaveChartAsImg;
std::wstring m_sThemePath;
int m_nDocPrIndex;
BinDocxRW::CComments* m_pComments;

View File

@ -387,17 +387,16 @@ class Shd
public:
BYTE Value;
docRGB Color;
CThemeColor ThemeColor;
docRGB Fill;
CThemeColor ThemeColor;
bool bValue = false;
bool bColor = false;
bool bThemeColor = false;
bool bFill = false;
Shd(){}
bool bValue;
bool bColor;
bool bThemeColor;
Shd()
{
bValue = false;
bColor = false;
bThemeColor = false;
}
std::wstring ToString()
{
std::wstring sShd;
@ -450,17 +449,17 @@ public:
}
}
if (bColor)
{
sShd += L" w:fill=\"" + Color.ToString() + L"\"";
sShd += L" w:color=\"" + Color.ToString() + L"\"";
}
else
{
if (bFill)
sShd += L" w:fill=\"#" + Fill.ToString() + L"\"";
if (!bColor && !bFill)
sShd += L" w:color=\"auto\"";
}
if(bThemeColor && ThemeColor.IsNoEmpty())
{
if(ThemeColor.Auto && !bColor)
if(ThemeColor.Auto && !bColor && !bFill)
sShd += L" w:fill=\"auto\"";
if(ThemeColor.bColor)
sShd += L" w:themeFill=\"" + ThemeColor.ToStringColor() + L"\"";
@ -505,6 +504,10 @@ public:
std::wstring FontHAnsi;
std::wstring FontAE;
std::wstring FontCS;
std::wstring FontAsciiTheme;
std::wstring FontHAnsiTheme;
std::wstring FontAETheme;
std::wstring FontCSTheme;
long FontSize;
docRGB Color;
BYTE VertAlign;
@ -628,7 +631,7 @@ public:
{
return bBold || bItalic || bUnderline || bStrikeout || bFontAscii || bFontHAnsi || bFontAE || bFontCS || bFontSize || bColor || bVertAlign || nHighLight > 0 || bShd ||
bRStyle || bSpacing || bDStrikeout || bCaps || bSmallCaps || bPosition || bFontHint || bBoldCs || bItalicCs || bFontSizeCs || bCs || bRtl || bLang || bLangBidi || bLangEA || bThemeColor || bVanish ||
!Outline.empty() || !Fill.empty() || !Del.empty() || !Ins.empty() || !MoveFrom.empty() || !MoveTo.empty() || !rPrChange.empty();
!Outline.empty() || !Fill.empty() || !Del.empty() || !Ins.empty() || !MoveFrom.empty() || !MoveTo.empty() || !rPrChange.empty() || !FontAsciiTheme.empty() || !FontHAnsiTheme.empty() || !FontAETheme.empty() || !FontCSTheme.empty();
}
void Write(NSStringUtils::CStringBuilder* pCStringWriter)
{
@ -637,7 +640,7 @@ public:
{
pCStringWriter->WriteString(L"<w:rStyle w:val=\"" + RStyle + L"\"/>");
}
if(bFontAscii || bFontHAnsi || bFontAE || bFontCS || bFontHint)
if(bFontAscii || bFontHAnsi || bFontAE || bFontCS || bFontHint || !FontAsciiTheme.empty() || !FontHAnsiTheme.empty() || !FontAETheme.empty() || !FontCSTheme.empty())
{
std::wstring sFont = _T("<w:rFonts");
if(bFontAscii)
@ -660,6 +663,22 @@ public:
sFont += L" w:eastAsia=\"" + FontAE + L"\"";
m_mapFonts[FontAE] = 1;
}
if(!FontAsciiTheme.empty())
{
sFont += L" w:asciiTheme=\"" + FontAsciiTheme + L"\"";
}
if(!FontHAnsiTheme.empty())
{
sFont += L" w:hAnsiTheme=\"" + FontHAnsiTheme + L"\"";
}
if(!FontAETheme.empty())
{
sFont += L" w:eastAsiaTheme=\"" + FontAETheme + L"\"";
}
if(!FontCSTheme.empty())
{
sFont += L" w:cstheme=\"" + FontCSTheme + L"\"";
}
if(bFontHint)
{
switch(FontHint)
@ -2336,40 +2355,41 @@ public:
unsigned int nObjectId;
BYTE nObjectType;
long DataPos;
long DataLength;
BYTE Type;
bool BehindDoc;
__int64 DistL;
__int64 DistT;
__int64 DistR;
__int64 DistB;
bool LayoutInCell;
long DataPos;
long DataLength;
BYTE Type;
bool BehindDoc;
__int64 DistL;
__int64 DistT;
__int64 DistR;
__int64 DistB;
bool LayoutInCell;
unsigned long RelativeHeight;
bool BSimplePos;
__int64 EffectExtentL;
__int64 EffectExtentT;
__int64 EffectExtentR;
__int64 EffectExtentB;
__int64 Width;
__int64 Height;
BYTE PositionHRelativeFrom;
BYTE PositionHAlign;
__int64 PositionHPosOffset;
double PositionHPctOffset;
BYTE PositionVRelativeFrom;
BYTE PositionVAlign;
__int64 PositionVPosOffset;
double PositionVPctOffset;
__int64 SimplePosX;
__int64 SimplePosY;
std::wstring sChartRels;
bool BSimplePos;
__int64 EffectExtentL;
__int64 EffectExtentT;
__int64 EffectExtentR;
__int64 EffectExtentB;
__int64 Width;
__int64 Height;
BYTE PositionHRelativeFrom;
BYTE PositionHAlign;
__int64 PositionHPosOffset;
double PositionHPctOffset;
BYTE PositionVRelativeFrom;
BYTE PositionVAlign;
__int64 PositionVPosOffset;
double PositionVPctOffset;
__int64 SimplePosX;
__int64 SimplePosY;
std::wstring sSizeRelH;
std::wstring sSizeRelV;
int m_nDocPr;
int m_nDocPr;
std::wstring sGraphicFramePr;
std::wstring sDocPr;
std::wstring sGraphicFrameContent;
CDrawingPropertyWrap DrawingPropertyWrap;
bool bDataPos;
@ -2437,9 +2457,9 @@ public:
bSimplePosY = false;
bDrawingPropertyWrap = false;
}
bool IsChart()
bool IsGraphicFrameContent()
{
return false == sChartRels.empty();
return false == sGraphicFrameContent.empty();
}
std::wstring Write()
{
@ -2447,17 +2467,22 @@ public:
std::wstring sXml;
bool bChart = IsChart();
if(c_oAscWrapStyle::Inline == Type)
bool bGraphicFrameContent = IsGraphicFrameContent();
if(c_oAscWrapStyle::Inline == Type)
{
if(bWidth && bHeight)
{
if(false == bChart)
sXml += L"<wp:inline xmlns:wp=\"http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing\" \
if (bGraphicFrameContent)
{
sXml += L"<w:drawing><wp:inline distT=\"0\" distB=\"0\" distL=\"0\" distR=\"0\">\
<wp:extent cx=\"" + std::to_wstring(Width) + L"\" cy=\"" + std::to_wstring(Height) + L"\"/>";
}
else
{
sXml += L"<wp:inline xmlns:wp=\"http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing\" \
distT=\"0\" distB=\"0\" distL=\"0\" distR=\"0\"><wp:extent cx=\"" + std::to_wstring(Width) + L"\" cy=\"" + std::to_wstring(Height) + L"\"/>";
else
sXml += L"<w:drawing><wp:inline distT=\"0\" distB=\"0\" distL=\"0\" distR=\"0\">\
<wp:extent cx=\"" + std::to_wstring(Width) + L"\" cy=\"" + std::to_wstring(Height) + L"\"/>";
}
if(bEffectExtentL && bEffectExtentT && bEffectExtentR && bEffectExtentB)
{
@ -2473,18 +2498,17 @@ distT=\"0\" distB=\"0\" distL=\"0\" distR=\"0\"><wp:extent cx=\"" + std::to_wstr
{
sXml += L"<wp:docPr id=\"" + std::to_wstring(m_nDocPr) + L"\" name=\"\"/>";
}
if(!sGraphicFramePr.empty())
if (!sGraphicFramePr.empty())
{
sXml += (sGraphicFramePr);
sXml += sGraphicFramePr;
}
else
{
sXml += L"<wp:cNvGraphicFramePr/>";
}
if(bChart)
if (bGraphicFrameContent)
{
sXml += L"<a:graphic xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\"><a:graphicData uri=\"http://schemas.openxmlformats.org/drawingml/2006/chart\"><c:chart xmlns:c=\"http://schemas.openxmlformats.org/drawingml/2006/chart\" xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\" r:id=\""
+ sChartRels + L"\"/></a:graphicData></a:graphic></wp:inline></w:drawing>";
sXml += sGraphicFrameContent + L"</wp:inline></w:drawing>";
}
else
{
@ -2524,9 +2548,10 @@ distT=\"0\" distB=\"0\" distL=\"0\" distR=\"0\"><wp:extent cx=\"" + std::to_wstr
if(bLayoutInCell && false == LayoutInCell)
nLayoutInCell = 0;
if(bChart)
sXml += L"<w:drawing>";
if (bGraphicFrameContent)
{
sXml += L"<w:drawing>";
}
sXml += L"<wp:anchor xmlns:wp=\"http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing\"\
distT=\"" + std::to_wstring(emuDistT) +
L"\" distB=\"" + std::to_wstring(emuDistB) +
@ -2545,7 +2570,7 @@ distT=\"0\" distB=\"0\" distL=\"0\" distR=\"0\"><wp:extent cx=\"" + std::to_wstr
emuY = SimplePosY;
sXml += L"<wp:simplePos x=\"" + std::to_wstring(emuX) + L"\" y=\"" + std::to_wstring(emuY) + L"\"/>";
if(bPositionHRelativeFrom && (bPositionHAlign || bPositionHPosOffset || bPositionHPctOffset))
if (bPositionHRelativeFrom && (bPositionHAlign || bPositionHPosOffset || bPositionHPctOffset))
{
std::wstring sRelativeFrom;
switch(PositionHRelativeFrom)
@ -2582,7 +2607,7 @@ distT=\"0\" distB=\"0\" distL=\"0\" distR=\"0\"><wp:extent cx=\"" + std::to_wstr
}
sXml += L"<wp:positionH relativeFrom=\"" + sRelativeFrom + L"\">" + sContent + L"</wp:positionH>";
}
if(bPositionVRelativeFrom && (bPositionVAlign || bPositionVPosOffset || bPositionVPctOffset))
if (bPositionVRelativeFrom && (bPositionVAlign || bPositionVPosOffset || bPositionVPctOffset))
{
std::wstring sRelativeFrom;
switch(PositionVRelativeFrom)
@ -2597,7 +2622,7 @@ distT=\"0\" distB=\"0\" distL=\"0\" distR=\"0\"><wp:extent cx=\"" + std::to_wstr
case 7: sRelativeFrom = _T("topMargin");break;
}
std::wstring sContent;
if(bPositionVAlign)
if (bPositionVAlign)
{
switch(PositionVAlign)
{
@ -2621,22 +2646,22 @@ distT=\"0\" distB=\"0\" distL=\"0\" distR=\"0\"><wp:extent cx=\"" + std::to_wstr
}
sXml += L"<wp:extent cx=\"" + std::to_wstring(Width) + L"\" cy=\"" + std::to_wstring(Height)+ L"\"/>";
if(bEffectExtentL && bEffectExtentT && bEffectExtentR && bEffectExtentB)
if (bEffectExtentL && bEffectExtentT && bEffectExtentR && bEffectExtentB)
{
sXml += L"<wp:effectExtent l=\"" + std::to_wstring(EffectExtentL) +
L"\" t=\"" + std::to_wstring(EffectExtentT) + L"\" r=\"" + std::to_wstring(EffectExtentR) +
L"\" b=\"" + std::to_wstring(EffectExtentB) + L"\"/>";
}
if(bDrawingPropertyWrap && DrawingPropertyWrap.bWrappingType)
if (bDrawingPropertyWrap && DrawingPropertyWrap.bWrappingType)
{
std::wstring sTagName;
switch(DrawingPropertyWrap.WrappingType)
{
case c_oSerImageType2::WrapNone:sTagName = _T("wrapNone"); break;
case c_oSerImageType2::WrapSquare:sTagName = _T("wrapSquare"); break;
case c_oSerImageType2::WrapThrough:sTagName = _T("wrapThrough"); break;
case c_oSerImageType2::WrapTight:sTagName = _T("wrapTight"); break;
case c_oSerImageType2::WrapTopAndBottom:sTagName = _T("wrapTopAndBottom"); break;
case c_oSerImageType2::WrapNone:sTagName = _T("wrapNone"); break;
case c_oSerImageType2::WrapSquare:sTagName = _T("wrapSquare"); break;
case c_oSerImageType2::WrapThrough:sTagName = _T("wrapThrough"); break;
case c_oSerImageType2::WrapTight:sTagName = _T("wrapTight"); break;
case c_oSerImageType2::WrapTopAndBottom:sTagName = _T("wrapTopAndBottom"); break;
}
if(DrawingPropertyWrap.bStart || DrawingPropertyWrap.Points.size() > 0)
{
@ -2702,10 +2727,9 @@ distT=\"0\" distB=\"0\" distL=\"0\" distR=\"0\"><wp:extent cx=\"" + std::to_wstr
{
sXml += L"<wp:cNvGraphicFramePr/>";
}
if(bChart)
if (bGraphicFrameContent)
{
sXml += L"<a:graphic xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\"><a:graphicData uri=\"http://schemas.openxmlformats.org/drawingml/2006/chart\"><c:chart xmlns:c=\"http://schemas.openxmlformats.org/drawingml/2006/chart\" xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\" r:id=\""
+ sChartRels + L"\"/></a:graphicData></a:graphic>";
sXml += sGraphicFrameContent;
}
if(!sSizeRelH.empty())
@ -2719,7 +2743,7 @@ distT=\"0\" distB=\"0\" distL=\"0\" distR=\"0\"><wp:extent cx=\"" + std::to_wstr
sXml += L"</wp:anchor>";
if(bChart)
if (bGraphicFrameContent)
sXml += L"</w:drawing>";
}
}

View File

@ -307,6 +307,10 @@ int Binary_CommonReader2::ReadShd(BYTE type, long length, void* poResult)
pShd->bThemeColor = true;
ReadThemeColor(length, pShd->ThemeColor);
break;
case c_oSerShdType::Fill:
pShd->bFill = true;
pShd->Fill = ReadColor();
break;
default:
res = c_oSerConstants::ReadUnknown;
break;
@ -474,6 +478,13 @@ int Binary_rPrReader::ReadContent(BYTE type, long length, void* poResult)
}
break;
}
case c_oSerProp_rPrType::FontAsciiTheme:
{
SimpleTypes::CTheme<> theme;
theme.SetValue((SimpleTypes::ETheme)m_oBufferedStream.GetUChar());
orPr->FontAsciiTheme = theme.ToString();
break;
}
case c_oSerProp_rPrType::FontHAnsi:
{
std::wstring sFontName(m_oBufferedStream.GetString3(length));
@ -485,6 +496,13 @@ int Binary_rPrReader::ReadContent(BYTE type, long length, void* poResult)
}
break;
}
case c_oSerProp_rPrType::FontHAnsiTheme:
{
SimpleTypes::CTheme<> theme;
theme.SetValue((SimpleTypes::ETheme)m_oBufferedStream.GetUChar());
orPr->FontHAnsiTheme = theme.ToString();
break;
}
case c_oSerProp_rPrType::FontCS:
{
std::wstring sFontName(m_oBufferedStream.GetString3(length));
@ -496,6 +514,13 @@ int Binary_rPrReader::ReadContent(BYTE type, long length, void* poResult)
}
break;
}
case c_oSerProp_rPrType::FontCSTheme:
{
SimpleTypes::CTheme<> theme;
theme.SetValue((SimpleTypes::ETheme)m_oBufferedStream.GetUChar());
orPr->FontCSTheme = theme.ToString();
break;
}
case c_oSerProp_rPrType::FontAE:
{
std::wstring sFontName(m_oBufferedStream.GetString3(length));
@ -507,6 +532,13 @@ int Binary_rPrReader::ReadContent(BYTE type, long length, void* poResult)
}
break;
}
case c_oSerProp_rPrType::FontAETheme:
{
SimpleTypes::CTheme<> theme;
theme.SetValue((SimpleTypes::ETheme)m_oBufferedStream.GetUChar());
orPr->FontAETheme = theme.ToString();
break;
}
case c_oSerProp_rPrType::FontSize:
{
long nFontSize = m_oBufferedStream.GetLong();
@ -7689,14 +7721,15 @@ int Binary_DocumentTableReader::ReadRunContent(BYTE type, long length, void* poR
CDrawingProperty oCDrawingProperty(m_oFileWriter.getNextDocPr());
READ2_DEF(length, res, this->ReadPptxDrawing, &oCDrawingProperty);
if(oCDrawingProperty.IsChart())
if(oCDrawingProperty.IsGraphicFrameContent())
{
GetRunStringWriter().WriteString(oCDrawingProperty.Write());
}
else if(oCDrawingProperty.bDataPos && oCDrawingProperty.bDataLength)
{
std::wstring sDrawingProperty = oCDrawingProperty.Write();
if(false == sDrawingProperty.empty())
if(false == sDrawingProperty.empty())
{
ReadDrawing(oCDrawingProperty);
}
@ -8215,110 +8248,58 @@ int Binary_DocumentTableReader::ReadPptxDrawing(BYTE type, long length, void* po
{
int res = c_oSerConstants::ReadOk;
CDrawingProperty* pDrawingProperty = static_cast<CDrawingProperty*>(poResult);
if ( c_oSerImageType2::Type == type )
if (c_oSerImageType2::Type == type)
{
pDrawingProperty->bType = true;
pDrawingProperty->Type = m_oBufferedStream.GetUChar();
}
else if ( c_oSerImageType2::PptxData == type )
else if (c_oSerImageType2::PptxData == type)
{
pDrawingProperty->bDataPos = true;
pDrawingProperty->bDataLength = true;
pDrawingProperty->DataPos = m_oBufferedStream.GetPos();
pDrawingProperty->DataLength = length;
//сейчас пропуская, потому что перед чтение этого поля надо собрать остальные данные
//сейчас пропуская, потому что перед чтение этого поля надо собрать остальные данные
res = c_oSerConstants::ReadUnknown;
}
else if ( c_oSerImageType2::Chart2 == type )
else if (c_oSerImageType2::Chart == type)
{
if(false == m_oFileWriter.m_bSaveChartAsImg)
OOX::CPath pathCharts = m_oFileWriter.m_oChartWriter.m_sDir + FILE_SEPARATOR_STR + L"word" + FILE_SEPARATOR_STR + L"charts";
OOX::CSystemUtility::CreateDirectories(pathCharts.GetPath());
m_oBufferedStream.m_pRels->m_pManager->SetDstCharts(pathCharts.GetPath());
m_oBufferedStream.Seek(m_oBufferedStream.GetPos() - 4); //roll back length
PPTX::Logic::GraphicFrame graphicFrame;
graphicFrame.chartRec.Init();
graphicFrame.chartRec->fromPPTY(&m_oBufferedStream);
if (graphicFrame.chartRec->id_data.IsInit())
{
OOX::CPath pathChartsDir = m_oFileWriter.m_oChartWriter.m_sDir + FILE_SEPARATOR_STR + L"word" + FILE_SEPARATOR_STR + L"charts";
OOX::CSystemUtility::CreateDirectories(pathChartsDir.GetPath());
OOX::CPath pathChartsRelsDir = pathChartsDir.GetPath() + FILE_SEPARATOR_STR + L"_rels";
OOX::CSystemUtility::CreateDirectories(pathChartsRelsDir.GetPath());
OOX::CPath pathChartsWorksheetDir = m_oFileWriter.m_oChartWriter.m_sDir + FILE_SEPARATOR_STR + L"word" + FILE_SEPARATOR_STR + L"embeddings";
OOX::CSystemUtility::CreateDirectories(pathChartsWorksheetDir.GetPath());
int nativeDocumentType = m_oFileWriter.m_pDrawingConverter->m_pImageManager->m_nDocumentType;
m_oFileWriter.m_pDrawingConverter->m_pImageManager->m_nDocumentType = XMLWRITER_DOC_TYPE_XLSX;
m_oFileWriter.m_pDrawingConverter->SetDstContentRels();
std::wstring sThemePath = m_oFileWriter.m_sThemePath;
std::wstring sDrawingsPath = m_oFileWriter.m_oChartWriter.m_sDir + FILE_SEPARATOR_STR + L"word" + FILE_SEPARATOR_STR + L"drawings";
size_t nPos = sThemePath.rfind(FILE_SEPARATOR_STR);
if (std::wstring::npos != nPos)
{
sThemePath = sThemePath.substr(0, nPos);
}
BinXlsxRW::SaveParams oSaveParams(sDrawingsPath, sThemePath, m_oFileWriter.m_pDrawingConverter->GetContentTypes());
BinXlsxRW::BinaryChartReader oBinaryChartReader(m_oBufferedStream, oSaveParams, m_oFileWriter.m_pDrawingConverter);
OOX::Spreadsheet::CChartSpace* pChartSpace = new OOX::Spreadsheet::CChartSpace(NULL);
oBinaryChartReader.ReadCT_ChartSpace(length, pChartSpace);
//save xlsx
_INT32 nChartCount = m_oFileWriter.m_pDrawingConverter->GetDocumentChartsCount();
_INT32 nChartIndex = nChartCount + 1;
m_oFileWriter.m_pDrawingConverter->SetDocumentChartsCount(nChartCount + 1);
std::wstring sXlsxFilename = L"Microsoft_Excel_Worksheet" + std::to_wstring(nChartIndex) + L".xlsx";
std::wstring sXlsxPath = pathChartsWorksheetDir.GetPath() + FILE_SEPARATOR_STR + sXlsxFilename;
BinXlsxRW::CXlsxSerializer oXlsxSerializer;
if (oXlsxSerializer.writeChartXlsx(sXlsxPath, *pChartSpace))
{
std::wstring sChartsWorksheetRelsName = L"../embeddings/" + sXlsxFilename;
unsigned int rIdXlsx;
std::wstring bstrChartsWorksheetRelType = OOX::FileTypes::MicrosoftOfficeExcelWorksheet.RelationType();
m_oFileWriter.m_pDrawingConverter->WriteRels(bstrChartsWorksheetRelType, sChartsWorksheetRelsName, std::wstring(), &rIdXlsx);
m_oFileWriter.m_pDrawingConverter->m_pImageManager->m_pContentTypes->AddDefault(L"xlsx");
pChartSpace->m_oChartSpace.m_externalData = new OOX::Spreadsheet::CT_ExternalData();
pChartSpace->m_oChartSpace.m_externalData->m_id = new std::wstring();
pChartSpace->m_oChartSpace.m_externalData->m_id->append(L"rId");
pChartSpace->m_oChartSpace.m_externalData->m_id->append(std::to_wstring(rIdXlsx));
pChartSpace->m_oChartSpace.m_externalData->m_autoUpdate = new OOX::Spreadsheet::CT_Boolean();
pChartSpace->m_oChartSpace.m_externalData->m_autoUpdate->m_val = new bool(false);
}
std::wstring sFilename = L"chart" + std::to_wstring(nChartIndex) + L".xml";
std::wstring sRelsName = L"charts/" + sFilename;
OOX::CPath pathChartsFile = pathChartsDir + FILE_SEPARATOR_STR + sFilename;
pChartSpace->write(pathChartsFile, OOX::CPath(L"/word/charts"), *m_oFileWriter.m_pDrawingConverter->GetContentTypes());
OOX::CPath pathChartsRels = pathChartsRelsDir.GetPath() + FILE_SEPARATOR_STR + sFilename + L".rels";
m_oFileWriter.m_pDrawingConverter->SaveDstContentRels(pathChartsRels.GetPath());
unsigned int rIdChart;
std::wstring bstrChartRelType = OOX::FileTypes::Chart.RelationType();
m_oFileWriter.m_pDrawingConverter->WriteRels(bstrChartRelType, sRelsName, std::wstring(), &rIdChart);
//m_oFileWriter.m_pDrawingConverter->Registration(L"application/vnd.openxmlformats-officedocument.drawingml.chart+xml", L"/word/charts", sFilename);
pDrawingProperty->sChartRels = L"rId" + std::to_wstring( rIdChart);
m_oFileWriter.m_pDrawingConverter->m_pImageManager->m_nDocumentType = nativeDocumentType;
pDrawingProperty->sGraphicFrameContent = graphicFrame.toXML2();
}
else
res = c_oSerConstants::ReadUnknown;
}
else if ( c_oSerImageType2::ChartImg == type )
else if (c_oSerImageType2::ChartEx == type)
{
if(true == m_oFileWriter.m_bSaveChartAsImg)
OOX::CPath pathCharts = m_oFileWriter.m_oChartWriter.m_sDir + FILE_SEPARATOR_STR + L"word" + FILE_SEPARATOR_STR + L"charts";
OOX::CSystemUtility::CreateDirectories(pathCharts.GetPath());
m_oBufferedStream.m_pRels->m_pManager->SetDstCharts(pathCharts.GetPath());
m_oBufferedStream.Seek(m_oBufferedStream.GetPos() - 4); //roll back length
PPTX::Logic::GraphicFrame graphicFrame;
graphicFrame.chartRec.Init();
graphicFrame.chartRec->m_bChartEx = true;
graphicFrame.chartRec->fromPPTY(&m_oBufferedStream);
if (graphicFrame.chartRec->id_data.IsInit())
{
pDrawingProperty->bDataPos = true;
pDrawingProperty->bDataLength = true;
pDrawingProperty->DataPos = m_oBufferedStream.GetPos();
pDrawingProperty->DataLength = length;
//сейчас пропуская, потому что перед чтение этого поля надо собрать остальные данные
pDrawingProperty->sGraphicFrameContent = graphicFrame.toXML2();
}
res = c_oSerConstants::ReadUnknown;
}
else if ( c_oSerImageType2::BehindDoc == type )
{
@ -8507,11 +8488,12 @@ int Binary_DocumentTableReader::ReadEmbedded(BYTE type, long length, void* poRes
std::wstring strDstEmbeddedTempThemePath = strDstEmbeddedTempXl + FILE_SEPARATOR_STR + L"theme";
std::wstring strDstEmbeddedTempDrawingPath = strDstEmbeddedTempXl + FILE_SEPARATOR_STR + L"drawings";
std::wstring strDstEmbeddedTempEmbeddingsPath = strDstEmbeddedTempXl + FILE_SEPARATOR_STR + L"embeddings";
int id = m_oFileWriter.m_oChartWriter.nEmbeddedCount++;
std::wstring sXlsxFilename = L"Microsoft_Excel_Worksheet" + std::to_wstring( id + 1) + L".xlsx";
BinXlsxRW::SaveParams oSaveParams(strDstEmbeddedTempDrawingPath, strDstEmbeddedTempThemePath, m_oFileWriter.m_pDrawingConverter->GetContentTypes());//???
BinXlsxRW::SaveParams oSaveParams(strDstEmbeddedTempDrawingPath, strDstEmbeddedTempEmbeddingsPath, strDstEmbeddedTempThemePath, m_oFileWriter.m_pDrawingConverter->GetContentTypes());//???
OOX::Spreadsheet::CXlsx oXlsx;

View File

@ -411,7 +411,11 @@ extern int g_nCurFormatVersion;
MoveFrom = 36,
MoveTo = 37,
SpacingTwips = 38,
PositionHps = 39
PositionHps = 39,
FontAsciiTheme = 40,
FontHAnsiTheme = 41,
FontAETheme = 42,
FontCSTheme = 43
};}
namespace c_oSerProp_rowPrType{enum c_oSerProp_rowPrType
{
@ -639,9 +643,7 @@ extern int g_nCurFormatVersion;
WrapThrough = 20,
WrapTight = 21,
WrapTopAndBottom = 22,
Chart = 23,
ChartImg = 24,
Chart2 = 25,
Chart = 25,
CachedImage = 26,
SizeRelH = 27,
SizeRelV = 28,
@ -651,7 +653,8 @@ extern int g_nCurFormatVersion;
DistBEmu = 32,
DistLEmu = 33,
DistREmu = 34,
DistTEmu = 35
DistTEmu = 35,
ChartEx = 36
};}
namespace c_oSerEffectExtent{enum c_oSerEffectExtent
{
@ -749,7 +752,8 @@ extern int g_nCurFormatVersion;
{
Value = 0,
Color = 1,
ColorTheme = 2
ColorTheme = 2,
Fill = 3
};}
namespace c_oSerPaddingType{enum c_oSerPaddingType
{

View File

@ -305,13 +305,15 @@ void BinaryCommonWriter::WriteShd(const ComplexTypes::Word::CShading& Shd)
m_oStream.WriteBYTE(Shd.m_oVal.get().GetValue()); //Misalignment-footer.doc
}
//Value
if (false != Shd.m_oFill.IsInit())
WriteColor(c_oSerShdType::Color, Shd.m_oFill.get());
else if (false != Shd.m_oColor.IsInit())
//Color
if (false != Shd.m_oColor.IsInit())
WriteColor(c_oSerShdType::Color, Shd.m_oColor.get());
WriteThemeColor(c_oSerShdType::ColorTheme, Shd.m_oFill, Shd.m_oThemeFill, Shd.m_oThemeFillTint, Shd.m_oThemeFillShade);
//Fill
if (false != Shd.m_oFill.IsInit())
WriteColor(c_oSerShdType::Fill, Shd.m_oFill.get());
}
void BinaryCommonWriter::WritePaddings(const nullable<SimpleTypes::CTwipsMeasure>& left, const nullable<SimpleTypes::CTwipsMeasure>& top,
const nullable<SimpleTypes::CTwipsMeasure>& right, const nullable<SimpleTypes::CTwipsMeasure>& bottom)
@ -345,7 +347,7 @@ void BinaryCommonWriter::WritePaddings(const nullable<SimpleTypes::CTwipsMeasure
m_oStream.WriteLONG(bottom->ToTwips());
}
}
void BinaryCommonWriter::WriteFont(std::wstring& sFontName, BYTE bType, DocWrapper::FontProcessor& m_oFontProcessor)
void BinaryCommonWriter::WriteFont(std::wstring sFontName, BYTE bType, DocWrapper::FontProcessor& m_oFontProcessor)
{
if(!sFontName.empty())
{
@ -520,92 +522,39 @@ void Binary_rPrWriter::Write_rPr(OOX::Logic::CRunProperty* rPr)
//FontFamily
if(false != rPr->m_oRFonts.IsInit())
{
std::wstring sFontAscii;
std::wstring sFontHAnsi;
std::wstring sFontAE;
std::wstring sFontCS;
const ComplexTypes::Word::CFonts& oFont = rPr->m_oRFonts.get();
if(NULL != m_oParamsWriter.m_pTheme && oFont.m_oAsciiTheme.IsInit())
if(oFont.m_sAscii.IsInit())
m_oBcw.WriteFont(oFont.m_sAscii.get(), c_oSerProp_rPrType::FontAscii, *m_oParamsWriter.m_pFontProcessor);
if(oFont.m_oAsciiTheme.IsInit())
{
const SimpleTypes::ETheme& eTheme = oFont.m_oAsciiTheme.get().GetValue();
switch(eTheme)
{
case SimpleTypes::themeMajorAscii:
case SimpleTypes::themeMajorBidi:
case SimpleTypes::themeMajorEastAsia:
case SimpleTypes::themeMajorHAnsi: sFontAscii = m_oParamsWriter.m_pTheme->themeElements.fontScheme.majorFont.latin.typeface; break;
case SimpleTypes::themeMinorAscii:
case SimpleTypes::themeMinorBidi:
case SimpleTypes::themeMinorEastAsia:
case SimpleTypes::themeMinorHAnsi: sFontAscii = m_oParamsWriter.m_pTheme->themeElements.fontScheme.minorFont.latin.typeface; break;
default:
break;
}
m_oBcw.m_oStream.WriteBYTE(c_oSerProp_rPrType::FontAsciiTheme);
m_oBcw.m_oStream.WriteBYTE(c_oSerPropLenType::Byte);
m_oBcw.m_oStream.WriteBYTE((BYTE)oFont.m_oAsciiTheme->GetValue());
}
else if(oFont.m_sAscii.IsInit())
sFontAscii = oFont.m_sAscii.get();
if(NULL != m_oParamsWriter.m_pTheme && oFont.m_oHAnsiTheme.IsInit())
if(oFont.m_sHAnsi.IsInit())
m_oBcw.WriteFont(oFont.m_sHAnsi.get(), c_oSerProp_rPrType::FontHAnsi, *m_oParamsWriter.m_pFontProcessor);
if(oFont.m_oHAnsiTheme.IsInit())
{
const SimpleTypes::ETheme& eTheme = oFont.m_oHAnsiTheme.get().GetValue();
switch(eTheme)
{
case SimpleTypes::themeMajorAscii:
case SimpleTypes::themeMajorBidi:
case SimpleTypes::themeMajorEastAsia:
case SimpleTypes::themeMajorHAnsi: sFontHAnsi = m_oParamsWriter.m_pTheme->themeElements.fontScheme.majorFont.latin.typeface; break;
case SimpleTypes::themeMinorAscii:
case SimpleTypes::themeMinorBidi:
case SimpleTypes::themeMinorEastAsia:
case SimpleTypes::themeMinorHAnsi: sFontHAnsi = m_oParamsWriter.m_pTheme->themeElements.fontScheme.minorFont.latin.typeface; break;
default:
break;
}
m_oBcw.m_oStream.WriteBYTE(c_oSerProp_rPrType::FontHAnsiTheme);
m_oBcw.m_oStream.WriteBYTE(c_oSerPropLenType::Byte);
m_oBcw.m_oStream.WriteBYTE((BYTE)oFont.m_oHAnsiTheme->GetValue());
}
else if(oFont.m_sHAnsi.IsInit())
sFontHAnsi = oFont.m_sHAnsi.get();
if(NULL != m_oParamsWriter.m_pTheme && oFont.m_oCsTheme.IsInit())
if(oFont.m_sEastAsia.IsInit())
m_oBcw.WriteFont(oFont.m_sEastAsia.get(), c_oSerProp_rPrType::FontAE, *m_oParamsWriter.m_pFontProcessor);
if(oFont.m_oEastAsiaTheme.IsInit())
{
const SimpleTypes::ETheme& eTheme = oFont.m_oCsTheme.get().GetValue();
switch(eTheme)
{
case SimpleTypes::themeMajorAscii:
case SimpleTypes::themeMajorBidi:
case SimpleTypes::themeMajorEastAsia:
case SimpleTypes::themeMajorHAnsi: sFontCS = m_oParamsWriter.m_pTheme->themeElements.fontScheme.majorFont.latin.typeface; break;
case SimpleTypes::themeMinorAscii:
case SimpleTypes::themeMinorBidi:
case SimpleTypes::themeMinorEastAsia:
case SimpleTypes::themeMinorHAnsi: sFontCS = m_oParamsWriter.m_pTheme->themeElements.fontScheme.minorFont.latin.typeface; break;
default: break;
}
m_oBcw.m_oStream.WriteBYTE(c_oSerProp_rPrType::FontAETheme);
m_oBcw.m_oStream.WriteBYTE(c_oSerPropLenType::Byte);
m_oBcw.m_oStream.WriteBYTE((BYTE)oFont.m_oEastAsiaTheme->GetValue());
}
else if(oFont.m_sCs.IsInit())
sFontCS = oFont.m_sCs.get();
if(NULL != m_oParamsWriter.m_pTheme && oFont.m_oEastAsiaTheme.IsInit())
if(oFont.m_sCs.IsInit())
m_oBcw.WriteFont(oFont.m_sCs.get(), c_oSerProp_rPrType::FontCS, *m_oParamsWriter.m_pFontProcessor);
if(oFont.m_oCsTheme.IsInit())
{
const SimpleTypes::ETheme& eTheme = oFont.m_oEastAsiaTheme.get().GetValue();
switch(eTheme)
{
case SimpleTypes::themeMajorAscii:
case SimpleTypes::themeMajorBidi:
case SimpleTypes::themeMajorEastAsia:
case SimpleTypes::themeMajorHAnsi: sFontAE = m_oParamsWriter.m_pTheme->themeElements.fontScheme.majorFont.latin.typeface; break;
case SimpleTypes::themeMinorAscii:
case SimpleTypes::themeMinorBidi:
case SimpleTypes::themeMinorEastAsia:
case SimpleTypes::themeMinorHAnsi: sFontAE = m_oParamsWriter.m_pTheme->themeElements.fontScheme.minorFont.latin.typeface; break;
default: break;
}
m_oBcw.m_oStream.WriteBYTE(c_oSerProp_rPrType::FontCSTheme);
m_oBcw.m_oStream.WriteBYTE(c_oSerPropLenType::Byte);
m_oBcw.m_oStream.WriteBYTE((BYTE)oFont.m_oCsTheme->GetValue());
}
else if(oFont.m_sEastAsia.IsInit())
sFontAE = oFont.m_sEastAsia.get();
m_oBcw.WriteFont(sFontAscii, c_oSerProp_rPrType::FontAscii, *m_oParamsWriter.m_pFontProcessor);
m_oBcw.WriteFont(sFontHAnsi, c_oSerProp_rPrType::FontHAnsi, *m_oParamsWriter.m_pFontProcessor);
m_oBcw.WriteFont(sFontAE, c_oSerProp_rPrType::FontAE, *m_oParamsWriter.m_pFontProcessor);
m_oBcw.WriteFont(sFontCS, c_oSerProp_rPrType::FontCS, *m_oParamsWriter.m_pFontProcessor);
//Hint
if(false != oFont.m_oHint.IsInit())
{
@ -6396,7 +6345,7 @@ void BinaryDocumentTableWriter::WriteDrawing(std::wstring* pXml, OOX::Logic::CDr
{
if (pGraphic->chartRec.IsInit() && pGraphic->chartRec->id_data.IsInit() )
{
m_oBcw.m_oStream.WriteBYTE(c_oSerImageType2::Chart2);
m_oBcw.m_oStream.WriteBYTE(pGraphic->chartRec->m_bChartEx ? c_oSerImageType2::ChartEx : c_oSerImageType2::Chart);
m_oBcw.m_oStream.WriteBYTE(c_oSerPropLenType::Variable);
int nCurPos = m_oBcw.WriteItemWithLengthStart();
@ -6462,11 +6411,12 @@ void BinaryDocumentTableWriter::WriteDrawing(std::wstring* pXml, OOX::Logic::CDr
WriteEffectExtent(pInline.m_oEffectExtent.get());
m_oBcw.WriteItemWithLengthEnd(nCurPos);
}
if (pInline.m_oGraphic.nvGraphicFramePr.IsInit())
{
m_oBcw.m_oStream.WriteBYTE(c_oSerImageType2::GraphicFramePr);
m_oBcw.m_oStream.WriteBYTE(c_oSerPropLenType::Variable);
nCurPos = m_oBcw.WriteItemWithLengthStart();
WriteNvGraphicFramePr(pInline.m_oGraphic.nvGraphicFramePr);
WriteNvGraphicFramePr(pInline.m_oGraphic.nvGraphicFramePr.get());
m_oBcw.WriteItemWithLengthEnd(nCurPos);
}
if(pInline.m_oDocPr.IsInit())
@ -6645,11 +6595,12 @@ void BinaryDocumentTableWriter::WriteDrawing(std::wstring* pXml, OOX::Logic::CDr
WriteWrapTopBottom(pAnchor.m_oWrapTopAndBottom.get());
m_oBcw.WriteItemWithLengthEnd(nCurPos);
}
if (pAnchor.m_oGraphic.nvGraphicFramePr.IsInit())
{
m_oBcw.m_oStream.WriteBYTE(c_oSerImageType2::GraphicFramePr);
m_oBcw.m_oStream.WriteBYTE(c_oSerPropLenType::Variable);
nCurPos = m_oBcw.WriteItemWithLengthStart();
WriteNvGraphicFramePr(pAnchor.m_oGraphic.nvGraphicFramePr);
WriteNvGraphicFramePr(pAnchor.m_oGraphic.nvGraphicFramePr.get());
m_oBcw.WriteItemWithLengthEnd(nCurPos);
}
if(pAnchor.m_oDocPr.IsInit())

View File

@ -136,7 +136,7 @@ namespace BinDocxRW
void WriteShd(const ComplexTypes::Word::CShading& Shd);
void WritePaddings(const nullable<SimpleTypes::CTwipsMeasure>& left, const nullable<SimpleTypes::CTwipsMeasure>& top,
const nullable<SimpleTypes::CTwipsMeasure>& right, const nullable<SimpleTypes::CTwipsMeasure>& bottom);
void WriteFont(std::wstring& sFontName, BYTE bType, DocWrapper::FontProcessor& m_oFontProcessor);
void WriteFont(std::wstring sFontName, BYTE bType, DocWrapper::FontProcessor& m_oFontProcessor);
void WriteBytesArray(BYTE* pData, long nDataSize);
template<typename T> void WriteTrackRevision(const T& elem);
};
@ -567,4 +567,4 @@ namespace BinDocxRW
void ParagraphAddBreak(OOX::Logic::CParagraph* pParagraph);
};
}
}

View File

@ -182,7 +182,6 @@ BinDocxRW::CDocxSerializer::CDocxSerializer()
m_bIsNoBase64Save = false;
m_bIsNoBase64 = false;
m_bSaveChartAsImg = false;
}
BinDocxRW::CDocxSerializer::~CDocxSerializer()
{
@ -407,7 +406,7 @@ bool BinDocxRW::CDocxSerializer::loadFromFile(const std::wstring& sSrcFileName,
oDrawingConverter.SetMediaDstPath(sMediaPath);
oDrawingConverter.SetEmbedDstPath(sEmbedPath);
m_pCurFileWriter = new Writers::FileWriter(sDstPath, m_sFontDir, false, nVersion, m_bSaveChartAsImg, &oDrawingConverter, sThemePath);
m_pCurFileWriter = new Writers::FileWriter(sDstPath, m_sFontDir, false, nVersion, &oDrawingConverter, sThemePath);
//папка с картинками
std::wstring strFileInDir = NSSystemPath::GetDirectoryName(sSrcFileName);
@ -600,11 +599,6 @@ void BinDocxRW::CDocxSerializer::setIsNoBase64(bool bIsNoBase64)
{
m_bIsNoBase64 = bIsNoBase64;
}
void BinDocxRW::CDocxSerializer::setSaveChartAsImg(bool bSaveChartAsImg)
{
m_bSaveChartAsImg = bSaveChartAsImg;
}
bool BinDocxRW::CDocxSerializer::unpackageFile(const std::wstring& sSrcFileName, const std::wstring& sDstPath)
{
BinDocxRW::CPackageFile file;

View File

@ -54,7 +54,6 @@ namespace BinDocxRW
std::wstring m_sEmbeddedFontsDir;
bool m_bIsNoBase64Save;
bool m_bIsNoBase64;
bool m_bSaveChartAsImg;
ParamsWriter* m_pParamsWriter;
Writers::FileWriter* m_pCurFileWriter;

View File

@ -141,59 +141,61 @@ namespace BinXlsxRW{
RELEASEOBJECT(pFontPicker);
return result;
}
bool CXlsxSerializer::saveChart(NSBinPptxRW::CBinaryFileReader* pReader, long lLength, const std::wstring& sFilepath, const long& lChartNumber)
bool CXlsxSerializer::saveChart(NSBinPptxRW::CBinaryFileReader* pReader, long lLength, NSCommon::smart_ptr<OOX::File> &file, const int& nChartNumber)
{
if (NULL == pReader) return false;
if (NULL == m_pExternalDrawingConverter) return false;
bool bRes = false;
if (false == file.IsInit()) return false;
m_pExternalDrawingConverter->SetDstContentRels();
//получаем sThemePath из bsFilename предполагая что папка theme находится на уровень выше bsFilename
std::wstring sDrawingsPath;
std::wstring sThemePath;
std::wstring sEmbedingPath;
std::wstring sContentTypePath;
size_t nIndex = (int)sFilepath.rfind(FILE_SEPARATOR_CHAR);
nIndex = (int)sFilepath.rfind(FILE_SEPARATOR_CHAR, nIndex - 1);
if(std::wstring::npos != nIndex)
{
std::wstring sFilepathLeft = sFilepath.substr(0, nIndex + 1);
sThemePath = sFilepathLeft + L"theme";
sEmbedingPath = sFilepathLeft + L"embeddings";
sDrawingsPath = sFilepathLeft + L"drawings";
}
if (pReader->m_nDocumentType == XMLWRITER_DOC_TYPE_DOCX ||
pReader->m_nDocumentType == XMLWRITER_DOC_TYPE_DOCX_GLOSSARY) sContentTypePath = L"/word/charts/";
else if (pReader->m_nDocumentType == XMLWRITER_DOC_TYPE_XLSX) sContentTypePath = L"/xl/charts/";
else sContentTypePath = L"/ppt/charts/";
//todo theme path
BinXlsxRW::SaveParams oSaveParams(sDrawingsPath, sThemePath, m_pExternalDrawingConverter->GetContentTypes());
OOX::Spreadsheet::CChartSpace oChartSpace(NULL);
std::wstring sChartPath = pReader->m_pRels->m_pManager->GetDstCharts();
size_t nIndex = sChartPath.rfind(FILE_SEPARATOR_CHAR);
std::wstring sFilePathDocument = sChartPath;
if (std::wstring::npos != nIndex)
{
sFilePathDocument = sFilePathDocument.substr(0, nIndex + 1);
}
std::wstring sDrawingsPath = sFilePathDocument + L"drawings";
std::wstring sThemePath = sFilePathDocument + L"theme";
std::wstring sEmbedingPath = sFilePathDocument + L"embeddings";
std::wstring sFileName;
BinXlsxRW::SaveParams oSaveParams(sDrawingsPath, sEmbedingPath, sThemePath, m_pExternalDrawingConverter->GetContentTypes());
BinXlsxRW::BinaryChartReader oBinaryChartReader(*pReader, oSaveParams, m_pExternalDrawingConverter);
try
bool bResult = false;
int nDocumentTypeOwner = pReader->m_pRels->m_pManager->m_nDocumentType;
pReader->m_pRels->m_pManager->m_nDocumentType = XMLWRITER_DOC_TYPE_XLSX;
NSCommon::smart_ptr<OOX::Spreadsheet::CChartFile> chart_file = file.smart_dynamic_cast<OOX::Spreadsheet::CChartFile>();
if (chart_file.IsInit())
{
oBinaryChartReader.ReadCT_ChartSpace(lLength, &oChartSpace);
}
catch(...)
{
//todooo
}
sFileName = L"chart" + std::to_wstring(nChartNumber) + L".xml";
bResult = (0 == oBinaryChartReader.ReadCT_ChartFile(lLength, chart_file.GetPointer()));
if(oChartSpace.isValid())
{
//save xlsx embedded for chart
if(pReader->m_nDocumentType != XMLWRITER_DOC_TYPE_XLSX && !sEmbedingPath.empty())
bool bXlsxPresent = (chart_file->m_oChartSpace.m_externalData) && (chart_file->m_oChartSpace.m_externalData->m_id);
if (bResult && pReader->m_nDocumentType != XMLWRITER_DOC_TYPE_XLSX && !sEmbedingPath.empty() && !bXlsxPresent)
{
std::wstring sXlsxFilename = L"Microsoft_Excel_Worksheet" + std::to_wstring(lChartNumber) + L".xlsx";
std::wstring sXlsxFilename = L"Microsoft_Excel_Worksheet" + std::to_wstring(pReader->m_nCountEmbedded) + L".xlsx";
std::wstring sXlsxPath = sEmbedingPath + FILE_SEPARATOR_STR + sXlsxFilename;
if (writeChartXlsx(sXlsxPath, oChartSpace))
pReader->m_nCountEmbedded++;
if (writeChartXlsx(sXlsxPath, file))
{
pReader->m_pRels->m_pManager->m_pContentTypes->AddDefault(L"xlsx");
@ -202,31 +204,48 @@ namespace BinXlsxRW{
std::wstring bstrChartsWorksheetRelType = OOX::FileTypes::MicrosoftOfficeExcelWorksheet.RelationType();
m_pExternalDrawingConverter->WriteRels(bstrChartsWorksheetRelType, sChartsWorksheetRelsName, std::wstring(), &rId);
oChartSpace.m_oChartSpace.m_externalData = new OOX::Spreadsheet::CT_ExternalData();
oChartSpace.m_oChartSpace.m_externalData->m_id = new std::wstring();
oChartSpace.m_oChartSpace.m_externalData->m_id->append(L"rId");
oChartSpace.m_oChartSpace.m_externalData->m_id->append(std::to_wstring(rId));
oChartSpace.m_oChartSpace.m_externalData->m_autoUpdate = new OOX::Spreadsheet::CT_Boolean();
oChartSpace.m_oChartSpace.m_externalData->m_autoUpdate->m_val = new bool(false);
chart_file->m_oChartSpace.m_externalData = new OOX::Spreadsheet::CT_ExternalData();
chart_file->m_oChartSpace.m_externalData->m_id = new std::wstring();
chart_file->m_oChartSpace.m_externalData->m_id->append(L"rId");
chart_file->m_oChartSpace.m_externalData->m_id->append(std::to_wstring(rId));
chart_file->m_oChartSpace.m_externalData->m_autoUpdate = new OOX::Spreadsheet::CT_Boolean();
chart_file->m_oChartSpace.m_externalData->m_autoUpdate->m_val = new bool(false);
}
}
}
else
{
NSCommon::smart_ptr<OOX::Spreadsheet::CChartExFile> chartEx_file = file.smart_dynamic_cast<OOX::Spreadsheet::CChartExFile>();
if (chartEx_file.IsInit())
{
sFileName = L"chartEx" + std::to_wstring(nChartNumber) + L".xml";
std::wstring strFilepath = sFilepath;
std::wstring strDir = NSSystemPath::GetDirectoryName(strFilepath);
std::wstring strFilename = NSSystemPath::GetFileName(strFilepath);
OOX::CPath pathRelsDir = strDir + FILE_SEPARATOR_STR + _T("_rels");
bResult = (0 == oBinaryChartReader.ReadCT_ChartExFile(lLength, chartEx_file.GetPointer()));
bool bXlsxPresent = (chartEx_file->m_oChartSpace.m_chartData.m_externalData.IsInit()) &&
(chartEx_file->m_oChartSpace.m_chartData.m_externalData->m_id.IsInit());
}
}
pReader->m_pRels->m_pManager->m_nDocumentType = nDocumentTypeOwner;
if(bResult)
{
if (pReader->m_nDocumentType != XMLWRITER_DOC_TYPE_DOCX && pReader->m_nDocumentType != XMLWRITER_DOC_TYPE_DOCX_GLOSSARY)
{
file->m_sOutputFilename = L"../";
}
file->m_sOutputFilename += L"charts/" + sFileName;
std::wstring sFilePath = sChartPath + FILE_SEPARATOR_STR + sFileName;
file->write(sFilePath, sContentTypePath, *pReader->m_pRels->m_pManager->m_pContentTypes);
OOX::CPath pathRelsDir = sChartPath + FILE_SEPARATOR_STR + _T("_rels");
OOX::CSystemUtility::CreateDirectories(pathRelsDir.GetPath());
oChartSpace.write(sFilepath, sContentTypePath, *pReader->m_pRels->m_pManager->m_pContentTypes);
OOX::CPath pathRelsFile = pathRelsDir + FILE_SEPARATOR_STR + strFilename + _T(".rels");
OOX::CPath pathRelsFile = pathRelsDir + FILE_SEPARATOR_STR + NSSystemPath::GetFileName(sFilePath) + _T(".rels");
m_pExternalDrawingConverter->SaveDstContentRels(pathRelsFile.GetPath());
bRes = true;
}
return bRes;
return bResult;
}
void CXlsxSerializer::setFontDir(const std::wstring& sFontDir)
{
@ -245,11 +264,14 @@ namespace BinXlsxRW{
m_bIsNoBase64 = bIsNoBase64;
}
bool CXlsxSerializer::writeChartXlsx(const std::wstring& sDstFile, const OOX::Spreadsheet::CChartSpace& oChart)
bool CXlsxSerializer::writeChartXlsx(const std::wstring& sDstFile, NSCommon::smart_ptr<OOX::File> &file)
{
NSCommon::smart_ptr<OOX::Spreadsheet::CChartFile> oChart = file.smart_dynamic_cast<OOX::Spreadsheet::CChartFile>();
if (oChart.IsInit() == false) return false;
//анализируем chart
BinXlsxRW::ChartWriter helper;
helper.parseChart(oChart.m_oChartSpace.m_chart);
helper.parseChart(oChart->m_oChartSpace.m_chart);
//создаем temp
std::wstring sTempDir = NSSystemPath::GetDirectoryName(sDstFile) + FILE_SEPARATOR_STR + NSSystemPath::GetFileName(sDstFile) + L"_TEMP";
NSDirectory::CreateDirectory(sTempDir);

View File

@ -29,18 +29,15 @@
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#ifndef XLSX_SERIALIZER
#define XLSX_SERIALIZER
#pragma once
#include <string>
#include "../../Common/DocxFormat/Source/Base/Types_32.h"
#include "../../Common/DocxFormat/Source/Base/SmartPtr.h"
namespace OOX
{
namespace Spreadsheet
{
class CChartSpace;
}
class File;
}
namespace NSBinPptxRW{
class CDrawingConverter;
@ -51,7 +48,8 @@ namespace NSBinPptxRW{
}
namespace BinXlsxRW {
class CXlsxSerializer{
class CXlsxSerializer
{
private:
std::wstring m_sFontDir;
std::wstring m_sEmbeddedFontsDir;
@ -66,15 +64,14 @@ namespace BinXlsxRW {
_UINT32 loadFromFile (const std::wstring& sSrcFileName, const std::wstring& sDstPath, const std::wstring& sXMLOptions, const std::wstring& sMediaDir, const std::wstring& sEmbedPath);
_UINT32 saveToFile (const std::wstring& sSrcFileName, const std::wstring& sDstPath, const std::wstring& sXMLOptions);
bool saveChart (NSBinPptxRW::CBinaryFileReader* pReader, long lLength, const std::wstring& sFilename, const long& lChartNumber);
bool saveChart (NSBinPptxRW::CBinaryFileReader* pReader, long lLength, NSCommon::smart_ptr<OOX::File> &file, const int& nChartNumber);
void setFontDir (const std::wstring& sFontDir);
void setEmbeddedFontsDir(const std::wstring& sEmbeddedFontsDir);
void setDrawingConverter(NSBinPptxRW::CDrawingConverter* pDrawingConverter);
void setIsNoBase64 (bool bIsNoBase64);
bool writeChartXlsx (const std::wstring& sDstFile ,const OOX::Spreadsheet::CChartSpace& oChart);
bool writeChartXlsx (const std::wstring& sDstFile, NSCommon::smart_ptr<OOX::File> &file);
bool hasPivot (const std::wstring& sSrcPath);
};
}
#endif // #ifndef XLSX_SERIALIZER

View File

@ -36,7 +36,7 @@
#include "../utils.h"
#include "../../../Common/DocxFormat/Source/DocxFormat/Diagram/DiagramDrawing.h"
#include "../../../Common/DocxFormat/Source/DocxFormat/ChartDrawing.h"
#include "../../../Common/DocxFormat/Source/XlsxFormat/Chart/ChartDrawing.h"
#include "../../../Common/DocxFormat/Source/XlsxFormat/Chart/Chart.h"
#include "../../../ASCOfficePPTXFile/PPTXFormat/Slide.h"
#include "../../../ASCOfficePPTXFile/PPTXFormat/Logic/SpTreeElem.h"
@ -105,7 +105,7 @@ void OoxConverter::convert(PPTX::Logic::GraphicFrame *oox_graphic_frame)
{
if (!oox_graphic_frame)return;
convert(&oox_graphic_frame->nvGraphicFramePr);
convert(oox_graphic_frame->nvGraphicFramePr.GetPointer());
convert(oox_graphic_frame->xfrm.GetPointer());
if ( oox_graphic_frame->chartRec.is_init())
@ -440,8 +440,8 @@ void OoxConverter::convert(PPTX::Logic::ChartRec *oox_chart)
smart_ptr<OOX::File> oFile = find_file_by_id (oox_chart->id_data->get());
if (oFile.IsInit())
{
OOX::Spreadsheet::CChartSpace* pChart = dynamic_cast<OOX::Spreadsheet::CChartSpace*>(oFile.GetPointer());
OOX::Spreadsheet::CChartSpaceEx* pChartEx = dynamic_cast<OOX::Spreadsheet::CChartSpaceEx*>(oFile.GetPointer());
OOX::Spreadsheet::CChartFile* pChart = dynamic_cast<OOX::Spreadsheet::CChartFile*>(oFile.GetPointer());
OOX::Spreadsheet::CChartExFile* pChartEx = dynamic_cast<OOX::Spreadsheet::CChartExFile*>(oFile.GetPointer());
if (pChart || pChartEx)
{

View File

@ -916,15 +916,26 @@ void PptxConverter::convert(PPTX::Logic::CTn *oox_time_common)
//nullable<CondLst> endCondLst;
//nullable<Cond> endSync;
//nullable<Iterate> iterate;
if (oox_time_common->childTnLst.IsInit())
{
for (size_t i = 0; i < oox_time_common->childTnLst->list.size(); i++)
{
if (oox_time_common->childTnLst->list[i].is_init() == false) continue;
convert(&oox_time_common->childTnLst->list[i]);
}
}
// TODO
// for (auto& child : oox_time_common->childTnLst)
// {
// for (size_t i = 0; i <child.m_node. .list.size(); i++)
// {
// if (tnLst.list[i].is_init() == false) continue;
// convert(&oox_time_common->childTnLst->list[i]);
// }
// }
// if (oox_time_common->childTnLst.IsInit())
// {
// for (size_t i = 0; i < oox_time_common->childTnLst->list.size(); i++)
// {
// if (oox_time_common->childTnLst->list[i].is_init() == false) continue;
// convert(&oox_time_common->childTnLst->list[i]);
// }
// }
//if (oox_time_common->subTnLst.IsInit())
//{
// for (size_t i = 0; i < oox_time_common->subTnLst->list.size(); i++)

View File

@ -0,0 +1,265 @@
/*
* (c) Copyright Ascensio System SIA 2010-2019
*
* 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-12 Ernesta Birznieka-Upisha
* 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 "RecordType.h"
using namespace PPT_FORMAT;
//#define RECORDNAME_BY_TYPE(RECORD_TYPE, RECORD_NAME) \
// case RECORD_TYPE: { name = RECORD_NAME; break;} \
//std::string GetRecordName(RecordType dwType)
//{
// std::string name;
// switch (dwType) {
// RECORDNAME_BY_TYPE ( RT_Document, "DocumentContainer" )
// RECORDNAME_BY_TYPE ( RT_DocumentAtom, "DocumentAtom" )
// RECORDNAME_BY_TYPE ( RT_EndDocumentAtom, "EndDocumentAtom" )
// RECORDNAME_BY_TYPE ( RT_Slide, "SlideContainer" )
// RECORDNAME_BY_TYPE ( RT_SlideAtom, "SlideAtom" )
// RECORDNAME_BY_TYPE ( RT_Notes, "Notes" )
// RECORDNAME_BY_TYPE ( RT_NotesAtom, "NotesAtom" )
// RECORDNAME_BY_TYPE ( RT_Environment, "Environment" )
// RECORDNAME_BY_TYPE ( RT_SlidePersistAtom, "SlidePersistAtom" )
// RECORDNAME_BY_TYPE ( RT_MainMaster, "MainMaster" )
// RECORDNAME_BY_TYPE ( RT_SlideShowSlideInfoAtom, "SlideShowSlideInfoAtom" )
// RECORDNAME_BY_TYPE ( RT_SlideViewInfo, "SlideViewInfo" )
// RECORDNAME_BY_TYPE ( RT_GuideAtom, "GuideAtom" )
// RECORDNAME_BY_TYPE ( RT_ViewInfoAtom, "ViewInfoAtom" )
// RECORDNAME_BY_TYPE ( RT_SlideViewInfoAtom, "SlideViewInfoAtom" )
// RECORDNAME_BY_TYPE ( RT_VbaInfo, "VbaInfo" )
// RECORDNAME_BY_TYPE ( RT_VbaInfoAtom, "VbaInfoAtom" )
// RECORDNAME_BY_TYPE ( RT_SlideShowDocInfoAtom, "SlideShowDocInfoAtom" )
// RECORDNAME_BY_TYPE ( RT_Summary, "Summary" )
// RECORDNAME_BY_TYPE ( RT_DocRoutingSlipAtom, "DocRoutingSlipAtom" )
// RECORDNAME_BY_TYPE ( RT_OutlineViewInfo, "OutlineViewInfo" )
// RECORDNAME_BY_TYPE ( RT_SorterViewInfo, "SorterViewInfo" )
// RECORDNAME_BY_TYPE ( RT_ExternalObjectList, "ExternalObjectList" )
// RECORDNAME_BY_TYPE ( RT_ExternalObjectListAtom, "ExternalObjectListAtom" )
// RECORDNAME_BY_TYPE ( RT_DrawingGroup, "DrawingGroup" )
// RECORDNAME_BY_TYPE ( RT_Drawing, "Drawing" )
// RECORDNAME_BY_TYPE ( RT_GridSpacing10Atom, "GridSpacing10Atom" )
// RECORDNAME_BY_TYPE ( RT_RoundTripTheme12Atom, "RoundTripTheme12Atom" )
// RECORDNAME_BY_TYPE ( RT_RoundTripColorMapping12Atom, "RoundTripColorMapping12Atom" )
// RECORDNAME_BY_TYPE ( RT_NamedShows, "NamedShows" )
// RECORDNAME_BY_TYPE ( RT_NamedShow, "NamedShow" )
// RECORDNAME_BY_TYPE ( RT_NamedShowSlidesAtom, "NamedShowSlidesAtom" )
// RECORDNAME_BY_TYPE ( RT_NotesTextViewInfo9, "NotesTextViewInfo9" )
// RECORDNAME_BY_TYPE ( RT_NormalViewSetInfo9, "NormalViewSetInfo9" )
// RECORDNAME_BY_TYPE ( RT_NormalViewSetInfo9Atom, "NormalViewSetInfo9Atom" )
// RECORDNAME_BY_TYPE ( RT_RoundTripOriginalMainMasterId12Atom, "RoundTripOriginalMainMasterId12Atom" )
// RECORDNAME_BY_TYPE ( RT_RoundTripCompositeMasterId12Atom, "RoundTripCompositeMasterId12Atom" )
// RECORDNAME_BY_TYPE ( RT_RoundTripContentMasterInfo12Atom, "RoundTripContentMasterInfo12Atom" )
// RECORDNAME_BY_TYPE ( RT_RoundTripShapeId12Atom, "RoundTripShapeId12Atom" )
// RECORDNAME_BY_TYPE ( RT_RoundTripHFPlaceholder12Atom, "RoundTripHFPlaceholder12Atom" )
// RECORDNAME_BY_TYPE ( RT_RoundTripContentMasterId12Atom, "RoundTripContentMasterId12Atom" )
// RECORDNAME_BY_TYPE ( RT_RoundTripOArtTextStyles12Atom, "RoundTripOArtTextStyles12Atom" )
// RECORDNAME_BY_TYPE ( RT_RoundTripHeaderFooterDefaults12Atom, "RoundTripHeaderFooterDefaults12Atom" )
// RECORDNAME_BY_TYPE ( RT_RoundTripDocFlags12Atom, "RoundTripDocFlags12Atom" )
// RECORDNAME_BY_TYPE ( RT_RoundTripShapeCheckSumForCL12Atom, "RoundTripShapeCheckSumForCL12Atom" )
// RECORDNAME_BY_TYPE ( RT_RoundTripNotesMasterTextStyles12Atom, "RoundTripNotesMasterTextStyles12Atom" )
// RECORDNAME_BY_TYPE ( RT_RoundTripCustomTableStyles12Atom, "RoundTripCustomTableStyles12Atom" )
// RECORDNAME_BY_TYPE ( RT_List, "List" )
// RECORDNAME_BY_TYPE ( RT_FontCollection, "FontCollection" )
// RECORDNAME_BY_TYPE ( RT_FontCollection10, "FontCollection10" )
// RECORDNAME_BY_TYPE ( RT_BookmarkCollection, "BookmarkCollection" )
// RECORDNAME_BY_TYPE ( RT_SoundCollection, "SoundCollection" )
// RECORDNAME_BY_TYPE ( RT_SoundCollectionAtom, "SoundCollectionAtom" )
// RECORDNAME_BY_TYPE ( RT_Sound, "Sound" )
// RECORDNAME_BY_TYPE ( RT_SoundDataBlob, "SoundDataBlob" )
// RECORDNAME_BY_TYPE ( RT_BookmarkSeedAtom, "BookmarkSeedAtom" )
// RECORDNAME_BY_TYPE ( RT_ColorSchemeAtom, "ColorSchemeAtom" )
// RECORDNAME_BY_TYPE ( RT_BlipCollection9, "BlipCollection9" )
// RECORDNAME_BY_TYPE ( RT_BlipEntity9Atom, "BlipEntity9Atom" )
// RECORDNAME_BY_TYPE ( RT_ExternalObjectRefAtom, "ExternalObjectRefAtom" )
// RECORDNAME_BY_TYPE ( RT_PlaceholderAtom, "PlaceholderAtom" )
// RECORDNAME_BY_TYPE ( RT_ShapeAtom, "ShapeAtom" )
// RECORDNAME_BY_TYPE ( RT_ShapeFlags10Atom, "ShapeFlags10Atom" )
// RECORDNAME_BY_TYPE ( RT_RoundTripNewPlaceholderId12Atom, "RoundTripNewPlaceholderId12Atom" )
// RECORDNAME_BY_TYPE ( RT_OutlineTextRefAtom, "OutlineTextRefAtom" )
// RECORDNAME_BY_TYPE ( RT_TextHeaderAtom, "TextHeaderAtom" )
// RECORDNAME_BY_TYPE ( RT_TextCharsAtom, "TextCharsAtom" )
// RECORDNAME_BY_TYPE ( RT_StyleTextPropAtom, "StyleTextPropAtom" )
// RECORDNAME_BY_TYPE ( RT_MasterTextPropAtom, "MasterTextPropAtom" )
// RECORDNAME_BY_TYPE ( RT_TextMasterStyleAtom, "TextMasterStyleAtom" )
// RECORDNAME_BY_TYPE ( RT_TextCharFormatExceptionAtom, "TextCharFormatExceptionAtom" )
// RECORDNAME_BY_TYPE ( RT_TextParagraphFormatExceptionAtom, "TextParagraphFormatExceptionAtom" )
// RECORDNAME_BY_TYPE ( RT_TextRulerAtom, "TextRulerAtom" )
// RECORDNAME_BY_TYPE ( RT_TextBookmarkAtom, "TextBookmarkAtom" )
// RECORDNAME_BY_TYPE ( RT_TextBytesAtom, "TextBytesAtom" )
// RECORDNAME_BY_TYPE ( RT_TextSpecialInfoDefaultAtom, "TextSpecialInfoDefaultAtom" )
// RECORDNAME_BY_TYPE ( RT_TextSpecialInfoAtom, "TextSpecialInfoAtom" )
// RECORDNAME_BY_TYPE ( RT_DefaultRulerAtom, "DefaultRulerAtom" )
// RECORDNAME_BY_TYPE ( RT_StyleTextProp9Atom, "StyleTextProp9Atom" )
// RECORDNAME_BY_TYPE ( RT_TextMasterStyle9Atom, "TextMasterStyle9Atom" )
// RECORDNAME_BY_TYPE ( RT_OutlineTextProps9, "OutlineTextProps9" )
// RECORDNAME_BY_TYPE ( RT_OutlineTextPropsHeader9Atom, "OutlineTextPropsHeader9Atom" )
// RECORDNAME_BY_TYPE ( RT_TextDefaults9Atom, "TextDefaults9Atom" )
// RECORDNAME_BY_TYPE ( RT_StyleTextProp10Atom, "StyleTextProp10Atom" )
// RECORDNAME_BY_TYPE ( RT_TextMasterStyle10Atom, "TextMasterStyle10Atom" )
// RECORDNAME_BY_TYPE ( RT_OutlineTextProps10, "OutlineTextProps10" )
// RECORDNAME_BY_TYPE ( RT_TextDefaults10Atom, "TextDefaults10Atom" )
// RECORDNAME_BY_TYPE ( RT_OutlineTextProps11, "OutlineTextProps11" )
// RECORDNAME_BY_TYPE ( RT_StyleTextProp11Atom, "StyleTextProp11Atom" )
// RECORDNAME_BY_TYPE ( RT_FontEntityAtom, "FontEntityAtom" )
// RECORDNAME_BY_TYPE ( RT_FontEmbedDataBlob, "FontEmbedDataBlob" )
// RECORDNAME_BY_TYPE ( RT_CString, "CString" )
// RECORDNAME_BY_TYPE ( RT_MetaFile, "MetaFile" )
// RECORDNAME_BY_TYPE ( RT_ExternalOleObjectAtom, "ExternalOleObjectAtom" )
// RECORDNAME_BY_TYPE ( RT_Kinsoku, "Kinsoku" )
// RECORDNAME_BY_TYPE ( RT_Handout, "Handout" )
// RECORDNAME_BY_TYPE ( RT_ExternalOleEmbed, "ExternalOleEmbed" )
// RECORDNAME_BY_TYPE ( RT_ExternalOleEmbedAtom, "ExternalOleEmbedAtom" )
// RECORDNAME_BY_TYPE ( RT_ExternalOleLink, "ExternalOleLink" )
// RECORDNAME_BY_TYPE ( RT_BookmarkEntityAtom, "BookmarkEntityAtom" )
// RECORDNAME_BY_TYPE ( RT_ExternalOleLinkAtom, "ExternalOleLinkAtom" )
// RECORDNAME_BY_TYPE ( RT_KinsokuAtom, "KinsokuAtom" )
// RECORDNAME_BY_TYPE ( RT_ExternalHyperlinkAtom, "ExternalHyperlinkAtom" )
// RECORDNAME_BY_TYPE ( RT_ExternalHyperlink, "ExternalHyperlink" )
// RECORDNAME_BY_TYPE ( RT_SlideNumberMetaCharAtom, "SlideNumberMetaCharAtom" )
// RECORDNAME_BY_TYPE ( RT_HeadersFooters, "HeadersFooters" )
// RECORDNAME_BY_TYPE ( RT_HeadersFootersAtom, "HeadersFootersAtom" )
// RECORDNAME_BY_TYPE ( RT_TextInteractiveInfoAtom, "TextInteractiveInfoAtom" )
// RECORDNAME_BY_TYPE ( RT_ExternalHyperlink9, "ExternalHyperlink9" )
// RECORDNAME_BY_TYPE ( RT_RecolorInfoAtom, "RecolorInfoAtom" )
// RECORDNAME_BY_TYPE ( RT_ExternalOleControl, "ExternalOleControl" )
// RECORDNAME_BY_TYPE ( RT_SlideListWithText, "SlideListWithText" )
// RECORDNAME_BY_TYPE ( RT_AnimationInfoAtom, "AnimationInfoAtom" )
// RECORDNAME_BY_TYPE ( RT_InteractiveInfo, "InteractiveInfo" )
// RECORDNAME_BY_TYPE ( RT_InteractiveInfoAtom, "InteractiveInfoAtom" )
// RECORDNAME_BY_TYPE ( RT_UserEditAtom, "UserEditAtom" )
// RECORDNAME_BY_TYPE ( RT_CurrentUserAtom, "CurrentUserAtom" )
// RECORDNAME_BY_TYPE ( RT_DateTimeMetaCharAtom, "DateTimeMetaCharAtom" )
// RECORDNAME_BY_TYPE ( RT_GenericDateMetaCharAtom, "GenericDateMetaCharAtom" )
// RECORDNAME_BY_TYPE ( RT_HeaderMetaCharAtom, "HeaderMetaCharAtom" )
// RECORDNAME_BY_TYPE ( RT_FooterMetaCharAtom, "FooterMetaCharAtom" )
// RECORDNAME_BY_TYPE ( RT_ExternalOleControlAtom, "ExternalOleControlAtom" )
// RECORDNAME_BY_TYPE ( RT_ExternalMediaAtom, "ExternalMediaAtom" )
// RECORDNAME_BY_TYPE ( RT_ExternalVideo, "ExternalVideo" )
// RECORDNAME_BY_TYPE ( RT_ExternalAviMovie, "ExternalAviMovie" )
// RECORDNAME_BY_TYPE ( RT_ExternalMciMovie, "ExternalMciMovie" )
// RECORDNAME_BY_TYPE ( RT_ExternalMidiAudio, "ExternalMidiAudio" )
// RECORDNAME_BY_TYPE ( RT_ExternalCdAudio, "ExternalCdAudio" )
// RECORDNAME_BY_TYPE ( RT_ExternalWavAudioEmbedded, "ExternalWavAudioEmbedded" )
// RECORDNAME_BY_TYPE ( RT_ExternalWavAudioLink, "ExternalWavAudioLink" )
// RECORDNAME_BY_TYPE ( RT_ExternalOleObjectStg, "ExternalOleObjectStg" )
// RECORDNAME_BY_TYPE ( RT_ExternalCdAudioAtom, "ExternalCdAudioAtom" )
// RECORDNAME_BY_TYPE ( RT_ExternalWavAudioEmbeddedAtom, "ExternalWavAudioEmbeddedAtom" )
// RECORDNAME_BY_TYPE ( RT_AnimationInfo, "AnimationInfo" )
// RECORDNAME_BY_TYPE ( RT_RtfDateTimeMetaCharAtom, "RtfDateTimeMetaCharAtom" )
// RECORDNAME_BY_TYPE ( RT_ExternalHyperlinkFlagsAtom, "ExternalHyperlinkFlagsAtom" )
// RECORDNAME_BY_TYPE ( RT_ProgTags, "ProgTags" )
// RECORDNAME_BY_TYPE ( RT_ProgStringTag, "ProgStringTag" )
// RECORDNAME_BY_TYPE ( RT_ProgBinaryTag, "ProgBinaryTag" )
// RECORDNAME_BY_TYPE ( RT_BinaryTagDataBlob, "BinaryTagDataBlob" )
// RECORDNAME_BY_TYPE ( RT_PrintOptionsAtom, "PrintOptionsAtom" )
// RECORDNAME_BY_TYPE ( RT_PersistDirectoryAtom, "PersistDirectoryAtom" )
// RECORDNAME_BY_TYPE ( RT_PresentationAdvisorFlags9Atom, "PresentationAdvisorFlags9Atom" )
// RECORDNAME_BY_TYPE ( RT_HtmlDocInfo9Atom, "HtmlDocInfo9Atom" )
// RECORDNAME_BY_TYPE ( RT_HtmlPublishInfoAtom, "HtmlPublishInfoAtom" )
// RECORDNAME_BY_TYPE ( RT_HtmlPublishInfo9, "HtmlPublishInfo9" )
// RECORDNAME_BY_TYPE ( RT_BroadcastDocInfo9, "BroadcastDocInfo9" )
// RECORDNAME_BY_TYPE ( RT_BroadcastDocInfo9Atom, "BroadcastDocInfo9Atom" )
// RECORDNAME_BY_TYPE ( RT_EnvelopeFlags9Atom, "EnvelopeFlags9Atom" )
// RECORDNAME_BY_TYPE ( RT_EnvelopeData9Atom, "EnvelopeData9Atom" )
// RECORDNAME_BY_TYPE ( RT_VisualShapeAtom, "VisualShapeAtom" )
// RECORDNAME_BY_TYPE ( RT_HashCodeAtom, "HashCodeAtom" )
// RECORDNAME_BY_TYPE ( RT_VisualPageAtom, "VisualPageAtom" )
// RECORDNAME_BY_TYPE ( RT_BuildList, "BuildList" )
// RECORDNAME_BY_TYPE ( RT_BuildAtom, "BuildAtom" )
// RECORDNAME_BY_TYPE ( RT_ChartBuild, "ChartBuild" )
// RECORDNAME_BY_TYPE ( RT_ChartBuildAtom, "ChartBuildAtom" )
// RECORDNAME_BY_TYPE ( RT_DiagramBuild, "DiagramBuild" )
// RECORDNAME_BY_TYPE ( RT_DiagramBuildAtom, "DiagramBuildAtom" )
// RECORDNAME_BY_TYPE ( RT_ParaBuild, "ParaBuild" )
// RECORDNAME_BY_TYPE ( RT_ParaBuildAtom, "ParaBuildAtom" )
// RECORDNAME_BY_TYPE ( RT_LevelInfoAtom, "LevelInfoAtom" )
// RECORDNAME_BY_TYPE ( RT_RoundTripAnimationAtom12Atom, "RoundTripAnimationAtom12Atom" )
// RECORDNAME_BY_TYPE ( RT_RoundTripAnimationHashAtom12Atom, "RoundTripAnimationHashAtom12Atom" )
// RECORDNAME_BY_TYPE ( RT_Comment10, "Comment10" )
// RECORDNAME_BY_TYPE ( RT_Comment10Atom, "Comment10Atom" )
// RECORDNAME_BY_TYPE ( RT_CommentIndex10, "CommentIndex10" )
// RECORDNAME_BY_TYPE ( RT_CommentIndex10Atom, "CommentIndex10Atom" )
// RECORDNAME_BY_TYPE ( RT_LinkedShape10Atom, "LinkedShape10Atom" )
// RECORDNAME_BY_TYPE ( RT_LinkedSlide10Atom, "LinkedSlide10Atom" )
// RECORDNAME_BY_TYPE ( RT_SlideFlags10Atom, "SlideFlags10Atom" )
// RECORDNAME_BY_TYPE ( RT_SlideTime10Atom, "SlideTime10Atom" )
// RECORDNAME_BY_TYPE ( RT_DiffTree10, "DiffTree10" )
// RECORDNAME_BY_TYPE ( RT_Diff10, "Diff10" )
// RECORDNAME_BY_TYPE ( RT_Diff10Atom, "Diff10Atom" )
// RECORDNAME_BY_TYPE ( RT_SlideListTableSize10Atom, "SlideListTableSize10Atom" )
// RECORDNAME_BY_TYPE ( RT_SlideListEntry10Atom, "SlideListEntry10Atom" )
// RECORDNAME_BY_TYPE ( RT_SlideListTable10, "SlideListTable10" )
// RECORDNAME_BY_TYPE ( RT_CryptSession10Container, "CryptSession10Container" )
// RECORDNAME_BY_TYPE ( RT_FontEmbedFlags10Atom, "FontEmbedFlags10Atom" )
// RECORDNAME_BY_TYPE ( RT_FilterPrivacyFlags10Atom, "FilterPrivacyFlags10Atom" )
// RECORDNAME_BY_TYPE ( RT_DocToolbarStates10Atom, "DocToolbarStates10Atom" )
// RECORDNAME_BY_TYPE ( RT_PhotoAlbumInfo10Atom, "PhotoAlbumInfo10Atom" )
// RECORDNAME_BY_TYPE ( RT_SmartTagStore11Container, "SmartTagStore11Container" )
// RECORDNAME_BY_TYPE ( RT_RoundTripSlideSyncInfo12, "RoundTripSlideSyncInfo12" )
// RECORDNAME_BY_TYPE ( RT_RoundTripSlideSyncInfoAtom12, "RoundTripSlideSyncInfoAtom12" )
// RECORDNAME_BY_TYPE ( RT_TimeConditionContainer, "TimeConditionContainer" )
// RECORDNAME_BY_TYPE ( RT_TimeNode, "TimeNode" )
// RECORDNAME_BY_TYPE ( RT_TimeCondition, "TimeCondition" )
// RECORDNAME_BY_TYPE ( RT_TimeModifier, "TimeModifier" )
// RECORDNAME_BY_TYPE ( RT_TimeBehaviorContainer, "TimeBehaviorContainer" )
// RECORDNAME_BY_TYPE ( RT_TimeAnimateBehaviorContainer, "TimeAnimateBehaviorContainer" )
// RECORDNAME_BY_TYPE ( RT_TimeColorBehaviorContainer, "TimeColorBehaviorContainer" )
// RECORDNAME_BY_TYPE ( RT_TimeEffectBehaviorContainer, "TimeEffectBehaviorContainer" )
// RECORDNAME_BY_TYPE ( RT_TimeMotionBehaviorContainer, "TimeMotionBehaviorContainer" )
// RECORDNAME_BY_TYPE ( RT_TimeRotationBehaviorContainer, "TimeRotationBehaviorContainer" )
// RECORDNAME_BY_TYPE ( RT_TimeScaleBehaviorContainer, "TimeScaleBehaviorContainer" )
// RECORDNAME_BY_TYPE ( RT_TimeSetBehaviorContainer, "TimeSetBehaviorContainer" )
// RECORDNAME_BY_TYPE ( RT_TimeCommandBehaviorContainer, "TimeCommandBehaviorContainer" )
// RECORDNAME_BY_TYPE ( RT_TimeBehavior, "TimeBehavior" )
// RECORDNAME_BY_TYPE ( RT_TimeAnimateBehavior, "TimeAnimateBehavior" )
// RECORDNAME_BY_TYPE ( RT_TimeColorBehavior, "TimeColorBehavior" )
// RECORDNAME_BY_TYPE ( RT_TimeEffectBehavior, "TimeEffectBehavior" )
// RECORDNAME_BY_TYPE ( RT_TimeMotionBehavior, "TimeMotionBehavior" )
// RECORDNAME_BY_TYPE ( RT_TimeRotationBehavior, "TimeRotationBehavior" )
// RECORDNAME_BY_TYPE ( RT_TimeScaleBehavior, "TimeScaleBehavior" )
// RECORDNAME_BY_TYPE ( RT_TimeSetBehavior, "TimeSetBehavior" )
// RECORDNAME_BY_TYPE ( RT_TimeCommandBehavior, "TimeCommandBehavior" )
// RECORDNAME_BY_TYPE ( RT_TimeClientVisualElement, "TimeClientVisualElement" )
// RECORDNAME_BY_TYPE ( RT_TimePropertyList, "TimePropertyList" )
// RECORDNAME_BY_TYPE ( RT_TimeVariantList, "TimeVariantList" )
// RECORDNAME_BY_TYPE ( RT_TimeAnimationValueList, "TimeAnimationValueList" )
// RECORDNAME_BY_TYPE ( RT_TimeIterateData, "TimeIterateData" )
// RECORDNAME_BY_TYPE ( RT_TimeSequenceData, "TimeSequenceData" )
// RECORDNAME_BY_TYPE ( RT_TimeVariant, "TimeVariant" )
// RECORDNAME_BY_TYPE ( RT_TimeAnimationValue, "TimeAnimationValue" )
// RECORDNAME_BY_TYPE ( RT_TimeExtTimeNodeContainer, "TimeExtTimeNodeContainer" )
// RECORDNAME_BY_TYPE ( RT_TimeSubEffectContainer, "TimeSubEffectContainer" )
// default:
// name = "UnknownRecord!";
// }
// return name;
//}

View File

@ -0,0 +1,318 @@
/*
* (c) Copyright Ascensio System SIA 2010-2019
*
* 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-12 Ernesta Birznieka-Upisha
* 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
*
*/
#pragma once
#include <string>
namespace PPT_FORMAT {
enum RecordType : unsigned short
{
RT_NONE,
RT_Document = 0x03E8,
RT_DocumentAtom,
RT_EndDocumentAtom,
RT_Slide = 0x03EE,
RT_SlideAtom,
RT_Notes,
RT_NotesAtom,
RT_Environment,
RT_SlidePersistAtom,
RT_MainMaster = 0x03F8,
RT_SlideShowSlideInfoAtom,
RT_SlideViewInfo,
RT_GuideAtom,
RT_ViewInfoAtom = 0x03FD,
RT_SlideViewInfoAtom,
RT_VbaInfo,
RT_VbaInfoAtom,
RT_SlideShowDocInfoAtom,
RT_Summary,
RT_DocRoutingSlipAtom = 0x0406,
RT_OutlineViewInfo,
RT_SorterViewInfo,
RT_ExternalObjectList,
RT_ExternalObjectListAtom,
RT_DrawingGroup,
RT_Drawing,
RT_GridSpacing10Atom,
RT_RoundTripTheme12Atom,
RT_RoundTripColorMapping12Atom,
RT_NamedShows,
RT_NamedShow,
RT_NamedShowSlidesAtom,
RT_NotesTextViewInfo9,
RT_NormalViewSetInfo9,
RT_NormalViewSetInfo9Atom,
RT_RoundTripOriginalMainMasterId12Atom = 0x041C,
RT_RoundTripCompositeMasterId12Atom,
RT_RoundTripContentMasterInfo12Atom,
RT_RoundTripShapeId12Atom,
RT_RoundTripHFPlaceholder12Atom,
RT_RoundTripContentMasterId12Atom = 0x0422,
RT_RoundTripOArtTextStyles12Atom,
RT_RoundTripHeaderFooterDefaults12Atom,
RT_RoundTripDocFlags12Atom,
RT_RoundTripShapeCheckSumForCL12Atom,
RT_RoundTripNotesMasterTextStyles12Atom,
RT_RoundTripCustomTableStyles12Atom,
RT_List = 0x07D0,
RT_FontCollection = 0x07D5,
RT_FontCollection10,
RT_BookmarkCollection = 0x07E3,
RT_SoundCollection,
RT_SoundCollectionAtom,
RT_Sound,
RT_SoundDataBlob,
RT_BookmarkSeedAtom = 0x07E9,
RT_ColorSchemeAtom = 0x07F0,
RT_BlipCollection9 = 0x07F8,
RT_BlipEntity9Atom,
RT_ExternalObjectRefAtom = 0x0BC1,
RT_PlaceholderAtom = 0x0BC3,
RT_ShapeAtom = 0x0BDB,
RT_ShapeFlags10Atom,
RT_RoundTripNewPlaceholderId12Atom,
RT_OutlineTextRefAtom = 0x0F9E,
RT_TextHeaderAtom,
RT_TextCharsAtom,
RT_StyleTextPropAtom,
RT_MasterTextPropAtom,
RT_TextMasterStyleAtom,
RT_TextCharFormatExceptionAtom,
RT_TextParagraphFormatExceptionAtom,
RT_TextRulerAtom,
RT_TextBookmarkAtom,
RT_TextBytesAtom,
RT_TextSpecialInfoDefaultAtom,
RT_TextSpecialInfoAtom,
RT_DefaultRulerAtom,
RT_StyleTextProp9Atom,
RT_TextMasterStyle9Atom,
RT_OutlineTextProps9,
RT_OutlineTextPropsHeader9Atom,
RT_TextDefaults9Atom,
RT_StyleTextProp10Atom,
RT_TextMasterStyle10Atom,
RT_OutlineTextProps10,
RT_TextDefaults10Atom,
RT_OutlineTextProps11,
RT_StyleTextProp11Atom,
RT_FontEntityAtom,
RT_FontEmbedDataBlob,
RT_CString = 0x0FBA,
RT_MetaFile = 0x0FC1,
RT_ExternalOleObjectAtom = 0x0FC3,
RT_Kinsoku = 0x0FC8,
RT_Handout,
RT_ExternalOleEmbed = 0x0FCC,
RT_ExternalOleEmbedAtom,
RT_ExternalOleLink,
RT_BookmarkEntityAtom = 0x0FD0,
RT_ExternalOleLinkAtom,
RT_KinsokuAtom,
RT_ExternalHyperlinkAtom,
RT_ExternalHyperlink = 0x0FD7,
RT_SlideNumberMetaCharAtom,
RT_HeadersFooters,
RT_HeadersFootersAtom,
RT_TextInteractiveInfoAtom = 0x0FDF,
RT_ExternalHyperlink9 = 0x0FE4,
RT_RecolorInfoAtom = 0x0FE7,
RT_ExternalOleControl = 0x0FEE,
RT_SlideListWithText = 0x0FF0,
RT_AnimationInfoAtom,
RT_InteractiveInfo,
RT_InteractiveInfoAtom,
RT_UserEditAtom = 0x0FF5,
RT_CurrentUserAtom,
RT_DateTimeMetaCharAtom,
RT_GenericDateMetaCharAtom,
RT_HeaderMetaCharAtom,
RT_FooterMetaCharAtom,
RT_ExternalOleControlAtom,
RT_ExternalMediaAtom = 0x1004,
RT_ExternalVideo,
RT_ExternalAviMovie,
RT_ExternalMciMovie,
RT_ExternalMidiAudio = 0x100D,
RT_ExternalCdAudio,
RT_ExternalWavAudioEmbedded,
RT_ExternalWavAudioLink,
RT_ExternalOleObjectStg,
RT_ExternalCdAudioAtom,
RT_ExternalWavAudioEmbeddedAtom,
RT_AnimationInfo,
RT_RtfDateTimeMetaCharAtom,
RT_ExternalHyperlinkFlagsAtom = 0x1018,
RT_ProgTags = 0x1388,
RT_ProgStringTag,
RT_ProgBinaryTag,
RT_BinaryTagDataBlob,
RT_PrintOptionsAtom = 0x1770,
RT_PersistDirectoryAtom = 0x1772,
RT_PresentationAdvisorFlags9Atom = 0x177A,
RT_HtmlDocInfo9Atom,
RT_HtmlPublishInfoAtom,
RT_HtmlPublishInfo9,
RT_BroadcastDocInfo9,
RT_BroadcastDocInfo9Atom,
RT_EnvelopeFlags9Atom = 0x1784,
RT_EnvelopeData9Atom,
RT_VisualShapeAtom = 0x2AFB,
RT_HashCodeAtom = 0x2B00,
RT_VisualPageAtom,
RT_BuildList,
RT_BuildAtom,
RT_ChartBuild,
RT_ChartBuildAtom,
RT_DiagramBuild,
RT_DiagramBuildAtom,
RT_ParaBuild,
RT_ParaBuildAtom,
RT_LevelInfoAtom,
RT_RoundTripAnimationAtom12Atom,
RT_RoundTripAnimationHashAtom12Atom = 0x2B0D,
RT_Comment10 = 0x2EE0,
RT_Comment10Atom,
RT_CommentIndex10 = 0x2EE4,
RT_CommentIndex10Atom,
RT_LinkedShape10Atom,
RT_LinkedSlide10Atom,
RT_SlideFlags10Atom = 0x2EEA,
RT_SlideTime10Atom,
RT_DiffTree10,
RT_Diff10,
RT_Diff10Atom,
RT_SlideListTableSize10Atom,
RT_SlideListEntry10Atom,
RT_SlideListTable10,
RT_CryptSession10Container = 0x2F14,
RT_FontEmbedFlags10Atom = 0x32C8,
RT_FilterPrivacyFlags10Atom = 0x36B0,
RT_DocToolbarStates10Atom,
RT_PhotoAlbumInfo10Atom,
RT_SmartTagStore11Container,
RT_RoundTripSlideSyncInfo12 = 0x3714,
RT_RoundTripSlideSyncInfoAtom12,
RTE_DGG_CONTAINER = 0xF000,
RTE_BSTORE_CONTAINER = 0xF001,
RTE_DG_CONTAINER = 0xF002,
RTE_SPGR_CONTAINER = 0xF003,
RTE_SP_CONTAINER = 0xF004,
RTE_SOLVERCONTAINER = 0xF005,
RTE_DGG = 0xF006,
RTE_BSE = 0xF007,
RTE_DG = 0xF008,
RTE_SPGR = 0xF009,
RTE_SP = 0xF00A,
RTE_OPT = 0xF00B,
RTE_TEXTBOX = 0xF00C,
RTE_CLIENTTEXTBOX = 0xF00D,
RTE_ANCHOR = 0xF00E,
RTE_CHILDANCHOR = 0xF00F,
RTE_CLIENTANCHOR = 0xF010,
RTE_CLIENTDATA = 0xF011,
RTE_CONNECTORRULE = 0xF012,
RTE_ALIGNRULE = 0xF013,
RTE_ARCRULE = 0xF014,
RTE_CLIENTRULE = 0xF015,
RTE_CLSID = 0xF016,
RTE_CALLOUTRULE = 0xF017,
RTE_BLIP_START = 0xF018,
RTE_BLIP_EMF = 0xF01A,
RTE_BLIP_WMF = 0xF01B,
RTE_BLIP_PICT = 0xF01C,
RTE_BLIP_JPEG = 0xF01D,
RTE_BLIP_PNG = 0xF01E,
RTE_BLIP_DIB = 0xF01F,
RTE_BLIP_END = 0xF117,
RTE_REGROUPITEMS = 0xF118,
RTE_SELECTION = 0xF119,
RTE_COLORMRU = 0xF11A,
RTE_DELETEDPSPL = 0xF11D,
RTE_SPLITMENUCOLORS = 0xF11E,
RTE_OLEOBJECT = 0xF11F,
RTE_COLORSCHEME = 0xF120,
RTE_SECONDARY_OPT = 0xF121,
RTE_TETRIARY_OPT = 0xF122,
RTE_BLIP_TIFF = 0xF029,
RT_TimeConditionContainer = 0xF125,
RT_TimeNode = 0xF127,
RT_TimeCondition,
RT_TimeModifier,
RT_TimeBehaviorContainer,
RT_TimeAnimateBehaviorContainer,
RT_TimeColorBehaviorContainer,
RT_TimeEffectBehaviorContainer,
RT_TimeMotionBehaviorContainer,
RT_TimeRotationBehaviorContainer,
RT_TimeScaleBehaviorContainer,
RT_TimeSetBehaviorContainer,
RT_TimeCommandBehaviorContainer,
RT_TimeBehavior,
RT_TimeAnimateBehavior,
RT_TimeColorBehavior,
RT_TimeEffectBehavior,
RT_TimeMotionBehavior,
RT_TimeRotationBehavior,
RT_TimeScaleBehavior,
RT_TimeSetBehavior,
RT_TimeCommandBehavior,
RT_TimeClientVisualElement,
RT_TimePropertyList,
RT_TimeVariantList,
RT_TimeAnimationValueList,
RT_TimeIterateData,
RT_TimeSequenceData,
RT_TimeVariant,
RT_TimeAnimationValue,
RT_TimeExtTimeNodeContainer,
RT_TimeSubEffectContainer
};
//std::string GetRecordName(RecordType dwType);
}

View File

@ -0,0 +1,35 @@
/*
* (c) Copyright Ascensio System SIA 2010-2019
*
* 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-12 Ernesta Birznieka-Upisha
* 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
*
*/
#pragma once
#include "enums.h"
#include "RecordType.h"

View File

@ -0,0 +1,607 @@
/*
* (c) Copyright Ascensio System SIA 2010-2019
*
* 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-12 Ernesta Birznieka-Upisha
* 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
*
*/
#pragma once
#include "../../../DesktopEditor/common/Types.h"
namespace PPT_FORMAT
{
enum AnimAfterEffectEnum : BYTE
{
AI_NoAfterEffect,
AI_Dim,
AI_Hide,
AI_HideImmediately
};
enum AnimBuildTypeEnum : BYTE
{
BT_NoBuild,
BT_OneBuild,
BT_Level1Build,
BT_Level2Build,
BT_Level3Build,
BT_Level4Build,
BT_Level5Build,
BT_GraphBySeries,
BT_GraphByCategory,
BT_GraphByElementInSeries,
BT_GraphByElementInCategory,
BT_FollowMaster = 0xFE
};
enum BuildTypeEnum
{
TL_BuildParagraph,
TL_BuildChart,
TL_BuildDiagram
};
enum ChartBuildEnum
{
TLCB_AsOneObject,
TLCB_BySeries,
TLCB_ByCategory,
TLCB_ByElementInSeries,
TLCB_ByElementInCategory,
TLCB_Custom
};
enum ColorModeEnum : BYTE
{
CM_BlackAndWhite,
CM_Grayscale,
CM_Color
};
// TODO add different tupes for enum
enum ConditionEnum
{
TL_CT_None,
TL_CT_Begin,
TL_CT_End,
TL_CT_Next,
TL_CT_Previous,
TL_CT_EndSync
};
enum DiagramBuildEnum
{
TLDB_AsOneObject,
TLDB_DepthByNode,
TLDB_DepthByBranch,
TLDB_BreadthByNode,
TLDB_BreadthByLevel,
TLDB_ClockWise,
TLDB_ClockWiseIn,
TLDB_ClockWiseOut,
TLDB_CounterClockWise,
TLDB_CounterClockWiseIn,
TLDB_CounterClockWiseOut,
TLDB_InByRing,
TLDB_OutByRing,
TLDB_Up,
TLDB_Down,
TLDB_AllAtOnce,
TLDB_Custom
};
enum DiffTypeEnum
{
Diff_DocDiff,
Diff_SlideDiff = 0x2,
Diff_MainMasterDiff,
Diff_SlideListDiff,
Diff_MasterListDiff,
Diff_ShapeListDiff,
Diff_ShapeDiff,
Diff_TextDiff = 0x9,
Diff_NotesDiff,
Diff_SlideShowDiff,
Diff_HeaderFooterDiff,
Diff_NamedShowDiff = 0xE,
Diff_NamedShowListDiff,
Diff_RecolorInfoDiff = 0x12,
Diff_ExternalObjectDiff,
Diff_TableListDiff = 0x15,
Diff_TableDiff,
Diff_InteractiveInfoDiff
};
enum ElementTypeEnum
{
TL_ET_ShapeType = 1,
TL_ET_SoundType
};
enum ExColorFollowEnum
{
ExColor_FollowNone,
ExColor_FollowScheme,
ExColor_FollowTextAndBackground
};
enum ExOleObjSubTypeEnum
{
ExOleSub_Default,
ExOleSub_Clipart,
ExOleSub_WordDoc,
ExOleSub_Excel,
ExOleSub_Graph,
ExOleSub_OrgChart,
ExOleSub_Equation,
ExOleSub_WordArt,
ExOleSub_Sound,
ExOleSub_Project = 0xC,
ExOleSub_NoteIt,
ExOleSub_ExcelChart,
ExOleSub_MediaPlayer,
ExOleSub_WordPad,
ExOleSub_Visio,
ExOleSub_WordODF,
ExOleSub_ExcelODF,
ExOleSub_PPTODF
};
enum ExOleObjTypeEnum
{
ExOle_Embedded,
ExOle_Link,
ExOle_Control
};
enum InteractiveInfoActionEnum
{
II_NoAction,
II_MacroAction,
II_RunProgramAction,
II_JumpAction,
II_HyperlinkAction,
II_OLEAction,
II_MediaAction,
II_CustomShowAction
};
enum InteractiveInfoJumpEnum
{
II_NoJump,
II_NextSlide,
II_PreviousSlide,
II_FirstSlide,
II_LastSlide,
II_LastSlideViewed,
II_EndShow
};
enum LinkToEnum
{
LT_NextSlide,
LT_PreviousSlide,
LT_FirstSlide,
LT_LastSlide,
LT_CustomShow = 0x6,
LT_SlideNumber,
LT_Url,
LT_OtherPresentation,
LT_OtherFile,
LT_Nil = 0xFF
};
enum NormalViewSetBarStates
{
BS_Minimized,
BS_Restored,
BS_Maximized
};
enum OLEVerbEnum
{
OV_Primary,
OV_Secondary,
OV_Tertiary
};
enum ParaBuildEnum
{
TLPB_AllAtOnce,
TLPB_BuildByNthLevel,
TLPB_CustomBuild,
TLPB_AsAWhole
};
enum PhotoAlbumFrameShapeEnum
{
PA_Rectangle,
PA_RoundedRectangle,
PA_Beveled,
PA_Oval,
PA_Octagon,
PA_Cross,
PA_Plaque
};
enum PhotoAlbumLayoutEnum
{
PA_FitToSlide,
PA_OnePicture,
PA_TwoPictures,
PA_FourPictures,
PA_OnePictureAndTitle,
PA_TwoPicturesAndTitle,
PA_FourPicturesAndTitle
};
enum PlaceholderEnum : BYTE
{
PT_None,
PT_MasterTitle,
PT_MasterBody,
PT_MasterCenterTitle,
PT_MasterSubTitle,
PT_MasterNotesSlideImage,
PT_MasterNotesBody,
PT_MasterDate,
PT_MasterSlideNumber,
PT_MasterFooter,
PT_MasterHeader,
PT_NotesSlideImage,
PT_NotesBody,
PT_Title,
PT_Body,
PT_CenterTitle,
PT_SubTitle,
PT_VerticalTitle,
PT_VerticalBody,
PT_Object,
PT_Graph,
PT_Table,
PT_ClipArt,
PT_OrgChart,
PT_Media,
PT_VerticalObject,
PT_Picture,
PT_Body_Empty = 0xFF
};
enum PlaceholderSize
{
PS_Full,
PS_Half,
PS_Quarter
};
enum PrintWhatEnum
{
PW_Slides,
PW_BuildSlides,
PW_Handouts2,
PW_Handouts3,
PW_Handouts6,
PW_Notes,
PW_Outline,
PW_Handouts4,
PW_Handouts9,
PW_Handouts1
};
enum SlideLayoutType
{
SL_TitleSlide,
SL_TitleBody,
SL_MasterTitle,
SL_TitleOnly = 0x7,
SL_TwoColumns,
SL_TwoRows,
SL_ColumnTwoRows,
SL_TwoRowsColumn,
SL_TwoColumnsRow = 0xD,
SL_FourObjects,
SL_BigObject,
SL_Blank,
SL_VerticalTitleBody,
SL_VerticalTwoRows
};
enum SlideSizeEnum
{
SS_Screen,
SS_LetterPaper,
SS_A4Paper,
SS_35mm,
SS_Overhead,
SS_Banner,
SS_Custom
};
enum TextAlignmentEnum
{
Tx_ALIGNLeft,
Tx_ALIGNCenter,
Tx_ALIGNRight,
Tx_ALIGNJustify,
Tx_ALIGNDistributed,
Tx_ALIGNThaiDistributed,
Tx_ALIGNJustifyLow
};
enum TextAutoNumberSchemeEnum : USHORT
{
ANM_AlphaLcPeriod,
ANM_AlphaUcPeriod,
ANM_ArabicParenRight,
ANM_ArabicPeriod,
ANM_RomanLcParenBoth,
ANM_RomanLcParenRight,
ANM_RomanLcPeriod,
ANM_RomanUcPeriod,
ANM_AlphaLcParenBoth,
ANM_AlphaLcParenRight,
ANM_AlphaUcParenBoth,
ANM_AlphaUcParenRight,
ANM_ArabicParenBoth,
ANM_ArabicPlain,
ANM_RomanUcParenBoth,
ANM_RomanUcParenRight,
ANM_ChsPlain,
ANM_ChsPeriod,
ANM_CircleNumDBPlain,
ANM_CircleNumWDBWhitePlain,
ANM_CircleNumWDBBlackPlain,
ANM_ChtPlain,
ANM_ChtPeriod,
ANM_Arabic1Minus,
ANM_Arabic2Minus,
ANM_Hebrew2Minus,
ANM_JpnKorPlain,
ANM_JpnKorPeriod,
ANM_ArabicDbPlain,
ANM_ArabicDbPeriod,
ANM_ThaiAlphaPeriod,
ANM_ThaiAlphaParenRight,
ANM_ThaiAlphaParenBoth,
ANM_ThaiNumPeriod,
ANM_ThaiNumParenRight,
ANM_ThaiNumParenBoth,
ANM_HindiAlphaPeriod,
ANM_HindiNumPeriod,
ANM_JpnChsDBPeriod,
ANM_HindiNumParenRight,
ANM_HindiAlpha1Period
};
enum TextBuildSubEffectEnum
{
TXB_BuildByNone,
TXB_BuildByWord,
TXB_BuildByCharacter
};
enum TextDirectionEnum
{
LeftToRight,
RightToLeft
};
enum TextFontAlignmentEnum
{
Tx_ALIGNFONTRoman,
Tx_ALIGNFONTHanging,
Tx_ALIGNFONTCenter,
Tx_ALIGNFONTUpholdFixed
};
enum TextTabTypeEnum
{
Tx_TABLeft,
Tx_TABCenter,
Tx_TABRight,
Tx_TABDecimal
};
enum TextTypeEnum : unsigned
{
Tx_TYPE_TITLE,
Tx_TYPE_BODY,
Tx_TYPE_NOTES,
Tx_TYPE_OTHER = 0x4,
Tx_TYPE_CENTERBODY,
Tx_TYPE_CENTERTITLE,
Tx_TYPE_HALFBODY,
Tx_TYPE_QUARTERBODY,
NoPresent = 0xFF
};
enum TimeAnimateBehaviorValueTypeEnum
{
TL_TABVT_String,
TL_TABVT_Number,
TL_TABVT_Color
};
enum TimeCommandBehaviorTypeEnum
{
TL_TCBT_Eventv,
TL_TCBT_Call,
TL_TCBT_OleVerb
};
enum TimeNodeTypeEnum
{
TL_TNT_Parallel,
TL_TNT_Sequential,
TL_TNT_Behavior = 0x3,
TL_TNT_Media
};
enum TimePropertyID4TimeBehavior
{
TL_TBPID_UnknownPropertyList = 0x1,
TL_TBPID_RuntimeContext,
TL_TBPID_MotionPathEditRelative,
TL_TBPID_ColorColorModel,
TL_TBPID_ColorDirection,
TL_TBPID_Override,
TL_TBPID_PathEditRotationAngle,
TL_TBPID_PathEditRotationX,
TL_TBPID_PathEditRotationY,
TL_TBPID_PointsTypes
};
enum TimePropertyID4TimeNode
{
TL_TPID_Display = 0x02,
TL_TPID_MasterPos = 0x05,
TL_TPID_SubType,
TL_TPID_EffectID = 0x09,
TL_TPID_EffectDir,
TL_TPID_EffectType,
TL_TPID_AfterEffect = 0x0D,
TL_TPID_SlideCount = 0x0F,
TL_TPID_TimeFilter,
TL_TPID_EventFilter,
TL_TPID_HideWhenStopped,
TL_TPID_GroupID,
TL_TPID_EffectNodeType,
TL_TPID_PlaceholderNode,
TL_TPID_MediaVolume,
TL_TPID_MediaMute,
TL_TPID_ZoomToFullScreen = 0x1A
};
enum TimeVariantTypeEnum
{
TL_TVT_Bool,
TL_TVT_Int,
TL_TVT_Float,
TL_TVT_String
};
enum TimeVisualElementEnum
{
TL_TVET_Shape,
TL_TVET_Page,
TL_TVET_TextRange,
TL_TVET_Audio,
TL_TVET_Video,
TL_TVET_ChartElement,
TL_TVET_ShapeOnly,
TL_TVET_AllTextRange = 0x8
};
enum TriggerObjectEnum
{
TL_TOT_None,
TL_TOT_VisualElement,
TL_TOT_TimeNode,
TL_TOT_RuntimeNodeRef
};
enum ViewTypeEnum
{
V_Slide,
V_SlideMaster,
V_Notes,
V_Handout,
V_NotesMaster,
V_OutlineMaster,
V_Outline,
V_SlideSorter,
V_VisualBasic,
V_TitleMaster,
V_SlideShow,
V_SlideShowFullScreen,
V_NotesText,
V_PrintPreview,
V_Thumbnails,
V_MasterThumbnails,
V_PodiumSlideView,
V_PodiumNotesView
};
enum WebFrameColorsEnum
{
MSOWOPTBrowserColors,
MSOWOPTPresentationSchemeTextColor,
MSOWOPTPresentationSchemeAccentColor,
MSOWOPTWhiteTextOnBlack,
MSOWOPTBlackTextOnWhite
};
enum WebOutputEnum
{
HTML_EXPORTVersion3 = 0x1,
HTML_EXPORTVersion4,
HTML_EXPORTDual = 0x4
};
}

View File

@ -27,7 +27,359 @@ DEFINES += UNICODE \
#DISABLE_FILE_DOWNLOADER
HEADERS += \
# ../../../ASCOfficePPTXFile/Editor/Drawing/Animations.h \
# ../../../ASCOfficePPTXFile/Editor/Drawing/Attributes.h \
# ../../../ASCOfficePPTXFile/Editor/Drawing/AudioOverlay.h \
# ../../../ASCOfficePPTXFile/Editor/Drawing/Document.h \
# ../../../ASCOfficePPTXFile/Editor/Drawing/Effects.h \
# ../../../ASCOfficePPTXFile/Editor/Drawing/Interactive.h \
# ../../../ASCOfficePPTXFile/Editor/Drawing/Metric.h \
# ../../../ASCOfficePPTXFile/Editor/Drawing/SlideShow.h \
# ../../../ASCOfficePPTXFile/Editor/Drawing/Structures.h \
# ../../../ASCOfficePPTXFile/Editor/Drawing/XmlStringWriter.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Limit/AlbumLayout.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Limit/AnimationDgmBuild.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Limit/BWMode.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Limit/BaseLimit.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Limit/BevelType.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Limit/BlendMode.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Limit/BlipCompression.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Limit/CameraType.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Limit/ChartBuild.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Limit/ChartBuildType.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Limit/ColorSchemeIndex.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Limit/CompoundLine.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Limit/Conformance.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Limit/ContentStatus.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Limit/CornerDirectionVal.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Limit/DgmBuild.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Limit/DgmBuildType.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Limit/EffectContainerType.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Limit/EightDirectionVal.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Limit/FillPath.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Limit/Flip.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Limit/FontAlign.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Limit/FontStyleIndex.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Limit/FrameShape.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Limit/HorzOverflow.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Limit/InOutDirectionVal.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Limit/IterateType.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Limit/LastView.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Limit/LightRigType.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Limit/LineCap.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Limit/LineEndSize.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Limit/LineEndType.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Limit/Material.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Limit/OnOff.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Limit/Orient.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Limit/ParaBuildType.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Limit/PathFillMode.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Limit/PattFillVal.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Limit/PenAlign.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Limit/PlaceholderSize.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Limit/PlaceholderType.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Limit/PresetShadowVal.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Limit/PrstClrVal.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Limit/PrstDashVal.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Limit/RectAlign.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Limit/SchemeClrVal.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Limit/ShapeType.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Limit/SideDirectionVal.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Limit/SlideLayoutType.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Limit/SlideSize.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Limit/SplitterBarState.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Limit/SysClrVal.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Limit/TLAccumulate.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Limit/TLAdditive.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Limit/TLCalcMode.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Limit/TLChartSubElement.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Limit/TLColorDirection.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Limit/TLColorSpace.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Limit/TLCommandType.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Limit/TLMasterRelation.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Limit/TLNextAc.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Limit/TLNodeFillType.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Limit/TLNodeType.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Limit/TLOrigin.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Limit/TLOverride.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Limit/TLPathEditMode.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Limit/TLPresetClass.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Limit/TLPrevAc.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Limit/TLRestart.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Limit/TLRuntimeTrigger.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Limit/TLSyncBehavior.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Limit/TLTransform.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Limit/TLTransition.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Limit/TLTriggerEvent.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Limit/TLValueType.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Limit/TextAlign.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Limit/TextAnchor.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Limit/TextAutonumberScheme.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Limit/TextCaps.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Limit/TextShapeType.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Limit/TextStrike.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Limit/TextTabAlignType.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Limit/TextUnderline.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Limit/TextVerticalType.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Limit/TextWrap.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Limit/TransitionSpeed.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Limit/VariantType.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Limit/VertOverflow.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Ah.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/AhBase.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/AhPolar.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/AhXY.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Backdrop.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Bevel.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Bg.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/BgPr.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/BodyPr.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Bullets/BuAutoNum.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Bullets/BuBlip.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Bullets/BuChar.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Bullets/BuClr.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Bullets/BuClrTx.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Bullets/BuFontTx.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Bullets/BuNone.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Bullets/BuSzPct.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Bullets/BuSzPts.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Bullets/BuSzTx.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Bullets/Bullet.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Bullets/BulletColor.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Bullets/BulletSize.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Bullets/BulletTypeface.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/CNvCxnSpPr.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/CNvGraphicFramePr.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/CNvGrpSpPr.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/CNvPicPr.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/CNvPr.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/CNvSpPr.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/CSld.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Camera.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Cell3D.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/ClrMap.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/ClrMapOvr.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Colors/ColorBase.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Colors/ColorModifier.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Colors/PrstClr.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Colors/SchemeClr.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Colors/SrgbClr.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Colors/SysClr.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/ContentPart.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Controls.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/CustGeom.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Cxn.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/CxnSp.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/DefaultShapeDefinition.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/EffectDag.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/EffectLst.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/EffectProperties.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/EffectStyle.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Effects/AlphaBiLevel.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Effects/AlphaCeiling.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Effects/AlphaFloor.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Effects/AlphaInv.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Effects/AlphaMod.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Effects/AlphaModFix.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Effects/AlphaOutset.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Effects/AlphaRepl.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Effects/BiLevel.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Effects/Blend.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Effects/Blur.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Effects/ClrChange.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Effects/ClrRepl.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Effects/Duotone.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Effects/EffectElement.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Effects/FillEffect.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Effects/FillOverlay.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Effects/Glow.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Effects/Grayscl.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Effects/HslEffect.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Effects/InnerShdw.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Effects/LumEffect.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Effects/OuterShdw.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Effects/PrstShdw.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Effects/Reflection.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Effects/RelOff.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Effects/SoftEdge.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Effects/TintEffect.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Effects/XfrmEffect.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/ExtP.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/FillStyle.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Fills/Blip.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Fills/BlipFill.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Fills/GradFill.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Fills/NoFill.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Fills/PattFill.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Fills/SolidFill.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Fills/Stretch.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Fills/Tile.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/FontCollection.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/FontRef.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Gd.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Geometry.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/GraphicFrame.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/GrpSpPr.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Gs.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/HeadingVariant.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Hf.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Hyperlink.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/LightRig.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Lin.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/LineEnd.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/LineJoin.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/LineStyle.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Ln.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Media/AudioCD.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Media/MediaFile.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Media/WavAudioFile.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/NvCxnSpPr.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/NvGraphicFramePr.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/NvGrpSpPr.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/NvPicPr.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/NvPr.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/NvSpPr.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Paragraph.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/PartTitle.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Path.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Path2D.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Path2D/ArcTo.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Path2D/Close.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Path2D/CubicBezTo.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Path2D/LineTo.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Path2D/MoveTo.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Path2D/PathBase.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Path2D/QuadBezTo.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Ph.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Pic.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/PrstDash.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/PrstGeom.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/PrstTxWarp.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Rect.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Rot.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/RunElem.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/RunProperties.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Runs/Br.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Runs/Fld.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Runs/MathParaWrapper.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Runs/Run.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Runs/RunBase.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Scene3d.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Shape.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/ShapeStyle.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/SmartArt.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Sp3d.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/SpPr.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/SpTree.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/SpTreeElem.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/StyleRef.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/SupplementalFont.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Tab.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Table/Table.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Table/TableCell.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Table/TableCellProperties.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Table/TableCol.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Table/TableProperties.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Table/TableRow.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/TableBgStyle.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/TablePartStyle.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/TableStyle.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/TcBdr.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/TcStyle.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/TcTxStyle.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/TextFit.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/TextFont.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/TextListStyle.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/TextParagraphPr.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/TextSpacing.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Timing/Anim.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Timing/AnimClr.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Timing/AnimEffect.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Timing/AnimMotion.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Timing/AnimRot.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Timing/AnimScale.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Timing/AnimVariant.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Timing/AttrName.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Timing/AttrNameLst.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Timing/Audio.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Timing/BldDgm.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Timing/BldGraphic.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Timing/BldLst.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Timing/BldOleChart.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Timing/BldP.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Timing/BldSub.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Timing/BuildNodeBase.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Timing/CBhvr.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Timing/CMediaNode.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Timing/CTn.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Timing/ChildTnLst.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Timing/Cmd.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Timing/Cond.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Timing/CondLst.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Timing/Excl.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Timing/GraphicEl.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Timing/Iterate.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Timing/Par.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Timing/Seq.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Timing/Set.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Timing/SpTgt.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Timing/Tav.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Timing/TavLst.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Timing/TgtEl.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Timing/TimeNodeBase.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Timing/Timing.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Timing/Tmpl.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Timing/TmplLst.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Timing/TnLst.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Timing/TxEl.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Timing/Video.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Transitions/CornerDirectionTransition.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Transitions/EightDirectionTransition.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Transitions/EmptyTransition.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Transitions/OptionalBlackTransition.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Transitions/OrientationTransition.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Transitions/SideDirectionTransition.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Transitions/SndAc.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Transitions/SplitTransition.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Transitions/StSnd.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Transitions/Transition.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Transitions/TransitionBase.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Transitions/WheelTransition.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Transitions/ZoomTransition.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/TxBody.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/TxStyles.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/UniColor.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/UniEffect.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/UniFill.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/UniMedia.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/UniPath2D.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Xfrm.h \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/XmlId.h \
../Enums/RecordType.h \
../Enums/_includer.h \
../Enums/enums.h \
../PPTFormatLib.h \
../PPTXWriter/TimingConverter.h \
../PPTXWriter/TimingConverter/Anim.h \
../PPTXWriter/TimingConverter/AnimClr.h \
../PPTXWriter/TimingConverter/AnimEffect.h \
../PPTXWriter/TimingConverter/AnimMotion.h \
../PPTXWriter/TimingConverter/AnimRot.h \
../PPTXWriter/TimingConverter/AnimScale.h \
../PPTXWriter/TimingConverter/Audio.h \
../PPTXWriter/TimingConverter/BldLst.h \
../PPTXWriter/TimingConverter/BldP.h \
../PPTXWriter/TimingConverter/CBhvr.h \
../PPTXWriter/TimingConverter/CTn.h \
../PPTXWriter/TimingConverter/Cmd.h \
../PPTXWriter/TimingConverter/Cond.h \
../PPTXWriter/TimingConverter/Par.h \
../PPTXWriter/TimingConverter/Seq.h \
../PPTXWriter/TimingConverter/Set.h \
../PPTXWriter/TimingConverter/TgtEl.h \
../PPTXWriter/TimingConverter/TnChildren.h \
../PPTXWriter/TimingConverter/TnLst.h \
../PPTXWriter/TimingConverter/Video.h \
../Reader/ClassesAtom.h \
../Reader/CommonZLib.h \
../Reader/PPTDocumentInfo.h \
@ -39,10 +391,79 @@ HEADERS += \
../Reader/Slide.h \
../Reader/SlideInfo.h \
../Reader/SlidePersist.h \
../Records/AnimationInfoAtom.h \
../Records/Animations/AnimationInfoAtom.h \
../Records/Animations/AnimationInfoContainer.h \
../Records/Animations/BuildAtom.h \
../Records/Animations/BuildListContainer.h \
../Records/Animations/ChartBuildAtom.h \
../Records/Animations/ChartBuildContainer.h \
../Records/Animations/ClientVisualElementContainer.h \
../Records/Animations/DiagramBuildAtom.h \
../Records/Animations/DiagramBuildContainer.h \
../Records/Animations/ExtTimeNodeContainer.h \
../Records/Animations/HashCode10Atom.h \
../Records/Animations/LevelInfoAtom.h \
../Records/Animations/ParaBuildAtom.h \
../Records/Animations/ParaBuildContainer.h \
../Records/Animations/ParaBuildLevel.h \
../Records/Animations/SubEffectContainer.h \
../Records/Animations/TimeAnimateBehaviorAtom.h \
../Records/Animations/TimeAnimateBehaviorContainer.h \
../Records/Animations/TimeAnimateColor.h \
../Records/Animations/TimeAnimateColorBy.h \
../Records/Animations/TimeAnimationValueAtom.h \
../Records/Animations/TimeAnimationValueListContainer.h \
../Records/Animations/TimeAnimationValueListEntry.h \
../Records/Animations/TimeBehaviorAtom.h \
../Records/Animations/TimeBehaviorContainer.h \
../Records/Animations/TimeColorBehaviorAtom.h \
../Records/Animations/TimeColorBehaviorContainer.h \
../Records/Animations/TimeCommandBehaviorAtom.h \
../Records/Animations/TimeCommandBehaviorContainer.h \
../Records/Animations/TimeConditionAtom.h \
../Records/Animations/TimeConditionContainer.h \
../Records/Animations/TimeDisplayType.h \
../Records/Animations/TimeEffectBehaviorAtom.h \
../Records/Animations/TimeEffectBehaviorContainer.h \
../Records/Animations/TimeEffectID.h \
../Records/Animations/TimeEffectNodeType.h \
../Records/Animations/TimeEffectType.h \
../Records/Animations/TimeGroupID.h \
../Records/Animations/TimeIterateDataAtom.h \
../Records/Animations/TimeMasterRelType.h \
../Records/Animations/TimeModifierAtom.h \
../Records/Animations/TimeMotionBehaviorAtom.h \
../Records/Animations/TimeMotionBehaviorContainer.h \
../Records/Animations/TimeNodeAtom.h \
../Records/Animations/TimeNodeTimeFilter.h \
../Records/Animations/TimePropertyList4TimeBehavior.h \
../Records/Animations/TimePropertyList4TimeNodeContainer.h \
../Records/Animations/TimeRotationBehaviorAtom.h \
../Records/Animations/TimeRotationBehaviorContainer.h \
../Records/Animations/TimeScaleBehaviorAtom.h \
../Records/Animations/TimeScaleBehaviorContainer.h \
../Records/Animations/TimeSequenceDataAtom.h \
../Records/Animations/TimeSetBehaviorAtom.h \
../Records/Animations/TimeSetBehaviorContainer.h \
../Records/Animations/TimeStringListContainer.h \
../Records/Animations/TimeVariant.h \
../Records/Animations/TimeVariant4Behavior.h \
../Records/Animations/VisualPageAtom.h \
../Records/Animations/VisualShapeAtom.h \
../Records/Animations/VisualShapeChartElementAtom.h \
../Records/Animations/VisualShapeGeneralAtom.h \
../Records/Animations/VisualSoundAtom.h \
../Records/Animations/_includer.h \
../Records/BlipEntityAtom.h \
../Records/BookmarkEntityAtom.h \
../Records/BookmarkSeedAtom.h \
../Records/BuildAtom.h \
../Records/DocInfoListContainer.h \
../Records/DocProgTagsContainer.h \
../Records/OfficeArtClientData.h \
../Records/PlaceHolderAtom.h \
../Records/ShapeProgBinaryTagSubContainerOrAtom.h \
../Records/CFMasks.h \
../Records/ColorSchemeAtom.h \
../Records/CString.h \
../Records/CurrentUserAtom.h \
@ -71,6 +492,9 @@ HEADERS += \
../Records/HeadersFootersAtom.h \
../Records/InteractiveInfoAtom.h \
../Records/KinsokuAtom.h \
../Records/KinsokuContainer.h \
../Records/KinsokuFollowingAtom.h \
../Records/KinsokuLeadingAtom.h \
../Records/MasterPersistAtom.h \
../Records/MasterTextPropAtom.h \
../Records/MetafileBlob.h \
@ -81,8 +505,14 @@ HEADERS += \
../Records/NotesPersistAtom.h \
../Records/NoZoomViewInfoAtom.h \
../Records/OutlineTextRefAtom.h \
../Records/FontCollection10Container.h \
../Records/FontEmbedFlags10Atom.h \
../Records/OutlineTextProps9Container.h \
../Records/OutlineTextPropsHeaderExAtom.h \
../Records/PFMasks.h \
../Records/PersistDirectoryAtom.h \
../Records/PlaceHolderAtom.h \
../Records/ProgStringTagContainer.h \
../Records/RecordsIncluder.h \
../Records/RoundTripColorMappingAtom.h \
../Records/RoundTripCompositeMainMasterId12Atom.h \
@ -91,11 +521,18 @@ HEADERS += \
../Records/RoundTripThemeAtom.h \
../Records/ShapeFlags10Atom.h \
../Records/ShapeFlagsAtom.h \
../Records/Comment10Container.h \
../Records/LinkedShape10Atom.h \
../Records/LinkedSlide10Atom.h \
../Records/SlideFlags10Atom.h \
../Records/SlideProgTagsContainer.h \
../Records/SlideTime10Atom.h \
../Records/SlideAtom.h \
../Records/SlideColorSchemeAtom.h \
../Records/SlideContainer.h \
../Records/SlideListWithText.h \
../Records/SlidePersistAtom.h \
../Records/SlideProgTagsContainer.h \
../Records/SlideViewInfoAtom.h \
../Records/SoundCollAtom.h \
../Records/SoundCollectionContainer.h \
@ -105,6 +542,15 @@ HEADERS += \
../Records/SSlideLayoutAtom.h \
../Records/SSSlideInfoAtom.h \
../Records/StyleTextPropAtom.h \
../Records/StyleTextProp10Atom.h \
../Records/StyleTextProp11Atom.h \
../Records/StyleTextProp9Atom.h \
../Records/TextCFException10.h \
../Records/TextCFException9.h \
../Records/TextDefaults9Atom.h \
../Records/TextMasterStyle9Atom.h \
../Records/TextMasterStyle9Level.h \
../Records/TextSIException.h \
../Records/TextBookmarkAtom.h \
../Records/TextBytesAtom.h \
../Records/TextCFExceptionAtom.h \
@ -112,7 +558,10 @@ HEADERS += \
../Records/TextFullSettings.h \
../Records/TextHeaderAtom.h \
../Records/TextInteractiveInfoAtom.h \
../Records/TextMasterStyle9Atom.h \
../Records/TextMasterStyle9Level.h \
../Records/TextMasterStyleAtom.h \
../Records/TextPFException9.h \
../Records/TextPFExceptionAtom.h \
../Records/TextRulerAtom.h \
../Records/TextSIExceptionAtom.h \
@ -148,7 +597,20 @@ HEADERS += \
../../../ASCOfficePPTXFile/Editor/Drawing/TextAttributesEx.h \
../../../ASCOfficePPTXFile/Editor/Drawing/TextStructures.h \
../../../ASCOfficePPTXFile/Editor/Drawing/Theme.h \
../../../Common/3dParty/pole/pole.h
../../../Common/3dParty/pole/pole.h \
../Structures/ColorIndex.h \
../Structures/ColorIndexStruct.h \
../Structures/ColorStruct.h \
../Structures/DateTimeStruct.h \
../Structures/IStruct.h \
../Structures/PointStruct.h \
../Structures/RatioStruct.h \
../Structures/RectStruct.h \
../Structures/ScalingStruct.h \
../Structures/SmallRectStruct.h \
../Structures/TmsfTimeStruct.h \
../Structures/WideColorStruct.h \
../Structures/_includer.h
core_release {
SOURCES += \
@ -162,7 +624,6 @@ SOURCES += \
../Reader/Records.cpp \
../Reader/PPTFileReader.cpp \
../Reader/SlidePersist.cpp \
../Records/Animations/AnimationTypes.cpp \
../Records/Drawing/ArtBlip.cpp \
../Records/Drawing/ShapeContainer.cpp \
../PPTXWriter/Converter.cpp \
@ -170,8 +631,45 @@ SOURCES += \
}
SOURCES += \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Bg.cpp \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/CNvGrpSpPr.cpp \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Colors/SchemeClr.cpp \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/ContentPart.cpp \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Controls.cpp \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/CxnSp.cpp \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/EffectDag.cpp \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/EffectLst.cpp \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/EffectProperties.cpp \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/EffectStyle.cpp \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Fills/Blip.cpp \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Fills/BlipFill.cpp \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Geometry.cpp \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/GraphicFrame.cpp \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/GrpSpPr.cpp \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Hyperlink.cpp \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Media/WavAudioFile.cpp \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/NvGraphicFramePr.cpp \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/NvGrpSpPr.cpp \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Pic.cpp \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Runs/MathParaWrapper.cpp \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Shape.cpp \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/SmartArt.cpp \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/SpPr.cpp \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/SpTree.cpp \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/SpTreeElem.cpp \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Table/TableCell.cpp \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Timing/BuildNodeBase.cpp \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Timing/TimeNodeBase.cpp \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/Transitions/TransitionBase.cpp \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/TxBody.cpp \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/UniColor.cpp \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/UniEffect.cpp \
# ../../../ASCOfficePPTXFile/PPTXFormat/Logic/UniFill.cpp \
../Enums/RecordType.cpp \
../PPTFormatLib.cpp \
../../../ASCOfficePPTXFile/Editor/Drawing/Elements.cpp \
../../../ASCOfficePPTXFile/Editor/Drawing/TextAttributesEx.cpp \
../../../Common/3dParty/pole/pole.cpp
../../../Common/3dParty/pole/pole.cpp \
../PPTXWriter/TimingConverter.cpp \
../Records/Animations/TimeVariant.cpp

View File

@ -35,7 +35,7 @@
#include "../Reader/PPTFileReader.cpp"
#include "../Reader/Records.cpp"
#include "../Reader/SlidePersist.cpp"
#include "../Records/Animations/AnimationTypes.cpp"
//#include "../Records/Animations/AnimationTypes.cpp"
#include "../Records/Drawing/ArtBlip.cpp"
#include "../Records/Drawing/ShapeContainer.cpp"
#include "../PPTXWriter/Converter.cpp"

File diff suppressed because it is too large Load Diff

View File

@ -32,10 +32,14 @@
#pragma once
#include "ImageManager.h"
#include "TimingConverter.h"
class CStylesWriter;
class CPPTUserInfo;
class CStringWriter;
class CSlideShowInfo;
namespace PPT_FORMAT
{
@ -78,8 +82,9 @@ namespace PPT_FORMAT
void WriteLayout (CLayoutPtr pLayout, int nIndexLayout, int nStartLayout, int nIndexTheme);
void WriteSlide (int nIndexSlide);
void WriteNotes (int nIndexNotes);
void WriteTiming (CStringWriter& oWriter, PPTX::Logic::Timing &oTiming); // TODO write spec class for timing
void WriteTransition (CStringWriter& oWriter, CTransition& transition);
void WriteTransition (CStringWriter& oWriter, CSlideShowInfo& oSSInfo);
void WriteColorScheme (CStringWriter& oWriter, const std::wstring & name, const std::vector<CColor> & colors, bool extra = false);
void WriteBackground (CStringWriter& oWriter, CRelsGenerator& oRels, CBrush& oBackground);
void WriteElement (CStringWriter& oWriter, CRelsGenerator& oRels, CElementPtr pElement, CLayout* pLayout = NULL);

View File

@ -156,6 +156,12 @@ void CStylesWriter::ConvertStyleLevel(PPT_FORMAT::CTextStyleLevel& oLevel, PPT_F
oWriter.WriteStringXML(std::wstring(&bu, 1));
oWriter.WriteString(L"\"/>");
}
// if (!pPF->bulletAutoNum.is_init())
// {
// oWriter.WriteString(L"<a:buAutoNum type=\"");
// oWriter.WriteString(L"arabicPeriod");
// oWriter.WriteString(L"\"/>");
// }
}
else
{
@ -1190,14 +1196,14 @@ void PPT_FORMAT::CShapeWriter::WriteTextInfo()
}
m_oWriter.WriteString(L"</a:bodyPr>");
if (0 == nCount)
if (0 == nCount)
{
m_oWriter.WriteString(L"<a:lstStyle/><a:p><a:endParaRPr dirty=\"0\"/></a:p></p:txBody>");
return;
}
m_oWriter.WriteString(L"<a:lstStyle>");
if (!m_bWordArt)
if (!m_bWordArt)
{
CStylesWriter styleWriter(m_pTheme);
styleWriter.ConvertStyles(pShapeElement->m_pShape->m_oText.m_oStyles, m_oWriter);
@ -1337,6 +1343,12 @@ void PPT_FORMAT::CShapeWriter::WriteTextInfo()
}
m_oWriter.WriteString(std::wstring(L"/>"));
}
if (pPF->bulletAutoNum.is_init()) // TODO Numbering
{
m_oWriter.WriteString(L"<a:buAutoNum type=\"");
m_oWriter.WriteString(pPF->bulletAutoNum->type.get());
m_oWriter.WriteString(L"\"/>");
}
bool set = true;
if (pPF->bulletFontProperties.is_init() == false && pPF->bulletSize.is_init() == false)
@ -2721,4 +2733,4 @@ HRESULT PPT_FORMAT::CShapeWriter::put_ClipMode(const LONG& lMode)
{
m_lClipMode = lMode;
return S_OK;
}
}

View File

@ -0,0 +1,28 @@
#include "TimingConverter.h"
#include "TimingConverter/BldLst.h"
#include "TimingConverter/TnLst.h"
using namespace PPT_FORMAT;
void PPT_FORMAT::ConvertPP10SlideBinaryTagExtensionToTiming(PPT_FORMAT::CRecordPP10SlideBinaryTagExtension &oRec, PPTX::Logic::Timing &oTm)
{
if (oRec.m_haveExtTime)
{
// gCTnID = 1;
oTm.tnLst = new PPTX::Logic::TnLst();
ConvertCRecordExtTimeNodeContainerToTnLst(oRec.m_pExtTimeNodeContainer, *(oTm.tnLst));
}
if (oRec.m_haveBuildList &&
!oRec.m_pBuildListContainer->n_arrRgChildRec.empty())
{
oTm.bldLst = new PPTX::Logic::BldLst();
ConvertCRecordBuildListContainerToBldLst(oRec.m_pBuildListContainer, *(oTm.bldLst));
}
return;
}

View File

@ -0,0 +1,41 @@
/*
* (c) Copyright Ascensio System SIA 2010-2019
*
* 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-12 Ernesta Birznieka-Upisha
* 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
*
*/
#pragma once
#include "../../../ASCOfficePPTXFile/PPTXFormat/Logic/Timing/Timing.h"
#include "../Records/SlideProgTagsContainer.h"
namespace PPT_FORMAT
{
void ConvertPP10SlideBinaryTagExtensionToTiming(PPT_FORMAT::CRecordPP10SlideBinaryTagExtension &oRec, PPTX::Logic::Timing &oTm);
}

View File

@ -0,0 +1,133 @@
/*
* (c) Copyright Ascensio System SIA 2010-2019
*
* 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-12 Ernesta Birznieka-Upisha
* 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
*
*/
#pragma once
#include "../../../ASCOfficePPTXFile/PPTXFormat/Logic/Timing/Anim.h"
#include "../../Records/Animations/ExtTimeNodeContainer.h"
#include "CBhvr.h"
#include "../Enums/_includer.h"
namespace PPT_FORMAT
{
void FillAnim(CRecordExtTimeNodeContainer* pETNC, PPTX::Logic::Anim& oAnim)
{
auto& oldAnim = pETNC->m_pTimeAnimateBehavior;
if (oldAnim->m_oAnimateBehaviorAtom.m_bCalcModePropertyUsed)
{
oAnim.calcmode = oldAnim->m_oAnimateBehaviorAtom.m_nCalcMode;
}
if (oldAnim->m_oAnimateBehaviorAtom.m_bValueTypePropertyUsed)
{
std::wstring valueType;
switch (oldAnim->m_oAnimateBehaviorAtom.m_ValueType) {
case TL_TABVT_Color: valueType = L"Color"; break;
case TL_TABVT_Number: valueType = L"Number"; break;
case TL_TABVT_String: valueType = L"String"; break;
}
if (!valueType.empty())
{
oAnim.valueType = new PPTX::Limit::TLValueType;
oAnim.valueType = valueType;
}
}
// By
if (oldAnim->m_oAnimateBehaviorAtom.m_bByPropertyUsed)
{
oAnim.by = oldAnim->m_oVarBy.m_Value;
}
// To
if (oldAnim->m_oAnimateBehaviorAtom.m_bToPropertyUsed)
{
oAnim.to = oldAnim->m_oVarTo.m_Value;
}
//From
if (oldAnim->m_oAnimateBehaviorAtom.m_bFromPropertyUsed)
{
oAnim.from = oldAnim->m_oVarFrom.m_Value;
}
//// Writing childs
if (!oldAnim->m_oAnimateValueList.m_arrEntry.empty())
oAnim.tavLst = new PPTX::Logic::TavLst;
for (auto& animValue : oldAnim->m_oAnimateValueList.m_arrEntry)
{
PPTX::Logic::Tav tav;
tav.val = new PPTX::Logic::AnimVariant;
tav.val->node_name = L"val";
if (animValue->m_pVarValue.is_init())
switch (animValue->m_pVarValue->m_Type) {
case TL_TVT_String:
{
tav.val->strVal = dynamic_cast<const CRecordTimeVariantString&>
(animValue->m_pVarValue.get()).m_Value;
break;
}
case TL_TVT_Bool:
{
tav.val->boolVal = dynamic_cast<const CRecordTimeVariantBool&>
(animValue->m_pVarValue.get()).m_Value;
break;
}
case TL_TVT_Int:
{
tav.val->intVal = dynamic_cast<const CRecordTimeVariantInt&>
(animValue->m_pVarValue.get()).m_Value;
break;
}
case TL_TVT_Float:
{
tav.val->fltVal = dynamic_cast<const CRecordTimeVariantFloat&>
(animValue->m_pVarValue.get()).m_Value;
break;
}
}
tav.tm = std::to_wstring(
animValue->m_oTimeAnimationValueAtom.m_nTime * 100);
if (!animValue->m_VarFormula.m_Value.empty())
{
tav.fmla = animValue->m_VarFormula.m_Value;
}
oAnim.tavLst->list.push_back(tav);
}
FillCBhvr(pETNC, oAnim.cBhvr);
}
}

View File

@ -0,0 +1,146 @@
/*
* (c) Copyright Ascensio System SIA 2010-2019
*
* 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-12 Ernesta Birznieka-Upisha
* 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
*
*/
#pragma once
#include "../../../ASCOfficePPTXFile/PPTXFormat/Logic/Colors/SchemeClr.h"
#include "../../../ASCOfficePPTXFile/PPTXFormat/Logic/Colors/SrgbClr.h"
#include "../../../ASCOfficePPTXFile/PPTXFormat/Logic/Timing/AnimClr.h"
#include "../../Records/Animations/ExtTimeNodeContainer.h"
#include "../../Records/Animations/TimeVariant4Behavior.h"
#include "CBhvr.h"
namespace PPT_FORMAT
{
// TODO
void FillAnimClr(
CRecordExtTimeNodeContainer* pETNC,
PPTX::Logic::AnimClr& oAnimClr)
{
auto& clrAtom = pETNC->m_pTimeColorBehavior->m_oColorBehaviorAtom;
FillCBhvr(pETNC, oAnimClr.cBhvr);
// Write Attributes
if (pETNC->m_pTimeColorBehavior->m_oBehavior.m_havePropertyList){
for (auto pRec : pETNC->m_pTimeColorBehavior->m_oBehavior.m_pPropertyList->m_arRecords)
{
if (pRec->m_oHeader.RecInstance == TL_TBPID_ColorColorModel)
{
auto oTimeColorModel = dynamic_cast<CRecordTimeColorModel*>(pRec);
oAnimClr.clrSpc = new PPTX::Limit::TLColorSpace;
std::wstring clrSpc;
if (!clrAtom.m_fColorSpacePropertyUsed) clrSpc = L"rgb";
else clrSpc = oTimeColorModel->m_Value ? L"hsl" : L"rgb";
oAnimClr.clrSpc = clrSpc;
}
else if (pRec->m_oHeader.RecInstance == TL_TBPID_ColorDirection)
{
auto oTimeColorDirection = dynamic_cast<CRecordTimeColorDirection*>(pRec);
oAnimClr.dir = new PPTX::Limit::TLColorDirection;
std::wstring dir;
if (!clrAtom.m_fDirectionPropertyUsed) dir = L"cw";
else dir = oTimeColorDirection->m_Value ? L"ccw" : L"cw";
oAnimClr.dir = dir;
}
}
}
if (clrAtom.m_fByPropertyUsed)
{
if (clrAtom.m_sColorBy.model == 0) // RGB == 0
{
oAnimClr.byR = clrAtom.m_sColorBy.component0;
oAnimClr.byG = clrAtom.m_sColorBy.component1;
oAnimClr.byB = clrAtom.m_sColorBy.component2;
}
else if (clrAtom.m_sColorBy.model == 1) // HSL == 1
{
oAnimClr.byH = clrAtom.m_sColorBy.component0;
oAnimClr.byS = clrAtom.m_sColorBy.component1;
oAnimClr.byL = clrAtom.m_sColorBy.component2;
}
}
if (clrAtom.m_fFromPropertyUsed)
{
oAnimClr.from = *new PPTX::Logic::UniColor;
if (clrAtom.m_sColorFrom.model == 0)
{
auto pSrgb = new PPTX::Logic::SrgbClr;
pSrgb->red = clrAtom.m_sColorFrom.component0;
pSrgb->green = clrAtom.m_sColorFrom.component1;
pSrgb->blue = clrAtom.m_sColorFrom.component2;
oAnimClr.from.Color = pSrgb;
}
else
{
auto pScheme = new PPTX::Logic::SchemeClr;
std::wstring strVal;
UINT index = clrAtom.m_sColorFrom.component0;
if (index >= 4 || index < 10)
{
strVal = L"accent" + std::to_wstring(index - 3);
}
pScheme->val = strVal;
oAnimClr.from.Color = pScheme;
}
}
if (clrAtom.m_fToPropertyUsed)
{
oAnimClr.to = *new PPTX::Logic::UniColor;
if (clrAtom.m_sColorTo.model == 0)
{
auto pSrgb = new PPTX::Logic::SrgbClr;
pSrgb->red = clrAtom.m_sColorTo.component0;
pSrgb->green = clrAtom.m_sColorTo.component1;
pSrgb->blue = clrAtom.m_sColorTo.component2;
oAnimClr.to.Color = pSrgb;
}
else
{
auto pScheme = new PPTX::Logic::SchemeClr;
std::wstring strVal;
UINT index = clrAtom.m_sColorTo.component0;
if (index >= 4 || index < 10)
{
strVal = L"accent" + std::to_wstring(index - 3);
}
pScheme->val = strVal;
oAnimClr.to.Color = pScheme;
}
}
}
}

View File

@ -0,0 +1,70 @@
/*
* (c) Copyright Ascensio System SIA 2010-2019
*
* 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-12 Ernesta Birznieka-Upisha
* 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
*
*/
#pragma once
#include "../../../ASCOfficePPTXFile/PPTXFormat/Logic/Timing/AnimEffect.h"
#include "../../Records/Animations/ExtTimeNodeContainer.h"
#include "CBhvr.h"
namespace PPT_FORMAT
{
void FillAnimEffect(
CRecordExtTimeNodeContainer* pETNC,
PPTX::Logic::AnimEffect& oAnim)
{
auto* bhvr = pETNC->m_pTimeEffectBehavior;
oAnim.filter = bhvr->m_oVarType.m_Value;
if (bhvr->m_effectBehaviorAtom.m_bProgressPropertyUsed)
{
if (!oAnim.progress.is_init())
oAnim.progress = new PPTX::Logic::AnimVariant;
oAnim.progress->fltVal = bhvr->m_oVarProgress.m_Value;
}
if (bhvr->m_effectBehaviorAtom.m_bRuntimeContextObsolete)
{
if (!oAnim.progress.is_init())
oAnim.progress = new PPTX::Logic::AnimVariant;
oAnim.progress->strVal = bhvr->m_oVarRuntimeContext.m_Value;
}
if (bhvr->m_effectBehaviorAtom.m_bTransitionPropertyUsed)
{
oAnim.transition = bhvr->m_effectBehaviorAtom.m_nEffectTransition ?
L"out" : L"in";
}
FillCBhvr(pETNC, oAnim.cBhvr);
}
}

View File

@ -0,0 +1,82 @@
/*
* (c) Copyright Ascensio System SIA 2010-2019
*
* 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-12 Ernesta Birznieka-Upisha
* 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
*
*/
#pragma once
#include "../../../ASCOfficePPTXFile/PPTXFormat/Logic/Timing/AnimMotion.h"
#include "../../Records/Animations/ExtTimeNodeContainer.h"
#include "CBhvr.h"
namespace PPT_FORMAT
{
void FillAnimMotion(
CRecordExtTimeNodeContainer* pETNC,
PPTX::Logic::AnimMotion& oAnim)
{
if (!pETNC || !pETNC->m_pTimeMotionBehavior) return;
auto pMotion = pETNC->m_pTimeMotionBehavior;
auto oAtom = pMotion->m_oMotionBehaviorAtom;
FillCBhvr(pETNC, oAnim.cBhvr);
if (oAtom.m_bFromPropertyUsed)
{
oAnim.fromX = oAtom.m_nXFROM;
oAnim.fromY = oAtom.m_nYFROM;
}
if (oAtom.m_bToPropertyUsed)
{
oAnim.toX = oAtom.m_nXTO;
oAnim.toY = oAtom.m_nYTO;
}
if (oAtom.m_bByPropertyUsed)
{
oAnim.byX = oAtom.m_nXBY;
oAnim.byY = oAtom.m_nYBY;
}
if (oAtom.m_bOriginPropertyUsed)
{
oAnim.origin = new PPTX::Limit::TLOrigin;
oAnim.origin->set(oAtom.m_nBehaviorOrigin == 2 ?
L"layout" : L"parent");
}
if (!pMotion->m_pVarPath->m_Value.empty())
oAnim.path = pMotion->m_pVarPath->m_Value;
oAnim.pathEditMode = new PPTX::Limit::TLPathEditMode;
oAnim.pathEditMode->set(oAtom.m_bEditRotationPropertyUsed ? L"fixed" : L"relative");
}
}

View File

@ -0,0 +1,61 @@
/*
* (c) Copyright Ascensio System SIA 2010-2019
*
* 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-12 Ernesta Birznieka-Upisha
* 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
*
*/
#pragma once
#include "../../../ASCOfficePPTXFile/PPTXFormat/Logic/Timing/AnimRot.h"
#include "../../Records/Animations/ExtTimeNodeContainer.h"
#include "CBhvr.h"
namespace PPT_FORMAT
{
void FillAnimRot(
CRecordExtTimeNodeContainer* pETNC,
PPTX::Logic::AnimRot& oAnim)
{
if (!pETNC || !pETNC->m_pTimeRotationBehavior) return;
auto pRot = pETNC->m_pTimeRotationBehavior;
auto oAtom = pRot->m_oRotationBehaviorAtom;
FillCBhvr(pETNC, oAnim.cBhvr);
const auto mult = 60000;
if (oAtom.m_fByPropertyUsed)
oAnim.by = oAtom.m_By * mult;
if (oAtom.m_fToPropertyUsed)
oAnim.to = oAtom.m_To * mult;
if (oAtom.m_fFromPropertyUsed)
oAnim.from = oAtom.m_From * mult;
}
}

View File

@ -0,0 +1,72 @@
/*
* (c) Copyright Ascensio System SIA 2010-2019
*
* 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-12 Ernesta Birznieka-Upisha
* 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
*
*/
#pragma once
#include "../../../ASCOfficePPTXFile/PPTXFormat/Logic/Timing/AnimScale.h"
#include "../../Records/Animations/ExtTimeNodeContainer.h"
#include "CBhvr.h"
namespace PPT_FORMAT
{
void FillAnimScale(
CRecordExtTimeNodeContainer* pETNC,
PPTX::Logic::AnimScale& oAnim)
{
if (!pETNC || !pETNC->m_pTimeScaleBehavior) return;
auto pScale = pETNC->m_pTimeScaleBehavior;
auto oAtom = pScale->m_oScaleBehaviorAtom;
FillCBhvr(pETNC, oAnim.cBhvr);
const auto mult = 1000;
if (oAtom.m_fByPropertyUsed)
{
oAnim.byX = oAtom.m_XBy * mult;
oAnim.byY = oAtom.m_YBy * mult;
}
if (oAtom.m_fToPropertyUsed)
{
oAnim.toX = oAtom.m_XTo * mult;
oAnim.toY = oAtom.m_YTo * mult;
}
if (oAtom.m_fFromPropertyUsed)
{
oAnim.fromX = oAtom.m_XFrom * mult;
oAnim.fromY = oAtom.m_YFrom * mult;
}
if (oAtom.m_fZoomContentsUsed)
oAnim.zoomContents = oAtom.m_fZoomContents;
}
}

View File

@ -0,0 +1,46 @@
/*
* (c) Copyright Ascensio System SIA 2010-2019
*
* 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-12 Ernesta Birznieka-Upisha
* 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
*
*/
#pragma once
#include "../../../ASCOfficePPTXFile/PPTXFormat/Logic/Timing/Audio.h"
#include "../../Records/Animations/ExtTimeNodeContainer.h"
namespace PPT_FORMAT
{
void FillAudio(
CRecordExtTimeNodeContainer* pETNC,
PPTX::Logic::Audio& oAudio)
{
}
}

View File

@ -0,0 +1,138 @@
/*
* (c) Copyright Ascensio System SIA 2010-2019
*
* 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-12 Ernesta Birznieka-Upisha
* 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
*
*/
#pragma once
#include "../../../../ASCOfficePPTXFile/PPTXFormat/Logic/Timing/BldLst.h"
#include "BldP.h"
#include "../../../../ASCOfficePPTXFile/PPTXFormat/Logic/Timing/BldOleChart.h"
#include "../../../../ASCOfficePPTXFile/PPTXFormat/Logic/Timing/BldDgm.h"
#include "../Records/Animations/BuildListContainer.h"
#include "../Records/Animations/ChartBuildContainer.h"
#include "../Records/Animations/DiagramBuildContainer.h"
#include "../Records/Animations/ExtTimeNodeContainer.h"
namespace PPT_FORMAT
{
void ConvertCRecordBuildListContainerToBldLst(
PPT_FORMAT::CRecordBuildListContainer *pBLC,
PPTX::Logic::BldLst &oBL)
{
if (!pBLC)
return;
// Write p
for (unsigned i = 0; i < pBLC->n_arrRgChildRec.size(); i++)
{
PPTX::Logic::BuildNodeBase oBuildNodeBase;
switch ( pBLC->n_arrRgChildRec[i]->m_oHeader.RecType ) {
case RT_ParaBuild:
{
CRecordParaBuildContainer* pRec =
(CRecordParaBuildContainer*)pBLC->n_arrRgChildRec[i];
PPTX::Logic::BldP* pBldP = new PPTX::Logic::BldP();
FillBldP(pRec, *pBldP);
oBuildNodeBase.m_node = pBldP;
break;
}
case RT_ChartBuild:
{
CRecordChartBuildContainer* pRec =
(CRecordChartBuildContainer*)pBLC->n_arrRgChildRec[i];
PPTX::Logic::BldOleChart* pBldC = new PPTX::Logic::BldOleChart();
pBldC->spid = std::to_wstring(pRec->m_oBuildAtom.m_nShapeIdRef);
pBldC->grpId = (int)pRec->m_oBuildAtom.m_nBuildId;
pBldC->uiExpand = pRec->m_oBuildAtom.m_fExpanded;
pBldC->animBg = pRec->m_oChartBuildAtom.m_fAnimBackground;
std::vector<std::wstring> ST_TLOleChartBuildType =
{
L"allAtOnce",
L"series",
L"category",
L"seriesEl",
L"categoryEl"
};
pBldC->bld = ST_TLOleChartBuildType[pRec->m_oChartBuildAtom.m_ChartBuild % 5];
oBuildNodeBase.m_node = pBldC;
break;
}
case RT_DiagramBuild:
{
CRecordDiagramBuildContainer* pRec =
(CRecordDiagramBuildContainer*)pBLC->n_arrRgChildRec[i];
PPTX::Logic::BldDgm* pBldD = new PPTX::Logic::BldDgm();
pBldD->spid = std::to_wstring(pRec->m_oBuildAtom.m_nShapeIdRef);
pBldD->grpId = (int)pRec->m_oBuildAtom.m_nBuildId;
pBldD->uiExpand = pRec->m_oBuildAtom.m_fExpanded;
std::vector<std::wstring> ST_TLDiagramBuildType =
{
L"whole",
L"depthByNode",
L"depthByBranch",
L"breadthByNode",
L"breadthByLvl",
L"cw",
L"cwIn",
L"cwOut",
L"ccw",
L"ccwIn",
L"ccwOut",
L"inByRing",
L"outByRing",
L"up",
L"down",
L"allAtOnce",
L"cust"
};
pBldD->bld = ST_TLDiagramBuildType[pRec->m_oDiagramBuildAtom.m_oDiagramBuild % 17];
oBuildNodeBase.m_node = pBldD;
break;
}
default:
break;
}
oBL.list.push_back(oBuildNodeBase);
}
return;
}
}

View File

@ -0,0 +1,67 @@
/*
* (c) Copyright Ascensio System SIA 2010-2019
*
* 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-12 Ernesta Birznieka-Upisha
* 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
*
*/
#pragma once
#include "../../../../ASCOfficePPTXFile/PPTXFormat/Logic/Timing/BldP.h"
#include "../Records/Animations/BuildListContainer.h"
#include "../Records/Animations/ChartBuildContainer.h"
#include "../Records/Animations/DiagramBuildContainer.h"
#include "../Records/Animations/ExtTimeNodeContainer.h"
namespace PPT_FORMAT
{
void FillBldP(PPT_FORMAT::CRecordParaBuildContainer *pPBC,
PPTX::Logic::BldP &oBP)
{
oBP.spid = std::to_wstring(pPBC->m_oBuildAtom.m_nShapeIdRef);
oBP.grpId = (int)pPBC->m_oBuildAtom.m_nBuildId;
oBP.uiExpand = pPBC->m_oBuildAtom.m_fExpanded;
oBP.advAuto = std::to_wstring(pPBC->m_oParaBuildAtom.m_nDelayTime);
oBP.animBg = pPBC->m_oParaBuildAtom.m_fAnimBackground;
oBP.rev = pPBC->m_oParaBuildAtom.m_fReverse;
oBP.autoUpdateAnimBg = pPBC->m_oParaBuildAtom.m_fAutomatic;
std::vector<std::wstring> ST_TLParaBuildType =
{
L"allAtOnce",
L"p",
L"cust",
L"whole"
};
oBP.build = ST_TLParaBuildType[pPBC->m_oParaBuildAtom.m_nParaBuild % 4];
}
}

View File

@ -0,0 +1,127 @@
/*
* (c) Copyright Ascensio System SIA 2010-2019
*
* 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-12 Ernesta Birznieka-Upisha
* 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
*
*/
#pragma once
#include "../../../ASCOfficePPTXFile/PPTXFormat/Logic/Timing/CBhvr.h"
#include "TgtEl.h"
#include "CTn.h"
namespace PPT_FORMAT
{
void ConvertCRecordTimeSetBehaviorContainerToCBhvr(CRecordTimeSetBehaviorContainer *pOld, PPTX::Logic::CBhvr &oBhvr)
{
if (!pOld) return;
if (!pOld->m_oBehavior.m_pStringList->m_arrRgChildRec.empty())
{
oBhvr.attrNameLst = new PPTX::Logic::AttrNameLst();
}
for (const auto& oldAttr : pOld->m_oBehavior.m_pStringList->m_arrRgChildRec)
{
PPTX::Logic::AttrName addAttr;
addAttr.text = oldAttr.m_Value;
oBhvr.attrNameLst->list.push_back(addAttr);
}
oBhvr.tgtEl.spTgt = new PPTX::Logic::SpTgt();
oBhvr.tgtEl.spTgt->spid =
std::to_wstring(pOld->m_oBehavior.
m_oClientVisualElement.
m_oVisualShapeAtom.m_nObjectIdRef);
}
// TODO
void FillCBhvr(CRecordExtTimeNodeContainer *pETNC, PPTX::Logic::CBhvr &oBhvr)
{
CRecordTimeBehaviorContainer* bhvr = nullptr;
if (pETNC->m_haveSetBehavior) bhvr = &(pETNC->m_pTimeSetBehavior->m_oBehavior);
else if (pETNC->m_haveEffectBehavior) bhvr = &(pETNC->m_pTimeEffectBehavior->m_oBehavior);
else if (pETNC->m_haveAnimateBehavior) bhvr = &(pETNC->m_pTimeAnimateBehavior->m_oBehavior);
else if (pETNC->m_haveColorBehavior) bhvr = &(pETNC->m_pTimeColorBehavior->m_oBehavior);
else if (pETNC->m_haveMotionBehavior) bhvr = &(pETNC->m_pTimeMotionBehavior->m_oTimeBehavior);
else if (pETNC->m_haveRotationBehavior) bhvr = &(pETNC->m_pTimeRotationBehavior->m_oBehavior);
else if (pETNC->m_haveScaleBehavior) bhvr = &(pETNC->m_pTimeScaleBehavior->m_oBehavior);
else bhvr = &(pETNC->m_pTimeCommandBehavior->m_oBevavior);
//// Atom ////
// additive
if (bhvr->m_oBehaviorAtom.m_bAdditivePropertyUsed) {
oBhvr.additive = new PPTX::Limit::TLAdditive;
oBhvr.additive = bhvr->m_oBehaviorAtom.m_nBehaviorAdditive ?
L"repl" : L"base";
}
// accumulate - MUST be 0
// xfrmType - MUST be 0
if (bhvr->m_haveStringList)
{
if (!bhvr->m_pStringList->m_arrRgChildRec.empty())
{
oBhvr.attrNameLst = new PPTX::Logic::AttrNameLst();
}
for (const auto& oldAttr : bhvr->m_pStringList->m_arrRgChildRec)
{
PPTX::Logic::AttrName addAttr;
addAttr.text = oldAttr.m_Value;
oBhvr.attrNameLst->list.push_back(addAttr);
}
}
FillCTn(pETNC, oBhvr.cTn);
if (bhvr->m_oClientVisualElement.m_bVisualShapeAtom)
{
oBhvr.tgtEl.spTgt = new PPTX::Logic::SpTgt();
oBhvr.tgtEl.spTgt->spid =
std::to_wstring(bhvr->
m_oClientVisualElement.
m_oVisualShapeAtom.m_nObjectIdRef);
if (bhvr->m_oClientVisualElement.m_oVisualShapeAtom.m_nData2 != 0xFFFFFFFF &&
bhvr->m_oClientVisualElement.m_oVisualShapeAtom.m_nData1 != 0xFFFFFFFF)
{
oBhvr.tgtEl.spTgt->txEl = new PPTX::Logic::TxEl;
oBhvr.tgtEl.spTgt->txEl->charRg = true;
oBhvr.tgtEl.spTgt->txEl->st = bhvr->m_oClientVisualElement.m_oVisualShapeAtom.m_nData1;
oBhvr.tgtEl.spTgt->txEl->end = bhvr->m_oClientVisualElement.m_oVisualShapeAtom.m_nData2;
}
}
}
}

View File

@ -0,0 +1,276 @@
/*
* (c) Copyright Ascensio System SIA 2010-2019
*
* 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-12 Ernesta Birznieka-Upisha
* 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
*
*/
#pragma once
#include "../../../ASCOfficePPTXFile/PPTXFormat/Logic/Timing/CTn.h"
#include "../../Records/Animations/ExtTimeNodeContainer.h"
#include "TnChildren.h"
#include "Cond.h"
namespace PPT_FORMAT
{
unsigned gcTn_ID = 1;
void ConvertTnChild(CRecordExtTimeNodeContainer *pETNC, PPTX::Logic::TimeNodeBase &oChild);
void FillCTn(CRecordExtTimeNodeContainer *pETNC, PPTX::Logic::CTn &oCTn)
{
oCTn.id = gcTn_ID++;
if (pETNC->m_haveTimePropertyList && !pETNC->m_pTimePropertyList->m_bEmtyNode)
{
for (auto* pRec : pETNC->m_pTimePropertyList->m_arrElements)
{
TimePropertyID4TimeNode VariableType = ( TimePropertyID4TimeNode ) pRec->m_oHeader.RecInstance;
switch ( VariableType )
{
case TL_TPID_Display:
{
oCTn.display = (bool)dynamic_cast<CRecordTimeDisplayType*>(pRec)->m_Value;
break;
}
case TL_TPID_MasterPos:
{
oCTn.masterRel = new PPTX::Limit::TLMasterRelation;
oCTn.masterRel = dynamic_cast<CRecordTimeMasterRelType*>(pRec)->m_Value ?
L"sameClick" : L"nextClick";
break;
}
case TL_TPID_SubType: break;
case TL_TPID_EffectID:
{
oCTn.presetID = dynamic_cast<CRecordTimeEffectID*>(pRec)->m_Value;
break;
}
case TL_TPID_EffectDir:
{
oCTn.presetSubtype = dynamic_cast<CRecordTimeEffectDir*>(pRec)->m_Value;
break;
}
case TL_TPID_EffectType:
{
// Write presetClass
std::wstring presetClass;
switch (dynamic_cast<CRecordTimeEffectType*>(pRec)->m_Value) {
case 0: break;
case 1: presetClass = L"entr"; break;
case 2: presetClass = L"exit"; break;
case 3: presetClass = L"emph"; break;
case 4: presetClass = L"path"; break;
case 5: presetClass = L"verb"; break;
case 6: presetClass = L"mediacall"; break;
}
if (!presetClass.empty())
{
oCTn.presetClass = new PPTX::Limit::TLPresetClass;
oCTn.presetClass = presetClass;
}
break;
}
case TL_TPID_AfterEffect:
{
oCTn.afterEffect = (bool)dynamic_cast<CRecordTimeAfterEffect*>(pRec)->m_Value;
break;
}
case TL_TPID_SlideCount: break;
case TL_TPID_TimeFilter:
{
oCTn.tmFilter = dynamic_cast<CRecordTimeNodeTimeFilter*>(pRec)->m_Value;
break;
}
case TL_TPID_EventFilter:
{
oCTn.evtFilter = dynamic_cast<CRecordTimeEventFilter*>(pRec)->m_Value;
break;
}
case TL_TPID_HideWhenStopped: break;
case TL_TPID_GroupID:
{
oCTn.grpId = dynamic_cast<CRecordTimeGroupID*>(pRec)->m_Value;
break;
}
case TL_TPID_EffectNodeType:
{
// Write nodeType
std::wstring nodeType;
switch (dynamic_cast<CRecordTimeEffectNodeType*>(pRec)->m_Value)
{
case 1: nodeType = L"clickEffect"; break;
case 2: nodeType = L"withEffect"; break;
case 3: nodeType = L"afterEffect"; break;
case 4: nodeType = L"mainSeq"; break;
case 5: nodeType = L"interactiveSeq"; break;
case 6: nodeType = L"clickPar"; break;
case 7: nodeType = L"withGroup"; break;
case 8: nodeType = L"afterGroup"; break;
case 9: nodeType = L"tmRoot"; break;
}
if (!nodeType.empty())
{
oCTn.nodeType = new PPTX::Limit::TLNodeType;
oCTn.nodeType = nodeType;
}
break;
}
case TL_TPID_PlaceholderNode:
{
oCTn.nodePh = (bool)dynamic_cast<CRecordTimePlaceholderNode*>(pRec)->m_Value;
break;
}
case TL_TPID_MediaVolume: break;
case TL_TPID_MediaMute: break;
case TL_TPID_ZoomToFullScreen: break;
default :
break;
}
}
}
// Reading TimeNodeAtom
const auto& oTimeNodeAtom = pETNC->m_oTimeNodeAtom;
// Write restart
if (oTimeNodeAtom.m_fRestartProperty)
oCTn.restart = PPTX::Limit::TLRestart(oTimeNodeAtom.m_dwRestart) ;
// Write fill
if (oTimeNodeAtom.m_fFillProperty)
oCTn.fill = PPTX::Limit::TLNodeFillType(oTimeNodeAtom.m_dwFill);
// Write dur
if (oTimeNodeAtom.m_fDurationProperty)
{
if (oTimeNodeAtom.m_nDuration == -1)
oCTn.dur = L"indefinite";
else
oCTn.dur = std::to_wstring(oTimeNodeAtom.m_nDuration);
}
//// Write Children ////
if (!pETNC->m_haveSequenceAtom)
{
// Write stCondLst
if (pETNC->m_arrRgBeginTimeCondition.empty() == false)
{
oCTn.stCondLst = new PPTX::Logic::CondLst;
oCTn.stCondLst->node_name = L"stCondLst";
}
for (auto* oldCond : pETNC->m_arrRgBeginTimeCondition) {
PPTX::Logic::Cond cond;
cond.node_name = L"cond";
FillCond(oldCond, cond);
oCTn.stCondLst->list.push_back(cond);
}
// Write endCondLst
if (pETNC->m_arrRgEndTimeCondition.empty() == false)
{
oCTn.endCondLst = new PPTX::Logic::CondLst;
oCTn.endCondLst->node_name = L"endCondLst";
}
for (auto* oldCond : pETNC->m_arrRgEndTimeCondition) {
PPTX::Logic::Cond cond;
cond.node_name = L"cond";
FillCond(oldCond, cond);
oCTn.endCondLst->list.push_back(cond);
}
}
// Write childTnLst
if (pETNC->m_arrRgExtTimeNodeChildren.empty() == false)
{
oCTn.childTnLst = new PPTX::Logic::ChildTnLst;
}
for (auto* oldChild : pETNC->m_arrRgExtTimeNodeChildren) {
PPTX::Logic::TimeNodeBase child;
ConvertTnChild(oldChild, child);
oCTn.childTnLst->list.push_back(child);
}
// Write iterate
if (pETNC->m_haveIterateDataAtom)
{
auto* iter = pETNC->m_pTimeIterateDataAtom;
oCTn.iterate = new PPTX::Logic::Iterate;
std::wstring type[] = {L"el", L"wd", L"lt"};
if (iter->m_fIterateTypePropertyUsed)
oCTn.iterate->type = type[iter->m_nIterateType % 3];
if (iter->m_fIterateDirectionPropertyUsed)
oCTn.iterate->backwards = (bool)iter->m_nIterateDirection;
if (iter->m_fIterateIntervalTypePropertyUsed)
oCTn.iterate->tmAbs = std::to_wstring(iter->m_nIterateIntervalType);
if (iter->m_fIterateIntervalPropertyUsed)
oCTn.iterate->tmPct = iter->m_nIterateInterval;
}
// Write endSync
if (pETNC->m_haveTimeEndSyncTime)
{
auto* sync = pETNC->m_pTimeEndSyncTimeCondition;
oCTn.endSync = new PPTX::Logic::Cond;
oCTn.endSync->node_name = L"endSync";
FillCond(sync, *(oCTn.endSync));
}
// Write subTnLst
if (pETNC->m_arrRgSubEffect.empty() == false)
{
oCTn.subTnLst = new PPTX::Logic::TnLst;
}
// TODO
// for (auto* oldChild : pETNC->m_arrRgSubEffect) {
// PPTX::Logic::TimeNodeBase child;
// ConvertCRecordExtTimeNodeContainerToTnLst(oldChild, child);
// oCTn.childTnLst->list.push_back(child);
// }
}
}

View File

@ -0,0 +1,46 @@
/*
* (c) Copyright Ascensio System SIA 2010-2019
*
* 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-12 Ernesta Birznieka-Upisha
* 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
*
*/
#pragma once
#include "../../../ASCOfficePPTXFile/PPTXFormat/Logic/Timing/Cmd.h"
#include "../../Records/Animations/ExtTimeNodeContainer.h"
namespace PPT_FORMAT
{
void FillCmd(
CRecordExtTimeNodeContainer* pETNC,
PPTX::Logic::Cmd& oCmd)
{
}
}

View File

@ -0,0 +1,82 @@
/*
* (c) Copyright Ascensio System SIA 2010-2019
*
* 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-12 Ernesta Birznieka-Upisha
* 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
*
*/
#pragma once
#include "../../../Common/DocxFormat/Source/Base/Nullable.h"
#include "../../../ASCOfficePPTXFile/PPTXFormat/Logic/Timing/Seq.h"
#include "../../Records/Animations/ExtTimeNodeContainer.h"
namespace PPT_FORMAT
{
void FillCond(PPT_FORMAT::CRecordTimeConditionContainer *oldCond, PPTX::Logic::Cond &cond)
{
if (oldCond->m_oTimeConditionAtom.m_nTimeDelay != -1)
cond.delay = std::to_wstring(oldCond->m_oTimeConditionAtom.m_nTimeDelay);
else
cond.delay = L"indefinite";
if (oldCond->m_oTimeConditionAtom.m_TriggerObject == TL_TOT_RuntimeNodeRef ||
oldCond->m_oTimeConditionAtom.m_TriggerObject == TL_TOT_TimeNode)
{
cond.tn = oldCond->m_oTimeConditionAtom.m_nID;
}
std::wstring str;
switch (oldCond->m_oTimeConditionAtom.m_nTriggerEvent)
{
case 1: str = L"onBegin"; break;
case 3: str = L"begin"; break;
case 4: str = L"end"; break;
case 5: str = L"onClick"; break;
case 7: str = L"onMouseOver"; break;
case 9: str = L"onNext"; break;
case 10: str = L"onPrev"; break;
case 11: str = L"onStopAudio"; break;
default: str.clear();
}
if (!str.empty()) cond.evt = str;
// TODO
// if (oldCond->m_oVisualElement.)
// cond.tgtEl = new PPTX::Logic::TgtEl();
if (oldCond->m_oVisualElement.m_bVisualPageAtom &&
oldCond->m_oVisualElement.m_oVisualPageAtom.m_eType == TL_TVET_Page)
{
cond.tgtEl = new PPTX::Logic::TgtEl;
}
}
}

View File

@ -0,0 +1,44 @@
/*
* (c) Copyright Ascensio System SIA 2010-2019
*
* 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-12 Ernesta Birznieka-Upisha
* 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
*
*/
#pragma once
#include "../../../ASCOfficePPTXFile/PPTXFormat/Logic/Timing/Par.h"
#include "CTn.h"
namespace PPT_FORMAT
{
void FillPar(CRecordExtTimeNodeContainer* pETNC, PPTX::Logic::Par &oPar)
{
FillCTn(pETNC, oPar.cTn);
}
}

View File

@ -0,0 +1,83 @@
/*
* (c) Copyright Ascensio System SIA 2010-2019
*
* 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-12 Ernesta Birznieka-Upisha
* 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
*
*/
#pragma once
#include "../../../ASCOfficePPTXFile/PPTXFormat/Logic/Timing/Seq.h"
#include "../../Records/Animations/ExtTimeNodeContainer.h"
#include "CTn.h"
namespace PPT_FORMAT
{
void FillSeq(PPT_FORMAT::CRecordExtTimeNodeContainer *pETNC,
PPTX::Logic::Seq& oSec)
{
if (pETNC->m_haveSequenceAtom)
{
if (pETNC->m_pTimeSequenceDataAtom->m_fConcurrencyPropertyUsed)
oSec.concurrent = (bool)pETNC->m_pTimeSequenceDataAtom->m_nConcurrency;
if (pETNC->m_pTimeSequenceDataAtom->m_fNextActionPropertyUsed)
oSec.nextAc = pETNC->m_pTimeSequenceDataAtom->m_nNextAction ? L"seek" : L"none";
if (pETNC->m_pTimeSequenceDataAtom->m_fPreviousActionPropertyUsed)
oSec.prevAc = pETNC->m_pTimeSequenceDataAtom->m_nPreviousAction ? L"skipTimed" : L"none";
}
FillCTn(pETNC, oSec.cTn);
// Fill cond lists
if (!pETNC->m_arrRgEndTimeCondition.empty())
{
oSec.prevCondLst = new PPTX::Logic::CondLst();
oSec.prevCondLst->node_name = L"prevCondLst";
}
for (auto oldCond : pETNC->m_arrRgEndTimeCondition)
{
PPTX::Logic::Cond cond;
cond.node_name = L"cond";
FillCond(oldCond, cond);
oSec.prevCondLst->list.push_back(cond);
}
if (!pETNC->m_arrRgBeginTimeCondition.empty())
{
oSec.nextCondLst = new PPTX::Logic::CondLst();
oSec.nextCondLst->node_name = L"nextCondLst";
}
for (auto oldCond : pETNC->m_arrRgBeginTimeCondition)
{
PPTX::Logic::Cond cond;
cond.node_name = L"cond";
FillCond(oldCond, cond);
oSec.nextCondLst->list.push_back(cond);
}
}
}

View File

@ -0,0 +1,52 @@
/*
* (c) Copyright Ascensio System SIA 2010-2019
*
* 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-12 Ernesta Birznieka-Upisha
* 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
*
*/
#pragma once
#include "../../../ASCOfficePPTXFile/PPTXFormat/Logic/Timing/Set.h"
#include "CBhvr.h"
namespace PPT_FORMAT
{
void FillSet(PPT_FORMAT::CRecordExtTimeNodeContainer *pETNC,
PPTX::Logic::Set& oSet)
{
if (!pETNC->m_haveSetBehavior) return;
// TODO
FillCBhvr(pETNC, oSet.cBhvr);
oSet.to = new PPTX::Logic::AnimVariant();
oSet.to->node_name = L"to";
oSet.to->strVal = pETNC->m_pTimeSetBehavior->m_oVarTo.m_Value;
}
}

View File

@ -0,0 +1,41 @@
/*
* (c) Copyright Ascensio System SIA 2010-2019
*
* 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-12 Ernesta Birznieka-Upisha
* 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
*
*/
#pragma once
#include "../../../ASCOfficePPTXFile/PPTXFormat/Logic/Timing/TgtEl.h"
#include "../../Records/Animations/ExtTimeNodeContainer.h"
namespace PPT_FORMAT
{
// Convert
}

View File

@ -0,0 +1,124 @@
/*
* (c) Copyright Ascensio System SIA 2010-2019
*
* 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-12 Ernesta Birznieka-Upisha
* 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
*
*/
#pragma once
#include "../../../ASCOfficePPTXFile/PPTXFormat/Logic/Timing/TimeNodeBase.h"
#include "../../../ASCOfficePPTXFile/PPTXFormat/WrapperWritingElement.h"
#include "Anim.h"
#include "AnimClr.h"
#include "AnimEffect.h"
#include "AnimMotion.h"
#include "AnimRot.h"
#include "AnimScale.h"
#include "Audio.h"
#include "Cmd.h"
#include "Par.h"
#include "Seq.h"
#include "Set.h"
#include "Video.h"
namespace PPT_FORMAT
{
void ConvertTnChild(CRecordExtTimeNodeContainer *pETNC, PPTX::Logic::TimeNodeBase &oChild)
{
if (pETNC->m_haveSequenceAtom)
{
auto seq = new PPTX::Logic::Seq;
FillSeq(pETNC, *seq);
oChild.m_node = seq;
}
else if (pETNC->m_haveSetBehavior)
{
auto set = new PPTX::Logic::Set;
FillSet(pETNC, *set);
oChild.m_node = set;
}
else if (pETNC->m_haveAnimateBehavior)
{
auto anim = new PPTX::Logic::Anim;
FillAnim(pETNC, *anim);
oChild.m_node = anim;
}
else if (pETNC->m_haveColorBehavior)
{
auto animClr = new PPTX::Logic::AnimClr;
FillAnimClr(pETNC, *animClr);
oChild.m_node = animClr;
}
else if (pETNC->m_haveEffectBehavior)
{
auto animEffect = new PPTX::Logic::AnimEffect;
FillAnimEffect(pETNC, *animEffect);
oChild.m_node = animEffect;
}
else if (pETNC->m_haveMotionBehavior)
{
// TODO
auto motion = new PPTX::Logic::AnimMotion;
FillAnimMotion(pETNC, *motion);
oChild.m_node = motion;
}
else if (pETNC->m_haveRotationBehavior)
{
// TODO
auto rot = new PPTX::Logic::AnimRot;
FillAnimRot(pETNC, *rot);
oChild.m_node = rot;
}
else if (pETNC->m_haveScaleBehavior)
{
// TODO
auto scale = new PPTX::Logic::AnimScale;
FillAnimScale(pETNC, *scale);
oChild.m_node = scale;
}
else if (pETNC->m_haveCommandBehavior)
{
// TODO
auto cmd = new PPTX::Logic::Cmd;
FillCmd(pETNC, *cmd);
oChild.m_node = cmd;
}
else if (pETNC->m_oTimeNodeAtom.m_dwType == TL_TNT_Parallel)
{
auto par = new PPTX::Logic::Par;
FillPar(pETNC, *par);
oChild.m_node = par;
}
else
{
// ? Audio Video
}
}
}

View File

@ -0,0 +1,65 @@
/*
* (c) Copyright Ascensio System SIA 2010-2019
*
* 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-12 Ernesta Birznieka-Upisha
* 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
*
*/
#pragma once
#include "../../../ASCOfficePPTXFile/PPTXFormat/Limit/TLRestart.h"
#include "../../../ASCOfficePPTXFile/PPTXFormat/Limit/TLNodeFillType.h"
#include "../../../ASCOfficePPTXFile/PPTXFormat/Logic/Timing/Par.h"
#include "../../../ASCOfficePPTXFile/PPTXFormat/Logic/Timing/Seq.h"
#include "../../../ASCOfficePPTXFile/PPTXFormat/Logic/Timing/Set.h"
#include "../../../ASCOfficePPTXFile/PPTXFormat/WrapperWritingElement.h"
#include "../../Records/Animations/ExtTimeNodeContainer.h"
#include "TnChildren.h"
namespace PPT_FORMAT
{
void ConvertCRecordExtTimeNodeContainerToTnLst(
PPT_FORMAT::CRecordExtTimeNodeContainer *pETNC,
PPTX::Logic::TnLst &oTnLst)
{
if (!pETNC)
return;
gcTn_ID = 1;
PPTX::Logic::TimeNodeBase oChildTimeNodeBase;
ConvertTnChild(pETNC, oChildTimeNodeBase);
oTnLst.list.push_back(oChildTimeNodeBase);
}
}

View File

@ -0,0 +1,46 @@
/*
* (c) Copyright Ascensio System SIA 2010-2019
*
* 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-12 Ernesta Birznieka-Upisha
* 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
*
*/
#pragma once
#include "../../../ASCOfficePPTXFile/PPTXFormat/Logic/Timing/Video.h"
#include "../../Records/Animations/ExtTimeNodeContainer.h"
namespace PPT_FORMAT
{
void FillVideo(
CRecordExtTimeNodeContainer* pETNC,
PPTX::Logic::Video& oVideo)
{
}
}

View File

@ -58,7 +58,7 @@ public:
while(0 != nCount)
{
if (NULL != m_arUsers[nCount-1])
delete m_arUsers[nCount-1];
RELEASEOBJECT(m_arUsers[nCount-1])
m_arUsers.pop_back();
--nCount;
@ -99,7 +99,8 @@ public:
if (bResult == false)
{
delete pInfo;
delete pInfo;
pInfo = NULL; // may not work
if (m_oCurrentUser.m_bIsEncrypt)
return false;

File diff suppressed because it is too large Load Diff

View File

@ -32,7 +32,8 @@
#pragma once
#include "ClassesAtom.h"
#include "../Records/Animations/AnimationTypes.h"
#include "../Records/Animations/_includer.h"
#include "../Enums/_includer.h"
#include "../Records/ExObjListContainer.h"
#include "../Records/CryptSession10Container.h"
@ -80,7 +81,7 @@ public:
CSlideInfo* m_pHandoutMasterWrapper;
std::vector<CRecordBlipStoreContainer*> m_arrBlipStore;
std::vector<CFontProperty> m_arrFonts;
std::vector<CFontProperty> m_arrFonts;
PPT_FORMAT::CTextStyles m_oDefaultTextStyle;
@ -95,7 +96,7 @@ public:
CRecordVbaProjectStg* m_VbaProjectStg;
int m_lIndexThisUser;
std::map <_UINT32, Animations::CSlideTimeLine*> m_mapAnimations;
// std::map <_UINT32, Animations::CSlideTimeLine*> m_mapAnimations;
double m_nWriteSlideTimeOffset;
double m_nWriteSlideTime;
@ -156,6 +157,8 @@ public:
void LoadExVideo(CRecordsContainer* pExObject);
void LoadExAudio(CRecordsContainer* pExObject);
void LoadAutoNumbering(CRecordGroupShapeContainer* pGroupContainer, PPT_FORMAT::CTheme* pTheme);
void CreateDefaultStyle(PPT_FORMAT::CTextStyles& pStyle, PPT_FORMAT::CTheme* pTheme);
void CorrectColorScheme(std::vector<CColor>& oScheme)
{
@ -212,7 +215,7 @@ public:
int ind = 0;
if (layoutRecord.m_pPlaceHolderID[0] == 13 && layoutRecord.m_pPlaceHolderID[1] != 0) ind++;
ePlaceholderType phbody = (ePlaceholderType)layoutRecord.m_pPlaceHolderID[ind];
PlaceholderEnum phbody = (PlaceholderEnum)layoutRecord.m_pPlaceHolderID[ind];
switch (phbody)
{
case PT_MasterTitle: type = L"title"; name = L"Title and Object Slide"; break;
@ -230,8 +233,8 @@ public:
}break;
case SL_TwoColumns:
{
ePlaceholderType leftType = (ePlaceholderType)layoutRecord.m_pPlaceHolderID[1];
ePlaceholderType rightType = (ePlaceholderType)layoutRecord.m_pPlaceHolderID[2];
PlaceholderEnum leftType = (PlaceholderEnum)layoutRecord.m_pPlaceHolderID[1];
PlaceholderEnum rightType = (PlaceholderEnum)layoutRecord.m_pPlaceHolderID[2];
name = L"Two Objects Slide";
type = L"twoObj";
@ -279,8 +282,8 @@ public:
}break;
case SL_TwoRows:
{
ePlaceholderType topType = (ePlaceholderType)layoutRecord.m_pPlaceHolderID[1];
ePlaceholderType bottomType = (ePlaceholderType)layoutRecord.m_pPlaceHolderID[2];
PlaceholderEnum topType = (PlaceholderEnum)layoutRecord.m_pPlaceHolderID[1];
PlaceholderEnum bottomType = (PlaceholderEnum)layoutRecord.m_pPlaceHolderID[2];
if (topType == PT_Body && bottomType == PT_Object)
{
@ -295,7 +298,7 @@ public:
}break;
case SL_ColumnTwoRows:
{
ePlaceholderType leftType = (ePlaceholderType)layoutRecord.m_pPlaceHolderID[1];
PlaceholderEnum leftType = (PlaceholderEnum)layoutRecord.m_pPlaceHolderID[1];
if (leftType == PT_Object)
{
@ -308,7 +311,7 @@ public:
}break;
case SL_TwoRowsColumn:
{
ePlaceholderType rightType = (ePlaceholderType)layoutRecord.m_pPlaceHolderID[2];
PlaceholderEnum rightType = (PlaceholderEnum)layoutRecord.m_pPlaceHolderID[2];
if (rightType == PT_Object)
{

View File

@ -49,7 +49,7 @@ typedef BYTE BOOL1;
#define RECORD_TYPE_DOCUMENT_ATOM 1001
#define RECORD_TYPE_ENDDOCUMENT 1002
#define RECORD_TYPE_SLIDE 1006
#define RECORD_TYPE_SLIDE_ATOM 1007
#define RECORD_TYPE_SLIDE_ATOM 1007
#define RECORD_TYPE_NOTES 1008
#define RECORD_TYPE_NOTES_ATOM 1009
#define RECORD_TYPE_ENVIRONMENT 1010
@ -58,7 +58,7 @@ typedef BYTE BOOL1;
#define RECORD_TYPE_MAINMASTER 1016
#define RECORD_TYPE_SSSLIDE_INFO_ATOM 1017
#define RECORD_TYPE_SLIDE_VIEWINFO 1018
#define RECORD_TYPE_GUIDE_ATOM 1019
#define RECORD_TYPE_GUIDE_ATOM 1019
#define RECORD_TYPE_VIEWINFO 1020
#define RECORD_TYPE_VIEWINFO_ATOM 1021
#define RECORD_TYPE_SLIDE_VIEWINFO_ATOM 1022
@ -73,8 +73,8 @@ typedef BYTE BOOL1;
#define RECORD_TYPE_EXOBJLIST_ATOM 1034
#define RECORD_TYPE_PPDRAWING_GROUP 1035
#define RECORD_TYPE_PPDRAWING 1036
#define RT_RoundTripTheme12Atom 1038
#define RT_RoundTripColorMapping12Atom 1039
#define RECORD_TYPE_RoundTripTheme12Atom 1038
#define RECORD_TYPE_RoundTripColorMapping12Atom 1039
#define RECORD_TYPE_NAMEDSHOWS 1040
#define RECORD_TYPE_NAMEDSHOW 1041
#define RECORD_TYPE_NAMEDSHOW_SLIDES 1042
@ -189,15 +189,18 @@ typedef BYTE BOOL1;
#define RECORD_TYPE_PERSISTPTRINCREMENTALBLOCK 6002
#define RECORD_TYPE_GSCALING_ATOM2 10001
#define RECORD_TYPE_GRCOLOR_ATOM2 10002
#define RECORD_TYPE_CHARTBUILD_ATOM 11013
#define RECORD_TYPE_DIAGRAMBUILD 11014
#define RECORD_TYPE_DIAGRAMBUILD_ATOM 11015
// Records ~12000 seem to be related to the Comments used in PPT 2000/XP
// (Comments in PPT97 are normal Escher text boxes)
//// Records ~12000 seem to be related to the Comments used in PPT 2000/XP
//// (Comments in PPT97 are normal Escher text boxes)
#define RECORD_TYPE_COMMENT2000 12000
#define RECORD_TYPE_COMMENT2000ATOM 12001
#define RECORD_TYPE_COMMENT2000SUMMARY 12004
#define RECORD_TYPE_COMMENT2000SUMMARYATOM 12005
// Records ~12050 seem to be related to Document Encryption
//// Records ~12050 seem to be related to Document Encryption
#define RECORD_TYPE_DOCUMENT_ENCRYPTION_ATOM 0x2F14
@ -246,208 +249,6 @@ typedef BYTE BOOL1;
#define RECORD_TYPE_ESCHER_OLEOBJECT 0xF11F
#define RECORD_TYPE_ESCHER_SECONDARY_OPT 0xF121
#define RECORD_TYPE_ESCHER_TETRIARY_OPT 0xF122
#define RECORD_TYPE_TIME_NODE 0xF127
#define RECORD_TYPE_TIME_ANIMATE_BEHAVIOR 0xF134
/// Animations defines ///
#define RECORD_PROG_TAGS 0x1388 // RT_ProgTags SlideProgTagsContainer
#define RECORD_PROG_STRING_TAG 0x1389 // RT_ProgStringTag ProgStringTagContainer
#define RECORD_PROG_BINARY_TAG 0x138A // RT_ProgBinaryTag SlideProgTagsContainer-DocProgTagsContainer-ShapeProgTagsContainer
#define RECORD_TEXT_MASTER_STYLE10_ATOM 0x0FB2 // RT_TextMasterStyle10Atom TextMasterStyle10Atom
static std::string GetRecordName(_UINT32 dwType)
{
std::string strName = ("Unknown");
switch (dwType)
{
case RECORD_TYPE_UNKNOWN : { strName = ("Unknown"); break; }
case RECORD_TYPE_DOCUMENT : { strName = ("Document"); break; }
case RECORD_TYPE_DOCUMENT_ATOM : { strName = ("DocumentAtom"); break; }
case RECORD_TYPE_ENDDOCUMENT : { strName = ("EndDocument"); break; }
case RECORD_TYPE_SLIDE : { strName = ("Slide"); break; }
case RECORD_TYPE_SLIDE_ATOM : { strName = ("SlideAtom"); break; }
case RECORD_TYPE_NOTES : { strName = ("Notes"); break; }
case RECORD_TYPE_NOTES_ATOM : { strName = ("NotesAtom"); break; }
case RECORD_TYPE_ENVIRONMENT : { strName = ("Environment"); break; }
case RECORD_TYPE_SLIDE_PERSIST_ATOM : { strName = ("SlidePersistAtom"); break; }
case RECORD_TYPE_SSLIDE_LAYOUT_ATOM : { strName = ("SSlideLayoutAtom"); break; }
case RECORD_TYPE_MAINMASTER : { strName = ("MainMaster"); break; }
case RECORD_TYPE_SSSLIDE_INFO_ATOM : { strName = ("SSSlideInfoAtom"); break; }
case RECORD_TYPE_SLIDE_VIEWINFO : { strName = ("SlideViewInfo"); break; }
case RECORD_TYPE_GUIDE_ATOM : { strName = ("GuideAtom"); break; }
case RECORD_TYPE_VIEWINFO : { strName = ("ViewInfo"); break; }
case RECORD_TYPE_VIEWINFO_ATOM : { strName = ("ViewInfoAtom"); break; }
case RECORD_TYPE_SLIDE_VIEWINFO_ATOM : { strName = ("SlideViewInfoAtom"); break; }
case RECORD_TYPE_VBAINFO : { strName = ("VBAInfo"); break; }
case RECORD_TYPE_VBAINFO_ATOM : { strName = ("VBAInfoAtom"); break; }
case RECORD_TYPE_SSDOCINFO_ATOM : { strName = ("SSDocInfoAtom"); break; }
case RECORD_TYPE_SUMMARY : { strName = ("Summary"); break; }
case RECORD_TYPE_DOC_ROUTING_SLIP : { strName = ("DocRoutingSlip"); break; }
case RECORD_TYPE_OUTLINE_VIEWINFO : { strName = ("OutlineViewInfo"); break; }
case RECORD_TYPE_SORTER_VIEWINFO : { strName = ("SorterViewInfo"); break; }
case RECORD_TYPE_EXOBJLIST : { strName = ("ExObjList"); break; }
case RECORD_TYPE_EXOBJLIST_ATOM : { strName = ("ExObjectListAtom"); break; }
case RECORD_TYPE_PPDRAWING_GROUP : { strName = ("PPDrawingGroup"); break; }
case RECORD_TYPE_PPDRAWING : { strName = ("PPDrawing"); break; }
case RECORD_TYPE_NAMEDSHOWS : { strName = ("NamedShows"); break; }
case RECORD_TYPE_NAMEDSHOW : { strName = ("NamedShow"); break; }
case RECORD_TYPE_NAMEDSHOW_SLIDES : { strName = ("NamedShowSlides"); break; }
case RECORD_TYPE_SHEET_PROPERTIES : { strName = ("SheetProperties"); break; }
case RECORD_TYPE_LIST : { strName = ("List"); break; }
case RECORD_TYPE_FONTCOLLECTION : { strName = ("FontCollection"); break; }
case RECORD_TYPE_BOOKMARKCOLLECTION : { strName = ("BookmarkCollection"); break; }
case RECORD_TYPE_SOUNDCOLLECTION : { strName = ("SoundCollection"); break; }
case RECORD_TYPE_SOUNDCOLL_ATOM : { strName = ("SoundCollAtom"); break; }
case RECORD_TYPE_SOUND : { strName = ("Sound"); break; }
case RECORD_TYPE_SOUNDDATA : { strName = ("SoundData"); break; }
case RECORD_TYPE_BOOKMARK_SEED_ATOM : { strName = ("BookMarkSeedAtom"); break; }
case RECORD_TYPE_COLOR_SCHEME_ATOM : { strName = ("ColorSchemeAtom"); break; }
case RECORD_TYPE_OESHAPE_ATOM : { strName = ("OEShapeAtom"); break; }
case RECORD_TYPE_EX_OBJREF_ATOM : { strName = ("ExObjRefAtom"); break; }
case RECORD_TYPE_OEPLACEHOLDER_ATOM : { strName = ("PlaceHolderAtom"); break; }
case RECORD_TYPE_GPOPUBLICINT_ATOM : { strName = ("GpOpublicintAtom"); break; }
case RECORD_TYPE_GRCOLOR : { strName = ("GrColor"); break; }
case RECORD_TYPE_GRECT_ATOM : { strName = ("GRectAtom"); break; }
case RECORD_TYPE_GRATIO_ATOM : { strName = ("GRatioAtom"); break; }
case RECORD_TYPE_GSCALING_ATOM : { strName = ("GScalingAtom"); break; }
case RECORD_TYPE_GPOINT_ATOM : { strName = ("GPointAtom"); break; }
case RECORD_TYPE_OUTLINE_TEXTREF_ATOM : { strName = ("OutlineTextRefAtom"); break; }
case RECORD_TYPE_TEXT_HEADER_ATOM : { strName = ("TextHeaderAtom"); break; }
case RECORD_TYPE_TEXT_CHARS_ATOM : { strName = ("TextCharsAtom"); break; }
case RECORD_TYPE_STYLE_TEXTPROP_ATOM : { strName = ("StyleTextPropAtom"); break; }
case RECORD_TYPE_BASE_TEXTPROP_ATOM : { strName = ("BaseTextPropAtom"); break; }
case RECORD_TYPE_TXMASTERSTYLE_ATOM : { strName = ("TxMasterStyleAtom"); break; }
case RECORD_TYPE_TXCFSTYLE_ATOM : { strName = ("TxCfStyleAtom"); break; }
case RECORD_TYPE_TXPFSTYLE_ATOM : { strName = ("TxPfStyleAtom"); break; }
case RECORD_TYPE_TEXTRULER_ATOM : { strName = ("TextRulerAtom"); break; }
case RECORD_TYPE_TEXTBOOKMARK_ATOM : { strName = ("TextBookmarkAtom"); break; }
case RECORD_TYPE_TEXTBYTES_ATOM : { strName = ("TextBytesAtom"); break; }
case RECORD_TYPE_TXSISTYLE_ATOM : { strName = ("TxSiStyleAtom"); break; }
case RECORD_TYPE_TEXTSPECINFO_ATOM : { strName = ("TextSpecInfoAtom"); break; }
case RECORD_TYPE_DEFAULTRULER_ATOM : { strName = ("DefaultRulerAtom"); break; }
case RECORD_TYPE_FONTENTITY_ATOM : { strName = ("FontEntityAtom"); break; }
case RECORD_TYPE_FONT_EMBEDDEDDATA : { strName = ("FontEmbeddedData"); break; }
case RECORD_TYPE_CSTRING : { strName = ("CString"); break; }
case RECORD_TYPE_METAFILE : { strName = ("Metafile"); break; }
case RECORD_TYPE_EXOLEOBJ_ATOM : { strName = ("ExOleObjAtom"); break; }
case RECORD_TYPE_SRKINSOKU : { strName = ("SrKinsoku"); break; }
case RECORD_TYPE_HANDOUT : { strName = ("Handout"); break; }
case RECORD_TYPE_EXEMBED : { strName = ("Exembed"); break; }
case RECORD_TYPE_EXEMBEDATOM : { strName = ("ExembedAtom"); break; }
case RECORD_TYPE_EXLINK : { strName = ("ExLink"); break; }
case RECORD_TYPE_BOOKMARK_ENTITY_ATOM : { strName = ("BookmarkEntityAtom"); break; }
case RECORD_TYPE_EXLINK_ATOM : { strName = ("ExLinkAtom"); break; }
case RECORD_TYPE_SRKINSOKU_ATOM : { strName = ("SrKinsokuAtom"); break; }
case RECORD_TYPE_EXHYPERLINK_ATOM : { strName = ("ExHyperlinkAtom"); break; }
case RECORD_TYPE_EXHYPERLINK : { strName = ("ExHyperlink"); break; }
case RECORD_TYPE_SLIDENUMBER_META_ATOM : { strName = ("SlideNumberMcAtom"); break; }
case RECORD_TYPE_HEADERSFOOTERS : { strName = ("HeadersFooters"); break; }
case RECORD_TYPE_HEADERSFOOTERS_ATOM : { strName = ("HeadersFootersAtom"); break; }
case RECORD_TYPE_TXINTERACTIVEINFO_ATOM : { strName = ("TxInteractiveInfoAtom"); break; }
case RECORD_TYPE_CHARFORMAT_ATOM : { strName = ("CharFormatAtom"); break; }
case RECORD_TYPE_PARAFORMAT_ATOM : { strName = ("ParaFormatAtom"); break; }
case RECORD_TYPE_RECOLORINFO_ATOM : { strName = ("ReColorInfoAtom"); break; }
case RECORD_TYPE_EXQUICKTIMEMOVIE : { strName = ("ExQuicktimeMovie"); break; }
case RECORD_TYPE_EXQUICKTIMEMOVIEDATA : { strName = ("ExQuicktimeMovieData"); break; }
case RECORD_TYPE_EXCONTROL : { strName = ("ExControl"); break; }
case RECORD_TYPE_SLIDELISTWITHTEXT : { strName = ("SlidelistWithText"); break; }
case RECORD_TYPE_INTERACTIVEINFO : { strName = ("InteractiveInfo"); break; }
case RECORD_TYPE_INTERACTIVEINFO_ATOM : { strName = ("InteractiveInfoAtom"); break; }
case RECORD_TYPE_USER_EDIT_ATOM : { strName = ("UserEditAtom"); break; }
case RECORD_TYPE_CURRENTUSER_ATOM : { strName = ("CurrentUserAtom"); break; }
case RECORD_TYPE_DATETIME_META_ATOM : { strName = ("DateTimeMCAtom"); break; }
case RECORD_TYPE_GENERICDATE_META_ATOM : { strName = ("GenericDateMCAtom"); break; }
case RECORD_TYPE_FOOTER_META_ATOM : { strName = ("FooterMCAtom"); break; }
case RECORD_TYPE_EXCONTROL_ATOM : { strName = ("ExControlAtom"); break; }
case RECORD_TYPE_EX_MEDIA_ATOM : { strName = ("ExMediaAtom"); break; }
case RECORD_TYPE_EX_VIDEOCONTAINER : { strName = ("ExVideoContainer"); break; }
case RECORD_TYPE_EX_AVIMOVIE : { strName = ("ExAviMovie"); break; }
case RECORD_TYPE_EX_MCIMOVIE : { strName = ("ExMciMovie"); break; }
case RECORD_TYPE_EX_MIDIAUDIO : { strName = ("ExMidAudio"); break; }
case RECORD_TYPE_EX_CDAUDIO : { strName = ("ExCDAudio"); break; }
case RECORD_TYPE_EX_WAVAUDIOEMBEDDED : { strName = ("ExWavAudioEmbedded"); break; }
case RECORD_TYPE_EX_WAVAUDIOLINK : { strName = ("ExWavAudioLink"); break; }
case RECORD_TYPE_EX_OLEOBJSTG : { strName = ("ExOleObjStg"); break; }
case RECORD_TYPE_EX_CDAUDIO_ATOM : { strName = ("ExCDAudioAtom"); break; }
case RECORD_TYPE_EXWAVAUDIOEMBEDDED_ATOM : { strName = ("ExWavAudioEmbeddedAtom"); break; }
case RECORD_TYPE_ANIMATIONINFO : { strName = ("AnimationInfo"); break; }
case RECORD_TYPE_ANIMATIONINFO_ATOM : { strName = ("AnimationInfoAtom"); break; }
case RECORD_TYPE_RTFDATETIME_META_ATOM : { strName = ("RtfDateTimeMCAtom"); break; }
case RECORD_TYPE_PROGTAGS : { strName = ("ProgTags"); break; }
case RECORD_TYPE_PROGSTRINGTAG : { strName = ("ProgStringTag"); break; }
case RECORD_TYPE_PROGBINARYTAG : { strName = ("ProgBinaryTag"); break; }
case RECORD_TYPE_BINARYTAGDATA : { strName = ("BinaryTagData"); break; }
case RECORD_TYPE_PRPUBLICINTOPTIONS : { strName = ("PrPublicIntOptions"); break; }
case RECORD_TYPE_PERSISTPTRFULLBLOCK : { strName = ("PersistPtrFullBlock"); break; }
case RECORD_TYPE_PERSISTPTRINCREMENTALBLOCK : { strName = ("PersistPtrIncrementalBlock"); break; }
case RECORD_TYPE_GSCALING_ATOM2 : { strName = ("GScalingAtom2"); break; }
case RECORD_TYPE_GRCOLOR_ATOM2 : { strName = ("GRColorAtom2"); break; }
case RECORD_TYPE_NORMALVIEW_SETINFO9 : { strName = ("NormalViewSetInfoAtom"); break; }
// Records ~12000 seem to be related to the Comments used in PPT 2000/XP
// (Comments in PPT97 are normal Escher text boxes)
case RECORD_TYPE_COMMENT2000 : { strName = ("Comment2000"); break; }
case RECORD_TYPE_COMMENT2000ATOM : { strName = ("Comment2000Atom"); break; }
case RECORD_TYPE_COMMENT2000SUMMARY : { strName = ("Comment2000Summary"); break; }
case RECORD_TYPE_COMMENT2000SUMMARYATOM : { strName = ("Comment2000SummaryAtom"); break; }
// Records ~12050 seem to be related to Document Encryption
case RECORD_TYPE_DOCUMENT_ENCRYPTION_ATOM : { strName = ("DocumentEncryption"); break; }
case RECORD_TYPE_ORIGINALMAINMASTERID : { strName = ("OriginalMainMasterID"); break; }
case RECORD_TYPE_COMPOSITEMASTERID : { strName = ("CompositeMasterID"); break; }
case RECORD_TYPE_ROUNDTRIPCONTENTMASTERINFO12 : { strName = ("RoundTripContentMasterInfo12"); break; }
case RECORD_TYPE_ROUNDTRIPSHAPEID12 : { strName = ("RoundTripShapeID12"); break; }
case RECORD_TYPE_ROUNDTRIPHFPLACEHOLDER12 : { strName = ("RoundTripHfPlaceholder12"); break; }
case RECORD_TYPE_ROUNDTRIPCONTENTMASTERID : { strName = ("RoundTripContentMasterID"); break; }
case RECORD_TYPE_ROUNDTRIPOARTTEXTSTYLES12 : { strName = ("RoundTripOartTextStyles12"); break; }
case RECORD_TYPE_ROUNDTRIPSHAPECHECKSUMFORCUSTOMLAYOUTS12 : { strName = ("RoundTripShapeChecksumForCustomLayouts12"); break; }
case RECORD_TYPE_ROUNDTRIPNOTESMASTERTEXTSTYLES12 : { strName = ("RoundTripNotesMasterTextStyles12"); break; }
case RECORD_TYPE_ROUNDTRIPCUSTOMTABLESTYLES12 : { strName = ("RoundTripCustomTableStyles12"); break; }
case RECORD_TYPE_ESCHER_DGG_CONTAINER : { strName = ("DrawingGroupContainer"); break; }
case RECORD_TYPE_ESCHER_DGG : { strName = ("DrawingGroupRecord"); break; }
case RECORD_TYPE_ESCHER_CLSID : { strName = ("CLSID_Record"); break; }
case RECORD_TYPE_ESCHER_OPT : { strName = ("OPT"); break; }
case RECORD_TYPE_ESCHER_BSTORE_CONTAINER : { strName = ("BlipStoreContainer"); break; }
case RECORD_TYPE_ESCHER_BSE : { strName = ("BlipStoreEntry"); break; }
case RECORD_TYPE_ESCHER_BLIP_START : { strName = ("BlipStart"); break; }
case RECORD_TYPE_ESCHER_BLIP_END : { strName = ("BlipEnd"); break; }
case RECORD_TYPE_ESCHER_DG_CONTAINER : { strName = ("DrawingContainer"); break; }
case RECORD_TYPE_ESCHER_DG : { strName = ("DrawingRecord"); break; }
case RECORD_TYPE_ESCHER_REGROUPITEMS : { strName = ("RegGroupItems"); break; }
case RECORD_TYPE_ESCHER_COLORSCHEME : { strName = ("ColorSheme"); break; }
case RECORD_TYPE_ESCHER_SPGR_CONTAINER : { strName = ("GroupShapeContainer"); break; }
case RECORD_TYPE_ESCHER_SP_CONTAINER : { strName = ("ShapeContainer"); break; }
case RECORD_TYPE_ESCHER_SPGR : { strName = ("GroupShapeRecord"); break; }
case RECORD_TYPE_ESCHER_SP : { strName = ("ShapeRecord"); break; }
case RECORD_TYPE_ESCHER_TEXTBOX : { strName = ("TextBox"); break; }
case RECORD_TYPE_ESCHER_CLIENTTEXTBOX : { strName = ("ClientTextBox"); break; }
case RECORD_TYPE_ESCHER_ANCHOR : { strName = ("Anchor"); break; }
case RECORD_TYPE_ESCHER_CHILDANCHOR : { strName = ("ChildAnchor"); break; }
case RECORD_TYPE_ESCHER_CLIENTANCHOR : { strName = ("ClientAnchor"); break; }
case RECORD_TYPE_ESCHER_CLIENTDATA : { strName = ("ClientData"); break; }
case RECORD_TYPE_ESCHER_SOLVERCONTAINER : { strName = ("SolverContainer"); break; }
case RECORD_TYPE_ESCHER_CONNECTORRULE : { strName = ("ConnectorRule"); break; }
case RECORD_TYPE_ESCHER_ALIGNRULE : { strName = ("AlignRule"); break; }
case RECORD_TYPE_ESCHER_ARCRULE : { strName = ("ArcRule"); break; }
case RECORD_TYPE_ESCHER_CLIENTRULE : { strName = ("ClientRule"); break; }
case RECORD_TYPE_ESCHER_CALLOUTRULE : { strName = ("CallOutRule"); break; }
case RECORD_TYPE_ESCHER_SELECTION : { strName = ("Selection"); break; }
case RECORD_TYPE_ESCHER_COLORMRU : { strName = ("ColorMRU"); break; }
case RECORD_TYPE_ESCHER_DELETEDPSPL : { strName = ("DeletedPSPL"); break; }
case RECORD_TYPE_ESCHER_SPLITMENUCOLORS : { strName = ("SplitMenuColors"); break; }
case RECORD_TYPE_ESCHER_OLEOBJECT : { strName = ("OleObject"); break; }
case RECORD_TYPE_ESCHER_SECONDARY_OPT : { strName = ("SecondaryOPT"); break; }
case RECORD_TYPE_ESCHER_TETRIARY_OPT : { strName = ("TetriaryOPT"); break; }
default: break;
};
if ((dwType > RECORD_TYPE_ESCHER_BLIP_START) && (dwType < RECORD_TYPE_ESCHER_BLIP_END))
{
strName = ("Blip");
}
return strName;
}

View File

@ -34,7 +34,7 @@
#include "../../../ASCOfficePPTXFile/Editor/Drawing/TextAttributesEx.h"
#include "SlidePersist.h"
#include "../../../OfficeUtils/src/OfficeUtils.h"
//#include "../Records/OfficeArtClientData.h"
using namespace PPT_FORMAT;

View File

@ -32,8 +32,10 @@
#include "Records.h"
#include "../Records/RecordsIncluder.h"
#include "../Records/Animations/_includer.h"
#include <iostream>
#include <iomanip>
std::wstring CUnknownRecord::ReadStringW(const CFStreamPtr &pStream, int lLen)
{
@ -160,157 +162,486 @@ void CRecordsContainer::ReadFromStream(SRecordHeader & oHeader, POLE::Stream* pS
}
}
#define RECORDNAME_BY_TYPE(RECORD_TYPE, RECORD_NAME) \
case RECORD_TYPE: { name = RECORD_NAME; break;} \
std::string GetRecordName(PPT_FORMAT::RecordType dwType)
{
std::string name;
switch (dwType) {
RECORDNAME_BY_TYPE ( RT_Document, "DocumentContainer" )
RECORDNAME_BY_TYPE ( RT_DocumentAtom, "DocumentAtom" )
RECORDNAME_BY_TYPE ( RT_EndDocumentAtom, "EndDocumentAtom" )
RECORDNAME_BY_TYPE ( RT_Slide, "SlideContainer" )
RECORDNAME_BY_TYPE ( RT_SlideAtom, "SlideAtom" )
RECORDNAME_BY_TYPE ( RT_Notes, "Notes" )
RECORDNAME_BY_TYPE ( RT_NotesAtom, "NotesAtom" )
RECORDNAME_BY_TYPE ( RT_Environment, "Environment" )
RECORDNAME_BY_TYPE ( RT_SlidePersistAtom, "SlidePersistAtom" )
RECORDNAME_BY_TYPE ( RT_MainMaster, "MainMaster" )
RECORDNAME_BY_TYPE ( RT_SlideShowSlideInfoAtom, "SlideShowSlideInfoAtom" )
RECORDNAME_BY_TYPE ( RT_SlideViewInfo, "SlideViewInfo" )
RECORDNAME_BY_TYPE ( RT_GuideAtom, "GuideAtom" )
RECORDNAME_BY_TYPE ( RT_ViewInfoAtom, "ViewInfoAtom" )
RECORDNAME_BY_TYPE ( RT_SlideViewInfoAtom, "SlideViewInfoAtom" )
RECORDNAME_BY_TYPE ( RT_VbaInfo, "VbaInfo" )
RECORDNAME_BY_TYPE ( RT_VbaInfoAtom, "VbaInfoAtom" )
RECORDNAME_BY_TYPE ( RT_SlideShowDocInfoAtom, "SlideShowDocInfoAtom" )
RECORDNAME_BY_TYPE ( RT_Summary, "Summary" )
RECORDNAME_BY_TYPE ( RT_DocRoutingSlipAtom, "DocRoutingSlipAtom" )
RECORDNAME_BY_TYPE ( RT_OutlineViewInfo, "OutlineViewInfo" )
RECORDNAME_BY_TYPE ( RT_SorterViewInfo, "SorterViewInfo" )
RECORDNAME_BY_TYPE ( RT_ExternalObjectList, "ExternalObjectList" )
RECORDNAME_BY_TYPE ( RT_ExternalObjectListAtom, "ExternalObjectListAtom" )
RECORDNAME_BY_TYPE ( RT_DrawingGroup, "DrawingGroup" )
RECORDNAME_BY_TYPE ( RT_Drawing, "Drawing" )
RECORDNAME_BY_TYPE ( RT_GridSpacing10Atom, "GridSpacing10Atom" )
RECORDNAME_BY_TYPE ( RT_RoundTripTheme12Atom, "RoundTripTheme12Atom" )
RECORDNAME_BY_TYPE ( RT_RoundTripColorMapping12Atom, "RoundTripColorMapping12Atom" )
RECORDNAME_BY_TYPE ( RT_NamedShows, "NamedShows" )
RECORDNAME_BY_TYPE ( RT_NamedShow, "NamedShow" )
RECORDNAME_BY_TYPE ( RT_NamedShowSlidesAtom, "NamedShowSlidesAtom" )
RECORDNAME_BY_TYPE ( RT_NotesTextViewInfo9, "NotesTextViewInfo9" )
RECORDNAME_BY_TYPE ( RT_NormalViewSetInfo9, "NormalViewSetInfo9" )
RECORDNAME_BY_TYPE ( RT_NormalViewSetInfo9Atom, "NormalViewSetInfo9Atom" )
RECORDNAME_BY_TYPE ( RT_RoundTripOriginalMainMasterId12Atom, "RoundTripOriginalMainMasterId12Atom" )
RECORDNAME_BY_TYPE ( RT_RoundTripCompositeMasterId12Atom, "RoundTripCompositeMasterId12Atom" )
RECORDNAME_BY_TYPE ( RT_RoundTripContentMasterInfo12Atom, "RoundTripContentMasterInfo12Atom" )
RECORDNAME_BY_TYPE ( RT_RoundTripShapeId12Atom, "RoundTripShapeId12Atom" )
RECORDNAME_BY_TYPE ( RT_RoundTripHFPlaceholder12Atom, "RoundTripHFPlaceholder12Atom" )
RECORDNAME_BY_TYPE ( RT_RoundTripContentMasterId12Atom, "RoundTripContentMasterId12Atom" )
RECORDNAME_BY_TYPE ( RT_RoundTripOArtTextStyles12Atom, "RoundTripOArtTextStyles12Atom" )
RECORDNAME_BY_TYPE ( RT_RoundTripHeaderFooterDefaults12Atom, "RoundTripHeaderFooterDefaults12Atom" )
RECORDNAME_BY_TYPE ( RT_RoundTripDocFlags12Atom, "RoundTripDocFlags12Atom" )
RECORDNAME_BY_TYPE ( RT_RoundTripShapeCheckSumForCL12Atom, "RoundTripShapeCheckSumForCL12Atom" )
RECORDNAME_BY_TYPE ( RT_RoundTripNotesMasterTextStyles12Atom, "RoundTripNotesMasterTextStyles12Atom" )
RECORDNAME_BY_TYPE ( RT_RoundTripCustomTableStyles12Atom, "RoundTripCustomTableStyles12Atom" )
RECORDNAME_BY_TYPE ( RT_List, "List" )
RECORDNAME_BY_TYPE ( RT_FontCollection, "FontCollection" )
RECORDNAME_BY_TYPE ( RT_FontCollection10, "FontCollection10" )
RECORDNAME_BY_TYPE ( RT_BookmarkCollection, "BookmarkCollection" )
RECORDNAME_BY_TYPE ( RT_SoundCollection, "SoundCollection" )
RECORDNAME_BY_TYPE ( RT_SoundCollectionAtom, "SoundCollectionAtom" )
RECORDNAME_BY_TYPE ( RT_Sound, "Sound" )
RECORDNAME_BY_TYPE ( RT_SoundDataBlob, "SoundDataBlob" )
RECORDNAME_BY_TYPE ( RT_BookmarkSeedAtom, "BookmarkSeedAtom" )
RECORDNAME_BY_TYPE ( RT_ColorSchemeAtom, "ColorSchemeAtom" )
RECORDNAME_BY_TYPE ( RT_BlipCollection9, "BlipCollection9" )
RECORDNAME_BY_TYPE ( RT_BlipEntity9Atom, "BlipEntity9Atom" )
RECORDNAME_BY_TYPE ( RT_ExternalObjectRefAtom, "ExternalObjectRefAtom" )
RECORDNAME_BY_TYPE ( RT_PlaceholderAtom, "PlaceholderAtom" )
RECORDNAME_BY_TYPE ( RT_ShapeAtom, "ShapeAtom" )
RECORDNAME_BY_TYPE ( RT_ShapeFlags10Atom, "ShapeFlags10Atom" )
RECORDNAME_BY_TYPE ( RT_RoundTripNewPlaceholderId12Atom, "RoundTripNewPlaceholderId12Atom" )
RECORDNAME_BY_TYPE ( RT_OutlineTextRefAtom, "OutlineTextRefAtom" )
RECORDNAME_BY_TYPE ( RT_TextHeaderAtom, "TextHeaderAtom" )
RECORDNAME_BY_TYPE ( RT_TextCharsAtom, "TextCharsAtom" )
RECORDNAME_BY_TYPE ( RT_StyleTextPropAtom, "StyleTextPropAtom" )
RECORDNAME_BY_TYPE ( RT_MasterTextPropAtom, "MasterTextPropAtom" )
RECORDNAME_BY_TYPE ( RT_TextMasterStyleAtom, "TextMasterStyleAtom" )
RECORDNAME_BY_TYPE ( RT_TextCharFormatExceptionAtom, "TextCharFormatExceptionAtom" )
RECORDNAME_BY_TYPE ( RT_TextParagraphFormatExceptionAtom, "TextParagraphFormatExceptionAtom" )
RECORDNAME_BY_TYPE ( RT_TextRulerAtom, "TextRulerAtom" )
RECORDNAME_BY_TYPE ( RT_TextBookmarkAtom, "TextBookmarkAtom" )
RECORDNAME_BY_TYPE ( RT_TextBytesAtom, "TextBytesAtom" )
RECORDNAME_BY_TYPE ( RT_TextSpecialInfoDefaultAtom, "TextSpecialInfoDefaultAtom" )
RECORDNAME_BY_TYPE ( RT_TextSpecialInfoAtom, "TextSpecialInfoAtom" )
RECORDNAME_BY_TYPE ( RT_DefaultRulerAtom, "DefaultRulerAtom" )
RECORDNAME_BY_TYPE ( RT_StyleTextProp9Atom, "StyleTextProp9Atom" )
RECORDNAME_BY_TYPE ( RT_TextMasterStyle9Atom, "TextMasterStyle9Atom" )
RECORDNAME_BY_TYPE ( RT_OutlineTextProps9, "OutlineTextProps9" )
RECORDNAME_BY_TYPE ( RT_OutlineTextPropsHeader9Atom, "OutlineTextPropsHeader9Atom" )
RECORDNAME_BY_TYPE ( RT_TextDefaults9Atom, "TextDefaults9Atom" )
RECORDNAME_BY_TYPE ( RT_StyleTextProp10Atom, "StyleTextProp10Atom" )
RECORDNAME_BY_TYPE ( RT_TextMasterStyle10Atom, "TextMasterStyle10Atom" )
RECORDNAME_BY_TYPE ( RT_OutlineTextProps10, "OutlineTextProps10" )
RECORDNAME_BY_TYPE ( RT_TextDefaults10Atom, "TextDefaults10Atom" )
RECORDNAME_BY_TYPE ( RT_OutlineTextProps11, "OutlineTextProps11" )
RECORDNAME_BY_TYPE ( RT_StyleTextProp11Atom, "StyleTextProp11Atom" )
RECORDNAME_BY_TYPE ( RT_FontEntityAtom, "FontEntityAtom" )
RECORDNAME_BY_TYPE ( RT_FontEmbedDataBlob, "FontEmbedDataBlob" )
RECORDNAME_BY_TYPE ( RT_CString, "CString" )
RECORDNAME_BY_TYPE ( RT_MetaFile, "MetaFile" )
RECORDNAME_BY_TYPE ( RT_ExternalOleObjectAtom, "ExternalOleObjectAtom" )
RECORDNAME_BY_TYPE ( RT_Kinsoku, "Kinsoku" )
RECORDNAME_BY_TYPE ( RT_Handout, "Handout" )
RECORDNAME_BY_TYPE ( RT_ExternalOleEmbed, "ExternalOleEmbed" )
RECORDNAME_BY_TYPE ( RT_ExternalOleEmbedAtom, "ExternalOleEmbedAtom" )
RECORDNAME_BY_TYPE ( RT_ExternalOleLink, "ExternalOleLink" )
RECORDNAME_BY_TYPE ( RT_BookmarkEntityAtom, "BookmarkEntityAtom" )
RECORDNAME_BY_TYPE ( RT_ExternalOleLinkAtom, "ExternalOleLinkAtom" )
RECORDNAME_BY_TYPE ( RT_KinsokuAtom, "KinsokuAtom" )
RECORDNAME_BY_TYPE ( RT_ExternalHyperlinkAtom, "ExternalHyperlinkAtom" )
RECORDNAME_BY_TYPE ( RT_ExternalHyperlink, "ExternalHyperlink" )
RECORDNAME_BY_TYPE ( RT_SlideNumberMetaCharAtom, "SlideNumberMetaCharAtom" )
RECORDNAME_BY_TYPE ( RT_HeadersFooters, "HeadersFooters" )
RECORDNAME_BY_TYPE ( RT_HeadersFootersAtom, "HeadersFootersAtom" )
RECORDNAME_BY_TYPE ( RT_TextInteractiveInfoAtom, "TextInteractiveInfoAtom" )
RECORDNAME_BY_TYPE ( RT_ExternalHyperlink9, "ExternalHyperlink9" )
RECORDNAME_BY_TYPE ( RT_RecolorInfoAtom, "RecolorInfoAtom" )
RECORDNAME_BY_TYPE ( RT_ExternalOleControl, "ExternalOleControl" )
RECORDNAME_BY_TYPE ( RT_SlideListWithText, "SlideListWithText" )
RECORDNAME_BY_TYPE ( RT_AnimationInfoAtom, "AnimationInfoAtom" )
RECORDNAME_BY_TYPE ( RT_InteractiveInfo, "InteractiveInfo" )
RECORDNAME_BY_TYPE ( RT_InteractiveInfoAtom, "InteractiveInfoAtom" )
RECORDNAME_BY_TYPE ( RT_UserEditAtom, "UserEditAtom" )
RECORDNAME_BY_TYPE ( RT_CurrentUserAtom, "CurrentUserAtom" )
RECORDNAME_BY_TYPE ( RT_DateTimeMetaCharAtom, "DateTimeMetaCharAtom" )
RECORDNAME_BY_TYPE ( RT_GenericDateMetaCharAtom, "GenericDateMetaCharAtom" )
RECORDNAME_BY_TYPE ( RT_HeaderMetaCharAtom, "HeaderMetaCharAtom" )
RECORDNAME_BY_TYPE ( RT_FooterMetaCharAtom, "FooterMetaCharAtom" )
RECORDNAME_BY_TYPE ( RT_ExternalOleControlAtom, "ExternalOleControlAtom" )
RECORDNAME_BY_TYPE ( RT_ExternalMediaAtom, "ExternalMediaAtom" )
RECORDNAME_BY_TYPE ( RT_ExternalVideo, "ExternalVideo" )
RECORDNAME_BY_TYPE ( RT_ExternalAviMovie, "ExternalAviMovie" )
RECORDNAME_BY_TYPE ( RT_ExternalMciMovie, "ExternalMciMovie" )
RECORDNAME_BY_TYPE ( RT_ExternalMidiAudio, "ExternalMidiAudio" )
RECORDNAME_BY_TYPE ( RT_ExternalCdAudio, "ExternalCdAudio" )
RECORDNAME_BY_TYPE ( RT_ExternalWavAudioEmbedded, "ExternalWavAudioEmbedded" )
RECORDNAME_BY_TYPE ( RT_ExternalWavAudioLink, "ExternalWavAudioLink" )
RECORDNAME_BY_TYPE ( RT_ExternalOleObjectStg, "ExternalOleObjectStg" )
RECORDNAME_BY_TYPE ( RT_ExternalCdAudioAtom, "ExternalCdAudioAtom" )
RECORDNAME_BY_TYPE ( RT_ExternalWavAudioEmbeddedAtom, "ExternalWavAudioEmbeddedAtom" )
RECORDNAME_BY_TYPE ( RT_AnimationInfo, "AnimationInfo" )
RECORDNAME_BY_TYPE ( RT_RtfDateTimeMetaCharAtom, "RtfDateTimeMetaCharAtom" )
RECORDNAME_BY_TYPE ( RT_ExternalHyperlinkFlagsAtom, "ExternalHyperlinkFlagsAtom" )
RECORDNAME_BY_TYPE ( RT_ProgTags, "ProgTags" )
RECORDNAME_BY_TYPE ( RT_ProgStringTag, "ProgStringTag" )
RECORDNAME_BY_TYPE ( RT_ProgBinaryTag, "ProgBinaryTag" )
RECORDNAME_BY_TYPE ( RT_BinaryTagDataBlob, "BinaryTagDataBlob" )
RECORDNAME_BY_TYPE ( RT_PrintOptionsAtom, "PrintOptionsAtom" )
RECORDNAME_BY_TYPE ( RT_PersistDirectoryAtom, "PersistDirectoryAtom" )
RECORDNAME_BY_TYPE ( RT_PresentationAdvisorFlags9Atom, "PresentationAdvisorFlags9Atom" )
RECORDNAME_BY_TYPE ( RT_HtmlDocInfo9Atom, "HtmlDocInfo9Atom" )
RECORDNAME_BY_TYPE ( RT_HtmlPublishInfoAtom, "HtmlPublishInfoAtom" )
RECORDNAME_BY_TYPE ( RT_HtmlPublishInfo9, "HtmlPublishInfo9" )
RECORDNAME_BY_TYPE ( RT_BroadcastDocInfo9, "BroadcastDocInfo9" )
RECORDNAME_BY_TYPE ( RT_BroadcastDocInfo9Atom, "BroadcastDocInfo9Atom" )
RECORDNAME_BY_TYPE ( RT_EnvelopeFlags9Atom, "EnvelopeFlags9Atom" )
RECORDNAME_BY_TYPE ( RT_EnvelopeData9Atom, "EnvelopeData9Atom" )
RECORDNAME_BY_TYPE ( RT_VisualShapeAtom, "VisualShapeAtom" )
RECORDNAME_BY_TYPE ( RT_HashCodeAtom, "HashCodeAtom" )
RECORDNAME_BY_TYPE ( RT_VisualPageAtom, "VisualPageAtom" )
RECORDNAME_BY_TYPE ( RT_BuildList, "BuildList" )
RECORDNAME_BY_TYPE ( RT_BuildAtom, "BuildAtom" )
RECORDNAME_BY_TYPE ( RT_ChartBuild, "ChartBuild" )
RECORDNAME_BY_TYPE ( RT_ChartBuildAtom, "ChartBuildAtom" )
RECORDNAME_BY_TYPE ( RT_DiagramBuild, "DiagramBuild" )
RECORDNAME_BY_TYPE ( RT_DiagramBuildAtom, "DiagramBuildAtom" )
RECORDNAME_BY_TYPE ( RT_ParaBuild, "ParaBuild" )
RECORDNAME_BY_TYPE ( RT_ParaBuildAtom, "ParaBuildAtom" )
RECORDNAME_BY_TYPE ( RT_LevelInfoAtom, "LevelInfoAtom" )
RECORDNAME_BY_TYPE ( RT_RoundTripAnimationAtom12Atom, "RoundTripAnimationAtom12Atom" )
RECORDNAME_BY_TYPE ( RT_RoundTripAnimationHashAtom12Atom, "RoundTripAnimationHashAtom12Atom" )
RECORDNAME_BY_TYPE ( RT_Comment10, "Comment10" )
RECORDNAME_BY_TYPE ( RT_Comment10Atom, "Comment10Atom" )
RECORDNAME_BY_TYPE ( RT_CommentIndex10, "CommentIndex10" )
RECORDNAME_BY_TYPE ( RT_CommentIndex10Atom, "CommentIndex10Atom" )
RECORDNAME_BY_TYPE ( RT_LinkedShape10Atom, "LinkedShape10Atom" )
RECORDNAME_BY_TYPE ( RT_LinkedSlide10Atom, "LinkedSlide10Atom" )
RECORDNAME_BY_TYPE ( RT_SlideFlags10Atom, "SlideFlags10Atom" )
RECORDNAME_BY_TYPE ( RT_SlideTime10Atom, "SlideTime10Atom" )
RECORDNAME_BY_TYPE ( RT_DiffTree10, "DiffTree10" )
RECORDNAME_BY_TYPE ( RT_Diff10, "Diff10" )
RECORDNAME_BY_TYPE ( RT_Diff10Atom, "Diff10Atom" )
RECORDNAME_BY_TYPE ( RT_SlideListTableSize10Atom, "SlideListTableSize10Atom" )
RECORDNAME_BY_TYPE ( RT_SlideListEntry10Atom, "SlideListEntry10Atom" )
RECORDNAME_BY_TYPE ( RT_SlideListTable10, "SlideListTable10" )
RECORDNAME_BY_TYPE ( RT_CryptSession10Container, "CryptSession10Container" )
RECORDNAME_BY_TYPE ( RT_FontEmbedFlags10Atom, "FontEmbedFlags10Atom" )
RECORDNAME_BY_TYPE ( RT_FilterPrivacyFlags10Atom, "FilterPrivacyFlags10Atom" )
RECORDNAME_BY_TYPE ( RT_DocToolbarStates10Atom, "DocToolbarStates10Atom" )
RECORDNAME_BY_TYPE ( RT_PhotoAlbumInfo10Atom, "PhotoAlbumInfo10Atom" )
RECORDNAME_BY_TYPE ( RT_SmartTagStore11Container, "SmartTagStore11Container" )
RECORDNAME_BY_TYPE ( RT_RoundTripSlideSyncInfo12, "RoundTripSlideSyncInfo12" )
RECORDNAME_BY_TYPE ( RT_RoundTripSlideSyncInfoAtom12, "RoundTripSlideSyncInfoAtom12" )
RECORDNAME_BY_TYPE ( RT_TimeConditionContainer, "TimeConditionContainer" )
RECORDNAME_BY_TYPE ( RT_TimeNode, "TimeNode" )
RECORDNAME_BY_TYPE ( RT_TimeCondition, "TimeCondition" )
RECORDNAME_BY_TYPE ( RT_TimeModifier, "TimeModifier" )
RECORDNAME_BY_TYPE ( RT_TimeBehaviorContainer, "TimeBehaviorContainer" )
RECORDNAME_BY_TYPE ( RT_TimeAnimateBehaviorContainer, "TimeAnimateBehaviorContainer" )
RECORDNAME_BY_TYPE ( RT_TimeColorBehaviorContainer, "TimeColorBehaviorContainer" )
RECORDNAME_BY_TYPE ( RT_TimeEffectBehaviorContainer, "TimeEffectBehaviorContainer" )
RECORDNAME_BY_TYPE ( RT_TimeMotionBehaviorContainer, "TimeMotionBehaviorContainer" )
RECORDNAME_BY_TYPE ( RT_TimeRotationBehaviorContainer, "TimeRotationBehaviorContainer" )
RECORDNAME_BY_TYPE ( RT_TimeScaleBehaviorContainer, "TimeScaleBehaviorContainer" )
RECORDNAME_BY_TYPE ( RT_TimeSetBehaviorContainer, "TimeSetBehaviorContainer" )
RECORDNAME_BY_TYPE ( RT_TimeCommandBehaviorContainer, "TimeCommandBehaviorContainer" )
RECORDNAME_BY_TYPE ( RT_TimeBehavior, "TimeBehavior" )
RECORDNAME_BY_TYPE ( RT_TimeAnimateBehavior, "TimeAnimateBehavior" )
RECORDNAME_BY_TYPE ( RT_TimeColorBehavior, "TimeColorBehavior" )
RECORDNAME_BY_TYPE ( RT_TimeEffectBehavior, "TimeEffectBehavior" )
RECORDNAME_BY_TYPE ( RT_TimeMotionBehavior, "TimeMotionBehavior" )
RECORDNAME_BY_TYPE ( RT_TimeRotationBehavior, "TimeRotationBehavior" )
RECORDNAME_BY_TYPE ( RT_TimeScaleBehavior, "TimeScaleBehavior" )
RECORDNAME_BY_TYPE ( RT_TimeSetBehavior, "TimeSetBehavior" )
RECORDNAME_BY_TYPE ( RT_TimeCommandBehavior, "TimeCommandBehavior" )
RECORDNAME_BY_TYPE ( RT_TimeClientVisualElement, "TimeClientVisualElement" )
RECORDNAME_BY_TYPE ( RT_TimePropertyList, "TimePropertyList" )
RECORDNAME_BY_TYPE ( RT_TimeVariantList, "TimeVariantList" )
RECORDNAME_BY_TYPE ( RT_TimeAnimationValueList, "TimeAnimationValueList" )
RECORDNAME_BY_TYPE ( RT_TimeIterateData, "TimeIterateData" )
RECORDNAME_BY_TYPE ( RT_TimeSequenceData, "TimeSequenceData" )
RECORDNAME_BY_TYPE ( RT_TimeVariant, "TimeVariant" )
RECORDNAME_BY_TYPE ( RT_TimeAnimationValue, "TimeAnimationValue" )
RECORDNAME_BY_TYPE ( RT_TimeExtTimeNodeContainer, "TimeExtTimeNodeContainer" )
RECORDNAME_BY_TYPE ( RT_TimeSubEffectContainer, "TimeSubEffectContainer" )
RECORDNAME_BY_TYPE ( RTE_DGG_CONTAINER, "DGG_CONTAINER" )
RECORDNAME_BY_TYPE ( RTE_BSTORE_CONTAINER, "BSTORE_CONTAINER" )
RECORDNAME_BY_TYPE ( RTE_DG_CONTAINER, "DG_CONTAINER" )
RECORDNAME_BY_TYPE ( RTE_SPGR_CONTAINER, "SPGR_CONTAINER" )
RECORDNAME_BY_TYPE ( RTE_SP_CONTAINER, "SP_CONTAINER" )
RECORDNAME_BY_TYPE ( RTE_SOLVERCONTAINER, "SOLVERCONTAINER" )
RECORDNAME_BY_TYPE ( RTE_DGG, "DGG" )
RECORDNAME_BY_TYPE ( RTE_BSE, "BSE" )
RECORDNAME_BY_TYPE ( RTE_DG, "DG" )
RECORDNAME_BY_TYPE ( RTE_SPGR, "SPGR" )
RECORDNAME_BY_TYPE ( RTE_SP, "SP" )
RECORDNAME_BY_TYPE ( RTE_OPT, "OPT" )
RECORDNAME_BY_TYPE ( RTE_TEXTBOX, "TEXTBOX" )
RECORDNAME_BY_TYPE ( RTE_CLIENTTEXTBOX, "CLIENTTEXTBOX" )
RECORDNAME_BY_TYPE ( RTE_ANCHOR, "ANCHOR" )
RECORDNAME_BY_TYPE ( RTE_CHILDANCHOR, "CHILDANCHOR" )
RECORDNAME_BY_TYPE ( RTE_CLIENTANCHOR, "CLIENTANCHOR" )
RECORDNAME_BY_TYPE ( RTE_CLIENTDATA, "CLIENTDATA" )
RECORDNAME_BY_TYPE ( RTE_CONNECTORRULE, "CONNECTORRULE" )
RECORDNAME_BY_TYPE ( RTE_ALIGNRULE, "ALIGNRULE" )
RECORDNAME_BY_TYPE ( RTE_ARCRULE, "ARCRULE" )
RECORDNAME_BY_TYPE ( RTE_CLIENTRULE, "CLIENTRULE" )
RECORDNAME_BY_TYPE ( RTE_CLSID, "CLSID" )
RECORDNAME_BY_TYPE ( RTE_CALLOUTRULE, "CALLOUTRULE" )
RECORDNAME_BY_TYPE ( RTE_BLIP_START, "BLIP_START" )
RECORDNAME_BY_TYPE ( RTE_BLIP_EMF, "BLIP_EMF" )
RECORDNAME_BY_TYPE ( RTE_BLIP_WMF, "BLIP_WMF" )
RECORDNAME_BY_TYPE ( RTE_BLIP_PICT, "BLIP_PICT" )
RECORDNAME_BY_TYPE ( RTE_BLIP_JPEG, "BLIP_JPEG" )
RECORDNAME_BY_TYPE ( RTE_BLIP_PNG, "BLIP_PNG" )
RECORDNAME_BY_TYPE ( RTE_BLIP_DIB, "BLIP_DIB" )
RECORDNAME_BY_TYPE ( RTE_BLIP_END, "BLIP_END" )
RECORDNAME_BY_TYPE ( RTE_REGROUPITEMS, "REGROUPITEMS" )
RECORDNAME_BY_TYPE ( RTE_SELECTION, "SELECTION" )
RECORDNAME_BY_TYPE ( RTE_COLORMRU, "COLORMRU" )
RECORDNAME_BY_TYPE ( RTE_DELETEDPSPL, "DELETEDPSPL" )
RECORDNAME_BY_TYPE ( RTE_SPLITMENUCOLORS, "SPLITMENUCOLORS" )
RECORDNAME_BY_TYPE ( RTE_OLEOBJECT, "OLEOBJECT" )
RECORDNAME_BY_TYPE ( RTE_COLORSCHEME, "COLORSCHEME" )
RECORDNAME_BY_TYPE ( RTE_SECONDARY_OPT, "SECONDARY_OPT" )
RECORDNAME_BY_TYPE ( RTE_TETRIARY_OPT, "TETRIARY_OPT" )
RECORDNAME_BY_TYPE ( RTE_BLIP_TIFF, "BLIP_TIFF" )
default:
name = "UnknownRecord!";
}
return name;
}
IRecord* CreateByType(SRecordHeader oHeader)
{
IRecord* pRecord = NULL;
switch (oHeader.RecType)
{
CREATE_BY_TYPE(RECORD_TYPE_SLIDELISTWITHTEXT , CRecordSlideListWithText)
CREATE_BY_TYPE(RECORD_TYPE_DOCUMENT_ATOM , CRecordDocumentAtom)
CREATE_BY_TYPE(RECORD_TYPE_ENDDOCUMENT , CRecordEndDocument)
//CREATE_BY_TYPE(RECORD_TYPE_SSLIDE_LAYOUT_ATOM , CRecordSSlideLayoutAtom)
CREATE_BY_TYPE(RECORD_TYPE_SLIDE_ATOM , CRecordSlideAtom)
CREATE_BY_TYPE(RECORD_TYPE_NOTES_ATOM , CRecordNotesAtom)
CREATE_BY_TYPE(RECORD_TYPE_SLIDE_PERSIST_ATOM , CRecordSlidePersistAtom)
CREATE_BY_TYPE(RECORD_TYPE_ENVIRONMENT , CRecordDocumentTextInfo)
CREATE_BY_TYPE(RECORD_TYPE_FONTCOLLECTION , CRecordFontCollection)
CREATE_BY_TYPE(RECORD_TYPE_FONTCOLLECTION10 , CRecordFontCollection)
//CREATE_BY_TYPE(RECORD_TYPE_UNKNOWN , CRecordMasterPersistAtom)
//CREATE_BY_TYPE(RECORD_TYPE_UNKNOWN , CRecordNotesPersistAtom)
CREATE_BY_TYPE(RECORD_TYPE_SSSLIDE_INFO_ATOM , CSlideShowSlideInfoAtom)
//CREATE_BY_TYPE(RECORD_TYPE_GUIDE_ATOM , CRecordGuideAtom)
//CREATE_BY_TYPE(RECORD_TYPE_VIEWINFO_ATOM , CRecordZoomViewInfoAtom)
//CREATE_BY_TYPE(RECORD_TYPE_VIEWINFO_ATOM , CRecordNoZoomViewInfoAtom)
CREATE_BY_TYPE(RECORD_TYPE_VIEWINFO_ATOM , CRecordViewInfoAtom)
CREATE_BY_TYPE(RECORD_TYPE_SLIDE_VIEWINFO_ATOM , CRecordSlideViewInfoAtom)
CREATE_BY_TYPE(RECORD_TYPE_VBAINFO_ATOM , CRecordVBAInfoAtom)
CREATE_BY_TYPE(RECORD_TYPE_SSDOCINFO_ATOM , CRecordSSDocInfoAtom)
//CREATE_BY_TYPE(RECORD_TYPE_DOC_ROUTING_SLIP , CRecordDocRoutingSlipAtom)
CREATE_BY_TYPE(RECORD_TYPE_EXOBJLIST_ATOM , CRecordExObjListAtom)
//CREATE_BY_TYPE(RECORD_TYPE_UNKNOWN , CRecordGridSpacing10Atom)
CREATE_BY_TYPE(RT_RoundTripTheme12Atom , CRecordRoundTripThemeAtom)
CREATE_BY_TYPE(RT_RoundTripColorMapping12Atom , CRecordRoundTripColorMappingAtom)
//CREATE_BY_TYPE(RECORD_TYPE_NAMEDSHOW_SLIDES , CRecordNamedShowSlidesAtom)
//CREATE_BY_TYPE(RECORD_TYPE_SHEET_PROPERTIES , CRecordNormalViewSetInfoAtom)
switch (oHeader.RecType)
{
CREATE_BY_TYPE(RT_AnimationInfo, CRecordAnimationInfoContainer)
CREATE_BY_TYPE(RT_AnimationInfoAtom, CRecordAnimationInfoAtom)
CREATE_BY_TYPE(RT_HashCodeAtom, CRecordHashCode10Atom)
CREATE_BY_TYPE(RT_BuildList, CRecordBuildListContainer)
CREATE_BY_TYPE(RT_ParaBuild, CRecordParaBuildContainer)
CREATE_BY_TYPE(RT_ChartBuild, CRecordChartBuildContainer)
CREATE_BY_TYPE(RT_DiagramBuild, CRecordDiagramBuildContainer)
CREATE_BY_TYPE(RT_ParaBuildAtom, CRecordParaBuildAtom)
CREATE_BY_TYPE(RT_LevelInfoAtom, CRecordLevelInfoAtom)
CREATE_BY_TYPE(RT_ChartBuildAtom, CRecordChartBuildAtom)
CREATE_BY_TYPE(RT_DiagramBuildAtom, CRecordDiagramBuildAtom)
CREATE_BY_TYPE(RT_TimeExtTimeNodeContainer, CRecordExtTimeNodeContainer)
CREATE_BY_TYPE(RT_TimeSubEffectContainer, CRecordSubEffectContainer)
CREATE_BY_TYPE(RT_TimeNode, CRecordTimeNodeAtom)
CREATE_BY_TYPE(RT_TimePropertyList, CRecordTimePropertyList4TimeNodeContainer)
CREATE_BY_TYPE(RT_TimeAnimateBehaviorContainer, CRecordTimeAnimateBehaviorContainer)
CREATE_BY_TYPE(RT_TimeAnimateBehavior, CRecordTimeAnimateBehaviorAtom)
CREATE_BY_TYPE(RT_TimeAnimationValueList, CRecordTimeAnimationValueListContainer)
CREATE_BY_TYPE(RT_TimeAnimationValue, CRecordTimeAnimationValueAtom)
CREATE_BY_TYPE(RT_TimeBehaviorContainer, CRecordTimeBehaviorContainer)
CREATE_BY_TYPE(RT_TimeVariantList, CRecordTimeStringListContainer)
CREATE_BY_TYPE(RT_TimeClientVisualElement, CRecordClientVisualElementContainer)
CREATE_BY_TYPE(RT_VisualPageAtom, CRecordVisualPageAtom)
// CREATE_BY_TYPE(RT_VisualShapeAtom, CRecordVisualShapeOrSoundAtom)
// CREATE_BY_TYPE(RT_VisualShapeAtom, CRecordVisualSoundAtom)
CREATE_BY_TYPE(RT_TimeColorBehaviorContainer, CRecordTimeColorBehaviorContainer)
CREATE_BY_TYPE(RT_TimeColorBehavior, CRecordTimeColorBehaviorAtom)
CREATE_BY_TYPE(RT_TimeEffectBehaviorContainer, CRecordTimeEffectBehaviorContainer)
CREATE_BY_TYPE(RT_TimeEffectBehavior, CRecordTimeEffectBehaviorAtom)
CREATE_BY_TYPE(RT_TimeMotionBehaviorContainer, CRecordTimeMotionBehaviorContainer)
CREATE_BY_TYPE(RT_TimeMotionBehavior, CRecordTimeMotionBehaviorAtom)
CREATE_BY_TYPE(RT_TimeRotationBehaviorContainer, CRecordTimeRotationBehaviorContainer)
CREATE_BY_TYPE(RT_TimeRotationBehavior, CRecordTimeRotationBehaviorAtom)
CREATE_BY_TYPE(RT_TimeScaleBehaviorContainer, CRecordTimeScaleBehaviorContainer)
CREATE_BY_TYPE(RT_TimeScaleBehavior, CRecordTimeScaleBehaviorAtom)
CREATE_BY_TYPE(RT_TimeSetBehaviorContainer, CRecordTimeSetBehaviorContainer)
CREATE_BY_TYPE(RT_TimeSetBehavior, CRecordTimeSetBehaviorAtom)
CREATE_BY_TYPE(RT_TimeCommandBehaviorContainer, CRecordTimeCommandBehaviorContainer)
CREATE_BY_TYPE(RT_TimeCommandBehavior, CRecordTimeCommandBehaviorAtom)
CREATE_BY_TYPE(RT_TimeIterateData, CRecordTimeIterateDataAtom)
CREATE_BY_TYPE(RT_TimeSequenceData, CRecordTimeSequenceDataAtom)
CREATE_BY_TYPE(RT_TimeConditionContainer, CRecordTimeConditionContainer)
CREATE_BY_TYPE(RT_TimeCondition, CRecordTimeConditionAtom)
CREATE_BY_TYPE(RT_TimeModifier, CRecordTimeModifierAtom)
CREATE_BY_TYPE(RECORD_TYPE_COLOR_SCHEME_ATOM , CRecordColorSchemeAtom)
CREATE_BY_TYPE(RECORD_TYPE_ORIGINALMAINMASTERID , CRecordTripOriginalMasterId12Atom)
CREATE_BY_TYPE(RECORD_TYPE_COMPOSITEMASTERID , CRecordTripCompositeMasterId12Atom)
CREATE_BY_TYPE(RECORD_TYPE_ROUNDTRIPCONTENTMASTERINFO12 , CRecordRoundTripContentMasterInfo12Atom) // ECMA-376 дубль
//CREATE_BY_TYPE(RECORD_TYPE_ROUNDTRIPSHAPEID12 , CRecordRoundTripShapeId12Atom)
CREATE_BY_TYPE(RECORD_TYPE_ROUNDTRIPHFPLACEHOLDER12 , CRecordRoundTripHFPlaceholder12Atom)
//CREATE_BY_TYPE(RECORD_TYPE_ROUNDTRIPCONTENTMASTERID , CRecordRoundTripContentMasterId12Atom)
//CREATE_BY_TYPE(RECORD_TYPE_ROUNDTRIPOARTTEXTSTYLES12 , CRecordRoundTripOArtTextStyles12Atom)
CREATE_BY_TYPE(RECORD_TYPE_ROUNDTRIPHEADERFOOTERDEFAULTS12ATOM , CRecordRoundTripHeaderFooterDefaults12Atom)
CREATE_BY_TYPE(RECORD_TYPE_ROUNDTRIPNOTESMASTERTEXTSTYLES12 , CRecordRoundTripNotesMasterTextStyles12Atom)
//CREATE_BY_TYPE(RECORD_TYPE_ROUNDTRIPDOCFLAGS12 , CRecordRoundTripDocFlags12Atom)
//CREATE_BY_TYPE(RECORD_TYPE_ROUNDTRIPSHAPECHECKSUMFORCUSTOMLAYOUTS12 , CRecordRoundTripShapeCheckSumForCustomLayouts12Atom)
CREATE_BY_TYPE(RECORD_TYPE_ROUNDTRIPCUSTOMTABLESTYLES12 , CRecordRoundTripCustomTableStyles12Atom)
//CREATE_BY_TYPE(RECORD_TYPE_BOOKMARK_SEED_ATOM , CRecordBookmarkSeedAtom)
//CREATE_BY_TYPE(RECORD_TYPE_UNKNOWN, CRecordBlipEntityAtom)
//CREATE_BY_TYPE(RECORD_TYPE_UNKNOWN, CRecordExObjRefAtom)
CREATE_BY_TYPE(RECORD_TYPE_OEPLACEHOLDER_ATOM , CRecordPlaceHolderAtom)
//CREATE_BY_TYPE(RECORD_TYPE_UNKNOWN, CRecordShapeFlagsAtom)
//CREATE_BY_TYPE(RECORD_TYPE_UNKNOWN, CRecordShapeFlags10Atom)
//CREATE_BY_TYPE(RECORD_TYPE_UNKNOWN, CRecordRoundTripNewPlaceholderId12Atom)
CREATE_BY_TYPE(RECORD_TYPE_OUTLINE_TEXTREF_ATOM , CRecordOutlineTextRefAtom)
CREATE_BY_TYPE(RECORD_TYPE_TEXT_HEADER_ATOM , CRecordTextHeaderAtom)
CREATE_BY_TYPE(RECORD_TYPE_TEXT_CHARS_ATOM , CRecordTextCharsAtom)
CREATE_BY_TYPE(RECORD_TYPE_STYLE_TEXTPROP_ATOM , CRecordStyleTextPropAtom)
CREATE_BY_TYPE(RECORD_TYPE_TEXTSPECINFO_ATOM , CRecordTextSpecInfoAtom)
CREATE_BY_TYPE(RECORD_TYPE_BASE_TEXTPROP_ATOM , CRecordMasterTextPropAtom)
CREATE_BY_TYPE(RECORD_TYPE_TXMASTERSTYLE_ATOM , CRecordTextMasterStyleAtom)
CREATE_BY_TYPE(RECORD_TYPE_TXCFSTYLE_ATOM , CRecordTextCFExceptionAtom)
CREATE_BY_TYPE(RECORD_TYPE_TXPFSTYLE_ATOM , CRecordTextPFExceptionAtom)
CREATE_BY_TYPE(RECORD_TYPE_TXSISTYLE_ATOM , CRecordTextSIExceptionAtom)
CREATE_BY_TYPE(RECORD_TYPE_TEXTRULER_ATOM , CRecordTextRulerAtom)
//CREATE_BY_TYPE(RECORD_TYPE_TEXTBOOKMARK_ATOM , CRecordTextBookmarkAtom)
CREATE_BY_TYPE(RECORD_TYPE_TEXTBYTES_ATOM , CRecordTextBytesAtom)
//CREATE_BY_TYPE(RECORD_TYPE_UNKNOWN , CRecordOutlineTextPropsHeaderExAtom)
CREATE_BY_TYPE(RT_SlideListWithText , CRecordSlideListWithText)
CREATE_BY_TYPE(RT_DocumentAtom , CRecordDocumentAtom)
CREATE_BY_TYPE(RT_EndDocumentAtom , CRecordEndDocument)
//CREATE_BY_TYPE(RECORD_TYPE_SSLIDE_LAYOUT_ATOM , CRecordSSlideLayoutAtom)
CREATE_BY_TYPE(RT_SlideAtom , CRecordSlideAtom)
CREATE_BY_TYPE(RT_NotesAtom , CRecordNotesAtom)
CREATE_BY_TYPE(RT_SlidePersistAtom , CRecordSlidePersistAtom)
CREATE_BY_TYPE(RT_Environment , CRecordDocumentTextInfo)
CREATE_BY_TYPE(RT_FontCollection , CRecordFontCollection)
CREATE_BY_TYPE(RT_FontCollection10 , CRecordFontCollection)
//CREATE_BY_TYPE(RECORD_TYPE_UNKNOWN , CRecordMasterPersistAtom)
//CREATE_BY_TYPE(RECORD_TYPE_UNKNOWN , CRecordNotesPersistAtom)
CREATE_BY_TYPE(RT_SlideShowSlideInfoAtom , CSlideShowSlideInfoAtom)
//CREATE_BY_TYPE(RECORD_TYPE_GUIDE_ATOM , CRecordGuideAtom)
//CREATE_BY_TYPE(RECORD_TYPE_VIEWINFO_ATOM , CRecordZoomViewInfoAtom)
//CREATE_BY_TYPE(RECORD_TYPE_VIEWINFO_ATOM , CRecordNoZoomViewInfoAtom)
CREATE_BY_TYPE(RT_ViewInfoAtom , CRecordViewInfoAtom)
CREATE_BY_TYPE(RT_SlideViewInfoAtom , CRecordSlideViewInfoAtom)
CREATE_BY_TYPE(RT_VbaInfoAtom , CRecordVBAInfoAtom)
CREATE_BY_TYPE(RT_SlideShowDocInfoAtom , CRecordSSDocInfoAtom)
//CREATE_BY_TYPE(RECORD_TYPE_DOC_ROUTING_SLIP , CRecordDocRoutingSlipAtom)
CREATE_BY_TYPE(RT_ExternalObjectListAtom , CRecordExObjListAtom)
//CREATE_BY_TYPE(RECORD_TYPE_UNKNOWN , CRecordGridSpacing10Atom)
CREATE_BY_TYPE(RT_RoundTripTheme12Atom , CRecordRoundTripThemeAtom)
CREATE_BY_TYPE(RT_RoundTripColorMapping12Atom , CRecordRoundTripColorMappingAtom)
//CREATE_BY_TYPE(RECORD_TYPE_NAMEDSHOW_SLIDES , CRecordNamedShowSlidesAtom)
//CREATE_BY_TYPE(RECORD_TYPE_SHEET_PROPERTIES , CRecordNormalViewSetInfoAtom)
CREATE_BY_TYPE(RECORD_TYPE_GUIDE_ATOM , CRecordGuideAtom)
CREATE_BY_TYPE(RECORD_TYPE_FONTENTITY_ATOM , CRecordFontEntityAtom)
CREATE_BY_TYPE(RECORD_TYPE_FONT_EMBEDDEDDATA , CRecordFontEmbedDataBlob)
//CREATE_BY_TYPE(RECORD_TYPE_METAFILE , CRecordMetafileBlob)
CREATE_BY_TYPE(RECORD_TYPE_CSTRING , CRecordCString)
CREATE_BY_TYPE(RECORD_TYPE_SOUNDCOLL_ATOM , CRecordSoundCollAtom)
CREATE_BY_TYPE(RECORD_TYPE_EXOLEOBJ_ATOM , CRecordExOleObjAtom)
CREATE_BY_TYPE(RECORD_TYPE_EXEMBEDATOM , CRecordExOleEmbedAtom)
//CREATE_BY_TYPE(RECORD_TYPE_BOOKMARK_ENTITY_ATOM , CRecordBookmarkEntityAtom)
//CREATE_BY_TYPE(RECORD_TYPE_EXLINK_ATOM , CRecordExOleLinkAtom)
CREATE_BY_TYPE(RECORD_TYPE_SRKINSOKU_ATOM , CRecordKinsokuAtom)
CREATE_BY_TYPE(RECORD_TYPE_EXHYPERLINK , CRecordExHyperlinkContainer)
CREATE_BY_TYPE(RECORD_TYPE_EXHYPERLINK_ATOM , CRecordExHyperlinkAtom)
CREATE_BY_TYPE(RT_SorterViewInfo , CRecordColorSchemeAtom)
CREATE_BY_TYPE(RECORD_TYPE_HEADERSFOOTERS , CRecordHeadersFootersContainer)
CREATE_BY_TYPE(RECORD_TYPE_HEADERSFOOTERS_ATOM , CRecordHeadersFootersAtom)
CREATE_BY_TYPE(RT_RoundTripOriginalMainMasterId12Atom , CRecordTripOriginalMasterId12Atom)
CREATE_BY_TYPE(RT_RoundTripCompositeMasterId12Atom , CRecordTripCompositeMasterId12Atom)
CREATE_BY_TYPE(RT_RoundTripContentMasterInfo12Atom , CRecordRoundTripContentMasterInfo12Atom) // ECMA-376 дубль
//CREATE_BY_TYPE(RECORD_TYPE_ROUNDTRIPSHAPEID12 , CRecordRoundTripShapeId12Atom)
CREATE_BY_TYPE(RT_RoundTripHFPlaceholder12Atom , CRecordRoundTripHFPlaceholder12Atom)
//CREATE_BY_TYPE(RECORD_TYPE_ROUNDTRIPCONTENTMASTERID , CRecordRoundTripContentMasterId12Atom)
//CREATE_BY_TYPE(RECORD_TYPE_ROUNDTRIPOARTTEXTSTYLES12 , CRecordRoundTripOArtTextStyles12Atom)
CREATE_BY_TYPE(RT_RoundTripHeaderFooterDefaults12Atom , CRecordRoundTripHeaderFooterDefaults12Atom)
CREATE_BY_TYPE(RT_RoundTripNotesMasterTextStyles12Atom , CRecordRoundTripNotesMasterTextStyles12Atom)
//CREATE_BY_TYPE(RECORD_TYPE_ROUNDTRIPDOCFLAGS12 , CRecordRoundTripDocFlags12Atom)
//CREATE_BY_TYPE(RECORD_TYPE_ROUNDTRIPSHAPECHECKSUMFORCUSTOMLAYOUTS12 , CRecordRoundTripShapeCheckSumForCustomLayouts12Atom)
CREATE_BY_TYPE(RT_RoundTripCustomTableStyles12Atom , CRecordRoundTripCustomTableStyles12Atom)
CREATE_BY_TYPE(RECORD_TYPE_SLIDENUMBER_META_ATOM , CRecordSlideNumberMetaAtom)
CREATE_BY_TYPE(RECORD_TYPE_DATETIME_META_ATOM , CRecordDateTimeMetaAtom)
CREATE_BY_TYPE(RECORD_TYPE_HEADER_META_ATOM , CRecordHeaderMetaAtom)
CREATE_BY_TYPE(RECORD_TYPE_FOOTER_META_ATOM , CRecordFooterMetaAtom)
CREATE_BY_TYPE(RECORD_TYPE_GENERICDATE_META_ATOM , CRecordGenericDateMetaAtom)
CREATE_BY_TYPE(RECORD_TYPE_RTFDATETIME_META_ATOM , CRecordRTFDateTimeMetaAtom)
//CREATE_BY_TYPE(RECORD_TYPE_BOOKMARK_SEED_ATOM , CRecordBookmarkSeedAtom)
//CREATE_BY_TYPE(RECORD_TYPE_UNKNOWN, CRecordBlipEntityAtom)
//CREATE_BY_TYPE(RECORD_TYPE_UNKNOWN, CRecordExObjRefAtom)
CREATE_BY_TYPE(RT_PlaceholderAtom , CRecordPlaceHolderAtom)
//CREATE_BY_TYPE(RECORD_TYPE_UNKNOWN, CRecordShapeFlagsAtom)
//CREATE_BY_TYPE(RECORD_TYPE_UNKNOWN, CRecordShapeFlags10Atom)
//CREATE_BY_TYPE(RECORD_TYPE_UNKNOWN, CRecordRoundTripNewPlaceholderId12Atom)
//CREATE_BY_TYPE(RECORD_TYPE_UNKNOWN , CRecordMouseTextInteractiveInfoAtom)
//CREATE_BY_TYPE(RECORD_TYPE_UNKNOWN , CRecordRecolorInfoAtom)
//CREATE_BY_TYPE(RECORD_TYPE_UNKNOWN , CRecordAnimationInfoAtom)
CREATE_BY_TYPE(RT_OutlineTextRefAtom , CRecordOutlineTextRefAtom)
CREATE_BY_TYPE(RT_TextHeaderAtom , CRecordTextHeaderAtom)
CREATE_BY_TYPE(RT_TextCharsAtom , CRecordTextCharsAtom)
CREATE_BY_TYPE(RT_StyleTextPropAtom , CRecordStyleTextPropAtom)
CREATE_BY_TYPE(RT_TextSpecialInfoAtom , CRecordTextSpecInfoAtom)
CREATE_BY_TYPE(RT_MasterTextPropAtom , CRecordMasterTextPropAtom)
CREATE_BY_TYPE(RT_TextMasterStyleAtom , CRecordTextMasterStyleAtom)
CREATE_BY_TYPE(RECORD_TYPE_EX_VIDEOCONTAINER , CRecordExVideoContainer)
CREATE_BY_TYPE(RECORD_TYPE_EX_OBJREF_ATOM , CRecordExObjRefAtom)
CREATE_BY_TYPE(RECORD_TYPE_EX_MEDIA_ATOM , CRecordExMediaAtom)
CREATE_BY_TYPE(RECORD_TYPE_EXCONTROL_ATOM , CRecordExControlAtom)
CREATE_BY_TYPE(RECORD_TYPE_ESCHER_BSTORE_CONTAINER , CRecordBlipStoreContainer)
CREATE_BY_TYPE(RECORD_TYPE_ESCHER_BSE , CRecordBlipStoreEntry)
CREATE_BY_TYPE(RT_TextCharFormatExceptionAtom , CRecordTextCFExceptionAtom)
CREATE_BY_TYPE(RT_TextParagraphFormatExceptionAtom , CRecordTextPFExceptionAtom)
CREATE_BY_TYPE(RT_TextSpecialInfoDefaultAtom , CRecordTextSIExceptionAtom)
CREATE_BY_TYPE(RECORD_TYPE_ESCHER_DG_CONTAINER , CRecordDrawingContainer)
CREATE_BY_TYPE(RECORD_TYPE_ESCHER_DGG , CRecordDrawingGroup)
CREATE_BY_TYPE(RECORD_TYPE_ESCHER_DG , CRecordDrawingRecord)
CREATE_BY_TYPE(RECORD_TYPE_ESCHER_SPGR , CRecordGroupShape)
CREATE_BY_TYPE(RECORD_TYPE_ESCHER_SPGR_CONTAINER , CRecordGroupShapeContainer)
CREATE_BY_TYPE(RECORD_TYPE_ESCHER_SP_CONTAINER , CRecordShapeContainer)
CREATE_BY_TYPE(RECORD_TYPE_ESCHER_SP , CRecordShape)
CREATE_BY_TYPE(RECORD_TYPE_ESCHER_CLIENTANCHOR , CRecordClientAnchor)
CREATE_BY_TYPE(RECORD_TYPE_ESCHER_CHILDANCHOR , CRecordChildAnchor)
CREATE_BY_TYPE(RECORD_TYPE_ESCHER_OPT , CRecordShapeProperties)
CREATE_BY_TYPE(RECORD_TYPE_ESCHER_SECONDARY_OPT , CRecordShapeProperties)
CREATE_BY_TYPE(RECORD_TYPE_ESCHER_TETRIARY_OPT , CRecordShapeProperties)
CREATE_BY_TYPE(RECORD_TYPE_ESCHER_REGROUPITEMS , CRecordRegGroupItems)
CREATE_BY_TYPE(RECORD_TYPE_ESCHER_SPLITMENUCOLORS , CRecordSplitMenuColorRecord)
CREATE_BY_TYPE(RECORD_TYPE_ESCHER_COLORMRU , CRecordMostRecentlyUserColors)
CREATE_BY_TYPE(RECORD_TYPE_EX_CDAUDIO , CRecordExCDAudioContainer)
CREATE_BY_TYPE(RECORD_TYPE_EX_WAVAUDIOLINK , CRecordWAVAudioLinkContainer)
CREATE_BY_TYPE(RECORD_TYPE_EX_WAVAUDIOEMBEDDED , CRecordWAVAudioEmbeddedContainer)
CREATE_BY_TYPE(RECORD_TYPE_EX_MIDIAUDIO , CRecordExMIDIAudioContainer)
CREATE_BY_TYPE(RT_TextRulerAtom , CRecordTextRulerAtom)
//CREATE_BY_TYPE(RECORD_TYPE_TEXTBOOKMARK_ATOM , CRecordTextBookmarkAtom)
CREATE_BY_TYPE(RT_TextBytesAtom , CRecordTextBytesAtom)
//CREATE_BY_TYPE(RECORD_TYPE_UNKNOWN , CRecordOutlineTextPropsHeaderExAtom)
// интерактив
CREATE_BY_TYPE(RECORD_TYPE_INTERACTIVEINFO_ATOM , CRecordInteractiveInfoAtom)
CREATE_BY_TYPE(RECORD_TYPE_TXINTERACTIVEINFO_ATOM , CRecordTextInteractiveInfoAtom)
CREATE_BY_TYPE(RT_GuideAtom , CRecordGuideAtom)
// читаем для анимации
CREATE_BY_TYPE ( RECORD_PROG_TAGS , SlideProgTagsContainer )
CREATE_BY_TYPE(RT_FontEntityAtom , CRecordFontEntityAtom)
CREATE_BY_TYPE(RT_FontEmbedDataBlob , CRecordFontEmbedDataBlob)
//CREATE_BY_TYPE(RECORD_TYPE_METAFILE , CRecordMetafileBlob)
CREATE_BY_TYPE(RT_CString , CRecordCString)
CREATE_BY_TYPE(RT_SoundCollectionAtom , CRecordSoundCollAtom)
CREATE_BY_TYPE(RT_ExternalOleObjectAtom , CRecordExOleObjAtom)
CREATE_BY_TYPE(RT_ExternalOleEmbedAtom , CRecordExOleEmbedAtom)
//CREATE_BY_TYPE(RECORD_TYPE_BOOKMARK_ENTITY_ATOM , CRecordBookmarkEntityAtom)
//CREATE_BY_TYPE(RECORD_TYPE_EXLINK_ATOM , CRecordExOleLinkAtom)
CREATE_BY_TYPE(RECORD_TYPE_SOUNDCOLLECTION , CRecordSoundCollectionContainer)
CREATE_BY_TYPE(RECORD_TYPE_EXOBJLIST , CRecordExObjListContainer)
CREATE_BY_TYPE(RT_KinsokuAtom , CRecordKinsokuAtom)
CREATE_BY_TYPE(RT_ExternalHyperlink , CRecordExHyperlinkContainer)
CREATE_BY_TYPE(RT_ExternalHyperlinkAtom , CRecordExHyperlinkAtom)
CREATE_BY_TYPE(RECORD_TYPE_SOUND , CRecordSoundContainer)
CREATE_BY_TYPE(RECORD_TYPE_SOUNDDATA , CRecordSoundDataBlob)
CREATE_BY_TYPE(RT_HeadersFooters , CRecordHeadersFootersContainer)
CREATE_BY_TYPE(RT_HeadersFootersAtom , CRecordHeadersFootersAtom)
default:
{
}break;
};
CREATE_BY_TYPE(RT_SlideNumberMetaCharAtom , CRecordSlideNumberMetaAtom)
CREATE_BY_TYPE(RT_DateTimeMetaCharAtom , CRecordDateTimeMetaAtom)
CREATE_BY_TYPE(RT_HeaderMetaCharAtom , CRecordHeaderMetaAtom)
CREATE_BY_TYPE(RT_FooterMetaCharAtom , CRecordFooterMetaAtom)
CREATE_BY_TYPE(RT_GenericDateMetaCharAtom , CRecordGenericDateMetaAtom)
CREATE_BY_TYPE(RT_RtfDateTimeMetaCharAtom , CRecordRTFDateTimeMetaAtom)
//CREATE_BY_TYPE(RECORD_TYPE_UNKNOWN , CRecordMouseTextInteractiveInfoAtom)
//CREATE_BY_TYPE(RECORD_TYPE_UNKNOWN , CRecordRecolorInfoAtom)
CREATE_BY_TYPE(RT_ExternalVideo , CRecordExVideoContainer)
CREATE_BY_TYPE(RT_ExternalObjectRefAtom , CRecordExObjRefAtom)
CREATE_BY_TYPE(RT_ExternalMediaAtom , CRecordExMediaAtom)
CREATE_BY_TYPE(RT_ExternalOleControlAtom , CRecordExControlAtom)
CREATE_BY_TYPE(RTE_BSTORE_CONTAINER , CRecordBlipStoreContainer)
CREATE_BY_TYPE(RTE_BSE , CRecordBlipStoreEntry)
CREATE_BY_TYPE(RTE_DG_CONTAINER , CRecordDrawingContainer)
CREATE_BY_TYPE(RTE_DGG , CRecordDrawingGroup)
CREATE_BY_TYPE(RTE_DG , CRecordDrawingRecord)
CREATE_BY_TYPE(RTE_SPGR , CRecordGroupShape)
CREATE_BY_TYPE(RTE_SPGR_CONTAINER , CRecordGroupShapeContainer)
CREATE_BY_TYPE(RTE_SP_CONTAINER , CRecordShapeContainer)
CREATE_BY_TYPE(RTE_SP , CRecordShape)
CREATE_BY_TYPE(RTE_CLIENTANCHOR , CRecordClientAnchor)
CREATE_BY_TYPE(RTE_CHILDANCHOR , CRecordChildAnchor)
CREATE_BY_TYPE(RTE_OPT , CRecordShapeProperties)
CREATE_BY_TYPE(RTE_SECONDARY_OPT , CRecordShapeProperties)
CREATE_BY_TYPE(RTE_TETRIARY_OPT , CRecordShapeProperties)
CREATE_BY_TYPE(RTE_REGROUPITEMS , CRecordRegGroupItems)
CREATE_BY_TYPE(RTE_SPLITMENUCOLORS , CRecordSplitMenuColorRecord)
CREATE_BY_TYPE(RTE_COLORMRU , CRecordMostRecentlyUserColors)
CREATE_BY_TYPE(RTE_CLIENTDATA , CRecordOfficeArtClientData)
CREATE_BY_TYPE(RT_ExternalCdAudio , CRecordExCDAudioContainer)
CREATE_BY_TYPE(RT_ExternalWavAudioLink , CRecordWAVAudioLinkContainer)
CREATE_BY_TYPE(RT_ExternalWavAudioEmbedded , CRecordWAVAudioEmbeddedContainer)
CREATE_BY_TYPE(RT_ExternalMidiAudio , CRecordExMIDIAudioContainer)
CREATE_BY_TYPE(RT_List , CRecordDocInfoListContainer)
// интерактив
CREATE_BY_TYPE(RT_InteractiveInfoAtom , CRecordInteractiveInfoAtom)
CREATE_BY_TYPE(RT_TextInteractiveInfoAtom , CRecordTextInteractiveInfoAtom)
// читаем для анимации
CREATE_BY_TYPE(RT_SoundCollection , CRecordSoundCollectionContainer)
CREATE_BY_TYPE(RT_ExternalObjectList , CRecordExObjListContainer)
CREATE_BY_TYPE(RT_Sound , CRecordSoundContainer)
CREATE_BY_TYPE(RT_SoundDataBlob , CRecordSoundDataBlob)
default:
{
}break;
};
if (NULL == pRecord)
{
if (oHeader.IsContainer())
{
pRecord = new CRecordsContainer();
@ -321,9 +652,11 @@ IRecord* CreateByType(SRecordHeader oHeader)
#ifdef _DEBUG
char str[1024]={};
sprintf(str, "Unknown record type: %x\t" , oHeader.RecType);
std::cout << str << GetRecordName((_UINT32)oHeader.RecType) << "\n";
std::cout << str << GetRecordName(oHeader.RecType) << "\n";
#endif
}
}
} else
{
}
return pRecord;
}

View File

@ -32,39 +32,46 @@
#pragma once
#include "PPTFileDefines.h"
#include "../Enums/RecordType.h"
#include "../Reader/ReadStructures.h"
#include "../../../ASCOfficePPTXFile/Editor/Drawing/Shapes/BaseShape/PPTShape/Enums.h"
#include "../../../ASCOfficeXlsFile2/source/XlsFormat/Binary/CFStream.h"
#include "../../../Common/3dParty/pole/pole.h"
#include "../../../OfficeCryptReader/source/CryptTransform.h"
#include "../../../Common/DocxFormat/Source/Base/Nullable.h"
#include <boost/smart_ptr/shared_array.hpp>
using namespace PPT_FORMAT;
//using namespace PPT_FORMAT;
using namespace XLS;
using NSCommon::nullable;
std::string GetRecordName(PPT_FORMAT::RecordType dwType);
class SRecordHeader
{
public:
unsigned char RecVersion;
unsigned short RecInstance;
unsigned short RecType;
_UINT32 RecLen;
unsigned char RecVersion;
unsigned short RecInstance;
PPT_FORMAT::RecordType RecType;
_UINT32 RecLen;
void Clear()
{
RecVersion = 0;
RecInstance = 0;
RecType = 0;
RecType = RT_NONE;
RecLen = 0;
}
SRecordHeader()
{
Clear();
}
bool ReadFromStream(const CFStreamPtr &pStream)
bool ReadFromStream(const CFStreamPtr &pStream)
{
Clear();
Clear();
if (pStream->isEOF()) return FALSE;
POLE::uint64 nRd = 0;
@ -149,7 +156,7 @@ public:
SRecordHeader m_oHeader;
virtual ~IRecord(){}
virtual void ReadFromStream(SRecordHeader & oHeader, const CFStreamPtr &pStream) = 0;
virtual void ReadFromStream(SRecordHeader & oHeader, const CFStreamPtr &pStream) = 0;
virtual void ReadFromStream(SRecordHeader & oHeader, POLE::Stream* pStream) = 0;
};
@ -166,7 +173,7 @@ public:
~CUnknownRecord()
{
}
virtual void ReadFromStream(SRecordHeader & oHeader, const CFStreamPtr &pStream)
virtual void ReadFromStream(SRecordHeader & oHeader, const CFStreamPtr &pStream)
{
m_oHeader = oHeader;
@ -179,8 +186,8 @@ public:
StreamUtils::StreamSkip((long)m_oHeader.RecLen, pStream);
}
std::wstring ReadStringW(const CFStreamPtr &pStream, int size);
std::string ReadStringA(const CFStreamPtr &pStream, int size);
std::wstring ReadStringW(const CFStreamPtr &pStream, int size);
std::string ReadStringA(const CFStreamPtr &pStream, int size);
};
IRecord* CreateByType(SRecordHeader oHeader);
@ -204,9 +211,11 @@ public:
size_t nCount = m_arRecords.size();
while(0 != nCount)
{
if (NULL != m_arRecords[nCount-1])
delete m_arRecords[nCount-1];
if (NULL != m_arRecords[nCount-1])
{
delete m_arRecords[nCount-1];
m_arRecords[nCount-1] = NULL;
}
m_arRecords.pop_back();
--nCount;
}
@ -305,5 +314,5 @@ class CRecordVBAInfo : public CRecordsContainer {};
//-------------------------------------------------------------------------------
#define CREATE_BY_TYPE(RECORD_TYPE, CLASS_RECORD_NAME) \
case RECORD_TYPE: { pRecord = new CLASS_RECORD_NAME(); break; } \
case RECORD_TYPE: { pRecord = new CLASS_RECORD_NAME(); break; } \
//-------------------------------------------------------------------------------

View File

@ -0,0 +1,136 @@
/*
* (c) Copyright Ascensio System SIA 2010-2019
*
* 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-12 Ernesta Birznieka-Upisha
* 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
*
*/
#pragma once
#include "../Reader/Records.h"
#include "../../Structures/ColorIndexStruct.h"
namespace PPT_FORMAT
{
struct SFlagsAH {
USHORT m_fA_H;
USHORT getH()const {return (m_fA_H & 0xC000) >> 14;}
USHORT getG()const {return (m_fA_H & 0x3000) >> 12;}
USHORT getF()const {return (m_fA_H & 0xC00) >> 10;}
USHORT getE()const {return (m_fA_H & 0x300) >> 8;}
USHORT getD()const {return (m_fA_H & 0xC0) >> 6;}
USHORT getC()const {return (m_fA_H & 0x30) >> 4;}
USHORT getB()const {return (m_fA_H & 0xC) >> 2;}
USHORT getA()const {return (m_fA_H & 0x3) >> 0;}
void ReadFromStream(POLE::Stream* pStream) {
m_fA_H = StreamUtils::ReadWORD(pStream);
}
};
class CRecordAnimationInfoAtom : public CUnknownRecord
{
public:
ColorIndexStruct m_sDimColor;
USHORT m_fReverse;
USHORT m_fAutomatic;
USHORT m_fSound;
USHORT m_fStopSound;
USHORT m_fPlay;
USHORT m_fSynchronous;
USHORT m_fHide;
USHORT m_fAnimateBg;
USHORT m_Reserved;
_UINT32 m_SoundIdRef;
_UINT32 m_DelayTime;
USHORT m_OrderID;
USHORT m_SlideCount;
BYTE m_AnimBuildType;
BYTE m_AnimEffect;
BYTE m_AnimEffectDirection;
BYTE m_AnimAfterEffect;
BYTE m_TextBuildSubEffect;
BYTE m_OleVerb;
public:
CRecordAnimationInfoAtom()
{
}
~CRecordAnimationInfoAtom()
{
}
virtual void ReadFromStream(SRecordHeader & oHeader, POLE::Stream* pStream)
{
m_oHeader = oHeader;
m_sDimColor.ReadFromStream(pStream);
SFlagsAH fAH;
fAH.ReadFromStream(pStream);
m_fReverse = fAH.getA();
m_fAutomatic = fAH.getB();
m_fSound = fAH.getC();
m_fStopSound = fAH.getD();
m_fPlay = fAH.getE();
m_fSynchronous = fAH.getF();
m_fHide = fAH.getG();
m_fAnimateBg = fAH.getH();
m_Reserved = StreamUtils::ReadWORD(pStream);
m_SoundIdRef = StreamUtils::ReadDWORD(pStream);
m_DelayTime = StreamUtils::ReadDWORD(pStream);
m_OrderID = StreamUtils::ReadWORD(pStream);
m_SlideCount = StreamUtils::ReadWORD(pStream);
m_AnimBuildType = StreamUtils::ReadBYTE(pStream);
m_AnimEffect = StreamUtils::ReadBYTE(pStream);
m_AnimEffectDirection = StreamUtils::ReadBYTE(pStream);
m_AnimAfterEffect = StreamUtils::ReadBYTE(pStream);
m_TextBuildSubEffect = StreamUtils::ReadBYTE(pStream);
m_OleVerb = StreamUtils::ReadBYTE(pStream);
StreamUtils::StreamSkip(2, pStream);
}
};
}

View File

@ -0,0 +1,64 @@
/*
* (c) Copyright Ascensio System SIA 2010-2019
*
* 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-12 Ernesta Birznieka-Upisha
* 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
*
*/
#pragma once
#include "../Reader/Records.h"
#include "AnimationInfoAtom.h"
#include "../SoundContainer.h"
namespace PPT_FORMAT
{
class CRecordAnimationInfoContainer: public CUnknownRecord
{
public:
CRecordAnimationInfoAtom m_AnimationAtom;
CRecordSoundContainer m_AnimationSound;
CRecordAnimationInfoContainer(){}
~CRecordAnimationInfoContainer(){}
virtual void ReadFromStream(SRecordHeader & thisHeader, POLE::Stream* pStream)
{
m_oHeader = thisHeader;
SRecordHeader oHeader;
if (oHeader.ReadFromStream(pStream))
m_AnimationAtom.ReadFromStream ( oHeader, pStream );
if (m_oHeader.RecLen != 36 && oHeader.ReadFromStream(pStream))
m_AnimationSound.ReadFromStream ( oHeader, pStream );
}
};
}

View File

@ -1,545 +0,0 @@
/*
* (c) Copyright Ascensio System SIA 2010-2019
*
* 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-12 Ernesta Birznieka-Upisha
* 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 "AnimationTypes.h"
//----------------------------------------------------------------------------------------------------------------------//
// Animation Types //
//----------------------------------------------------------------------------------------------------------------------//
/*
static const wchar_t EffectBehaviorBlindsHorizontal [] = L"blinds(horizontal)";
static const wchar_t EffectBehaviorBoxIn [] = L"box(in)";
static const wchar_t EffectBehaviorBoxOut [] = L"box(out)";
static const wchar_t EffectBehaviorCheckerboardAcross [] = L"checkerboard(across)";
static const wchar_t EffectBehaviorCheckerboardDown [] = L"checkerboard(down)";
static const wchar_t EffectBehaviorCircleIn [] = L"circle(in)";
static const wchar_t EffectBehaviorCircleOut [] = L"circle(out)";
static const wchar_t EffectBehaviorDiamondIn [] = L"diamond(in)";
static const wchar_t EffectBehaviorDiamonOut [] = L"diamond(out)";
static const wchar_t EffectBehaviorDissolve [] = L"dissolve";
static const wchar_t EffectBehaviorFade [] = L"fade";
static const wchar_t EffectBehaviorPlusIn [] = L"plus(in)";
static const wchar_t EffectBehaviorPlusOut [] = L"plus(out)";
static const wchar_t EffectBehaviorBarnInVertical [] = L"barn(inVertical)";
static const wchar_t EffectBehaviorBarnInHorizontal [] = L"barn(inHorizontal)";
static const wchar_t EffectBehaviorBarnOutVertical [] = L"barn(outVertical)";
static const wchar_t EffectBehaviorBarnOnHorizontal [] = L"barn(outHorizontal)";
static const wchar_t EffectBehaviorRandomBarHorizontal [] = L"randombar(horizontal)";
static const wchar_t EffectBehaviorRandomBarVertical [] = L"randombar(vertical)";
static const wchar_t EffectBehaviorStripsDownLeft [] = L"strips(downLeft)";
static const wchar_t EffectBehaviorStripsUpLeft [] = L"strips(upLeft)";
static const wchar_t EffectBehaviorStripsDownRight [] = L"strips(downRight)";
static const wchar_t EffectBehaviorStripsUpRight [] = L"strips(upRight)";
static const wchar_t EffectBehaviorWedge [] = L"wedge";
static const wchar_t EffectBehaviorWheel1 [] = L"wheel(1)";
static const wchar_t EffectBehaviorWheel2 [] = L"wheel(2)";
static const wchar_t EffectBehaviorWheel3 [] = L"wheel(3)";
static const wchar_t EffectBehaviorWheel4 [] = L"wheel(4)";
static const wchar_t EffectBehaviorWheel8 [] = L"wheel(8)";
static const wchar_t EffectBehaviorWipeRight [] = L"wipe(right)";
static const wchar_t EffectBehaviorWipeLeft [] = L"wipe(left)";
static const wchar_t EffectBehaviorWipeUp [] = L"wipe(up)";
static const wchar_t EffectBehaviorWipeDown [] = L"wipe(down)";
*/
#pragma region _MACROSES_
#define GET_ENUM_STRING(NAMEE, VALUEE)\
case TL_##NAMEE##VALUEE: \
return std::wstring(_T("TL_")) + std::wstring(_T(#NAMEE)) + std::wstring(_T(#VALUEE)); \
break;
#if defined(_WIN32) || defined (_WIN64)
#define GET_EFFECT_NAME_BY_ID(VALUE,DESCRIPTION) \
case (##VALUE) : return std::wstring(_T(#DESCRIPTION)); break;
#else
#define GET_EFFECT_NAME_BY_ID(VALUE,DESCRIPTION) \
case ##VALUE : return std::wstring(_T(#DESCRIPTION)); break;
#endif
#pragma endregion
namespace Animations
{
std::wstring Helpers::GetTimePropertyID4TimeNode ( TimePropertyID4TimeNode Value )
{
switch ( Value )
{
GET_ENUM_STRING( TPID_, Display );
GET_ENUM_STRING( TPID_, MasterPos );
GET_ENUM_STRING( TPID_, SlaveType );
GET_ENUM_STRING( TPID_, EffectID );
GET_ENUM_STRING( TPID_, EffectDir );
GET_ENUM_STRING( TPID_, AfterEffect );
GET_ENUM_STRING( TPID_, SlideCount );
GET_ENUM_STRING( TPID_, TimeFilter );
GET_ENUM_STRING( TPID_, EventFilter );
GET_ENUM_STRING( TPID_, HideWhenStopped );
GET_ENUM_STRING( TPID_, GroupID );
GET_ENUM_STRING( TPID_, EffectNodeType );
GET_ENUM_STRING( TPID_, PlaceholderNode );
GET_ENUM_STRING( TPID_, MediaVolume );
GET_ENUM_STRING( TPID_, MediaMute );
GET_ENUM_STRING( TPID_, ZoomToFullScreen );
default:
return std::wstring ( _T("TimePropertyID4TimeNode : Unknown Enum") );
}
};
std::wstring Helpers::GetTimeVariantTypeEnum ( TimeVariantTypeEnum Value )
{
switch ( Value )
{
GET_ENUM_STRING( TVT_, Bool );
GET_ENUM_STRING( TVT_, Int );
GET_ENUM_STRING( TVT_, Float );
GET_ENUM_STRING( TVT_, String );
default:
return std::wstring ( _T("TimeVariantTypeEnum : Unknown Enum") );
}
};
std::wstring Helpers::GetTimeNodeTypeEnum ( TimeNodeTypeEnum Value )
{
switch ( Value )
{
GET_ENUM_STRING( TNT_, Parallel );
GET_ENUM_STRING( TNT_, Sequential );
GET_ENUM_STRING( TNT_, Behavior );
GET_ENUM_STRING( TNT_, Media );
default:
return std::wstring ( _T("TimeNodeTypeEnum : Unknown Enum") );
}
};
std::wstring Helpers::GetTriggerObjectEnum ( TriggerObjectEnum Value )
{
switch ( Value )
{
GET_ENUM_STRING( TOT_, None ); // None
GET_ENUM_STRING( TOT_, VisualElement ); // An animatable object.
GET_ENUM_STRING( TOT_, TimeNode ); // A time node.
GET_ENUM_STRING( TOT_, RuntimeNodeRef ); // Runtime child time nodes.
default:
return std::wstring ( _T("TriggerObjectEnum : Unknown Enum") );
}
}
std::wstring Helpers::GetTimeVisualElementEnum ( TimeVisualElementEnum Value )
{
switch ( Value )
{
GET_ENUM_STRING( TVET_, Shape );
GET_ENUM_STRING( TVET_, Page );
GET_ENUM_STRING( TVET_, TextRange );
GET_ENUM_STRING( TVET_, Audio );
GET_ENUM_STRING( TVET_, Video );
GET_ENUM_STRING( TVET_, ChartElement );
GET_ENUM_STRING( TVET_, ShapeOnly );
GET_ENUM_STRING( TVET_, AllTextRange );
default:
return std::wstring ( _T("TimeVisualElementEnum : Unknown Enum") );
}
}
std::wstring Helpers::GetElementTypeEnum ( ElementTypeEnum Value )
{
switch ( Value )
{
GET_ENUM_STRING( ET_, ShapeType );
GET_ENUM_STRING( ET_, SoundType );
default:
return std::wstring ( _T("ElementTypeEnum : Unknown Enum") );
}
}
std::wstring Helpers::GetTimeAnimateBehaviorValueTypeEnum ( TimeAnimateBehaviorValueTypeEnum Value )
{
switch ( Value )
{
GET_ENUM_STRING( TABVT_, String );
GET_ENUM_STRING( TABVT_, Number );
GET_ENUM_STRING( TABVT_, Color );
default:
return std::wstring ( _T("TimeAnimateBehaviorValueTypeEnum : Unknown Enum") );
}
}
std::wstring Helpers::GetAnimationClassName ( AnimationsClassType Value )
{
switch ( Value )
{
case Animations::RT_TimeNode:
return std::wstring (_T("TimeNodeAtom") );
case Animations::RT_TimePropertyList: // Specifies a TimePropertyList4TimeNodeContainer or TimePropertyList4TimeBehavior.
return std::wstring (_T("TimePropertyList4TimeNodeContainer"));
case Animations::RT_TimeExtTimeNodeContainer:
return std::wstring (_T("ExtTimeNodeContainer"));
case Animations::RT_SlideTime10Atom :
return std::wstring (_T("SlideTime10Atom"));
case Animations::RT_SlideFlags10Atom:
return std::wstring (_T("SlideFlags10Atom"));
case Animations::RT_HashCodeAtom:
return std::wstring (_T("HashCode10Atom"));
case Animations::RT_TimeSequenceData:
return std::wstring (_T("TimeSequenceDataAtom"));
case Animations::RT_TimeConditionContainer:
return std::wstring (_T("TimeConditionContainer"));
case Animations::RT_TimeCondition:
return std::wstring (_T("TimeConditionAtom"));
}
return std::wstring (_T(""));
}
std::wstring Helpers::GetEffectTypeOfGroup ( _UINT32 Value )
{
if ( 0x00000001 == Value )
return std::wstring ( _T("Entrance") );
if ( 0x00000002 == Value )
return std::wstring ( _T("Exit") );
if ( 0x00000003 == Value )
return std::wstring ( _T("Emphasis") );
if ( 0x00000004 == Value )
return std::wstring ( _T("MotionPath") );
if ( 0x00000005 == Value )
return std::wstring ( _T("ActionVerb") );
if ( 0x00000006 == Value )
return std::wstring ( _T("MediaCommand") );
return std::wstring ( _T("") );
}
// the corresponding effect type is an entrance or an exit effect
std::wstring Helpers::GetEffectEntranceOrExitNameByID ( _UINT32 EffectID )
{
switch ( EffectID )
{
GET_EFFECT_NAME_BY_ID ( 0x00000000, Custom ); // The corresponding effect direction MUST be ignored.
GET_EFFECT_NAME_BY_ID ( 0x00000001, Appear ); // The corresponding effect direction MUST be ignored.
GET_EFFECT_NAME_BY_ID ( 0x00000002, FlyIn ); //
GET_EFFECT_NAME_BY_ID ( 0x00000003, Blinds ); //
GET_EFFECT_NAME_BY_ID ( 0x00000004, Box ); //
GET_EFFECT_NAME_BY_ID ( 0x00000005, CheckBoard ); //
GET_EFFECT_NAME_BY_ID ( 0x00000006, Circle ); //
GET_EFFECT_NAME_BY_ID ( 0x00000007, Crawl ); //
GET_EFFECT_NAME_BY_ID ( 0x00000008, Diamond ); //
GET_EFFECT_NAME_BY_ID ( 0x00000009, Dissolve ); // The corresponding effect direction MUST be ignored.
GET_EFFECT_NAME_BY_ID ( 0x0000000A, Fade ); // The corresponding effect direction MUST be ignored.
GET_EFFECT_NAME_BY_ID ( 0x0000000B, FlashOnce ); // The corresponding effect direction MUST be ignored.
GET_EFFECT_NAME_BY_ID ( 0x0000000C, Peek ); //
GET_EFFECT_NAME_BY_ID ( 0x0000000D, Plus ); //
GET_EFFECT_NAME_BY_ID ( 0x0000000E, RandomBars ); //
GET_EFFECT_NAME_BY_ID ( 0x0000000F, Spiral ); // The corresponding effect direction MUST be ignored.
GET_EFFECT_NAME_BY_ID ( 0x00000010, Split ); //
GET_EFFECT_NAME_BY_ID ( 0x00000011, Stretch ); //
GET_EFFECT_NAME_BY_ID ( 0x00000012, Strips ); //
GET_EFFECT_NAME_BY_ID ( 0x00000013, Swivel ); //
GET_EFFECT_NAME_BY_ID ( 0x00000014, Wedge ); // The corresponding effect direction MUST be ignored.
GET_EFFECT_NAME_BY_ID ( 0x00000015, Wheel ); //
GET_EFFECT_NAME_BY_ID ( 0x00000016, Wipe ); //
GET_EFFECT_NAME_BY_ID ( 0x00000017, Zoom ); //
GET_EFFECT_NAME_BY_ID ( 0x00000018, RandomEffects ); // The corresponding effect direction MUST be ignored.
GET_EFFECT_NAME_BY_ID ( 0x00000019, Boomerang ); // The corresponding effect direction MUST be ignored.
GET_EFFECT_NAME_BY_ID ( 0x0000001A, Bounce ); // The corresponding effect direction MUST be ignored.
GET_EFFECT_NAME_BY_ID ( 0x0000001B, ColorReveal ); // The corresponding effect direction MUST be ignored.
GET_EFFECT_NAME_BY_ID ( 0x0000001C, Credits ); // The corresponding effect direction MUST be ignored.
GET_EFFECT_NAME_BY_ID ( 0x0000001D, EaseIn ); // The corresponding effect direction MUST be ignored.
GET_EFFECT_NAME_BY_ID ( 0x0000001E, Float ); // The corresponding effect direction MUST be ignored.
GET_EFFECT_NAME_BY_ID ( 0x0000001F, GrowAndTurn ); // The corresponding effect direction MUST be ignored.
//GET_EFFECT_NAME_BY_ID ( 0x00000020, Reserved ); //
//GET_EFFECT_NAME_BY_ID ( 0x00000021, Reserved ); //
GET_EFFECT_NAME_BY_ID ( 0x00000022, LightSpeed ); // The corresponding effect direction MUST be ignored.
GET_EFFECT_NAME_BY_ID ( 0x00000023, PinWheel ); // The corresponding effect direction MUST be ignored.
//GET_EFFECT_NAME_BY_ID ( 0x00000024, Reserved ); //
GET_EFFECT_NAME_BY_ID ( 0x00000025, RiseUp ); // The corresponding effect direction MUST be ignored.
GET_EFFECT_NAME_BY_ID ( 0x00000026, Swish ); // The corresponding effect direction MUST be ignored.
GET_EFFECT_NAME_BY_ID ( 0x00000027, ThinLine ); // The corresponding effect direction MUST be ignored.
GET_EFFECT_NAME_BY_ID ( 0x00000028, Unfold ); // The corresponding effect direction MUST be ignored.
GET_EFFECT_NAME_BY_ID ( 0x00000029, Whip ); // The corresponding effect direction MUST be ignored.
GET_EFFECT_NAME_BY_ID ( 0x0000002A, Ascend ); // The corresponding effect direction MUST be ignored.
GET_EFFECT_NAME_BY_ID ( 0x0000002B, CenterRevolve ); // The corresponding effect direction MUST be ignored.
//GET_EFFECT_NAME_BY_ID ( 0x0000002C, Reserved ); //
GET_EFFECT_NAME_BY_ID ( 0x0000002D, FadedSwivel ); // The corresponding effect direction MUST be ignored.
//GET_EFFECT_NAME_BY_ID ( 0x0000002E, Reserved ); //
GET_EFFECT_NAME_BY_ID ( 0x0000002F, Descend ); // The corresponding effect direction MUST be ignored.
GET_EFFECT_NAME_BY_ID ( 0x00000030, Sling ); // The corresponding effect direction MUST be ignored.
GET_EFFECT_NAME_BY_ID ( 0x00000031, Spinner ); // The corresponding effect direction MUST be ignored.
GET_EFFECT_NAME_BY_ID ( 0x00000032, Compress ); // The corresponding effect direction MUST be ignored.
GET_EFFECT_NAME_BY_ID ( 0x00000033, Zip ); // The corresponding effect direction MUST be ignored.
GET_EFFECT_NAME_BY_ID ( 0x00000034, ArcUp ); // The corresponding effect direction MUST be ignored.
GET_EFFECT_NAME_BY_ID ( 0x00000035, FadedZoom ); // The corresponding effect direction MUST be ignored.
GET_EFFECT_NAME_BY_ID ( 0x00000036, Glide ); // The corresponding effect direction MUST be ignored.
GET_EFFECT_NAME_BY_ID ( 0x00000037, Expand ); // The corresponding effect direction MUST be ignored.
GET_EFFECT_NAME_BY_ID ( 0x00000038, Flip ); // The corresponding effect direction MUST be ignored.
//GET_EFFECT_NAME_BY_ID ( 0x00000039, Reserved ); //
GET_EFFECT_NAME_BY_ID ( 0x0000003A, Fold ); // The corresponding effect direction MUST be ignored.
default :
break;
}
return std::wstring(_T("Unknown EffectID"));
}
// the corresponding effect type is an emphasis effect
std::wstring Helpers::GetEffectEmphasisNameByID ( _UINT32 EffectID )
{
switch ( EffectID )
{
GET_EFFECT_NAME_BY_ID ( 0x00000001, ChangeFillColor ); //
GET_EFFECT_NAME_BY_ID ( 0x00000002, ChangeFont ); // The corresponding effect direction MUST be ignored.
GET_EFFECT_NAME_BY_ID ( 0x00000003, ChangeFillColor ); //
GET_EFFECT_NAME_BY_ID ( 0x00000004, ChangeFontSize ); //
GET_EFFECT_NAME_BY_ID ( 0x00000005, ChangeFontStyle ); //
GET_EFFECT_NAME_BY_ID ( 0x00000006, GrowAndShrink ); // The corresponding effect direction MUST be ignored.
GET_EFFECT_NAME_BY_ID ( 0x00000007, ChangeFillColor ); //
GET_EFFECT_NAME_BY_ID ( 0x00000008, Spin ); // The corresponding effect direction MUST be ignored.
GET_EFFECT_NAME_BY_ID ( 0x00000009, Transparency ); // The corresponding effect direction MUST be ignored.
GET_EFFECT_NAME_BY_ID ( 0x0000000A, BoldFlash ); // The corresponding effect direction MUST be ignored.
//GET_EFFECT_NAME_BY_ID ( 0x0000000B, Reserved ); //
//GET_EFFECT_NAME_BY_ID ( 0x0000000C, Reserved ); //
//GET_EFFECT_NAME_BY_ID ( 0x0000000D, Reserved ); //
GET_EFFECT_NAME_BY_ID ( 0x0000000E, Blast ); // The corresponding effect direction MUST be ignored.
GET_EFFECT_NAME_BY_ID ( 0x0000000F, BoldReveal ); // The corresponding effect direction MUST be ignored.
GET_EFFECT_NAME_BY_ID ( 0x00000010, BrushOnColor ); // The corresponding effect direction MUST be ignored.
//GET_EFFECT_NAME_BY_ID ( 0x00000011, Reserved ); //
GET_EFFECT_NAME_BY_ID ( 0x00000012, BrushOnUnderline ); // The corresponding effect direction MUST be ignored.
GET_EFFECT_NAME_BY_ID ( 0x00000013, ColorBlend ); // The corresponding effect direction MUST be ignored.
GET_EFFECT_NAME_BY_ID ( 0x00000014, ColorWave ); // The corresponding effect direction MUST be ignored.
GET_EFFECT_NAME_BY_ID ( 0x00000015, ComplementaryColor ); // The corresponding effect direction MUST be ignored.
GET_EFFECT_NAME_BY_ID ( 0x00000016, ComplementaryColor2 ); // The corresponding effect direction MUST be ignored.
GET_EFFECT_NAME_BY_ID ( 0x00000017, ContrastingColor ); // The corresponding effect direction MUST be ignored.
GET_EFFECT_NAME_BY_ID ( 0x00000018, Darken ); // The corresponding effect direction MUST be ignored.
GET_EFFECT_NAME_BY_ID ( 0x00000019, Desaturate ); // The corresponding effect direction MUST be ignored.
GET_EFFECT_NAME_BY_ID ( 0x0000001A, FlashBulb ); // The corresponding effect direction MUST be ignored.
GET_EFFECT_NAME_BY_ID ( 0x0000001B, Flicker ); // The corresponding effect direction MUST be ignored.
GET_EFFECT_NAME_BY_ID ( 0x0000001C, GrowWithColor ); // The corresponding effect direction MUST be ignored.
//GET_EFFECT_NAME_BY_ID ( 0x0000001D, Reserved ); //
GET_EFFECT_NAME_BY_ID ( 0x0000001E, Lighten ); // The corresponding effect direction MUST be ignored.
GET_EFFECT_NAME_BY_ID ( 0x0000001F, StyleEmphasis ); // The corresponding effect direction MUST be ignored.
GET_EFFECT_NAME_BY_ID ( 0x00000020, Teeter ); // The corresponding effect direction MUST be ignored.
GET_EFFECT_NAME_BY_ID ( 0x00000021, VerticalGrow ); // The corresponding effect direction MUST be ignored.
GET_EFFECT_NAME_BY_ID ( 0x00000022, Wave ); // The corresponding effect direction MUST be ignored.
GET_EFFECT_NAME_BY_ID ( 0x00000023, Blink ); // The corresponding effect direction MUST be ignored.
GET_EFFECT_NAME_BY_ID ( 0x00000024, Shimmer ); // The corresponding effect direction MUST be ignored.
default :
break;
}
return std::wstring(_T("Unknown EffectID"));
}
// the corresponding effect type is a motion path effect
std::wstring Helpers::GetEffectMotionPathNameByID ( _UINT32 EffectID )
{
switch ( EffectID )
{
GET_EFFECT_NAME_BY_ID ( 0x00000000, Custom );
GET_EFFECT_NAME_BY_ID ( 0x00000001, Circle );
GET_EFFECT_NAME_BY_ID ( 0x00000002, RightTriangle );
GET_EFFECT_NAME_BY_ID ( 0x00000003, Diamond );
GET_EFFECT_NAME_BY_ID ( 0x00000004, Hexagon );
GET_EFFECT_NAME_BY_ID ( 0x00000005, FivePointStar );
GET_EFFECT_NAME_BY_ID ( 0x00000006, CrescentMoon );
GET_EFFECT_NAME_BY_ID ( 0x00000007, Square );
GET_EFFECT_NAME_BY_ID ( 0x00000008, Trapezoid );
GET_EFFECT_NAME_BY_ID ( 0x00000009, Heart );
GET_EFFECT_NAME_BY_ID ( 0x0000000A, Octagon );
GET_EFFECT_NAME_BY_ID ( 0x0000000B, SixPointStar );
GET_EFFECT_NAME_BY_ID ( 0x0000000C, Football );
GET_EFFECT_NAME_BY_ID ( 0x0000000D, EqualTriangle );
GET_EFFECT_NAME_BY_ID ( 0x0000000E, Parallelogram );
GET_EFFECT_NAME_BY_ID ( 0x0000000F, Pentagon );
GET_EFFECT_NAME_BY_ID ( 0x00000010, FourPointStar );
GET_EFFECT_NAME_BY_ID ( 0x00000011, EightPointStar );
GET_EFFECT_NAME_BY_ID ( 0x00000012, Teardrop );
GET_EFFECT_NAME_BY_ID ( 0x00000013, PointyStar );
GET_EFFECT_NAME_BY_ID ( 0x00000014, CurvedSquare );
GET_EFFECT_NAME_BY_ID ( 0x00000015, CurvedX );
GET_EFFECT_NAME_BY_ID ( 0x00000016, VerticalFigure8 );
GET_EFFECT_NAME_BY_ID ( 0x00000017, CurvyStar );
GET_EFFECT_NAME_BY_ID ( 0x00000018, LoopDeLoop );
GET_EFFECT_NAME_BY_ID ( 0x00000019, BuzzSaw );
GET_EFFECT_NAME_BY_ID ( 0x0000001A, HorizontalFigure8 );
GET_EFFECT_NAME_BY_ID ( 0x0000001B, Peanut );
GET_EFFECT_NAME_BY_ID ( 0x0000001C, Figure8four );
GET_EFFECT_NAME_BY_ID ( 0x0000001D, Neutron );
GET_EFFECT_NAME_BY_ID ( 0x0000001E, Swoosh );
GET_EFFECT_NAME_BY_ID ( 0x0000001F, Bean );
GET_EFFECT_NAME_BY_ID ( 0x00000020, Plus );
GET_EFFECT_NAME_BY_ID ( 0x00000021, InvertedTriangle );
GET_EFFECT_NAME_BY_ID ( 0x00000022, InvertedSquare );
GET_EFFECT_NAME_BY_ID ( 0x00000023, Left );
GET_EFFECT_NAME_BY_ID ( 0x00000024, TurnRight );
GET_EFFECT_NAME_BY_ID ( 0x00000025, ArcDown );
GET_EFFECT_NAME_BY_ID ( 0x00000026, Zigzag );
GET_EFFECT_NAME_BY_ID ( 0x00000027, SCurve2 );
GET_EFFECT_NAME_BY_ID ( 0x00000028, SineWave );
GET_EFFECT_NAME_BY_ID ( 0x00000029, BounceLeft );
GET_EFFECT_NAME_BY_ID ( 0x0000002A, Down );
GET_EFFECT_NAME_BY_ID ( 0x0000002B, TurnUp );
GET_EFFECT_NAME_BY_ID ( 0x0000002C, ArcUp );
GET_EFFECT_NAME_BY_ID ( 0x0000002D, HeartBeat );
GET_EFFECT_NAME_BY_ID ( 0x0000002E, SpiralRight );
GET_EFFECT_NAME_BY_ID ( 0x0000002F, Wave );
GET_EFFECT_NAME_BY_ID ( 0x00000030, CurvyLeft );
GET_EFFECT_NAME_BY_ID ( 0x00000031, DiagonalDownRight );
GET_EFFECT_NAME_BY_ID ( 0x00000032, TurnDown );
GET_EFFECT_NAME_BY_ID ( 0x00000033, ArcLeft );
GET_EFFECT_NAME_BY_ID ( 0x00000034, Funnel );
GET_EFFECT_NAME_BY_ID ( 0x00000035, Spring );
GET_EFFECT_NAME_BY_ID ( 0x00000036, BounceRight );
GET_EFFECT_NAME_BY_ID ( 0x00000037, SpiralLeft );
GET_EFFECT_NAME_BY_ID ( 0x00000038, DiagonalUpRight );
GET_EFFECT_NAME_BY_ID ( 0x00000039, TurnUpRight );
GET_EFFECT_NAME_BY_ID ( 0x0000003A, ArcRight );
GET_EFFECT_NAME_BY_ID ( 0x0000003B, Scurve1 );
GET_EFFECT_NAME_BY_ID ( 0x0000003C, DecayingWave );
GET_EFFECT_NAME_BY_ID ( 0x0000003D, CurvyRight );
GET_EFFECT_NAME_BY_ID ( 0x0000003E, StairsDown );
GET_EFFECT_NAME_BY_ID ( 0x0000003F, Right );
GET_EFFECT_NAME_BY_ID ( 0x00000040, Up );
default :
break;
}
return std::wstring(_T("Unknown EffectID"));
}
std::wstring Helpers::GetEffectNameByID ( _UINT32 EffectType, _UINT32 EffectID )
{
switch ( EffectType )
{
case 0x00000001: // Entrance +
case 0x00000002: // Exit
return Animations::Helpers::GetEffectEntranceOrExitNameByID ( EffectID );
break;
case 0x00000003: // Emphasis +
return Animations::Helpers::GetEffectEmphasisNameByID ( EffectID );
break;
case 0x00000004: // Motion path +
return Animations::Helpers::GetEffectMotionPathNameByID ( EffectID );
break;
case 0x00000005: // Action verb
case 0x00000006: // Media command
default:
break;
}
return std::wstring ( _T("") );
}
}
namespace Animations
{
IRecord* CAnimationFactory::BuildAnimationObject ( WORD Type )
{
switch ( Type )
{
case Animations::RT_SlideTime10Atom :
return new Animations::SlideTime10Atom ();
case Animations::RT_SlideFlags10Atom:
return new Animations::SlideFlags10Atom ();
case Animations::RT_HashCodeAtom:
return new Animations::HashCode10Atom ();
case Animations::RT_TimeExtTimeNodeContainer:
return new Animations::ExtTimeNodeContainer ();
case Animations::RT_TimeNode:
return new Animations::TimeNodeAtom ();
case Animations::RT_TimePropertyList: // Specifies a TimePropertyList4TimeNodeContainer or TimePropertyList4TimeBehavior.
return new Animations::TimePropertyList4TimeNodeContainer ();
case Animations::RT_TimeSequenceData:
return new Animations::TimeSequenceDataAtom ();
case Animations::RT_TimeConditionContainer:
return new TimeConditionContainer ();
case Animations::RT_TimeCondition:
return new TimeConditionAtom ();
case Animations::RT_TimeClientVisualElement:
return new ClientVisualElementContainer ();
case Animations::RT_VisualPageAtom:
return new VisualPageAtom ();
case Animations::RT_TimeEffectBehaviorContainer:
return new TimeEffectBehaviorContainer ();
case Animations::RT_TimeEffectBehavior:
return new TimeEffectBehaviorAtom ();
case Animations::RT_TimeBehavior:
return new TimeBehaviorAtom ();
case Animations::RT_TimeBehaviorContainer:
return new TimeBehaviorContainer ();
case Animations::RT_TimeMotionBehaviorContainer:
return new TimeMotionBehaviorContainer ();
case Animations::RT_TimeSetBehaviorContainer:
return new TimeSetBehaviorContainer ();
case Animations::RT_TimeAnimateBehaviorContainer:
return new TimeAnimateBehaviorContainer ();
case Animations::RT_TimeScaleBehaviorContainer:
return new TimeScaleBehaviorContainer ();
case Animations::RT_TimeRotationBehaviorContainer:
return new TimeRotationBehaviorContainer ();
case Animations::RT_TimeSlaveContainer:
return new SlaveContainer ();
case Animations::RT_TimeModifierAtom:
return new TimeModifierAtom();
}
return NULL;
}
}

View File

@ -0,0 +1,66 @@
/*
* (c) Copyright Ascensio System SIA 2010-2019
*
* 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-12 Ernesta Birznieka-Upisha
* 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
*
*/
#pragma once
#include "../Reader/Records.h"
namespace PPT_FORMAT
{
class CRecordBuildAtom : public CUnknownRecord
{
public:
virtual void ReadFromStream ( SRecordHeader & oHeader, POLE::Stream* pStream )
{
m_oHeader = oHeader;
m_nBuildType = StreamUtils::ReadDWORD ( pStream );
m_nBuildId = StreamUtils::ReadDWORD ( pStream );
m_nShapeIdRef = StreamUtils::ReadDWORD ( pStream );
_UINT32 Value = StreamUtils::ReadDWORD ( pStream );
m_fExpanded = ( 0x01 == ( 0x01 & ((BYTE)Value) ) );
m_fUIExpanded = ( 0x02 == ( 0x02 & ((BYTE)Value) ) );
}
public:
_UINT32 m_nBuildType; // 1 - Paragraph build type, 2 - Chart build type, 3 - Diagram build type
_UINT32 m_nBuildId;
_UINT32 m_nShapeIdRef;
bool m_fExpanded;
bool m_fUIExpanded;
};
}

View File

@ -0,0 +1,84 @@
/*
* (c) Copyright Ascensio System SIA 2010-2019
*
* 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-12 Ernesta Birznieka-Upisha
* 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
*
*/
#pragma once
#include "../Reader/Records.h"
#include "ParaBuildContainer.h"
namespace PPT_FORMAT
{
class CRecordBuildListContainer : public CUnknownRecord
{
public:
CRecordBuildListContainer ()
{
}
virtual ~CRecordBuildListContainer()
{
for ( size_t i = 0; i < n_arrRgChildRec.size(); ++i )
RELEASEOBJECT (n_arrRgChildRec[i]);
}
virtual void ReadFromStream ( SRecordHeader & oHeader, POLE::Stream* pStream )
{
m_oHeader = oHeader;
LONG lPos(0); StreamUtils::StreamPosition(lPos, pStream);
_UINT32 lCurLen(0);
SRecordHeader ReadHeader;
while (lCurLen < m_oHeader.RecLen) {
if ( ReadHeader.ReadFromStream(pStream) == false )
{
break;
}
lCurLen += 8 + ReadHeader.RecLen;
IRecord* pBuildListSubContainer = CreateByType(ReadHeader);
pBuildListSubContainer->ReadFromStream(ReadHeader, pStream);
n_arrRgChildRec.push_back(pBuildListSubContainer);
}
StreamUtils::StreamSeek(lPos + m_oHeader.RecLen, pStream);
}
public:
std::vector <IRecord*> n_arrRgChildRec;
};
}

View File

@ -0,0 +1,60 @@
/*
* (c) Copyright Ascensio System SIA 2010-2019
*
* 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-12 Ernesta Birznieka-Upisha
* 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
*
*/
#pragma once
#include "../Reader/Records.h"
#include "../Enums/_includer.h"
namespace PPT_FORMAT
{
class CRecordChartBuildAtom : public CUnknownRecord
{
public:
ChartBuildEnum m_ChartBuild;
BYTE m_fAnimBackground;
CRecordChartBuildAtom(){}
~CRecordChartBuildAtom(){}
virtual void ReadFromStream(SRecordHeader & oHeader, POLE::Stream* pStream)
{
m_oHeader = oHeader;
m_ChartBuild = (ChartBuildEnum)StreamUtils::ReadDWORD(pStream);
m_fAnimBackground = StreamUtils::ReadBYTE(pStream);
StreamUtils::StreamSkip(3, pStream);
}
};
}

View File

@ -0,0 +1,72 @@
/*
* (c) Copyright Ascensio System SIA 2010-2019
*
* 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-12 Ernesta Birznieka-Upisha
* 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
*
*/
#pragma once
#include "../Reader/Records.h"
#include "BuildAtom.h"
#include "ChartBuildAtom.h"
namespace PPT_FORMAT
{
class CRecordChartBuildContainer : public CUnknownRecord
{
public:
CRecordChartBuildContainer()
{
}
~CRecordChartBuildContainer()
{
}
void ReadFromStream(SRecordHeader &thisHeader, POLE::Stream *pStream) override
{
m_oHeader = thisHeader;
SRecordHeader oHeader;
if (oHeader.ReadFromStream(pStream))
m_oBuildAtom.ReadFromStream ( oHeader, pStream );
if (oHeader.ReadFromStream(pStream))
m_oChartBuildAtom.ReadFromStream ( oHeader, pStream );
}
public:
CRecordBuildAtom m_oBuildAtom;
CRecordChartBuildAtom m_oChartBuildAtom;
};
}

View File

@ -0,0 +1,85 @@
/*
* (c) Copyright Ascensio System SIA 2010-2019
*
* 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-12 Ernesta Birznieka-Upisha
* 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
*
*/
#pragma once
#include "../Reader/Records.h"
#include "VisualPageAtom.h"
#include "VisualShapeAtom.h"
namespace PPT_FORMAT
{
class CRecordClientVisualElementContainer : public CUnknownRecord
{
public:
CRecordClientVisualElementContainer ()
{
m_bVisualPageAtom = false;
m_bVisualShapeAtom = false;
}
void ReadFromStream ( SRecordHeader & oHeader, POLE::Stream* pStream ) override
{
m_oHeader = oHeader;
LONG lPos = 0; StreamUtils::StreamPosition ( lPos, pStream );
SRecordHeader ReadHeader;
if (ReadHeader.ReadFromStream(pStream) )
{
if ( RT_VisualPageAtom == ReadHeader.RecType )
{
m_bVisualPageAtom = true;
m_oVisualPageAtom.ReadFromStream ( ReadHeader, pStream );
}
if ( RT_VisualShapeAtom == ReadHeader.RecType )
{
m_bVisualShapeAtom = true;
m_oVisualShapeAtom.ReadFromStream ( ReadHeader, pStream );
}
}
StreamUtils::StreamSeek ( lPos + m_oHeader.RecLen, pStream );
}
public:
CRecordVisualPageAtom m_oVisualPageAtom;
CRecordVisualShapeAtom m_oVisualShapeAtom;
bool m_bVisualPageAtom;
bool m_bVisualShapeAtom;
};
}

View File

@ -0,0 +1,56 @@
/*
* (c) Copyright Ascensio System SIA 2010-2019
*
* 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-12 Ernesta Birznieka-Upisha
* 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
*
*/
#pragma once
#include "../Reader/Records.h"
#include "../Enums/_includer.h"
namespace PPT_FORMAT
{
class CRecordDiagramBuildAtom : public CUnknownRecord
{
public:
DiagramBuildEnum m_oDiagramBuild;
CRecordDiagramBuildAtom(){}
~CRecordDiagramBuildAtom(){}
virtual void ReadFromStream(SRecordHeader & oHeader, POLE::Stream* pStream)
{
m_oHeader = oHeader;
m_oDiagramBuild = (DiagramBuildEnum)StreamUtils::ReadDWORD(pStream);
}
};
}

View File

@ -0,0 +1,73 @@
/*
* (c) Copyright Ascensio System SIA 2010-2019
*
* 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-12 Ernesta Birznieka-Upisha
* 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
*
*/
#pragma once
#include "../Reader/Records.h"
#include "BuildAtom.h"
#include "DiagramBuildAtom.h"
namespace PPT_FORMAT
{
class CRecordDiagramBuildContainer : public CUnknownRecord
{
public:
CRecordDiagramBuildContainer()
{
}
~CRecordDiagramBuildContainer()
{
}
void ReadFromStream(SRecordHeader &thisHeader, POLE::Stream *pStream) override
{
m_oHeader = thisHeader;
SRecordHeader oHeader;
if (oHeader.ReadFromStream(pStream))
m_oBuildAtom.ReadFromStream ( oHeader, pStream );
if (oHeader.ReadFromStream(pStream))
m_oDiagramBuildAtom.ReadFromStream ( oHeader, pStream );
}
public:
CRecordBuildAtom m_oBuildAtom;
CRecordDiagramBuildAtom m_oDiagramBuildAtom;
};
}

View File

@ -0,0 +1,406 @@
/*
* (c) Copyright Ascensio System SIA 2010-2019
*
* 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-12 Ernesta Birznieka-Upisha
* 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
*
*/
#pragma once
#include "../Reader/Records.h"
#include "../Enums/_includer.h"
#include "TimeAnimateBehaviorContainer.h"
#include "TimeColorBehaviorContainer.h"
#include "TimeEffectBehaviorContainer.h"
#include "TimeMotionBehaviorContainer.h"
#include "TimeRotationBehaviorContainer.h"
#include "TimeScaleBehaviorContainer.h"
#include "TimeSetBehaviorContainer.h"
#include "TimeCommandBehaviorContainer.h"
#include "ClientVisualElementContainer.h"
#include "TimeIterateDataAtom.h"
#include "TimeSequenceDataAtom.h"
#include "TimeConditionContainer.h"
#include "TimeModifierAtom.h"
#include "SubEffectContainer.h"
namespace PPT_FORMAT
{
class CRecordExtTimeNodeContainer : public CUnknownRecord
{
public:
/*-------------------------------------- record --------------------------------- */
CRecordTimeNodeAtom m_oTimeNodeAtom;
//
CRecordTimePropertyList4TimeNodeContainer* m_pTimePropertyList; // OPTIONAL
CRecordTimeAnimateBehaviorContainer* m_pTimeAnimateBehavior; // OPTIONAL
CRecordTimeColorBehaviorContainer* m_pTimeColorBehavior; // OPTIONAL
CRecordTimeEffectBehaviorContainer* m_pTimeEffectBehavior; // OPTIONAL
CRecordTimeMotionBehaviorContainer* m_pTimeMotionBehavior; // OPTIONAL
CRecordTimeRotationBehaviorContainer* m_pTimeRotationBehavior; // OPTIONAL
CRecordTimeScaleBehaviorContainer* m_pTimeScaleBehavior; // OPTIONAL
CRecordTimeSetBehaviorContainer* m_pTimeSetBehavior; // OPTIONAL
CRecordTimeCommandBehaviorContainer* m_pTimeCommandBehavior; // OPTIONAL
CRecordClientVisualElementContainer* m_pClientVisualElement; // OPTIONAL - It MUST exist only if timeNodeAtom.type is TL_TNT_Media
CRecordTimeIterateDataAtom* m_pTimeIterateDataAtom; // OPTIONAL
CRecordTimeSequenceDataAtom* m_pTimeSequenceDataAtom; // OPTIONAL
std::vector<CRecordTimeConditionContainer*> m_arrRgBeginTimeCondition; // OPTIONAL
std::vector<CRecordTimeConditionContainer*> m_arrRgEndTimeCondition; // OPTIONAL
CRecordTimeConditionContainer* m_pTimeEndSyncTimeCondition; // OPTIONAL
std::vector<CRecordTimeModifierAtom*> m_arrRgTimeModifierAtom; // OPTIONAL
std::vector<CRecordSubEffectContainer*> m_arrRgSubEffect; // OPTIONAL
std::vector <CRecordExtTimeNodeContainer*> m_arrRgExtTimeNodeChildren; // OPTIONAL
/*-------------------------------------- record --------------------------------- */
bool m_haveTimePropertyList;
bool m_haveAnimateBehavior;
bool m_haveColorBehavior;
bool m_haveEffectBehavior;
bool m_haveMotionBehavior;
bool m_haveRotationBehavior;
bool m_haveScaleBehavior;
bool m_haveSetBehavior;
bool m_haveCommandBehavior;
bool m_haveClientVisualElement;
bool m_haveIterateDataAtom;
bool m_haveSequenceAtom;
bool m_haveTimeEndSyncTime;
public:
CRecordExtTimeNodeContainer() :
m_pTimePropertyList(nullptr),
m_pTimeAnimateBehavior(nullptr),
m_pTimeColorBehavior(nullptr),
m_pTimeEffectBehavior(nullptr),
m_pTimeMotionBehavior(nullptr),
m_pTimeRotationBehavior(nullptr),
m_pTimeScaleBehavior(nullptr),
m_pTimeSetBehavior(nullptr),
m_pTimeCommandBehavior(nullptr),
m_pClientVisualElement(nullptr),
m_pTimeIterateDataAtom(nullptr),
m_pTimeSequenceDataAtom(nullptr),
m_pTimeEndSyncTimeCondition(nullptr),
m_haveTimePropertyList(false),
m_haveAnimateBehavior(false),
m_haveColorBehavior(false),
m_haveEffectBehavior(false),
m_haveMotionBehavior(false),
m_haveRotationBehavior(false),
m_haveScaleBehavior(false),
m_haveSetBehavior(false),
m_haveCommandBehavior(false),
m_haveClientVisualElement(false),
m_haveIterateDataAtom(false),
m_haveSequenceAtom(false),
m_haveTimeEndSyncTime(false)
{
}
virtual ~CRecordExtTimeNodeContainer()
{
RELEASEOBJECT(m_pTimePropertyList);
RELEASEOBJECT(m_pTimeAnimateBehavior);
RELEASEOBJECT(m_pTimeColorBehavior);
RELEASEOBJECT(m_pTimeEffectBehavior);
RELEASEOBJECT(m_pTimeMotionBehavior);
RELEASEOBJECT(m_pTimeRotationBehavior);
RELEASEOBJECT(m_pTimeScaleBehavior);
RELEASEOBJECT(m_pTimeSetBehavior);
RELEASEOBJECT(m_pTimeCommandBehavior);
RELEASEOBJECT(m_pClientVisualElement);
RELEASEOBJECT(m_pTimeIterateDataAtom);
RELEASEOBJECT(m_pTimeSequenceDataAtom);
RELEASEOBJECT(m_pTimeEndSyncTimeCondition);
for ( size_t i = 0; i < m_arrRgBeginTimeCondition.size(); ++i )
RELEASEOBJECT ( m_arrRgBeginTimeCondition[i] );
for ( size_t i = 0; i < m_arrRgEndTimeCondition.size(); ++i )
RELEASEOBJECT ( m_arrRgEndTimeCondition[i] );
for ( size_t i = 0; i < m_arrRgTimeModifierAtom.size(); ++i )
RELEASEOBJECT ( m_arrRgTimeModifierAtom[i] );
for ( size_t i = 0; i < m_arrRgSubEffect.size(); ++i )
RELEASEOBJECT ( m_arrRgSubEffect[i] );
for ( size_t i = 0; i < m_arrRgExtTimeNodeChildren.size(); ++i )
RELEASEOBJECT ( m_arrRgExtTimeNodeChildren[i] );
}
virtual void ReadFromStream ( SRecordHeader & oHeader, POLE::Stream* pStream )
{
m_oHeader = oHeader;
LONG lPos = 0;
StreamUtils::StreamPosition ( lPos, pStream );
SRecordHeader rHeader;
if ( rHeader.ReadFromStream(pStream) )
m_oTimeNodeAtom.ReadFromStream ( rHeader, pStream );
UINT lCurLen = m_oTimeNodeAtom.m_oHeader.RecLen + 8;
SRecordHeader ReadHeader;
while ( lCurLen < m_oHeader.RecLen )
{
LONG lPosLoop = 0;
StreamUtils::StreamPosition ( lPosLoop, pStream );
if ( ReadHeader.ReadFromStream(pStream) == false)
break;
lCurLen += 8 + ReadHeader.RecLen;
switch (ReadHeader.RecType)
{
case RT_TimePropertyList:
{
m_pTimePropertyList = new CRecordTimePropertyList4TimeNodeContainer;
m_pTimePropertyList->ReadFromStream(ReadHeader, pStream);
m_haveTimePropertyList = true;
break;
}
case RT_TimeAnimateBehaviorContainer:
{
m_pTimeAnimateBehavior = new CRecordTimeAnimateBehaviorContainer;
m_pTimeAnimateBehavior->ReadFromStream(ReadHeader, pStream);
m_haveAnimateBehavior = true;
break;
}
case RT_TimeColorBehaviorContainer:
{
m_pTimeColorBehavior = new CRecordTimeColorBehaviorContainer;
m_pTimeColorBehavior->ReadFromStream(ReadHeader, pStream);
m_haveColorBehavior = true;
break;
}
case RT_TimeEffectBehaviorContainer:
{
m_pTimeEffectBehavior = new CRecordTimeEffectBehaviorContainer();
m_pTimeEffectBehavior->ReadFromStream(ReadHeader, pStream);
m_haveEffectBehavior = true;
break;
}
case RT_TimeMotionBehaviorContainer:
{
m_pTimeMotionBehavior = new CRecordTimeMotionBehaviorContainer();
m_pTimeMotionBehavior->ReadFromStream(ReadHeader, pStream);
m_haveMotionBehavior = true;
break;
}
case RT_TimeRotationBehaviorContainer:
{
m_pTimeRotationBehavior = new CRecordTimeRotationBehaviorContainer();
m_pTimeRotationBehavior->ReadFromStream(ReadHeader, pStream);
m_haveRotationBehavior = true;
break;
}
case RT_TimeScaleBehaviorContainer:
{
m_pTimeScaleBehavior = new CRecordTimeScaleBehaviorContainer();
m_pTimeScaleBehavior->ReadFromStream(ReadHeader, pStream);
m_haveScaleBehavior = true;
break;
}
case RT_TimeSetBehaviorContainer:
{
m_pTimeSetBehavior = new CRecordTimeSetBehaviorContainer();
m_pTimeSetBehavior->ReadFromStream(ReadHeader, pStream);
m_haveSetBehavior = true;
break;
}
case RT_TimeCommandBehaviorContainer:
{
m_pTimeCommandBehavior = new CRecordTimeCommandBehaviorContainer();
m_pTimeCommandBehavior->ReadFromStream(ReadHeader, pStream);
m_haveCommandBehavior = true;
break;
}
case RT_TimeClientVisualElement:
{
m_pClientVisualElement = new CRecordClientVisualElementContainer();
m_pClientVisualElement->ReadFromStream(ReadHeader, pStream);
m_haveClientVisualElement = true;
break;
}
case RT_TimeIterateData:
{
m_pTimeIterateDataAtom = new CRecordTimeIterateDataAtom();
m_pTimeIterateDataAtom->ReadFromStream(ReadHeader, pStream);
m_haveIterateDataAtom = true;
break;
}
case RT_TimeSequenceData:
{
m_pTimeSequenceDataAtom = new CRecordTimeSequenceDataAtom();
m_pTimeSequenceDataAtom->ReadFromStream(ReadHeader, pStream);
m_haveSequenceAtom = true;
break;
}
case RT_TimeConditionContainer:
{
CRecordTimeConditionContainer* pTimeCondition =
new CRecordTimeConditionContainer();
pTimeCondition->ReadFromStream(ReadHeader, pStream);
unsigned short recInst = ReadHeader.RecInstance;
if (recInst == TL_CT_Begin || recInst == TL_CT_Next)
m_arrRgBeginTimeCondition.push_back(pTimeCondition);
else if (recInst == TL_CT_End || recInst == TL_CT_Previous)
m_arrRgEndTimeCondition.push_back(pTimeCondition);
else
m_pTimeEndSyncTimeCondition = pTimeCondition;
break; // A lot of records. Look at instance
}
case RT_TimeModifier:
{
CRecordTimeModifierAtom* pModAtom = new CRecordTimeModifierAtom();
pModAtom->ReadFromStream(ReadHeader, pStream);
m_arrRgTimeModifierAtom.push_back(pModAtom);
break;
}
case RT_TimeSubEffectContainer:
{
CRecordSubEffectContainer* pSub = new CRecordSubEffectContainer();
pSub->ReadFromStream(ReadHeader, pStream);
m_arrRgSubEffect.push_back(pSub);
break;
}
case RT_TimeExtTimeNodeContainer:
{
CRecordExtTimeNodeContainer* pExt = new CRecordExtTimeNodeContainer();
pExt->ReadFromStream(ReadHeader, pStream);
m_arrRgExtTimeNodeChildren.push_back(pExt);
break;
}
default:
break;
// throw ;
}
}
StreamUtils::StreamSeek ( lPos + m_oHeader.RecLen, pStream );
}
//
inline CRecordTimeModifierAtom* GetModifier (_UINT32 Type)
{
for ( size_t i = 0; i < m_arrRgTimeModifierAtom.size(); ++i )
if (m_arrRgTimeModifierAtom[i]->m_nType == Type)
return m_arrRgTimeModifierAtom[i];
return nullptr;
}
inline int GetNodeType () const
{
return m_oTimeNodeAtom.m_dwType;
}
};
}

View File

@ -1,51 +1,52 @@
/*
* (c) Copyright Ascensio System SIA 2010-2019
*
* 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-12 Ernesta Birznieka-Upisha
* 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
*
*/
#pragma once
#include "../Reader/Records.h"
class CRecordAnimationInfoAtom : public CUnknownRecord
{
public:
CRecordAnimationInfoAtom()
{
}
~CRecordAnimationInfoAtom()
{
}
virtual void ReadFromStream(SRecordHeader & oHeader, POLE::Stream* pStream)
{
return CUnknownRecord::ReadFromStream(oHeader, pStream);
}
};
/*
* (c) Copyright Ascensio System SIA 2010-2019
*
* 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-12 Ernesta Birznieka-Upisha
* 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
*
*/
#pragma once
#include "../Reader/Records.h"
namespace PPT_FORMAT
{
class CRecordHashCode10Atom : public CUnknownRecord
{
public:
_UINT32 m_nHash;
virtual void ReadFromStream ( SRecordHeader & oHeader, POLE::Stream* pStream )
{
m_oHeader = oHeader;
m_nHash = StreamUtils::ReadDWORD(pStream);
}
};
}

View File

@ -0,0 +1,62 @@
/*
* (c) Copyright Ascensio System SIA 2010-2019
*
* 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-12 Ernesta Birznieka-Upisha
* 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
*
*/
#pragma once
#include "../Reader/Records.h"
namespace PPT_FORMAT
{
class CRecordLevelInfoAtom : public CUnknownRecord
{
public:
CRecordLevelInfoAtom()
{
}
~CRecordLevelInfoAtom()
{
}
virtual void ReadFromStream ( SRecordHeader & oHeader, POLE::Stream* pStream )
{
m_oHeader = oHeader;
m_nLevel = StreamUtils::ReadDWORD ( pStream );
}
_UINT32 m_nLevel;
};
}

View File

@ -0,0 +1,77 @@
/*
* (c) Copyright Ascensio System SIA 2010-2019
*
* 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-12 Ernesta Birznieka-Upisha
* 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
*
*/
#pragma once
#include "../Reader/Records.h"
namespace PPT_FORMAT
{
class CRecordParaBuildAtom : public CUnknownRecord
{
public:
virtual void ReadFromStream ( SRecordHeader & oHeader, POLE::Stream* pStream )
{
m_oHeader = oHeader;
m_nParaBuild = StreamUtils::ReadDWORD ( pStream );
m_nBuildLevel = StreamUtils::ReadDWORD ( pStream );
_UINT32 Value = StreamUtils::ReadDWORD ( pStream );
m_fAnimBackground = ( 0x01 == ( 0x01 & ((BYTE)Value) ) );
m_fReverse = ( 0x02 == ( 0x02 & ((BYTE)Value) ) );
m_fUserSetAnimBackground = ( 0x04 == ( 0x04 & ((BYTE)Value) ) );
m_fAutomatic = ( 0x08 == ( 0x08 & ((BYTE)Value) ) );
m_nDelayTime = StreamUtils::ReadDWORD ( pStream );
}
public:
_UINT32 m_nParaBuild; // 0 - All paragraphs in the shape animate at the same time.
// 1 - Paragraph levels 1 to n 1 in the shape animate separately.
// All paragraph levels n or greater animate at the same time.
// 2 - Applies a custom animation paragraph build type to the
// paragraphs of the shape.
// 3 - The shape and all paragraphs within the shape animate as one
// graphical object.
_UINT32 m_nBuildLevel;
bool m_fAnimBackground;
bool m_fReverse;
bool m_fUserSetAnimBackground;
bool m_fAutomatic;
_UINT32 m_nDelayTime;
};
}

View File

@ -0,0 +1,98 @@
/*
* (c) Copyright Ascensio System SIA 2010-2019
*
* 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-12 Ernesta Birznieka-Upisha
* 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
*
*/
#pragma once
#include "../Reader/Records.h"
#include "ParaBuildLevel.h"
#include "BuildAtom.h"
#include "ParaBuildAtom.h"
namespace PPT_FORMAT
{
class CRecordParaBuildContainer : public CUnknownRecord
{
public:
CRecordParaBuildContainer()
{
}
virtual ~CRecordParaBuildContainer()
{
for ( size_t i = 0; i < m_arrRgParaBuildLevel.size(); ++i )
RELEASEOBJECT (m_arrRgParaBuildLevel[i]);
}
virtual void ReadFromStream ( SRecordHeader & thisHeader, POLE::Stream* pStream )
{
m_oHeader = thisHeader;
LONG lPos(0); StreamUtils::StreamPosition(lPos, pStream);
UINT lCurLen = 0;
SRecordHeader oHeader;
// UINT res = 0;
if (oHeader.ReadFromStream(pStream)){
m_oBuildAtom.ReadFromStream ( oHeader, pStream );
lCurLen += oHeader.RecLen + 8;
}
if (oHeader.ReadFromStream(pStream))
{
m_oParaBuildAtom.ReadFromStream ( oHeader, pStream );
lCurLen += oHeader.RecLen + 8;
}
// TODO may not work
SRecordHeader ReadHeader;
while ( lCurLen < m_oHeader.RecLen ) {
CRecordParaBuildLevel* pLevel = new CRecordParaBuildLevel();
pLevel->ReadFromStream(pStream);
m_arrRgParaBuildLevel.push_back(pLevel);
lCurLen += pLevel->getRecordLen();
}
StreamUtils::StreamSeek(lPos + m_oHeader.RecLen, pStream);
}
public:
CRecordBuildAtom m_oBuildAtom;
CRecordParaBuildAtom m_oParaBuildAtom;
std::vector <CRecordParaBuildLevel*> m_arrRgParaBuildLevel;
};
}

View File

@ -0,0 +1,75 @@
/*
* (c) Copyright Ascensio System SIA 2010-2019
*
* 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-12 Ernesta Birznieka-Upisha
* 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
*
*/
#pragma once
#include "../Reader/Records.h"
#include "LevelInfoAtom.h"
#include "ExtTimeNodeContainer.h"
class CRecordParaBuildLevel
{
public:
CRecordParaBuildLevel () : m_nRecordLen(0)
{
}
~CRecordParaBuildLevel()
{
}
virtual void ReadFromStream ( POLE::Stream* pStream )
{
SRecordHeader oHeader;
if (oHeader.ReadFromStream(pStream))
{
m_oLevelInfoAtom.ReadFromStream ( oHeader, pStream );
m_nRecordLen += oHeader.RecLen + 8;
}
if (oHeader.ReadFromStream(pStream))
{
m_oTimeNode.ReadFromStream ( oHeader, pStream );
m_nRecordLen += oHeader.RecLen + 8;
}
}
_UINT32 getRecordLen()const {return m_nRecordLen;}
CRecordLevelInfoAtom m_oLevelInfoAtom;
CRecordExtTimeNodeContainer m_oTimeNode; // ExtTimeNodeContainer
private:
_UINT32 m_nRecordLen;
};

View File

@ -0,0 +1,179 @@
/*
* (c) Copyright Ascensio System SIA 2010-2019
*
* 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-12 Ernesta Birznieka-Upisha
* 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
*
*/
#pragma once
#include "../Reader/Records.h"
#include "TimeNodeAtom.h"
#include "TimePropertyList4TimeNodeContainer.h"
#include "TimeColorBehaviorContainer.h"
#include "TimeSetBehaviorContainer.h"
#include "ClientVisualElementContainer.h"
#include "TimeConditionContainer.h"
#include "TimeCommandBehaviorContainer.h"
#include "TimeModifierAtom.h"
//--------------------------------------------------------------------------------
#define SUBEFFECT_CASE(RECORD_TYPE, P_VAR, CLASS_RECORD_NAME, FLAG) \
case RECORD_TYPE: { P_VAR = new CLASS_RECORD_NAME(); \
P_VAR->ReadFromStream(ReadHeader, pStream); \
FLAG = true; \
break; } \
//-------------------------------------------------------------------------------
namespace PPT_FORMAT
{
struct CRecordSubEffectContainer : public CUnknownRecord
{
public:
CRecordSubEffectContainer () :
m_pTimePropertyList(nullptr),
m_pTimeColorBehavior(nullptr),
m_pTimeSetBehavior(nullptr),
m_pTimeCommandBehavior(nullptr),
m_pClientVisualElement(nullptr),
m_haveTimePropertyList(false),
m_haveColorBehavior(false),
m_haveSetBehavior(false),
m_haveCommandBehavior(false),
m_haveClientVisualElement(false)
{
}
virtual ~CRecordSubEffectContainer ()
{
RELEASEOBJECT(m_pTimePropertyList);
RELEASEOBJECT(m_pTimeColorBehavior);
RELEASEOBJECT(m_pTimeSetBehavior);
RELEASEOBJECT(m_pTimeCommandBehavior);
RELEASEOBJECT(m_pClientVisualElement);
for (auto pRecord : m_arrRgBeginTimeCondition)
RELEASEOBJECT(pRecord);
for (auto pRecord : m_arrRgEndTimeCondition)
RELEASEOBJECT(pRecord);
for (auto pRecord : m_arrRgTimeModifierAtom)
RELEASEOBJECT(pRecord);
}
virtual void ReadFromStream (SRecordHeader & oHeader, POLE::Stream* pStream)
{
m_oHeader = oHeader;
LONG lPos(0); StreamUtils::StreamPosition(lPos, pStream);
SRecordHeader ReadHeader;
if ( ReadHeader.ReadFromStream(pStream) )
m_oTimeNodeAtom.ReadFromStream ( ReadHeader, pStream );
UINT lCurLen = m_oTimeNodeAtom.m_oHeader.RecLen + 8;
while ( lCurLen < m_oHeader.RecLen )
{
if ( ReadHeader.ReadFromStream(pStream) == false)
break;
lCurLen += 8 + ReadHeader.RecLen;
switch (ReadHeader.RecType)
{
SUBEFFECT_CASE(RT_TimePropertyList, m_pTimePropertyList,
CRecordTimePropertyList4TimeNodeContainer, m_haveTimePropertyList)
SUBEFFECT_CASE(RT_TimeColorBehaviorContainer, m_pTimeColorBehavior,
CRecordTimeColorBehaviorContainer, m_haveColorBehavior)
SUBEFFECT_CASE(RT_TimeSetBehaviorContainer, m_pTimeSetBehavior,
CRecordTimeSetBehaviorContainer, m_haveSetBehavior)
SUBEFFECT_CASE(RT_TimeCommandBehaviorContainer, m_pTimeCommandBehavior,
CRecordTimeCommandBehaviorContainer, m_haveCommandBehavior)
SUBEFFECT_CASE(RT_TimeClientVisualElement, m_pClientVisualElement,
CRecordClientVisualElementContainer, m_haveClientVisualElement)
case RT_TimeConditionContainer:
{
CRecordTimeConditionContainer* pTimeCondition =
new CRecordTimeConditionContainer();
pTimeCondition->ReadFromStream(ReadHeader, pStream);
unsigned short recInst = ReadHeader.RecInstance;
if (recInst == TL_CT_Begin)
m_arrRgBeginTimeCondition.push_back(pTimeCondition);
else if (recInst == TL_CT_End)
m_arrRgEndTimeCondition.push_back(pTimeCondition);
else
throw ;
break; // A lot of records. Look at instance
}
case RT_TimeModifier:
{
CRecordTimeModifierAtom* pModAtom = new CRecordTimeModifierAtom();
pModAtom->ReadFromStream(ReadHeader, pStream);
m_arrRgTimeModifierAtom.push_back(pModAtom);
break;
}
default:
throw ;
}
}
StreamUtils::StreamSeek(lPos + m_oHeader.RecLen, pStream);
}
public:
CRecordTimeNodeAtom m_oTimeNodeAtom;
CRecordTimePropertyList4TimeNodeContainer* m_pTimePropertyList; // OPTIONAL
CRecordTimeColorBehaviorContainer* m_pTimeColorBehavior; // OPTIONAL
CRecordTimeSetBehaviorContainer* m_pTimeSetBehavior; // OPTIONAL
CRecordTimeCommandBehaviorContainer* m_pTimeCommandBehavior; // OPTIONAL
CRecordClientVisualElementContainer* m_pClientVisualElement; // OPTIONAL
std::vector<CRecordTimeConditionContainer*> m_arrRgBeginTimeCondition; // OPTIONAL
std::vector<CRecordTimeConditionContainer*> m_arrRgEndTimeCondition; // OPTIONAL
std::vector<CRecordTimeModifierAtom*> m_arrRgTimeModifierAtom; // OPTIONAL
bool m_haveTimePropertyList;
bool m_haveColorBehavior;
bool m_haveSetBehavior;
bool m_haveCommandBehavior;
bool m_haveClientVisualElement;
};
}

View File

@ -0,0 +1,75 @@
/*
* (c) Copyright Ascensio System SIA 2010-2019
*
* 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-12 Ernesta Birznieka-Upisha
* 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
*
*/
#pragma once
#include "../Reader/Records.h"
#include "../Enums/_includer.h"
namespace PPT_FORMAT
{
class CRecordTimeAnimateBehaviorAtom : public CUnknownRecord
{
public:
virtual void ReadFromStream ( SRecordHeader & oHeader, POLE::Stream* pStream )
{
m_oHeader = oHeader;
m_nCalcMode = StreamUtils::ReadDWORD ( pStream );
_UINT32 Value = StreamUtils::ReadDWORD ( pStream );
m_bByPropertyUsed = ( 0x01 == ( 0x01 & ((BYTE)Value) ) );
m_bFromPropertyUsed = ( 0x02 == ( 0x02 & ((BYTE)Value) ) );
m_bToPropertyUsed = ( 0x04 == ( 0x04 & ((BYTE)Value) ) );
m_bCalcModePropertyUsed = ( 0x08 == ( 0x08 & ((BYTE)Value) ) );
m_bAnimationValuesPropertyUsed = ( 0x10 == ( 0x10 & ((BYTE)Value) ) );
m_bValueTypePropertyUsed = ( 0x20 == ( 0x20 & ((BYTE)Value) ) );
m_ValueType = (TimeAnimateBehaviorValueTypeEnum)StreamUtils::ReadDWORD ( pStream );
}
public:
_UINT32 m_nCalcMode;
bool m_bByPropertyUsed;
bool m_bFromPropertyUsed;
bool m_bToPropertyUsed;
bool m_bCalcModePropertyUsed;
bool m_bAnimationValuesPropertyUsed;
bool m_bValueTypePropertyUsed;
TimeAnimateBehaviorValueTypeEnum m_ValueType;
};
}

View File

@ -0,0 +1,96 @@
/*
* (c) Copyright Ascensio System SIA 2010-2019
*
* 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-12 Ernesta Birznieka-Upisha
* 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
*
*/
#pragma once
#include "../Reader/Records.h"
#include "TimeVariant.h"
#include "TimeAnimateBehaviorAtom.h"
#include "TimeStringListContainer.h"
#include "TimeAnimationValueListContainer.h"
#include "TimeBehaviorContainer.h"
namespace PPT_FORMAT
{
class CRecordTimeAnimateBehaviorContainer : public CUnknownRecord
{
public:
virtual void ReadFromStream ( SRecordHeader & oHeader, POLE::Stream* pStream )
{
m_oHeader = oHeader;
SRecordHeader ReadHeader;
if ( ReadHeader.ReadFromStream(pStream) )
m_oAnimateBehaviorAtom.ReadFromStream ( ReadHeader, pStream );
if ( m_oAnimateBehaviorAtom.m_bAnimationValuesPropertyUsed )
{
if ( ReadHeader.ReadFromStream(pStream) )
m_oAnimateValueList.ReadFromStream ( ReadHeader, pStream );
}
if ( m_oAnimateBehaviorAtom.m_bByPropertyUsed )
{
if ( ReadHeader.ReadFromStream(pStream) )
m_oVarBy.ReadFromStream ( ReadHeader, pStream );
}
if ( m_oAnimateBehaviorAtom.m_bFromPropertyUsed )
{
if ( ReadHeader.ReadFromStream(pStream) )
m_oVarFrom.ReadFromStream ( ReadHeader, pStream );
}
if ( m_oAnimateBehaviorAtom.m_bToPropertyUsed )
{
if ( ReadHeader.ReadFromStream(pStream) )
m_oVarTo.ReadFromStream ( ReadHeader, pStream );
}
if ( ReadHeader.ReadFromStream(pStream) )
m_oBehavior.ReadFromStream ( ReadHeader, pStream );
}
public:
CRecordTimeAnimateBehaviorAtom m_oAnimateBehaviorAtom;
CRecordTimeAnimationValueListContainer m_oAnimateValueList;
CRecordTimeVariantString m_oVarBy;
CRecordTimeVariantString m_oVarFrom;
CRecordTimeVariantString m_oVarTo;
CRecordTimeBehaviorContainer m_oBehavior;
};
}

View File

@ -0,0 +1,52 @@
/*
* (c) Copyright Ascensio System SIA 2010-2019
*
* 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-12 Ernesta Birznieka-Upisha
* 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
*
*/
#pragma once
#include "../Reader/Records.h"
namespace PPT_FORMAT
{
struct TimeAnimateColor
{
_UINT32 model; // 0 - RGB, 2 - IndexScheme
_UINT32 component0;
_UINT32 component1;
_UINT32 component2;
inline unsigned long FRGB (BYTE alpha = 0xFF)
{
return ((component2 << 16) | (component1 << 8) | (component0 << 0) | (alpha << 24));
}
};
}

View File

@ -0,0 +1,52 @@
/*
* (c) Copyright Ascensio System SIA 2010-2019
*
* 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-12 Ernesta Birznieka-Upisha
* 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
*
*/
#pragma once
#include "../Reader/Records.h"
namespace PPT_FORMAT
{
struct TimeAnimateColorBy
{
_UINT32 model; // 0 - RGB, 1 - HSL, 2 - IndexScheme
_UINT32 component0;
_UINT32 component1;
_UINT32 component2;
inline unsigned long FRGB (BYTE alpha = 0xFF) //
{
return ((component2 << 16) | (component1 << 8) | (component0 << 0) | (alpha << 24));
}
};
}

View File

@ -0,0 +1,54 @@
/*
* (c) Copyright Ascensio System SIA 2010-2019
*
* 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-12 Ernesta Birznieka-Upisha
* 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
*
*/
#pragma once
#include "../Reader/Records.h"
namespace PPT_FORMAT
{
class CRecordTimeAnimationValueAtom : public CUnknownRecord
{
public:
virtual void ReadFromStream ( SRecordHeader & oHeader, POLE::Stream* pStream )
{
m_oHeader = oHeader;
m_nTime = StreamUtils::ReadDWORD ( pStream );
}
public:
long m_nTime;
};
}

View File

@ -0,0 +1,87 @@
/*
* (c) Copyright Ascensio System SIA 2010-2019
*
* 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-12 Ernesta Birznieka-Upisha
* 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
*
*/
#pragma once
#include "../Reader/Records.h"
#include "TimeAnimationValueListEntry.h"
#include <memory>
namespace PPT_FORMAT
{
class CRecordTimeAnimationValueListContainer : public CUnknownRecord
{
public:
~CRecordTimeAnimationValueListContainer()
{
for (auto pEntry : m_arrEntry)
{
RELEASEOBJECT(pEntry);
}
}
virtual void ReadFromStream ( SRecordHeader & oHeader, POLE::Stream* pStream )
{
m_oHeader = oHeader;
LONG lPos = 0;
StreamUtils::StreamPosition ( lPos, pStream );
UINT lCurLen = 0;
SRecordHeader ReadHeader;
while ( lCurLen < m_oHeader.RecLen )
{
if ( ReadHeader.ReadFromStream(pStream) == false )
{
break;
}
lCurLen += 8 + ReadHeader.RecLen;
auto Entry = new CRecordTimeAnimationEntry;
Entry->ReadFromStream ( lCurLen, ReadHeader, pStream );
m_arrEntry.push_back ( Entry );
}
StreamUtils::StreamSeek ( lPos + m_oHeader.RecLen, pStream );
}
public:
std::vector<CRecordTimeAnimationEntry*> m_arrEntry;
};
}

View File

@ -0,0 +1,83 @@
/*
* (c) Copyright Ascensio System SIA 2010-2019
*
* 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-12 Ernesta Birznieka-Upisha
* 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
*
*/
#pragma once
#include "../Reader/Records.h"
#include "TimeVariant.h"
#include "TimeAnimationValueAtom.h"
namespace PPT_FORMAT
{
class CRecordTimeAnimationEntry
{
public:
CRecordTimeAnimationEntry()
{
}
virtual ~CRecordTimeAnimationEntry()
{
}
virtual void ReadFromStream ( UINT& CurLen, SRecordHeader & oHeader, POLE::Stream* pStream )
{
m_oTimeAnimationValueAtom.ReadFromStream ( oHeader, pStream );
// UINT res = 0;
SRecordHeader ReadHeader;
if ( ReadHeader.ReadFromStream(pStream) )
{
m_pVarValue = TimeVariantFactoryMethod( ReadHeader, pStream );
}
CurLen += 8 + ReadHeader.RecLen;
if ( ReadHeader.ReadFromStream(pStream) )
{
m_VarFormula.ReadFromStream ( ReadHeader, pStream );
}
CurLen += 8 + ReadHeader.RecLen;
}
CRecordTimeAnimationValueAtom m_oTimeAnimationValueAtom;
nullable<CRecordTimeVariant> m_pVarValue;
CRecordTimeVariantString m_VarFormula;
};
}

View File

@ -0,0 +1,72 @@
/*
* (c) Copyright Ascensio System SIA 2010-2019
*
* 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-12 Ernesta Birznieka-Upisha
* 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
*
*/
#pragma once
#include "../Reader/Records.h"
namespace PPT_FORMAT
{
class CRecordTimeBehaviorAtom : public CUnknownRecord
{
public:
virtual void ReadFromStream ( SRecordHeader & oHeader, POLE::Stream* pStream )
{
m_oHeader = oHeader;
// LONG lPos = 0; StreamUtils::StreamPosition ( lPos, pStream );
_UINT32 dwFlags = StreamUtils::ReadDWORD ( pStream );
m_bAdditivePropertyUsed = ( 0x01 == ( 0x01 & ((BYTE)dwFlags) ) );
m_bAttributeNamesPropertyUsed = ( 0x04 == ( 0x04 & ((BYTE)dwFlags) ) );
m_nBehaviorAdditive = StreamUtils::ReadDWORD ( pStream );
m_nBehaviorAccumulate = StreamUtils::ReadDWORD ( pStream );
m_nBehaviorTransform = StreamUtils::ReadDWORD ( pStream );
// StreamUtils::StreamSeek ( lPos + m_oHeader.RecLen, pStream );
}
public:
bool m_bAdditivePropertyUsed;
bool m_bAttributeNamesPropertyUsed;
_UINT32 m_nBehaviorAdditive;
_UINT32 m_nBehaviorAccumulate;
_UINT32 m_nBehaviorTransform;
};
}

View File

@ -0,0 +1,131 @@
/*
* (c) Copyright Ascensio System SIA 2010-2019
*
* 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-12 Ernesta Birznieka-Upisha
* 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
*
*/
#pragma once
#include "../Reader/Records.h"
#include "../Enums/RecordType.h"
#include "TimeBehaviorAtom.h"
#include "TimeStringListContainer.h"
#include "TimePropertyList4TimeBehavior.h"
#include "ClientVisualElementContainer.h"
namespace PPT_FORMAT
{
class CRecordTimeBehaviorContainer : public CUnknownRecord
{
public:
CRecordTimeBehaviorContainer () :
m_pStringList(nullptr),
m_pPropertyList(nullptr),
m_haveStringList(false),
m_havePropertyList(false)
{
}
virtual ~CRecordTimeBehaviorContainer ()
{
RELEASEOBJECT (m_pStringList);
RELEASEOBJECT (m_pPropertyList);
}
virtual void ReadFromStream ( SRecordHeader & oHeader, POLE::Stream* pStream )
{
m_oHeader = oHeader;
LONG lPos(0); StreamUtils::StreamPosition(lPos, pStream);
SRecordHeader ReadHeader;
if ( ReadHeader.ReadFromStream(pStream) )
m_oBehaviorAtom.ReadFromStream ( ReadHeader, pStream );
UINT lCurLen = 8 + ReadHeader.RecLen;
while ( lCurLen < m_oHeader.RecLen )
{
if (ReadHeader.ReadFromStream(pStream) == false)
break;
lCurLen += 8 + ReadHeader.RecLen;
RecordType nRecord = ReadHeader.RecType;
switch (nRecord)
{
case RT_TimeVariantList:
{
m_pStringList = new CRecordTimeStringListContainer();
m_pStringList->ReadFromStream(ReadHeader, pStream);
m_haveStringList = true;
break;
}
case RT_TimePropertyList:
{
m_pPropertyList = new CRecordTimePropertyList4TimeBehavior();
m_pPropertyList->ReadFromStream(ReadHeader, pStream);
m_havePropertyList = true;
break;
}
case RT_TimeClientVisualElement:
{
m_oClientVisualElement.ReadFromStream( ReadHeader, pStream );
}
default:
break ;
}
}
StreamUtils::StreamSeek(lPos + m_oHeader.RecLen, pStream);
}
inline _UINT32 GetObjectID ()
{
return m_oClientVisualElement.m_oVisualShapeAtom.m_nObjectIdRef;
}
public:
CRecordTimeBehaviorAtom m_oBehaviorAtom;
CRecordTimeStringListContainer* m_pStringList; // OPTIONAL
CRecordTimePropertyList4TimeBehavior* m_pPropertyList; // OPTIONAL
CRecordClientVisualElementContainer m_oClientVisualElement;
bool m_haveStringList;
bool m_havePropertyList;
};
}

View File

@ -0,0 +1,76 @@
/*
* (c) Copyright Ascensio System SIA 2010-2019
*
* 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-12 Ernesta Birznieka-Upisha
* 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
*
*/
#pragma once
#include "../Reader/Records.h"
#include "TimeAnimateColor.h"
#include "TimeAnimateColorBy.h"
namespace PPT_FORMAT
{
class CRecordTimeColorBehaviorAtom: public CUnknownRecord
{
public:
virtual void ReadFromStream ( SRecordHeader & oHeader, POLE::Stream* pStream )
{
m_oHeader = oHeader;
_UINT32 flag = StreamUtils::ReadDWORD ( pStream );
m_fByPropertyUsed = ( 0x01 == ( 0x01 & ((BYTE)flag) ) );
m_fFromPropertyUsed = ( 0x02 == ( 0x02 & ((BYTE)flag) ) );
m_fToPropertyUsed = ( 0x04 == ( 0x04 & ((BYTE)flag) ) );
m_fColorSpacePropertyUsed = ( 0x08 == ( 0x08 & ((BYTE)flag) ) );
m_fDirectionPropertyUsed = ( 0x10 == ( 0x10 & ((BYTE)flag) ) );
pStream->read ((unsigned char*) &m_sColorBy , sizeof ( TimeAnimateColorBy ) );
pStream->read ((unsigned char*) &m_sColorFrom , sizeof ( TimeAnimateColor ) );
pStream->read ((unsigned char*) &m_sColorTo , sizeof ( TimeAnimateColor ) );
}
public:
bool m_fByPropertyUsed;
bool m_fFromPropertyUsed;
bool m_fToPropertyUsed;
bool m_fColorSpacePropertyUsed;
bool m_fDirectionPropertyUsed;
TimeAnimateColorBy m_sColorBy;
TimeAnimateColor m_sColorFrom;
TimeAnimateColor m_sColorTo;
};
}

View File

@ -0,0 +1,63 @@
/*
* (c) Copyright Ascensio System SIA 2010-2019
*
* 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-12 Ernesta Birznieka-Upisha
* 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
*
*/
#pragma once
#include "../Reader/Records.h"
#include "TimeColorBehaviorAtom.h"
#include "TimeBehaviorContainer.h"
namespace PPT_FORMAT
{
class CRecordTimeColorBehaviorContainer : public CUnknownRecord
{
public:
virtual void ReadFromStream ( SRecordHeader & oHeader, POLE::Stream* pStream )
{
m_oHeader = oHeader;
SRecordHeader ReadHeader;
if (ReadHeader.ReadFromStream(pStream) )
m_oColorBehaviorAtom.ReadFromStream ( ReadHeader, pStream );
if (ReadHeader.ReadFromStream(pStream) )
m_oBehavior.ReadFromStream (ReadHeader, pStream );
}
public:
CRecordTimeColorBehaviorAtom m_oColorBehaviorAtom;
CRecordTimeBehaviorContainer m_oBehavior;
};
}

View File

@ -0,0 +1,74 @@
/*
* (c) Copyright Ascensio System SIA 2010-2019
*
* 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-12 Ernesta Birznieka-Upisha
* 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
*
*/
#pragma once
#include "../Reader/Records.h"
#include "../Enums/_includer.h"
namespace PPT_FORMAT
{
class CRecordTimeCommandBehaviorAtom : public CUnknownRecord
{
public:
CRecordTimeCommandBehaviorAtom ()
{
}
~CRecordTimeCommandBehaviorAtom()
{
}
void ReadFromStream(SRecordHeader &oHeader, POLE::Stream *pStream) override
{
m_oHeader = oHeader;
BYTE flags = StreamUtils::ReadBYTE(pStream);
m_fTypePropertyUsed = ( 0x01 == ( 0x01 & (flags) ) );
m_fCommandPropertyUsed = ( 0x02 == ( 0x02 & (flags) ) );
StreamUtils::StreamSkip(28, pStream);
m_eCommandBehaviorType = (TimeCommandBehaviorTypeEnum)
StreamUtils::ReadLONG(pStream);
}
public:
bool m_fTypePropertyUsed;
bool m_fCommandPropertyUsed;
TimeCommandBehaviorTypeEnum m_eCommandBehaviorType;
};
}

View File

@ -0,0 +1,75 @@
/*
* (c) Copyright Ascensio System SIA 2010-2019
*
* 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-12 Ernesta Birznieka-Upisha
* 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
*
*/
#pragma once
#include "../Reader/Records.h"
#include "TimeCommandBehaviorAtom.h"
#include "TimeBehaviorContainer.h"
namespace PPT_FORMAT
{
class CRecordTimeCommandBehaviorContainer : public CUnknownRecord
{
public:
CRecordTimeCommandBehaviorContainer ()
{
}
~CRecordTimeCommandBehaviorContainer ()
{
}
void ReadFromStream(SRecordHeader &thisHeader, POLE::Stream *pStream) override
{
m_oHeader = thisHeader;
SRecordHeader oHeader;
if (oHeader.ReadFromStream(pStream))
m_oCommandBehaviorAtom.ReadFromStream ( oHeader, pStream );
if (oHeader.ReadFromStream(pStream))
m_oVarCommand.ReadFromStream ( oHeader, pStream );
if (oHeader.ReadFromStream(pStream))
m_oBevavior.ReadFromStream ( oHeader, pStream );
}
public:
CRecordTimeCommandBehaviorAtom m_oCommandBehaviorAtom;
CRecordTimeVariantString m_oVarCommand;
CRecordTimeBehaviorContainer m_oBevavior;
};
}

View File

@ -0,0 +1,63 @@
/*
* (c) Copyright Ascensio System SIA 2010-2019
*
* 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-12 Ernesta Birznieka-Upisha
* 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
*
*/
#pragma once
#include "../Reader/Records.h"
#include "../Enums/_includer.h"
namespace PPT_FORMAT
{
class CRecordTimeConditionAtom : public CUnknownRecord
{
public:
virtual void ReadFromStream ( SRecordHeader & oHeader, POLE::Stream* pStream )
{
m_oHeader = oHeader;
m_TriggerObject = ( TriggerObjectEnum )StreamUtils::ReadDWORD ( pStream );
m_nTriggerEvent = StreamUtils::ReadDWORD ( pStream );
m_nID = StreamUtils::ReadDWORD ( pStream );
m_nTimeDelay = StreamUtils::ReadLONG ( pStream );
}
public:
TriggerObjectEnum m_TriggerObject;
_UINT32 m_nTriggerEvent;
_UINT32 m_nID;
LONG m_nTimeDelay;
};
}

View File

@ -0,0 +1,75 @@
/*
* (c) Copyright Ascensio System SIA 2010-2019
*
* 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-12 Ernesta Birznieka-Upisha
* 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
*
*/
#pragma once
#include "../Reader/Records.h"
#include "TimeConditionAtom.h"
#include "ClientVisualElementContainer.h"
namespace PPT_FORMAT
{
class CRecordTimeConditionContainer : public CUnknownRecord
{
public:
virtual void ReadFromStream ( SRecordHeader & oHeader, POLE::Stream* pStream )
{
m_oHeader = oHeader;
LONG lPos = 0; StreamUtils::StreamPosition ( lPos, pStream );
SRecordHeader header;
if ( header.ReadFromStream(pStream) )
{
m_oTimeConditionAtom.ReadFromStream ( header, pStream );
if ( TL_TOT_VisualElement == m_oTimeConditionAtom.m_TriggerObject )
{
if ( header.ReadFromStream(pStream) )
{
m_oVisualElement.ReadFromStream ( header, pStream );
}
}
}
StreamUtils::StreamSeek ( lPos + m_oHeader.RecLen, pStream );
}
public:
CRecordTimeConditionAtom m_oTimeConditionAtom;
CRecordClientVisualElementContainer m_oVisualElement;
};
}

View File

@ -0,0 +1,71 @@
/*
* (c) Copyright Ascensio System SIA 2010-2019
*
* 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-12 Ernesta Birznieka-Upisha
* 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
*
*/
#pragma once
#include "../Reader/Records.h"
namespace PPT_FORMAT
{
class CRecordTimeEffectBehaviorAtom : public CUnknownRecord
{
public:
virtual void ReadFromStream ( SRecordHeader & oHeader, POLE::Stream* pStream )
{
m_oHeader = oHeader;
// LONG lPos = 0; StreamUtils::StreamPosition ( lPos, pStream );
_UINT32 dwFlags = StreamUtils::ReadDWORD ( pStream );
m_bTransitionPropertyUsed = ( 0x01 == ( 0x01 & ((BYTE)dwFlags) ) );
m_bTypePropertyUsed = ( 0x02 == ( 0x02 & ((BYTE)dwFlags) ) );
m_bProgressPropertyUsed = ( 0x04 == ( 0x04 & ((BYTE)dwFlags) ) );
m_bRuntimeContextObsolete = ( 0x08 == ( 0x08 & ((BYTE)dwFlags) ) );
m_nEffectTransition = StreamUtils::ReadDWORD ( pStream );
// StreamUtils::StreamSeek ( lPos + m_oHeader.RecLen, pStream );
}
public:
bool m_bTransitionPropertyUsed;
bool m_bTypePropertyUsed;
bool m_bProgressPropertyUsed;
bool m_bRuntimeContextObsolete;
_UINT32 m_nEffectTransition;
};
}

View File

@ -0,0 +1,103 @@
/*
* (c) Copyright Ascensio System SIA 2010-2019
*
* 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-12 Ernesta Birznieka-Upisha
* 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
*
*/
#pragma once
#include "../Reader/Records.h"
#include "TimeEffectBehaviorAtom.h"
#include "TimeVariant.h"
#include "TimeBehaviorContainer.h"
namespace PPT_FORMAT
{
class CRecordTimeEffectBehaviorContainer : public CUnknownRecord
{
public:
virtual void ReadFromStream ( SRecordHeader & oHeader, POLE::Stream* pStream )
{
m_oHeader = oHeader;
LONG lPos = 0; StreamUtils::StreamPosition ( lPos, pStream );
SRecordHeader header;
if ( header.ReadFromStream(pStream) )
m_effectBehaviorAtom.ReadFromStream ( header, pStream );
if ( m_effectBehaviorAtom.m_bTypePropertyUsed )
{
if ( header.ReadFromStream(pStream) )
m_oVarType.ReadFromStream ( header, pStream );
}
if ( m_effectBehaviorAtom.m_bProgressPropertyUsed )
{
if ( header.ReadFromStream(pStream) )
m_oVarProgress.ReadFromStream ( header, pStream );
}
if ( m_effectBehaviorAtom.m_bRuntimeContextObsolete )
{
if ( header.ReadFromStream(pStream) )
m_oVarRuntimeContext.ReadFromStream ( header, pStream );
}
if ( header.ReadFromStream(pStream) )
{
if (header.RecType == 0xF12A)
{
m_oBehavior.ReadFromStream (header, pStream);
}
else
{
StreamUtils::StreamSkip (header.RecLen, pStream);
if ( header.ReadFromStream(pStream) )
{
m_oBehavior.ReadFromStream ( header, pStream );
}
}
}
StreamUtils::StreamSeek ( lPos + m_oHeader.RecLen, pStream );
}
public:
CRecordTimeEffectBehaviorAtom m_effectBehaviorAtom;
CRecordTimeVariantString m_oVarType;
CRecordTimeVariantFloat m_oVarProgress;
CRecordTimeVariantString m_oVarRuntimeContext;
CRecordTimeBehaviorContainer m_oBehavior;
};
}

View File

@ -0,0 +1,71 @@
/*
* (c) Copyright Ascensio System SIA 2010-2019
*
* 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-12 Ernesta Birznieka-Upisha
* 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
*
*/
#pragma once
#include "../Reader/Records.h"
namespace PPT_FORMAT
{
class CRecordTimeIterateDataAtom: public CUnknownRecord
{
public:
virtual void ReadFromStream ( SRecordHeader & oHeader, POLE::Stream* pStream )
{
m_oHeader = oHeader;
m_nIterateInterval = StreamUtils::ReadDWORD ( pStream );
m_nIterateType = StreamUtils::ReadDWORD ( pStream );
m_nIterateDirection = StreamUtils::ReadDWORD ( pStream );
m_nIterateIntervalType = StreamUtils::ReadDWORD ( pStream );
_UINT32 Value = StreamUtils::ReadDWORD ( pStream );
m_fIterateDirectionPropertyUsed = ( 0x01 == ( 0x01 & ((BYTE)Value) ) );
m_fIterateTypePropertyUsed = ( 0x02 == ( 0x02 & ((BYTE)Value) ) );
m_fIterateIntervalPropertyUsed = ( 0x04 == ( 0x04 & ((BYTE)Value) ) );
m_fIterateIntervalTypePropertyUsed = ( 0x08 == ( 0x08 & ((BYTE)Value) ) );
}
public:
_UINT32 m_nIterateInterval;
_UINT32 m_nIterateType;
_UINT32 m_nIterateDirection;
_UINT32 m_nIterateIntervalType;
bool m_fIterateDirectionPropertyUsed;
bool m_fIterateTypePropertyUsed;
bool m_fIterateIntervalPropertyUsed;
bool m_fIterateIntervalTypePropertyUsed;
};
}

View File

@ -0,0 +1,61 @@
/*
* (c) Copyright Ascensio System SIA 2010-2019
*
* 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-12 Ernesta Birznieka-Upisha
* 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
*
*/
#pragma once
#include "../Reader/Records.h"
namespace PPT_FORMAT
{
class CRecordTimeModifierAtom : public CUnknownRecord
{
public:
virtual void ReadFromStream ( SRecordHeader & oHeader, POLE::Stream* pStream )
{
m_oHeader = oHeader;
m_nType = StreamUtils::ReadDWORD(pStream);
m_Value = StreamUtils::ReadFLOAT(pStream);
}
public:
unsigned long m_nType; // 0x00000000 Repeat count.
// 0x00000001 Repeat duration.
// 0x00000002 Speed.
// 0x00000003 Accelerate.
// 0x00000004 Decelerate.
float m_Value;
};
}

View File

@ -0,0 +1,86 @@
/*
* (c) Copyright Ascensio System SIA 2010-2019
*
* 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-12 Ernesta Birznieka-Upisha
* 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
*
*/
#pragma once
#include "../Reader/Records.h"
namespace PPT_FORMAT
{
class CRecordTimeMotionBehaviorAtom : public CUnknownRecord
{
public:
virtual void ReadFromStream ( SRecordHeader & oHeader, POLE::Stream* pStream )
{
m_oHeader = oHeader;
_UINT32 Value = StreamUtils::ReadDWORD ( pStream );
m_bByPropertyUsed = ( 0x01 == ( 0x01 & ((BYTE)Value) ) );
m_bFromPropertyUsed = ( 0x02 == ( 0x02 & ((BYTE)Value) ) );
m_bToPropertyUsed = ( 0x04 == ( 0x04 & ((BYTE)Value) ) );
m_bOriginPropertyUsed = ( 0x08 == ( 0x08 & ((BYTE)Value) ) );
m_bPathPropertyUsed = ( 0x10 == ( 0x10 & ((BYTE)Value) ) );
m_bEditRotationPropertyUsed = ( 0x40 == ( 0x40 & ((BYTE)Value) ) );
m_bPointsTypesPropertyUsed = ( 0x80 == ( 0x80 & ((BYTE)Value) ) );
m_nXBY = StreamUtils::ReadFLOAT ( pStream );
m_nYBY = StreamUtils::ReadFLOAT ( pStream );
m_nXFROM = StreamUtils::ReadFLOAT ( pStream );
m_nYFROM = StreamUtils::ReadFLOAT ( pStream );
m_nXTO = StreamUtils::ReadFLOAT ( pStream );
m_nYTO = StreamUtils::ReadFLOAT ( pStream );
m_nBehaviorOrigin = StreamUtils::ReadDWORD ( pStream );
}
public:
bool m_bByPropertyUsed;
bool m_bFromPropertyUsed;
bool m_bToPropertyUsed;
bool m_bOriginPropertyUsed;
bool m_bPathPropertyUsed;
bool m_bEditRotationPropertyUsed;
bool m_bPointsTypesPropertyUsed;
FLOAT m_nXBY;
FLOAT m_nYBY;
FLOAT m_nXFROM;
FLOAT m_nYFROM;
FLOAT m_nXTO;
FLOAT m_nYTO;
_UINT32 m_nBehaviorOrigin;
};
}

View File

@ -0,0 +1,105 @@
/*
* (c) Copyright Ascensio System SIA 2010-2019
*
* 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-12 Ernesta Birznieka-Upisha
* 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
*
*/
#pragma once
#include "../Reader/Records.h"
#include "TimeMotionBehaviorAtom.h"
#include "TimeVariant.h"
#include "TimeBehaviorContainer.h"
namespace PPT_FORMAT
{
class CRecordTimeMotionBehaviorContainer : public CUnknownRecord
{
public:
virtual void ReadFromStream ( SRecordHeader & oHeader, POLE::Stream* pStream )
{
m_oHeader = oHeader;
LONG lPos = 0; StreamUtils::StreamPosition ( lPos, pStream );
//UINT res = 0;
SRecordHeader header;
if ( header.ReadFromStream(pStream) )
{
m_oMotionBehaviorAtom.ReadFromStream ( header, pStream );
}
UINT lCurLen = m_oMotionBehaviorAtom.m_oHeader.RecLen + 8;
while ( lCurLen < m_oHeader.RecLen )
{
header.ReadFromStream(pStream);
lCurLen += header.RecLen + 8;
switch (header.RecType) {
case RT_TimeVariant:
{
if (header.RecLen > 5 ) {
m_pVarPath = new CRecordTimeVariantString();
m_pVarPath->ReadFromStream(header, pStream);
}else if (header.RecLen == 5){
StreamUtils::StreamSkip(5, pStream);
} else
StreamUtils::StreamSkip(header.RecLen, pStream);
break;
}
case RT_TimeBehaviorContainer:
{
m_oTimeBehavior.ReadFromStream(header, pStream);
break;
}
default:
break;
}
}
StreamUtils::StreamSeek(lPos + m_oHeader.RecLen, pStream);
}
~CRecordTimeMotionBehaviorContainer()
{
RELEASEOBJECT(m_pVarPath)
}
public:
CRecordTimeMotionBehaviorAtom m_oMotionBehaviorAtom;
CRecordTimeVariantString* m_pVarPath; // OPTIONAL
// reserved (13 bytes): An optional TimeVariantInt record that MUST be ignored.
CRecordTimeBehaviorContainer m_oTimeBehavior;
};
}

View File

@ -0,0 +1,98 @@
/*
* (c) Copyright Ascensio System SIA 2010-2019
*
* 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-12 Ernesta Birznieka-Upisha
* 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
*
*/
#pragma once
#include "../Reader/Records.h"
#include "../Enums/_includer.h"
namespace PPT_FORMAT
{
class CRecordTimeNodeAtom : public CUnknownRecord
{
public:
virtual void ReadFromStream ( SRecordHeader & oHeader, POLE::Stream* pStream )
{
m_oHeader = oHeader;
// LONG lPos = 0; StreamUtils::StreamPosition(lPos, pStream);
StreamUtils::StreamSkip ( sizeof ( _UINT32 ), pStream );
// 0x00000000 Does not restart.
// 0x00000001 Can restart at any time.
// 0x00000002 Can restart when the corresponding time node is not active.
// 0x00000003 Same as 0x00000000.
m_dwRestart = StreamUtils::ReadDWORD ( pStream );
// 0x00000000 specifies that this time node is a parallel time node,
// which allows all of its child nodes to start at the same time.
m_dwType = (TimeNodeTypeEnum)StreamUtils::ReadDWORD ( pStream );
// 0x00000000 The properties remain at their ending values while the parent time node is still running or holding. After which, the properties reset to their original values.
// 0x00000001 The properties reset to their original values after the time node becomes inactive.
// 0x00000002 The properties remain at their ending values while the parent time node is still running or holding, or until another sibling time node is started under a sequential time node as specified in the type field. After which, the properties reset to their original values.
// 0x00000003 Same as 0x00000000.
// 0x00000004 Same as 0x00000001.
m_dwFill = StreamUtils::ReadDWORD ( pStream );
StreamUtils::StreamSkip ( sizeof ( _UINT32 ), pStream );
StreamUtils::StreamSkip ( sizeof ( _UINT32 ), pStream );
// duration: 0xFFFFFFFF specifies that the duration of the time node is infinite,
// and that its actual duration is determined by the durations of its child nodes.
m_nDuration = StreamUtils::ReadLONG ( pStream );
_UINT32 Value = StreamUtils::ReadDWORD ( pStream );
m_fFillProperty = ( 0x01 == ( 0x01 & ((BYTE)Value) ) );
m_fRestartProperty = ( 0x02 == ( 0x02 & ((BYTE)Value) ) );
m_fGroupingTypeProperty = ( 0x08 == ( 0x08 & ((BYTE)Value) ) );
m_fDurationProperty = ( 0x10 == ( 0x10 & ((BYTE)Value) ) );
// StreamUtils::StreamSeek ( lPos + m_oHeader.RecLen, pStream );
}
public:
_UINT32 m_dwRestart;
TimeNodeTypeEnum m_dwType;
_UINT32 m_dwFill;
long m_nDuration;
bool m_fFillProperty;
bool m_fRestartProperty;
bool m_fGroupingTypeProperty;
bool m_fDurationProperty;
};
}

View File

@ -0,0 +1,43 @@
/*
* (c) Copyright Ascensio System SIA 2010-2019
*
* 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-12 Ernesta Birznieka-Upisha
* 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
*
*/
#pragma once
#include "../Reader/Records.h"
#include "TimeVariant.h"
namespace PPT_FORMAT
{
struct TimeNodeTimeFilter : public CRecordTimeVariantString
{
};
}

View File

@ -0,0 +1,87 @@
/*
* (c) Copyright Ascensio System SIA 2010-2019
*
* 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-12 Ernesta Birznieka-Upisha
* 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
*
*/
#pragma once
#include "../Reader/Records.h"
#include "TimeVariant4Behavior.h"
namespace PPT_FORMAT
{
class CRecordTimePropertyList4TimeBehavior : public CRecordsContainer
{
public:
//static const _UINT32 RT_TimePropertyList = 0xF13D; // Specifies a TimePropertyList4TimeNodeContainer or TimePropertyList4TimeBehavior.
CRecordTimePropertyList4TimeBehavior ()
{
}
virtual ~CRecordTimePropertyList4TimeBehavior ()
{
CRecordsContainer::Clear();
}
virtual void ReadFromStream ( SRecordHeader & thisHeader, POLE::Stream* pStream )
{
m_oHeader = thisHeader;
UINT lCurLen = 0;
SRecordHeader oHeader;
while (lCurLen < m_oHeader.RecLen)
{
// if (oHeader.ReadFromStream(pStream) == FALSE)
// {
// break;
// }
if (oHeader.ReadFromStream(pStream)) {
lCurLen += 8 + oHeader.RecLen;
IRecord* pRecord = FactoryTimeVariant4Behavior::createByInstanse(oHeader.RecInstance);
if (pRecord)
{
pRecord->ReadFromStream(oHeader, pStream);
m_arRecords.push_back(pRecord);
}
else
break;
}
}
}
public:
// Empty
};
}

View File

@ -0,0 +1,134 @@
/*
* (c) Copyright Ascensio System SIA 2010-2019
*
* 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-12 Ernesta Birznieka-Upisha
* 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
*
*/
#pragma once
#include "../Reader/Records.h"
#include "TimeVariant.h"
#include "../Enums/_includer.h"
namespace PPT_FORMAT
{
class CRecordTimePropertyList4TimeNodeContainer : public CUnknownRecord
{
public:
//static const _UINT32 RT_TimePropertyList = 0xF13D; // Specifies a CRecordTimePropertyList4TimeNodeContainer or TimePropertyList4TimeBehavior.
CRecordTimePropertyList4TimeNodeContainer ()
{
m_bEmtyNode = false;
}
virtual ~CRecordTimePropertyList4TimeNodeContainer ()
{
ClearNodes ();
}
virtual void ReadFromStream ( SRecordHeader & oHeader, POLE::Stream* pStream )
{
m_oHeader = oHeader;
LONG lPos = 0;
StreamUtils::StreamPosition ( lPos, pStream );
UINT lCurLen = 0;
SRecordHeader ReadHeader;
if ( 0 == m_oHeader.RecLen )
m_bEmtyNode = true;
while ( lCurLen < m_oHeader.RecLen )
{
if (ReadHeader.ReadFromStream(pStream) == false)
break;
CRecordTimeVariant* pRecord = NULL;
TimePropertyID4TimeNode VariableType = ( TimePropertyID4TimeNode ) ReadHeader.RecInstance;
switch ( VariableType )
{
case TL_TPID_Display: pRecord = new CRecordTimeDisplayType (); break;
case TL_TPID_MasterPos: pRecord = new CRecordTimeMasterRelType (); break;
case TL_TPID_SubType: pRecord = new CRecordTimeSubType (); break;
case TL_TPID_EffectID: pRecord = new CRecordTimeEffectID (); break;
case TL_TPID_EffectDir: pRecord = new CRecordTimeEffectDir (); break;
case TL_TPID_EffectType: pRecord = new CRecordTimeEffectType (); break;
case TL_TPID_AfterEffect: pRecord = new CRecordTimeAfterEffect (); break;
case TL_TPID_SlideCount: pRecord = new CRecordTimeSlideCount (); break;
case TL_TPID_TimeFilter: pRecord = new CRecordTimeNodeTimeFilter (); break;
case TL_TPID_EventFilter: pRecord = new CRecordTimeEventFilter (); break;
case TL_TPID_HideWhenStopped: pRecord = new CRecordTimeHideWhenStopped (); break;
case TL_TPID_GroupID: pRecord = new CRecordTimeGroupID (); break;
case TL_TPID_EffectNodeType: pRecord = new CRecordTimeEffectNodeType (); break;
case TL_TPID_PlaceholderNode: pRecord = new CRecordTimePlaceholderNode (); break;
case TL_TPID_MediaVolume: pRecord = new CRecordTimeMediaVolume (); break;
case TL_TPID_MediaMute: pRecord = new CRecordTimeMediaMute (); break;
case TL_TPID_ZoomToFullScreen: pRecord = new CRecordTimeZoomToFullScreen (); break;
default :
break;
}
pRecord->ReadFromStream ( ReadHeader, pStream );
lCurLen += 8 + ReadHeader.RecLen;
m_arrElements.push_back ( pRecord );
}
StreamUtils::StreamSeek ( lPos + m_oHeader.RecLen, pStream );
}
inline bool IsEmpty ()
{
return m_bEmtyNode;
}
void ClearNodes ()
{
for ( size_t i = 0; i < m_arrElements.size(); ++i )
{
RELEASEOBJECT ( m_arrElements[i] );
}
m_arrElements.clear ();
}
public:
bool m_bEmtyNode;
std::vector <CRecordTimeVariant*> m_arrElements;
};
}

View File

@ -0,0 +1,71 @@
/*
* (c) Copyright Ascensio System SIA 2010-2019
*
* 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-12 Ernesta Birznieka-Upisha
* 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
*
*/
#pragma once
#include "../Reader/Records.h"
namespace PPT_FORMAT
{
class CRecordTimeRotationBehaviorAtom : public CUnknownRecord
{
public:
virtual void ReadFromStream ( SRecordHeader & oHeader, POLE::Stream* pStream )
{
m_oHeader = oHeader;
_UINT32 src = StreamUtils::ReadDWORD ( pStream );
m_fByPropertyUsed = ( 0x01 == ( 0x01 & ((BYTE)src) ) );
m_fFromPropertyUsed = ( 0x02 == ( 0x02 & ((BYTE)src) ) );
m_fToPropertyUsed = ( 0x03 == ( 0x03 & ((BYTE)src) ) );
m_fDirectionPropertyUsed = ( 0x04 == ( 0x04 & ((BYTE)src) ) );
m_By = StreamUtils::ReadFLOAT ( pStream );
m_From = StreamUtils::ReadFLOAT ( pStream );
m_To = StreamUtils::ReadFLOAT ( pStream );
m_nRotationDirection = StreamUtils::ReadDWORD ( pStream );
}
public:
bool m_fByPropertyUsed;
bool m_fFromPropertyUsed;
bool m_fToPropertyUsed;
bool m_fDirectionPropertyUsed;
float m_By;
float m_From;
float m_To;
_UINT32 m_nRotationDirection; // 0 - rotate clockwise, 1 - rotate counter clockwise
};
}

View File

@ -0,0 +1,66 @@
/*
* (c) Copyright Ascensio System SIA 2010-2019
*
* 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-12 Ernesta Birznieka-Upisha
* 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
*
*/
#pragma once
#include "../Reader/Records.h"
#include "TimeRotationBehaviorAtom.h"
#include "TimeBehaviorContainer.h"
namespace PPT_FORMAT
{
class CRecordTimeRotationBehaviorContainer : public CUnknownRecord
{
public:
virtual void ReadFromStream ( SRecordHeader & oHeader, POLE::Stream* pStream )
{
m_oHeader = oHeader;
SRecordHeader ReadHeader;
if ( ReadHeader.ReadFromStream(pStream) )
m_oRotationBehaviorAtom.ReadFromStream ( ReadHeader, pStream );
if ( ReadHeader.ReadFromStream(pStream) )
m_oBehavior.ReadFromStream ( ReadHeader, pStream );
}
public:
CRecordTimeRotationBehaviorAtom m_oRotationBehaviorAtom;
CRecordTimeBehaviorContainer m_oBehavior;
};
}

View File

@ -0,0 +1,80 @@
/*
* (c) Copyright Ascensio System SIA 2010-2019
*
* 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-12 Ernesta Birznieka-Upisha
* 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
*
*/
#pragma once
#include "../Reader/Records.h"
namespace PPT_FORMAT
{
class CRecordTimeScaleBehaviorAtom : public CUnknownRecord
{
public:
virtual void ReadFromStream ( SRecordHeader & oHeader, POLE::Stream* pStream )
{
m_oHeader = oHeader;
_UINT32 src = StreamUtils::ReadDWORD ( pStream );
m_fByPropertyUsed = ( 0x01 == ( 0x01 & ((BYTE)src) ) );
m_fFromPropertyUsed = ( 0x02 == ( 0x02 & ((BYTE)src) ) );
m_fToPropertyUsed = ( 0x03 == ( 0x03 & ((BYTE)src) ) );
m_fZoomContentsUsed = ( 0x04 == ( 0x04 & ((BYTE)src) ) );
m_XBy = StreamUtils::ReadFLOAT ( pStream );
m_YBy = StreamUtils::ReadFLOAT ( pStream );
m_XFrom = StreamUtils::ReadFLOAT ( pStream );
m_YFrom = StreamUtils::ReadFLOAT ( pStream );
m_XTo = StreamUtils::ReadFLOAT ( pStream );
m_YTo = StreamUtils::ReadFLOAT ( pStream );
src = StreamUtils::ReadDWORD ( pStream );
m_fZoomContents = ( 0x01 == ( 0x01 & ((BYTE)src) ) );
}
public:
bool m_fByPropertyUsed;
bool m_fFromPropertyUsed;
bool m_fToPropertyUsed;
bool m_fZoomContentsUsed;
float m_XBy;
float m_YBy;
float m_XFrom;
float m_YFrom;
float m_XTo;
float m_YTo;
bool m_fZoomContents;
};
}

View File

@ -0,0 +1,63 @@
/*
* (c) Copyright Ascensio System SIA 2010-2019
*
* 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-12 Ernesta Birznieka-Upisha
* 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
*
*/
#pragma once
#include "../Reader/Records.h"
#include "TimeScaleBehaviorAtom.h"
#include "TimeBehaviorContainer.h"
namespace PPT_FORMAT
{
class CRecordTimeScaleBehaviorContainer : public CUnknownRecord
{
public:
virtual void ReadFromStream ( SRecordHeader & oHeader, POLE::Stream* pStream )
{
m_oHeader = oHeader;
SRecordHeader ReadHeader;
if ( ReadHeader.ReadFromStream(pStream) )
m_oScaleBehaviorAtom.ReadFromStream ( ReadHeader, pStream );
if ( ReadHeader.ReadFromStream(pStream) )
m_oBehavior.ReadFromStream ( ReadHeader, pStream );
}
public:
CRecordTimeScaleBehaviorAtom m_oScaleBehaviorAtom;
CRecordTimeBehaviorContainer m_oBehavior;
};
}

View File

@ -0,0 +1,73 @@
/*
* (c) Copyright Ascensio System SIA 2010-2019
*
* 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-12 Ernesta Birznieka-Upisha
* 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
*
*/
#pragma once
#include "../Reader/Records.h"
namespace PPT_FORMAT
{
class CRecordTimeSequenceDataAtom : public CUnknownRecord
{
public:
virtual void ReadFromStream ( SRecordHeader & oHeader, POLE::Stream* pStream )
{
m_oHeader = oHeader;
// LONG lPos = 0; StreamUtils::StreamPosition ( lPos, pStream );
m_nConcurrency = StreamUtils::ReadDWORD ( pStream );
m_nNextAction = StreamUtils::ReadDWORD ( pStream );
m_nPreviousAction = StreamUtils::ReadDWORD ( pStream );
StreamUtils::StreamSkip ( sizeof ( _UINT32 ), pStream );
_UINT32 Value = StreamUtils::ReadDWORD ( pStream );
m_fConcurrencyPropertyUsed = ( 0x01 == ( 0x01 & ((BYTE)Value) ) );
m_fNextActionPropertyUsed = ( 0x02 == ( 0x02 & ((BYTE)Value) ) );
m_fPreviousActionPropertyUsed = ( 0x04 == ( 0x04 & ((BYTE)Value) ) );
// StreamUtils::StreamSeek ( lPos + m_oHeader.RecLen, pStream );
}
public:
_UINT32 m_nConcurrency;
_UINT32 m_nNextAction;
_UINT32 m_nPreviousAction;
bool m_fConcurrencyPropertyUsed;
bool m_fNextActionPropertyUsed;
bool m_fPreviousActionPropertyUsed;
};
}

View File

@ -0,0 +1,63 @@
/*
* (c) Copyright Ascensio System SIA 2010-2019
*
* 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-12 Ernesta Birznieka-Upisha
* 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
*
*/
#pragma once
#include "../Reader/Records.h"
#include "../../Enums/_includer.h"
namespace PPT_FORMAT
{
class CRecordTimeSetBehaviorAtom : public CUnknownRecord
{
public:
virtual void ReadFromStream ( SRecordHeader & oHeader, POLE::Stream* pStream )
{
m_oHeader = oHeader;
_UINT32 Value = StreamUtils::ReadDWORD ( pStream );
m_bToPropertyUsed = ( 0x01 == ( 0x01 & ((BYTE)Value) ) );
m_bValueTypePropertyUsed = ( 0x02 == ( 0x02 & ((BYTE)Value) ) );
m_eValueType = (TimeAnimateBehaviorValueTypeEnum)StreamUtils::ReadDWORD ( pStream );
}
public:
bool m_bToPropertyUsed;
bool m_bValueTypePropertyUsed;
TimeAnimateBehaviorValueTypeEnum m_eValueType;
};
}

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