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