include/svx/dlgctl3d.hxx | 71 ---- svx/source/dialog/dlgctl3d.cxx | 677 ----------------------------------------- 2 files changed, 748 deletions(-)
New commits: commit 206e0eec816042d5631edd73da18ed16b99ea04e Author: Caolán McNamara <caol...@redhat.com> AuthorDate: Thu Jan 23 20:50:30 2020 +0000 Commit: Caolán McNamara <caol...@redhat.com> CommitDate: Fri Jan 24 16:04:19 2020 +0100 Svx3DLightControl is unused Change-Id: Ibd884eea366d3a66f786fc9e52323883f2dbca89 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/87299 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caol...@redhat.com> diff --git a/include/svx/dlgctl3d.hxx b/include/svx/dlgctl3d.hxx index 3e9fcc313869..5f19d6a5dccb 100644 --- a/include/svx/dlgctl3d.hxx +++ b/include/svx/dlgctl3d.hxx @@ -62,77 +62,6 @@ public: virtual void Set3DAttributes(const SfxItemSet& rAttr); }; - -class SAL_WARN_UNUSED Svx3DLightControl final : public Svx3DPreviewControl -{ - // Callback for interactive changes - Link<Svx3DLightControl*,void> maChangeCallback; - Link<Svx3DLightControl*,void> maSelectionChangeCallback; - - // lights - sal_uInt32 maSelectedLight; - - // extra objects for light control - E3dObject* mpExpansionObject; - E3dObject* mpLampBottomObject; - E3dObject* mpLampShaftObject; - std::vector< E3dObject* > maLightObjects; - - // 3d rotations of object - double mfRotateX; - double mfRotateY; - double mfRotateZ; - - // interaction parameters - Point maActionStartPoint; - double mfSaveActionStartHor; - double mfSaveActionStartVer; - double mfSaveActionStartRotZ; - - bool mbMouseMoved : 1; - bool mbGeometrySelected : 1; - - void Construct2(); - void ConstructLightObjects(); - void AdaptToSelectedLight(); - void TrySelection(Point aPosPixel); - -public: - Svx3DLightControl(vcl::Window* pParent, WinBits nStyle); - - virtual void Paint(vcl::RenderContext& rRenderContext, const tools::Rectangle& rRect) override; - virtual void MouseButtonDown(const MouseEvent& rMEvt) override; - virtual void Tracking( const TrackingEvent& rTEvt ) override; - virtual void Resize() override; - - virtual void SetObjectType(SvxPreviewObjectType nType) override; - - // register user callback - void SetChangeCallback(Link<Svx3DLightControl*,void> aNew) { maChangeCallback = aNew; } - void SetSelectionChangeCallback(Link<Svx3DLightControl*,void> aNew) { maSelectionChangeCallback = aNew; } - - // selection checks - bool IsSelectionValid(); - bool IsGeometrySelected() const { return mbGeometrySelected; } - - // get/set position of selected lamp in polar coordinates, Hor:[0..360.0[ and Ver:[-90..90] degrees - void GetPosition(double& rHor, double& rVer); - void SetPosition(double fHor, double fVer); - - // get/set rotation of 3D object - void SetRotation(double fRotX, double fRotY, double fRotZ); - void GetRotation(double& rRotX, double& rRotY, double& rRotZ); - - void SelectLight(sal_uInt32 nLightNumber); - virtual void Set3DAttributes(const SfxItemSet& rAttr) override; - sal_uInt32 GetSelectedLight() const { return maSelectedLight; } - - // light data access - bool GetLightOnOff(sal_uInt32 nNum) const; - Color GetLightColor(sal_uInt32 nNum) const; - basegfx::B3DVector GetLightDirection(sal_uInt32 nNum) const; -}; - class SAL_WARN_UNUSED SVX_DLLPUBLIC LightControl3D final : public PreviewControl3D { // Callback for interactive changes diff --git a/svx/source/dialog/dlgctl3d.cxx b/svx/source/dialog/dlgctl3d.cxx index 7e76f5dff640..d73824085779 100644 --- a/svx/source/dialog/dlgctl3d.cxx +++ b/svx/source/dialog/dlgctl3d.cxx @@ -244,683 +244,6 @@ void PreviewControl3D::Set3DAttributes( const SfxItemSet& rAttr ) static const sal_Int32 g_nInteractionStartDistance = 5 * 5 * 2; -Svx3DLightControl::Svx3DLightControl(vcl::Window* pParent, WinBits nStyle) -: Svx3DPreviewControl(pParent, nStyle), - maChangeCallback(), - maSelectionChangeCallback(), - maSelectedLight(NO_LIGHT_SELECTED), - mpExpansionObject(nullptr), - mpLampBottomObject(nullptr), - mpLampShaftObject(nullptr), - maLightObjects(MAX_NUMBER_LIGHTS, nullptr), - mfRotateX(-20.0), - mfRotateY(45.0), - mfRotateZ(0.0), - maActionStartPoint(), - mfSaveActionStartHor(0.0), - mfSaveActionStartVer(0.0), - mfSaveActionStartRotZ(0.0), - mbMouseMoved(false), - mbGeometrySelected(false) -{ - Construct2(); -} - -void Svx3DLightControl::Construct2() -{ - { - // hide all page stuff, use control background (normally gray) - const Color aDialogColor(Application::GetSettings().GetStyleSettings().GetDialogColor()); - mp3DView->SetPageVisible(false); - mp3DView->SetApplicationBackgroundColor(aDialogColor); - mp3DView->SetApplicationDocumentColor(aDialogColor); - } - - { - // create invisible expansion object - const double fMaxExpansion(RADIUS_LAMP_BIG + RADIUS_LAMP_PREVIEW_SIZE); - mpExpansionObject = new E3dCubeObj( - *mpModel, - mp3DView->Get3DDefaultAttributes(), - basegfx::B3DPoint(-fMaxExpansion, -fMaxExpansion, -fMaxExpansion), - basegfx::B3DVector(2.0 * fMaxExpansion, 2.0 * fMaxExpansion, 2.0 * fMaxExpansion)); - mpScene->InsertObject( mpExpansionObject ); - SfxItemSet aSet(mpModel->GetItemPool()); - aSet.Put( XLineStyleItem( drawing::LineStyle_NONE ) ); - aSet.Put( XFillStyleItem( drawing::FillStyle_NONE ) ); - mpExpansionObject->SetMergedItemSet(aSet); - } - - { - // create lamp control object (Yellow lined object) - // base circle - const basegfx::B2DPolygon a2DCircle(basegfx::utils::createPolygonFromCircle(basegfx::B2DPoint(0.0, 0.0), RADIUS_LAMP_PREVIEW_SIZE)); - basegfx::B3DPolygon a3DCircle(basegfx::utils::createB3DPolygonFromB2DPolygon(a2DCircle)); - basegfx::B3DHomMatrix aTransform; - - aTransform.rotate(F_PI2, 0.0, 0.0); - aTransform.translate(0.0, -RADIUS_LAMP_PREVIEW_SIZE, 0.0); - a3DCircle.transform(aTransform); - - // create object for it - mpLampBottomObject = new E3dPolygonObj( - *mpModel, - basegfx::B3DPolyPolygon(a3DCircle)); - mpScene->InsertObject( mpLampBottomObject ); - - // half circle with stand - basegfx::B2DPolygon a2DHalfCircle; - a2DHalfCircle.append(basegfx::B2DPoint(RADIUS_LAMP_PREVIEW_SIZE, 0.0)); - a2DHalfCircle.append(basegfx::B2DPoint(RADIUS_LAMP_PREVIEW_SIZE, -RADIUS_LAMP_PREVIEW_SIZE)); - a2DHalfCircle.append(basegfx::utils::createPolygonFromEllipseSegment( - basegfx::B2DPoint(0.0, 0.0), RADIUS_LAMP_PREVIEW_SIZE, RADIUS_LAMP_PREVIEW_SIZE, F_2PI - F_PI2, F_PI2)); - basegfx::B3DPolygon a3DHalfCircle(basegfx::utils::createB3DPolygonFromB2DPolygon(a2DHalfCircle)); - - // create object for it - mpLampShaftObject = new E3dPolygonObj( - *mpModel, - basegfx::B3DPolyPolygon(a3DHalfCircle)); - mpScene->InsertObject( mpLampShaftObject ); - - // initially invisible - SfxItemSet aSet(mpModel->GetItemPool()); - aSet.Put( XLineStyleItem( drawing::LineStyle_NONE ) ); - aSet.Put( XFillStyleItem( drawing::FillStyle_NONE ) ); - - mpLampBottomObject->SetMergedItemSet(aSet); - mpLampShaftObject->SetMergedItemSet(aSet); - } - - { - // change camera settings - Camera3D rCamera = mpScene->GetCamera(); - const basegfx::B3DRange& rVolume = mpScene->GetBoundVolume(); - double fW = rVolume.getWidth(); - double fH = rVolume.getHeight(); - double fCamZ = rVolume.getMaxZ() + ((fW + fH) / 2.0); - - rCamera.SetAutoAdjustProjection(false); - rCamera.SetViewWindow(- fW / 2, - fH / 2, fW, fH); - basegfx::B3DPoint aLookAt; - double fDefaultCamPosZ = mp3DView->GetDefaultCamPosZ(); - basegfx::B3DPoint aCamPos(0.0, 0.0, fCamZ < fDefaultCamPosZ ? fDefaultCamPosZ : fCamZ); - rCamera.SetPosAndLookAt(aCamPos, aLookAt); - double fDefaultCamFocal = mp3DView->GetDefaultCamFocal(); - rCamera.SetFocalLength(fDefaultCamFocal); - - mpScene->SetCamera( rCamera ); - - basegfx::B3DHomMatrix aNeutral; - mpScene->SetTransform(aNeutral); - } - - // invalidate SnapRects of objects - mpScene->SetRectsDirty(); -} - -void Svx3DLightControl::ConstructLightObjects() -{ - for(sal_uInt32 a(0); a < MAX_NUMBER_LIGHTS; a++) - { - // get rid of possible existing light object - if(maLightObjects[a]) - { - mpScene->RemoveObject(maLightObjects[a]->GetOrdNum()); - // always use SdrObject::Free(...) for SdrObjects (!) - SdrObject* pTemp(maLightObjects[a]); - SdrObject::Free(pTemp); - maLightObjects[a] = nullptr; - } - - if(GetLightOnOff(a)) - { - const bool bIsSelectedLight(a == maSelectedLight); - basegfx::B3DVector aDirection(GetLightDirection(a)); - aDirection.normalize(); - aDirection *= RADIUS_LAMP_PREVIEW_SIZE; - - const double fLampSize(bIsSelectedLight ? RADIUS_LAMP_BIG : RADIUS_LAMP_SMALL); - E3dObject* pNewLight = new E3dSphereObj( - *mpModel, - mp3DView->Get3DDefaultAttributes(), - basegfx::B3DPoint( 0, 0, 0 ), - basegfx::B3DVector( fLampSize, fLampSize, fLampSize)); - mpScene->InsertObject(pNewLight); - - basegfx::B3DHomMatrix aTransform; - aTransform.translate(aDirection.getX(), aDirection.getY(), aDirection.getZ()); - pNewLight->SetTransform(aTransform); - - SfxItemSet aSet(mpModel->GetItemPool()); - aSet.Put( XLineStyleItem( drawing::LineStyle_NONE ) ); - aSet.Put( XFillStyleItem( drawing::FillStyle_SOLID ) ); - aSet.Put( XFillColorItem(OUString(), GetLightColor(a))); - pNewLight->SetMergedItemSet(aSet); - - maLightObjects[a] = pNewLight; - } - } -} - -void Svx3DLightControl::AdaptToSelectedLight() -{ - if(NO_LIGHT_SELECTED == maSelectedLight) - { - // make mpLampBottomObject/mpLampShaftObject invisible - SfxItemSet aSet(mpModel->GetItemPool()); - aSet.Put( XLineStyleItem( drawing::LineStyle_NONE ) ); - aSet.Put( XFillStyleItem( drawing::FillStyle_NONE ) ); - mpLampBottomObject->SetMergedItemSet(aSet); - mpLampShaftObject->SetMergedItemSet(aSet); - } - else - { - basegfx::B3DVector aDirection(GetLightDirection(maSelectedLight)); - aDirection.normalize(); - - // make mpLampBottomObject/mpLampShaftObject visible (yellow hairline) - SfxItemSet aSet(mpModel->GetItemPool()); - aSet.Put( XLineStyleItem( drawing::LineStyle_SOLID ) ); - aSet.Put( XLineColorItem(OUString(), COL_YELLOW)); - aSet.Put( XLineWidthItem(0)); - aSet.Put( XFillStyleItem( drawing::FillStyle_NONE ) ); - mpLampBottomObject->SetMergedItemSet(aSet); - mpLampShaftObject->SetMergedItemSet(aSet); - - // adapt transformation of mpLampShaftObject - basegfx::B3DHomMatrix aTransform; - double fRotateY(0.0); - - if(!basegfx::fTools::equalZero(aDirection.getZ()) || !basegfx::fTools::equalZero(aDirection.getX())) - { - fRotateY = atan2(-aDirection.getZ(), aDirection.getX()); - } - - aTransform.rotate(0.0, fRotateY, 0.0); - mpLampShaftObject->SetTransform(aTransform); - - // adapt transformation of selected light - E3dObject* pSelectedLight = maLightObjects[sal_Int32(maSelectedLight)]; - - if(pSelectedLight) - { - aTransform.identity(); - aTransform.translate( - aDirection.getX() * RADIUS_LAMP_PREVIEW_SIZE, - aDirection.getY() * RADIUS_LAMP_PREVIEW_SIZE, - aDirection.getZ() * RADIUS_LAMP_PREVIEW_SIZE); - pSelectedLight->SetTransform(aTransform); - } - } -} - -void Svx3DLightControl::TrySelection(Point aPosPixel) -{ - if(mpScene) - { - const Point aPosLogic(PixelToLogic(aPosPixel)); - const basegfx::B2DPoint aPoint(aPosLogic.X(), aPosLogic.Y()); - std::vector< const E3dCompoundObject* > aResult; - getAllHit3DObjectsSortedFrontToBack(aPoint, *mpScene, aResult); - - if(!aResult.empty()) - { - // exclude expansion object which will be part of - // the hits. It's invisible, but for HitTest, it's included - const E3dCompoundObject* pResult = nullptr; - - for(auto const & b: aResult) - { - if(b && b != mpExpansionObject) - { - pResult = b; - break; - } - } - - if(pResult == mp3DObj) - { - if(!mbGeometrySelected) - { - mbGeometrySelected = true; - maSelectedLight = NO_LIGHT_SELECTED; - ConstructLightObjects(); - AdaptToSelectedLight(); - Invalidate(); - - if(maSelectionChangeCallback.IsSet()) - { - maSelectionChangeCallback.Call(this); - } - } - } - else - { - sal_uInt32 aNewSelectedLight(NO_LIGHT_SELECTED); - - for(sal_uInt32 a(0); a < MAX_NUMBER_LIGHTS; a++) - { - if(maLightObjects[a] && maLightObjects[a] == pResult) - { - aNewSelectedLight = a; - } - } - - if(aNewSelectedLight != maSelectedLight) - { - SelectLight(aNewSelectedLight); - - if(maSelectionChangeCallback.IsSet()) - { - maSelectionChangeCallback.Call(this); - } - } - } - } - } -} - -void Svx3DLightControl::Paint(vcl::RenderContext& rRenderContext, const tools::Rectangle& rRect) -{ - Svx3DPreviewControl::Paint(rRenderContext, rRect); -} - -void Svx3DLightControl::MouseButtonDown( const MouseEvent& rMEvt ) -{ - bool bCallParent(true); - - // switch state - if(rMEvt.IsLeft()) - { - if(IsSelectionValid() || mbGeometrySelected) - { - mbMouseMoved = false; - bCallParent = false; - maActionStartPoint = rMEvt.GetPosPixel(); - StartTracking(); - } - else - { - // Single click without moving much trying to do a selection - TrySelection(rMEvt.GetPosPixel()); - bCallParent = false; - } - } - - // call parent - if(bCallParent) - { - Svx3DPreviewControl::MouseButtonDown(rMEvt); - } -} - -void Svx3DLightControl::Tracking( const TrackingEvent& rTEvt ) -{ - if(rTEvt.IsTrackingEnded()) - { - if(rTEvt.IsTrackingCanceled()) - { - if(mbMouseMoved) - { - // interrupt tracking - mbMouseMoved = false; - - if(mbGeometrySelected) - { - SetRotation(mfSaveActionStartVer, mfSaveActionStartHor, mfSaveActionStartRotZ); - } - else - { - SetPosition(mfSaveActionStartHor, mfSaveActionStartVer); - } - - if(maChangeCallback.IsSet()) - { - maChangeCallback.Call(this); - } - } - } - else - { - const MouseEvent& rMEvt = rTEvt.GetMouseEvent(); - - if(mbMouseMoved) - { - // was change interactively - } - else - { - // simple click without much movement, try selection - TrySelection(rMEvt.GetPosPixel()); - } - } - } - else - { - const MouseEvent& rMEvt = rTEvt.GetMouseEvent(); - Point aDeltaPos = rMEvt.GetPosPixel() - maActionStartPoint; - - if(!mbMouseMoved) - { - if(sal_Int32(aDeltaPos.X() * aDeltaPos.X() + aDeltaPos.Y() * aDeltaPos.Y()) > g_nInteractionStartDistance) - { - if(mbGeometrySelected) - { - GetRotation(mfSaveActionStartVer, mfSaveActionStartHor, mfSaveActionStartRotZ); - } - else - { - // interaction start, save values - GetPosition(mfSaveActionStartHor, mfSaveActionStartVer); - } - - mbMouseMoved = true; - } - } - - if(mbMouseMoved) - { - if(mbGeometrySelected) - { - double fNewRotX = mfSaveActionStartVer - basegfx::deg2rad(aDeltaPos.Y()); - double fNewRotY = mfSaveActionStartHor + basegfx::deg2rad(aDeltaPos.X()); - - // cut horizontal - while(fNewRotY < 0.0) - { - fNewRotY += F_2PI; - } - - while(fNewRotY >= F_2PI) - { - fNewRotY -= F_2PI; - } - - // cut vertical - if(fNewRotX < -F_PI2) - { - fNewRotX = -F_PI2; - } - - if(fNewRotX > F_PI2) - { - fNewRotX = F_PI2; - } - - SetRotation(fNewRotX, fNewRotY, mfSaveActionStartRotZ); - - if(maChangeCallback.IsSet()) - { - maChangeCallback.Call(this); - } - } - else - { - // interaction in progress - double fNewPosHor = mfSaveActionStartHor + static_cast<double>(aDeltaPos.X()); - double fNewPosVer = mfSaveActionStartVer - static_cast<double>(aDeltaPos.Y()); - - // cut horizontal - fNewPosHor = NormAngle360(fNewPosHor); - - // cut vertical - if(fNewPosVer < -90.0) - { - fNewPosVer = -90.0; - } - - if(fNewPosVer > 90.0) - { - fNewPosVer = 90.0; - } - - SetPosition(fNewPosHor, fNewPosVer); - - if(maChangeCallback.IsSet()) - { - maChangeCallback.Call(this); - } - } - } - } -} - -void Svx3DLightControl::Resize() -{ - // set size of page - const Size aSize(PixelToLogic(GetSizePixel())); - mpFmPage->SetSize(aSize); - - // set position and size of scene - mpScene->SetSnapRect(tools::Rectangle(Point(0, 0), aSize)); -} - -void Svx3DLightControl::SetObjectType(SvxPreviewObjectType nType) -{ - // call parent - Svx3DPreviewControl::SetObjectType(nType); - - // apply object rotation - if(mp3DObj) - { - basegfx::B3DHomMatrix aObjectRotation; - aObjectRotation.rotate(mfRotateX, mfRotateY, mfRotateZ); - mp3DObj->SetTransform(aObjectRotation); - } -} - -bool Svx3DLightControl::IsSelectionValid() -{ - return (NO_LIGHT_SELECTED != maSelectedLight) && GetLightOnOff(maSelectedLight); -} - -void Svx3DLightControl::GetPosition(double& rHor, double& rVer) -{ - if(IsSelectionValid()) - { - basegfx::B3DVector aDirection(GetLightDirection(maSelectedLight)); - aDirection.normalize(); - rHor = basegfx::rad2deg(atan2(-aDirection.getX(), -aDirection.getZ()) + F_PI); // 0..360.0 - rVer = basegfx::rad2deg(atan2(aDirection.getY(), aDirection.getXZLength())); // -90.0..90.0 - } - if(IsGeometrySelected()) - { - rHor = basegfx::rad2deg(mfRotateY); // 0..360.0 - rVer = basegfx::rad2deg(mfRotateX); // -90.0..90.0 - } -} - -void Svx3DLightControl::SetPosition(double fHor, double fVer) -{ - if(IsSelectionValid()) - { - // set selected light's direction - fHor = basegfx::deg2rad(fHor) - F_PI; // -PI..PI - fVer = basegfx::deg2rad(fVer); // -PI2..PI2 - basegfx::B3DVector aDirection(cos(fVer) * -sin(fHor), sin(fVer), cos(fVer) * -cos(fHor)); - aDirection.normalize(); - - if(!aDirection.equal(GetLightDirection(maSelectedLight))) - { - // set changed light direction at SdrScene - SfxItemSet aSet(mpModel->GetItemPool()); - - switch(maSelectedLight) - { - case 0: aSet.Put(makeSvx3DLightDirection1Item(aDirection)); break; - case 1: aSet.Put(makeSvx3DLightDirection2Item(aDirection)); break; - case 2: aSet.Put(makeSvx3DLightDirection3Item(aDirection)); break; - case 3: aSet.Put(makeSvx3DLightDirection4Item(aDirection)); break; - case 4: aSet.Put(makeSvx3DLightDirection5Item(aDirection)); break; - case 5: aSet.Put(makeSvx3DLightDirection6Item(aDirection)); break; - case 6: aSet.Put(makeSvx3DLightDirection7Item(aDirection)); break; - default: - case 7: aSet.Put(makeSvx3DLightDirection8Item(aDirection)); break; - } - - mpScene->SetMergedItemSet(aSet); - - // correct 3D light's and LampFrame's geometries - AdaptToSelectedLight(); - Invalidate(); - } - } - if(IsGeometrySelected()) - { - if(mfRotateX != fVer || mfRotateY != fHor) - { - mfRotateX = basegfx::deg2rad(fVer); - mfRotateY = basegfx::deg2rad(fHor); - - if(mp3DObj) - { - basegfx::B3DHomMatrix aObjectRotation; - aObjectRotation.rotate(mfRotateX, mfRotateY, mfRotateZ); - mp3DObj->SetTransform(aObjectRotation); - - Invalidate(); - } - } - } -} - -void Svx3DLightControl::SetRotation(double fRotX, double fRotY, double fRotZ) -{ - if(IsGeometrySelected()) - { - if(fRotX != mfRotateX || fRotY != mfRotateY || fRotZ != mfRotateZ) - { - mfRotateX = fRotX; - mfRotateY = fRotY; - mfRotateZ = fRotZ; - - if(mp3DObj) - { - basegfx::B3DHomMatrix aObjectRotation; - aObjectRotation.rotate(mfRotateX, mfRotateY, mfRotateZ); - mp3DObj->SetTransform(aObjectRotation); - - Invalidate(); - } - } - } -} - -void Svx3DLightControl::GetRotation(double& rRotX, double& rRotY, double& rRotZ) -{ - rRotX = mfRotateX; - rRotY = mfRotateY; - rRotZ = mfRotateZ; -} - -void Svx3DLightControl::Set3DAttributes( const SfxItemSet& rAttr ) -{ - // call parent - Svx3DPreviewControl::Set3DAttributes(rAttr); - - if(maSelectedLight != NO_LIGHT_SELECTED && !GetLightOnOff(maSelectedLight)) - { - // selected light is no more active, select new one - maSelectedLight = NO_LIGHT_SELECTED; - } - - // local updates - ConstructLightObjects(); - AdaptToSelectedLight(); - Invalidate(); -} - -void Svx3DLightControl::SelectLight(sal_uInt32 nLightNumber) -{ - if(nLightNumber > 7) - { - nLightNumber = NO_LIGHT_SELECTED; - } - - if(NO_LIGHT_SELECTED != nLightNumber) - { - if(!GetLightOnOff(nLightNumber)) - { - nLightNumber = NO_LIGHT_SELECTED; - } - } - - if(nLightNumber != maSelectedLight) - { - maSelectedLight = nLightNumber; - mbGeometrySelected = false; - ConstructLightObjects(); - AdaptToSelectedLight(); - Invalidate(); - } -} - -bool Svx3DLightControl::GetLightOnOff(sal_uInt32 nNum) const -{ - if(nNum <= 7) - { - const SfxItemSet aLightItemSet(Get3DAttributes()); - - switch(nNum) - { - case 0 : return aLightItemSet.Get(SDRATTR_3DSCENE_LIGHTON_1).GetValue(); - case 1 : return aLightItemSet.Get(SDRATTR_3DSCENE_LIGHTON_2).GetValue(); - case 2 : return aLightItemSet.Get(SDRATTR_3DSCENE_LIGHTON_3).GetValue(); - case 3 : return aLightItemSet.Get(SDRATTR_3DSCENE_LIGHTON_4).GetValue(); - case 4 : return aLightItemSet.Get(SDRATTR_3DSCENE_LIGHTON_5).GetValue(); - case 5 : return aLightItemSet.Get(SDRATTR_3DSCENE_LIGHTON_6).GetValue(); - case 6 : return aLightItemSet.Get(SDRATTR_3DSCENE_LIGHTON_7).GetValue(); - case 7 : return aLightItemSet.Get(SDRATTR_3DSCENE_LIGHTON_8).GetValue(); - } - } - - return false; -} - -Color Svx3DLightControl::GetLightColor(sal_uInt32 nNum) const -{ - if(nNum <= 7) - { - const SfxItemSet aLightItemSet(Get3DAttributes()); - - switch(nNum) - { - case 0 : return aLightItemSet.Get(SDRATTR_3DSCENE_LIGHTCOLOR_1).GetValue(); - case 1 : return aLightItemSet.Get(SDRATTR_3DSCENE_LIGHTCOLOR_2).GetValue(); - case 2 : return aLightItemSet.Get(SDRATTR_3DSCENE_LIGHTCOLOR_3).GetValue(); - case 3 : return aLightItemSet.Get(SDRATTR_3DSCENE_LIGHTCOLOR_4).GetValue(); - case 4 : return aLightItemSet.Get(SDRATTR_3DSCENE_LIGHTCOLOR_5).GetValue(); - case 5 : return aLightItemSet.Get(SDRATTR_3DSCENE_LIGHTCOLOR_6).GetValue(); - case 6 : return aLightItemSet.Get(SDRATTR_3DSCENE_LIGHTCOLOR_7).GetValue(); - case 7 : return aLightItemSet.Get(SDRATTR_3DSCENE_LIGHTCOLOR_8).GetValue(); - } - } - - return COL_BLACK; -} - -basegfx::B3DVector Svx3DLightControl::GetLightDirection(sal_uInt32 nNum) const -{ - if(nNum <= 7) - { - const SfxItemSet aLightItemSet(Get3DAttributes()); - - switch(nNum) - { - case 0 : return aLightItemSet.Get(SDRATTR_3DSCENE_LIGHTDIRECTION_1).GetValue(); - case 1 : return aLightItemSet.Get(SDRATTR_3DSCENE_LIGHTDIRECTION_2).GetValue(); - case 2 : return aLightItemSet.Get(SDRATTR_3DSCENE_LIGHTDIRECTION_3).GetValue(); - case 3 : return aLightItemSet.Get(SDRATTR_3DSCENE_LIGHTDIRECTION_4).GetValue(); - case 4 : return aLightItemSet.Get(SDRATTR_3DSCENE_LIGHTDIRECTION_5).GetValue(); - case 5 : return aLightItemSet.Get(SDRATTR_3DSCENE_LIGHTDIRECTION_6).GetValue(); - case 6 : return aLightItemSet.Get(SDRATTR_3DSCENE_LIGHTDIRECTION_7).GetValue(); - case 7 : return aLightItemSet.Get(SDRATTR_3DSCENE_LIGHTDIRECTION_8).GetValue(); - } - } - - return basegfx::B3DVector(); -} - LightControl3D::LightControl3D() : maChangeCallback(), maSelectionChangeCallback(), _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits