mirror of
https://github.com/LibreOffice/core.git
synced 2025-07-26 15:45:26 +00:00

In OverlayManager rendering AA state is set at the target OutputDevice, this obviously only works if the target renderer *is* an OutputDevice, thus not with e.g. CairoSDPR. Thus I added changing ViewInformation2D in BaseProcessor2D directly. This simplifies if changes to a primitive renderer have to be made while it's lifetime. All other aspects of ViewInformation2D can of course also be changed. There were occasions in the past where working around this was needed, this is then obsolete. Since e.g. setting AA at the target renderer which may not always be an OutputDevice makes this also target device independent - the primitive renderer is the instance that knows how to apply this correctly. Change-Id: I1836d08d0844dfed81bb84e8fccbe3fabe2831c3 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/188220 Tested-by: Jenkins Reviewed-by: Armin Le Grand <Armin.Le.Grand@me.com>
79 lines
2.8 KiB
C++
79 lines
2.8 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 .
|
|
*/
|
|
|
|
#include <drawinglayer/primitive2d/Primitive2DContainer.hxx>
|
|
#include <drawinglayer/processor2d/baseprocessor2d.hxx>
|
|
#include <utility>
|
|
|
|
|
|
namespace drawinglayer::processor2d
|
|
{
|
|
void BaseProcessor2D::processBasePrimitive2D(const primitive2d::BasePrimitive2D& /*rCandidate*/)
|
|
{
|
|
}
|
|
|
|
BaseProcessor2D::BaseProcessor2D(geometry::ViewInformation2D aViewInformation)
|
|
: maViewInformation2D(std::move(aViewInformation))
|
|
{
|
|
}
|
|
|
|
BaseProcessor2D::~BaseProcessor2D()
|
|
{
|
|
}
|
|
|
|
void BaseProcessor2D::process(const primitive2d::BasePrimitive2D& rCandidate)
|
|
{
|
|
// use the visitor API to avoid the cost of constructing Primitive2DContainers
|
|
rCandidate.get2DDecomposition(*this, getViewInformation2D());
|
|
}
|
|
|
|
// Primitive2DDecompositionVisitor
|
|
void BaseProcessor2D::visit(const primitive2d::Primitive2DReference& rCandidate)
|
|
{
|
|
if (rCandidate)
|
|
processBasePrimitive2D(*rCandidate);
|
|
}
|
|
void BaseProcessor2D::visit(const primitive2d::Primitive2DContainer& rContainer)
|
|
{
|
|
process(rContainer);
|
|
}
|
|
void BaseProcessor2D::visit(primitive2d::Primitive2DContainer&& rCandidate)
|
|
{
|
|
process(rCandidate);
|
|
}
|
|
|
|
void BaseProcessor2D::process(const primitive2d::Primitive2DContainer& rSource)
|
|
{
|
|
for (const primitive2d::Primitive2DReference& rCandidate : rSource)
|
|
{
|
|
// Skip, if not visible
|
|
if (rCandidate && rCandidate->getVisible())
|
|
processBasePrimitive2D(*rCandidate);
|
|
}
|
|
}
|
|
|
|
void BaseProcessor2D::setViewInformation2D(const geometry::ViewInformation2D& rNew)
|
|
{
|
|
if (rNew != maViewInformation2D)
|
|
updateViewInformation(rNew);
|
|
}
|
|
} // end of namespace
|
|
|
|
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|