1
0
Fork 0
libreoffice/chart2/source/controller/dialogs/tp_3D_SceneIllumination.cxx
Daniel Baumann 8e63e14cf6
Adding upstream version 4:25.2.3.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
2025-06-22 16:20:04 +02:00

534 lines
21 KiB
C++

/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed
* with this work for additional information regarding copyright
* ownership. The ASF licenses this file to you under the Apache
* License, Version 2.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
#include "tp_3D_SceneIllumination.hxx"
#include <CommonConverters.hxx>
#include <ControllerLockGuard.hxx>
#include <ChartModel.hxx>
#include <svx/colorbox.hxx>
#include <svx/float3d.hxx>
#include <svx/strings.hrc>
#include <svx/dialmgr.hxx>
#include <svtools/colrdlg.hxx>
#include <svx/svx3ditems.hxx>
#include <svx/svddef.hxx>
#include <utility>
#include <vcl/svapp.hxx>
#include <comphelper/diagnose_ex.hxx>
#include <com/sun/star/beans/XPropertySet.hpp>
namespace chart
{
using namespace ::com::sun::star;
using namespace ::com::sun::star::chart2;
namespace {
struct LightSource
{
Color nDiffuseColor;
css::drawing::Direction3D aDirection;
bool bIsEnabled;
LightSource() :
nDiffuseColor( 0xcccccc ),
aDirection( 1.0, 1.0, -1.0 ),
bIsEnabled( false )
{}
};
}
struct LightSourceInfo
{
LightButton* pButton;
LightSource aLightSource;
LightSourceInfo();
void initButtonFromSource();
};
LightSourceInfo::LightSourceInfo()
: pButton(nullptr)
{
aLightSource.nDiffuseColor = Color(0xffffff); // white
aLightSource.aDirection = drawing::Direction3D(1,1,1);
aLightSource.bIsEnabled = false;
}
void LightSourceInfo::initButtonFromSource()
{
if (!pButton)
return;
pButton->switchLightOn(aLightSource.bIsEnabled);
}
namespace
{
OUString lcl_makeColorName(const Color& rColor)
{
OUString aStr = SvxResId(RID_SVXFLOAT3D_FIX_R) +
OUString::number(rColor.GetRed()) +
" " +
SvxResId(RID_SVXFLOAT3D_FIX_G) +
OUString::number(rColor.GetGreen()) +
" " +
SvxResId(RID_SVXFLOAT3D_FIX_B) +
OUString::number(rColor.GetBlue());
return aStr;
}
void lcl_selectColor(ColorListBox& rListBox, const Color& rColor)
{
rListBox.SetNoSelection();
rListBox.SelectEntry({rColor, lcl_makeColorName(rColor)});
}
::chart::LightSource lcl_getLightSourceFromProperties(
const uno::Reference< beans::XPropertySet > & xSceneProperties,
sal_Int32 nIndex )
{
::chart::LightSource aResult;
if( 0 <= nIndex && nIndex < 8 )
{
OUString aIndex( OUString::number( nIndex + 1 ));
try
{
xSceneProperties->getPropertyValue( "D3DSceneLightColor" + aIndex ) >>= aResult.nDiffuseColor;
xSceneProperties->getPropertyValue( "D3DSceneLightDirection" + aIndex ) >>= aResult.aDirection;
xSceneProperties->getPropertyValue( "D3DSceneLightOn" + aIndex ) >>= aResult.bIsEnabled;
}
catch( const uno::Exception & )
{
DBG_UNHANDLED_EXCEPTION("chart2");
}
}
return aResult;
}
void lcl_setLightSource(
const uno::Reference< beans::XPropertySet > & xSceneProperties,
const ::chart::LightSource & rLightSource,
sal_Int32 nIndex )
{
if( 0 > nIndex || nIndex >= 8 )
return;
OUString aIndex( OUString::number( nIndex + 1 ));
try
{
xSceneProperties->setPropertyValue( "D3DSceneLightColor" + aIndex,
uno::Any( rLightSource.nDiffuseColor ));
xSceneProperties->setPropertyValue( "D3DSceneLightDirection" + aIndex,
uno::Any( rLightSource.aDirection ));
xSceneProperties->setPropertyValue( "D3DSceneLightOn" + aIndex,
uno::Any( rLightSource.bIsEnabled ));
}
catch( const uno::Exception & )
{
DBG_UNHANDLED_EXCEPTION("chart2");
}
}
Color lcl_getAmbientColor(
const uno::Reference< beans::XPropertySet > & xSceneProperties )
{
Color nResult;
try
{
xSceneProperties->getPropertyValue(u"D3DSceneAmbientColor"_ustr) >>= nResult;
}
catch( const uno::Exception & )
{
DBG_UNHANDLED_EXCEPTION("chart2");
}
return nResult;
}
void lcl_setAmbientColor(
const uno::Reference< beans::XPropertySet > & xSceneProperties,
const Color & rColor )
{
try
{
xSceneProperties->setPropertyValue(u"D3DSceneAmbientColor"_ustr,
uno::Any( rColor ));
}
catch( const uno::Exception & )
{
DBG_UNHANDLED_EXCEPTION("chart2");
}
}
}
ThreeD_SceneIllumination_TabPage::ThreeD_SceneIllumination_TabPage(weld::Container* pParent,
weld::Window* pTopLevel,
uno::Reference< beans::XPropertySet > xSceneProperties,
const rtl::Reference<::chart::ChartModel>& xChartModel)
: m_xSceneProperties(std::move( xSceneProperties ))
, m_aTimerTriggeredControllerLock( xChartModel )
, m_bInCommitToModel( false )
, m_aModelChangeListener( LINK( this, ThreeD_SceneIllumination_TabPage, fillControlsFromModel ) )
, m_xChartModel( xChartModel )
, m_pTopLevel(pTopLevel)
, m_xBuilder(Application::CreateBuilder(pParent, u"modules/schart/ui/tp_3D_SceneIllumination.ui"_ustr))
, m_xContainer(m_xBuilder->weld_container(u"tp_3D_SceneIllumination"_ustr))
, m_aBtn_Light1(m_xBuilder->weld_toggle_button(u"BTN_LIGHT_1"_ustr))
, m_aBtn_Light2(m_xBuilder->weld_toggle_button(u"BTN_LIGHT_2"_ustr))
, m_aBtn_Light3(m_xBuilder->weld_toggle_button(u"BTN_LIGHT_3"_ustr))
, m_aBtn_Light4(m_xBuilder->weld_toggle_button(u"BTN_LIGHT_4"_ustr))
, m_aBtn_Light5(m_xBuilder->weld_toggle_button(u"BTN_LIGHT_5"_ustr))
, m_aBtn_Light6(m_xBuilder->weld_toggle_button(u"BTN_LIGHT_6"_ustr))
, m_aBtn_Light7(m_xBuilder->weld_toggle_button(u"BTN_LIGHT_7"_ustr))
, m_aBtn_Light8(m_xBuilder->weld_toggle_button(u"BTN_LIGHT_8"_ustr))
, m_xLB_LightSource(new ColorListBox(m_xBuilder->weld_menu_button(u"LB_LIGHTSOURCE"_ustr), [this]{ return m_pTopLevel; }))
, m_xBtn_LightSource_Color(m_xBuilder->weld_button(u"BTN_LIGHTSOURCE_COLOR"_ustr))
, m_xLB_AmbientLight(new ColorListBox(m_xBuilder->weld_menu_button(u"LB_AMBIENTLIGHT"_ustr), [this]{ return m_pTopLevel; }))
, m_xBtn_AmbientLight_Color(m_xBuilder->weld_button(u"BTN_AMBIENT_COLOR"_ustr))
, m_xHoriScale(m_xBuilder->weld_scale(u"hori"_ustr))
, m_xVertScale(m_xBuilder->weld_scale(u"vert"_ustr))
, m_xBtn_Corner(m_xBuilder->weld_button(u"corner"_ustr))
, m_xPreview(new Svx3DLightControl)
, m_xPreviewWnd(new weld::CustomWeld(*m_xBuilder, u"CTL_LIGHT_PREVIEW"_ustr, *m_xPreview))
, m_xCtl_Preview(new SvxLightCtl3D(*m_xPreview, *m_xHoriScale, *m_xVertScale, *m_xBtn_Corner))
{
m_pLightSourceInfoList.reset(new LightSourceInfo[8]);
m_pLightSourceInfoList[0].pButton = &m_aBtn_Light1;
m_pLightSourceInfoList[1].pButton = &m_aBtn_Light2;
m_pLightSourceInfoList[2].pButton = &m_aBtn_Light3;
m_pLightSourceInfoList[3].pButton = &m_aBtn_Light4;
m_pLightSourceInfoList[4].pButton = &m_aBtn_Light5;
m_pLightSourceInfoList[5].pButton = &m_aBtn_Light6;
m_pLightSourceInfoList[6].pButton = &m_aBtn_Light7;
m_pLightSourceInfoList[7].pButton = &m_aBtn_Light8;
fillControlsFromModel(nullptr);
m_aBtn_Light1.connect_clicked( LINK( this, ThreeD_SceneIllumination_TabPage, ClickLightSourceButtonHdl ) );
m_aBtn_Light2.connect_clicked( LINK( this, ThreeD_SceneIllumination_TabPage, ClickLightSourceButtonHdl ) );
m_aBtn_Light3.connect_clicked( LINK( this, ThreeD_SceneIllumination_TabPage, ClickLightSourceButtonHdl ) );
m_aBtn_Light4.connect_clicked( LINK( this, ThreeD_SceneIllumination_TabPage, ClickLightSourceButtonHdl ) );
m_aBtn_Light5.connect_clicked( LINK( this, ThreeD_SceneIllumination_TabPage, ClickLightSourceButtonHdl ) );
m_aBtn_Light6.connect_clicked( LINK( this, ThreeD_SceneIllumination_TabPage, ClickLightSourceButtonHdl ) );
m_aBtn_Light7.connect_clicked( LINK( this, ThreeD_SceneIllumination_TabPage, ClickLightSourceButtonHdl ) );
m_aBtn_Light8.connect_clicked( LINK( this, ThreeD_SceneIllumination_TabPage, ClickLightSourceButtonHdl ) );
m_xLB_AmbientLight->SetSelectHdl( LINK( this, ThreeD_SceneIllumination_TabPage, SelectColorHdl ) );
m_xLB_LightSource->SetSelectHdl( LINK( this, ThreeD_SceneIllumination_TabPage, SelectColorHdl ) );
m_xBtn_AmbientLight_Color->connect_clicked( LINK( this, ThreeD_SceneIllumination_TabPage, ColorDialogHdl ) );
m_xBtn_LightSource_Color->connect_clicked( LINK( this, ThreeD_SceneIllumination_TabPage, ColorDialogHdl ) );
m_xCtl_Preview->SetUserInteractiveChangeCallback( LINK( this, ThreeD_SceneIllumination_TabPage, PreviewChangeHdl ) );
m_xCtl_Preview->SetUserSelectionChangeCallback( LINK( this, ThreeD_SceneIllumination_TabPage, PreviewSelectHdl ) );
ClickLightSourceButtonHdl(*m_aBtn_Light2.get_widget());
m_aModelChangeListener.startListening( uno::Reference< util::XModifyBroadcaster >(m_xSceneProperties, uno::UNO_QUERY) );
}
ThreeD_SceneIllumination_TabPage::~ThreeD_SceneIllumination_TabPage()
{
// drop page view before the widget it paints to is destroyed
m_xPreview->ClearPageView();
}
IMPL_LINK_NOARG(ThreeD_SceneIllumination_TabPage, fillControlsFromModel, void*, void)
{
if( m_bInCommitToModel )//don't read own changes
return;
sal_Int32 nL=0;
for( nL=0; nL<8; nL++)
m_pLightSourceInfoList[nL].aLightSource = lcl_getLightSourceFromProperties( m_xSceneProperties, nL );
for( nL=0; nL<8; nL++)
m_pLightSourceInfoList[nL].initButtonFromSource();
lcl_selectColor( *m_xLB_AmbientLight, lcl_getAmbientColor( m_xSceneProperties ));
updatePreview();
}
void ThreeD_SceneIllumination_TabPage::applyLightSourceToModel( sal_uInt32 nLightNumber )
{
ControllerLockGuardUNO aGuard( m_xChartModel );
m_bInCommitToModel = true;
sal_Int32 nIndex( nLightNumber );
lcl_setLightSource( m_xSceneProperties, m_pLightSourceInfoList[nIndex].aLightSource, nIndex );
m_bInCommitToModel = false;
}
void ThreeD_SceneIllumination_TabPage::applyLightSourcesToModel()
{
m_aTimerTriggeredControllerLock.startTimer();
ControllerLockGuardUNO aGuard( m_xChartModel );
for( sal_Int32 nL=0; nL<8; nL++)
applyLightSourceToModel( nL );
m_aTimerTriggeredControllerLock.startTimer();
}
IMPL_LINK_NOARG(ThreeD_SceneIllumination_TabPage, PreviewChangeHdl, SvxLightCtl3D*, void)
{
m_aTimerTriggeredControllerLock.startTimer();
//update m_pLightSourceInfoList from preview
const SfxItemSet a3DLightAttributes(m_xCtl_Preview->GetSvx3DLightControl().Get3DAttributes());
LightSourceInfo* pInfo = &m_pLightSourceInfoList[0];
pInfo->aLightSource.nDiffuseColor = a3DLightAttributes.Get(SDRATTR_3DSCENE_LIGHTCOLOR_1).GetValue();
pInfo->aLightSource.bIsEnabled = a3DLightAttributes.Get(SDRATTR_3DSCENE_LIGHTON_1).GetValue();
pInfo->aLightSource.aDirection = B3DVectorToDirection3D(a3DLightAttributes.Get(SDRATTR_3DSCENE_LIGHTDIRECTION_1).GetValue());
pInfo = &m_pLightSourceInfoList[1];
pInfo->aLightSource.nDiffuseColor = a3DLightAttributes.Get(SDRATTR_3DSCENE_LIGHTCOLOR_2).GetValue();
pInfo->aLightSource.bIsEnabled = a3DLightAttributes.Get(SDRATTR_3DSCENE_LIGHTON_2).GetValue();
pInfo->aLightSource.aDirection = B3DVectorToDirection3D(a3DLightAttributes.Get(SDRATTR_3DSCENE_LIGHTDIRECTION_2).GetValue());
pInfo = &m_pLightSourceInfoList[2];
pInfo->aLightSource.nDiffuseColor = a3DLightAttributes.Get(SDRATTR_3DSCENE_LIGHTCOLOR_3).GetValue();
pInfo->aLightSource.bIsEnabled = a3DLightAttributes.Get(SDRATTR_3DSCENE_LIGHTON_3).GetValue();
pInfo->aLightSource.aDirection = B3DVectorToDirection3D(a3DLightAttributes.Get(SDRATTR_3DSCENE_LIGHTDIRECTION_3).GetValue());
pInfo = &m_pLightSourceInfoList[3];
pInfo->aLightSource.nDiffuseColor = a3DLightAttributes.Get(SDRATTR_3DSCENE_LIGHTCOLOR_4).GetValue();
pInfo->aLightSource.bIsEnabled = a3DLightAttributes.Get(SDRATTR_3DSCENE_LIGHTON_4).GetValue();
pInfo->aLightSource.aDirection = B3DVectorToDirection3D(a3DLightAttributes.Get(SDRATTR_3DSCENE_LIGHTDIRECTION_4).GetValue());
pInfo = &m_pLightSourceInfoList[4];
pInfo->aLightSource.nDiffuseColor = a3DLightAttributes.Get(SDRATTR_3DSCENE_LIGHTCOLOR_5).GetValue();
pInfo->aLightSource.bIsEnabled = a3DLightAttributes.Get(SDRATTR_3DSCENE_LIGHTON_5).GetValue();
pInfo->aLightSource.aDirection = B3DVectorToDirection3D(a3DLightAttributes.Get(SDRATTR_3DSCENE_LIGHTDIRECTION_5).GetValue());
pInfo = &m_pLightSourceInfoList[5];
pInfo->aLightSource.nDiffuseColor = a3DLightAttributes.Get(SDRATTR_3DSCENE_LIGHTCOLOR_6).GetValue();
pInfo->aLightSource.bIsEnabled = a3DLightAttributes.Get(SDRATTR_3DSCENE_LIGHTON_6).GetValue();
pInfo->aLightSource.aDirection = B3DVectorToDirection3D(a3DLightAttributes.Get(SDRATTR_3DSCENE_LIGHTDIRECTION_6).GetValue());
pInfo = &m_pLightSourceInfoList[6];
pInfo->aLightSource.nDiffuseColor = a3DLightAttributes.Get(SDRATTR_3DSCENE_LIGHTCOLOR_7).GetValue();
pInfo->aLightSource.bIsEnabled = a3DLightAttributes.Get(SDRATTR_3DSCENE_LIGHTON_7).GetValue();
pInfo->aLightSource.aDirection = B3DVectorToDirection3D(a3DLightAttributes.Get(SDRATTR_3DSCENE_LIGHTDIRECTION_7).GetValue());
pInfo = &m_pLightSourceInfoList[7];
pInfo->aLightSource.nDiffuseColor = a3DLightAttributes.Get(SDRATTR_3DSCENE_LIGHTCOLOR_8).GetValue();
pInfo->aLightSource.bIsEnabled = a3DLightAttributes.Get(SDRATTR_3DSCENE_LIGHTON_8).GetValue();
pInfo->aLightSource.aDirection = B3DVectorToDirection3D(a3DLightAttributes.Get(SDRATTR_3DSCENE_LIGHTDIRECTION_8).GetValue());
applyLightSourcesToModel();
}
IMPL_LINK_NOARG(ThreeD_SceneIllumination_TabPage, PreviewSelectHdl, SvxLightCtl3D*, void)
{
sal_uInt32 nLightNumber = m_xCtl_Preview->GetSvx3DLightControl().GetSelectedLight();
if(nLightNumber<8)
{
LightButton* pButton = m_pLightSourceInfoList[nLightNumber].pButton;
if(!pButton->get_active())
ClickLightSourceButtonHdl(*pButton->get_widget());
applyLightSourcesToModel();
}
}
IMPL_LINK( ThreeD_SceneIllumination_TabPage, ColorDialogHdl, weld::Button&, rButton, void )
{
bool bIsAmbientLight = (&rButton == m_xBtn_AmbientLight_Color.get());
ColorListBox* pListBox = bIsAmbientLight ? m_xLB_AmbientLight.get() : m_xLB_LightSource.get();
SvColorDialog aColorDlg;
aColorDlg.SetColor( pListBox->GetSelectEntryColor() );
if( aColorDlg.Execute(m_pTopLevel) != RET_OK )
return;
Color aColor( aColorDlg.GetColor());
lcl_selectColor( *pListBox, aColor );
if( bIsAmbientLight )
{
m_bInCommitToModel = true;
lcl_setAmbientColor( m_xSceneProperties, aColor );
m_bInCommitToModel = false;
}
else
{
//get active lightsource:
LightSourceInfo* pInfo = nullptr;
sal_Int32 nL=0;
for( nL=0; nL<8; nL++)
{
pInfo = &m_pLightSourceInfoList[nL];
if(pInfo->pButton->get_active())
break;
pInfo = nullptr;
}
if(pInfo)
applyLightSourceToModel( nL );
}
SelectColorHdl( *pListBox );
}
IMPL_LINK( ThreeD_SceneIllumination_TabPage, SelectColorHdl, ColorListBox&, rBox, void )
{
ColorListBox* pListBox = &rBox;
if (pListBox == m_xLB_AmbientLight.get())
{
m_bInCommitToModel = true;
lcl_setAmbientColor( m_xSceneProperties, pListBox->GetSelectEntryColor());
m_bInCommitToModel = false;
}
else if (pListBox == m_xLB_LightSource.get())
{
//get active lightsource:
LightSourceInfo* pInfo = nullptr;
sal_Int32 nL=0;
for( nL=0; nL<8; nL++)
{
pInfo = &m_pLightSourceInfoList[nL];
if (pInfo->pButton->get_active())
break;
pInfo = nullptr;
}
if(pInfo)
{
pInfo->aLightSource.nDiffuseColor = pListBox->GetSelectEntryColor();
applyLightSourceToModel( nL );
}
}
updatePreview();
}
IMPL_LINK(ThreeD_SceneIllumination_TabPage, ClickLightSourceButtonHdl, weld::Button&, rBtn, void)
{
LightButton* pButton = nullptr;
LightSourceInfo* pInfo = nullptr;
sal_Int32 nL=0;
for( nL=0; nL<8; nL++)
{
if (m_pLightSourceInfoList[nL].pButton->get_widget() == &rBtn)
{
pButton = m_pLightSourceInfoList[nL].pButton;
pInfo = &m_pLightSourceInfoList[nL];
break;
}
}
assert(pInfo);
bool bIsChecked = pInfo->pButton->get_prev_active();
ControllerLockGuardUNO aGuard( m_xChartModel );
for (sal_Int32 i = 0; i < 8; ++i)
{
LightButton* pLightButton = m_pLightSourceInfoList[i].pButton;
if (pLightButton == pButton)
{
pLightButton->set_active(true);
if (!pLightButton->get_widget()->has_focus())
pLightButton->get_widget()->grab_focus();
m_pLightSourceInfoList[i].pButton->set_prev_active(true);
}
else
{
pLightButton->set_active(false);
m_pLightSourceInfoList[i].pButton->set_prev_active(false);
}
}
//update light button
if (bIsChecked)
{
pButton->switchLightOn(!pButton->isLightOn());
pInfo->aLightSource.bIsEnabled=pButton->isLightOn();
applyLightSourceToModel( nL );
}
//update color list box
lcl_selectColor( *m_xLB_LightSource, pInfo->aLightSource.nDiffuseColor );
updatePreview();
}
void ThreeD_SceneIllumination_TabPage::updatePreview()
{
SfxItemSet aItemSet(m_xCtl_Preview->GetSvx3DLightControl().Get3DAttributes());
LightSourceInfo* pInfo = &m_pLightSourceInfoList[0];
// AmbientColor
aItemSet.Put(makeSvx3DAmbientcolorItem(m_xLB_AmbientLight->GetSelectEntryColor()));
aItemSet.Put(makeSvx3DLightcolor1Item(pInfo->aLightSource.nDiffuseColor));
aItemSet.Put(makeSvx3DLightOnOff1Item(pInfo->aLightSource.bIsEnabled));
aItemSet.Put(makeSvx3DLightDirection1Item(Direction3DToB3DVector(pInfo->aLightSource.aDirection)));
pInfo = &m_pLightSourceInfoList[1];
aItemSet.Put(makeSvx3DLightcolor2Item(pInfo->aLightSource.nDiffuseColor));
aItemSet.Put(makeSvx3DLightOnOff2Item(pInfo->aLightSource.bIsEnabled));
aItemSet.Put(makeSvx3DLightDirection2Item(Direction3DToB3DVector(pInfo->aLightSource.aDirection)));
pInfo = &m_pLightSourceInfoList[2];
aItemSet.Put(makeSvx3DLightcolor3Item(pInfo->aLightSource.nDiffuseColor));
aItemSet.Put(makeSvx3DLightOnOff3Item(pInfo->aLightSource.bIsEnabled));
aItemSet.Put(makeSvx3DLightDirection3Item(Direction3DToB3DVector(pInfo->aLightSource.aDirection)));
pInfo = &m_pLightSourceInfoList[3];
aItemSet.Put(makeSvx3DLightcolor4Item(pInfo->aLightSource.nDiffuseColor));
aItemSet.Put(makeSvx3DLightOnOff4Item(pInfo->aLightSource.bIsEnabled));
aItemSet.Put(makeSvx3DLightDirection4Item(Direction3DToB3DVector(pInfo->aLightSource.aDirection)));
pInfo = &m_pLightSourceInfoList[4];
aItemSet.Put(makeSvx3DLightcolor5Item(pInfo->aLightSource.nDiffuseColor));
aItemSet.Put(makeSvx3DLightOnOff5Item(pInfo->aLightSource.bIsEnabled));
aItemSet.Put(makeSvx3DLightDirection5Item(Direction3DToB3DVector(pInfo->aLightSource.aDirection)));
pInfo = &m_pLightSourceInfoList[5];
aItemSet.Put(makeSvx3DLightcolor6Item(pInfo->aLightSource.nDiffuseColor));
aItemSet.Put(makeSvx3DLightOnOff6Item(pInfo->aLightSource.bIsEnabled));
aItemSet.Put(makeSvx3DLightDirection6Item(Direction3DToB3DVector(pInfo->aLightSource.aDirection)));
pInfo = &m_pLightSourceInfoList[6];
aItemSet.Put(makeSvx3DLightcolor7Item(pInfo->aLightSource.nDiffuseColor));
aItemSet.Put(makeSvx3DLightOnOff7Item(pInfo->aLightSource.bIsEnabled));
aItemSet.Put(makeSvx3DLightDirection7Item(Direction3DToB3DVector(pInfo->aLightSource.aDirection)));
pInfo = &m_pLightSourceInfoList[7];
aItemSet.Put(makeSvx3DLightcolor8Item(pInfo->aLightSource.nDiffuseColor));
aItemSet.Put(makeSvx3DLightOnOff8Item(pInfo->aLightSource.bIsEnabled));
aItemSet.Put(makeSvx3DLightDirection8Item(Direction3DToB3DVector(pInfo->aLightSource.aDirection)));
// set lights and ambient light
m_xCtl_Preview->GetSvx3DLightControl().Set3DAttributes(aItemSet);
// select light
for(sal_uInt32 a(0); a < 8; a++)
{
if (m_pLightSourceInfoList[a].pButton->get_active())
{
m_xCtl_Preview->GetSvx3DLightControl().SelectLight(a);
m_xCtl_Preview->CheckSelection();
break;
}
}
}
} //namespace chart
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */