63#include <com/sun/star/awt/XWindow2.hpp>
64#include <com/sun/star/awt/XControl.hpp>
77 , m_nOrigAntiAliasing(rOutDev.GetAntialiasing())
129 if (!rLocalPolygon.
count() || fTransparency < 0.0 || fTransparency >= 1.0)
151 if (!rLocalPolygon.
count() || fTransparency < 0.0 || fTransparency >= 1.0)
455 if (!rDiscreteViewPort.
isEmpty())
461 if (!aUnitRange.
overlaps(rDiscreteViewPort))
477 if (!aLocalPolyPolygon.
count())
499 if (aStartColor == aEndColor)
526 && (
mpOutputDevice->GetAntialiasing() & AntialiasingFlags::Enable)))
556 if (rContent.empty())
567 bool bDrawTransparentUsed(
false);
569 if (1 == rContent.size())
582 "OOps, PrimitiveID and PrimitiveType do not match (!)");
583 bDrawTransparentUsed =
true;
595 "OOps, PrimitiveID and PrimitiveType do not match (!)");
602 bDrawTransparentUsed =
false;
611 "OOps, PrimitiveID and PrimitiveType do not match (!)");
618 bDrawTransparentUsed =
false;
629 if (!bDrawTransparentUsed)
641 const uno::Reference<awt::XControl>& rXControl(rControlPrimitive.
getXControl());
646 uno::Reference<awt::XView> xControlView(rXControl, uno::UNO_QUERY_THROW);
647 const uno::Reference<awt::XGraphics> xOriginalGraphics(xControlView->getGraphics());
648 const uno::Reference<awt::XGraphics> xNewGraphics(
mpOutputDevice->CreateUnoGraphics());
650 if (xNewGraphics.is())
654 uno::Reference<awt::XWindow2> xControlWindow(rXControl, uno::UNO_QUERY_THROW);
655 bool bControlIsVisibleAsChildWindow(rXControl->getPeer().is()
656 && xControlWindow->isVisible());
674 bControlIsVisibleAsChildWindow =
false;
677 if (!bControlIsVisibleAsChildWindow)
680 xControlView->setGraphics(xNewGraphics);
694 xControlView->setGraphics(xOriginalGraphics);
698 catch (
const uno::Exception&)
780 switch (rFillHatchAttributes.
getStyle())
788 eHatchStyle = HatchStyle::Double;
793 eHatchStyle = HatchStyle::Triple;
802 const sal_uInt32 nAngle10(
824 Color aFillColor(aPolygonColor);
831 const ::tools::Rectangle aRectangle(
static_cast<sal_Int32
>(floor(aViewport.
getMinX())),
832 static_cast<sal_Int32
>(floor(aViewport.
getMinY())),
833 static_cast<sal_Int32
>(ceil(aViewport.
getMaxX())),
834 static_cast<sal_Int32
>(ceil(aViewport.
getMaxY())));
867 static const char* pSwitchOffAntiAliasingForHorVerBorderlines(
868 getenv(
"SAL_SWITCH_OFF_ANTIALIASING_FOR_HOR_VER_BORTDERLINES"));
869 static bool bSwitchOffAntiAliasingForHorVerBorderlines(
870 nullptr != pSwitchOffAntiAliasingForHorVerBorderlines);
872 if (bSwitchOffAntiAliasingForHorVerBorderlines
876 mpOutputDevice->SetAntialiasing(nAntiAliasing & ~AntialiasingFlags::Enable);
894 mpOutputDevice->SetAntialiasing(nAntiAliasing & ~AntialiasingFlags::Enable);
912 mpOutputDevice->SetAntialiasing(nOldAntiAliase | AntialiasingFlags::PixelSnapHairline);
927 bool useDecompose(
false);
959 double fRotate, fShearX;
965 || aScale.
getX() < 0.0 || aScale.
getY() < 0.0)
975 static bool bTryDirectRender(
true);
977 if (bTryDirectRender)
1046 std::floor(aOutputRange.
getMinX()), std::floor(aOutputRange.
getMinY()),
1047 std::ceil(aOutputRange.
getMaxX()), std::ceil(aOutputRange.
getMaxY()));
1049 std::floor(aFullRange.
getMinX()), std::floor(aFullRange.
getMinY()),
1050 std::ceil(aFullRange.
getMaxX()), std::ceil(aFullRange.
getMaxY()));
1073 sal_uInt32 nTileWidth, nTileHeight;
1075 if (nTileWidth == 0 || nTileHeight == 0)
1102 if (nTileWidth == 1 && nTileHeight == 1)
1126 aBufferDevice.
paint();
::Color GetPixelColor(sal_Int32 nX, sal_Int32 nY) const
void SetAlpha(sal_uInt8 nAlpha)
void SetOfsX(sal_uInt16 nOfsX)
void SetBorder(sal_uInt16 nBorder)
void SetSteps(sal_uInt16 nSteps)
void SetOfsY(sal_uInt16 nOfsY)
void SetAngle(Degree10 nAngle)
void DrawPolyPolygon(const tools::PolyPolygon &rPolyPoly)
constexpr tools::Long Y() const
constexpr tools::Long X() const
void SetColor(const Color &rColor)
bool decompose(B2DTuple &rScale, B2DTuple &rTranslate, double &rRotate, double &rShearX) const
B2DPolygon const & getB2DPolygon(sal_uInt32 nIndex) const
void transform(const basegfx::B2DHomMatrix &rMatrix)
B2DRange getB2DRange() const
void transform(const basegfx::B2DHomMatrix &rMatrix)
BASEGFX_DLLPUBLIC void transform(const B2DHomMatrix &rMatrix)
::basegfx::BColor getModifiedColor(const ::basegfx::BColor &rSource) const
bool isInside(const Tuple2D< TYPE > &rTuple) const
bool overlaps(const Range2D &rRange) const
sal_uInt16 getSteps() const
double getOffsetY() const
bool cannotBeHandledByVCL() const
css::awt::GradientStyle getStyle() const
const basegfx::BColorStops & getColorStops() const
double getOffsetX() const
double getDistance() const
bool isFillBackground() const
const basegfx::BColor & getColor() const
HatchStyle getStyle() const
double getMiterMinimumAngle() const
basegfx::B2DLineJoin getLineJoin() const
css::drawing::LineCap getLineCap() const
const basegfx::BColor & getColor() const
const ::std::vector< double > & getDotDashArray() const
double getFullDotDashLen() const
void paint(double fTrans=0.0)
VirtualDevice & getTransparence()
VirtualDevice & getContent()
BackgroundColorPrimitive2D class.
const basegfx::BColor & getBColor() const
data read access
double getTransparency() const
virtual sal_uInt32 getPrimitive2DID() const =0
provide unique ID for fast identifying of known primitive implementations in renderers.
const basegfx::B2DHomMatrix & getTransform() const
BorderLinePrimitive2D class.
bool isHorizontalOrVertical(const geometry::ViewInformation2D &rViewInformation) const
helper to decide if AntiAliasing should be used
ControlPrimitive2D class.
const css::uno::Reference< css::awt::XControl > & getXControl() const
mxControl access.
const basegfx::B2DHomMatrix & getTransform() const
data read access
FillGradientPrimitive2D class.
basegfx::B2DPolygon getUnitPolygon() const
helpers that support e.g. direct paint/geometry creation
const basegfx::B2DRange & getOutputRange() const
data read access
const attribute::FillGradientAttribute & getFillGradient() const
const basegfx::B2DRange & getDefinitionRange() const
basegfx::BColor getOuterColor() const
void generateMatricesAndColors(std::function< void(const basegfx::B2DHomMatrix &rMatrix, const basegfx::BColor &rColor)> aCallback) const
FillGraphicPrimitive2D class.
FillHatchPrimitive2D class.
const basegfx::B2DRange & getOutputRange() const
data read access
const basegfx::BColor & getBColor() const
const attribute::FillHatchAttribute & getFillHatch() const
const Primitive2DContainer & getChildren() const
data read access
MarkerArrayPrimitive2D class.
ModifiedColorPrimitive2D class.
PagePreviewPrimitive2D class.
PatternFillPrimitive2D class.
void getTileSize(sal_uInt32 &rWidth, sal_uInt32 &rHeight, const geometry::ViewInformation2D &rViewInformation) const
helper that is capable to calculate the needed discrete buffer size for eventually buffered content
const basegfx::B2DRange & getReferenceRange() const
const basegfx::B2DPolyPolygon & getMask() const
data read access
BitmapEx createTileImage(sal_uInt32 nWidth, sal_uInt32 nHeight) const
helper which creates the content - checks if clipping is needed and eventually creates buffered conte...
PointArrayPrimitive2D class.
PolyPolygonColorPrimitive2D class.
const basegfx::BColor & getBColor() const
const basegfx::B2DPolyPolygon & getB2DPolyPolygon() const
data read access
PolyPolygonColorPrimitive2D class.
const basegfx::B2DPolyPolygon & getB2DPolyPolygon() const
data read access
const attribute::FillGradientAttribute & getFillGradient() const
PolyPolygonGraphicPrimitive2D class.
PolygonHairlinePrimitive2D class.
const basegfx::BColor & getBColor() const
const basegfx::B2DPolygon & getB2DPolygon() const
data read access
PolygonStrokePrimitive2D class.
const attribute::StrokeAttribute & getStrokeAttribute() const
const basegfx::B2DPolygon & getB2DPolygon() const
data read access
const attribute::LineAttribute & getLineAttribute() const
TextSimplePortionPrimitive2D class.
TransparencePrimitive2D class.
UnifiedTransparencePrimitive2D class.
double getTransparence() const
data read access
virtual sal_uInt32 getPrimitive2DID() const override
provide unique ID
WrongSpellPrimitive2D class.
void process(const primitive2d::BasePrimitive2D &rCandidate)
const geometry::ViewInformation2D & getViewInformation2D() const
data read access
void processWrongSpellPrimitive2D(const primitive2d::WrongSpellPrimitive2D &rWrongSpellPrimitive)
void processBorderLinePrimitive2D(const drawinglayer::primitive2d::BorderLinePrimitive2D &rBorder)
virtual void processBasePrimitive2D(const primitive2d::BasePrimitive2D &rCandidate) override
void processFillGradientPrimitive2D(const primitive2d::FillGradientPrimitive2D &rPrimitive)
void processBitmapPrimitive2D(const primitive2d::BitmapPrimitive2D &rBitmapCandidate)
void processInvertPrimitive2D(const primitive2d::BasePrimitive2D &rCandidate)
void tryDrawPolyPolygonColorPrimitive2DDirect(const primitive2d::PolyPolygonColorPrimitive2D &rSource, double fTransparency)
void processPolyPolygonColorPrimitive2D(const primitive2d::PolyPolygonColorPrimitive2D &rPolyPolygonColorPrimitive2D)
void processFillHatchPrimitive2D(const primitive2d::FillHatchPrimitive2D &rFillHatchPrimitive)
bool tryDrawPolygonHairlinePrimitive2DDirect(const primitive2d::PolygonHairlinePrimitive2D &rSource, double fTransparency)
void processPatternFillPrimitive2D(const primitive2d::PatternFillPrimitive2D &rPrimitive)
void processTextDecoratedPortionPrimitive2D(const primitive2d::TextSimplePortionPrimitive2D &rCandidate)
void processTextSimplePortionPrimitive2D(const primitive2d::TextSimplePortionPrimitive2D &rCandidate)
AntialiasingFlags m_nOrigAntiAliasing
bool tryDrawPolygonStrokePrimitive2DDirect(const primitive2d::PolygonStrokePrimitive2D &rSource, double fTransparency)
void processUnifiedTransparencePrimitive2D(const primitive2d::UnifiedTransparencePrimitive2D &rUniTransparenceCandidate)
void processMetaFilePrimitive2D(const primitive2d::BasePrimitive2D &rCandidate)
void processPolyPolygonGradientPrimitive2D(const primitive2d::PolyPolygonGradientPrimitive2D &rPolygonCandidate)
void processPolygonStrokePrimitive2D(const primitive2d::PolygonStrokePrimitive2D &rPolygonStrokePrimitive2D)
virtual ~VclPixelProcessor2D() override
void processBackgroundColorPrimitive2D(const primitive2d::BackgroundColorPrimitive2D &rPrimitive)
void processControlPrimitive2D(const primitive2d::ControlPrimitive2D &rControlPrimitive)
VclPixelProcessor2D(const geometry::ViewInformation2D &rViewInformation, OutputDevice &rOutDev, const basegfx::BColorModifierStack &rInitStack=basegfx::BColorModifierStack())
constructor/destructor
void processPolygonHairlinePrimitive2D(const primitive2d::PolygonHairlinePrimitive2D &rPolygonHairlinePrimitive2D)
void RenderPointArrayPrimitive2D(const primitive2d::PointArrayPrimitive2D &rPointArrayCandidate)
void RenderPolygonStrokePrimitive2D(const primitive2d::PolygonStrokePrimitive2D &rPolygonStrokeCandidate)
sal_uInt32 mnPolygonStrokePrimitive2D
void RenderEpsPrimitive2D(const primitive2d::EpsPrimitive2D &rEpsPrimitive2D)
void RenderPolyPolygonGraphicPrimitive2D(const primitive2d::PolyPolygonGraphicPrimitive2D &rPolygonCandidate)
basegfx::BColorModifierStack maBColorModifierStack
void RenderPolygonHairlinePrimitive2D(const primitive2d::PolygonHairlinePrimitive2D &rPolygonCandidate, bool bPixelBased)
void RenderSvgLinearAtomPrimitive2D(const primitive2d::SvgLinearAtomPrimitive2D &rCandidate)
void adaptTextToFillDrawMode() const
void RenderFillGraphicPrimitive2D(const primitive2d::FillGraphicPrimitive2D &rFillBitmapCandidate)
void RenderUnifiedTransparencePrimitive2D(const primitive2d::UnifiedTransparencePrimitive2D &rTransCandidate)
VclPtr< OutputDevice > mpOutputDevice
void RenderTransformPrimitive2D(const primitive2d::TransformPrimitive2D &rTransformCandidate)
void RenderPagePreviewPrimitive2D(const primitive2d::PagePreviewPrimitive2D &rPagePreviewCandidate)
void RenderMaskPrimitive2DPixel(const primitive2d::MaskPrimitive2D &rMaskCandidate)
basegfx::B2DHomMatrix maCurrentTransformation
void RenderModifiedColorPrimitive2D(const primitive2d::ModifiedColorPrimitive2D &rModifiedCandidate)
void RenderMarkerArrayPrimitive2D(const primitive2d::MarkerArrayPrimitive2D &rMarkerArrayCandidate)
void RenderSvgRadialAtomPrimitive2D(const primitive2d::SvgRadialAtomPrimitive2D &rCandidate)
void RenderTransparencePrimitive2D(const primitive2d::TransparencePrimitive2D &rTransCandidate)
void RenderTextSimpleOrDecoratedPortionPrimitive2D(const primitive2d::TextSimplePortionPrimitive2D &rTextCandidate)
void RenderBitmapPrimitive2D(const primitive2d::BitmapPrimitive2D &rBitmapCandidate)
void adaptLineToFillDrawMode() const
constexpr ::Color COL_BLACK(0x00, 0x00, 0x00)
constexpr ::Color COL_TRANSPARENT(ColorTransparency, 0xFF, 0xFF, 0xFF, 0xFF)
#define PRIMITIVE2D_ID_TEXTDECORATEDPORTIONPRIMITIVE2D
#define PRIMITIVE2D_ID_FILLGRADIENTPRIMITIVE2D
#define PRIMITIVE2D_ID_FILLGRAPHICPRIMITIVE2D
#define PRIMITIVE2D_ID_SVGLINEARATOMPRIMITIVE2D
#define PRIMITIVE2D_ID_CONTROLPRIMITIVE2D
#define PRIMITIVE2D_ID_BORDERLINEPRIMITIVE2D
#define PRIMITIVE2D_ID_UNIFIEDTRANSPARENCEPRIMITIVE2D
#define PRIMITIVE2D_ID_TRANSFORMPRIMITIVE2D
#define PRIMITIVE2D_ID_POLYPOLYGONGRADIENTPRIMITIVE2D
#define PRIMITIVE2D_ID_POLYPOLYGONCOLORPRIMITIVE2D
#define PRIMITIVE2D_ID_INVERTPRIMITIVE2D
#define PRIMITIVE2D_ID_POLYGONHAIRLINEPRIMITIVE2D
#define PRIMITIVE2D_ID_TRANSPARENCEPRIMITIVE2D
#define PRIMITIVE2D_ID_MODIFIEDCOLORPRIMITIVE2D
#define PRIMITIVE2D_ID_FILLHATCHPRIMITIVE2D
#define PRIMITIVE2D_ID_POINTARRAYPRIMITIVE2D
#define PRIMITIVE2D_ID_POLYPOLYGONGRAPHICPRIMITIVE2D
#define PRIMITIVE2D_ID_EPSPRIMITIVE2D
#define PRIMITIVE2D_ID_PAGEPREVIEWPRIMITIVE2D
#define PRIMITIVE2D_ID_WRONGSPELLPRIMITIVE2D
#define PRIMITIVE2D_ID_MASKPRIMITIVE2D
#define PRIMITIVE2D_ID_POLYGONSTROKEPRIMITIVE2D
#define PRIMITIVE2D_ID_METAFILEPRIMITIVE2D
#define PRIMITIVE2D_ID_PATTERNFILLPRIMITIVE2D
#define PRIMITIVE2D_ID_BITMAPPRIMITIVE2D
#define PRIMITIVE2D_ID_SVGRADIALATOMPRIMITIVE2D
#define PRIMITIVE2D_ID_BACKGROUNDCOLORPRIMITIVE2D
#define PRIMITIVE2D_ID_MARKERARRAYPRIMITIVE2D
#define PRIMITIVE2D_ID_TEXTSIMPLEPORTIONPRIMITIVE2D
#define SAL_WARN_IF(condition, area, stream)
#define SAL_INFO(area, stream)
RttiCompleteObjectLocator col
bool IsRenderDecoratedTextDirect()
bool IsRenderSimpleTextDirect()
B2DPolygon createPolygonFromRect(const B2DRectangle &rRect, double fRadiusX, double fRadiusY)
bool isRectangle(const B2DPolygon &rPoly)
B2IRange fround(const B2DRange &rRange)
OUString idToString(sal_uInt32 nId)
bool renderWrongSpellPrimitive2D(const primitive2d::WrongSpellPrimitive2D &rWrongSpellCandidate, OutputDevice &rOutputDevice, const basegfx::B2DHomMatrix &rObjectToViewTransformation, const basegfx::BColorModifierStack &rBColorModifierStack)