diff options
Diffstat (limited to 'svx/inc/svx/float3d.hxx')
-rw-r--r-- | svx/inc/svx/float3d.hxx | 316 |
1 files changed, 316 insertions, 0 deletions
diff --git a/svx/inc/svx/float3d.hxx b/svx/inc/svx/float3d.hxx new file mode 100644 index 000000000000..889701764413 --- /dev/null +++ b/svx/inc/svx/float3d.hxx @@ -0,0 +1,316 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: float3d.hxx,v $ + * $Revision: 1.3.226.1 $ + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef _SVX_FLOAT3D_HXX +#define _SVX_FLOAT3D_HXX + +#include <sfx2/ctrlitem.hxx> +#ifndef _FIXED_HXX //autogen +#include <vcl/fixed.hxx> +#endif +#ifndef _FIELD_HXX //autogen +#include <vcl/field.hxx> +#endif +#include <sfx2/dockwin.hxx> +#ifndef _IMAGEBTN_HXX //autogen +#include <vcl/imagebtn.hxx> +#endif +#include <svtools/valueset.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 FmFormPage; +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; + +// Geometrie + FixedText aFtPercentDiagonal; + MetricField aMtrPercentDiagonal; + FixedText aFtBackscale; + MetricField aMtrBackscale; + FixedText aFtEndAngle; + MetricField aMtrEndAngle; + FixedText aFtDepth; + MetricField aMtrDepth; + FixedLine aFLGeometrie; + + FixedText aFtHorizontal; + NumericField aNumHorizontal; + FixedText aFtVertical; + NumericField aNumVertical; + FixedLine aFLSegments; + + ImageButton aBtnNormalsObj; + ImageButton aBtnNormalsFlat; + ImageButton aBtnNormalsSphere; + ImageButton aBtnNormalsInvert; + ImageButton aBtnTwoSidedLighting; + FixedLine aFLNormals; + + ImageButton aBtnDoubleSided; + +// Darstellung + FixedText aFtShademode; + ListBox aLbShademode; + ImageButton aBtnShadow3d; + FixedText aFtSlant; + MetricField aMtrSlant; + FixedLine aFLShadow; + FixedText aFtDistance; + MetricField aMtrDistance; + FixedText aFtFocalLeng; + MetricField aMtrFocalLength; + FixedLine aFLCamera; + FixedLine aFLRepresentation; + +// Beleuchtung + ImageButton aBtnLight1; + ImageButton aBtnLight2; + ImageButton aBtnLight3; + ImageButton aBtnLight4; + ImageButton aBtnLight5; + ImageButton aBtnLight6; + ImageButton aBtnLight7; + ImageButton aBtnLight8; + ColorLB aLbLight1; + ColorLB aLbLight2; + ColorLB aLbLight3; + ColorLB aLbLight4; + ColorLB aLbLight5; + ColorLB aLbLight6; + ColorLB aLbLight7; + ColorLB aLbLight8; + + ImageButton aBtnLightColor; + FixedText aFTLightsource; + + // #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 aFLLight; + +// Texturen + 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; + FixedLine aFLTexture; + +// Material +// Materialeditor + FixedText aFtMatFavorites; + ListBox aLbMatFavorites; + FixedText aFtMatColor; + ColorLB aLbMatColor; + ImageButton aBtnMatColor; + FixedText aFtMatEmission; + ColorLB aLbMatEmission; + ImageButton aBtnEmissionColor; + FixedText aFtMatSpecular; + ColorLB aLbMatSpecular; + ImageButton aBtnSpecularColor; + FixedText aFtMatSpecularIntensity; + MetricField aMtrMatSpecularIntensity; + FixedLine aFLMatSpecular; + FixedLine aFLMaterial; + +// Unterer Teil + ImageButton aBtnConvertTo3D; + ImageButton aBtnLatheObject; + ImageButton aBtnPerspective; + Svx3DPreviewControl aCtlPreview; + SvxLightCtl3D aCtlLightPreview; + +// der Rest ... + Image aImgLightOn; + Image aImgLightOff; + BOOL bUpdate; + ViewType3D eViewType; + Size aSize; + + // Model, Page, View etc. fuer Favoriten + FmFormModel* pModel; + FmFormPage* pFmPage; + VirtualDevice* pVDev; + E3dView* p3DView; + List* pFavorSetList; + List* pMatFavSetList; + + SfxBindings* pBindings; + Svx3DCtrlItem* pControllerItem; + + SvxConvertTo3DItem* pConvertTo3DItem; + SvxConvertTo3DItem* pConvertTo3DLatheItem; + + Svx3DWinImpl* mpImpl; + SfxMapUnit ePoolUnit; + FieldUnit eFUnit; + + // ItemSet used to remember set 2d attributes + SfxItemSet* mpRemember2DAttributes; + + 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 * ); + DECL_LINK( ClickLightHdl, PushButton * ); + + DECL_LINK( DoubleClickHdl, void * ); + + DECL_LINK( ChangeLightCallbackHdl, void * ); + DECL_LINK( ChangeSelectionCallbackHdl, void * ); + + SVX_DLLPRIVATE void Construct(); + SVX_DLLPRIVATE void Reset(); + + SVX_DLLPRIVATE BOOL LBSelectColor( ColorLB* pLb, const Color& rColor ); + SVX_DLLPRIVATE USHORT GetLightSource( const PushButton* pBtn = NULL ); + SVX_DLLPRIVATE ColorLB* GetLbByButton( const PushButton* pBtn = NULL ); + + SVX_DLLPRIVATE bool GetUILightState( ImageButton& aBtn ) 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 ); + BOOL IsUpdateMode() const { return bUpdate; } + + void Update( SfxItemSet& rSet ); + void GetAttr( SfxItemSet& rSet ); + + void UpdatePreview(); // nach oben (private) + void DocumentReload(); // #83951# +}; + +/************************************************************************* +|* +|* ControllerItem fuer 3D-Window (Floating/Docking) +|* +\************************************************************************/ + +class Svx3DCtrlItem : public SfxControllerItem +{ + Svx3DWin* p3DWin; + + protected: + virtual void StateChanged( USHORT nSId, SfxItemState eState, + const SfxPoolItem* pState ); + + public: + Svx3DCtrlItem( USHORT, Svx3DWin*, SfxBindings* ); +}; + +/************************************************************************* +|* +|* ControllerItem fuer Status eines Slots +|* (SID_CONVERT_TO_3D, SID_CONVERT_TO_3D_LATHE_FAST) +|* +\************************************************************************/ + +class SvxConvertTo3DItem : public SfxControllerItem +{ + BOOL bState; + +protected: + virtual void StateChanged(UINT16 nSId, SfxItemState eState, const SfxPoolItem* pState); + +public: + SvxConvertTo3DItem(UINT16 nId, SfxBindings* pBindings); + BOOL GetState() const { return bState; } +}; + +#endif // _SVX_FLOAT3D_HXX + |