added all Animation records, but the code is not compiled

This commit is contained in:
Ivan Morozov
2020-08-21 17:56:21 +03:00
parent b8e749fb82
commit 034521b1a0
83 changed files with 7294 additions and 4876 deletions

View File

@ -0,0 +1,268 @@
/*
* (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 "RecordType.h"
#define RECORDNAME_BY_TYPE(RECORD_TYPE, RECORD_NAME) \
case RECORD_TYPE: { return std::string( RECORD_NAME ); break; } \
using namespace PPT_FORMAT;
std::string GetRecordName(RecordType dwType)
{
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:
return std::string();
}
}

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,604 @@
/*
* (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
{
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
};
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
{
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
{
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
};
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

@ -38,6 +38,9 @@ HEADERS += \
../../../ASCOfficePPTXFile/Editor/Drawing/Structures.h \
../../../ASCOfficePPTXFile/Editor/Drawing/Timing.h \
../../../ASCOfficePPTXFile/Editor/Drawing/XmlStringWriter.h \
../Enums/RecordType.h \
../Enums/_includer.h \
../Enums/enums.h \
../PPTFormatLib.h \
../Reader/ClassesAtom.h \
../Reader/CommonZLib.h \
@ -46,28 +49,84 @@ HEADERS += \
../Reader/PPTFileDefines.h \
../Reader/PPTFileReader.h \
../Reader/ReadStructures.h \
../Reader/RecordType.h \
../Reader/Records.h \
../Reader/Slide.h \
../Reader/SlideInfo.h \
../Reader/SlidePersist.h \
../Records/AnimationInfoAtom.h \
../Records/AnimationInfoContainer.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/ChartBuildAtom.h \
../Records/ColorSchemeAtom.h \
../Records/CString.h \
../Records/CurrentUserAtom.h \
../Records/DiagramBuildAtom.h \
../Records/DiagramBuildContainer.h \
../Records/DocRoutingSlipAtom.h \
../Records/DocumentAtom.h \
../Records/DocumentRecords.h \
../Records/DocumentTextInfo.h \
../Records/Drawing/ColorIndex.h \
../Records/EndDocument.h \
../Records/ExCDAudioContainer.h \
../Records/ExControlAtom.h \
@ -117,6 +176,7 @@ HEADERS += \
../Records/SlideContainer.h \
../Records/SlideListWithText.h \
../Records/SlidePersistAtom.h \
../Records/SlideProgTagsContainer.h \
../Records/SlideViewInfoAtom.h \
../Records/SoundCollAtom.h \
../Records/SoundCollectionContainer.h \
@ -134,6 +194,7 @@ HEADERS += \
../Records/TextHeaderAtom.h \
../Records/TextInteractiveInfoAtom.h \
../Records/TextMasterStyle9Atom.h \
../Records/TextMasterStyle9Level.h \
../Records/TextMasterStyleAtom.h \
../Records/TextPFExceptionAtom.h \
../Records/TextRulerAtom.h \
@ -170,7 +231,19 @@ 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/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 += \
@ -184,7 +257,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 \
@ -192,6 +264,7 @@ SOURCES += \
}
SOURCES += \
../Enums/RecordType.cpp \
../PPTFormatLib.cpp \
../../../ASCOfficePPTXFile/Editor/Drawing/Elements.cpp \
../../../ASCOfficePPTXFile/Editor/Drawing/TextAttributesEx.cpp \

View File

@ -32,7 +32,7 @@
#pragma once
#include "ClassesAtom.h"
#include "../Records/Animations/AnimationTypes.h"
#include "../Records/Animations/_includer.h"
#include "../Records/ExObjListContainer.h"
#include "../Records/CryptSession10Container.h"

View File

@ -32,7 +32,7 @@
#pragma once
#include "PPTFileDefines.h"
#include "RecordType.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"

View File

@ -1,134 +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 "Drawing/ColorIndex.h"
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:
SColorIndex 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);
}
};
/*
* (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/ColorIndex.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:
ColorIndex 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

@ -30,10 +30,15 @@
*
*/
#pragma once
#include "../Reader/Records.h"
#include "AnimationInfoAtom.h"
#include "SoundContainer.h"
#include "../SoundContainer.h"
namespace PPT_FORMAT
{
class CRecordAnimationInfoContainer: public CUnknownRecord
{
public:
@ -56,3 +61,4 @@ public:
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,81 @@
/*
* (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;
_UINT32 lCurLen(0);
SRecordHeader ReadHeader;
while (lCurLen < m_oHeader.RecLen) {
if ( ReadHeader.ReadFromStream(pStream) == false )
{
break;
}
lCurLen += 8 + ReadHeader.RecLen;
IRecord* pBuildListSubContainer = CreateByType(ReadHeader);
n_arrRgChildRec.push_back(pBuildListSubContainer);
}
}
public:
std::vector <IRecord*> n_arrRgChildRec;
};
}

View File

@ -30,17 +30,14 @@
*
*/
#pragma once
#include "../Reader/Records.h"
#include "../Enums/_includer.h"
enum ChartBuildEnum : _UINT32
namespace PPT_FORMAT
{
TLCB_AsOneObject,
TLCB_BySeries,
TLCB_ByCategory,
TLCB_ByElementInSeries,
TLCB_ByElementInCategory
};
class CRecordChartBuildAtom : public CUnknownRecord
{
public:
@ -60,3 +57,4 @@ public:
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

@ -30,33 +30,18 @@
*
*/
#pragma once
#include "../Reader/Records.h"
#include "../Enums/_includer.h"
enum DiagramBuildEnum : _UINT32
namespace PPT_FORMAT
{
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
};
class CRecordDiagramBuildAtom : public CUnknownRecord
{
public:
DiagramBuildEnum m_DiagramBuild;
DiagramBuildEnum m_oDiagramBuild;
CRecordDiagramBuildAtom(){}
~CRecordDiagramBuildAtom(){}
@ -65,6 +50,7 @@ public:
{
m_oHeader = oHeader;
m_DiagramBuild = (DiagramBuildEnum)StreamUtils::ReadDWORD(pStream);
m_oDiagramBuild = (DiagramBuildEnum)StreamUtils::ReadDWORD(pStream);
}
};
}

View File

@ -1,5 +1,3 @@
/*
* (c) Copyright Ascensio System SIA 2010-2019
*
@ -32,50 +30,44 @@
*
*/
#pragma once
#include "../Reader/Records.h"
#include "DiagramBuildAtom.h"
#include "BuildAtom.h"
#include "DiagramBuildAtom.h"
namespace PPT_FORMAT
{
class CRecordDiagramBuildContainer : public CUnknownRecord
{
{
public:
CRecordDiagramBuildContainer()
{
CRecordDiagramBuildContainer ()
{
}
}
virtual void ReadFromStream ( SRecordHeader & oHeader, POLE::Stream* pStream )
{
m_oHeader = oHeader;
~CRecordDiagramBuildContainer()
{
#if defined(_DEBUG) && (defined(_WIN32) || defined(_WIN64))
if( IsCorrect () == false ) return;
#endif
// LONG lPos = 0; StreamUtils::StreamPosition ( lPos, pStream );
}
SRecordHeader ReadHeader;
if (ReadHeader.ReadFromStream(pStream) )
{
m_BuildAtom.ReadFromStream(ReadHeader, pStream);
}
if (ReadHeader.ReadFromStream(pStream)) {
m_DiagramBuildAtom.ReadFromStream(ReadHeader, pStream);
}
void ReadFromStream(SRecordHeader &thisHeader, POLE::Stream *pStream) override
{
m_oHeader = thisHeader;
// StreamUtils::StreamSeek ( lPos + m_oHeader.RecLen, pStream );
}
virtual bool IsCorrect ( )
{
return m_oHeader.RecVersion == 0xF &&
m_oHeader.RecInstance == 0x0 &&
m_oHeader.RecType == 0x2B06 &&
m_oHeader.RecLen == 0x024;
}
SRecordHeader oHeader;
if (oHeader.ReadFromStream(pStream))
m_oBuildAtom.ReadFromStream ( oHeader, pStream );
public:
if (oHeader.ReadFromStream(pStream))
m_oDiagramBuildAtom.ReadFromStream ( oHeader, pStream );
CRecordBuildAtom m_BuildAtom;
CRecordDiagramBuildAtom m_DiagramBuildAtom;
};
}
public:
CRecordBuildAtom m_oBuildAtom;
CRecordDiagramBuildAtom m_oDiagramBuildAtom;
};
}

View File

@ -0,0 +1,376 @@
/*
* (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 )
{
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 or recInst == TL_CT_Next)
m_arrRgBeginTimeCondition.push_back(pTimeCondition);
else if (recInst == TL_CT_End or 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:
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;
}
inline unsigned long GetEffectNodeType () const
{
if (m_pTimePropertyList)
return m_pTimePropertyList->GetEffectNodeType ();
return 0;
}
};
}

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
{
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 = ( 0x03 == ( 0x03 & ((BYTE)Value) ) );
m_fAutomatic = ( 0x04 == ( 0x04 & ((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,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 "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;
SRecordHeader oHeader;
// UINT res = 0;
if (oHeader.ReadFromStream(pStream))
m_oBuildAtom.ReadFromStream ( oHeader, pStream );
if (oHeader.ReadFromStream(pStream))
m_oParaBuildAtom.ReadFromStream ( oHeader, pStream );
// TODO may not work
_UINT32 levelCount = 1;
for (_UINT32 i = 0; i < levelCount; i++) {
CRecordParaBuildLevel* pLevel = new CRecordParaBuildLevel();
pLevel->ReadFromStream(pStream);
levelCount = pLevel->m_oLevelInfoAtom.m_nLevel;
}
}
public:
CRecordBuildAtom m_oBuildAtom;
CRecordParaBuildAtom m_oParaBuildAtom;
std::vector <CRecordParaBuildLevel*> m_arrRgParaBuildLevel;
};
}

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 "LevelInfoAtom.h"
#include "ExtTimeNodeContainer.h"
class CRecordParaBuildLevel
{
public:
CRecordParaBuildLevel ()
{
}
~CRecordParaBuildLevel()
{
}
virtual void ReadFromStream ( POLE::Stream* pStream )
{
SRecordHeader oHeader;
if (oHeader.ReadFromStream(pStream))
m_oLevelInfoAtom.ReadFromStream ( oHeader, pStream );
if (oHeader.ReadFromStream(pStream))
m_oTimeNode.ReadFromStream ( oHeader, pStream );
}
CRecordLevelInfoAtom m_oLevelInfoAtom;
CRecordExtTimeNodeContainer m_oTimeNode; // ExtTimeNodeContainer
};

View File

@ -0,0 +1,174 @@
/*
* (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"
//--------------------------------------------------------------------------------
#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;
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 ;
}
}
}
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 m_nRed;
_UINT32 m_nGreen;
_UINT32 m_nBlue;
inline unsigned long FRGB (BYTE alpha = 0xFF)
{
return ((m_nBlue << 16) | (m_nGreen << 8) | (m_nRed << 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,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"
#include "TimeAnimationValueListEntry.h"
namespace PPT_FORMAT
{
class CRecordTimeAnimationValueListContainer : 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;
}
lCurLen += 8 + ReadHeader.RecLen;
CRecordTimeAnimationEntry Entry;
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,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 "TimeVariant.h"
#include "TimeAnimationValueAtom.h"
namespace PPT_FORMAT
{
class CRecordTimeAnimationEntry
{
public:
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_VarValue.ReadFromStream ( ReadHeader, pStream );
}
CurLen += 8 + ReadHeader.RecLen;
if ( ReadHeader.ReadFromStream(pStream) )
{
m_VarFormula.ReadFromStream ( ReadHeader, pStream );
}
CurLen += 8 + ReadHeader.RecLen;
}
CRecordTimeAnimationValueAtom m_oTimeAnimationValueAtom;
CRecordTimeVariantString m_VarValue;
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,128 @@
/*
* (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;
SRecordHeader ReadHeader;
if ( ReadHeader.ReadFromStream(pStream) )
m_oBehaviorAtom.ReadFromStream ( ReadHeader, pStream );
UINT lCurLen = 0;
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:
throw ;
}
}
}
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 = ( 0x03 == ( 0x03 & ((BYTE)flag) ) );
m_fColorSpacePropertyUsed = ( 0x04 == ( 0x04 & ((BYTE)flag) ) );
m_fDirectionPropertyUsed = ( 0x05 == ( 0x05 & ((BYTE)flag) ) );
pStream->read ((unsigned char*) &m_sColorBy , sizeof ( TimeAnimateColorBy ) );
pStream->read ((unsigned char*) &m_sColorFrom , sizeof ( TimeAnimateColor ) );
pStream->read ((unsigned char*) &m_sColorTo , sizeof ( TimeAnimateColor ) );
}
public:
bool m_fByPropertyUsed;
bool m_fFromPropertyUsed;
bool m_fToPropertyUsed;
bool m_fColorSpacePropertyUsed;
bool m_fDirectionPropertyUsed;
TimeAnimateColorBy m_sColorBy;
TimeAnimateColor m_sColorFrom;
TimeAnimateColor m_sColorTo;
};
}

View File

@ -0,0 +1,63 @@
/*
* (c) Copyright Ascensio System SIA 2010-2019
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at 20A-12 Ernesta Birznieka-Upisha
* street, Riga, Latvia, EU, LV-1050.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#pragma once
#include "../Reader/Records.h"
#include "TimeColorBehaviorAtom.h"
#include "TimeBehaviorContainer.h"
namespace PPT_FORMAT
{
class CRecordTimeColorBehaviorContainer : public CUnknownRecord
{
public:
virtual void ReadFromStream ( SRecordHeader & oHeader, POLE::Stream* pStream )
{
m_oHeader = oHeader;
SRecordHeader ReadHeader;
if (ReadHeader.ReadFromStream(pStream) )
m_oColorBehaviorAtom.ReadFromStream ( ReadHeader, pStream );
if (ReadHeader.ReadFromStream(pStream) )
m_oBehavior.ReadFromStream (ReadHeader, pStream );
}
public:
CRecordTimeColorBehaviorAtom m_oColorBehaviorAtom;
CRecordTimeBehaviorContainer m_oBehavior;
};
}

View File

@ -0,0 +1,74 @@
/*
* (c) Copyright Ascensio System SIA 2010-2019
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at 20A-12 Ernesta Birznieka-Upisha
* street, Riga, Latvia, EU, LV-1050.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#pragma once
#include "../Reader/Records.h"
#include "../Enums/_includer.h"
namespace PPT_FORMAT
{
class CRecordTimeCommandBehaviorAtom : public CUnknownRecord
{
public:
CRecordTimeCommandBehaviorAtom ()
{
}
~CRecordTimeCommandBehaviorAtom()
{
}
void ReadFromStream(SRecordHeader &oHeader, POLE::Stream *pStream) override
{
m_oHeader = oHeader;
BYTE flags = StreamUtils::ReadBYTE(pStream);
m_fTypePropertyUsed = ( 0x01 == ( 0x01 & (flags) ) );
m_fCommandPropertyUsed = ( 0x02 == ( 0x02 & (flags) ) );
StreamUtils::StreamSkip(28, pStream);
m_eCommandBehaviorType = (TimeCommandBehaviorTypeEnum)
StreamUtils::ReadLONG(pStream);
}
public:
bool m_fTypePropertyUsed;
bool m_fCommandPropertyUsed;
TimeCommandBehaviorTypeEnum m_eCommandBehaviorType;
};
}

View File

@ -0,0 +1,75 @@
/*
* (c) Copyright Ascensio System SIA 2010-2019
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at 20A-12 Ernesta Birznieka-Upisha
* street, Riga, Latvia, EU, LV-1050.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#pragma once
#include "../Reader/Records.h"
#include "TimeCommandBehaviorAtom.h"
#include "TimeBehaviorContainer.h"
namespace PPT_FORMAT
{
class CRecordTimeCommandBehaviorContainer : public CUnknownRecord
{
public:
CRecordTimeCommandBehaviorContainer ()
{
}
~CRecordTimeCommandBehaviorContainer ()
{
}
void ReadFromStream(SRecordHeader &thisHeader, POLE::Stream *pStream) override
{
m_oHeader = thisHeader;
SRecordHeader oHeader;
if (oHeader.ReadFromStream(pStream))
m_oCommandBehaviorAtom.ReadFromStream ( oHeader, pStream );
if (oHeader.ReadFromStream(pStream))
m_oVarCommand.ReadFromStream ( oHeader, pStream );
if (oHeader.ReadFromStream(pStream))
m_oBevavior.ReadFromStream ( oHeader, pStream );
}
public:
CRecordTimeCommandBehaviorAtom m_oCommandBehaviorAtom;
CRecordTimeVariantString m_oVarCommand;
CRecordTimeBehaviorContainer m_oBevavior;
};
}

View File

@ -0,0 +1,63 @@
/*
* (c) Copyright Ascensio System SIA 2010-2019
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at 20A-12 Ernesta Birznieka-Upisha
* street, Riga, Latvia, EU, LV-1050.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#pragma once
#include "../Reader/Records.h"
#include "../Enums/_includer.h"
namespace PPT_FORMAT
{
class CRecordTimeConditionAtom : public CUnknownRecord
{
public:
virtual void ReadFromStream ( SRecordHeader & oHeader, POLE::Stream* pStream )
{
m_oHeader = oHeader;
m_TriggerObject = ( TriggerObjectEnum )StreamUtils::ReadDWORD ( pStream );
m_nTriggerEvent = StreamUtils::ReadDWORD ( pStream );
m_nID = StreamUtils::ReadDWORD ( pStream );
m_nTimeDelay = StreamUtils::ReadLONG ( pStream );
}
public:
TriggerObjectEnum m_TriggerObject;
_UINT32 m_nTriggerEvent;
_UINT32 m_nID;
LONG m_nTimeDelay;
};
}

View File

@ -0,0 +1,75 @@
/*
* (c) Copyright Ascensio System SIA 2010-2019
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at 20A-12 Ernesta Birznieka-Upisha
* street, Riga, Latvia, EU, LV-1050.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#pragma once
#include "../Reader/Records.h"
#include "TimeConditionAtom.h"
#include "ClientVisualElementContainer.h"
namespace PPT_FORMAT
{
class CRecordTimeConditionContainer : public CUnknownRecord
{
public:
virtual void ReadFromStream ( SRecordHeader & oHeader, POLE::Stream* pStream )
{
m_oHeader = oHeader;
// LONG lPos = 0; StreamUtils::StreamPosition ( lPos, pStream );
SRecordHeader header;
if ( header.ReadFromStream(pStream) )
{
m_oTimeConditionAtom.ReadFromStream ( header, pStream );
if ( TL_TOT_VisualElement == m_oTimeConditionAtom.m_TriggerObject )
{
if ( header.ReadFromStream(pStream) )
{
m_oVisualElement.ReadFromStream ( header, pStream );
}
}
}
// StreamUtils::StreamSeek ( lPos + m_oHeader.RecLen, pStream );
}
public:
CRecordTimeConditionAtom m_oTimeConditionAtom;
CRecordClientVisualElementContainer m_oVisualElement;
};
}

View File

@ -0,0 +1,71 @@
/*
* (c) Copyright Ascensio System SIA 2010-2019
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at 20A-12 Ernesta Birznieka-Upisha
* street, Riga, Latvia, EU, LV-1050.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#pragma once
#include "../Reader/Records.h"
namespace PPT_FORMAT
{
class CRecordTimeEffectBehaviorAtom : public CUnknownRecord
{
public:
virtual void ReadFromStream ( SRecordHeader & oHeader, POLE::Stream* pStream )
{
m_oHeader = oHeader;
// LONG lPos = 0; StreamUtils::StreamPosition ( lPos, pStream );
_UINT32 dwFlags = StreamUtils::ReadDWORD ( pStream );
m_bTransitionPropertyUsed = ( 0x01 == ( 0x01 & ((BYTE)dwFlags) ) );
m_bTypePropertyUsed = ( 0x02 == ( 0x02 & ((BYTE)dwFlags) ) );
m_bProgressPropertyUsed = ( 0x04 == ( 0x04 & ((BYTE)dwFlags) ) );
m_bRuntimeContextObsolete = ( 0x08 == ( 0x08 & ((BYTE)dwFlags) ) );
m_nEffectTransition = StreamUtils::ReadDWORD ( pStream );
// StreamUtils::StreamSeek ( lPos + m_oHeader.RecLen, pStream );
}
public:
bool m_bTransitionPropertyUsed;
bool m_bTypePropertyUsed;
bool m_bProgressPropertyUsed;
bool m_bRuntimeContextObsolete;
_UINT32 m_nEffectTransition;
};
}

View File

@ -0,0 +1,103 @@
/*
* (c) Copyright Ascensio System SIA 2010-2019
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at 20A-12 Ernesta Birznieka-Upisha
* street, Riga, Latvia, EU, LV-1050.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#pragma once
#include "../Reader/Records.h"
#include "TimeEffectBehaviorAtom.h"
#include "TimeVariant.h"
#include "TimeBehaviorContainer.h"
namespace PPT_FORMAT
{
class CRecordTimeEffectBehaviorContainer : public CUnknownRecord
{
public:
virtual void ReadFromStream ( SRecordHeader & oHeader, POLE::Stream* pStream )
{
m_oHeader = oHeader;
// LONG lPos = 0; StreamUtils::StreamPosition ( lPos, pStream );
SRecordHeader header;
if ( header.ReadFromStream(pStream) )
m_effectBehaviorAtom.ReadFromStream ( header, pStream );
if ( m_effectBehaviorAtom.m_bTypePropertyUsed )
{
if ( header.ReadFromStream(pStream) )
m_oVarType.ReadFromStream ( header, pStream );
}
if ( m_effectBehaviorAtom.m_bProgressPropertyUsed )
{
if ( header.ReadFromStream(pStream) )
m_oVarProgres.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_oVarProgres;
CRecordTimeVariantString m_oVarRuntimeContext;
CRecordTimeBehaviorContainer m_oBehavior;
};
}

View File

@ -0,0 +1,69 @@
/*
* (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 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,93 @@
/*
* (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);
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);
}
case RT_TimeBehaviorContainer:
{
m_oTimeBehavior.ReadFromStream(header, pStream);
}
default:
throw ;
}
}
}
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,174 @@
/*
* (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;
m_oEffectNodeType.m_Value = 0;
}
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;
if ( TL_TPID_EffectID == VariableType )
{
m_oEffectID = *(static_cast<CRecordTimeEffectID*> ( pRecord ) );
// RELEASEOBJECT ( pRecord );
m_arrElements.push_back ( pRecord );
}
else if ( TL_TPID_EffectType == VariableType )
{
m_oEffectType = *(static_cast<CRecordTimeEffectType*> ( pRecord ) );
// RELEASEOBJECT ( pRecord );
m_arrElements.push_back ( pRecord );
}
else if ( TL_TPID_EffectDir == VariableType )
{
m_oEffectDir = *(static_cast<CRecordTimeEffectDir*> ( pRecord ) );
//RELEASEOBJECT ( pRecord );
m_arrElements.push_back ( pRecord );
}
else if ( TL_TPID_EffectNodeType == VariableType )
{
m_oEffectNodeType = *(static_cast<CRecordTimeEffectNodeType*> ( pRecord ) );
//RELEASEOBJECT ( pRecord );
m_arrElements.push_back ( pRecord );
}
else
{
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 ();
}
// helper
inline const _UINT32& GetEffectNodeType () const
{
return m_oEffectNodeType.m_Value;
}
public:
bool m_bEmtyNode;
std::vector <CRecordTimeVariant*> m_arrElements;
//
CRecordTimeEffectNodeType m_oEffectNodeType;
CRecordTimeEffectID m_oEffectID;
CRecordTimeEffectType m_oEffectType;
CRecordTimeEffectDir m_oEffectDir;
};
}

View File

@ -0,0 +1,71 @@
/*
* (c) Copyright Ascensio System SIA 2010-2019
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at 20A-12 Ernesta Birznieka-Upisha
* street, Riga, Latvia, EU, LV-1050.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#pragma once
#include "../Reader/Records.h"
namespace PPT_FORMAT
{
class CRecordTimeRotationBehaviorAtom : public CUnknownRecord
{
public:
virtual void ReadFromStream ( SRecordHeader & oHeader, POLE::Stream* pStream )
{
m_oHeader = oHeader;
_UINT32 src = StreamUtils::ReadDWORD ( pStream );
m_fByPropertyUsed = ( 0x01 == ( 0x01 & ((BYTE)src) ) );
m_fFromPropertyUsed = ( 0x02 == ( 0x02 & ((BYTE)src) ) );
m_fToPropertyUsed = ( 0x03 == ( 0x03 & ((BYTE)src) ) );
m_fDirectionPropertyUsed = ( 0x04 == ( 0x04 & ((BYTE)src) ) );
m_By = StreamUtils::ReadFLOAT ( pStream );
m_From = StreamUtils::ReadFLOAT ( pStream );
m_To = StreamUtils::ReadFLOAT ( pStream );
m_nRotationDirection = StreamUtils::ReadDWORD ( pStream );
}
public:
bool m_fByPropertyUsed;
bool m_fFromPropertyUsed;
bool m_fToPropertyUsed;
bool m_fDirectionPropertyUsed;
float m_By;
float m_From;
float m_To;
_UINT32 m_nRotationDirection; // 0 - rotate clockwise, 1 - rotate counter clockwise
};
}

View File

@ -0,0 +1,66 @@
/*
* (c) Copyright Ascensio System SIA 2010-2019
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at 20A-12 Ernesta Birznieka-Upisha
* street, Riga, Latvia, EU, LV-1050.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#pragma once
#include "../Reader/Records.h"
#include "TimeRotationBehaviorAtom.h"
#include "TimeBehaviorContainer.h"
namespace PPT_FORMAT
{
class CRecordTimeRotationBehaviorContainer : public CUnknownRecord
{
public:
virtual void ReadFromStream ( SRecordHeader & oHeader, POLE::Stream* pStream )
{
m_oHeader = oHeader;
SRecordHeader ReadHeader;
if ( ReadHeader.ReadFromStream(pStream) )
m_oRotationBehaviorAtom.ReadFromStream ( ReadHeader, pStream );
if ( ReadHeader.ReadFromStream(pStream) )
m_oBehavior.ReadFromStream ( ReadHeader, pStream );
}
public:
CRecordTimeRotationBehaviorAtom m_oRotationBehaviorAtom;
CRecordTimeBehaviorContainer m_oBehavior;
};
}

View File

@ -0,0 +1,80 @@
/*
* (c) Copyright Ascensio System SIA 2010-2019
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at 20A-12 Ernesta Birznieka-Upisha
* street, Riga, Latvia, EU, LV-1050.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#pragma once
#include "../Reader/Records.h"
namespace PPT_FORMAT
{
class CRecordTimeScaleBehaviorAtom : public CUnknownRecord
{
public:
virtual void ReadFromStream ( SRecordHeader & oHeader, POLE::Stream* pStream )
{
m_oHeader = oHeader;
_UINT32 src = StreamUtils::ReadDWORD ( pStream );
m_fByPropertyUsed = ( 0x01 == ( 0x01 & ((BYTE)src) ) );
m_fFromPropertyUsed = ( 0x02 == ( 0x02 & ((BYTE)src) ) );
m_fToPropertyUsed = ( 0x03 == ( 0x03 & ((BYTE)src) ) );
m_fZoomContentsUsed = ( 0x04 == ( 0x04 & ((BYTE)src) ) );
m_XBy = StreamUtils::ReadFLOAT ( pStream );
m_YBy = StreamUtils::ReadFLOAT ( pStream );
m_XFrom = StreamUtils::ReadFLOAT ( pStream );
m_YFrom = StreamUtils::ReadFLOAT ( pStream );
m_XTo = StreamUtils::ReadFLOAT ( pStream );
m_YTo = StreamUtils::ReadFLOAT ( pStream );
src = StreamUtils::ReadDWORD ( pStream );
m_fZoomContents = ( 0x01 == ( 0x01 & ((BYTE)src) ) );
}
public:
bool m_fByPropertyUsed;
bool m_fFromPropertyUsed;
bool m_fToPropertyUsed;
bool m_fZoomContentsUsed;
float m_XBy;
float m_YBy;
float m_XFrom;
float m_YFrom;
float m_XTo;
float m_YTo;
bool m_fZoomContents;
};
}

View File

@ -0,0 +1,63 @@
/*
* (c) Copyright Ascensio System SIA 2010-2019
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at 20A-12 Ernesta Birznieka-Upisha
* street, Riga, Latvia, EU, LV-1050.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#pragma once
#include "../Reader/Records.h"
#include "TimeScaleBehaviorAtom.h"
#include "TimeBehaviorContainer.h"
namespace PPT_FORMAT
{
class CRecordTimeScaleBehaviorContainer : public CUnknownRecord
{
public:
virtual void ReadFromStream ( SRecordHeader & oHeader, POLE::Stream* pStream )
{
m_oHeader = oHeader;
SRecordHeader ReadHeader;
if ( ReadHeader.ReadFromStream(pStream) )
m_oScaleBehaviorAtom.ReadFromStream ( ReadHeader, pStream );
if ( ReadHeader.ReadFromStream(pStream) )
m_oBehavior.ReadFromStream ( ReadHeader, pStream );
}
public:
CRecordTimeScaleBehaviorAtom m_oScaleBehaviorAtom;
CRecordTimeBehaviorContainer m_oBehavior;
};
}

View File

@ -0,0 +1,73 @@
/*
* (c) Copyright Ascensio System SIA 2010-2019
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at 20A-12 Ernesta Birznieka-Upisha
* street, Riga, Latvia, EU, LV-1050.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#pragma once
#include "../Reader/Records.h"
namespace PPT_FORMAT
{
class CRecordTimeSequenceDataAtom : public CUnknownRecord
{
public:
virtual void ReadFromStream ( SRecordHeader & oHeader, POLE::Stream* pStream )
{
m_oHeader = oHeader;
// LONG lPos = 0; StreamUtils::StreamPosition ( lPos, pStream );
m_nConcurrency = StreamUtils::ReadDWORD ( pStream );
m_nNextAction = StreamUtils::ReadDWORD ( pStream );
m_nPreviousAction = StreamUtils::ReadDWORD ( pStream );
StreamUtils::StreamSkip ( sizeof ( _UINT32 ), pStream );
_UINT32 Value = StreamUtils::ReadDWORD ( pStream );
m_fConcurrencyPropertyUsed = ( 0x01 == ( 0x01 & ((BYTE)Value) ) );
m_fNextActionPropertyUsed = ( 0x02 == ( 0x02 & ((BYTE)Value) ) );
m_fPreviousActionPropertyUsed = ( 0x04 == ( 0x04 & ((BYTE)Value) ) );
// StreamUtils::StreamSeek ( lPos + m_oHeader.RecLen, pStream );
}
public:
_UINT32 m_nConcurrency;
_UINT32 m_nNextAction;
_UINT32 m_nPreviousAction;
bool m_fConcurrencyPropertyUsed;
bool m_fNextActionPropertyUsed;
bool m_fPreviousActionPropertyUsed;
};
}

View File

@ -0,0 +1,63 @@
/*
* (c) Copyright Ascensio System SIA 2010-2019
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at 20A-12 Ernesta Birznieka-Upisha
* street, Riga, Latvia, EU, LV-1050.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#pragma once
#include "../Reader/Records.h"
#include "../../Enums/_includer.h"
namespace PPT_FORMAT
{
class CRecordTimeSetBehaviorAtom : public CUnknownRecord
{
public:
virtual void ReadFromStream ( SRecordHeader & oHeader, POLE::Stream* pStream )
{
m_oHeader = oHeader;
_UINT32 Value = StreamUtils::ReadDWORD ( pStream );
m_bToPropertyUsed = ( 0x01 == ( 0x01 & ((BYTE)Value) ) );
m_bValueTypePropertyUsed = ( 0x02 == ( 0x02 & ((BYTE)Value) ) );
m_eValueType = (TimeAnimateBehaviorValueTypeEnum)StreamUtils::ReadDWORD ( pStream );
}
public:
bool m_bToPropertyUsed;
bool m_bValueTypePropertyUsed;
TimeAnimateBehaviorValueTypeEnum m_eValueType;
};
}

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,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 "TimeVariant.h"
namespace PPT_FORMAT
{
class CRecordTimeStringListContainer : public CUnknownRecord
{
public:
virtual void ReadFromStream ( SRecordHeader & oHeader, POLE::Stream* pStream )
{
m_oHeader = oHeader;
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 );
}
}
public:
std::vector <CRecordTimeVariantString> m_arrRgChildRec;
};
}

View File

@ -0,0 +1,262 @@
/*
* (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 ); //
LONG lPos = 0;
StreamUtils::StreamPosition ( lPos, pStream );
StreamUtils::StreamSeek ( lPos + m_oHeader.RecLen, pStream );
}
public:
TimeVariantTypeEnum m_Type;
};
class CRecordTimeVariantBool : public CRecordTimeVariant
{
public:
virtual void ReadFromStream ( SRecordHeader & oHeader, POLE::Stream* pStream )
{
m_oHeader = oHeader;
m_Type = ( TimeVariantTypeEnum )StreamUtils::ReadBYTE ( pStream ); // MUST be TL_TVT_Bool
m_Value = ( 0x1 == StreamUtils::ReadBYTE ( pStream ) );
}
public:
TimeVariantTypeEnum m_Type;
bool m_Value;
};
class CRecordTimeVariantInt : public CRecordTimeVariant
{
public:
virtual void ReadFromStream ( SRecordHeader & oHeader, POLE::Stream* pStream )
{
m_oHeader = oHeader;
m_Type = ( TimeVariantTypeEnum )StreamUtils::ReadBYTE ( pStream ); // MUST be TL_TVT_Bool
m_Value = StreamUtils::ReadDWORD ( pStream );
}
public:
TimeVariantTypeEnum m_Type;
_UINT32 m_Value;
};
class CRecordTimeVariantFloat : public CRecordTimeVariant
{
public:
virtual void ReadFromStream ( SRecordHeader & oHeader, POLE::Stream* pStream )
{
m_oHeader = oHeader;
m_Type = ( TimeVariantTypeEnum )StreamUtils::ReadBYTE ( pStream ); // MUST be TL_TVT_Bool
m_Value = StreamUtils::ReadFLOAT ( pStream );
}
public:
TimeVariantTypeEnum m_Type;
FLOAT m_Value;
};
class CRecordTimeVariantString : public CRecordTimeVariant
{
public:
virtual void ReadFromStream ( SRecordHeader & oHeader, POLE::Stream* pStream )
{
m_oHeader = oHeader;
m_Type = ( TimeVariantTypeEnum )StreamUtils::ReadBYTE ( pStream ); // MUST be TL_TVT_String
if ( WCHAR* pString = new WCHAR [ m_oHeader.RecLen / 2 ] )
{
POLE::uint64 res = pStream->read ((unsigned char*) pString, ( m_oHeader.RecLen / 2 ) * 2) ;
if (res > 0)
{
if (sizeof(wchar_t) == 4)
{
//todoooo
}
else
m_stringValue = std::wstring ( pString );
}
RELEASEARRAYOBJECTS ( pString );
}
}
public:
TimeVariantTypeEnum m_Type;
std::wstring m_stringValue;
};
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
{
};
}

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,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,65 @@
/*
* (c) Copyright Ascensio System SIA 2010-2019
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at 20A-12 Ernesta Birznieka-Upisha
* street, Riga, Latvia, EU, LV-1050.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#pragma once
#include "../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 );
}
public:
TimeVisualElementEnum m_Type;
ElementTypeEnum m_RefType;
_UINT32 m_nObjectIdRef; // ShapeIdRef || SoundIdRef
_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,90 @@
/*
* (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 "TimeVariant4TimeNode.h"
#include "TimeVariant.h"
#include "VisualPageAtom.h"
#include "VisualShapeAtom.h"
#include "VisualShapeChartElementAtom.h"
#include "VisualShapeGeneralAtom.h"
#include "VisualSoundAtom.h"

View File

@ -39,6 +39,9 @@
#include "DocumentRecords.h"
#include "DocumentTextInfo.h"
//Animation
#include "Animations/_includer.h"
// drawing records
#include "Drawing/ChildAnchor.h"
#include "Drawing/BlipStoreContainer.h"
@ -54,16 +57,12 @@
#include "Drawing/DrawingContainer.h"
// others
#include "AnimationInfoAtom.h"
#include "AnimationInfoContainer.h"
#include "BlipEntityAtom.h"
#include "BookmarkEntityAtom.h"
#include "BookmarkSeedAtom.h"
#include "ChartBuildAtom.h"
#include "CString.h"
#include "ColorSchemeAtom.h"
#include "DiagramBuildAtom.h"
#include "DiagramBuildContainer.h"
#include "DocRoutingSlipAtom.h"
#include "DocumentAtom.h"
#include "ExControlAtom.h"
@ -123,7 +122,7 @@
#include "ViewInfoAtom.h"
#include "ZoomViewInfoAtom.h"
#include "Animations/AnimationTypes.h"
#include "Animations/_includer.h"
#include "InteractiveInfoAtom.h"
#include "TextInteractiveInfoAtom.h"

View File

@ -0,0 +1,952 @@
/*
* (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 "Animations/_includer.h"
#include "HeadersFootersAtom.h"
#include "Animations/ExtTimeNodeContainer.h"
#include "Animations/SubEffectContainer.h"
#define MIN_SLIDE_TIME 5000.0
namespace PPT_FORMAT
{
class CSlideTimeLine
{
public:
CSlideTimeLine ()
{
m_dEffectDuration = 0.0;
m_nMediaID = -1;
m_nMediaShapeID = -1;
m_nMediaPush = 0;
}
~CSlideTimeLine()
{
Clear ();
}
inline bool Build (CRecordExtTimeNodeContainer* pContainer)
{
if (pContainer)
{
Clear ();
m_bSaveEffect = false;
m_HaveAfterEffect = false;
m_oParagraphBuilds.Create(pContainer);
ExploreTree ( pContainer );
UpdateParagraph ();
return (0 != m_oAnimation.size());
}
return false;
}
inline EffectsMap& GetAnimation ()
{
return m_oAnimation;
}
inline double GetTime ()
{
double dTime = m_oNodeTiming.GetTimeLine ();
if (dTime < MIN_SLIDE_TIME)
return MIN_SLIDE_TIME;
if (((long)dTime) % 1000)
return ( ((long)((long)(dTime) / 1000) + 1 ) * 1000.0 );
return dTime;
}
private:
inline void ExploreTree (CRecordExtTimeNodeContainer* pContainer)
{
unsigned long nNodeType = pContainer->GetEffectNodeType ();
if (nNodeType)
{
if (CNodeTiming::MainSequenceNode != nNodeType && CNodeTiming::TimingRootNode != nNodeType)
{
m_oTopEffect = CreateEffectFromNode ( pContainer->timePropertyList );
m_ComposeEffectMothionPath = _T("");
FindEffectMothionPath ( pContainer );
// время старта анимации
if ( pContainer->timeCondition.size() )
{
double dTime = static_cast<TimeConditionContainer*> ( pContainer->timeCondition[0] )->m_oTimeConditionAtom.m_nTimeDelay;
m_oNodeTiming.SetTimeDelay (dTime);
//m_oTopEffect.m_nBeginTime = static_cast<TimeConditionContainer*> ( pContainer->timeCondition[0] )->m_oTimeConditionAtom.m_nTimeDelay;
m_bSaveEffect = false;
}
// setup accelerate - decelerate
if (pContainer->rgTimeModifierAtom.size())
{
if (pContainer->GetModifier(3))
m_oTopEffect.m_dTimeAccel = (std::max)((std::min)(pContainer->GetModifier(3)->value,1.0f),0.0f);
if (pContainer->GetModifier(4))
m_oTopEffect.m_dTimeDecel = (std::max)((std::min)(pContainer->GetModifier(4)->value,1.0f),0.0f);
}
if (pContainer->haveSlaveContainer)
{
CRecordSubContainer* pSlave = pContainer->rgSlave;
if(pSlave->haveSetBehavior) // после анимации к объекту может быть применена дополнительная анимация
{
m_HaveAfterEffect = true;
// эффект исчезновения элемента (Appear)
m_oAfterEffect.m_nDuration = 1.0;
m_oAfterEffect.m_nEffectID = 1;
m_oAfterEffect.m_nEffectNodeType = 1;
m_oAfterEffect.m_nEffectType = 2;
if (pSlave->timeSetBehavior)
{
if (pSlave->timeSetBehavior->behavior.clientVisualElement.m_bVisualShapeAtom)
m_oAfterEffect.m_nRefID = pSlave->timeSetBehavior->behavior.GetObjectID ();
}
if (pSlave->extTimeContainer)
{
ExploreTree (static_cast<ExtTimeNodeContainer*>(pSlave->extTimeContainer));
}
}
}
ProcessMediaCall (pContainer);
}
}
int nID = GetShapeID ( pContainer );
if ( -1 != nID )
{
// TODO :
// нужно из всех объектов (*Behavior) для конкретного эффекта,
// который заранее прочитан в m_oTopEffect дополнять параметры из потомков
if ( false == m_bSaveEffect )
{
AddAnimation ( pContainer, nID );
m_bSaveEffect = true;
}
}
for ( int i = 0; i < (int)pContainer->rgExtTimeNodeChildren.size(); ++i )
{
if ( (WORD)RT_TimeExtTimeNodeContainer == pContainer->rgExtTimeNodeChildren [i]->m_oHeader.RecType )
{
Animations::ExtTimeNodeContainer* pChild = static_cast<Animations::ExtTimeNodeContainer*> ( pContainer->rgExtTimeNodeChildren [i] );
if ( pChild )
ExploreTree ( pChild );
}
}
}
//
inline void AddAnimation (ExtTimeNodeContainer* pTimeNode, int nID)
{
CalculateTimeEffect (pTimeNode);
Effect oEffect = m_oTopEffect;
oEffect.m_nRefID = nID;
oEffect.m_nBeginTime = m_oNodeTiming.GetTop ().dTime;
oEffect.m_nDuration = m_oNodeTiming.GetTop ().dDuration;
if (pTimeNode->timeMotionBehavior)
{
oEffect.m_MotionPath = pTimeNode->timeMotionBehavior->m_VarPath.stringValue;
}
if (pTimeNode->haveScaleBehavior) // GrowAndShrinkEffect = 6 // простое увеличение
{
oEffect.m_dSX = pTimeNode->timeScaleBehavior->scaleBehaviorAtom.fXBy * 0.01;
oEffect.m_dSY = pTimeNode->timeScaleBehavior->scaleBehaviorAtom.fYBy * 0.01;
}
if (pTimeNode->haveRotationBehavior) // SpinEffect = 8 // вращение
{
oEffect.m_dRotateAngle = pTimeNode->timeRotationBehavior->rotationBehaviorAtom.fBy;
//oEffect.m_nRotateDirection = pTimeNode->timeRotationBehavior->rotationBehaviorAtom.rotationDirection;
}
if (pTimeNode->haveSetBehavior)
{
if (9 == oEffect.m_nEffectID) // TransparencyEffect = 9, // временная прозрачность
oEffect.m_dTransparency = _tstof (pTimeNode->timeSetBehavior->varTo.stringValue.c_str());
}
if (m_ComposeEffectMothionPath.length())
{
oEffect.m_MotionPath = m_ComposeEffectMothionPath; // составной эффект может иметь траекторию для движения
}
if(pTimeNode->haveColorBehavior)
{
oEffect.m_nSchemeColor = pTimeNode->timeColorBehavior->colorBehaviorAtom.colorTo.model;
if (0 == pTimeNode->timeColorBehavior->colorBehaviorAtom.colorTo.model)
{
oEffect.m_nColorTo = pTimeNode->timeColorBehavior->colorBehaviorAtom.colorTo.FRGB();
}
// TODO : HSL
// TODO : ColorDirection
if (2 == pTimeNode->timeColorBehavior->colorBehaviorAtom.colorTo.model)
{
oEffect.m_nColorTo = pTimeNode->timeColorBehavior->colorBehaviorAtom.colorTo.red; // index from table
}
}
if (MediaCallEffect == oEffect.m_nEffectType)
{
if (1 == oEffect.m_nEffectID) // PLAY
oEffect.m_nMediaCMD = 1;
if (2 == oEffect.m_nEffectID) // PAUSE
oEffect.m_nMediaCMD = 2;
if (3 == oEffect.m_nEffectID) // STOP
oEffect.m_nMediaCMD = 0;
}
// oEffect.m_nTextSequence = m_oParagraphBuilds.GetBuild(nID);
AddEffectTopMap (oEffect, nID);
AddAfterEffect (nID);
m_oTopEffect.m_dTimeAccel = 0.0;
m_oTopEffect.m_dTimeDecel = 0.0;
m_oTopEffect.m_bIgnoreShape = false;
}
inline void AddAfterEffect (long nID)
{
if (m_HaveAfterEffect)
{
if (-1 == m_oAfterEffect.m_nRefID)
{
m_oAfterEffect.m_nRefID = nID;
}
m_oAfterEffect.m_nDuration = 1.0;
m_oAfterEffect.m_nBeginTime = m_oNodeTiming.GetTop ().dTime + m_oNodeTiming.GetTop ().dDuration;
AddEffectTopMap (m_oAfterEffect,nID);
m_oAfterEffect.m_nRefID = -1;
m_HaveAfterEffect = false;
}
}
inline void AddEffectTopMap (Effect& oEffect, long nID)
{
oEffect.m_bRemoveEmptyBlocks = true; // ALWAYS
EffectToMap (oEffect);
}
inline void EffectToMap (const Effect& oEffect)
{
EffectsMap::const_iterator mSearch = m_oAnimation.find(oEffect.m_nRefID);
Effects* pEffects = NULL;
if (mSearch == m_oAnimation.end())
{
pEffects = new Effects ();
m_oAnimation.insert(std::pair<_UINT32,Effects*>( oEffect.m_nRefID, pEffects));
}else
pEffects = mSearch->second;
if (pEffects)
pEffects->push_back ( oEffect );
}
//
inline Effect CreateEffectFromNode (TimePropertyList4TimeNodeContainer* pContainer)
{
Effect oEffect;
if (pContainer)
{
oEffect.m_nEffectID = pContainer->m_EffectID.m_Value;
oEffect.m_nEffectType = pContainer->m_EffectType.m_Value;
oEffect.m_nEffectDir = pContainer->m_EffectDir.m_Value;
oEffect.m_nEffectNodeType = pContainer->m_EffectNodeType.m_Value;
}
return oEffect;
}
inline int GetShapeID (CRecordExtTimeNodeContainer* pContainer)
{
if (TL_TNT_Behavior == pContainer->timeNodeAtom.m_dwType)
{
if (pContainer->timeMotionBehavior)
{
if (pContainer->timeMotionBehavior->m_oBehavior.clientVisualElement.m_bVisualShapeAtom)
{
ReadPropertyIgnoreShape (pContainer->timeMotionBehavior->m_oBehavior);
return pContainer->timeMotionBehavior->m_oBehavior.GetObjectID ();
}
}
if (pContainer->timeEffectBehavior)
{
if (pContainer->timeEffectBehavior->m_oBehavior.clientVisualElement.m_bVisualShapeAtom)
{
ReadPropertyIgnoreShape (pContainer->timeEffectBehavior->m_oBehavior);
return pContainer->timeEffectBehavior->m_oBehavior.GetObjectID ();
}
}
if (pContainer->timeAnimateBehavior)
{
if (pContainer->timeAnimateBehavior->m_oBehavior.clientVisualElement.m_bVisualShapeAtom)
{
ReadPropertyIgnoreShape (pContainer->timeAnimateBehavior->m_oBehavior);
return pContainer->timeAnimateBehavior->m_oBehavior.GetObjectID ();
}
}
if (pContainer->timeSetBehavior)
{
if (pContainer->timeSetBehavior->behavior.clientVisualElement.m_bVisualShapeAtom)
{
ReadPropertyIgnoreShape (pContainer->timeSetBehavior->behavior);
return pContainer->timeSetBehavior->behavior.GetObjectID ();
}
}
if (pContainer->timeScaleBehavior)
{
if ( pContainer->timeScaleBehavior->behavior.clientVisualElement.m_bVisualShapeAtom )
{
ReadPropertyIgnoreShape (pContainer->timeScaleBehavior->behavior);
return pContainer->timeScaleBehavior->behavior.GetObjectID ();
}
}
if (pContainer->timeRotationBehavior)
{
if ( pContainer->timeRotationBehavior->behavior.clientVisualElement.m_bVisualShapeAtom )
{
ReadPropertyIgnoreShape (pContainer->timeRotationBehavior->behavior);
return pContainer->timeRotationBehavior->behavior.GetObjectID ();
}
}
if (pContainer->timeColorBehavior)
{
if ( pContainer->timeColorBehavior->behavior.clientVisualElement.m_bVisualShapeAtom )
{
ReadPropertyIgnoreShape (pContainer->timeColorBehavior->behavior);
return pContainer->timeColorBehavior->behavior.GetObjectID ();
}
}
}
return -1;
}
inline void CalculateTimeEffect (ExtTimeNodeContainer* pContainer)
{
m_dEffectDuration = pContainer->timeNodeAtom.m_nDuration;
MediumEffectDuration ( pContainer ); // получаем для все временные интервалы данного эффекта
MediumEffectTimeDelay ( pContainer ); // получаем все внутренние метки для данного эффткта
if (MediaCallEffect == m_oTopEffect.m_nEffectType)
{
if (!pContainer->rgExtTimeNodeChildren.empty())
{
ExtTimeNodeContainer* pChild = pContainer->rgExtTimeNodeChildren[0];
if (pChild)
{
if (pChild->timeNodeAtom.m_bDurationProperty)
{
m_dEffectDuration = pChild->timeNodeAtom.m_nDuration;
}
}
}
}
if ((int)m_arDurations.size() > 1)
{
m_dEffectDuration = m_arDurations[1];
if (FadeExitType == m_oTopEffect.m_nEffectType)
m_dEffectDuration = m_arDurations[0];
}
// TODO : для составных эффектов посчитаем время с помощью заглушек
if (/* BlindsEffect */( m_oTopEffect.m_nEffectID == 3 ||
/* BoxEffect */ m_oTopEffect.m_nEffectID == 4 ||
/* CheckBoardEffect */ m_oTopEffect.m_nEffectID == 5 ||
/* CircleEffect */ m_oTopEffect.m_nEffectID == 6 ||
/* DiamondEffect */ m_oTopEffect.m_nEffectID == 8 ||
/* DissolveEffect */ m_oTopEffect.m_nEffectID == 9 ||
/* PeekEffect */ m_oTopEffect.m_nEffectID == 12 ||
/* PlusEffect */ m_oTopEffect.m_nEffectID == 13 ||
/* RandomBarsEffect */ m_oTopEffect.m_nEffectID == 14 ||
/* SplitEffect */ m_oTopEffect.m_nEffectID == 16 ||
/* StripsEffect */ m_oTopEffect.m_nEffectID == 18 ||
/* WedgeEffect */ m_oTopEffect.m_nEffectID == 20 ||
/* WheelEffect */ m_oTopEffect.m_nEffectID == 21 ||
/* WipeEffect */ m_oTopEffect.m_nEffectID == 22 ) && 2 == m_oTopEffect.m_nEffectType )
{
m_dEffectDuration = m_arDurations[0];
}
if (43 == m_oTopEffect.m_nEffectID) // CenterRevolveEffect
{
if (5 == m_arDurations.size())
m_dEffectDuration = m_arDurations[0] + m_arDurations[1] + m_arDurations[3];
}
if (45 == m_oTopEffect.m_nEffectID) // FadedSwivel
{
}
if (55 == m_oTopEffect.m_nEffectID) // Expand
{
}
if (52 == m_oTopEffect.m_nEffectID) // RiseUp
{
}
if (30 == m_oTopEffect.m_nEffectID) // Float
{
if ((int)m_arDurations.size() > 5)
m_dEffectDuration = m_arDurations[1] + m_arDurations[5];
}
if (26 == m_oTopEffect.m_nEffectID)
{
if (!m_arDurations.empty() && !m_arBeginTimes.empty() )
m_dEffectDuration = m_arDurations.at(m_arDurations.size()-1) + m_arBeginTimes.at(m_arBeginTimes.size()-1);
}
if ( 32 == m_oTopEffect.m_nEffectID && 3 == m_oTopEffect.m_nEffectType ) // Teeter Effect
{
if ((int)m_arDurations.size())
m_dEffectDuration = m_arDurations[0] * 10.0;
}
if ( 26 == m_oTopEffect.m_nEffectID && 3 == m_oTopEffect.m_nEffectType ) // FlashBulb Effect
{
if ((int)m_arDurations.size() >= 2)
m_dEffectDuration = m_arDurations[0];
}
//debug::tracearrf (m_arDurations);
//debug::tracearrf (m_arBeginTimes);
m_arDurations.clear();
m_arBeginTimes.clear();
m_oNodeTiming.Push ( m_dEffectDuration, m_oTopEffect.m_nEffectNodeType );
}
inline bool MediumEffectDuration (ExtTimeNodeContainer* pContainer)
{
if ( pContainer->timeNodeAtom.m_bDurationProperty )
{
m_arDurations.push_back ( pContainer->timeNodeAtom.m_nDuration );
for ( int i = 0; i < (int)pContainer->rgExtTimeNodeChildren.size(); ++i )
{
if ( (WORD)RT_TimeExtTimeNodeContainer == pContainer->rgExtTimeNodeChildren [i]->m_oHeader.RecType )
MediumEffectDuration ( pContainer->rgExtTimeNodeChildren [i] );
}
}
return true;
}
inline bool MediumEffectTimeDelay (ExtTimeNodeContainer* pContainer)
{
if ( pContainer->timeNodeAtom.m_bDurationProperty )
{
if ( pContainer->timeCondition.size() )
{
m_arBeginTimes.push_back( static_cast<TimeConditionContainer*> ( pContainer->timeCondition[0] )->m_oTimeConditionAtom.m_nTimeDelay );
}
for ( int i = 0; i < (int)pContainer->rgExtTimeNodeChildren.size(); ++i )
{
if ( (WORD)RT_TimeExtTimeNodeContainer == pContainer->rgExtTimeNodeChildren [i]->m_oHeader.RecType )
MediumEffectTimeDelay ( pContainer->rgExtTimeNodeChildren [i] );
}
}
return true;
}
inline bool FindEffectMothionPath (ExtTimeNodeContainer* pContainer)
{
// сложные эффект может содержать в себе перемещение по траектории
if (52 == m_oTopEffect.m_nEffectID) // ArcUp
{
if ( pContainer->haveMotionBehavior )
{
m_ComposeEffectMothionPath = pContainer->timeMotionBehavior->m_VarPath.stringValue;
// debug::trace (m_ComposeEffectMothionPath);
return true;
}
for ( int i = 0; i < (int)pContainer->rgExtTimeNodeChildren.size(); ++i )
FindEffectMothionPath ( pContainer->rgExtTimeNodeChildren [i] );
return true;
}
return false;
}
inline void ReadPropertyIgnoreShape (const TimeBehaviorContainer& container)
{
if (2 == container.clientVisualElement.m_oVisualShapeAtom.m_Type) // указывает на то что анимация применяется к тексту
{
m_oTopEffect.m_bIgnoreShape = true;
m_oTopEffect.m_nTextSequence = container.clientVisualElement.m_oVisualShapeAtom.m_nData1; // номер параграфа - не нормальзован
m_oTopEffect.m_bRemoveEmptyBlocks = true;
for (size_t i = 0; i < m_arParIndexer.size(); ++i)
{
if (m_oTopEffect.m_nTextSequence == m_arParIndexer.at(i))
return;
}
m_arParIndexer.push_back (m_oTopEffect.m_nTextSequence);
}
}
inline bool UpdateParagraph ()
{
if (!m_arParIndexer.empty())
{
//ATLTRACE ( _T("====================PARAGRAPH==========================================\n"));
//qsort ( m_arParIndexer.GetData(), m_arParIndexer.size(), sizeof (long), (int(*)(const void*, const void*))sort );
sort(m_arParIndexer.begin(), m_arParIndexer.end());
for (std::map<_UINT32, Effects*>::iterator pPair = m_oAnimation.begin(); pPair != m_oAnimation.end(); ++pPair)
{
Effects* arEffects = pPair->second;
if (arEffects)
{
for (size_t i = 0; i < arEffects->size(); ++i)
{
Effect& oEffect = arEffects->at(i);
if (oEffect.m_nTextSequence >= 0)
{
for (size_t ind = 0; ind < m_arParIndexer.size(); ++ind)
{
if (oEffect.m_nTextSequence == m_arParIndexer.at(ind))
{
oEffect.m_nTextSequence = ind;
break;
}
}
}
}
}
}
return true;
}
return false;
}
//
inline void ProcessMediaCall (ExtTimeNodeContainer* pContainer)
{
if (MediaCallEffect == m_oTopEffect.m_nEffectType) // если анимация применена к VIDEO или AUDIO элементу
{
m_nMediaPush = GetAttachedShapeToVideo (pContainer); // если к видео добавлена картинка, надо учитывать смещение при поиск ID
if (GetMediaID (pContainer))
{
AddAnimation (pContainer, m_nMediaID);
m_bSaveEffect = true;
}
m_arrMedia.clear ();
}
}
inline int GetMediaID (ExtTimeNodeContainer* pContainer)
{
m_nMediaID = -1;
if (TL_TNT_Media == pContainer->GetNodeType ())
{
if (pContainer->clientVisualElement)
{
m_nMediaID = pContainer->clientVisualElement->m_oVisualShapeAtom.m_nObjectIdRef;
if (0 == m_nMediaPush)
return true;
--m_nMediaPush;
}
}
for (size_t i = 0; i < pContainer->rgExtTimeNodeChildren.size(); ++i )
{
if (GetMediaID(pContainer->rgExtTimeNodeChildren [i]))
return true;
}
return false;
}
inline bool GetAttachedShapeToVideo (ExtTimeNodeContainer* pContainer)
{
if (TL_TNT_Media == pContainer->GetNodeType ()) // нод типа Media
{
if (pContainer->clientVisualElement)
{
m_arrMedia.push_back (pContainer->clientVisualElement->m_oVisualShapeAtom.m_nObjectIdRef);
if (2 == (int)m_arrMedia.size()) // у видео есть статическое изображение
return true;
}
}
for (size_t i = 0; i < pContainer->rgExtTimeNodeChildren.size(); ++i )
{
if (CNodeTiming::AfterPreviousNode == pContainer->rgExtTimeNodeChildren [i]->GetEffectNodeType ()) // нод с описанием эффекта
return false;
if (GetAttachedShapeToVideo(pContainer->rgExtTimeNodeChildren [i]))
return true;
}
return false;
}
//
inline void Clear ()
{
for (std::map<_UINT32,Effects*>::iterator pPair = m_oAnimation.begin(); pPair != m_oAnimation.end(); ++pPair)
{
RELEASEOBJECT(pPair->second);
}
m_oAnimation.clear();
}
private:
Effect m_oAfterEffect;
bool m_bSaveEffect;
Effect m_oTopEffect;
CNodeTiming m_oNodeTiming;
double m_dEffectDuration;
TimeArray m_arDurations;
TimeArray m_arBeginTimes;
std::wstring m_ComposeEffectMothionPath;
bool m_HaveAfterEffect;
EffectsMap m_oAnimation;
CParagraphBuilds m_oParagraphBuilds;
std::vector <_INT32> m_arParIndexer;
// media
int m_nMediaID;
int m_nMediaShapeID;
int m_nMediaPush; // глубина поиска
std::vector <_INT32> m_arrMedia;
};
// TODO this struct
struct PP9SlideBinaryTagExtension : public CRecordsContainer
{
public:
PP9SlideBinaryTagExtension()
{
}
~PP9SlideBinaryTagExtension()
{
}
virtual void ReadFromStream ( SRecordHeader & oHeader, POLE::Stream* pStream )
{
m_oHeader = oHeader;
CUnknownRecord::ReadFromStream(m_oHeader, pStream);
}
};
struct PP10SlideBinaryTagExtension : public CUnknownRecord
{
public:
PP10SlideBinaryTagExtension ()
{
extTimeNodeContainer = NULL;
buildListContainer = NULL;
}
virtual ~PP10SlideBinaryTagExtension ()
{
RELEASEOBJECT (extTimeNodeContainer);
RELEASEOBJECT (buildListContainer);
}
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;
if (RT_TimeExtTimeNodeContainer == ReadHeader.RecType)
{
extTimeNodeContainer = new CRecordExtTimeNodeContainer ();
if (extTimeNodeContainer)
{
extTimeNodeContainer->ReadFromStream ( ReadHeader, pStream );
continue;
}
}
if (RT_BuildList == ReadHeader.RecType)
{
buildListContainer = new CRecordBuildListContainer ();
if (buildListContainer)
{
buildListContainer->ReadFromStream ( ReadHeader, pStream );
continue;
}
}
StreamUtils::StreamSkip ( ReadHeader.RecLen, pStream );
}
StreamUtils::StreamSeek ( lPos + m_oHeader.RecLen, pStream );
}
public:
//Animations::SlideTime10Atom m_oSlideTime10Atom;
//Animations::HashCode10Atom m_oHashCode10Atom;
CRecordExtTimeNodeContainer* extTimeNodeContainer; // ROOT
CRecordBuildListContainer* buildListContainer; // OPTIONAL
};
struct PP12SlideBinaryTagExtension : public CUnknownRecord
{
public:
PP12SlideBinaryTagExtension()
{
}
~PP12SlideBinaryTagExtension()
{
}
virtual void ReadFromStream ( SRecordHeader & oHeader, POLE::Stream* pStream )
{
m_oHeader = oHeader;
m_oRoundTripHeaderFooterDefaultsAtom.ReadFromStream(m_oHeader, pStream);
}
public:
CRecordRoundTripHeaderFooterDefaults12Atom m_oRoundTripHeaderFooterDefaultsAtom;
};
struct SlideProgTagsContainer : public CUnknownRecord
{
public:
SlideProgTagsContainer ()
{
}
virtual void ReadFromStream (SRecordHeader & oHeader, POLE::Stream* pStream)
{
m_oHeader = oHeader;
LONG lPos = 0;
StreamUtils::StreamPosition ( lPos, pStream );
m_oHeaderChild.ReadFromStream(pStream) ;
if ( RECORD_PROG_BINARY_TAG == m_oHeaderChild.RecType )
{
SRecordHeader rgSubRec;
rgSubRec.ReadFromStream(pStream) ;
WCHAR Name[9];
if (sizeof (wchar_t) == 4)
{
for (int i = 0; i < 8; i++)
Name[i] = (WCHAR)StreamUtils::ReadWORD(pStream);
Name[8] = L'\0';
}
else
{
pStream->read ((unsigned char*) Name, 16 );
Name[8] = L'\0';
}
tagName = std::wstring ( Name );
if ( std::wstring ( L"___PPT9" ) == tagName )
{
SRecordHeader rhData;
rhData.ReadFromStream(pStream) ;
// TODO PP9SlideBinaryTagExtension
m_oBinaryTagExtension = new PP9SlideBinaryTagExtension;
if (rhData.RecType == 0x138B && rhData.RecVersion == 0x0 && rhData.RecInstance == 0x000) // RT_BinaryTagDataBlob - 0x138B
{
m_oBinaryTagExtension->ReadFromStream (rhData, pStream);
}
} else if ( std::wstring ( L"___PPT10" ) == tagName )
{
SRecordHeader rhData;
rhData.ReadFromStream(pStream) ;
m_oBinaryTagExtension = new PP10SlideBinaryTagExtension;
if (rhData.RecType == 0x138B && rhData.RecVersion == 0x0 && rhData.RecInstance == 0x000) // RT_BinaryTagDataBlob - 0x138B
{
m_oBinaryTagExtension->ReadFromStream (rhData, pStream);
}
} else if ( std::wstring ( L"___PPT12" ) == tagName )
{
SRecordHeader rhData;
rhData.ReadFromStream(pStream) ;
m_oBinaryTagExtension = new PP12SlideBinaryTagExtension;
if (rhData.RecType == 0x138B && rhData.RecVersion == 0x0 && rhData.RecInstance == 0x000) // RT_BinaryTagDataBlob - 0x138B
{
m_oBinaryTagExtension->ReadFromStream (rhData, pStream);
}
}
}
StreamUtils::StreamSeek ( lPos + m_oHeader.RecLen, pStream );
}
inline CSlideTimeLine* GetTimeLine ()
{
if (tagName == L"___PPT10" and
dynamic_cast<PP10SlideBinaryTagExtension*>(m_oBinaryTagExtension)->extTimeNodeContainer)
{
CSlideTimeLine* pTimeLine = new CSlideTimeLine ();
if (pTimeLine)
{
if (pTimeLine->Build(
dynamic_cast<PP10SlideBinaryTagExtension*>
(m_oBinaryTagExtension)->extTimeNodeContainer))
return pTimeLine;
RELEASEOBJECT (pTimeLine);
}
}
return NULL;
}
public:
std::wstring tagName;
IRecord* m_oBinaryTagExtension;
SRecordHeader m_oHeaderChild;
};
}

