forked from amazingfate/loongoffice
(cherry picked from commit f371f92c89d296207ef9a219518ba8caa481bcfe) Conflicts: drawinglayer/Library_drawinglayer.mk drawinglayer/Package_inc.mk drawinglayer/inc/drawinglayer/processor2d/vclmetafileprocessor2d.hxx drawinglayer/inc/drawinglayer/processor2d/vclpixelprocessor2d.hxx drawinglayer/inc/drawinglayer/processor2d/vclprocessor2d.hxx drawinglayer/inc/drawinglayer/processor3d/defaultprocessor3d.hxx drawinglayer/inc/drawinglayer/processor3d/zbufferprocessor3d.hxx drawinglayer/source/processor2d/processor2dtools.cxx svx/Package_inc.mk svx/source/sdr/contact/objectcontactofobjlistpainter.cxx svx/source/sdr/contact/objectcontactofpageview.cxx svx/source/sdr/overlay/overlaymanager.cxx svx/source/sdr/overlay/overlayprimitive2dsequenceobject.cxx svx/source/svdraw/svdedxv.cxx sw/source/core/doc/notxtfrm.cxx Change-Id: Iea4a79133f4375cb0625b187eeb3d727b50ff0fe Related: #i121532# missing defaultprocessor3d.hxx breaks build Revision 1440387 changed defaultprocessor3d.hxx to be no longer "delivered". It is needed in svx by being included indirectly via cutfindprocessor3d.hxx. Fixing the build breaker by "delivering" the missing header file again. (cherry picked from commit 3bd3ea81c8d54109950b435225c3aac011d56c3d) Conflicts: drawinglayer/Package_inc.mk Change-Id: If0dcea79cfff4cf20a1ca1af3d0a34f86eb2e24e Related: #i121532# removed include to no longer existing file (cherry picked from commit a4c602d9b5b17e220dbaa4dec2cef91d39945154) Conflicts: sw/source/core/doc/notxtfrm.cxx Change-Id: I7dc2f99684fa285225dfdcfc7add553695b8412e
114 lines
4.3 KiB
C++
114 lines
4.3 KiB
C++
/* -*- 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 .
|
|
*/
|
|
|
|
#ifndef INCLUDED_DRAWINGLAYER_PROCESSOR3D_ZBUFFERPROCESSOR3D_HXX
|
|
#define INCLUDED_DRAWINGLAYER_PROCESSOR3D_ZBUFFERPROCESSOR3D_HXX
|
|
|
|
#include <drawinglayer/drawinglayerdllapi.h>
|
|
|
|
#include <drawinglayer/processor3d/defaultprocessor3d.hxx>
|
|
#include <vcl/bitmapex.hxx>
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
// predefines
|
|
|
|
namespace basegfx {
|
|
class BZPixelRaster;
|
|
}
|
|
|
|
namespace drawinglayer {
|
|
namespace attribute {
|
|
class SdrSceneAttribute;
|
|
class SdrLightingAttribute;
|
|
class MaterialAttribute3D;
|
|
}
|
|
namespace geometry {
|
|
class ViewInformation2D;
|
|
}
|
|
}
|
|
|
|
class ZBufferRasterConverter3D;
|
|
class RasterPrimitive3D;
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
|
|
namespace drawinglayer
|
|
{
|
|
namespace processor3d
|
|
{
|
|
/** ZBufferProcessor3D class
|
|
|
|
This 3D renderer derived from DefaultProcessor3D renders all feeded primitives to a 2D
|
|
raster bitmap using a Z-Buffer based approach. It is able to supersample and to handle
|
|
transparent content.
|
|
*/
|
|
class ZBufferProcessor3D : public DefaultProcessor3D
|
|
{
|
|
private:
|
|
/// the raster target, a Z-Buffer
|
|
basegfx::BZPixelRaster* mpBZPixelRaster;
|
|
|
|
/// inverse of EyeToView for rasterconversion with evtl. Phong shading
|
|
basegfx::B3DHomMatrix maInvEyeToView;
|
|
|
|
/// The raster converter for Z-Buffer
|
|
ZBufferRasterConverter3D* mpZBufferRasterConverter3D;
|
|
|
|
/* AA value. Defines how many overs�mples will be used in X and Y. Values 0, 1
|
|
will switch it off while e.g. 2 will use 2x2 pixels for each pixel to create
|
|
*/
|
|
sal_uInt16 mnAntiAlialize;
|
|
|
|
/* remembered RasterPrimitive3D's which need to be painted back to front
|
|
for transparent 3D parts
|
|
*/
|
|
std::vector< RasterPrimitive3D >* mpRasterPrimitive3Ds;
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
// rasterconversions for filled and non-filled polygons
|
|
|
|
virtual void rasterconvertB3DPolygon(const attribute::MaterialAttribute3D& rMaterial, const basegfx::B3DPolygon& rHairline) const;
|
|
virtual void rasterconvertB3DPolyPolygon(const attribute::MaterialAttribute3D& rMaterial, const basegfx::B3DPolyPolygon& rFill) const;
|
|
|
|
public:
|
|
ZBufferProcessor3D(
|
|
const geometry::ViewInformation3D& rViewInformation3D,
|
|
const geometry::ViewInformation2D& rViewInformation2D,
|
|
const attribute::SdrSceneAttribute& rSdrSceneAttribute,
|
|
const attribute::SdrLightingAttribute& rSdrLightingAttribute,
|
|
double fSizeX,
|
|
double fSizeY,
|
|
const basegfx::B2DRange& rVisiblePart,
|
|
sal_uInt16 nAntiAlialize);
|
|
virtual ~ZBufferProcessor3D();
|
|
|
|
void finish();
|
|
|
|
/// get the result as bitmapEx
|
|
BitmapEx getBitmapEx() const;
|
|
};
|
|
} // end of namespace processor3d
|
|
} // end of namespace drawinglayer
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
|
|
#endif //INCLUDED_DRAWINGLAYER_PROCESSOR3D_ZBUFFERPROCESSOR3D_HXX
|
|
|
|
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|