xref: /aoo4110/main/svx/source/engine3d/sphere3d.cxx (revision b1cdbd2c)
1*b1cdbd2cSJim Jagielski /**************************************************************
2*b1cdbd2cSJim Jagielski  *
3*b1cdbd2cSJim Jagielski  * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski  * or more contributor license agreements.  See the NOTICE file
5*b1cdbd2cSJim Jagielski  * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski  * regarding copyright ownership.  The ASF licenses this file
7*b1cdbd2cSJim Jagielski  * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski  * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski  * with the License.  You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski  *
11*b1cdbd2cSJim Jagielski  *   http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski  *
13*b1cdbd2cSJim Jagielski  * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski  * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski  * KIND, either express or implied.  See the License for the
17*b1cdbd2cSJim Jagielski  * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski  * under the License.
19*b1cdbd2cSJim Jagielski  *
20*b1cdbd2cSJim Jagielski  *************************************************************/
21*b1cdbd2cSJim Jagielski 
22*b1cdbd2cSJim Jagielski 
23*b1cdbd2cSJim Jagielski 
24*b1cdbd2cSJim Jagielski // MARKER(update_precomp.py): autogen include statement, do not remove
25*b1cdbd2cSJim Jagielski #include "precompiled_svx.hxx"
26*b1cdbd2cSJim Jagielski 
27*b1cdbd2cSJim Jagielski #include "svx/svdstr.hrc"
28*b1cdbd2cSJim Jagielski #include "svx/svdglob.hxx"
29*b1cdbd2cSJim Jagielski #include <svx/svdmodel.hxx>
30*b1cdbd2cSJim Jagielski #include <svx/svdpage.hxx>
31*b1cdbd2cSJim Jagielski #include "svx/globl3d.hxx"
32*b1cdbd2cSJim Jagielski #include <svx/sphere3d.hxx>
33*b1cdbd2cSJim Jagielski 
34*b1cdbd2cSJim Jagielski #include <svx/svxids.hrc>
35*b1cdbd2cSJim Jagielski #include <svx/svx3ditems.hxx>
36*b1cdbd2cSJim Jagielski #include <svx/sdr/properties/e3dsphereproperties.hxx>
37*b1cdbd2cSJim Jagielski #include <basegfx/vector/b3dvector.hxx>
38*b1cdbd2cSJim Jagielski #include <basegfx/point/b3dpoint.hxx>
39*b1cdbd2cSJim Jagielski #include <svx/sdr/contact/viewcontactofe3dsphere.hxx>
40*b1cdbd2cSJim Jagielski #include <basegfx/polygon/b3dpolygon.hxx>
41*b1cdbd2cSJim Jagielski 
42*b1cdbd2cSJim Jagielski //////////////////////////////////////////////////////////////////////////////
43*b1cdbd2cSJim Jagielski // #110094# DrawContact section
44*b1cdbd2cSJim Jagielski 
CreateObjectSpecificViewContact()45*b1cdbd2cSJim Jagielski sdr::contact::ViewContact* E3dSphereObj::CreateObjectSpecificViewContact()
46*b1cdbd2cSJim Jagielski {
47*b1cdbd2cSJim Jagielski 	return new sdr::contact::ViewContactOfE3dSphere(*this);
48*b1cdbd2cSJim Jagielski }
49*b1cdbd2cSJim Jagielski 
50*b1cdbd2cSJim Jagielski //////////////////////////////////////////////////////////////////////////////
51*b1cdbd2cSJim Jagielski 
CreateObjectSpecificProperties()52*b1cdbd2cSJim Jagielski sdr::properties::BaseProperties* E3dSphereObj::CreateObjectSpecificProperties()
53*b1cdbd2cSJim Jagielski {
54*b1cdbd2cSJim Jagielski 	return new sdr::properties::E3dSphereProperties(*this);
55*b1cdbd2cSJim Jagielski }
56*b1cdbd2cSJim Jagielski 
57*b1cdbd2cSJim Jagielski //////////////////////////////////////////////////////////////////////////////
58*b1cdbd2cSJim Jagielski 
59*b1cdbd2cSJim Jagielski TYPEINIT1(E3dSphereObj, E3dCompoundObject);
60*b1cdbd2cSJim Jagielski 
61*b1cdbd2cSJim Jagielski /*************************************************************************
62*b1cdbd2cSJim Jagielski |*
63*b1cdbd2cSJim Jagielski |* Kugel aus Polygonfacetten nach Laengen und Breitengrad aufbauen
64*b1cdbd2cSJim Jagielski |*
65*b1cdbd2cSJim Jagielski \************************************************************************/
66*b1cdbd2cSJim Jagielski 
E3dSphereObj(E3dDefaultAttributes & rDefault,const basegfx::B3DPoint & rCenter,const basegfx::B3DVector & r3DSize)67*b1cdbd2cSJim Jagielski E3dSphereObj::E3dSphereObj(E3dDefaultAttributes& rDefault, const basegfx::B3DPoint& rCenter, const basegfx::B3DVector& r3DSize)
68*b1cdbd2cSJim Jagielski :	E3dCompoundObject(rDefault)
69*b1cdbd2cSJim Jagielski {
70*b1cdbd2cSJim Jagielski 	// Defaults setzen
71*b1cdbd2cSJim Jagielski 	SetDefaultAttributes(rDefault);
72*b1cdbd2cSJim Jagielski 
73*b1cdbd2cSJim Jagielski 	// Uebergebene drueberbuegeln
74*b1cdbd2cSJim Jagielski 	aCenter = rCenter;
75*b1cdbd2cSJim Jagielski 	aSize = r3DSize;
76*b1cdbd2cSJim Jagielski }
77*b1cdbd2cSJim Jagielski 
E3dSphereObj()78*b1cdbd2cSJim Jagielski E3dSphereObj::E3dSphereObj()
79*b1cdbd2cSJim Jagielski :	E3dCompoundObject()
80*b1cdbd2cSJim Jagielski {
81*b1cdbd2cSJim Jagielski 	// Defaults setzen
82*b1cdbd2cSJim Jagielski 	E3dDefaultAttributes aDefault;
83*b1cdbd2cSJim Jagielski 	SetDefaultAttributes(aDefault);
84*b1cdbd2cSJim Jagielski }
85*b1cdbd2cSJim Jagielski 
86*b1cdbd2cSJim Jagielski /*************************************************************************
87*b1cdbd2cSJim Jagielski |*
88*b1cdbd2cSJim Jagielski |* Kugel erzeugen ohne die Polygone darin zu erzeugen
89*b1cdbd2cSJim Jagielski |*
90*b1cdbd2cSJim Jagielski \************************************************************************/
91*b1cdbd2cSJim Jagielski 
92*b1cdbd2cSJim Jagielski // FG: Dieser Aufruf erfolgt von der 3D-Object Factory (objfac3d.cxx) und zwar ausschliesslich beim
93*b1cdbd2cSJim Jagielski //     laden von Dokumenten. Hier braucht man keinen CreateSphere-Aufruf, denn die wirkliche
94*b1cdbd2cSJim Jagielski //     Anzahl Segmente ist ja noch nicht bekannt. Dies war bis zum 10.2.97 ein (kleines)
95*b1cdbd2cSJim Jagielski //     Speicherleck.
E3dSphereObj(int)96*b1cdbd2cSJim Jagielski E3dSphereObj::E3dSphereObj(int /*dummy*/) // den Parameter braucht es um unterscheiden zu koennen, welcher
97*b1cdbd2cSJim Jagielski {                                     // der beiden Konstruktoren gemeint ist. Der obige halt per Default
98*b1cdbd2cSJim Jagielski 	// Defaults setzen
99*b1cdbd2cSJim Jagielski 	E3dDefaultAttributes aDefault;
100*b1cdbd2cSJim Jagielski 	SetDefaultAttributes(aDefault);
101*b1cdbd2cSJim Jagielski }
102*b1cdbd2cSJim Jagielski 
SetDefaultAttributes(E3dDefaultAttributes & rDefault)103*b1cdbd2cSJim Jagielski void E3dSphereObj::SetDefaultAttributes(E3dDefaultAttributes& rDefault)
104*b1cdbd2cSJim Jagielski {
105*b1cdbd2cSJim Jagielski 	// Defaults setzen
106*b1cdbd2cSJim Jagielski 	aCenter = rDefault.GetDefaultSphereCenter();
107*b1cdbd2cSJim Jagielski 	aSize = rDefault.GetDefaultSphereSize();
108*b1cdbd2cSJim Jagielski }
109*b1cdbd2cSJim Jagielski 
110*b1cdbd2cSJim Jagielski /*************************************************************************
111*b1cdbd2cSJim Jagielski |*
112*b1cdbd2cSJim Jagielski |* Identifier zurueckgeben
113*b1cdbd2cSJim Jagielski |*
114*b1cdbd2cSJim Jagielski \************************************************************************/
115*b1cdbd2cSJim Jagielski 
GetObjIdentifier() const116*b1cdbd2cSJim Jagielski sal_uInt16 E3dSphereObj::GetObjIdentifier() const
117*b1cdbd2cSJim Jagielski {
118*b1cdbd2cSJim Jagielski 	return E3D_SPHEREOBJ_ID;
119*b1cdbd2cSJim Jagielski }
120*b1cdbd2cSJim Jagielski 
121*b1cdbd2cSJim Jagielski /*************************************************************************
122*b1cdbd2cSJim Jagielski |*
123*b1cdbd2cSJim Jagielski |* Wandle das Objekt in ein Gruppenobjekt bestehend aus n Polygonen
124*b1cdbd2cSJim Jagielski |*
125*b1cdbd2cSJim Jagielski \************************************************************************/
126*b1cdbd2cSJim Jagielski 
DoConvertToPolyObj(sal_Bool,bool) const127*b1cdbd2cSJim Jagielski SdrObject *E3dSphereObj::DoConvertToPolyObj(sal_Bool /*bBezier*/, bool /*bAddText*/) const
128*b1cdbd2cSJim Jagielski {
129*b1cdbd2cSJim Jagielski 	return NULL;
130*b1cdbd2cSJim Jagielski }
131*b1cdbd2cSJim Jagielski 
132*b1cdbd2cSJim Jagielski /*************************************************************************
133*b1cdbd2cSJim Jagielski |*
134*b1cdbd2cSJim Jagielski |* Leer-Konstruktor
135*b1cdbd2cSJim Jagielski |*
136*b1cdbd2cSJim Jagielski \************************************************************************/
137*b1cdbd2cSJim Jagielski 
ReSegment(sal_uInt32 nHSegs,sal_uInt32 nVSegs)138*b1cdbd2cSJim Jagielski void E3dSphereObj::ReSegment(sal_uInt32 nHSegs, sal_uInt32 nVSegs)
139*b1cdbd2cSJim Jagielski {
140*b1cdbd2cSJim Jagielski 	if((nHSegs != GetHorizontalSegments() || nVSegs != GetVerticalSegments()) && (nHSegs != 0 || nVSegs != 0))
141*b1cdbd2cSJim Jagielski 	{
142*b1cdbd2cSJim Jagielski 		GetProperties().SetObjectItemDirect(Svx3DHorizontalSegmentsItem(nHSegs));
143*b1cdbd2cSJim Jagielski 		GetProperties().SetObjectItemDirect(Svx3DVerticalSegmentsItem(nVSegs));
144*b1cdbd2cSJim Jagielski 
145*b1cdbd2cSJim Jagielski 		ActionChanged();
146*b1cdbd2cSJim Jagielski 	}
147*b1cdbd2cSJim Jagielski }
148*b1cdbd2cSJim Jagielski 
149*b1cdbd2cSJim Jagielski /*************************************************************************
150*b1cdbd2cSJim Jagielski |*
151*b1cdbd2cSJim Jagielski |* Zuweisungsoperator
152*b1cdbd2cSJim Jagielski |*
153*b1cdbd2cSJim Jagielski \************************************************************************/
154*b1cdbd2cSJim Jagielski 
operator =(const SdrObject & rObj)155*b1cdbd2cSJim Jagielski void E3dSphereObj::operator=(const SdrObject& rObj)
156*b1cdbd2cSJim Jagielski {
157*b1cdbd2cSJim Jagielski 	// erstmal alle Childs kopieren
158*b1cdbd2cSJim Jagielski 	E3dCompoundObject::operator=(rObj);
159*b1cdbd2cSJim Jagielski 
160*b1cdbd2cSJim Jagielski 	// weitere Parameter kopieren
161*b1cdbd2cSJim Jagielski 	const E3dSphereObj& r3DObj = (const E3dSphereObj&) rObj;
162*b1cdbd2cSJim Jagielski 
163*b1cdbd2cSJim Jagielski 	aCenter       = r3DObj.aCenter;
164*b1cdbd2cSJim Jagielski 	aSize         = r3DObj.aSize;
165*b1cdbd2cSJim Jagielski }
166*b1cdbd2cSJim Jagielski 
167*b1cdbd2cSJim Jagielski /*************************************************************************
168*b1cdbd2cSJim Jagielski |*
169*b1cdbd2cSJim Jagielski |* Lokale Parameter setzen mit Geometrieneuerzeugung
170*b1cdbd2cSJim Jagielski |*
171*b1cdbd2cSJim Jagielski \************************************************************************/
172*b1cdbd2cSJim Jagielski 
SetCenter(const basegfx::B3DPoint & rNew)173*b1cdbd2cSJim Jagielski void E3dSphereObj::SetCenter(const basegfx::B3DPoint& rNew)
174*b1cdbd2cSJim Jagielski {
175*b1cdbd2cSJim Jagielski 	if(aCenter != rNew)
176*b1cdbd2cSJim Jagielski 	{
177*b1cdbd2cSJim Jagielski 		aCenter = rNew;
178*b1cdbd2cSJim Jagielski 		ActionChanged();
179*b1cdbd2cSJim Jagielski 	}
180*b1cdbd2cSJim Jagielski }
181*b1cdbd2cSJim Jagielski 
SetSize(const basegfx::B3DVector & rNew)182*b1cdbd2cSJim Jagielski void E3dSphereObj::SetSize(const basegfx::B3DVector& rNew)
183*b1cdbd2cSJim Jagielski {
184*b1cdbd2cSJim Jagielski 	if(aSize != rNew)
185*b1cdbd2cSJim Jagielski 	{
186*b1cdbd2cSJim Jagielski 		aSize = rNew;
187*b1cdbd2cSJim Jagielski 		ActionChanged();
188*b1cdbd2cSJim Jagielski 	}
189*b1cdbd2cSJim Jagielski }
190*b1cdbd2cSJim Jagielski 
191*b1cdbd2cSJim Jagielski /*************************************************************************
192*b1cdbd2cSJim Jagielski |*
193*b1cdbd2cSJim Jagielski |* Get the name of the object (singular)
194*b1cdbd2cSJim Jagielski |*
195*b1cdbd2cSJim Jagielski \************************************************************************/
196*b1cdbd2cSJim Jagielski 
TakeObjNameSingul(XubString & rName) const197*b1cdbd2cSJim Jagielski void E3dSphereObj::TakeObjNameSingul(XubString& rName) const
198*b1cdbd2cSJim Jagielski {
199*b1cdbd2cSJim Jagielski 	rName=ImpGetResStr(STR_ObjNameSingulSphere3d);
200*b1cdbd2cSJim Jagielski 
201*b1cdbd2cSJim Jagielski 	String aName( GetName() );
202*b1cdbd2cSJim Jagielski 	if(aName.Len())
203*b1cdbd2cSJim Jagielski 	{
204*b1cdbd2cSJim Jagielski 		rName += sal_Unicode(' ');
205*b1cdbd2cSJim Jagielski 		rName += sal_Unicode('\'');
206*b1cdbd2cSJim Jagielski 		rName += aName;
207*b1cdbd2cSJim Jagielski 		rName += sal_Unicode('\'');
208*b1cdbd2cSJim Jagielski 	}
209*b1cdbd2cSJim Jagielski }
210*b1cdbd2cSJim Jagielski 
211*b1cdbd2cSJim Jagielski /*************************************************************************
212*b1cdbd2cSJim Jagielski |*
213*b1cdbd2cSJim Jagielski |* Get the name of the object (plural)
214*b1cdbd2cSJim Jagielski |*
215*b1cdbd2cSJim Jagielski \************************************************************************/
216*b1cdbd2cSJim Jagielski 
TakeObjNamePlural(XubString & rName) const217*b1cdbd2cSJim Jagielski void E3dSphereObj::TakeObjNamePlural(XubString& rName) const
218*b1cdbd2cSJim Jagielski {
219*b1cdbd2cSJim Jagielski 	rName=ImpGetResStr(STR_ObjNamePluralSphere3d);
220*b1cdbd2cSJim Jagielski }
221*b1cdbd2cSJim Jagielski 
222*b1cdbd2cSJim Jagielski // eof
223