xref: /aoo41x/main/svx/inc/svx/camera3d.hxx (revision 3334a7e6)
1*3334a7e6SAndrew Rist /**************************************************************
2*3334a7e6SAndrew Rist  *
3*3334a7e6SAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
4*3334a7e6SAndrew Rist  * or more contributor license agreements.  See the NOTICE file
5*3334a7e6SAndrew Rist  * distributed with this work for additional information
6*3334a7e6SAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
7*3334a7e6SAndrew Rist  * to you under the Apache License, Version 2.0 (the
8*3334a7e6SAndrew Rist  * "License"); you may not use this file except in compliance
9*3334a7e6SAndrew Rist  * with the License.  You may obtain a copy of the License at
10*3334a7e6SAndrew Rist  *
11*3334a7e6SAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12cdf0e10cSrcweir  *
13*3334a7e6SAndrew Rist  * Unless required by applicable law or agreed to in writing,
14*3334a7e6SAndrew Rist  * software distributed under the License is distributed on an
15*3334a7e6SAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*3334a7e6SAndrew Rist  * KIND, either express or implied.  See the License for the
17*3334a7e6SAndrew Rist  * specific language governing permissions and limitations
18*3334a7e6SAndrew Rist  * under the License.
19*3334a7e6SAndrew Rist  *
20*3334a7e6SAndrew Rist  *************************************************************/
21*3334a7e6SAndrew Rist 
22*3334a7e6SAndrew Rist 
23cdf0e10cSrcweir 
24cdf0e10cSrcweir #ifndef _CAMERA3D_HXX
25cdf0e10cSrcweir #define _CAMERA3D_HXX
26cdf0e10cSrcweir 
27cdf0e10cSrcweir #include <svx/viewpt3d.hxx>
28cdf0e10cSrcweir #include "svx/svxdllapi.h"
29cdf0e10cSrcweir 
30cdf0e10cSrcweir /*************************************************************************
31cdf0e10cSrcweir |*
32cdf0e10cSrcweir |* Kamera-Ableitung
33cdf0e10cSrcweir |*
34cdf0e10cSrcweir \************************************************************************/
35cdf0e10cSrcweir 
36cdf0e10cSrcweir class SVX_DLLPUBLIC Camera3D : public Viewport3D
37cdf0e10cSrcweir {
38cdf0e10cSrcweir  protected:
39cdf0e10cSrcweir 	basegfx::B3DPoint	aResetPos;
40cdf0e10cSrcweir 	basegfx::B3DPoint	aResetLookAt;
41cdf0e10cSrcweir 	double		fResetFocalLength;
42cdf0e10cSrcweir 	double		fResetBankAngle;
43cdf0e10cSrcweir 
44cdf0e10cSrcweir 	basegfx::B3DPoint	aPosition;
45cdf0e10cSrcweir 	basegfx::B3DPoint	aLookAt;
46cdf0e10cSrcweir 	double		fFocalLength;
47cdf0e10cSrcweir 	double		fBankAngle;
48cdf0e10cSrcweir 
49cdf0e10cSrcweir 	FASTBOOL	bAutoAdjustProjection;
50cdf0e10cSrcweir 
51cdf0e10cSrcweir  public:
52cdf0e10cSrcweir 	Camera3D(const basegfx::B3DPoint& rPos, const basegfx::B3DPoint& rLookAt,
53cdf0e10cSrcweir 			 double fFocalLen = 35.0, double fBankAng = 0);
54cdf0e10cSrcweir 	Camera3D();
55cdf0e10cSrcweir 
56cdf0e10cSrcweir 	// Anfangswerte wieder herstellen
57cdf0e10cSrcweir 	void Reset();
58cdf0e10cSrcweir 
59cdf0e10cSrcweir 	void SetDefaults(const basegfx::B3DPoint& rPos, const basegfx::B3DPoint& rLookAt,
60cdf0e10cSrcweir 					 double fFocalLen = 35.0, double fBankAng = 0);
61cdf0e10cSrcweir 
62cdf0e10cSrcweir 	void SetViewWindow(double fX, double fY, double fW, double fH);
63cdf0e10cSrcweir 
64cdf0e10cSrcweir 	void SetPosition(const basegfx::B3DPoint& rNewPos);
GetPosition() const65cdf0e10cSrcweir 	const basegfx::B3DPoint& GetPosition() const { return aPosition; }
66cdf0e10cSrcweir 	void SetLookAt(const basegfx::B3DPoint& rNewLookAt);
GetLookAt() const67cdf0e10cSrcweir 	const basegfx::B3DPoint& GetLookAt() const { return aLookAt; }
68cdf0e10cSrcweir 	void SetPosAndLookAt(const basegfx::B3DPoint& rNewPos, const basegfx::B3DPoint& rNewLookAt);
69cdf0e10cSrcweir 
70cdf0e10cSrcweir 	// Brennweite in mm
71cdf0e10cSrcweir 	void	SetFocalLength(double fLen);
72cdf0e10cSrcweir 	void	SetFocalLengthWithCorrect(double fLen);
GetFocalLength() const73cdf0e10cSrcweir 	double	GetFocalLength() const { return fFocalLength; }
74cdf0e10cSrcweir 
75cdf0e10cSrcweir 	// Neigung links/rechts
76cdf0e10cSrcweir 	void	SetBankAngle(double fAngle);
GetBankAngle() const77cdf0e10cSrcweir 	double	GetBankAngle() const { return fBankAngle; }
78cdf0e10cSrcweir 
79cdf0e10cSrcweir 	// Um die Kameraposition drehen, LookAt wird dabei veraendert
80cdf0e10cSrcweir 	void Rotate(double fHAngle, double fVAngle);
81cdf0e10cSrcweir 
82cdf0e10cSrcweir 	// Um den Blickpunkt drehen, Position wird dabei veraendert
83cdf0e10cSrcweir 	void RotateAroundLookAt(double fHAngle, double fVAngle);
84cdf0e10cSrcweir 
SetAutoAdjustProjection(FASTBOOL bAdjust=sal_True)85cdf0e10cSrcweir 	void SetAutoAdjustProjection(FASTBOOL bAdjust = sal_True)
86cdf0e10cSrcweir 		{ bAutoAdjustProjection = bAdjust; }
IsAutoAdjustProjection() const87cdf0e10cSrcweir 	FASTBOOL IsAutoAdjustProjection() const { return bAutoAdjustProjection; }
88cdf0e10cSrcweir };
89cdf0e10cSrcweir 
90cdf0e10cSrcweir #endif		// _CAMERA3D_HXX
91