View File

@ -32,91 +32,91 @@
#pragma once
#include "../Reader/Records.h"
class CRecordTextMasterStyle9Atom : public CUnknownRecord
{
public:
USHORT m_cLevels;
//class CRecordTextMasterStyle9Atom : public CUnknownRecord
//{
//public:
// USHORT m_cLevels;
CRecordTextMasterStyle9Atom()
{
}
// CRecordTextMasterStyle9Atom()
// {
// }
~CRecordTextMasterStyle9Atom()
{
}
// ~CRecordTextMasterStyle9Atom()
// {
// }
virtual void ReadFromStream(SRecordHeader & oHeader, POLE::Stream* pStream)
{
m_oHeader = oHeader;
// virtual void ReadFromStream(SRecordHeader & oHeader, POLE::Stream* pStream)
// {
// m_oHeader = oHeader;
LONG lPosition = 0;
StreamUtils::StreamPosition(lPosition, pStream);
// LONG lPosition = 0;
// StreamUtils::StreamPosition(lPosition, pStream);
m_nTextType = m_oHeader.RecInstance;
// USHORT m_nTextType = m_oHeader.RecInstance;
bool bIsLevelsPresent = (0x05 <= m_oHeader.RecInstance);
// bool bIsLevelsPresent = (0x05 <= m_oHeader.RecInstance);
int lLevels = StreamUtils::ReadWORD(pStream);
if (0 < lLevels)
LoadLevel(0, pStream, bIsLevelsPresent);
if (1 < lLevels)
LoadLevel(1, pStream, bIsLevelsPresent);
if (2 < lLevels)
LoadLevel(2, pStream, bIsLevelsPresent);
if (3 < lLevels)
LoadLevel(3, pStream, bIsLevelsPresent);
if (4 < lLevels)
LoadLevel(4, pStream, bIsLevelsPresent);
// int lLevels = StreamUtils::ReadWORD(pStream);
// if (0 < lLevels)
// LoadLevel(0, pStream, bIsLevelsPresent);
// if (1 < lLevels)
// LoadLevel(1, pStream, bIsLevelsPresent);
// if (2 < lLevels)
// LoadLevel(2, pStream, bIsLevelsPresent);
// if (3 < lLevels)
// LoadLevel(3, pStream, bIsLevelsPresent);
// if (4 < lLevels)
// LoadLevel(4, pStream, bIsLevelsPresent);
// походу нужно делать так: ----------------------------------------------
if (m_pLevels[0].is_init())
{
if (!m_pLevels[1].is_init())
m_pLevels[1] = m_pLevels[0].get();
else
m_pLevels[1]->ApplyBefore(m_pLevels[0].get());
}
if (m_pLevels[1].is_init())
{
if (!m_pLevels[2].is_init())
m_pLevels[2] = m_pLevels[1].get();
else
m_pLevels[2]->ApplyBefore(m_pLevels[1].get());
}
if (m_pLevels[2].is_init())
{
if (!m_pLevels[3].is_init())
m_pLevels[3] = m_pLevels[2].get();
else
m_pLevels[3]->ApplyBefore(m_pLevels[2].get());
}
if (m_pLevels[3].is_init())
{
if (!m_pLevels[4].is_init())
m_pLevels[4] = m_pLevels[3].get();
else
m_pLevels[4]->ApplyBefore(m_pLevels[3].get());
}
// -----------------------------------------------------------------------
// // походу нужно делать так: ----------------------------------------------
// if (m_pLevels[0].is_init())
// {
// if (!m_pLevels[1].is_init())
// m_pLevels[1] = m_pLevels[0].get();
// else
// m_pLevels[1]->ApplyBefore(m_pLevels[0].get());
// }
// if (m_pLevels[1].is_init())
// {
// if (!m_pLevels[2].is_init())
// m_pLevels[2] = m_pLevels[1].get();
// else
// m_pLevels[2]->ApplyBefore(m_pLevels[1].get());
// }
// if (m_pLevels[2].is_init())
// {
// if (!m_pLevels[3].is_init())
// m_pLevels[3] = m_pLevels[2].get();
// else
// m_pLevels[3]->ApplyBefore(m_pLevels[2].get());
// }
// if (m_pLevels[3].is_init())
// {
// if (!m_pLevels[4].is_init())
// m_pLevels[4] = m_pLevels[3].get();
// else
// m_pLevels[4]->ApplyBefore(m_pLevels[3].get());
// }
// // -----------------------------------------------------------------------
// это на всякий случай...
StreamUtils::StreamSeek(lPosition + m_oHeader.RecLen, pStream);
}
protected:
void LoadLevel(LONG lLevel, POLE::Stream* pStream, bool bIsLevelPresent)
{
LONG lLevelOld = lLevel;
// // это на всякий случай...
// StreamUtils::StreamSeek(lPosition + m_oHeader.RecLen, pStream);
// }
//protected:
// void LoadLevel(LONG lLevel, POLE::Stream* pStream, bool bIsLevelPresent)
// {
// LONG lLevelOld = lLevel;
if (bIsLevelPresent)
lLevel = StreamUtils::ReadSHORT(pStream);
// if (bIsLevelPresent)
// lLevel = StreamUtils::ReadSHORT(pStream);
CTextPFRunRecord oPF;
CTextCFRunRecord oCF;
oPF.LoadFromStream(pStream, false);
oCF.LoadFromStream(pStream, false);
// CTextPFRunRecord oPF;
// CTextCFRunRecord oCF;
// oPF.LoadFromStream(pStream, false);
// oCF.LoadFromStream(pStream, false);
m_pLevels[lLevelOld] = new PPT_FORMAT::CTextStyleLevel();
m_pLevels[lLevelOld]->m_oPFRun = oPF.m_oRun;
m_pLevels[lLevelOld]->m_oCFRun = oCF.m_oRun;
}
};
// m_pLevels[lLevelOld] = new PPT_FORMAT::CTextStyleLevel();
// m_pLevels[lLevelOld]->m_oPFRun = oPF.m_oRun;
// m_pLevels[lLevelOld]->m_oCFRun = oCF.m_oRun;
// }
//};

View File

@ -0,0 +1,44 @@
/*
* (c) Copyright Ascensio System SIA 2010-2019
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at 20A-12 Ernesta Birznieka-Upisha
* street, Riga, Latvia, EU, LV-1050.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#pragma once
#include "../Reader/Records.h"
namespace PPT_FORMAT
{
struct TextMasterStyle9Level
{
void ReadFromStream(POLE::Stream* pStream){
}
};
}

View File

@ -31,15 +31,20 @@
*/
#pragma once
#include "../Reader/Records.h"
#include "../Structures/PointStruct.h"
#include "../Structures/ScalingStruct.h"
namespace PPT_FORMAT
{
class CRecordZoomViewInfoAtom : public CUnknownRecord
{
public:
SScalingAtom m_oCurScale;
SPointAtom m_nOrigin;
ScalingStruct m_oCurScale;
PointStruct m_oOrigin;
BOOL1 m_bUseVarScale;
BOOL1 m_bDraftMode;
BOOL1 m_fUseVarScale;
BOOL1 m_fDraftMode;
CRecordZoomViewInfoAtom()
{
@ -51,6 +56,18 @@ public:
virtual void ReadFromStream(SRecordHeader & oHeader, POLE::Stream* pStream)
{
return CUnknownRecord::ReadFromStream(oHeader, pStream);
m_oHeader = oHeader;
m_oCurScale.ReadFromStream(pStream);
StreamUtils::StreamSkip(24, pStream);
m_oOrigin.ReadFromStream(pStream);
m_fUseVarScale = StreamUtils::ReadBYTE(pStream);
m_fDraftMode = StreamUtils::ReadBYTE(pStream);
StreamUtils::StreamSkip(2, pStream);
}
};
};
}

