office-gobmx/drawinglayer/Library_drawinglayer.mk
Armin Le Grand (Allotropia) 9455aae461 SDPR: Direct support for FillGraphicPrimitive2D
Added support to directly paint FillGraphicPrimitive2D, that
means object fill with multiple tiles/tiled fill. Note: This
may use not only bitmap data, but also metafile or svg.

The standard decompose creates one transformed bitmap/vector
data primitive per tile what is correct, but has some limits
(a) These may get many when tiles are small compared to
    mask polyPolygon (performance/ressources)
(b) Correctness: when rendering in AA the common edges of
    tiles will *not* sum up perfectly, but due to AA
    multiplying when blending will leave ugly 'traces'

This direct rendering avoids both. It can use the D2D Brush
functionality to repeat. Additionally to the current
office it can also do that when content is rotated/sheared.
This may not be well known since for those fills the office
always keeps the fill unrotated (for historical reasons,
primitives can do that, but not vcl). To see it you may
convert a SdrObject to metafile and rotate that, so the
content gets rotated and shows that ugly gaps.

Also added a square-pixel step value for vector fills where
the default gets used starting from some size. The argument
is better quality for vector data fills while only a
limited number of tiles will be rendered.

Also added a buffered handling of the (old and ugly)
OffsetX/OffsetY to make that work, we will not get rid of
that soon.

Packed all of this into tooling (so started a tooling
collection for SDPRs target-system independent) to be able
to easily re-use all these preparations/tests in other
SDPR implementations in the future.

Change-Id: Iafacf4181e7c9e2d2b2e3b5cf1f7e4cdd0a43f0a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/145466
Tested-by: Jenkins
Reviewed-by: Armin Le Grand <Armin.Le.Grand@me.com>
2023-01-13 20:00:19 +00:00

224 lines
9.8 KiB
Makefile

# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
#
# 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/.
#
$(eval $(call gb_Library_Library,drawinglayer))
$(eval $(call gb_Library_set_include,drawinglayer,\
$$(INCLUDE) \
-I$(SRCDIR)/drawinglayer/inc \
))
$(eval $(call gb_Library_add_defs,drawinglayer,\
-DDRAWINGLAYER_DLLIMPLEMENTATION \
))
$(eval $(call gb_Library_set_precompiled_header,drawinglayer,drawinglayer/inc/pch/precompiled_drawinglayer))
$(eval $(call gb_Library_set_componentfile,drawinglayer,drawinglayer/drawinglayer,services))
$(eval $(call gb_Library_use_sdk_api,drawinglayer))
$(eval $(call gb_Library_use_externals,drawinglayer,\
boost_headers \
libxml2 \
$(if $(USE_HEADLESS_CODE), cairo) \
))
ifneq ($(ENABLE_WASM_STRIP_CANVAS),TRUE)
$(eval $(call gb_Library_use_libraries,drawinglayer,\
canvastools \
cppcanvas \
))
endif
$(eval $(call gb_Library_use_system_win32_libs,drawinglayer,\
d2d1 \
dxguid \
))
$(eval $(call gb_Library_use_libraries,drawinglayer,\
basegfx \
comphelper \
cppu \
cppuhelper \
drawinglayercore \
i18nlangtag \
sal \
salhelper \
svl \
svt \
tl \
vcl \
))
ifeq ($(OS),WNT)
$(eval $(call gb_Library_use_system_win32_libs,drawinglayer,\
gdi32 \
))
endif
ifeq ($(OS),WNT)
$(eval $(call gb_Library_add_exception_objects,drawinglayer,\
drawinglayer/source/processor2d/d2dpixelprocessor2d \
drawinglayer/source/processor2d/SDPRProcessor2dTools \
))
endif
ifeq ($(USE_HEADLESS_CODE),TRUE)
$(eval $(call gb_Library_add_exception_objects,drawinglayer,\
drawinglayer/source/processor2d/cairopixelprocessor2d \
))
endif
$(eval $(call gb_Library_add_exception_objects,drawinglayer,\
drawinglayer/source/animation/animationtiming \
drawinglayer/source/attribute/fillgraphicattribute \
drawinglayer/source/attribute/fillgradientattribute \
drawinglayer/source/attribute/fillhatchattribute \
drawinglayer/source/attribute/fontattribute \
drawinglayer/source/attribute/lineattribute \
drawinglayer/source/attribute/linestartendattribute \
drawinglayer/source/attribute/materialattribute3d \
drawinglayer/source/attribute/sdrallattribute3d \
drawinglayer/source/attribute/sdrfillattribute \
drawinglayer/source/attribute/sdrfillgraphicattribute \
drawinglayer/source/attribute/sdrglowattribute \
drawinglayer/source/attribute/sdrlightattribute3d \
drawinglayer/source/attribute/sdrlightingattribute3d \
drawinglayer/source/attribute/sdrlineattribute \
drawinglayer/source/attribute/sdrlinestartendattribute \
drawinglayer/source/attribute/sdrobjectattribute3d \
drawinglayer/source/attribute/sdrsceneattribute3d \
drawinglayer/source/attribute/sdrshadowattribute \
drawinglayer/source/attribute/strokeattribute \
drawinglayer/source/geometry/viewinformation3d \
drawinglayer/source/primitive2d/animatedprimitive2d \
drawinglayer/source/primitive2d/backgroundcolorprimitive2d \
drawinglayer/source/primitive2d/bitmapprimitive2d \
drawinglayer/source/primitive2d/borderlineprimitive2d \
drawinglayer/source/primitive2d/BufferedDecompositionGroupPrimitive2D \
drawinglayer/source/primitive2d/controlprimitive2d \
drawinglayer/source/primitive2d/cropprimitive2d \
drawinglayer/source/primitive2d/discretebitmapprimitive2d \
drawinglayer/source/primitive2d/discreteshadowprimitive2d \
drawinglayer/source/primitive2d/embedded3dprimitive2d \
drawinglayer/source/primitive2d/epsprimitive2d \
drawinglayer/source/primitive2d/fillgraphicprimitive2d \
drawinglayer/source/primitive2d/fillgradientprimitive2d \
drawinglayer/source/primitive2d/fillhatchprimitive2d \
drawinglayer/source/primitive2d/glowprimitive2d \
drawinglayer/source/primitive2d/GlowSoftEgdeShadowTools \
drawinglayer/source/primitive2d/graphicprimitivehelper2d \
drawinglayer/source/primitive2d/graphicprimitive2d \
drawinglayer/source/primitive2d/gridprimitive2d \
drawinglayer/source/primitive2d/groupprimitive2d \
drawinglayer/source/primitive2d/helplineprimitive2d \
drawinglayer/source/primitive2d/hiddengeometryprimitive2d \
drawinglayer/source/primitive2d/invertprimitive2d \
drawinglayer/source/primitive2d/markerarrayprimitive2d \
drawinglayer/source/primitive2d/maskprimitive2d \
drawinglayer/source/primitive2d/mediaprimitive2d \
drawinglayer/source/primitive2d/metafileprimitive2d \
drawinglayer/source/primitive2d/modifiedcolorprimitive2d \
drawinglayer/source/primitive2d/objectinfoprimitive2d \
drawinglayer/source/primitive2d/pagehierarchyprimitive2d \
drawinglayer/source/primitive2d/pagepreviewprimitive2d \
drawinglayer/source/primitive2d/patternfillprimitive2d \
drawinglayer/source/primitive2d/pointarrayprimitive2d \
drawinglayer/source/primitive2d/polygonprimitive2d \
drawinglayer/source/primitive2d/PolyPolygonHairlinePrimitive2D \
drawinglayer/source/primitive2d/PolyPolygonMarkerPrimitive2D \
drawinglayer/source/primitive2d/PolyPolygonStrokePrimitive2D \
drawinglayer/source/primitive2d/PolyPolygonColorPrimitive2D \
drawinglayer/source/primitive2d/PolyPolygonGradientPrimitive2D \
drawinglayer/source/primitive2d/PolyPolygonHatchPrimitive2D \
drawinglayer/source/primitive2d/PolyPolygonGraphicPrimitive2D \
drawinglayer/source/primitive2d/PolyPolygonSelectionPrimitive2D \
drawinglayer/source/primitive2d/primitivetools2d \
drawinglayer/source/primitive2d/sceneprimitive2d \
drawinglayer/source/primitive2d/sdrdecompositiontools2d \
drawinglayer/source/primitive2d/shadowprimitive2d \
drawinglayer/source/primitive2d/softedgeprimitive2d \
drawinglayer/source/primitive2d/structuretagprimitive2d \
drawinglayer/source/primitive2d/svggradientprimitive2d \
drawinglayer/source/primitive2d/textbreakuphelper \
drawinglayer/source/primitive2d/textdecoratedprimitive2d \
drawinglayer/source/primitive2d/texteffectprimitive2d \
drawinglayer/source/primitive2d/textenumsprimitive2d \
drawinglayer/source/primitive2d/texthierarchyprimitive2d \
drawinglayer/source/primitive2d/textlayoutdevice \
drawinglayer/source/primitive2d/textlineprimitive2d \
drawinglayer/source/primitive2d/textprimitive2d \
drawinglayer/source/primitive2d/textstrikeoutprimitive2d \
drawinglayer/source/primitive2d/transformprimitive2d \
drawinglayer/source/primitive2d/transparenceprimitive2d \
drawinglayer/source/primitive2d/unifiedtransparenceprimitive2d \
drawinglayer/source/primitive2d/wallpaperprimitive2d \
drawinglayer/source/primitive2d/wrongspellprimitive2d \
drawinglayer/source/primitive3d/baseprimitive3d \
drawinglayer/source/primitive3d/groupprimitive3d \
drawinglayer/source/primitive3d/hatchtextureprimitive3d \
drawinglayer/source/primitive3d/hiddengeometryprimitive3d \
drawinglayer/source/primitive3d/modifiedcolorprimitive3d \
drawinglayer/source/primitive3d/polygonprimitive3d \
drawinglayer/source/primitive3d/polygontubeprimitive3d \
drawinglayer/source/primitive3d/polypolygonprimitive3d \
drawinglayer/source/primitive3d/sdrcubeprimitive3d \
drawinglayer/source/primitive3d/sdrdecompositiontools3d \
drawinglayer/source/primitive3d/sdrextrudelathetools3d \
drawinglayer/source/primitive3d/sdrextrudeprimitive3d \
drawinglayer/source/primitive3d/sdrlatheprimitive3d \
drawinglayer/source/primitive3d/sdrpolypolygonprimitive3d \
drawinglayer/source/primitive3d/sdrprimitive3d \
drawinglayer/source/primitive3d/sdrsphereprimitive3d \
drawinglayer/source/primitive3d/shadowprimitive3d \
drawinglayer/source/primitive3d/textureprimitive3d \
drawinglayer/source/primitive3d/transformprimitive3d \
drawinglayer/source/primitive3d/Tools \
drawinglayer/source/processor2d/baseprocessor2d \
drawinglayer/source/processor2d/processor2dtools \
drawinglayer/source/processor2d/contourextractor2d \
drawinglayer/source/processor2d/getdigitlanguage \
drawinglayer/source/processor2d/helperwrongspellrenderer \
drawinglayer/source/processor2d/hittestprocessor2d \
drawinglayer/source/processor2d/linegeometryextractor2d \
drawinglayer/source/processor2d/objectinfoextractor2d \
drawinglayer/source/processor2d/textaspolygonextractor2d \
drawinglayer/source/processor2d/vclhelperbufferdevice \
drawinglayer/source/processor2d/vclmetafileprocessor2d \
drawinglayer/source/processor2d/vclpixelprocessor2d \
drawinglayer/source/processor2d/vclprocessor2d \
drawinglayer/source/processor3d/baseprocessor3d \
drawinglayer/source/processor3d/cutfindprocessor3d \
drawinglayer/source/processor3d/defaultprocessor3d \
drawinglayer/source/processor3d/geometry2dextractor \
drawinglayer/source/processor3d/shadow3dextractor \
drawinglayer/source/processor3d/zbufferprocessor3d \
drawinglayer/source/texture/texture3d \
drawinglayer/source/tools/converters \
drawinglayer/source/tools/emfplushelper \
drawinglayer/source/tools/emfphelperdata \
drawinglayer/source/tools/emfpbrush \
drawinglayer/source/tools/emfppath \
drawinglayer/source/tools/emfppen \
drawinglayer/source/tools/emfpregion \
drawinglayer/source/tools/emfpimage \
drawinglayer/source/tools/emfpimageattributes \
drawinglayer/source/tools/emfpfont \
drawinglayer/source/tools/emfpstringformat \
drawinglayer/source/tools/emfpcustomlinecap \
drawinglayer/source/tools/wmfemfhelper \
drawinglayer/source/tools/primitive2dxmldump \
drawinglayer/source/drawinglayeruno/xprimitive2drenderer \
drawinglayer/source/texture/texture \
drawinglayer/source/dumper/XShapeDumper \
drawinglayer/source/dumper/EnhancedShapeDumper \
))
# vim: set noet sw=4 ts=4: