1 /************************************************************************* 2 * 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * Copyright 2000, 2010 Oracle and/or its affiliates. 6 * 7 * OpenOffice.org - a multi-platform office productivity suite 8 * 9 * This file is part of OpenOffice.org. 10 * 11 * OpenOffice.org is free software: you can redistribute it and/or modify 12 * it under the terms of the GNU Lesser General Public License version 3 13 * only, as published by the Free Software Foundation. 14 * 15 * OpenOffice.org is distributed in the hope that it will be useful, 16 * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 * GNU Lesser General Public License version 3 for more details 19 * (a copy is included in the LICENSE file that accompanied this code). 20 * 21 * You should have received a copy of the GNU Lesser General Public License 22 * version 3 along with OpenOffice.org. If not, see 23 * <http://www.openoffice.org/license.html> 24 * for a copy of the LGPLv3 License. 25 * 26 ************************************************************************/ 27 28 // MARKER(update_precomp.py): autogen include statement, do not remove 29 #include "precompiled_svx.hxx" 30 31 #include <svx/sdr/contact/viewobjectcontactofe3d.hxx> 32 #include <svx/sdr/contact/viewcontactofe3d.hxx> 33 #include <basegfx/color/bcolor.hxx> 34 #include <drawinglayer/primitive3d/modifiedcolorprimitive3d.hxx> 35 #include <svx/sdr/contact/viewobjectcontactofe3dscene.hxx> 36 #include <drawinglayer/primitive2d/embedded3dprimitive2d.hxx> 37 #include <svx/sdr/contact/viewcontactofe3dscene.hxx> 38 39 ////////////////////////////////////////////////////////////////////////////// 40 // predeclarations 41 42 ////////////////////////////////////////////////////////////////////////////// 43 44 namespace sdr 45 { 46 namespace contact 47 { 48 ViewObjectContactOfE3d::ViewObjectContactOfE3d(ObjectContact& rObjectContact, ViewContact& rViewContact) 49 : ViewObjectContactOfSdrObj(rObjectContact, rViewContact) 50 { 51 } 52 53 ViewObjectContactOfE3d::~ViewObjectContactOfE3d() 54 { 55 } 56 57 drawinglayer::primitive3d::Primitive3DSequence ViewObjectContactOfE3d::createPrimitive3DSequence(const DisplayInfo& rDisplayInfo) const 58 { 59 // get the view-independent Primitive from the viewContact 60 const ViewContactOfE3d& rViewContactOfE3d(dynamic_cast< const ViewContactOfE3d& >(GetViewContact())); 61 drawinglayer::primitive3d::Primitive3DSequence xRetval(rViewContactOfE3d.getViewIndependentPrimitive3DSequence()); 62 63 // handle ghosted 64 if(isPrimitiveGhosted(rDisplayInfo)) 65 { 66 const ::basegfx::BColor aRGBWhite(1.0, 1.0, 1.0); 67 const ::basegfx::BColorModifier aBColorModifier(aRGBWhite, 0.5, ::basegfx::BCOLORMODIFYMODE_INTERPOLATE); 68 const drawinglayer::primitive3d::Primitive3DReference xReference(new drawinglayer::primitive3d::ModifiedColorPrimitive3D(xRetval, aBColorModifier)); 69 xRetval = drawinglayer::primitive3d::Primitive3DSequence(&xReference, 1); 70 } 71 72 return xRetval; 73 } 74 75 drawinglayer::primitive2d::Primitive2DSequence ViewObjectContactOfE3d::createPrimitive2DSequence(const DisplayInfo& rDisplayInfo) const 76 { 77 const ViewContactOfE3d& rViewContact = static_cast< const ViewContactOfE3d& >(GetViewContact()); 78 79 // get 3d primitive vector, isPrimitiveVisible() is done in 3d creator 80 return rViewContact.impCreateWithGivenPrimitive3DSequence(getPrimitive3DSequence(rDisplayInfo)); 81 } 82 83 drawinglayer::primitive3d::Primitive3DSequence ViewObjectContactOfE3d::getPrimitive3DSequence(const DisplayInfo& rDisplayInfo) const 84 { 85 drawinglayer::primitive3d::Primitive3DSequence xNewPrimitive3DSeq(createPrimitive3DSequence(rDisplayInfo)); 86 87 // local up-to-date checks. New list different from local one? 88 if(!drawinglayer::primitive3d::arePrimitive3DSequencesEqual(mxPrimitive3DSequence, xNewPrimitive3DSeq)) 89 { 90 // has changed, copy content 91 const_cast< ViewObjectContactOfE3d* >(this)->mxPrimitive3DSequence = xNewPrimitive3DSeq; 92 } 93 94 // return current Primitive2DSequence 95 return mxPrimitive3DSequence; 96 } 97 } // end of namespace contact 98 } // end of namespace sdr 99 100 ////////////////////////////////////////////////////////////////////////////// 101 // eof 102