diff options
Diffstat (limited to 'include/svx/float3d.hxx')
-rw-r--r-- | include/svx/float3d.hxx | 291 |
1 files changed, 291 insertions, 0 deletions
diff --git a/include/svx/float3d.hxx b/include/svx/float3d.hxx new file mode 100644 index 000000000000..1809e715c3ad --- /dev/null +++ b/include/svx/float3d.hxx @@ -0,0 +1,291 @@ +/* -*- 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 . + */ + +#ifndef _SVX_FLOAT3D_HXX +#define _SVX_FLOAT3D_HXX + +#include <sfx2/ctrlitem.hxx> +#include <vcl/fixed.hxx> +#include <vcl/field.hxx> +#include <sfx2/dockwin.hxx> +#include <vcl/button.hxx> +#include <svtools/stdctrl.hxx> +#include "svx/svxdllapi.h" + +#include <svx/f3dchild.hxx> +#include <svx/dlgctl3d.hxx> +#include <svx/dlgctrl.hxx> +#include <svx/svdmodel.hxx> + +enum ViewType3D +{ + VIEWTYPE_GEO = 1, + VIEWTYPE_REPRESENTATION, + VIEWTYPE_LIGHT, + VIEWTYPE_TEXTURE, + VIEWTYPE_MATERIAL +}; + +class SdrModel; +class FmFormModel; +class VirtualDevice; +class E3dView; +class SdrPageView; +class Svx3DCtrlItem; +class SvxConvertTo3DItem; + +//------------------------------------------------------------------------ +struct Svx3DWinImpl; + +class SVX_DLLPUBLIC Svx3DWin : public SfxDockingWindow +{ + friend class Svx3DChildWindow; + friend class Svx3DCtrlItem; + using Window::Update; + +private: + ImageButton aBtnGeo; + ImageButton aBtnRepresentation; + ImageButton aBtnLight; + ImageButton aBtnTexture; + ImageButton aBtnMaterial; + ImageButton aBtnUpdate; + ImageButton aBtnAssign; + +// geometry + FixedLine aFLGeometrie; + FixedText aFtPercentDiagonal; + MetricField aMtrPercentDiagonal; + FixedText aFtBackscale; + MetricField aMtrBackscale; + FixedText aFtEndAngle; + MetricField aMtrEndAngle; + FixedText aFtDepth; + MetricField aMtrDepth; + FixedLine aFLSegments; + + FixedText aFtHorizontal; + NumericField aNumHorizontal; + FixedText aFtVertical; + NumericField aNumVertical; + FixedLine aFLNormals; + + ImageButton aBtnNormalsObj; + ImageButton aBtnNormalsFlat; + ImageButton aBtnNormalsSphere; + ImageButton aBtnNormalsInvert; + ImageButton aBtnTwoSidedLighting; + + ImageButton aBtnDoubleSided; + FixedLine aFLRepresentation; +// presentation + FixedText aFtShademode; + ListBox aLbShademode; + FixedLine aFLShadow; + ImageButton aBtnShadow3d; + FixedText aFtSlant; + MetricField aMtrSlant; + FixedText aFtDistance; + MetricField aMtrDistance; + FixedText aFtFocalLeng; + MetricField aMtrFocalLength; + FixedLine aFLCamera; + FixedLine aFLLight; + +// lighting + ImageButton aBtnLight1; + ImageButton aBtnLight2; + ImageButton aBtnLight3; + ImageButton aBtnLight4; + ImageButton aBtnLight5; + ImageButton aBtnLight6; + ImageButton aBtnLight7; + ImageButton aBtnLight8; + FixedText aFTLightsource; + ColorLB aLbLight1; + ColorLB aLbLight2; + ColorLB aLbLight3; + ColorLB aLbLight4; + ColorLB aLbLight5; + ColorLB aLbLight6; + ColorLB aLbLight7; + ColorLB aLbLight8; + + ImageButton aBtnLightColor; + + // #99694# Keyboard shortcuts activate the next control, so the + // order needed to be changed here + FixedText aFTAmbientlight; // Text label + ColorLB aLbAmbientlight; // ListBox + ImageButton aBtnAmbientColor; // color button + + FixedLine aFLTexture; + +// Textures + FixedText aFtTexKind; + ImageButton aBtnTexLuminance; + ImageButton aBtnTexColor; + FixedText aFtTexMode; + ImageButton aBtnTexReplace; + ImageButton aBtnTexModulate; + ImageButton aBtnTexBlend; + FixedText aFtTexProjectionX; + ImageButton aBtnTexObjectX; + ImageButton aBtnTexParallelX; + ImageButton aBtnTexCircleX; + FixedText aFtTexProjectionY; + ImageButton aBtnTexObjectY; + ImageButton aBtnTexParallelY; + ImageButton aBtnTexCircleY; + FixedText aFtTexFilter; + ImageButton aBtnTexFilter; + +// material +// material editor + FixedLine aFLMaterial; + FixedText aFtMatFavorites; + ListBox aLbMatFavorites; + FixedText aFtMatColor; + ColorLB aLbMatColor; + ImageButton aBtnMatColor; + FixedText aFtMatEmission; + ColorLB aLbMatEmission; + ImageButton aBtnEmissionColor; + FixedLine aFLMatSpecular; + FixedText aFtMatSpecular; + ColorLB aLbMatSpecular; + ImageButton aBtnSpecularColor; + FixedText aFtMatSpecularIntensity; + MetricField aMtrMatSpecularIntensity; + + Svx3DPreviewControl aCtlPreview; + SvxLightCtl3D aCtlLightPreview; + +// bottom part + ImageButton aBtnConvertTo3D; + ImageButton aBtnLatheObject; + ImageButton aBtnPerspective; + +// the rest ... + Image aImgLightOn; + Image aImgLightOff; + sal_Bool bUpdate; + ViewType3D eViewType; + Size aSize; + + // Model, Page, View etc. for favourites + FmFormModel* pModel; + VirtualDevice* pVDev; + E3dView* p3DView; + + SfxBindings* pBindings; + Svx3DCtrlItem* pControllerItem; + + SvxConvertTo3DItem* pConvertTo3DItem; + SvxConvertTo3DItem* pConvertTo3DLatheItem; + + Svx3DWinImpl* mpImpl; + SfxMapUnit ePoolUnit; + FieldUnit eFUnit; + + // ItemSet used to remember set 2d attributes + SfxItemSet* mpRemember2DAttributes; + + sal_Bool bOnly3DChanged; + + //------------------------------------ + + DECL_LINK( ClickViewTypeHdl, void * ); + DECL_LINK( ClickUpdateHdl, void * ); + DECL_LINK( ClickAssignHdl, void * ); + DECL_LINK( ClickHdl, PushButton * ); + DECL_LINK( ClickColorHdl, PushButton * ); + DECL_LINK( SelectHdl, void * ); + DECL_LINK( ModifyHdl, void * ); + void ClickLight(PushButton &rBtn); + + DECL_LINK( ChangeLightCallbackHdl, void * ); + DECL_LINK( ChangeSelectionCallbackHdl, void * ); + + SVX_DLLPRIVATE void Construct(); + SVX_DLLPRIVATE void Reset(); + + SVX_DLLPRIVATE sal_Bool LBSelectColor( ColorLB* pLb, const Color& rColor ); + SVX_DLLPRIVATE sal_uInt16 GetLightSource( const PushButton* pBtn = NULL ); + SVX_DLLPRIVATE ColorLB* GetLbByButton( const PushButton* pBtn = NULL ); + + SVX_DLLPRIVATE bool GetUILightState( const ImageButton& rBtn ) const; + SVX_DLLPRIVATE void SetUILightState( ImageButton& aBtn, bool bState ); + +protected: + virtual void Resize(); + +public: + Svx3DWin( SfxBindings* pBindings, SfxChildWindow *pCW, + Window* pParent ); + ~Svx3DWin(); + + void InitColorLB( const SdrModel* pDoc ); + sal_Bool IsUpdateMode() const { return bUpdate; } + + void Update( SfxItemSet& rSet ); + void GetAttr( SfxItemSet& rSet ); + + void UpdatePreview(); // nach oben (private) + void DocumentReload(); // #83951# +}; + +/************************************************************************* +|* +|* Controller item for 3D Window (Floating/Docking) +|* +\************************************************************************/ + +class Svx3DCtrlItem : public SfxControllerItem +{ + protected: + virtual void StateChanged( sal_uInt16 nSId, SfxItemState eState, + const SfxPoolItem* pState ); + + public: + Svx3DCtrlItem( sal_uInt16, SfxBindings* ); +}; + +/************************************************************************* +|* +|* ControllerItem for State of a Slot +|* (SID_CONVERT_TO_3D, SID_CONVERT_TO_3D_LATHE_FAST) +|* +\************************************************************************/ + +class SvxConvertTo3DItem : public SfxControllerItem +{ + sal_Bool bState; + +protected: + virtual void StateChanged(sal_uInt16 nSId, SfxItemState eState, const SfxPoolItem* pState); + +public: + SvxConvertTo3DItem(sal_uInt16 nId, SfxBindings* pBindings); + sal_Bool GetState() const { return bState; } +}; + +#endif // _SVX_FLOAT3D_HXX + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |