diff options
author | RĂ¼diger Timm <rt@openoffice.org> | 2004-11-26 19:33:24 +0000 |
---|---|---|
committer | RĂ¼diger Timm <rt@openoffice.org> | 2004-11-26 19:33:24 +0000 |
commit | 8f1c562b841b2d0f8febac147d19537f565c84a4 (patch) | |
tree | ac1cf8f8bd33c52b43766345c91f559d97b01a68 /sd/source/ui/view/drviewsi.cxx | |
parent | INTEGRATION: CWS presentationengine01 (1.6.12); FILE MERGED (diff) | |
download | core-8f1c562b841b2d0f8febac147d19537f565c84a4.tar.gz core-8f1c562b841b2d0f8febac147d19537f565c84a4.zip |
INTEGRATION: CWS presentationengine01 (1.11.10); FILE MERGED
2004/08/28 22:56:58 cl 1.11.10.3: removed old presentation code
2004/07/23 15:10:14 thb 1.11.10.2: RESYNC: (1.11-1.13); FILE MERGED
2004/05/04 14:47:35 cl 1.11.10.1: added initial smil ui
Diffstat (limited to 'sd/source/ui/view/drviewsi.cxx')
-rw-r--r-- | sd/source/ui/view/drviewsi.cxx | 986 |
1 files changed, 2 insertions, 984 deletions
diff --git a/sd/source/ui/view/drviewsi.cxx b/sd/source/ui/view/drviewsi.cxx index 1b56175473ab..e891d5fefcc1 100644 --- a/sd/source/ui/view/drviewsi.cxx +++ b/sd/source/ui/view/drviewsi.cxx @@ -2,9 +2,9 @@ * * $RCSfile: drviewsi.cxx,v $ * - * $Revision: 1.14 $ + * $Revision: 1.15 $ * - * last change: $Author: pjunck $ $Date: 2004-10-28 13:35:10 $ + * last change: $Author: rt $ $Date: 2004-11-26 20:33:24 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -119,12 +119,6 @@ #include "drawdoc.hxx" #include "DrawDocShell.hxx" -#ifndef SD_EFFECT_CHILD_WINDOW_HXX -#include "EffectChildWindow.hxx" -#endif -#ifndef SD_EFFECT_HXX -#include "EffectWindow.hxx" -#endif #include "anminfo.hxx" #include "unoaprms.hxx" // Undo-Action #include "sdundogr.hxx" // Undo Gruppe @@ -165,45 +159,6 @@ void DrawViewShell::ExecEffectWin( SfxRequest& rReq ) switch( nSId ) { - case SID_EFFECT_INIT: - { - USHORT nId = EffectChildWindow::GetChildWindowId(); - SfxChildWindow* pWindow = GetViewFrame()->GetChildWindow( nId ); - if( pWindow ) - { - EffectWindow* pEffectWin = static_cast<EffectWindow*>( - pWindow->GetWindow()); - if( pEffectWin ) - pEffectWin->InitColorLB( GetDoc() ); - } - } - break; - - case SID_EFFECT_STATE: - { - UpdateEffectWindow(); - } - break; - - case SID_EFFECT_ASSIGN: - { - AssignFromEffectWindow(); - } - break; - - // Diawechsel-Window - case SID_SLIDE_CHANGE_STATE: - { - UpdateSlideChangeWindow(); - } - break; - - case SID_SLIDE_CHANGE_ASSIGN: - { - AssignFromSlideChangeWindow(GetEditMode()); - } - break; - case SID_3D_INIT: { USHORT nId = Svx3DChildWindow::GetChildWindowId(); @@ -234,943 +189,6 @@ void DrawViewShell::ExecEffectWin( SfxRequest& rReq ) /************************************************************************* |* -|* Statuswerte fuer EffekteWindow zurueckgeben -|* -\************************************************************************/ - -void DrawViewShell::GetEffectWinState( SfxItemSet& rSet ) -{ - UINT32 nState = EFFECT_STATE_NONE; - - const SdrMarkList& rMarkList = pDrView->GetMarkedObjectList(); - ULONG nCount = rMarkList.GetMarkCount(); - - if( nCount > 0 ) - { - nState |= EFFECT_COUNT; - - // Genau zwei Objekte ? -> Pfadeffekt moeglich ? - if( nCount == 2 ) - { - SdrObject* pObject1 = rMarkList.GetMark(0)->GetObj(); - SdrObject* pObject2 = rMarkList.GetMark(1)->GetObj(); - SdrObjKind eKind1 = (SdrObjKind)pObject1->GetObjIdentifier(); - SdrObjKind eKind2 = (SdrObjKind)pObject2->GetObjIdentifier(); - //SdAnimationInfo* pInfo1 = GetDoc()->GetAnimationInfo(pObject1); - //SdAnimationInfo* pInfo2 = GetDoc()->GetAnimationInfo(pObject2); - //SdAnimationInfo* pInfo = NULL; - - if( ( ( pObject1->GetObjInventor() == SdrInventor && - ( eKind1 == OBJ_LINE) || (eKind1 == OBJ_PLIN) || (eKind1 == OBJ_PATHLINE) ) || - ( pObject2->GetObjInventor() == SdrInventor && - ( eKind2 == OBJ_LINE) || (eKind2 == OBJ_PLIN) || (eKind2 == OBJ_PATHLINE) ) ) && - ( pObject1->GetUpGroup() == pObject2->GetUpGroup() ) ) - { - nState |= EFFECT_PATH; - } - } - } - rSet.Put( SfxUInt32Item( SID_EFFECT_STATE, nState ) ); -} - -/************************************************************************* -|* -|* EffekteWindow updaten -|* -\************************************************************************/ - -void DrawViewShell::UpdateEffectWindow() -{ - USHORT nId = EffectChildWindow::GetChildWindowId(); - SfxChildWindow* pWindow = GetViewFrame()->GetChildWindow( nId ); - if( pWindow ) - { - EffectWindow* pEffectWin = static_cast<EffectWindow*>( - pWindow->GetWindow()); - const SdrMarkList& rMarkList = pDrView->GetMarkedObjectList(); - ULONG nCount = rMarkList.GetMarkCount(); - - if( pEffectWin && pEffectWin->IsUpdateMode() ) - { - if( nCount ) - { - // Der Code stammt aus fuoaprms.cxx und - // sollte verallgemeinert werden !!! - ULONG nObject = 0; - - short nAnimationSet = ATTR_MISSING; - short nEffectSet = ATTR_MISSING; - short nTextEffectSet = ATTR_MISSING; - short nSpeedSet = ATTR_MISSING; - short nFadeColorSet = ATTR_MISSING; - short nFadeOutSet = ATTR_MISSING; - short nInvisibleSet = ATTR_MISSING; - short nSoundOnSet = ATTR_MISSING; - short nSoundFileSet = ATTR_MISSING; - short nPlayFullSet = ATTR_MISSING; - short nClickActionSet = ATTR_MISSING; - short nBookmarkSet = ATTR_MISSING; - - short nSecondEffectSet = ATTR_MISSING; - short nSecondSpeedSet = ATTR_MISSING; - short nSecondSoundOnSet = ATTR_MISSING; - short nSecondPlayFullSet = ATTR_MISSING; - - - - // BOOL bDontKnow = FALSE; - - // defaulten (fuer Undo-Aktion) - presentation::AnimationEffect eEffect = presentation::AnimationEffect_NONE; - presentation::AnimationEffect eTextEffect = presentation::AnimationEffect_NONE; - presentation::AnimationSpeed eSpeed = presentation::AnimationSpeed_MEDIUM; - BOOL bActive = FALSE; - BOOL bFadeOut = FALSE; - Color aFadeColor = COL_LIGHTGRAY; - BOOL bInvisible = FALSE; - BOOL bSoundOn = FALSE; - String aSound; - BOOL bPlayFull = FALSE; - presentation::ClickAction eClickAction = presentation::ClickAction_NONE; - String aBookmark; - - presentation::AnimationEffect eSecondEffect = presentation::AnimationEffect_NONE; - presentation::AnimationSpeed eSecondSpeed = presentation::AnimationSpeed_MEDIUM; - BOOL bSecondSoundOn = FALSE; - BOOL bSecondPlayFull = FALSE; - - - SdAnimationInfo* pInfo; - SdrMark* pMark; - - // das erste Objekt untersuchen - pMark = rMarkList.GetMark(0); - SdrObject* pObject = pMark->GetObj(); - - // find out, if there is any object, which contain text - BOOL bHasText = FALSE; - if( pObject->ISA(SdrTextObj) && ((SdrTextObj*)pObject)->HasText() && !((SdrTextObj*)pObject)->IsFontwork() ) - bHasText = bHasText || TRUE; - - pInfo = GetDoc()->GetAnimationInfo(pObject); - if( pInfo ) - { - bActive = pInfo->bActive; - nAnimationSet = ATTR_SET; - - eEffect = pInfo->eEffect; - nEffectSet = ATTR_SET; - - eTextEffect = pInfo->eTextEffect; - nTextEffectSet = ATTR_SET; - - eSpeed = pInfo->eSpeed; - nSpeedSet = ATTR_SET; - - bFadeOut = pInfo->bDimPrevious; - nFadeOutSet = ATTR_SET; - - aFadeColor = pInfo->aDimColor; - nFadeColorSet = ATTR_SET; - - bInvisible = pInfo->bDimHide; - nInvisibleSet = ATTR_SET; - - bSoundOn = pInfo->bSoundOn; - nSoundOnSet = ATTR_SET; - - aSound = pInfo->aSoundFile; - nSoundFileSet = ATTR_SET; - - bPlayFull = pInfo->bPlayFull; - nPlayFullSet = ATTR_SET; - - eClickAction = pInfo->eClickAction; - nClickActionSet = ATTR_SET; - - aBookmark = pInfo->aBookmark; - nBookmarkSet = ATTR_SET; - - eSecondEffect = pInfo->eSecondEffect; - nSecondEffectSet = ATTR_SET; - - eSecondSpeed = pInfo->eSecondSpeed; - nSecondSpeedSet = ATTR_SET; - - bSecondSoundOn = pInfo->bSecondSoundOn; - nSecondSoundOnSet = ATTR_SET; - - bSecondPlayFull = pInfo->bSecondPlayFull; - nSecondPlayFullSet = ATTR_SET; - } - - // ggfs. weitere Objekte untersuchen - for( nObject = 1; nObject < nCount; nObject++ ) - { - pMark = rMarkList.GetMark( nObject ); - SdrObject* pObject = pMark->GetObj(); - - if( pObject->ISA(SdrTextObj) && ((SdrTextObj*)pObject)->HasText() && !((SdrTextObj*)pObject)->IsFontwork() ) - bHasText = bHasText || TRUE; - - pInfo = GetDoc()->GetAnimationInfo(pObject); - if( pInfo ) - { - if( bActive != pInfo->bActive ) - nAnimationSet = ATTR_MIXED; - - if( eEffect != pInfo->eEffect ) - nEffectSet = ATTR_MIXED; - - if( eTextEffect != pInfo->eTextEffect ) - nTextEffectSet = ATTR_MIXED; - - if( eSpeed != pInfo->eSpeed ) - nSpeedSet = ATTR_MIXED; - - if( bFadeOut != pInfo->bDimPrevious ) - nFadeOutSet = ATTR_MIXED; - - if( aFadeColor != pInfo->aDimColor ) - nFadeColorSet = ATTR_MIXED; - - if( bInvisible != pInfo->bDimHide ) - nInvisibleSet = ATTR_MIXED; - - if( bSoundOn != pInfo->bSoundOn ) - nSoundOnSet = ATTR_MIXED; - - if( aSound != pInfo->aSoundFile ) - nSoundFileSet = ATTR_MIXED; - - if( bPlayFull != pInfo->bPlayFull ) - nPlayFullSet = ATTR_MIXED; - - if( eClickAction != pInfo->eClickAction ) - nClickActionSet = ATTR_MIXED; - - if( aBookmark != pInfo->aBookmark ) - nBookmarkSet = ATTR_MIXED; - - if( eSecondEffect != pInfo->eSecondEffect ) - nSecondEffectSet = ATTR_MIXED; - - if( eSecondSpeed != pInfo->eSecondSpeed ) - nSecondSpeedSet = ATTR_MIXED; - - if( bSecondSoundOn != pInfo->bSecondSoundOn ) - nSecondSoundOnSet = ATTR_MIXED; - - if( bSecondPlayFull != pInfo->bSecondPlayFull ) - nSecondPlayFullSet = ATTR_MIXED; - } - else - { - if (nAnimationSet == ATTR_SET && bActive == TRUE) - nAnimationSet = ATTR_MIXED; - - if (nEffectSet == ATTR_SET && eEffect != presentation::AnimationEffect_NONE) - nEffectSet = ATTR_MIXED; - - if (nTextEffectSet == ATTR_SET && eTextEffect != presentation::AnimationEffect_NONE) - nTextEffectSet = ATTR_MIXED; - - if (nSpeedSet == ATTR_SET) - nSpeedSet = ATTR_MIXED; - - if (nFadeOutSet == ATTR_SET && bFadeOut == TRUE) - nFadeOutSet = ATTR_MIXED; - - if (nFadeColorSet == ATTR_SET) - nFadeColorSet = ATTR_MIXED; - - if (nInvisibleSet == ATTR_SET && bInvisible == TRUE) - nInvisibleSet = ATTR_MIXED; - - if (nSoundOnSet == ATTR_SET && bSoundOn == TRUE) - nSoundOnSet = ATTR_MIXED; - - if (nSoundFileSet == ATTR_SET) - nSoundFileSet = ATTR_MIXED; - - if (nPlayFullSet == ATTR_SET && bPlayFull == TRUE) - nPlayFullSet = ATTR_MIXED; - - if (nClickActionSet == ATTR_SET && eClickAction != presentation::ClickAction_NONE) - nClickActionSet = ATTR_MIXED; - - if (nBookmarkSet == ATTR_SET) - nBookmarkSet = ATTR_MIXED; - - if (nSecondEffectSet == ATTR_SET && eSecondEffect != presentation::AnimationEffect_NONE) - nSecondEffectSet = ATTR_MIXED; - - if (nSecondSpeedSet == ATTR_SET) - nSecondSpeedSet = ATTR_MIXED; - - if (nSecondSoundOnSet == ATTR_SET && bSecondSoundOn == TRUE) - nSecondSoundOnSet = ATTR_MIXED; - - if (nSecondPlayFullSet == ATTR_SET && bSecondPlayFull == TRUE) - nSecondPlayFullSet = ATTR_MIXED; - } - } - - // Genau zwei Objekte mit Pfadeffekt? Dann gilt nur die Animationsinfo - // am bewegten Objekt. - if (nCount == 2) - { - SdrObject* pObject1 = rMarkList.GetMark(0)->GetObj(); - SdrObject* pObject2 = rMarkList.GetMark(1)->GetObj(); - SdrObjKind eKind1 = (SdrObjKind)pObject1->GetObjIdentifier(); - SdrObjKind eKind2 = (SdrObjKind)pObject2->GetObjIdentifier(); - SdAnimationInfo* pInfo1 = GetDoc()->GetAnimationInfo(pObject1); - SdAnimationInfo* pInfo2 = GetDoc()->GetAnimationInfo(pObject2); - SdAnimationInfo* pInfo = NULL; - - if (pObject1->GetObjInventor() == SdrInventor && - ((eKind1 == OBJ_LINE) || // 2-Punkt-Linie - (eKind1 == OBJ_PLIN) || // Polygon - (eKind1 == OBJ_PATHLINE)) && // Bezier-Kurve - (pInfo2 && pInfo2->eEffect == presentation::AnimationEffect_PATH)) - { - pInfo = pInfo2; - } - - if (pObject2->GetObjInventor() == SdrInventor && - ((eKind2 == OBJ_LINE) || // 2-Punkt-Linie - (eKind2 == OBJ_PLIN) || // Polygon - (eKind2 == OBJ_PATHLINE)) && // Bezier-Kurve - (pInfo1 && pInfo1->eEffect == presentation::AnimationEffect_PATH)) - { - pInfo = pInfo1; - } - - if (pInfo) - { - bActive = pInfo->bActive; nAnimationSet = ATTR_SET; - eEffect = pInfo->eEffect; nEffectSet = ATTR_SET; - eTextEffect = pInfo->eTextEffect; nTextEffectSet = ATTR_SET; - eSpeed = pInfo->eSpeed; nSpeedSet = ATTR_SET; - bFadeOut = pInfo->bDimPrevious; nFadeOutSet = ATTR_SET; - aFadeColor = pInfo->aDimColor; nFadeColorSet = ATTR_SET; - bInvisible = pInfo->bDimHide; nInvisibleSet = ATTR_SET; - bSoundOn = pInfo->bSoundOn; nSoundOnSet = ATTR_SET; - aSound = pInfo->aSoundFile; nSoundFileSet = ATTR_SET; - bPlayFull = pInfo->bPlayFull; nPlayFullSet = ATTR_SET; - eClickAction = pInfo->eClickAction; nClickActionSet = ATTR_SET; - aBookmark = pInfo->aBookmark; nBookmarkSet = ATTR_SET; - eSecondEffect = pInfo->eSecondEffect; nSecondEffectSet = ATTR_SET; - eSecondSpeed = pInfo->eSecondSpeed; nSecondSpeedSet = ATTR_SET; - bSecondSoundOn = pInfo->bSecondSoundOn; nSecondSoundOnSet = ATTR_SET; - bSecondPlayFull = pInfo->bSecondPlayFull; nSecondPlayFullSet = ATTR_SET; - } - } - - // ItemSet fuer Dialog fuellen - SfxItemSet aSet(GetDoc()->GetPool(), ATTR_ANIMATION_START, ATTR_ACTION_END, 0); - - // das Set besetzen - if (nAnimationSet == ATTR_SET) - aSet.Put( SfxBoolItem( ATTR_ANIMATION_ACTIVE, bActive)); - else if (nAnimationSet == ATTR_MIXED) - aSet.InvalidateItem(ATTR_ANIMATION_ACTIVE); - else - aSet.Put(SfxBoolItem(ATTR_ANIMATION_ACTIVE, FALSE)); - - if (nEffectSet == ATTR_SET) - aSet.Put(SfxAllEnumItem(ATTR_ANIMATION_EFFECT, eEffect)); - else if (nEffectSet == ATTR_MIXED) - aSet.InvalidateItem( ATTR_ANIMATION_EFFECT ); - else - aSet.Put(SfxAllEnumItem(ATTR_ANIMATION_EFFECT, presentation::AnimationEffect_NONE)); - - if( bHasText ) - { - if (nTextEffectSet == ATTR_SET) - aSet.Put(SfxAllEnumItem(ATTR_ANIMATION_TEXTEFFECT, eTextEffect)); - else if (nTextEffectSet == ATTR_MIXED) - aSet.InvalidateItem( ATTR_ANIMATION_TEXTEFFECT ); - else - aSet.Put(SfxAllEnumItem(ATTR_ANIMATION_TEXTEFFECT, presentation::AnimationEffect_NONE)); - } - else - aSet.DisableItem( ATTR_ANIMATION_TEXTEFFECT ); - - if (nSpeedSet == ATTR_SET) - aSet.Put(SfxAllEnumItem(ATTR_ANIMATION_SPEED, eSpeed)); - else - aSet.InvalidateItem(ATTR_ANIMATION_SPEED); - - if (nFadeOutSet == ATTR_SET) - aSet.Put(SfxBoolItem(ATTR_ANIMATION_FADEOUT, bFadeOut)); - else if (nFadeOutSet == ATTR_MIXED) - aSet.InvalidateItem(ATTR_ANIMATION_FADEOUT); - else - aSet.Put(SfxBoolItem(ATTR_ANIMATION_FADEOUT, FALSE)); - - if (nFadeColorSet == ATTR_SET) - aSet.Put(SvxColorItem(aFadeColor, ATTR_ANIMATION_COLOR)); - else if (nFadeColorSet == ATTR_MIXED) - aSet.InvalidateItem(ATTR_ANIMATION_COLOR); - else - aSet.Put(SvxColorItem( RGB_Color( COL_LIGHTGRAY ), ATTR_ANIMATION_COLOR)); - - if (nInvisibleSet == ATTR_SET) - aSet.Put(SfxBoolItem(ATTR_ANIMATION_INVISIBLE, bInvisible)); - else if (nInvisibleSet == ATTR_MIXED) - aSet.InvalidateItem(ATTR_ANIMATION_INVISIBLE); - else - aSet.Put(SfxBoolItem(ATTR_ANIMATION_INVISIBLE, FALSE)); - - if (nSoundOnSet == ATTR_SET) - aSet.Put(SfxBoolItem(ATTR_ANIMATION_SOUNDON, bSoundOn)); - else if (nSoundOnSet == ATTR_MIXED) - aSet.InvalidateItem(ATTR_ANIMATION_SOUNDON); - else - aSet.Put(SfxBoolItem(ATTR_ANIMATION_SOUNDON, FALSE)); - - if (nSoundFileSet == ATTR_SET) - aSet.Put(SfxStringItem(ATTR_ANIMATION_SOUNDFILE, aSound)); - else - aSet.InvalidateItem(ATTR_ANIMATION_SOUNDFILE); - - if (nPlayFullSet == ATTR_SET) - aSet.Put(SfxBoolItem(ATTR_ANIMATION_PLAYFULL, bPlayFull)); - else if (nPlayFullSet == ATTR_MIXED) - aSet.InvalidateItem(ATTR_ANIMATION_PLAYFULL); - else - aSet.Put(SfxBoolItem(ATTR_ANIMATION_PLAYFULL, FALSE)); - - if (nClickActionSet == ATTR_SET) - aSet.Put(SfxAllEnumItem(ATTR_ACTION, eClickAction)); - else if (nClickActionSet == ATTR_MIXED) - aSet.InvalidateItem(ATTR_ACTION); - else - aSet.Put(SfxAllEnumItem(ATTR_ACTION, presentation::ClickAction_NONE)); - - if (nBookmarkSet == ATTR_SET) - aSet.Put(SfxStringItem(ATTR_ACTION_FILENAME, aBookmark)); - else - aSet.InvalidateItem(ATTR_ACTION_FILENAME); - - if (nSecondEffectSet == ATTR_SET) - aSet.Put(SfxAllEnumItem(ATTR_ACTION_EFFECT, eSecondEffect)); - else if (nSecondEffectSet == ATTR_MIXED) - aSet.InvalidateItem( ATTR_ACTION_EFFECT ); - else - aSet.Put(SfxAllEnumItem(ATTR_ACTION_EFFECT, presentation::AnimationEffect_NONE)); - - if (nSecondSpeedSet == ATTR_SET) - aSet.Put(SfxAllEnumItem(ATTR_ACTION_EFFECTSPEED, eSecondSpeed)); - else - aSet.InvalidateItem(ATTR_ACTION_EFFECTSPEED); - - if (nSecondSoundOnSet == ATTR_SET) - aSet.Put(SfxBoolItem(ATTR_ACTION_SOUNDON, bSecondSoundOn)); - else if (nSecondSoundOnSet == ATTR_MIXED) - aSet.InvalidateItem(ATTR_ACTION_SOUNDON); - else - aSet.Put(SfxBoolItem(ATTR_ACTION_SOUNDON, FALSE)); - - if (nSecondPlayFullSet == ATTR_SET) - aSet.Put(SfxBoolItem(ATTR_ACTION_PLAYFULL, bSecondPlayFull)); - else if (nPlayFullSet == ATTR_MIXED) - aSet.InvalidateItem(ATTR_ACTION_PLAYFULL); - else - aSet.Put(SfxBoolItem(ATTR_ACTION_PLAYFULL, FALSE)); - - //rSet.Put( SfxSetItem( SID_EFFECT_STATE, aSet ) ); - pEffectWin->Update( aSet ); - } - else - { - SfxItemSet aSet(GetDoc()->GetPool(), ATTR_ANIMATION_EFFECT, ATTR_ANIMATION_TEXTEFFECT, 0); - aSet.Put(SfxAllEnumItem(ATTR_ANIMATION_EFFECT, presentation::AnimationEffect_NONE)); - aSet.Put(SfxAllEnumItem(ATTR_ANIMATION_TEXTEFFECT, presentation::AnimationEffect_NONE)); - pEffectWin->Update( aSet ); - } - } - } -} - -/************************************************************************* -|* -|* Vom EffekteWindow zuweisen -|* -\************************************************************************/ - -void DrawViewShell::AssignFromEffectWindow() -{ - bInEffectAssignment = TRUE; - - USHORT nId = EffectChildWindow::GetChildWindowId(); - SfxChildWindow* pWindow = GetViewFrame()->GetChildWindow( nId ); - if( pWindow ) - { - GetViewFrame()->GetBindings().InvalidateAll( TRUE ); - - EffectWindow* pEffectWin = static_cast<EffectWindow*>( - pWindow->GetWindow()); - const SdrMarkList& rMarkList = pDrView->GetMarkedObjectList(); - ULONG nCount = rMarkList.GetMarkCount(); - if( pEffectWin && nCount > 0 ) - { - // Der Code stammt aus fuoaprms.cxx und - // sollte verallgemeinert werden !!! - ULONG nObject = 0; - - SfxUndoManager* pUndoMgr = GetViewFrame()->GetObjectShell()-> - GetUndoManager(); - - short nAnimationSet = ATTR_MISSING; - short nEffectSet = ATTR_MISSING; - short nTextEffectSet = ATTR_MISSING; - short nSpeedSet = ATTR_MISSING; - short nFadeColorSet = ATTR_MISSING; - short nFadeOutSet = ATTR_MISSING; - short nInvisibleSet = ATTR_MISSING; - short nSoundOnSet = ATTR_MISSING; - short nSoundFileSet = ATTR_MISSING; - short nPlayFullSet = ATTR_MISSING; - short nClickActionSet = ATTR_MISSING; - short nBookmarkSet = ATTR_MISSING; - - short nSecondEffectSet = ATTR_MISSING; - short nSecondSpeedSet = ATTR_MISSING; - short nSecondSoundOnSet = ATTR_MISSING; - short nSecondPlayFullSet = ATTR_MISSING; - - // defaulten (fuer Undo-Aktion) - presentation::AnimationEffect eEffect = presentation::AnimationEffect_NONE; - presentation::AnimationEffect eTextEffect = presentation::AnimationEffect_NONE; - presentation::AnimationSpeed eSpeed = presentation::AnimationSpeed_MEDIUM; - BOOL bActive = FALSE; - BOOL bFadeOut = FALSE; - Color aFadeColor = COL_LIGHTGRAY; - BOOL bInvisible = FALSE; - BOOL bSoundOn = FALSE; - String aSound; - BOOL bPlayFull = FALSE; - presentation::ClickAction eClickAction = presentation::ClickAction_NONE; - String aBookmark; - - presentation::AnimationEffect eSecondEffect = presentation::AnimationEffect_NONE; - presentation::AnimationSpeed eSecondSpeed = presentation::AnimationSpeed_MEDIUM; - BOOL bSecondSoundOn = FALSE; - BOOL bSecondPlayFull = FALSE; - - - SdAnimationInfo* pInfo = NULL; - - SfxItemSet aSet(GetDoc()->GetPool(), ATTR_ANIMATION_START, ATTR_ACTION_END, 0); - pEffectWin->GetAttr( aSet ); - - // Auswertung des ItemSets - if (aSet.GetItemState(ATTR_ANIMATION_ACTIVE) == SFX_ITEM_SET) - { - bActive = ((SfxBoolItem&)aSet.Get(ATTR_ANIMATION_ACTIVE)).GetValue(); - nAnimationSet = ATTR_SET; - } - else - nAnimationSet = ATTR_MISSING; - - if (aSet.GetItemState(ATTR_ANIMATION_EFFECT) == SFX_ITEM_SET) - { - eEffect = (presentation::AnimationEffect)((SfxAllEnumItem&) aSet. - Get(ATTR_ANIMATION_EFFECT)).GetValue(); - nEffectSet = ATTR_SET; - } - else - nEffectSet = ATTR_MISSING; - - if (aSet.GetItemState(ATTR_ANIMATION_TEXTEFFECT) == SFX_ITEM_SET) - { - eTextEffect = (presentation::AnimationEffect)((SfxAllEnumItem&) aSet. - Get(ATTR_ANIMATION_TEXTEFFECT)).GetValue(); - nTextEffectSet = ATTR_SET; - } - else - nTextEffectSet = ATTR_MISSING; - - if (aSet.GetItemState(ATTR_ANIMATION_SPEED) == SFX_ITEM_SET) - { - eSpeed = (presentation::AnimationSpeed)((SfxAllEnumItem&) aSet. - Get(ATTR_ANIMATION_SPEED)).GetValue(); - nSpeedSet = ATTR_SET; - } - else - nSpeedSet = ATTR_MISSING; - - if (aSet.GetItemState(ATTR_ANIMATION_FADEOUT) == SFX_ITEM_SET) - { - bFadeOut = ((SfxBoolItem&)aSet.Get(ATTR_ANIMATION_FADEOUT)).GetValue(); - nFadeOutSet = ATTR_SET; - } - else - nFadeOutSet = ATTR_MISSING; - - if (aSet.GetItemState(ATTR_ANIMATION_INVISIBLE) == SFX_ITEM_SET) - { - bInvisible = ((SfxBoolItem&)aSet.Get(ATTR_ANIMATION_INVISIBLE)).GetValue(); - nInvisibleSet = ATTR_SET; - } - else - nInvisibleSet = ATTR_MISSING; - - if (aSet.GetItemState(ATTR_ANIMATION_SOUNDON) == SFX_ITEM_SET) - { - bSoundOn = ((SfxBoolItem&)aSet.Get(ATTR_ANIMATION_SOUNDON)).GetValue(); - nSoundOnSet = ATTR_SET; - } - else - nSoundOnSet = ATTR_MISSING; - - if (aSet.GetItemState(ATTR_ANIMATION_SOUNDFILE) == SFX_ITEM_SET) - { - aSound = ((SfxStringItem&)aSet.Get(ATTR_ANIMATION_SOUNDFILE)).GetValue(); - nSoundFileSet = ATTR_SET; - } - else - nSoundFileSet = ATTR_MISSING; - - if (aSet.GetItemState(ATTR_ANIMATION_COLOR) == SFX_ITEM_SET) - { - aFadeColor = ((SvxColorItem&)aSet.Get(ATTR_ANIMATION_COLOR)).GetValue(); - nFadeColorSet = ATTR_SET; - } - else - nFadeColorSet = ATTR_MISSING; - - if (aSet.GetItemState(ATTR_ANIMATION_PLAYFULL) == SFX_ITEM_SET) - { - bPlayFull = ((SfxBoolItem&)aSet.Get(ATTR_ANIMATION_PLAYFULL)).GetValue(); - nPlayFullSet = ATTR_SET; - } - else - nPlayFullSet = ATTR_MISSING; - - if (aSet.GetItemState(ATTR_ACTION) == SFX_ITEM_SET) - { - eClickAction = (presentation::ClickAction)((SfxAllEnumItem&)aSet. - Get(ATTR_ACTION)).GetValue(); - nClickActionSet = ATTR_SET; - } - else - nClickActionSet = ATTR_MISSING; - - if (aSet.GetItemState(ATTR_ACTION_FILENAME) == SFX_ITEM_SET) - { - aBookmark = ((SfxStringItem&)aSet. - Get(ATTR_ACTION_FILENAME)).GetValue(); - nBookmarkSet = ATTR_SET; - } - else - nBookmarkSet = ATTR_MISSING; - - if (aSet.GetItemState(ATTR_ACTION_EFFECT) == SFX_ITEM_SET) - { - eSecondEffect = (presentation::AnimationEffect)((SfxAllEnumItem&) aSet. - Get(ATTR_ACTION_EFFECT)).GetValue(); - nSecondEffectSet = ATTR_SET; - } - else - nSecondEffectSet = ATTR_MISSING; - - if (aSet.GetItemState(ATTR_ACTION_EFFECTSPEED) == SFX_ITEM_SET) - { - eSecondSpeed = (presentation::AnimationSpeed)((SfxAllEnumItem&) aSet. - Get(ATTR_ACTION_EFFECTSPEED)).GetValue(); - nSecondSpeedSet = ATTR_SET; - } - else - nSecondSpeedSet = ATTR_MISSING; - - if (aSet.GetItemState(ATTR_ACTION_SOUNDON) == SFX_ITEM_SET) - { - bSecondSoundOn = ((SfxBoolItem&)aSet.Get(ATTR_ACTION_SOUNDON)).GetValue(); - nSecondSoundOnSet = ATTR_SET; - } - else - nSecondSoundOnSet = ATTR_MISSING; - - if (aSet.GetItemState(ATTR_ACTION_PLAYFULL) == SFX_ITEM_SET) - { - bSecondPlayFull = ((SfxBoolItem&)aSet.Get(ATTR_ACTION_PLAYFULL)).GetValue(); - nSecondPlayFullSet = ATTR_SET; - } - else - nSecondPlayFullSet = ATTR_MISSING; - - // Wenn irgendwelche Attribute ausgewaehlt wurden - if (nEffectSet == ATTR_SET || - nTextEffectSet == ATTR_SET || - nSpeedSet == ATTR_SET || - nAnimationSet == ATTR_SET || - nFadeOutSet == ATTR_SET || - nFadeColorSet == ATTR_SET || - nInvisibleSet == ATTR_SET || - nSoundOnSet == ATTR_SET || - nSoundFileSet == ATTR_SET || - nPlayFullSet == ATTR_SET || - nClickActionSet == ATTR_SET || - nBookmarkSet == ATTR_SET || - nSecondEffectSet == ATTR_SET || - nSecondSpeedSet == ATTR_SET || - nSecondSoundOnSet == ATTR_SET || - nSecondPlayFullSet == ATTR_SET) - { - // String fuer Undo-Group und List-Action - String aComment(SdResId(STR_UNDO_ANIMATION)); - - // bei 'an Kurve entlang' gibt's noch eine extra UndoAction, darum - // hier klammern - pUndoMgr->EnterListAction(aComment, aComment); - - // Undo Gruppe erzeugen - SdUndoGroup* pUndoGroup = new SdUndoGroup(GetDoc()); - pUndoGroup->SetComment(aComment); - - - // fuer den Pfad-Effekt einige Dinge merken - SdrObject* pRunningObj = NULL; - SdrPathObj* pPath = NULL; - if( eEffect == presentation::AnimationEffect_PATH && - nEffectSet == ATTR_SET && - nCount == 2 ) - { - //DBG_ASSERT(nCount == 2, "dieser Effekt braucht genau 2 selektierte Objekte"); - SdrObject* pObject1 = rMarkList.GetMark(0)->GetObj(); - SdrObject* pObject2 = rMarkList.GetMark(1)->GetObj(); - SdrObjKind eKind1 = (SdrObjKind)pObject1->GetObjIdentifier(); - SdrObjKind eKind2 = (SdrObjKind)pObject2->GetObjIdentifier(); - - if (pObject1->GetObjInventor() == SdrInventor && - ((eKind1 == OBJ_LINE) || // 2-Punkt-Linie - (eKind1 == OBJ_PLIN) || // Polygon - (eKind1 == OBJ_PATHLINE))) // Bezier-Kurve - { - pPath = (SdrPathObj*)pObject1; - pRunningObj = pObject2; - } - - if (pObject2->GetObjInventor() == SdrInventor && - ((eKind2 == OBJ_LINE) || // 2-Punkt-Linie - (eKind2 == OBJ_PLIN) || // Polygon - (eKind2 == OBJ_PATHLINE))) // Bezier-Kurve - { - pPath = (SdrPathObj*)pObject2; - pRunningObj = pObject1; - } - - //DBG_ASSERT(pPath, "keine Kurve gefunden"); - if( pPath ) - { - // das laufende Objekt auf das Kurvenende schieben - Rectangle aCurRect(pRunningObj->GetLogicRect()); - Point aCurCenter(aCurRect.Center()); - const XPolyPolygon& rXPP = pPath->GetPathPoly(); - USHORT nNoOfXPoly = rXPP.Count(); - const XPolygon& rXPoly = rXPP.GetObject(nNoOfXPoly - 1); - USHORT nPoints = rXPoly.GetPointCount(); - Point aNewCenter(rXPoly[nPoints - 1]); - Size aDistance(aNewCenter.X() - aCurCenter.X(), - aNewCenter.Y() - aCurCenter.Y()); - pRunningObj->Move(aDistance); - - SdrUndoMoveObj* pUndoAction = new SdrUndoMoveObj(*pRunningObj, - aDistance); - pUndoMgr->AddUndoAction(pUndoAction); - } - // Effect wird wieder auf DontCare gesetzt - else - { - nEffectSet = ATTR_MISSING; - eEffect = presentation::AnimationEffect_NONE; - } - } - - for (nObject = 0; nObject < nCount; nObject++) - { - SdrObject* pObject = rMarkList.GetMark(nObject)->GetObj(); - - pInfo = GetDoc()->GetAnimationInfo(pObject); - - BOOL bCreated = FALSE; - if( !pInfo ) - { - pInfo = new SdAnimationInfo(GetDoc()); - pObject->InsertUserData( pInfo ); - bCreated = TRUE; - } - - // das Pfadobjekt fuer 'an Kurve entlang'? - if (eEffect == presentation::AnimationEffect_PATH && pObject == pPath) - { - SdAnimationPrmsUndoAction* pAction = new SdAnimationPrmsUndoAction - (GetDoc(), pObject, bCreated); - pAction->SetActive(pInfo->bActive, pInfo->bActive); - pAction->SetEffect(pInfo->eEffect, pInfo->eEffect); - pAction->SetTextEffect(pInfo->eTextEffect, pInfo->eTextEffect); - pAction->SetSpeed(pInfo->eSpeed, pInfo->eSpeed); - pAction->SetDim(pInfo->bDimPrevious, pInfo->bDimPrevious); - pAction->SetDimColor(pInfo->aDimColor, pInfo->aDimColor); - pAction->SetDimHide(pInfo->bDimHide, pInfo->bDimHide); - pAction->SetSoundOn(pInfo->bSoundOn, pInfo->bSoundOn); - pAction->SetSound(pInfo->aSoundFile, pInfo->aSoundFile); - pAction->SetPlayFull(pInfo->bPlayFull, pInfo->bPlayFull); - pAction->SetPathObj(pInfo->pPathObj, pInfo->pPathObj); - pAction->SetClickAction(pInfo->eClickAction, pInfo->eClickAction); - pAction->SetBookmark(pInfo->aBookmark, pInfo->aBookmark); - pAction->SetInvisibleInPres(pInfo->bInvisibleInPresentation, TRUE); - pAction->SetVerb(pInfo->nVerb, pInfo->nVerb); - pAction->SetPresOrder(pInfo->nPresOrder, pInfo->nPresOrder); - pAction->SetSecondEffect(pInfo->eSecondEffect, pInfo->eSecondEffect); - pAction->SetSecondSpeed(pInfo->eSecondSpeed, pInfo->eSecondSpeed); - pAction->SetSecondSoundOn(pInfo->bSecondSoundOn, pInfo->bSecondSoundOn); - pAction->SetSecondPlayFull(pInfo->bSecondPlayFull, pInfo->bSecondPlayFull); - pUndoGroup->AddAction(pAction); - - pInfo->bInvisibleInPresentation = TRUE; - } - else - { - - // Undo-Action mit alten und neuen Groessen erzeugen - SdAnimationPrmsUndoAction* pAction = new SdAnimationPrmsUndoAction - (GetDoc(), pObject, bCreated); - pAction->SetActive(pInfo->bActive, bActive); - pAction->SetEffect(pInfo->eEffect, eEffect); - pAction->SetTextEffect(pInfo->eTextEffect, eTextEffect); - pAction->SetSpeed(pInfo->eSpeed, eSpeed); - pAction->SetDim(pInfo->bDimPrevious, bFadeOut); - pAction->SetDimColor(pInfo->aDimColor, aFadeColor); - pAction->SetDimHide(pInfo->bDimHide, bInvisible); - pAction->SetSoundOn(pInfo->bSoundOn, bSoundOn); - pAction->SetSound(pInfo->aSoundFile, aSound); - pAction->SetPlayFull(pInfo->bPlayFull, bPlayFull); - pAction->SetPathObj(pInfo->pPathObj, pPath); - pAction->SetClickAction(pInfo->eClickAction, eClickAction); - pAction->SetBookmark(pInfo->aBookmark, aBookmark); - pAction->SetInvisibleInPres(pInfo->bInvisibleInPresentation, - pInfo->bInvisibleInPresentation); - pAction->SetVerb(pInfo->nVerb, (USHORT)(pInfo->aBookmark).ToInt32()); - pAction->SetPresOrder(pInfo->nPresOrder, pInfo->nPresOrder); - pAction->SetSecondEffect(pInfo->eSecondEffect, eSecondEffect); - pAction->SetSecondSpeed(pInfo->eSecondSpeed, eSecondSpeed); - pAction->SetSecondSoundOn(pInfo->bSecondSoundOn, bSecondSoundOn); - pAction->SetSecondPlayFull(pInfo->bSecondPlayFull,bSecondPlayFull); - pUndoGroup->AddAction(pAction); - - // neue Werte am Infoblock des Objekts eintragen - if (nAnimationSet == ATTR_SET) - pInfo->bActive = bActive; - - if (nEffectSet == ATTR_SET) - pInfo->eEffect = eEffect; - - if (nTextEffectSet == ATTR_SET) - pInfo->eTextEffect = eTextEffect; - - if (nSpeedSet == ATTR_SET) - pInfo->eSpeed = eSpeed; - - if (nFadeOutSet == ATTR_SET) - pInfo->bDimPrevious = bFadeOut; - - if (nFadeColorSet == ATTR_SET) - pInfo->aDimColor = aFadeColor; - - if (nInvisibleSet == ATTR_SET) - pInfo->bDimHide = bInvisible; - - if (nSoundOnSet == ATTR_SET) - pInfo->bSoundOn = bSoundOn; - - if (nSoundFileSet == ATTR_SET) - pInfo->aSoundFile = aSound; - - if (nPlayFullSet == ATTR_SET) - pInfo->bPlayFull = bPlayFull; - - if (nClickActionSet == ATTR_SET) - pInfo->eClickAction = eClickAction; - - if (nBookmarkSet == ATTR_SET) - pInfo->aBookmark = aBookmark; - - if (nSecondEffectSet == ATTR_SET) - pInfo->eSecondEffect = eSecondEffect; - - if (nSecondSpeedSet == ATTR_SET) - pInfo->eSecondSpeed = eSecondSpeed; - - if (nSecondSoundOnSet == ATTR_SET) - pInfo->bSecondSoundOn = bSecondSoundOn; - - if (nSecondPlayFullSet == ATTR_SET) - pInfo->bSecondPlayFull = bSecondPlayFull; - - // noch ein paar Spezialitaeten - if (eEffect == presentation::AnimationEffect_PATH && nEffectSet == ATTR_SET) - pInfo->SetPath(pPath); - else - pInfo->SetPath(NULL); - - if (eClickAction == presentation::ClickAction_VERB) - pInfo->nVerb = (USHORT)(aBookmark.ToInt32()); - - pInfo->bInvisibleInPresentation = FALSE; - } - } - // Undo Gruppe dem Undo Manager uebergeben - pUndoMgr->AddUndoAction(pUndoGroup); - pUndoMgr->LeaveListAction(); - - // Model geaendert - GetDoc()->SetChanged(); - - /******************************************************* - |* ggfs. in Preview anzeigen - \******************************************************/ - SfxChildWindow* pPreviewChildWindow = - GetViewFrame()->GetChildWindow( - PreviewChildWindow::GetChildWindowId()); - - if( pPreviewChildWindow && ePageKind != PK_HANDOUT ) - { - PreviewWindow* pPreviewWin = static_cast<PreviewWindow*>( - pPreviewChildWindow->GetWindow()); - - if( pPreviewWin && pPreviewWin->GetDoc() == GetDoc() ) - { - for( nObject = 0; nObject < nCount; nObject++ ) - { - if( rMarkList.GetMark( nObject ) ) - { - SdrObject* pObject = rMarkList.GetMark( nObject )->GetObj(); - - if( pObject ) - { - pInfo = GetDoc()->GetAnimationInfo( pObject ); - - if( pInfo && !( eEffect == presentation::AnimationEffect_PATH && pObject == pPath ) ) - pPreviewWin->HideAndAnimateObject( pObject ); - } - } - } - } - } - } - } - } - - bInEffectAssignment = FALSE; - GetViewFrame()->GetBindings().InvalidateAll( TRUE ); -} - -/************************************************************************* -|* |* 3D - Assign / Update |* \************************************************************************/ |