/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This file is part of the LibreOffice project. * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * * This file incorporates work covered by the following license notice: * * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed * with this work for additional information regarding copyright * ownership. The ASF licenses this file to you under the Apache * License, Version 2.0 (the "License"); you may not use this file * except in compliance with the License. You may obtain a copy of * the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
namespace sdr::properties { class E3dCompoundProperties; class E3dExtrudeProperties; class E3dLatheProperties; class E3dSphereProperties;
}
/************************************************************************* |* |* GeoData relevant for undo actions |*
\************************************************************************/
class E3DObjGeoData : public SdrObjGeoData
{ public:
basegfx::B3DRange maLocalBoundVol; // surrounding volume of the object
basegfx::B3DHomMatrix maTransformation; // local transformations
E3DObjGeoData() {}
};
/************************************************************************* |* |* Base class for 3D objects |*
\************************************************************************/
class SVXCORE_DLLPUBLIC E3dObject : public SdrAttrObj
{ private: // Allow everything for E3dObjList and E3dDragMethod friendclass E3dDragMethod;
basegfx::B3DRange maLocalBoundVol; // surrounding volume of the object (from the geometry generation)
basegfx::B3DHomMatrix maTransformation; // local transformation
basegfx::B3DHomMatrix maFullTransform; // global transformation (including. parents)
// E3dObject is only a helper class (for E3DScene and E3DCompoundObject) // and no instances should be created from anyone, so i move the constructors // to protected area
E3dObject(SdrModel& rSdrModel);
E3dObject(SdrModel& rSdrModel, E3dObject const & rSource);
// 2D rotations, are implemented as a rotation around the Z axis // which is vertical to the screen, plus a shift of the scene. // This means that also the scene (E3dScene) must define this // routine as virtual in its class. virtualvoid NbcRotate(const Point& rRef, Degree100 nAngle, double sn, double cs) override;
// get wireframe polygon for local object. No transform is applied.
basegfx::B3DPolyPolygon CreateWireframe() const;
// TakeObjName...() is for the display in the UI, for example "3 frames selected". virtual OUString TakeObjNameSingul() const override; virtual OUString TakeObjNamePlural() const override; virtual rtl::Reference<SdrObject> CloneSdrObject(SdrModel& rTargetModel) const override;
// break up virtualbool IsBreakObjPossible(); virtual rtl::Reference<SdrAttrObj> GetBreakObj();
};
/************************************************************************* |* |* Class for all compound objects (Cube, Lathe, Scene, Extrude) |* This class saves some ISA queries and accelerates the behaviour |* significantly, because all the attributes etc. are kept through this. |* The polygons may only keep attributes if they are directly |* subordinated to the scene. |*
\************************************************************************/
class SVXCORE_DLLPUBLIC E3dCompoundObject : public E3dObject
{ private: // to allow sdr::properties::E3dCompoundProperties access to SetGeometryValid() friendclass sdr::properties::E3dCompoundProperties; friendclass sdr::properties::E3dExtrudeProperties; friendclass sdr::properties::E3dLatheProperties; friendclass sdr::properties::E3dSphereProperties;
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.