[Libreoffice-commits] core.git: include/svx svx/source
Caolán McNamara (via logerrit)
logerrit at kemper.freedesktop.org
Fri Jan 24 15:04:50 UTC 2020
include/svx/dlgctl3d.hxx | 71 ----
svx/source/dialog/dlgctl3d.cxx | 677 -----------------------------------------
2 files changed, 748 deletions(-)
New commits:
commit 206e0eec816042d5631edd73da18ed16b99ea04e
Author: Caolán McNamara <caolanm at redhat.com>
AuthorDate: Thu Jan 23 20:50:30 2020 +0000
Commit: Caolán McNamara <caolanm at 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 <caolanm at 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(),
More information about the Libreoffice-commits
mailing list