Compare commits

..

457 Commits

Author SHA1 Message Date
d3375120d6 Merge pull request #521 from ONLYOFFICE/hunspellfix
fix bug
2021-03-04 17:12:41 +03:00
3b0a8c12d4 fix bug
fixed wrong misspelling of capitalised words
2021-03-04 16:19:38 +03:00
bd0223ad59 Merge pull request #519 from ONLYOFFICE/develop
fix put_BrushGradient
2021-03-04 14:27:47 +03:00
4d4d515c24 fix Linear Angle 2021-03-04 13:45:45 +03:00
b00efef486 Merge remote-tracking branch 'origin/master' into release/v6.3.0 2021-03-04 11:14:21 +03:00
566d873e1c fix put_BrushGradient
removed access to properties whose names were collapsed
2021-03-04 09:25:54 +03:00
1bb48ee85a bug observation 2021-03-03 18:56:36 +03:00
6ccb4ca4ed Merge pull request #517 from ONLYOFFICE/release/v6.2.0 2021-03-03 11:58:52 +03:00
5d1aadd5eb fix put_BrushGradient
isUndefined didn't work
2021-03-03 11:55:02 +03:00
88ae82035e fix put_BrushGradient 2021-03-03 11:10:24 +03:00
28b5a1fcec fix put_BrushGradient 2021-03-02 14:10:14 +03:00
40eb9aaf09 delete drawCollaborativeChanges
fix mint rectangles
2021-03-02 12:54:43 +03:00
b17263d758 Remove use NAN value 2021-03-02 12:24:15 +03:00
4e7bad062f Fix compile 2021-03-02 11:54:20 +03:00
781afc8987 sHtmlFile in Temp 2021-03-02 10:51:16 +03:00
8bf0bf840d Merge pull request #515 from ONLYOFFICE/feature/localspellcheck
Feature/localspellcheck
2021-03-01 20:57:08 +03:00
c29d9dae9a . 2021-03-01 15:33:05 +03:00
83311dcc35 Merge remote-tracking branch 'origin/feature/ppt_4' into develop 2021-03-01 15:16:35 +03:00
69794961e7 x2t - binary - protection 2021-03-01 14:56:56 +03:00
35547e8b8c Hunpell version file 2021-03-01 11:40:55 +03:00
141ccbc3f0 delete auxiliary file 2021-03-01 10:14:26 +03:00
1a24a8e297 clean code 2021-03-01 10:11:18 +03:00
8d9f2ba374 Bug fix 2021-03-01 10:03:12 +03:00
393bdf3caa add cBhvr 2021-02-26 19:35:28 +03:00
d91696efea Merge branch 'feature/ppt_4' of https://github.com/ONLYOFFICE/core into feature/ppt_4 2021-02-26 16:20:12 +03:00
78ef372ede Added node structure missing in the old animation format. 2021-02-26 16:15:32 +03:00
4c3738adf0 Added node structure missing in the old animation format. 2021-02-26 14:29:02 +03:00
9f71304aa2 Merge commit '7a4bb715cd26829910c11beb1546f5f2f5710eaa' into develop 2021-02-26 14:17:32 +03:00
0a19425077 delete hunspel-1.3.3 directory
moved to 3dparty
2021-02-26 11:39:51 +03:00
8e8618380a fix doct_bin2epub and doct_bin2fb
fixed sequence docx -> doct_bin -> html. Now only doct_bin is expected to exist
2021-02-26 11:23:11 +03:00
beff8de953 Merge branch 'feature/ppt_4' of https://github.com/ONLYOFFICE/core into feature/ppt_4 2021-02-26 09:20:19 +03:00
7264e7f397 fix doct_bin2html and doct_bin2html_zip
fixed sequence docx -> doct_bin -> html. Now only doct_bin is expected to exist
2021-02-26 08:33:04 +03:00
f2f0fce5fb [x2t] Fix w14:checked reading 2021-02-25 19:25:25 +03:00
b96c53557a Merge pull request #512 from ONLYOFFICE/release/v6.2.0
Release/v6.2.0
2021-02-25 12:24:41 +03:00
44901d4132 fix name of temp image
used by CreateTempFileWithUniqueName because file substitutions could occur
2021-02-25 10:28:03 +03:00
87b9373c3b qt 2021-02-24 17:30:52 +03:00
0b3404fe3f Merge branch 'feature/localspellcheck' of https://github.com/ONLYOFFICE/core into feature/localspellcheck 2021-02-24 16:13:36 +03:00
47d58bfaf0 delete tmp files 2021-02-24 16:12:41 +03:00
b853d09cd0 Add gitignore file 2021-02-24 16:06:15 +03:00
5bc944da76 Fix bsdtar archive dir (#510) 2021-02-24 16:01:59 +03:00
4c64e6ff72 delete win-api 2021-02-24 16:00:41 +03:00
16cb56a888 hunspell make 2021-02-24 15:35:41 +03:00
1356e43329 Lib update
New hunspell 1.7.0, fixed large memory leak
2021-02-24 13:01:28 +03:00
a6338dac5d fix dc:title
empty title caused conversion error
2021-02-24 10:59:24 +03:00
be11acad34 correct cathing old anim 2021-02-23 14:27:13 +03:00
f6c46a6258 correct cathing old anim 2021-02-22 22:36:36 +03:00
da4653dba8 add alter-function for animation and connect rid for it 2021-02-19 18:47:12 +03:00
f70a032cf3 js dictionary manager
ill delete couts if everything is ok
2021-02-19 17:09:30 +03:00
abffa8d301 Fb2File summary 2021-02-19 10:29:12 +03:00
23ace16776 Fix macos build 2021-02-19 09:46:34 +03:00
81aea03af6 Merge pull request #500 from ONLYOFFICE/html2epub
NativeGraphics, html2epub, html2fb
2021-02-19 00:08:11 +03:00
14e387c048 start adding old animation 2021-02-18 20:16:33 +03:00
c9418370e6 memory leak fix 2021-02-18 18:31:21 +03:00
7f946098df new dictionaries managment 2021-02-18 18:08:46 +03:00
6551dd92e5 Add realizartion in objective c 2021-02-18 17:04:26 +03:00
60411f43f5 return Dispose 2021-02-18 12:47:57 +03:00
aa97eb7b17 Add support linux os 2021-02-17 19:10:25 +03:00
604aa08a36 fix spaces and tabs 2021-02-17 12:02:37 +03:00
962dfca64c without static 2021-02-16 14:35:18 +03:00
c1d9c507cf Merge branch 'develop' into feature/html2epub 2021-02-15 16:57:49 +03:00
ac57e7096b X2t doct_bin2epub
had to add a parameter to the execute function to get to the static variable
2021-02-15 16:50:55 +03:00
d97cab1499 X2t doct_bin2fb 2021-02-15 10:55:45 +03:00
3a7408aadb add nickname 2021-02-15 08:54:33 +03:00
39cdb9ee75 fix crashes in old audio, but animation doesn't work 2021-02-12 18:19:25 +03:00
cfb9ec59b6 remove dir TimingConverter for Animation class 2021-02-12 15:44:43 +03:00
6cc7a64878 fix flags in TimeRotationBehaviorAtom and Scale 2021-02-12 14:19:48 +03:00
0d3f4612d8 Merge remote-tracking branch 'origin/release/v6.2.0' into develop 2021-02-11 14:12:54 +03:00
e55a46bf41 fix type of image 2021-02-11 09:19:51 +03:00
f22e95aaaa fix description 2021-02-10 15:05:41 +03:00
ab9b430ef4 h1-h6 2021-02-10 11:34:53 +03:00
ee4a61f8bc ol, ul and img
implemented bulleted and numbered lists, as well as image
2021-02-10 10:51:30 +03:00
9dea45a7af readStream in FromHtml
added gumbo parser, because incoming html causes errors in CStringBuilder
2021-02-09 14:40:54 +03:00
67550a22e4 Fix crashes on call js method (if exception works)
(cherry picked from commit 32847c4e3e)
2021-02-09 12:13:42 +03:00
2818c8d69c AddAudioTransition 2021-02-08 18:41:56 +03:00
3a726eb21c add FromHtml 2021-02-08 15:11:43 +03:00
2fe44439e3 add anim sound. 2021-02-08 14:41:48 +03:00
84871ecb52 Merge pull request #487 from ONLYOFFICE/feature/mac_arm64
.
2021-02-05 16:07:07 +03:00
9b226e3620 add DOCTYPE 2021-02-05 14:02:53 +03:00
00443fd028 docx to epub
create cover.html, toc.ncx. Generate UUID
2021-02-05 11:38:44 +03:00
d767500bd2 create content.opf
UUID on Linux not generated
2021-02-05 09:41:16 +03:00
f4dec5d70d fix rId 2021-02-04 19:05:55 +03:00
6941af13d8 ImageDirectory for convert to epub 2021-02-04 09:04:44 +03:00
5c0c6c77e8 add RIDManager in CRelsGenerator. Need to move in CmediaGenerator or Converter 2021-02-03 18:36:26 +03:00
922211cf4b add test fromHtml 2021-02-03 16:32:12 +03:00
565bb49ec1 add RIDManager, not full 2021-02-03 15:23:36 +03:00
74e5d05ea5 Merge branch 'feature/docx2html_tmp' into html2epub 2021-02-03 14:38:33 +03:00
32847c4e3e Fix crashes on call js method (if exception works) 2021-02-03 14:35:02 +03:00
ef57efa56b add index.html 2021-02-03 13:32:18 +03:00
ab2829c701 Merge branch 'feature/docx2html_tmp' into html2epub 2021-02-03 08:54:26 +03:00
bc380dd214 Fix build with clang 2021-02-02 21:47:41 +03:00
3340ebb712 Merge pull request #482 from ONLYOFFICE/develop
Develop
2021-02-02 21:24:38 +03:00
01bf276697 Fix bug with hatch brush (support saving RGBA data in CBgraFrame) 2021-02-02 21:23:02 +03:00
bac1e670e9 add some codemark for future function 2021-02-02 18:48:59 +03:00
9a4e764709 core.xml to content.opf 2021-02-02 17:20:01 +03:00
3e51e72f84 FromHtml
formation of basic files for epub
2021-02-02 14:02:19 +03:00
30d0ea725d fix put_brushTexture 2021-02-02 14:01:25 +03:00
c4491e12c7 x2t - fix linux/android build 2021-02-02 13:44:03 +03:00
2707b768b1 add audio Relationship? but with bugs 2021-02-02 12:45:00 +03:00
297653733a . 2021-02-02 10:36:38 +03:00
3588900943 . 2021-02-02 02:28:17 +03:00
904561d1da Merge pull request #480 from ONLYOFFICE/develop
Develop
2021-02-01 21:24:57 +03:00
27c4b03b7a put_brushTexture Hatch
I managed to get a texture, but the color is incorrectly applied to it and I had to add code to ShapeDrawer.js
2021-02-01 18:44:30 +03:00
d135be231d trying to fix _rels in ppt/slide 2021-02-01 18:43:34 +03:00
7fbf763afd get native 2021-02-01 14:35:37 +03:00
d72257964d It can write audio in media folder 2021-02-01 14:35:15 +03:00
4c38d2ea54 . 2021-02-01 12:16:33 +03:00
428b161983 trying to save correct audio files 2021-01-29 18:40:43 +03:00
bd9e42ae78 put_brushTexture
attempts to fix put_brushTexture for patterns
2021-01-29 15:04:17 +03:00
c33c5d7b2e ImagesDirectory and FontsDirectory 2021-01-29 13:00:59 +03:00
c764cce0da _DEBUG and fix of p_dash
in rendering, for some reason, p_dash multiplied by a coefficient of 25.4 / dpi
2021-01-29 10:44:20 +03:00
af85c07dda fix of defects 2021-01-29 09:50:29 +03:00
81ef6f71c5 . 2021-01-29 02:23:50 +03:00
9fdfea5ff1 Tmp branch for "pre-merging" to develop 2021-01-28 19:40:04 +03:00
1c65f979b3 put_BrushGradient
implemented a gradient fill
2021-01-28 17:00:05 +03:00
312956853a GetTransform
Now arrows are drawn
2021-01-28 12:41:04 +03:00
06b1af167d fix put_FontName
The first letter always had the Arial font
2021-01-28 11:41:05 +03:00
ad102a4df8 SetTextPr and SetFontSlot
After implementing these functions, the text finally appeared
2021-01-28 11:00:09 +03:00
7535e4ccd5 . 2021-01-28 00:19:37 +03:00
9e8a52fac4 removed superfluous rId into ppt/slide/_rels 2021-01-27 18:28:19 +03:00
cc1f793745 SetTextPr and SetFontSlot
Need to implement these functions to set the font
2021-01-27 17:56:44 +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
b4b41956b6 added audio file to media folder in ppt directory 2021-01-27 11:01:12 +03:00
d9d815fc13 CommandDrawTextCHAR
so far, just black dots appear at the places of the letters
2021-01-26 17:05:36 +03:00
cd92c0d30a fix FillTextCode and IsNoSupportTextDraw 2021-01-26 13:20:06 +03:00
7c8c5b0b11 Merge pull request #471 from ONLYOFFICE/fix/bug47289
Fix bugs 47289 48178 47850
2021-01-25 19:24:15 +03:00
d8adb37d49 Revert "add CAudioElement"
This reverts commit e384c42230.
2021-01-25 18:40:46 +03:00
507cb10285 Revert "add CAudioElement"
This reverts commit a7e13594a3.
2021-01-25 18:40:45 +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
7a9fbdeef7 Merge branch 'feature/ppt_4' of https://github.com/ONLYOFFICE/core into feature/ppt_4 2021-01-22 19:10:39 +03:00
a7e13594a3 add CAudioElement 2021-01-22 19:09:03 +03:00
e384c42230 add CAudioElement 2021-01-22 18:38:50 +03:00
e72e48e587 fix p_width
Must always be divided by 1000
2021-01-22 16:19:26 +03:00
387a8584d4 CoordTransformOffset
Due to the initial offset, the subsequent computed transform is correctly applied to the shape
2021-01-22 14:50:18 +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
fccaaff6f0 fix p_width and drawpath
the brush thickness needed to be divided by 1000. drawpath for 256+1 needed to be divided into df and ds
2021-01-21 18:24:48 +03:00
30c2d81bbd [x2t] Add font theme properties to Editor.bin 2021-01-20 20:03:27 +03:00
f5384892a3 brush alpha not null
It was because of this that everything turned black
2021-01-20 15:31:00 +03:00
88ab98b717 picture painted with brush
attempts to paint pictures with a brush
2021-01-20 14:42:34 +03:00
b8b16ecbe8 Fixed bugs 2021-01-19 21:48:38 +03:00
beb147f15f tab to space 2021-01-19 19:03:52 +03:00
662c733f30 fix put_brushTexture
put_brushTexture should paint the picture
2021-01-19 19:01:49 +03:00
3bf7fe6a9f data base64
Adding information data: image / png; base64, at the beginning of the base64 code
2021-01-19 10:13:03 +03:00
76ef6b792f Refactoring and fixed bugs 2021-01-18 21:58:31 +03:00
a9947bae7d add anim, and need to fix audio rels 2021-01-18 16:07:23 +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
39ce0299e5 trying to fix bugs 2021-01-15 22:39:30 +03:00
d0207ce5b8 change FillAnimClr() args 2021-01-15 12:56:44 +03:00
2d1db83892 BldP change for subEffect 2021-01-15 12:48:45 +03:00
5023e7c206 Merge commit '260765b17ae0621a9ae754d7225d27576738f0a9' into feature/ppt_4 2021-01-15 10:21:54 +03:00
6496ebd2e8 Intermediate Commit 2021-01-14 21:48:04 +03:00
25de67ba5e maybe will be work, without animBg 2021-01-14 18:13:03 +03:00
090c826a42 Merge branch 'feature/ppt_4' of https://github.com/ONLYOFFICE/core into feature/ppt_4 2021-01-14 18:02:53 +03:00
ad2b830e5a Trying to fix empty BldP 2021-01-14 18:01:46 +03:00
1cc38d78ac fix embed --> r:embed 2021-01-14 15:50:01 +03:00
d26620973b Reduced the number of unused styles 2021-01-13 20:59:30 +03:00
2a339b4bf1 fix embed --> r:embed 2021-01-13 18:24:57 +03:00
68ef4a93c3 Add FillAudio, but it has bug with node name 2021-01-13 16:48:18 +03:00
4558e96832 Change FillAnim() 2021-01-13 12:27:10 +03:00
4f6a50abed add small FillCBhvr() 2021-01-13 11:41:11 +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
0567e7f3db New class container for animation. And need to delete old files 2021-01-11 18:43:58 +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
5eb7e2f5fc more params for p:video 2020-12-29 18:40:01 +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
c841a7249c fix type of image 2020-12-25 11:42:02 +03:00
d2fb37c220 fix drawpath 2020-12-25 11:19:23 +03:00
762266238e x2t - fix bug #48026 2020-12-24 13:36:18 +03:00
6537d98c91 asc_nativeCalculateFile 2020-12-21 10:24:44 +03:00
0afacbada8 Intermediate commit 2020-12-18 21:48:59 +03:00
4306bdc73f fix toDataURL 2020-12-18 10:48:22 +03:00
3a4c034a71 Added calculation of repetitions of the "id" and "style" fields in selectors 2020-12-17 20:20:08 +03:00
bb216f0734 add p:video 2020-12-17 18:33:27 +03:00
6b6c041437 add p:video 2020-12-17 18:00:15 +03:00
fe67134931 add p:cmd and fix CRecordTimeCommandBehaviorAtom 2020-12-17 15:38:43 +03:00
bd7ef4eb6b ShapeToImageConverter
ShapeToImageConverter function that should draw shape
2020-12-17 12:12:46 +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
ba5acddccf Merge branch 'feature/docxtohtml' into feature/v8_canvas_context 2020-12-16 15:04:56 +03:00
4046563ab1 return toDataURL
returned an implementation with a Base64 return value
2020-12-16 15:04:10 +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
d798eb9e5b sImagesDirectory
images are lost when converting to html
2020-12-15 18:52:40 +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
2fe4615472 Merge branch 'feature/docxtohtml' into feature/v8_canvas_context 2020-12-15 15:34:53 +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
760c74a6d1 index and delete media
Renamed to index.html and removed Editor.bin and media folder if empty
2020-12-15 12:11:41 +03:00
ca29772f09 Merge branch 'feature/docxtohtml' into feature/v8_canvas_context 2020-12-15 11:17:05 +03:00
a88bf6c81d docx to html_zip 2020-12-15 11:15:09 +03:00
60c99483c4 Refactoring and fixed bugs 2020-12-14 20:44:32 +03:00
0d178d7bbf docx to html
Converting docx to html.
The html is assumed to be 518, that is, the code AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_HTMLR.
2020-12-14 18:31:06 +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
aa7ad9cbae fix doctrenderer
Commented out command-by-command code execution, changed to execute the entire file
2020-12-14 13:01:53 +03:00
89a53628ec add LoadAutoNumbering 2020-12-14 12:29:09 +03:00
8a42c6077d Merge remote-tracking branch 'origin/hotfix/v6.1.1' into feature/v8_canvas_context 2020-12-14 11:11:29 +03:00
d541b11138 Fixed bugs 2020-12-11 20:18:06 +03:00
e065bd72ff Fixed bugs 2020-12-10 20:18:23 +03:00
a21773976e put_bruchTextureMode and put_TextureBoundsEnabled 2020-12-10 13:31:10 +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
e3da3b07bb line properties
The put_LineJoin, get_LineJoin, put_TextureBounds, GetlineWidth and DrawPath functions have been created.
2020-12-08 14:22:53 +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
266e1f086f Merge branch 'feature/mac87' into feature/v8_canvas_context 2020-12-07 13:55:40 +03:00
064923a20e fix merge mac87 2020-12-07 13:42:20 +03:00
1ef600c39c Merge branch 'master' into feature/v8_canvas_context 2020-12-07 11:56:25 +03:00
b048ddf795 fix merge 2020-12-07 11:56:02 +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
a1f5036df8 GetBrushColor and TransformPoint
GetBrushColor is analogous to GetPenColor. TransformPoint returns the transform of the point.
2020-12-04 18:32:19 +03:00
b4d62b7ef4 Refactoring sc 2020-12-04 15:08:44 +03:00
489f1c8ad1 put_BrushGradient
put_BrushGradient contains colors as color.RGBA.R instead of R.
2020-12-03 17:56:39 +03:00
46d2242267 put_BrushTextureAlpha and toDataURL
toDataURL returns the path to the saved file. put_BrushGradient takes points converted to ...
2020-12-03 16:34:22 +03:00
0c2a5ee0c7 Intermediate commit 2020-12-02 19:15:46 +03:00
627976f193 put_brushTexture
Pass put_brushTexture to the path to the brush texture
2020-12-02 18:36:10 +03:00
19ed94d50e GetPenColor
In ChapeDrawer, the pen color is used for the brush. Created a function to get an object with RGBA fields
2020-12-02 18:09:41 +03:00
9706f5a530 add Numbering and check xml, BUT Program cannot finish just crash 2020-12-02 18:02:47 +03:00
ae43020323 ArrayPoints and TextureFillTransformScale
Using ArrayPoints in ShapeDrawer requires it in CNativeGraphics. Similar to TextureFillTransformScale. Variable changes added to functions.
2020-12-01 16:39:27 +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
75d2d3a149 get 2020-11-25 15:23:53 +03:00
e32d6e2d43 font 2020-11-24 14:22:14 +03:00
49cc7c0f21 DrawFootnoteRect 2020-11-23 18:26:57 +03:00
7099e5716a DrawPolygon 2020-11-23 18:04:15 +03:00
a9841ebc4d clipping functions and test draw functions 2020-11-20 17:11:50 +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
450957e5b1 DrawLockObjectRect 2020-11-18 18:47:03 +03:00
a70c3bf2b7 DrawLockParagraph 2020-11-18 17:24:33 +03:00
bcfba8dbd9 fix DrawStringASCII and test text-function 2020-11-16 18:44:57 +03:00
4bb58257a8 DrawStringASCII 2020-11-16 14:33:32 +03:00
56bca855c3 add RT_Drawing 2020-11-13 23:21:29 +03:00
173fef2766 test functions text 2020-11-13 17:17:42 +03:00
e74469cf0e Can read autoNumbering paragraph 2020-11-12 23:30:51 +03:00
e4209af801 fix NULL 2020-11-12 10:02:42 +03:00
9b975d3dc2 fix merge 2020-11-06 12:29:50 +03:00
fee0125cdc Merge branch 'develop' into feature/v8_canvas_context 2020-11-06 11:29:30 +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
3e13934967 test text function 2020-11-02 13:07:38 +03:00
c05ada24fd add CRecordPP9SlideBinaryTagExtension 2020-10-30 18:35:01 +03:00
112ed70c8d test function 2020-10-30 17:10:48 +03:00
abc8ee4b21 first test 2020-10-30 14:17:01 +03:00
fc7891b176 first test 2020-10-29 18:03:32 +03:00
db126f2a92 test 2020-10-29 15:23:35 +03:00
9672ebca02 trying to understand 2020-10-29 15:16:08 +03:00
601863ebd5 clipping functions. begin 2020-10-28 17:56:03 +03:00
8345e8bd06 trying to understand 2020-10-28 17:45:00 +03:00
7a337f7c04 refactoring 2020-10-28 14:49:27 +03:00
6022565456 fix bug 2020-10-27 18:14:26 +03:00
fa9843582a static directory 2020-10-27 17:10:31 +03:00
7d36820e4c class -> struct 2020-10-27 15:55:22 +03:00
b520ed6c95 fix build 2020-10-27 13:15:15 +03:00
b311b6782b all functions 2020-10-27 12:58:37 +03:00
c06112d654 . 2020-10-26 19:43:11 +03:00
f53acc2326 start adding records and classes for paragraph 2020-10-26 18:42:53 +03:00
90e75e6ba9 fix bug 2020-10-26 18:34:08 +03:00
dc13500fb1 more methods 2020-10-26 18:20:26 +03:00
64f2bdc90b part of functions 2020-10-26 15:19:43 +03:00
8cf3db2980 NativeGraphics 2020-10-23 18:29:18 +03:00
6966ef8dc1 embed separately from js_internal 2020-10-22 17:56:26 +03:00
4ad9aea6f5 . 2020-10-21 14:37:25 +03:00
47ab073e49 nobody knows about v8 2020-10-21 14:08:30 +03:00
cbca4decf9 refactoring 2020-10-20 18:19:18 +03:00
412391a56f support windows xp 2020-10-20 17:16:34 +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
bb516d11cd to get together 2020-10-20 09:45:27 +03:00
f303a8d5e0 fix bug 2020-10-19 18:45:20 +03:00
883dda0f3f Fix CRecordTimeVariant for p:anim 2020-10-19 18:33:38 +03:00
24c13964e6 remove unnecessary 2020-10-19 17:55:22 +03:00
cd0f35999b fix bugs 2020-10-19 13:07:37 +03:00
ceeeb7b97f "doctrenderer like CJS" end 2020-10-19 12:02:32 +03:00
e3be6d68ef CJS continue 2020-10-16 18:49:20 +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
0d61c3cacb "docrenderer like CJS" continue 2020-10-16 17:17:19 +03:00
dbd7ed3e1c "doctrenderer like CJS" begin 2020-10-15 18:29:13 +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
02fb5d5068 property get set 2020-10-14 17:20:40 +03:00
08d71c1f4a cripple 2020-10-14 16:04:18 +03:00
688e00205b implementation of CJS methods 2020-10-14 13:31:10 +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
a679d5a968 "graphics like CJSClass" begin 2020-10-13 18:17:13 +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
d93357a34e fix bug: null reference 2020-10-13 11:20:47 +03:00
9bd4669d99 wrapper all propertys 2020-10-12 18:42:17 +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
f74105a8ad wrapper all functions 2020-10-12 15:15:52 +03:00
8aed2ec3f0 wrapper: canvas state, images, text 2020-10-12 12:31:19 +03:00
38f9bec1a0 Merge remote-tracking branch 'origin/feature/ppt' into feature/ppt_1 2020-10-12 11:35:20 +03:00
362b5355e1 new methods 2020-10-09 18:47:46 +03:00
c15e096f6d add p:animClr 2020-10-09 17:38:31 +03:00
9eeff29b5a CGraphics begin functions 2020-10-09 17:12:34 +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
32faf79a84 empty classes 2020-10-08 18:29:17 +03:00
63e45f1bca without library 2020-10-08 17:26:33 +03:00
f6d5685d66 rename 2020-10-08 15:56:46 +03:00
71fd5b74f6 property set 2020-10-08 14:16:25 +03:00
71b1212e0b property name 2020-10-08 12:37:50 +03:00
92fd37db8b fix bug 2020-10-08 12:20:28 +03:00
fffdfeacbd fix bug 2020-10-08 11:58:57 +03:00
20dfc34567 v8 simple class 2020-10-08 11:43:28 +03:00
63d3db639a class. begin 2020-10-07 18:01:05 +03:00
0656582552 fix bug with isolate 2020-10-07 14:59:05 +03:00
0c339b640a simple project 2020-10-07 13:30:00 +03:00
4c917baaf4 empty project 2020-10-06 17:44:26 +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
1316 changed files with 37106 additions and 165396 deletions

View File

@ -80,7 +80,7 @@ public:
}
void WriteUInt16(unsigned short val)
{
if (m_Data && (m_Position + sizeof(unsigned short) <= m_Size))
if (m_Data)
{
((unsigned short *)(m_Data + m_Position))[0] = val;
m_Position += sizeof(unsigned short);
@ -113,7 +113,7 @@ public:
}
void WriteInt32(_INT32 val)
{
if (m_Data && (m_Position + sizeof(_INT32) <= m_Size))
if (m_Data)
{
((_INT32 *)(m_Data + m_Position))[0] = val;
m_Position += sizeof(_INT32);
@ -133,7 +133,7 @@ public:
}
void WriteByte(unsigned char val)
{
if (m_Data && (m_Position + 1 <= m_Size))
if (m_Data)
{
m_Data[m_Position] = val;
m_Position += 1;
@ -141,7 +141,7 @@ public:
}
void WriteUInt32(_UINT32 val)
{
if (m_Data && (m_Position + sizeof(_UINT32) <= m_Size))
if (m_Data)
{
((_UINT32 *)(m_Data + m_Position))[0] = val;
m_Position += sizeof(_UINT32);
@ -190,7 +190,7 @@ public:
}
void WriteBytes(unsigned char* pData, int size)
{
if (m_Data && (m_Position + size <= m_Size))
if (m_Data)
{
memcpy(m_Data + m_Position, pData, size);
m_Position += size;

View File

@ -352,10 +352,10 @@ namespace DocFileFormat
case sprmOldSCcolumns:
case sprmSCcolumns:
{
m_nColumns = static_cast<int> (FormatUtils::BytesToInt16 (iter->Arguments, 0, iter->argumentsSize) + 1);
m_nColumns = static_cast<int> (FormatUtils::BytesToInt16 (iter->Arguments, 0, iter->argumentsSize) + 1);
RELEASEARRAYOBJECTS (m_arrSpace);
m_arrSpace = new short [m_nColumns];
m_arrSpace = new short [m_nColumns];
appendValueAttribute (&cols, L"w:num", FormatUtils::IntToWideString (m_nColumns));
}
@ -388,13 +388,10 @@ namespace DocFileFormat
if (m_nColumns)
{
if (NULL == m_arrSpace)
m_arrSpace = new short[m_nColumns];
m_arrSpace = new short[m_nColumns];
unsigned char nInd = iter->Arguments[0];
if (nInd < m_nColumns)
{
m_arrSpace[nInd] = FormatUtils::BytesToInt16(iter->Arguments, 1, iter->argumentsSize);
}
unsigned char nInd = iter->Arguments[0];
m_arrSpace [nInd] = FormatUtils::BytesToInt16 (iter->Arguments, 1, iter->argumentsSize);
}
}break;

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

@ -49,7 +49,7 @@ namespace cpdoccore {
namespace odf_writer {
static int style_family_counts_[1024]={};//согласно количеству разных стилей
static int style_family_counts_[26]={};//согласно количеству разных стилей
void calc_paragraph_properties_content(std::vector<style_paragraph_properties*> & parProps, paragraph_format_properties * result)

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())
@ -444,8 +444,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

@ -88,7 +88,7 @@ PptxConverter::PptxConverter(const std::wstring & path, bool bTemplate)
pptx_document = new PPTX::Document();
if (!pptx_document->isValid(oox_path.GetPath())) // true ???
{
delete pptx_document; pptx_document = NULL;
delete pptx_document;
return;
}
@ -97,7 +97,7 @@ PptxConverter::PptxConverter(const std::wstring & path, bool bTemplate)
smart_ptr<PPTX::Presentation> presentation_ptr = pptx_document->Get(OOX::Presentation::FileTypes::Presentation).smart_dynamic_cast<PPTX::Presentation>();
if (!presentation_ptr.is_init())
{
delete pptx_document; pptx_document = NULL;
delete pptx_document;
return;
}
presentation = presentation_ptr.GetPointer();
@ -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,340 @@ 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/Animation.h \
../PPTXWriter/ridmanager.h \
../Reader/ClassesAtom.h \
../Reader/CommonZLib.h \
../Reader/PPTDocumentInfo.h \
@ -39,10 +372,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 +473,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 +486,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 +502,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 +523,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 +539,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 +578,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 +605,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 +612,46 @@ 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/Animation.cpp \
../PPTXWriter/ridmanager.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

@ -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 "../../../ASCOfficePPTXFile/PPTXFormat/Logic/Timing/Timing.h"
#include "../../../ASCOfficePPTXFile/PPTXFormat/Logic/Timing/BldP.h"
#include "../../../ASCOfficePPTXFile/PPTXFormat/Logic/Timing/Anim.h"
#include "../../../ASCOfficePPTXFile/PPTXFormat/Logic/Timing/AnimClr.h"
#include "../../../ASCOfficePPTXFile/PPTXFormat/Logic/Timing/AnimEffect.h"
#include "../../../ASCOfficePPTXFile/PPTXFormat/Logic/Timing/AnimMotion.h"
#include "../../../ASCOfficePPTXFile/PPTXFormat/Logic/Timing/AnimRot.h"
#include "../../../ASCOfficePPTXFile/PPTXFormat/Logic/Timing/AnimScale.h"
#include "../../../ASCOfficePPTXFile/PPTXFormat/Logic/Timing/AnimVariant.h"
#include "../../../ASCOfficePPTXFile/PPTXFormat/Logic/Timing/Audio.h"
#include "../../../ASCOfficePPTXFile/PPTXFormat/Logic/Timing/CBhvr.h"
#include "../../../ASCOfficePPTXFile/PPTXFormat/Logic/Timing/ChildTnLst.h"
#include "../../../ASCOfficePPTXFile/PPTXFormat/Logic/Timing/Cmd.h"
#include "../../../ASCOfficePPTXFile/PPTXFormat/Logic/Timing/CondLst.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/Logic/Timing/Video.h"
#include "../Records/SlideProgTagsContainer.h"
#include "../Records/SoundCollectionContainer.h"
#include "../Records/Animations/AnimationInfoContainer.h"
namespace PPT_FORMAT
{
struct SOldAnimation
{
UINT shapeId;
CRecordAnimationInfoContainer* anim;
// There will be additional records for animation here;
};
// Extenstion for CRecordExtTimeNodeContainer
class Animation
{
public:
Animation(CRecordPP10SlideBinaryTagExtension *pPPT10Ext, const std::vector<SOldAnimation> &oldAnim) :
m_pPPT10(pPPT10Ext),
m_arrOldAnim(oldAnim),
m_pSoundContainer(nullptr),
m_cTnId(1),
m_pBldLst(nullptr),
m_currentBldP(nullptr)
{
}
// Not delete any pointers
CRecordPP10SlideBinaryTagExtension *m_pPPT10; // Must be it xor (maybe 'or' i dunno)
std::vector<SOldAnimation> m_arrOldAnim; // this one
CRecordSoundCollectionContainer *m_pSoundContainer; // Optional
// Call it and only it to convert animation
void Convert(PPTX::Logic::Timing &oTiming);
private:
void FillTnLst(
CRecordExtTimeNodeContainer *pETNC,
PPTX::Logic::TnLst &oTnLst);
void FillCTn(
CRecordExtTimeNodeContainer *pETNC,
PPTX::Logic::CTn &oCTn);
void FillTnChild(
CRecordExtTimeNodeContainer *pETNC,
PPTX::Logic::TimeNodeBase &oChild);
void FillAnim(
CRecordTimeAnimateBehaviorContainer *pTimeAnimateBehavior,
PPTX::Logic::Anim &oAnim);
void FillAnimClr(
CRecordTimeColorBehaviorContainer *pColor,
CRecordTimePropertyList4TimeNodeContainer *pProp,
PPTX::Logic::AnimClr &oAnimClr);
void FillAnimEffect(
CRecordExtTimeNodeContainer *pETNC,
PPTX::Logic::AnimEffect &oAnim);
void FillAnimMotion(
CRecordExtTimeNodeContainer *pETNC,
PPTX::Logic::AnimMotion &oAnim);
void FillAnimRot(
CRecordExtTimeNodeContainer *pETNC,
PPTX::Logic::AnimRot &oAnim);
void FillAnimScale(
CRecordExtTimeNodeContainer *pETNC,
PPTX::Logic::AnimScale &oAnim);
void FillAudio(
PPT_FORMAT::CRecordClientVisualElementContainer *pCVEC,
PPTX::Logic::Audio &oAudio);
void FillCmd(
CRecordExtTimeNodeContainer *pETNC,
PPTX::Logic::Cmd &oCmd);
void FillVideo(
CRecordExtTimeNodeContainer *pETNC,
PPTX::Logic::Video &oVideo);
void FillPar(
CRecordExtTimeNodeContainer *pETNC,
PPTX::Logic::Par &oPar);
void FillSeq(
PPT_FORMAT::CRecordExtTimeNodeContainer *pETNC,
PPTX::Logic::Seq &oSec);
void FillCBhvr(
CRecordExtTimeNodeContainer *pETNC,
PPTX::Logic::CBhvr &oBhvr);
void FillCBhvr(
CRecordTimeBehaviorContainer *pBhvr,
PPTX::Logic::CBhvr &oBhvr);
void FillCBhvr(
int dur, UINT spid, std::wstring attrname, int delay,
PPTX::Logic::CBhvr &oBhvr);
void FillCond(
PPT_FORMAT::CRecordTimeConditionContainer *oldCond,
PPTX::Logic::Cond &cond);
void FillBldLst(
PPT_FORMAT::CRecordBuildListContainer *pBLC,
PPTX::Logic::BldLst &oBL);
void FillBldP(
PPT_FORMAT::CRecordParaBuildContainer *pPBC,
PPTX::Logic::BldP &oBP);
void FillSet(
PPT_FORMAT::CRecordExtTimeNodeContainer *pETNC,
PPTX::Logic::Set& oSet);
void FillSubTnLst (
std::vector<CRecordSubEffectContainer*> &vecSEC,
PPTX::Logic::TnLst &oSubTnLst);
void FillCondLst(
std::vector<CRecordTimeConditionContainer*>& oCondVec,
PPTX::Logic::CondLst &oCondLst);
void FillCTn(
CRecordTimePropertyList4TimeNodeContainer *pProp,
PPTX::Logic::CTn &oCTn);
// void SubEffectToETNC(
// const CRecordSubEffectContainer *pSub,
// CRecordExtTimeNodeContainer *pETNC);
// For old animation.
void InitTimingTags(PPTX::Logic::Timing &oTiming); // Initialize non-exist (in 95-97 format) struct
void FillOldAnim(SOldAnimation& oldAnim, PPTX::Logic::TimeNodeBase &oTimeNodeBase);
private:
unsigned m_cTnId;
PPTX::Logic::BldLst *m_pBldLst; // Do not delete
PPTX::Logic::BldP *m_currentBldP;
};
}

File diff suppressed because it is too large Load Diff

View File

@ -32,10 +32,14 @@
#pragma once
#include "ImageManager.h"
#include "ridmanager.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, CRelsGenerator &oRels, int nIndexSlide); // 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

@ -34,12 +34,16 @@
#ifndef DISABLE_FILE_DOWNLOADER
#include "../../../Common/FileDownloader/FileDownloader.h"
#endif
#include "ridmanager.h"
namespace PPT_FORMAT
{
class CMediaManager
{
private:
public:
RIDManager m_ridManager;
private:
std::map<std::wstring, std::wstring> m_mapMedia;
long m_lIndexNextAudio;
@ -139,7 +143,17 @@ namespace PPT_FORMAT
m_mapMedia[strInput] = strMediaName;
return strMediaName;
}
inline void WriteAudioCollection(const std::vector<CExFilesInfo>& audioCont)
{
if (audioCont.empty()) return;
for (auto& audio : audioCont)
{
auto pathAudio = GenerateAudio(audio.m_strFilePath);
m_ridManager.addSoundPath(pathAudio);
}
}
inline bool IsNeedDownload(const std::wstring& strFile)
{
int n1 = strFile.find(L"www");
@ -172,11 +186,11 @@ namespace PPT_FORMAT
}
class CRelsGenerator
{
private:
PPT_FORMAT::CStringWriter m_oWriter;
private:
PPT_FORMAT::CStringWriter m_oWriter;
int m_lNextRelsID;
std::map<std::wstring, int> m_mapMediaRelsID;
CMediaManager* m_pManager;
CMediaManager* m_pManager;
std::map<std::wstring, std::wstring> m_mapHyperlinks;
public:
@ -339,7 +353,7 @@ namespace PPT_FORMAT
std::wstring strMedia = m_pManager->FindMedia(strMediaPath);
if (strMedia.empty()) return WriteHyperlinkMedia(CorrectXmlString3(strMediaPath), true, true);
return WriteHyperlinkMedia(strMedia, false, true);
return WriteHyperlinkMedia(strMedia, false, false); // changed
}
inline std::wstring WriteImage(const std::wstring& strImagePath)
{
@ -376,5 +390,7 @@ namespace PPT_FORMAT
return WriteHyperlinkVideo(strVideo, false);
}
}
};
inline int getRId()const{return m_lNextRelsID;}
};
}

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)
@ -1626,7 +1638,7 @@ std::wstring PPT_FORMAT::CShapeWriter::ConvertShape()
CImageElement* pImageElement = dynamic_cast<CImageElement*>(m_pElement.get());
CGroupElement* pGroupElement = dynamic_cast<CGroupElement*>(m_pElement.get());
CShapeElement* pShapeElement = dynamic_cast<CShapeElement*>(m_pElement.get());
if (pImageElement) return ConvertImage();
if (pGroupElement) return ConvertGroup();
@ -2721,4 +2733,4 @@ HRESULT PPT_FORMAT::CShapeWriter::put_ClipMode(const LONG& lMode)
{
m_lClipMode = lMode;
return S_OK;
}
}

View File

@ -0,0 +1,115 @@
#include "ridmanager.h"
#include "../Records/SoundContainer.h"
#include <map>
#include <cmath>
RIDManager::RIDManager() :
m_RID(1),
m_haveSetedSoundRIDCollection(false)
{
}
std::vector<std::wstring> RIDManager::getPathesForSlideRels()
{
std::vector<std::wstring> paths;
if (m_arrRID.empty())
return paths;
std::map<_UINT32, _UINT32*> mapRIDs; // first value is old rId : second new rId
unsigned i = 0;
for (auto* pRID : m_arrRID)
{
auto searchIter(mapRIDs.find(*pRID));
if (searchIter == mapRIDs.end())
{
mapRIDs.insert(std::make_pair(*pRID, pRID));
*pRID = m_RID++;
}
else
*pRID = *(searchIter->second);
if (i < m_soundRIDCollection.size())
*(m_soundRIDCollection[i++]) = std::to_wstring(*pRID);
}
for (auto RID : mapRIDs)
paths.push_back(m_soundPaths[RID.first - 1]);
return paths;
}
void RIDManager::setRIDfromAnimation(Animation& anim)
{
clearRIDSforSlide();
setSoundRIDCollection(anim.m_pSoundContainer);
if (anim.m_pPPT10)
searchSound(anim.m_pPPT10->m_pExtTimeNodeContainer);
else if (!anim.m_arrOldAnim.empty())
searchSound(anim.m_arrOldAnim);
}
void RIDManager::setSoundRIDCollection(CRecordSoundCollectionContainer* pColection)
{
if (!pColection) return;
if (!m_haveSetedSoundRIDCollection)
{
for (auto* pRec : pColection->m_arRecords)
{
auto soundCont = dynamic_cast<CRecordSoundContainer*>(pRec);
if (soundCont)
{
auto recStr = dynamic_cast<CRecordCString*>(soundCont->m_arRecords[2]);
if (recStr)
m_soundRIDCollection.push_back(&(recStr->m_strText));
}
}
m_haveSetedSoundRIDCollection = true;
}
}
void RIDManager::addSoundPath(std::wstring& path)
{
m_soundPaths.push_back(path);
}
void RIDManager::searchSound (CRecordExtTimeNodeContainer* const pETNC)
{
if (!pETNC) return;
if (pETNC->m_haveClientVisualElement && pETNC->m_pClientVisualElement)
addSound(pETNC->m_pClientVisualElement);
for (auto* pSubEffect : pETNC->m_arrRgSubEffect)
addSound(pSubEffect->m_pClientVisualElement);
for (auto* pETNCChildren : pETNC->m_arrRgExtTimeNodeChildren)
searchSound(pETNCChildren);
}
void RIDManager::searchSound (const std::vector<SOldAnimation> &arrAnim)
{
for (auto anim : arrAnim)
{
if (anim.anim->m_AnimationAtom.m_fSound)
m_arrRID.push_back(&(anim.anim->m_AnimationAtom.m_SoundIdRef));
}
}
void RIDManager::addSound(CRecordClientVisualElementContainer* const pCVEC)
{
if (!pCVEC) return;
if (pCVEC->m_bVisualShapeAtom)
m_arrRID.push_back(&(pCVEC->m_oVisualShapeAtom.m_nObjectIdRef));
}
void RIDManager::clearRIDSforSlide()
{
m_arrRID.clear();
m_arrSoundRef.clear();
m_RID = 1;
}

View File

@ -0,0 +1,60 @@
#ifndef RIDMANAGER_H
#define RIDMANAGER_H
#include "Animation.h"
// This class is heeded for rId audio in the first.
// And later maybe will be used for video.
class RIDManager
{
public:
RIDManager();
// This methods take all rid by ref and correct it
// Look at the example
/*
It for animation
we have rIDs in ppt ETNC | we need (add some constants(1) and rewrite array)
1 slide 1 2 3 2 4 1 1 1 slide 2 3 4 3 5 2 2
2 slide 3 3 5 6 6 2 slide 2 2 3 4 4
3 slide 7 3 slide 2
we have soundCollection. It's an array [1,2,3,4,5,6,7] with rIDs inside
|
we need new arrays with [1 2 3 4], [3 5 6], [7]. It for _rels
and write in _rels (rId : assciate with audio №)
1 rels 2:1 3:2 4:3 5:4
2 rels 2:3 3:5 4:6
3 rels 2:7
*/
// It sets in first
void addSoundPath(std::wstring& path);
void setRIDfromTransitions(int &soundRID);
void setRIDfromAnimation(Animation& anim);
void setRID(int RID) // It's num was added to output //// add some constants(1)
{m_RID = RID;}
std::vector<std::wstring> getPathesForSlideRels(); // Correct RIDs and get paths for rels in current slide
private:
// It set once
void setSoundRIDCollection(CRecordSoundCollectionContainer* pColection);
void searchSound (CRecordExtTimeNodeContainer* const pETNC);
void searchSound (const std::vector<SOldAnimation> &arrAnim);
void addSound(CRecordClientVisualElementContainer* const pCVEC);
void clearRIDSforSlide();
private:
// for input --> rewrite --> output
std::vector<_UINT32*> m_arrRID; // It's for one slide animation
std::vector<_UINT32*> m_arrSoundRef; // It's for one slide _rels
int m_RID;
bool m_haveSetedSoundRIDCollection;
std::vector<std::wstring*> m_soundRIDCollection; // It sets once
std::vector<std::wstring > m_soundPaths; // It sets once
};
#endif // RIDMANAGER_H

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

@ -56,7 +56,7 @@ protected:
bool ReadCurrentUser(POLE::Stream *pStm);
void ReadEncryptedSummary();
void ReadDocumentSummary();
void ReadPictures();
void ReadPictures();
private:
bool m_bDualStorage;

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,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 "../Enums/_includer.h"
namespace PPT_FORMAT
{
class CRecordTimeCommandBehaviorAtom : public CUnknownRecord
{
public:
CRecordTimeCommandBehaviorAtom ()
{
}
~CRecordTimeCommandBehaviorAtom()
{
}
void ReadFromStream(SRecordHeader &oHeader, POLE::Stream *pStream) override
{
m_oHeader = oHeader;
_UINT32 flags = StreamUtils::ReadLONG(pStream);
m_fTypePropertyUsed = ( 0x01 == ( 0x01 & (flags) ) );
m_fCommandPropertyUsed = ( 0x02 == ( 0x02 & (flags) ) );
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 = ( 0x04 == ( 0x04 & ((BYTE)src) ) );
m_fDirectionPropertyUsed = ( 0x08 == ( 0x08 & ((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 = ( 0x04 == ( 0x04 & ((BYTE)src) ) );
m_fZoomContentsUsed = ( 0x08 == ( 0x08 & ((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;
};
}

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 "TimeSetBehaviorAtom.h"
#include "TimeBehaviorContainer.h"
#include "TimeVariant.h"
namespace PPT_FORMAT
{
class CRecordTimeSetBehaviorContainer : 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 ReadHeader;
if ( ReadHeader.ReadFromStream(pStream) )
m_oSetBehaviorAtom.ReadFromStream ( ReadHeader, pStream );
//if ( m_oSetBehaviorAtom.m_bToPropertyUsed )
//{
if ( ReadHeader.ReadFromStream(pStream) )
m_oVarTo.ReadFromStream ( ReadHeader, pStream );
//}
if ( ReadHeader.ReadFromStream(pStream) )
m_oBehavior.ReadFromStream ( ReadHeader, pStream );
StreamUtils::StreamSeek ( lPos + m_oHeader.RecLen, pStream );
}
public:
CRecordTimeSetBehaviorAtom m_oSetBehaviorAtom;
CRecordTimeVariantString m_oVarTo;
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"
#include "TimeVariant.h"
namespace PPT_FORMAT
{
class CRecordTimeStringListContainer : public CUnknownRecord
{
public:
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;
CRecordTimeVariantString Element;
Element.ReadFromStream ( ReadHeader, pStream );
lCurLen += 8 + ReadHeader.RecLen;
m_arrRgChildRec.push_back ( Element );
}
StreamUtils::StreamSeek(lPos + m_oHeader.RecLen, pStream);
}
public:
std::vector <CRecordTimeVariantString> m_arrRgChildRec;
};
}

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
*
*/
#include "TimeVariant.h"
using namespace PPT_FORMAT;
CRecordTimeVariant* PPT_FORMAT::TimeVariantFactoryMethod(SRecordHeader & oHeader, POLE::Stream* pStream)
{
LONG lPos(0); StreamUtils::StreamPosition(lPos, pStream);
CRecordTimeVariant* pTimeVariant(nullptr);
CRecordTimeVariant tempTimeVariant;
tempTimeVariant.ReadFromStream(oHeader, pStream);
StreamUtils::StreamSeek(lPos, pStream);
switch (tempTimeVariant.m_Type)
{
case TL_TVT_Bool:
{
pTimeVariant = new CRecordTimeVariantBool;
pTimeVariant->ReadFromStream(oHeader, pStream);
break;
}
case TL_TVT_Int:
{
pTimeVariant = new CRecordTimeVariantInt;
pTimeVariant->ReadFromStream(oHeader, pStream);
break;
}
case TL_TVT_Float:
{
pTimeVariant = new CRecordTimeVariantFloat;
pTimeVariant->ReadFromStream(oHeader, pStream);
break;
}
case TL_TVT_String:
{
pTimeVariant = new CRecordTimeVariantString;
pTimeVariant->ReadFromStream(oHeader, pStream);
break;
}
}
StreamUtils::StreamSeek(lPos + oHeader.RecLen, pStream);
return pTimeVariant;
}

View File

@ -0,0 +1,293 @@
/*
* (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 CRecordTimeVariant : public CUnknownRecord
{
public:
virtual void ReadFromStream ( SRecordHeader & oHeader, POLE::Stream* pStream )
{
m_oHeader = oHeader;
m_Type = ( TimeVariantTypeEnum )StreamUtils::ReadBYTE ( pStream );
}
virtual ~CRecordTimeVariant(){}
virtual CRecordTimeVariant& operator=(const CRecordTimeVariant& src)
{
CUnknownRecord::operator=(src);
m_Type = src.m_Type;
return *this;
}
public:
TimeVariantTypeEnum m_Type;
};
class CRecordTimeVariantBool : public CRecordTimeVariant
{
public:
virtual void ReadFromStream ( SRecordHeader & oHeader, POLE::Stream* pStream )
{
CRecordTimeVariant::ReadFromStream(oHeader, pStream);
m_Value = ( 0x1 == StreamUtils::ReadBYTE ( pStream ) );
}
virtual CRecordTimeVariant& operator=(const CRecordTimeVariant& src)
{
CRecordTimeVariant::operator=(src);
m_Value = dynamic_cast<const CRecordTimeVariantBool&>(src).m_Value;
return *this;
}
virtual ~CRecordTimeVariantBool(){}
public:
bool m_Value;
};
class CRecordTimeVariantInt : public CRecordTimeVariant
{
public:
virtual void ReadFromStream ( SRecordHeader & oHeader, POLE::Stream* pStream )
{
CRecordTimeVariant::ReadFromStream(oHeader, pStream);
m_Value = StreamUtils::ReadDWORD ( pStream );
}
virtual CRecordTimeVariant& operator=(const CRecordTimeVariant& src)
{
CRecordTimeVariant::operator=(src);
m_Value = dynamic_cast<const CRecordTimeVariantInt&>(src).m_Value;
return *this;
}
virtual ~CRecordTimeVariantInt(){}
public:
_UINT32 m_Value;
};
class CRecordTimeVariantFloat : public CRecordTimeVariant
{
public:
virtual void ReadFromStream ( SRecordHeader & oHeader, POLE::Stream* pStream )
{
CRecordTimeVariant::ReadFromStream(oHeader, pStream);
m_Value = StreamUtils::ReadFLOAT ( pStream );
}
virtual CRecordTimeVariant& operator=(const CRecordTimeVariant& src)
{
CRecordTimeVariant::operator=(src);
m_Value = dynamic_cast<const CRecordTimeVariantFloat&>(src).m_Value;
return *this;
}
virtual ~CRecordTimeVariantFloat(){}
public:
FLOAT m_Value;
};
class CRecordTimeVariantString : public CRecordTimeVariant
{
public:
virtual void ReadFromStream ( SRecordHeader & oHeader, POLE::Stream* pStream )
{
CRecordTimeVariant::ReadFromStream(oHeader, pStream);
m_Value = StreamUtils::ReadStringW(pStream, m_oHeader.RecLen / 2 - 1);
StreamUtils::StreamSkip(2, pStream);
}
virtual CRecordTimeVariant& operator=(const CRecordTimeVariant& src)
{
CRecordTimeVariant::operator=(src);
m_Value = dynamic_cast<const CRecordTimeVariantString&>(src).m_Value;
return *this;
}
virtual ~CRecordTimeVariantString(){}
public:
std::wstring m_Value;
};
class CRecordTimeDisplayType : public CRecordTimeVariantInt
{
};
class CRecordTimeMasterRelType : public CRecordTimeVariantInt
{
};
class CRecordTimeSubType : public CRecordTimeVariantInt
{
};
class CRecordTimeEffectID : public CRecordTimeVariantInt
{
};
class CRecordTimeEffectDir : public CRecordTimeVariantInt
{
};
class CRecordTimeEffectType : public CRecordTimeVariantInt
{
};
class CRecordTimeAfterEffect : public CRecordTimeVariantBool
{
};
class CRecordTimeSlideCount : public CRecordTimeVariantInt
{
};
class CRecordTimeNodeTimeFilter : public CRecordTimeVariantString
{
};
class CRecordTimeEventFilter : public CRecordTimeVariantString
{
};
class CRecordTimeHideWhenStopped : public CRecordTimeVariantBool
{
};
class CRecordTimeGroupID : public CRecordTimeVariantInt
{
};
class CRecordTimeEffectNodeType : public CRecordTimeVariantInt
{
};
class CRecordTimePlaceholderNode : public CRecordTimeVariantBool
{
};
class CRecordTimeMediaVolume : public CRecordTimeVariantFloat
{
};
class CRecordTimeMediaMute : public CRecordTimeVariantBool
{
};
class CRecordTimeZoomToFullScreen : public CRecordTimeVariantBool
{
};
class CRecordTimeRuntimeContext : public CRecordTimeVariantString
{
};
class CRecordColorModel : public CRecordTimeVariantInt
{
};
class CRecordTimeColorModel: public CRecordTimeVariantInt
{
};
class CRecordTimeColorDirection : public CRecordTimeVariantInt
{
};
class CRecordTimeOverride : public CRecordTimeVariantInt
{
};
class CRecordTimePointsTypes : public CRecordTimeVariantString
{
};
class CRecordTagNameAtom : public CRecordTimeVariantString
{
};
class CRecordTagValueAtom : public CRecordTimeVariantString
{
};
CRecordTimeVariant* TimeVariantFactoryMethod(SRecordHeader & oHeader, POLE::Stream* 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 "../Enums/_includer.h"
#include "TimeVariant.h"
//-------------------------------------------------------------------------------
#define CREATE_BY_Instanse(RECORD_Instanse, CLASS_RECORD_NAME) \
case RECORD_Instanse: { pRecord = new CLASS_RECORD_NAME(); break; } \
//-------------------------------------------------------------------------------
namespace PPT_FORMAT
{
//TODO
class FactoryTimeVariant4Behavior
{
public:
static IRecord* createByInstanse(unsigned short recInstance)
{
IRecord* pRecord = nullptr;
switch (recInstance)
{
CREATE_BY_Instanse(TL_TBPID_UnknownPropertyList, CRecordTimeVariantString)
CREATE_BY_Instanse(TL_TBPID_RuntimeContext, CRecordTimeRuntimeContext)
CREATE_BY_Instanse(TL_TBPID_MotionPathEditRelative, CRecordTimeVariantBool)
CREATE_BY_Instanse(TL_TBPID_ColorColorModel, CRecordTimeColorModel)
CREATE_BY_Instanse(TL_TBPID_ColorDirection, CRecordTimeColorDirection)
CREATE_BY_Instanse(TL_TBPID_Override, CRecordTimeOverride)
CREATE_BY_Instanse(TL_TBPID_PathEditRotationAngle, CRecordTimeVariantFloat)
CREATE_BY_Instanse(TL_TBPID_PathEditRotationX, CRecordTimeVariantFloat)
CREATE_BY_Instanse(TL_TBPID_PathEditRotationY, CRecordTimeVariantFloat)
CREATE_BY_Instanse(TL_TBPID_PointsTypes, CRecordTimePointsTypes)
}
return pRecord;
}
};
}

View File

@ -0,0 +1,42 @@
/*
* (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"
// TODO
//class nope : public CUnknownRecord
//{
//};

View File

@ -0,0 +1,55 @@
/*
* (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 CRecordVisualPageAtom : public CUnknownRecord
{
public:
virtual void ReadFromStream ( SRecordHeader & oHeader, POLE::Stream* pStream )
{
m_oHeader = oHeader;
m_eType = (TimeVisualElementEnum) StreamUtils::ReadDWORD ( pStream );
}
public:
TimeVisualElementEnum m_eType;
};
}

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 "../Reader/Records.h"
#include "../../Enums/_includer.h"
namespace PPT_FORMAT
{
class CRecordVisualShapeAtom : public CUnknownRecord
{
public:
// Привязка анимации через этот объект к ID объекту
virtual void ReadFromStream ( SRecordHeader & oHeader, POLE::Stream* pStream )
{
m_oHeader = oHeader;
m_Type = (TimeVisualElementEnum) StreamUtils::ReadDWORD ( pStream );
m_RefType = (ElementTypeEnum) StreamUtils::ReadDWORD ( pStream );
m_nObjectIdRef = StreamUtils::ReadDWORD ( pStream );
m_nData1 = StreamUtils::ReadDWORD ( pStream );
m_nData2 = StreamUtils::ReadDWORD ( pStream );
m_nOldIdRef = m_nObjectIdRef;
}
public:
TimeVisualElementEnum m_Type;
ElementTypeEnum m_RefType;
// Warning! It used by RIDManager to change
_UINT32 m_nObjectIdRef; // ShapeIdRef || SoundIdRef
// This is it's copy
_UINT32 m_nOldIdRef;
_UINT32 m_nData1;
_UINT32 m_nData2;
};
}

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 CRecordVisualShapeChartElementAtom : public CUnknownRecord
{
public:
virtual void ReadFromStream ( SRecordHeader & oHeader, POLE::Stream* pStream )
{
m_oHeader = oHeader;
m_eType = (TimeVisualElementEnum)StreamUtils::ReadDWORD(pStream);
m_eRefType = (ElementTypeEnum)StreamUtils::ReadDWORD(pStream);
m_nShapeIdRef = StreamUtils::ReadDWORD(pStream);
m_nData1 = StreamUtils::ReadDWORD(pStream);
m_nData2 = StreamUtils::ReadDWORD(pStream);
}
public:
TimeVisualElementEnum m_eType;
ElementTypeEnum m_eRefType;
_UINT32 m_nShapeIdRef;
_UINT32 m_nData1;
_INT32 m_nData2;
};
}

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 "../../Enums/_includer.h"
namespace PPT_FORMAT
{
class CRecordVisualShapeGeneralAtom : public CUnknownRecord
{
public:
virtual void ReadFromStream ( SRecordHeader & oHeader, POLE::Stream* pStream )
{
m_oHeader = oHeader;
m_eType = (TimeVisualElementEnum)StreamUtils::ReadDWORD(pStream);
m_eRefType = (ElementTypeEnum)StreamUtils::ReadDWORD(pStream);
m_nShapeIdRef = StreamUtils::ReadDWORD(pStream);
m_nData1 = StreamUtils::ReadDWORD(pStream);
m_nData2 = StreamUtils::ReadDWORD(pStream);
}
public:
TimeVisualElementEnum m_eType;
ElementTypeEnum m_eRefType;
_UINT32 m_nShapeIdRef;
_INT32 m_nData1;
_INT32 m_nData2;
};
}

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 "../Reader/Records.h"
#include "../../Enums/_includer.h"
namespace PPT_FORMAT
{
class CRecordVisualSoundAtom : public CUnknownRecord
{
public:
// Привязка звука через этот объект к ID объекту
virtual void ReadFromStream ( SRecordHeader & oHeader, POLE::Stream* pStream )
{
m_oHeader = oHeader;
m_eType = (TimeVisualElementEnum) StreamUtils::ReadDWORD ( pStream );
m_eRefType = (ElementTypeEnum) StreamUtils::ReadDWORD ( pStream );
m_nSoundIdRef = StreamUtils::ReadDWORD ( pStream );
m_nData1 = StreamUtils::ReadDWORD ( pStream );
m_nData2 = StreamUtils::ReadDWORD ( pStream );
}
public:
TimeVisualElementEnum m_eType;
ElementTypeEnum m_eRefType;
_UINT32 m_nSoundIdRef;
// MUST be 0xFFFFFFFF, and MUST be ignored.
_UINT32 m_nData1;
_UINT32 m_nData2;
};
}

View File

@ -0,0 +1,89 @@
/*
* (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 "AnimationInfoAtom.h"
#include "AnimationInfoContainer.h"
#include "BuildAtom.h"
#include "BuildListContainer.h"
#include "ChartBuildAtom.h"
#include "ChartBuildContainer.h"
#include "ClientVisualElementContainer.h"
#include "DiagramBuildAtom.h"
#include "DiagramBuildContainer.h"
#include "ExtTimeNodeContainer.h"
#include "HashCode10Atom.h"
#include "LevelInfoAtom.h"
#include "ParaBuildAtom.h"
#include "ParaBuildContainer.h"
#include "ParaBuildLevel.h"
#include "SubEffectContainer.h"
#include "TimeAnimateBehaviorAtom.h"
#include "TimeAnimateBehaviorContainer.h"
#include "TimeAnimateColorBy.h"
#include "TimeAnimateColor.h"
#include "TimeAnimationValueAtom.h"
#include "TimeAnimationValueListContainer.h"
#include "TimeAnimationValueListEntry.h"
#include "TimeBehaviorAtom.h"
#include "TimeBehaviorContainer.h"
#include "TimeColorBehaviorAtom.h"
#include "TimeColorBehaviorContainer.h"
#include "TimeCommandBehaviorAtom.h"
#include "TimeCommandBehaviorContainer.h"
#include "TimeConditionAtom.h"
#include "TimeConditionContainer.h"
#include "TimeEffectBehaviorAtom.h"
#include "TimeEffectBehaviorContainer.h"
#include "TimeIterateDataAtom.h"
#include "TimeModifierAtom.h"
#include "TimeMotionBehaviorAtom.h"
#include "TimeMotionBehaviorContainer.h"
#include "TimeNodeAtom.h"
#include "TimePropertyList4TimeBehavior.h"
#include "TimePropertyList4TimeNodeContainer.h"
#include "TimeRotationBehaviorAtom.h"
#include "TimeRotationBehaviorContainer.h"
#include "TimeScaleBehaviorAtom.h"
#include "TimeScaleBehaviorContainer.h"
#include "TimeSequenceDataAtom.h"
#include "TimeSetBehaviorAtom.h"
#include "TimeSetBehaviorContainer.h"
#include "TimeStringListContainer.h"
#include "TimeVariant4Behavior.h"
#include "TimeVariant.h"
#include "VisualPageAtom.h"
#include "VisualShapeAtom.h"
#include "VisualShapeChartElementAtom.h"
#include "VisualShapeGeneralAtom.h"
#include "VisualSoundAtom.h"

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"
enum BuildTypeEnum : _UINT32
{
TL_BuildParagraph,
TL_BuildChart,
TL_BuildDiagram
};
class CRecordBuildAtom : public CUnknownRecord
{
public:
BuildTypeEnum m_BuildType;
_UINT32 m_BuildId;
_UINT32 m_ShapeIdRef;
bool m_fExpanded;
bool m_fUIExpanded;
public:
CRecordBuildAtom()
{
}
~CRecordBuildAtom()
{
}
virtual void ReadFromStream(SRecordHeader & oHeader, POLE::Stream* pStream)
{
m_oHeader = oHeader;
m_BuildType = (BuildTypeEnum)StreamUtils::ReadDWORD(pStream);
m_BuildId = StreamUtils::ReadDWORD(pStream);
m_ShapeIdRef = StreamUtils::ReadDWORD(pStream);
m_fExpanded = StreamUtils::ReadBYTE(pStream);
m_fUIExpanded = StreamUtils::ReadBYTE(pStream);
StreamUtils::StreamSkip(2, pStream);
}
};

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