View File

@ -29,21 +29,27 @@
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#pragma once
#include "../Records/RecordsIncluder.h"
struct SColorIndex {
#include "IStruct.h"
namespace PPT_FORMAT
{
struct ColorStruct {
BYTE m_red;
BYTE m_green;
BYTE m_blue;
BYTE m_index;
ColorStruct()
{
clear();
}
void clear()
{
m_red = m_green = m_blue = 0;
m_index = 0xFF; // Color is undefined.
}
void ReadFromStream(POLE::Stream * pStream)
@ -51,8 +57,7 @@ struct SColorIndex {
m_red = StreamUtils::ReadBYTE(pStream);
m_green = StreamUtils::ReadBYTE(pStream);
m_blue = StreamUtils::ReadBYTE(pStream);
m_index = StreamUtils::ReadBYTE(pStream);
StreamUtils::StreamSkip(1, pStream);
}
};
}

View File

@ -0,0 +1,69 @@
/*
* (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 "IStruct.h"
namespace PPT_FORMAT
{
struct DateTimeStruct : public IStruct
{
WORD m_wYear;
WORD m_wMonth;
WORD m_wDayOfWeek;
WORD m_wDay;
WORD m_wHour;
WORD m_wMinute;
WORD m_wSecond;
WORD m_wMilliseconds;
DateTimeStruct() :
m_wYear(0), m_wMonth(0), m_wDayOfWeek(0), m_wDay(0),
m_wHour(0), m_wMinute(0), m_wSecond(0), m_wMilliseconds(0)
{}
void ReadFromStream(POLE::Stream *pStream) override
{
m_wYear = StreamUtils::ReadWORD(pStream);
m_wMonth = StreamUtils::ReadWORD(pStream);
m_wDayOfWeek = StreamUtils::ReadWORD(pStream);
m_wDay = StreamUtils::ReadWORD(pStream);
m_wHour = StreamUtils::ReadWORD(pStream);
m_wMinute = StreamUtils::ReadWORD(pStream);
m_wSecond = StreamUtils::ReadWORD(pStream);
m_wMilliseconds = StreamUtils::ReadWORD(pStream);
}
};
}

View File

@ -0,0 +1,41 @@
/*
* (c) Copyright Ascensio System SIA 2010-2019
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at 20A-12 Ernesta Birznieka-Upisha
* street, Riga, Latvia, EU, LV-1050.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#pragma once
#include "../../../Common/DocxFormat/Source/Base/Types_32.h"
#include "../../../Common/DocxFormat/Source/SystemUtility/File.h"
namespace PPT_FORMAT {
struct IStruct {
virtual void ReadFromStream (POLE::Stream* pStream) = 0;
};
}

View File

@ -0,0 +1,49 @@
/*
* (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 "IStruct.h"
namespace PPT_FORMAT {
struct PointStruct : public IStruct
{
_UINT32 m_x;
_UINT32 m_y;
void ReadFromStream(POLE::Stream *pStream) override
{
m_x = StreamUtils::ReadLONG(pStream);
m_y = StreamUtils::ReadLONG(pStream);
}
};
}

View File

@ -0,0 +1,51 @@
/*
* (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 "IStruct.h"
namespace PPT_FORMAT
{
struct RatioStruct : public IStruct
{
LONG m_nNumber;
LONG m_nDenom;
void ReadFromStream(POLE::Stream* pStream) override
{
m_nNumber = StreamUtils::ReadLONG(pStream);
m_nDenom = StreamUtils::ReadLONG(pStream);
}
};
}

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 "IStruct.h"
namespace PPT_FORMAT
{
struct RectStruct : public IStruct
{
_INT32 m_nTop;
_INT32 m_nLeft;
_INT32 m_nRight;
_INT32 m_nBottom;
void ReadFromStream(POLE::Stream *pStream) override
{
m_nTop = StreamUtils::ReadLONG(pStream);
m_nLeft = StreamUtils::ReadLONG(pStream);
m_nRight = StreamUtils::ReadLONG(pStream);
m_nBottom = StreamUtils::ReadLONG(pStream);
}
};
}

View File

@ -0,0 +1,51 @@
/*
* (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 "IStruct.h"
#include "RatioStruct.h"
namespace PPT_FORMAT
{
struct ScalingStruct : public IStruct
{
RatioStruct m_x;
RatioStruct m_y;
void ReadFromStream(POLE::Stream* pStream) override
{
m_x.ReadFromStream(pStream);
m_y.ReadFromStream(pStream);
}
};
}

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 "IStruct.h"
namespace PPT_FORMAT
{
struct SmallRectStruct : public IStruct
{
_INT16 m_nTop;
_INT16 m_nLeft;
_INT16 m_nRight;
_INT16 m_nBottom;
void ReadFromStream(POLE::Stream *pStream) override
{
m_nTop = StreamUtils::ReadSHORT(pStream);
m_nLeft = StreamUtils::ReadSHORT(pStream);
m_nRight = StreamUtils::ReadSHORT(pStream);
m_nBottom = StreamUtils::ReadSHORT(pStream);
}
};
}

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 "IStruct.h"
namespace PPT_FORMAT
{
struct TmsfTimeStruct : public IStruct
{
BYTE m_nTrack;
BYTE m_nMinute;
BYTE m_nSecond;
BYTE m_nFrame;
void ReadFromStream(POLE::Stream *pStream) override
{
m_nTrack = StreamUtils::ReadBYTE(pStream);
m_nMinute = StreamUtils::ReadBYTE(pStream);
m_nSecond = StreamUtils::ReadBYTE(pStream);
m_nFrame = StreamUtils::ReadBYTE(pStream);
}
};
}

View File

@ -0,0 +1,53 @@
/*
* (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 "IStruct.h"
namespace PPT_FORMAT
{
struct WideColorStruct : IStruct
{
USHORT m_nRed;
USHORT m_nGreen;
USHORT m_nBlue;
void ReadFromStream(POLE::Stream *pStream) override
{
m_nRed = StreamUtils::ReadWORD(pStream);
m_nGreen = StreamUtils::ReadWORD(pStream);
m_nBlue = StreamUtils::ReadWORD(pStream);
}
};
}

View File

@ -0,0 +1,44 @@
/*
* (c) Copyright Ascensio System SIA 2010-2019
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at 20A-12 Ernesta Birznieka-Upisha
* street, Riga, Latvia, EU, LV-1050.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#pragma once
#include "ColorIndex.h"
#include "ColorStruct.h"
#include "PointStruct.h"
#include "WideColorStruct.h"
#include "DateTimeStruct.h"
#include "RatioStruct.h"
#include "RectStruct.h"
#include "SmallRectStruct.h"
#include "ScalingStruct.h"
#include "TmsfTimeStruct.h"

View File

@ -31,49 +31,11 @@
*/
#pragma once
#include "Element.h"
#include "../../../ASCOfficePPTFile/PPTFormatLib/Enums/_includer.h"
namespace PPT_FORMAT
{
enum eSlideSize
{
SS_Screen = 0,
SS_LetterPaper = 1,
SS_A4Paper = 2,
SS_35mm = 3,
SS_Overhead = 4,
SS_Banner = 5,
SS_Custom = 6
};
enum ePlaceholderType
{
PT_None = 0,
PT_MasterTitle = 1,
PT_MasterBody = 2,
PT_MasterCenterTitle = 3,
PT_MasterSubTitle = 4,
PT_MasterNotesSlideImage = 5,
PT_MasterNotesBody = 6,
PT_MasterDate = 7,
PT_MasterSlideNumber = 8,
PT_MasterFooter = 9,
PT_MasterHeader = 10,
PT_NotesSlideImage = 11,
PT_NotesBody = 12,
PT_Title = 13,
PT_Body = 14,
PT_CenterTitle = 15,
PT_SubTitle = 16,
PT_VerticalTitle = 17,
PT_VerticalBody = 18,
PT_Object = 19,
PT_Graph = 20,
PT_Table = 21,
PT_ClipArt = 22,
PT_OrgChart = 23,
PT_Media = 24,
PT_Body_Empty = 25
};
enum Instances
{
@ -82,37 +44,7 @@ namespace PPT_FORMAT
CollectionOfNotesSlides = 2
};
enum eSlideLayoutType
{
SL_TitleSlide = 0,
SL_TitleBody = 1,
SL_MasterTitle = 2,
SL_TitleOnly = 7,
SL_TwoColumns = 8,
SL_TwoRows = 9,
SL_ColumnTwoRows = 10,
SL_TwoRowsColumn = 11,
SL_TwoColumnsRow = 13,
SL_FourObjects = 14,
SL_BigObject = 15,
SL_Blank = 16,
SL_VerticalTitleBody = 17,
SL_VerticalTwoRows = 18
};
enum eTextType
{
Tx_TYPE_TITLE = 0,
Tx_TYPE_BODY = 1,
Tx_TYPE_NOTES = 2,
Tx_TYPE_OTHER = 4,
Tx_TYPE_CENTERBODY = 5,
Tx_TYPE_CENTERTITLE = 6,
Tx_TYPE_HALFBODY = 7,
Tx_TYPE_QUARTERBODY = 8,
NoPresent = 0xFF
};
static void CorrectPlaceholderType(int & type)
{
switch (type)