1*cdf0e10cSrcweir /************************************************************************* 2*cdf0e10cSrcweir * 3*cdf0e10cSrcweir * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4*cdf0e10cSrcweir * 5*cdf0e10cSrcweir * Copyright 2000, 2010 Oracle and/or its affiliates. 6*cdf0e10cSrcweir * 7*cdf0e10cSrcweir * OpenOffice.org - a multi-platform office productivity suite 8*cdf0e10cSrcweir * 9*cdf0e10cSrcweir * This file is part of OpenOffice.org. 10*cdf0e10cSrcweir * 11*cdf0e10cSrcweir * OpenOffice.org is free software: you can redistribute it and/or modify 12*cdf0e10cSrcweir * it under the terms of the GNU Lesser General Public License version 3 13*cdf0e10cSrcweir * only, as published by the Free Software Foundation. 14*cdf0e10cSrcweir * 15*cdf0e10cSrcweir * OpenOffice.org is distributed in the hope that it will be useful, 16*cdf0e10cSrcweir * but WITHOUT ANY WARRANTY; without even the implied warranty of 17*cdf0e10cSrcweir * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18*cdf0e10cSrcweir * GNU Lesser General Public License version 3 for more details 19*cdf0e10cSrcweir * (a copy is included in the LICENSE file that accompanied this code). 20*cdf0e10cSrcweir * 21*cdf0e10cSrcweir * You should have received a copy of the GNU Lesser General Public License 22*cdf0e10cSrcweir * version 3 along with OpenOffice.org. If not, see 23*cdf0e10cSrcweir * <http://www.openoffice.org/license.html> 24*cdf0e10cSrcweir * for a copy of the LGPLv3 License. 25*cdf0e10cSrcweir * 26*cdf0e10cSrcweir ************************************************************************/ 27*cdf0e10cSrcweir 28*cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove 29*cdf0e10cSrcweir #include "precompiled_svx.hxx" 30*cdf0e10cSrcweir 31*cdf0e10cSrcweir #include "svx/svdstr.hrc" 32*cdf0e10cSrcweir #include "svx/svdglob.hxx" 33*cdf0e10cSrcweir #include <svx/svdmodel.hxx> 34*cdf0e10cSrcweir #include <svx/svdpage.hxx> 35*cdf0e10cSrcweir #include "svx/globl3d.hxx" 36*cdf0e10cSrcweir #include <svx/sphere3d.hxx> 37*cdf0e10cSrcweir 38*cdf0e10cSrcweir #include <svx/svxids.hrc> 39*cdf0e10cSrcweir #include <svx/svx3ditems.hxx> 40*cdf0e10cSrcweir #include <svx/sdr/properties/e3dsphereproperties.hxx> 41*cdf0e10cSrcweir #include <basegfx/vector/b3dvector.hxx> 42*cdf0e10cSrcweir #include <basegfx/point/b3dpoint.hxx> 43*cdf0e10cSrcweir #include <svx/sdr/contact/viewcontactofe3dsphere.hxx> 44*cdf0e10cSrcweir #include <basegfx/polygon/b3dpolygon.hxx> 45*cdf0e10cSrcweir 46*cdf0e10cSrcweir ////////////////////////////////////////////////////////////////////////////// 47*cdf0e10cSrcweir // #110094# DrawContact section 48*cdf0e10cSrcweir 49*cdf0e10cSrcweir sdr::contact::ViewContact* E3dSphereObj::CreateObjectSpecificViewContact() 50*cdf0e10cSrcweir { 51*cdf0e10cSrcweir return new sdr::contact::ViewContactOfE3dSphere(*this); 52*cdf0e10cSrcweir } 53*cdf0e10cSrcweir 54*cdf0e10cSrcweir ////////////////////////////////////////////////////////////////////////////// 55*cdf0e10cSrcweir 56*cdf0e10cSrcweir sdr::properties::BaseProperties* E3dSphereObj::CreateObjectSpecificProperties() 57*cdf0e10cSrcweir { 58*cdf0e10cSrcweir return new sdr::properties::E3dSphereProperties(*this); 59*cdf0e10cSrcweir } 60*cdf0e10cSrcweir 61*cdf0e10cSrcweir ////////////////////////////////////////////////////////////////////////////// 62*cdf0e10cSrcweir 63*cdf0e10cSrcweir TYPEINIT1(E3dSphereObj, E3dCompoundObject); 64*cdf0e10cSrcweir 65*cdf0e10cSrcweir /************************************************************************* 66*cdf0e10cSrcweir |* 67*cdf0e10cSrcweir |* Kugel aus Polygonfacetten nach Laengen und Breitengrad aufbauen 68*cdf0e10cSrcweir |* 69*cdf0e10cSrcweir \************************************************************************/ 70*cdf0e10cSrcweir 71*cdf0e10cSrcweir E3dSphereObj::E3dSphereObj(E3dDefaultAttributes& rDefault, const basegfx::B3DPoint& rCenter, const basegfx::B3DVector& r3DSize) 72*cdf0e10cSrcweir : E3dCompoundObject(rDefault) 73*cdf0e10cSrcweir { 74*cdf0e10cSrcweir // Defaults setzen 75*cdf0e10cSrcweir SetDefaultAttributes(rDefault); 76*cdf0e10cSrcweir 77*cdf0e10cSrcweir // Uebergebene drueberbuegeln 78*cdf0e10cSrcweir aCenter = rCenter; 79*cdf0e10cSrcweir aSize = r3DSize; 80*cdf0e10cSrcweir } 81*cdf0e10cSrcweir 82*cdf0e10cSrcweir E3dSphereObj::E3dSphereObj() 83*cdf0e10cSrcweir : E3dCompoundObject() 84*cdf0e10cSrcweir { 85*cdf0e10cSrcweir // Defaults setzen 86*cdf0e10cSrcweir E3dDefaultAttributes aDefault; 87*cdf0e10cSrcweir SetDefaultAttributes(aDefault); 88*cdf0e10cSrcweir } 89*cdf0e10cSrcweir 90*cdf0e10cSrcweir /************************************************************************* 91*cdf0e10cSrcweir |* 92*cdf0e10cSrcweir |* Kugel erzeugen ohne die Polygone darin zu erzeugen 93*cdf0e10cSrcweir |* 94*cdf0e10cSrcweir \************************************************************************/ 95*cdf0e10cSrcweir 96*cdf0e10cSrcweir // FG: Dieser Aufruf erfolgt von der 3D-Object Factory (objfac3d.cxx) und zwar ausschliesslich beim 97*cdf0e10cSrcweir // laden von Dokumenten. Hier braucht man keinen CreateSphere-Aufruf, denn die wirkliche 98*cdf0e10cSrcweir // Anzahl Segmente ist ja noch nicht bekannt. Dies war bis zum 10.2.97 ein (kleines) 99*cdf0e10cSrcweir // Speicherleck. 100*cdf0e10cSrcweir E3dSphereObj::E3dSphereObj(int /*dummy*/) // den Parameter braucht es um unterscheiden zu koennen, welcher 101*cdf0e10cSrcweir { // der beiden Konstruktoren gemeint ist. Der obige halt per Default 102*cdf0e10cSrcweir // Defaults setzen 103*cdf0e10cSrcweir E3dDefaultAttributes aDefault; 104*cdf0e10cSrcweir SetDefaultAttributes(aDefault); 105*cdf0e10cSrcweir } 106*cdf0e10cSrcweir 107*cdf0e10cSrcweir void E3dSphereObj::SetDefaultAttributes(E3dDefaultAttributes& rDefault) 108*cdf0e10cSrcweir { 109*cdf0e10cSrcweir // Defaults setzen 110*cdf0e10cSrcweir aCenter = rDefault.GetDefaultSphereCenter(); 111*cdf0e10cSrcweir aSize = rDefault.GetDefaultSphereSize(); 112*cdf0e10cSrcweir } 113*cdf0e10cSrcweir 114*cdf0e10cSrcweir /************************************************************************* 115*cdf0e10cSrcweir |* 116*cdf0e10cSrcweir |* Identifier zurueckgeben 117*cdf0e10cSrcweir |* 118*cdf0e10cSrcweir \************************************************************************/ 119*cdf0e10cSrcweir 120*cdf0e10cSrcweir sal_uInt16 E3dSphereObj::GetObjIdentifier() const 121*cdf0e10cSrcweir { 122*cdf0e10cSrcweir return E3D_SPHEREOBJ_ID; 123*cdf0e10cSrcweir } 124*cdf0e10cSrcweir 125*cdf0e10cSrcweir /************************************************************************* 126*cdf0e10cSrcweir |* 127*cdf0e10cSrcweir |* Wandle das Objekt in ein Gruppenobjekt bestehend aus n Polygonen 128*cdf0e10cSrcweir |* 129*cdf0e10cSrcweir \************************************************************************/ 130*cdf0e10cSrcweir 131*cdf0e10cSrcweir SdrObject *E3dSphereObj::DoConvertToPolyObj(sal_Bool /*bBezier*/) const 132*cdf0e10cSrcweir { 133*cdf0e10cSrcweir return NULL; 134*cdf0e10cSrcweir } 135*cdf0e10cSrcweir 136*cdf0e10cSrcweir /************************************************************************* 137*cdf0e10cSrcweir |* 138*cdf0e10cSrcweir |* Leer-Konstruktor 139*cdf0e10cSrcweir |* 140*cdf0e10cSrcweir \************************************************************************/ 141*cdf0e10cSrcweir 142*cdf0e10cSrcweir void E3dSphereObj::ReSegment(sal_uInt32 nHSegs, sal_uInt32 nVSegs) 143*cdf0e10cSrcweir { 144*cdf0e10cSrcweir if((nHSegs != GetHorizontalSegments() || nVSegs != GetVerticalSegments()) && (nHSegs != 0 || nVSegs != 0)) 145*cdf0e10cSrcweir { 146*cdf0e10cSrcweir GetProperties().SetObjectItemDirect(Svx3DHorizontalSegmentsItem(nHSegs)); 147*cdf0e10cSrcweir GetProperties().SetObjectItemDirect(Svx3DVerticalSegmentsItem(nVSegs)); 148*cdf0e10cSrcweir 149*cdf0e10cSrcweir ActionChanged(); 150*cdf0e10cSrcweir } 151*cdf0e10cSrcweir } 152*cdf0e10cSrcweir 153*cdf0e10cSrcweir /************************************************************************* 154*cdf0e10cSrcweir |* 155*cdf0e10cSrcweir |* Zuweisungsoperator 156*cdf0e10cSrcweir |* 157*cdf0e10cSrcweir \************************************************************************/ 158*cdf0e10cSrcweir 159*cdf0e10cSrcweir void E3dSphereObj::operator=(const SdrObject& rObj) 160*cdf0e10cSrcweir { 161*cdf0e10cSrcweir // erstmal alle Childs kopieren 162*cdf0e10cSrcweir E3dCompoundObject::operator=(rObj); 163*cdf0e10cSrcweir 164*cdf0e10cSrcweir // weitere Parameter kopieren 165*cdf0e10cSrcweir const E3dSphereObj& r3DObj = (const E3dSphereObj&) rObj; 166*cdf0e10cSrcweir 167*cdf0e10cSrcweir aCenter = r3DObj.aCenter; 168*cdf0e10cSrcweir aSize = r3DObj.aSize; 169*cdf0e10cSrcweir } 170*cdf0e10cSrcweir 171*cdf0e10cSrcweir /************************************************************************* 172*cdf0e10cSrcweir |* 173*cdf0e10cSrcweir |* Lokale Parameter setzen mit Geometrieneuerzeugung 174*cdf0e10cSrcweir |* 175*cdf0e10cSrcweir \************************************************************************/ 176*cdf0e10cSrcweir 177*cdf0e10cSrcweir void E3dSphereObj::SetCenter(const basegfx::B3DPoint& rNew) 178*cdf0e10cSrcweir { 179*cdf0e10cSrcweir if(aCenter != rNew) 180*cdf0e10cSrcweir { 181*cdf0e10cSrcweir aCenter = rNew; 182*cdf0e10cSrcweir ActionChanged(); 183*cdf0e10cSrcweir } 184*cdf0e10cSrcweir } 185*cdf0e10cSrcweir 186*cdf0e10cSrcweir void E3dSphereObj::SetSize(const basegfx::B3DVector& rNew) 187*cdf0e10cSrcweir { 188*cdf0e10cSrcweir if(aSize != rNew) 189*cdf0e10cSrcweir { 190*cdf0e10cSrcweir aSize = rNew; 191*cdf0e10cSrcweir ActionChanged(); 192*cdf0e10cSrcweir } 193*cdf0e10cSrcweir } 194*cdf0e10cSrcweir 195*cdf0e10cSrcweir /************************************************************************* 196*cdf0e10cSrcweir |* 197*cdf0e10cSrcweir |* Get the name of the object (singular) 198*cdf0e10cSrcweir |* 199*cdf0e10cSrcweir \************************************************************************/ 200*cdf0e10cSrcweir 201*cdf0e10cSrcweir void E3dSphereObj::TakeObjNameSingul(XubString& rName) const 202*cdf0e10cSrcweir { 203*cdf0e10cSrcweir rName=ImpGetResStr(STR_ObjNameSingulSphere3d); 204*cdf0e10cSrcweir 205*cdf0e10cSrcweir String aName( GetName() ); 206*cdf0e10cSrcweir if(aName.Len()) 207*cdf0e10cSrcweir { 208*cdf0e10cSrcweir rName += sal_Unicode(' '); 209*cdf0e10cSrcweir rName += sal_Unicode('\''); 210*cdf0e10cSrcweir rName += aName; 211*cdf0e10cSrcweir rName += sal_Unicode('\''); 212*cdf0e10cSrcweir } 213*cdf0e10cSrcweir } 214*cdf0e10cSrcweir 215*cdf0e10cSrcweir /************************************************************************* 216*cdf0e10cSrcweir |* 217*cdf0e10cSrcweir |* Get the name of the object (plural) 218*cdf0e10cSrcweir |* 219*cdf0e10cSrcweir \************************************************************************/ 220*cdf0e10cSrcweir 221*cdf0e10cSrcweir void E3dSphereObj::TakeObjNamePlural(XubString& rName) const 222*cdf0e10cSrcweir { 223*cdf0e10cSrcweir rName=ImpGetResStr(STR_ObjNamePluralSphere3d); 224*cdf0e10cSrcweir } 225*cdf0e10cSrcweir 226*cdf0e10cSrcweir // eof 227