summaryrefslogtreecommitdiff
path: root/drawinglayer
diff options
context:
space:
mode:
Diffstat (limited to 'drawinglayer')
-rw-r--r--drawinglayer/Library_drawinglayer.mk186
-rw-r--r--drawinglayer/Makefile39
-rw-r--r--drawinglayer/Module_drawinglayer.mk36
-rw-r--r--drawinglayer/Package_inc.mk141
-rw-r--r--drawinglayer/inc/drawinglayer/animation/animationtiming.hxx153
-rw-r--r--drawinglayer/inc/drawinglayer/attribute/fillbitmapattribute.hxx94
-rw-r--r--drawinglayer/inc/drawinglayer/attribute/fillgradientattribute.hxx120
-rw-r--r--drawinglayer/inc/drawinglayer/attribute/fillhatchattribute.hxx111
-rw-r--r--drawinglayer/inc/drawinglayer/attribute/fontattribute.hxx107
-rw-r--r--drawinglayer/inc/drawinglayer/attribute/lineattribute.hxx89
-rw-r--r--drawinglayer/inc/drawinglayer/attribute/linestartendattribute.hxx90
-rw-r--r--drawinglayer/inc/drawinglayer/attribute/materialattribute3d.hxx94
-rw-r--r--drawinglayer/inc/drawinglayer/attribute/sdrallattribute3d.hxx91
-rw-r--r--drawinglayer/inc/drawinglayer/attribute/sdrfillattribute.hxx98
-rw-r--r--drawinglayer/inc/drawinglayer/attribute/sdrfillbitmapattribute.hxx106
-rw-r--r--drawinglayer/inc/drawinglayer/attribute/sdrlightattribute3d.hxx95
-rw-r--r--drawinglayer/inc/drawinglayer/attribute/sdrlightingattribute3d.hxx98
-rw-r--r--drawinglayer/inc/drawinglayer/attribute/sdrlineattribute.hxx103
-rw-r--r--drawinglayer/inc/drawinglayer/attribute/sdrlinestartendattribute.hxx101
-rw-r--r--drawinglayer/inc/drawinglayer/attribute/sdrobjectattribute3d.hxx110
-rw-r--r--drawinglayer/inc/drawinglayer/attribute/sdrsceneattribute3d.hxx93
-rw-r--r--drawinglayer/inc/drawinglayer/attribute/sdrshadowattribute.hxx92
-rw-r--r--drawinglayer/inc/drawinglayer/attribute/strokeattribute.hxx84
-rw-r--r--drawinglayer/inc/drawinglayer/drawinglayerdllapi.h45
-rw-r--r--drawinglayer/inc/drawinglayer/geometry/viewinformation2d.hxx188
-rw-r--r--drawinglayer/inc/drawinglayer/geometry/viewinformation3d.hxx182
-rw-r--r--drawinglayer/inc/drawinglayer/primitive2d/animatedprimitive2d.hxx183
-rw-r--r--drawinglayer/inc/drawinglayer/primitive2d/backgroundcolorprimitive2d.hxx98
-rw-r--r--drawinglayer/inc/drawinglayer/primitive2d/baseprimitive2d.hxx304
-rw-r--r--drawinglayer/inc/drawinglayer/primitive2d/bitmapprimitive2d.hxx92
-rw-r--r--drawinglayer/inc/drawinglayer/primitive2d/borderlineprimitive2d.hxx181
-rw-r--r--drawinglayer/inc/drawinglayer/primitive2d/chartprimitive2d.hxx84
-rw-r--r--drawinglayer/inc/drawinglayer/primitive2d/clippedborderlineprimitive2d.hxx82
-rw-r--r--drawinglayer/inc/drawinglayer/primitive2d/controlprimitive2d.hxx125
-rw-r--r--drawinglayer/inc/drawinglayer/primitive2d/discretebitmapprimitive2d.hxx90
-rw-r--r--drawinglayer/inc/drawinglayer/primitive2d/discreteshadowprimitive2d.hxx130
-rw-r--r--drawinglayer/inc/drawinglayer/primitive2d/drawinglayer_primitivetypes2d.hxx117
-rw-r--r--drawinglayer/inc/drawinglayer/primitive2d/embedded3dprimitive2d.hxx134
-rw-r--r--drawinglayer/inc/drawinglayer/primitive2d/epsprimitive2d.hxx93
-rw-r--r--drawinglayer/inc/drawinglayer/primitive2d/fillbitmapprimitive2d.hxx100
-rw-r--r--drawinglayer/inc/drawinglayer/primitive2d/fillgradientprimitive2d.hxx121
-rw-r--r--drawinglayer/inc/drawinglayer/primitive2d/fillhatchprimitive2d.hxx101
-rw-r--r--drawinglayer/inc/drawinglayer/primitive2d/graphicprimitive2d.hxx110
-rw-r--r--drawinglayer/inc/drawinglayer/primitive2d/gridprimitive2d.hxx131
-rw-r--r--drawinglayer/inc/drawinglayer/primitive2d/groupprimitive2d.hxx107
-rw-r--r--drawinglayer/inc/drawinglayer/primitive2d/helplineprimitive2d.hxx126
-rw-r--r--drawinglayer/inc/drawinglayer/primitive2d/hiddengeometryprimitive2d.hxx78
-rw-r--r--drawinglayer/inc/drawinglayer/primitive2d/invertprimitive2d.hxx71
-rw-r--r--drawinglayer/inc/drawinglayer/primitive2d/markerarrayprimitive2d.hxx100
-rw-r--r--drawinglayer/inc/drawinglayer/primitive2d/maskprimitive2d.hxx91
-rw-r--r--drawinglayer/inc/drawinglayer/primitive2d/mediaprimitive2d.hxx105
-rw-r--r--drawinglayer/inc/drawinglayer/primitive2d/metafileprimitive2d.hxx106
-rw-r--r--drawinglayer/inc/drawinglayer/primitive2d/modifiedcolorprimitive2d.hxx91
-rw-r--r--drawinglayer/inc/drawinglayer/primitive2d/pagepreviewprimitive2d.hxx116
-rw-r--r--drawinglayer/inc/drawinglayer/primitive2d/pointarrayprimitive2d.hxx95
-rw-r--r--drawinglayer/inc/drawinglayer/primitive2d/polygonprimitive2d.hxx329
-rw-r--r--drawinglayer/inc/drawinglayer/primitive2d/polypolygonprimitive2d.hxx451
-rw-r--r--drawinglayer/inc/drawinglayer/primitive2d/primitivetools2d.hxx204
-rw-r--r--drawinglayer/inc/drawinglayer/primitive2d/rendergraphicprimitive2d.hxx95
-rw-r--r--drawinglayer/inc/drawinglayer/primitive2d/sceneprimitive2d.hxx171
-rw-r--r--drawinglayer/inc/drawinglayer/primitive2d/sdrdecompositiontools2d.hxx84
-rw-r--r--drawinglayer/inc/drawinglayer/primitive2d/shadowprimitive2d.hxx100
-rw-r--r--drawinglayer/inc/drawinglayer/primitive2d/structuretagprimitive2d.hxx83
-rw-r--r--drawinglayer/inc/drawinglayer/primitive2d/textdecoratedprimitive2d.hxx162
-rw-r--r--drawinglayer/inc/drawinglayer/primitive2d/texteffectprimitive2d.hxx118
-rw-r--r--drawinglayer/inc/drawinglayer/primitive2d/textenumsprimitive2d.hxx116
-rw-r--r--drawinglayer/inc/drawinglayer/primitive2d/texthierarchyprimitive2d.hxx224
-rw-r--r--drawinglayer/inc/drawinglayer/primitive2d/textlayoutdevice.hxx169
-rw-r--r--drawinglayer/inc/drawinglayer/primitive2d/textlineprimitive2d.hxx96
-rw-r--r--drawinglayer/inc/drawinglayer/primitive2d/textprimitive2d.hxx197
-rw-r--r--drawinglayer/inc/drawinglayer/primitive2d/textstrikeoutprimitive2d.hxx164
-rw-r--r--drawinglayer/inc/drawinglayer/primitive2d/transformprimitive2d.hxx96
-rw-r--r--drawinglayer/inc/drawinglayer/primitive2d/transparenceprimitive2d.hxx102
-rw-r--r--drawinglayer/inc/drawinglayer/primitive2d/unifiedtransparenceprimitive2d.hxx90
-rw-r--r--drawinglayer/inc/drawinglayer/primitive2d/wallpaperprimitive2d.hxx99
-rw-r--r--drawinglayer/inc/drawinglayer/primitive2d/wrongspellprimitive2d.hxx104
-rw-r--r--drawinglayer/inc/drawinglayer/primitive3d/baseprimitive3d.hxx225
-rw-r--r--drawinglayer/inc/drawinglayer/primitive3d/drawinglayer_primitivetypes3d.hxx68
-rw-r--r--drawinglayer/inc/drawinglayer/primitive3d/groupprimitive3d.hxx93
-rw-r--r--drawinglayer/inc/drawinglayer/primitive3d/hatchtextureprimitive3d.hxx98
-rw-r--r--drawinglayer/inc/drawinglayer/primitive3d/hiddengeometryprimitive3d.hxx80
-rw-r--r--drawinglayer/inc/drawinglayer/primitive3d/modifiedcolorprimitive3d.hxx81
-rw-r--r--drawinglayer/inc/drawinglayer/primitive3d/polygonprimitive3d.hxx146
-rw-r--r--drawinglayer/inc/drawinglayer/primitive3d/polygontubeprimitive3d.hxx116
-rw-r--r--drawinglayer/inc/drawinglayer/primitive3d/polypolygonprimitive3d.hxx95
-rw-r--r--drawinglayer/inc/drawinglayer/primitive3d/sdrcubeprimitive3d.hxx81
-rw-r--r--drawinglayer/inc/drawinglayer/primitive3d/sdrdecompositiontools3d.hxx109
-rw-r--r--drawinglayer/inc/drawinglayer/primitive3d/sdrextrudelathetools3d.hxx148
-rw-r--r--drawinglayer/inc/drawinglayer/primitive3d/sdrextrudeprimitive3d.hxx141
-rw-r--r--drawinglayer/inc/drawinglayer/primitive3d/sdrlatheprimitive3d.hxx159
-rw-r--r--drawinglayer/inc/drawinglayer/primitive3d/sdrpolypolygonprimitive3d.hxx93
-rw-r--r--drawinglayer/inc/drawinglayer/primitive3d/sdrprimitive3d.hxx100
-rw-r--r--drawinglayer/inc/drawinglayer/primitive3d/sdrsphereprimitive3d.hxx92
-rw-r--r--drawinglayer/inc/drawinglayer/primitive3d/shadowprimitive3d.hxx96
-rw-r--r--drawinglayer/inc/drawinglayer/primitive3d/textureprimitive3d.hxx242
-rw-r--r--drawinglayer/inc/drawinglayer/primitive3d/transformprimitive3d.hxx86
-rw-r--r--drawinglayer/inc/drawinglayer/processor2d/baseprocessor2d.hxx207
-rw-r--r--drawinglayer/inc/drawinglayer/processor2d/canvasprocessor.hxx139
-rw-r--r--drawinglayer/inc/drawinglayer/processor2d/contourextractor2d.hxx73
-rw-r--r--drawinglayer/inc/drawinglayer/processor2d/hittestprocessor2d.hxx119
-rw-r--r--drawinglayer/inc/drawinglayer/processor2d/linegeometryextractor2d.hxx76
-rw-r--r--drawinglayer/inc/drawinglayer/processor2d/textaspolygonextractor2d.hxx109
-rw-r--r--drawinglayer/inc/drawinglayer/processor2d/vclmetafileprocessor2d.hxx159
-rw-r--r--drawinglayer/inc/drawinglayer/processor2d/vclpixelprocessor2d.hxx82
-rw-r--r--drawinglayer/inc/drawinglayer/processor2d/vclprocessor2d.hxx145
-rw-r--r--drawinglayer/inc/drawinglayer/processor3d/baseprocessor3d.hxx124
-rw-r--r--drawinglayer/inc/drawinglayer/processor3d/cutfindprocessor3d.hxx102
-rw-r--r--drawinglayer/inc/drawinglayer/processor3d/defaultprocessor3d.hxx169
-rw-r--r--drawinglayer/inc/drawinglayer/processor3d/geometry2dextractor.hxx86
-rw-r--r--drawinglayer/inc/drawinglayer/processor3d/shadow3dextractor.hxx128
-rw-r--r--drawinglayer/inc/drawinglayer/processor3d/zbufferprocessor3d.hxx124
-rw-r--r--drawinglayer/inc/drawinglayer/texture/texture.hxx271
-rw-r--r--drawinglayer/inc/drawinglayer/texture/texture3d.hxx170
-rw-r--r--drawinglayer/inc/pch/precompiled_drawinglayer.cxx31
-rw-r--r--drawinglayer/inc/pch/precompiled_drawinglayer.hxx34
-rw-r--r--drawinglayer/prj/build.lst4
-rw-r--r--drawinglayer/prj/d.lst2
-rwxr-xr-xdrawinglayer/prj/makefile.mk40
-rw-r--r--drawinglayer/source/animation/animationtiming.cxx373
-rw-r--r--drawinglayer/source/attribute/fillbitmapattribute.cxx202
-rw-r--r--drawinglayer/source/attribute/fillgradientattribute.cxx247
-rw-r--r--drawinglayer/source/attribute/fillhatchattribute.cxx216
-rw-r--r--drawinglayer/source/attribute/fontattribute.cxx268
-rw-r--r--drawinglayer/source/attribute/lineattribute.cxx188
-rw-r--r--drawinglayer/source/attribute/linestartendattribute.cxx197
-rw-r--r--drawinglayer/source/attribute/materialattribute3d.cxx210
-rw-r--r--drawinglayer/source/attribute/sdrallattribute3d.cxx86
-rw-r--r--drawinglayer/source/attribute/sdrfillattribute.cxx218
-rw-r--r--drawinglayer/source/attribute/sdrfillbitmapattribute.cxx407
-rw-r--r--drawinglayer/source/attribute/sdrlightattribute3d.cxx193
-rw-r--r--drawinglayer/source/attribute/sdrlightingattribute3d.cxx232
-rw-r--r--drawinglayer/source/attribute/sdrlineattribute.cxx247
-rw-r--r--drawinglayer/source/attribute/sdrlinestartendattribute.cxx251
-rw-r--r--drawinglayer/source/attribute/sdrobjectattribute3d.cxx289
-rw-r--r--drawinglayer/source/attribute/sdrsceneattribute3d.cxx215
-rw-r--r--drawinglayer/source/attribute/sdrshadowattribute.cxx190
-rw-r--r--drawinglayer/source/attribute/strokeattribute.cxx185
-rw-r--r--drawinglayer/source/geometry/viewinformation2d.cxx595
-rw-r--r--drawinglayer/source/geometry/viewinformation3d.cxx602
-rw-r--r--drawinglayer/source/primitive2d/animatedprimitive2d.cxx227
-rw-r--r--drawinglayer/source/primitive2d/backgroundcolorprimitive2d.cxx119
-rw-r--r--drawinglayer/source/primitive2d/baseprimitive2d.cxx281
-rw-r--r--drawinglayer/source/primitive2d/bitmapprimitive2d.cxx84
-rw-r--r--drawinglayer/source/primitive2d/borderlineprimitive2d.cxx342
-rw-r--r--drawinglayer/source/primitive2d/chartprimitive2d.cxx85
-rw-r--r--drawinglayer/source/primitive2d/clippedborderlineprimitive2d.cxx81
-rw-r--r--drawinglayer/source/primitive2d/controlprimitive2d.cxx386
-rw-r--r--drawinglayer/source/primitive2d/discretebitmapprimitive2d.cxx119
-rw-r--r--drawinglayer/source/primitive2d/discreteshadowprimitive2d.cxx339
-rw-r--r--drawinglayer/source/primitive2d/embedded3dprimitive2d.cxx171
-rw-r--r--drawinglayer/source/primitive2d/epsprimitive2d.cxx106
-rw-r--r--drawinglayer/source/primitive2d/fillbitmapprimitive2d.cxx145
-rw-r--r--drawinglayer/source/primitive2d/fillgradientprimitive2d.cxx301
-rw-r--r--drawinglayer/source/primitive2d/fillhatchprimitive2d.cxx164
-rw-r--r--drawinglayer/source/primitive2d/graphicprimitive2d.cxx502
-rw-r--r--drawinglayer/source/primitive2d/gridprimitive2d.cxx323
-rw-r--r--drawinglayer/source/primitive2d/groupprimitive2d.cxx82
-rw-r--r--drawinglayer/source/primitive2d/helplineprimitive2d.cxx225
-rw-r--r--drawinglayer/source/primitive2d/hiddengeometryprimitive2d.cxx72
-rw-r--r--drawinglayer/source/primitive2d/invertprimitive2d.cxx60
-rw-r--r--drawinglayer/source/primitive2d/markerarrayprimitive2d.cxx160
-rw-r--r--drawinglayer/source/primitive2d/maskprimitive2d.cxx79
-rw-r--r--drawinglayer/source/primitive2d/mediaprimitive2d.cxx166
-rw-r--r--drawinglayer/source/primitive2d/metafileprimitive2d.cxx3287
-rw-r--r--drawinglayer/source/primitive2d/modifiedcolorprimitive2d.cxx74
-rw-r--r--drawinglayer/source/primitive2d/pagepreviewprimitive2d.cxx186
-rw-r--r--drawinglayer/source/primitive2d/pointarrayprimitive2d.cxx96
-rw-r--r--drawinglayer/source/primitive2d/polygonprimitive2d.cxx642
-rw-r--r--drawinglayer/source/primitive2d/polypolygonprimitive2d.cxx575
-rw-r--r--drawinglayer/source/primitive2d/primitivetools2d.cxx173
-rw-r--r--drawinglayer/source/primitive2d/rendergraphicprimitive2d.cxx92
-rw-r--r--drawinglayer/source/primitive2d/sceneprimitive2d.cxx483
-rw-r--r--drawinglayer/source/primitive2d/sdrdecompositiontools2d.cxx127
-rw-r--r--drawinglayer/source/primitive2d/shadowprimitive2d.cxx109
-rw-r--r--drawinglayer/source/primitive2d/structuretagprimitive2d.cxx62
-rw-r--r--drawinglayer/source/primitive2d/textdecoratedprimitive2d.cxx610
-rw-r--r--drawinglayer/source/primitive2d/texteffectprimitive2d.cxx242
-rw-r--r--drawinglayer/source/primitive2d/textenumsprimitive2d.cxx124
-rw-r--r--drawinglayer/source/primitive2d/texthierarchyprimitive2d.cxx161
-rw-r--r--drawinglayer/source/primitive2d/textlayoutdevice.cxx503
-rw-r--r--drawinglayer/source/primitive2d/textlineprimitive2d.cxx312
-rw-r--r--drawinglayer/source/primitive2d/textprimitive2d.cxx348
-rw-r--r--drawinglayer/source/primitive2d/textstrikeoutprimitive2d.cxx289
-rw-r--r--drawinglayer/source/primitive2d/transformprimitive2d.cxx82
-rw-r--r--drawinglayer/source/primitive2d/transparenceprimitive2d.cxx75
-rw-r--r--drawinglayer/source/primitive2d/unifiedtransparenceprimitive2d.cxx133
-rw-r--r--drawinglayer/source/primitive2d/wallpaperprimitive2d.cxx272
-rw-r--r--drawinglayer/source/primitive2d/wrongspellprimitive2d.cxx125
-rw-r--r--drawinglayer/source/primitive3d/baseprimitive3d.cxx281
-rw-r--r--drawinglayer/source/primitive3d/groupprimitive3d.cxx82
-rw-r--r--drawinglayer/source/primitive3d/hatchtextureprimitive3d.cxx322
-rw-r--r--drawinglayer/source/primitive3d/hiddengeometryprimitive3d.cxx73
-rw-r--r--drawinglayer/source/primitive3d/modifiedcolorprimitive3d.cxx74
-rw-r--r--drawinglayer/source/primitive3d/polygonprimitive3d.cxx181
-rw-r--r--drawinglayer/source/primitive3d/polygontubeprimitive3d.cxx582
-rw-r--r--drawinglayer/source/primitive3d/polypolygonprimitive3d.cxx86
-rw-r--r--drawinglayer/source/primitive3d/sdrcubeprimitive3d.cxx225
-rw-r--r--drawinglayer/source/primitive3d/sdrdecompositiontools3d.cxx342
-rw-r--r--drawinglayer/source/primitive3d/sdrextrudelathetools3d.cxx994
-rw-r--r--drawinglayer/source/primitive3d/sdrextrudeprimitive3d.cxx528
-rw-r--r--drawinglayer/source/primitive3d/sdrlatheprimitive3d.cxx390
-rw-r--r--drawinglayer/source/primitive3d/sdrpolypolygonprimitive3d.cxx197
-rw-r--r--drawinglayer/source/primitive3d/sdrprimitive3d.cxx128
-rw-r--r--drawinglayer/source/primitive3d/sdrsphereprimitive3d.cxx227
-rw-r--r--drawinglayer/source/primitive3d/shadowprimitive3d.cxx83
-rw-r--r--drawinglayer/source/primitive3d/textureprimitive3d.cxx230
-rw-r--r--drawinglayer/source/primitive3d/transformprimitive3d.cxx82
-rw-r--r--drawinglayer/source/processor2d/baseprocessor2d.cxx94
-rw-r--r--drawinglayer/source/processor2d/canvasprocessor.cxx1029
-rw-r--r--drawinglayer/source/processor2d/contourextractor2d.cxx206
-rw-r--r--drawinglayer/source/processor2d/helperchartrenderer.cxx158
-rw-r--r--drawinglayer/source/processor2d/helperchartrenderer.hxx63
-rw-r--r--drawinglayer/source/processor2d/helperwrongspellrenderer.cxx99
-rw-r--r--drawinglayer/source/processor2d/helperwrongspellrenderer.hxx68
-rw-r--r--drawinglayer/source/processor2d/hittestprocessor2d.cxx610
-rw-r--r--drawinglayer/source/processor2d/linegeometryextractor2d.cxx148
-rw-r--r--drawinglayer/source/processor2d/textaspolygonextractor2d.cxx251
-rw-r--r--drawinglayer/source/processor2d/vclhelperbitmaprender.cxx280
-rw-r--r--drawinglayer/source/processor2d/vclhelperbitmaprender.hxx69
-rw-r--r--drawinglayer/source/processor2d/vclhelperbitmaptransform.cxx434
-rw-r--r--drawinglayer/source/processor2d/vclhelperbitmaptransform.hxx63
-rw-r--r--drawinglayer/source/processor2d/vclhelperbufferdevice.cxx166
-rw-r--r--drawinglayer/source/processor2d/vclhelperbufferdevice.hxx73
-rw-r--r--drawinglayer/source/processor2d/vclhelpergradient.cxx288
-rw-r--r--drawinglayer/source/processor2d/vclhelpergradient.hxx65
-rw-r--r--drawinglayer/source/processor2d/vclmetafileprocessor2d.cxx2031
-rw-r--r--drawinglayer/source/processor2d/vclpixelprocessor2d.cxx625
-rw-r--r--drawinglayer/source/processor2d/vclprocessor2d.cxx1593
-rw-r--r--drawinglayer/source/processor3d/baseprocessor3d.cxx117
-rw-r--r--drawinglayer/source/processor3d/cutfindprocessor3d.cxx228
-rw-r--r--drawinglayer/source/processor3d/defaultprocessor3d.cxx569
-rw-r--r--drawinglayer/source/processor3d/geometry2dextractor.cxx173
-rw-r--r--drawinglayer/source/processor3d/shadow3dextractor.cxx345
-rw-r--r--drawinglayer/source/processor3d/zbufferprocessor3d.cxx834
-rw-r--r--drawinglayer/source/texture/texture.cxx647
-rw-r--r--drawinglayer/source/texture/texture3d.cxx265
-rwxr-xr-xdrawinglayer/util/drawinglayer.flt4
237 files changed, 0 insertions, 50219 deletions
diff --git a/drawinglayer/Library_drawinglayer.mk b/drawinglayer/Library_drawinglayer.mk
deleted file mode 100644
index 133364bcc0..0000000000
--- a/drawinglayer/Library_drawinglayer.mk
+++ /dev/null
@@ -1,186 +0,0 @@
-# -*- Mode: makefile; tab-width: 4; indent-tabs-mode: t -*-
-# Version: MPL 1.1 / GPLv3+ / LGPLv3+
-#
-# The contents of this file are subject to the Mozilla Public License Version
-# 1.1 (the "License"); you may not use this file except in compliance with
-# the License or as specified alternatively below. You may obtain a copy of
-# the License at http://www.mozilla.org/MPL/
-#
-# Software distributed under the License is distributed on an "AS IS" basis,
-# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
-# for the specific language governing rights and limitations under the
-# License.
-#
-# The Initial Developer of the Original Code is
-# David Tardon, Red Hat Inc. <dtardon@redhat.com>
-# Portions created by the Initial Developer are Copyright (C) 2010 the
-# Initial Developer. All Rights Reserved.
-#
-# Major Contributor(s):
-#
-# For minor contributions see the git repository.
-#
-# Alternatively, the contents of this file may be used under the terms of
-# either the GNU General Public License Version 3 or later (the "GPLv3+"), or
-# the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
-# in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
-# instead of those above.
-
-$(eval $(call gb_Library_Library,drawinglayer))
-
-$(eval $(call gb_Library_add_package_headers,drawinglayer,drawinglayer_inc))
-
-$(eval $(call gb_Library_add_precompiled_header,drawinglayer,$(SRCDIR)/drawinglayer/inc/pch/precompiled_drawinglayer))
-
-$(eval $(call gb_Library_set_include,drawinglayer,\
- $$(INCLUDE) \
- -I$(realpath $(SRCDIR)/drawinglayer/inc/pch) \
- -I$(OUTDIR)/inc \
-))
-
-$(eval $(call gb_Library_add_defs,drawinglayer,\
- -DDRAWINGLAYER_DLLIMPLEMENTATION \
-))
-
-$(eval $(call gb_Library_add_api,drawinglayer,\
- offapi \
- udkapi \
-))
-
-$(eval $(call gb_Library_add_linked_libs,drawinglayer,\
- avmedia \
- basegfx \
- canvastools \
- comphelper \
- cppcanvas \
- cppu \
- cppuhelper \
- i18nisolang1 \
- sal \
- svl \
- svt \
- tk \
- tl \
- vcl \
- $(gb_STDLIBS) \
-))
-
-$(eval $(call gb_Library_add_exception_objects,drawinglayer,\
- drawinglayer/source/animation/animationtiming \
- drawinglayer/source/attribute/fillbitmapattribute \
- 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/sdrfillbitmapattribute \
- 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/primitive2d/animatedprimitive2d \
- drawinglayer/source/primitive2d/backgroundcolorprimitive2d \
- drawinglayer/source/primitive2d/baseprimitive2d \
- drawinglayer/source/primitive2d/bitmapprimitive2d \
- drawinglayer/source/primitive2d/borderlineprimitive2d \
- drawinglayer/source/primitive2d/chartprimitive2d \
- drawinglayer/source/primitive2d/clippedborderlineprimitive2d \
- drawinglayer/source/primitive2d/controlprimitive2d \
- drawinglayer/source/primitive2d/discretebitmapprimitive2d \
- drawinglayer/source/primitive2d/discreteshadowprimitive2d \
- drawinglayer/source/primitive2d/embedded3dprimitive2d \
- drawinglayer/source/primitive2d/epsprimitive2d \
- drawinglayer/source/primitive2d/fillbitmapprimitive2d \
- drawinglayer/source/primitive2d/fillgradientprimitive2d \
- drawinglayer/source/primitive2d/fillhatchprimitive2d \
- 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/pagepreviewprimitive2d \
- drawinglayer/source/primitive2d/pointarrayprimitive2d \
- drawinglayer/source/primitive2d/polygonprimitive2d \
- drawinglayer/source/primitive2d/polypolygonprimitive2d \
- drawinglayer/source/primitive2d/primitivetools2d \
- drawinglayer/source/primitive2d/rendergraphicprimitive2d \
- drawinglayer/source/primitive2d/sceneprimitive2d \
- drawinglayer/source/primitive2d/sdrdecompositiontools2d \
- drawinglayer/source/primitive2d/shadowprimitive2d \
- drawinglayer/source/primitive2d/structuretagprimitive2d \
- 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/processor2d/baseprocessor2d \
- drawinglayer/source/processor2d/canvasprocessor \
- drawinglayer/source/processor2d/contourextractor2d \
- drawinglayer/source/processor2d/helperchartrenderer \
- drawinglayer/source/processor2d/helperwrongspellrenderer \
- drawinglayer/source/processor2d/hittestprocessor2d \
- drawinglayer/source/processor2d/linegeometryextractor2d \
- drawinglayer/source/processor2d/textaspolygonextractor2d \
- drawinglayer/source/processor2d/vclhelperbitmaprender \
- drawinglayer/source/processor2d/vclhelperbitmaptransform \
- drawinglayer/source/processor2d/vclhelperbufferdevice \
- drawinglayer/source/processor2d/vclhelpergradient \
- 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/texture/texture \
-))
-
-$(eval $(call gb_Library_add_noexception_objects,drawinglayer,\
- drawinglayer/source/geometry/viewinformation2d \
- drawinglayer/source/geometry/viewinformation3d \
-))
-
-# vim: set noet sw=4 ts=4:
diff --git a/drawinglayer/Makefile b/drawinglayer/Makefile
deleted file mode 100644
index 8d71119918..0000000000
--- a/drawinglayer/Makefile
+++ /dev/null
@@ -1,39 +0,0 @@
-# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
-#*************************************************************************
-#
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# Copyright 2000, 2010 Oracle and/or its affiliates.
-#
-# OpenOffice.org - a multi-platform office productivity suite
-#
-# This file is part of OpenOffice.org.
-#
-# OpenOffice.org is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Lesser General Public License version 3
-# only, as published by the Free Software Foundation.
-#
-# OpenOffice.org is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Lesser General Public License version 3 for more details
-# (a copy is included in the LICENSE file that accompanied this code).
-#
-# You should have received a copy of the GNU Lesser General Public License
-# version 3 along with OpenOffice.org. If not, see
-# <http://www.openoffice.org/license.html>
-# for a copy of the LGPLv3 License.
-#
-#*************************************************************************
-
-ifeq ($(strip $(SOLARENV)),)
-$(error No environment set!)
-endif
-
-gb_PARTIALBUILD := T
-GBUILDDIR := $(SOLARENV)/gbuild
-include $(GBUILDDIR)/gbuild.mk
-
-$(eval $(call gb_Module_make_global_targets,$(shell ls $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/Module*.mk)))
-
-# vim: set noet sw=4 ts=4:
diff --git a/drawinglayer/Module_drawinglayer.mk b/drawinglayer/Module_drawinglayer.mk
deleted file mode 100644
index 05f4548216..0000000000
--- a/drawinglayer/Module_drawinglayer.mk
+++ /dev/null
@@ -1,36 +0,0 @@
-# -*- Mode: makefile; tab-width: 4; indent-tabs-mode: t -*-
-# Version: MPL 1.1 / GPLv3+ / LGPLv3+
-#
-# The contents of this file are subject to the Mozilla Public License Version
-# 1.1 (the "License"); you may not use this file except in compliance with
-# the License or as specified alternatively below. You may obtain a copy of
-# the License at http://www.mozilla.org/MPL/
-#
-# Software distributed under the License is distributed on an "AS IS" basis,
-# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
-# for the specific language governing rights and limitations under the
-# License.
-#
-# The Initial Developer of the Original Code is
-# David Tardon, Red Hat Inc. <dtardon@redhat.com>
-# Portions created by the Initial Developer are Copyright (C) 2010 the
-# Initial Developer. All Rights Reserved.
-#
-# Major Contributor(s):
-#
-# For minor contributions see the git repository.
-#
-# Alternatively, the contents of this file may be used under the terms of
-# either the GNU General Public License Version 3 or later (the "GPLv3+"), or
-# the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
-# in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
-# instead of those above.
-
-$(eval $(call gb_Module_Module,drawinglayer))
-
-$(eval $(call gb_Module_add_targets,drawinglayer,\
- Library_drawinglayer \
- Package_inc \
-))
-
-# vim: set noet sw=4 ts=4:
diff --git a/drawinglayer/Package_inc.mk b/drawinglayer/Package_inc.mk
deleted file mode 100644
index 8c5880448f..0000000000
--- a/drawinglayer/Package_inc.mk
+++ /dev/null
@@ -1,141 +0,0 @@
-# -*- Mode: makefile; tab-width: 4; indent-tabs-mode: t -*-
-# Version: MPL 1.1 / GPLv3+ / LGPLv3+
-#
-# The contents of this file are subject to the Mozilla Public License Version
-# 1.1 (the "License"); you may not use this file except in compliance with
-# the License or as specified alternatively below. You may obtain a copy of
-# the License at http://www.mozilla.org/MPL/
-#
-# Software distributed under the License is distributed on an "AS IS" basis,
-# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
-# for the specific language governing rights and limitations under the
-# License.
-#
-# The Initial Developer of the Original Code is
-# David Tardon, Red Hat Inc. <dtardon@redhat.com>
-# Portions created by the Initial Developer are Copyright (C) 2010 the
-# Initial Developer. All Rights Reserved.
-#
-# Major Contributor(s):
-#
-# For minor contributions see the git repository.
-#
-# Alternatively, the contents of this file may be used under the terms of
-# either the GNU General Public License Version 3 or later (the "GPLv3+"), or
-# the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
-# in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
-# instead of those above.
-
-$(eval $(call gb_Package_Package,drawinglayer_inc,$(SRCDIR)/drawinglayer/inc))
-
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/animation/animationtiming.hxx,drawinglayer/animation/animationtiming.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/attribute/fillbitmapattribute.hxx,drawinglayer/attribute/fillbitmapattribute.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/attribute/fillgradientattribute.hxx,drawinglayer/attribute/fillgradientattribute.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/attribute/fillhatchattribute.hxx,drawinglayer/attribute/fillhatchattribute.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/attribute/fontattribute.hxx,drawinglayer/attribute/fontattribute.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/attribute/lineattribute.hxx,drawinglayer/attribute/lineattribute.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/attribute/linestartendattribute.hxx,drawinglayer/attribute/linestartendattribute.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/attribute/materialattribute3d.hxx,drawinglayer/attribute/materialattribute3d.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/attribute/sdrallattribute3d.hxx,drawinglayer/attribute/sdrallattribute3d.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/attribute/sdrfillattribute.hxx,drawinglayer/attribute/sdrfillattribute.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/attribute/sdrfillbitmapattribute.hxx,drawinglayer/attribute/sdrfillbitmapattribute.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/attribute/sdrlightattribute3d.hxx,drawinglayer/attribute/sdrlightattribute3d.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/attribute/sdrlightingattribute3d.hxx,drawinglayer/attribute/sdrlightingattribute3d.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/attribute/sdrlineattribute.hxx,drawinglayer/attribute/sdrlineattribute.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/attribute/sdrlinestartendattribute.hxx,drawinglayer/attribute/sdrlinestartendattribute.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/attribute/sdrobjectattribute3d.hxx,drawinglayer/attribute/sdrobjectattribute3d.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/attribute/sdrsceneattribute3d.hxx,drawinglayer/attribute/sdrsceneattribute3d.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/attribute/sdrshadowattribute.hxx,drawinglayer/attribute/sdrshadowattribute.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/attribute/strokeattribute.hxx,drawinglayer/attribute/strokeattribute.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/drawinglayerdllapi.h,drawinglayer/drawinglayerdllapi.h))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/geometry/viewinformation2d.hxx,drawinglayer/geometry/viewinformation2d.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/geometry/viewinformation3d.hxx,drawinglayer/geometry/viewinformation3d.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/primitive2d/animatedprimitive2d.hxx,drawinglayer/primitive2d/animatedprimitive2d.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/primitive2d/backgroundcolorprimitive2d.hxx,drawinglayer/primitive2d/backgroundcolorprimitive2d.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/primitive2d/baseprimitive2d.hxx,drawinglayer/primitive2d/baseprimitive2d.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/primitive2d/bitmapprimitive2d.hxx,drawinglayer/primitive2d/bitmapprimitive2d.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/primitive2d/borderlineprimitive2d.hxx,drawinglayer/primitive2d/borderlineprimitive2d.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/primitive2d/chartprimitive2d.hxx,drawinglayer/primitive2d/chartprimitive2d.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/primitive2d/clippedborderlineprimitive2d.hxx,drawinglayer/primitive2d/clippedborderlineprimitive2d.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/primitive2d/controlprimitive2d.hxx,drawinglayer/primitive2d/controlprimitive2d.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/primitive2d/discretebitmapprimitive2d.hxx,drawinglayer/primitive2d/discretebitmapprimitive2d.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/primitive2d/discreteshadowprimitive2d.hxx,drawinglayer/primitive2d/discreteshadowprimitive2d.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/primitive2d/drawinglayer_primitivetypes2d.hxx,drawinglayer/primitive2d/drawinglayer_primitivetypes2d.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/primitive2d/embedded3dprimitive2d.hxx,drawinglayer/primitive2d/embedded3dprimitive2d.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/primitive2d/epsprimitive2d.hxx,drawinglayer/primitive2d/epsprimitive2d.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/primitive2d/fillbitmapprimitive2d.hxx,drawinglayer/primitive2d/fillbitmapprimitive2d.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/primitive2d/fillgradientprimitive2d.hxx,drawinglayer/primitive2d/fillgradientprimitive2d.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/primitive2d/fillhatchprimitive2d.hxx,drawinglayer/primitive2d/fillhatchprimitive2d.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/primitive2d/graphicprimitive2d.hxx,drawinglayer/primitive2d/graphicprimitive2d.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/primitive2d/gridprimitive2d.hxx,drawinglayer/primitive2d/gridprimitive2d.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/primitive2d/groupprimitive2d.hxx,drawinglayer/primitive2d/groupprimitive2d.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/primitive2d/helplineprimitive2d.hxx,drawinglayer/primitive2d/helplineprimitive2d.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/primitive2d/hiddengeometryprimitive2d.hxx,drawinglayer/primitive2d/hiddengeometryprimitive2d.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/primitive2d/invertprimitive2d.hxx,drawinglayer/primitive2d/invertprimitive2d.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/primitive2d/markerarrayprimitive2d.hxx,drawinglayer/primitive2d/markerarrayprimitive2d.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/primitive2d/maskprimitive2d.hxx,drawinglayer/primitive2d/maskprimitive2d.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/primitive2d/mediaprimitive2d.hxx,drawinglayer/primitive2d/mediaprimitive2d.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/primitive2d/metafileprimitive2d.hxx,drawinglayer/primitive2d/metafileprimitive2d.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/primitive2d/modifiedcolorprimitive2d.hxx,drawinglayer/primitive2d/modifiedcolorprimitive2d.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/primitive2d/pagepreviewprimitive2d.hxx,drawinglayer/primitive2d/pagepreviewprimitive2d.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/primitive2d/pointarrayprimitive2d.hxx,drawinglayer/primitive2d/pointarrayprimitive2d.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/primitive2d/polygonprimitive2d.hxx,drawinglayer/primitive2d/polygonprimitive2d.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/primitive2d/polypolygonprimitive2d.hxx,drawinglayer/primitive2d/polypolygonprimitive2d.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/primitive2d/primitivetools2d.hxx,drawinglayer/primitive2d/primitivetools2d.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/primitive2d/rendergraphicprimitive2d.hxx,drawinglayer/primitive2d/rendergraphicprimitive2d.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/primitive2d/sceneprimitive2d.hxx,drawinglayer/primitive2d/sceneprimitive2d.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/primitive2d/sdrdecompositiontools2d.hxx,drawinglayer/primitive2d/sdrdecompositiontools2d.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/primitive2d/shadowprimitive2d.hxx,drawinglayer/primitive2d/shadowprimitive2d.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/primitive2d/structuretagprimitive2d.hxx,drawinglayer/primitive2d/structuretagprimitive2d.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/primitive2d/textdecoratedprimitive2d.hxx,drawinglayer/primitive2d/textdecoratedprimitive2d.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/primitive2d/texteffectprimitive2d.hxx,drawinglayer/primitive2d/texteffectprimitive2d.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/primitive2d/textenumsprimitive2d.hxx,drawinglayer/primitive2d/textenumsprimitive2d.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/primitive2d/texthierarchyprimitive2d.hxx,drawinglayer/primitive2d/texthierarchyprimitive2d.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/primitive2d/textlayoutdevice.hxx,drawinglayer/primitive2d/textlayoutdevice.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/primitive2d/textlineprimitive2d.hxx,drawinglayer/primitive2d/textlineprimitive2d.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/primitive2d/textprimitive2d.hxx,drawinglayer/primitive2d/textprimitive2d.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/primitive2d/textstrikeoutprimitive2d.hxx,drawinglayer/primitive2d/textstrikeoutprimitive2d.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/primitive2d/transformprimitive2d.hxx,drawinglayer/primitive2d/transformprimitive2d.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/primitive2d/transparenceprimitive2d.hxx,drawinglayer/primitive2d/transparenceprimitive2d.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/primitive2d/unifiedtransparenceprimitive2d.hxx,drawinglayer/primitive2d/unifiedtransparenceprimitive2d.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/primitive2d/wallpaperprimitive2d.hxx,drawinglayer/primitive2d/wallpaperprimitive2d.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/primitive2d/wrongspellprimitive2d.hxx,drawinglayer/primitive2d/wrongspellprimitive2d.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/primitive3d/baseprimitive3d.hxx,drawinglayer/primitive3d/baseprimitive3d.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/primitive3d/drawinglayer_primitivetypes3d.hxx,drawinglayer/primitive3d/drawinglayer_primitivetypes3d.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/primitive3d/groupprimitive3d.hxx,drawinglayer/primitive3d/groupprimitive3d.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/primitive3d/hatchtextureprimitive3d.hxx,drawinglayer/primitive3d/hatchtextureprimitive3d.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/primitive3d/hiddengeometryprimitive3d.hxx,drawinglayer/primitive3d/hiddengeometryprimitive3d.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/primitive3d/modifiedcolorprimitive3d.hxx,drawinglayer/primitive3d/modifiedcolorprimitive3d.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/primitive3d/polygonprimitive3d.hxx,drawinglayer/primitive3d/polygonprimitive3d.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/primitive3d/polygontubeprimitive3d.hxx,drawinglayer/primitive3d/polygontubeprimitive3d.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/primitive3d/polypolygonprimitive3d.hxx,drawinglayer/primitive3d/polypolygonprimitive3d.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/primitive3d/sdrcubeprimitive3d.hxx,drawinglayer/primitive3d/sdrcubeprimitive3d.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/primitive3d/sdrdecompositiontools3d.hxx,drawinglayer/primitive3d/sdrdecompositiontools3d.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/primitive3d/sdrextrudelathetools3d.hxx,drawinglayer/primitive3d/sdrextrudelathetools3d.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/primitive3d/sdrextrudeprimitive3d.hxx,drawinglayer/primitive3d/sdrextrudeprimitive3d.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/primitive3d/sdrlatheprimitive3d.hxx,drawinglayer/primitive3d/sdrlatheprimitive3d.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/primitive3d/sdrpolypolygonprimitive3d.hxx,drawinglayer/primitive3d/sdrpolypolygonprimitive3d.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/primitive3d/sdrprimitive3d.hxx,drawinglayer/primitive3d/sdrprimitive3d.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/primitive3d/sdrsphereprimitive3d.hxx,drawinglayer/primitive3d/sdrsphereprimitive3d.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/primitive3d/shadowprimitive3d.hxx,drawinglayer/primitive3d/shadowprimitive3d.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/primitive3d/textureprimitive3d.hxx,drawinglayer/primitive3d/textureprimitive3d.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/primitive3d/transformprimitive3d.hxx,drawinglayer/primitive3d/transformprimitive3d.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/processor2d/baseprocessor2d.hxx,drawinglayer/processor2d/baseprocessor2d.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/processor2d/canvasprocessor.hxx,drawinglayer/processor2d/canvasprocessor.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/processor2d/contourextractor2d.hxx,drawinglayer/processor2d/contourextractor2d.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/processor2d/hittestprocessor2d.hxx,drawinglayer/processor2d/hittestprocessor2d.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/processor2d/linegeometryextractor2d.hxx,drawinglayer/processor2d/linegeometryextractor2d.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/processor2d/textaspolygonextractor2d.hxx,drawinglayer/processor2d/textaspolygonextractor2d.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/processor2d/vclmetafileprocessor2d.hxx,drawinglayer/processor2d/vclmetafileprocessor2d.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/processor2d/vclpixelprocessor2d.hxx,drawinglayer/processor2d/vclpixelprocessor2d.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/processor2d/vclprocessor2d.hxx,drawinglayer/processor2d/vclprocessor2d.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/processor3d/baseprocessor3d.hxx,drawinglayer/processor3d/baseprocessor3d.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/processor3d/cutfindprocessor3d.hxx,drawinglayer/processor3d/cutfindprocessor3d.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/processor3d/defaultprocessor3d.hxx,drawinglayer/processor3d/defaultprocessor3d.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/processor3d/geometry2dextractor.hxx,drawinglayer/processor3d/geometry2dextractor.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/processor3d/shadow3dextractor.hxx,drawinglayer/processor3d/shadow3dextractor.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/processor3d/zbufferprocessor3d.hxx,drawinglayer/processor3d/zbufferprocessor3d.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/texture/texture3d.hxx,drawinglayer/texture/texture3d.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/texture/texture.hxx,drawinglayer/texture/texture.hxx))
-
-# vim: set noet sw=4 ts=4:
diff --git a/drawinglayer/inc/drawinglayer/animation/animationtiming.hxx b/drawinglayer/inc/drawinglayer/animation/animationtiming.hxx
deleted file mode 100644
index ff7b82d750..0000000000
--- a/drawinglayer/inc/drawinglayer/animation/animationtiming.hxx
+++ /dev/null
@@ -1,153 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_ANIMATION_ANIMATIONTIMING_HXX
-#define INCLUDED_DRAWINGLAYER_ANIMATION_ANIMATIONTIMING_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <sal/types.h>
-#include <vector>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace animation
- {
- //////////////////////////////////////////////////////////////////////////////
-
- class DRAWINGLAYER_DLLPUBLIC AnimationEntry
- {
- private:
- AnimationEntry(const AnimationEntry&);
- AnimationEntry& operator=(const AnimationEntry& rCandidate);
-
- public:
- AnimationEntry();
- virtual ~AnimationEntry();
- virtual AnimationEntry* clone() const = 0;
-
- virtual bool operator==(const AnimationEntry& rCandidate) const = 0;
- virtual double getDuration() const = 0;
- virtual double getStateAtTime(double fTime) const = 0;
- virtual double getNextEventTime(double fTime) const = 0;
- };
-
- //////////////////////////////////////////////////////////////////////////////
-
- class DRAWINGLAYER_DLLPUBLIC AnimationEntryFixed : public AnimationEntry
- {
- protected:
- double mfDuration;
- double mfState;
-
- public:
- AnimationEntryFixed(double fDuration, double fState = 0.0);
- virtual ~AnimationEntryFixed();
- virtual AnimationEntry* clone() const;
-
- virtual bool operator==(const AnimationEntry& rCandidate) const;
- virtual double getDuration() const;
- virtual double getStateAtTime(double fTime) const;
- virtual double getNextEventTime(double fTime) const;
- };
-
- //////////////////////////////////////////////////////////////////////////////
-
- class DRAWINGLAYER_DLLPUBLIC AnimationEntryLinear : public AnimationEntry
- {
- protected:
- double mfDuration;
- double mfFrequency;
- double mfStart;
- double mfStop;
-
- public:
- AnimationEntryLinear(double fDuration, double fFrequency = 250.0, double fStart = 0.0, double fStop = 1.0);
- virtual ~AnimationEntryLinear();
- virtual AnimationEntry* clone() const;
-
- virtual bool operator==(const AnimationEntry& rCandidate) const;
- virtual double getDuration() const;
- virtual double getStateAtTime(double fTime) const;
- virtual double getNextEventTime(double fTime) const;
- };
-
- //////////////////////////////////////////////////////////////////////////////
-
- class DRAWINGLAYER_DLLPUBLIC AnimationEntryList : public AnimationEntry
- {
- protected:
- double mfDuration;
- ::std::vector< AnimationEntry* > maEntries;
-
- // helpers
- sal_uInt32 impGetIndexAtTime(double fTime, double &rfAddedTime) const;
-
- public:
- AnimationEntryList();
- virtual ~AnimationEntryList();
- virtual AnimationEntry* clone() const;
-
- virtual bool operator==(const AnimationEntry& rCandidate) const;
- void append(const AnimationEntry& rCandidate);
- virtual double getDuration() const;
- virtual double getStateAtTime(double fTime) const;
- virtual double getNextEventTime(double fTime) const;
- };
-
- //////////////////////////////////////////////////////////////////////////////
-
- class DRAWINGLAYER_DLLPUBLIC AnimationEntryLoop : public AnimationEntryList
- {
- protected:
- sal_uInt32 mnRepeat;
-
- public:
- AnimationEntryLoop(sal_uInt32 nRepeat = 0xffffffff);
- virtual ~AnimationEntryLoop();
- virtual AnimationEntry* clone() const;
-
- virtual bool operator==(const AnimationEntry& rCandidate) const;
- virtual double getDuration() const;
- virtual double getStateAtTime(double fTime) const;
- virtual double getNextEventTime(double fTime) const;
- };
-
- //////////////////////////////////////////////////////////////////////////////
- } // end of namespace animation
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif //INCLUDED_DRAWINGLAYER_ANIMATION_ANIMATIONTIMING_HXX
-
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/attribute/fillbitmapattribute.hxx b/drawinglayer/inc/drawinglayer/attribute/fillbitmapattribute.hxx
deleted file mode 100644
index b36a524a8e..0000000000
--- a/drawinglayer/inc/drawinglayer/attribute/fillbitmapattribute.hxx
+++ /dev/null
@@ -1,94 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_ATTRIBUTE_FILLBITMAPATTRIBUTE_HXX
-#define INCLUDED_DRAWINGLAYER_ATTRIBUTE_FILLBITMAPATTRIBUTE_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <sal/types.h>
-
-//////////////////////////////////////////////////////////////////////////////
-// predefines
-
-class BitmapEx;
-
-namespace basegfx {
- class B2DPoint;
- class B2DVector;
-}
-
-namespace drawinglayer { namespace attribute {
- class ImpFillBitmapAttribute;
-}}
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace attribute
- {
- class DRAWINGLAYER_DLLPUBLIC FillBitmapAttribute
- {
- private:
- ImpFillBitmapAttribute* mpFillBitmapAttribute;
-
- public:
- /// constructors/assignmentoperator/destructor
- FillBitmapAttribute(
- const BitmapEx& rBitmapEx,
- const basegfx::B2DPoint& rTopLeft,
- const basegfx::B2DVector& rSize,
- bool bTiling);
- FillBitmapAttribute();
- FillBitmapAttribute(const FillBitmapAttribute& rCandidate);
- FillBitmapAttribute& operator=(const FillBitmapAttribute& rCandidate);
- ~FillBitmapAttribute();
-
- // checks if the incarnation is default constructed
- bool isDefault() const;
-
- // compare operator
- bool operator==(const FillBitmapAttribute& rCandidate) const;
-
- // data read access
- const BitmapEx& getBitmapEx() const;
- const basegfx::B2DPoint& getTopLeft() const;
- const basegfx::B2DVector& getSize() const;
- bool getTiling() const;
- };
- } // end of namespace attribute
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif //INCLUDED_DRAWINGLAYER_ATTRIBUTE_FILLBITMAPATTRIBUTE_HXX
-
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/attribute/fillgradientattribute.hxx b/drawinglayer/inc/drawinglayer/attribute/fillgradientattribute.hxx
deleted file mode 100644
index e0fdf7453f..0000000000
--- a/drawinglayer/inc/drawinglayer/attribute/fillgradientattribute.hxx
+++ /dev/null
@@ -1,120 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * The Contents of this file are made available subject to
- * the terms of GNU Lesser General Public License Version 2.1.
- *
- *
- * GNU Lesser General Public License Version 2.1
- * =============================================
- * Copyright 2005 by Sun Microsystems, Inc.
- * 901 San Antonio Road, Palo Alto, CA 94303, USA
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License version 2.1, as published by the Free Software Foundation.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_ATTRIBUTE_FILLGRADIENTATTRIBUTE_HXX
-#define INCLUDED_DRAWINGLAYER_ATTRIBUTE_FILLGRADIENTATTRIBUTE_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <sal/types.h>
-
-//////////////////////////////////////////////////////////////////////////////
-// predefines
-
-namespace basegfx {
- class BColor;
-}
-
-namespace drawinglayer { namespace attribute {
- class ImpFillGradientAttribute;
-}}
-
-//////////////////////////////////////////////////////////////////////////////
-// declarations
-
-namespace drawinglayer
-{
- namespace attribute
- {
- enum GradientStyle
- {
- GRADIENTSTYLE_LINEAR,
- GRADIENTSTYLE_AXIAL,
- GRADIENTSTYLE_RADIAL,
- GRADIENTSTYLE_ELLIPTICAL,
- GRADIENTSTYLE_SQUARE,
- GRADIENTSTYLE_RECT
- };
- } // end of namespace attribute
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace attribute
- {
- class DRAWINGLAYER_DLLPUBLIC FillGradientAttribute
- {
- private:
- ImpFillGradientAttribute* mpFillGradientAttribute;
-
- public:
- /// constructors/assignmentoperator/destructor
- FillGradientAttribute(
- GradientStyle eStyle,
- double fBorder,
- double fOffsetX,
- double fOffsetY,
- double fAngle,
- const basegfx::BColor& rStartColor,
- const basegfx::BColor& rEndColor,
- sal_uInt16 nSteps);
- FillGradientAttribute();
- FillGradientAttribute(const FillGradientAttribute& rCandidate);
- FillGradientAttribute& operator=(const FillGradientAttribute& rCandidate);
- ~FillGradientAttribute();
-
- // checks if the incarnation is default constructed
- bool isDefault() const;
-
- // compare operator
- bool operator==(const FillGradientAttribute& rCandidate) const;
-
- // data read access
- GradientStyle getStyle() const;
- double getBorder() const;
- double getOffsetX() const;
- double getOffsetY() const;
- double getAngle() const;
- const basegfx::BColor& getStartColor() const;
- const basegfx::BColor& getEndColor() const;
- sal_uInt16 getSteps() const;
- };
- } // end of namespace attribute
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif //INCLUDED_DRAWINGLAYER_ATTRIBUTE_FILLGRADIENTATTRIBUTE_HXX
-
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/attribute/fillhatchattribute.hxx b/drawinglayer/inc/drawinglayer/attribute/fillhatchattribute.hxx
deleted file mode 100644
index a05b19ad8a..0000000000
--- a/drawinglayer/inc/drawinglayer/attribute/fillhatchattribute.hxx
+++ /dev/null
@@ -1,111 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * The Contents of this file are made available subject to
- * the terms of GNU Lesser General Public License Version 2.1.
- *
- *
- * GNU Lesser General Public License Version 2.1
- * =============================================
- * Copyright 2005 by Sun Microsystems, Inc.
- * 901 San Antonio Road, Palo Alto, CA 94303, USA
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License version 2.1, as published by the Free Software Foundation.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_ATTRIBUTE_FILLHATCHATTRIBUTE_HXX
-#define INCLUDED_DRAWINGLAYER_ATTRIBUTE_FILLHATCHATTRIBUTE_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <sal/types.h>
-
-//////////////////////////////////////////////////////////////////////////////
-// predefines
-
-namespace basegfx {
- class BColor;
-}
-
-namespace drawinglayer { namespace attribute {
- class ImpFillHatchAttribute;
-}}
-
-//////////////////////////////////////////////////////////////////////////////
-// declarations
-
-namespace drawinglayer
-{
- namespace attribute
- {
- enum HatchStyle
- {
- HATCHSTYLE_SINGLE,
- HATCHSTYLE_DOUBLE,
- HATCHSTYLE_TRIPLE
- };
- } // end of namespace attribute
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace attribute
- {
- class DRAWINGLAYER_DLLPUBLIC FillHatchAttribute
- {
- private:
- ImpFillHatchAttribute* mpFillHatchAttribute;
-
- public:
- /// constructors/assignmentoperator/destructor
- FillHatchAttribute(
- HatchStyle eStyle,
- double fDistance,
- double fAngle,
- const basegfx::BColor& rColor,
- bool bFillBackground);
- FillHatchAttribute();
- FillHatchAttribute(const FillHatchAttribute& rCandidate);
- FillHatchAttribute& operator=(const FillHatchAttribute& rCandidate);
- ~FillHatchAttribute();
-
- // checks if the incarnation is default constructed
- bool isDefault() const;
-
- // compare operator
- bool operator==(const FillHatchAttribute& rCandidate) const;
-
- // data read access
- HatchStyle getStyle() const;
- double getDistance() const;
- double getAngle() const;
- const basegfx::BColor& getColor() const;
- bool isFillBackground() const;
- };
- } // end of namespace attribute
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif //INCLUDED_DRAWINGLAYER_ATTRIBUTE_FILLHATCHATTRIBUTE_HXX
-
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/attribute/fontattribute.hxx b/drawinglayer/inc/drawinglayer/attribute/fontattribute.hxx
deleted file mode 100644
index e7171adc9b..0000000000
--- a/drawinglayer/inc/drawinglayer/attribute/fontattribute.hxx
+++ /dev/null
@@ -1,107 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_ATTRIBUTE_FONTATTRIBUTE_HXX
-#define INCLUDED_DRAWINGLAYER_ATTRIBUTE_FONTATTRIBUTE_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <sal/types.h>
-
-//////////////////////////////////////////////////////////////////////////////
-// predefines
-
-class String;
-
-namespace drawinglayer { namespace attribute {
- class ImpFontAttribute;
-}}
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace attribute
- {
- /** FontAttribute class
-
- This attribute class is able to hold all parameters needed/used
- to completely define the parametrisation of a text portion.
- */
- class DRAWINGLAYER_DLLPUBLIC FontAttribute
- {
- private:
- ImpFontAttribute* mpFontAttribute;
-
- public:
- /// constructors/assignmentoperator/destructor
- /// TODO: pair kerning and CJK kerning
- FontAttribute(
- const String& rFamilyName,
- const String& rStyleName,
- sal_uInt16 nWeight,
- bool bSymbol = false,
- bool bVertical = false,
- bool bItalic = false,
- bool bMonospaced = false,
- bool bOutline = false,
- bool bRTL = false,
- bool bBiDiStrong = false);
- FontAttribute();
- FontAttribute(const FontAttribute& rCandidate);
- FontAttribute& operator=(const FontAttribute& rCandidate);
- ~FontAttribute();
-
- // checks if the incarnation is default constructed
- bool isDefault() const;
-
- // compare operator
- bool operator==(const FontAttribute& rCandidate) const;
-
- /// data read access
- const String& getFamilyName() const;
- const String& getStyleName() const;
- sal_uInt16 getWeight() const;
- bool getSymbol() const;
- bool getVertical() const;
- bool getItalic() const;
- bool getOutline() const;
- bool getRTL() const;
- bool getBiDiStrong() const;
- bool getMonospaced() const;
- };
- } // end of namespace attribute
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif //INCLUDED_DRAWINGLAYER_ATTRIBUTE_FONTATTRIBUTE_HXX
-
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/attribute/lineattribute.hxx b/drawinglayer/inc/drawinglayer/attribute/lineattribute.hxx
deleted file mode 100644
index a9ec162b84..0000000000
--- a/drawinglayer/inc/drawinglayer/attribute/lineattribute.hxx
+++ /dev/null
@@ -1,89 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_ATTRIBUTE_LINEATTRIBUTE_HXX
-#define INCLUDED_DRAWINGLAYER_ATTRIBUTE_LINEATTRIBUTE_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <basegfx/vector/b2enums.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-// predefines
-
-namespace basegfx {
- class BColor;
-}
-
-namespace drawinglayer { namespace attribute {
- class ImpLineAttribute;
-}}
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace attribute
- {
- class DRAWINGLAYER_DLLPUBLIC LineAttribute
- {
- private:
- ImpLineAttribute* mpLineAttribute;
-
- public:
- /// constructors/assignmentoperator/destructor
- LineAttribute(
- const basegfx::BColor& rColor,
- double fWidth = 0.0,
- basegfx::B2DLineJoin aB2DLineJoin = basegfx::B2DLINEJOIN_ROUND);
- LineAttribute();
- LineAttribute(const LineAttribute& rCandidate);
- LineAttribute& operator=(const LineAttribute& rCandidate);
- ~LineAttribute();
-
- // checks if the incarnation is default constructed
- bool isDefault() const;
-
- // compare operator
- bool operator==(const LineAttribute& rCandidate) const;
-
- // data read access
- const basegfx::BColor& getColor() const;
- double getWidth() const;
- basegfx::B2DLineJoin getLineJoin() const;
- };
- } // end of namespace attribute
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif //INCLUDED_DRAWINGLAYER_ATTRIBUTE_LINEATTRIBUTE_HXX
-
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/attribute/linestartendattribute.hxx b/drawinglayer/inc/drawinglayer/attribute/linestartendattribute.hxx
deleted file mode 100644
index a722489979..0000000000
--- a/drawinglayer/inc/drawinglayer/attribute/linestartendattribute.hxx
+++ /dev/null
@@ -1,90 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_ATTRIBUTE_LINESTARTENDATTRIBUTE_HXX
-#define INCLUDED_DRAWINGLAYER_ATTRIBUTE_LINESTARTENDATTRIBUTE_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <sal/types.h>
-
-//////////////////////////////////////////////////////////////////////////////
-// predefines
-
-namespace basegfx {
- class B2DPolyPolygon;
-}
-
-namespace drawinglayer { namespace attribute {
- class ImpLineStartEndAttribute;
-}}
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace attribute
- {
- class DRAWINGLAYER_DLLPUBLIC LineStartEndAttribute
- {
- private:
- ImpLineStartEndAttribute* mpLineStartEndAttribute;
-
- public:
- /// constructors/assignmentoperator/destructor
- LineStartEndAttribute(
- double fWidth,
- const basegfx::B2DPolyPolygon& rPolyPolygon,
- bool bCentered);
- LineStartEndAttribute();
- LineStartEndAttribute(const LineStartEndAttribute& rCandidate);
- LineStartEndAttribute& operator=(const LineStartEndAttribute& rCandidate);
- ~LineStartEndAttribute();
-
- // checks if the incarnation is default constructed
- bool isDefault() const;
-
- // compare operator
- bool operator==(const LineStartEndAttribute& rCandidate) const;
-
- // data read access
- double getWidth() const;
- const basegfx::B2DPolyPolygon& getB2DPolyPolygon() const;
- bool isCentered() const;
- bool isActive() const;
- };
- } // end of namespace attribute
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif //INCLUDED_DRAWINGLAYER_ATTRIBUTE_LINESTARTENDATTRIBUTE_HXX
-
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/attribute/materialattribute3d.hxx b/drawinglayer/inc/drawinglayer/attribute/materialattribute3d.hxx
deleted file mode 100644
index 7b10c173e3..0000000000
--- a/drawinglayer/inc/drawinglayer/attribute/materialattribute3d.hxx
+++ /dev/null
@@ -1,94 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_ATTRIBUTE_MATERIALATTRIBUTE3D_HXX
-#define INCLUDED_DRAWINGLAYER_ATTRIBUTE_MATERIALATTRIBUTE3D_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <sal/types.h>
-
-//////////////////////////////////////////////////////////////////////////////
-// predefines
-
-namespace drawinglayer { namespace attribute {
- class ImpMaterialAttribute3D;
-}}
-
-namespace basegfx {
- class BColor;
-}
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace attribute
- {
- class DRAWINGLAYER_DLLPUBLIC MaterialAttribute3D
- {
- private:
- ImpMaterialAttribute3D* mpMaterialAttribute3D;
-
- public:
- // constructors/destructor
- MaterialAttribute3D(
- const basegfx::BColor& rColor,
- const basegfx::BColor& rSpecular,
- const basegfx::BColor& rEmission,
- sal_uInt16 nSpecularIntensity);
- MaterialAttribute3D(const basegfx::BColor& rColor);
- MaterialAttribute3D();
- MaterialAttribute3D(const MaterialAttribute3D& rCandidate);
- ~MaterialAttribute3D();
-
- // assignment operator
- MaterialAttribute3D& operator=(const MaterialAttribute3D& rCandidate);
-
- // checks if the incarnation is default constructed
- bool isDefault() const;
-
- // compare operator
- bool operator==(const MaterialAttribute3D& rCandidate) const;
-
- // data read access
- const basegfx::BColor& getColor() const;
- const basegfx::BColor& getSpecular() const;
- const basegfx::BColor& getEmission() const;
- sal_uInt16 getSpecularIntensity() const;
- };
- } // end of namespace attribute
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif //INCLUDED_DRAWINGLAYER_ATTRIBUTE_MATERIALATTRIBUTE3D_HXX
-
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/attribute/sdrallattribute3d.hxx b/drawinglayer/inc/drawinglayer/attribute/sdrallattribute3d.hxx
deleted file mode 100644
index be4a9c69de..0000000000
--- a/drawinglayer/inc/drawinglayer/attribute/sdrallattribute3d.hxx
+++ /dev/null
@@ -1,91 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_ATTRIBUTE_SDRALLATTRIBUTE3D_HXX
-#define INCLUDED_DRAWINGLAYER_ATTRIBUTE_SDRALLATTRIBUTE3D_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <sal/types.h>
-#include <drawinglayer/attribute/sdrlineattribute.hxx>
-#include <drawinglayer/attribute/sdrfillattribute.hxx>
-#include <drawinglayer/attribute/sdrlinestartendattribute.hxx>
-#include <drawinglayer/attribute/sdrshadowattribute.hxx>
-#include <drawinglayer/attribute/fillgradientattribute.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-// predefines
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace attribute
- {
- class DRAWINGLAYER_DLLPUBLIC SdrLineFillShadowAttribute3D
- {
- private:
- const SdrLineAttribute maLine;
- const SdrFillAttribute maFill;
- const SdrLineStartEndAttribute maLineStartEnd;
- const SdrShadowAttribute maShadow;
- const FillGradientAttribute maFillFloatTransGradient;
-
- public:
- /// constructors/assignmentoperator/destructor
- SdrLineFillShadowAttribute3D(
- const SdrLineAttribute& rLine,
- const SdrFillAttribute& rFill,
- const SdrLineStartEndAttribute& rLineStartEnd,
- const SdrShadowAttribute& rShadow,
- const FillGradientAttribute& rFillFloatTransGradient);
- SdrLineFillShadowAttribute3D();
-
- // checks if the incarnation is default constructed
- bool isDefault() const;
-
- // compare operator
- bool operator==(const SdrLineFillShadowAttribute3D& rCandidate) const;
-
- // data read access
- const SdrLineAttribute& getLine() const { return maLine; }
- const SdrFillAttribute& getFill() const { return maFill; }
- const SdrLineStartEndAttribute& getLineStartEnd() const { return maLineStartEnd; }
- const SdrShadowAttribute& getShadow() const { return maShadow; }
- const FillGradientAttribute& getFillFloatTransGradient() const { return maFillFloatTransGradient; }
- };
- } // end of namespace overlay
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif // INCLUDED_DRAWINGLAYER_ATTRIBUTE_SDRALLATTRIBUTE3D_HXX
-
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/attribute/sdrfillattribute.hxx b/drawinglayer/inc/drawinglayer/attribute/sdrfillattribute.hxx
deleted file mode 100644
index 008dbabe72..0000000000
--- a/drawinglayer/inc/drawinglayer/attribute/sdrfillattribute.hxx
+++ /dev/null
@@ -1,98 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * The Contents of this file are made available subject to
- * the terms of GNU Lesser General Public License Version 2.1.
- *
- *
- * GNU Lesser General Public License Version 2.1
- * =============================================
- * Copyright 2005 by Sun Microsystems, Inc.
- * 901 San Antonio Road, Palo Alto, CA 94303, USA
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License version 2.1, as published by the Free Software Foundation.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_ATTRIBUTE_SDRFILLATTRIBUTE_HXX
-#define INCLUDED_DRAWINGLAYER_ATTRIBUTE_SDRFILLATTRIBUTE_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <sal/types.h>
-
-//////////////////////////////////////////////////////////////////////////////
-// predefines
-
-namespace basegfx {
- class BColor;
-}
-
-namespace drawinglayer { namespace attribute {
- class ImpSdrFillAttribute;
- class FillGradientAttribute;
- class FillHatchAttribute;
- class SdrFillBitmapAttribute;
-}}
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace attribute
- {
- class DRAWINGLAYER_DLLPUBLIC SdrFillAttribute
- {
- private:
- ImpSdrFillAttribute* mpSdrFillAttribute;
-
- public:
- /// constructors/assignmentoperator/destructor
- SdrFillAttribute(
- double fTransparence,
- const basegfx::BColor& rColor,
- const FillGradientAttribute& rGradient,
- const FillHatchAttribute& rHatch,
- const SdrFillBitmapAttribute& rBitmap);
- SdrFillAttribute();
- SdrFillAttribute(const SdrFillAttribute& rCandidate);
- SdrFillAttribute& operator=(const SdrFillAttribute& rCandidate);
- ~SdrFillAttribute();
-
- // checks if the incarnation is default constructed
- bool isDefault() const;
-
- // compare operator
- bool operator==(const SdrFillAttribute& rCandidate) const;
-
- // data read access
- double getTransparence() const;
- const basegfx::BColor& getColor() const;
- const FillGradientAttribute& getGradient() const;
- const FillHatchAttribute& getHatch() const;
- const SdrFillBitmapAttribute& getBitmap() const;
- };
- } // end of namespace attribute
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif //INCLUDED_DRAWINGLAYER_ATTRIBUTE_SDRFILLATTRIBUTE_HXX
-
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/attribute/sdrfillbitmapattribute.hxx b/drawinglayer/inc/drawinglayer/attribute/sdrfillbitmapattribute.hxx
deleted file mode 100644
index 22ee52943a..0000000000
--- a/drawinglayer/inc/drawinglayer/attribute/sdrfillbitmapattribute.hxx
+++ /dev/null
@@ -1,106 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_ATTRIBUTE_SDRFILLBITMAPATTRIBUTE_HXX
-#define INCLUDED_DRAWINGLAYER_ATTRIBUTE_SDRFILLBITMAPATTRIBUTE_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <sal/types.h>
-
-//////////////////////////////////////////////////////////////////////////////
-// predefines
-
-class Bitmap;
-
-namespace basegfx {
- class B2DRange;
- class B2DVector;
-}
-
-namespace drawinglayer { namespace attribute {
- class FillBitmapAttribute;
- class ImpSdrFillBitmapAttribute;
-}}
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace attribute
- {
- class DRAWINGLAYER_DLLPUBLIC SdrFillBitmapAttribute
- {
- private:
- ImpSdrFillBitmapAttribute* mpSdrFillBitmapAttribute;
-
- public:
- /// constructors/assignmentoperator/destructor
- SdrFillBitmapAttribute(
- const Bitmap& rBitmap,
- const basegfx::B2DVector& rSize,
- const basegfx::B2DVector& rOffset,
- const basegfx::B2DVector& rOffsetPosition,
- const basegfx::B2DVector& rRectPoint,
- bool bTiling,
- bool bStretch,
- bool bLogSize);
- SdrFillBitmapAttribute();
- SdrFillBitmapAttribute(const SdrFillBitmapAttribute& rCandidate);
- SdrFillBitmapAttribute& operator=(const SdrFillBitmapAttribute& rCandidate);
- ~SdrFillBitmapAttribute();
-
- // checks if the incarnation is default constructed
- bool isDefault() const;
-
- // compare operator
- bool operator==(const SdrFillBitmapAttribute& rCandidate) const;
-
- // data read access
- const Bitmap& getBitmap() const;
- const basegfx::B2DVector& getSize() const;
- const basegfx::B2DVector& getOffset() const;
- const basegfx::B2DVector& getOffsetPosition() const;
- const basegfx::B2DVector& getRectPoint() const;
- bool getTiling() const;
- bool getStretch() const;
- bool getLogSize() const;
-
- // FillBitmapAttribute generator
- FillBitmapAttribute getFillBitmapAttribute(const basegfx::B2DRange& rRange) const;
- };
- } // end of namespace attribute
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif //INCLUDED_DRAWINGLAYER_ATTRIBUTE_SDRFILLBITMAPATTRIBUTE_HXX
-
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/attribute/sdrlightattribute3d.hxx b/drawinglayer/inc/drawinglayer/attribute/sdrlightattribute3d.hxx
deleted file mode 100644
index 6cb575c327..0000000000
--- a/drawinglayer/inc/drawinglayer/attribute/sdrlightattribute3d.hxx
+++ /dev/null
@@ -1,95 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * The Contents of this file are made available subject to
- * the terms of GNU Lesser General Public License Version 2.1.
- *
- *
- * GNU Lesser General Public License Version 2.1
- * =============================================
- * Copyright 2005 by Sun Microsystems, Inc.
- * 901 San Antonio Road, Palo Alto, CA 94303, USA
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License version 2.1, as published by the Free Software Foundation.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_ATTRIBUTE_SDRLIGHTATTRIBUTE3D_HXX
-#define INCLUDED_DRAWINGLAYER_ATTRIBUTE_SDRLIGHTATTRIBUTE3D_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <sal/types.h>
-
-//////////////////////////////////////////////////////////////////////////////
-// predefines
-
-namespace basegfx {
- class BColor;
- class B3DVector;
-}
-
-namespace drawinglayer { namespace attribute {
- class ImpSdr3DLightAttribute;
-}}
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace attribute
- {
- class DRAWINGLAYER_DLLPUBLIC Sdr3DLightAttribute
- {
- private:
- ImpSdr3DLightAttribute* mpSdr3DLightAttribute;
-
- public:
- // constructors/destructor
- Sdr3DLightAttribute(
- const basegfx::BColor& rColor,
- const basegfx::B3DVector& rDirection,
- bool bSpecular);
- Sdr3DLightAttribute(const basegfx::BColor& rColor);
- Sdr3DLightAttribute();
- Sdr3DLightAttribute(const Sdr3DLightAttribute& rCandidate);
- ~Sdr3DLightAttribute();
-
- // assignment operator
- Sdr3DLightAttribute& operator=(const Sdr3DLightAttribute& rCandidate);
-
- // checks if the incarnation is default constructed
- bool isDefault() const;
-
- // compare operator
- bool operator==(const Sdr3DLightAttribute& rCandidate) const;
-
- // data read access
- const basegfx::BColor& getColor() const;
- const basegfx::B3DVector& getDirection() const;
- bool getSpecular() const;
- };
- } // end of namespace attribute
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif //INCLUDED_DRAWINGLAYER_ATTRIBUTE_SDRLIGHTATTRIBUTE3D_HXX
-
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/attribute/sdrlightingattribute3d.hxx b/drawinglayer/inc/drawinglayer/attribute/sdrlightingattribute3d.hxx
deleted file mode 100644
index d704d7d0ee..0000000000
--- a/drawinglayer/inc/drawinglayer/attribute/sdrlightingattribute3d.hxx
+++ /dev/null
@@ -1,98 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * The Contents of this file are made available subject to
- * the terms of GNU Lesser General Public License Version 2.1.
- *
- *
- * GNU Lesser General Public License Version 2.1
- * =============================================
- * Copyright 2005 by Sun Microsystems, Inc.
- * 901 San Antonio Road, Palo Alto, CA 94303, USA
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License version 2.1, as published by the Free Software Foundation.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_ATTRIBUTE_SDRLIGHTINGATTRIBUTE3D_HXX
-#define INCLUDED_DRAWINGLAYER_ATTRIBUTE_SDRLIGHTINGATTRIBUTE3D_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <sal/types.h>
-#include <vector>
-
-//////////////////////////////////////////////////////////////////////////////
-// predefines
-
-namespace basegfx {
- class BColor;
- class B3DVector;
-}
-
-namespace drawinglayer { namespace attribute {
- class ImpSdrLightingAttribute;
- class Sdr3DLightAttribute;
-}}
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace attribute
- {
- class DRAWINGLAYER_DLLPUBLIC SdrLightingAttribute
- {
- private:
- ImpSdrLightingAttribute* mpSdrLightingAttribute;
-
- public:
- /// constructors/assignmentoperator/destructor
- SdrLightingAttribute(
- const basegfx::BColor& rAmbientLight,
- const ::std::vector< Sdr3DLightAttribute >& rLightVector);
- SdrLightingAttribute();
- SdrLightingAttribute(const SdrLightingAttribute& rCandidate);
- SdrLightingAttribute& operator=(const SdrLightingAttribute& rCandidate);
- ~SdrLightingAttribute();
-
- // checks if the incarnation is default constructed
- bool isDefault() const;
-
- // compare operator
- bool operator==(const SdrLightingAttribute& rCandidate) const;
-
- // data read access
- const basegfx::BColor& getAmbientLight() const;
- const ::std::vector< Sdr3DLightAttribute >& getLightVector() const;
-
- // color model solver
- basegfx::BColor solveColorModel(
- const basegfx::B3DVector& rNormalInEyeCoordinates,
- const basegfx::BColor& rColor, const basegfx::BColor& rSpecular,
- const basegfx::BColor& rEmission, sal_uInt16 nSpecularIntensity) const;
- };
- } // end of namespace attribute
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif //INCLUDED_DRAWINGLAYER_ATTRIBUTE_SDRLIGHTINGATTRIBUTE3D_HXX
-
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/attribute/sdrlineattribute.hxx b/drawinglayer/inc/drawinglayer/attribute/sdrlineattribute.hxx
deleted file mode 100644
index 6662a151e5..0000000000
--- a/drawinglayer/inc/drawinglayer/attribute/sdrlineattribute.hxx
+++ /dev/null
@@ -1,103 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * The Contents of this file are made available subject to
- * the terms of GNU Lesser General Public License Version 2.1.
- *
- *
- * GNU Lesser General Public License Version 2.1
- * =============================================
- * Copyright 2005 by Sun Microsystems, Inc.
- * 901 San Antonio Road, Palo Alto, CA 94303, USA
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License version 2.1, as published by the Free Software Foundation.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_ATTRIBUTE_SDRLINEATTRIBUTE_HXX
-#define INCLUDED_DRAWINGLAYER_ATTRIBUTE_SDRLINEATTRIBUTE_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <sal/types.h>
-#include <basegfx/vector/b2enums.hxx>
-#include <vector>
-
-//////////////////////////////////////////////////////////////////////////////
-// predefines
-
-namespace basegfx {
- class BColor;
-}
-
-namespace drawinglayer { namespace attribute {
- class ImpSdrLineAttribute;
-}}
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace attribute
- {
- class DRAWINGLAYER_DLLPUBLIC SdrLineAttribute
- {
- private:
- ImpSdrLineAttribute* mpSdrLineAttribute;
-
- public:
- /// constructors/assignmentoperator/destructor
- SdrLineAttribute(
- basegfx::B2DLineJoin eJoin,
- double fWidth,
- double fTransparence,
- const basegfx::BColor& rColor,
- const ::std::vector< double >& rDotDashArray,
- double fFullDotDashLen);
- SdrLineAttribute(const basegfx::BColor& rColor);
- SdrLineAttribute();
- SdrLineAttribute(const SdrLineAttribute& rCandidate);
- SdrLineAttribute& operator=(const SdrLineAttribute& rCandidate);
- ~SdrLineAttribute();
-
- // checks if the incarnation is default constructed
- bool isDefault() const;
-
- // compare operator
- bool operator==(const SdrLineAttribute& rCandidate) const;
-
- // data access
- basegfx::B2DLineJoin getJoin() const;
- double getWidth() const;
- double getTransparence() const;
- const basegfx::BColor& getColor() const;
- const ::std::vector< double >& getDotDashArray() const;
- double getFullDotDashLen() const;
-
- // bool access
- bool isDashed() const;
- };
- } // end of namespace attribute
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif //INCLUDED_DRAWINGLAYER_ATTRIBUTE_SDRLINEATTRIBUTE_HXX
-
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/attribute/sdrlinestartendattribute.hxx b/drawinglayer/inc/drawinglayer/attribute/sdrlinestartendattribute.hxx
deleted file mode 100644
index aae7a419b5..0000000000
--- a/drawinglayer/inc/drawinglayer/attribute/sdrlinestartendattribute.hxx
+++ /dev/null
@@ -1,101 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * The Contents of this file are made available subject to
- * the terms of GNU Lesser General Public License Version 2.1.
- *
- *
- * GNU Lesser General Public License Version 2.1
- * =============================================
- * Copyright 2005 by Sun Microsystems, Inc.
- * 901 San Antonio Road, Palo Alto, CA 94303, USA
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License version 2.1, as published by the Free Software Foundation.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_ATTRIBUTE_SDRLINESTARTENDATTRIBUTE_HXX
-#define INCLUDED_DRAWINGLAYER_ATTRIBUTE_SDRLINESTARTENDATTRIBUTE_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <sal/types.h>
-
-//////////////////////////////////////////////////////////////////////////////
-// predefines
-
-namespace basegfx {
- class B2DPolyPolygon;
-}
-
-namespace drawinglayer { namespace attribute {
- class ImpSdrLineStartEndAttribute;
-}}
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace attribute
- {
- class DRAWINGLAYER_DLLPUBLIC SdrLineStartEndAttribute
- {
- private:
- ImpSdrLineStartEndAttribute* mpSdrLineStartEndAttribute;
-
- public:
- /// constructors/assignmentoperator/destructor
- SdrLineStartEndAttribute(
- const basegfx::B2DPolyPolygon& rStartPolyPolygon,
- const basegfx::B2DPolyPolygon& rEndPolyPolygon,
- double fStartWidth,
- double fEndWidth,
- bool bStartActive,
- bool bEndActive,
- bool bStartCentered,
- bool bEndCentered);
- SdrLineStartEndAttribute();
- SdrLineStartEndAttribute(const SdrLineStartEndAttribute& rCandidate);
- SdrLineStartEndAttribute& operator=(const SdrLineStartEndAttribute& rCandidate);
- ~SdrLineStartEndAttribute();
-
- // checks if the incarnation is default constructed
- bool isDefault() const;
-
- // compare operator
- bool operator==(const SdrLineStartEndAttribute& rCandidate) const;
-
- // data read access
- const basegfx::B2DPolyPolygon& getStartPolyPolygon() const;
- const basegfx::B2DPolyPolygon& getEndPolyPolygon() const;
- double getStartWidth() const;
- double getEndWidth() const;
- bool isStartActive() const;
- bool isEndActive() const;
- bool isStartCentered() const;
- bool isEndCentered() const;
- };
- } // end of namespace attribute
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif //INCLUDED_DRAWINGLAYER_ATTRIBUTE_SDRLINESTARTENDATTRIBUTE_HXX
-
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/attribute/sdrobjectattribute3d.hxx b/drawinglayer/inc/drawinglayer/attribute/sdrobjectattribute3d.hxx
deleted file mode 100644
index 374efa08bf..0000000000
--- a/drawinglayer/inc/drawinglayer/attribute/sdrobjectattribute3d.hxx
+++ /dev/null
@@ -1,110 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * The Contents of this file are made available subject to
- * the terms of GNU Lesser General Public License Version 2.1.
- *
- *
- * GNU Lesser General Public License Version 2.1
- * =============================================
- * Copyright 2005 by Sun Microsystems, Inc.
- * 901 San Antonio Road, Palo Alto, CA 94303, USA
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License version 2.1, as published by the Free Software Foundation.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_ATTRIBUTE_SDROBJECTATTRIBUTE3D_HXX
-#define INCLUDED_DRAWINGLAYER_ATTRIBUTE_SDROBJECTATTRIBUTE3D_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <sal/types.h>
-#include <com/sun/star/drawing/NormalsKind.hpp>
-#include <com/sun/star/drawing/TextureProjectionMode.hpp>
-#include <com/sun/star/drawing/TextureKind2.hpp>
-#include <com/sun/star/drawing/TextureMode.hpp>
-
-//////////////////////////////////////////////////////////////////////////////
-// predefines
-
-namespace drawinglayer { namespace attribute {
- class ImpSdr3DObjectAttribute;
- class MaterialAttribute3D;
-}}
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace attribute
- {
- class DRAWINGLAYER_DLLPUBLIC Sdr3DObjectAttribute
- {
- private:
- ImpSdr3DObjectAttribute* mpSdr3DObjectAttribute;
-
- public:
- // constructors/destructor
- Sdr3DObjectAttribute(
- ::com::sun::star::drawing::NormalsKind aNormalsKind,
- ::com::sun::star::drawing::TextureProjectionMode aTextureProjectionX,
- ::com::sun::star::drawing::TextureProjectionMode aTextureProjectionY,
- ::com::sun::star::drawing::TextureKind2 aTextureKind,
- ::com::sun::star::drawing::TextureMode aTextureMode,
- const MaterialAttribute3D& rMaterial,
- bool bNormalsInvert,
- bool bDoubleSided,
- bool bShadow3D,
- bool bTextureFilter,
- bool bReducedLineGeometry);
- Sdr3DObjectAttribute();
- Sdr3DObjectAttribute(const Sdr3DObjectAttribute& rCandidate);
- ~Sdr3DObjectAttribute();
-
- // assignment operator
- Sdr3DObjectAttribute& operator=(const Sdr3DObjectAttribute& rCandidate);
-
- // checks if the incarnation is default constructed
- bool isDefault() const;
-
- // compare operator
- bool operator==(const Sdr3DObjectAttribute& rCandidate) const;
-
- // data read access
- ::com::sun::star::drawing::NormalsKind getNormalsKind() const;
- ::com::sun::star::drawing::TextureProjectionMode getTextureProjectionX() const;
- ::com::sun::star::drawing::TextureProjectionMode getTextureProjectionY() const;
- ::com::sun::star::drawing::TextureKind2 getTextureKind() const;
- ::com::sun::star::drawing::TextureMode getTextureMode() const;
- const MaterialAttribute3D& getMaterial() const;
- bool getNormalsInvert() const;
- bool getDoubleSided() const;
- bool getShadow3D() const;
- bool getTextureFilter() const;
- bool getReducedLineGeometry() const;
- };
- } // end of namespace attribute
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif //INCLUDED_DRAWINGLAYER_ATTRIBUTE_SDROBJECTATTRIBUTE3D_HXX
-
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/attribute/sdrsceneattribute3d.hxx b/drawinglayer/inc/drawinglayer/attribute/sdrsceneattribute3d.hxx
deleted file mode 100644
index 594b4c45de..0000000000
--- a/drawinglayer/inc/drawinglayer/attribute/sdrsceneattribute3d.hxx
+++ /dev/null
@@ -1,93 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * The Contents of this file are made available subject to
- * the terms of GNU Lesser General Public License Version 2.1.
- *
- *
- * GNU Lesser General Public License Version 2.1
- * =============================================
- * Copyright 2005 by Sun Microsystems, Inc.
- * 901 San Antonio Road, Palo Alto, CA 94303, USA
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License version 2.1, as published by the Free Software Foundation.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_ATTRIBUTE_SDRSCENEATTRIBUTE3D_HXX
-#define INCLUDED_DRAWINGLAYER_ATTRIBUTE_SDRSCENEATTRIBUTE3D_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <sal/types.h>
-#include <com/sun/star/drawing/ProjectionMode.hpp>
-#include <com/sun/star/drawing/ShadeMode.hpp>
-
-//////////////////////////////////////////////////////////////////////////////
-// predefines
-
-namespace drawinglayer { namespace attribute {
- class ImpSdrSceneAttribute;
-}}
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace attribute
- {
- class DRAWINGLAYER_DLLPUBLIC SdrSceneAttribute
- {
- private:
- ImpSdrSceneAttribute* mpSdrSceneAttribute;
-
- public:
- /// constructors/assignmentoperator/destructor
- SdrSceneAttribute(
- double fDistance,
- double fShadowSlant,
- ::com::sun::star::drawing::ProjectionMode aProjectionMode,
- ::com::sun::star::drawing::ShadeMode aShadeMode,
- bool bTwoSidedLighting);
- SdrSceneAttribute();
- SdrSceneAttribute(const SdrSceneAttribute& rCandidate);
- SdrSceneAttribute& operator=(const SdrSceneAttribute& rCandidate);
- ~SdrSceneAttribute();
-
- // checks if the incarnation is default constructed
- bool isDefault() const;
-
- // compare operator
- bool operator==(const SdrSceneAttribute& rCandidate) const;
-
- // data read access
- double getDistance() const;
- double getShadowSlant() const;
- ::com::sun::star::drawing::ProjectionMode getProjectionMode() const;
- ::com::sun::star::drawing::ShadeMode getShadeMode() const;
- bool getTwoSidedLighting() const;
- };
- } // end of namespace attribute
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif //INCLUDED_DRAWINGLAYER_ATTRIBUTE_SDRSCENEATTRIBUTE3D_HXX
-
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/attribute/sdrshadowattribute.hxx b/drawinglayer/inc/drawinglayer/attribute/sdrshadowattribute.hxx
deleted file mode 100644
index d98216ad6e..0000000000
--- a/drawinglayer/inc/drawinglayer/attribute/sdrshadowattribute.hxx
+++ /dev/null
@@ -1,92 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * The Contents of this file are made available subject to
- * the terms of GNU Lesser General Public License Version 2.1.
- *
- *
- * GNU Lesser General Public License Version 2.1
- * =============================================
- * Copyright 2005 by Sun Microsystems, Inc.
- * 901 San Antonio Road, Palo Alto, CA 94303, USA
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License version 2.1, as published by the Free Software Foundation.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_ATTRIBUTE_SDRSHADOWATTRIBUTE_HXX
-#define INCLUDED_DRAWINGLAYER_ATTRIBUTE_SDRSHADOWATTRIBUTE_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <sal/types.h>
-
-//////////////////////////////////////////////////////////////////////////////
-// predefines
-
-namespace basegfx {
- class BColor;
- class B2DVector;
-}
-
-namespace drawinglayer { namespace attribute {
- class ImpSdrShadowAttribute;
-}}
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace attribute
- {
- class DRAWINGLAYER_DLLPUBLIC SdrShadowAttribute
- {
- private:
- ImpSdrShadowAttribute* mpSdrShadowAttribute;
-
- public:
- /// constructors/assignmentoperator/destructor
- SdrShadowAttribute(
- const basegfx::B2DVector& rOffset,
- double fTransparence,
- const basegfx::BColor& rColor);
- SdrShadowAttribute();
- SdrShadowAttribute(const SdrShadowAttribute& rCandidate);
- SdrShadowAttribute& operator=(const SdrShadowAttribute& rCandidate);
- ~SdrShadowAttribute();
-
- // checks if the incarnation is default constructed
- bool isDefault() const;
-
- // compare operator
- bool operator==(const SdrShadowAttribute& rCandidate) const;
-
- // data access
- const basegfx::B2DVector& getOffset() const;
- double getTransparence() const;
- const basegfx::BColor& getColor() const;
- };
- } // end of namespace attribute
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif //INCLUDED_DRAWINGLAYER_ATTRIBUTE_SDRSHADOWATTRIBUTE_HXX
-
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/attribute/strokeattribute.hxx b/drawinglayer/inc/drawinglayer/attribute/strokeattribute.hxx
deleted file mode 100644
index 45b341875f..0000000000
--- a/drawinglayer/inc/drawinglayer/attribute/strokeattribute.hxx
+++ /dev/null
@@ -1,84 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_ATTRIBUTE_STROKEATTRIBUTE_HXX
-#define INCLUDED_DRAWINGLAYER_ATTRIBUTE_STROKEATTRIBUTE_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <sal/types.h>
-#include <vector>
-
-//////////////////////////////////////////////////////////////////////////////
-// predefines
-
-namespace drawinglayer { namespace attribute {
- class ImpStrokeAttribute;
-}}
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace attribute
- {
- class DRAWINGLAYER_DLLPUBLIC StrokeAttribute
- {
- private:
- ImpStrokeAttribute* mpStrokeAttribute;
-
- public:
- /// constructors/assignmentoperator/destructor
- StrokeAttribute(
- const ::std::vector< double >& rDotDashArray,
- double fFullDotDashLen = 0.0);
- StrokeAttribute();
- StrokeAttribute(const StrokeAttribute& rCandidate);
- StrokeAttribute& operator=(const StrokeAttribute& rCandidate);
- ~StrokeAttribute();
-
- // checks if the incarnation is default constructed
- bool isDefault() const;
-
- // compare operator
- bool operator==(const StrokeAttribute& rCandidate) const;
-
- // data read access
- const ::std::vector< double >& getDotDashArray() const;
- double getFullDotDashLen() const;
- };
- } // end of namespace attribute
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif //INCLUDED_DRAWINGLAYER_ATTRIBUTE_STROKEATTRIBUTE_HXX
-
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/drawinglayerdllapi.h b/drawinglayer/inc/drawinglayer/drawinglayerdllapi.h
deleted file mode 100644
index 8badcbe1fe..0000000000
--- a/drawinglayer/inc/drawinglayer/drawinglayerdllapi.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * Version: MPL 1.1 / GPLv3+ / LGPLv3+
- *
- * The contents of this file are subject to the Mozilla Public License Version
- * 1.1 (the "License"); you may not use this file except in compliance with
- * the License or as specified alternatively below. You may obtain a copy of
- * the License at http://www.mozilla.org/MPL/
- *
- * Software distributed under the License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
- * for the specific language governing rights and limitations under the
- * License.
- *
- * The Initial Developer of the Original Code is
- * David Tardon, Red Hat Inc. <dtardon@redhat.com>
- * Portions created by the Initial Developer are Copyright (C) 2010 the
- * Initial Developer. All Rights Reserved.
- *
- * Major Contributor(s):
- *
- * For minor contributions see the git repository.
- *
- * Alternatively, the contents of this file may be used under the terms of
- * either the GNU General Public License Version 3 or later (the "GPLv3+"), or
- * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
- * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
- * instead of those above.
- */
-
-#ifndef INCLUDED_DRAWINGLAYER_DRAWINGLAYERDLLAPI_H
-#define INCLUDED_DRAWINGLAYER_DRAWINGLAYERDLLAPI_H
-
-#include <sal/types.h>
-
-#if defined(DRAWINGLAYER_DLLIMPLEMENTATION)
-#define DRAWINGLAYER_DLLPUBLIC SAL_DLLPUBLIC_EXPORT
-#else
-#define DRAWINGLAYER_DLLPUBLIC SAL_DLLPUBLIC_IMPORT
-#endif
-#define DRAWINGLAYER_DLLPRIVATE SAL_DLLPRIVATE
-
-#endif
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/geometry/viewinformation2d.hxx b/drawinglayer/inc/drawinglayer/geometry/viewinformation2d.hxx
deleted file mode 100644
index ee0dff6602..0000000000
--- a/drawinglayer/inc/drawinglayer/geometry/viewinformation2d.hxx
+++ /dev/null
@@ -1,188 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_GEOMETRY_VIEWINFORMATION2D_HXX
-#define INCLUDED_DRAWINGLAYER_GEOMETRY_VIEWINFORMATION2D_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-// the solaris compiler defines 'sun' as '1'. To avoid that (and to allow
-// pre-declarations of com/sun/star namespace), include sal/config.h here
-// where sun is redefined as 'sun' (so i guess the problem is known).
-#include <sal/config.h>
-#include <com/sun/star/uno/Sequence.h>
-#include <com/sun/star/beans/PropertyValue.hpp>
-#include <com/sun/star/drawing/XDrawPage.hpp>
-
-//////////////////////////////////////////////////////////////////////////////
-// predefines
-
-namespace drawinglayer { namespace geometry {
- class ImpViewInformation2D;
-}}
-
-namespace basegfx {
- class B2DHomMatrix;
- class B2DRange;
-}
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace geometry
- {
- /** ViewInformation2D class
-
- This class holds all view-relevant information for a 2d geometry. It works
- together with UNO API definitions and supports holding a sequence of PropertyValues.
- The most used data is for convenience offered directly using basegfx tooling classes.
- It is an implementation to support the sequence of PropertyValues used in a
- ::com::sun::star::graphic::XPrimitive2D for C++ implementations working with those
- */
- class DRAWINGLAYER_DLLPUBLIC ViewInformation2D
- {
- private:
- /// pointer to private implementation class
- ImpViewInformation2D* mpViewInformation2D;
-
- public:
- /** Constructor: Create a ViewInformation2D
-
- @param rObjectTransformation
- The Transformation from Object to World coordinates (normally logic coordinates).
-
- @param rViewTransformation
- The Transformation from World to View coordinates (normally logic coordinates
- to discrete units, e.g. pixels).
-
- @param rViewport
- The visible part of the view in World coordinates. If empty (getViewport().isEmpty())
- everything is visible. The data is in World coordinates.
-
- @param rxDrawPage
- The currently displaqyed page. This information is needed e.g. due to existing PageNumber
- fields which need to be interpreted.
-
- @param fViewTime
- The time the view is defined for. Default is 0.0. This parameter is used e.g. for
- animated objects
-
- @param rExtendedParameters
- A sequence of property values which allows holding various other parameters besides
- the obvious and needed ones above. For this constructor none of the other parameters
- should be added as data. The constructor will parse the given parameters and if
- data for the other parameters is given, the value in rExtendedParameters will
- be preferred and overwrite the given parameter
- */
- ViewInformation2D(
- const basegfx::B2DHomMatrix& rObjectTransformation,
- const basegfx::B2DHomMatrix& rViewTransformation,
- const basegfx::B2DRange& rViewport,
- const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XDrawPage >& rxDrawPage,
- double fViewTime,
- const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& rExtendedParameters);
-
- /** Constructor: Create a ViewInformation2D
-
- @param rViewParameters
- A sequence of property values which allows holding any combination of local and various
- other parameters. This constructor is feeded completely with a sequence of PropertyValues
- which will be parsed to be able to offer the most used ones in a convenient way.
- */
- ViewInformation2D(const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& rViewParameters);
-
- /// default (empty) constructor
- ViewInformation2D();
-
- /// copy constructor
- ViewInformation2D(const ViewInformation2D& rCandidate);
-
- /// destructor
- ~ViewInformation2D();
-
- // checks if the incarnation is default constructed
- bool isDefault() const;
-
- /// assignment operator
- ViewInformation2D& operator=(const ViewInformation2D& rCandidate);
-
- /// compare operators
- bool operator==(const ViewInformation2D& rCandidate) const;
- bool operator!=(const ViewInformation2D& rCandidate) const { return !operator==(rCandidate); }
-
- /// data access
- const basegfx::B2DHomMatrix& getObjectTransformation() const;
- const basegfx::B2DHomMatrix& getViewTransformation() const;
- const basegfx::B2DRange& getViewport() const;
- double getViewTime() const;
- const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XDrawPage >& getVisualizedPage() const;
-
- /// On-demand prepared Object to View transformation and it's inerse for convenience
- const basegfx::B2DHomMatrix& getObjectToViewTransformation() const;
- const basegfx::B2DHomMatrix& getInverseObjectToViewTransformation() const;
-
- /// On-demand prepared Viewport in discrete units for convenience
- const basegfx::B2DRange& getDiscreteViewport() const;
-
- /** support reduced DisplayQuality, PropertyName is 'ReducedDisplayQuality'. This
- is used e.g. to allow to lower display quality for OverlayPrimitives and
- may lead to simpler decompositions in the local create2DDecomposition
- implementations of the primitives
- */
- bool getReducedDisplayQuality() const;
-
- /** Get the uno::Sequence< beans::PropertyValue > which contains all ViewInformation
-
- Use this call if You need to extract all contained ViewInformation. The ones
- directly supported for convenience will be added to the ones only available
- as PropertyValues. This set completely describes this ViewInformation2D and
- can be used for complete information transport over UNO API.
- */
- const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& getViewInformationSequence() const;
-
- /** Get the uno::Sequence< beans::PropertyValue > which contains only ViewInformation
- not offered directly
-
- Use this call if You only need ViewInformation which is not offered conveniently,
- but only exists as PropertyValue. This is e.g. used to create partially updated
- incarnations of ViewInformation2D without losing the only with PropertyValues
- defined data. It does not contain a complete description.
- */
- const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& getExtendedInformationSequence() const;
- };
- } // end of namespace geometry
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif //INCLUDED_DRAWINGLAYER_GEOMETRY_VIEWINFORMATION2D_HXX
-
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/geometry/viewinformation3d.hxx b/drawinglayer/inc/drawinglayer/geometry/viewinformation3d.hxx
deleted file mode 100644
index aed21f599f..0000000000
--- a/drawinglayer/inc/drawinglayer/geometry/viewinformation3d.hxx
+++ /dev/null
@@ -1,182 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_GEOMETRY_VIEWINFORMATION3D_HXX
-#define INCLUDED_DRAWINGLAYER_GEOMETRY_VIEWINFORMATION3D_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-// the solaris compiler defines 'sun' as '1'. To avoid that (and to allow
-// pre-declarations of com/sun/star namespace), include sal/config.h here
-// where sun is redefined as 'sun' (so i guess the problem is known).
-#include <sal/config.h>
-#include <com/sun/star/uno/Sequence.h>
-#include <com/sun/star/beans/PropertyValue.hpp>
-
-//////////////////////////////////////////////////////////////////////////////
-// predefines
-
-namespace drawinglayer { namespace geometry {
- class ImpViewInformation3D;
-}}
-
-namespace basegfx {
- class B3DHomMatrix;
-}
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace geometry
- {
- /** ViewInformation3D class
-
- This class holds all view-relevant information for a 3d geometry. It works
- together with UNO API definitions and supports holding a sequence of PropertyValues.
- The most used data is for convenience offered directly using basegfx tooling classes.
- It is an implementation to support the sequence of PropertyValues used in a
- ::com::sun::star::graphic::XPrimitive3D for C++ implementations working with those
- */
- class DRAWINGLAYER_DLLPUBLIC ViewInformation3D
- {
- private:
- /// pointer to private implementation class
- ImpViewInformation3D* mpViewInformation3D;
-
- public:
- /** Constructor: Create a ViewInformation3D
-
- @param rObjectTransformation
- The Transformation from Object to World coordinates (normally logic coordinates).
-
- @param rOrientation
- A part of the 3D ViewTransformation, the World to Camera coordinates transformation
- which holds the camera coordinate system.
-
- @param rProjection
- A part of the 3D ViewTransformation, the Camera to Device transformation which
- transforms coordinates to a [0.0 .. 1.0] device range in X,Y and Z. Z may be used
- as source for for Z-Buffers. This transformation may be e.g. a parallell projection,
- but also a perspective one and thus may use the last line of the matrix.
-
- @param rDeviceToView
- A part of the 3D ViewTransformation, the Device to View transformation which normally
- translates and scales from [0.0 .. 1.0] range in X,Y and Z to discrete position and
- size.
-
- rOrientation, rProjection and rDeviceToView define the 3D transformation pipeline
- and are normally used multiplied together to have a direct transformation from
- World to View coordinates
-
- @param fViewTime
- The time the view is defined for. Default is 0.0. This parameter is used e.g. for
- animated objects
-
- @param rExtendedParameters
- A sequence of property values which allows holding various other parameters besides
- the obvious and needed ones above. For this constructor none of the other parameters
- should be added as data. The constructor will parse the given parameters and if
- data for the other parameters is given, the value in rExtendedParameters will
- be preferred and overwrite the given parameter
- */
- ViewInformation3D(
- const basegfx::B3DHomMatrix& rObjectTransformation,
- const basegfx::B3DHomMatrix& rOrientation,
- const basegfx::B3DHomMatrix& rProjection,
- const basegfx::B3DHomMatrix& rDeviceToView,
- double fViewTime,
- const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& rExtendedParameters);
-
- /** Constructor: Create a ViewInformation3D
-
- @param rViewParameters
- A sequence of property values which allows holding any combination of local and various
- other parameters. This constructor is feeded completely with a sequence of PropertyValues
- which will be parsed to be able to offer the most used ones in a convenient way.
- */
- ViewInformation3D(const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& rViewParameters);
-
- /// default (empty) constructor
- ViewInformation3D();
-
- /// copy constructor
- ViewInformation3D(const ViewInformation3D& rCandidate);
-
- /// destructor
- ~ViewInformation3D();
-
- // checks if the incarnation is default constructed
- bool isDefault() const;
-
- /// assignment operator
- ViewInformation3D& operator=(const ViewInformation3D& rCandidate);
-
- /// compare operators
- bool operator==(const ViewInformation3D& rCandidate) const;
- bool operator!=(const ViewInformation3D& rCandidate) const { return !operator==(rCandidate); }
-
- /// data access
- const basegfx::B3DHomMatrix& getObjectTransformation() const;
- const basegfx::B3DHomMatrix& getOrientation() const;
- const basegfx::B3DHomMatrix& getProjection() const;
- const basegfx::B3DHomMatrix& getDeviceToView() const;
- double getViewTime() const;
-
- /// for convenience, the linear combination of the above four transformations is offered
- const basegfx::B3DHomMatrix& getObjectToView() const;
-
- /** Get the uno::Sequence< beans::PropertyValue > which contains all ViewInformation
-
- Use this call if You need to extract all contained ViewInformation. The ones
- directly supported for convenience will be added to the ones only available
- as PropertyValues. This set completely describes this ViewInformation3D and
- can be used for complete information transport over UNO API.
- */
- const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& getViewInformationSequence() const;
-
- /** Get the uno::Sequence< beans::PropertyValue > which contains only ViewInformation
- not offered directly
-
- Use this call if You only need ViewInformation which is not offered conveniently,
- but only exists as PropertyValue. This is e.g. used to create partially updated
- incarnations of ViewInformation3D without losing the only with PropertyValues
- defined data. It does not contain a complete description.
- */
- const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& getExtendedInformationSequence() const;
- };
- } // end of namespace geometry
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif //INCLUDED_DRAWINGLAYER_GEOMETRY_VIEWINFORMATION3D_HXX
-
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/primitive2d/animatedprimitive2d.hxx b/drawinglayer/inc/drawinglayer/primitive2d/animatedprimitive2d.hxx
deleted file mode 100644
index 9fea7eb4d8..0000000000
--- a/drawinglayer/inc/drawinglayer/primitive2d/animatedprimitive2d.hxx
+++ /dev/null
@@ -1,183 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_PRIMITIVE2D_ANIMATEDPRIMITIVE2D_HXX
-#define INCLUDED_DRAWINGLAYER_PRIMITIVE2D_ANIMATEDPRIMITIVE2D_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <drawinglayer/primitive2d/groupprimitive2d.hxx>
-#include <basegfx/matrix/b2dhommatrix.hxx>
-#include <basegfx/matrix/b2dhommatrixtools.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-// predefines
-namespace drawinglayer { namespace animation {
- class AnimationEntry;
-}}
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- /** AnimatedSwitchPrimitive2D class
-
- This is the basic class for simple, animated primitives. The basic idea
- is to have an animation definition (AnimationEntry) who's basic
- functionality is to return a state value for any given animation time in
- the range of [0.0 .. 1.0]. Depending on the state, the decomposition
- calculates an index, which of the members of the child vector is to
- be visualized.
-
- An example: For blinking, the Child vector should exist of two entries;
- for values of [0.0 .. 0.5] the first, else the last entry will be used.
- This mechanism is not limited to two entries, though.
- */
- class DRAWINGLAYER_DLLPUBLIC AnimatedSwitchPrimitive2D : public GroupPrimitive2D
- {
- private:
- /**
- The animation definition which allows translation of a point in time
- to an animation state [0.0 .. 1.0]. This member contains a cloned
- definition and is owned by this implementation.
- */
- animation::AnimationEntry* mpAnimationEntry;
-
- /// bitfield
- /** flag if this is a text or graphic animation. Necessary since SdrViews need to differentiate
- between both types if they are on/off
- */
- unsigned mbIsTextAnimation : 1;
-
- public:
- /// constructor
- AnimatedSwitchPrimitive2D(
- const animation::AnimationEntry& rAnimationEntry,
- const Primitive2DSequence& rChildren,
- bool bIsTextAnimation);
-
- /// destructor - needed due to mpAnimationEntry
- virtual ~AnimatedSwitchPrimitive2D();
-
- /// data read access
- const animation::AnimationEntry& getAnimationEntry() const { return *mpAnimationEntry; }
- bool isTextAnimation() const { return mbIsTextAnimation; }
- bool isGraphicAnimation() const { return !isTextAnimation(); }
-
- /// compare operator
- virtual bool operator==(const BasePrimitive2D& rPrimitive) const;
-
- /// provide unique ID
- DeclPrimitrive2DIDBlock()
-
- /** The getDecomposition is overloaded here since the decompose is dependent of the point in time,
- so the default implementation is nut useful here, it needs to be handled locally
- */
- virtual Primitive2DSequence get2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const;
- };
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- /** AnimatedBlinkPrimitive2D class
-
- Basically the same mechanism as in AnimatedSwitchPrimitive2D, but the
- decomposition is specialized in delivering the children in the
- range [0.0.. 0.5] and an empty sequence else
- */
- class DRAWINGLAYER_DLLPUBLIC AnimatedBlinkPrimitive2D : public AnimatedSwitchPrimitive2D
- {
- protected:
- public:
- /// constructor
- AnimatedBlinkPrimitive2D(
- const animation::AnimationEntry& rAnimationEntry,
- const Primitive2DSequence& rChildren,
- bool bIsTextAnimation);
-
- /// create local decomposition
- virtual Primitive2DSequence get2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const;
-
- /// provide unique ID
- DeclPrimitrive2DIDBlock()
- };
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- /** AnimatedInterpolatePrimitive2D class
-
- Specialized on multi-step animations based on matrix transformations. The
- Child sequelce will be embedded in a matrix transformation. That transformation
- will be linearly combined from the decomposed values and the animation value
- to allow a smooth animation.
- */
- class DRAWINGLAYER_DLLPUBLIC AnimatedInterpolatePrimitive2D : public AnimatedSwitchPrimitive2D
- {
- private:
- /// the transformations
- std::vector< basegfx::tools::B2DHomMatrixBufferedDecompose > maMatrixStack;
-
- protected:
- public:
- /// constructor
- AnimatedInterpolatePrimitive2D(
- const std::vector< basegfx::B2DHomMatrix >& rmMatrixStack,
- const animation::AnimationEntry& rAnimationEntry,
- const Primitive2DSequence& rChildren,
- bool bIsTextAnimation);
-
- /// create local decomposition
- virtual Primitive2DSequence get2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const;
-
- /// provide unique ID
- DeclPrimitrive2DIDBlock()
- };
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif //INCLUDED_DRAWINGLAYER_PRIMITIVE2D_ANIMATEDPRIMITIVE2D_HXX
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/primitive2d/backgroundcolorprimitive2d.hxx b/drawinglayer/inc/drawinglayer/primitive2d/backgroundcolorprimitive2d.hxx
deleted file mode 100644
index 507a49f06a..0000000000
--- a/drawinglayer/inc/drawinglayer/primitive2d/backgroundcolorprimitive2d.hxx
+++ /dev/null
@@ -1,98 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_PRIMITIVE2D_BACKGROUNDCOLORPRIMITIVE2D_HXX
-#define INCLUDED_DRAWINGLAYER_PRIMITIVE2D_BACKGROUNDCOLORPRIMITIVE2D_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <drawinglayer/primitive2d/baseprimitive2d.hxx>
-#include <basegfx/color/bcolor.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-// BackgroundColorPrimitive2D class
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- /** BackgroundColorPrimitive2D class
-
- This primitive is defined to fill the whole visible Viewport with
- the given color (and thus decomposes to a filled polygon). This
- makes it a view-depnendent primitive by definition. It only has
- a valid decomposition if a valid Viewport is given in the
- ViewInformation2D at decomposition time.
-
- It will try to buffer it's last decomposition using maLastViewport
- to detect changes in the get2DDecomposition call.
- */
- class DRAWINGLAYER_DLLPUBLIC BackgroundColorPrimitive2D : public BufferedDecompositionPrimitive2D
- {
- private:
- /// the fill color to use
- basegfx::BColor maBColor;
-
- /// the last used viewInformation, used from getDecomposition for buffering
- basegfx::B2DRange maLastViewport;
-
- protected:
- /// create local decomposition
- virtual Primitive2DSequence create2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const;
-
- public:
- /// constructor
- BackgroundColorPrimitive2D(
- const basegfx::BColor& rBColor);
-
- /// data read access
- const basegfx::BColor& getBColor() const { return maBColor; }
-
- /// compare operator
- virtual bool operator==(const BasePrimitive2D& rPrimitive) const;
-
- /// get B2Drange
- virtual basegfx::B2DRange getB2DRange(const geometry::ViewInformation2D& rViewInformation) const;
-
- /// provide unique ID
- DeclPrimitrive2DIDBlock()
-
- /// Overload standard getDecomposition call to be view-dependent here
- virtual Primitive2DSequence get2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const;
- };
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif //INCLUDED_DRAWINGLAYER_PRIMITIVE2D_BACKGROUNDCOLORPRIMITIVE2D_HXX
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/primitive2d/baseprimitive2d.hxx b/drawinglayer/inc/drawinglayer/primitive2d/baseprimitive2d.hxx
deleted file mode 100644
index 1c53ff0f04..0000000000
--- a/drawinglayer/inc/drawinglayer/primitive2d/baseprimitive2d.hxx
+++ /dev/null
@@ -1,304 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_PRIMITIVE2D_BASEPRIMITIVE2D_HXX
-#define INCLUDED_DRAWINGLAYER_PRIMITIVE2D_BASEPRIMITIVE2D_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <cppuhelper/compbase1.hxx>
-#include <boost/utility.hpp>
-#include <com/sun/star/graphic/XPrimitive2D.hpp>
-#include <comphelper/broadcasthelper.hxx>
-#include <basegfx/range/b2drange.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-/** defines for DeclPrimitrive2DIDBlock and ImplPrimitrive2DIDBlock
- Added to be able to simply change identification stuff later, e.g. add
- a identification string and/or ID to the interface and to the implementation
- ATM used to delclare implement getPrimitive2DID()
-*/
-
-#define DeclPrimitrive2DIDBlock() \
- virtual sal_uInt32 getPrimitive2DID() const;
-
-#define ImplPrimitrive2DIDBlock(TheClass, TheID) \
- sal_uInt32 TheClass::getPrimitive2DID() const { return TheID; }
-
-//////////////////////////////////////////////////////////////////////////////
-// predefines
-
-namespace drawinglayer { namespace geometry {
- class ViewInformation2D;
-}}
-
-namespace drawinglayer { namespace primitive2d {
- /// typedefs for basePrimitive2DImplBase, Primitive2DSequence and Primitive2DReference
- typedef cppu::WeakComponentImplHelper1< ::com::sun::star::graphic::XPrimitive2D > BasePrimitive2DImplBase;
- typedef ::com::sun::star::uno::Reference< ::com::sun::star::graphic::XPrimitive2D > Primitive2DReference;
- typedef ::com::sun::star::uno::Sequence< Primitive2DReference > Primitive2DSequence;
-}}
-
-//////////////////////////////////////////////////////////////////////////////
-// basePrimitive2D class
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- /** BasePrimitive2D class
-
- Baseclass for all C++ implementations of com::sun::star::graphic::XPrimitive2D
-
- This class is strongly virtual due to the lack of getPrimitiveID() implementation.
- This is by purpose, this base class shall not be incarnated and be used directly as
- a XPrimitive2D.
-
- Is is derived from boost::noncopyable to make clear that a primitive is a read-only
- instance and copying or changing values is not intended. The idea is to hold all data
- needed for visualisation of this primitive in unchangeable form.
-
- It is derived from comphelper::OBaseMutex to have a Mutex at hand; in a base
- implementation this may not be needed, but e.g. when buffering at last decomposition
- in a local member, multiple threads may try to decompose at the same time, so locking
- is needed to avoid race conditions seen from the UNO object implementation.
-
- A method to get a simplified representation is provided by get2DDecomposition. The
- default implementation returns an empty sequence. The idea is that processors
- using this primitive and do not know it, may get the decomposition and process
- these instead. An example is e.g. a fat line, who's decomposition may contain
- the geometric representation of that line using filled polygon prmimitives. When
- the renderer knows how to handle fat lines, he may proccess this primitive directly;
- if not he can use the decomposition. With this functionality, renderers may operate by
- knowing only a small set of primitives.
-
- When a primitive does not implement get2DDecomposition, it is called a 'Basic Primitive' and
- belongs to the set of primitives which a processor should be able to handle. Practice
- will define this minimal sets of primitives. When defined and the concept is prooved,
- unique UNO APIs may be defined/implemented for these set to allow more intense work
- with primitives using UNO.
-
- Current Basic 2D Primitives are:
-
- - BitmapPrimitive2D (bitmap data, evtl. with transparence)
- - PointArrayPrimitive2D (single points)
- - PolygonHairlinePrimitive2D (hairline curves/polygons)
- - PolyPolygonColorPrimitive2D (colored polygons)
-
- UPDATE: MetafilePrimitive2D (VCL Metafile) is taken off this list since
- it is implemented with the integration of CWS aw078 into DV300m69.
-
- All other implemented primitives have a defined decomposition and can thus be
- decomposed down to this small set.
-
- A renderer implementing support for this minimal set of primitives can completely
- render primitive-based visualisations. Of course, he also has to take states into account
- which are representated by GroupPrimitive2D derivations, see groupprimitive2d.hxx
-
- To support getting the geometric BoundRect, getB2DRange is used. The default
- implementation will use the get2DDecomposition result and merge a range from the
- entries. Thus, an implementation is only necessary for the Basic Primitives, but
- of course speedups are possible (and are used) by implementing the method at higher-level
- primitives.
-
- For primitive identification, getPrimitiveID is used currently in this implementations
- to allow a fast switch/case processing. This needs a unique identifier mechanism which
- currently uses defines (see drawinglayer_primitivetypes2d.hxx). For UNO prmitive API
- it will be needed to add a unique descriptor (Name?) later to the API.
-
- This base implementation provides mappings from the methods from XPrimitive2D
- (getDecomposition/getRange) to the appropriate methods in the C++ implementations
- (get2DDecomposition/getB2DRange). The PropertyValue ViewParameters is converted to
- the appropriate C++ implementation class ViewInformation2D.
-
- This base class does not implement any buffering; e.g. buffering the decompositon
- and/or the range. These may be buffered anytime since the definition is that the primitive
- is read-only and thus unchangeable. This implies that the decomposition and/or getting
- the range will lead to the same result as last time, under the precondition that
- the parameter ViewInformation2D is the same as the last one. This is usually the case
- for view-independent primitives which are defined by not using ViewInformation2D
- in their get2DDecomposition/getB2DRange implementations.
- */
- class DRAWINGLAYER_DLLPUBLIC BasePrimitive2D
- : private boost::noncopyable,
- protected comphelper::OBaseMutex,
- public BasePrimitive2DImplBase
- {
- private:
- protected:
- public:
- // constructor/destructor
- BasePrimitive2D();
- virtual ~BasePrimitive2D();
-
- /** the ==operator is mainly needed to allow testing newly-created primitives against their last
- incarnation which buffers/holds the made decompositions. The default implementation
- uses getPrimitive2DID()-calls to test if it's the same ID at last. Overloaded implementation are then
- based on this implementation
- */
- virtual bool operator==( const BasePrimitive2D& rPrimitive ) const;
- bool operator!=( const BasePrimitive2D& rPrimitive ) const { return !operator==(rPrimitive); }
-
- /// The default implementation will use getDecomposition results to create the range
- virtual basegfx::B2DRange getB2DRange(const geometry::ViewInformation2D& rViewInformation) const;
-
- /** provide unique ID for fast identifying of known primitive implementations in renderers. These use
- the the defines from primitivetypes2d.hxx to define unique IDs.
- This method is normally defined using DeclPrimitrive2DIDBlock()
- */
- virtual sal_uInt32 getPrimitive2DID() const = 0;
-
- /// The default implementation will return an empty sequence
- virtual Primitive2DSequence get2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const;
-
- //
- // Methods from XPrimitive2D
- //
-
- /** The getDecomposition implementation for UNO API will use getDecomposition from this implementation. It
- will construct a ViewInformation2D from the ViewParameters for that purpose
- */
- virtual Primitive2DSequence SAL_CALL getDecomposition( const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& rViewParameters ) throw ( ::com::sun::star::uno::RuntimeException );
-
- /** The getRange implementation for UNO API will use getRange from this implementation. It
- will construct a ViewInformation2D from the ViewParameters for that purpose
- */
- virtual ::com::sun::star::geometry::RealRectangle2D SAL_CALL getRange( const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& rViewParameters ) throw ( ::com::sun::star::uno::RuntimeException );
- };
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// BufferedDecompositionPrimitive2D class
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- /** BufferedDecompositionPrimitive2D class
-
- Baseclass for all C++ implementations of com::sun::star::graphic::XPrimitive2D
- which want to buffer the decomoposition result
-
- Buffering the decomposition is the most-used buffering and is thus used my most
- primitive implementations which support a decomposition as base class.
-
- The buffering is done by holding the last decomposition in the local parameter
- maBuffered2DDecomposition. The default implementation of get2DDecomposition checks
- if maBuffered2DDecomposition is empty. If yes, it uses create2DDecomposition
- to create the content. In all cases, maBuffered2DDecomposition is returned.
-
- For view-dependent primitives derived from Primitive2DBufferDecomposition more needs
- to be done when the decomposition depends on parts of the parameter ViewInformation2D.
- This defines a standard method for processing these:
-
- Implement a view-dependent get2DDecomposition doing te following steps:
- (a) Locally extract needed parameters from ViewInformation2D to new, local parameters
- (this may be a complete local copy of ViewInformation2D)
- (b) If a buffered decomposition exists, ckeck if one of the new local parameters
- differs from the corresponding locally remembered (as member) ones. If yes,
- clear maBuffered2DDecomposition
- (d) call baseclass::get2DDecomposition which will use create2DDecomposition
- to fill maBuffered2DDecomposition if it's empty
- (e) copy the new local parameters to the corresponding locally remembered ones
- to identify if a new decomposition is needed at the next call
- (f) return maBuffered2DDecomposition
- */
- class DRAWINGLAYER_DLLPUBLIC BufferedDecompositionPrimitive2D
- : public BasePrimitive2D
- {
- private:
- /// a sequence used for buffering the last create2DDecomposition() result
- Primitive2DSequence maBuffered2DDecomposition;
-
- protected:
- /** access methods to maBuffered2DDecomposition. The usage of this methods may allow
- later thread-safe stuff to be added if needed. Only to be used by getDecomposition()
- implementations for buffering the last decomposition.
- */
- const Primitive2DSequence& getBuffered2DDecomposition() const { return maBuffered2DDecomposition; }
- void setBuffered2DDecomposition(const Primitive2DSequence& rNew) { maBuffered2DDecomposition = rNew; }
-
- /** method which is to be used to implement the local decomposition of a 2D primitive. The default
- implementation will just return an empty decomposition
- */
- virtual Primitive2DSequence create2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const;
-
- public:
- // constructor/destructor
- BufferedDecompositionPrimitive2D();
-
- /** The getDecomposition default implementation will on demand use create2DDecomposition() if
- maBuffered2DDecomposition is empty. It will set maBuffered2DDecomposition to this obtained decomposition
- to buffer it. If the decomposition is also ViewInformation2D-dependent, this method needs to be
- overloaded and the ViewInformation2D for the last decomposition need to be remembered, too, and
- be used in the next call to decide if the buffered decomposition may be reused or not.
- */
- virtual Primitive2DSequence get2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const;
- };
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// tooling
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- /// get B2DRange from a given Primitive2DReference
- basegfx::B2DRange DRAWINGLAYER_DLLPUBLIC getB2DRangeFromPrimitive2DReference(const Primitive2DReference& rCandidate, const geometry::ViewInformation2D& aViewInformation);
-
- /// get B2DRange from a given Primitive2DSequence
- basegfx::B2DRange DRAWINGLAYER_DLLPUBLIC getB2DRangeFromPrimitive2DSequence(const Primitive2DSequence& rCandidate, const geometry::ViewInformation2D& aViewInformation);
-
- /** compare two Primitive2DReferences for equality, including trying to get implementations (BasePrimitive2D)
- and using compare operator
- */
- bool DRAWINGLAYER_DLLPUBLIC arePrimitive2DReferencesEqual(const Primitive2DReference& rA, const Primitive2DReference& rB);
-
- /// compare two Primitive2DReferences for equality, uses arePrimitive2DReferencesEqual internally
- bool DRAWINGLAYER_DLLPUBLIC arePrimitive2DSequencesEqual(const Primitive2DSequence& rA, const Primitive2DSequence& rB);
-
- /// concatenate sequence
- void DRAWINGLAYER_DLLPUBLIC appendPrimitive2DSequenceToPrimitive2DSequence(Primitive2DSequence& rDest, const Primitive2DSequence& rSource);
-
- /// concatenate single Primitive2D
- void DRAWINGLAYER_DLLPUBLIC appendPrimitive2DReferenceToPrimitive2DSequence(Primitive2DSequence& rDest, const Primitive2DReference& rSource);
-
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif //INCLUDED_DRAWINGLAYER_PRIMITIVE2D_BASEPRIMITIVE2D_HXX
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/primitive2d/bitmapprimitive2d.hxx b/drawinglayer/inc/drawinglayer/primitive2d/bitmapprimitive2d.hxx
deleted file mode 100644
index 0eab4e7a43..0000000000
--- a/drawinglayer/inc/drawinglayer/primitive2d/bitmapprimitive2d.hxx
+++ /dev/null
@@ -1,92 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_PRIMITIVE2D_BITMAPPRIMITIVE2D_HXX
-#define INCLUDED_DRAWINGLAYER_PRIMITIVE2D_BITMAPPRIMITIVE2D_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <drawinglayer/primitive2d/baseprimitive2d.hxx>
-#include <vcl/bitmapex.hxx>
-#include <basegfx/matrix/b2dhommatrix.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-// BitmapPrimitive2D class
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- /** BitmapPrimitive2D class
-
- This class is the central primitive for Bitmap-based primitives.
- It provides RGBA-based bitmaps, currently using a BitmapEx from VCL.
- This may change in the future to any other, maybe more general base
- class providing 24bit RGBA.
- */
- class DRAWINGLAYER_DLLPUBLIC BitmapPrimitive2D : public BasePrimitive2D
- {
- private:
- /// the RGBA Bitmap-data
- BitmapEx maBitmapEx;
-
- /** the object transformation from unit coordinates, defining
- size, shear, rotate and position
- */
- basegfx::B2DHomMatrix maTransform;
-
- public:
- /// constructor
- BitmapPrimitive2D(
- const BitmapEx& rBitmapEx,
- const basegfx::B2DHomMatrix& rTransform);
-
- /// data read access
- const BitmapEx& getBitmapEx() const { return maBitmapEx; }
- const basegfx::B2DHomMatrix& getTransform() const { return maTransform; }
-
- /// compare operator
- virtual bool operator==(const BasePrimitive2D& rPrimitive) const;
-
- /// get range
- virtual basegfx::B2DRange getB2DRange(const geometry::ViewInformation2D& rViewInformation) const;
-
- /// provide unique ID
- DeclPrimitrive2DIDBlock()
- };
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif // INCLUDED_DRAWINGLAYER_PRIMITIVE2D_BITMAPPRIMITIVE2D_HXX
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/primitive2d/borderlineprimitive2d.hxx b/drawinglayer/inc/drawinglayer/primitive2d/borderlineprimitive2d.hxx
deleted file mode 100644
index 33777e6655..0000000000
--- a/drawinglayer/inc/drawinglayer/primitive2d/borderlineprimitive2d.hxx
+++ /dev/null
@@ -1,181 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_PRIMITIVE2D_BORDERLINEPRIMITIVE2D_HXX
-#define INCLUDED_DRAWINGLAYER_PRIMITIVE2D_BORDERLINEPRIMITIVE2D_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <drawinglayer/primitive2d/baseprimitive2d.hxx>
-#include <basegfx/color/bcolor.hxx>
-#include <basegfx/matrix/b2dhommatrix.hxx>
-#include <basegfx/polygon/b2dpolypolygon.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- /** BorderLinePrimitive2D class
-
- This is the basic primitive to build frames around objects, e.g. tables.
- It defines a single or double line from Start to nd using the LeftWidth,
- Distance and RightWidth definitions.
- The LineStart/End overlap is defined by the Extend(Inner|Outer)(Start|End)
- definitions.
- */
- class DRAWINGLAYER_DLLPUBLIC BorderLinePrimitive2D : public BufferedDecompositionPrimitive2D
- {
- private:
- /// the line definition
- basegfx::B2DPoint maStart;
- basegfx::B2DPoint maEnd;
-
- /// the widths of single/double line
- double mfLeftWidth;
- double mfDistance;
- double mfRightWidth;
-
- /// edge overlap sizes
- double mfExtendLeftStart;
- double mfExtendLeftEnd;
- double mfExtendRightStart;
- double mfExtendRightEnd;
-
- /// the line colors
- basegfx::BColor maRGBColorRight;
- basegfx::BColor maRGBColorLeft;
- basegfx::BColor maRGBColorGap;
- bool mbHasGapColor;
-
- short mnStyle;
-
- /// bitfield
- /// flags to influence inside/outside creation
- unsigned mbCreateInside : 1;
- unsigned mbCreateOutside : 1;
-
- /// local helpers
- double getCorrectedLeftWidth() const
- {
- return basegfx::fTools::equal(1.0, mfLeftWidth) ? 0.0 : mfLeftWidth;
- }
-
- double getCorrectedDistance() const
- {
- return basegfx::fTools::equal(1.0, mfDistance) ? 0.0 : mfDistance;
- }
-
- double getCorrectedRightWidth() const
- {
- return basegfx::fTools::equal(1.0, mfRightWidth) ? 0.0 : mfRightWidth;
- }
-
- double getWidth() const
- {
- return getCorrectedLeftWidth() + getCorrectedDistance() + getCorrectedRightWidth();
- }
-
- bool leftIsHairline() const
- {
- return basegfx::fTools::equal(1.0, mfLeftWidth);
- }
-
- bool rightIsHairline() const
- {
- return basegfx::fTools::equal(1.0, mfRightWidth);
- }
-
- bool isInsideUsed() const
- {
- return !basegfx::fTools::equalZero(mfLeftWidth);
- }
-
- bool isOutsideUsed() const
- {
- return !basegfx::fTools::equalZero(mfRightWidth);
- }
-
- protected:
- virtual basegfx::B2DPolyPolygon getClipPolygon( ) const;
-
- /// create local decomposition
- virtual Primitive2DSequence create2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const;
-
- public:
- /// constructor
- BorderLinePrimitive2D(
- const basegfx::B2DPoint& rStart,
- const basegfx::B2DPoint& rEnd,
- double fLeftWidth,
- double fDistance,
- double fRightWidth,
- double fExtendLeftStart,
- double fExtendLeftEnd,
- double fExtendRightStart,
- double fExtendRightEnd,
- const basegfx::BColor& rRGBColorRight,
- const basegfx::BColor& rRGBColorLeft,
- const basegfx::BColor& rRGBColorGap,
- bool bHasGapColor,
- const short nStyle );
-
- /// data read access
- const basegfx::B2DPoint& getStart() const { return maStart; }
- const basegfx::B2DPoint& getEnd() const { return maEnd; }
- double getLeftWidth() const { return mfLeftWidth; }
- double getDistance() const { return mfDistance; }
- double getRightWidth() const { return mfRightWidth; }
- double getExtendLeftStart() const { return mfExtendLeftStart; }
- double getExtendLeftEnd() const { return mfExtendLeftEnd; }
- double getExtendRightStart() const { return mfExtendRightStart; }
- double getExtendRightEnd() const { return mfExtendRightEnd; }
- const basegfx::BColor& getRGBColorRight () const { return maRGBColorRight; }
- const basegfx::BColor& getRGBColorLeft () const { return maRGBColorLeft; }
- const basegfx::BColor& getRGBColorGap () const { return maRGBColorGap; }
- bool hasGapColor( ) const { return mbHasGapColor; }
- short getStyle () const { return mnStyle; }
-
- /// compare operator
- virtual bool operator==(const BasePrimitive2D& rPrimitive) const;
-
- /// provide unique ID
- DeclPrimitrive2DIDBlock()
- };
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif //INCLUDED_DRAWINGLAYER_PRIMITIVE2D_BORDERLINEPRIMITIVE2D_HXX
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/primitive2d/chartprimitive2d.hxx b/drawinglayer/inc/drawinglayer/primitive2d/chartprimitive2d.hxx
deleted file mode 100644
index 7edd2f5099..0000000000
--- a/drawinglayer/inc/drawinglayer/primitive2d/chartprimitive2d.hxx
+++ /dev/null
@@ -1,84 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_PRIMITIVE2D_CHARTPRIMITIVE2D_HXX
-#define INCLUDED_DRAWINGLAYER_PRIMITIVE2D_CHARTPRIMITIVE2D_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <drawinglayer/primitive2d/groupprimitive2d.hxx>
-#include <com/sun/star/frame/XModel.hpp>
-#include <basegfx/matrix/b2dhommatrix.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- /** ChartPrimitive2D class
-
- This is a helper primitive which decomposes to the ChartMetaFile
- visualisation. It is used to allow specific renderers to do something
- direct for visualising the chart.
- */
- class DRAWINGLAYER_DLLPUBLIC ChartPrimitive2D : public GroupPrimitive2D
- {
- private:
- ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel > mxChartModel;
- basegfx::B2DHomMatrix maTransformation;
-
- public:
- ChartPrimitive2D(
- const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel >& rxChartModel,
- const basegfx::B2DHomMatrix& rTransformation,
- const Primitive2DSequence& rChildren);
-
- /// data read access
- const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel >& getChartModel() const { return mxChartModel; }
- const basegfx::B2DHomMatrix& getTransformation() const { return maTransformation; }
-
- // compare operator
- virtual bool operator==(const BasePrimitive2D& rPrimitive) const;
-
- // provide unique ID
- DeclPrimitrive2DIDBlock()
-
- virtual basegfx::B2DRange getB2DRange(const geometry::ViewInformation2D& rViewInformation) const;
- };
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif //INCLUDED_DRAWINGLAYER_PRIMITIVE2D_CHARTPRIMITIVE2D_HXX
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/primitive2d/clippedborderlineprimitive2d.hxx b/drawinglayer/inc/drawinglayer/primitive2d/clippedborderlineprimitive2d.hxx
deleted file mode 100644
index 9c1495b0d5..0000000000
--- a/drawinglayer/inc/drawinglayer/primitive2d/clippedborderlineprimitive2d.hxx
+++ /dev/null
@@ -1,82 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * Version: MPL 1.1 / GPLv3+ / LGPLv3+
- *
- * The contents of this file are subject to the Mozilla Public License Version
- * 1.1 (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.mozilla.org/MPL/
- *
- * Software distributed under the License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
- * for the specific language governing rights and limitations under the
- * License.
- *
- * The Initial Developer of the Original Code is
- * [ Novell Inc. ]
- * Portions created by the Initial Developer are Copyright (C) 2010 the
- * Initial Developer. All Rights Reserved.
- *
- * Contributor(s): Cédric Bosdonnat <cbosdonnat@novell.com>
- *
- * Alternatively, the contents of this file may be used under the terms of
- * either the GNU General Public License Version 3 or later (the "GPLv3+"), or
- * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
- * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
- * instead of those above.
- */
-
-#ifndef INCLUDED_DRAWINGLAYER_PRIMITIVE2D_CLIPPEDBORDERLINEPRIMITIVE2D_HXX
-#define INCLUDED_DRAWINGLAYER_PRIMITIVE2D_CLIPPEDBORDERLINEPRIMITIVE2D_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <drawinglayer/primitive2d/borderlineprimitive2d.hxx>
-#include <basegfx/polygon/b2dpolypolygon.hxx>
-#include <basegfx/polygon/b2dpolygon.hxx>
-
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- /** BorderLinePrimitive2D clipped by the intersection with a provided
- polygon.
- */
- class DRAWINGLAYER_DLLPUBLIC ClippedBorderLinePrimitive2D : public BorderLinePrimitive2D
- {
- private:
- const basegfx::B2DPolygon maIntersection;
-
- protected:
- virtual basegfx::B2DPolyPolygon getClipPolygon( ) const;
-
- public:
- /// constructor
- ClippedBorderLinePrimitive2D(
- const basegfx::B2DPoint& rStart,
- const basegfx::B2DPoint& rEnd,
- double fLeftWidth,
- double fDistance,
- double fRightWidth,
- const basegfx::B2DPolygon& rIntersection,
- const basegfx::BColor& rRGBColorRight,
- const basegfx::BColor& rRGBColorLeft,
- const basegfx::BColor& rRGBColorGap,
- bool bHasGapColor,
- const short nStyle );
-
- /// compare operator
- virtual bool operator==(const BasePrimitive2D& rPrimitive) const;
-
- /// provide unique ID
- DeclPrimitrive2DIDBlock()
- };
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-
-#endif //INCLUDED_DRAWINGLAYER_PRIMITIVE2D_CLIPPEDBORDERLINEPRIMITIVE2D_HXX
-
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/primitive2d/controlprimitive2d.hxx b/drawinglayer/inc/drawinglayer/primitive2d/controlprimitive2d.hxx
deleted file mode 100644
index 4c87db5adc..0000000000
--- a/drawinglayer/inc/drawinglayer/primitive2d/controlprimitive2d.hxx
+++ /dev/null
@@ -1,125 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_PRIMITIVE2D_CONTROLPRIMITIVE2D_HXX
-#define INCLUDED_DRAWINGLAYER_PRIMITIVE2D_CONTROLPRIMITIVE2D_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <drawinglayer/primitive2d/baseprimitive2d.hxx>
-#include <basegfx/matrix/b2dhommatrix.hxx>
-#include <com/sun/star/awt/XControlModel.hpp>
-#include <com/sun/star/awt/XControl.hpp>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- /** ControlPrimitive2D class
-
- Base class for ControlPrimitive handling. It decoposes to a
- graphical representation (Bitmap data) of the control. This
- representation is limited to a quadratic pixel maximum defined
- in the applicatin settings.
- */
- class DRAWINGLAYER_DLLPUBLIC ControlPrimitive2D : public BufferedDecompositionPrimitive2D
- {
- private:
- /// object's base data
- basegfx::B2DHomMatrix maTransform;
- com::sun::star::uno::Reference< com::sun::star::awt::XControlModel > mxControlModel;
-
- /// the created an cached awt::XControl
- com::sun::star::uno::Reference< com::sun::star::awt::XControl > mxXControl;
-
- /// the last used scaling, used from getDecomposition for buffering
- basegfx::B2DVector maLastViewScaling;
-
- /** used from getXControl() to create a local awt::XControl which is remembered in mxXControl
- and from thereon always used and returned by getXControl()
- */
- void createXControl();
-
- /// single local decompositions, used from create2DDecomposition()
- Primitive2DReference createBitmapDecomposition(const geometry::ViewInformation2D& rViewInformation) const;
- Primitive2DReference createPlaceholderDecomposition(const geometry::ViewInformation2D& rViewInformation) const;
-
- protected:
- /// local decomposition
- virtual Primitive2DSequence create2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const;
-
- public:
- /// constructor
- ControlPrimitive2D(
- const basegfx::B2DHomMatrix& rTransform,
- const com::sun::star::uno::Reference< com::sun::star::awt::XControlModel >& rxControlModel);
-
- /** constructor with an additional XControl as parameter to allow to hand it over at incarnation time
- if it exists. This will avoid to create a 2nd one on demand in createXControl()
- and thus double the XControls.
- */
- ControlPrimitive2D(
- const basegfx::B2DHomMatrix& rTransform,
- const com::sun::star::uno::Reference< com::sun::star::awt::XControlModel >& rxControlModel,
- const com::sun::star::uno::Reference< com::sun::star::awt::XControl >& rxXControl);
-
- /// data read access
- const basegfx::B2DHomMatrix& getTransform() const { return maTransform; }
- const com::sun::star::uno::Reference< com::sun::star::awt::XControlModel >& getControlModel() const { return mxControlModel; }
-
- /** mxControl access. This will on demand create the awt::XControl using createXControl()
- if it does not exist. It may already have been created or even handed over at
- incarnation
- */
- const com::sun::star::uno::Reference< com::sun::star::awt::XControl >& getXControl() const;
-
- /// compare operator
- virtual bool operator==(const BasePrimitive2D& rPrimitive) const;
-
- /// get range
- virtual basegfx::B2DRange getB2DRange(const geometry::ViewInformation2D& rViewInformation) const;
-
- /// provide unique ID
- DeclPrimitrive2DIDBlock()
-
- /// Overload standard getDecomposition call to be view-dependent here
- virtual Primitive2DSequence get2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const;
- };
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif // INCLUDED_DRAWINGLAYER_PRIMITIVE2D_CONTROLPRIMITIVE2D_HXX
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/primitive2d/discretebitmapprimitive2d.hxx b/drawinglayer/inc/drawinglayer/primitive2d/discretebitmapprimitive2d.hxx
deleted file mode 100644
index 50c4074839..0000000000
--- a/drawinglayer/inc/drawinglayer/primitive2d/discretebitmapprimitive2d.hxx
+++ /dev/null
@@ -1,90 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_PRIMITIVE2D_DISCRETEBITMAPPRIMITIVE2D_HXX
-#define INCLUDED_DRAWINGLAYER_PRIMITIVE2D_DISCRETEBITMAPPRIMITIVE2D_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <drawinglayer/primitive2d/primitivetools2d.hxx>
-#include <vcl/bitmapex.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-// DiscreteBitmapPrimitive2D class
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- /** DiscreteBitmapPrimitive2D class
-
- This class defines a view-dependent BitmapPrimitive which has a
- logic position for the top-left position and is always to be
- painted in 1:1 pixel resolution. It will never be sheared, rotated
- or scaled with the view.
- */
- class DRAWINGLAYER_DLLPUBLIC DiscreteBitmapPrimitive2D : public ObjectAndViewTransformationDependentPrimitive2D
- {
- private:
- /// the RGBA Bitmap-data
- BitmapEx maBitmapEx;
-
- /** the top-left object position */
- basegfx::B2DPoint maTopLeft;
-
- protected:
- /// local decomposition.
- virtual Primitive2DSequence create2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const;
-
- public:
- /// constructor
- DiscreteBitmapPrimitive2D(
- const BitmapEx& rBitmapEx,
- const basegfx::B2DPoint& rTopLeft);
-
- /// data read access
- const BitmapEx& getBitmapEx() const { return maBitmapEx; }
- const basegfx::B2DPoint& getTopLeft() const { return maTopLeft; }
-
- /// compare operator
- virtual bool operator==(const BasePrimitive2D& rPrimitive) const;
-
- /// provide unique ID
- DeclPrimitrive2DIDBlock()
- };
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif // INCLUDED_DRAWINGLAYER_PRIMITIVE2D_DISCRETEBITMAPPRIMITIVE2D_HXX
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/primitive2d/discreteshadowprimitive2d.hxx b/drawinglayer/inc/drawinglayer/primitive2d/discreteshadowprimitive2d.hxx
deleted file mode 100644
index d633896f8a..0000000000
--- a/drawinglayer/inc/drawinglayer/primitive2d/discreteshadowprimitive2d.hxx
+++ /dev/null
@@ -1,130 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_PRIMITIVE2D_QUADRATICSHADOWPRIMITIVE2D_HXX
-#define INCLUDED_DRAWINGLAYER_PRIMITIVE2D_QUADRATICSHADOWPRIMITIVE2D_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <drawinglayer/primitive2d/primitivetools2d.hxx>
-#include <vcl/bitmapex.hxx>
-#include <basegfx/matrix/b2dhommatrix.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-// DiscreteShadowPrimitive2D class
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- /** DiscreteShadow data class
-
- */
- class DRAWINGLAYER_DLLPUBLIC DiscreteShadow
- {
- private:
- /// the original shadow BitmapEx in a special form
- BitmapEx maBitmapEx;
-
- /// buffered extracted parts of CombinedShadow for easier usage
- BitmapEx maTopLeft;
- BitmapEx maTop;
- BitmapEx maTopRight;
- BitmapEx maRight;
- BitmapEx maBottomRight;
- BitmapEx maBottom;
- BitmapEx maBottomLeft;
- BitmapEx maLeft;
-
- public:
- /// constructor
- DiscreteShadow(const BitmapEx& rBitmapEx);
-
- /// data read access
- const BitmapEx& getBitmapEx() const { return maBitmapEx; }
-
- /// compare operator
- bool operator==(const DiscreteShadow& rCompare) const
- {
- return getBitmapEx() == rCompare.getBitmapEx();
- }
-
- /// helper accesses which create on-demand needed segments
- const BitmapEx& getTopLeft() const;
- const BitmapEx& getTop() const;
- const BitmapEx& getTopRight() const;
- const BitmapEx& getRight() const;
- const BitmapEx& getBottomRight() const;
- const BitmapEx& getBottom() const;
- const BitmapEx& getBottomLeft() const;
- const BitmapEx& getLeft() const;
- };
-
- /** DiscreteShadowPrimitive2D class
-
- */
- class DRAWINGLAYER_DLLPUBLIC DiscreteShadowPrimitive2D : public DiscreteMetricDependentPrimitive2D
- {
- private:
- // the object transformation of the rectangular object
- basegfx::B2DHomMatrix maTransform;
-
- // the bitmap shadow data
- DiscreteShadow maDiscreteShadow;
-
- protected:
- /// create local decomposition
- virtual Primitive2DSequence create2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const;
-
- public:
- /// constructor
- DiscreteShadowPrimitive2D(
- const basegfx::B2DHomMatrix& rTransform,
- const DiscreteShadow& rDiscreteShadow);
-
- /// data read access
- const basegfx::B2DHomMatrix& getTransform() const { return maTransform; }
- const DiscreteShadow& getDiscreteShadow() const { return maDiscreteShadow; }
-
- /// compare operator
- virtual bool operator==(const BasePrimitive2D& rPrimitive) const;
-
- /// get range
- virtual basegfx::B2DRange getB2DRange(const geometry::ViewInformation2D& rViewInformation) const;
-
- /// provide unique ID
- DeclPrimitrive2DIDBlock()
- };
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif // INCLUDED_DRAWINGLAYER_PRIMITIVE2D_QUADRATICSHADOWPRIMITIVE2D_HXX
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
diff --git a/drawinglayer/inc/drawinglayer/primitive2d/drawinglayer_primitivetypes2d.hxx b/drawinglayer/inc/drawinglayer/primitive2d/drawinglayer_primitivetypes2d.hxx
deleted file mode 100644
index 22ee5b51fb..0000000000
--- a/drawinglayer/inc/drawinglayer/primitive2d/drawinglayer_primitivetypes2d.hxx
+++ /dev/null
@@ -1,117 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_PRIMITIVE2D_PRIMITIVETYPES2D_HXX
-#define INCLUDED_DRAWINGLAYER_PRIMITIVE2D_PRIMITIVETYPES2D_HXX
-
-//////////////////////////////////////////////////////////////////////////////
-// define ranges for other libraries
-
-#define PRIMITIVE2D_ID_RANGE_DRAWINGLAYER (0 << 16)
-#define PRIMITIVE2D_ID_RANGE_SVX (1 << 16)
-#define PRIMITIVE2D_ID_RANGE_SD (2 << 16)
-#define PRIMITIVE2D_ID_RANGE_SW (3 << 16)
-#define PRIMITIVE2D_ID_RANGE_SC (4 << 16)
-
-//////////////////////////////////////////////////////////////////////////////
-// local primitives
-
-#define PRIMITIVE2D_ID_TRANSPARENCEPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 0)
-#define PRIMITIVE2D_ID_ANIMATEDSWITCHPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 1)
-#define PRIMITIVE2D_ID_ANIMATEDBLINKPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 2)
-#define PRIMITIVE2D_ID_ANIMATEDINTERPOLATEPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 3)
-#define PRIMITIVE2D_ID_BACKGROUNDCOLORPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 4)
-#define PRIMITIVE2D_ID_BITMAPPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 5)
-#define PRIMITIVE2D_ID_CONTROLPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 6)
-#define PRIMITIVE2D_ID_EMBEDDED3DPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 7)
-#define PRIMITIVE2D_ID_FILLBITMAPPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 8)
-#define PRIMITIVE2D_ID_FILLGRADIENTPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 9)
-#define PRIMITIVE2D_ID_FILLHATCHPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 10)
-#define PRIMITIVE2D_ID_GRAPHICPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 11)
-#define PRIMITIVE2D_ID_GRIDPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 12)
-#define PRIMITIVE2D_ID_GROUPPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 13)
-#define PRIMITIVE2D_ID_HELPLINEPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 14)
-#define PRIMITIVE2D_ID_MARKERARRAYPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 15)
-#define PRIMITIVE2D_ID_MASKPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 16)
-#define PRIMITIVE2D_ID_MEDIAPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 17)
-#define PRIMITIVE2D_ID_METAFILEPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 18)
-#define PRIMITIVE2D_ID_MODIFIEDCOLORPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 19)
-#define PRIMITIVE2D_ID_POLYGONHAIRLINEPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 20)
-#define PRIMITIVE2D_ID_POLYGONMARKERPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 21)
-#define PRIMITIVE2D_ID_POLYGONSTROKEPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 22)
-#define PRIMITIVE2D_ID_POLYGONSTROKEARROWPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 23)
-#define PRIMITIVE2D_ID_POLYPOLYGONSTROKEPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 24)
-#define PRIMITIVE2D_ID_POLYPOLYGONSTROKEARROWPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 25)
-#define PRIMITIVE2D_ID_POLYPOLYGONCOLORPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 26)
-#define PRIMITIVE2D_ID_POLYPOLYGONGRADIENTPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 27)
-#define PRIMITIVE2D_ID_POLYPOLYGONHATCHPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 28)
-#define PRIMITIVE2D_ID_POLYPOLYGONBITMAPPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 29)
-#define PRIMITIVE2D_ID_SCENEPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 30)
-#define PRIMITIVE2D_ID_SHADOWPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 31)
-#define PRIMITIVE2D_ID_TEXTSIMPLEPORTIONPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 32)
-#define PRIMITIVE2D_ID_TEXTDECORATEDPORTIONPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 33)
-#define PRIMITIVE2D_ID_TRANSFORMPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 34)
-#define PRIMITIVE2D_ID_UNIFIEDTRANSPARENCEPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 35)
-#define PRIMITIVE2D_ID_POINTARRAYPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 36)
-#define PRIMITIVE2D_ID_TEXTHIERARCHYFIELDPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 37)
-#define PRIMITIVE2D_ID_TEXTHIERARCHYLINEPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 38)
-#define PRIMITIVE2D_ID_TEXTHIERARCHYPARAGRAPHPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 39)
-#define PRIMITIVE2D_ID_TEXTHIERARCHYBLOCKPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 40)
-#define PRIMITIVE2D_ID_TEXTHIERARCHYEDITPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 41)
-#define PRIMITIVE2D_ID_POLYGONWAVEPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 42)
-#define PRIMITIVE2D_ID_WRONGSPELLPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 43)
-#define PRIMITIVE2D_ID_TEXTEFFECTPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 44)
-#define PRIMITIVE2D_ID_TEXTHIERARCHYBULLETPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 45)
-#define PRIMITIVE2D_ID_POLYPOLYGONHAIRLINEPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 46)
-#define PRIMITIVE2D_ID_EXECUTEPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 47)
-#define PRIMITIVE2D_ID_PAGEPREVIEWPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 48)
-#define PRIMITIVE2D_ID_CHARTPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 49)
-#define PRIMITIVE2D_ID_STRUCTURETAGPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 50)
-#define PRIMITIVE2D_ID_BORDERLINEPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 51)
-#define PRIMITIVE2D_ID_POLYPOLYGONMARKERPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 52)
-#define PRIMITIVE2D_ID_HITTESTPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 53)
-#define PRIMITIVE2D_ID_INVERTPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 54)
-#define PRIMITIVE2D_ID_DISCRETEBITMAPPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 55)
-#define PRIMITIVE2D_ID_WALLPAPERBITMAPPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 56)
-#define PRIMITIVE2D_ID_TEXTLINEPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 57)
-#define PRIMITIVE2D_ID_TEXTCHARACTERSTRIKEOUTPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 58)
-#define PRIMITIVE2D_ID_TEXTGEOMETRYSTRIKEOUTPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 59)
-#define PRIMITIVE2D_ID_EPSPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 60)
-#define PRIMITIVE2D_ID_DISCRETESHADOWPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 61)
-#define PRIMITIVE2D_ID_HIDDENGEOMETRYPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 62)
-#define PRIMITIVE2D_ID_CLIPPEDBORDERLINEPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 63)
-#define PRIMITIVE2D_ID_RENDERGRAPHICPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 64)
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif // INCLUDED_DRAWINGLAYER_PRIMITIVE2D_PRIMITIVETYPES2D_HXX
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/primitive2d/embedded3dprimitive2d.hxx b/drawinglayer/inc/drawinglayer/primitive2d/embedded3dprimitive2d.hxx
deleted file mode 100644
index c9abc8cec9..0000000000
--- a/drawinglayer/inc/drawinglayer/primitive2d/embedded3dprimitive2d.hxx
+++ /dev/null
@@ -1,134 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_PRIMITIVE2D_EMBEDDED3DPRIMITIVE2D_HXX
-#define INCLUDED_DRAWINGLAYER_PRIMITIVE2D_EMBEDDED3DPRIMITIVE2D_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <drawinglayer/primitive2d/baseprimitive2d.hxx>
-#include <drawinglayer/primitive3d/baseprimitive3d.hxx>
-#include <drawinglayer/geometry/viewinformation3d.hxx>
-#include <basegfx/matrix/b2dhommatrix.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-// Embedded3DPrimitive2D class
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- /** Embedded3DPrimitive2D class
-
- This is a helper primitive which allows embedding of single 3D
- primitives to the 2D primitive logic. It will get the scene it's
- involved and thus the 3D transformation. With this information it
- is able to provide 2D range data for a 3D primitive.
-
- This primitive will not be visualized and decomposes to a yellow
- 2D rectangle to visualize that this should never be visualized
- */
- class DRAWINGLAYER_DLLPUBLIC Embedded3DPrimitive2D : public BufferedDecompositionPrimitive2D
- {
- private:
- /// the sequence of 3d primitives
- primitive3d::Primitive3DSequence mxChildren3D;
-
- /// the 2D scene object transformation
- basegfx::B2DHomMatrix maObjectTransformation;
-
- /// the 3D transformations
- geometry::ViewInformation3D maViewInformation3D;
-
- /** if the embedded 3D primitives contain shadow, these parameters are needed
- to extract the shadow wich is a sequence od 2D primitives and may expand
- the 2D range. Since every single 3D object in a scene may individually
- have shadow or not, these values need to be provided and prepared. The shadow
- distance itself (a 2D transformation) is part of the 3D shadow definition
- */
- basegfx::B3DVector maLightNormal;
- double mfShadowSlant;
- basegfx::B3DRange maScene3DRange;
-
- /// the primitiveSequence for on-demand created shadow primitives (see mbShadow3DChecked)
- Primitive2DSequence maShadowPrimitives;
-
- /// #i96669# add simple range buffering for this primitive
- basegfx::B2DRange maB2DRange;
-
- /// bitfield
- /** flag if given 3D geometry is already cheched for shadow definitions and 2d shadows
- are created in maShadowPrimitives
- */
- unsigned mbShadow3DChecked : 1;
-
- /// private helpers
- bool impGetShadow3D(const geometry::ViewInformation2D& rViewInformation) const;
-
- protected:
- /// local decomposition.
- virtual Primitive2DSequence create2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const;
-
- public:
- /// constructor
- Embedded3DPrimitive2D(
- const primitive3d::Primitive3DSequence& rxChildren3D,
- const basegfx::B2DHomMatrix& rObjectTransformation,
- const geometry::ViewInformation3D& rViewInformation3D,
- const basegfx::B3DVector& rLightNormal,
- double fShadowSlant,
- const basegfx::B3DRange& rScene3DRange);
-
- /// data read access
- const primitive3d::Primitive3DSequence& getChildren3D() const { return mxChildren3D; }
- const basegfx::B2DHomMatrix& getObjectTransformation() const { return maObjectTransformation; }
- const geometry::ViewInformation3D& getViewInformation3D() const { return maViewInformation3D; }
- const basegfx::B3DVector& getLightNormal() const { return maLightNormal; }
- double getShadowSlant() const { return mfShadowSlant; }
- const basegfx::B3DRange& getScene3DRange() const { return maScene3DRange; }
-
- /// compare operator
- virtual bool operator==(const BasePrimitive2D& rPrimitive) const;
-
- /// get range
- virtual basegfx::B2DRange getB2DRange(const geometry::ViewInformation2D& rViewInformation) const;
-
- /// provide unique ID
- DeclPrimitrive2DIDBlock()
- };
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif //INCLUDED_DRAWINGLAYER_PRIMITIVE2D_EMBEDDED3DPRIMITIVE2D_HXX
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/primitive2d/epsprimitive2d.hxx b/drawinglayer/inc/drawinglayer/primitive2d/epsprimitive2d.hxx
deleted file mode 100644
index 427a370c46..0000000000
--- a/drawinglayer/inc/drawinglayer/primitive2d/epsprimitive2d.hxx
+++ /dev/null
@@ -1,93 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_PRIMITIVE2D_EPSPRIMITIVE2D_HXX
-#define INCLUDED_DRAWINGLAYER_PRIMITIVE2D_EPSPRIMITIVE2D_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <drawinglayer/primitive2d/baseprimitive2d.hxx>
-#include <basegfx/matrix/b2dhommatrix.hxx>
-#include <vcl/gfxlink.hxx>
-#include <vcl/gdimtf.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- /** EpsPrimitive2D class */
- class DRAWINGLAYER_DLLPUBLIC EpsPrimitive2D : public BufferedDecompositionPrimitive2D
- {
- private:
- /// the geometry definition
- basegfx::B2DHomMatrix maEpsTransform;
-
- /// the Eps content definition
- GfxLink maGfxLink;
-
- /// the replacement content definition
- GDIMetaFile maMetaFile;
-
- protected:
- /// create local decomposition
- virtual Primitive2DSequence create2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const;
-
- public:
- /// constructor
- EpsPrimitive2D(
- const basegfx::B2DHomMatrix& rEpsTransform,
- const GfxLink& rGfxLink,
- const GDIMetaFile& rMetaFile);
-
- /// data read access
- const basegfx::B2DHomMatrix& getEpsTransform() const { return maEpsTransform; }
- const GfxLink& getGfxLink() const { return maGfxLink; }
- const GDIMetaFile& getMetaFile() const { return maMetaFile; }
-
- /// compare operator
- virtual bool operator==(const BasePrimitive2D& rPrimitive) const;
-
- /// get B2Drange
- virtual basegfx::B2DRange getB2DRange(const geometry::ViewInformation2D& rViewInformation) const;
-
- /// provide unique ID
- DeclPrimitrive2DIDBlock()
- };
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif //INCLUDED_DRAWINGLAYER_PRIMITIVE2D_EPSPRIMITIVE2D_HXX
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/primitive2d/fillbitmapprimitive2d.hxx b/drawinglayer/inc/drawinglayer/primitive2d/fillbitmapprimitive2d.hxx
deleted file mode 100644
index 16b44fb892..0000000000
--- a/drawinglayer/inc/drawinglayer/primitive2d/fillbitmapprimitive2d.hxx
+++ /dev/null
@@ -1,100 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_PRIMITIVE2D_FILLBITMAPPRIMITIVE2D_HXX
-#define INCLUDED_DRAWINGLAYER_PRIMITIVE2D_FILLBITMAPPRIMITIVE2D_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <drawinglayer/primitive2d/baseprimitive2d.hxx>
-#include <basegfx/matrix/b2dhommatrix.hxx>
-#include <drawinglayer/attribute/fillbitmapattribute.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-// FillbitmapPrimitive2D class
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- /** FillBitmapPrimitive2D class
-
- This class defines a bitmap filling for a rectangular area. The
- Range is defined by the Transformation, the fill by the FillBitmapAttribute.
- There, the fill consists of a Bitmap (not transparent) defining the fill data
- and a Point/Vector pair defining the relative position/size [0.0 .. 1.0]
- inside the area where the bitmap is positioned. A flag defines then if this
- is tiled or not.
-
- Renderers should handle this primitive; it has a geometrically correct
- decomposition, but on pixel oututs the areas where the tiled pieces are
- aligned tend to show up (one overlapping or empty pixel)
- */
- class DRAWINGLAYER_DLLPUBLIC FillBitmapPrimitive2D : public BufferedDecompositionPrimitive2D
- {
- private:
- /// the geometric definition
- basegfx::B2DHomMatrix maTransformation;
-
- /// the fill attributes
- attribute::FillBitmapAttribute maFillBitmap;
-
- protected:
- /// local decomposition.
- virtual Primitive2DSequence create2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const;
-
- public:
- /// constructor
- FillBitmapPrimitive2D(
- const basegfx::B2DHomMatrix& rTransformation,
- const attribute::FillBitmapAttribute& rFillBitmap);
-
- /// data read access
- const basegfx::B2DHomMatrix& getTransformation() const { return maTransformation; }
- const attribute::FillBitmapAttribute& getFillBitmap() const { return maFillBitmap; }
-
- /// compare operator
- virtual bool operator==( const BasePrimitive2D& rPrimitive ) const;
-
- /// get range
- virtual basegfx::B2DRange getB2DRange(const geometry::ViewInformation2D& rViewInformation) const;
-
- /// provide unique ID
- DeclPrimitrive2DIDBlock()
- };
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif //INCLUDED_DRAWINGLAYER_PRIMITIVE2D_FILLBITMAPPRIMITIVE2D_HXX
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/primitive2d/fillgradientprimitive2d.hxx b/drawinglayer/inc/drawinglayer/primitive2d/fillgradientprimitive2d.hxx
deleted file mode 100644
index 2c76eec86a..0000000000
--- a/drawinglayer/inc/drawinglayer/primitive2d/fillgradientprimitive2d.hxx
+++ /dev/null
@@ -1,121 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_PRIMITIVE2D_FILLGRADIENTPRIMITIVE2D_HXX
-#define INCLUDED_DRAWINGLAYER_PRIMITIVE2D_FILLGRADIENTPRIMITIVE2D_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <drawinglayer/primitive2d/baseprimitive2d.hxx>
-#include <drawinglayer/attribute/fillgradientattribute.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-// predefines
-
-namespace basegfx { class B2DPolygon; }
-
-//////////////////////////////////////////////////////////////////////////////
-// FillGradientPrimitive2D class
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- /** FillGradientPrimitive2D class
-
- This class defines a gradient filling for a rectangular area. The
- Range is defined by the Transformation, the gradient by the FillGradientAttribute.
-
- The decomposition will deliver the decomposed gradient, e.g. for an ellipse
- gradient the various ellipses in various color steps will be created.
-
- I have added functionality to create both versions of filled decompositions:
- Those who overlap and non-overlapping ones. The overlapping version is the
- default one since it works with and without AntiAliasing. The non-overlapping
- version is used in the MetafilePrimitive2D decomposition when the old XOR
- paint was recorded.
- */
- class DRAWINGLAYER_DLLPUBLIC FillGradientPrimitive2D : public BufferedDecompositionPrimitive2D
- {
- private:
- /// the geometric definition
- basegfx::B2DRange maObjectRange;
-
- /// the gradient definition
- attribute::FillGradientAttribute maFillGradient;
-
- /// local helpers
- void generateMatricesAndColors(
- std::vector< basegfx::B2DHomMatrix >& rMatrices,
- std::vector< basegfx::BColor >& rColors) const;
- Primitive2DSequence createOverlappingFill(
- const std::vector< basegfx::B2DHomMatrix >& rMatrices,
- const std::vector< basegfx::BColor >& rColors,
- const basegfx::B2DPolygon& rUnitPolygon) const;
- Primitive2DSequence createNonOverlappingFill(
- const std::vector< basegfx::B2DHomMatrix >& rMatrices,
- const std::vector< basegfx::BColor >& rColors,
- const basegfx::B2DPolygon& rUnitPolygon) const;
-
- protected:
- /// local helper
- Primitive2DSequence createFill(bool bOverlapping) const;
-
- /// local decomposition.
- virtual Primitive2DSequence create2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const;
-
- public:
- /// constructor
- FillGradientPrimitive2D(
- const basegfx::B2DRange& rObjectRange,
- const attribute::FillGradientAttribute& rFillGradient);
-
- /// data read access
- const basegfx::B2DRange& getObjectRange() const { return maObjectRange; }
- const attribute::FillGradientAttribute& getFillGradient() const { return maFillGradient; }
-
- /// compare operator
- virtual bool operator==(const BasePrimitive2D& rPrimitive) const;
-
- /// get range
- virtual basegfx::B2DRange getB2DRange(const geometry::ViewInformation2D& rViewInformation) const;
-
- /// provide unique ID
- DeclPrimitrive2DIDBlock()
- };
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif //INCLUDED_DRAWINGLAYER_PRIMITIVE2D_FILLGRADIENTPRIMITIVE2D_HXX
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/primitive2d/fillhatchprimitive2d.hxx b/drawinglayer/inc/drawinglayer/primitive2d/fillhatchprimitive2d.hxx
deleted file mode 100644
index 2f4bea4ee1..0000000000
--- a/drawinglayer/inc/drawinglayer/primitive2d/fillhatchprimitive2d.hxx
+++ /dev/null
@@ -1,101 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_PRIMITIVE2D_FILLHATCHPRIMITIVE2D_HXX
-#define INCLUDED_DRAWINGLAYER_PRIMITIVE2D_FILLHATCHPRIMITIVE2D_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <drawinglayer/primitive2d/baseprimitive2d.hxx>
-#include <drawinglayer/attribute/fillhatchattribute.hxx>
-#include <basegfx/color/bcolor.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-// FillHatchPrimitive2D class
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- /** FillHatchPrimitive2D class
-
- This class defines a hatch filling for a rectangular area. The
- Range is defined by the Transformation, the hatch by the FillHatchAttribute.
- If the background is to be filled, a flag in FillHatchAttribute is set and
- the BColor defines the background color.
-
- The decomposition will deliver the hatch lines.
- */
- class DRAWINGLAYER_DLLPUBLIC FillHatchPrimitive2D : public BufferedDecompositionPrimitive2D
- {
- private:
- /// the geometric definition
- basegfx::B2DRange maObjectRange;
-
- /// the hatch definition
- attribute::FillHatchAttribute maFillHatch;
-
- /// hatch background color (if used)
- basegfx::BColor maBColor;
-
- protected:
- /// local decomposition.
- virtual Primitive2DSequence create2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const;
-
- public:
- /// constructor
- FillHatchPrimitive2D(
- const basegfx::B2DRange& rObjectRange,
- const basegfx::BColor& rBColor,
- const attribute::FillHatchAttribute& rFillHatch);
-
- /// data read access
- const basegfx::B2DRange& getObjectRange() const { return maObjectRange; }
- const attribute::FillHatchAttribute& getFillHatch() const { return maFillHatch; }
- const basegfx::BColor& getBColor() const { return maBColor; }
-
- /// compare operator
- virtual bool operator==(const BasePrimitive2D& rPrimitive) const;
-
- /// get range
- virtual basegfx::B2DRange getB2DRange(const geometry::ViewInformation2D& rViewInformation) const;
-
- /// provide unique ID
- DeclPrimitrive2DIDBlock()
- };
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif //INCLUDED_DRAWINGLAYER_PRIMITIVE2D_FILLHATCHPRIMITIVE2D_HXX
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/primitive2d/graphicprimitive2d.hxx b/drawinglayer/inc/drawinglayer/primitive2d/graphicprimitive2d.hxx
deleted file mode 100644
index 5eaecd8d4a..0000000000
--- a/drawinglayer/inc/drawinglayer/primitive2d/graphicprimitive2d.hxx
+++ /dev/null
@@ -1,110 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_PRIMITIVE2D_GRAPHICPRIMITIVE2D_HXX
-#define INCLUDED_DRAWINGLAYER_PRIMITIVE2D_GRAPHICPRIMITIVE2D_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <drawinglayer/primitive2d/baseprimitive2d.hxx>
-#include <basegfx/matrix/b2dhommatrix.hxx>
-#include <svtools/grfmgr.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- /** GraphicPrimitive2D class
-
- Primitive to hold graphics defined by GraphicObject and GraphicAttr
- combination. This includes MetaFiles and diverse pixel-oriented graphic
- formats. It even includes animated GIFs, Croppings and other changes
- defined in GraphicAttr.
-
- This makes the decomposition contain a wide variety of possibilites,
- too. From a simple BitmapPrimitive over AnimatedSwitchPrimitive2D,
- MetafilePrimitive2D (with and without embedding in a masking when e.g.
- the Metafile is bigger than the geometry) and embeddings in
- TransformPrimitive2D and MaskPrimitive2D for croppings.
-
- The primitive geometry area is defined by Transform.
- */
- class DRAWINGLAYER_DLLPUBLIC GraphicPrimitive2D : public BufferedDecompositionPrimitive2D
- {
- private:
- /// the geometric definition
- basegfx::B2DHomMatrix maTransform;
-
- /// the GraphicObject with all it's content possibilities
- GraphicObject maGraphicObject;
-
- /// The GraphicAttr with all it's modification possibilities
- GraphicAttr maGraphicAttr;
-
- protected:
- /// local decomposition
- virtual Primitive2DSequence create2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const;
-
- public:
- /// constructor(s)
- GraphicPrimitive2D(
- const basegfx::B2DHomMatrix& rTransform,
- const GraphicObject& rGraphicObject,
- const GraphicAttr& rGraphicAttr);
- GraphicPrimitive2D(
- const basegfx::B2DHomMatrix& rTransform,
- const GraphicObject& rGraphicObject);
-
- /// data read access
- const basegfx::B2DHomMatrix& getTransform() const { return maTransform; }
- const GraphicObject& getGraphicObject() const { return maGraphicObject; }
- const GraphicAttr& getGraphicAttr() const { return maGraphicAttr; }
- bool isTransparent() const;
-
- /// compare operator
- virtual bool operator==(const BasePrimitive2D& rPrimitive) const;
-
- /// get range
- virtual basegfx::B2DRange getB2DRange(const geometry::ViewInformation2D& rViewInformation) const;
-
- /// provide unique ID
- DeclPrimitrive2DIDBlock()
- };
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif // INCLUDED_DRAWINGLAYER_PRIMITIVE2D_GRAPHICPRIMITIVE2D_HXX
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/primitive2d/gridprimitive2d.hxx b/drawinglayer/inc/drawinglayer/primitive2d/gridprimitive2d.hxx
deleted file mode 100644
index b75e4755d0..0000000000
--- a/drawinglayer/inc/drawinglayer/primitive2d/gridprimitive2d.hxx
+++ /dev/null
@@ -1,131 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_PRIMITIVE2D_GRIDPRIMITIVE2D_HXX
-#define INCLUDED_DRAWINGLAYER_PRIMITIVE2D_GRIDPRIMITIVE2D_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <drawinglayer/primitive2d/baseprimitive2d.hxx>
-#include <basegfx/matrix/b2dhommatrix.hxx>
-#include <basegfx/color/bcolor.hxx>
-#include <vcl/bitmapex.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-// GridPrimitive2D class
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- /** GridPrimitive2D class
-
- This primitive is specialized to Grid visualisation. The graphic definition
- (Transform) contains the whole grid area, but will of course be combined
- with the visible area (Viewport) when decomposed. Also a reolution-dependent
- point reduction is used to not create too much grid visualisation data. This
- makes this primitive highly view-dependent and it dynamically buffers
- the last decomposition dependent from the Viewport used.
- */
- class DRAWINGLAYER_DLLPUBLIC GridPrimitive2D : public BufferedDecompositionPrimitive2D
- {
- private:
- /// The geometry definition for the grid area
- basegfx::B2DHomMatrix maTransform;
-
- /// grid layout definitions
- double mfWidth;
- double mfHeight;
- double mfSmallestViewDistance;
- double mfSmallestSubdivisionViewDistance;
- sal_uInt32 mnSubdivisionsX;
- sal_uInt32 mnSubdivisionsY;
-
- /// Grid color for single-pixel grid points
- basegfx::BColor maBColor;
-
- /// The Bitmap (with transparence) for grid cross points
- BitmapEx maCrossMarker;
-
- /** the last used object to view transformtion and the last Viewport,
- used from getDecomposition for decide buffering
- */
- basegfx::B2DHomMatrix maLastObjectToViewTransformation;
- basegfx::B2DRange maLastViewport;
-
- protected:
- /// create local decomposition
- virtual Primitive2DSequence create2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const;
-
- public:
- /// constructor
- GridPrimitive2D(
- const basegfx::B2DHomMatrix& rTransform,
- double fWidth,
- double fHeight,
- double fSmallestViewDistance,
- double fSmallestSubdivisionViewDistance,
- sal_uInt32 nSubdivisionsX,
- sal_uInt32 nSubdivisionsY,
- const basegfx::BColor& rBColor,
- const BitmapEx& rCrossMarker);
-
- /// data read access
- const basegfx::B2DHomMatrix& getTransform() const { return maTransform; }
- double getWidth() const { return mfWidth; }
- double getHeight() const { return mfHeight; }
- double getSmallestViewDistance() const { return mfSmallestViewDistance; }
- double getSmallestSubdivisionViewDistance() const { return mfSmallestSubdivisionViewDistance; }
- sal_uInt32 getSubdivisionsX() const { return mnSubdivisionsX; }
- sal_uInt32 getSubdivisionsY() const { return mnSubdivisionsY; }
- const basegfx::BColor& getBColor() const { return maBColor; }
- const BitmapEx& getCrossMarker() const { return maCrossMarker; }
-
- /// compare operator
- virtual bool operator==(const BasePrimitive2D& rPrimitive) const;
-
- /// get 2d range
- virtual basegfx::B2DRange getB2DRange(const geometry::ViewInformation2D& rViewInformation) const;
-
- /// provide unique ID
- DeclPrimitrive2DIDBlock()
-
- /// Overload standard getDecomposition call to be view-dependent here
- virtual Primitive2DSequence get2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const;
- };
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif //INCLUDED_DRAWINGLAYER_PRIMITIVE2D_GRIDPRIMITIVE2D_HXX
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/primitive2d/groupprimitive2d.hxx b/drawinglayer/inc/drawinglayer/primitive2d/groupprimitive2d.hxx
deleted file mode 100644
index c0af7663a1..0000000000
--- a/drawinglayer/inc/drawinglayer/primitive2d/groupprimitive2d.hxx
+++ /dev/null
@@ -1,107 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_PRIMITIVE2D_GROUPPRIMITIVE2D_HXX
-#define INCLUDED_DRAWINGLAYER_PRIMITIVE2D_GROUPPRIMITIVE2D_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <drawinglayer/primitive2d/baseprimitive2d.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-// GroupPrimitive2D class
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- /** GroupPrimitive2D class
-
- Baseclass for all grouping 2D primitives
-
- The grouping primitive in it's basic form is capable of holding
- a child primitive content and returns it on decomposition on default.
- It is used for two main purposes, but more may apply:
-
- - to transport extended information, e.g. for text classification,
- see e.g. TextHierarchy*Primitive2D implementations. Since they
- decompose to their child content, renderers not aware/interested
- in that extra information will just ignore these primitives
-
- - to encapsulate common geometry, e.g. the ShadowPrimitive2D implements
- applying a generic shadow to a child sequence by adding the needed
- offset and color stuff in the decomposition
-
- In most cases the decomposition is straightforward, so by default
- this primitive will not buffer the result and is not derived from
- BufferedDecompositionPrimitive2D, but from BasePrimitive2D.
-
- A renderer has to take GroupPrimitive2D derivations into account which
- are used to hold a state.
-
- Current Basic 2D StatePrimitives are:
-
- - TransparencePrimitive2D (objects with freely defined transparence)
- - InvertPrimitive2D (for XOR)
- - MaskPrimitive2D (for masking)
- - ModifiedColorPrimitive2D (for a stack of color modifications)
- - TransformPrimitive2D (for a transformation stack)
- */
- class DRAWINGLAYER_DLLPUBLIC GroupPrimitive2D : public BasePrimitive2D
- {
- private:
- /// the children. Declared private since this shall never be changed at all after construction
- Primitive2DSequence maChildren;
-
- public:
- /// constructor
- GroupPrimitive2D(const Primitive2DSequence& rChildren);
-
- /// data read access
- const Primitive2DSequence& getChildren() const { return maChildren; }
-
- /// compare operator
- virtual bool operator==( const BasePrimitive2D& rPrimitive ) const;
-
- /// local decomposition. Implementation will just return children
- virtual Primitive2DSequence get2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const;
-
- /// provide unique ID
- DeclPrimitrive2DIDBlock()
- };
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif //INCLUDED_DRAWINGLAYER_PRIMITIVE2D_GROUPPRIMITIVE2D_HXX
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/primitive2d/helplineprimitive2d.hxx b/drawinglayer/inc/drawinglayer/primitive2d/helplineprimitive2d.hxx
deleted file mode 100644
index 4b6120d2f0..0000000000
--- a/drawinglayer/inc/drawinglayer/primitive2d/helplineprimitive2d.hxx
+++ /dev/null
@@ -1,126 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_PRIMITIVE2D_HELPLINEPRIMITIVE2D_HXX
-#define INCLUDED_DRAWINGLAYER_PRIMITIVE2D_HELPLINEPRIMITIVE2D_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <drawinglayer/primitive2d/baseprimitive2d.hxx>
-#include <basegfx/color/bcolor.hxx>
-#include <basegfx/matrix/b2dhommatrix.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-// HelplinePrimitive2D class
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- /** HelplineStyle2D definition
-
- The available styles of Helplines
- */
- enum HelplineStyle2D
- {
- HELPLINESTYLE2D_POINT,
- HELPLINESTYLE2D_LINE
- };
-
- /** HelplinePrimitive2D class
-
- This primitive provides a view-dependent helpline definition. The Helpline
- is defined by a line equation (Point and vector) and a style. When the style
- is a line, dependent from Viewport the visible part of that Helpline is
- constructed. For Point, a cross is constructed. This primitive is highly
- view-dependent.
-
- The visualisation uses the two given colors to create a dashed line with
- the given dash length.
- */
- class DRAWINGLAYER_DLLPUBLIC HelplinePrimitive2D : public BufferedDecompositionPrimitive2D
- {
- private:
- /// Helpline geometry definition
- basegfx::B2DPoint maPosition;
- basegfx::B2DVector maDirection;
- HelplineStyle2D meStyle;
-
- /// Helpline style definition
- basegfx::BColor maRGBColA;
- basegfx::BColor maRGBColB;
- double mfDiscreteDashLength;
-
- /** the last used object to view transformtion and the last Viewport,
- used from getDecomposition for decide buffering
- */
- basegfx::B2DHomMatrix maLastObjectToViewTransformation;
- basegfx::B2DRange maLastViewport;
-
- protected:
- /// create local decomposition
- virtual Primitive2DSequence create2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const;
-
- public:
- /// constructor
- HelplinePrimitive2D(
- const basegfx::B2DPoint& rPosition,
- const basegfx::B2DVector& rDirection,
- HelplineStyle2D eStyle,
- const basegfx::BColor& rRGBColA,
- const basegfx::BColor& aRGBColB,
- double fDiscreteDashLength);
-
- /// data read access
- const basegfx::B2DPoint& getPosition() const { return maPosition; }
- const basegfx::B2DVector& getDirection() const { return maDirection; }
- HelplineStyle2D getStyle() const { return meStyle; }
- const basegfx::BColor& getRGBColA() const { return maRGBColA; }
- const basegfx::BColor& getRGBColB() const { return maRGBColB; }
- double getDiscreteDashLength() const { return mfDiscreteDashLength; }
-
- /// compare operator
- virtual bool operator==(const BasePrimitive2D& rPrimitive) const;
-
- /// provide unique ID
- DeclPrimitrive2DIDBlock()
-
- /// Overload standard getDecomposition call to be view-dependent here
- virtual Primitive2DSequence get2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const;
- };
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif //INCLUDED_DRAWINGLAYER_PRIMITIVE2D_HELPLINEPRIMITIVE2D_HXX
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/primitive2d/hiddengeometryprimitive2d.hxx b/drawinglayer/inc/drawinglayer/primitive2d/hiddengeometryprimitive2d.hxx
deleted file mode 100644
index 2b245fa9f5..0000000000
--- a/drawinglayer/inc/drawinglayer/primitive2d/hiddengeometryprimitive2d.hxx
+++ /dev/null
@@ -1,78 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * The Contents of this file are made available subject to
- * the terms of GNU Lesser General Public License Version 2.1.
- *
- *
- * GNU Lesser General Public License Version 2.1
- * =============================================
- * Copyright 2005 by Sun Microsystems, Inc.
- * 901 San Antonio Road, Palo Alto, CA 94303, USA
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License version 2.1, as published by the Free Software Foundation.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_PRIMITIVE2D_HIDDENGEOMETRYPRIMITIVE2D_HXX
-#define INCLUDED_DRAWINGLAYER_PRIMITIVE2D_HIDDENGEOMETRYPRIMITIVE2D_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <drawinglayer/primitive2d/groupprimitive2d.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- // This primitive is used to represent geometry for non-visible objects,
- // e.g. a PresObj's outline. To still be able to use primitives for HitTest
- // functionality, the 2d decompositions will produce an as much as possible
- // simplified line geometry encapsulated in this primtive when there is no
- // line geometry. In a further enchanced version this may change to 'if neither
- // filled nor lines' creation criteria. The whole primitive decomposes to nothing,
- // so no one not knowing it will be influenced. Only helper processors for hit test
- // (and maybe BoundRect extractors) will use it and it's children subcontent.
- class DRAWINGLAYER_DLLPUBLIC HiddenGeometryPrimitive2D : public GroupPrimitive2D
- {
- public:
- HiddenGeometryPrimitive2D(const Primitive2DSequence& rChildren);
-
- // despite returning an empty decomposition since it's no visualisation data,
- // range calculation is intended to use hidden geometry, so
- // the local implementation will return the children's range
- virtual basegfx::B2DRange getB2DRange(const geometry::ViewInformation2D& rViewInformation) const;
-
- /// local decomposition. Implementation will return empty Primitive2DSequence
- virtual Primitive2DSequence get2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const;
-
- // provide unique ID
- DeclPrimitrive2DIDBlock()
- };
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif //INCLUDED_DRAWINGLAYER_PRIMITIVE2D_HIDDENGEOMETRYPRIMITIVE2D_HXX
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/primitive2d/invertprimitive2d.hxx b/drawinglayer/inc/drawinglayer/primitive2d/invertprimitive2d.hxx
deleted file mode 100644
index f9a669aa86..0000000000
--- a/drawinglayer/inc/drawinglayer/primitive2d/invertprimitive2d.hxx
+++ /dev/null
@@ -1,71 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_PRIMITIVE2D_INVERTPRIMITIVE2D_HXX
-#define INCLUDED_DRAWINGLAYER_PRIMITIVE2D_INVERTPRIMITIVE2D_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <drawinglayer/primitive2d/groupprimitive2d.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- /** InvertPrimitive2D class
-
- This is a helper class which encapsulates geometry that should be
- painted XOR, e.g. old cursor visualisations. It decomposes to
- it's content, so when not supporting it, the contained geometry
- will be visualized normally.
- Unfortunately this is still needed, but hard to support on various
- systems. XOR painting needs read access to the target, so modern
- graphic systems tend to not support it anymore.
- */
- class DRAWINGLAYER_DLLPUBLIC InvertPrimitive2D : public GroupPrimitive2D
- {
- public:
- /// constructor
- InvertPrimitive2D(const Primitive2DSequence& rChildren);
-
- /// provide unique ID
- DeclPrimitrive2DIDBlock()
- };
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif //INCLUDED_DRAWINGLAYER_PRIMITIVE2D_INVERTPRIMITIVE2D_HXX
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/primitive2d/markerarrayprimitive2d.hxx b/drawinglayer/inc/drawinglayer/primitive2d/markerarrayprimitive2d.hxx
deleted file mode 100644
index abaec4138f..0000000000
--- a/drawinglayer/inc/drawinglayer/primitive2d/markerarrayprimitive2d.hxx
+++ /dev/null
@@ -1,100 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_PRIMITIVE2D_MARKERARRAYPRIMITIVE2D_HXX
-#define INCLUDED_DRAWINGLAYER_PRIMITIVE2D_MARKERARRAYPRIMITIVE2D_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <drawinglayer/primitive2d/baseprimitive2d.hxx>
-#include <basegfx/color/bcolor.hxx>
-#include <vcl/bitmapex.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-// MarkerArrayPrimitive2D class
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- /** MarkerArrayPrimitive2D class
-
- This primtive defines an array of markers. Their size is defined
- in pixels and independent from the view transformation which makes
- this primitive highly view-dependent. It is also transformation
- invariant, so that the bitmap is always visualized unscaled and
- unrotated.
- It is used e.g. for grid position visualisation. The given Bitmap
- (with transparence) is defined to be visible centered at each of the given
- positions.
- It decomposes to the needed number of BitmapPrimitive2D's, so it would
- be efficient to handle it directly in a renderer.
- */
- class DRAWINGLAYER_DLLPUBLIC MarkerArrayPrimitive2D : public BufferedDecompositionPrimitive2D
- {
- private:
- /// the positions for the marker
- std::vector< basegfx::B2DPoint > maPositions;
-
- /// the marker definintion to visualize
- BitmapEx maMarker;
-
- protected:
- /// create local decomposition
- virtual Primitive2DSequence create2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const;
-
- public:
- /// constructor
- MarkerArrayPrimitive2D(
- const std::vector< basegfx::B2DPoint >& rPositions,
- const BitmapEx& rMarker);
-
- /// data read access
- const std::vector< basegfx::B2DPoint >& getPositions() const { return maPositions; }
- const BitmapEx& getMarker() const { return maMarker; }
-
- /// compare operator
- virtual bool operator==(const BasePrimitive2D& rPrimitive) const;
-
- /// get range
- virtual basegfx::B2DRange getB2DRange(const geometry::ViewInformation2D& rViewInformation) const;
-
- /// provide unique ID
- DeclPrimitrive2DIDBlock()
- };
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif //INCLUDED_DRAWINGLAYER_PRIMITIVE2D_MARKERARRAYPRIMITIVE2D_HXX
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/primitive2d/maskprimitive2d.hxx b/drawinglayer/inc/drawinglayer/primitive2d/maskprimitive2d.hxx
deleted file mode 100644
index f39572317a..0000000000
--- a/drawinglayer/inc/drawinglayer/primitive2d/maskprimitive2d.hxx
+++ /dev/null
@@ -1,91 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_PRIMITIVE2D_MASKPRIMITIVE2D_HXX
-#define INCLUDED_DRAWINGLAYER_PRIMITIVE2D_MASKPRIMITIVE2D_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <drawinglayer/primitive2d/groupprimitive2d.hxx>
-#include <basegfx/polygon/b2dpolypolygon.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- /** MaskPrimitive2D class
-
- This is the central masking primitive. It's a grouping
- primitive and contains a PolyPolygon which defines the visible
- area. Only visualisation parts of the Child primitive sequence
- inside of the mask PolyPolygon is defined to be visible.
-
- This primitive should be handled by a renderer. If it is not handled,
- it decomposes to it's Child content, and thus the visualisation would
- contaiun no clips.
-
- The geometrc range of this primitive is completely defined by the Mask
- PolyPolygon since by definition nothing outside of the mask is visible.
- */
- class DRAWINGLAYER_DLLPUBLIC MaskPrimitive2D : public GroupPrimitive2D
- {
- private:
- /// the mask PolyPolygon
- basegfx::B2DPolyPolygon maMask;
-
- public:
- /// constructor
- MaskPrimitive2D(
- const basegfx::B2DPolyPolygon& rMask,
- const Primitive2DSequence& rChildren);
-
- /// data read access
- const basegfx::B2DPolyPolygon& getMask() const { return maMask; }
-
- /// compare operator
- virtual bool operator==(const BasePrimitive2D& rPrimitive) const;
-
- /// get range
- virtual basegfx::B2DRange getB2DRange(const geometry::ViewInformation2D& rViewInformation) const;
-
- /// provide unique ID
- DeclPrimitrive2DIDBlock()
- };
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif //INCLUDED_DRAWINGLAYER_PRIMITIVE2D_MASKPRIMITIVE2D_HXX
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/primitive2d/mediaprimitive2d.hxx b/drawinglayer/inc/drawinglayer/primitive2d/mediaprimitive2d.hxx
deleted file mode 100644
index 095fca6409..0000000000
--- a/drawinglayer/inc/drawinglayer/primitive2d/mediaprimitive2d.hxx
+++ /dev/null
@@ -1,105 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_PRIMITIVE2D_MEDIAPRIMITIVE2D_HXX
-#define INCLUDED_DRAWINGLAYER_PRIMITIVE2D_MEDIAPRIMITIVE2D_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <drawinglayer/primitive2d/baseprimitive2d.hxx>
-#include <basegfx/matrix/b2dhommatrix.hxx>
-#include <basegfx/color/bcolor.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- /** MediaPrimitive2D class
-
- This is a unified primitive for Media visualisation, e.g. animations
- or sounds. It's geometry is defined by Transform. For conveinience,
- it also contains a discrete border size (aka Pixels) which will be added
- if used. This makes it a view-dependent primitive. It also gets a filled
- background and the decomposition will try to create a graphic representation
- if te content (defined by the URL), e.g. a still frome for animated stuff.
- */
- class DRAWINGLAYER_DLLPUBLIC MediaPrimitive2D : public BufferedDecompositionPrimitive2D
- {
- private:
- /// the geometry definition
- basegfx::B2DHomMatrix maTransform;
-
- /// the content definition
- rtl::OUString maURL;
-
- /// style: background color
- basegfx::BColor maBackgroundColor;
-
- /// discrete border (in 'pixels')
- sal_uInt32 mnDiscreteBorder;
-
- protected:
- /// local decomposition
- virtual Primitive2DSequence create2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const;
-
- public:
- /// constructor
- MediaPrimitive2D(
- const basegfx::B2DHomMatrix& rTransform,
- const rtl::OUString& rURL,
- const basegfx::BColor& rBackgroundColor,
- sal_uInt32 nDiscreteBorder);
-
- /// data read access
- const basegfx::B2DHomMatrix& getTransform() const { return maTransform; }
- const rtl::OUString& getURL() const { return maURL; }
- const basegfx::BColor& getBackgroundColor() const { return maBackgroundColor; }
- sal_uInt32 getDiscreteBorder() const { return mnDiscreteBorder; }
-
- /// compare operator
- virtual bool operator==(const BasePrimitive2D& rPrimitive) const;
-
- /// get range
- virtual basegfx::B2DRange getB2DRange(const geometry::ViewInformation2D& rViewInformation) const;
-
- /// provide unique ID
- DeclPrimitrive2DIDBlock()
- };
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif // INCLUDED_DRAWINGLAYER_PRIMITIVE2D_MEDIAPRIMITIVE2D_HXX
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/primitive2d/metafileprimitive2d.hxx b/drawinglayer/inc/drawinglayer/primitive2d/metafileprimitive2d.hxx
deleted file mode 100644
index 3dfdf9ad62..0000000000
--- a/drawinglayer/inc/drawinglayer/primitive2d/metafileprimitive2d.hxx
+++ /dev/null
@@ -1,106 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_PRIMITIVE2D_METAFILEPRIMITIVE2D_HXX
-#define INCLUDED_DRAWINGLAYER_PRIMITIVE2D_METAFILEPRIMITIVE2D_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <drawinglayer/primitive2d/baseprimitive2d.hxx>
-#include <basegfx/matrix/b2dhommatrix.hxx>
-#include <vcl/gdimtf.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-// MetafilePrimitive2D class
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- /** MetafilePrimitive2D class
-
- This is the MetaFile representing primitive. It's geometry is defined
- by MetaFileTransform. The content (defined by MetaFile) will be scaled
- to the geometric definiton by using PrefMapMode and PrefSize of the
- Metafile.
-
- It has shown that this not always guarantees that all Metafile content
- is inside the geometric definition, but this primitive defines that this
- is the case to allow a getB2DRange implementation. If it cannot be
- guaranteed that the Metafile is inside the geometric definition, it should
- be embedded to a MaskPrimitive2D.
-
- This primitive has no decomposition yet, so when not supported by a renderer,
- it will not be visualized.
-
- In the future, a decomposition implementation would be appreciated and would
- have many advantages; Metafile would no longer have to be rendered by
- sub-systems and a standard way for converting Metafiles would exist.
- */
- class DRAWINGLAYER_DLLPUBLIC MetafilePrimitive2D : public BufferedDecompositionPrimitive2D
- {
- private:
- /// the geometry definition
- basegfx::B2DHomMatrix maMetaFileTransform;
-
- /// the content definition
- GDIMetaFile maMetaFile;
-
- protected:
- /// local decomposition.
- virtual Primitive2DSequence create2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const;
- public:
- /// constructor
- MetafilePrimitive2D(
- const basegfx::B2DHomMatrix& rMetaFileTransform,
- const GDIMetaFile& rMetaFile);
-
- /// data read access
- const basegfx::B2DHomMatrix& getTransform() const { return maMetaFileTransform; }
- const GDIMetaFile& getMetaFile() const { return maMetaFile; }
-
- /// compare operator
- virtual bool operator==(const BasePrimitive2D& rPrimitive) const;
-
- /// get range
- virtual basegfx::B2DRange getB2DRange(const geometry::ViewInformation2D& rViewInformation) const;
-
- /// provide unique ID
- DeclPrimitrive2DIDBlock()
- };
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif //INCLUDED_DRAWINGLAYER_PRIMITIVE2D_METAFILEPRIMITIVE2D_HXX
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/primitive2d/modifiedcolorprimitive2d.hxx b/drawinglayer/inc/drawinglayer/primitive2d/modifiedcolorprimitive2d.hxx
deleted file mode 100644
index 1a76072284..0000000000
--- a/drawinglayer/inc/drawinglayer/primitive2d/modifiedcolorprimitive2d.hxx
+++ /dev/null
@@ -1,91 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_PRIMITIVE2D_MODIFIEDCOLORPRIMITIVE2D_HXX
-#define INCLUDED_DRAWINGLAYER_PRIMITIVE2D_MODIFIEDCOLORPRIMITIVE2D_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <drawinglayer/primitive2d/groupprimitive2d.hxx>
-#include <basegfx/color/bcolormodifier.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- /** ModifiedColorPrimitive2D class
-
- This primitive is a grouping primitive and allows to define
- how the colors of it's child content shall be modified for
- visualisation. This can be (and is) used e.g. for generic shadow
- visualisation by forcing all color usages of the contained
- sub-content to the shadow color.
-
- For the possibilities of color modifications, please refer
- to the basegfx::BColorModifier definitions in basegfx. For
- processing there is tooling in basegfx to build a stack of
- BColorModifiers to always be able to proccess the correct
- colors.
-
- If a renderer does not handle this primitive, the content will
- be visualized unchanged.
- */
- class DRAWINGLAYER_DLLPUBLIC ModifiedColorPrimitive2D : public GroupPrimitive2D
- {
- private:
- /// The ColorModifier to use
- basegfx::BColorModifier maColorModifier;
-
- public:
- /// constructor
- ModifiedColorPrimitive2D(
- const Primitive2DSequence& rChildren,
- const basegfx::BColorModifier& rColorModifier);
-
- /// data read access
- const basegfx::BColorModifier& getColorModifier() const { return maColorModifier; }
-
- /// compare operator
- virtual bool operator==(const BasePrimitive2D& rPrimitive) const;
-
- /// provide unique ID
- DeclPrimitrive2DIDBlock()
- };
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif //INCLUDED_DRAWINGLAYER_PRIMITIVE2D_MODIFIEDCOLORPRIMITIVE2D_HXX
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/primitive2d/pagepreviewprimitive2d.hxx b/drawinglayer/inc/drawinglayer/primitive2d/pagepreviewprimitive2d.hxx
deleted file mode 100644
index fa17caaa55..0000000000
--- a/drawinglayer/inc/drawinglayer/primitive2d/pagepreviewprimitive2d.hxx
+++ /dev/null
@@ -1,116 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_PRIMITIVE2D_PAGEPREVIEWPRIMITIVE2D_HXX
-#define INCLUDED_DRAWINGLAYER_PRIMITIVE2D_PAGEPREVIEWPRIMITIVE2D_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <drawinglayer/primitive2d/baseprimitive2d.hxx>
-#include <com/sun/star/drawing/XDrawPage.hpp>
-#include <basegfx/matrix/b2dhommatrix.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- /** PagePreviewPrimitive2D class
-
- This primitive is needed to have the correct XDrawPage as ViewInformation for decomposing
- the page contents (given as PageContent here) if these contain e.g.
- view-dependent (in this case XDrawPage-dependent) text fields like PageNumber. If You want
- those primitives to be visualized correctly, Your renderer needs to locally correct it's
- ViewInformation2D to reference the new XDrawPage.
- */
- class DRAWINGLAYER_DLLPUBLIC PagePreviewPrimitive2D : public BufferedDecompositionPrimitive2D
- {
- private:
- /** the XDrawPage visualized by this primitive. When we go forward with primitives
- this will not only be used by the renderers to provide the correct decompose
- graphic attribute context, but also to completely create the page's sub-content.
- */
- const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XDrawPage > mxDrawPage;
-
- /// the PageContent
- Primitive2DSequence maPageContent;
-
- /// the own geometry
- basegfx::B2DHomMatrix maTransform;
-
- /// content width and height
- double mfContentWidth;
- double mfContentHeight;
-
- /// bitfield
- /// flag to allow keeping the aspect ratio
- unsigned mbKeepAspectRatio : 1;
-
- protected:
- /// local decomposition. Implementation will just return children
- virtual Primitive2DSequence create2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const;
-
- public:
- /// constructor
- PagePreviewPrimitive2D(
- const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XDrawPage >& rxDrawPage,
- const basegfx::B2DHomMatrix& rTransform,
- double fContentWidth,
- double fContentHeight,
- const Primitive2DSequence& rPageContent,
- bool bKeepAspectRatio);
-
- /// data read access
- const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XDrawPage >& getXDrawPage() const { return mxDrawPage; }
- const Primitive2DSequence& getPageContent() const { return maPageContent; }
- const basegfx::B2DHomMatrix& getTransform() const { return maTransform; }
- double getContentWidth() const { return mfContentWidth; }
- double getContentHeight() const { return mfContentHeight; }
- bool getKeepAspectRatio() const { return mbKeepAspectRatio; }
-
- /// compare operator
- virtual bool operator==(const BasePrimitive2D& rPrimitive) const;
-
- /// own getB2DRange
- virtual basegfx::B2DRange getB2DRange(const geometry::ViewInformation2D& rViewInformation) const;
-
- /// provide unique ID
- DeclPrimitrive2DIDBlock()
- };
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif //INCLUDED_DRAWINGLAYER_PRIMITIVE2D_PAGEPREVIEWPRIMITIVE2D_HXX
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/primitive2d/pointarrayprimitive2d.hxx b/drawinglayer/inc/drawinglayer/primitive2d/pointarrayprimitive2d.hxx
deleted file mode 100644
index 3a6d4007ba..0000000000
--- a/drawinglayer/inc/drawinglayer/primitive2d/pointarrayprimitive2d.hxx
+++ /dev/null
@@ -1,95 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_PRIMITIVE2D_POINTARRAYPRIMITIVE2D_HXX
-#define INCLUDED_DRAWINGLAYER_PRIMITIVE2D_POINTARRAYPRIMITIVE2D_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <drawinglayer/primitive2d/baseprimitive2d.hxx>
-#include <basegfx/color/bcolor.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-// PointArrayPrimitive2D class
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- /** PointArrayPrimitive2D class
-
- This primitive defines single,discrete 'pixels' for the given
- positions in the given color. This makes it view-dependent since
- the logic size of a 'pixel' depends on the view transformation.
-
- This is one of the non-decomposable primitives, so a renderer
- should proccess it (Currently it is only used for grid visualisation,
- but this may change).
- */
- class DRAWINGLAYER_DLLPUBLIC PointArrayPrimitive2D : public BasePrimitive2D
- {
- private:
- /// the array of positions
- std::vector< basegfx::B2DPoint > maPositions;
-
- /// the color to use
- basegfx::BColor maRGBColor;
-
- /// #i96669# add simple range buffering for this primitive
- basegfx::B2DRange maB2DRange;
-
- public:
- /// constructor
- PointArrayPrimitive2D(
- const std::vector< basegfx::B2DPoint >& rPositions,
- const basegfx::BColor& rRGBColor);
-
- /// data read access
- const std::vector< basegfx::B2DPoint >& getPositions() const { return maPositions; }
- const basegfx::BColor& getRGBColor() const { return maRGBColor; }
-
- /// compare operator
- virtual bool operator==(const BasePrimitive2D& rPrimitive) const;
-
- /// get range
- virtual basegfx::B2DRange getB2DRange(const geometry::ViewInformation2D& rViewInformation) const;
-
- /// provide unique ID
- DeclPrimitrive2DIDBlock()
- };
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif //INCLUDED_DRAWINGLAYER_PRIMITIVE2D_POINTARRAYPRIMITIVE2D_HXX
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/primitive2d/polygonprimitive2d.hxx b/drawinglayer/inc/drawinglayer/primitive2d/polygonprimitive2d.hxx
deleted file mode 100644
index edda68c55a..0000000000
--- a/drawinglayer/inc/drawinglayer/primitive2d/polygonprimitive2d.hxx
+++ /dev/null
@@ -1,329 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_PRIMITIVE2D_POLYGONPRIMITIVE2D_HXX
-#define INCLUDED_DRAWINGLAYER_PRIMITIVE2D_POLYGONPRIMITIVE2D_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <drawinglayer/primitive2d/baseprimitive2d.hxx>
-#include <drawinglayer/attribute/lineattribute.hxx>
-#include <drawinglayer/attribute/strokeattribute.hxx>
-#include <drawinglayer/attribute/linestartendattribute.hxx>
-#include <basegfx/matrix/b2dhommatrix.hxx>
-#include <basegfx/polygon/b2dpolygon.hxx>
-#include <basegfx/color/bcolor.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-// PolygonHairlinePrimitive2D class
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- /** PolygonHairlinePrimitive2D class
-
- This primitive defines a Hairline. Since hairlines are view-dependent,
- this primitive is view-dependent, too.
-
- This is one of the non-decomposable primitives, so a renderer
- should proccess it.
- */
- class DRAWINGLAYER_DLLPUBLIC PolygonHairlinePrimitive2D : public BasePrimitive2D
- {
- private:
- /// the hairline geometry
- basegfx::B2DPolygon maPolygon;
-
- /// the hairline color
- basegfx::BColor maBColor;
-
- public:
- /// constructor
- PolygonHairlinePrimitive2D(
- const basegfx::B2DPolygon& rPolygon,
- const basegfx::BColor& rBColor);
-
- /// data read access
- const basegfx::B2DPolygon& getB2DPolygon() const { return maPolygon; }
- const basegfx::BColor& getBColor() const { return maBColor; }
-
- /// compare operator
- virtual bool operator==(const BasePrimitive2D& rPrimitive) const;
-
- /// get range
- virtual basegfx::B2DRange getB2DRange(const geometry::ViewInformation2D& rViewInformation) const;
-
- /// provide unique ID
- DeclPrimitrive2DIDBlock()
- };
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// PolygonMarkerPrimitive2D class
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- /** PolygonMarkerPrimitive2D class
-
- This primitive defines a two-colored marker hairline which is
- dashed with the given dash length. Since hairlines are view-dependent,
- this primitive is view-dependent, too.
-
- It will be decomposed to the needed PolygonHairlinePrimitive2D if
- not handled directly by a renderer.
- */
- class DRAWINGLAYER_DLLPUBLIC PolygonMarkerPrimitive2D : public BufferedDecompositionPrimitive2D
- {
- private:
- /// the marker hairline geometry
- basegfx::B2DPolygon maPolygon;
-
- /// the two colors
- basegfx::BColor maRGBColorA;
- basegfx::BColor maRGBColorB;
-
- /// the dash distance in 'pixels'
- double mfDiscreteDashLength;
-
- /// decomposition is view-dependent, remember last InverseObjectToViewTransformation
- basegfx::B2DHomMatrix maLastInverseObjectToViewTransformation;
-
- protected:
- /// local decomposition.
- virtual Primitive2DSequence create2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const;
-
- public:
- /// constructor
- PolygonMarkerPrimitive2D(
- const basegfx::B2DPolygon& rPolygon,
- const basegfx::BColor& rRGBColorA,
- const basegfx::BColor& rRGBColorB,
- double fDiscreteDashLength);
-
- /// data read access
- const basegfx::B2DPolygon& getB2DPolygon() const { return maPolygon; }
- const basegfx::BColor& getRGBColorA() const { return maRGBColorA; }
- const basegfx::BColor& getRGBColorB() const { return maRGBColorB; }
- double getDiscreteDashLength() const { return mfDiscreteDashLength; }
-
- /// compare operator
- virtual bool operator==(const BasePrimitive2D& rPrimitive) const;
-
- /// get range
- virtual basegfx::B2DRange getB2DRange(const geometry::ViewInformation2D& rViewInformation) const;
-
- /// get local decomposition. Overloaded since this decomposition is view-dependent
- virtual Primitive2DSequence get2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const;
-
- /// provide unique ID
- DeclPrimitrive2DIDBlock()
- };
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// PolygonStrokePrimitive2D class
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- /** PolygonStrokePrimitive2D class
-
- This primitive defines a line with line width, line join, line color
- and stroke attributes. It will be decomposed dependent on the definition
- to the needed primitives, e.g. filled PolyPolygons for fat lines.
- */
- class DRAWINGLAYER_DLLPUBLIC PolygonStrokePrimitive2D : public BufferedDecompositionPrimitive2D
- {
- private:
- /// the line geometry
- basegfx::B2DPolygon maPolygon;
-
- /// the line attributes like width, join and color
- attribute::LineAttribute maLineAttribute;
-
- /// the line stroking (if used)
- attribute::StrokeAttribute maStrokeAttribute;
-
- protected:
- /// local decomposition.
- virtual Primitive2DSequence create2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const;
-
- public:
- /// constructor
- PolygonStrokePrimitive2D(
- const basegfx::B2DPolygon& rPolygon,
- const attribute::LineAttribute& rLineAttribute,
- const attribute::StrokeAttribute& rStrokeAttribute);
-
- /// constructor without stroking
- PolygonStrokePrimitive2D(
- const basegfx::B2DPolygon& rPolygon,
- const attribute::LineAttribute& rLineAttribute);
-
- /// data read access
- const basegfx::B2DPolygon& getB2DPolygon() const { return maPolygon; }
- const attribute::LineAttribute& getLineAttribute() const { return maLineAttribute; }
- const attribute::StrokeAttribute& getStrokeAttribute() const { return maStrokeAttribute; }
-
- /// compare operator
- virtual bool operator==(const BasePrimitive2D& rPrimitive) const;
-
- /// get range
- virtual basegfx::B2DRange getB2DRange(const geometry::ViewInformation2D& rViewInformation) const;
-
- /// provide unique ID
- DeclPrimitrive2DIDBlock()
- };
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// PolygonWavePrimitive2D class
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- /** PolygonWavePrimitive2D class
-
- This primitive defines a waveline based on a PolygonStrokePrimitive2D
- where the wave is defined by wave width and wave length.
- */
- class DRAWINGLAYER_DLLPUBLIC PolygonWavePrimitive2D : public PolygonStrokePrimitive2D
- {
- private:
- /// wave definition
- double mfWaveWidth;
- double mfWaveHeight;
-
- protected:
- /// local decomposition.
- virtual Primitive2DSequence create2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const;
-
- public:
- /// constructor
- PolygonWavePrimitive2D(
- const basegfx::B2DPolygon& rPolygon,
- const attribute::LineAttribute& rLineAttribute,
- const attribute::StrokeAttribute& rStrokeAttribute,
- double fWaveWidth,
- double fWaveHeight);
-
- /// constructor without stroking
- PolygonWavePrimitive2D(
- const basegfx::B2DPolygon& rPolygon,
- const attribute::LineAttribute& rLineAttribute,
- double fWaveWidth,
- double fWaveHeight);
-
- /// data read access
- double getWaveWidth() const { return mfWaveWidth; }
- double getWaveHeight() const { return mfWaveHeight; }
-
- /// compare operator
- virtual bool operator==(const BasePrimitive2D& rPrimitive) const;
-
- /// get range
- virtual basegfx::B2DRange getB2DRange(const geometry::ViewInformation2D& rViewInformation) const;
-
- /// provide unique ID
- DeclPrimitrive2DIDBlock()
- };
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// PolygonStrokeArrowPrimitive2D class
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- /** PolygonStrokeArrowPrimitive2D class
-
- This primitive defines a PolygonStrokePrimitive2D which is extended
- eventually by start and end definitions which are normally used for
- arrows.
- */
- class DRAWINGLAYER_DLLPUBLIC PolygonStrokeArrowPrimitive2D : public PolygonStrokePrimitive2D
- {
- private:
- /// geometric definitions for line start and end
- attribute::LineStartEndAttribute maStart;
- attribute::LineStartEndAttribute maEnd;
-
- protected:
- /// local decomposition.
- virtual Primitive2DSequence create2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const;
-
- public:
- /// constructor
- PolygonStrokeArrowPrimitive2D(
- const basegfx::B2DPolygon& rPolygon,
- const attribute::LineAttribute& rLineAttribute,
- const attribute::StrokeAttribute& rStrokeAttribute,
- const attribute::LineStartEndAttribute& rStart,
- const attribute::LineStartEndAttribute& rEnd);
-
- /// constructor without stroking
- PolygonStrokeArrowPrimitive2D(
- const basegfx::B2DPolygon& rPolygon,
- const attribute::LineAttribute& rLineAttribute,
- const attribute::LineStartEndAttribute& rStart,
- const attribute::LineStartEndAttribute& rEnd);
-
- /// data read access
- const attribute::LineStartEndAttribute& getStart() const { return maStart; }
- const attribute::LineStartEndAttribute& getEnd() const { return maEnd; }
-
- /// compare operator
- virtual bool operator==(const BasePrimitive2D& rPrimitive) const;
-
- /// get range
- virtual basegfx::B2DRange getB2DRange(const geometry::ViewInformation2D& rViewInformation) const;
-
- /// provide unique ID
- DeclPrimitrive2DIDBlock()
- };
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif //INCLUDED_DRAWINGLAYER_PRIMITIVE2D_POLYGONPRIMITIVE2D_HXX
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/primitive2d/polypolygonprimitive2d.hxx b/drawinglayer/inc/drawinglayer/primitive2d/polypolygonprimitive2d.hxx
deleted file mode 100644
index 1673d0d7a0..0000000000
--- a/drawinglayer/inc/drawinglayer/primitive2d/polypolygonprimitive2d.hxx
+++ /dev/null
@@ -1,451 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_PRIMITIVE2D_POLYPOLYGONPRIMITIVE2D_HXX
-#define INCLUDED_DRAWINGLAYER_PRIMITIVE2D_POLYPOLYGONPRIMITIVE2D_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <drawinglayer/primitive2d/baseprimitive2d.hxx>
-#include <drawinglayer/attribute/fillbitmapattribute.hxx>
-#include <basegfx/polygon/b2dpolypolygon.hxx>
-#include <drawinglayer/attribute/lineattribute.hxx>
-#include <drawinglayer/attribute/strokeattribute.hxx>
-#include <drawinglayer/attribute/linestartendattribute.hxx>
-#include <drawinglayer/attribute/fillgradientattribute.hxx>
-#include <drawinglayer/attribute/fillhatchattribute.hxx>
-#include <basegfx/color/bcolor.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-// PolyPolygonHairlinePrimitive2D class
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- /** PolyPolygonHairlinePrimitive2D class
-
- This primitive defines a multi-PolygonHairlinePrimitive2D and is
- just for convenience. The definition is not different from the single
- defined PolygonHairlinePrimitive2Ds.
- */
- class DRAWINGLAYER_DLLPUBLIC PolyPolygonHairlinePrimitive2D : public BufferedDecompositionPrimitive2D
- {
- private:
- /// the hairline geometry
- basegfx::B2DPolyPolygon maPolyPolygon;
-
- /// the hairline color
- basegfx::BColor maBColor;
-
- protected:
- /// local decomposition.
- virtual Primitive2DSequence create2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const;
-
- public:
- /// constructor
- PolyPolygonHairlinePrimitive2D(const basegfx::B2DPolyPolygon& rPolyPolygon, const basegfx::BColor& rBColor);
-
- /// data read access
- const basegfx::B2DPolyPolygon& getB2DPolyPolygon() const { return maPolyPolygon; }
- const basegfx::BColor& getBColor() const { return maBColor; }
-
- /// compare operator
- virtual bool operator==(const BasePrimitive2D& rPrimitive) const;
-
- /// get range
- virtual basegfx::B2DRange getB2DRange(const geometry::ViewInformation2D& rViewInformation) const;
-
- /// provide unique ID
- DeclPrimitrive2DIDBlock()
- };
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// PolyPolygonMarkerPrimitive2D class
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- /** PolyPolygonMarkerPrimitive2D class
-
- This primitive defines a multi-PolygonMarkerPrimitive2D and is
- just for convenience. The definition is not different from the single
- defined PolygonMarkerPrimitive2Ds.
- */
- class DRAWINGLAYER_DLLPUBLIC PolyPolygonMarkerPrimitive2D : public BufferedDecompositionPrimitive2D
- {
- private:
- /// the marker hairline geometry
- basegfx::B2DPolyPolygon maPolyPolygon;
-
- /// the two colors
- basegfx::BColor maRGBColorA;
- basegfx::BColor maRGBColorB;
-
- /// the dash distance in 'pixels'
- double mfDiscreteDashLength;
-
- protected:
- /// local decomposition.
- virtual Primitive2DSequence create2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const;
-
- public:
- /// constructor
- PolyPolygonMarkerPrimitive2D(
- const basegfx::B2DPolyPolygon& rPolyPolygon,
- const basegfx::BColor& rRGBColorA,
- const basegfx::BColor& rRGBColorB,
- double fDiscreteDashLength);
-
- // data read access
- const basegfx::B2DPolyPolygon& getB2DPolyPolygon() const { return maPolyPolygon; }
- const basegfx::BColor& getRGBColorA() const { return maRGBColorA; }
- const basegfx::BColor& getRGBColorB() const { return maRGBColorB; }
- double getDiscreteDashLength() const { return mfDiscreteDashLength; }
-
- /// compare operator
- virtual bool operator==(const BasePrimitive2D& rPrimitive) const;
-
- /// get range
- virtual basegfx::B2DRange getB2DRange(const geometry::ViewInformation2D& rViewInformation) const;
-
- /// provide unique ID
- DeclPrimitrive2DIDBlock()
- };
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// PolyPolygonStrokePrimitive2D class
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- /** PolyPolygonStrokePrimitive2D class
-
- This primitive defines a multi-PolygonStrokePrimitive2D and is
- just for convenience. The definition is not different from the single
- defined PolygonStrokePrimitive2Ds.
- */
- class DRAWINGLAYER_DLLPUBLIC PolyPolygonStrokePrimitive2D : public BufferedDecompositionPrimitive2D
- {
- private:
- /// the line geometry
- basegfx::B2DPolyPolygon maPolyPolygon;
-
- /// the line attributes like width, join and color
- attribute::LineAttribute maLineAttribute;
-
- /// the line stroking (if used)
- attribute::StrokeAttribute maStrokeAttribute;
-
- protected:
- /// local decomposition.
- virtual Primitive2DSequence create2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const;
-
- public:
- /// constructor
- PolyPolygonStrokePrimitive2D(
- const basegfx::B2DPolyPolygon& rPolyPolygon,
- const attribute::LineAttribute& rLineAttribute,
- const attribute::StrokeAttribute& rStrokeAttribute);
-
- /// constructor without stroking
- PolyPolygonStrokePrimitive2D(
- const basegfx::B2DPolyPolygon& rPolyPolygon,
- const attribute::LineAttribute& rLineAttribute);
-
- /// data read access
- const basegfx::B2DPolyPolygon& getB2DPolyPolygon() const { return maPolyPolygon; }
- const attribute::LineAttribute& getLineAttribute() const { return maLineAttribute; }
- const attribute::StrokeAttribute& getStrokeAttribute() const { return maStrokeAttribute; }
-
- /// compare operator
- virtual bool operator==(const BasePrimitive2D& rPrimitive) const;
-
- /// get range
- virtual basegfx::B2DRange getB2DRange(const geometry::ViewInformation2D& rViewInformation) const;
-
- /// provide unique ID
- DeclPrimitrive2DIDBlock()
- };
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// PolyPolygonStrokeArrowPrimitive2D class
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- /** PolyPolygonStrokePrimitive2D class
-
- This primitive defines a multi-PolygonStrokeArrowPrimitive2D and is
- just for convenience. The definition is not different from the single
- defined PolygonStrokeArrowPrimitive2Ds.
- */
- class DRAWINGLAYER_DLLPUBLIC PolyPolygonStrokeArrowPrimitive2D : public PolyPolygonStrokePrimitive2D
- {
- private:
- /// geometric definitions for line start and end
- attribute::LineStartEndAttribute maStart;
- attribute::LineStartEndAttribute maEnd;
-
- protected:
- /// local decomposition.
- virtual Primitive2DSequence create2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const;
-
- public:
- /// constructor
- PolyPolygonStrokeArrowPrimitive2D(
- const basegfx::B2DPolyPolygon& rPolyPolygon,
- const attribute::LineAttribute& rLineAttribute,
- const attribute::StrokeAttribute& rStrokeAttribute,
- const attribute::LineStartEndAttribute& rStart,
- const attribute::LineStartEndAttribute& rEnd);
-
- /// constructor without stroking
- PolyPolygonStrokeArrowPrimitive2D(
- const basegfx::B2DPolyPolygon& rPolyPolygon,
- const attribute::LineAttribute& rLineAttribute,
- const attribute::LineStartEndAttribute& rStart,
- const attribute::LineStartEndAttribute& rEnd);
-
- /// data read access
- const attribute::LineStartEndAttribute& getStart() const { return maStart; }
- const attribute::LineStartEndAttribute& getEnd() const { return maEnd; }
-
- /// compare operator
- virtual bool operator==(const BasePrimitive2D& rPrimitive) const;
-
- /// get range
- virtual basegfx::B2DRange getB2DRange(const geometry::ViewInformation2D& rViewInformation) const;
-
- /// provide unique ID
- DeclPrimitrive2DIDBlock()
- };
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// PolyPolygonColorPrimitive2D class
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- /** PolyPolygonColorPrimitive2D class
-
- This primitive defines a PolyPolygon filled with a single color.
- This is one of the non-decomposable primitives, so a renderer
- should proccess it.
- */
- class DRAWINGLAYER_DLLPUBLIC PolyPolygonColorPrimitive2D : public BasePrimitive2D
- {
- private:
- /// the PolyPolygon geometry
- basegfx::B2DPolyPolygon maPolyPolygon;
-
- /// the polygon fill color
- basegfx::BColor maBColor;
-
- public:
- /// constructor
- PolyPolygonColorPrimitive2D(
- const basegfx::B2DPolyPolygon& rPolyPolygon,
- const basegfx::BColor& rBColor);
-
- /// data read access
- const basegfx::B2DPolyPolygon& getB2DPolyPolygon() const { return maPolyPolygon; }
- const basegfx::BColor& getBColor() const { return maBColor; }
-
- /// compare operator
- virtual bool operator==(const BasePrimitive2D& rPrimitive) const;
-
- /// get range
- virtual basegfx::B2DRange getB2DRange(const geometry::ViewInformation2D& rViewInformation) const;
-
- /// provide unique ID
- DeclPrimitrive2DIDBlock()
- };
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// PolyPolygonGradientPrimitive2D class
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- /** PolyPolygonColorPrimitive2D class
-
- This primitive defines a PolyPolygon filled with a gradient. The
- decomosition will create a MaskPrimitive2D containing a
- FillGradientPrimitive2D.
- */
- class DRAWINGLAYER_DLLPUBLIC PolyPolygonGradientPrimitive2D : public BufferedDecompositionPrimitive2D
- {
- private:
- /// the PolyPolygon geometry
- basegfx::B2DPolyPolygon maPolyPolygon;
-
- /// the gradient definition
- attribute::FillGradientAttribute maFillGradient;
-
- protected:
- /// local decomposition.
- virtual Primitive2DSequence create2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const;
-
- public:
- /// constructor
- PolyPolygonGradientPrimitive2D(
- const basegfx::B2DPolyPolygon& rPolyPolygon,
- const attribute::FillGradientAttribute& rFillGradient);
-
- /// data read access
- const basegfx::B2DPolyPolygon& getB2DPolyPolygon() const { return maPolyPolygon; }
- const attribute::FillGradientAttribute& getFillGradient() const { return maFillGradient; }
-
- /// compare operator
- virtual bool operator==(const BasePrimitive2D& rPrimitive) const;
-
- /// provide unique ID
- DeclPrimitrive2DIDBlock()
- };
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// PolyPolygonHatchPrimitive2D class
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- /** PolyPolygonHatchPrimitive2D class
-
- This primitive defines a PolyPolygon filled with a hatch. The
- decomosition will create a MaskPrimitive2D containing a
- FillHatchPrimitive2D.
- */
- class DRAWINGLAYER_DLLPUBLIC PolyPolygonHatchPrimitive2D : public BufferedDecompositionPrimitive2D
- {
- private:
- /// the PolyPolygon geometry
- basegfx::B2DPolyPolygon maPolyPolygon;
-
- /// the hatch background color (if used)
- basegfx::BColor maBackgroundColor;
-
- /// the hatch definition
- attribute::FillHatchAttribute maFillHatch;
-
- protected:
- /// local decomposition.
- virtual Primitive2DSequence create2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const;
-
- public:
- /// constructor
- PolyPolygonHatchPrimitive2D(
- const basegfx::B2DPolyPolygon& rPolyPolygon,
- const basegfx::BColor& rBackgroundColor,
- const attribute::FillHatchAttribute& rFillHatch);
-
- /// data read access
- const basegfx::B2DPolyPolygon& getB2DPolyPolygon() const { return maPolyPolygon; }
- const basegfx::BColor& getBackgroundColor() const { return maBackgroundColor; }
- const attribute::FillHatchAttribute& getFillHatch() const { return maFillHatch; }
-
- /// compare operator
- virtual bool operator==(const BasePrimitive2D& rPrimitive) const;
-
- /// provide unique ID
- DeclPrimitrive2DIDBlock()
- };
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// PolyPolygonBitmapPrimitive2D class
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- /** PolyPolygonBitmapPrimitive2D class
-
- This primitive defines a PolyPolygon filled with bitmap data
- (including transparence). The decomosition will create a MaskPrimitive2D
- containing a FillBitmapPrimitive2D.
- */
- class DRAWINGLAYER_DLLPUBLIC PolyPolygonBitmapPrimitive2D : public BufferedDecompositionPrimitive2D
- {
- private:
- /// the PolyPolygon geometry
- basegfx::B2DPolyPolygon maPolyPolygon;
-
- /// the bitmap fill definition (may include tiling)
- attribute::FillBitmapAttribute maFillBitmap;
-
- protected:
- /// local decomposition.
- virtual Primitive2DSequence create2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const;
-
- public:
- /// constructor
- PolyPolygonBitmapPrimitive2D(
- const basegfx::B2DPolyPolygon& rPolyPolygon,
- const attribute::FillBitmapAttribute& rFillBitmap);
-
- /// data read access
- const basegfx::B2DPolyPolygon& getB2DPolyPolygon() const { return maPolyPolygon; }
- const attribute::FillBitmapAttribute& getFillBitmap() const { return maFillBitmap; }
-
- /// compare operator
- virtual bool operator==(const BasePrimitive2D& rPrimitive) const;
-
- /// provide unique ID
- DeclPrimitrive2DIDBlock()
- };
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif //INCLUDED_DRAWINGLAYER_PRIMITIVE2D_POLYPOLYGONPRIMITIVE2D_HXX
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/primitive2d/primitivetools2d.hxx b/drawinglayer/inc/drawinglayer/primitive2d/primitivetools2d.hxx
deleted file mode 100644
index 6b0e001658..0000000000
--- a/drawinglayer/inc/drawinglayer/primitive2d/primitivetools2d.hxx
+++ /dev/null
@@ -1,204 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_PRIMITIVE2D_PRIMITIVE2DTOOLS_HXX
-#define INCLUDED_DRAWINGLAYER_PRIMITIVE2D_PRIMITIVE2DTOOLS_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <drawinglayer/primitive2d/baseprimitive2d.hxx>
-#include <basegfx/matrix/b2dhommatrix.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- /** DiscreteMetricDependentPrimitive2D class
-
- tooling class for BufferedDecompositionPrimitive2D baseed classes which are view-dependent
- regarding the size of a discrete unit. The implementation of get2DDecomposition
- guards the buffered local decomposition and ensures that a create2DDecomposition
- implementation may use an up-to-date DiscreteUnit accessible using getDiscreteUnit()
- */
- class DRAWINGLAYER_DLLPUBLIC DiscreteMetricDependentPrimitive2D : public BufferedDecompositionPrimitive2D
- {
- private:
- /** the last used fDiscreteUnit definitions for decomposition. Since this
- is checked and updated from get2DDecomposition() it will be current and
- usable in create2DDecomposition()
- */
- double mfDiscreteUnit;
-
- public:
- /// constructor
- DiscreteMetricDependentPrimitive2D()
- : BufferedDecompositionPrimitive2D(),
- mfDiscreteUnit(0.0)
- {
- }
-
- /// data read access
- double getDiscreteUnit() const { return mfDiscreteUnit; }
-
- /// get local decomposition. Overloaded since this decomposition is view-dependent
- virtual Primitive2DSequence get2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const;
- };
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- /** ViewportDependentPrimitive2D class
-
- tooling class for BufferedDecompositionPrimitive2D baseed classes which are view-dependent
- regarding the viewport. The implementation of get2DDecomposition
- guards the buffered local decomposition and ensures that a create2DDecomposition
- implementation may use an up-to-date Viewport accessible using getViewport()
- */
- class DRAWINGLAYER_DLLPUBLIC ViewportDependentPrimitive2D : public BufferedDecompositionPrimitive2D
- {
- private:
- /** the last used Viewport definition for decomposition. Since this
- is checked and updated from get2DDecomposition() it will be current and
- usable in create2DDecomposition()
- */
- basegfx::B2DRange maViewport;
-
- public:
- /// constructor
- ViewportDependentPrimitive2D()
- : BufferedDecompositionPrimitive2D(),
- maViewport()
- {
- }
-
- /// data read access
- const basegfx::B2DRange& getViewport() const { return maViewport; }
-
- /// get local decomposition. Overloaded since this decomposition is view-dependent
- virtual Primitive2DSequence get2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const;
- };
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- /** ViewTransformationDependentPrimitive2D class
-
- tooling class for BufferedDecompositionPrimitive2D based classes which are view-dependent
- regarding the complete Viewtransformation. The implementation of get2DDecomposition
- guards the buffered local decomposition and ensures that a create2DDecomposition
- implementation may use an up-to-date ViewTransformation accessible using getViewTransformation()
- */
- class DRAWINGLAYER_DLLPUBLIC ViewTransformationDependentPrimitive2D : public BufferedDecompositionPrimitive2D
- {
- private:
- /** the last used ViewTransformation definition for decomposition. Since this
- is checked and updated from get2DDecomposition() it will be current and
- usable in create2DDecomposition()
- */
- basegfx::B2DHomMatrix maViewTransformation;
-
- public:
- /// constructor
- ViewTransformationDependentPrimitive2D()
- : BufferedDecompositionPrimitive2D(),
- maViewTransformation()
- {
- }
-
- /// data read access
- const basegfx::B2DHomMatrix& getViewTransformation() const { return maViewTransformation; }
-
- /// get local decomposition. Overloaded since this decomposition is view-dependent
- virtual Primitive2DSequence get2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const;
- };
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- /** ObjectAndViewTransformationDependentPrimitive2D class
-
- tooling class for BufferedDecompositionPrimitive2D based classes which are view-dependent
- and Object-Transform dependent. The implementation of get2DDecomposition
- guards the buffered local decomposition and ensures that a create2DDecomposition
- implementation may use an up-to-date ViewTransformation accessible using getViewTransformation()
- and an object transformation via getObjectTransformation()
- */
- class DRAWINGLAYER_DLLPUBLIC ObjectAndViewTransformationDependentPrimitive2D : public BufferedDecompositionPrimitive2D
- {
- private:
- /** the last used ViewTransformation and the last ObjectTransformation
- definition for decomposition. Since this is checked and updated from
- get2DDecomposition() it will be current and usable in create2DDecomposition()
- */
- basegfx::B2DHomMatrix maViewTransformation;
- basegfx::B2DHomMatrix maObjectTransformation;
-
- public:
- /// constructor
- ObjectAndViewTransformationDependentPrimitive2D()
- : BufferedDecompositionPrimitive2D(),
- maViewTransformation(),
- maObjectTransformation()
- {
- }
-
- /// data read access
- const basegfx::B2DHomMatrix& getViewTransformation() const { return maViewTransformation; }
- const basegfx::B2DHomMatrix& getObjectTransformation() const { return maObjectTransformation; }
-
- /// get local decomposition. Overloaded since this decomposition is view-dependent
- virtual Primitive2DSequence get2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const;
- };
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif //INCLUDED_DRAWINGLAYER_PRIMITIVE2D_PRIMITIVE2DTOOLS_HXX
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/primitive2d/rendergraphicprimitive2d.hxx b/drawinglayer/inc/drawinglayer/primitive2d/rendergraphicprimitive2d.hxx
deleted file mode 100644
index 1904394429..0000000000
--- a/drawinglayer/inc/drawinglayer/primitive2d/rendergraphicprimitive2d.hxx
+++ /dev/null
@@ -1,95 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_PRIMITIVE2D_RENDERGRAPHICPRIMITIVE2D_HXX
-#define INCLUDED_DRAWINGLAYER_PRIMITIVE2D_RENDERGRAPHICPRIMITIVE2D_HXX
-
-#include <drawinglayer/primitive2d/baseprimitive2d.hxx>
-#include <basegfx/matrix/b2dhommatrix.hxx>
-#include <vcl/rendergraphic.hxx>
-#include <memory>
-
-//////////////////////////////////////////////////////////////////////////////
-// RenderGraphicPrimitive2D class
-
-namespace vcl { class RenderGraphicRasterizer; }
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- /** RenderGraphicPrimitive2D class
-
- This class is the central primitive for RenderGraphic-based primitives.
- */
- class RenderGraphicPrimitive2D : public BasePrimitive2D
- {
- private:
- /// the RenderGraphic data
- vcl::RenderGraphic maRenderGraphic;
- mutable std::auto_ptr< vcl::RenderGraphicRasterizer > mapCurrentRasterizer;
-
- /** the object transformation from unit coordinates, defining
- size, shear, rotate and position
- */
- basegfx::B2DHomMatrix maTransform;
-
- public:
- /// constructor
- RenderGraphicPrimitive2D(
- const vcl::RenderGraphic& rRenderGraphic,
- const basegfx::B2DHomMatrix& rTransform);
-
- /// data read access
- inline const vcl::RenderGraphic& getRenderGraphic() const { return maRenderGraphic; }
- inline const basegfx::B2DHomMatrix& getTransform() const { return maTransform; }
-
- // access to latest used vcl::GraphicRasterizer for possibly reusing
- // an already rendered vcl::RenderGraphic with the same transform
- // properties during the next rendering process
- void setCurrentRasterizer() const;
- void setCurrentRasterizer( const vcl::RenderGraphicRasterizer& rCurrentGraphicRasterizer ) const;
- inline const vcl::RenderGraphicRasterizer* getCurrentRasterizer() const { return( mapCurrentRasterizer.get() ); }
-
- /// compare operator
- virtual bool operator==(const BasePrimitive2D& rPrimitive) const;
-
- /// get range
- virtual basegfx::B2DRange getB2DRange(const geometry::ViewInformation2D& rViewInformation) const;
-
- /// provide unique ID
- DeclPrimitrive2DIDBlock()
- };
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif // INCLUDED_DRAWINGLAYER_PRIMITIVE2D_RENDERGRAPHICPRIMITIVE2D_HXX
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
diff --git a/drawinglayer/inc/drawinglayer/primitive2d/sceneprimitive2d.hxx b/drawinglayer/inc/drawinglayer/primitive2d/sceneprimitive2d.hxx
deleted file mode 100644
index b21f248153..0000000000
--- a/drawinglayer/inc/drawinglayer/primitive2d/sceneprimitive2d.hxx
+++ /dev/null
@@ -1,171 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_PRIMITIVE2D_SCENEPRIMITIVE2D_HXX
-#define INCLUDED_DRAWINGLAYER_PRIMITIVE2D_SCENEPRIMITIVE2D_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <drawinglayer/primitive2d/baseprimitive2d.hxx>
-#include <drawinglayer/primitive3d/baseprimitive3d.hxx>
-#include <drawinglayer/geometry/viewinformation3d.hxx>
-#include <basegfx/matrix/b2dhommatrix.hxx>
-#include <vcl/bitmapex.hxx>
-#include <drawinglayer/attribute/sdrsceneattribute3d.hxx>
-#include <drawinglayer/attribute/sdrlightingattribute3d.hxx>
-#include <drawinglayer/attribute/sdrlightattribute3d.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- /** ScenePrimitive2D class
-
- This primitive defines a 3D scene as a 2D primitive and is the anchor point
- for a 3D visualisation. The decomposition is view-dependent and will try to
- re-use already rendered 3D content.
-
- The rendering is done using the default-3D renderer from basegfx which supports
- AntiAliasing.
-
- The 2D primitive's geometric range is defined completely by the
- ObjectTransformation combined with evtl. 2D shadows from the 3D objects. The
- shadows of 3D objects are 2D polygons, projected with the 3D transformation.
-
- This is the class a renderer may process directly when he wants to implement
- an own (e.g. system-specific) 3D renderer.
- */
- class DRAWINGLAYER_DLLPUBLIC ScenePrimitive2D : public BufferedDecompositionPrimitive2D
- {
- private:
- /// the 3D geometry definition
- primitive3d::Primitive3DSequence mxChildren3D;
-
- /// 3D scene attribute set
- attribute::SdrSceneAttribute maSdrSceneAttribute;
-
- /// lighting attribute set
- attribute::SdrLightingAttribute maSdrLightingAttribute;
-
- /// object transformation for scene for 2D definition
- basegfx::B2DHomMatrix maObjectTransformation;
-
- /// scene transformation set and object transformation
- geometry::ViewInformation3D maViewInformation3D;
-
- /// the primitiveSequence for on-demand created shadow primitives (see mbShadow3DChecked)
- Primitive2DSequence maShadowPrimitives;
-
- /// bitfield
- /** flag if given 3D geometry is already cheched for shadow definitions and 2d shadows
- are created in maShadowPrimitives
- */
- unsigned mbShadow3DChecked : 1;
-
- /// the last used NewDiscreteSize and NewUnitVisiblePart definitions for decomposition
- double mfOldDiscreteSizeX;
- double mfOldDiscreteSizeY;
- basegfx::B2DRange maOldUnitVisiblePart;
-
- /** the last created BitmapEx, e.g. for fast HitTest. This does not really need
- memory since BitmapEx is internally RefCounted
- */
- BitmapEx maOldRenderedBitmap;
-
- /// private helpers
- bool impGetShadow3D(const geometry::ViewInformation2D& rViewInformation) const;
- void calculateDiscreteSizes(
- const geometry::ViewInformation2D& rViewInformation,
- basegfx::B2DRange& rDiscreteRange,
- basegfx::B2DRange& rVisibleDiscreteRange,
- basegfx::B2DRange& rUnitVisibleRange) const;
-
- protected:
- /// local decomposition.
- virtual Primitive2DSequence create2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const;
-
- public:
- /// public helpers
- /** Geometry extractor. Shadow will be added as in create2DDecomposition, but
- the 3D content is not converted to a bitmap visualisation but to projected 2D gemetry. This
- helper is useful e.g. for Contour extraction or HitTests.
- */
- Primitive2DSequence getGeometry2D() const;
- Primitive2DSequence getShadow2D(const geometry::ViewInformation2D& rViewInformation) const;
-
- /** Fast HitTest which uses the last buffered BitmapEx from the last
- rendered area if available. The return value describes if the check
- could be done with the current information, so do NOT use o_rResult
- when it returns false. o_rResult will be changed on return true and
- then contains a definitive answer if content of this scene is hit or
- not. On return false, it is normally necessary to use the geometric
- HitTest (see CutFindProcessor usages). The given HitPoint
- has to be in logic coordinates in scene's ObjectCoordinateSystem.
- */
- bool tryToCheckLastVisualisationDirectHit(const basegfx::B2DPoint& rLogicHitPoint, bool& o_rResult) const;
-
- /// constructor
- ScenePrimitive2D(
- const primitive3d::Primitive3DSequence& rxChildren3D,
- const attribute::SdrSceneAttribute& rSdrSceneAttribute,
- const attribute::SdrLightingAttribute& rSdrLightingAttribute,
- const basegfx::B2DHomMatrix& rObjectTransformation,
- const geometry::ViewInformation3D& rViewInformation3D);
-
- /// data read access
- const primitive3d::Primitive3DSequence& getChildren3D() const { return mxChildren3D; }
- const attribute::SdrSceneAttribute& getSdrSceneAttribute() const { return maSdrSceneAttribute; }
- const attribute::SdrLightingAttribute& getSdrLightingAttribute() const { return maSdrLightingAttribute; }
- const basegfx::B2DHomMatrix& getObjectTransformation() const { return maObjectTransformation; }
- const geometry::ViewInformation3D& getViewInformation3D() const { return maViewInformation3D; }
-
- /// compare operator
- virtual bool operator==(const BasePrimitive2D& rPrimitive) const;
-
- /// get range
- virtual basegfx::B2DRange getB2DRange(const geometry::ViewInformation2D& rViewInformation) const;
-
- /// provide unique ID
- DeclPrimitrive2DIDBlock()
-
- /// get local decomposition. Overloaded since this decomposition is view-dependent
- virtual Primitive2DSequence get2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const;
- };
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif //INCLUDED_DRAWINGLAYER_PRIMITIVE2D_SCENEPRIMITIVE2D_HXX
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/primitive2d/sdrdecompositiontools2d.hxx b/drawinglayer/inc/drawinglayer/primitive2d/sdrdecompositiontools2d.hxx
deleted file mode 100644
index 005b7766af..0000000000
--- a/drawinglayer/inc/drawinglayer/primitive2d/sdrdecompositiontools2d.hxx
+++ /dev/null
@@ -1,84 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * The Contents of this file are made available subject to
- * the terms of GNU Lesser General Public License Version 2.1.
- *
- *
- * GNU Lesser General Public License Version 2.1
- * =============================================
- * Copyright 2005 by Sun Microsystems, Inc.
- * 901 San Antonio Road, Palo Alto, CA 94303, USA
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License version 2.1, as published by the Free Software Foundation.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_PRIMITIVE2D_SDRDECOMPOSITIONTOOLS2D_HXX
-#define INCLUDED_DRAWINGLAYER_PRIMITIVE2D_SDRDECOMPOSITIONTOOLS2D_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <drawinglayer/primitive2d/baseprimitive2d.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-// predefines
-
-namespace basegfx {
- class B2DPolyPolygon;
- class B2DHomMatrix;
-}
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- // helpers to create HitTestPrimitives Line
- Primitive2DReference DRAWINGLAYER_DLLPUBLIC createHiddenGeometryPrimitives2D(
- bool bFilled,
- const basegfx::B2DHomMatrix& rMatrix);
-
- Primitive2DReference DRAWINGLAYER_DLLPUBLIC createHiddenGeometryPrimitives2D(
- bool bFilled,
- const basegfx::B2DPolyPolygon& rPolygon);
-
- Primitive2DReference DRAWINGLAYER_DLLPUBLIC createHiddenGeometryPrimitives2D(
- bool bFilled,
- const basegfx::B2DRange& rRange);
-
- Primitive2DReference DRAWINGLAYER_DLLPUBLIC createHiddenGeometryPrimitives2D(
- bool bFilled,
- const basegfx::B2DRange& rRange,
- const basegfx::B2DHomMatrix& rMatrix);
-
- Primitive2DReference DRAWINGLAYER_DLLPUBLIC createHiddenGeometryPrimitives2D(
- bool bFilled,
- const basegfx::B2DPolyPolygon& rPolygon,
- const basegfx::B2DHomMatrix& rMatrix);
-
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif //INCLUDED_DRAWINGLAYER_PRIMITIVE2D_SDRDECOMPOSITIONTOOLS2D_HXX
-
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/primitive2d/shadowprimitive2d.hxx b/drawinglayer/inc/drawinglayer/primitive2d/shadowprimitive2d.hxx
deleted file mode 100644
index e875ab5dd6..0000000000
--- a/drawinglayer/inc/drawinglayer/primitive2d/shadowprimitive2d.hxx
+++ /dev/null
@@ -1,100 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_PRIMITIVE2D_SHADOWPRIMITIVE2D_HXX
-#define INCLUDED_DRAWINGLAYER_PRIMITIVE2D_SHADOWPRIMITIVE2D_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <drawinglayer/primitive2d/groupprimitive2d.hxx>
-#include <basegfx/matrix/b2dhommatrix.hxx>
-#include <basegfx/color/bcolor.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- /** ShadowPrimitive2D class
-
- This primitive defines a generic shadow geometry construction
- for 2D objects. It decomposes to a TransformPrimitive2D embedded
- into a ModifiedColorPrimitive2D.
-
- It's for primtive usage convenience, so that not everyone has
- to implement the generic shadow construction by himself.
-
- The same geometry as sequence of primitives is used as geometry and
- as shadow. Since these are RefCounted Uno-Api objects, no extra objects
- are needed for the shadow itself; all the local decompositions of the
- original geometry can be reused from the renderer for shadow visualisation.
- */
- class DRAWINGLAYER_DLLPUBLIC ShadowPrimitive2D : public GroupPrimitive2D
- {
- private:
- /// the shadow transformation, normally just an offset
- basegfx::B2DHomMatrix maShadowTransform;
-
- /// the shadow color to which all geometry is to be forced
- basegfx::BColor maShadowColor;
-
- public:
- /// constructor
- ShadowPrimitive2D(
- const basegfx::B2DHomMatrix& rShadowTransform,
- const basegfx::BColor& rShadowColor,
- const Primitive2DSequence& rChildren);
-
- /// data read access
- const basegfx::B2DHomMatrix& getShadowTransform() const { return maShadowTransform; }
- const basegfx::BColor& getShadowColor() const { return maShadowColor; }
-
- /// compare operator
- virtual bool operator==(const BasePrimitive2D& rPrimitive) const;
-
- /// get range
- virtual basegfx::B2DRange getB2DRange(const geometry::ViewInformation2D& rViewInformation) const;
-
- /// create decomposition
- virtual Primitive2DSequence get2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const;
-
- /// provide unique ID
- DeclPrimitrive2DIDBlock()
- };
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif //INCLUDED_DRAWINGLAYER_PRIMITIVE2D_SHADOWPRIMITIVE2D_HXX
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/primitive2d/structuretagprimitive2d.hxx b/drawinglayer/inc/drawinglayer/primitive2d/structuretagprimitive2d.hxx
deleted file mode 100644
index bdda8e9747..0000000000
--- a/drawinglayer/inc/drawinglayer/primitive2d/structuretagprimitive2d.hxx
+++ /dev/null
@@ -1,83 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_PRIMITIVE2D_STRUCTURETAGPRIMITIVE2D_HXX
-#define INCLUDED_DRAWINGLAYER_PRIMITIVE2D_STRUCTURETAGPRIMITIVE2D_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <drawinglayer/primitive2d/groupprimitive2d.hxx>
-#include <vcl/pdfwriter.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- /** StructureTagPrimitive2D class
-
- This class is used to provode simple support for adding grouped
- pdf writer structured element information like used in sd from
- unomodel.cxx where a ViewObjectContactRedirector is used to add
- such information for diverse objects.
- This primitive encapsulates these and the VCLPdfRenderer uses it
- to apply the needed infos directly to the pdf export in a compatible
- way.
- If a renderer ignores this, it just decomposes to it's child
- content.
- */
- class DRAWINGLAYER_DLLPUBLIC StructureTagPrimitive2D : public GroupPrimitive2D
- {
- private:
- /// the PDF structure element this grouping represents
- vcl::PDFWriter::StructElement maStructureElement;
-
- public:
- /// constructor
- StructureTagPrimitive2D(
- const vcl::PDFWriter::StructElement& rStructureElement,
- const Primitive2DSequence& rChildren);
-
- /// data read access
- const vcl::PDFWriter::StructElement& getStructureElement() const { return maStructureElement; }
-
- /// provide unique ID
- DeclPrimitrive2DIDBlock()
- };
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif //INCLUDED_DRAWINGLAYER_PRIMITIVE2D_STRUCTURETAGPRIMITIVE2D_HXX
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/primitive2d/textdecoratedprimitive2d.hxx b/drawinglayer/inc/drawinglayer/primitive2d/textdecoratedprimitive2d.hxx
deleted file mode 100644
index fd00a2852e..0000000000
--- a/drawinglayer/inc/drawinglayer/primitive2d/textdecoratedprimitive2d.hxx
+++ /dev/null
@@ -1,162 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_PRIMITIVE2D_TEXTDECORATEDPRIMITIVE2D_HXX
-#define INCLUDED_DRAWINGLAYER_PRIMITIVE2D_TEXTDECORATEDPRIMITIVE2D_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <drawinglayer/primitive2d/textprimitive2d.hxx>
-#include <drawinglayer/primitive2d/textenumsprimitive2d.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-// predeclarations
-
-namespace basegfx { namespace tools {
- class B2DHomMatrixBufferedOnDemandDecompose;
-}}
-
-namespace com { namespace sun { namespace star { namespace i18n {
- struct Boundary;
-}}}}
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- /** TextDecoratedPortionPrimitive2D class
-
- This primitive expands the TextSimplePortionPrimitive2D by common
- decorations used in the office. It can be decomposed and will create
- a TextSimplePortionPrimitive2D and all the contained decorations (if used)
- as geometry.
- */
- class DRAWINGLAYER_DLLPUBLIC TextDecoratedPortionPrimitive2D : public TextSimplePortionPrimitive2D
- {
- private:
- /// decoration definitions
- basegfx::BColor maOverlineColor;
- basegfx::BColor maTextlineColor;
- TextLine meFontOverline;
- TextLine meFontUnderline;
- TextStrikeout meTextStrikeout;
- TextEmphasisMark meTextEmphasisMark;
- TextRelief meTextRelief;
-
- /// bitfield
- unsigned mbUnderlineAbove : 1;
- unsigned mbWordLineMode : 1;
- unsigned mbEmphasisMarkAbove : 1;
- unsigned mbEmphasisMarkBelow : 1;
- unsigned mbShadow : 1;
-
- /// helper methods
- void impCreateGeometryContent(
- std::vector< Primitive2DReference >& rTarget,
- basegfx::tools::B2DHomMatrixBufferedOnDemandDecompose& rDecTrans,
- const String& rText,
- xub_StrLen aTextPosition,
- xub_StrLen aTextLength,
- const ::std::vector< double >& rDXArray,
- const attribute::FontAttribute& rFontAttribute) const;
-
- void impCorrectTextBoundary(
- ::com::sun::star::i18n::Boundary& rNextWordBoundary) const;
-
- void impSplitSingleWords(
- std::vector< Primitive2DReference >& rTarget,
- basegfx::tools::B2DHomMatrixBufferedOnDemandDecompose& rDecTrans) const;
-
- protected:
- /// local decomposition.
- virtual Primitive2DSequence create2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const;
-
- public:
- /// constructor
- TextDecoratedPortionPrimitive2D(
-
- /// TextSimplePortionPrimitive2D parameters
- const basegfx::B2DHomMatrix& rNewTransform,
- const String& rText,
- xub_StrLen aTextPosition,
- xub_StrLen aTextLength,
- const ::std::vector< double >& rDXArray,
- const attribute::FontAttribute& rFontAttribute,
- const ::com::sun::star::lang::Locale& rLocale,
- const basegfx::BColor& rFontColor,
-
- /// local parameters
- const basegfx::BColor& rOverlineColor,
- const basegfx::BColor& rTextlineColor,
- TextLine eFontOverline = TEXT_LINE_NONE,
- TextLine eFontUnderline = TEXT_LINE_NONE,
- bool bUnderlineAbove = false,
- TextStrikeout eTextStrikeout = TEXT_STRIKEOUT_NONE,
- bool bWordLineMode = false,
- TextEmphasisMark eTextEmphasisMark = TEXT_EMPHASISMARK_NONE,
- bool bEmphasisMarkAbove = true,
- bool bEmphasisMarkBelow = false,
- TextRelief eTextRelief = TEXT_RELIEF_NONE,
- bool bShadow = false);
-
- /// data read access
- TextLine getFontOverline() const { return meFontOverline; }
- TextLine getFontUnderline() const { return meFontUnderline; }
- TextStrikeout getTextStrikeout() const { return meTextStrikeout; }
- TextEmphasisMark getTextEmphasisMark() const { return meTextEmphasisMark; }
- TextRelief getTextRelief() const { return meTextRelief; }
- const basegfx::BColor& getOverlineColor() const { return maOverlineColor; }
- const basegfx::BColor& getTextlineColor() const { return maTextlineColor; }
- bool getUnderlineAbove() const { return mbUnderlineAbove; }
- bool getWordLineMode() const { return mbWordLineMode; }
- bool getEmphasisMarkAbove() const { return mbEmphasisMarkAbove; }
- bool getEmphasisMarkBelow() const { return mbEmphasisMarkBelow; }
- bool getShadow() const { return mbShadow; }
-
- /// compare operator
- virtual bool operator==( const BasePrimitive2D& rPrimitive ) const;
-
- /// get range
- virtual basegfx::B2DRange getB2DRange(const geometry::ViewInformation2D& rViewInformation) const;
-
- /// provide unique ID
- DeclPrimitrive2DIDBlock()
- };
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif //INCLUDED_DRAWINGLAYER_PRIMITIVE2D_TEXTDECORATEDPRIMITIVE2D_HXX
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/primitive2d/texteffectprimitive2d.hxx b/drawinglayer/inc/drawinglayer/primitive2d/texteffectprimitive2d.hxx
deleted file mode 100644
index b94f7291c9..0000000000
--- a/drawinglayer/inc/drawinglayer/primitive2d/texteffectprimitive2d.hxx
+++ /dev/null
@@ -1,118 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_PRIMITIVE2D_TEXTEFFECTPRIMITIVE2D_HXX
-#define INCLUDED_DRAWINGLAYER_PRIMITIVE2D_TEXTEFFECTPRIMITIVE2D_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <drawinglayer/primitive2d/baseprimitive2d.hxx>
-#include <basegfx/matrix/b2dhommatrix.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- /** TextEffectStyle2D definition */
- enum TextEffectStyle2D
- {
- TEXTEFFECTSTYLE2D_RELIEF_EMBOSSED_DEFAULT,
- TEXTEFFECTSTYLE2D_RELIEF_ENGRAVED_DEFAULT,
- TEXTEFFECTSTYLE2D_RELIEF_EMBOSSED,
- TEXTEFFECTSTYLE2D_RELIEF_ENGRAVED,
- TEXTEFFECTSTYLE2D_OUTLINE
- };
-
- /** TextEffectPrimitive2D class
-
- This primitive embeds text primitives (normally, as can be seen can
- also be used for any other primitives) which have some TextEffect applied
- and create the needed geometry and embedding on decomposition.
- */
- class DRAWINGLAYER_DLLPUBLIC TextEffectPrimitive2D : public BufferedDecompositionPrimitive2D
- {
- private:
- /// the text (or other) content
- Primitive2DSequence maTextContent;
-
- /// the style to apply, the direction and the rotation center
- const basegfx::B2DPoint maRotationCenter;
- double mfDirection;
- TextEffectStyle2D meTextEffectStyle2D;
-
- /** the last used object to view transformtion used from getDecomposition
- for decide buffering
- */
- basegfx::B2DHomMatrix maLastObjectToViewTransformation;
-
- protected:
- /// create local decomposition
- virtual Primitive2DSequence create2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const;
-
- public:
- /// construcor
- TextEffectPrimitive2D(
- const Primitive2DSequence& rTextContent,
- const basegfx::B2DPoint& rRotationCenter,
- double fDirection,
- TextEffectStyle2D eTextEffectStyle2D);
-
- /// data read access
- const Primitive2DSequence& getTextContent() const { return maTextContent; }
- const basegfx::B2DPoint& getRotationCenter() const { return maRotationCenter; }
- double getDirection() const { return mfDirection; }
- TextEffectStyle2D getTextEffectStyle2D() const { return meTextEffectStyle2D; }
-
- /// compare operator
- virtual bool operator==(const BasePrimitive2D& rPrimitive) const;
-
- /** own get range implementation to solve more effective. Content is by definition displaced
- by a fixed discrete unit, thus the contained geometry needs only once be asked for it's
- own basegfx::B2DRange
- */
- virtual basegfx::B2DRange getB2DRange(const geometry::ViewInformation2D& rViewInformation) const;
-
- /// provide unique ID
- DeclPrimitrive2DIDBlock()
-
- /// Overload standard getDecomposition call to be view-dependent here
- virtual Primitive2DSequence get2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const;
- };
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif //INCLUDED_DRAWINGLAYER_PRIMITIVE2D_TEXTEFFECTPRIMITIVE2D_HXX
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/primitive2d/textenumsprimitive2d.hxx b/drawinglayer/inc/drawinglayer/primitive2d/textenumsprimitive2d.hxx
deleted file mode 100644
index 987e713a67..0000000000
--- a/drawinglayer/inc/drawinglayer/primitive2d/textenumsprimitive2d.hxx
+++ /dev/null
@@ -1,116 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_PRIMITIVE2D_TEXTENUMSPRIMITIVE2D_HXX
-#define INCLUDED_DRAWINGLAYER_PRIMITIVE2D_TEXTENUMSPRIMITIVE2D_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <drawinglayer/primitive2d/baseprimitive2d.hxx>
-#include <vcl/vclenum.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- /** TextLine definition
-
- This is used for both underline and overline
- */
- enum TextLine
- {
- TEXT_LINE_NONE,
- TEXT_LINE_SINGLE,
- TEXT_LINE_DOUBLE,
- TEXT_LINE_DOTTED,
- TEXT_LINE_DASH,
- TEXT_LINE_LONGDASH,
- TEXT_LINE_DASHDOT,
- TEXT_LINE_DASHDOTDOT,
- TEXT_LINE_SMALLWAVE,
- TEXT_LINE_WAVE,
- TEXT_LINE_DOUBLEWAVE,
- TEXT_LINE_BOLD,
- TEXT_LINE_BOLDDOTTED,
- TEXT_LINE_BOLDDASH,
- TEXT_LINE_BOLDLONGDASH,
- TEXT_LINE_BOLDDASHDOT,
- TEXT_LINE_BOLDDASHDOTDOT,
- TEXT_LINE_BOLDWAVE
- };
-
- /** helper to convert LineStyle */
- TextLine DRAWINGLAYER_DLLPUBLIC mapFontUnderlineToTextLine(FontUnderline eLineStyle);
- FontUnderline DRAWINGLAYER_DLLPUBLIC mapTextLineToFontUnderline(TextLine eLineStyle);
-
- /** FontStrikeout definition */
- enum TextStrikeout
- {
- TEXT_STRIKEOUT_NONE,
- TEXT_STRIKEOUT_SINGLE,
- TEXT_STRIKEOUT_DOUBLE,
- TEXT_STRIKEOUT_BOLD,
- TEXT_STRIKEOUT_SLASH,
- TEXT_STRIKEOUT_X
- };
-
- /** helper to convert FontStrikeout */
- TextStrikeout DRAWINGLAYER_DLLPUBLIC mapFontStrikeoutToTextStrikeout(::FontStrikeout eFontStrikeout);
- ::FontStrikeout DRAWINGLAYER_DLLPUBLIC mapTextStrikeoutToFontStrikeout(TextStrikeout eFontStrikeout);
-
- /** TextEmphasisMark definition */
- enum TextEmphasisMark
- {
- TEXT_EMPHASISMARK_NONE,
- TEXT_EMPHASISMARK_DOT,
- TEXT_EMPHASISMARK_CIRCLE,
- TEXT_EMPHASISMARK_DISC,
- TEXT_EMPHASISMARK_ACCENT
- };
-
- /** TextRelief definition */
- enum TextRelief
- {
- TEXT_RELIEF_NONE,
- TEXT_RELIEF_EMBOSSED,
- TEXT_RELIEF_ENGRAVED
- };
-
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif //INCLUDED_DRAWINGLAYER_PRIMITIVE2D_TEXTENUMSPRIMITIVE2D_HXX
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/primitive2d/texthierarchyprimitive2d.hxx b/drawinglayer/inc/drawinglayer/primitive2d/texthierarchyprimitive2d.hxx
deleted file mode 100644
index ff78b05cbf..0000000000
--- a/drawinglayer/inc/drawinglayer/primitive2d/texthierarchyprimitive2d.hxx
+++ /dev/null
@@ -1,224 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_PRIMITIVE2D_TEXTHIERARCHYPRIMITIVE2D_HXX
-#define INCLUDED_DRAWINGLAYER_PRIMITIVE2D_TEXTHIERARCHYPRIMITIVE2D_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <drawinglayer/primitive2d/groupprimitive2d.hxx>
-#include <tools/string.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- /** TextHierarchyLinePrimitive2D class
-
- Text format hierarchy helper class. It decomposes to it's
- content, so all direct renderers may ignore it. If You need
- to know more about line hierarchies You may react on it and
- also need to take care that the source of data uses it.
-
- This primitive encapsulates text lines.
- */
- class DRAWINGLAYER_DLLPUBLIC TextHierarchyLinePrimitive2D : public GroupPrimitive2D
- {
- private:
- public:
- /// constructor
- TextHierarchyLinePrimitive2D(const Primitive2DSequence& rChildren);
-
- /// provide unique ID
- DeclPrimitrive2DIDBlock()
- };
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- /** TextHierarchyBulletPrimitive2D class
-
- This primitive encapsulates text bullets.
- */
- class DRAWINGLAYER_DLLPUBLIC TextHierarchyBulletPrimitive2D : public GroupPrimitive2D
- {
- private:
- public:
- /// constructor
- TextHierarchyBulletPrimitive2D(const Primitive2DSequence& rChildren);
-
- /// provide unique ID
- DeclPrimitrive2DIDBlock()
- };
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- /** TextHierarchyParagraphPrimitive2D class
-
- This primitive encapsulates text paragraphs.
- */
- class DRAWINGLAYER_DLLPUBLIC TextHierarchyParagraphPrimitive2D : public GroupPrimitive2D
- {
- private:
- public:
- /// constructor
- TextHierarchyParagraphPrimitive2D(const Primitive2DSequence& rChildren);
-
- /// provide unique ID
- DeclPrimitrive2DIDBlock()
- };
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- /** TextHierarchyBlockPrimitive2D class
-
- This primitive encapsulates text blocks.
- */
- class DRAWINGLAYER_DLLPUBLIC TextHierarchyBlockPrimitive2D : public GroupPrimitive2D
- {
- private:
- public:
- /// constructor
- TextHierarchyBlockPrimitive2D(const Primitive2DSequence& rChildren);
-
- /// provide unique ID
- DeclPrimitrive2DIDBlock()
- };
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- /** FieldType definition */
- enum FieldType
- {
- /** unspecified. If more info is needed for a FieldType,
- create a new type and it's handling
- */
- FIELD_TYPE_COMMON,
-
- /** uses "FIELD_SEQ_BEGIN;PageField" -> special handling */
- FIELD_TYPE_PAGE,
-
- /** uses URL as string -> special handling */
- FIELD_TYPE_URL
- };
-
- /** TextHierarchyFieldPrimitive2D class
-
- This primitive encapsulates text fields.
- Also: This type uses a type enum to transport the encapsulated field
- type. Also added is a String which is type-dependent. E.g. for URL
- fields, it contains the URL.
- */
- class DRAWINGLAYER_DLLPUBLIC TextHierarchyFieldPrimitive2D : public GroupPrimitive2D
- {
- private:
- FieldType meType;
- rtl::OUString maString;
-
- public:
- /// constructor
- TextHierarchyFieldPrimitive2D(
- const Primitive2DSequence& rChildren,
- const FieldType& rFieldType,
- const rtl::OUString& rString);
-
- /// data read access
- FieldType getType() const { return meType; }
- const rtl::OUString& getString() const { return maString; }
-
- /// compare operator
- virtual bool operator==(const BasePrimitive2D& rPrimitive) const;
-
- /// provide unique ID
- DeclPrimitrive2DIDBlock()
- };
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- /** TextHierarchyEditPrimitive2D class
-
- #i97628#
- Primitive to encapsulate text from an active text edit; some
- renderers need to suppress this output due to painting the
- edited text in e.g. an OutlinerEditView. It's derived from
- GroupPrimitive2D, so the implicit decomposition will use the
- content. To suppress, this primitive needs to be parsed by
- the renderer without taking any action.
- */
- class DRAWINGLAYER_DLLPUBLIC TextHierarchyEditPrimitive2D : public GroupPrimitive2D
- {
- private:
- public:
- /// constructor
- TextHierarchyEditPrimitive2D(const Primitive2DSequence& rChildren);
-
- /// provide unique ID
- DeclPrimitrive2DIDBlock()
- };
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif //INCLUDED_DRAWINGLAYER_PRIMITIVE2D_TEXTHIERARCHYPRIMITIVE2D_HXX
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/primitive2d/textlayoutdevice.hxx b/drawinglayer/inc/drawinglayer/primitive2d/textlayoutdevice.hxx
deleted file mode 100644
index b581bb7205..0000000000
--- a/drawinglayer/inc/drawinglayer/primitive2d/textlayoutdevice.hxx
+++ /dev/null
@@ -1,169 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_TEXTLAYOUTDEVICE_HXX
-#define INCLUDED_DRAWINGLAYER_TEXTLAYOUTDEVICE_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <sal/types.h>
-#include <tools/solar.h>
-#include <tools/poly.hxx>
-#include <basegfx/range/b2drange.hxx>
-#include <vector>
-#include <com/sun/star/lang/Locale.hpp>
-
-//////////////////////////////////////////////////////////////////////////////
-// predefines
-class VirtualDevice;
-class Font;
-class String;
-class OutputDevice;
-class GDIMetaFile;
-
-namespace drawinglayer { namespace attribute {
- class FontAttribute;
-}}
-
-namespace basegfx {
- class B2DPolyPolygon;
- typedef ::std::vector< B2DPolyPolygon > B2DPolyPolygonVector;
-}
-
-//////////////////////////////////////////////////////////////////////////////
-// access to one global impTimedRefDev incarnation in namespace drawinglayer::primitive
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- /** TextLayouterDevice class
-
- This helper class exists to isolate all accesses to VCL
- text formatting/handling functionality for primitive implementations.
- When in the future FontHandling may move to an own library independent
- from VCL, primitives will be prepared.
- */
- class DRAWINGLAYER_DLLPUBLIC TextLayouterDevice
- {
- /// internally used VirtualDevice
- VirtualDevice& mrDevice;
-
- public:
- /// constructor/destructor
- TextLayouterDevice();
- ~TextLayouterDevice();
-
- /// tooling methods
- void setFont(const Font& rFont);
- void setFontAttribute(
- const attribute::FontAttribute& rFontAttribute,
- double fFontScaleX,
- double fFontScaleY,
- const ::com::sun::star::lang::Locale & rLocale);
-
- double getTextHeight() const;
- double getOverlineHeight() const;
- double getOverlineOffset() const;
- double getUnderlineHeight() const;
- double getUnderlineOffset() const;
- double getStrikeoutOffset() const;
-
- double getTextWidth(
- const String& rText,
- sal_uInt32 nIndex,
- sal_uInt32 nLength) const;
-
- bool getTextOutlines(
- basegfx::B2DPolyPolygonVector&,
- const String& rText,
- sal_uInt32 nIndex,
- sal_uInt32 nLength,
- const ::std::vector< double >& rDXArray) const;
-
- basegfx::B2DRange getTextBoundRect(
- const String& rText,
- sal_uInt32 nIndex,
- sal_uInt32 nLength) const;
-
- double getFontAscent() const;
- double getFontDescent() const;
-
- void addTextRectActions(
- const Rectangle& rRectangle,
- const String& rText,
- sal_uInt16 nStyle,
- GDIMetaFile& rGDIMetaFile) const;
-
- ::std::vector< double > getTextArray(
- const String& rText,
- sal_uInt32 nIndex,
- sal_uInt32 nLength) const;
- };
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// helper methods for vcl font handling
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- /** Create a VCL-Font based on the definitions in FontAttribute
- and the given FontScaling. The FontScaling defines the FontHeight
- (fFontScaleY) and the FontWidth (fFontScaleX). The combination of
- both defines FontStretching, where no stretching happens at
- fFontScaleY == fFontScaleX
- */
- Font DRAWINGLAYER_DLLPUBLIC getVclFontFromFontAttribute(
- const attribute::FontAttribute& rFontAttribute,
- double fFontScaleX,
- double fFontScaleY,
- double fFontRotation,
- const ::com::sun::star::lang::Locale & rLocale);
-
- /** Generate FontAttribute DataSet derived from the given VCL-Font.
- The FontScaling with fFontScaleY, fFontScaleX relationship (see
- above) will be set in return parameter o_rSize to allow further
- processing
- */
- attribute::FontAttribute DRAWINGLAYER_DLLPUBLIC getFontAttributeFromVclFont(
- basegfx::B2DVector& o_rSize,
- const Font& rFont,
- bool bRTL,
- bool bBiDiStrong);
-
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif //_DRAWINGLAYER_TEXTLAYOUTDEVICE_HXX
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/primitive2d/textlineprimitive2d.hxx b/drawinglayer/inc/drawinglayer/primitive2d/textlineprimitive2d.hxx
deleted file mode 100644
index 99ee53ba7e..0000000000
--- a/drawinglayer/inc/drawinglayer/primitive2d/textlineprimitive2d.hxx
+++ /dev/null
@@ -1,96 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_PRIMITIVE2D_TEXTLINEPRIMITIVE2D_HXX
-#define INCLUDED_DRAWINGLAYER_PRIMITIVE2D_TEXTLINEPRIMITIVE2D_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <drawinglayer/primitive2d/baseprimitive2d.hxx>
-#include <drawinglayer/primitive2d/textenumsprimitive2d.hxx>
-#include <basegfx/matrix/b2dhommatrix.hxx>
-#include <basegfx/color/bcolor.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- class DRAWINGLAYER_DLLPUBLIC TextLinePrimitive2D : public BufferedDecompositionPrimitive2D
- {
- private:
- /// geometric definitions
- basegfx::B2DHomMatrix maObjectTransformation;
- double mfWidth;
- double mfOffset;
- double mfHeight;
-
- /// decoration definitions
- TextLine meTextLine;
- basegfx::BColor maLineColor;
-
- protected:
- /// local decomposition.
- virtual Primitive2DSequence create2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const;
-
- public:
- /// constructor
- TextLinePrimitive2D(
- const basegfx::B2DHomMatrix& rObjectTransformation,
- double fWidth,
- double fOffset,
- double fHeight,
- TextLine eTextLine,
- const basegfx::BColor& rLineColor);
-
- /// data read access
- const basegfx::B2DHomMatrix& getObjectTransformation() const { return maObjectTransformation; }
- double getWidth() const { return mfWidth; }
- double getOffset() const { return mfOffset; }
- double getHeight() const { return mfHeight; }
- TextLine getTextLine() const { return meTextLine; }
- const basegfx::BColor& getLineColor() const { return maLineColor; }
-
- /// compare operator
- virtual bool operator==( const BasePrimitive2D& rPrimitive ) const;
-
- /// provide unique ID
- DeclPrimitrive2DIDBlock()
- };
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif //INCLUDED_DRAWINGLAYER_PRIMITIVE2D_TEXTLINEPRIMITIVE2D_HXX
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/primitive2d/textprimitive2d.hxx b/drawinglayer/inc/drawinglayer/primitive2d/textprimitive2d.hxx
deleted file mode 100644
index d287035639..0000000000
--- a/drawinglayer/inc/drawinglayer/primitive2d/textprimitive2d.hxx
+++ /dev/null
@@ -1,197 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_PRIMITIVE2D_TEXTPRIMITIVE2D_HXX
-#define INCLUDED_DRAWINGLAYER_PRIMITIVE2D_TEXTPRIMITIVE2D_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <drawinglayer/primitive2d/baseprimitive2d.hxx>
-#include <basegfx/matrix/b2dhommatrix.hxx>
-#include <tools/string.hxx>
-#include <vcl/font.hxx>
-#include <basegfx/color/bcolor.hxx>
-#include <vector>
-#include <com/sun/star/lang/Locale.hpp>
-#include <drawinglayer/attribute/fontattribute.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-// predefines
-
-namespace basegfx {
- class B2DPolyPolygon;
- typedef ::std::vector< B2DPolyPolygon > B2DPolyPolygonVector;
-}
-
-class OutputDevice;
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- /** TextSimplePortionPrimitive2D class
-
- This is the basic primitive for representing a text portion. It contains
- all needed information. If it is not handled by a renderer, it's decomposition
- will provide the text PolyPolygon outlines as filled polygons, correctly
- transformed.
-
- To get better text quality, it is suggested to handle tis primitive directly
- in a renderer. In that case, e.g. hintings on the system can be supported.
-
- @param maTextTransform
- The text transformation contains the text start position (always baselined)
- as translation, the FontSize as scale (where width relative to height defines
- font scaling and width == height means no font scaling) and the font rotation
- and shear.
- When shear is used and a renderer does not support it, it may be better to use
- the decomposition which will do everything correctly. Same is true for mirroring
- which would be expressed as negative scalings.
-
- @param rText
- The text to be used. Only a part may be used, but a bigger part of the string
- may be necessary for correct layouting (e.g. international)
-
- @param aTextPosition
- The index to the first character to use from rText
-
- @param aTextLength
- The number of characters to use from rText
-
- @param rDXArray
- The distances between the characters. This parameter may be empty, in that case
- the renderer is responsible to do something useful. If it is given, it has to be of
- the size aTextLength. Its values are in logical coordinates and describe the
- distance for each character to use. This is independent from the font width which
- is given with maTextTransform. The first value is the offset to use from the start
- point in FontCoordinateSystem X-Direction (given by maTextTransform) to the start
- point of the second character
-
- @param rFontAttribute
- The font definition
-
- @param rLocale
- The locale to use
-
- @param rFontColor
- The font color to use
- */
- class DRAWINGLAYER_DLLPUBLIC TextSimplePortionPrimitive2D : public BufferedDecompositionPrimitive2D
- {
- private:
- /// text transformation (FontCoordinateSystem)
- basegfx::B2DHomMatrix maTextTransform;
-
- /// The text, used from maTextPosition up to maTextPosition + maTextLength
- String maText;
-
- /// The index from where on maText is used
- xub_StrLen maTextPosition;
-
- /// The length for maText usage, starting from maTextPosition
- xub_StrLen maTextLength;
-
- /// The DX array in logic units
- ::std::vector< double > maDXArray;
-
- /// The font definition
- attribute::FontAttribute maFontAttribute;
-
- /// The Locale for the text
- ::com::sun::star::lang::Locale maLocale;
-
- /// font color
- basegfx::BColor maFontColor;
-
- /// #i96669# internal: add simple range buffering for this primitive
- basegfx::B2DRange maB2DRange;
- bool mbFilled; // Whether to fill a given width with the text
- long mnWidthToFill; // the width to fill
-
- protected:
- /// local decomposition.
- virtual Primitive2DSequence create2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const;
-
- public:
- /// constructor
- TextSimplePortionPrimitive2D(
- const basegfx::B2DHomMatrix& rNewTransform,
- const String& rText,
- xub_StrLen aTextPosition,
- xub_StrLen aTextLength,
- const ::std::vector< double >& rDXArray,
- const attribute::FontAttribute& rFontAttribute,
- const ::com::sun::star::lang::Locale& rLocale,
- const basegfx::BColor& rFontColor,
- bool bFilled = false,
- long nWidthToFill = 0);
-
- /// helpers
- /** get text outlines as polygons and their according ObjectTransformation. Handles all
- the necessary VCL outline extractins, scaling adaptions and other stuff.
- */
- void getTextOutlinesAndTransformation(basegfx::B2DPolyPolygonVector& rTarget, basegfx::B2DHomMatrix& rTransformation) const;
-
- /// data read access
- const basegfx::B2DHomMatrix& getTextTransform() const { return maTextTransform; }
- const String& getText() const { return maText; }
- xub_StrLen getTextPosition() const { return maTextPosition; }
- xub_StrLen getTextLength() const { return maTextLength; }
- const ::std::vector< double >& getDXArray() const { return maDXArray; }
- const attribute::FontAttribute& getFontAttribute() const { return maFontAttribute; }
- const ::com::sun::star::lang::Locale& getLocale() const { return maLocale; }
- const basegfx::BColor& getFontColor() const { return maFontColor; }
- bool isFilled() const { return mbFilled; }
- long getWidthToFill() const { return mnWidthToFill; }
-
- /// compare operator
- virtual bool operator==( const BasePrimitive2D& rPrimitive ) const;
-
- /// get range
- virtual basegfx::B2DRange getB2DRange(const geometry::ViewInformation2D& rViewInformation) const;
-
- /// provide unique ID
- DeclPrimitrive2DIDBlock()
- };
-
- /// small helper to have a compare operator for Locale
- bool DRAWINGLAYER_DLLPUBLIC LocalesAreEqual(const ::com::sun::star::lang::Locale& rA, const ::com::sun::star::lang::Locale& rB);
-
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif //INCLUDED_DRAWINGLAYER_PRIMITIVE2D_TEXTPRIMITIVE2D_HXX
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/primitive2d/textstrikeoutprimitive2d.hxx b/drawinglayer/inc/drawinglayer/primitive2d/textstrikeoutprimitive2d.hxx
deleted file mode 100644
index 03daf74afe..0000000000
--- a/drawinglayer/inc/drawinglayer/primitive2d/textstrikeoutprimitive2d.hxx
+++ /dev/null
@@ -1,164 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_PRIMITIVE2D_TEXTSTRIKEOUTPRIMITIVE2D_HXX
-#define INCLUDED_DRAWINGLAYER_PRIMITIVE2D_TEXTSTRIKEOUTPRIMITIVE2D_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <drawinglayer/primitive2d/baseprimitive2d.hxx>
-#include <drawinglayer/primitive2d/textenumsprimitive2d.hxx>
-#include <basegfx/matrix/b2dhommatrix.hxx>
-#include <basegfx/color/bcolor.hxx>
-#include <drawinglayer/attribute/fontattribute.hxx>
-#include <com/sun/star/lang/Locale.hpp>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- class DRAWINGLAYER_DLLPUBLIC BaseTextStrikeoutPrimitive2D : public BufferedDecompositionPrimitive2D
- {
- private:
- /// geometric definitions
- basegfx::B2DHomMatrix maObjectTransformation;
- double mfWidth;
-
- /// decoration definitions
- basegfx::BColor maFontColor;
-
- public:
- /// constructor
- BaseTextStrikeoutPrimitive2D(
- const basegfx::B2DHomMatrix& rObjectTransformation,
- double fWidth,
- const basegfx::BColor& rFontColor);
-
- /// data read access
- const basegfx::B2DHomMatrix& getObjectTransformation() const { return maObjectTransformation; }
- double getWidth() const { return mfWidth; }
- const basegfx::BColor& getFontColor() const { return maFontColor; }
-
- /// compare operator
- virtual bool operator==( const BasePrimitive2D& rPrimitive ) const;
- };
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- class DRAWINGLAYER_DLLPUBLIC TextCharacterStrikeoutPrimitive2D : public BaseTextStrikeoutPrimitive2D
- {
- private:
- sal_Unicode maStrikeoutChar;
- attribute::FontAttribute maFontAttribute;
- ::com::sun::star::lang::Locale maLocale;
-
- protected:
- /// local decomposition.
- virtual Primitive2DSequence create2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const;
-
- public:
- /// constructor
- TextCharacterStrikeoutPrimitive2D(
- const basegfx::B2DHomMatrix& rObjectTransformation,
- double fWidth,
- const basegfx::BColor& rFontColor,
- sal_Unicode aStrikeoutChar,
- const attribute::FontAttribute& rFontAttribute,
- const ::com::sun::star::lang::Locale& rLocale);
-
- /// data read access
- sal_Unicode getStrikeoutChar() const { return maStrikeoutChar; }
- const attribute::FontAttribute& getFontAttribute() const { return maFontAttribute; }
- const ::com::sun::star::lang::Locale& getLocale() const { return maLocale; }
-
- /// compare operator
- virtual bool operator==( const BasePrimitive2D& rPrimitive ) const;
-
- /// provide unique ID
- DeclPrimitrive2DIDBlock()
- };
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- class DRAWINGLAYER_DLLPUBLIC TextGeometryStrikeoutPrimitive2D : public BaseTextStrikeoutPrimitive2D
- {
- private:
- double mfHeight;
- double mfOffset;
- TextStrikeout meTextStrikeout;
-
- protected:
- /// local decomposition.
- virtual Primitive2DSequence create2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const;
-
- public:
- /// constructor
- TextGeometryStrikeoutPrimitive2D(
- const basegfx::B2DHomMatrix& rObjectTransformation,
- double fWidth,
- const basegfx::BColor& rFontColor,
- double fHeight,
- double fOffset,
- TextStrikeout eTextStrikeout);
-
- /// data read access
- double getHeight() const { return mfHeight; }
- double getOffset() const { return mfOffset; }
- TextStrikeout getTextStrikeout() const { return meTextStrikeout; }
-
- /// compare operator
- virtual bool operator==( const BasePrimitive2D& rPrimitive ) const;
-
- /// provide unique ID
- DeclPrimitrive2DIDBlock()
- };
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif //INCLUDED_DRAWINGLAYER_PRIMITIVE2D_TEXTSTRIKEOUTPRIMITIVE2D_HXX
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/primitive2d/transformprimitive2d.hxx b/drawinglayer/inc/drawinglayer/primitive2d/transformprimitive2d.hxx
deleted file mode 100644
index db3c7db6c9..0000000000
--- a/drawinglayer/inc/drawinglayer/primitive2d/transformprimitive2d.hxx
+++ /dev/null
@@ -1,96 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_PRIMITIVE2D_TRANSFORMPRIMITIVE2D_HXX
-#define INCLUDED_DRAWINGLAYER_PRIMITIVE2D_TRANSFORMPRIMITIVE2D_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <drawinglayer/primitive2d/groupprimitive2d.hxx>
-#include <basegfx/matrix/b2dhommatrix.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- /** TransformPrimitive2D class
-
- This is one of the basic grouping primitives and it provides
- embedding a sequence of primitives (a geometry) into a
- transformation. All renderers have to handle this, usually by
- building a current transformation stack (linear combination)
- and applying this to all to-be-rendered geometry. If not handling
- this, the output will be mostly wrong since this primitive is
- widely used.
-
- It does transform by embedding an existing geometry into a
- transformation as Child-content. This allows re-usage of the
- refcounted Uno-Api primitives and their existung, buffered
- decompositions.
-
- It could e.g. be used to show a single object geometry in 1000
- different, transformed states without the need to create those
- thousand primitive contents.
- */
- class DRAWINGLAYER_DLLPUBLIC TransformPrimitive2D : public GroupPrimitive2D
- {
- private:
- // the transformation to apply to the child geometry
- basegfx::B2DHomMatrix maTransformation;
-
- public:
- /// constructor
- TransformPrimitive2D(
- const basegfx::B2DHomMatrix& rTransformation,
- const Primitive2DSequence& rChildren);
-
- /// data read access
- const basegfx::B2DHomMatrix& getTransformation() const { return maTransformation; }
-
- /// compare operator
- virtual bool operator==(const BasePrimitive2D& rPrimitive) const;
-
- /// get range
- virtual basegfx::B2DRange getB2DRange(const geometry::ViewInformation2D& rViewInformation) const;
-
- /// provide unique ID
- DeclPrimitrive2DIDBlock()
- };
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif //INCLUDED_DRAWINGLAYER_PRIMITIVE2D_TRANSFORMPRIMITIVE2D_HXX
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/primitive2d/transparenceprimitive2d.hxx b/drawinglayer/inc/drawinglayer/primitive2d/transparenceprimitive2d.hxx
deleted file mode 100644
index b2e7d2b6af..0000000000
--- a/drawinglayer/inc/drawinglayer/primitive2d/transparenceprimitive2d.hxx
+++ /dev/null
@@ -1,102 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * The Contents of this file are made available subject to
- * the terms of GNU Lesser General Public License Version 2.1.
- *
- *
- * GNU Lesser General Public License Version 2.1
- * =============================================
- * Copyright 2005 by Sun Microsystems, Inc.
- * 901 San Antonio Road, Palo Alto, CA 94303, USA
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License version 2.1, as published by the Free Software Foundation.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_PRIMITIVE2D_TRANSPARENCEPRIMITIVE2D_HXX
-#define INCLUDED_DRAWINGLAYER_PRIMITIVE2D_TRANSPARENCEPRIMITIVE2D_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <drawinglayer/primitive2d/groupprimitive2d.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- /** TransparencePrimitive2D class
-
- This is the basic primitive for applying freely defined transparence
- to freely defined content. The basic idea is to associate a content
- which is defined as a sequence of primitives and hold as child content
- in the GroupPrimitive2D with a transparence channel also defined as a sequence
- of primitives and hold in the transparence member.
-
- The basic definition is to use the transparence content as transparence-Mask by
- interpreting the transparence-content not as RGB, but as Luminance transparence mask
- using the common RGB_to_luminance definition as e.g. used by VCL.
-
- The defining geometry is the Range of the child primitive sequence,
- this means the renderers will/shall use this geometric information for
- rendering, not the transparent one. The transparent one should/will be clipped
- accordingly.
- */
- class DRAWINGLAYER_DLLPUBLIC TransparencePrimitive2D : public GroupPrimitive2D
- {
- private:
- /// The transparence-Mask who's RGB-Values are interpreted as Luminance
- Primitive2DSequence maTransparence;
-
- public:
- /** constructor
-
- @param rChildren
- The content which is defined to have a transparency. The
- range of this primitive is defined by this content
-
- @param rTransparence
- The definition of the Transparence-channel for this primitive. It
- will be interpreted as mask by interpreting as gray values
- using the common RGB_to_luminance definitions
- */
- TransparencePrimitive2D(
- const Primitive2DSequence& rChildren,
- const Primitive2DSequence& rTransparence);
-
- /// data read access
- const Primitive2DSequence& getTransparence() const { return maTransparence; }
-
- /// compare operator
- virtual bool operator==(const BasePrimitive2D& rPrimitive) const;
-
- /// provide unique ID
- DeclPrimitrive2DIDBlock()
- };
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif //INCLUDED_DRAWINGLAYER_PRIMITIVE2D_TRANSPARENCEPRIMITIVE2D_HXX
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/primitive2d/unifiedtransparenceprimitive2d.hxx b/drawinglayer/inc/drawinglayer/primitive2d/unifiedtransparenceprimitive2d.hxx
deleted file mode 100644
index 1f5d0eb85f..0000000000
--- a/drawinglayer/inc/drawinglayer/primitive2d/unifiedtransparenceprimitive2d.hxx
+++ /dev/null
@@ -1,90 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * The Contents of this file are made available subject to
- * the terms of GNU Lesser General Public License Version 2.1.
- *
- *
- * GNU Lesser General Public License Version 2.1
- * =============================================
- * Copyright 2005 by Sun Microsystems, Inc.
- * 901 San Antonio Road, Palo Alto, CA 94303, USA
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License version 2.1, as published by the Free Software Foundation.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_PRIMITIVE2D_UNIFIEDTRANSPARENCEPRIMITIVE2D_HXX
-#define INCLUDED_DRAWINGLAYER_PRIMITIVE2D_UNIFIEDTRANSPARENCEPRIMITIVE2D_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <drawinglayer/primitive2d/groupprimitive2d.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- /** UnifiedTransparencePrimitive2D class
-
- This primitive encapsualtes a child hierarchy and defines
- that it shall be visualized with the given transparency. That
- transparency is unique for all contained geometry, so that
- e.g. overlapping polygons in the child geometry will not show
- regions of combined transparency, but be all rendered with the
- defined, single transparency.
- */
- class DRAWINGLAYER_DLLPUBLIC UnifiedTransparencePrimitive2D : public GroupPrimitive2D
- {
- private:
- /// the unified transparence
- double mfTransparence;
-
- public:
- /// constructor
- UnifiedTransparencePrimitive2D(
- const Primitive2DSequence& rChildren,
- double fTransparence);
-
- /// data read access
- double getTransparence() const { return mfTransparence; }
-
- /// compare operator
- virtual bool operator==(const BasePrimitive2D& rPrimitive) const;
-
- /// own getB2DRange implementation to include transparent geometries to BoundRect calculations
- virtual basegfx::B2DRange getB2DRange(const geometry::ViewInformation2D& rViewInformation) const;
-
- /// create decomposition
- virtual Primitive2DSequence get2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const;
-
- /// provide unique ID
- DeclPrimitrive2DIDBlock()
- };
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif //INCLUDED_DRAWINGLAYER_PRIMITIVE2D_UNIFIEDTRANSPARENCEPRIMITIVE2D_HXX
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/primitive2d/wallpaperprimitive2d.hxx b/drawinglayer/inc/drawinglayer/primitive2d/wallpaperprimitive2d.hxx
deleted file mode 100644
index 626e8b3a3d..0000000000
--- a/drawinglayer/inc/drawinglayer/primitive2d/wallpaperprimitive2d.hxx
+++ /dev/null
@@ -1,99 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_PRIMITIVE2D_WALLPAPERPRIMITIVE2D_HXX
-#define INCLUDED_DRAWINGLAYER_PRIMITIVE2D_WALLPAPERPRIMITIVE2D_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <drawinglayer/primitive2d/primitivetools2d.hxx>
-#include <vcl/bitmapex.hxx>
-#include <vcl/wall.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- /** WallpaperBitmapPrimitive2D class
-
- This is a specialized primtive for the Wallpaper definitions included in
- VCL and Metafiles. The extraordinary about the bitmap definition part of
- the Wallpaper is that it uses PIXEL size of the given Bitmap and not
- the logic and/or discrete size derived by PrefMapMode/PrefSize methods.
- To emulate this, a ViewTransformation dependent primitive is needed which
- takes over the correct scaling(s).
-
- Since a specialized primitive is needed anyways, i opted to also add the
- layouting which is dependent from WallpaperStyle; thus it does not need
- to be handled anywhere else in the future.
- */
- class DRAWINGLAYER_DLLPUBLIC WallpaperBitmapPrimitive2D : public ViewTransformationDependentPrimitive2D
- {
- private:
- basegfx::B2DRange maObjectRange;
- BitmapEx maBitmapEx;
- WallpaperStyle meWallpaperStyle;
-
- protected:
- /// create local decomposition
- virtual Primitive2DSequence create2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const;
-
- public:
- /// constructor
- WallpaperBitmapPrimitive2D(
- const basegfx::B2DRange& rObjectRange,
- const BitmapEx& rBitmapEx,
- WallpaperStyle eWallpaperStyle);
-
- /// data read access
- const basegfx::B2DRange& getLocalObjectRange() const { return maObjectRange; }
- const BitmapEx& getBitmapEx() const { return maBitmapEx ; }
- WallpaperStyle getWallpaperStyle() const { return meWallpaperStyle; }
-
- /// compare operator
- virtual bool operator==(const BasePrimitive2D& rPrimitive) const;
-
- /// get B2Drange
- virtual basegfx::B2DRange getB2DRange(const geometry::ViewInformation2D& rViewInformation) const;
-
- /// provide unique ID
- DeclPrimitrive2DIDBlock()
- };
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif // INCLUDED_DRAWINGLAYER_PRIMITIVE2D_WALLPAPERPRIMITIVE2D_HXX
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/primitive2d/wrongspellprimitive2d.hxx b/drawinglayer/inc/drawinglayer/primitive2d/wrongspellprimitive2d.hxx
deleted file mode 100644
index 06199bd95c..0000000000
--- a/drawinglayer/inc/drawinglayer/primitive2d/wrongspellprimitive2d.hxx
+++ /dev/null
@@ -1,104 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_PRIMITIVE2D_WRONGSPELLPRIMITIVE2D_HXX
-#define INCLUDED_DRAWINGLAYER_PRIMITIVE2D_WRONGSPELLPRIMITIVE2D_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <drawinglayer/primitive2d/baseprimitive2d.hxx>
-#include <basegfx/color/bcolor.hxx>
-#include <basegfx/matrix/b2dhommatrix.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-// WrongSpellPrimitive2D class
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- /** WrongSpellPrimitive2D class
-
- This is a helper primitive to hold evtl. WrongSpell visualisations
- in the sequence of primitives. The primitive holds this information
- separated form the TextPortions to where it belongs to tot expand the
- TextSimplePortionPrimitive2D more as needed.
-
- A renderer who does not want to visualize this (if contained at all)
- can detect and ignore this primitive. If it's decomposition is used,
- it will be visualized as red wavelines.
-
- The geometric definition defines a line on the X-Axis (no Y-coordinates)
- which will when transformed by Transformation, create the coordinate data.
- */
- class DRAWINGLAYER_DLLPUBLIC WrongSpellPrimitive2D : public BufferedDecompositionPrimitive2D
- {
- private:
- /// geometry definition
- basegfx::B2DHomMatrix maTransformation;
- double mfStart;
- double mfStop;
-
- /// color (usually red)
- basegfx::BColor maColor;
-
- protected:
- /// create local decomposition
- virtual Primitive2DSequence create2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const;
-
- public:
- /// constructor
- WrongSpellPrimitive2D(
- const basegfx::B2DHomMatrix& rTransformation,
- double fStart,
- double fStop,
- const basegfx::BColor& rColor);
-
- /// data read access
- const basegfx::B2DHomMatrix& getTransformation() const { return maTransformation; }
- double getStart() const { return mfStart; }
- double getStop() const { return mfStop; }
- const basegfx::BColor& getColor() const { return maColor; }
-
- /// compare operator
- virtual bool operator==(const BasePrimitive2D& rPrimitive) const;
-
- /// provide unique ID
- DeclPrimitrive2DIDBlock()
- };
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif //INCLUDED_DRAWINGLAYER_PRIMITIVE2D_WRONGSPELLPRIMITIVE2D_HXX
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/primitive3d/baseprimitive3d.hxx b/drawinglayer/inc/drawinglayer/primitive3d/baseprimitive3d.hxx
deleted file mode 100644
index 7ad394c064..0000000000
--- a/drawinglayer/inc/drawinglayer/primitive3d/baseprimitive3d.hxx
+++ /dev/null
@@ -1,225 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_PRIMITIVE3D_BASEPRIMITIVE3D_HXX
-#define INCLUDED_DRAWINGLAYER_PRIMITIVE3D_BASEPRIMITIVE3D_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <cppuhelper/compbase1.hxx>
-#include <boost/utility.hpp>
-#include <com/sun/star/graphic/XPrimitive3D.hpp>
-#include <comphelper/broadcasthelper.hxx>
-#include <basegfx/range/b3drange.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-/** defines for DeclPrimitrive3DIDBlock and ImplPrimitrive3DIDBlock
- Added to be able to simply change identification stuff later, e.g. add
- a identification string and/or ID to the interface and to the implementation
- ATM used to delclare implement getPrimitive3DID()
- */
-
-#define DeclPrimitrive3DIDBlock() \
- virtual sal_uInt32 getPrimitive3DID() const;
-
-#define ImplPrimitrive3DIDBlock(TheClass, TheID) \
- sal_uInt32 TheClass::getPrimitive3DID() const { return TheID; }
-
-//////////////////////////////////////////////////////////////////////////////
-// predefines
-
-namespace drawinglayer { namespace geometry {
- class ViewInformation3D;
-}}
-
-namespace drawinglayer { namespace primitive3d {
- /// typedefs for basePrimitive3DImplBase, Primitive3DSequence and Primitive3DReference
- typedef cppu::WeakComponentImplHelper1< ::com::sun::star::graphic::XPrimitive3D > BasePrimitive3DImplBase;
- typedef ::com::sun::star::uno::Reference< ::com::sun::star::graphic::XPrimitive3D > Primitive3DReference;
- typedef ::com::sun::star::uno::Sequence< Primitive3DReference > Primitive3DSequence;
-}}
-
-//////////////////////////////////////////////////////////////////////////////
-// basePrimitive3D class
-
-namespace drawinglayer
-{
- namespace primitive3d
- {
- /** BasePrimitive3D class
-
- Baseclass for all C++ implementations of com::sun::star::graphic::XPrimitive2D
-
- The description/functionality is identical with the 2D case in baseprimitive2d.hxx,
- please see there for detailed information.
-
- Current Basic 3D Primitives are:
-
- - PolygonHairlinePrimitive3D (for 3D hairlines)
- - PolyPolygonMaterialPrimitive3D (for 3D filled plane polygons)
-
- That's all for 3D!
- */
- class DRAWINGLAYER_DLLPUBLIC BasePrimitive3D
- : private boost::noncopyable,
- protected comphelper::OBaseMutex,
- public BasePrimitive3DImplBase
- {
- private:
- protected:
- public:
- // constructor/destructor
- BasePrimitive3D();
- virtual ~BasePrimitive3D();
-
- /** the ==operator is mainly needed to allow testing newly-created high level primitives against their last
- incarnation which buffers/holds the decompositionsThe default implementation
- uses getPrimitive3DID()-calls to test if it's the same ID at last. Overloaded implementation are then
- based on this implementation.
- */
- virtual bool operator==( const BasePrimitive3D& rPrimitive ) const;
- bool operator!=( const BasePrimitive3D& rPrimitive ) const { return !operator==(rPrimitive); }
-
- /** This method is for places where using the C++ implementation directly is possible. The subprocessing
- and range merging is more efficient when working directly on basegfx::B3DRange. The default implementation
- will use getDecomposition results to create the range
- */
- virtual basegfx::B3DRange getB3DRange(const geometry::ViewInformation3D& rViewInformation) const;
-
- /** provide unique ID for fast identifying of known primitive implementations in renderers. These use
- the the defines from primitivetypes3d.hxx to define unique IDs.
- */
- virtual sal_uInt32 getPrimitive3DID() const = 0;
-
- /// The default implementation returns an empty sequence
- virtual Primitive3DSequence get3DDecomposition(const geometry::ViewInformation3D& rViewInformation) const;
-
- //
- // Methods from XPrimitive3D
- //
-
- /** The getDecomposition implementation for UNO API will use getDecomposition from this implementation. It
- will get the ViewInformation from the ViewParameters for that purpose
- */
- virtual Primitive3DSequence SAL_CALL getDecomposition( const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& rViewParameters ) throw ( ::com::sun::star::uno::RuntimeException );
-
- /** the getRange default implemenation will use getDecomposition to create the range information from merging
- getRange results from the single local decomposition primitives.
- */
- virtual ::com::sun::star::geometry::RealRectangle3D SAL_CALL getRange( const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& rViewParameters ) throw ( ::com::sun::star::uno::RuntimeException );
- };
- } // end of namespace primitive3d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// BufferedDecompositionPrimitive3D class
-
-namespace drawinglayer
-{
- namespace primitive3d
- {
- /** BufferedDecompositionPrimitive3D class
-
- Baseclass for all C++ implementations of com::sun::star::graphic::XPrimitive2D
-
- The description/functionality is identical with the 2D case in baseprimitive2d.hxx,
- please see there for detailed information
- */
- class DRAWINGLAYER_DLLPUBLIC BufferedDecompositionPrimitive3D
- : public BasePrimitive3D
- {
- private:
- /// a sequence used for buffering the last create3DDecomposition() result
- Primitive3DSequence maBuffered3DDecomposition;
-
- protected:
- /** access methods to maBuffered3DDecomposition. The usage of this methods may allow
- later thread-safe stuff to be added if needed. Only to be used by getDecomposition()
- implementations for buffering the last decomposition.
- */
- const Primitive3DSequence& getBuffered3DDecomposition() const { return maBuffered3DDecomposition; }
- void setBuffered3DDecomposition(const Primitive3DSequence& rNew) { maBuffered3DDecomposition = rNew; }
-
- /** method which is to be used to implement the local decomposition of a 2D primitive. The default
- implementation will just return an empty decomposition
- */
- virtual Primitive3DSequence create3DDecomposition(const geometry::ViewInformation3D& rViewInformation) const;
-
- public:
- // constructor
- BufferedDecompositionPrimitive3D();
-
- /** The getDecomposition default implementation will on demand use create3DDecomposition() if
- maBuffered3DDecomposition is empty. It will set maBuffered3DDecomposition to this obtained decomposition
- to buffer it. If the decomposition is also ViewInformation-dependent, this method needs to be
- overloaded and the ViewInformation for the last decomposition needs to be remembered, too, and
- be used in the next call to decide if the buffered decomposition may be reused or not.
- */
- virtual Primitive3DSequence get3DDecomposition(const geometry::ViewInformation3D& rViewInformation) const;
- };
- } // end of namespace primitive3d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// tooling
-
-namespace drawinglayer
-{
- namespace primitive3d
- {
- /// get B3DRange from a given Primitive3DReference
- basegfx::B3DRange DRAWINGLAYER_DLLPUBLIC getB3DRangeFromPrimitive3DReference(const Primitive3DReference& rCandidate, const geometry::ViewInformation3D& aViewInformation);
-
- /// get range3D from a given Primitive3DSequence
- basegfx::B3DRange DRAWINGLAYER_DLLPUBLIC getB3DRangeFromPrimitive3DSequence(const Primitive3DSequence& rCandidate, const geometry::ViewInformation3D& aViewInformation);
-
- /** compare two Primitive2DReferences for equality, including trying to get implementations (BasePrimitive2D)
- and using compare operator
- */
- bool DRAWINGLAYER_DLLPUBLIC arePrimitive3DReferencesEqual(const Primitive3DReference& rA, const Primitive3DReference& rB);
-
- /// compare two Primitive3DReferences for equality, uses arePrimitive3DReferencesEqual internally
- bool DRAWINGLAYER_DLLPUBLIC arePrimitive3DSequencesEqual(const Primitive3DSequence& rA, const Primitive3DSequence& rB);
-
- /// concatenate sequence
- void DRAWINGLAYER_DLLPUBLIC appendPrimitive3DSequenceToPrimitive3DSequence(Primitive3DSequence& rDest, const Primitive3DSequence& rSource);
-
- /// concatenate single Primitive3D
- void DRAWINGLAYER_DLLPUBLIC appendPrimitive3DReferenceToPrimitive3DSequence(Primitive3DSequence& rDest, const Primitive3DReference& rSource);
-
- } // end of namespace primitive3d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif //INCLUDED_DRAWINGLAYER_PRIMITIVE3D_BASEPRIMITIVE3D_HXX
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/primitive3d/drawinglayer_primitivetypes3d.hxx b/drawinglayer/inc/drawinglayer/primitive3d/drawinglayer_primitivetypes3d.hxx
deleted file mode 100644
index 2f6aeb8c93..0000000000
--- a/drawinglayer/inc/drawinglayer/primitive3d/drawinglayer_primitivetypes3d.hxx
+++ /dev/null
@@ -1,68 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_PRIMITIVE3D_PRIMITIVETYPES3D_HXX
-#define INCLUDED_DRAWINGLAYER_PRIMITIVE3D_PRIMITIVETYPES3D_HXX
-
-//////////////////////////////////////////////////////////////////////////////
-// define ranges for other libraries
-
-#define PRIMITIVE3D_ID_RANGE_DRAWINGLAYER (0 << 16)
-// #define PRIMITIVE3D_ID_RANGE_SVX (1 << 16)
-
-//////////////////////////////////////////////////////////////////////////////
-// local primitives
-
-#define PRIMITIVE3D_ID_GROUPPRIMITIVE3D (PRIMITIVE3D_ID_RANGE_DRAWINGLAYER| 0)
-#define PRIMITIVE3D_ID_HATCHTEXTUREPRIMITIVE3D (PRIMITIVE3D_ID_RANGE_DRAWINGLAYER| 1)
-#define PRIMITIVE3D_ID_MODIFIEDCOLORPRIMITIVE3D (PRIMITIVE3D_ID_RANGE_DRAWINGLAYER| 2)
-#define PRIMITIVE3D_ID_POLYGONHAIRLINEPRIMITIVE3D (PRIMITIVE3D_ID_RANGE_DRAWINGLAYER| 3)
-#define PRIMITIVE3D_ID_POLYGONSTROKEPRIMITIVE3D (PRIMITIVE3D_ID_RANGE_DRAWINGLAYER| 4)
-#define PRIMITIVE3D_ID_POLYGONTUBEPRIMITIVE3D (PRIMITIVE3D_ID_RANGE_DRAWINGLAYER| 5)
-#define PRIMITIVE3D_ID_POLYPOLYGONMATERIALPRIMITIVE3D (PRIMITIVE3D_ID_RANGE_DRAWINGLAYER| 6)
-#define PRIMITIVE3D_ID_SDRCUBEPRIMITIVE3D (PRIMITIVE3D_ID_RANGE_DRAWINGLAYER| 7)
-#define PRIMITIVE3D_ID_SDREXTRUDEPRIMITIVE3D (PRIMITIVE3D_ID_RANGE_DRAWINGLAYER| 8)
-#define PRIMITIVE3D_ID_SDRLATHEPRIMITIVE3D (PRIMITIVE3D_ID_RANGE_DRAWINGLAYER| 9)
-#define PRIMITIVE3D_ID_SDRPOLYPOLYGONPRIMITIVE3D (PRIMITIVE3D_ID_RANGE_DRAWINGLAYER| 10)
-#define PRIMITIVE3D_ID_SDRSPHEREPRIMITIVE3D (PRIMITIVE3D_ID_RANGE_DRAWINGLAYER| 11)
-#define PRIMITIVE3D_ID_SHADOWPRIMITIVE3D (PRIMITIVE3D_ID_RANGE_DRAWINGLAYER| 12)
-#define PRIMITIVE3D_ID_UNIFIEDTRANSPARENCETEXTUREPRIMITIVE3D (PRIMITIVE3D_ID_RANGE_DRAWINGLAYER| 13)
-#define PRIMITIVE3D_ID_GRADIENTTEXTUREPRIMITIVE3D (PRIMITIVE3D_ID_RANGE_DRAWINGLAYER| 14)
-#define PRIMITIVE3D_ID_BITMAPTEXTUREPRIMITIVE3D (PRIMITIVE3D_ID_RANGE_DRAWINGLAYER| 15)
-#define PRIMITIVE3D_ID_TRANSPARENCETEXTUREPRIMITIVE3D (PRIMITIVE3D_ID_RANGE_DRAWINGLAYER| 16)
-#define PRIMITIVE3D_ID_TRANSFORMPRIMITIVE3D (PRIMITIVE3D_ID_RANGE_DRAWINGLAYER| 17)
-#define PRIMITIVE3D_ID_HIDDENGEOMETRYPRIMITIVE3D (PRIMITIVE3D_ID_RANGE_DRAWINGLAYER| 18)
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif //INCLUDED_DRAWINGLAYER_PRIMITIVE3D_PRIMITIVETYPES3D_HXX
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/primitive3d/groupprimitive3d.hxx b/drawinglayer/inc/drawinglayer/primitive3d/groupprimitive3d.hxx
deleted file mode 100644
index 106beb9f95..0000000000
--- a/drawinglayer/inc/drawinglayer/primitive3d/groupprimitive3d.hxx
+++ /dev/null
@@ -1,93 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_PRIMITIVE3D_GROUPPRIMITIVE3D_HXX
-#define INCLUDED_DRAWINGLAYER_PRIMITIVE3D_GROUPPRIMITIVE3D_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <drawinglayer/primitive3d/baseprimitive3d.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive3d
- {
- /** GroupPrimitive3D class
-
- Baseclass for all grouping 3D primitives
-
- The description/functionality is identical with the 2D case in groupprimitive2d.hxx,
- please see there for detailed information.
-
- Current Basic 3D StatePrimitives are:
-
- - ModifiedColorPrimitive3D (for a stack of color modifications)
- - ShadowPrimitive3D (for 3D objects with shadow; this is a special case
- since the shadow of a 3D primitive is a 2D primitive set)
- - TexturePrimitive3D (with the following variations)
- - GradientTexturePrimitive3D (for 3D gradient fill)
- - BitmapTexturePrimitive3D (for 3D Bitmap fill)
- - TransparenceTexturePrimitive3D (for 3D transparence)
- - HatchTexturePrimitive3D (for 3D hatch fill)
- - TransformPrimitive3D (for a transformation stack)
- */
- class DRAWINGLAYER_DLLPUBLIC GroupPrimitive3D : public BasePrimitive3D
- {
- private:
- /// the children. Declared private since this shall never be changed at all after construction
- Primitive3DSequence maChildren;
-
- public:
- /// constructor
- GroupPrimitive3D(const Primitive3DSequence& rChildren);
-
- /// data read access
- Primitive3DSequence getChildren() const { return maChildren; }
-
- /// compare operator
- virtual bool operator==( const BasePrimitive3D& rPrimitive ) const;
-
- /// local decomposition. Implementation will just return children
- virtual Primitive3DSequence get3DDecomposition(const geometry::ViewInformation3D& rViewInformation) const;
-
- /// provide unique ID
- DeclPrimitrive3DIDBlock()
- };
- } // end of namespace primitive3d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif //INCLUDED_DRAWINGLAYER_PRIMITIVE3D_GROUPPRIMITIVE3D_HXX
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/primitive3d/hatchtextureprimitive3d.hxx b/drawinglayer/inc/drawinglayer/primitive3d/hatchtextureprimitive3d.hxx
deleted file mode 100644
index 9a7a4f7edc..0000000000
--- a/drawinglayer/inc/drawinglayer/primitive3d/hatchtextureprimitive3d.hxx
+++ /dev/null
@@ -1,98 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_PRIMITIVE3D_HATCHTEXTUREPRIMITIVE3D_HXX
-#define INCLUDED_DRAWINGLAYER_PRIMITIVE3D_HATCHTEXTUREPRIMITIVE3D_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <drawinglayer/primitive3d/textureprimitive3d.hxx>
-#include <drawinglayer/attribute/fillhatchattribute.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive3d
- {
- /** HatchTexturePrimitive3D class
-
- HatchTexturePrimitive3D is derived from GroupPrimitive3D, but implements
- a decomposition which is complicated enough for buffering. Since the group
- primitive has no default buffering, it is necessary here to add a local
- buffering mechanism for the decomposition
- */
- class DRAWINGLAYER_DLLPUBLIC HatchTexturePrimitive3D : public TexturePrimitive3D
- {
- private:
- /// the hatch definition
- attribute::FillHatchAttribute maHatch;
-
- /// the buffered decomposed hatch
- Primitive3DSequence maBuffered3DDecomposition;
-
- protected:
- /// helper: local decomposition
- Primitive3DSequence impCreate3DDecomposition() const;
-
- /// local access methods to maBufferedDecomposition
- const Primitive3DSequence& getBuffered3DDecomposition() const { return maBuffered3DDecomposition; }
- void setBuffered3DDecomposition(const Primitive3DSequence& rNew) { maBuffered3DDecomposition = rNew; }
-
- public:
- /// constructor
- HatchTexturePrimitive3D(
- const attribute::FillHatchAttribute& rHatch,
- const Primitive3DSequence& rChildren,
- const basegfx::B2DVector& rTextureSize,
- bool bModulate,
- bool bFilter);
-
- /// data read access
- const attribute::FillHatchAttribute& getHatch() const { return maHatch; }
-
- /// compare operator
- virtual bool operator==(const BasePrimitive3D& rPrimitive) const;
-
- /// local decomposition.
- virtual Primitive3DSequence get3DDecomposition(const geometry::ViewInformation3D& rViewInformation) const;
-
- /// provide unique ID
- DeclPrimitrive3DIDBlock()
- };
- } // end of namespace primitive3d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif //INCLUDED_DRAWINGLAYER_PRIMITIVE3D_HATCHTEXTUREPRIMITIVE3D_HXX
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/primitive3d/hiddengeometryprimitive3d.hxx b/drawinglayer/inc/drawinglayer/primitive3d/hiddengeometryprimitive3d.hxx
deleted file mode 100644
index 8be76b30d2..0000000000
--- a/drawinglayer/inc/drawinglayer/primitive3d/hiddengeometryprimitive3d.hxx
+++ /dev/null
@@ -1,80 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * The Contents of this file are made available subject to
- * the terms of GNU Lesser General Public License Version 2.1.
- *
- *
- * GNU Lesser General Public License Version 2.1
- * =============================================
- * Copyright 2005 by Sun Microsystems, Inc.
- * 901 San Antonio Road, Palo Alto, CA 94303, USA
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License version 2.1, as published by the Free Software Foundation.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_PRIMITIVE3D_HIDDENGEOMETRYPRIMITIVE3D_HXX
-#define INCLUDED_DRAWINGLAYER_PRIMITIVE3D_HIDDENGEOMETRYPRIMITIVE3D_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <drawinglayer/primitive3d/groupprimitive3d.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive3d
- {
- // This primitive is used to represent geometry for non-visible objects,
- // e.g. a 3D cube without fill attributes. To still be able to use
- // primitives for HitTest functionality, the 3d decompositions produce
- // an as much as possible simplified fill geometry encapsulated in this
- // primtive when there is no fill geometry. Currently, the 3d hit test
- // uses only areas, so maybe in a further enchanced version this will change
- // to 'if neither filled nor lines' creation criteria. The whole primitive
- // decomposes to nothing, so no one not knowing it will be influenced. Only
- // helper processors for hit test (and maybe BoundRect extractors) will
- // use it and it's children subcontent.
- class DRAWINGLAYER_DLLPUBLIC HiddenGeometryPrimitive3D : public GroupPrimitive3D
- {
- public:
- HiddenGeometryPrimitive3D(const Primitive3DSequence& rChildren);
-
- // despite returning an empty decomposition since it's no visualisation data,
- // range calculation is intended to use hidden geometry, so
- // the local implementation will return the children's range
- virtual basegfx::B3DRange getB3DRange(const geometry::ViewInformation3D& rViewInformation) const;
-
- /// The default implementation returns an empty sequence
- virtual Primitive3DSequence get3DDecomposition(const geometry::ViewInformation3D& rViewInformation) const;
-
- // provide unique ID
- DeclPrimitrive3DIDBlock()
- };
- } // end of namespace primitive3d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif //INCLUDED_DRAWINGLAYER_PRIMITIVE3D_HIDDENGEOMETRYPRIMITIVE3D_HXX
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/primitive3d/modifiedcolorprimitive3d.hxx b/drawinglayer/inc/drawinglayer/primitive3d/modifiedcolorprimitive3d.hxx
deleted file mode 100644
index d128be0f7d..0000000000
--- a/drawinglayer/inc/drawinglayer/primitive3d/modifiedcolorprimitive3d.hxx
+++ /dev/null
@@ -1,81 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_PRIMITIVE3D_MODIFIEDCOLORPRIMITIVE3D_HXX
-#define INCLUDED_DRAWINGLAYER_PRIMITIVE3D_MODIFIEDCOLORPRIMITIVE3D_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <drawinglayer/primitive3d/groupprimitive3d.hxx>
-#include <basegfx/color/bcolormodifier.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive3d
- {
- /** ModifiedColorPrimitive3D class
-
- This primitive is a grouping primitive and allows to define
- how the colors of it's child content shall be modified for
- visualisation. Please see the ModifiedColorPrimitive2D
- description for more info.
- */
- class DRAWINGLAYER_DLLPUBLIC ModifiedColorPrimitive3D : public GroupPrimitive3D
- {
- private:
- /// The ColorModifier to use
- basegfx::BColorModifier maColorModifier;
-
- public:
- /// constructor
- ModifiedColorPrimitive3D(
- const Primitive3DSequence& rChildren,
- const basegfx::BColorModifier& rColorModifier);
-
- /// data read access
- const basegfx::BColorModifier& getColorModifier() const { return maColorModifier; }
-
- /// compare operator
- virtual bool operator==(const BasePrimitive3D& rPrimitive) const;
-
- /// provide unique ID
- DeclPrimitrive3DIDBlock()
- };
- } // end of namespace primitive3d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif //INCLUDED_DRAWINGLAYER_PRIMITIVE3D_MODIFIEDCOLORPRIMITIVE3D_HXX
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/primitive3d/polygonprimitive3d.hxx b/drawinglayer/inc/drawinglayer/primitive3d/polygonprimitive3d.hxx
deleted file mode 100644
index 69b5755b17..0000000000
--- a/drawinglayer/inc/drawinglayer/primitive3d/polygonprimitive3d.hxx
+++ /dev/null
@@ -1,146 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_PRIMITIVE3D_POLYGONPRIMITIVE3D_HXX
-#define INCLUDED_DRAWINGLAYER_PRIMITIVE3D_POLYGONPRIMITIVE3D_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <drawinglayer/primitive3d/baseprimitive3d.hxx>
-#include <basegfx/color/bcolor.hxx>
-#include <basegfx/polygon/b3dpolygon.hxx>
-#include <drawinglayer/attribute/lineattribute.hxx>
-#include <drawinglayer/attribute/strokeattribute.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive3d
- {
- /** PolygonHairlinePrimitive3D class
-
- This primitive defines a Hairline in 3D. Since hairlines are view-dependent,
- this primitive is view-dependent, too.
-
- This is one of the non-decomposable 3D primitives, so a renderer
- should proccess it.
- */
- class DRAWINGLAYER_DLLPUBLIC PolygonHairlinePrimitive3D : public BasePrimitive3D
- {
- private:
- /// the hairline geometry
- basegfx::B3DPolygon maPolygon;
-
- /// the hairline color
- basegfx::BColor maBColor;
-
- public:
- /// constructor
- PolygonHairlinePrimitive3D(
- const basegfx::B3DPolygon& rPolygon,
- const basegfx::BColor& rBColor);
-
- /// data read access
- const basegfx::B3DPolygon& getB3DPolygon() const { return maPolygon; }
- const basegfx::BColor& getBColor() const { return maBColor; }
-
- /// compare operator
- virtual bool operator==(const BasePrimitive3D& rPrimitive) const;
-
- /// get range
- virtual basegfx::B3DRange getB3DRange(const geometry::ViewInformation3D& rViewInformation) const;
-
- /// provide unique ID
- DeclPrimitrive3DIDBlock()
- };
- } // end of namespace primitive3d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive3d
- {
- /** PolygonStrokePrimitive3D class
-
- This primitive defines a 3D line with line width, line join, line color
- and stroke attributes. It will be decomposed dependent on the definition
- to the needed primitives, e.g. filled Tubes for fat lines.
- */
- class DRAWINGLAYER_DLLPUBLIC PolygonStrokePrimitive3D : public BufferedDecompositionPrimitive3D
- {
- private:
- /// the line geometry
- basegfx::B3DPolygon maPolygon;
-
- /// the line attributes like width, join and color
- attribute::LineAttribute maLineAttribute;
-
- /// the line stroking (if used)
- attribute::StrokeAttribute maStrokeAttribute;
-
- protected:
- /// local decomposition.
- virtual Primitive3DSequence create3DDecomposition(const geometry::ViewInformation3D& rViewInformation) const;
-
- public:
- /// constructor
- PolygonStrokePrimitive3D(
- const basegfx::B3DPolygon& rPolygon,
- const attribute::LineAttribute& rLineAttribute,
- const attribute::StrokeAttribute& rStrokeAttribute);
-
- /// constructor without stroking
- PolygonStrokePrimitive3D(
- const basegfx::B3DPolygon& rPolygon,
- const attribute::LineAttribute& rLineAttribute);
-
- /// data read access
- basegfx::B3DPolygon getB3DPolygon() const { return maPolygon; }
- const attribute::LineAttribute& getLineAttribute() const { return maLineAttribute; }
- const attribute::StrokeAttribute& getStrokeAttribute() const { return maStrokeAttribute; }
-
- /// compare operator
- virtual bool operator==(const BasePrimitive3D& rPrimitive) const;
-
- /// provide unique ID
- DeclPrimitrive3DIDBlock()
- };
- } // end of namespace primitive3d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif //INCLUDED_DRAWINGLAYER_PRIMITIVE3D_POLYGONPRIMITIVE3D_HXX
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/primitive3d/polygontubeprimitive3d.hxx b/drawinglayer/inc/drawinglayer/primitive3d/polygontubeprimitive3d.hxx
deleted file mode 100644
index 0d57f52c0f..0000000000
--- a/drawinglayer/inc/drawinglayer/primitive3d/polygontubeprimitive3d.hxx
+++ /dev/null
@@ -1,116 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_PRIMITIVE3D_POLYGONTUBEPRIMITIVE3D_HXX
-#define INCLUDED_DRAWINGLAYER_PRIMITIVE3D_POLYGONTUBEPRIMITIVE3D_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <drawinglayer/primitive3d/polygonprimitive3d.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-// predefines
-
-namespace basegfx {
- class B3DPolyPolygon;
- class B3DHomMatrix;
-}
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive3d
- {
- /** PolygonStrokePrimitive3D class
-
- This 3D primitive extends a 3D hairline to a 3D tube which is
- e.g. used for fat lines in 3D. It's decomposition will create all
- 3D objects needed for the line tubes and the edge roundings
- in full 3D.
- */
- class DRAWINGLAYER_DLLPUBLIC PolygonTubePrimitive3D : public PolygonHairlinePrimitive3D
- {
- private:
- /// hold the last decompositon since it's expensive
- Primitive3DSequence maLast3DDecomposition;
-
- /// visualisation parameters
- double mfRadius;
- double mfDegreeStepWidth;
- double mfMiterMinimumAngle;
- basegfx::B2DLineJoin maLineJoin;
-
- protected:
- /** access methods to maLast3DDecomposition. The usage of this methods may allow
- later thread-safe stuff to be added if needed. Only to be used by getDecomposition()
- implementations for buffering the last decomposition.
- */
- const Primitive3DSequence& getLast3DDecomposition() const { return maLast3DDecomposition; }
- void setLast3DDecomposition(const Primitive3DSequence& rNew) { maLast3DDecomposition = rNew; }
-
- /// local decomposition.
- Primitive3DSequence impCreate3DDecomposition(const geometry::ViewInformation3D& rViewInformation) const;
-
- public:
- /// constructor
- PolygonTubePrimitive3D(
- const basegfx::B3DPolygon& rPolygon,
- const basegfx::BColor& rBColor,
- double fRadius, basegfx::B2DLineJoin aLineJoin,
- double fDegreeStepWidth = 10.0 * F_PI180,
- double fMiterMinimumAngle = 15.0 * F_PI180);
-
- /// data read access
- double getRadius() const { return mfRadius; }
- double getDegreeStepWidth() const { return mfDegreeStepWidth; }
- double getMiterMinimumAngle() const { return mfMiterMinimumAngle; }
- basegfx::B2DLineJoin getLineJoin() const { return maLineJoin; }
-
- /// compare operator
- virtual bool operator==(const BasePrimitive3D& rPrimitive) const;
-
- /** local decomposition. Use own buffering since we are not derived from
- BufferedDecompositionPrimitive3D
- */
- virtual Primitive3DSequence get3DDecomposition(const geometry::ViewInformation3D& rViewInformation) const;
-
- /// provide unique ID
- DeclPrimitrive3DIDBlock()
- };
- } // end of namespace primitive3d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif //INCLUDED_DRAWINGLAYER_PRIMITIVE3D_POLYGONTUBEPRIMITIVE3D_HXX
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/primitive3d/polypolygonprimitive3d.hxx b/drawinglayer/inc/drawinglayer/primitive3d/polypolygonprimitive3d.hxx
deleted file mode 100644
index 557a7ec44a..0000000000
--- a/drawinglayer/inc/drawinglayer/primitive3d/polypolygonprimitive3d.hxx
+++ /dev/null
@@ -1,95 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_PRIMITIVE3D_POLYPOLYGONPRIMITIVE3D_HXX
-#define INCLUDED_DRAWINGLAYER_PRIMITIVE3D_POLYPOLYGONPRIMITIVE3D_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <drawinglayer/primitive3d/baseprimitive3d.hxx>
-#include <basegfx/polygon/b3dpolypolygon.hxx>
-#include <drawinglayer/attribute/materialattribute3d.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive3d
- {
- /** PolyPolygonMaterialPrimitive3D class
-
- This primitive defines a planar 3D PolyPolygon filled with a single color.
- This is one of the non-decomposable primitives, so a renderer
- should proccess it.
-
- It is assumed here that the PolyPolgon is a single plane in 3D.
- */
- class DRAWINGLAYER_DLLPUBLIC PolyPolygonMaterialPrimitive3D : public BasePrimitive3D
- {
- private:
- /// the PolyPolygon geometry
- basegfx::B3DPolyPolygon maPolyPolygon;
-
- /// the fill parameters
- attribute::MaterialAttribute3D maMaterial;
-
- /// bitfield
- unsigned mbDoubleSided : 1;
-
- public:
- /// constructor
- PolyPolygonMaterialPrimitive3D(
- const basegfx::B3DPolyPolygon& rPolyPolygon,
- const attribute::MaterialAttribute3D& rMaterial,
- bool bDoubleSided);
-
- /// data read access
- const basegfx::B3DPolyPolygon& getB3DPolyPolygon() const { return maPolyPolygon; }
- const attribute::MaterialAttribute3D& getMaterial() const { return maMaterial; }
- bool getDoubleSided() const { return mbDoubleSided; }
-
- /// compare operator
- virtual bool operator==(const BasePrimitive3D& rPrimitive) const;
-
- /// get range
- virtual basegfx::B3DRange getB3DRange(const geometry::ViewInformation3D& rViewInformation) const;
-
- /// provide unique ID
- DeclPrimitrive3DIDBlock()
- };
- } // end of namespace primitive3d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif //INCLUDED_DRAWINGLAYER_PRIMITIVE3D_POLYPOLYGONPRIMITIVE3D_HXX
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/primitive3d/sdrcubeprimitive3d.hxx b/drawinglayer/inc/drawinglayer/primitive3d/sdrcubeprimitive3d.hxx
deleted file mode 100644
index 8ceed88890..0000000000
--- a/drawinglayer/inc/drawinglayer/primitive3d/sdrcubeprimitive3d.hxx
+++ /dev/null
@@ -1,81 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_PRIMITIVE3D_SDRCUBEPRIMITIVE3D_HXX
-#define INCLUDED_DRAWINGLAYER_PRIMITIVE3D_SDRCUBEPRIMITIVE3D_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <drawinglayer/primitive3d/sdrprimitive3d.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive3d
- {
- /** SdrCubePrimitive3D class
-
- This 3D primitive expands the SdrPrimitive3D to a 3D cube definition.
- The cube is implicitely in unit coordinates and the given transformation
- defines it's geometry in space.
- */
- class DRAWINGLAYER_DLLPUBLIC SdrCubePrimitive3D : public SdrPrimitive3D
- {
- protected:
- /// local decomposition.
- virtual Primitive3DSequence create3DDecomposition(const geometry::ViewInformation3D& rViewInformation) const;
-
- public:
- /// constructor
- SdrCubePrimitive3D(
- const basegfx::B3DHomMatrix& rTransform,
- const basegfx::B2DVector& rTextureSize,
- const attribute::SdrLineFillShadowAttribute3D& rSdrLFSAttribute,
- const attribute::Sdr3DObjectAttribute& rSdr3DObjectAttribute);
-
- /// compare operator
- virtual bool operator==(const BasePrimitive3D& rPrimitive) const;
-
- /// get range
- virtual basegfx::B3DRange getB3DRange(const geometry::ViewInformation3D& rViewInformation) const;
-
- /// provide unique ID
- DeclPrimitrive3DIDBlock()
- };
- } // end of namespace primitive3d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif //INCLUDED_DRAWINGLAYER_PRIMITIVE3D_SDRCUBEPRIMITIVE3D_HXX
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/primitive3d/sdrdecompositiontools3d.hxx b/drawinglayer/inc/drawinglayer/primitive3d/sdrdecompositiontools3d.hxx
deleted file mode 100644
index 4dae581c84..0000000000
--- a/drawinglayer/inc/drawinglayer/primitive3d/sdrdecompositiontools3d.hxx
+++ /dev/null
@@ -1,109 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_PRIMITIVE3D_SDRDECOMPOSITIONTOOLS3D_HXX
-#define INCLUDED_DRAWINGLAYER_PRIMITIVE3D_SDRDECOMPOSITIONTOOLS3D_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <drawinglayer/primitive3d/baseprimitive3d.hxx>
-#include <com/sun/star/drawing/TextureProjectionMode.hpp>
-#include <vector>
-
-//////////////////////////////////////////////////////////////////////////////
-// predefines
-
-namespace basegfx {
- class B3DPolygon;
- class B3DPolyPolygon;
- class B3DHomMatrix;
- class B2DVector;
-}
-
-namespace drawinglayer { namespace attribute {
- class SdrLineAttribute;
- class SdrFillAttribute;
- class Sdr3DObjectAttribute;
- class FillGradientAttribute;
- class SdrShadowAttribute;
-}}
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive3d
- {
- // #i98295#
- basegfx::B3DRange DRAWINGLAYER_DLLPUBLIC getRangeFrom3DGeometry(::std::vector< basegfx::B3DPolyPolygon >& rFill);
- void DRAWINGLAYER_DLLPUBLIC applyNormalsKindSphereTo3DGeometry(::std::vector< basegfx::B3DPolyPolygon >& rFill, const basegfx::B3DRange& rRange);
- void DRAWINGLAYER_DLLPUBLIC applyNormalsKindFlatTo3DGeometry(::std::vector< basegfx::B3DPolyPolygon >& rFill);
- void DRAWINGLAYER_DLLPUBLIC applyNormalsInvertTo3DGeometry(::std::vector< basegfx::B3DPolyPolygon >& rFill);
-
- // #i98314#
- void DRAWINGLAYER_DLLPUBLIC applyTextureTo3DGeometry(
- ::com::sun::star::drawing::TextureProjectionMode eModeX,
- ::com::sun::star::drawing::TextureProjectionMode eModeY,
- ::std::vector< basegfx::B3DPolyPolygon >& rFill,
- const basegfx::B3DRange& rRange,
- const basegfx::B2DVector& rTextureSize);
-
- Primitive3DSequence DRAWINGLAYER_DLLPUBLIC create3DPolyPolygonLinePrimitives(
- const basegfx::B3DPolyPolygon& rUnitPolyPolygon,
- const basegfx::B3DHomMatrix& rObjectTransform,
- const attribute::SdrLineAttribute& rLine);
-
- Primitive3DSequence DRAWINGLAYER_DLLPUBLIC create3DPolyPolygonFillPrimitives(
- const ::std::vector< basegfx::B3DPolyPolygon >& r3DPolyPolygonVector,
- const basegfx::B3DHomMatrix& rObjectTransform,
- const basegfx::B2DVector& rTextureSize,
- const attribute::Sdr3DObjectAttribute& aSdr3DObjectAttribute,
- const attribute::SdrFillAttribute& rFill,
- const attribute::FillGradientAttribute& rFillGradient);
-
- Primitive3DSequence DRAWINGLAYER_DLLPUBLIC createShadowPrimitive3D(
- const Primitive3DSequence& rSource,
- const attribute::SdrShadowAttribute& rShadow,
- bool bShadow3D);
-
- Primitive3DSequence DRAWINGLAYER_DLLPUBLIC createHiddenGeometryPrimitives3D(
- const ::std::vector< basegfx::B3DPolyPolygon >& r3DPolyPolygonVector,
- const basegfx::B3DHomMatrix& rObjectTransform,
- const basegfx::B2DVector& rTextureSize,
- const attribute::Sdr3DObjectAttribute& aSdr3DObjectAttribute);
-
- } // end of namespace primitive3d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif //_DRAWINGLAYER_PRIMITIVE3D_SDRDECOMPOSITIONTOOLS3D_HXX
-
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/primitive3d/sdrextrudelathetools3d.hxx b/drawinglayer/inc/drawinglayer/primitive3d/sdrextrudelathetools3d.hxx
deleted file mode 100644
index 1bfe7a1e00..0000000000
--- a/drawinglayer/inc/drawinglayer/primitive3d/sdrextrudelathetools3d.hxx
+++ /dev/null
@@ -1,148 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_PRIMITIVE3D_SDREXTRUDELATHETOOLS3D_HXX
-#define INCLUDED_DRAWINGLAYER_PRIMITIVE3D_SDREXTRUDELATHETOOLS3D_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <basegfx/polygon/b3dpolypolygon.hxx>
-#include <basegfx/polygon/b2dpolypolygontools.hxx>
-#include <vector>
-
-//////////////////////////////////////////////////////////////////////////////
-// predefines
-
-namespace drawinglayer { namespace geometry {
- class ViewInformation3D;
-}}
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive3d
- {
- /** SliceType3D definition */
- enum SliceType3D
- {
- SLICETYPE3D_REGULAR, // normal geoemtry Slice3D
- SLICETYPE3D_FRONTCAP, // front cap
- SLICETYPE3D_BACKCAP // back cap
- };
-
- /// class to hold one Slice3D
- class DRAWINGLAYER_DLLPUBLIC Slice3D
- {
- protected:
- basegfx::B3DPolyPolygon maPolyPolygon;
- SliceType3D maSliceType;
-
- public:
- Slice3D(
- const basegfx::B2DPolyPolygon& rPolyPolygon,
- const basegfx::B3DHomMatrix& aTransform,
- SliceType3D aSliceType = SLICETYPE3D_REGULAR)
- : maPolyPolygon(basegfx::tools::createB3DPolyPolygonFromB2DPolyPolygon(rPolyPolygon)),
- maSliceType(aSliceType)
- {
- maPolyPolygon.transform(aTransform);
- }
-
- Slice3D(
- const basegfx::B3DPolyPolygon& rPolyPolygon,
- SliceType3D aSliceType = SLICETYPE3D_REGULAR)
- : maPolyPolygon(rPolyPolygon),
- maSliceType(aSliceType)
- {
- }
-
- // data access
- const basegfx::B3DPolyPolygon& getB3DPolyPolygon() const { return maPolyPolygon; }
- SliceType3D getSliceType() const { return maSliceType; }
- };
-
- /// typedef for a group of Slice3Ds
- typedef ::std::vector< Slice3D > Slice3DVector;
-
- /// helpers for creation
- void DRAWINGLAYER_DLLPUBLIC createLatheSlices(
- Slice3DVector& rSliceVector,
- const basegfx::B2DPolyPolygon& rSource,
- double fBackScale,
- double fDiagonal,
- double fRotation,
- sal_uInt32 nSteps,
- bool bCharacterMode,
- bool bCloseFront,
- bool bCloseBack);
-
- void DRAWINGLAYER_DLLPUBLIC createExtrudeSlices(
- Slice3DVector& rSliceVector,
- const basegfx::B2DPolyPolygon& rSource,
- double fBackScale,
- double fDiagonal,
- double fDepth,
- bool bCharacterMode,
- bool bCloseFront,
- bool bCloseBack);
-
- /// helpers for geometry extraction
- basegfx::B3DPolyPolygon DRAWINGLAYER_DLLPUBLIC extractHorizontalLinesFromSlice(const Slice3DVector& rSliceVector, bool bCloseHorLines);
- basegfx::B3DPolyPolygon DRAWINGLAYER_DLLPUBLIC extractVerticalLinesFromSlice(const Slice3DVector& rSliceVector);
-
- void DRAWINGLAYER_DLLPUBLIC extractPlanesFromSlice(
- ::std::vector< basegfx::B3DPolyPolygon >& rFill,
- const Slice3DVector& rSliceVector,
- bool bCreateNormals,
- bool bSmoothHorizontalNormals,
- bool bSmoothNormals,
- bool bSmoothLids,
- bool bClosed,
- double fSmoothNormalsMix,
- double fSmoothLidsMix,
- bool bCreateTextureCoordinates,
- const basegfx::B2DHomMatrix& rTexTransform);
-
- void DRAWINGLAYER_DLLPUBLIC createReducedOutlines(
- const geometry::ViewInformation3D& rViewInformation,
- const basegfx::B3DHomMatrix& rObjectTransform,
- const basegfx::B3DPolygon& rLoopA,
- const basegfx::B3DPolygon& rLoopB,
- basegfx::B3DPolyPolygon& rTarget);
-
- } // end of namespace overlay
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif //_DRAWINGLAYER_PRIMITIVE3D_SDREXTRUDELATHETOOLS3D_HXX
-
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/primitive3d/sdrextrudeprimitive3d.hxx b/drawinglayer/inc/drawinglayer/primitive3d/sdrextrudeprimitive3d.hxx
deleted file mode 100644
index 383810128b..0000000000
--- a/drawinglayer/inc/drawinglayer/primitive3d/sdrextrudeprimitive3d.hxx
+++ /dev/null
@@ -1,141 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_PRIMITIVE3D_SDREXTRUDEPRIMITIVE3D_HXX
-#define INCLUDED_DRAWINGLAYER_PRIMITIVE3D_SDREXTRUDEPRIMITIVE3D_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <drawinglayer/primitive3d/sdrprimitive3d.hxx>
-#include <basegfx/polygon/b2dpolypolygon.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive3d
- {
- /** SdrExtrudePrimitive3D class
-
- This 3D primitive expands the SdrPrimitive3D to a 3D extrude definition.
- The given 2D PolyPolygon geometry is imagined as lying on the XY-plane in 3D
- and gets extruded in Z-Direction by Depth.
-
- Various possibilities e.g. for creating diagonals (edge roudings in 3D)
- and similar are given.
-
- The decomposition will create all necessary 3D planes for visualisation.
- */
- class DRAWINGLAYER_DLLPUBLIC SdrExtrudePrimitive3D : public SdrPrimitive3D
- {
- private:
- /// geometry helper for slices
- basegfx::B2DPolyPolygon maCorrectedPolyPolygon;
- Slice3DVector maSlices;
-
- /// primitive geometry data
- basegfx::B2DPolyPolygon maPolyPolygon;
- double mfDepth;
- double mfDiagonal;
- double mfBackScale;
-
- /// decomposition data when ReducedLineGeometry is used, see get3DDecomposition
- geometry::ViewInformation3D* mpLastRLGViewInformation;
-
- /// bitfield
- unsigned mbSmoothNormals : 1; // Plane self
- unsigned mbSmoothHorizontalNormals : 1; // always
- unsigned mbSmoothLids : 1; // Front/back
- unsigned mbCharacterMode : 1;
- unsigned mbCloseFront : 1;
- unsigned mbCloseBack : 1;
-
- /// create slices
- void impCreateSlices();
-
- /// get (evtl. create) slices
- const Slice3DVector& getSlices() const;
-
- protected:
- /// local decomposition.
- virtual Primitive3DSequence create3DDecomposition(const geometry::ViewInformation3D& rViewInformation) const;
-
- public:
- /// constructor
- SdrExtrudePrimitive3D(
- const basegfx::B3DHomMatrix& rTransform,
- const basegfx::B2DVector& rTextureSize,
- const attribute::SdrLineFillShadowAttribute3D& rSdrLFSAttribute,
- const attribute::Sdr3DObjectAttribute& rSdr3DObjectAttribute,
- const basegfx::B2DPolyPolygon& rPolyPolygon,
- double fDepth,
- double fDiagonal,
- double fBackScale,
- bool bSmoothNormals,
- bool bSmoothHorizontalNormals,
- bool bSmoothLids,
- bool bCharacterMode,
- bool bCloseFront,
- bool bCloseBack);
- virtual ~SdrExtrudePrimitive3D();
-
- /// data read access
- const basegfx::B2DPolyPolygon& getPolyPolygon() const { return maPolyPolygon; }
- double getDepth() const { return mfDepth; }
- double getDiagonal() const { return mfDiagonal; }
- double getBackScale() const { return mfBackScale; }
- bool getSmoothNormals() const { return mbSmoothNormals; }
- bool getSmoothHorizontalNormals() const { return mbSmoothHorizontalNormals; }
- bool getSmoothLids() const { return mbSmoothLids; }
- bool getCharacterMode() const { return mbCharacterMode; }
- bool getCloseFront() const { return mbCloseFront; }
- bool getCloseBack() const { return mbCloseBack; }
-
- /// compare operator
- virtual bool operator==(const BasePrimitive3D& rPrimitive) const;
-
- /// get range
- virtual basegfx::B3DRange getB3DRange(const geometry::ViewInformation3D& rViewInformation) const;
-
- /// Overloaded to allow for reduced line mode to decide if to buffer decomposition or not
- virtual Primitive3DSequence get3DDecomposition(const geometry::ViewInformation3D& rViewInformation) const;
-
- /// provide unique ID
- DeclPrimitrive3DIDBlock()
- };
- } // end of namespace primitive3d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif //INCLUDED_DRAWINGLAYER_PRIMITIVE3D_SDREXTRUDEPRIMITIVE3D_HXX
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/primitive3d/sdrlatheprimitive3d.hxx b/drawinglayer/inc/drawinglayer/primitive3d/sdrlatheprimitive3d.hxx
deleted file mode 100644
index fd901aba89..0000000000
--- a/drawinglayer/inc/drawinglayer/primitive3d/sdrlatheprimitive3d.hxx
+++ /dev/null
@@ -1,159 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_PRIMITIVE3D_SDRLATHEPRIMITIVE3D_HXX
-#define INCLUDED_DRAWINGLAYER_PRIMITIVE3D_SDRLATHEPRIMITIVE3D_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <drawinglayer/primitive3d/sdrprimitive3d.hxx>
-#include <basegfx/polygon/b2dpolypolygon.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive3d
- {
- /** SdrLathePrimitive3D class
-
- This 3D primitive expands the SdrPrimitive3D to a 3D rotation definition.
- The given 2D PolyPolygon geometry is imagined as lying on the XY-plane in 3D
- and gets rotated around the Y-Axis.
-
- Various possibilities e.g. for creating diagonals (edge roudings in 3D)
- and similar are given.
-
- The decomposition will create all necessary 3D planes for visualisation.
- */
- class DRAWINGLAYER_DLLPUBLIC SdrLathePrimitive3D : public SdrPrimitive3D
- {
- private:
- /// geometry helper for slices
- basegfx::B2DPolyPolygon maCorrectedPolyPolygon;
- Slice3DVector maSlices;
-
- /// primitive geometry data
- basegfx::B2DPolyPolygon maPolyPolygon;
- sal_uInt32 mnHorizontalSegments;
- sal_uInt32 mnVerticalSegments;
- double mfDiagonal;
- double mfBackScale;
- double mfRotation;
-
- /// decomposition data when ReducedLineGeometry is used, see get3DDecomposition
- geometry::ViewInformation3D* mpLastRLGViewInformation;
-
- /// bitfield
- unsigned mbSmoothNormals : 1; // Plane self
- unsigned mbSmoothHorizontalNormals : 1; // always
- unsigned mbSmoothLids : 1; // Front/back
- unsigned mbCharacterMode : 1;
- unsigned mbCloseFront : 1;
- unsigned mbCloseBack : 1;
-
- /// create slices
- void impCreateSlices();
-
- /// get (evtl. create) slices
- const Slice3DVector& getSlices() const;
-
- protected:
- /// local helpers
- void impCreateOutlines(
- const geometry::ViewInformation3D& rViewInformation,
- const basegfx::B3DPolygon& rLoopA,
- const basegfx::B3DPolygon& rLoopB,
- basegfx::B3DPolyPolygon& rTarget) const;
-
- bool impHasCutWith(
- const basegfx::B2DPolygon& rPoly,
- const basegfx::B2DPoint& rStart,
- const basegfx::B2DPoint& rEnd) const;
-
- /// local decomposition.
- virtual Primitive3DSequence create3DDecomposition(const geometry::ViewInformation3D& rViewInformation) const;
-
- public:
- /// constructor
- SdrLathePrimitive3D(
- const basegfx::B3DHomMatrix& rTransform,
- const basegfx::B2DVector& rTextureSize,
- const attribute::SdrLineFillShadowAttribute3D& rSdrLFSAttribute,
- const attribute::Sdr3DObjectAttribute& rSdr3DObjectAttribute,
- const basegfx::B2DPolyPolygon& rPolyPolygon,
- sal_uInt32 nHorizontalSegments,
- sal_uInt32 nVerticalSegments,
- double fDiagonal,
- double fBackScale,
- double fRotation,
- bool bSmoothNormals,
- bool bSmoothHorizontalNormals,
- bool bSmoothLids,
- bool bCharacterMode,
- bool bCloseFront,
- bool bCloseBack);
- virtual ~SdrLathePrimitive3D();
-
- /// data read access
- const basegfx::B2DPolyPolygon& getPolyPolygon() const { return maPolyPolygon; }
- sal_uInt32 getHorizontalSegments() const { return mnHorizontalSegments; }
- sal_uInt32 getVerticalSegments() const { return mnVerticalSegments; }
- double getDiagonal() const { return mfDiagonal; }
- double getBackScale() const { return mfBackScale; }
- double getRotation() const { return mfRotation; }
- bool getSmoothNormals() const { return mbSmoothNormals; }
- bool getSmoothHorizontalNormals() const { return mbSmoothHorizontalNormals; }
- bool getSmoothLids() const { return mbSmoothLids; }
- bool getCharacterMode() const { return mbCharacterMode; }
- bool getCloseFront() const { return mbCloseFront; }
- bool getCloseBack() const { return mbCloseBack; }
-
- /// compare operator
- virtual bool operator==(const BasePrimitive3D& rPrimitive) const;
-
- /// get range
- virtual basegfx::B3DRange getB3DRange(const geometry::ViewInformation3D& rViewInformation) const;
-
- /// Overloaded to allow for reduced line mode to decide if to buffer decomposition or not
- virtual Primitive3DSequence get3DDecomposition(const geometry::ViewInformation3D& rViewInformation) const;
-
- /// provide unique ID
- DeclPrimitrive3DIDBlock()
- };
- } // end of namespace primitive3d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif //INCLUDED_DRAWINGLAYER_PRIMITIVE3D_SDRLATHEPRIMITIVE3D_HXX
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/primitive3d/sdrpolypolygonprimitive3d.hxx b/drawinglayer/inc/drawinglayer/primitive3d/sdrpolypolygonprimitive3d.hxx
deleted file mode 100644
index 019279ac44..0000000000
--- a/drawinglayer/inc/drawinglayer/primitive3d/sdrpolypolygonprimitive3d.hxx
+++ /dev/null
@@ -1,93 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_PRIMITIVE3D_SDRPOLYPOLYGONPRIMITIVE3D_HXX
-#define INCLUDED_DRAWINGLAYER_PRIMITIVE3D_SDRPOLYPOLYGONPRIMITIVE3D_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <drawinglayer/primitive3d/sdrprimitive3d.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive3d
- {
- /** SdrPolyPolygonPrimitive3D class
-
- This 3D primitive defines a PolyPolgon in space which may have
- Line- and FillStyles and extra 3D surface attributes. It is assumed
- that the given 3D PolyPolgon (which may contain texture and normal
- information) is planar in 3D.
-
- The decomposition will include all needed 3D data for visualisation,
- including FatLines and fill styles.
- */
- class DRAWINGLAYER_DLLPUBLIC SdrPolyPolygonPrimitive3D : public SdrPrimitive3D
- {
- private:
- /// the planar polyPolygon evtl with normals and texture coordinates
- basegfx::B3DPolyPolygon maPolyPolygon3D;
-
- protected:
- /// local decomposition.
- virtual Primitive3DSequence create3DDecomposition(const geometry::ViewInformation3D& rViewInformation) const;
-
- public:
- /// constructor
- SdrPolyPolygonPrimitive3D(
- const basegfx::B3DPolyPolygon& rPolyPolygon3D,
- const basegfx::B3DHomMatrix& rTransform,
- const basegfx::B2DVector& rTextureSize,
- const attribute::SdrLineFillShadowAttribute3D& rSdrLFSAttribute,
- const attribute::Sdr3DObjectAttribute& rSdr3DObjectAttribute);
-
- /// data access
- const basegfx::B3DPolyPolygon& getPolyPolygon3D() const { return maPolyPolygon3D; }
-
- /// compare operator
- virtual bool operator==(const BasePrimitive3D& rPrimitive) const;
-
- /// get range
- virtual basegfx::B3DRange getB3DRange(const geometry::ViewInformation3D& rViewInformation) const;
-
- /// provide unique ID
- DeclPrimitrive3DIDBlock()
- };
- } // end of namespace primitive3d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif //INCLUDED_DRAWINGLAYER_PRIMITIVE3D_SDRPOLYPOLYGONPRIMITIVE3D_HXX
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/primitive3d/sdrprimitive3d.hxx b/drawinglayer/inc/drawinglayer/primitive3d/sdrprimitive3d.hxx
deleted file mode 100644
index 6ce6107948..0000000000
--- a/drawinglayer/inc/drawinglayer/primitive3d/sdrprimitive3d.hxx
+++ /dev/null
@@ -1,100 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_PRIMITIVE3D_SDRPRIMITIVE3D_HXX
-#define INCLUDED_DRAWINGLAYER_PRIMITIVE3D_SDRPRIMITIVE3D_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <drawinglayer/primitive3d/baseprimitive3d.hxx>
-#include <basegfx/matrix/b3dhommatrix.hxx>
-#include <basegfx/vector/b2dvector.hxx>
-#include <drawinglayer/attribute/sdrallattribute3d.hxx>
-#include <drawinglayer/primitive3d/sdrextrudelathetools3d.hxx>
-#include <drawinglayer/attribute/sdrobjectattribute3d.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- /** SdrPrimitive3D class
-
- Base class for the more complicated geometric primitives, so
- derive from buffered primitive to allow overloading of
- create3DDecomposition there.
- */
- namespace primitive3d
- {
- class DRAWINGLAYER_DLLPUBLIC SdrPrimitive3D : public BufferedDecompositionPrimitive3D
- {
- private:
- /// object surface attributes
- basegfx::B3DHomMatrix maTransform;
- basegfx::B2DVector maTextureSize;
- attribute::SdrLineFillShadowAttribute3D maSdrLFSAttribute;
- attribute::Sdr3DObjectAttribute maSdr3DObjectAttribute;
-
- protected:
- /** Standard implementation for primitive3D which
- will use maTransform as range and expand by evtl. line width / 2
- */
- basegfx::B3DRange getStandard3DRange() const;
-
- /** implementation for primitive3D which
- will use given Slice3Ds and expand by evtl. line width / 2
- */
- basegfx::B3DRange get3DRangeFromSlices(const Slice3DVector& rSlices) const;
-
- public:
- /// constructor
- SdrPrimitive3D(
- const basegfx::B3DHomMatrix& rTransform,
- const basegfx::B2DVector& rTextureSize,
- const attribute::SdrLineFillShadowAttribute3D& rSdrLFSAttribute,
- const attribute::Sdr3DObjectAttribute& rSdr3DObjectAttribute);
-
- /// data read access
- const basegfx::B3DHomMatrix& getTransform() const { return maTransform; }
- const basegfx::B2DVector& getTextureSize() const { return maTextureSize; }
- const attribute::SdrLineFillShadowAttribute3D& getSdrLFSAttribute() const { return maSdrLFSAttribute; }
- const attribute::Sdr3DObjectAttribute getSdr3DObjectAttribute() const { return maSdr3DObjectAttribute; }
-
- /// compare operator
- virtual bool operator==(const BasePrimitive3D& rPrimitive) const;
- };
- } // end of namespace primitive3d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif //INCLUDED_DRAWINGLAYER_PRIMITIVE3D_SDRPRIMITIVE3D_HXX
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/primitive3d/sdrsphereprimitive3d.hxx b/drawinglayer/inc/drawinglayer/primitive3d/sdrsphereprimitive3d.hxx
deleted file mode 100644
index 924f05402a..0000000000
--- a/drawinglayer/inc/drawinglayer/primitive3d/sdrsphereprimitive3d.hxx
+++ /dev/null
@@ -1,92 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_PRIMITIVE3D_SDRSPHEREPRIMITIVE3D_HXX
-#define INCLUDED_DRAWINGLAYER_PRIMITIVE3D_SDRSPHEREPRIMITIVE3D_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <drawinglayer/primitive3d/sdrprimitive3d.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive3d
- {
- /** SdrSpherePrimitive3D class
-
- This 3D primitive expands the SdrPrimitive3D to a 3D sphere definition.
- The sphere is implicitely in unit coordinates and the given transformation
- defines it's geometry in space.
- */
- class DRAWINGLAYER_DLLPUBLIC SdrSpherePrimitive3D : public SdrPrimitive3D
- {
- private:
- /// additional geometry definitions
- sal_uInt32 mnHorizontalSegments;
- sal_uInt32 mnVerticalSegments;
-
- protected:
- /// local decomposition.
- virtual Primitive3DSequence create3DDecomposition(const geometry::ViewInformation3D& rViewInformation) const;
-
- public:
- /// constructor
- SdrSpherePrimitive3D(
- const basegfx::B3DHomMatrix& rTransform,
- const basegfx::B2DVector& rTextureSize,
- const attribute::SdrLineFillShadowAttribute3D& rSdrLFSAttribute,
- const attribute::Sdr3DObjectAttribute& rSdr3DObjectAttribute,
- sal_uInt32 nHorizontalSegments,
- sal_uInt32 nVerticalSegments);
-
- /// data read access
- sal_uInt32 getHorizontalSegments() const { return mnHorizontalSegments; }
- sal_uInt32 getVerticalSegments() const { return mnVerticalSegments; }
-
- /// compare operator
- virtual bool operator==(const BasePrimitive3D& rPrimitive) const;
-
- /// get range
- virtual basegfx::B3DRange getB3DRange(const geometry::ViewInformation3D& rViewInformation) const;
-
- /// provide unique ID
- DeclPrimitrive3DIDBlock()
- };
- } // end of namespace primitive3d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif //INCLUDED_DRAWINGLAYER_PRIMITIVE3D_SDRSPHEREPRIMITIVE3D_HXX
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/primitive3d/shadowprimitive3d.hxx b/drawinglayer/inc/drawinglayer/primitive3d/shadowprimitive3d.hxx
deleted file mode 100644
index 3ecee686c0..0000000000
--- a/drawinglayer/inc/drawinglayer/primitive3d/shadowprimitive3d.hxx
+++ /dev/null
@@ -1,96 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_PRIMITIVE3D_SHADOWPRIMITIVE3D_HXX
-#define INCLUDED_DRAWINGLAYER_PRIMITIVE3D_SHADOWPRIMITIVE3D_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <drawinglayer/primitive3d/groupprimitive3d.hxx>
-#include <basegfx/matrix/b2dhommatrix.hxx>
-#include <basegfx/color/bcolor.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive3d
- {
- /** ShadowPrimitive3D class
-
- This 3D grouping primitive is used to define a shadow for
- 3d geometry by embedding it. The shadow of 3D objects are
- 2D polygons, so the shadow transformation is a 2D transformation.
-
- If the Shadow3D flag is set, the shadow definition has to be
- combined with the scene and camera definition to create the correct
- projected shadow 2D-Polygons.
- */
- class DRAWINGLAYER_DLLPUBLIC ShadowPrimitive3D : public GroupPrimitive3D
- {
- protected:
- /// 2D shadow definition
- basegfx::B2DHomMatrix maShadowTransform;
- basegfx::BColor maShadowColor;
- double mfShadowTransparence;
-
- /// bitfield
- unsigned mbShadow3D : 1;
-
- public:
- /// constructor
- ShadowPrimitive3D(
- const basegfx::B2DHomMatrix& rShadowTransform,
- const basegfx::BColor& rShadowColor,
- double fShadowTransparence,
- bool bShadow3D,
- const Primitive3DSequence& rChildren);
-
- /// data read access
- const basegfx::B2DHomMatrix& getShadowTransform() const { return maShadowTransform; }
- const basegfx::BColor& getShadowColor() const { return maShadowColor; }
- double getShadowTransparence() const { return mfShadowTransparence; }
- bool getShadow3D() const { return mbShadow3D; }
-
- /// compare operator
- virtual bool operator==(const BasePrimitive3D& rPrimitive) const;
-
- /// provide unique ID
- DeclPrimitrive3DIDBlock()
- };
- } // end of namespace primitive3d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif //INCLUDED_DRAWINGLAYER_PRIMITIVE3D_SHADOWPRIMITIVE3D_HXX
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/primitive3d/textureprimitive3d.hxx b/drawinglayer/inc/drawinglayer/primitive3d/textureprimitive3d.hxx
deleted file mode 100644
index 32d79b70ac..0000000000
--- a/drawinglayer/inc/drawinglayer/primitive3d/textureprimitive3d.hxx
+++ /dev/null
@@ -1,242 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_PRIMITIVE3D_TEXTUREPRIMITIVE3D_HXX
-#define INCLUDED_DRAWINGLAYER_PRIMITIVE3D_TEXTUREPRIMITIVE3D_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <drawinglayer/primitive3d/groupprimitive3d.hxx>
-#include <drawinglayer/attribute/fillbitmapattribute.hxx>
-#include <basegfx/matrix/b2dhommatrix.hxx>
-#include <basegfx/vector/b2dvector.hxx>
-#include <drawinglayer/attribute/fillgradientattribute.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive3d
- {
- /** TexturePrimitive3D class
-
- This 3D grouping primitive is used to define a texture for
- 3d geometry by embedding it. It is used as bae class for
- extended texture definitions
- */
- class DRAWINGLAYER_DLLPUBLIC TexturePrimitive3D : public GroupPrimitive3D
- {
- private:
- /// texture geometry definition
- basegfx::B2DVector maTextureSize;
-
- /// bitfield
- /// flag if texture shall be modulated with white interpolated color
- unsigned mbModulate : 1;
-
- /// flag if texture shall be filtered
- unsigned mbFilter : 1;
-
- public:
- /// constructor
- TexturePrimitive3D(
- const Primitive3DSequence& rChildren,
- const basegfx::B2DVector& rTextureSize,
- bool bModulate,
- bool bFilter);
-
- /// data read access
- const basegfx::B2DVector& getTextureSize() const { return maTextureSize; }
- bool getModulate() const { return mbModulate; }
- bool getFilter() const { return mbFilter; }
-
- /// compare operator
- virtual bool operator==(const BasePrimitive3D& rPrimitive) const;
- };
- } // end of namespace primitive3d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive3d
- {
- /** UnifiedTransparenceTexturePrimitive3D class
-
- This 3D primitive expands TexturePrimitive3D to a unified
- transparence texture definition. All 3D primitives
- embedded here will be shown with the given transparency.
- */
- class DRAWINGLAYER_DLLPUBLIC UnifiedTransparenceTexturePrimitive3D : public TexturePrimitive3D
- {
- private:
- /// transparency definition
- double mfTransparence;
-
- public:
- /// constructor
- UnifiedTransparenceTexturePrimitive3D(
- double fTransparence,
- const Primitive3DSequence& rChildren);
-
- /// data read access
- double getTransparence() const { return mfTransparence; }
-
- /// compare operator
- virtual bool operator==(const BasePrimitive3D& rPrimitive) const;
-
- /// own getB3DRange implementation to include transparent geometries to BoundRect calculations
- virtual basegfx::B3DRange getB3DRange(const geometry::ViewInformation3D& rViewInformation) const;
-
- /// local decomposition.
- virtual Primitive3DSequence get3DDecomposition(const geometry::ViewInformation3D& rViewInformation) const;
-
- /// provide unique ID
- DeclPrimitrive3DIDBlock()
- };
- } // end of namespace primitive3d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive3d
- {
- /** GradientTexturePrimitive3D class
-
- This 3D primitive expands TexturePrimitive3D to a gradient texture
- definition. All 3D primitives embedded here will be shown with the
- defined gradient.
- */
- class DRAWINGLAYER_DLLPUBLIC GradientTexturePrimitive3D : public TexturePrimitive3D
- {
- private:
- /// the gradient definition
- attribute::FillGradientAttribute maGradient;
-
- public:
- /// constructor
- GradientTexturePrimitive3D(
- const attribute::FillGradientAttribute& rGradient,
- const Primitive3DSequence& rChildren,
- const basegfx::B2DVector& rTextureSize,
- bool bModulate,
- bool bFilter);
-
- /// data read access
- const attribute::FillGradientAttribute& getGradient() const { return maGradient; }
-
- /// compare operator
- virtual bool operator==(const BasePrimitive3D& rPrimitive) const;
-
- /// provide unique ID
- DeclPrimitrive3DIDBlock()
- };
- } // end of namespace primitive3d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive3d
- {
- /** BitmapTexturePrimitive3D class
-
- This 3D primitive expands TexturePrimitive3D to a bitmap texture
- definition. All 3D primitives embedded here will be shown with the
- defined bitmap (maybe tiled if defined).
- */
- class DRAWINGLAYER_DLLPUBLIC BitmapTexturePrimitive3D : public TexturePrimitive3D
- {
- private:
- /// bitmap fill attribute
- attribute::FillBitmapAttribute maFillBitmapAttribute;
-
- public:
- /// constructor
- BitmapTexturePrimitive3D(
- const attribute::FillBitmapAttribute& rFillBitmapAttribute,
- const Primitive3DSequence& rChildren,
- const basegfx::B2DVector& rTextureSize,
- bool bModulate,
- bool bFilter);
-
- /// data read access
- const attribute::FillBitmapAttribute& getFillBitmapAttribute() const { return maFillBitmapAttribute; }
-
- /// compare operator
- virtual bool operator==(const BasePrimitive3D& rPrimitive) const;
-
- /// provide unique ID
- DeclPrimitrive3DIDBlock()
- };
- } // end of namespace primitive3d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive3d
- {
- /** TransparenceTexturePrimitive3D class
-
- This 3D primitive expands TexturePrimitive3D to a transparence texture
- definition. For transparence definition, a gradient is used. The values in
- that gradient will be interpreted as luminance Transparence-Values. All 3D
- primitives embedded here will be shown with the defined transparence.
- */
- class DRAWINGLAYER_DLLPUBLIC TransparenceTexturePrimitive3D : public GradientTexturePrimitive3D
- {
- public:
- /// constructor
- TransparenceTexturePrimitive3D(
- const attribute::FillGradientAttribute& rGradient,
- const Primitive3DSequence& rChildren,
- const basegfx::B2DVector& rTextureSize);
-
- /// compare operator
- virtual bool operator==(const BasePrimitive3D& rPrimitive) const;
-
- /// provide unique ID
- DeclPrimitrive3DIDBlock()
- };
- } // end of namespace primitive3d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif //INCLUDED_DRAWINGLAYER_PRIMITIVE3D_TEXTUREPRIMITIVE3D_HXX
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/primitive3d/transformprimitive3d.hxx b/drawinglayer/inc/drawinglayer/primitive3d/transformprimitive3d.hxx
deleted file mode 100644
index fcf749df27..0000000000
--- a/drawinglayer/inc/drawinglayer/primitive3d/transformprimitive3d.hxx
+++ /dev/null
@@ -1,86 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_PRIMITIVE3D_TRANSFORMPRIMITIVE3D_HXX
-#define INCLUDED_DRAWINGLAYER_PRIMITIVE3D_TRANSFORMPRIMITIVE3D_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <drawinglayer/primitive3d/groupprimitive3d.hxx>
-#include <basegfx/matrix/b3dhommatrix.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive3d
- {
- /** TransformPrimitive3D class
-
- This is one of the basic grouping 3D primitives and it provides
- embedding a sequence of primitives (a geometry) into a
- 3D transformation.
-
- Please see the description for TransformPrimitive2D since these
- primitives are pretty similar.
- */
- class DRAWINGLAYER_DLLPUBLIC TransformPrimitive3D : public GroupPrimitive3D
- {
- private:
- // the 3D transformation to apply
- basegfx::B3DHomMatrix maTransformation;
-
- public:
- /// constructor
- TransformPrimitive3D(
- const basegfx::B3DHomMatrix& rTransformation,
- const Primitive3DSequence& rChildren);
-
- /// data read access
- const basegfx::B3DHomMatrix& getTransformation() const { return maTransformation; }
-
- /// compare operator
- virtual bool operator==(const BasePrimitive3D& rPrimitive) const;
-
- /// get range
- virtual basegfx::B3DRange getB3DRange(const geometry::ViewInformation3D& rViewInformation) const;
-
- /// provide unique ID
- DeclPrimitrive3DIDBlock()
- };
- } // end of namespace primitive3d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif //INCLUDED_DRAWINGLAYER_PRIMITIVE3D_TRANSFORMPRIMITIVE3D_HXX
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/processor2d/baseprocessor2d.hxx b/drawinglayer/inc/drawinglayer/processor2d/baseprocessor2d.hxx
deleted file mode 100644
index df9045dcad..0000000000
--- a/drawinglayer/inc/drawinglayer/processor2d/baseprocessor2d.hxx
+++ /dev/null
@@ -1,207 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_PROCESSOR2D_BASEPROCESSOR2D_HXX
-#define INCLUDED_DRAWINGLAYER_PROCESSOR2D_BASEPROCESSOR2D_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <drawinglayer/primitive2d/baseprimitive2d.hxx>
-#include <drawinglayer/geometry/viewinformation2d.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace processor2d
- {
- /** BaseProcessor2D class
-
- Baseclass for all C++ implementations of instances which process
- primitives.
-
- Instances which process primitives can be renderers, but also stuff
- for HitTests, BoundRect calculations and/or animation processing. The
- main usage are renderers, but they are supposed to handle any primitive
- processing.
-
- The base implementation is constructed with a ViewInformation2D which
- is accessible throughout the processor implementations. The idea is
- to construct any processor with a given ViewInformation2D. To be able
- to handle primitives which need to change the current transformation
- (as e.g. TransformPrimitive2D) it is allowed for the processor implementation
- to change tis local value using updateViewInformation.
-
- The basic processing method is process(..) which gets handed over the
- sequence of primitives to process. For convenience of the C++ implementations,
- the default implementation of process(..) maps all accesses to primitives to
- single calls to processBasePrimitive2D(..) where the primitive in question is
- already casted to the C++ implementation class.
-
- The process(..) implementation makes a complete iteration over the given
- sequence of primitives. If the Primitive is not derived from BasePrimitive2D
- and thus not part of the C++ implementations, it converts ViewInformation2D
- to the corresponding API implementation (an uno::Sequence< beans::PropertyValue >)
- and recursively calls the method process(..) at the primitive with the decomposition
- derived from that primitive. This is the preparation to handle unknown implementations
- of the com::sun::star::graphic::XPrimitive2D interface in the future.
-
- So, to implement a basic processor, it is necessary to overload and implement the
- processBasePrimitive2D(..) method. A minimal renderer has to support the
- Basic Primitives (see baseprimitive2d.hxx) and the Grouping Primitives (see
- groupprimitive2d.hxx). These are (currently):
-
- Basic Primitives:
-
- - BitmapPrimitive2D (bitmap data, evtl. with transparence)
- - PointArrayPrimitive2D (single points)
- - PolygonHairlinePrimitive2D (hairline curves/polygons)
- - PolyPolygonColorPrimitive2D (colored polygons)
-
- Grouping Primitives:
-
- - TransparencePrimitive2D (objects with freely defined transparence)
- - InvertPrimitive2D (for XOR)
- - MaskPrimitive2D (for masking)
- - ModifiedColorPrimitive2D (for a stack of color modifications)
- - TransformPrimitive2D (for a transformation stack)
-
- A processor doing so is a minimal processor. Of course a processor may
- handle any higher-level prmitive (that has a decomposition implementation)
- for more direct data access or performance reasons, too.
-
- The main part of a processBasePrimitive2D implementation is a switch..case
- construct, looking like the following:
-
- void foo::processBasePrimitive2D(const BasePrimitive2D& rCandidate)
- {
- switch(rCandidate.getPrimitive2DID())
- {
- case PRIMITIVE2D_ID_??? :
- {
- // process PRIMITIVE2D_ID_??? here...
-
- ...
-
- break;
- }
-
- ...
-
- default :
- {
- // process recursively
- process(rCandidate.get2DDecomposition(getViewInformation2D()));
- break;
- }
- }
- }
-
- The default case makes the processor work with all complex primitives
- by recursively using their decomposition.
-
- You can also add a case for ignoring primitives by using:
-
- case PRIMITIVE2D_ID_...IGNORE.A.. :
- case PRIMITIVE2D_ID_...IGNORE.B.. :
- case PRIMITIVE2D_ID_...IGNORE.C.. :
- {
- // ignore these primitives by neither processing nor
- // recursively processing their decomposition
- break;
- }
-
- Another useful case is embedding the processing of a complex primitive by
- bracketing it with some actions:
-
- case PRIMITIVE2D_ID_SOME_TEXT :
- {
- // encapsulate e.g. with changing local varibles, e.g.
- // sometimes it's good to know if a basic primitive is
- // part of a text, especially when not handling the text
- // self but by purpose want to handle the decomposed
- // geometries in the processor
- startText();
- process(rCandidate.get2DDecomposition(getViewInformation2D()));
- endText();
- break;
- }
-
- As an example a processor collecting the outlines of a sequence of primitives
- only needs to handle some Basic Primitives and create outline and collect
- outline polygons e.g. for primitives with area like BitmapPrimitive2D (a
- rectangle) and PolyPolygonColorPrimitive2D. When also handling the Grouping
- Primitives MaskPrimitive2D (e.g. ignoring it's content, using the mask polyPolygon)
- and TransformPrimitive2D (to have the correct local transformation), a processor
- creating the outline can be written using just four (4) primitives. As a tipp, it can
- be helpful to add many for the purpose not interesting higher level primitives
- to not force their decomposition to be created and/or parsed.
- */
- class DRAWINGLAYER_DLLPUBLIC BaseProcessor2D
- {
- private:
- /// The ViewInformation2D itself. It's private to isolate accesses to it
- geometry::ViewInformation2D maViewInformation2D;
-
- protected:
- /* access method to allow the implementations to change the current
- ViewInformation2D if needed. This allows isolating these accesses
- later if needed
- */
- void updateViewInformation(const geometry::ViewInformation2D& rViewInformation2D)
- {
- maViewInformation2D = rViewInformation2D;
- }
-
- /* as tooling, the process() implementation takes over API handling and calls this
- virtual render method when the primitive implementation is BasePrimitive2D-based.
- Default implementation does nothing
- */
- virtual void processBasePrimitive2D(const primitive2d::BasePrimitive2D& rCandidate);
-
- public:
- /// constructor/destructor
- BaseProcessor2D(const geometry::ViewInformation2D& rViewInformation);
- virtual ~BaseProcessor2D();
-
- /// the central processing method
- virtual void process(const primitive2d::Primitive2DSequence& rSource);
-
- /// data read access
- const geometry::ViewInformation2D& getViewInformation2D() const { return maViewInformation2D; }
- };
- } // end of namespace processor2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif //INCLUDED_DRAWINGLAYER_PROCESSOR2D_BASEPROCESSOR2D_HXX
-
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/processor2d/canvasprocessor.hxx b/drawinglayer/inc/drawinglayer/processor2d/canvasprocessor.hxx
deleted file mode 100644
index c54e3138f9..0000000000
--- a/drawinglayer/inc/drawinglayer/processor2d/canvasprocessor.hxx
+++ /dev/null
@@ -1,139 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef _DRAWINGLAYER_PROCESSOR_CANVASPROCESSOR_HXX
-#define _DRAWINGLAYER_PROCESSOR_CANVASPROCESSOR_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <drawinglayer/processor2d/baseprocessor2d.hxx>
-#include <basegfx/matrix/b2dhommatrix.hxx>
-#include <basegfx/color/bcolormodifier.hxx>
-#include <svtools/optionsdrawinglayer.hxx>
-#include <com/sun/star/rendering/ViewState.hpp>
-#include <com/sun/star/rendering/RenderState.hpp>
-#include <i18npool/lang.h>
-#include <basegfx/polygon/b2dpolypolygon.hxx>
-#include <vcl/mapmod.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-// forward declaration
-
-namespace basegfx {
- class BColor;
- class B2DPolygon;
-}
-
-namespace com { namespace sun { namespace star { namespace rendering {
- class XCanvas;
- class XPolyPolygon2D;
-}}}}
-
-namespace drawinglayer { namespace primitive2d {
- class MaskPrimitive2D;
- class MetafilePrimitive2D;
- class TextSimplePortionPrimitive2D;
- class BitmapPrimitive2D;
- class RenderGraphicPrimitive2D;
- class TransparencePrimitive2D;
- class PolygonStrokePrimitive2D;
- class FillBitmapPrimitive2D;
- class UnifiedTransparencePrimitive2D;
-}}
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace processor2d
- {
- /** canvasProcessor2D class
-
- A basic implementation of a renderer for com::sun::star::rendering::XCanvas
- as a target
- */
- class DRAWINGLAYER_DLLPUBLIC canvasProcessor2D : public BaseProcessor2D
- {
- private:
- // The Pixel renderer resets the original MapMode from the OutputDevice.
- // For some situations it is necessary to get it again, so it is rescued here
- MapMode maOriginalMapMode;
-
- // the (current) destination OutDev and canvas
- OutputDevice* mpOutputDevice;
- com::sun::star::uno::Reference< com::sun::star::rendering::XCanvas > mxCanvas;
- com::sun::star::rendering::ViewState maViewState;
- com::sun::star::rendering::RenderState maRenderState;
-
- // the modifiedColorPrimitive stack
- basegfx::BColorModifierStack maBColorModifierStack;
-
- // SvtOptionsDrawinglayer incarnation to react on diverse settings
- const SvtOptionsDrawinglayer maDrawinglayerOpt;
-
- // the current clipping PolyPolygon from MaskPrimitive2D, always in
- // object coordinates
- basegfx::B2DPolyPolygon maClipPolyPolygon;
-
- // determined LanguageType
- LanguageType meLang;
-
- // as tooling, the process() implementation takes over API handling and calls this
- // virtual render method when the primitive implementation is BasePrimitive2D-based.
- virtual void processBasePrimitive2D(const primitive2d::BasePrimitive2D& rCandidate);
-
- // direct primitive renderer support
- void impRenderMaskPrimitive2D(const primitive2d::MaskPrimitive2D& rMaskCandidate);
- void impRenderMetafilePrimitive2D(const primitive2d::MetafilePrimitive2D& rMetaCandidate);
- void impRenderTextSimplePortionPrimitive2D(const primitive2d::TextSimplePortionPrimitive2D& rTextCandidate);
- void impRenderBitmapPrimitive2D(const primitive2d::BitmapPrimitive2D& rBitmapCandidate);
- void impRenderRenderGraphicPrimitive2D(const primitive2d::RenderGraphicPrimitive2D& rRenderGraphicCandidate);
- void impRenderTransparencePrimitive2D(const primitive2d::TransparencePrimitive2D& rTransparenceCandidate);
- void impRenderPolygonStrokePrimitive2D(const primitive2d::PolygonStrokePrimitive2D& rPolygonStrokePrimitive);
- void impRenderFillBitmapPrimitive2D(const primitive2d::FillBitmapPrimitive2D& rFillBitmapPrimitive2D);
- void impRenderUnifiedTransparencePrimitive2D(const primitive2d::UnifiedTransparencePrimitive2D& rUniTransparenceCandidate);
-
- public:
- canvasProcessor2D(
- const geometry::ViewInformation2D& rViewInformation,
- OutputDevice& rOutDev);
- virtual ~canvasProcessor2D();
-
- // access to Drawinglayer configuration options
- const SvtOptionsDrawinglayer& getOptionsDrawinglayer() const { return maDrawinglayerOpt; }
- };
- } // end of namespace processor2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif //_DRAWINGLAYER_PROCESSOR_CANVASPROCESSOR_HXX
-
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/processor2d/contourextractor2d.hxx b/drawinglayer/inc/drawinglayer/processor2d/contourextractor2d.hxx
deleted file mode 100644
index 8a76e98622..0000000000
--- a/drawinglayer/inc/drawinglayer/processor2d/contourextractor2d.hxx
+++ /dev/null
@@ -1,73 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_PROCESSOR2D_CONTOUREXTRACTOR2D_HXX
-#define INCLUDED_DRAWINGLAYER_PROCESSOR2D_CONTOUREXTRACTOR2D_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <drawinglayer/processor2d/baseprocessor2d.hxx>
-#include <basegfx/matrix/b2dhommatrix.hxx>
-#include <basegfx/polygon/b2dpolypolygon.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace processor2d
- {
- /** ContourExtractor2D class
-
- A processor who extracts the contour of the primtives feeded to it
- in the single local PolyPolygon
- */
- class DRAWINGLAYER_DLLPUBLIC ContourExtractor2D : public BaseProcessor2D
- {
- private:
- /// the extracted contour
- std::vector< basegfx::B2DPolyPolygon > maExtractedContour;
-
- /// tooling methods
- void processBasePrimitive2D(const primitive2d::BasePrimitive2D& rCandidate);
-
- public:
- ContourExtractor2D(const geometry::ViewInformation2D& rViewInformation);
- virtual ~ContourExtractor2D();
-
- const std::vector< basegfx::B2DPolyPolygon >& getExtractedContour() const { return maExtractedContour; }
- };
- } // end of namespace processor2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif // INCLUDED_DRAWINGLAYER_PROCESSOR2D_CONTOUREXTRACTOR2D_HXX
-
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/processor2d/hittestprocessor2d.hxx b/drawinglayer/inc/drawinglayer/processor2d/hittestprocessor2d.hxx
deleted file mode 100644
index 7315583ca3..0000000000
--- a/drawinglayer/inc/drawinglayer/processor2d/hittestprocessor2d.hxx
+++ /dev/null
@@ -1,119 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_PROCESSOR2D_HITTESTPROCESSOR2D_HXX
-#define INCLUDED_DRAWINGLAYER_PROCESSOR2D_HITTESTPROCESSOR2D_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <drawinglayer/processor2d/baseprocessor2d.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-// predeclarations
-
-namespace basegfx { class B2DPolygon; }
-namespace basegfx { class B2DPolyPolygon; }
-namespace drawinglayer { namespace primitive2d { class ScenePrimitive2D; }}
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace processor2d
- {
- /** HitTestProcessor2D class
-
- This processor implements a HitTest with the feeded primitives,
- given tolerance and extras
- */
- class DRAWINGLAYER_DLLPUBLIC HitTestProcessor2D : public BaseProcessor2D
- {
- private:
- /// discrete HitTest position
- basegfx::B2DPoint maDiscreteHitPosition;
-
- /// discrete HitTolerance
- double mfDiscreteHitTolerance;
-
- /// bitfield
- unsigned mbHit : 1;
- unsigned mbHitToleranceUsed : 1;
-
- /* this flag decides if primitives which are embedded to an
- UnifiedTransparencePrimitive2D and are invisible will be taken into account for
- HitTesting or not. Those primitives are created for objects which are else
- completely invisible and normally their content exists of hairline
- primitives describing the object's contour
- */
- unsigned mbUseInvisiblePrimitiveContent : 1;
-
- /// flag to concentraze on text hits only
- unsigned mbHitTextOnly : 1;
-
- /// tooling methods
- void processBasePrimitive2D(const primitive2d::BasePrimitive2D& rCandidate);
- bool checkHairlineHitWithTolerance(
- const basegfx::B2DPolygon& rPolygon,
- double fDiscreteHitTolerance);
- bool checkFillHitWithTolerance(
- const basegfx::B2DPolyPolygon& rPolyPolygon,
- double fDiscreteHitTolerance);
- void check3DHit(const primitive2d::ScenePrimitive2D& rCandidate);
-
- public:
- HitTestProcessor2D(
- const geometry::ViewInformation2D& rViewInformation,
- const basegfx::B2DPoint& rLogicHitPosition,
- double fLogicHitTolerance,
- bool bHitTextOnly);
- virtual ~HitTestProcessor2D();
-
- /// data write access
- void setUseInvisiblePrimitiveContent(bool bNew)
- {
- if((bool)mbUseInvisiblePrimitiveContent != bNew) mbUseInvisiblePrimitiveContent = bNew;
- }
-
- /// data read access
- const basegfx::B2DPoint& getDiscreteHitPosition() const { return maDiscreteHitPosition; }
- double getDiscreteHitTolerance() const { return mfDiscreteHitTolerance; }
- bool getHit() const { return mbHit; }
- bool getHitToleranceUsed() const { return mbHitToleranceUsed; }
- bool getUseInvisiblePrimitiveContent() const { return mbUseInvisiblePrimitiveContent;}
- bool getHitTextOnly() const { return mbHitTextOnly; }
- };
- } // end of namespace processor2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif // INCLUDED_DRAWINGLAYER_PROCESSOR2D_HITTESTPROCESSOR2D_HXX
-
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/processor2d/linegeometryextractor2d.hxx b/drawinglayer/inc/drawinglayer/processor2d/linegeometryextractor2d.hxx
deleted file mode 100644
index 54cea5ae27..0000000000
--- a/drawinglayer/inc/drawinglayer/processor2d/linegeometryextractor2d.hxx
+++ /dev/null
@@ -1,76 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_PROCESSOR2D_LINEGEOMETRYEXTRACTOR2D_HXX
-#define INCLUDED_DRAWINGLAYER_PROCESSOR2D_LINEGEOMETRYEXTRACTOR2D_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <drawinglayer/processor2d/baseprocessor2d.hxx>
-#include <basegfx/polygon/b2dpolypolygon.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace processor2d
- {
- /** LineGeometryExtractor2D class
-
- This processor can extract the line geometry from feeded primpitives. The
- hairlines and the fille geometry from fat lines are separated.
- */
- class DRAWINGLAYER_DLLPUBLIC LineGeometryExtractor2D : public BaseProcessor2D
- {
- private:
- std::vector< basegfx::B2DPolygon > maExtractedHairlines;
- std::vector< basegfx::B2DPolyPolygon > maExtractedLineFills;
-
- /// bitfield
- unsigned mbInLineGeometry : 1;
-
- /// tooling methods
- void processBasePrimitive2D(const primitive2d::BasePrimitive2D& rCandidate);
-
- public:
- LineGeometryExtractor2D(const geometry::ViewInformation2D& rViewInformation);
- virtual ~LineGeometryExtractor2D();
-
- const std::vector< basegfx::B2DPolygon >& getExtractedHairlines() const { return maExtractedHairlines; }
- const std::vector< basegfx::B2DPolyPolygon >& getExtractedLineFills() const { return maExtractedLineFills; }
- };
- } // end of namespace processor2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif // INCLUDED_DRAWINGLAYER_PROCESSOR2D_LINEGEOMETRYEXTRACTOR2D_HXX
-
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/processor2d/textaspolygonextractor2d.hxx b/drawinglayer/inc/drawinglayer/processor2d/textaspolygonextractor2d.hxx
deleted file mode 100644
index ecae326eea..0000000000
--- a/drawinglayer/inc/drawinglayer/processor2d/textaspolygonextractor2d.hxx
+++ /dev/null
@@ -1,109 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_PROCESSOR2D_TEXTASPOLYGONEXTRACTOR2D_HXX
-#define INCLUDED_DRAWINGLAYER_PROCESSOR2D_TEXTASPOLYGONEXTRACTOR2D_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <drawinglayer/processor2d/baseprocessor2d.hxx>
-#include <basegfx/polygon/b2dpolypolygon.hxx>
-#include <basegfx/color/bcolor.hxx>
-#include <basegfx/color/bcolormodifier.hxx>
-#include <vector>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace processor2d
- {
- /// helper data structure for returning the result
- struct TextAsPolygonDataNode
- {
- private:
- basegfx::B2DPolyPolygon maB2DPolyPolygon;
- basegfx::BColor maBColor;
- bool mbIsFilled;
-
- public:
- TextAsPolygonDataNode(
- const basegfx::B2DPolyPolygon& rB2DPolyPolygon,
- const basegfx::BColor& rBColor,
- bool bIsFilled)
- : maB2DPolyPolygon(rB2DPolyPolygon),
- maBColor(rBColor),
- mbIsFilled(bIsFilled)
- {
- }
-
- // data read access
- const basegfx::B2DPolyPolygon& getB2DPolyPolygon() const { return maB2DPolyPolygon; }
- const basegfx::BColor& getBColor() const { return maBColor; }
- bool getIsFilled() const { return mbIsFilled; }
- };
-
- /// typedef for a vector of that helper data
- typedef ::std::vector< TextAsPolygonDataNode > TextAsPolygonDataNodeVector;
-
- /** TextAsPolygonExtractor2D class
-
- This processor extracts text in the feeded primitives to filled polygons
- */
- class DRAWINGLAYER_DLLPUBLIC TextAsPolygonExtractor2D : public BaseProcessor2D
- {
- private:
- // extraction target
- TextAsPolygonDataNodeVector maTarget;
-
- // the modifiedColorPrimitive stack
- basegfx::BColorModifierStack maBColorModifierStack;
-
- // flag if we are in a decomposed text
- sal_uInt32 mnInText;
-
- // tooling methods
- void processBasePrimitive2D(const primitive2d::BasePrimitive2D& rCandidate);
-
- public:
- TextAsPolygonExtractor2D(const geometry::ViewInformation2D& rViewInformation);
- virtual ~TextAsPolygonExtractor2D();
-
- // data read access
- const TextAsPolygonDataNodeVector& getTarget() const { return maTarget; }
- };
- } // end of namespace processor2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif // INCLUDED_DRAWINGLAYER_PROCESSOR2D_TEXTASPOLYGONEXTRACTOR2D_HXX
-
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/processor2d/vclmetafileprocessor2d.hxx b/drawinglayer/inc/drawinglayer/processor2d/vclmetafileprocessor2d.hxx
deleted file mode 100644
index 3c3ba892b0..0000000000
--- a/drawinglayer/inc/drawinglayer/processor2d/vclmetafileprocessor2d.hxx
+++ /dev/null
@@ -1,159 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_PROCESSOR2D_VCLMETAFILEPROCESSOR2D_HXX
-#define INCLUDED_DRAWINGLAYER_PROCESSOR2D_VCLMETAFILEPROCESSOR2D_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <drawinglayer/processor2d/vclprocessor2d.hxx>
-#include <com/sun/star/i18n/XBreakIterator.hpp>
-#include <basegfx/polygon/b2dpolypolygon.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-// vcl::PDFExtOutDevData support
-
-#include <vcl/pdfextoutdevdata.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-// predefines
-
-class GDIMetaFile;
-class Rectangle;
-class Gradient;
-class SvtGraphicFill;
-class SvtGraphicStroke;
-
-namespace drawinglayer { namespace attribute {
- class FillGradientAttribute;
- class LineAttribute;
- class StrokeAttribute;
- class LineStartEndAttribute;
-}}
-
-namespace basegfx {
- class BColor;
-}
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace processor2d
- {
- /** VclMetafileProcessor2D class
-
- This processor derived from VclProcessor2D is the base class for rendering
- all feeded primitives to a classical VCL-Metafile, including all over the
- time grown extra data in comments and PDF exception data creations. Also
- printing needs some exception stuff.
-
- All in all it is needed to emulate the old ::paint output from the old
- Drawinglayer as long as exporters and/or filters still use the Metafile
- and the extra-data added to it (which can be seen mostly as 'extensions'
- or simply as 'hacks').
- */
- class DRAWINGLAYER_DLLPUBLIC VclMetafileProcessor2D : public VclProcessor2D
- {
- private:
- /// local helper(s)
- Rectangle impDumpToMetaFile(
- const primitive2d::Primitive2DSequence& rContent,
- GDIMetaFile& o_rContentMetafile);
- void impConvertFillGradientAttributeToVCLGradient(
- Gradient& o_rVCLGradient,
- const attribute::FillGradientAttribute& rFiGrAtt,
- bool bIsTransparenceGradient);
- void impStartSvtGraphicFill(SvtGraphicFill* pSvtGraphicFill);
- void impEndSvtGraphicFill(SvtGraphicFill* pSvtGraphicFill);
- SvtGraphicStroke* impTryToCreateSvtGraphicStroke(
- const basegfx::B2DPolygon& rB2DPolygon,
- const basegfx::BColor* pColor,
- const attribute::LineAttribute* pLineAttribute,
- const attribute::StrokeAttribute* pStrokeAttribute,
- const attribute::LineStartEndAttribute* pStart,
- const attribute::LineStartEndAttribute* pEnd);
- void impStartSvtGraphicStroke(SvtGraphicStroke* pSvtGraphicStroke);
- void impEndSvtGraphicStroke(SvtGraphicStroke* pSvtGraphicStroke);
-
- /// the current clipping PolyPolygon from MaskPrimitive2D
- basegfx::B2DPolyPolygon maClipPolyPolygon;
-
- /// the target MetaFile
- GDIMetaFile* mpMetaFile;
-
- /* do not allow embedding SvtGraphicFills into each other,
- use a counter to prevent that
- */
- sal_uInt32 mnSvtGraphicFillCount;
-
- /// same for SvtGraphicStroke
- sal_uInt32 mnSvtGraphicStrokeCount;
-
- /* hold the last unified transparence value to have it handy
- on SvtGraphicStroke creation
- */
- double mfCurrentUnifiedTransparence;
-
- /* break iterator support
- made static so it only needs to be fetched once, even with many single
- constructed VclMetafileProcessor2D. It's still incarnated on demand,
- but exists for OOo runtime now by purpose.
- */
- static ::com::sun::star::uno::Reference< ::com::sun::star::i18n::XBreakIterator > mxBreakIterator;
-
- /* vcl::PDFExtOutDevData support
- For the first step, some extra actions at vcl::PDFExtOutDevData need to
- be emulated with the VclMetafileProcessor2D. These are potentially temporarily
- since PDF export may use PrimitiveSequences one day directly.
- */
- vcl::PDFExtOutDevData* mpPDFExtOutDevData;
-
- protected:
- /* the local processor for BasePrinitive2D-Implementation based primitives,
- called from the common process()-implementation
- */
- virtual void processBasePrimitive2D(const primitive2d::BasePrimitive2D& rCandidate);
-
- public:
- /// constructor/destructor
- VclMetafileProcessor2D(
- const geometry::ViewInformation2D& rViewInformation,
- OutputDevice& rOutDev);
- virtual ~VclMetafileProcessor2D();
- };
- } // end of namespace processor2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif // INCLUDED_DRAWINGLAYER_PROCESSOR2D_VCLMETAFILEPROCESSOR2D_HXX
-
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/processor2d/vclpixelprocessor2d.hxx b/drawinglayer/inc/drawinglayer/processor2d/vclpixelprocessor2d.hxx
deleted file mode 100644
index 9dab13ff84..0000000000
--- a/drawinglayer/inc/drawinglayer/processor2d/vclpixelprocessor2d.hxx
+++ /dev/null
@@ -1,82 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_PROCESSOR2D_VCLPIXELPROCESSOR2D_HXX
-#define INCLUDED_DRAWINGLAYER_PROCESSOR2D_VCLPIXELPROCESSOR2D_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <drawinglayer/processor2d/vclprocessor2d.hxx>
-#include <vcl/outdev.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace processor2d
- {
- /** VclPixelProcessor2D class
-
- This processor derived from VclProcessor2D is the base class for rendering
- all feeded primitives to a VCL Window. It is the currently used renderer
- for all VCL editing output from the DrawingLayer.
- */
- class DRAWINGLAYER_DLLPUBLIC VclPixelProcessor2D : public VclProcessor2D
- {
- private:
- /* The Pixel renderer resets the original MapMode from the OutputDevice.
- For some situations it is necessary to get it again, so it is rescued here
- */
- MapMode maOriginalMapMode;
-
- protected:
- /* the local processor for BasePrinitive2D-Implementation based primitives,
- called from the common process()-implementation
- */
- virtual void processBasePrimitive2D(const primitive2d::BasePrimitive2D& rCandidate);
-
- public:
- /// constructor/destructor
- VclPixelProcessor2D(
- const geometry::ViewInformation2D& rViewInformation,
- OutputDevice& rOutDev);
- virtual ~VclPixelProcessor2D();
-
- /// data read access
- const MapMode& getOriginalMapMode() const { return maOriginalMapMode; }
- };
- } // end of namespace processor2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif // INCLUDED_DRAWINGLAYER_PROCESSOR2D_VCLPIXELPROCESSOR2D_HXX
-
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/processor2d/vclprocessor2d.hxx b/drawinglayer/inc/drawinglayer/processor2d/vclprocessor2d.hxx
deleted file mode 100644
index 0f1197113a..0000000000
--- a/drawinglayer/inc/drawinglayer/processor2d/vclprocessor2d.hxx
+++ /dev/null
@@ -1,145 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_PROCESSOR2D_VCLPROCESSOR2D_HXX
-#define INCLUDED_DRAWINGLAYER_PROCESSOR2D_VCLPROCESSOR2D_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <drawinglayer/processor2d/baseprocessor2d.hxx>
-#include <basegfx/matrix/b2dhommatrix.hxx>
-#include <basegfx/color/bcolormodifier.hxx>
-#include <svtools/optionsdrawinglayer.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-// predefines
-class OutputDevice;
-
-namespace drawinglayer { namespace primitive2d {
- class TextSimplePortionPrimitive2D;
- class PolygonHairlinePrimitive2D;
- class BitmapPrimitive2D;
- class RenderGraphicPrimitive2D;
- class FillBitmapPrimitive2D;
- class PolyPolygonGradientPrimitive2D;
- class PolyPolygonBitmapPrimitive2D;
- class PolyPolygonColorPrimitive2D;
- class MetafilePrimitive2D;
- class MaskPrimitive2D;
- class UnifiedTransparencePrimitive2D;
- class TransparencePrimitive2D;
- class TransformPrimitive2D;
- class MarkerArrayPrimitive2D;
- class PointArrayPrimitive2D;
- class ModifiedColorPrimitive2D;
- class PolygonStrokePrimitive2D;
- class ControlPrimitive2D;
- class PagePreviewPrimitive2D;
- class EpsPrimitive2D;
-}}
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace processor2d
- {
- /** VclProcessor2D class
-
- This processor is the base class for VCL-Based processors. It has no
- processBasePrimitive2D implementation and thus is not usable directly.
- */
- class DRAWINGLAYER_DLLPUBLIC VclProcessor2D : public BaseProcessor2D
- {
- protected:
- // the destination OutDev
- OutputDevice* mpOutputDevice;
-
- // the modifiedColorPrimitive stack
- basegfx::BColorModifierStack maBColorModifierStack;
-
- // the current transformation. Since VCL pixel renderer transforms to pixels
- // and VCL MetaFile renderer to World (logic) coordinates, the local
- // ViewInformation2D cannot directly be used, but needs to be kept up to date
- basegfx::B2DHomMatrix maCurrentTransformation;
-
- // SvtOptionsDrawinglayer incarnation to react on diverse settings
- const SvtOptionsDrawinglayer maDrawinglayerOpt;
-
- // stack value (increment and decrement) to count how deep we are in
- // PolygonStrokePrimitive2D's decompositions (normally only one)
- sal_uInt32 mnPolygonStrokePrimitive2D;
-
- //////////////////////////////////////////////////////////////////////////////
- // common VCL rendering support
-
- void RenderTextSimpleOrDecoratedPortionPrimitive2D(const primitive2d::TextSimplePortionPrimitive2D& rTextCandidate);
- void RenderPolygonHairlinePrimitive2D(const primitive2d::PolygonHairlinePrimitive2D& rPolygonCandidate, bool bPixelBased);
- void RenderBitmapPrimitive2D(const primitive2d::BitmapPrimitive2D& rBitmapCandidate);
- void RenderRenderGraphicPrimitive2D(const primitive2d::RenderGraphicPrimitive2D& rRenderGraphicCandidate);
- void RenderFillBitmapPrimitive2D(const primitive2d::FillBitmapPrimitive2D& rFillBitmapCandidate);
- void RenderPolyPolygonGradientPrimitive2D(const primitive2d::PolyPolygonGradientPrimitive2D& rPolygonCandidate);
- void RenderPolyPolygonBitmapPrimitive2D(const primitive2d::PolyPolygonBitmapPrimitive2D& rPolygonCandidate);
- void RenderPolyPolygonColorPrimitive2D(const primitive2d::PolyPolygonColorPrimitive2D& rPolygonCandidate);
- void RenderMetafilePrimitive2D(const primitive2d::MetafilePrimitive2D& rPolygonCandidate);
- void RenderMaskPrimitive2DPixel(const primitive2d::MaskPrimitive2D& rMaskCandidate);
- void RenderModifiedColorPrimitive2D(const primitive2d::ModifiedColorPrimitive2D& rModifiedCandidate);
- void RenderUnifiedTransparencePrimitive2D(const primitive2d::UnifiedTransparencePrimitive2D& rTransCandidate);
- void RenderTransparencePrimitive2D(const primitive2d::TransparencePrimitive2D& rTransCandidate);
- void RenderTransformPrimitive2D(const primitive2d::TransformPrimitive2D& rTransformCandidate);
- void RenderPagePreviewPrimitive2D(const primitive2d::PagePreviewPrimitive2D& rPagePreviewCandidate);
- void RenderMarkerArrayPrimitive2D(const primitive2d::MarkerArrayPrimitive2D& rMarkerArrayCandidate);
- void RenderPointArrayPrimitive2D(const primitive2d::PointArrayPrimitive2D& rPointArrayCandidate);
- void RenderPolygonStrokePrimitive2D(const primitive2d::PolygonStrokePrimitive2D& rPolygonStrokeCandidate);
- void RenderEpsPrimitive2D(const primitive2d::EpsPrimitive2D& rEpsPrimitive2D);
-
- /////////////////////////////////////////////////////////////////////////////
- // DrawMode adaption support
- void adaptLineToFillDrawMode() const;
- void adaptTextToFillDrawMode() const;
-
- public:
- // constructor/destructor
- VclProcessor2D(
- const geometry::ViewInformation2D& rViewInformation,
- OutputDevice& rOutDev);
- virtual ~VclProcessor2D();
-
- // access to Drawinglayer configuration options
- const SvtOptionsDrawinglayer& getOptionsDrawinglayer() const { return maDrawinglayerOpt; }
- };
- } // end of namespace processor2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif // INCLUDED_DRAWINGLAYER_PROCESSOR2D_VCLPROCESSOR2D_HXX
-
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/processor3d/baseprocessor3d.hxx b/drawinglayer/inc/drawinglayer/processor3d/baseprocessor3d.hxx
deleted file mode 100644
index 0b71587743..0000000000
--- a/drawinglayer/inc/drawinglayer/processor3d/baseprocessor3d.hxx
+++ /dev/null
@@ -1,124 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_PROCESSOR3D_BASEPROCESSOR3D_HXX
-#define INCLUDED_DRAWINGLAYER_PROCESSOR3D_BASEPROCESSOR3D_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <drawinglayer/primitive3d/baseprimitive3d.hxx>
-#include <drawinglayer/geometry/viewinformation3d.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace processor3d
- {
- /** BaseProcessor3D class
-
- Baseclass for all C++ implementations of instances which process
- primitives.
-
- Please have a look at baseprocessor2d.hxx for more comments.
- */
- class DRAWINGLAYER_DLLPUBLIC BaseProcessor3D
- {
- private:
- geometry::ViewInformation3D maViewInformation3D;
-
- protected:
- void updateViewInformation(const geometry::ViewInformation3D& rViewInformation3D)
- {
- maViewInformation3D = rViewInformation3D;
- }
-
- /* as tooling, the process() implementation takes over API handling and calls this
- virtual render method when the primitive implementation is BasePrimitive3D-based.
- Default implementation does nothing
- */
- virtual void processBasePrimitive3D(const primitive3d::BasePrimitive3D& rCandidate);
-
- public:
- BaseProcessor3D(const geometry::ViewInformation3D& rViewInformation);
- virtual ~BaseProcessor3D();
-
- // the central processing method
- virtual void process(const primitive3d::Primitive3DSequence& rSource);
-
- // data access
- const geometry::ViewInformation3D& getViewInformation3D() const { return maViewInformation3D; }
- };
- } // end of namespace processor3d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace processor3d
- {
- /** CollectingProcessor3D class
-
- A processor which just collects all primitives given to it in
- process(..) calls to maPrimitive3DSequence. This can e.g. be used to
- hand around as instance over various methods where every called
- method can add graphic content to it.
- */
- class DRAWINGLAYER_DLLPUBLIC CollectingProcessor3D : public BaseProcessor3D
- {
- private:
- primitive3d::Primitive3DSequence maPrimitive3DSequence;
-
- public:
- CollectingProcessor3D(const geometry::ViewInformation3D& rViewInformation);
- virtual ~CollectingProcessor3D();
-
- /// the central processing method
- virtual void process(const primitive3d::Primitive3DSequence& rSource);
-
- /// helpers for adding to local sequence
- void appendPrimitive3DReference(const primitive3d::Primitive3DReference& rSource)
- {
- primitive3d::appendPrimitive3DReferenceToPrimitive3DSequence(maPrimitive3DSequence, rSource);
- }
-
- /// data access and reset
- const primitive3d::Primitive3DSequence& getPrimitive3DSequence() const { return maPrimitive3DSequence; }
- void reset() { maPrimitive3DSequence = primitive3d::Primitive3DSequence(); }
- };
- } // end of namespace processor3d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif //_DRAWINGLAYER_PROCESSOR3D_BASEPROCESSOR3D_HXX
-
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/processor3d/cutfindprocessor3d.hxx b/drawinglayer/inc/drawinglayer/processor3d/cutfindprocessor3d.hxx
deleted file mode 100644
index af51cd354c..0000000000
--- a/drawinglayer/inc/drawinglayer/processor3d/cutfindprocessor3d.hxx
+++ /dev/null
@@ -1,102 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_PROCESSOR3D_CUTFINDPROCESSOR3D_HXX
-#define INCLUDED_DRAWINGLAYER_PROCESSOR3D_CUTFINDPROCESSOR3D_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <drawinglayer/processor3d/defaultprocessor3d.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace processor3d
- {
- /** CutFindProcessor class
-
- This processor extracts all cuts of 3D plane geometries in the feeded primitives
- with the given cut vector, based on the ViewInformation3D given.
- */
- class DRAWINGLAYER_DLLPUBLIC CutFindProcessor : public BaseProcessor3D
- {
- private:
- /// the start and stop point for the cut vector
- basegfx::B3DPoint maFront;
- basegfx::B3DPoint maBack;
-
- /// the found cut points
- ::std::vector< basegfx::B3DPoint > maResult;
-
- /* #i102956# the transformation change from TransformPrimitive3D processings
- needs to be remembered to be able to transform found cuts to the
- basic coordinate system the processor starts with
- */
- basegfx::B3DHomMatrix maCombinedTransform;
-
- /// bitfield
- bool mbAnyHit : 1;
-
- /* this flag decides if primitives which are invisible will be taken into account for
- HitTesting or not.
- */
- bool mbUseInvisiblePrimitiveContent : 1;
-
- /* as tooling, the process() implementation takes over API handling and calls this
- virtual render method when the primitive implementation is BasePrimitive3D-based.
- */
- virtual void processBasePrimitive3D(const primitive3d::BasePrimitive3D& rCandidate);
-
- public:
- CutFindProcessor(const geometry::ViewInformation3D& rViewInformation,
- const basegfx::B3DPoint& rFront,
- const basegfx::B3DPoint& rBack,
- bool bAnyHit);
-
- /// data write access
- void setUseInvisiblePrimitiveContent(bool bNew)
- {
- if((bool)mbUseInvisiblePrimitiveContent != bNew) mbUseInvisiblePrimitiveContent = bNew;
- }
-
- /// data read access
- const ::std::vector< basegfx::B3DPoint >& getCutPoints() const { return maResult; }
- bool getAnyHit() const { return mbAnyHit; }
- bool getUseInvisiblePrimitiveContent() const { return mbUseInvisiblePrimitiveContent;}
- };
- } // end of namespace processor3d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif //INCLUDED_DRAWINGLAYER_PROCESSOR3D_CUTFINDPROCESSOR3D_HXX
-
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/processor3d/defaultprocessor3d.hxx b/drawinglayer/inc/drawinglayer/processor3d/defaultprocessor3d.hxx
deleted file mode 100644
index 85aef2c16e..0000000000
--- a/drawinglayer/inc/drawinglayer/processor3d/defaultprocessor3d.hxx
+++ /dev/null
@@ -1,169 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_PROCESSOR3D_DEFAULTPROCESSOR3D_HXX
-#define INCLUDED_DRAWINGLAYER_PROCESSOR3D_DEFAULTPROCESSOR3D_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <drawinglayer/processor3d/baseprocessor3d.hxx>
-#include <basegfx/matrix/b3dhommatrix.hxx>
-#include <basegfx/range/b2drange.hxx>
-#include <basegfx/color/bcolormodifier.hxx>
-#include <svtools/optionsdrawinglayer.hxx>
-#include <boost/shared_ptr.hpp>
-
-//////////////////////////////////////////////////////////////////////////////
-// predefines
-
-namespace basegfx {
- class BZPixelRaster;
- class B3DPolygon;
- class B3DPolyPolygon;
-}
-
-namespace drawinglayer { namespace attribute {
- class SdrSceneAttribute;
- class SdrLightingAttribute;
- class MaterialAttribute3D;
-}}
-
-namespace drawinglayer { namespace primitive3d {
- class PolygonHairlinePrimitive3D;
- class PolyPolygonMaterialPrimitive3D;
- class GradientTexturePrimitive3D;
- class HatchTexturePrimitive3D;
- class BitmapTexturePrimitive3D;
- class TransformPrimitive3D;
- class ModifiedColorPrimitive3D;
-}}
-
-namespace drawinglayer { namespace texture {
- class GeoTexSvx;
-}}
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace processor3d
- {
- /** DefaultProcessor3D class
-
- This processor renders all feeded primitives to a 2D raster where for all
- primitives the two basic methods rasterconvertB3DPolygon for hairlines and
- rasterconvertB3DPolyPolygon for filled geometry is called. It is a beseclass to
- e.g. base a Z-Buffer supported renderer on the 3D primitive processing.
- */
- class DRAWINGLAYER_DLLPUBLIC DefaultProcessor3D : public BaseProcessor3D
- {
- protected:
- /// read-only scene infos (normal handling, etc...)
- const attribute::SdrSceneAttribute& mrSdrSceneAttribute;
-
- /// read-only light infos (lights, etc...)
- const attribute::SdrLightingAttribute& mrSdrLightingAttribute;
-
- /// renderer range. Need to be correctly set by the derived implementations
- /// normally the (0, 0, W, H) range from mpBZPixelRaster
- basegfx::B2DRange maRasterRange;
-
- /// the modifiedColorPrimitive stack
- basegfx::BColorModifierStack maBColorModifierStack;
-
- /// the current active texture
- boost::shared_ptr< texture::GeoTexSvx > mpGeoTexSvx;
-
- /// the current active transparence texture
- boost::shared_ptr< texture::GeoTexSvx > mpTransparenceGeoTexSvx;
-
- /// SvtOptionsDrawinglayer incarnation to react on diverse settings
- const SvtOptionsDrawinglayer maDrawinglayerOpt;
-
- /// counter for entered transparence textures
- sal_uInt32 mnTransparenceCounter;
-
- /// bitfield
- unsigned mbModulate : 1;
- unsigned mbFilter : 1;
- unsigned mbSimpleTextureActive : 1;
-
- //////////////////////////////////////////////////////////////////////////////
- // rendering support
-
- void impRenderGradientTexturePrimitive3D(const primitive3d::GradientTexturePrimitive3D& rPrimitive, bool bTransparence);
- void impRenderHatchTexturePrimitive3D(const primitive3d::HatchTexturePrimitive3D& rPrimitive);
- void impRenderBitmapTexturePrimitive3D(const primitive3d::BitmapTexturePrimitive3D& rPrimitive);
- void impRenderModifiedColorPrimitive3D(const primitive3d::ModifiedColorPrimitive3D& rModifiedCandidate);
- void impRenderPolygonHairlinePrimitive3D(const primitive3d::PolygonHairlinePrimitive3D& rPrimitive);
- void impRenderPolyPolygonMaterialPrimitive3D(const primitive3d::PolyPolygonMaterialPrimitive3D& rPrimitive);
- void impRenderTransformPrimitive3D(const primitive3d::TransformPrimitive3D& rTransformCandidate);
-
- //////////////////////////////////////////////////////////////////////////////
- // rasterconversions for filled and non-filled polygons. These NEED to be
- // implemented from derivations
-
- virtual void rasterconvertB3DPolygon(const attribute::MaterialAttribute3D& rMaterial, const basegfx::B3DPolygon& rHairline) const = 0;
- virtual void rasterconvertB3DPolyPolygon(const attribute::MaterialAttribute3D& rMaterial, const basegfx::B3DPolyPolygon& rFill) const = 0;
-
- // the processing method for a single, known primitive
- virtual void processBasePrimitive3D(const primitive3d::BasePrimitive3D& rBasePrimitive);
-
- public:
- DefaultProcessor3D(
- const geometry::ViewInformation3D& rViewInformation,
- const attribute::SdrSceneAttribute& rSdrSceneAttribute,
- const attribute::SdrLightingAttribute& rSdrLightingAttribute);
- virtual ~DefaultProcessor3D();
-
- /// data read access
- const attribute::SdrSceneAttribute& getSdrSceneAttribute() const { return mrSdrSceneAttribute; }
- const attribute::SdrLightingAttribute& getSdrLightingAttribute() const { return mrSdrLightingAttribute; }
-
- /// data read access renderer stuff
- const basegfx::BColorModifierStack& getBColorModifierStack() const { return maBColorModifierStack; }
- const boost::shared_ptr< texture::GeoTexSvx >& getGeoTexSvx() const { return mpGeoTexSvx; }
- const boost::shared_ptr< texture::GeoTexSvx >& getTransparenceGeoTexSvx() const { return mpTransparenceGeoTexSvx; }
- sal_uInt32 getTransparenceCounter() const { return mnTransparenceCounter; }
- bool getModulate() const { return mbModulate; }
- bool getFilter() const { return mbFilter; }
- bool getSimpleTextureActive() const { return mbSimpleTextureActive; }
-
- /// access to Drawinglayer configuration options
- const SvtOptionsDrawinglayer& getOptionsDrawinglayer() const { return maDrawinglayerOpt; }
- };
- } // end of namespace processor3d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif // INCLUDED_DRAWINGLAYER_PROCESSOR3D_DEFAULTPROCESSOR3D_HXX
-
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/processor3d/geometry2dextractor.hxx b/drawinglayer/inc/drawinglayer/processor3d/geometry2dextractor.hxx
deleted file mode 100644
index 52f5787d2e..0000000000
--- a/drawinglayer/inc/drawinglayer/processor3d/geometry2dextractor.hxx
+++ /dev/null
@@ -1,86 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_PROCESSOR3D_GEOMETRY2DEXTRACTOR_HXX
-#define INCLUDED_DRAWINGLAYER_PROCESSOR3D_GEOMETRY2DEXTRACTOR_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <drawinglayer/processor3d/baseprocessor3d.hxx>
-#include <drawinglayer/primitive2d/baseprimitive2d.hxx>
-#include <basegfx/matrix/b2dhommatrix.hxx>
-#include <basegfx/matrix/b3dhommatrix.hxx>
-#include <basegfx/color/bcolormodifier.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace processor3d
- {
- /** Geometry2DExtractingProcessor class
-
- This processor extracts the 2D geometry (projected geometry) of all feeded primitives.
- It is e.g. used as sub-processor for contour extraction where 3D geometry is only
- useful as 2D projected geometry.
- */
- class DRAWINGLAYER_DLLPUBLIC Geometry2DExtractingProcessor : public BaseProcessor3D
- {
- private:
- /// result holding vector (2D)
- primitive2d::Primitive2DSequence maPrimitive2DSequence;
-
- /// object transformation for scene for 2d definition
- basegfx::B2DHomMatrix maObjectTransformation;
-
- /// the modifiedColorPrimitive stack
- basegfx::BColorModifierStack maBColorModifierStack;
-
- /* as tooling, the process() implementation takes over API handling and calls this
- virtual render method when the primitive implementation is BasePrimitive3D-based.
- */
- virtual void processBasePrimitive3D(const primitive3d::BasePrimitive3D& rCandidate);
-
- public:
- Geometry2DExtractingProcessor(
- const geometry::ViewInformation3D& rViewInformation,
- const basegfx::B2DHomMatrix& rObjectTransformation);
-
- // data read access
- const primitive2d::Primitive2DSequence& getPrimitive2DSequence() const { return maPrimitive2DSequence; }
- const basegfx::B2DHomMatrix& getObjectTransformation() const { return maObjectTransformation; }
- const basegfx::BColorModifierStack& getBColorModifierStack() const { return maBColorModifierStack; }
- };
- } // end of namespace processor3d
-} // end of namespace drawinglayer
-
-#endif //INCLUDED_DRAWINGLAYER_PROCESSOR3D_GEOMETRY2DEXTRACTOR_HXX
-
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/processor3d/shadow3dextractor.hxx b/drawinglayer/inc/drawinglayer/processor3d/shadow3dextractor.hxx
deleted file mode 100644
index 8e5168e971..0000000000
--- a/drawinglayer/inc/drawinglayer/processor3d/shadow3dextractor.hxx
+++ /dev/null
@@ -1,128 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_PROCESSOR3D_SHADOW3DEXTRACTOR_HXX
-#define INCLUDED_DRAWINGLAYER_PROCESSOR3D_SHADOW3DEXTRACTOR_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <drawinglayer/processor3d/baseprocessor3d.hxx>
-#include <drawinglayer/primitive2d/baseprimitive2d.hxx>
-#include <basegfx/matrix/b3dhommatrix.hxx>
-#include <basegfx/color/bcolor.hxx>
-#include <basegfx/polygon/b2dpolygon.hxx>
-#include <basegfx/polygon/b3dpolygon.hxx>
-#include <basegfx/polygon/b2dpolypolygon.hxx>
-#include <basegfx/polygon/b3dpolypolygon.hxx>
-#include <basegfx/matrix/b2dhommatrix.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace processor3d
- {
- /** Shadow3DExtractingProcessor class
-
- This processor extracts the 2D shadow geometry (projected geometry) of all feeded primitives.
- It is used to create the shadow of 3D objects which consists of 2D geometry. It needs quite
- some data to do so since we do not only offer flat projected 2D shadow, but also projections
- dependent on the light source
- */
- class DRAWINGLAYER_DLLPUBLIC Shadow3DExtractingProcessor : public BaseProcessor3D
- {
- private:
- /// typedef for data handling
- typedef std::vector< primitive2d::BasePrimitive2D* > BasePrimitive2DVector;
-
- /// result holding vector (2D) and target vector for stacking (inited to &maPrimitive2DSequence)
- BasePrimitive2DVector maPrimitive2DSequence;
- BasePrimitive2DVector* mpPrimitive2DSequence;
-
- /// object transformation for scene for 2d definition
- basegfx::B2DHomMatrix maObjectTransformation;
-
- /// prepared data (transformations) for 2D/3D shadow calculations
- basegfx::B3DHomMatrix maWorldToEye;
- basegfx::B3DHomMatrix maEyeToView;
- basegfx::B3DVector maLightNormal;
- basegfx::B3DVector maShadowPlaneNormal;
- basegfx::B3DPoint maPlanePoint;
- double mfLightPlaneScalar;
-
- /* the shadow color used for sub-primitives. Can stay at black since
- the encapsulating 2d shadow primitive will contain the color
- */
- basegfx::BColor maPrimitiveColor;
-
- /// bitfield
- /// flag if shadow plane projection preparation leaded to valid results
- unsigned mbShadowProjectionIsValid : 1;
-
- /// flag if conversion is switched on
- unsigned mbConvert : 1;
-
- /// flag if conversion shall use projection
- unsigned mbUseProjection : 1;
-
- /// local helpers
- basegfx::B2DPolygon impDoShadowProjection(const basegfx::B3DPolygon& rSource);
- basegfx::B2DPolyPolygon impDoShadowProjection(const basegfx::B3DPolyPolygon& rSource);
-
- /* as tooling, the process() implementation takes over API handling and calls this
- virtual render method when the primitive implementation is BasePrimitive3D-based.
- */
- virtual void processBasePrimitive3D(const primitive3d::BasePrimitive3D& rCandidate);
-
- /// helper to convert from BasePrimitive2DVector to primitive2d::Primitive2DSequence
- const primitive2d::Primitive2DSequence getPrimitive2DSequenceFromBasePrimitive2DVector(
- const BasePrimitive2DVector& rVector) const;
-
- public:
- Shadow3DExtractingProcessor(
- const geometry::ViewInformation3D& rViewInformation,
- const basegfx::B2DHomMatrix& rObjectTransformation,
- const basegfx::B3DVector& rLightNormal,
- double fShadowSlant,
- const basegfx::B3DRange& rContained3DRange);
- virtual ~Shadow3DExtractingProcessor();
-
- /// data read access
- const primitive2d::Primitive2DSequence getPrimitive2DSequence() const;
- const basegfx::B2DHomMatrix& getObjectTransformation() const { return maObjectTransformation; }
- const basegfx::B3DHomMatrix& getWorldToEye() const { return maWorldToEye; }
- const basegfx::B3DHomMatrix& getEyeToView() const { return maEyeToView; }
- };
- } // end of namespace processor3d
-} // end of namespace drawinglayer
-
-#endif //_DRAWINGLAYER_PROCESSOR3D_SHADOW3DEXTRACTOR_HXX
-
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/processor3d/zbufferprocessor3d.hxx b/drawinglayer/inc/drawinglayer/processor3d/zbufferprocessor3d.hxx
deleted file mode 100644
index 1531818e10..0000000000
--- a/drawinglayer/inc/drawinglayer/processor3d/zbufferprocessor3d.hxx
+++ /dev/null
@@ -1,124 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#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 DRAWINGLAYER_DLLPUBLIC 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
-
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/texture/texture.hxx b/drawinglayer/inc/drawinglayer/texture/texture.hxx
deleted file mode 100644
index b83d654486..0000000000
--- a/drawinglayer/inc/drawinglayer/texture/texture.hxx
+++ /dev/null
@@ -1,271 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_TEXTURE_TEXTURE_HXX
-#define INCLUDED_DRAWINGLAYER_TEXTURE_TEXTURE_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <basegfx/matrix/b2dhommatrix.hxx>
-#include <basegfx/range/b2drange.hxx>
-#include <basegfx/color/bcolor.hxx>
-#include <basegfx/tools/gradienttools.hxx>
-#include <vector>
-
-//////////////////////////////////////////////////////////////////////////////
-namespace drawinglayer
-{
- namespace texture
- {
- class DRAWINGLAYER_DLLPUBLIC GeoTexSvx
- {
- public:
- GeoTexSvx();
- virtual ~GeoTexSvx();
-
- // compare operator
- virtual bool operator==(const GeoTexSvx& rGeoTexSvx) const;
- bool operator!=(const GeoTexSvx& rGeoTexSvx) const { return !operator==(rGeoTexSvx); }
-
- // virtual base methods
- virtual void appendTransformations(::std::vector< basegfx::B2DHomMatrix >& rMatrices);
- virtual void modifyBColor(const basegfx::B2DPoint& rUV, basegfx::BColor& rBColor, double& rfOpacity) const;
- virtual void modifyOpacity(const basegfx::B2DPoint& rUV, double& rfOpacity) const;
- };
- } // end of namespace texture
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace texture
- {
- class DRAWINGLAYER_DLLPUBLIC GeoTexSvxGradient : public GeoTexSvx
- {
- protected:
- basegfx::ODFGradientInfo maGradientInfo;
- basegfx::B2DRange maTargetRange;
- basegfx::BColor maStart;
- basegfx::BColor maEnd;
- double mfBorder;
-
- // helpers
- void impAppendMatrix(::std::vector< basegfx::B2DHomMatrix >& rMatrices, const basegfx::B2DRange& rRange);
- void impAppendColorsRadial(::std::vector< basegfx::BColor >& rColors);
-
- public:
- GeoTexSvxGradient(const basegfx::B2DRange& rTargetRange, const basegfx::BColor& rStart, const basegfx::BColor& rEnd, sal_uInt32 nSteps, double fBorder);
- virtual ~GeoTexSvxGradient();
-
- // compare operator
- virtual bool operator==(const GeoTexSvx& rGeoTexSvx) const;
-
- // virtual base methods
- virtual void appendColors(::std::vector< basegfx::BColor >& rColors) = 0;
-
- // data access
- const basegfx::BColor& getStart() const { return maStart; }
- const basegfx::BColor& getEnd() const { return maEnd; }
- };
- } // end of namespace texture
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace texture
- {
- class DRAWINGLAYER_DLLPUBLIC GeoTexSvxGradientLinear : public GeoTexSvxGradient
- {
- public:
- GeoTexSvxGradientLinear(const basegfx::B2DRange& rTargetRange, const basegfx::BColor& rStart, const basegfx::BColor& rEnd, sal_uInt32 nSteps, double fBorder, double fAngle);
- virtual ~GeoTexSvxGradientLinear();
-
- virtual void appendTransformations(::std::vector< basegfx::B2DHomMatrix >& rMatrices);
- virtual void appendColors(::std::vector< basegfx::BColor >& rColors);
- virtual void modifyBColor(const basegfx::B2DPoint& rUV, basegfx::BColor& rBColor, double& rfOpacity) const;
- };
- } // end of namespace texture
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace texture
- {
- class DRAWINGLAYER_DLLPUBLIC GeoTexSvxGradientAxial : public GeoTexSvxGradient
- {
- public:
- GeoTexSvxGradientAxial(const basegfx::B2DRange& rTargetRange, const basegfx::BColor& rStart, const basegfx::BColor& rEnd, sal_uInt32 nSteps, double fBorder, double fAngle);
- virtual ~GeoTexSvxGradientAxial();
-
- virtual void appendTransformations(::std::vector< basegfx::B2DHomMatrix >& rMatrices);
- virtual void appendColors(::std::vector< basegfx::BColor >& rColors);
- virtual void modifyBColor(const basegfx::B2DPoint& rUV, basegfx::BColor& rBColor, double& rfOpacity) const;
- };
- } // end of namespace texture
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace texture
- {
- class DRAWINGLAYER_DLLPUBLIC GeoTexSvxGradientRadial : public GeoTexSvxGradient
- {
- public:
- GeoTexSvxGradientRadial(const basegfx::B2DRange& rTargetRange, const basegfx::BColor& rStart, const basegfx::BColor& rEnd, sal_uInt32 nSteps, double fBorder, double fOffsetX, double fOffsetY);
- virtual ~GeoTexSvxGradientRadial();
-
- virtual void appendTransformations(::std::vector< basegfx::B2DHomMatrix >& rMatrices);
- virtual void appendColors(::std::vector< basegfx::BColor >& rColors);
- virtual void modifyBColor(const basegfx::B2DPoint& rUV, basegfx::BColor& rBColor, double& rfOpacity) const;
- };
- } // end of namespace texture
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace texture
- {
- class DRAWINGLAYER_DLLPUBLIC GeoTexSvxGradientElliptical : public GeoTexSvxGradient
- {
- public:
- GeoTexSvxGradientElliptical(const basegfx::B2DRange& rTargetRange, const basegfx::BColor& rStart, const basegfx::BColor& rEnd, sal_uInt32 nSteps, double fBorder, double fOffsetX, double fOffsetY, double fAngle);
- virtual ~GeoTexSvxGradientElliptical();
-
- virtual void appendTransformations(::std::vector< basegfx::B2DHomMatrix >& rMatrices);
- virtual void appendColors(::std::vector< basegfx::BColor >& rColors);
- virtual void modifyBColor(const basegfx::B2DPoint& rUV, basegfx::BColor& rBColor, double& rfOpacity) const;
- };
- } // end of namespace texture
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace texture
- {
- class DRAWINGLAYER_DLLPUBLIC GeoTexSvxGradientSquare : public GeoTexSvxGradient
- {
- public:
- GeoTexSvxGradientSquare(const basegfx::B2DRange& rTargetRange, const basegfx::BColor& rStart, const basegfx::BColor& rEnd, sal_uInt32 nSteps, double fBorder, double fOffsetX, double fOffsetY, double fAngle);
- virtual ~GeoTexSvxGradientSquare();
-
- virtual void appendTransformations(::std::vector< basegfx::B2DHomMatrix >& rMatrices);
- virtual void appendColors(::std::vector< basegfx::BColor >& rColors);
- virtual void modifyBColor(const basegfx::B2DPoint& rUV, basegfx::BColor& rBColor, double& rfOpacity) const;
- };
- } // end of namespace texture
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace texture
- {
- class DRAWINGLAYER_DLLPUBLIC GeoTexSvxGradientRect : public GeoTexSvxGradient
- {
- public:
- GeoTexSvxGradientRect(const basegfx::B2DRange& rTargetRange, const basegfx::BColor& rStart, const basegfx::BColor& rEnd, sal_uInt32 nSteps, double fBorder, double fOffsetX, double fOffsetY, double fAngle);
- virtual ~GeoTexSvxGradientRect();
-
- virtual void appendTransformations(::std::vector< basegfx::B2DHomMatrix >& rMatrices);
- virtual void appendColors(::std::vector< basegfx::BColor >& rColors);
- virtual void modifyBColor(const basegfx::B2DPoint& rUV, basegfx::BColor& rBColor, double& rfOpacity) const;
- };
- } // end of namespace texture
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace texture
- {
- class DRAWINGLAYER_DLLPUBLIC GeoTexSvxHatch : public GeoTexSvx
- {
- protected:
- basegfx::B2DHomMatrix maTextureTransform;
- basegfx::B2DHomMatrix maBackTextureTransform;
- double mfDistance;
- double mfAngle;
- sal_uInt32 mnSteps;
-
- public:
- GeoTexSvxHatch(const basegfx::B2DRange& rTargetRange, double fDistance, double fAngle);
- virtual ~GeoTexSvxHatch();
-
- // compare operator
- virtual bool operator==(const GeoTexSvx& rGeoTexSvx) const;
-
- virtual void appendTransformations(::std::vector< basegfx::B2DHomMatrix >& rMatrices);
- double getDistanceToHatch(const basegfx::B2DPoint& rUV) const;
- };
- } // end of namespace texture
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace texture
- {
- class DRAWINGLAYER_DLLPUBLIC GeoTexSvxTiled : public GeoTexSvx
- {
- protected:
- basegfx::B2DPoint maTopLeft;
- basegfx::B2DVector maSize;
-
- public:
- GeoTexSvxTiled(const basegfx::B2DPoint& rTopLeft, const basegfx::B2DVector& rSize);
- virtual ~GeoTexSvxTiled();
-
- // compare operator
- virtual bool operator==(const GeoTexSvx& rGeoTexSvx) const;
-
- virtual void appendTransformations(::std::vector< basegfx::B2DHomMatrix >& rMatrices);
- };
- } // end of namespace texture
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif //_DRAWINGLAYER_TEXTURE_TEXTURE_HXX
-
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/drawinglayer/texture/texture3d.hxx b/drawinglayer/inc/drawinglayer/texture/texture3d.hxx
deleted file mode 100644
index 5236eb6f24..0000000000
--- a/drawinglayer/inc/drawinglayer/texture/texture3d.hxx
+++ /dev/null
@@ -1,170 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_TEXTURE_TEXTURE3D_HXX
-#define INCLUDED_DRAWINGLAYER_TEXTURE_TEXTURE3D_HXX
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <drawinglayer/texture/texture.hxx>
-#include <vcl/bitmap.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-// predeclarations
-
-namespace drawinglayer { namespace primitive3d {
- class HatchTexturePrimitive3D;
-}}
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace texture
- {
- class DRAWINGLAYER_DLLPUBLIC GeoTexSvxMono : public GeoTexSvx
- {
- protected:
- basegfx::BColor maSingleColor;
- double mfOpacity;
-
- public:
- GeoTexSvxMono(const basegfx::BColor& rSingleColor, double fOpacity);
-
- // compare operator
- virtual bool operator==(const GeoTexSvx& rGeoTexSvx) const;
- virtual void modifyBColor(const basegfx::B2DPoint& rUV, basegfx::BColor& rBColor, double& rfOpacity) const;
- virtual void modifyOpacity(const basegfx::B2DPoint& rUV, double& rfOpacity) const;
- };
- } // end of namespace texture
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace texture
- {
- class DRAWINGLAYER_DLLPUBLIC GeoTexSvxBitmap : public GeoTexSvx
- {
- protected:
- Bitmap maBitmap;
- BitmapReadAccess* mpRead;
- basegfx::B2DPoint maTopLeft;
- basegfx::B2DVector maSize;
- double mfMulX;
- double mfMulY;
-
- // helpers
- bool impIsValid(const basegfx::B2DPoint& rUV, sal_Int32& rX, sal_Int32& rY) const;
-
- public:
- GeoTexSvxBitmap(const Bitmap& rBitmap, const basegfx::B2DPoint& rTopLeft, const basegfx::B2DVector& rSize);
- virtual ~GeoTexSvxBitmap();
- virtual void modifyBColor(const basegfx::B2DPoint& rUV, basegfx::BColor& rBColor, double& rfOpacity) const;
- virtual void modifyOpacity(const basegfx::B2DPoint& rUV, double& rfOpacity) const;
- };
- } // end of namespace texture
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace texture
- {
- class DRAWINGLAYER_DLLPUBLIC GeoTexSvxBitmapTiled : public GeoTexSvxBitmap
- {
- protected:
- // helpers
- basegfx::B2DPoint impGetCorrected(const basegfx::B2DPoint& rUV) const
- {
- double fX(fmod(rUV.getX() - maTopLeft.getX(), maSize.getX()));
- double fY(fmod(rUV.getY() - maTopLeft.getY(), maSize.getY()));
-
- if(fX < 0.0)
- {
- fX += maSize.getX();
- }
-
- if(fY < 0.0)
- {
- fY += maSize.getY();
- }
-
- return basegfx::B2DPoint(fX + maTopLeft.getX(), fY + maTopLeft.getY());
- }
-
- public:
- GeoTexSvxBitmapTiled(const Bitmap& rBitmap, const basegfx::B2DPoint& rTopLeft, const basegfx::B2DVector& rSize);
- virtual void modifyBColor(const basegfx::B2DPoint& rUV, basegfx::BColor& rBColor, double& rfOpacity) const;
- virtual void modifyOpacity(const basegfx::B2DPoint& rUV, double& rfOpacity) const;
- };
- } // end of namespace texture
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace texture
- {
- class DRAWINGLAYER_DLLPUBLIC GeoTexSvxMultiHatch : public GeoTexSvx
- {
- protected:
- basegfx::BColor maColor;
- double mfLogicPixelSize;
- GeoTexSvxHatch* mp0;
- GeoTexSvxHatch* mp1;
- GeoTexSvxHatch* mp2;
-
- // bitfield
- unsigned mbFillBackground : 1;
-
- // helpers
- bool impIsOnHatch(const basegfx::B2DPoint& rUV) const;
-
- public:
- GeoTexSvxMultiHatch(const primitive3d::HatchTexturePrimitive3D& rPrimitive, double fLogicPixelSize);
- virtual ~GeoTexSvxMultiHatch();
- virtual void modifyBColor(const basegfx::B2DPoint& rUV, basegfx::BColor& rBColor, double& rfOpacity) const;
- virtual void modifyOpacity(const basegfx::B2DPoint& rUV, double& rfOpacity) const;
-
- // dada access
- bool getFillBackground() const { return mbFillBackground; }
- };
- } // end of namespace texture
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif // INCLUDED_DRAWINGLAYER_TEXTURE_TEXTURE3D_HXX
-
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/pch/precompiled_drawinglayer.cxx b/drawinglayer/inc/pch/precompiled_drawinglayer.cxx
deleted file mode 100644
index e86aca2cf3..0000000000
--- a/drawinglayer/inc/pch/precompiled_drawinglayer.cxx
+++ /dev/null
@@ -1,31 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#include "precompiled_drawinglayer.hxx"
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/pch/precompiled_drawinglayer.hxx b/drawinglayer/inc/pch/precompiled_drawinglayer.hxx
deleted file mode 100644
index 72f6f137b8..0000000000
--- a/drawinglayer/inc/pch/precompiled_drawinglayer.hxx
+++ /dev/null
@@ -1,34 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): Generated on 2006-09-01 17:49:30.796084
-
-#ifdef PRECOMPILED_HEADERS
-#endif
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/prj/build.lst b/drawinglayer/prj/build.lst
deleted file mode 100644
index 9f9697ba06..0000000000
--- a/drawinglayer/prj/build.lst
+++ /dev/null
@@ -1,4 +0,0 @@
-dl drawinglayer : sal vcl basegfx offapi cppuhelper cppu svtools avmedia canvas cppcanvas NULL
-dl drawinglayer usr1 - all dl_mkout NULL
-dl drawinglayer\prj nmake - all dl_prj NULL
-
diff --git a/drawinglayer/prj/d.lst b/drawinglayer/prj/d.lst
deleted file mode 100644
index b384ab67c0..0000000000
--- a/drawinglayer/prj/d.lst
+++ /dev/null
@@ -1,2 +0,0 @@
-
-..\inc\drawinglayer\primitive2d\rendergraphicprimitive2d.hxx %_DEST%\inc\drawinglayer\primitive2d\rendergraphicprimitive2d.hxx \ No newline at end of file
diff --git a/drawinglayer/prj/makefile.mk b/drawinglayer/prj/makefile.mk
deleted file mode 100755
index e312a7ccab..0000000000
--- a/drawinglayer/prj/makefile.mk
+++ /dev/null
@@ -1,40 +0,0 @@
-#*************************************************************************
-#
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# Copyright 2000, 2010 Oracle and/or its affiliates.
-#
-# OpenOffice.org - a multi-platform office productivity suite
-#
-# This file is part of OpenOffice.org.
-#
-# OpenOffice.org is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Lesser General Public License version 3
-# only, as published by the Free Software Foundation.
-#
-# OpenOffice.org is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Lesser General Public License version 3 for more details
-# (a copy is included in the LICENSE file that accompanied this code).
-#
-# You should have received a copy of the GNU Lesser General Public License
-# version 3 along with OpenOffice.org. If not, see
-# <http://www.openoffice.org/license.html>
-# for a copy of the LGPLv3 License.
-#
-#*************************************************************************
-
-PRJ=..
-TARGET=prj
-
-.INCLUDE : settings.mk
-
-.IF "$(VERBOSE)"!=""
-VERBOSEFLAG :=
-.ELSE
-VERBOSEFLAG := -s
-.ENDIF
-
-all:
- cd $(PRJ) && $(GNUMAKE) $(VERBOSEFLAG) -r -j$(MAXPROCESS) $(gb_MAKETARGET) && $(GNUMAKE) $(VERBOSEFLAG) -r deliverlog
diff --git a/drawinglayer/source/animation/animationtiming.cxx b/drawinglayer/source/animation/animationtiming.cxx
deleted file mode 100644
index 856005cb92..0000000000
--- a/drawinglayer/source/animation/animationtiming.cxx
+++ /dev/null
@@ -1,373 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/animation/animationtiming.hxx>
-#include <basegfx/numeric/ftools.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace animation
- {
- //////////////////////////////////////////////////////////////////////////////
-
- AnimationEntry::AnimationEntry()
- {
- }
-
- AnimationEntry::~AnimationEntry()
- {
- }
-
- //////////////////////////////////////////////////////////////////////////////
-
- AnimationEntryFixed::AnimationEntryFixed(double fDuration, double fState)
- : mfDuration(fDuration),
- mfState(fState)
- {
- }
-
- AnimationEntryFixed::~AnimationEntryFixed()
- {
- }
-
- AnimationEntry* AnimationEntryFixed::clone() const
- {
- return new AnimationEntryFixed(mfDuration, mfState);
- }
-
- bool AnimationEntryFixed::operator==(const AnimationEntry& rCandidate) const
- {
- const AnimationEntryFixed* pCompare = dynamic_cast< const AnimationEntryFixed* >(&rCandidate);
-
- return (pCompare
- && basegfx::fTools::equal(mfDuration, pCompare->mfDuration)
- && basegfx::fTools::equal(mfState, pCompare->mfState));
- }
-
- double AnimationEntryFixed::getDuration() const
- {
- return mfDuration;
- }
-
- double AnimationEntryFixed::getStateAtTime(double /*fTime*/) const
- {
- return mfState;
- }
-
- double AnimationEntryFixed::getNextEventTime(double fTime) const
- {
- if(basegfx::fTools::less(fTime, mfDuration))
- {
- return mfDuration;
- }
- else
- {
- return 0.0;
- }
- }
-
- //////////////////////////////////////////////////////////////////////////////
-
- AnimationEntryLinear::AnimationEntryLinear(double fDuration, double fFrequency, double fStart, double fStop)
- : mfDuration(fDuration),
- mfFrequency(fFrequency),
- mfStart(fStart),
- mfStop(fStop)
- {
- }
-
- AnimationEntryLinear::~AnimationEntryLinear()
- {
- }
-
- AnimationEntry* AnimationEntryLinear::clone() const
- {
- return new AnimationEntryLinear(mfDuration, mfFrequency, mfStart, mfStop);
- }
-
- bool AnimationEntryLinear::operator==(const AnimationEntry& rCandidate) const
- {
- const AnimationEntryLinear* pCompare = dynamic_cast< const AnimationEntryLinear* >(&rCandidate);
-
- return (pCompare
- && basegfx::fTools::equal(mfDuration, pCompare->mfDuration)
- && basegfx::fTools::equal(mfStart, pCompare->mfStart)
- && basegfx::fTools::equal(mfStop, pCompare->mfStop));
- }
-
- double AnimationEntryLinear::getDuration() const
- {
- return mfDuration;
- }
-
- double AnimationEntryLinear::getStateAtTime(double fTime) const
- {
- if(basegfx::fTools::more(mfDuration, 0.0))
- {
- const double fFactor(fTime / mfDuration);
-
- if(fFactor > 1.0)
- {
- return mfStop;
- }
- else
- {
- return mfStart + ((mfStop - mfStart) * fFactor);
- }
- }
- else
- {
- return mfStart;
- }
- }
-
- double AnimationEntryLinear::getNextEventTime(double fTime) const
- {
- if(basegfx::fTools::less(fTime, mfDuration))
- {
- // use the simple solution: just add the frequency. More correct (but also more
- // complicated) would be to calculate the slice of time we are in and when this
- // slice will end. For the animations, this makes no quality difference.
- fTime += mfFrequency;
-
- if(basegfx::fTools::more(fTime, mfDuration))
- {
- fTime = mfDuration;
- }
-
- return fTime;
- }
- else
- {
- return 0.0;
- }
- }
-
- //////////////////////////////////////////////////////////////////////////////
-
- sal_uInt32 AnimationEntryList::impGetIndexAtTime(double fTime, double &rfAddedTime) const
- {
- sal_uInt32 nIndex(0L);
-
- while(nIndex < maEntries.size() && basegfx::fTools::lessOrEqual(rfAddedTime + maEntries[nIndex]->getDuration(), fTime))
- {
- rfAddedTime += maEntries[nIndex++]->getDuration();
- }
-
- return nIndex;
- }
-
- AnimationEntryList::AnimationEntryList()
- : mfDuration(0.0)
- {
- }
-
- AnimationEntryList::~AnimationEntryList()
- {
- for(sal_uInt32 a(0L); a < maEntries.size(); a++)
- {
- delete maEntries[a];
- }
- }
-
- AnimationEntry* AnimationEntryList::clone() const
- {
- AnimationEntryList* pNew = new AnimationEntryList();
-
- for(sal_uInt32 a(0L); a < maEntries.size(); a++)
- {
- pNew->append(*maEntries[a]);
- }
-
- return pNew;
- }
-
- bool AnimationEntryList::operator==(const AnimationEntry& rCandidate) const
- {
- const AnimationEntryList* pCompare = dynamic_cast< const AnimationEntryList* >(&rCandidate);
-
- if(pCompare && mfDuration == pCompare->mfDuration)
- {
- for(sal_uInt32 a(0L); a < maEntries.size(); a++)
- {
- if(!(*maEntries[a] == *pCompare->maEntries[a]))
- {
- return false;
- }
- }
-
- return true;
- }
-
- return false;
- }
-
- void AnimationEntryList::append(const AnimationEntry& rCandidate)
- {
- const double fDuration(rCandidate.getDuration());
-
- if(!basegfx::fTools::equalZero(fDuration))
- {
- maEntries.push_back(rCandidate.clone());
- mfDuration += fDuration;
- }
- }
-
- double AnimationEntryList::getDuration() const
- {
- return mfDuration;
- }
-
- double AnimationEntryList::getStateAtTime(double fTime) const
- {
- if(!basegfx::fTools::equalZero(mfDuration))
- {
- double fAddedTime(0.0);
- const sal_uInt32 nIndex(impGetIndexAtTime(fTime, fAddedTime));
-
- if(nIndex < maEntries.size())
- {
- return maEntries[nIndex]->getStateAtTime(fTime - fAddedTime);
- }
- }
-
- return 0.0;
- }
-
- double AnimationEntryList::getNextEventTime(double fTime) const
- {
- double fNewTime(0.0);
-
- if(!basegfx::fTools::equalZero(mfDuration))
- {
- double fAddedTime(0.0);
- const sal_uInt32 nIndex(impGetIndexAtTime(fTime, fAddedTime));
-
- if(nIndex < maEntries.size())
- {
- fNewTime = maEntries[nIndex]->getNextEventTime(fTime - fAddedTime) + fAddedTime;
- }
- }
-
- return fNewTime;
- }
-
- //////////////////////////////////////////////////////////////////////////////
-
- AnimationEntryLoop::AnimationEntryLoop(sal_uInt32 nRepeat)
- : AnimationEntryList(),
- mnRepeat(nRepeat)
- {
- }
-
- AnimationEntryLoop::~AnimationEntryLoop()
- {
- }
-
- AnimationEntry* AnimationEntryLoop::clone() const
- {
- AnimationEntryLoop* pNew = new AnimationEntryLoop(mnRepeat);
-
- for(sal_uInt32 a(0L); a < maEntries.size(); a++)
- {
- pNew->append(*maEntries[a]);
- }
-
- return pNew;
- }
-
- bool AnimationEntryLoop::operator==(const AnimationEntry& rCandidate) const
- {
- const AnimationEntryLoop* pCompare = dynamic_cast< const AnimationEntryLoop* >(&rCandidate);
-
- return (pCompare
- && mnRepeat == pCompare->mnRepeat
- && AnimationEntryList::operator==(rCandidate));
- }
-
- double AnimationEntryLoop::getDuration() const
- {
- return (mfDuration * (double)mnRepeat);
- }
-
- double AnimationEntryLoop::getStateAtTime(double fTime) const
- {
- if(mnRepeat && !basegfx::fTools::equalZero(mfDuration))
- {
- const sal_uInt32 nCurrentLoop((sal_uInt32)(fTime / mfDuration));
-
- if(nCurrentLoop > mnRepeat)
- {
- return 1.0;
- }
- else
- {
- const double fTimeAtLoopStart((double)nCurrentLoop * mfDuration);
- const double fRelativeTime(fTime - fTimeAtLoopStart);
- return AnimationEntryList::getStateAtTime(fRelativeTime);
- }
- }
-
- return 0.0;
- }
-
- double AnimationEntryLoop::getNextEventTime(double fTime) const
- {
- double fNewTime(0.0);
-
- if(mnRepeat && !basegfx::fTools::equalZero(mfDuration))
- {
- const sal_uInt32 nCurrentLoop((sal_uInt32)(fTime / mfDuration));
-
- if(nCurrentLoop <= mnRepeat)
- {
- const double fTimeAtLoopStart((double)nCurrentLoop * mfDuration);
- const double fRelativeTime(fTime - fTimeAtLoopStart);
- const double fNextEventAtLoop(AnimationEntryList::getNextEventTime(fRelativeTime));
-
- if(!basegfx::fTools::equalZero(fNextEventAtLoop))
- {
- fNewTime = fNextEventAtLoop + fTimeAtLoopStart;
- }
- }
- }
-
- return fNewTime;
- }
- } // end of namespace animation
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/attribute/fillbitmapattribute.cxx b/drawinglayer/source/attribute/fillbitmapattribute.cxx
deleted file mode 100644
index 807564da2a..0000000000
--- a/drawinglayer/source/attribute/fillbitmapattribute.cxx
+++ /dev/null
@@ -1,202 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/attribute/fillbitmapattribute.hxx>
-#include <vcl/bitmapex.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace attribute
- {
- class ImpFillBitmapAttribute
- {
- public:
- // refcounter
- sal_uInt32 mnRefCount;
-
- // data definitions
- BitmapEx maBitmapEx;
- basegfx::B2DPoint maTopLeft;
- basegfx::B2DVector maSize;
-
- // bitfield
- unsigned mbTiling : 1;
-
- ImpFillBitmapAttribute(
- const BitmapEx& rBitmapEx,
- const basegfx::B2DPoint& rTopLeft,
- const basegfx::B2DVector& rSize,
- bool bTiling)
- : mnRefCount(0),
- maBitmapEx(rBitmapEx),
- maTopLeft(rTopLeft),
- maSize(rSize),
- mbTiling(bTiling)
- {
- }
-
- bool operator==(const ImpFillBitmapAttribute& rCandidate) const
- {
- return (maBitmapEx == rCandidate.maBitmapEx
- && maTopLeft == rCandidate.maTopLeft
- && maSize == rCandidate.maSize
- && mbTiling == rCandidate.mbTiling);
- }
-
- // data read access
- const BitmapEx& getBitmapEx() const { return maBitmapEx; }
- const basegfx::B2DPoint& getTopLeft() const { return maTopLeft; }
- const basegfx::B2DVector& getSize() const { return maSize; }
- bool getTiling() const { return mbTiling; }
-
- static ImpFillBitmapAttribute* get_global_default()
- {
- static ImpFillBitmapAttribute* pDefault = 0;
-
- if(!pDefault)
- {
- pDefault = new ImpFillBitmapAttribute(
- BitmapEx(),
- basegfx::B2DPoint(),
- basegfx::B2DVector(),
- false);
-
- // never delete; start with RefCount 1, not 0
- pDefault->mnRefCount++;
- }
-
- return pDefault;
- }
- };
-
- FillBitmapAttribute::FillBitmapAttribute(
- const BitmapEx& rBitmapEx,
- const basegfx::B2DPoint& rTopLeft,
- const basegfx::B2DVector& rSize,
- bool bTiling)
- : mpFillBitmapAttribute(new ImpFillBitmapAttribute(
- rBitmapEx, rTopLeft, rSize, bTiling))
- {
- }
-
- FillBitmapAttribute::FillBitmapAttribute()
- : mpFillBitmapAttribute(ImpFillBitmapAttribute::get_global_default())
- {
- mpFillBitmapAttribute->mnRefCount++;
- }
-
- FillBitmapAttribute::FillBitmapAttribute(const FillBitmapAttribute& rCandidate)
- : mpFillBitmapAttribute(rCandidate.mpFillBitmapAttribute)
- {
- mpFillBitmapAttribute->mnRefCount++;
- }
-
- FillBitmapAttribute::~FillBitmapAttribute()
- {
- if(mpFillBitmapAttribute->mnRefCount)
- {
- mpFillBitmapAttribute->mnRefCount--;
- }
- else
- {
- delete mpFillBitmapAttribute;
- }
- }
-
- bool FillBitmapAttribute::isDefault() const
- {
- return mpFillBitmapAttribute == ImpFillBitmapAttribute::get_global_default();
- }
-
- FillBitmapAttribute& FillBitmapAttribute::operator=(const FillBitmapAttribute& rCandidate)
- {
- if(rCandidate.mpFillBitmapAttribute != mpFillBitmapAttribute)
- {
- if(mpFillBitmapAttribute->mnRefCount)
- {
- mpFillBitmapAttribute->mnRefCount--;
- }
- else
- {
- delete mpFillBitmapAttribute;
- }
-
- mpFillBitmapAttribute = rCandidate.mpFillBitmapAttribute;
- mpFillBitmapAttribute->mnRefCount++;
- }
-
- return *this;
- }
-
- bool FillBitmapAttribute::operator==(const FillBitmapAttribute& rCandidate) const
- {
- if(rCandidate.mpFillBitmapAttribute == mpFillBitmapAttribute)
- {
- return true;
- }
-
- if(rCandidate.isDefault() != isDefault())
- {
- return false;
- }
-
- return (*rCandidate.mpFillBitmapAttribute == *mpFillBitmapAttribute);
- }
-
- const BitmapEx& FillBitmapAttribute::getBitmapEx() const
- {
- return mpFillBitmapAttribute->getBitmapEx();
- }
-
- const basegfx::B2DPoint& FillBitmapAttribute::getTopLeft() const
- {
- return mpFillBitmapAttribute->getTopLeft();
- }
-
- const basegfx::B2DVector& FillBitmapAttribute::getSize() const
- {
- return mpFillBitmapAttribute->getSize();
- }
-
- bool FillBitmapAttribute::getTiling() const
- {
- return mpFillBitmapAttribute->getTiling();
- }
-
- } // end of namespace attribute
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/attribute/fillgradientattribute.cxx b/drawinglayer/source/attribute/fillgradientattribute.cxx
deleted file mode 100644
index a67ea41119..0000000000
--- a/drawinglayer/source/attribute/fillgradientattribute.cxx
+++ /dev/null
@@ -1,247 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * The Contents of this file are made available subject to
- * the terms of GNU Lesser General Public License Version 2.1.
- *
- *
- * GNU Lesser General Public License Version 2.1
- * =============================================
- * Copyright 2005 by Sun Microsystems, Inc.
- * 901 San Antonio Road, Palo Alto, CA 94303, USA
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License version 2.1, as published by the Free Software Foundation.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/attribute/fillgradientattribute.hxx>
-#include <basegfx/color/bcolor.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace attribute
- {
- class ImpFillGradientAttribute
- {
- public:
- // refcounter
- sal_uInt32 mnRefCount;
-
- // data definitions
- GradientStyle meStyle;
- double mfBorder;
- double mfOffsetX;
- double mfOffsetY;
- double mfAngle;
- basegfx::BColor maStartColor;
- basegfx::BColor maEndColor;
- sal_uInt16 mnSteps;
-
- ImpFillGradientAttribute(
- GradientStyle eStyle,
- double fBorder,
- double fOffsetX,
- double fOffsetY,
- double fAngle,
- const basegfx::BColor& rStartColor,
- const basegfx::BColor& rEndColor,
- sal_uInt16 nSteps)
- : mnRefCount(0),
- meStyle(eStyle),
- mfBorder(fBorder),
- mfOffsetX(fOffsetX),
- mfOffsetY(fOffsetY),
- mfAngle(fAngle),
- maStartColor(rStartColor),
- maEndColor(rEndColor),
- mnSteps(nSteps)
- {
- }
-
- // data read access
- GradientStyle getStyle() const { return meStyle; }
- double getBorder() const { return mfBorder; }
- double getOffsetX() const { return mfOffsetX; }
- double getOffsetY() const { return mfOffsetY; }
- double getAngle() const { return mfAngle; }
- const basegfx::BColor& getStartColor() const { return maStartColor; }
- const basegfx::BColor& getEndColor() const { return maEndColor; }
- sal_uInt16 getSteps() const { return mnSteps; }
-
- bool operator==(const ImpFillGradientAttribute& rCandidate) const
- {
- return (getStyle() == rCandidate.getStyle()
- && getBorder() == rCandidate.getBorder()
- && getOffsetX() == rCandidate.getOffsetX()
- && getOffsetY() == rCandidate.getOffsetY()
- && getAngle() == rCandidate.getAngle()
- && getStartColor() == rCandidate.getStartColor()
- && getEndColor() == rCandidate.getEndColor()
- && getSteps() == rCandidate.getSteps());
- }
-
- static ImpFillGradientAttribute* get_global_default()
- {
- static ImpFillGradientAttribute* pDefault = 0;
-
- if(!pDefault)
- {
- pDefault = new ImpFillGradientAttribute(
- GRADIENTSTYLE_LINEAR,
- 0.0, 0.0, 0.0, 0.0,
- basegfx::BColor(),
- basegfx::BColor(),
- 0);
-
- // never delete; start with RefCount 1, not 0
- pDefault->mnRefCount++;
- }
-
- return pDefault;
- }
- };
-
- FillGradientAttribute::FillGradientAttribute(
- GradientStyle eStyle,
- double fBorder,
- double fOffsetX,
- double fOffsetY,
- double fAngle,
- const basegfx::BColor& rStartColor,
- const basegfx::BColor& rEndColor,
- sal_uInt16 nSteps)
- : mpFillGradientAttribute(new ImpFillGradientAttribute(
- eStyle, fBorder, fOffsetX, fOffsetY, fAngle, rStartColor, rEndColor, nSteps))
- {
- }
-
- FillGradientAttribute::FillGradientAttribute()
- : mpFillGradientAttribute(ImpFillGradientAttribute::get_global_default())
- {
- mpFillGradientAttribute->mnRefCount++;
- }
-
- FillGradientAttribute::FillGradientAttribute(const FillGradientAttribute& rCandidate)
- : mpFillGradientAttribute(rCandidate.mpFillGradientAttribute)
- {
- mpFillGradientAttribute->mnRefCount++;
- }
-
- FillGradientAttribute::~FillGradientAttribute()
- {
- if(mpFillGradientAttribute->mnRefCount)
- {
- mpFillGradientAttribute->mnRefCount--;
- }
- else
- {
- delete mpFillGradientAttribute;
- }
- }
-
- bool FillGradientAttribute::isDefault() const
- {
- return mpFillGradientAttribute == ImpFillGradientAttribute::get_global_default();
- }
-
- FillGradientAttribute& FillGradientAttribute::operator=(const FillGradientAttribute& rCandidate)
- {
- if(rCandidate.mpFillGradientAttribute != mpFillGradientAttribute)
- {
- if(mpFillGradientAttribute->mnRefCount)
- {
- mpFillGradientAttribute->mnRefCount--;
- }
- else
- {
- delete mpFillGradientAttribute;
- }
-
- mpFillGradientAttribute = rCandidate.mpFillGradientAttribute;
- mpFillGradientAttribute->mnRefCount++;
- }
-
- return *this;
- }
-
- bool FillGradientAttribute::operator==(const FillGradientAttribute& rCandidate) const
- {
- if(rCandidate.mpFillGradientAttribute == mpFillGradientAttribute)
- {
- return true;
- }
-
- if(rCandidate.isDefault() != isDefault())
- {
- return false;
- }
-
- return (*rCandidate.mpFillGradientAttribute == *mpFillGradientAttribute);
- }
-
- const basegfx::BColor& FillGradientAttribute::getStartColor() const
- {
- return mpFillGradientAttribute->getStartColor();
- }
-
- const basegfx::BColor& FillGradientAttribute::getEndColor() const
- {
- return mpFillGradientAttribute->getEndColor();
- }
-
- double FillGradientAttribute::getBorder() const
- {
- return mpFillGradientAttribute->getBorder();
- }
-
- double FillGradientAttribute::getOffsetX() const
- {
- return mpFillGradientAttribute->getOffsetX();
- }
-
- double FillGradientAttribute::getOffsetY() const
- {
- return mpFillGradientAttribute->getOffsetY();
- }
-
- double FillGradientAttribute::getAngle() const
- {
- return mpFillGradientAttribute->getAngle();
- }
-
- GradientStyle FillGradientAttribute::getStyle() const
- {
- return mpFillGradientAttribute->getStyle();
- }
-
- sal_uInt16 FillGradientAttribute::getSteps() const
- {
- return mpFillGradientAttribute->getSteps();
- }
-
- } // end of namespace attribute
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/attribute/fillhatchattribute.cxx b/drawinglayer/source/attribute/fillhatchattribute.cxx
deleted file mode 100644
index e3f0070507..0000000000
--- a/drawinglayer/source/attribute/fillhatchattribute.cxx
+++ /dev/null
@@ -1,216 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * The Contents of this file are made available subject to
- * the terms of GNU Lesser General Public License Version 2.1.
- *
- *
- * GNU Lesser General Public License Version 2.1
- * =============================================
- * Copyright 2005 by Sun Microsystems, Inc.
- * 901 San Antonio Road, Palo Alto, CA 94303, USA
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License version 2.1, as published by the Free Software Foundation.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/attribute/fillhatchattribute.hxx>
-#include <basegfx/color/bcolor.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace attribute
- {
- class ImpFillHatchAttribute
- {
- public:
- // refcounter
- sal_uInt32 mnRefCount;
-
- // data definitions
- HatchStyle meStyle;
- double mfDistance;
- double mfAngle;
- basegfx::BColor maColor;
-
- // bitfield
- unsigned mbFillBackground : 1;
-
- ImpFillHatchAttribute(
- HatchStyle eStyle,
- double fDistance,
- double fAngle,
- const basegfx::BColor& rColor,
- bool bFillBackground)
- : mnRefCount(0),
- meStyle(eStyle),
- mfDistance(fDistance),
- mfAngle(fAngle),
- maColor(rColor),
- mbFillBackground(bFillBackground)
- {
- }
-
- // data read access
- HatchStyle getStyle() const { return meStyle; }
- double getDistance() const { return mfDistance; }
- double getAngle() const { return mfAngle; }
- const basegfx::BColor& getColor() const { return maColor; }
- bool isFillBackground() const { return mbFillBackground; }
-
- bool operator==(const ImpFillHatchAttribute& rCandidate) const
- {
- return (getStyle() == rCandidate.getStyle()
- && getDistance() == rCandidate.getDistance()
- && getAngle() == rCandidate.getAngle()
- && getColor() == rCandidate.getColor()
- && isFillBackground() == rCandidate.isFillBackground());
- }
-
- static ImpFillHatchAttribute* get_global_default()
- {
- static ImpFillHatchAttribute* pDefault = 0;
-
- if(!pDefault)
- {
- pDefault = new ImpFillHatchAttribute(
- HATCHSTYLE_SINGLE,
- 0.0, 0.0,
- basegfx::BColor(),
- false);
-
- // never delete; start with RefCount 1, not 0
- pDefault->mnRefCount++;
- }
-
- return pDefault;
- }
- };
-
- FillHatchAttribute::FillHatchAttribute(
- HatchStyle eStyle,
- double fDistance,
- double fAngle,
- const basegfx::BColor& rColor,
- bool bFillBackground)
- : mpFillHatchAttribute(new ImpFillHatchAttribute(
- eStyle, fDistance, fAngle, rColor, bFillBackground))
- {
- }
-
- FillHatchAttribute::FillHatchAttribute()
- : mpFillHatchAttribute(ImpFillHatchAttribute::get_global_default())
- {
- mpFillHatchAttribute->mnRefCount++;
- }
-
- FillHatchAttribute::FillHatchAttribute(const FillHatchAttribute& rCandidate)
- : mpFillHatchAttribute(rCandidate.mpFillHatchAttribute)
- {
- mpFillHatchAttribute->mnRefCount++;
- }
-
- FillHatchAttribute::~FillHatchAttribute()
- {
- if(mpFillHatchAttribute->mnRefCount)
- {
- mpFillHatchAttribute->mnRefCount--;
- }
- else
- {
- delete mpFillHatchAttribute;
- }
- }
-
- bool FillHatchAttribute::isDefault() const
- {
- return mpFillHatchAttribute == ImpFillHatchAttribute::get_global_default();
- }
-
- FillHatchAttribute& FillHatchAttribute::operator=(const FillHatchAttribute& rCandidate)
- {
- if(rCandidate.mpFillHatchAttribute != mpFillHatchAttribute)
- {
- if(mpFillHatchAttribute->mnRefCount)
- {
- mpFillHatchAttribute->mnRefCount--;
- }
- else
- {
- delete mpFillHatchAttribute;
- }
-
- mpFillHatchAttribute = rCandidate.mpFillHatchAttribute;
- mpFillHatchAttribute->mnRefCount++;
- }
-
- return *this;
- }
-
- bool FillHatchAttribute::operator==(const FillHatchAttribute& rCandidate) const
- {
- if(rCandidate.mpFillHatchAttribute == mpFillHatchAttribute)
- {
- return true;
- }
-
- if(rCandidate.isDefault() != isDefault())
- {
- return false;
- }
-
- return (*rCandidate.mpFillHatchAttribute == *mpFillHatchAttribute);
- }
-
- // data read access
- HatchStyle FillHatchAttribute::getStyle() const
- {
- return mpFillHatchAttribute->getStyle();
- }
-
- double FillHatchAttribute::getDistance() const
- {
- return mpFillHatchAttribute->getDistance();
- }
-
- double FillHatchAttribute::getAngle() const
- {
- return mpFillHatchAttribute->getAngle();
- }
-
- const basegfx::BColor& FillHatchAttribute::getColor() const
- {
- return mpFillHatchAttribute->getColor();
- }
-
- bool FillHatchAttribute::isFillBackground() const
- {
- return mpFillHatchAttribute->isFillBackground();
- }
-
- } // end of namespace attribute
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/attribute/fontattribute.cxx b/drawinglayer/source/attribute/fontattribute.cxx
deleted file mode 100644
index 8f8d42a8af..0000000000
--- a/drawinglayer/source/attribute/fontattribute.cxx
+++ /dev/null
@@ -1,268 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/attribute/fontattribute.hxx>
-#include <tools/string.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace attribute
- {
- class ImpFontAttribute
- {
- public:
- // refcounter
- sal_uInt32 mnRefCount;
-
- /// core data
- String maFamilyName; // Font Family Name
- String maStyleName; // Font Style Name
- sal_uInt16 mnWeight; // Font weight
-
- /// bitfield
- unsigned mbSymbol : 1; // Symbol Font Flag
- unsigned mbVertical : 1; // Vertical Text Flag
- unsigned mbItalic : 1; // Italic Flag
- unsigned mbOutline : 1; // Outline Flag
- unsigned mbRTL : 1; // RTL Flag
- unsigned mbBiDiStrong : 1; // BiDi Flag
- unsigned mbMonospaced : 1;
-
- ImpFontAttribute(
- const String& rFamilyName,
- const String& rStyleName,
- sal_uInt16 nWeight,
- bool bSymbol,
- bool bVertical,
- bool bItalic,
- bool bMonospaced,
- bool bOutline,
- bool bRTL,
- bool bBiDiStrong)
- : mnRefCount(0),
- maFamilyName(rFamilyName),
- maStyleName(rStyleName),
- mnWeight(nWeight),
- mbSymbol(bSymbol),
- mbVertical(bVertical),
- mbItalic(bItalic),
- mbOutline(bOutline),
- mbRTL(bRTL),
- mbBiDiStrong(bBiDiStrong),
- mbMonospaced(bMonospaced)
- {
- }
-
- // data read access
- const String& getFamilyName() const { return maFamilyName; }
- const String& getStyleName() const { return maStyleName; }
- sal_uInt16 getWeight() const { return mnWeight; }
- bool getSymbol() const { return mbSymbol; }
- bool getVertical() const { return mbVertical; }
- bool getItalic() const { return mbItalic; }
- bool getOutline() const { return mbOutline; }
- bool getRTL() const { return mbRTL; }
- bool getBiDiStrong() const { return mbBiDiStrong; }
- bool getMonospaced() const { return mbMonospaced; }
-
- bool operator==(const ImpFontAttribute& rCompare) const
- {
- return (getFamilyName() == rCompare.getFamilyName()
- && getStyleName() == rCompare.getStyleName()
- && getWeight() == rCompare.getWeight()
- && getSymbol() == rCompare.getSymbol()
- && getVertical() == rCompare.getVertical()
- && getItalic() == rCompare.getItalic()
- && getOutline() == rCompare.getOutline()
- && getRTL() == rCompare.getRTL()
- && getBiDiStrong() == rCompare.getBiDiStrong()
- && getMonospaced() == rCompare.getMonospaced());
- }
-
- static ImpFontAttribute* get_global_default()
- {
- static ImpFontAttribute* pDefault = 0;
-
- if(!pDefault)
- {
- pDefault = new ImpFontAttribute(
- String(), String(),
- 0,
- false, false, false, false, false, false, false);
-
- // never delete; start with RefCount 1, not 0
- pDefault->mnRefCount++;
- }
-
- return pDefault;
- }
- };
-
- FontAttribute::FontAttribute(
- const String& rFamilyName,
- const String& rStyleName,
- sal_uInt16 nWeight,
- bool bSymbol,
- bool bVertical,
- bool bItalic,
- bool bMonospaced,
- bool bOutline,
- bool bRTL,
- bool bBiDiStrong)
- : mpFontAttribute(new ImpFontAttribute(
- rFamilyName, rStyleName, nWeight, bSymbol, bVertical, bItalic, bMonospaced, bOutline, bRTL, bBiDiStrong))
- {
- }
-
- FontAttribute::FontAttribute()
- : mpFontAttribute(ImpFontAttribute::get_global_default())
- {
- mpFontAttribute->mnRefCount++;
- }
-
- FontAttribute::FontAttribute(const FontAttribute& rCandidate)
- : mpFontAttribute(rCandidate.mpFontAttribute)
- {
- mpFontAttribute->mnRefCount++;
- }
-
- FontAttribute::~FontAttribute()
- {
- if(mpFontAttribute->mnRefCount)
- {
- mpFontAttribute->mnRefCount--;
- }
- else
- {
- delete mpFontAttribute;
- }
- }
-
- bool FontAttribute::isDefault() const
- {
- return mpFontAttribute == ImpFontAttribute::get_global_default();
- }
-
- FontAttribute& FontAttribute::operator=(const FontAttribute& rCandidate)
- {
- if(rCandidate.mpFontAttribute != mpFontAttribute)
- {
- if(mpFontAttribute->mnRefCount)
- {
- mpFontAttribute->mnRefCount--;
- }
- else
- {
- delete mpFontAttribute;
- }
-
- mpFontAttribute = rCandidate.mpFontAttribute;
- mpFontAttribute->mnRefCount++;
- }
-
- return *this;
- }
-
- bool FontAttribute::operator==(const FontAttribute& rCandidate) const
- {
- if(rCandidate.mpFontAttribute == mpFontAttribute)
- {
- return true;
- }
-
- if(rCandidate.isDefault() != isDefault())
- {
- return false;
- }
-
- return (*rCandidate.mpFontAttribute == *mpFontAttribute);
- }
-
- const String& FontAttribute::getFamilyName() const
- {
- return mpFontAttribute->getFamilyName();
- }
-
- const String& FontAttribute::getStyleName() const
- {
- return mpFontAttribute->getStyleName();
- }
-
- sal_uInt16 FontAttribute::getWeight() const
- {
- return mpFontAttribute->getWeight();
- }
-
- bool FontAttribute::getSymbol() const
- {
- return mpFontAttribute->getSymbol();
- }
-
- bool FontAttribute::getVertical() const
- {
- return mpFontAttribute->getVertical();
- }
-
- bool FontAttribute::getItalic() const
- {
- return mpFontAttribute->getItalic();
- }
-
- bool FontAttribute::getOutline() const
- {
- return mpFontAttribute->getOutline();
- }
-
- bool FontAttribute::getRTL() const
- {
- return mpFontAttribute->getRTL();
- }
-
- bool FontAttribute::getBiDiStrong() const
- {
- return mpFontAttribute->getBiDiStrong();
- }
-
- bool FontAttribute::getMonospaced() const
- {
- return mpFontAttribute->getMonospaced();
- }
-
-
- } // end of namespace attribute
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/attribute/lineattribute.cxx b/drawinglayer/source/attribute/lineattribute.cxx
deleted file mode 100644
index 30646cc692..0000000000
--- a/drawinglayer/source/attribute/lineattribute.cxx
+++ /dev/null
@@ -1,188 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/attribute/lineattribute.hxx>
-#include <basegfx/color/bcolor.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace attribute
- {
- class ImpLineAttribute
- {
- public:
- // refcounter
- sal_uInt32 mnRefCount;
-
- // data definitions
- basegfx::BColor maColor; // color
- double mfWidth; // absolute line width
- basegfx::B2DLineJoin meLineJoin; // type of LineJoin
-
- ImpLineAttribute(
- const basegfx::BColor& rColor,
- double fWidth,
- basegfx::B2DLineJoin aB2DLineJoin)
- : mnRefCount(0),
- maColor(rColor),
- mfWidth(fWidth),
- meLineJoin(aB2DLineJoin)
- {
- }
-
- // data read access
- const basegfx::BColor& getColor() const { return maColor; }
- double getWidth() const { return mfWidth; }
- basegfx::B2DLineJoin getLineJoin() const { return meLineJoin; }
-
- bool operator==(const ImpLineAttribute& rCandidate) const
- {
- return (getColor() == rCandidate.getColor()
- && getWidth() == rCandidate.getWidth()
- && getLineJoin() == rCandidate.getLineJoin());
- }
-
- static ImpLineAttribute* get_global_default()
- {
- static ImpLineAttribute* pDefault = 0;
-
- if(!pDefault)
- {
- pDefault = new ImpLineAttribute(
- basegfx::BColor(),
- 0.0,
- basegfx::B2DLINEJOIN_ROUND);
-
- // never delete; start with RefCount 1, not 0
- pDefault->mnRefCount++;
- }
-
- return pDefault;
- }
- };
-
- LineAttribute::LineAttribute(
- const basegfx::BColor& rColor,
- double fWidth,
- basegfx::B2DLineJoin aB2DLineJoin)
- : mpLineAttribute(new ImpLineAttribute(
- rColor, fWidth, aB2DLineJoin))
- {
- }
-
- LineAttribute::LineAttribute()
- : mpLineAttribute(ImpLineAttribute::get_global_default())
- {
- mpLineAttribute->mnRefCount++;
- }
-
- LineAttribute::LineAttribute(const LineAttribute& rCandidate)
- : mpLineAttribute(rCandidate.mpLineAttribute)
- {
- mpLineAttribute->mnRefCount++;
- }
-
- LineAttribute::~LineAttribute()
- {
- if(mpLineAttribute->mnRefCount)
- {
- mpLineAttribute->mnRefCount--;
- }
- else
- {
- delete mpLineAttribute;
- }
- }
-
- bool LineAttribute::isDefault() const
- {
- return mpLineAttribute == ImpLineAttribute::get_global_default();
- }
-
- LineAttribute& LineAttribute::operator=(const LineAttribute& rCandidate)
- {
- if(rCandidate.mpLineAttribute != mpLineAttribute)
- {
- if(mpLineAttribute->mnRefCount)
- {
- mpLineAttribute->mnRefCount--;
- }
- else
- {
- delete mpLineAttribute;
- }
-
- mpLineAttribute = rCandidate.mpLineAttribute;
- mpLineAttribute->mnRefCount++;
- }
-
- return *this;
- }
-
- bool LineAttribute::operator==(const LineAttribute& rCandidate) const
- {
- if(rCandidate.mpLineAttribute == mpLineAttribute)
- {
- return true;
- }
-
- if(rCandidate.isDefault() != isDefault())
- {
- return false;
- }
-
- return (*rCandidate.mpLineAttribute == *mpLineAttribute);
- }
-
- const basegfx::BColor& LineAttribute::getColor() const
- {
- return mpLineAttribute->getColor();
- }
-
- double LineAttribute::getWidth() const
- {
- return mpLineAttribute->getWidth();
- }
-
- basegfx::B2DLineJoin LineAttribute::getLineJoin() const
- {
- return mpLineAttribute->getLineJoin();
- }
-
- } // end of namespace attribute
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/attribute/linestartendattribute.cxx b/drawinglayer/source/attribute/linestartendattribute.cxx
deleted file mode 100644
index 615aef0cab..0000000000
--- a/drawinglayer/source/attribute/linestartendattribute.cxx
+++ /dev/null
@@ -1,197 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/attribute/linestartendattribute.hxx>
-#include <basegfx/polygon/b2dpolygon.hxx>
-#include <basegfx/polygon/b2dpolypolygon.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace attribute
- {
- class ImpLineStartEndAttribute
- {
- public:
- // refcounter
- sal_uInt32 mnRefCount;
-
- // data definitions
- double mfWidth; // absolute line StartEndGeometry base width
- basegfx::B2DPolyPolygon maPolyPolygon; // the StartEndGeometry PolyPolygon
-
- // bitfield
- unsigned mbCentered : 1; // use centered to ineStart/End point?
-
- ImpLineStartEndAttribute(
- double fWidth,
- const basegfx::B2DPolyPolygon& rPolyPolygon,
- bool bCentered)
- : mnRefCount(0),
- mfWidth(fWidth),
- maPolyPolygon(rPolyPolygon),
- mbCentered(bCentered)
- {
- }
-
- // data read access
- double getWidth() const { return mfWidth; }
- const basegfx::B2DPolyPolygon& getB2DPolyPolygon() const { return maPolyPolygon; }
- bool isCentered() const { return mbCentered; }
-
- bool operator==(const ImpLineStartEndAttribute& rCandidate) const
- {
- return (basegfx::fTools::equal(getWidth(), rCandidate.getWidth())
- && getB2DPolyPolygon() == rCandidate.getB2DPolyPolygon()
- && isCentered() == rCandidate.isCentered());
- }
-
- static ImpLineStartEndAttribute* get_global_default()
- {
- static ImpLineStartEndAttribute* pDefault = 0;
-
- if(!pDefault)
- {
- pDefault = new ImpLineStartEndAttribute(
- 0.0,
- basegfx::B2DPolyPolygon(),
- false);
-
- // never delete; start with RefCount 1, not 0
- pDefault->mnRefCount++;
- }
-
- return pDefault;
- }
- };
-
- LineStartEndAttribute::LineStartEndAttribute(
- double fWidth,
- const basegfx::B2DPolyPolygon& rPolyPolygon,
- bool bCentered)
- : mpLineStartEndAttribute(new ImpLineStartEndAttribute(
- fWidth, rPolyPolygon, bCentered))
- {
- }
-
- LineStartEndAttribute::LineStartEndAttribute()
- : mpLineStartEndAttribute(ImpLineStartEndAttribute::get_global_default())
- {
- mpLineStartEndAttribute->mnRefCount++;
- }
-
- LineStartEndAttribute::LineStartEndAttribute(const LineStartEndAttribute& rCandidate)
- : mpLineStartEndAttribute(rCandidate.mpLineStartEndAttribute)
- {
- mpLineStartEndAttribute->mnRefCount++;
- }
-
- LineStartEndAttribute::~LineStartEndAttribute()
- {
- if(mpLineStartEndAttribute->mnRefCount)
- {
- mpLineStartEndAttribute->mnRefCount--;
- }
- else
- {
- delete mpLineStartEndAttribute;
- }
- }
-
- bool LineStartEndAttribute::isDefault() const
- {
- return mpLineStartEndAttribute == ImpLineStartEndAttribute::get_global_default();
- }
-
- LineStartEndAttribute& LineStartEndAttribute::operator=(const LineStartEndAttribute& rCandidate)
- {
- if(rCandidate.mpLineStartEndAttribute != mpLineStartEndAttribute)
- {
- if(mpLineStartEndAttribute->mnRefCount)
- {
- mpLineStartEndAttribute->mnRefCount--;
- }
- else
- {
- delete mpLineStartEndAttribute;
- }
-
- mpLineStartEndAttribute = rCandidate.mpLineStartEndAttribute;
- mpLineStartEndAttribute->mnRefCount++;
- }
-
- return *this;
- }
-
- bool LineStartEndAttribute::operator==(const LineStartEndAttribute& rCandidate) const
- {
- if(rCandidate.mpLineStartEndAttribute == mpLineStartEndAttribute)
- {
- return true;
- }
-
- if(rCandidate.isDefault() != isDefault())
- {
- return false;
- }
-
- return (*rCandidate.mpLineStartEndAttribute == *mpLineStartEndAttribute);
- }
-
- double LineStartEndAttribute::getWidth() const
- {
- return mpLineStartEndAttribute->getWidth();
- }
-
- const basegfx::B2DPolyPolygon& LineStartEndAttribute::getB2DPolyPolygon() const
- {
- return mpLineStartEndAttribute->getB2DPolyPolygon();
- }
-
- bool LineStartEndAttribute::isCentered() const
- {
- return mpLineStartEndAttribute->isCentered();
- }
-
- bool LineStartEndAttribute::isActive() const
- {
- return (0.0 != getWidth()
- && 0 != getB2DPolyPolygon().count()
- && 0 != getB2DPolyPolygon().getB2DPolygon(0).count());
- }
- } // end of namespace attribute
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/attribute/materialattribute3d.cxx b/drawinglayer/source/attribute/materialattribute3d.cxx
deleted file mode 100644
index 71486765ea..0000000000
--- a/drawinglayer/source/attribute/materialattribute3d.cxx
+++ /dev/null
@@ -1,210 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/attribute/materialattribute3d.hxx>
-#include <basegfx/color/bcolor.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace attribute
- {
- class ImpMaterialAttribute3D
- {
- public:
- // refcounter
- sal_uInt32 mnRefCount;
-
- // materialAttribute3D definitions
- basegfx::BColor maColor; // object color
- basegfx::BColor maSpecular; // material specular color
- basegfx::BColor maEmission; // material emissive color
- sal_uInt16 mnSpecularIntensity; // material specular intensity [0..128]
-
- ImpMaterialAttribute3D(const basegfx::BColor& rColor, const basegfx::BColor& rSpecular, const basegfx::BColor& rEmission, sal_uInt16 nSpecularIntensity)
- : mnRefCount(0),
- maColor(rColor),
- maSpecular(rSpecular),
- maEmission(rEmission),
- mnSpecularIntensity(nSpecularIntensity)
- {
- }
-
- ImpMaterialAttribute3D(const basegfx::BColor& rColor)
- : mnRefCount(0),
- maColor(rColor),
- maSpecular(1.0, 1.0, 1.0),
- maEmission(),
- mnSpecularIntensity(15)
- {
- }
-
- // data read access
- const basegfx::BColor& getColor() const { return maColor; }
- const basegfx::BColor& getSpecular() const { return maSpecular; }
- const basegfx::BColor& getEmission() const { return maEmission; }
- sal_uInt16 getSpecularIntensity() const { return mnSpecularIntensity; }
-
- bool operator==(const ImpMaterialAttribute3D& rCandidate) const
- {
- return (getColor() == rCandidate.getColor()
- && getSpecular() == rCandidate.getSpecular()
- && getEmission() == rCandidate.getEmission()
- && getSpecularIntensity() == rCandidate.getSpecularIntensity());
- }
-
- static ImpMaterialAttribute3D* get_global_default()
- {
- static ImpMaterialAttribute3D* pDefault = 0;
-
- if(!pDefault)
- {
- pDefault = new ImpMaterialAttribute3D(
- basegfx::BColor(),
- basegfx::BColor(),
- basegfx::BColor(),
- 0);
-
- // never delete; start with RefCount 1, not 0
- pDefault->mnRefCount++;
- }
-
- return pDefault;
- }
- };
-
- MaterialAttribute3D::MaterialAttribute3D(
- const basegfx::BColor& rColor,
- const basegfx::BColor& rSpecular,
- const basegfx::BColor& rEmission,
- sal_uInt16 nSpecularIntensity)
- : mpMaterialAttribute3D(new ImpMaterialAttribute3D(
- rColor, rSpecular, rEmission, nSpecularIntensity))
- {
- }
-
- MaterialAttribute3D::MaterialAttribute3D(
- const basegfx::BColor& rColor)
- : mpMaterialAttribute3D(new ImpMaterialAttribute3D(rColor))
- {
- }
-
- MaterialAttribute3D::MaterialAttribute3D()
- : mpMaterialAttribute3D(ImpMaterialAttribute3D::get_global_default())
- {
- mpMaterialAttribute3D->mnRefCount++;
- }
-
- MaterialAttribute3D::MaterialAttribute3D(const MaterialAttribute3D& rCandidate)
- : mpMaterialAttribute3D(rCandidate.mpMaterialAttribute3D)
- {
- mpMaterialAttribute3D->mnRefCount++;
- }
-
- MaterialAttribute3D::~MaterialAttribute3D()
- {
- if(mpMaterialAttribute3D->mnRefCount)
- {
- mpMaterialAttribute3D->mnRefCount--;
- }
- else
- {
- delete mpMaterialAttribute3D;
- }
- }
-
- bool MaterialAttribute3D::isDefault() const
- {
- return mpMaterialAttribute3D == ImpMaterialAttribute3D::get_global_default();
- }
-
- MaterialAttribute3D& MaterialAttribute3D::operator=(const MaterialAttribute3D& rCandidate)
- {
- if(rCandidate.mpMaterialAttribute3D != mpMaterialAttribute3D)
- {
- if(mpMaterialAttribute3D->mnRefCount)
- {
- mpMaterialAttribute3D->mnRefCount--;
- }
- else
- {
- delete mpMaterialAttribute3D;
- }
-
- mpMaterialAttribute3D = rCandidate.mpMaterialAttribute3D;
- mpMaterialAttribute3D->mnRefCount++;
- }
-
- return *this;
- }
-
- bool MaterialAttribute3D::operator==(const MaterialAttribute3D& rCandidate) const
- {
- if(rCandidate.mpMaterialAttribute3D == mpMaterialAttribute3D)
- {
- return true;
- }
-
- if(rCandidate.isDefault() != isDefault())
- {
- return false;
- }
-
- return (*rCandidate.mpMaterialAttribute3D == *mpMaterialAttribute3D);
- }
-
- const basegfx::BColor& MaterialAttribute3D::getColor() const
- {
- return mpMaterialAttribute3D->getColor();
- }
-
- const basegfx::BColor& MaterialAttribute3D::getSpecular() const
- {
- return mpMaterialAttribute3D->getSpecular();
- }
-
- const basegfx::BColor& MaterialAttribute3D::getEmission() const
- {
- return mpMaterialAttribute3D->getEmission();
- }
-
- sal_uInt16 MaterialAttribute3D::getSpecularIntensity() const
- {
- return mpMaterialAttribute3D->getSpecularIntensity();
- }
- } // end of namespace attribute
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/attribute/sdrallattribute3d.cxx b/drawinglayer/source/attribute/sdrallattribute3d.cxx
deleted file mode 100644
index a5daed92ad..0000000000
--- a/drawinglayer/source/attribute/sdrallattribute3d.cxx
+++ /dev/null
@@ -1,86 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/attribute/sdrallattribute3d.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace attribute
- {
- SdrLineFillShadowAttribute3D::SdrLineFillShadowAttribute3D(
- const SdrLineAttribute& rLine,
- const SdrFillAttribute& rFill,
- const SdrLineStartEndAttribute& rLineStartEnd,
- const SdrShadowAttribute& rShadow,
- const FillGradientAttribute& rFillFloatTransGradient)
- : maLine(rLine),
- maFill(rFill),
- maLineStartEnd(rLineStartEnd),
- maShadow(rShadow),
- maFillFloatTransGradient(rFillFloatTransGradient)
- {
- }
-
- SdrLineFillShadowAttribute3D::SdrLineFillShadowAttribute3D()
- : maLine(),
- maFill(),
- maLineStartEnd(),
- maShadow(),
- maFillFloatTransGradient()
- {
- }
-
- bool SdrLineFillShadowAttribute3D::isDefault() const
- {
- return(getLine().isDefault()
- && getFill().isDefault()
- && getLineStartEnd().isDefault()
- && getShadow().isDefault()
- && getFillFloatTransGradient().isDefault());
- }
-
- bool SdrLineFillShadowAttribute3D::operator==(const SdrLineFillShadowAttribute3D& rCandidate) const
- {
- return(getLine() == rCandidate.getLine()
- && getFill() == rCandidate.getFill()
- && getLineStartEnd() == rCandidate.getLineStartEnd()
- && getShadow() == rCandidate.getShadow()
- && getFillFloatTransGradient() == rCandidate.getFillFloatTransGradient());
- }
- } // end of namespace overlay
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/attribute/sdrfillattribute.cxx b/drawinglayer/source/attribute/sdrfillattribute.cxx
deleted file mode 100644
index 0f72925676..0000000000
--- a/drawinglayer/source/attribute/sdrfillattribute.cxx
+++ /dev/null
@@ -1,218 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * The Contents of this file are made available subject to
- * the terms of GNU Lesser General Public License Version 2.1.
- *
- *
- * GNU Lesser General Public License Version 2.1
- * =============================================
- * Copyright 2005 by Sun Microsystems, Inc.
- * 901 San Antonio Road, Palo Alto, CA 94303, USA
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License version 2.1, as published by the Free Software Foundation.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/attribute/sdrfillattribute.hxx>
-#include <basegfx/color/bcolor.hxx>
-#include <drawinglayer/attribute/sdrfillbitmapattribute.hxx>
-#include <drawinglayer/attribute/fillhatchattribute.hxx>
-#include <drawinglayer/attribute/fillgradientattribute.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace attribute
- {
- class ImpSdrFillAttribute
- {
- public:
- // refcounter
- sal_uInt32 mnRefCount;
-
- // fill definitions
- double mfTransparence; // [0.0 .. 1.0], 0.0==no transp.
- basegfx::BColor maColor; // fill color
- FillGradientAttribute maGradient; // fill gradient (if used)
- FillHatchAttribute maHatch; // fill hatch (if used)
- SdrFillBitmapAttribute maBitmap; // fill bitmap (if used)
-
- public:
- ImpSdrFillAttribute(
- double fTransparence,
- const basegfx::BColor& rColor,
- const FillGradientAttribute& rGradient,
- const FillHatchAttribute& rHatch,
- const SdrFillBitmapAttribute& rBitmap)
- : mnRefCount(0),
- mfTransparence(fTransparence),
- maColor(rColor),
- maGradient(rGradient),
- maHatch(rHatch),
- maBitmap(rBitmap)
- {
- }
-
- // data read access
- double getTransparence() const { return mfTransparence; }
- const basegfx::BColor& getColor() const { return maColor; }
- const FillGradientAttribute& getGradient() const { return maGradient; }
- const FillHatchAttribute& getHatch() const { return maHatch; }
- const SdrFillBitmapAttribute& getBitmap() const { return maBitmap; }
-
- // compare operator
- bool operator==(const ImpSdrFillAttribute& rCandidate) const
- {
- return(getTransparence() == rCandidate.getTransparence()
- && getColor() == rCandidate.getColor()
- && getGradient() == rCandidate.getGradient()
- && getHatch() == rCandidate.getHatch()
- && getBitmap() == rCandidate.getBitmap());
- }
-
- static ImpSdrFillAttribute* get_global_default()
- {
- static ImpSdrFillAttribute* pDefault = 0;
-
- if(!pDefault)
- {
- pDefault = new ImpSdrFillAttribute(
- 0.0,
- basegfx::BColor(),
- FillGradientAttribute(),
- FillHatchAttribute(),
- SdrFillBitmapAttribute());
-
- // never delete; start with RefCount 1, not 0
- pDefault->mnRefCount++;
- }
-
- return pDefault;
- }
- };
-
- SdrFillAttribute::SdrFillAttribute(
- double fTransparence,
- const basegfx::BColor& rColor,
- const FillGradientAttribute& rGradient,
- const FillHatchAttribute& rHatch,
- const SdrFillBitmapAttribute& rBitmap)
- : mpSdrFillAttribute(new ImpSdrFillAttribute(
- fTransparence, rColor, rGradient, rHatch, rBitmap))
- {
- }
-
- SdrFillAttribute::SdrFillAttribute()
- : mpSdrFillAttribute(ImpSdrFillAttribute::get_global_default())
- {
- mpSdrFillAttribute->mnRefCount++;
- }
-
- SdrFillAttribute::SdrFillAttribute(const SdrFillAttribute& rCandidate)
- : mpSdrFillAttribute(rCandidate.mpSdrFillAttribute)
- {
- mpSdrFillAttribute->mnRefCount++;
- }
-
- SdrFillAttribute::~SdrFillAttribute()
- {
- if(mpSdrFillAttribute->mnRefCount)
- {
- mpSdrFillAttribute->mnRefCount--;
- }
- else
- {
- delete mpSdrFillAttribute;
- }
- }
-
- bool SdrFillAttribute::isDefault() const
- {
- return mpSdrFillAttribute == ImpSdrFillAttribute::get_global_default();
- }
-
- SdrFillAttribute& SdrFillAttribute::operator=(const SdrFillAttribute& rCandidate)
- {
- if(rCandidate.mpSdrFillAttribute != mpSdrFillAttribute)
- {
- if(mpSdrFillAttribute->mnRefCount)
- {
- mpSdrFillAttribute->mnRefCount--;
- }
- else
- {
- delete mpSdrFillAttribute;
- }
-
- mpSdrFillAttribute = rCandidate.mpSdrFillAttribute;
- mpSdrFillAttribute->mnRefCount++;
- }
-
- return *this;
- }
-
- bool SdrFillAttribute::operator==(const SdrFillAttribute& rCandidate) const
- {
- if(rCandidate.mpSdrFillAttribute == mpSdrFillAttribute)
- {
- return true;
- }
-
- if(rCandidate.isDefault() != isDefault())
- {
- return false;
- }
-
- return (*rCandidate.mpSdrFillAttribute == *mpSdrFillAttribute);
- }
-
- double SdrFillAttribute::getTransparence() const
- {
- return mpSdrFillAttribute->getTransparence();
- }
-
- const basegfx::BColor& SdrFillAttribute::getColor() const
- {
- return mpSdrFillAttribute->getColor();
- }
-
- const FillGradientAttribute& SdrFillAttribute::getGradient() const
- {
- return mpSdrFillAttribute->getGradient();
- }
-
- const FillHatchAttribute& SdrFillAttribute::getHatch() const
- {
- return mpSdrFillAttribute->getHatch();
- }
-
- const SdrFillBitmapAttribute& SdrFillAttribute::getBitmap() const
- {
- return mpSdrFillAttribute->getBitmap();
- }
- } // end of namespace attribute
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/attribute/sdrfillbitmapattribute.cxx b/drawinglayer/source/attribute/sdrfillbitmapattribute.cxx
deleted file mode 100644
index 3ef2c572a6..0000000000
--- a/drawinglayer/source/attribute/sdrfillbitmapattribute.cxx
+++ /dev/null
@@ -1,407 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/attribute/sdrfillbitmapattribute.hxx>
-#include <drawinglayer/attribute/fillbitmapattribute.hxx>
-#include <vcl/bitmapex.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace attribute
- {
- class ImpSdrFillBitmapAttribute
- {
- public:
- // refcounter
- sal_uInt32 mnRefCount;
-
- // data definitions
- Bitmap maBitmap;
- basegfx::B2DVector maSize;
- basegfx::B2DVector maOffset;
- basegfx::B2DVector maOffsetPosition;
- basegfx::B2DVector maRectPoint;
-
- // bitfield
- unsigned mbTiling : 1;
- unsigned mbStretch : 1;
- unsigned mbLogSize : 1;
-
- ImpSdrFillBitmapAttribute(
- const Bitmap& rBitmap,
- const basegfx::B2DVector& rSize,
- const basegfx::B2DVector& rOffset,
- const basegfx::B2DVector& rOffsetPosition,
- const basegfx::B2DVector& rRectPoint,
- bool bTiling,
- bool bStretch,
- bool bLogSize)
- : mnRefCount(0),
- maBitmap(rBitmap),
- maSize(rSize),
- maOffset(rOffset),
- maOffsetPosition(rOffsetPosition),
- maRectPoint(rRectPoint),
- mbTiling(bTiling),
- mbStretch(bStretch),
- mbLogSize(bLogSize)
- {
- }
-
- // data read access
- const Bitmap& getBitmap() const { return maBitmap; }
- const basegfx::B2DVector& getSize() const { return maSize; }
- const basegfx::B2DVector& getOffset() const { return maOffset; }
- const basegfx::B2DVector& getOffsetPosition() const { return maOffsetPosition; }
- const basegfx::B2DVector& getRectPoint() const { return maRectPoint; }
- bool getTiling() const { return mbTiling; }
- bool getStretch() const { return mbStretch; }
- bool getLogSize() const { return mbLogSize; }
-
- bool operator==(const ImpSdrFillBitmapAttribute& rCandidate) const
- {
- return (getBitmap() == rCandidate.getBitmap()
- && getSize() == rCandidate.getSize()
- && getOffset() == rCandidate.getOffset()
- && getOffsetPosition() == rCandidate.getOffsetPosition()
- && getRectPoint() == rCandidate.getRectPoint()
- && getTiling() == rCandidate.getTiling()
- && getStretch() == rCandidate.getStretch()
- && getLogSize() == rCandidate.getLogSize());
- }
-
- static ImpSdrFillBitmapAttribute* get_global_default()
- {
- static ImpSdrFillBitmapAttribute* pDefault = 0;
-
- if(!pDefault)
- {
- pDefault = new ImpSdrFillBitmapAttribute(
- Bitmap(),
- basegfx::B2DVector(),
- basegfx::B2DVector(),
- basegfx::B2DVector(),
- basegfx::B2DVector(),
- false,
- false,
- false);
-
- // never delete; start with RefCount 1, not 0
- pDefault->mnRefCount++;
- }
-
- return pDefault;
- }
- };
-
- SdrFillBitmapAttribute::SdrFillBitmapAttribute(
- const Bitmap& rBitmap,
- const basegfx::B2DVector& rSize,
- const basegfx::B2DVector& rOffset,
- const basegfx::B2DVector& rOffsetPosition,
- const basegfx::B2DVector& rRectPoint,
- bool bTiling,
- bool bStretch,
- bool bLogSize)
- : mpSdrFillBitmapAttribute(new ImpSdrFillBitmapAttribute(
- rBitmap, rSize, rOffset, rOffsetPosition, rRectPoint, bTiling, bStretch, bLogSize))
- {
- }
-
- SdrFillBitmapAttribute::SdrFillBitmapAttribute()
- : mpSdrFillBitmapAttribute(ImpSdrFillBitmapAttribute::get_global_default())
- {
- mpSdrFillBitmapAttribute->mnRefCount++;
- }
-
- SdrFillBitmapAttribute::SdrFillBitmapAttribute(const SdrFillBitmapAttribute& rCandidate)
- : mpSdrFillBitmapAttribute(rCandidate.mpSdrFillBitmapAttribute)
- {
- mpSdrFillBitmapAttribute->mnRefCount++;
- }
-
- SdrFillBitmapAttribute::~SdrFillBitmapAttribute()
- {
- if(mpSdrFillBitmapAttribute->mnRefCount)
- {
- mpSdrFillBitmapAttribute->mnRefCount--;
- }
- else
- {
- delete mpSdrFillBitmapAttribute;
- }
- }
-
- bool SdrFillBitmapAttribute::isDefault() const
- {
- return mpSdrFillBitmapAttribute == ImpSdrFillBitmapAttribute::get_global_default();
- }
-
- SdrFillBitmapAttribute& SdrFillBitmapAttribute::operator=(const SdrFillBitmapAttribute& rCandidate)
- {
- if(rCandidate.mpSdrFillBitmapAttribute != mpSdrFillBitmapAttribute)
- {
- if(mpSdrFillBitmapAttribute->mnRefCount)
- {
- mpSdrFillBitmapAttribute->mnRefCount--;
- }
- else
- {
- delete mpSdrFillBitmapAttribute;
- }
-
- mpSdrFillBitmapAttribute = rCandidate.mpSdrFillBitmapAttribute;
- mpSdrFillBitmapAttribute->mnRefCount++;
- }
-
- return *this;
- }
-
- bool SdrFillBitmapAttribute::operator==(const SdrFillBitmapAttribute& rCandidate) const
- {
- if(rCandidate.mpSdrFillBitmapAttribute == mpSdrFillBitmapAttribute)
- {
- return true;
- }
-
- if(rCandidate.isDefault() != isDefault())
- {
- return false;
- }
-
- return (*rCandidate.mpSdrFillBitmapAttribute == *mpSdrFillBitmapAttribute);
- }
-
- const Bitmap& SdrFillBitmapAttribute::getBitmap() const
- {
- return mpSdrFillBitmapAttribute->getBitmap();
- }
-
- const basegfx::B2DVector& SdrFillBitmapAttribute::getSize() const
- {
- return mpSdrFillBitmapAttribute->getSize();
- }
-
- const basegfx::B2DVector& SdrFillBitmapAttribute::getOffset() const
- {
- return mpSdrFillBitmapAttribute->getOffset();
- }
-
- const basegfx::B2DVector& SdrFillBitmapAttribute::getOffsetPosition() const
- {
- return mpSdrFillBitmapAttribute->getOffsetPosition();
- }
-
- const basegfx::B2DVector& SdrFillBitmapAttribute::getRectPoint() const
- {
- return mpSdrFillBitmapAttribute->getRectPoint();
- }
-
- bool SdrFillBitmapAttribute::getTiling() const
- {
- return mpSdrFillBitmapAttribute->getTiling();
- }
-
- bool SdrFillBitmapAttribute::getStretch() const
- {
- return mpSdrFillBitmapAttribute->getStretch();
- }
-
- bool SdrFillBitmapAttribute::getLogSize() const
- {
- return mpSdrFillBitmapAttribute->getLogSize();
- }
-
- FillBitmapAttribute SdrFillBitmapAttribute::getFillBitmapAttribute(const basegfx::B2DRange& rRange) const
- {
- // get logical size of bitmap (before expanding eventually)
- Bitmap aBitmap(getBitmap());
- const basegfx::B2DVector aLogicalSize(aBitmap.GetPrefSize().getWidth(), aBitmap.GetPrefSize().getHeight());
-
- // get hor/ver shiftings and apply them eventually to the bitmap, but only
- // when tiling is on
- bool bExpandWidth(false);
- bool bExpandHeight(false);
-
- if(getTiling())
- {
- if(0.0 != getOffset().getX() || 0.0 != getOffset().getY())
- {
- const sal_uInt32 nWidth(aBitmap.GetSizePixel().getWidth());
- const sal_uInt32 nHeight(aBitmap.GetSizePixel().getHeight());
-
- if(0.0 != getOffset().getX())
- {
- bExpandHeight = true;
- const sal_uInt32 nOffset(basegfx::fround(((double)nWidth * getOffset().getX()) / 100.0));
- aBitmap.Expand(0L, nHeight);
-
- const Size aSizeA(nOffset, nHeight);
- const Rectangle aDstA(Point(0L, nHeight), aSizeA);
- const Rectangle aSrcA(Point(nWidth - nOffset, 0L), aSizeA);
- aBitmap.CopyPixel(aDstA, aSrcA);
-
- const Size aSizeB(nWidth - nOffset, nHeight);
- const Rectangle aDstB(Point(nOffset, nHeight), aSizeB);
- const Rectangle aSrcB(Point(0L, 0L), aSizeB);
- aBitmap.CopyPixel(aDstB, aSrcB);
- }
- else
- {
- bExpandWidth = true;
- const sal_uInt32 nOffset(basegfx::fround(((double)nHeight * getOffset().getY()) / 100.0));
- aBitmap.Expand(nWidth, 0L);
-
- const Size aSize(nWidth, nHeight);
- const Rectangle aDst(Point(nWidth, 0L), aSize);
- const Rectangle aSrc(Point(0L, 0L), aSize);
- aBitmap.CopyPixel(aDst, aSrc);
-
- const Size aSizeA(nWidth, nOffset);
- const Rectangle aDstA(Point(0L, 0L), aSizeA);
- const Rectangle aSrcA(Point(nWidth, nHeight - nOffset), aSizeA);
- aBitmap.CopyPixel(aDstA, aSrcA);
-
- const Size aSizeB(nWidth, nHeight - nOffset);
- const Rectangle aDstB(Point(0L, nOffset), aSizeB);
- const Rectangle aSrcB(Point(nWidth, 0L), aSizeB);
- aBitmap.CopyPixel(aDstB, aSrcB);
- }
- }
- }
-
- // init values with defaults
- basegfx::B2DPoint aBitmapSize(1.0, 1.0);
- basegfx::B2DVector aBitmapTopLeft(0.0, 0.0);
-
- // are canges needed?
- if(getTiling() || !getStretch())
- {
- // init values with range sizes
- const double fRangeWidth(0.0 != rRange.getWidth() ? rRange.getWidth() : 1.0);
- const double fRangeHeight(0.0 != rRange.getHeight() ? rRange.getHeight() : 1.0);
- aBitmapSize = basegfx::B2DPoint(fRangeWidth, fRangeHeight);
-
- // size changes
- if(0.0 != getSize().getX())
- {
- if(getSize().getX() < 0.0)
- {
- aBitmapSize.setX(aBitmapSize.getX() * (getSize().getX() * -0.01));
- }
- else
- {
- aBitmapSize.setX(getSize().getX());
- }
- }
- else
- {
- aBitmapSize.setX(aLogicalSize.getX());
- }
-
- if(0.0 != getSize().getY())
- {
- if(getSize().getY() < 0.0)
- {
- aBitmapSize.setY(aBitmapSize.getY() * (getSize().getY() * -0.01));
- }
- else
- {
- aBitmapSize.setY(getSize().getY());
- }
- }
- else
- {
- aBitmapSize.setY(aLogicalSize.getY());
- }
-
- // get values, force to centered if necessary
- const basegfx::B2DVector aRectPoint(getTiling() ? getRectPoint() : basegfx::B2DVector(0.0, 0.0));
-
- // position changes X
- if(0.0 == aRectPoint.getX())
- {
- aBitmapTopLeft.setX((fRangeWidth - aBitmapSize.getX()) * 0.5);
- }
- else if(1.0 == aRectPoint.getX())
- {
- aBitmapTopLeft.setX(fRangeWidth - aBitmapSize.getX());
- }
-
- if(getTiling() && 0.0 != getOffsetPosition().getX())
- {
- aBitmapTopLeft.setX(aBitmapTopLeft.getX() + (aBitmapSize.getX() * (getOffsetPosition().getX() * 0.01)));
- }
-
- // position changes Y
- if(0.0 == aRectPoint.getY())
- {
- aBitmapTopLeft.setY((fRangeHeight - aBitmapSize.getY()) * 0.5);
- }
- else if(1.0 == aRectPoint.getY())
- {
- aBitmapTopLeft.setY(fRangeHeight - aBitmapSize.getY());
- }
-
- if(getTiling() && 0.0 != getOffsetPosition().getY())
- {
- aBitmapTopLeft.setY(aBitmapTopLeft.getY() + (aBitmapSize.getY() * (getOffsetPosition().getY() * 0.01)));
- }
-
- // apply expand
- if(bExpandWidth)
- {
- aBitmapSize.setX(aBitmapSize.getX() * 2.0);
- }
-
- if(bExpandHeight)
- {
- aBitmapSize.setY(aBitmapSize.getY() * 2.0);
- }
-
- // apply bitmap size scaling to unit rectangle
- aBitmapTopLeft.setX(aBitmapTopLeft.getX() / fRangeWidth);
- aBitmapTopLeft.setY(aBitmapTopLeft.getY() / fRangeHeight);
- aBitmapSize.setX(aBitmapSize.getX() / fRangeWidth);
- aBitmapSize.setY(aBitmapSize.getY() / fRangeHeight);
- }
-
- return FillBitmapAttribute(BitmapEx(aBitmap), aBitmapTopLeft, aBitmapSize, getTiling());
- }
- } // end of namespace attribute
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/attribute/sdrlightattribute3d.cxx b/drawinglayer/source/attribute/sdrlightattribute3d.cxx
deleted file mode 100644
index 7252ed7f9d..0000000000
--- a/drawinglayer/source/attribute/sdrlightattribute3d.cxx
+++ /dev/null
@@ -1,193 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * The Contents of this file are made available subject to
- * the terms of GNU Lesser General Public License Version 2.1.
- *
- *
- * GNU Lesser General Public License Version 2.1
- * =============================================
- * Copyright 2005 by Sun Microsystems, Inc.
- * 901 San Antonio Road, Palo Alto, CA 94303, USA
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License version 2.1, as published by the Free Software Foundation.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/attribute/sdrlightattribute3d.hxx>
-#include <basegfx/color/bcolor.hxx>
-#include <basegfx/vector/b3dvector.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace attribute
- {
- class ImpSdr3DLightAttribute
- {
- public:
- // refcounter
- sal_uInt32 mnRefCount;
-
- // 3D light attribute definitions
- basegfx::BColor maColor;
- basegfx::B3DVector maDirection;
-
- // bitfield
- unsigned mbSpecular : 1;
-
- ImpSdr3DLightAttribute(
- const basegfx::BColor& rColor,
- const basegfx::B3DVector& rDirection,
- bool bSpecular)
- : mnRefCount(0),
- maColor(rColor),
- maDirection(rDirection),
- mbSpecular(bSpecular)
- {
- }
-
- // data read access
- const basegfx::BColor& getColor() const { return maColor; }
- const basegfx::B3DVector& getDirection() const { return maDirection; }
- bool getSpecular() const { return mbSpecular; }
-
- bool operator==(const ImpSdr3DLightAttribute& rCandidate) const
- {
- return (getColor() == rCandidate.getColor()
- && getDirection() == rCandidate.getDirection()
- && getSpecular() == rCandidate.getSpecular());
- }
-
- static ImpSdr3DLightAttribute* get_global_default()
- {
- static ImpSdr3DLightAttribute* pDefault = 0;
-
- if(!pDefault)
- {
- pDefault = new ImpSdr3DLightAttribute(
- basegfx::BColor(),
- basegfx::B3DVector(),
- false);
-
- // never delete; start with RefCount 1, not 0
- pDefault->mnRefCount++;
- }
-
- return pDefault;
- }
- };
-
- Sdr3DLightAttribute::Sdr3DLightAttribute(
- const basegfx::BColor& rColor,
- const basegfx::B3DVector& rDirection,
- bool bSpecular)
- : mpSdr3DLightAttribute(new ImpSdr3DLightAttribute(
- rColor, rDirection, bSpecular))
- {
- }
-
- Sdr3DLightAttribute::Sdr3DLightAttribute()
- : mpSdr3DLightAttribute(ImpSdr3DLightAttribute::get_global_default())
- {
- mpSdr3DLightAttribute->mnRefCount++;
- }
-
- Sdr3DLightAttribute::Sdr3DLightAttribute(const Sdr3DLightAttribute& rCandidate)
- : mpSdr3DLightAttribute(rCandidate.mpSdr3DLightAttribute)
- {
- mpSdr3DLightAttribute->mnRefCount++;
- }
-
- Sdr3DLightAttribute::~Sdr3DLightAttribute()
- {
- if(mpSdr3DLightAttribute->mnRefCount)
- {
- mpSdr3DLightAttribute->mnRefCount--;
- }
- else
- {
- delete mpSdr3DLightAttribute;
- }
- }
-
- bool Sdr3DLightAttribute::isDefault() const
- {
- return mpSdr3DLightAttribute == ImpSdr3DLightAttribute::get_global_default();
- }
-
- Sdr3DLightAttribute& Sdr3DLightAttribute::operator=(const Sdr3DLightAttribute& rCandidate)
- {
- if(rCandidate.mpSdr3DLightAttribute != mpSdr3DLightAttribute)
- {
- if(mpSdr3DLightAttribute->mnRefCount)
- {
- mpSdr3DLightAttribute->mnRefCount--;
- }
- else
- {
- delete mpSdr3DLightAttribute;
- }
-
- mpSdr3DLightAttribute = rCandidate.mpSdr3DLightAttribute;
- mpSdr3DLightAttribute->mnRefCount++;
- }
-
- return *this;
- }
-
- bool Sdr3DLightAttribute::operator==(const Sdr3DLightAttribute& rCandidate) const
- {
- if(rCandidate.mpSdr3DLightAttribute == mpSdr3DLightAttribute)
- {
- return true;
- }
-
- if(rCandidate.isDefault() != isDefault())
- {
- return false;
- }
-
- return (*rCandidate.mpSdr3DLightAttribute == *mpSdr3DLightAttribute);
- }
-
- const basegfx::BColor& Sdr3DLightAttribute::getColor() const
- {
- return mpSdr3DLightAttribute->getColor();
- }
-
- const basegfx::B3DVector& Sdr3DLightAttribute::getDirection() const
- {
- return mpSdr3DLightAttribute->getDirection();
- }
-
- bool Sdr3DLightAttribute::getSpecular() const
- {
- return mpSdr3DLightAttribute->getSpecular();
- }
-
- } // end of namespace attribute
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/attribute/sdrlightingattribute3d.cxx b/drawinglayer/source/attribute/sdrlightingattribute3d.cxx
deleted file mode 100644
index ba742a2a88..0000000000
--- a/drawinglayer/source/attribute/sdrlightingattribute3d.cxx
+++ /dev/null
@@ -1,232 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * The Contents of this file are made available subject to
- * the terms of GNU Lesser General Public License Version 2.1.
- *
- *
- * GNU Lesser General Public License Version 2.1
- * =============================================
- * Copyright 2005 by Sun Microsystems, Inc.
- * 901 San Antonio Road, Palo Alto, CA 94303, USA
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License version 2.1, as published by the Free Software Foundation.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/attribute/sdrlightingattribute3d.hxx>
-#include <basegfx/color/bcolor.hxx>
-#include <basegfx/vector/b3dvector.hxx>
-#include <drawinglayer/attribute/sdrlightattribute3d.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace attribute
- {
- class ImpSdrLightingAttribute
- {
- public:
- // refcounter
- sal_uInt32 mnRefCount;
-
- // 3D light attribute definitions
- basegfx::BColor maAmbientLight;
- ::std::vector< Sdr3DLightAttribute > maLightVector;
-
- ImpSdrLightingAttribute(
- const basegfx::BColor& rAmbientLight,
- const ::std::vector< Sdr3DLightAttribute >& rLightVector)
- : mnRefCount(0),
- maAmbientLight(rAmbientLight),
- maLightVector(rLightVector)
- {
- }
-
- // data read access
- const basegfx::BColor& getAmbientLight() const { return maAmbientLight; }
- const ::std::vector< Sdr3DLightAttribute >& getLightVector() const { return maLightVector; }
-
- bool operator==(const ImpSdrLightingAttribute& rCandidate) const
- {
- return (getAmbientLight() == rCandidate.getAmbientLight()
- && getLightVector() == rCandidate.getLightVector());
- }
-
- static ImpSdrLightingAttribute* get_global_default()
- {
- static ImpSdrLightingAttribute* pDefault = 0;
-
- if(!pDefault)
- {
- pDefault = new ImpSdrLightingAttribute(
- basegfx::BColor(),
- std::vector< Sdr3DLightAttribute >());
-
- // never delete; start with RefCount 1, not 0
- pDefault->mnRefCount++;
- }
-
- return pDefault;
- }
- };
-
- SdrLightingAttribute::SdrLightingAttribute(
- const basegfx::BColor& rAmbientLight,
- const ::std::vector< Sdr3DLightAttribute >& rLightVector)
- : mpSdrLightingAttribute(new ImpSdrLightingAttribute(
- rAmbientLight, rLightVector))
- {
- }
-
- SdrLightingAttribute::SdrLightingAttribute()
- : mpSdrLightingAttribute(ImpSdrLightingAttribute::get_global_default())
- {
- mpSdrLightingAttribute->mnRefCount++;
- }
-
- SdrLightingAttribute::SdrLightingAttribute(const SdrLightingAttribute& rCandidate)
- : mpSdrLightingAttribute(rCandidate.mpSdrLightingAttribute)
- {
- mpSdrLightingAttribute->mnRefCount++;
- }
-
- SdrLightingAttribute::~SdrLightingAttribute()
- {
- if(mpSdrLightingAttribute->mnRefCount)
- {
- mpSdrLightingAttribute->mnRefCount--;
- }
- else
- {
- delete mpSdrLightingAttribute;
- }
- }
-
- bool SdrLightingAttribute::isDefault() const
- {
- return mpSdrLightingAttribute == ImpSdrLightingAttribute::get_global_default();
- }
-
- SdrLightingAttribute& SdrLightingAttribute::operator=(const SdrLightingAttribute& rCandidate)
- {
- if(rCandidate.mpSdrLightingAttribute != mpSdrLightingAttribute)
- {
- if(mpSdrLightingAttribute->mnRefCount)
- {
- mpSdrLightingAttribute->mnRefCount--;
- }
- else
- {
- delete mpSdrLightingAttribute;
- }
-
- mpSdrLightingAttribute = rCandidate.mpSdrLightingAttribute;
- mpSdrLightingAttribute->mnRefCount++;
- }
-
- return *this;
- }
-
- bool SdrLightingAttribute::operator==(const SdrLightingAttribute& rCandidate) const
- {
- if(rCandidate.mpSdrLightingAttribute == mpSdrLightingAttribute)
- {
- return true;
- }
-
- if(rCandidate.isDefault() != isDefault())
- {
- return false;
- }
-
- return (*rCandidate.mpSdrLightingAttribute == *mpSdrLightingAttribute);
- }
-
- const basegfx::BColor& SdrLightingAttribute::getAmbientLight() const
- {
- return mpSdrLightingAttribute->getAmbientLight();
- }
-
- const ::std::vector< Sdr3DLightAttribute >& SdrLightingAttribute::getLightVector() const
- {
- return mpSdrLightingAttribute->getLightVector();
- }
-
- // color model solver
- basegfx::BColor SdrLightingAttribute::solveColorModel(
- const basegfx::B3DVector& rNormalInEyeCoordinates,
- const basegfx::BColor& rColor, const basegfx::BColor& rSpecular,
- const basegfx::BColor& rEmission, sal_uInt16 nSpecularIntensity) const
- {
- // initialize with emissive color
- basegfx::BColor aRetval(rEmission);
-
- // take care of global ambient light
- aRetval += mpSdrLightingAttribute->getAmbientLight() * rColor;
-
- // prepare light access. Is there a light?
- const sal_uInt32 nLightCount(mpSdrLightingAttribute->getLightVector().size());
-
- if(nLightCount && !rNormalInEyeCoordinates.equalZero())
- {
- // prepare normal
- basegfx::B3DVector aEyeNormal(rNormalInEyeCoordinates);
- aEyeNormal.normalize();
-
- for(sal_uInt32 a(0L); a < nLightCount; a++)
- {
- const Sdr3DLightAttribute& rLight(mpSdrLightingAttribute->getLightVector()[a]);
- const double fCosFac(rLight.getDirection().scalar(aEyeNormal));
-
- if(basegfx::fTools::more(fCosFac, 0.0))
- {
- aRetval += ((rLight.getColor() * rColor) * fCosFac);
-
- if(rLight.getSpecular())
- {
- // expand by (0.0, 0.0, 1.0) in Z
- basegfx::B3DVector aSpecularNormal(rLight.getDirection().getX(), rLight.getDirection().getY(), rLight.getDirection().getZ() + 1.0);
- aSpecularNormal.normalize();
- double fCosFac2(aSpecularNormal.scalar(aEyeNormal));
-
- if(basegfx::fTools::more(fCosFac2, 0.0))
- {
- fCosFac2 = pow(fCosFac2, (double)nSpecularIntensity);
- aRetval += (rSpecular * fCosFac2);
- }
- }
- }
- }
- }
-
- // clamp to color space before usage
- aRetval.clamp();
-
- return aRetval;
- }
- } // end of namespace attribute
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/attribute/sdrlineattribute.cxx b/drawinglayer/source/attribute/sdrlineattribute.cxx
deleted file mode 100644
index ac36188a3f..0000000000
--- a/drawinglayer/source/attribute/sdrlineattribute.cxx
+++ /dev/null
@@ -1,247 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * The Contents of this file are made available subject to
- * the terms of GNU Lesser General Public License Version 2.1.
- *
- *
- * GNU Lesser General Public License Version 2.1
- * =============================================
- * Copyright 2005 by Sun Microsystems, Inc.
- * 901 San Antonio Road, Palo Alto, CA 94303, USA
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License version 2.1, as published by the Free Software Foundation.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/attribute/sdrlineattribute.hxx>
-#include <basegfx/color/bcolor.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace attribute
- {
- class ImpSdrLineAttribute
- {
- public:
- // refcounter
- sal_uInt32 mnRefCount;
-
- // line definitions
- basegfx::B2DLineJoin meJoin; // B2DLINEJOIN_* defines
- double mfWidth; // 1/100th mm, 0.0==hair
- double mfTransparence; // [0.0 .. 1.0], 0.0==no transp.
- basegfx::BColor maColor; // color of line
- ::std::vector< double > maDotDashArray; // array of double which defines the dot-dash pattern
- double mfFullDotDashLen; // sum of maDotDashArray (for convenience)
-
- ImpSdrLineAttribute(
- basegfx::B2DLineJoin eJoin,
- double fWidth,
- double fTransparence,
- const basegfx::BColor& rColor,
- const ::std::vector< double >& rDotDashArray,
- double fFullDotDashLen)
- : mnRefCount(0),
- meJoin(eJoin),
- mfWidth(fWidth),
- mfTransparence(fTransparence),
- maColor(rColor),
- maDotDashArray(rDotDashArray),
- mfFullDotDashLen(fFullDotDashLen)
- {
- }
-
- ImpSdrLineAttribute(const basegfx::BColor& rColor)
- : mnRefCount(0),
- meJoin(basegfx::B2DLINEJOIN_NONE),
- mfWidth(0.0),
- mfTransparence(0.0),
- maColor(rColor),
- maDotDashArray(),
- mfFullDotDashLen(0.0)
- {
- }
-
- // data read access
- basegfx::B2DLineJoin getJoin() const { return meJoin; }
- double getWidth() const { return mfWidth; }
- double getTransparence() const { return mfTransparence; }
- const basegfx::BColor& getColor() const { return maColor; }
- const ::std::vector< double >& getDotDashArray() const { return maDotDashArray; }
- double getFullDotDashLen() const { return mfFullDotDashLen; }
-
- bool operator==(const ImpSdrLineAttribute& rCandidate) const
- {
- return (getJoin() == rCandidate.getJoin()
- && getWidth() == rCandidate.getWidth()
- && getTransparence() == rCandidate.getTransparence()
- && getColor() == rCandidate.getColor()
- && getDotDashArray() == rCandidate.getDotDashArray());
- }
-
- static ImpSdrLineAttribute* get_global_default()
- {
- static ImpSdrLineAttribute* pDefault = 0;
-
- if(!pDefault)
- {
- pDefault = new ImpSdrLineAttribute(
- basegfx::B2DLINEJOIN_ROUND,
- 0.0,
- 0.0,
- basegfx::BColor(),
- std::vector< double >(),
- 0.0);
-
- // never delete; start with RefCount 1, not 0
- pDefault->mnRefCount++;
- }
-
- return pDefault;
- }
- };
-
- SdrLineAttribute::SdrLineAttribute(
- basegfx::B2DLineJoin eJoin,
- double fWidth,
- double fTransparence,
- const basegfx::BColor& rColor,
- const ::std::vector< double >& rDotDashArray,
- double fFullDotDashLen)
- : mpSdrLineAttribute(new ImpSdrLineAttribute(
- eJoin, fWidth, fTransparence, rColor, rDotDashArray, fFullDotDashLen))
- {
- }
-
- SdrLineAttribute::SdrLineAttribute(
- const basegfx::BColor& rColor)
- : mpSdrLineAttribute(new ImpSdrLineAttribute(rColor))
- {
- }
-
- SdrLineAttribute::SdrLineAttribute()
- : mpSdrLineAttribute(ImpSdrLineAttribute::get_global_default())
- {
- mpSdrLineAttribute->mnRefCount++;
- }
-
- SdrLineAttribute::SdrLineAttribute(const SdrLineAttribute& rCandidate)
- : mpSdrLineAttribute(rCandidate.mpSdrLineAttribute)
- {
- mpSdrLineAttribute->mnRefCount++;
- }
-
- SdrLineAttribute::~SdrLineAttribute()
- {
- if(mpSdrLineAttribute->mnRefCount)
- {
- mpSdrLineAttribute->mnRefCount--;
- }
- else
- {
- delete mpSdrLineAttribute;
- }
- }
-
- bool SdrLineAttribute::isDefault() const
- {
- return mpSdrLineAttribute == ImpSdrLineAttribute::get_global_default();
- }
-
- SdrLineAttribute& SdrLineAttribute::operator=(const SdrLineAttribute& rCandidate)
- {
- if(rCandidate.mpSdrLineAttribute != mpSdrLineAttribute)
- {
- if(mpSdrLineAttribute->mnRefCount)
- {
- mpSdrLineAttribute->mnRefCount--;
- }
- else
- {
- delete mpSdrLineAttribute;
- }
-
- mpSdrLineAttribute = rCandidate.mpSdrLineAttribute;
- mpSdrLineAttribute->mnRefCount++;
- }
-
- return *this;
- }
-
- bool SdrLineAttribute::operator==(const SdrLineAttribute& rCandidate) const
- {
- if(rCandidate.mpSdrLineAttribute == mpSdrLineAttribute)
- {
- return true;
- }
-
- if(rCandidate.isDefault() != isDefault())
- {
- return false;
- }
-
- return (*rCandidate.mpSdrLineAttribute == *mpSdrLineAttribute);
- }
-
- basegfx::B2DLineJoin SdrLineAttribute::getJoin() const
- {
- return mpSdrLineAttribute->getJoin();
- }
-
- double SdrLineAttribute::getWidth() const
- {
- return mpSdrLineAttribute->getWidth();
- }
-
- double SdrLineAttribute::getTransparence() const
- {
- return mpSdrLineAttribute->getTransparence();
- }
-
- const basegfx::BColor& SdrLineAttribute::getColor() const
- {
- return mpSdrLineAttribute->getColor();
- }
-
- const ::std::vector< double >& SdrLineAttribute::getDotDashArray() const
- {
- return mpSdrLineAttribute->getDotDashArray();
- }
-
- double SdrLineAttribute::getFullDotDashLen() const
- {
- return mpSdrLineAttribute->getFullDotDashLen();
- }
-
- bool SdrLineAttribute::isDashed() const
- {
- return (0L != getDotDashArray().size());
- }
-
- } // end of namespace attribute
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/attribute/sdrlinestartendattribute.cxx b/drawinglayer/source/attribute/sdrlinestartendattribute.cxx
deleted file mode 100644
index 8a9a16f120..0000000000
--- a/drawinglayer/source/attribute/sdrlinestartendattribute.cxx
+++ /dev/null
@@ -1,251 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * The Contents of this file are made available subject to
- * the terms of GNU Lesser General Public License Version 2.1.
- *
- *
- * GNU Lesser General Public License Version 2.1
- * =============================================
- * Copyright 2005 by Sun Microsystems, Inc.
- * 901 San Antonio Road, Palo Alto, CA 94303, USA
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License version 2.1, as published by the Free Software Foundation.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/attribute/sdrlinestartendattribute.hxx>
-#include <basegfx/polygon/b2dpolypolygon.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace attribute
- {
- class ImpSdrLineStartEndAttribute
- {
- public:
- // refcounter
- sal_uInt32 mnRefCount;
-
- // line arrow definitions
- basegfx::B2DPolyPolygon maStartPolyPolygon; // start Line PolyPolygon
- basegfx::B2DPolyPolygon maEndPolyPolygon; // end Line PolyPolygon
- double mfStartWidth; // 1/100th mm
- double mfEndWidth; // 1/100th mm
-
- // bitfield
- unsigned mbStartActive : 1L; // start of Line is active
- unsigned mbEndActive : 1L; // end of Line is active
- unsigned mbStartCentered : 1L; // Line is centered on line start point
- unsigned mbEndCentered : 1L; // Line is centered on line end point
-
- ImpSdrLineStartEndAttribute(
- const basegfx::B2DPolyPolygon& rStartPolyPolygon,
- const basegfx::B2DPolyPolygon& rEndPolyPolygon,
- double fStartWidth,
- double fEndWidth,
- bool bStartActive,
- bool bEndActive,
- bool bStartCentered,
- bool bEndCentered)
- : mnRefCount(0),
- maStartPolyPolygon(rStartPolyPolygon),
- maEndPolyPolygon(rEndPolyPolygon),
- mfStartWidth(fStartWidth),
- mfEndWidth(fEndWidth),
- mbStartActive(bStartActive),
- mbEndActive(bEndActive),
- mbStartCentered(bStartCentered),
- mbEndCentered(bEndCentered)
- {
- }
-
- // data read access
- const basegfx::B2DPolyPolygon& getStartPolyPolygon() const { return maStartPolyPolygon; }
- const basegfx::B2DPolyPolygon& getEndPolyPolygon() const { return maEndPolyPolygon; }
- double getStartWidth() const { return mfStartWidth; }
- double getEndWidth() const { return mfEndWidth; }
- bool isStartActive() const { return mbStartActive; }
- bool isEndActive() const { return mbEndActive; }
- bool isStartCentered() const { return mbStartCentered; }
- bool isEndCentered() const { return mbEndCentered; }
-
- bool operator==(const ImpSdrLineStartEndAttribute& rCandidate) const
- {
- return (getStartPolyPolygon() == rCandidate.getStartPolyPolygon()
- && getEndPolyPolygon() == rCandidate.getEndPolyPolygon()
- && getStartWidth() == rCandidate.getStartWidth()
- && getEndWidth() == rCandidate.getEndWidth()
- && isStartActive() == rCandidate.isStartActive()
- && isEndActive() == rCandidate.isEndActive()
- && isStartCentered() == rCandidate.isStartCentered()
- && isEndCentered() == rCandidate.isEndCentered());
- }
-
- static ImpSdrLineStartEndAttribute* get_global_default()
- {
- static ImpSdrLineStartEndAttribute* pDefault = 0;
-
- if(!pDefault)
- {
- pDefault = new ImpSdrLineStartEndAttribute(
- basegfx::B2DPolyPolygon(),
- basegfx::B2DPolyPolygon(),
- 0.0,
- 0.0,
- false,
- false,
- false,
- false);
-
- // never delete; start with RefCount 1, not 0
- pDefault->mnRefCount++;
- }
-
- return pDefault;
- }
- };
-
- SdrLineStartEndAttribute::SdrLineStartEndAttribute(
- const basegfx::B2DPolyPolygon& rStartPolyPolygon,
- const basegfx::B2DPolyPolygon& rEndPolyPolygon,
- double fStartWidth,
- double fEndWidth,
- bool bStartActive,
- bool bEndActive,
- bool bStartCentered,
- bool bEndCentered)
- : mpSdrLineStartEndAttribute(new ImpSdrLineStartEndAttribute(
- rStartPolyPolygon, rEndPolyPolygon, fStartWidth, fEndWidth, bStartActive, bEndActive, bStartCentered, bEndCentered))
- {
- }
-
- SdrLineStartEndAttribute::SdrLineStartEndAttribute()
- : mpSdrLineStartEndAttribute(ImpSdrLineStartEndAttribute::get_global_default())
- {
- mpSdrLineStartEndAttribute->mnRefCount++;
- }
-
- SdrLineStartEndAttribute::SdrLineStartEndAttribute(const SdrLineStartEndAttribute& rCandidate)
- : mpSdrLineStartEndAttribute(rCandidate.mpSdrLineStartEndAttribute)
- {
- mpSdrLineStartEndAttribute->mnRefCount++;
- }
-
- SdrLineStartEndAttribute::~SdrLineStartEndAttribute()
- {
- if(mpSdrLineStartEndAttribute->mnRefCount)
- {
- mpSdrLineStartEndAttribute->mnRefCount--;
- }
- else
- {
- delete mpSdrLineStartEndAttribute;
- }
- }
-
- bool SdrLineStartEndAttribute::isDefault() const
- {
- return mpSdrLineStartEndAttribute == ImpSdrLineStartEndAttribute::get_global_default();
- }
-
- SdrLineStartEndAttribute& SdrLineStartEndAttribute::operator=(const SdrLineStartEndAttribute& rCandidate)
- {
- if(rCandidate.mpSdrLineStartEndAttribute != mpSdrLineStartEndAttribute)
- {
- if(mpSdrLineStartEndAttribute->mnRefCount)
- {
- mpSdrLineStartEndAttribute->mnRefCount--;
- }
- else
- {
- delete mpSdrLineStartEndAttribute;
- }
-
- mpSdrLineStartEndAttribute = rCandidate.mpSdrLineStartEndAttribute;
- mpSdrLineStartEndAttribute->mnRefCount++;
- }
-
- return *this;
- }
-
- bool SdrLineStartEndAttribute::operator==(const SdrLineStartEndAttribute& rCandidate) const
- {
- if(rCandidate.mpSdrLineStartEndAttribute == mpSdrLineStartEndAttribute)
- {
- return true;
- }
-
- if(rCandidate.isDefault() != isDefault())
- {
- return false;
- }
-
- return (*rCandidate.mpSdrLineStartEndAttribute == *mpSdrLineStartEndAttribute);
- }
-
- const basegfx::B2DPolyPolygon& SdrLineStartEndAttribute::getStartPolyPolygon() const
- {
- return mpSdrLineStartEndAttribute->getStartPolyPolygon();
- }
-
- const basegfx::B2DPolyPolygon& SdrLineStartEndAttribute::getEndPolyPolygon() const
- {
- return mpSdrLineStartEndAttribute->getEndPolyPolygon();
- }
-
- double SdrLineStartEndAttribute::getStartWidth() const
- {
- return mpSdrLineStartEndAttribute->getStartWidth();
- }
-
- double SdrLineStartEndAttribute::getEndWidth() const
- {
- return mpSdrLineStartEndAttribute->getEndWidth();
- }
-
- bool SdrLineStartEndAttribute::isStartActive() const
- {
- return mpSdrLineStartEndAttribute->isStartActive();
- }
-
- bool SdrLineStartEndAttribute::isEndActive() const
- {
- return mpSdrLineStartEndAttribute->isEndActive();
- }
-
- bool SdrLineStartEndAttribute::isStartCentered() const
- {
- return mpSdrLineStartEndAttribute->isStartCentered();
- }
-
- bool SdrLineStartEndAttribute::isEndCentered() const
- {
- return mpSdrLineStartEndAttribute->isEndCentered();
- }
- } // end of namespace attribute
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/attribute/sdrobjectattribute3d.cxx b/drawinglayer/source/attribute/sdrobjectattribute3d.cxx
deleted file mode 100644
index 2f9e4baca4..0000000000
--- a/drawinglayer/source/attribute/sdrobjectattribute3d.cxx
+++ /dev/null
@@ -1,289 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * The Contents of this file are made available subject to
- * the terms of GNU Lesser General Public License Version 2.1.
- *
- *
- * GNU Lesser General Public License Version 2.1
- * =============================================
- * Copyright 2005 by Sun Microsystems, Inc.
- * 901 San Antonio Road, Palo Alto, CA 94303, USA
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License version 2.1, as published by the Free Software Foundation.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/attribute/sdrobjectattribute3d.hxx>
-#include <drawinglayer/attribute/materialattribute3d.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace attribute
- {
- class ImpSdr3DObjectAttribute
- {
- public:
- // refcounter
- sal_uInt32 mnRefCount;
-
- // 3D object attribute definitions
- ::com::sun::star::drawing::NormalsKind maNormalsKind; // normals type (0..2)
- ::com::sun::star::drawing::TextureProjectionMode maTextureProjectionX; // texture projection type X (0..2)
- ::com::sun::star::drawing::TextureProjectionMode maTextureProjectionY; // texture projection type Y (0..2)
- ::com::sun::star::drawing::TextureKind2 maTextureKind; // texture kind (see uno API)
- ::com::sun::star::drawing::TextureMode maTextureMode; // texture kind (see uno API)
- MaterialAttribute3D maMaterial; // object, specular and emissive colors, SpecularIntensity
-
- // bitfield
- unsigned mbNormalsInvert : 1; // invert normals
- unsigned mbDoubleSided : 1; // surfaces are double sided
- unsigned mbShadow3D : 1; // display shadow in 3D (if on), params for that are at scene
- unsigned mbTextureFilter : 1; // filter texture to make more smooth
- unsigned mbReducedLineGeometry : 1; // use reduced line geometry (object specific)
-
- ImpSdr3DObjectAttribute(
- ::com::sun::star::drawing::NormalsKind aNormalsKind,
- ::com::sun::star::drawing::TextureProjectionMode aTextureProjectionX,
- ::com::sun::star::drawing::TextureProjectionMode aTextureProjectionY,
- ::com::sun::star::drawing::TextureKind2 aTextureKind,
- ::com::sun::star::drawing::TextureMode aTextureMode,
- const MaterialAttribute3D& rMaterial,
- bool bNormalsInvert,
- bool bDoubleSided,
- bool bShadow3D,
- bool bTextureFilter,
- bool bReducedLineGeometry)
- : mnRefCount(0),
- maNormalsKind(aNormalsKind),
- maTextureProjectionX(aTextureProjectionX),
- maTextureProjectionY(aTextureProjectionY),
- maTextureKind(aTextureKind),
- maTextureMode(aTextureMode),
- maMaterial(rMaterial),
- mbNormalsInvert(bNormalsInvert),
- mbDoubleSided(bDoubleSided),
- mbShadow3D(bShadow3D),
- mbTextureFilter(bTextureFilter),
- mbReducedLineGeometry(bReducedLineGeometry)
- {
- }
-
- // data read access
- ::com::sun::star::drawing::NormalsKind getNormalsKind() const { return maNormalsKind; }
- ::com::sun::star::drawing::TextureProjectionMode getTextureProjectionX() const { return maTextureProjectionX; }
- ::com::sun::star::drawing::TextureProjectionMode getTextureProjectionY() const { return maTextureProjectionY; }
- ::com::sun::star::drawing::TextureKind2 getTextureKind() const { return maTextureKind; }
- ::com::sun::star::drawing::TextureMode getTextureMode() const { return maTextureMode; }
- const MaterialAttribute3D& getMaterial() const { return maMaterial; }
- bool getNormalsInvert() const { return mbNormalsInvert; }
- bool getDoubleSided() const { return mbDoubleSided; }
- bool getShadow3D() const { return mbShadow3D; }
- bool getTextureFilter() const { return mbTextureFilter; }
- bool getReducedLineGeometry() const { return mbReducedLineGeometry; }
-
- bool operator==(const ImpSdr3DObjectAttribute& rCandidate) const
- {
- return (getNormalsKind() == rCandidate.getNormalsKind()
- && getTextureProjectionX() == rCandidate.getTextureProjectionX()
- && getTextureProjectionY() == rCandidate.getTextureProjectionY()
- && getTextureKind() == rCandidate.getTextureKind()
- && getTextureMode() == rCandidate.getTextureMode()
- && getMaterial() == rCandidate.getMaterial()
- && getNormalsInvert() == rCandidate.getNormalsInvert()
- && getDoubleSided() == rCandidate.getDoubleSided()
- && getShadow3D() == rCandidate.getShadow3D()
- && getTextureFilter() == rCandidate.getTextureFilter()
- && getReducedLineGeometry() == rCandidate.getReducedLineGeometry());
- }
-
- static ImpSdr3DObjectAttribute* get_global_default()
- {
- static ImpSdr3DObjectAttribute* pDefault = 0;
-
- if(!pDefault)
- {
- pDefault = new ImpSdr3DObjectAttribute(
- ::com::sun::star::drawing::NormalsKind_SPECIFIC,
- ::com::sun::star::drawing::TextureProjectionMode_OBJECTSPECIFIC,
- ::com::sun::star::drawing::TextureProjectionMode_OBJECTSPECIFIC,
- ::com::sun::star::drawing::TextureKind2_LUMINANCE,
- ::com::sun::star::drawing::TextureMode_REPLACE,
- MaterialAttribute3D(),
- false,
- false,
- false,
- false,
- false);
-
- // never delete; start with RefCount 1, not 0
- pDefault->mnRefCount++;
- }
-
- return pDefault;
- }
- };
-
- Sdr3DObjectAttribute::Sdr3DObjectAttribute(
- ::com::sun::star::drawing::NormalsKind aNormalsKind,
- ::com::sun::star::drawing::TextureProjectionMode aTextureProjectionX,
- ::com::sun::star::drawing::TextureProjectionMode aTextureProjectionY,
- ::com::sun::star::drawing::TextureKind2 aTextureKind,
- ::com::sun::star::drawing::TextureMode aTextureMode,
- const MaterialAttribute3D& rMaterial,
- bool bNormalsInvert,
- bool bDoubleSided,
- bool bShadow3D,
- bool bTextureFilter,
- bool bReducedLineGeometry)
- : mpSdr3DObjectAttribute(new ImpSdr3DObjectAttribute(
- aNormalsKind, aTextureProjectionX, aTextureProjectionY, aTextureKind, aTextureMode,
- rMaterial, bNormalsInvert, bDoubleSided, bShadow3D, bTextureFilter, bReducedLineGeometry))
- {
- }
-
- Sdr3DObjectAttribute::Sdr3DObjectAttribute()
- : mpSdr3DObjectAttribute(ImpSdr3DObjectAttribute::get_global_default())
- {
- mpSdr3DObjectAttribute->mnRefCount++;
- }
-
- Sdr3DObjectAttribute::Sdr3DObjectAttribute(const Sdr3DObjectAttribute& rCandidate)
- : mpSdr3DObjectAttribute(rCandidate.mpSdr3DObjectAttribute)
- {
- mpSdr3DObjectAttribute->mnRefCount++;
- }
-
- Sdr3DObjectAttribute::~Sdr3DObjectAttribute()
- {
- if(mpSdr3DObjectAttribute->mnRefCount)
- {
- mpSdr3DObjectAttribute->mnRefCount--;
- }
- else
- {
- delete mpSdr3DObjectAttribute;
- }
- }
-
- bool Sdr3DObjectAttribute::isDefault() const
- {
- return mpSdr3DObjectAttribute == ImpSdr3DObjectAttribute::get_global_default();
- }
-
- Sdr3DObjectAttribute& Sdr3DObjectAttribute::operator=(const Sdr3DObjectAttribute& rCandidate)
- {
- if(rCandidate.mpSdr3DObjectAttribute != mpSdr3DObjectAttribute)
- {
- if(mpSdr3DObjectAttribute->mnRefCount)
- {
- mpSdr3DObjectAttribute->mnRefCount--;
- }
- else
- {
- delete mpSdr3DObjectAttribute;
- }
-
- mpSdr3DObjectAttribute = rCandidate.mpSdr3DObjectAttribute;
- mpSdr3DObjectAttribute->mnRefCount++;
- }
-
- return *this;
- }
-
- bool Sdr3DObjectAttribute::operator==(const Sdr3DObjectAttribute& rCandidate) const
- {
- if(rCandidate.mpSdr3DObjectAttribute == mpSdr3DObjectAttribute)
- {
- return true;
- }
-
- if(rCandidate.isDefault() != isDefault())
- {
- return false;
- }
-
- return (*rCandidate.mpSdr3DObjectAttribute == *mpSdr3DObjectAttribute);
- }
-
- ::com::sun::star::drawing::NormalsKind Sdr3DObjectAttribute::getNormalsKind() const
- {
- return mpSdr3DObjectAttribute->getNormalsKind();
- }
-
- ::com::sun::star::drawing::TextureProjectionMode Sdr3DObjectAttribute::getTextureProjectionX() const
- {
- return mpSdr3DObjectAttribute->getTextureProjectionX();
- }
-
- ::com::sun::star::drawing::TextureProjectionMode Sdr3DObjectAttribute::getTextureProjectionY() const
- {
- return mpSdr3DObjectAttribute->getTextureProjectionY();
- }
-
- ::com::sun::star::drawing::TextureKind2 Sdr3DObjectAttribute::getTextureKind() const
- {
- return mpSdr3DObjectAttribute->getTextureKind();
- }
-
- ::com::sun::star::drawing::TextureMode Sdr3DObjectAttribute::getTextureMode() const
- {
- return mpSdr3DObjectAttribute->getTextureMode();
- }
-
- const MaterialAttribute3D& Sdr3DObjectAttribute::getMaterial() const
- {
- return mpSdr3DObjectAttribute->getMaterial();
- }
-
- bool Sdr3DObjectAttribute::getNormalsInvert() const
- {
- return mpSdr3DObjectAttribute->getNormalsInvert();
- }
-
- bool Sdr3DObjectAttribute::getDoubleSided() const
- {
- return mpSdr3DObjectAttribute->getDoubleSided();
- }
-
- bool Sdr3DObjectAttribute::getShadow3D() const
- {
- return mpSdr3DObjectAttribute->getShadow3D();
- }
-
- bool Sdr3DObjectAttribute::getTextureFilter() const
- {
- return mpSdr3DObjectAttribute->getTextureFilter();
- }
-
- bool Sdr3DObjectAttribute::getReducedLineGeometry() const
- {
- return mpSdr3DObjectAttribute->getReducedLineGeometry();
- }
-
- } // end of namespace attribute
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/attribute/sdrsceneattribute3d.cxx b/drawinglayer/source/attribute/sdrsceneattribute3d.cxx
deleted file mode 100644
index c66eda2bb9..0000000000
--- a/drawinglayer/source/attribute/sdrsceneattribute3d.cxx
+++ /dev/null
@@ -1,215 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * The Contents of this file are made available subject to
- * the terms of GNU Lesser General Public License Version 2.1.
- *
- *
- * GNU Lesser General Public License Version 2.1
- * =============================================
- * Copyright 2005 by Sun Microsystems, Inc.
- * 901 San Antonio Road, Palo Alto, CA 94303, USA
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License version 2.1, as published by the Free Software Foundation.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/attribute/sdrsceneattribute3d.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace attribute
- {
- class ImpSdrSceneAttribute
- {
- public:
- // refcounter
- sal_uInt32 mnRefCount;
-
- // 3D scene attribute definitions
- double mfDistance;
- double mfShadowSlant;
- ::com::sun::star::drawing::ProjectionMode maProjectionMode;
- ::com::sun::star::drawing::ShadeMode maShadeMode;
-
- // bitfield
- unsigned mbTwoSidedLighting : 1;
-
- public:
- ImpSdrSceneAttribute(
- double fDistance,
- double fShadowSlant,
- ::com::sun::star::drawing::ProjectionMode aProjectionMode,
- ::com::sun::star::drawing::ShadeMode aShadeMode,
- bool bTwoSidedLighting)
- : mnRefCount(0),
- mfDistance(fDistance),
- mfShadowSlant(fShadowSlant),
- maProjectionMode(aProjectionMode),
- maShadeMode(aShadeMode),
- mbTwoSidedLighting(bTwoSidedLighting)
- {
- }
-
- // data read access
- double getDistance() const { return mfDistance; }
- double getShadowSlant() const { return mfShadowSlant; }
- ::com::sun::star::drawing::ProjectionMode getProjectionMode() const { return maProjectionMode; }
- ::com::sun::star::drawing::ShadeMode getShadeMode() const { return maShadeMode; }
- bool getTwoSidedLighting() const { return mbTwoSidedLighting; }
-
- bool operator==(const ImpSdrSceneAttribute& rCandidate) const
- {
- return (getDistance() == rCandidate.getDistance()
- && getShadowSlant() == rCandidate.getShadowSlant()
- && getProjectionMode() == rCandidate.getProjectionMode()
- && getShadeMode() == rCandidate.getShadeMode()
- && getTwoSidedLighting() == rCandidate.getTwoSidedLighting());
- }
-
- static ImpSdrSceneAttribute* get_global_default()
- {
- static ImpSdrSceneAttribute* pDefault = 0;
-
- if(!pDefault)
- {
- pDefault = new ImpSdrSceneAttribute(
- 0.0, 0.0,
- ::com::sun::star::drawing::ProjectionMode_PARALLEL,
- ::com::sun::star::drawing::ShadeMode_FLAT,
- false);
-
- // never delete; start with RefCount 1, not 0
- pDefault->mnRefCount++;
- }
-
- return pDefault;
- }
- };
-
- SdrSceneAttribute::SdrSceneAttribute(
- double fDistance,
- double fShadowSlant,
- ::com::sun::star::drawing::ProjectionMode aProjectionMode,
- ::com::sun::star::drawing::ShadeMode aShadeMode,
- bool bTwoSidedLighting)
- : mpSdrSceneAttribute(new ImpSdrSceneAttribute(
- fDistance, fShadowSlant, aProjectionMode, aShadeMode, bTwoSidedLighting))
- {
- }
-
- SdrSceneAttribute::SdrSceneAttribute()
- : mpSdrSceneAttribute(ImpSdrSceneAttribute::get_global_default())
- {
- mpSdrSceneAttribute->mnRefCount++;
- }
-
- SdrSceneAttribute::SdrSceneAttribute(const SdrSceneAttribute& rCandidate)
- : mpSdrSceneAttribute(rCandidate.mpSdrSceneAttribute)
- {
- mpSdrSceneAttribute->mnRefCount++;
- }
-
- SdrSceneAttribute::~SdrSceneAttribute()
- {
- if(mpSdrSceneAttribute->mnRefCount)
- {
- mpSdrSceneAttribute->mnRefCount--;
- }
- else
- {
- delete mpSdrSceneAttribute;
- }
- }
-
- bool SdrSceneAttribute::isDefault() const
- {
- return mpSdrSceneAttribute == ImpSdrSceneAttribute::get_global_default();
- }
-
- SdrSceneAttribute& SdrSceneAttribute::operator=(const SdrSceneAttribute& rCandidate)
- {
- if(rCandidate.mpSdrSceneAttribute != mpSdrSceneAttribute)
- {
- if(mpSdrSceneAttribute->mnRefCount)
- {
- mpSdrSceneAttribute->mnRefCount--;
- }
- else
- {
- delete mpSdrSceneAttribute;
- }
-
- mpSdrSceneAttribute = rCandidate.mpSdrSceneAttribute;
- mpSdrSceneAttribute->mnRefCount++;
- }
-
- return *this;
- }
-
- bool SdrSceneAttribute::operator==(const SdrSceneAttribute& rCandidate) const
- {
- if(rCandidate.mpSdrSceneAttribute == mpSdrSceneAttribute)
- {
- return true;
- }
-
- if(rCandidate.isDefault() != isDefault())
- {
- return false;
- }
-
- return (*rCandidate.mpSdrSceneAttribute == *mpSdrSceneAttribute);
- }
-
- double SdrSceneAttribute::getDistance() const
- {
- return mpSdrSceneAttribute->getDistance();
- }
-
- double SdrSceneAttribute::getShadowSlant() const
- {
- return mpSdrSceneAttribute->getShadowSlant();
- }
-
- ::com::sun::star::drawing::ProjectionMode SdrSceneAttribute::getProjectionMode() const
- {
- return mpSdrSceneAttribute->getProjectionMode();
- }
-
- ::com::sun::star::drawing::ShadeMode SdrSceneAttribute::getShadeMode() const
- {
- return mpSdrSceneAttribute->getShadeMode();
- }
-
- bool SdrSceneAttribute::getTwoSidedLighting() const
- {
- return mpSdrSceneAttribute->getTwoSidedLighting();
- }
-
- } // end of namespace attribute
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/attribute/sdrshadowattribute.cxx b/drawinglayer/source/attribute/sdrshadowattribute.cxx
deleted file mode 100644
index 54b3b0eb64..0000000000
--- a/drawinglayer/source/attribute/sdrshadowattribute.cxx
+++ /dev/null
@@ -1,190 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * The Contents of this file are made available subject to
- * the terms of GNU Lesser General Public License Version 2.1.
- *
- *
- * GNU Lesser General Public License Version 2.1
- * =============================================
- * Copyright 2005 by Sun Microsystems, Inc.
- * 901 San Antonio Road, Palo Alto, CA 94303, USA
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License version 2.1, as published by the Free Software Foundation.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/attribute/sdrshadowattribute.hxx>
-#include <basegfx/vector/b2dvector.hxx>
-#include <basegfx/color/bcolor.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace attribute
- {
- class ImpSdrShadowAttribute
- {
- public:
- // refcounter
- sal_uInt32 mnRefCount;
-
- // shadow definitions
- basegfx::B2DVector maOffset; // shadow offset 1/100th mm
- double mfTransparence; // [0.0 .. 1.0], 0.0==no transp.
- basegfx::BColor maColor; // color of shadow
-
- ImpSdrShadowAttribute(
- const basegfx::B2DVector& rOffset,
- double fTransparence,
- const basegfx::BColor& rColor)
- : mnRefCount(0),
- maOffset(rOffset),
- mfTransparence(fTransparence),
- maColor(rColor)
- {
- }
-
- // data read access
- const basegfx::B2DVector& getOffset() const { return maOffset; }
- double getTransparence() const { return mfTransparence; }
- const basegfx::BColor& getColor() const { return maColor; }
-
- bool operator==(const ImpSdrShadowAttribute& rCandidate) const
- {
- return (getOffset() == rCandidate.getOffset()
- && getTransparence() == rCandidate.getTransparence()
- && getColor() == rCandidate.getColor());
- }
-
- static ImpSdrShadowAttribute* get_global_default()
- {
- static ImpSdrShadowAttribute* pDefault = 0;
-
- if(!pDefault)
- {
- pDefault = new ImpSdrShadowAttribute(
- basegfx::B2DVector(),
- 0.0,
- basegfx::BColor());
-
- // never delete; start with RefCount 1, not 0
- pDefault->mnRefCount++;
- }
-
- return pDefault;
- }
- };
-
- SdrShadowAttribute::SdrShadowAttribute(
- const basegfx::B2DVector& rOffset,
- double fTransparence,
- const basegfx::BColor& rColor)
- : mpSdrShadowAttribute(new ImpSdrShadowAttribute(
- rOffset, fTransparence, rColor))
- {
- }
-
- SdrShadowAttribute::SdrShadowAttribute()
- : mpSdrShadowAttribute(ImpSdrShadowAttribute::get_global_default())
- {
- mpSdrShadowAttribute->mnRefCount++;
- }
-
- SdrShadowAttribute::SdrShadowAttribute(const SdrShadowAttribute& rCandidate)
- : mpSdrShadowAttribute(rCandidate.mpSdrShadowAttribute)
- {
- mpSdrShadowAttribute->mnRefCount++;
- }
-
- SdrShadowAttribute::~SdrShadowAttribute()
- {
- if(mpSdrShadowAttribute->mnRefCount)
- {
- mpSdrShadowAttribute->mnRefCount--;
- }
- else
- {
- delete mpSdrShadowAttribute;
- }
- }
-
- bool SdrShadowAttribute::isDefault() const
- {
- return mpSdrShadowAttribute == ImpSdrShadowAttribute::get_global_default();
- }
-
- SdrShadowAttribute& SdrShadowAttribute::operator=(const SdrShadowAttribute& rCandidate)
- {
- if(rCandidate.mpSdrShadowAttribute != mpSdrShadowAttribute)
- {
- if(mpSdrShadowAttribute->mnRefCount)
- {
- mpSdrShadowAttribute->mnRefCount--;
- }
- else
- {
- delete mpSdrShadowAttribute;
- }
-
- mpSdrShadowAttribute = rCandidate.mpSdrShadowAttribute;
- mpSdrShadowAttribute->mnRefCount++;
- }
-
- return *this;
- }
-
- bool SdrShadowAttribute::operator==(const SdrShadowAttribute& rCandidate) const
- {
- if(rCandidate.mpSdrShadowAttribute == mpSdrShadowAttribute)
- {
- return true;
- }
-
- if(rCandidate.isDefault() != isDefault())
- {
- return false;
- }
-
- return (*rCandidate.mpSdrShadowAttribute == *mpSdrShadowAttribute);
- }
-
- const basegfx::B2DVector& SdrShadowAttribute::getOffset() const
- {
- return mpSdrShadowAttribute->getOffset();
- }
-
- double SdrShadowAttribute::getTransparence() const
- {
- return mpSdrShadowAttribute->getTransparence();
- }
-
- const basegfx::BColor& SdrShadowAttribute::getColor() const
- {
- return mpSdrShadowAttribute->getColor();
- }
- } // end of namespace attribute
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/attribute/strokeattribute.cxx b/drawinglayer/source/attribute/strokeattribute.cxx
deleted file mode 100644
index ca8fe9c9cd..0000000000
--- a/drawinglayer/source/attribute/strokeattribute.cxx
+++ /dev/null
@@ -1,185 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/attribute/strokeattribute.hxx>
-#include <numeric>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace attribute
- {
- class ImpStrokeAttribute
- {
- public:
- // refcounter
- sal_uInt32 mnRefCount;
-
- // data definitions
- ::std::vector< double > maDotDashArray; // array of double which defines the dot-dash pattern
- double mfFullDotDashLen; // sum of maDotDashArray (for convenience)
-
- ImpStrokeAttribute(
- const ::std::vector< double >& rDotDashArray,
- double fFullDotDashLen)
- : mnRefCount(0),
- maDotDashArray(rDotDashArray),
- mfFullDotDashLen(fFullDotDashLen)
- {
- }
-
- // data read access
- const ::std::vector< double >& getDotDashArray() const { return maDotDashArray; }
- double getFullDotDashLen() const
- {
- if(0.0 == mfFullDotDashLen && maDotDashArray.size())
- {
- // calculate length on demand
- const double fAccumulated(::std::accumulate(maDotDashArray.begin(), maDotDashArray.end(), 0.0));
- const_cast< ImpStrokeAttribute* >(this)->mfFullDotDashLen = fAccumulated;
- }
-
- return mfFullDotDashLen;
- }
-
- bool operator==(const ImpStrokeAttribute& rCandidate) const
- {
- return (getDotDashArray() == rCandidate.getDotDashArray()
- && getFullDotDashLen() == rCandidate.getFullDotDashLen());
- }
-
- static ImpStrokeAttribute* get_global_default()
- {
- static ImpStrokeAttribute* pDefault = 0;
-
- if(!pDefault)
- {
- pDefault = new ImpStrokeAttribute(
- std::vector< double >(),
- 0.0);
-
- // never delete; start with RefCount 1, not 0
- pDefault->mnRefCount++;
- }
-
- return pDefault;
- }
- };
-
- StrokeAttribute::StrokeAttribute(
- const ::std::vector< double >& rDotDashArray,
- double fFullDotDashLen)
- : mpStrokeAttribute(new ImpStrokeAttribute(
- rDotDashArray, fFullDotDashLen))
- {
- }
-
- StrokeAttribute::StrokeAttribute()
- : mpStrokeAttribute(ImpStrokeAttribute::get_global_default())
- {
- mpStrokeAttribute->mnRefCount++;
- }
-
- StrokeAttribute::StrokeAttribute(const StrokeAttribute& rCandidate)
- : mpStrokeAttribute(rCandidate.mpStrokeAttribute)
- {
- mpStrokeAttribute->mnRefCount++;
- }
-
- StrokeAttribute::~StrokeAttribute()
- {
- if(mpStrokeAttribute->mnRefCount)
- {
- mpStrokeAttribute->mnRefCount--;
- }
- else
- {
- delete mpStrokeAttribute;
- }
- }
-
- bool StrokeAttribute::isDefault() const
- {
- return mpStrokeAttribute == ImpStrokeAttribute::get_global_default();
- }
-
- StrokeAttribute& StrokeAttribute::operator=(const StrokeAttribute& rCandidate)
- {
- if(rCandidate.mpStrokeAttribute != mpStrokeAttribute)
- {
- if(mpStrokeAttribute->mnRefCount)
- {
- mpStrokeAttribute->mnRefCount--;
- }
- else
- {
- delete mpStrokeAttribute;
- }
-
- mpStrokeAttribute = rCandidate.mpStrokeAttribute;
- mpStrokeAttribute->mnRefCount++;
- }
-
- return *this;
- }
-
- bool StrokeAttribute::operator==(const StrokeAttribute& rCandidate) const
- {
- if(rCandidate.mpStrokeAttribute == mpStrokeAttribute)
- {
- return true;
- }
-
- if(rCandidate.isDefault() != isDefault())
- {
- return false;
- }
-
- return (*rCandidate.mpStrokeAttribute == *mpStrokeAttribute);
- }
-
- const ::std::vector< double >& StrokeAttribute::getDotDashArray() const
- {
- return mpStrokeAttribute->getDotDashArray();
- }
-
- double StrokeAttribute::getFullDotDashLen() const
- {
- return mpStrokeAttribute->getFullDotDashLen();
- }
- } // end of namespace attribute
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/geometry/viewinformation2d.cxx b/drawinglayer/source/geometry/viewinformation2d.cxx
deleted file mode 100644
index 93757e2006..0000000000
--- a/drawinglayer/source/geometry/viewinformation2d.cxx
+++ /dev/null
@@ -1,595 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/geometry/viewinformation2d.hxx>
-#include <basegfx/matrix/b2dhommatrix.hxx>
-#include <basegfx/range/b2drange.hxx>
-#include <osl/mutex.hxx>
-#include <basegfx/tools/canvastools.hxx>
-#include <com/sun/star/geometry/AffineMatrix2D.hpp>
-#include <com/sun/star/geometry/RealRectangle2D.hpp>
-
-//////////////////////////////////////////////////////////////////////////////
-
-using namespace com::sun::star;
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace geometry
- {
- class ImpViewInformation2D
- {
- private:
- // ViewInformation2D implementation can change refcount, so we have only
- // two memory regions for pairs of ViewInformation2D/ImpViewInformation2D
- friend class ::drawinglayer::geometry::ViewInformation2D;
-
- // the refcounter. 0 means exclusively used
- sal_uInt32 mnRefCount;
-
- protected:
- // the object transformation
- basegfx::B2DHomMatrix maObjectTransformation;
-
- // the view transformation
- basegfx::B2DHomMatrix maViewTransformation;
-
- // the ObjectToView and it's inverse, both on demand from ObjectTransformation
- // and ViewTransformation
- basegfx::B2DHomMatrix maObjectToViewTransformation;
- basegfx::B2DHomMatrix maInverseObjectToViewTransformation;
-
- // the visible range and the on-demand one in ViewCoordinates
- basegfx::B2DRange maViewport;
- basegfx::B2DRange maDiscreteViewport;
-
- // the DrawPage which is target of visualisation. This is needed e.g. for
- // the view-dependent decomposition of PageNumber TextFields.
- // This parameter is buffered here, but mainly resides in mxExtendedInformation,
- // so it will be interpreted, but held there. It will also not be added
- // to mxExtendedInformation in impFillViewInformationFromContent (it's there already)
- uno::Reference< drawing::XDrawPage > mxVisualizedPage;
-
- // the point in time
- double mfViewTime;
-
- // bitfield
- bool mbReducedDisplayQuality : 1;
-
- // the complete PropertyValue representation (if already created)
- uno::Sequence< beans::PropertyValue > mxViewInformation;
-
- // the extra PropertyValues; not represented by ViewTransformation,
- // Viewport, VisualizedPage or ViewTime
- uno::Sequence< beans::PropertyValue > mxExtendedInformation;
-
- // the local UNO API strings
- const ::rtl::OUString& getNamePropertyObjectTransformation()
- {
- static ::rtl::OUString s_sNameProperty(RTL_CONSTASCII_USTRINGPARAM("ObjectTransformation"));
- return s_sNameProperty;
- }
-
- const ::rtl::OUString& getNamePropertyViewTransformation()
- {
- static ::rtl::OUString s_sNameProperty(RTL_CONSTASCII_USTRINGPARAM("ViewTransformation"));
- return s_sNameProperty;
- }
-
- const ::rtl::OUString& getNamePropertyViewport()
- {
- static ::rtl::OUString s_sNameProperty(RTL_CONSTASCII_USTRINGPARAM("Viewport"));
- return s_sNameProperty;
- }
-
- const ::rtl::OUString& getNamePropertyTime()
- {
- static ::rtl::OUString s_sNameProperty(RTL_CONSTASCII_USTRINGPARAM("Time"));
- return s_sNameProperty;
- }
-
- const ::rtl::OUString& getNamePropertyVisualizedPage()
- {
- static ::rtl::OUString s_sNameProperty(RTL_CONSTASCII_USTRINGPARAM("VisualizedPage"));
- return s_sNameProperty;
- }
-
- const ::rtl::OUString& getNamePropertyReducedDisplayQuality()
- {
- static ::rtl::OUString s_sNameProperty(RTL_CONSTASCII_USTRINGPARAM("ReducedDisplayQuality"));
- return s_sNameProperty;
- }
-
- void impInterpretPropertyValues(const uno::Sequence< beans::PropertyValue >& rViewParameters)
- {
- if(rViewParameters.hasElements())
- {
- const sal_Int32 nCount(rViewParameters.getLength());
- sal_Int32 nExtendedInsert(0);
-
- // prepare extended information for filtering. Maximum size is nCount
- mxExtendedInformation.realloc(nCount);
-
- for(sal_Int32 a(0); a < nCount; a++)
- {
- const beans::PropertyValue& rProp = rViewParameters[a];
-
- if(rProp.Name == getNamePropertyReducedDisplayQuality())
- {
- // extra information; add to filtered information
- mxExtendedInformation[nExtendedInsert++] = rProp;
-
- // for performance reasons, also cache content locally
- sal_Bool bSalBool(false);
- rProp.Value >>= bSalBool;
- mbReducedDisplayQuality = bSalBool;
- }
- else if(rProp.Name == getNamePropertyObjectTransformation())
- {
- com::sun::star::geometry::AffineMatrix2D aAffineMatrix2D;
- rProp.Value >>= aAffineMatrix2D;
- basegfx::unotools::homMatrixFromAffineMatrix(maObjectTransformation, aAffineMatrix2D);
- }
- else if(rProp.Name == getNamePropertyViewTransformation())
- {
- com::sun::star::geometry::AffineMatrix2D aAffineMatrix2D;
- rProp.Value >>= aAffineMatrix2D;
- basegfx::unotools::homMatrixFromAffineMatrix(maViewTransformation, aAffineMatrix2D);
- }
- else if(rProp.Name == getNamePropertyViewport())
- {
- com::sun::star::geometry::RealRectangle2D aViewport;
- rProp.Value >>= aViewport;
- maViewport = basegfx::unotools::b2DRectangleFromRealRectangle2D(aViewport);
- }
- else if(rProp.Name == getNamePropertyTime())
- {
- rProp.Value >>= mfViewTime;
- }
- else if(rProp.Name == getNamePropertyVisualizedPage())
- {
- rProp.Value >>= mxVisualizedPage;
- }
- else
- {
- // extra information; add to filtered information
- mxExtendedInformation[nExtendedInsert++] = rProp;
- }
- }
-
- // extra information size is now known; realloc to final size
- mxExtendedInformation.realloc(nExtendedInsert);
- }
- }
-
- void impFillViewInformationFromContent()
- {
- uno::Sequence< beans::PropertyValue > xRetval;
- const bool bObjectTransformationUsed(!maObjectTransformation.isIdentity());
- const bool bViewTransformationUsed(!maViewTransformation.isIdentity());
- const bool bViewportUsed(!maViewport.isEmpty());
- const bool bTimeUsed(0.0 < mfViewTime);
- const bool bVisualizedPageUsed(mxVisualizedPage.is());
- const bool bReducedDisplayQualityUsed(true == mbReducedDisplayQuality);
- const bool bExtraInformation(mxExtendedInformation.hasElements());
- sal_uInt32 nIndex(0);
- const sal_uInt32 nCount(
- (bObjectTransformationUsed ? 1 : 0) +
- (bViewTransformationUsed ? 1 : 0) +
- (bViewportUsed ? 1 : 0) +
- (bTimeUsed ? 1 : 0) +
- (bVisualizedPageUsed ? 1 : 0) +
- (bReducedDisplayQualityUsed ? 1 : 0) +
- (bExtraInformation ? mxExtendedInformation.getLength() : 0));
-
- mxViewInformation.realloc(nCount);
-
- if(bObjectTransformationUsed)
- {
- com::sun::star::geometry::AffineMatrix2D aAffineMatrix2D;
- basegfx::unotools::affineMatrixFromHomMatrix(aAffineMatrix2D, maObjectTransformation);
- mxViewInformation[nIndex].Name = getNamePropertyObjectTransformation();
- mxViewInformation[nIndex].Value <<= aAffineMatrix2D;
- nIndex++;
- }
-
- if(bViewTransformationUsed)
- {
- com::sun::star::geometry::AffineMatrix2D aAffineMatrix2D;
- basegfx::unotools::affineMatrixFromHomMatrix(aAffineMatrix2D, maViewTransformation);
- mxViewInformation[nIndex].Name = getNamePropertyViewTransformation();
- mxViewInformation[nIndex].Value <<= aAffineMatrix2D;
- nIndex++;
- }
-
- if(bViewportUsed)
- {
- const com::sun::star::geometry::RealRectangle2D aViewport(basegfx::unotools::rectangle2DFromB2DRectangle(maViewport));
- mxViewInformation[nIndex].Name = getNamePropertyViewport();
- mxViewInformation[nIndex].Value <<= aViewport;
- nIndex++;
- }
-
- if(bTimeUsed)
- {
- mxViewInformation[nIndex].Name = getNamePropertyTime();
- mxViewInformation[nIndex].Value <<= mfViewTime;
- nIndex++;
- }
-
- if(bVisualizedPageUsed)
- {
- mxViewInformation[nIndex].Name = getNamePropertyVisualizedPage();
- mxViewInformation[nIndex].Value <<= mxVisualizedPage;
- nIndex++;
- }
-
- if(bExtraInformation)
- {
- const sal_Int32 nExtra(mxExtendedInformation.getLength());
-
- for(sal_Int32 a(0); a < nExtra; a++)
- {
- mxViewInformation[nIndex++] = mxExtendedInformation[a];
- }
- }
- }
-
- public:
- ImpViewInformation2D(
- const basegfx::B2DHomMatrix& rObjectTransformation,
- const basegfx::B2DHomMatrix& rViewTransformation,
- const basegfx::B2DRange& rViewport,
- const uno::Reference< drawing::XDrawPage >& rxDrawPage,
- double fViewTime,
- const uno::Sequence< beans::PropertyValue >& rExtendedParameters)
- : mnRefCount(0),
- maObjectTransformation(rObjectTransformation),
- maViewTransformation(rViewTransformation),
- maObjectToViewTransformation(),
- maInverseObjectToViewTransformation(),
- maViewport(rViewport),
- maDiscreteViewport(),
- mxVisualizedPage(rxDrawPage),
- mfViewTime(fViewTime),
- mbReducedDisplayQuality(false),
- mxViewInformation(),
- mxExtendedInformation()
- {
- impInterpretPropertyValues(rExtendedParameters);
- }
-
- ImpViewInformation2D(const uno::Sequence< beans::PropertyValue >& rViewParameters)
- : mnRefCount(0),
- maObjectTransformation(),
- maViewTransformation(),
- maObjectToViewTransformation(),
- maInverseObjectToViewTransformation(),
- maViewport(),
- maDiscreteViewport(),
- mxVisualizedPage(),
- mfViewTime(),
- mbReducedDisplayQuality(false),
- mxViewInformation(rViewParameters),
- mxExtendedInformation()
- {
- impInterpretPropertyValues(rViewParameters);
- }
-
- ImpViewInformation2D()
- : mnRefCount(0),
- maObjectTransformation(),
- maViewTransformation(),
- maObjectToViewTransformation(),
- maInverseObjectToViewTransformation(),
- maViewport(),
- maDiscreteViewport(),
- mxVisualizedPage(),
- mfViewTime(),
- mbReducedDisplayQuality(false),
- mxViewInformation(),
- mxExtendedInformation()
- {
- }
-
- const basegfx::B2DHomMatrix& getObjectTransformation() const
- {
- return maObjectTransformation;
- }
-
- const basegfx::B2DHomMatrix& getViewTransformation() const
- {
- return maViewTransformation;
- }
-
- const basegfx::B2DRange& getViewport() const
- {
- return maViewport;
- }
-
- const basegfx::B2DRange& getDiscreteViewport() const
- {
- ::osl::Mutex m_mutex;
-
- if(maDiscreteViewport.isEmpty() && !maViewport.isEmpty())
- {
- basegfx::B2DRange aDiscreteViewport(maViewport);
- aDiscreteViewport.transform(getViewTransformation());
- const_cast< ImpViewInformation2D* >(this)->maDiscreteViewport = aDiscreteViewport;
- }
-
- return maDiscreteViewport;
- }
-
- const basegfx::B2DHomMatrix& getObjectToViewTransformation() const
- {
- ::osl::Mutex m_mutex;
-
- if(maObjectToViewTransformation.isIdentity() &&
- (!maObjectTransformation.isIdentity() || !maViewTransformation.isIdentity()))
- {
- basegfx::B2DHomMatrix aObjectToView(maViewTransformation * maObjectTransformation);
- const_cast< ImpViewInformation2D* >(this)->maObjectToViewTransformation = aObjectToView;
- }
-
- return maObjectToViewTransformation;
- }
-
- const basegfx::B2DHomMatrix& getInverseObjectToViewTransformation() const
- {
- ::osl::Mutex m_mutex;
-
- if(maInverseObjectToViewTransformation.isIdentity() &&
- (!maObjectTransformation.isIdentity() || !maViewTransformation.isIdentity()))
- {
- basegfx::B2DHomMatrix aInverseObjectToView(maViewTransformation * maObjectTransformation);
- aInverseObjectToView.invert();
- const_cast< ImpViewInformation2D* >(this)->maInverseObjectToViewTransformation = aInverseObjectToView;
- }
-
- return maInverseObjectToViewTransformation;
- }
-
- double getViewTime() const
- {
- return mfViewTime;
- }
-
- const uno::Reference< drawing::XDrawPage >& getVisualizedPage() const
- {
- return mxVisualizedPage;
- }
-
- bool getReducedDisplayQuality() const
- {
- return mbReducedDisplayQuality;
- }
-
- const uno::Sequence< beans::PropertyValue >& getViewInformationSequence() const
- {
- if(!mxViewInformation.hasElements())
- {
- const_cast< ImpViewInformation2D* >(this)->impFillViewInformationFromContent();
- }
-
- return mxViewInformation;
- }
-
- const uno::Sequence< beans::PropertyValue >& getExtendedInformationSequence() const
- {
- return mxExtendedInformation;
- }
-
- bool operator==(const ImpViewInformation2D& rCandidate) const
- {
- return (maObjectTransformation == rCandidate.maObjectTransformation
- && maViewTransformation == rCandidate.maViewTransformation
- && maViewport == rCandidate.maViewport
- && mxVisualizedPage == rCandidate.mxVisualizedPage
- && mfViewTime == rCandidate.mfViewTime
- && mxExtendedInformation == rCandidate.mxExtendedInformation);
- }
-
- static ImpViewInformation2D* get_global_default()
- {
- static ImpViewInformation2D* pDefault = 0;
-
- if(!pDefault)
- {
- pDefault = new ImpViewInformation2D();
-
- // never delete; start with RefCount 1, not 0
- pDefault->mnRefCount++;
- }
-
- return pDefault;
- }
- };
- } // end of anonymous namespace
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace geometry
- {
- ViewInformation2D::ViewInformation2D(
- const basegfx::B2DHomMatrix& rObjectTransformation,
- const basegfx::B2DHomMatrix& rViewTransformation,
- const basegfx::B2DRange& rViewport,
- const uno::Reference< drawing::XDrawPage >& rxDrawPage,
- double fViewTime,
- const uno::Sequence< beans::PropertyValue >& rExtendedParameters)
- : mpViewInformation2D(new ImpViewInformation2D(
- rObjectTransformation,
- rViewTransformation,
- rViewport,
- rxDrawPage,
- fViewTime,
- rExtendedParameters))
- {
- }
-
- ViewInformation2D::ViewInformation2D(const uno::Sequence< beans::PropertyValue >& rViewParameters)
- : mpViewInformation2D(new ImpViewInformation2D(rViewParameters))
- {
- }
-
- ViewInformation2D::ViewInformation2D()
- : mpViewInformation2D(ImpViewInformation2D::get_global_default())
- {
- mpViewInformation2D->mnRefCount++;
- }
-
- ViewInformation2D::ViewInformation2D(const ViewInformation2D& rCandidate)
- : mpViewInformation2D(rCandidate.mpViewInformation2D)
- {
- ::osl::Mutex m_mutex;
- mpViewInformation2D->mnRefCount++;
- }
-
- ViewInformation2D::~ViewInformation2D()
- {
- ::osl::Mutex m_mutex;
-
- if(mpViewInformation2D->mnRefCount)
- {
- mpViewInformation2D->mnRefCount--;
- }
- else
- {
- delete mpViewInformation2D;
- }
- }
-
- bool ViewInformation2D::isDefault() const
- {
- return mpViewInformation2D == ImpViewInformation2D::get_global_default();
- }
-
- ViewInformation2D& ViewInformation2D::operator=(const ViewInformation2D& rCandidate)
- {
- ::osl::Mutex m_mutex;
-
- if(mpViewInformation2D->mnRefCount)
- {
- mpViewInformation2D->mnRefCount--;
- }
- else
- {
- delete mpViewInformation2D;
- }
-
- mpViewInformation2D = rCandidate.mpViewInformation2D;
- mpViewInformation2D->mnRefCount++;
-
- return *this;
- }
-
- bool ViewInformation2D::operator==(const ViewInformation2D& rCandidate) const
- {
- if(rCandidate.mpViewInformation2D == mpViewInformation2D)
- {
- return true;
- }
-
- if(rCandidate.isDefault() != isDefault())
- {
- return false;
- }
-
- return (*rCandidate.mpViewInformation2D == *mpViewInformation2D);
- }
-
- const basegfx::B2DHomMatrix& ViewInformation2D::getObjectTransformation() const
- {
- return mpViewInformation2D->getObjectTransformation();
- }
-
- const basegfx::B2DHomMatrix& ViewInformation2D::getViewTransformation() const
- {
- return mpViewInformation2D->getViewTransformation();
- }
-
- const basegfx::B2DRange& ViewInformation2D::getViewport() const
- {
- return mpViewInformation2D->getViewport();
- }
-
- double ViewInformation2D::getViewTime() const
- {
- return mpViewInformation2D->getViewTime();
- }
-
- const uno::Reference< drawing::XDrawPage >& ViewInformation2D::getVisualizedPage() const
- {
- return mpViewInformation2D->getVisualizedPage();
- }
-
- const basegfx::B2DHomMatrix& ViewInformation2D::getObjectToViewTransformation() const
- {
- return mpViewInformation2D->getObjectToViewTransformation();
- }
-
- const basegfx::B2DHomMatrix& ViewInformation2D::getInverseObjectToViewTransformation() const
- {
- return mpViewInformation2D->getInverseObjectToViewTransformation();
- }
-
- const basegfx::B2DRange& ViewInformation2D::getDiscreteViewport() const
- {
- return mpViewInformation2D->getDiscreteViewport();
- }
-
- bool ViewInformation2D::getReducedDisplayQuality() const
- {
- return mpViewInformation2D->getReducedDisplayQuality();
- }
-
- const uno::Sequence< beans::PropertyValue >& ViewInformation2D::getViewInformationSequence() const
- {
- return mpViewInformation2D->getViewInformationSequence();
- }
-
- const uno::Sequence< beans::PropertyValue >& ViewInformation2D::getExtendedInformationSequence() const
- {
- return mpViewInformation2D->getExtendedInformationSequence();
- }
- } // end of namespace geometry
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/geometry/viewinformation3d.cxx b/drawinglayer/source/geometry/viewinformation3d.cxx
deleted file mode 100644
index ef2fa0da09..0000000000
--- a/drawinglayer/source/geometry/viewinformation3d.cxx
+++ /dev/null
@@ -1,602 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/geometry/viewinformation3d.hxx>
-#include <basegfx/range/b3drange.hxx>
-#include <basegfx/matrix/b3dhommatrix.hxx>
-#include <com/sun/star/geometry/AffineMatrix3D.hpp>
-#include <com/sun/star/geometry/RealRectangle3D.hpp>
-#include <basegfx/tools/canvastools.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-using namespace com::sun::star;
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace geometry
- {
- /** Implementation class for ViewInformation3D
- */
- class ImpViewInformation3D
- {
- private:
- // ViewInformation3D implementation can change refcount, so we have only
- // two memory regions for pairs of ViewInformation3D/ImpViewInformation3D
- friend class ::drawinglayer::geometry::ViewInformation3D;
-
- // the refcounter. 0 means exclusively used
- sal_uInt32 mnRefCount;
-
- // the 3D transformations
- // Object to World. This may change and being adapted when entering 3D transformation
- // groups
- basegfx::B3DHomMatrix maObjectTransformation;
-
- // World to Camera. This includes VRP, VPN and VUV camera coordinate system
- basegfx::B3DHomMatrix maOrientation;
-
- // Camera to Device with X,Y and Z [-1.0 .. 1.0]. This is the
- // 3D to 2D projection which may be parallell or perspective. When it is perspective,
- // the last line of the homogen matrix will NOT be unused
- basegfx::B3DHomMatrix maProjection;
-
- // Device to View with X,Y and Z [0.0 .. 1.0]. This converts from -1 to 1 coordinates
- // in camera coordinate system to 0 to 1 in unit 2D coordinates. This way it stays
- // view-independent. To get discrete coordinates, the 2D transformation of a scene
- // as 2D object needs to be involved
- basegfx::B3DHomMatrix maDeviceToView;
-
- // Object to View is the linear combination of all four transformations. It's
- // buffered to avoid too much matrix multiplying and created on demand
- basegfx::B3DHomMatrix maObjectToView;
-
- // the point in time
- double mfViewTime;
-
- // the complete PropertyValue representation (if already created)
- uno::Sequence< beans::PropertyValue > mxViewInformation;
-
- // the extra PropertyValues; does not contain the transformations
- uno::Sequence< beans::PropertyValue > mxExtendedInformation;
-
- // the local UNO API strings
- const ::rtl::OUString& getNamePropertyObjectTransformation()
- {
- static ::rtl::OUString s_sNameProperty(RTL_CONSTASCII_USTRINGPARAM("ObjectTransformation"));
- return s_sNameProperty;
- }
-
- const ::rtl::OUString& getNamePropertyOrientation()
- {
- static ::rtl::OUString s_sNameProperty(RTL_CONSTASCII_USTRINGPARAM("Orientation"));
- return s_sNameProperty;
- }
-
- const ::rtl::OUString& getNamePropertyProjection()
- {
- static ::rtl::OUString s_sNameProperty(RTL_CONSTASCII_USTRINGPARAM("Projection"));
- return s_sNameProperty;
- }
-
- const ::rtl::OUString& getNamePropertyProjection_30()
- {
- static ::rtl::OUString s_sNameProperty(RTL_CONSTASCII_USTRINGPARAM("Projection30"));
- return s_sNameProperty;
- }
-
- const ::rtl::OUString& getNamePropertyProjection_31()
- {
- static ::rtl::OUString s_sNameProperty(RTL_CONSTASCII_USTRINGPARAM("Projection31"));
- return s_sNameProperty;
- }
-
- const ::rtl::OUString& getNamePropertyProjection_32()
- {
- static ::rtl::OUString s_sNameProperty(RTL_CONSTASCII_USTRINGPARAM("Projection32"));
- return s_sNameProperty;
- }
-
- const ::rtl::OUString& getNamePropertyProjection_33()
- {
- static ::rtl::OUString s_sNameProperty(RTL_CONSTASCII_USTRINGPARAM("Projection33"));
- return s_sNameProperty;
- }
-
- const ::rtl::OUString& getNamePropertyDeviceToView()
- {
- static ::rtl::OUString s_sNameProperty(RTL_CONSTASCII_USTRINGPARAM("DeviceToView"));
- return s_sNameProperty;
- }
-
- const ::rtl::OUString& getNamePropertyTime()
- {
- static ::rtl::OUString s_sNamePropertyTime(RTL_CONSTASCII_USTRINGPARAM("Time"));
- return s_sNamePropertyTime;
- }
-
- // a central PropertyValue parsing method to allow transportatin of
- // all ViewParameters using UNO API
- void impInterpretPropertyValues(const uno::Sequence< beans::PropertyValue >& rViewParameters)
- {
- if(rViewParameters.hasElements())
- {
- const sal_Int32 nCount(rViewParameters.getLength());
- sal_Int32 nExtendedInsert(0);
-
- // prepare extended information for filtering. Maximum size is nCount
- mxExtendedInformation.realloc(nCount);
-
- for(sal_Int32 a(0); a < nCount; a++)
- {
- const beans::PropertyValue& rProp = rViewParameters[a];
-
- if(rProp.Name == getNamePropertyObjectTransformation())
- {
- com::sun::star::geometry::AffineMatrix3D aAffineMatrix3D;
- rProp.Value >>= aAffineMatrix3D;
- maObjectTransformation = basegfx::unotools::homMatrixFromAffineMatrix3D(aAffineMatrix3D);
- }
- else if(rProp.Name == getNamePropertyOrientation())
- {
- com::sun::star::geometry::AffineMatrix3D aAffineMatrix3D;
- rProp.Value >>= aAffineMatrix3D;
- maOrientation = basegfx::unotools::homMatrixFromAffineMatrix3D(aAffineMatrix3D);
- }
- else if(rProp.Name == getNamePropertyProjection())
- {
- // projection may be defined using a frustum in which case the last line of
- // the 4x4 matrix is not (0,0,0,1). Since AffineMatrix3D does not support that,
- // these four values need to be treated extra
- const double f_30(maProjection.get(3, 0));
- const double f_31(maProjection.get(3, 1));
- const double f_32(maProjection.get(3, 2));
- const double f_33(maProjection.get(3, 3));
-
- com::sun::star::geometry::AffineMatrix3D aAffineMatrix3D;
- rProp.Value >>= aAffineMatrix3D;
- maProjection = basegfx::unotools::homMatrixFromAffineMatrix3D(aAffineMatrix3D);
-
- maProjection.set(3, 0, f_30);
- maProjection.set(3, 1, f_31);
- maProjection.set(3, 2, f_32);
- maProjection.set(3, 3, f_33);
- }
- else if(rProp.Name == getNamePropertyProjection_30())
- {
- double f_30(0.0);
- rProp.Value >>= f_30;
- maProjection.set(3, 0, f_30);
- }
- else if(rProp.Name == getNamePropertyProjection_31())
- {
- double f_31(0.0);
- rProp.Value >>= f_31;
- maProjection.set(3, 1, f_31);
- }
- else if(rProp.Name == getNamePropertyProjection_32())
- {
- double f_32(0.0);
- rProp.Value >>= f_32;
- maProjection.set(3, 2, f_32);
- }
- else if(rProp.Name == getNamePropertyProjection_33())
- {
- double f_33(1.0);
- rProp.Value >>= f_33;
- maProjection.set(3, 3, f_33);
- }
- else if(rProp.Name == getNamePropertyDeviceToView())
- {
- com::sun::star::geometry::AffineMatrix3D aAffineMatrix3D;
- rProp.Value >>= aAffineMatrix3D;
- maDeviceToView = basegfx::unotools::homMatrixFromAffineMatrix3D(aAffineMatrix3D);
- }
- else if(rProp.Name == getNamePropertyTime())
- {
- rProp.Value >>= mfViewTime;
- }
- else
- {
- // extra information; add to filtered information
- mxExtendedInformation[nExtendedInsert++] = rProp;
- }
- }
-
- // extra information size is now known; realloc to final size
- mxExtendedInformation.realloc(nExtendedInsert);
- }
- }
-
- // central method to create a Sequence of PropertyValues containing he complete
- // data set
- void impFillViewInformationFromContent()
- {
- uno::Sequence< beans::PropertyValue > xRetval;
- const bool bObjectTransformationUsed(!maObjectTransformation.isIdentity());
- const bool bOrientationUsed(!maOrientation.isIdentity());
- const bool bProjectionUsed(!maProjection.isIdentity());
- const bool bDeviceToViewUsed(!maDeviceToView.isIdentity());
- const bool bTimeUsed(0.0 < mfViewTime);
- const bool bExtraInformation(mxExtendedInformation.hasElements());
-
- // projection may be defined using a frustum in which case the last line of
- // the 4x4 matrix is not (0,0,0,1). Since AffineMatrix3D does not support that,
- // these four values need to be treated extra
- const bool bProjectionUsed_30(bProjectionUsed && !basegfx::fTools::equalZero(maProjection.get(3, 0)));
- const bool bProjectionUsed_31(bProjectionUsed && !basegfx::fTools::equalZero(maProjection.get(3, 1)));
- const bool bProjectionUsed_32(bProjectionUsed && !basegfx::fTools::equalZero(maProjection.get(3, 2)));
- const bool bProjectionUsed_33(bProjectionUsed && !basegfx::fTools::equal(maProjection.get(3, 3), 1.0));
-
- sal_uInt32 nIndex(0);
- const sal_uInt32 nCount(
- (bObjectTransformationUsed ? 1 : 0) +
- (bOrientationUsed ? 1 : 0) +
- (bProjectionUsed ? 1 : 0) +
- (bProjectionUsed_30 ? 1 : 0) +
- (bProjectionUsed_31 ? 1 : 0) +
- (bProjectionUsed_32 ? 1 : 0) +
- (bProjectionUsed_33 ? 1 : 0) +
- (bDeviceToViewUsed ? 1 : 0) +
- (bTimeUsed ? 1 : 0) +
- (bExtraInformation ? mxExtendedInformation.getLength() : 0));
-
- mxViewInformation.realloc(nCount);
-
- if(bObjectTransformationUsed)
- {
- com::sun::star::geometry::AffineMatrix3D aAffineMatrix3D;
- basegfx::unotools::affineMatrixFromHomMatrix3D(aAffineMatrix3D, maObjectTransformation);
- mxViewInformation[nIndex].Name = getNamePropertyObjectTransformation();
- mxViewInformation[nIndex].Value <<= aAffineMatrix3D;
- nIndex++;
- }
-
- if(bOrientationUsed)
- {
- com::sun::star::geometry::AffineMatrix3D aAffineMatrix3D;
- basegfx::unotools::affineMatrixFromHomMatrix3D(aAffineMatrix3D, maOrientation);
- mxViewInformation[nIndex].Name = getNamePropertyOrientation();
- mxViewInformation[nIndex].Value <<= aAffineMatrix3D;
- nIndex++;
- }
-
- if(bProjectionUsed)
- {
- com::sun::star::geometry::AffineMatrix3D aAffineMatrix3D;
- basegfx::unotools::affineMatrixFromHomMatrix3D(aAffineMatrix3D, maProjection);
- mxViewInformation[nIndex].Name = getNamePropertyProjection();
- mxViewInformation[nIndex].Value <<= aAffineMatrix3D;
- nIndex++;
- }
-
- if(bProjectionUsed_30)
- {
- mxViewInformation[nIndex].Name = getNamePropertyProjection_30();
- mxViewInformation[nIndex].Value <<= maProjection.get(3, 0);
- nIndex++;
- }
-
- if(bProjectionUsed_31)
- {
- mxViewInformation[nIndex].Name = getNamePropertyProjection_31();
- mxViewInformation[nIndex].Value <<= maProjection.get(3, 1);
- nIndex++;
- }
-
- if(bProjectionUsed_32)
- {
- mxViewInformation[nIndex].Name = getNamePropertyProjection_32();
- mxViewInformation[nIndex].Value <<= maProjection.get(3, 2);
- nIndex++;
- }
-
- if(bProjectionUsed_33)
- {
- mxViewInformation[nIndex].Name = getNamePropertyProjection_33();
- mxViewInformation[nIndex].Value <<= maProjection.get(3, 3);
- nIndex++;
- }
-
- if(bDeviceToViewUsed)
- {
- com::sun::star::geometry::AffineMatrix3D aAffineMatrix3D;
- basegfx::unotools::affineMatrixFromHomMatrix3D(aAffineMatrix3D, maDeviceToView);
- mxViewInformation[nIndex].Name = getNamePropertyDeviceToView();
- mxViewInformation[nIndex].Value <<= aAffineMatrix3D;
- nIndex++;
- }
-
- if(bTimeUsed)
- {
- mxViewInformation[nIndex].Name = getNamePropertyTime();
- mxViewInformation[nIndex].Value <<= mfViewTime;
- nIndex++;
- }
-
- if(bExtraInformation)
- {
- const sal_Int32 nExtra(mxExtendedInformation.getLength());
-
- for(sal_Int32 a(0); a < nExtra; a++)
- {
- mxViewInformation[nIndex++] = mxExtendedInformation[a];
- }
- }
- }
-
- public:
- ImpViewInformation3D(
- const basegfx::B3DHomMatrix& rObjectTransformation,
- const basegfx::B3DHomMatrix& rOrientation,
- const basegfx::B3DHomMatrix& rProjection,
- const basegfx::B3DHomMatrix& rDeviceToView,
- double fViewTime,
- const uno::Sequence< beans::PropertyValue >& rExtendedParameters)
- : mnRefCount(0),
- maObjectTransformation(rObjectTransformation),
- maOrientation(rOrientation),
- maProjection(rProjection),
- maDeviceToView(rDeviceToView),
- mfViewTime(fViewTime),
- mxViewInformation(),
- mxExtendedInformation()
- {
- impInterpretPropertyValues(rExtendedParameters);
- }
-
- ImpViewInformation3D(const uno::Sequence< beans::PropertyValue >& rViewParameters)
- : mnRefCount(0),
- maObjectTransformation(),
- maOrientation(),
- maProjection(),
- maDeviceToView(),
- mfViewTime(),
- mxViewInformation(rViewParameters),
- mxExtendedInformation()
- {
- impInterpretPropertyValues(rViewParameters);
- }
-
- ImpViewInformation3D()
- : mnRefCount(0),
- maObjectTransformation(),
- maOrientation(),
- maProjection(),
- maDeviceToView(),
- mfViewTime(),
- mxViewInformation(),
- mxExtendedInformation()
- {
- }
-
- const basegfx::B3DHomMatrix& getObjectTransformation() const { return maObjectTransformation; }
- const basegfx::B3DHomMatrix& getOrientation() const { return maOrientation; }
- const basegfx::B3DHomMatrix& getProjection() const { return maProjection; }
- const basegfx::B3DHomMatrix& getDeviceToView() const { return maDeviceToView; }
- double getViewTime() const { return mfViewTime; }
-
- const basegfx::B3DHomMatrix& getObjectToView() const
- {
- // on demand WorldToView creation
- ::osl::Mutex m_mutex;
-
- if(maObjectToView.isIdentity())
- {
- const_cast< ImpViewInformation3D* >(this)->maObjectToView = maDeviceToView * maProjection * maOrientation * maObjectTransformation;
- }
-
- return maObjectToView;
- }
-
- const uno::Sequence< beans::PropertyValue >& getViewInformationSequence() const
- {
- ::osl::Mutex m_mutex;
-
- if(!mxViewInformation.hasElements())
- {
- const_cast< ImpViewInformation3D* >(this)->impFillViewInformationFromContent();
- }
-
- return mxViewInformation;
- }
-
- const uno::Sequence< beans::PropertyValue >& getExtendedInformationSequence() const
- {
- return mxExtendedInformation;
- }
-
- bool operator==(const ImpViewInformation3D& rCandidate) const
- {
- return (maObjectTransformation == rCandidate.maObjectTransformation
- && maOrientation == rCandidate.maOrientation
- && maProjection == rCandidate.maProjection
- && maDeviceToView == rCandidate.maDeviceToView
- && mfViewTime == rCandidate.mfViewTime
- && mxExtendedInformation == rCandidate.mxExtendedInformation);
- }
-
- static ImpViewInformation3D* get_global_default()
- {
- static ImpViewInformation3D* pDefault = 0;
-
- if(!pDefault)
- {
- pDefault = new ImpViewInformation3D();
-
- // never delete; start with RefCount 1, not 0
- pDefault->mnRefCount++;
- }
-
- return pDefault;
- }
- };
- } // end of anonymous namespace
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace geometry
- {
- ViewInformation3D::ViewInformation3D(
- const basegfx::B3DHomMatrix& rObjectObjectTransformation,
- const basegfx::B3DHomMatrix& rOrientation,
- const basegfx::B3DHomMatrix& rProjection,
- const basegfx::B3DHomMatrix& rDeviceToView,
- double fViewTime,
- const uno::Sequence< beans::PropertyValue >& rExtendedParameters)
- : mpViewInformation3D(new ImpViewInformation3D(
- rObjectObjectTransformation, rOrientation, rProjection,
- rDeviceToView, fViewTime, rExtendedParameters))
- {
- }
-
- ViewInformation3D::ViewInformation3D(const uno::Sequence< beans::PropertyValue >& rViewParameters)
- : mpViewInformation3D(new ImpViewInformation3D(rViewParameters))
- {
- }
-
- ViewInformation3D::ViewInformation3D()
- : mpViewInformation3D(ImpViewInformation3D::get_global_default())
- {
- mpViewInformation3D->mnRefCount++;
- }
-
- ViewInformation3D::ViewInformation3D(const ViewInformation3D& rCandidate)
- : mpViewInformation3D(rCandidate.mpViewInformation3D)
- {
- ::osl::Mutex m_mutex;
- mpViewInformation3D->mnRefCount++;
- }
-
- ViewInformation3D::~ViewInformation3D()
- {
- ::osl::Mutex m_mutex;
-
- if(mpViewInformation3D->mnRefCount)
- {
- mpViewInformation3D->mnRefCount--;
- }
- else
- {
- delete mpViewInformation3D;
- }
- }
-
- bool ViewInformation3D::isDefault() const
- {
- return mpViewInformation3D == ImpViewInformation3D::get_global_default();
- }
-
- ViewInformation3D& ViewInformation3D::operator=(const ViewInformation3D& rCandidate)
- {
- ::osl::Mutex m_mutex;
-
- if(mpViewInformation3D->mnRefCount)
- {
- mpViewInformation3D->mnRefCount--;
- }
- else
- {
- delete mpViewInformation3D;
- }
-
- mpViewInformation3D = rCandidate.mpViewInformation3D;
- mpViewInformation3D->mnRefCount++;
-
- return *this;
- }
-
- bool ViewInformation3D::operator==(const ViewInformation3D& rCandidate) const
- {
- if(rCandidate.mpViewInformation3D == mpViewInformation3D)
- {
- return true;
- }
-
- if(rCandidate.isDefault() != isDefault())
- {
- return false;
- }
-
- return (*rCandidate.mpViewInformation3D == *mpViewInformation3D);
- }
-
- const basegfx::B3DHomMatrix& ViewInformation3D::getObjectTransformation() const
- {
- return mpViewInformation3D->getObjectTransformation();
- }
-
- const basegfx::B3DHomMatrix& ViewInformation3D::getOrientation() const
- {
- return mpViewInformation3D->getOrientation();
- }
-
- const basegfx::B3DHomMatrix& ViewInformation3D::getProjection() const
- {
- return mpViewInformation3D->getProjection();
- }
-
- const basegfx::B3DHomMatrix& ViewInformation3D::getDeviceToView() const
- {
- return mpViewInformation3D->getDeviceToView();
- }
-
- const basegfx::B3DHomMatrix& ViewInformation3D::getObjectToView() const
- {
- return mpViewInformation3D->getObjectToView();
- }
-
- double ViewInformation3D::getViewTime() const
- {
- return mpViewInformation3D->getViewTime();
- }
-
- const uno::Sequence< beans::PropertyValue >& ViewInformation3D::getViewInformationSequence() const
- {
- return mpViewInformation3D->getViewInformationSequence();
- }
-
- const uno::Sequence< beans::PropertyValue >& ViewInformation3D::getExtendedInformationSequence() const
- {
- return mpViewInformation3D->getExtendedInformationSequence();
- }
- } // end of namespace geometry
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/primitive2d/animatedprimitive2d.cxx b/drawinglayer/source/primitive2d/animatedprimitive2d.cxx
deleted file mode 100644
index 75544c0079..0000000000
--- a/drawinglayer/source/primitive2d/animatedprimitive2d.cxx
+++ /dev/null
@@ -1,227 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/primitive2d/animatedprimitive2d.hxx>
-#include <drawinglayer/animation/animationtiming.hxx>
-#include <drawinglayer/primitive2d/transformprimitive2d.hxx>
-#include <drawinglayer/geometry/viewinformation2d.hxx>
-#include <drawinglayer/primitive2d/drawinglayer_primitivetypes2d.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-using namespace com::sun::star;
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- AnimatedSwitchPrimitive2D::AnimatedSwitchPrimitive2D(
- const animation::AnimationEntry& rAnimationEntry,
- const Primitive2DSequence& rChildren,
- bool bIsTextAnimation)
- : GroupPrimitive2D(rChildren),
- mpAnimationEntry(0),
- mbIsTextAnimation(bIsTextAnimation)
- {
- // clone given animation description
- mpAnimationEntry = rAnimationEntry.clone();
- }
-
- AnimatedSwitchPrimitive2D::~AnimatedSwitchPrimitive2D()
- {
- // delete cloned animation description
- delete mpAnimationEntry;
- }
-
- bool AnimatedSwitchPrimitive2D::operator==(const BasePrimitive2D& rPrimitive) const
- {
- if(GroupPrimitive2D::operator==(rPrimitive))
- {
- const AnimatedSwitchPrimitive2D& rCompare = static_cast< const AnimatedSwitchPrimitive2D& >(rPrimitive);
-
- return (getAnimationEntry() == rCompare.getAnimationEntry());
- }
-
- return false;
- }
-
- Primitive2DSequence AnimatedSwitchPrimitive2D::get2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const
- {
- if(getChildren().hasElements())
- {
- const double fState(getAnimationEntry().getStateAtTime(rViewInformation.getViewTime()));
- const sal_uInt32 nLen(getChildren().getLength());
- sal_uInt32 nIndex(basegfx::fround(fState * (double)nLen));
-
- if(nIndex >= nLen)
- {
- nIndex = nLen - 1L;
- }
-
- const Primitive2DReference xRef(getChildren()[nIndex], uno::UNO_QUERY_THROW);
- return Primitive2DSequence(&xRef, 1L);
- }
-
- return Primitive2DSequence();
- }
-
- // provide unique ID
- ImplPrimitrive2DIDBlock(AnimatedSwitchPrimitive2D, PRIMITIVE2D_ID_ANIMATEDSWITCHPRIMITIVE2D)
-
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- AnimatedBlinkPrimitive2D::AnimatedBlinkPrimitive2D(
- const animation::AnimationEntry& rAnimationEntry,
- const Primitive2DSequence& rChildren,
- bool bIsTextAnimation)
- : AnimatedSwitchPrimitive2D(rAnimationEntry, rChildren, bIsTextAnimation)
- {
- }
-
- Primitive2DSequence AnimatedBlinkPrimitive2D::get2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const
- {
- if(getChildren().hasElements())
- {
- const double fState(getAnimationEntry().getStateAtTime(rViewInformation.getViewTime()));
-
- if(fState < 0.5)
- {
- return getChildren();
- }
- }
-
- return Primitive2DSequence();
- }
-
- // provide unique ID
- ImplPrimitrive2DIDBlock(AnimatedBlinkPrimitive2D, PRIMITIVE2D_ID_ANIMATEDBLINKPRIMITIVE2D)
-
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- AnimatedInterpolatePrimitive2D::AnimatedInterpolatePrimitive2D(
- const std::vector< basegfx::B2DHomMatrix >& rmMatrixStack,
- const animation::AnimationEntry& rAnimationEntry,
- const Primitive2DSequence& rChildren,
- bool bIsTextAnimation)
- : AnimatedSwitchPrimitive2D(rAnimationEntry, rChildren, bIsTextAnimation),
- maMatrixStack()
- {
- // copy matrices to locally pre-decomposed matrix stack
- const sal_uInt32 nCount(rmMatrixStack.size());
- maMatrixStack.reserve(nCount);
-
- for(sal_uInt32 a(0L); a < nCount; a++)
- {
- maMatrixStack.push_back(basegfx::tools::B2DHomMatrixBufferedDecompose(rmMatrixStack[a]));
- }
- }
-
- Primitive2DSequence AnimatedInterpolatePrimitive2D::get2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const
- {
- const sal_uInt32 nSize(maMatrixStack.size());
-
- if(nSize)
- {
- double fState(getAnimationEntry().getStateAtTime(rViewInformation.getViewTime()));
-
- if(fState < 0.0)
- {
- fState = 0.0;
- }
- else if(fState > 1.0)
- {
- fState = 1.0;
- }
-
- const double fIndex(fState * (double)(nSize - 1L));
- const sal_uInt32 nIndA(sal_uInt32(floor(fIndex)));
- const double fOffset(fIndex - (double)nIndA);
- basegfx::B2DHomMatrix aTargetTransform;
- std::vector< basegfx::tools::B2DHomMatrixBufferedDecompose >::const_iterator aMatA(maMatrixStack.begin() + nIndA);
-
- if(basegfx::fTools::equalZero(fOffset))
- {
- // use matrix from nIndA directly
- aTargetTransform = aMatA->getB2DHomMatrix();
- }
- else
- {
- // interpolate. Get involved buffered decomposed matrices
- const sal_uInt32 nIndB((nIndA + 1L) % nSize);
- std::vector< basegfx::tools::B2DHomMatrixBufferedDecompose >::const_iterator aMatB(maMatrixStack.begin() + nIndB);
-
- // interpolate for fOffset [0.0 .. 1.0[
- const basegfx::B2DVector aScale(basegfx::interpolate(aMatA->getScale(), aMatB->getScale(), fOffset));
- const basegfx::B2DVector aTranslate(basegfx::interpolate(aMatA->getTranslate(), aMatB->getTranslate(), fOffset));
- const double fRotate(((aMatB->getRotate() - aMatA->getRotate()) * fOffset) + aMatA->getRotate());
- const double fShearX(((aMatB->getShearX() - aMatA->getShearX()) * fOffset) + aMatA->getShearX());
-
- // build matrix for state
- aTargetTransform = basegfx::tools::createScaleShearXRotateTranslateB2DHomMatrix(
- aScale, fShearX, fRotate, aTranslate);
- }
-
- // create new transform primitive reference, return new sequence
- const Primitive2DReference xRef(new TransformPrimitive2D(aTargetTransform, getChildren()));
- return Primitive2DSequence(&xRef, 1L);
- }
- else
- {
- return getChildren();
- }
- }
-
- // provide unique ID
- ImplPrimitrive2DIDBlock(AnimatedInterpolatePrimitive2D, PRIMITIVE2D_ID_ANIMATEDINTERPOLATEPRIMITIVE2D)
-
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/primitive2d/backgroundcolorprimitive2d.cxx b/drawinglayer/source/primitive2d/backgroundcolorprimitive2d.cxx
deleted file mode 100644
index fd73f52ccf..0000000000
--- a/drawinglayer/source/primitive2d/backgroundcolorprimitive2d.cxx
+++ /dev/null
@@ -1,119 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/primitive2d/backgroundcolorprimitive2d.hxx>
-#include <basegfx/polygon/b2dpolygon.hxx>
-#include <basegfx/polygon/b2dpolygontools.hxx>
-#include <drawinglayer/primitive2d/polypolygonprimitive2d.hxx>
-#include <basegfx/tools/canvastools.hxx>
-#include <drawinglayer/geometry/viewinformation2d.hxx>
-#include <drawinglayer/primitive2d/drawinglayer_primitivetypes2d.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-using namespace com::sun::star;
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- Primitive2DSequence BackgroundColorPrimitive2D::create2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const
- {
- if(!rViewInformation.getViewport().isEmpty())
- {
- const basegfx::B2DPolygon aOutline(basegfx::tools::createPolygonFromRect(rViewInformation.getViewport()));
- const Primitive2DReference xRef(new PolyPolygonColorPrimitive2D(basegfx::B2DPolyPolygon(aOutline), getBColor()));
- return Primitive2DSequence(&xRef, 1L);
- }
- else
- {
- return Primitive2DSequence();
- }
- }
-
- BackgroundColorPrimitive2D::BackgroundColorPrimitive2D(
- const basegfx::BColor& rBColor)
- : BufferedDecompositionPrimitive2D(),
- maBColor(rBColor),
- maLastViewport()
- {
- }
-
- bool BackgroundColorPrimitive2D::operator==(const BasePrimitive2D& rPrimitive) const
- {
- if(BufferedDecompositionPrimitive2D::operator==(rPrimitive))
- {
- const BackgroundColorPrimitive2D& rCompare = (BackgroundColorPrimitive2D&)rPrimitive;
-
- return (getBColor() == rCompare.getBColor());
- }
-
- return false;
- }
-
- basegfx::B2DRange BackgroundColorPrimitive2D::getB2DRange(const geometry::ViewInformation2D& rViewInformation) const
- {
- // always as big as the view
- return rViewInformation.getViewport();
- }
-
- Primitive2DSequence BackgroundColorPrimitive2D::get2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const
- {
- ::osl::MutexGuard aGuard( m_aMutex );
-
- if(getBuffered2DDecomposition().hasElements() && (maLastViewport != rViewInformation.getViewport()))
- {
- // conditions of last local decomposition have changed, delete
- const_cast< BackgroundColorPrimitive2D* >(this)->setBuffered2DDecomposition(Primitive2DSequence());
- }
-
- if(!getBuffered2DDecomposition().hasElements())
- {
- // remember ViewRange
- const_cast< BackgroundColorPrimitive2D* >(this)->maLastViewport = rViewInformation.getViewport();
- }
-
- // use parent implementation
- return BufferedDecompositionPrimitive2D::get2DDecomposition(rViewInformation);
- }
-
- // provide unique ID
- ImplPrimitrive2DIDBlock(BackgroundColorPrimitive2D, PRIMITIVE2D_ID_BACKGROUNDCOLORPRIMITIVE2D)
-
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/primitive2d/baseprimitive2d.cxx b/drawinglayer/source/primitive2d/baseprimitive2d.cxx
deleted file mode 100644
index f655fec229..0000000000
--- a/drawinglayer/source/primitive2d/baseprimitive2d.cxx
+++ /dev/null
@@ -1,281 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/primitive2d/baseprimitive2d.hxx>
-#include <drawinglayer/geometry/viewinformation2d.hxx>
-#include <basegfx/tools/canvastools.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-using namespace com::sun::star;
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- BasePrimitive2D::BasePrimitive2D()
- : BasePrimitive2DImplBase(m_aMutex)
- {
- }
-
- BasePrimitive2D::~BasePrimitive2D()
- {
- }
-
- bool BasePrimitive2D::operator==( const BasePrimitive2D& rPrimitive ) const
- {
- return (getPrimitive2DID() == rPrimitive.getPrimitive2DID());
- }
-
- basegfx::B2DRange BasePrimitive2D::getB2DRange(const geometry::ViewInformation2D& rViewInformation) const
- {
- return getB2DRangeFromPrimitive2DSequence(get2DDecomposition(rViewInformation), rViewInformation);
- }
-
- Primitive2DSequence BasePrimitive2D::get2DDecomposition(const geometry::ViewInformation2D& /*rViewInformation*/) const
- {
- return Primitive2DSequence();
- }
-
- Primitive2DSequence SAL_CALL BasePrimitive2D::getDecomposition( const uno::Sequence< beans::PropertyValue >& rViewParameters ) throw ( uno::RuntimeException )
- {
- const geometry::ViewInformation2D aViewInformation(rViewParameters);
- return get2DDecomposition(aViewInformation);
- }
-
- com::sun::star::geometry::RealRectangle2D SAL_CALL BasePrimitive2D::getRange( const uno::Sequence< beans::PropertyValue >& rViewParameters ) throw ( uno::RuntimeException )
- {
- const geometry::ViewInformation2D aViewInformation(rViewParameters);
- return basegfx::unotools::rectangle2DFromB2DRectangle(getB2DRange(aViewInformation));
- }
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- Primitive2DSequence BufferedDecompositionPrimitive2D::create2DDecomposition(const geometry::ViewInformation2D& /*rViewInformation*/) const
- {
- return Primitive2DSequence();
- }
-
- BufferedDecompositionPrimitive2D::BufferedDecompositionPrimitive2D()
- : BasePrimitive2D(),
- maBuffered2DDecomposition()
- {
- }
-
- Primitive2DSequence BufferedDecompositionPrimitive2D::get2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const
- {
- ::osl::MutexGuard aGuard( m_aMutex );
-
- if(!getBuffered2DDecomposition().hasElements())
- {
- const Primitive2DSequence aNewSequence(create2DDecomposition(rViewInformation));
- const_cast< BufferedDecompositionPrimitive2D* >(this)->setBuffered2DDecomposition(aNewSequence);
- }
-
- return getBuffered2DDecomposition();
- }
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// tooling
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- // get B2DRange from a given Primitive2DReference
- basegfx::B2DRange getB2DRangeFromPrimitive2DReference(const Primitive2DReference& rCandidate, const geometry::ViewInformation2D& aViewInformation)
- {
- basegfx::B2DRange aRetval;
-
- if(rCandidate.is())
- {
- // try to get C++ implementation base
- const BasePrimitive2D* pCandidate(dynamic_cast< BasePrimitive2D* >(rCandidate.get()));
-
- if(pCandidate)
- {
- // use it if possible
- aRetval.expand(pCandidate->getB2DRange(aViewInformation));
- }
- else
- {
- // use UNO API call instead
- const uno::Sequence< beans::PropertyValue >& rViewParameters(aViewInformation.getViewInformationSequence());
- aRetval.expand(basegfx::unotools::b2DRectangleFromRealRectangle2D(rCandidate->getRange(rViewParameters)));
- }
- }
-
- return aRetval;
- }
-
- // get B2DRange from a given Primitive2DSequence
- basegfx::B2DRange getB2DRangeFromPrimitive2DSequence(const Primitive2DSequence& rCandidate, const geometry::ViewInformation2D& aViewInformation)
- {
- basegfx::B2DRange aRetval;
-
- if(rCandidate.hasElements())
- {
- const sal_Int32 nCount(rCandidate.getLength());
-
- for(sal_Int32 a(0L); a < nCount; a++)
- {
- aRetval.expand(getB2DRangeFromPrimitive2DReference(rCandidate[a], aViewInformation));
- }
- }
-
- return aRetval;
- }
-
- bool arePrimitive2DReferencesEqual(const Primitive2DReference& rxA, const Primitive2DReference& rxB)
- {
- const sal_Bool bAIs(rxA.is());
-
- if(bAIs != rxB.is())
- {
- return false;
- }
-
- if(!bAIs)
- {
- return true;
- }
-
- const BasePrimitive2D* pA(dynamic_cast< const BasePrimitive2D* >(rxA.get()));
- const BasePrimitive2D* pB(dynamic_cast< const BasePrimitive2D* >(rxB.get()));
- const bool bAEqualZero(pA == 0L);
-
- if(bAEqualZero != (pB == 0L))
- {
- return false;
- }
-
- if(bAEqualZero)
- {
- return false;
- }
-
- return (pA->operator==(*pB));
- }
-
- bool arePrimitive2DSequencesEqual(const Primitive2DSequence& rA, const Primitive2DSequence& rB)
- {
- const sal_Bool bAHasElements(rA.hasElements());
-
- if(bAHasElements != rB.hasElements())
- {
- return false;
- }
-
- if(!bAHasElements)
- {
- return true;
- }
-
- const sal_Int32 nCount(rA.getLength());
-
- if(nCount != rB.getLength())
- {
- return false;
- }
-
- for(sal_Int32 a(0L); a < nCount; a++)
- {
- if(!arePrimitive2DReferencesEqual(rA[a], rB[a]))
- {
- return false;
- }
- }
-
- return true;
- }
-
- // concatenate sequence
- void appendPrimitive2DSequenceToPrimitive2DSequence(Primitive2DSequence& rDest, const Primitive2DSequence& rSource)
- {
- if(rSource.hasElements())
- {
- if(rDest.hasElements())
- {
- const sal_Int32 nSourceCount(rSource.getLength());
- const sal_Int32 nDestCount(rDest.getLength());
- const sal_Int32 nTargetCount(nSourceCount + nDestCount);
- sal_Int32 nInsertPos(nDestCount);
-
- rDest.realloc(nTargetCount);
-
- for(sal_Int32 a(0L); a < nSourceCount; a++)
- {
- if(rSource[a].is())
- {
- rDest[nInsertPos++] = rSource[a];
- }
- }
-
- if(nInsertPos != nTargetCount)
- {
- rDest.realloc(nInsertPos);
- }
- }
- else
- {
- rDest = rSource;
- }
- }
- }
-
- // concatenate single Primitive2D
- void appendPrimitive2DReferenceToPrimitive2DSequence(Primitive2DSequence& rDest, const Primitive2DReference& rSource)
- {
- if(rSource.is())
- {
- const sal_Int32 nDestCount(rDest.getLength());
- rDest.realloc(nDestCount + 1L);
- rDest[nDestCount] = rSource;
- }
- }
-
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/primitive2d/bitmapprimitive2d.cxx b/drawinglayer/source/primitive2d/bitmapprimitive2d.cxx
deleted file mode 100644
index 3efbd0de02..0000000000
--- a/drawinglayer/source/primitive2d/bitmapprimitive2d.cxx
+++ /dev/null
@@ -1,84 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/primitive2d/bitmapprimitive2d.hxx>
-#include <basegfx/tools/canvastools.hxx>
-#include <drawinglayer/primitive2d/drawinglayer_primitivetypes2d.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-using namespace com::sun::star;
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- BitmapPrimitive2D::BitmapPrimitive2D(
- const BitmapEx& rBitmapEx,
- const basegfx::B2DHomMatrix& rTransform)
- : BasePrimitive2D(),
- maBitmapEx(rBitmapEx),
- maTransform(rTransform)
- {
- }
-
- bool BitmapPrimitive2D::operator==(const BasePrimitive2D& rPrimitive) const
- {
- if(BasePrimitive2D::operator==(rPrimitive))
- {
- const BitmapPrimitive2D& rCompare = (BitmapPrimitive2D&)rPrimitive;
-
- return (getBitmapEx() == rCompare.getBitmapEx()
- && getTransform() == rCompare.getTransform());
- }
-
- return false;
- }
-
- basegfx::B2DRange BitmapPrimitive2D::getB2DRange(const geometry::ViewInformation2D& /*rViewInformation*/) const
- {
- basegfx::B2DRange aRetval(0.0, 0.0, 1.0, 1.0);
- aRetval.transform(maTransform);
- return aRetval;
- }
-
- // provide unique ID
- ImplPrimitrive2DIDBlock(BitmapPrimitive2D, PRIMITIVE2D_ID_BITMAPPRIMITIVE2D)
-
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/primitive2d/borderlineprimitive2d.cxx b/drawinglayer/source/primitive2d/borderlineprimitive2d.cxx
deleted file mode 100644
index 33df59c9f2..0000000000
--- a/drawinglayer/source/primitive2d/borderlineprimitive2d.cxx
+++ /dev/null
@@ -1,342 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/primitive2d/borderlineprimitive2d.hxx>
-#include <drawinglayer/primitive2d/drawinglayer_primitivetypes2d.hxx>
-#include <basegfx/polygon/b2dpolygon.hxx>
-#include <basegfx/polygon/b2dpolygonclipper.hxx>
-#include <drawinglayer/primitive2d/polygonprimitive2d.hxx>
-#include <drawinglayer/primitive2d/polypolygonprimitive2d.hxx>
-#include <svtools/borderhelper.hxx>
-#include <numeric>
-#include <algorithm>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- basegfx::B2DPolyPolygon BorderLinePrimitive2D::getClipPolygon( ) const
- {
- basegfx::B2DPolygon clipPolygon;
-
- // Get the vectors
- basegfx::B2DVector aVector( getEnd() - getStart() );
- aVector.normalize();
- const basegfx::B2DVector aPerpendicular(basegfx::getPerpendicular(aVector));
-
- // Get the points
- const basegfx::B2DVector aLeftOff(aPerpendicular * (-0.5 * (getWidth())));
- const basegfx::B2DVector aRightOff(aPerpendicular * (0.5 * (getWidth())));
-
- const basegfx::B2DVector aSLVector( aLeftOff - ( getExtendLeftStart() * aVector ) );
- clipPolygon.append( basegfx::B2DPoint( getStart() + aSLVector * 2.0 ) );
-
- clipPolygon.append( getStart( ) );
-
- const basegfx::B2DVector aSRVector( aRightOff - ( getExtendRightStart() * aVector ) );
- clipPolygon.append( basegfx::B2DPoint( getStart() + aSRVector * 2.0 ) );
-
- const basegfx::B2DVector aERVector( aRightOff + ( getExtendRightEnd() * aVector ) );
- clipPolygon.append( basegfx::B2DPoint( getEnd() + aERVector * 2.0 ) );
-
- clipPolygon.append( getEnd( ) );
-
- const basegfx::B2DVector aELVector( aLeftOff + ( getExtendLeftEnd() * aVector ) );
- clipPolygon.append( basegfx::B2DPoint( getEnd() + aELVector * 2.0 ) );
-
- clipPolygon.setClosed( true );
-
- return basegfx::B2DPolyPolygon( clipPolygon );
- }
-
- Primitive2DSequence BorderLinePrimitive2D::create2DDecomposition(const geometry::ViewInformation2D& /*rViewInformation*/) const
- {
- Primitive2DSequence xRetval;
-
- if(!getStart().equal(getEnd()) && ( isInsideUsed() || isOutsideUsed() ) )
- {
- // get data and vectors
- const double fWidth(getWidth());
- basegfx::B2DVector aVector(getEnd() - getStart());
- aVector.normalize();
- const basegfx::B2DVector aPerpendicular(basegfx::getPerpendicular(aVector));
-
- const basegfx::B2DPolyPolygon& aClipRegion = getClipPolygon( );
-
- if(isOutsideUsed() && isInsideUsed())
- {
- const double fExt = getWidth( ); // Extend a lot: it'll be clipped after
-
- // both used, double line definition. Create left and right offset
- xRetval.realloc(2);
- sal_uInt32 nInsert(0);
-
- basegfx::B2DPolygon aGap;
-
- {
- // create geometry for left
- const basegfx::B2DVector aLeftOff(aPerpendicular * (0.5 * (getCorrectedLeftWidth() - fWidth + 1)));
- const basegfx::B2DPoint aTmpStart(getStart() + aLeftOff - ( fExt * aVector));
- const basegfx::B2DPoint aTmpEnd(getEnd() + aLeftOff + ( fExt * aVector));
- basegfx::B2DPolygon aLeft;
-
- if(leftIsHairline())
- {
- // create hairline primitive
- aLeft.append(aTmpStart);
- aLeft.append(aTmpEnd);
-
- xRetval[nInsert++] = Primitive2DReference(new PolygonHairlinePrimitive2D(
- aLeft,
- getRGBColorLeft()));
-
- aGap.append( getStart() - getExtendLeftStart() * aVector );
- aGap.append( getEnd() + getExtendLeftEnd() * aVector );
- }
- else
- {
- // create filled polygon primitive. Already tried to create thick lines
- // with the correct LineWidth, but this leads to problems when no AA
- // is available and fat line special case reductions between 0.5 < x < 2.5 line widths
- // are executed due to the FilledPolygon-do-not-paint-their-bottom-and-right-lines.
- const basegfx::B2DVector aLineWidthOffset((getCorrectedLeftWidth() * 0.5) * aPerpendicular);
-
- aLeft.append(aTmpStart + aLineWidthOffset);
- aLeft.append(aTmpEnd + aLineWidthOffset);
- aLeft.append(aTmpEnd - aLineWidthOffset);
- aLeft.append(aTmpStart - aLineWidthOffset);
- aLeft.setClosed(true);
-
- basegfx::B2DPolyPolygon aClipped = basegfx::tools::clipPolygonOnPolyPolygon(
- aLeft, aClipRegion, true, false );
-
- aGap.append( aTmpStart + aLineWidthOffset );
- aGap.append( aTmpEnd + aLineWidthOffset );
-
- xRetval[nInsert++] = Primitive2DReference(new PolyPolygonColorPrimitive2D(
- aClipped, getRGBColorLeft()));
- }
- }
-
- {
- // create geometry for right
- const basegfx::B2DVector aRightOff(aPerpendicular * (0.5 * (fWidth - getCorrectedRightWidth() + 1)));
- const basegfx::B2DPoint aTmpStart(getStart() + aRightOff - ( fExt * aVector));
- const basegfx::B2DPoint aTmpEnd(getEnd() + aRightOff + ( fExt * aVector));
- basegfx::B2DPolygon aRight;
-
- if(rightIsHairline())
- {
- // create hairline primitive
- aRight.append(aTmpStart);
- aRight.append(aTmpEnd);
-
- xRetval[nInsert++] = Primitive2DReference(new PolygonHairlinePrimitive2D(
- aRight,
- getRGBColorRight()));
-
- aGap.append( getStart() - getExtendRightStart() * aVector );
- aGap.append( getEnd() + getExtendRightEnd() * aVector );
- }
- else
- {
- // create filled polygon primitive
- const basegfx::B2DVector aLineWidthOffset((getCorrectedRightWidth() * 0.5) * aPerpendicular);
-
- aRight.append(aTmpStart + aLineWidthOffset);
- aRight.append(aTmpEnd + aLineWidthOffset);
- aRight.append(aTmpEnd - aLineWidthOffset);
- aRight.append(aTmpStart - aLineWidthOffset);
- aRight.setClosed(true);
-
- basegfx::B2DPolyPolygon aClipped = basegfx::tools::clipPolygonOnPolyPolygon(
- aRight, aClipRegion, true, false );
-
- xRetval[nInsert++] = Primitive2DReference(new PolyPolygonColorPrimitive2D(
- aClipped, getRGBColorRight()));
-
- aGap.append( aTmpEnd - aLineWidthOffset );
- aGap.append( aTmpStart - aLineWidthOffset );
- }
- }
-
- if (hasGapColor() && aGap.count() == 4)
- {
- xRetval.realloc( xRetval.getLength() + 1 );
- // create geometry for filled gap
- aGap.setClosed( true );
-
- basegfx::B2DPolyPolygon aClipped = basegfx::tools::clipPolygonOnPolyPolygon(
- aGap, aClipRegion, true, false );
-
- xRetval[nInsert++] = Primitive2DReference( new PolyPolygonColorPrimitive2D(
- aClipped, getRGBColorGap() ) );
- }
- }
- else
- {
- // single line, create geometry
- basegfx::B2DPolygon aPolygon;
- const double fExt = getWidth( ); // Extend a lot: it'll be clipped after
- const basegfx::B2DPoint aTmpStart(getStart() - (fExt * aVector));
- const basegfx::B2DPoint aTmpEnd(getEnd() + (fExt * aVector));
- xRetval.realloc(1);
-
- // Get which is the line to show
- bool bIsHairline = leftIsHairline();
- double nWidth = getCorrectedLeftWidth();
- basegfx::BColor aColor = getRGBColorLeft();
- if ( basegfx::fTools::equal( 0.0, mfLeftWidth ) )
- {
- bIsHairline = rightIsHairline();
- nWidth = getCorrectedRightWidth();
- aColor = getRGBColorRight();
- }
-
- if(bIsHairline)
- {
- // create hairline primitive
- aPolygon.append( getStart() );
- aPolygon.append( getEnd() );
-
- xRetval[0] = Primitive2DReference(new PolygonHairlinePrimitive2D(
- aPolygon,
- aColor));
- }
- else
- {
- // create filled polygon primitive
- const basegfx::B2DVector aLineWidthOffset(((nWidth + 1) * 0.5) * aPerpendicular);
-
- aPolygon.append( aTmpStart );
- aPolygon.append( aTmpEnd );
-
- basegfx::B2DPolyPolygon aDashed = svtools::ApplyLineDashing(
- aPolygon, getStyle(), MAP_100TH_MM );
- for (sal_uInt32 i = 0; i < aDashed.count(); i++ )
- {
- basegfx::B2DPolygon aDash = aDashed.getB2DPolygon( i );
- basegfx::B2DPoint aDashStart = aDash.getB2DPoint( 0 );
- basegfx::B2DPoint aDashEnd = aDash.getB2DPoint( aDash.count() - 1 );
-
- basegfx::B2DPolygon aDashPolygon;
- aDashPolygon.append( aDashStart + aLineWidthOffset );
- aDashPolygon.append( aDashEnd + aLineWidthOffset );
- aDashPolygon.append( aDashEnd - aLineWidthOffset );
- aDashPolygon.append( aDashStart - aLineWidthOffset );
- aDashPolygon.setClosed( true );
-
- basegfx::B2DPolyPolygon aClipped = basegfx::tools::clipPolygonOnPolyPolygon(
- aDashPolygon, aClipRegion, true, false );
-
- if ( aClipped.count() )
- aDashed.setB2DPolygon( i, aClipped.getB2DPolygon( 0 ) );
- }
-
- xRetval[0] = Primitive2DReference(new PolyPolygonColorPrimitive2D(
- basegfx::B2DPolyPolygon( aDashed ), aColor));
- }
- }
- }
-
- return xRetval;
- }
-
- BorderLinePrimitive2D::BorderLinePrimitive2D(
- const basegfx::B2DPoint& rStart,
- const basegfx::B2DPoint& rEnd,
- double fLeftWidth,
- double fDistance,
- double fRightWidth,
- double fExtendLeftStart,
- double fExtendLeftEnd,
- double fExtendRightStart,
- double fExtendRightEnd,
- const basegfx::BColor& rRGBColorRight,
- const basegfx::BColor& rRGBColorLeft,
- const basegfx::BColor& rRGBColorGap,
- bool bHasGapColor,
- const short nStyle)
- : BufferedDecompositionPrimitive2D(),
- maStart(rStart),
- maEnd(rEnd),
- mfLeftWidth(fLeftWidth),
- mfDistance(fDistance),
- mfRightWidth(fRightWidth),
- mfExtendLeftStart(fExtendLeftStart),
- mfExtendLeftEnd(fExtendLeftEnd),
- mfExtendRightStart(fExtendRightStart),
- mfExtendRightEnd(fExtendRightEnd),
- maRGBColorRight(rRGBColorRight),
- maRGBColorLeft(rRGBColorLeft),
- maRGBColorGap(rRGBColorGap),
- mbHasGapColor(bHasGapColor),
- mnStyle(nStyle)
- {
- }
-
- bool BorderLinePrimitive2D::operator==(const BasePrimitive2D& rPrimitive) const
- {
- if(BufferedDecompositionPrimitive2D::operator==(rPrimitive))
- {
- const BorderLinePrimitive2D& rCompare = (BorderLinePrimitive2D&)rPrimitive;
-
- return (getStart() == rCompare.getStart()
- && getEnd() == rCompare.getEnd()
- && getLeftWidth() == rCompare.getLeftWidth()
- && getDistance() == rCompare.getDistance()
- && getRightWidth() == rCompare.getRightWidth()
- && getExtendLeftStart() == rCompare.getExtendLeftStart()
- && getExtendLeftEnd() == rCompare.getExtendLeftEnd()
- && getExtendRightStart() == rCompare.getExtendRightStart()
- && getExtendRightEnd() == rCompare.getExtendRightEnd()
- && getRGBColorRight() == rCompare.getRGBColorRight()
- && getRGBColorLeft() == rCompare.getRGBColorLeft()
- && getRGBColorGap() == rCompare.getRGBColorGap()
- && hasGapColor() == rCompare.hasGapColor()
- && getStyle() == rCompare.getStyle());
- }
-
- return false;
- }
-
- // provide unique ID
- ImplPrimitrive2DIDBlock(BorderLinePrimitive2D, PRIMITIVE2D_ID_BORDERLINEPRIMITIVE2D)
-
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/primitive2d/chartprimitive2d.cxx b/drawinglayer/source/primitive2d/chartprimitive2d.cxx
deleted file mode 100644
index 23957295df..0000000000
--- a/drawinglayer/source/primitive2d/chartprimitive2d.cxx
+++ /dev/null
@@ -1,85 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/primitive2d/chartprimitive2d.hxx>
-#include <basegfx/tools/canvastools.hxx>
-#include <drawinglayer/primitive2d/drawinglayer_primitivetypes2d.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-using namespace com::sun::star;
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- ChartPrimitive2D::ChartPrimitive2D(
- const uno::Reference< frame::XModel >& rxChartModel,
- const basegfx::B2DHomMatrix& rTransformation,
- const Primitive2DSequence& rChildren)
- : GroupPrimitive2D(rChildren),
- mxChartModel(rxChartModel),
- maTransformation(rTransformation)
- {
- }
-
- bool ChartPrimitive2D::operator==(const BasePrimitive2D& rPrimitive) const
- {
- if(GroupPrimitive2D::operator==(rPrimitive))
- {
- const ChartPrimitive2D& rCompare = static_cast< const ChartPrimitive2D& >(rPrimitive);
-
- return (getChartModel() == rCompare.getChartModel()
- && getTransformation() == rCompare.getTransformation());
- }
-
- return false;
- }
-
- // provide unique ID
- ImplPrimitrive2DIDBlock(ChartPrimitive2D, PRIMITIVE2D_ID_CHARTPRIMITIVE2D)
-
- basegfx::B2DRange ChartPrimitive2D::getB2DRange(const geometry::ViewInformation2D& /*rViewInformation*/) const
- {
- basegfx::B2DRange aRetval(0.0, 0.0, 1.0, 1.0);
- aRetval.transform(getTransformation());
- return aRetval;
- }
-
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/primitive2d/clippedborderlineprimitive2d.cxx b/drawinglayer/source/primitive2d/clippedborderlineprimitive2d.cxx
deleted file mode 100644
index b97e90f2a0..0000000000
--- a/drawinglayer/source/primitive2d/clippedborderlineprimitive2d.cxx
+++ /dev/null
@@ -1,81 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * Version: MPL 1.1 / GPLv3+ / LGPLv3+
- *
- * The contents of this file are subject to the Mozilla Public License Version
- * 1.1 (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.mozilla.org/MPL/
- *
- * Software distributed under the License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
- * for the specific language governing rights and limitations under the
- * License.
- *
- * The Initial Developer of the Original Code is
- * [ Novell Inc. ]
- * Portions created by the Initial Developer are Copyright (C) 2010 the
- * Initial Developer. All Rights Reserved.
- *
- * Contributor(s): Cédric Bosdonnat <cbosdonnat@novell.com>
- *
- * Alternatively, the contents of this file may be used under the terms of
- * either the GNU General Public License Version 3 or later (the "GPLv3+"), or
- * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
- * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
- * instead of those above.
- */
-
-#include <drawinglayer/primitive2d/clippedborderlineprimitive2d.hxx>
-#include <drawinglayer/primitive2d/drawinglayer_primitivetypes2d.hxx>
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- basegfx::B2DPolyPolygon ClippedBorderLinePrimitive2D::getClipPolygon( ) const
- {
- basegfx::B2DPolyPolygon aPolyPolygon;
- aPolyPolygon.append( maIntersection );
- return aPolyPolygon;
- }
-
- ClippedBorderLinePrimitive2D::ClippedBorderLinePrimitive2D(
- const basegfx::B2DPoint& rStart,
- const basegfx::B2DPoint& rEnd,
- double fLeftWidth,
- double fDistance,
- double fRightWidth,
- const basegfx::B2DPolygon& rIntersection,
- const basegfx::BColor& rRGBColorRight,
- const basegfx::BColor& rRGBColorLeft,
- const basegfx::BColor& rRGBColorGap,
- bool bHasGapColor,
- const short nStyle)
- : BorderLinePrimitive2D( rStart, rEnd, fLeftWidth,fDistance, fRightWidth,
- 0.0, 0.0, 0.0, 0.0, rRGBColorRight, rRGBColorLeft,
- rRGBColorGap, bHasGapColor, nStyle),
- maIntersection( rIntersection )
- {
- }
-
- bool ClippedBorderLinePrimitive2D::operator==(const BasePrimitive2D& rPrimitive) const
- {
- if(BorderLinePrimitive2D::operator==(rPrimitive))
- {
- const ClippedBorderLinePrimitive2D& rCompare = (ClippedBorderLinePrimitive2D&)rPrimitive;
-
- return maIntersection == rCompare.maIntersection;
- }
-
- return false;
- }
-
- // provide unique ID
- ImplPrimitrive2DIDBlock(ClippedBorderLinePrimitive2D, PRIMITIVE2D_ID_CLIPPEDBORDERLINEPRIMITIVE2D)
-
-
- } // namespace primitive2d
-} // namespace drawinglayer
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/primitive2d/controlprimitive2d.cxx b/drawinglayer/source/primitive2d/controlprimitive2d.cxx
deleted file mode 100644
index 483f797a1e..0000000000
--- a/drawinglayer/source/primitive2d/controlprimitive2d.cxx
+++ /dev/null
@@ -1,386 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/primitive2d/controlprimitive2d.hxx>
-#include <com/sun/star/beans/XPropertySet.hpp>
-#include <comphelper/processfactory.hxx>
-#include <com/sun/star/awt/XWindow2.hpp>
-#include <drawinglayer/geometry/viewinformation2d.hxx>
-#include <vcl/virdev.hxx>
-#include <vcl/svapp.hxx>
-#include <com/sun/star/awt/PosSize.hpp>
-#include <vcl/bitmapex.hxx>
-#include <drawinglayer/primitive2d/bitmapprimitive2d.hxx>
-#include <tools/diagnose_ex.h>
-#include <basegfx/polygon/b2dpolygontools.hxx>
-#include <basegfx/polygon/b2dpolygon.hxx>
-#include <drawinglayer/primitive2d/polygonprimitive2d.hxx>
-#include <drawinglayer/primitive2d/drawinglayer_primitivetypes2d.hxx>
-#include <svtools/optionsdrawinglayer.hxx>
-#include <toolkit/awt/vclxwindow.hxx>
-#include <vcl/window.hxx>
-#include <basegfx/matrix/b2dhommatrixtools.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-using namespace com::sun::star;
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- void ControlPrimitive2D::createXControl()
- {
- if(!mxXControl.is() && getControlModel().is())
- {
- uno::Reference< beans::XPropertySet > xSet(getControlModel(), uno::UNO_QUERY);
-
- if(xSet.is())
- {
- uno::Any aValue(xSet->getPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("DefaultControl"))));
- rtl::OUString aUnoControlTypeName;
-
- if(aValue >>= aUnoControlTypeName)
- {
- if(aUnoControlTypeName.getLength())
- {
- uno::Reference< lang::XMultiServiceFactory > xFactory( comphelper::getProcessServiceFactory() );
-
- if(xFactory.is())
- {
- uno::Reference< awt::XControl > xXControl(xFactory->createInstance(aUnoControlTypeName), uno::UNO_QUERY);
-
- if(xXControl.is())
- {
- xXControl->setModel(getControlModel());
-
- // remember XControl
- mxXControl = xXControl;
- }
- }
- }
- }
- }
- }
- }
-
- Primitive2DReference ControlPrimitive2D::createBitmapDecomposition(const geometry::ViewInformation2D& rViewInformation) const
- {
- Primitive2DReference xRetval;
- const uno::Reference< awt::XControl >& rXControl(getXControl());
-
- if(rXControl.is())
- {
- uno::Reference< awt::XWindow > xControlWindow(rXControl, uno::UNO_QUERY);
-
- if(xControlWindow.is())
- {
- // get decomposition to get size
- basegfx::B2DVector aScale, aTranslate;
- double fRotate, fShearX;
- getTransform().decompose(aScale, aTranslate, fRotate, fShearX);
-
- // get absolute discrete size (no mirror or rotate here)
- aScale = basegfx::absolute(aScale);
- basegfx::B2DVector aDiscreteSize(rViewInformation.getObjectToViewTransformation() * aScale);
-
- // limit to a maximum square size, e.g. 300x150 pixels (45000)
- const SvtOptionsDrawinglayer aDrawinglayerOpt;
- const double fDiscreteMax(aDrawinglayerOpt.GetQuadraticFormControlRenderLimit());
- const double fDiscreteQuadratic(aDiscreteSize.getX() * aDiscreteSize.getY());
- const bool bScaleUsed(fDiscreteQuadratic > fDiscreteMax);
- double fFactor(1.0);
-
- if(bScaleUsed)
- {
- // get factor and adapt to scaled size
- fFactor = sqrt(fDiscreteMax / fDiscreteQuadratic);
- aDiscreteSize *= fFactor;
- }
-
- // go to integer
- const sal_Int32 nSizeX(basegfx::fround(aDiscreteSize.getX()));
- const sal_Int32 nSizeY(basegfx::fround(aDiscreteSize.getY()));
-
- if(nSizeX > 0 && nSizeY > 0)
- {
- // prepare VirtualDevice
- VirtualDevice aVirtualDevice(*Application::GetDefaultDevice());
- const Size aSizePixel(nSizeX, nSizeY);
- aVirtualDevice.SetOutputSizePixel(aSizePixel);
-
- // set size at control
- xControlWindow->setPosSize(0, 0, nSizeX, nSizeY, awt::PosSize::POSSIZE);
-
- // get graphics and view
- uno::Reference< awt::XGraphics > xGraphics(aVirtualDevice.CreateUnoGraphics());
- uno::Reference< awt::XView > xControlView(rXControl, uno::UNO_QUERY);
-
- if(xGraphics.is() && xControlView.is())
- {
- // link graphics and view
- xControlView->setGraphics(xGraphics);
-
- { // #i93162# For painting the control setting a Zoom (using setZoom() at the xControlView)
- // is needed to define the font size. Normally this is done in
- // ViewObjectContactOfUnoControl::createPrimitive2DSequence by using positionControlForPaint().
- // For some reason the difference between MAP_TWIPS and MAP_100TH_MM still plays
- // a role there so that for Draw/Impress/Calc (the MAP_100TH_MM users) i need to set a zoom
- // here, too. The factor includes the needed scale, but is calculated by pure comparisons. It
- // is somehow related to the twips/100thmm relationship.
- bool bUserIs100thmm(false);
- const uno::Reference< awt::XControl > xControl(xControlView, uno::UNO_QUERY);
-
- if(xControl.is())
- {
- uno::Reference< awt::XWindowPeer > xWindowPeer(xControl->getPeer());
-
- if(xWindowPeer.is())
- {
- VCLXWindow* pVCLXWindow = VCLXWindow::GetImplementation(xWindowPeer);
-
- if(pVCLXWindow)
- {
- Window* pWindow = pVCLXWindow->GetWindow();
-
- if(pWindow)
- {
- pWindow = pWindow->GetParent();
-
- if(pWindow)
- {
- if(MAP_100TH_MM == pWindow->GetMapMode().GetMapUnit())
- {
- bUserIs100thmm = true;
- }
- }
- }
- }
- }
- }
-
- if(bUserIs100thmm)
- {
- // calc screen zoom for text display. fFactor is already added indirectly in aDiscreteSize
- basegfx::B2DVector aScreenZoom(
- basegfx::fTools::equalZero(aScale.getX()) ? 1.0 : aDiscreteSize.getX() / aScale.getX(),
- basegfx::fTools::equalZero(aScale.getY()) ? 1.0 : aDiscreteSize.getY() / aScale.getY());
- static double fZoomScale(28.0); // do not ask for this constant factor, but it gets the zoom right
- aScreenZoom *= fZoomScale;
-
- // set zoom at control view for text scaling
- xControlView->setZoom((float)aScreenZoom.getX(), (float)aScreenZoom.getY());
- }
- }
-
- try
- {
- // try to paint it to VirtualDevice
- xControlView->draw(0, 0);
-
- // get bitmap
- const Bitmap aContent(aVirtualDevice.GetBitmap(Point(), aSizePixel));
-
- // to avoid scaling, use the Bitmap pixel size as primitive size
- const Size aBitmapSize(aContent.GetSizePixel());
- basegfx::B2DVector aBitmapSizeLogic(
- rViewInformation.getInverseObjectToViewTransformation() *
- basegfx::B2DVector(aBitmapSize.getWidth() - 1, aBitmapSize.getHeight() - 1));
-
- if(bScaleUsed)
- {
- // if scaled adapt to scaled size
- aBitmapSizeLogic /= fFactor;
- }
-
- // short form for scale and translate transformation
- const basegfx::B2DHomMatrix aBitmapTransform(basegfx::tools::createScaleTranslateB2DHomMatrix(
- aBitmapSizeLogic.getX(), aBitmapSizeLogic.getY(), aTranslate.getX(), aTranslate.getY()));
-
- // create primitive
- xRetval = new BitmapPrimitive2D(BitmapEx(aContent), aBitmapTransform);
- }
- catch( const uno::Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
- }
- }
- }
- }
-
- return xRetval;
- }
-
- Primitive2DReference ControlPrimitive2D::createPlaceholderDecomposition(const geometry::ViewInformation2D& /*rViewInformation*/) const
- {
- // create a gray placeholder hairline polygon in object size
- basegfx::B2DRange aObjectRange(0.0, 0.0, 1.0, 1.0);
- aObjectRange.transform(getTransform());
- const basegfx::B2DPolygon aOutline(basegfx::tools::createPolygonFromRect(aObjectRange));
- const basegfx::BColor aGrayTone(0xc0 / 255.0, 0xc0 / 255.0, 0xc0 / 255.0);
-
- // The replacement object may also get a text like 'empty group' here later
- Primitive2DReference xRetval(new PolygonHairlinePrimitive2D(aOutline, aGrayTone));
-
- return xRetval;
- }
-
- Primitive2DSequence ControlPrimitive2D::create2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const
- {
- // try to create a bitmap decomposition. If that fails for some reason,
- // at least create a replacement decomposition.
- Primitive2DReference xReference(createBitmapDecomposition(rViewInformation));
-
- if(!xReference.is())
- {
- xReference = createPlaceholderDecomposition(rViewInformation);
- }
-
- return Primitive2DSequence(&xReference, 1L);
- }
-
- ControlPrimitive2D::ControlPrimitive2D(
- const basegfx::B2DHomMatrix& rTransform,
- const uno::Reference< awt::XControlModel >& rxControlModel)
- : BufferedDecompositionPrimitive2D(),
- maTransform(rTransform),
- mxControlModel(rxControlModel),
- mxXControl(),
- maLastViewScaling()
- {
- }
-
- ControlPrimitive2D::ControlPrimitive2D(
- const basegfx::B2DHomMatrix& rTransform,
- const uno::Reference< awt::XControlModel >& rxControlModel,
- const uno::Reference< awt::XControl >& rxXControl)
- : BufferedDecompositionPrimitive2D(),
- maTransform(rTransform),
- mxControlModel(rxControlModel),
- mxXControl(rxXControl),
- maLastViewScaling()
- {
- }
-
- const uno::Reference< awt::XControl >& ControlPrimitive2D::getXControl() const
- {
- if(!mxXControl.is())
- {
- const_cast< ControlPrimitive2D* >(this)->createXControl();
- }
-
- return mxXControl;
- }
-
- bool ControlPrimitive2D::operator==(const BasePrimitive2D& rPrimitive) const
- {
- // use base class compare operator
- if(BufferedDecompositionPrimitive2D::operator==(rPrimitive))
- {
- const ControlPrimitive2D& rCompare = (ControlPrimitive2D&)rPrimitive;
-
- if(getTransform() == rCompare.getTransform())
- {
- // check if ControlModel references both are/are not
- bool bRetval(getControlModel().is() == rCompare.getControlModel().is());
-
- if(bRetval && getControlModel().is())
- {
- // both exist, check for equality
- bRetval = (getControlModel() == rCompare.getControlModel());
- }
-
- if(bRetval)
- {
- // check if XControl references both are/are not
- bRetval = (getXControl().is() == rCompare.getXControl().is());
- }
-
- if(bRetval && getXControl().is())
- {
- // both exist, check for equality
- bRetval = (getXControl() == rCompare.getXControl());
- }
-
- return bRetval;
- }
- }
-
- return false;
- }
-
- basegfx::B2DRange ControlPrimitive2D::getB2DRange(const geometry::ViewInformation2D& /*rViewInformation*/) const
- {
- // simply derivate from unit range
- basegfx::B2DRange aRetval(0.0, 0.0, 1.0, 1.0);
- aRetval.transform(getTransform());
- return aRetval;
- }
-
- Primitive2DSequence ControlPrimitive2D::get2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const
- {
- // this primitive is view-dependent related to the scaling. If scaling has changed,
- // destroy existing decomposition. To detect change, use size of unit size in view coordinates
- ::osl::MutexGuard aGuard( m_aMutex );
- const basegfx::B2DVector aNewScaling(rViewInformation.getObjectToViewTransformation() * basegfx::B2DVector(1.0, 1.0));
-
- if(getBuffered2DDecomposition().hasElements())
- {
- if(!maLastViewScaling.equal(aNewScaling))
- {
- // conditions of last local decomposition have changed, delete
- const_cast< ControlPrimitive2D* >(this)->setBuffered2DDecomposition(Primitive2DSequence());
- }
- }
-
- if(!getBuffered2DDecomposition().hasElements())
- {
- // remember ViewTransformation
- const_cast< ControlPrimitive2D* >(this)->maLastViewScaling = aNewScaling;
- }
-
- // use parent implementation
- return BufferedDecompositionPrimitive2D::get2DDecomposition(rViewInformation);
- }
-
- // provide unique ID
- ImplPrimitrive2DIDBlock(ControlPrimitive2D, PRIMITIVE2D_ID_CONTROLPRIMITIVE2D)
-
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/primitive2d/discretebitmapprimitive2d.cxx b/drawinglayer/source/primitive2d/discretebitmapprimitive2d.cxx
deleted file mode 100644
index a00a1e47f9..0000000000
--- a/drawinglayer/source/primitive2d/discretebitmapprimitive2d.cxx
+++ /dev/null
@@ -1,119 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/primitive2d/discretebitmapprimitive2d.hxx>
-#include <drawinglayer/primitive2d/bitmapprimitive2d.hxx>
-#include <drawinglayer/primitive2d/drawinglayer_primitivetypes2d.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- Primitive2DSequence DiscreteBitmapPrimitive2D::create2DDecomposition(const geometry::ViewInformation2D& /*rViewInformation*/) const
- {
- // use getViewTransformation() and getObjectTransformation() from
- // ObjectAndViewTransformationDependentPrimitive2D to create a BitmapPrimitive2D
- // with the correct mapping
- Primitive2DSequence xRetval;
-
- if(!getBitmapEx().IsEmpty())
- {
- // get discrete size
- const Size& rSizePixel = getBitmapEx().GetSizePixel();
- const basegfx::B2DVector aDiscreteSize(rSizePixel.Width(), rSizePixel.Height());
-
- // get inverse ViewTransformation
- basegfx::B2DHomMatrix aInverseViewTransformation(getViewTransformation());
- aInverseViewTransformation.invert();
-
- // get size and position in world coordinates
- const basegfx::B2DVector aWorldSize(aInverseViewTransformation * aDiscreteSize);
- const basegfx::B2DPoint aWorldTopLeft(getObjectTransformation() * getTopLeft());
-
- // build object matrix in world coordinates so that the top-left
- // position remains, but eventual transformations (e.g. rotations)
- // in the ObjectToView stack remain and get correctly applied
- basegfx::B2DHomMatrix aObjectTransform;
-
- aObjectTransform.set(0, 0, aWorldSize.getX());
- aObjectTransform.set(1, 1, aWorldSize.getY());
- aObjectTransform.set(0, 2, aWorldTopLeft.getX());
- aObjectTransform.set(1, 2, aWorldTopLeft.getY());
-
- // get inverse ObjectTransformation
- basegfx::B2DHomMatrix aInverseObjectTransformation(getObjectTransformation());
- aInverseObjectTransformation.invert();
-
- // transform to object coordinate system
- aObjectTransform = aInverseObjectTransformation * aObjectTransform;
-
- // create BitmapPrimitive2D with now object-local coordinate data
- const Primitive2DReference xRef(new BitmapPrimitive2D(getBitmapEx(), aObjectTransform));
- xRetval = Primitive2DSequence(&xRef, 1);
- }
-
- return xRetval;
- }
-
- DiscreteBitmapPrimitive2D::DiscreteBitmapPrimitive2D(
- const BitmapEx& rBitmapEx,
- const basegfx::B2DPoint& rTopLeft)
- : ObjectAndViewTransformationDependentPrimitive2D(),
- maBitmapEx(rBitmapEx),
- maTopLeft(rTopLeft)
- {
- }
-
- bool DiscreteBitmapPrimitive2D::operator==(const BasePrimitive2D& rPrimitive) const
- {
- if(ObjectAndViewTransformationDependentPrimitive2D::operator==(rPrimitive))
- {
- const DiscreteBitmapPrimitive2D& rCompare = (DiscreteBitmapPrimitive2D&)rPrimitive;
-
- return (getBitmapEx() == rCompare.getBitmapEx()
- && getTopLeft() == rCompare.getTopLeft());
- }
-
- return false;
- }
-
- // provide unique ID
- ImplPrimitrive2DIDBlock(DiscreteBitmapPrimitive2D, PRIMITIVE2D_ID_DISCRETEBITMAPPRIMITIVE2D)
-
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/primitive2d/discreteshadowprimitive2d.cxx b/drawinglayer/source/primitive2d/discreteshadowprimitive2d.cxx
deleted file mode 100644
index 17578b5e52..0000000000
--- a/drawinglayer/source/primitive2d/discreteshadowprimitive2d.cxx
+++ /dev/null
@@ -1,339 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/primitive2d/discreteshadowprimitive2d.hxx>
-#include <drawinglayer/primitive2d/drawinglayer_primitivetypes2d.hxx>
-#include <drawinglayer/primitive2d/bitmapprimitive2d.hxx>
-#include <basegfx/matrix/b2dhommatrixtools.hxx>
-#include <drawinglayer/primitive2d/transformprimitive2d.hxx>
-#include <drawinglayer/geometry/viewinformation2d.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- DiscreteShadow::DiscreteShadow(const BitmapEx& rBitmapEx)
- : maBitmapEx(rBitmapEx),
- maTopLeft(),
- maTop(),
- maTopRight(),
- maRight(),
- maBottomRight(),
- maBottom(),
- maBottomLeft(),
- maLeft()
- {
- const Size& rBitmapSize = getBitmapEx().GetSizePixel();
-
- if(rBitmapSize.Width() != rBitmapSize.Height() || rBitmapSize.Width() < 7)
- {
- OSL_ENSURE(false, "DiscreteShadowPrimitive2D: wrong bitmap format (!)");
- maBitmapEx = BitmapEx();
- }
- }
-
- const BitmapEx& DiscreteShadow::getTopLeft() const
- {
- if(maTopLeft.IsEmpty())
- {
- const sal_Int32 nQuarter((getBitmapEx().GetSizePixel().Width() - 3) >> 2);
- const_cast< DiscreteShadow* >(this)->maTopLeft = getBitmapEx();
- const_cast< DiscreteShadow* >(this)->maTopLeft.Crop(
- Rectangle(Point(0,0),Size(nQuarter*2+1,nQuarter*2+1)));
- }
-
- return maTopLeft;
- }
-
- const BitmapEx& DiscreteShadow::getTop() const
- {
- if(maTop.IsEmpty())
- {
- const sal_Int32 nQuarter((getBitmapEx().GetSizePixel().Width() - 3) >> 2);
- const_cast< DiscreteShadow* >(this)->maTop = getBitmapEx();
- const_cast< DiscreteShadow* >(this)->maTop.Crop(
- Rectangle(Point(nQuarter*2+1,0),Size(1,nQuarter+1)));
- }
-
- return maTop;
- }
-
- const BitmapEx& DiscreteShadow::getTopRight() const
- {
- if(maTopRight.IsEmpty())
- {
- const sal_Int32 nQuarter((getBitmapEx().GetSizePixel().Width() - 3) >> 2);
- const_cast< DiscreteShadow* >(this)->maTopRight = getBitmapEx();
- const_cast< DiscreteShadow* >(this)->maTopRight.Crop(
- Rectangle(Point(nQuarter*2+2,0),Size(nQuarter*2+1,nQuarter*2+1)));
- }
-
- return maTopRight;
- }
-
- const BitmapEx& DiscreteShadow::getRight() const
- {
- if(maRight.IsEmpty())
- {
- const sal_Int32 nQuarter((getBitmapEx().GetSizePixel().Width() - 3) >> 2);
- const_cast< DiscreteShadow* >(this)->maRight = getBitmapEx();
- const_cast< DiscreteShadow* >(this)->maRight.Crop(
- Rectangle(Point(nQuarter*3+2,nQuarter*2+1),Size(nQuarter+1,1)));
- }
-
- return maRight;
- }
-
- const BitmapEx& DiscreteShadow::getBottomRight() const
- {
- if(maBottomRight.IsEmpty())
- {
- const sal_Int32 nQuarter((getBitmapEx().GetSizePixel().Width() - 3) >> 2);
- const_cast< DiscreteShadow* >(this)->maBottomRight = getBitmapEx();
- const_cast< DiscreteShadow* >(this)->maBottomRight.Crop(
- Rectangle(Point(nQuarter*2+2,nQuarter*2+2),Size(nQuarter*2+1,nQuarter*2+1)));
- }
-
- return maBottomRight;
- }
-
- const BitmapEx& DiscreteShadow::getBottom() const
- {
- if(maBottom.IsEmpty())
- {
- const sal_Int32 nQuarter((getBitmapEx().GetSizePixel().Width() - 3) >> 2);
- const_cast< DiscreteShadow* >(this)->maBottom = getBitmapEx();
- const_cast< DiscreteShadow* >(this)->maBottom.Crop(
- Rectangle(Point(nQuarter*2+1,nQuarter*3+2),Size(1,nQuarter+1)));
- }
-
- return maBottom;
- }
-
- const BitmapEx& DiscreteShadow::getBottomLeft() const
- {
- if(maBottomLeft.IsEmpty())
- {
- const sal_Int32 nQuarter((getBitmapEx().GetSizePixel().Width() - 3) >> 2);
- const_cast< DiscreteShadow* >(this)->maBottomLeft = getBitmapEx();
- const_cast< DiscreteShadow* >(this)->maBottomLeft.Crop(
- Rectangle(Point(0,nQuarter*2+2),Size(nQuarter*2+1,nQuarter*2+1)));
- }
-
- return maBottomLeft;
- }
-
- const BitmapEx& DiscreteShadow::getLeft() const
- {
- if(maLeft.IsEmpty())
- {
- const sal_Int32 nQuarter((getBitmapEx().GetSizePixel().Width() - 3) >> 2);
- const_cast< DiscreteShadow* >(this)->maLeft = getBitmapEx();
- const_cast< DiscreteShadow* >(this)->maLeft.Crop(
- Rectangle(Point(0,nQuarter*2+1),Size(nQuarter+1,1)));
- }
-
- return maLeft;
- }
-
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- Primitive2DSequence DiscreteShadowPrimitive2D::create2DDecomposition(const geometry::ViewInformation2D& /*rViewInformation*/) const
- {
- Primitive2DSequence xRetval;
-
- if(!getDiscreteShadow().getBitmapEx().IsEmpty())
- {
- const sal_Int32 nQuarter((getDiscreteShadow().getBitmapEx().GetSizePixel().Width() - 3) >> 2);
- const basegfx::B2DVector aScale(getTransform() * basegfx::B2DVector(1.0, 1.0));
- const double fSingleX(getDiscreteUnit() / aScale.getX());
- const double fSingleY(getDiscreteUnit() / aScale.getY());
- const double fBorderX(fSingleX * nQuarter);
- const double fBorderY(fSingleY * nQuarter);
- const double fBigLenX((fBorderX * 2.0) + fSingleX);
- const double fBigLenY((fBorderY * 2.0) + fSingleY);
-
- xRetval.realloc(8);
-
- // TopLeft
- xRetval[0] = Primitive2DReference(
- new BitmapPrimitive2D(
- getDiscreteShadow().getTopLeft(),
- basegfx::tools::createScaleTranslateB2DHomMatrix(
- fBigLenX,
- fBigLenY,
- -fBorderX,
- -fBorderY)));
-
- // Top
- xRetval[1] = Primitive2DReference(
- new BitmapPrimitive2D(
- getDiscreteShadow().getTop(),
- basegfx::tools::createScaleTranslateB2DHomMatrix(
- 1.0 - (2.0 * fBorderX) - fSingleX,
- fBorderY + fSingleY,
- fBorderX + fSingleX,
- -fBorderY)));
-
- // TopRight
- xRetval[2] = Primitive2DReference(
- new BitmapPrimitive2D(
- getDiscreteShadow().getTopRight(),
- basegfx::tools::createScaleTranslateB2DHomMatrix(
- fBigLenX,
- fBigLenY,
- 1.0 - fBorderX,
- -fBorderY)));
-
- // Right
- xRetval[3] = Primitive2DReference(
- new BitmapPrimitive2D(
- getDiscreteShadow().getRight(),
- basegfx::tools::createScaleTranslateB2DHomMatrix(
- fBorderX + fSingleX,
- 1.0 - (2.0 * fBorderY) - fSingleY,
- 1.0,
- fBorderY + fSingleY)));
-
- // BottomRight
- xRetval[4] = Primitive2DReference(
- new BitmapPrimitive2D(
- getDiscreteShadow().getBottomRight(),
- basegfx::tools::createScaleTranslateB2DHomMatrix(
- fBigLenX,
- fBigLenY,
- 1.0 - fBorderX,
- 1.0 - fBorderY)));
-
- // Bottom
- xRetval[5] = Primitive2DReference(
- new BitmapPrimitive2D(
- getDiscreteShadow().getBottom(),
- basegfx::tools::createScaleTranslateB2DHomMatrix(
- 1.0 - (2.0 * fBorderX) - fSingleX,
- fBorderY + fSingleY,
- fBorderX + fSingleX,
- 1.0)));
-
- // BottomLeft
- xRetval[6] = Primitive2DReference(
- new BitmapPrimitive2D(
- getDiscreteShadow().getBottomLeft(),
- basegfx::tools::createScaleTranslateB2DHomMatrix(
- fBigLenX,
- fBigLenY,
- -fBorderX,
- 1.0 - fBorderY)));
-
- // Left
- xRetval[7] = Primitive2DReference(
- new BitmapPrimitive2D(
- getDiscreteShadow().getLeft(),
- basegfx::tools::createScaleTranslateB2DHomMatrix(
- fBorderX + fSingleX,
- 1.0 - (2.0 * fBorderY) - fSingleY,
- -fBorderX,
- fBorderY + fSingleY)));
-
- // put all in object transformation to get to target positions
- const Primitive2DReference xTransformed(
- new TransformPrimitive2D(
- getTransform(),
- xRetval));
-
- xRetval = Primitive2DSequence(&xTransformed, 1);
- }
-
- return xRetval;
- }
-
- DiscreteShadowPrimitive2D::DiscreteShadowPrimitive2D(
- const basegfx::B2DHomMatrix& rTransform,
- const DiscreteShadow& rDiscreteShadow)
- : DiscreteMetricDependentPrimitive2D(),
- maTransform(rTransform),
- maDiscreteShadow(rDiscreteShadow)
- {
- }
-
- bool DiscreteShadowPrimitive2D::operator==(const BasePrimitive2D& rPrimitive) const
- {
- if(DiscreteMetricDependentPrimitive2D::operator==(rPrimitive))
- {
- const DiscreteShadowPrimitive2D& rCompare = (DiscreteShadowPrimitive2D&)rPrimitive;
-
- return (getTransform() == rCompare.getTransform()
- && getDiscreteShadow() == rCompare.getDiscreteShadow());
- }
-
- return false;
- }
-
- basegfx::B2DRange DiscreteShadowPrimitive2D::getB2DRange(const geometry::ViewInformation2D& rViewInformation) const
- {
- if(getDiscreteShadow().getBitmapEx().IsEmpty())
- {
- // no graphics without valid bitmap definition
- return basegfx::B2DRange();
- }
- else
- {
- // prepare normal objectrange
- basegfx::B2DRange aRetval(0.0, 0.0, 1.0, 1.0);
- aRetval.transform(getTransform());
-
- // extract discrete shadow size and grow
- const basegfx::B2DVector aScale(rViewInformation.getViewTransformation() * basegfx::B2DVector(1.0, 1.0));
- const sal_Int32 nQuarter((getDiscreteShadow().getBitmapEx().GetSizePixel().Width() - 3) >> 2);
- const double fGrowX((1.0 / aScale.getX()) * nQuarter);
- const double fGrowY((1.0 / aScale.getY()) * nQuarter);
- aRetval.grow(std::max(fGrowX, fGrowY));
-
- return aRetval;
- }
- }
-
- // provide unique ID
- ImplPrimitrive2DIDBlock(DiscreteShadowPrimitive2D, PRIMITIVE2D_ID_DISCRETESHADOWPRIMITIVE2D)
-
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
diff --git a/drawinglayer/source/primitive2d/embedded3dprimitive2d.cxx b/drawinglayer/source/primitive2d/embedded3dprimitive2d.cxx
deleted file mode 100644
index e2e2b3bd21..0000000000
--- a/drawinglayer/source/primitive2d/embedded3dprimitive2d.cxx
+++ /dev/null
@@ -1,171 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/primitive2d/embedded3dprimitive2d.hxx>
-#include <basegfx/polygon/b2dpolygon.hxx>
-#include <basegfx/polygon/b2dpolygontools.hxx>
-#include <basegfx/color/bcolor.hxx>
-#include <drawinglayer/primitive2d/polygonprimitive2d.hxx>
-#include <basegfx/tools/canvastools.hxx>
-#include <drawinglayer/geometry/viewinformation2d.hxx>
-#include <drawinglayer/primitive2d/drawinglayer_primitivetypes2d.hxx>
-#include <drawinglayer/geometry/viewinformation3d.hxx>
-#include <drawinglayer/processor3d/shadow3dextractor.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-using namespace com::sun::star;
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- bool Embedded3DPrimitive2D::impGetShadow3D(const geometry::ViewInformation2D& /*rViewInformation*/) const
- {
- osl::MutexGuard aGuard( m_aMutex );
-
- // create on demand
- if(!mbShadow3DChecked && getChildren3D().hasElements())
- {
- // create shadow extraction processor
- processor3d::Shadow3DExtractingProcessor aShadowProcessor(
- getViewInformation3D(),
- getObjectTransformation(),
- getLightNormal(),
- getShadowSlant(),
- getScene3DRange());
-
- // process local primitives
- aShadowProcessor.process(getChildren3D());
-
- // fetch result and set checked flag
- const_cast< Embedded3DPrimitive2D* >(this)->maShadowPrimitives = aShadowProcessor.getPrimitive2DSequence();
- const_cast< Embedded3DPrimitive2D* >(this)->mbShadow3DChecked = true;
- }
-
- // return if there are shadow primitives
- return maShadowPrimitives.hasElements();
- }
-
- Primitive2DSequence Embedded3DPrimitive2D::create2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const
- {
- // use info to create a yellow 2d rectangle, similar to empty 3d scenes and/or groups
- const basegfx::B2DRange aLocal2DRange(getB2DRange(rViewInformation));
- const basegfx::B2DPolygon aOutline(basegfx::tools::createPolygonFromRect(aLocal2DRange));
- const basegfx::BColor aYellow(1.0, 1.0, 0.0);
- const Primitive2DReference xRef(new PolygonHairlinePrimitive2D(aOutline, aYellow));
-
- return Primitive2DSequence(&xRef, 1L);
- }
-
- Embedded3DPrimitive2D::Embedded3DPrimitive2D(
- const primitive3d::Primitive3DSequence& rxChildren3D,
- const basegfx::B2DHomMatrix& rObjectTransformation,
- const geometry::ViewInformation3D& rViewInformation3D,
- const basegfx::B3DVector& rLightNormal,
- double fShadowSlant,
- const basegfx::B3DRange& rScene3DRange)
- : BufferedDecompositionPrimitive2D(),
- mxChildren3D(rxChildren3D),
- maObjectTransformation(rObjectTransformation),
- maViewInformation3D(rViewInformation3D),
- maLightNormal(rLightNormal),
- mfShadowSlant(fShadowSlant),
- maScene3DRange(rScene3DRange),
- maShadowPrimitives(),
- maB2DRange(),
- mbShadow3DChecked(false)
- {
- maLightNormal.normalize();
- }
-
- bool Embedded3DPrimitive2D::operator==(const BasePrimitive2D& rPrimitive) const
- {
- if(BufferedDecompositionPrimitive2D::operator==(rPrimitive))
- {
- const Embedded3DPrimitive2D& rCompare = static_cast< const Embedded3DPrimitive2D& >(rPrimitive);
-
- return (primitive3d::arePrimitive3DSequencesEqual(getChildren3D(), rCompare.getChildren3D())
- && getObjectTransformation() == rCompare.getObjectTransformation()
- && getViewInformation3D() == rCompare.getViewInformation3D()
- && getLightNormal() == rCompare.getLightNormal()
- && getShadowSlant() == rCompare.getShadowSlant()
- && getScene3DRange() == rCompare.getScene3DRange());
- }
-
- return false;
- }
-
- basegfx::B2DRange Embedded3DPrimitive2D::getB2DRange(const geometry::ViewInformation2D& rViewInformation) const
- {
- if(maB2DRange.isEmpty())
- {
- // use the 3d transformation stack to create a projection of the 3D range
- basegfx::B3DRange a3DRange(primitive3d::getB3DRangeFromPrimitive3DSequence(getChildren3D(), getViewInformation3D()));
- a3DRange.transform(getViewInformation3D().getObjectToView());
-
- // create 2d range from projected 3d and transform with scene's object transformation
- basegfx::B2DRange aNewRange;
- aNewRange.expand(basegfx::B2DPoint(a3DRange.getMinX(), a3DRange.getMinY()));
- aNewRange.expand(basegfx::B2DPoint(a3DRange.getMaxX(), a3DRange.getMaxY()));
- aNewRange.transform(getObjectTransformation());
-
- // cehck for 3D shadows and their 2D projections. If those exist, they need to be
- // taken into account
- if(impGetShadow3D(rViewInformation))
- {
- const basegfx::B2DRange aShadow2DRange(getB2DRangeFromPrimitive2DSequence(maShadowPrimitives, rViewInformation));
-
- if(!aShadow2DRange.isEmpty())
- {
- aNewRange.expand(aShadow2DRange);
- }
- }
-
- // assign to buffered value
- const_cast< Embedded3DPrimitive2D* >(this)->maB2DRange = aNewRange;
- }
-
- return maB2DRange;
- }
-
- // provide unique ID
- ImplPrimitrive2DIDBlock(Embedded3DPrimitive2D, PRIMITIVE2D_ID_EMBEDDED3DPRIMITIVE2D)
-
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/primitive2d/epsprimitive2d.cxx b/drawinglayer/source/primitive2d/epsprimitive2d.cxx
deleted file mode 100644
index fbd0225961..0000000000
--- a/drawinglayer/source/primitive2d/epsprimitive2d.cxx
+++ /dev/null
@@ -1,106 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/primitive2d/epsprimitive2d.hxx>
-#include <drawinglayer/primitive2d/drawinglayer_primitivetypes2d.hxx>
-#include <drawinglayer/primitive2d/metafileprimitive2d.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- Primitive2DSequence EpsPrimitive2D::create2DDecomposition(const geometry::ViewInformation2D& /*rViewInformation*/) const
- {
- Primitive2DSequence xRetval;
- const GDIMetaFile& rSubstituteContent = getMetaFile();
-
- if( rSubstituteContent.GetActionSize() )
- {
- // the default decomposition will use the Metafile replacement visualisation.
- // To really use the Eps data, a renderer has to know and interpret this primitive
- // directly.
- xRetval.realloc(1);
-
- xRetval[0] = Primitive2DReference(
- new MetafilePrimitive2D(
- getEpsTransform(),
- rSubstituteContent));
- }
-
- return xRetval;
- }
-
- EpsPrimitive2D::EpsPrimitive2D(
- const basegfx::B2DHomMatrix& rEpsTransform,
- const GfxLink& rGfxLink,
- const GDIMetaFile& rMetaFile)
- : BufferedDecompositionPrimitive2D(),
- maEpsTransform(rEpsTransform),
- maGfxLink(rGfxLink),
- maMetaFile(rMetaFile)
- {
- }
-
- bool EpsPrimitive2D::operator==(const BasePrimitive2D& rPrimitive) const
- {
- if(BufferedDecompositionPrimitive2D::operator==(rPrimitive))
- {
- const EpsPrimitive2D& rCompare = (EpsPrimitive2D&)rPrimitive;
-
- return (getEpsTransform() == rCompare.getEpsTransform()
- && getGfxLink().IsEqual(rCompare.getGfxLink())
- && getMetaFile() == rCompare.getMetaFile());
- }
-
- return false;
- }
-
- basegfx::B2DRange EpsPrimitive2D::getB2DRange(const geometry::ViewInformation2D& /*rViewInformation*/) const
- {
- // use own implementation to quickly answer the getB2DRange question.
- basegfx::B2DRange aRetval(0.0, 0.0, 1.0, 1.0);
- aRetval.transform(getEpsTransform());
-
- return aRetval;
- }
-
- // provide unique ID
- ImplPrimitrive2DIDBlock(EpsPrimitive2D, PRIMITIVE2D_ID_EPSPRIMITIVE2D)
-
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/primitive2d/fillbitmapprimitive2d.cxx b/drawinglayer/source/primitive2d/fillbitmapprimitive2d.cxx
deleted file mode 100644
index 8a4d70b959..0000000000
--- a/drawinglayer/source/primitive2d/fillbitmapprimitive2d.cxx
+++ /dev/null
@@ -1,145 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/primitive2d/fillbitmapprimitive2d.hxx>
-#include <drawinglayer/primitive2d/bitmapprimitive2d.hxx>
-#include <basegfx/polygon/b2dpolygon.hxx>
-#include <basegfx/polygon/b2dpolygontools.hxx>
-#include <drawinglayer/texture/texture.hxx>
-#include <basegfx/tools/canvastools.hxx>
-#include <drawinglayer/primitive2d/drawinglayer_primitivetypes2d.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-using namespace com::sun::star;
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- Primitive2DSequence FillBitmapPrimitive2D::create2DDecomposition(const geometry::ViewInformation2D& /*rViewInformation*/) const
- {
- Primitive2DSequence aRetval;
-
- if(!getFillBitmap().isDefault())
- {
- const Size aTileSizePixel(getFillBitmap().getBitmapEx().GetSizePixel());
-
- // is there a tile with some size at all?
- if(aTileSizePixel.getWidth() && aTileSizePixel.getHeight())
- {
- if(getFillBitmap().getTiling())
- {
- // get object range and create tiling matrices
- ::std::vector< basegfx::B2DHomMatrix > aMatrices;
- texture::GeoTexSvxTiled aTiling(getFillBitmap().getTopLeft(), getFillBitmap().getSize());
- aTiling.appendTransformations(aMatrices);
-
- // resize result
- aRetval.realloc(aMatrices.size());
-
- // create one primitive for each matrix
- for(sal_uInt32 a(0L); a < aMatrices.size(); a++)
- {
- basegfx::B2DHomMatrix aNewMatrix = aMatrices[a];
- aNewMatrix *= getTransformation();
-
- // create bitmap primitive and add to result
- const Primitive2DReference xRef(
- new BitmapPrimitive2D(getFillBitmap().getBitmapEx(), aNewMatrix));
-
- aRetval[a] = xRef;
- }
- }
- else
- {
- // create new object transform
- basegfx::B2DHomMatrix aObjectTransform;
- aObjectTransform.set(0L, 0L, getFillBitmap().getSize().getX());
- aObjectTransform.set(1L, 1L, getFillBitmap().getSize().getY());
- aObjectTransform.set(0L, 2L, getFillBitmap().getTopLeft().getX());
- aObjectTransform.set(1L, 2L, getFillBitmap().getTopLeft().getY());
- aObjectTransform *= getTransformation();
-
- // create bitmap primitive and add exclusive to decomposition (hand over ownership)
- const Primitive2DReference xRef(
- new BitmapPrimitive2D(getFillBitmap().getBitmapEx(), aObjectTransform));
-
- aRetval = Primitive2DSequence(&xRef, 1L);
- }
- }
- }
-
- return aRetval;
- }
-
- FillBitmapPrimitive2D::FillBitmapPrimitive2D(
- const basegfx::B2DHomMatrix& rTransformation,
- const attribute::FillBitmapAttribute& rFillBitmap)
- : BufferedDecompositionPrimitive2D(),
- maTransformation(rTransformation),
- maFillBitmap(rFillBitmap)
- {
- }
-
- bool FillBitmapPrimitive2D::operator==(const BasePrimitive2D& rPrimitive) const
- {
- if(BufferedDecompositionPrimitive2D::operator==(rPrimitive))
- {
- const FillBitmapPrimitive2D& rCompare = static_cast< const FillBitmapPrimitive2D& >(rPrimitive);
-
- return (getTransformation() == rCompare.getTransformation()
- && getFillBitmap() == rCompare.getFillBitmap());
- }
-
- return false;
- }
-
- basegfx::B2DRange FillBitmapPrimitive2D::getB2DRange(const geometry::ViewInformation2D& /*rViewInformation*/) const
- {
- // return range of it
- basegfx::B2DPolygon aPolygon(basegfx::tools::createUnitPolygon());
- aPolygon.transform(getTransformation());
- return basegfx::tools::getRange(aPolygon);
- }
-
- // provide unique ID
- ImplPrimitrive2DIDBlock(FillBitmapPrimitive2D, PRIMITIVE2D_ID_FILLBITMAPPRIMITIVE2D)
-
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/primitive2d/fillgradientprimitive2d.cxx b/drawinglayer/source/primitive2d/fillgradientprimitive2d.cxx
deleted file mode 100644
index b75f9a6e0d..0000000000
--- a/drawinglayer/source/primitive2d/fillgradientprimitive2d.cxx
+++ /dev/null
@@ -1,301 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/primitive2d/fillgradientprimitive2d.hxx>
-#include <basegfx/polygon/b2dpolygon.hxx>
-#include <basegfx/polygon/b2dpolygontools.hxx>
-#include <drawinglayer/texture/texture.hxx>
-#include <drawinglayer/primitive2d/polypolygonprimitive2d.hxx>
-#include <basegfx/tools/canvastools.hxx>
-#include <drawinglayer/primitive2d/drawinglayer_primitivetypes2d.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-using namespace com::sun::star;
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- void FillGradientPrimitive2D::generateMatricesAndColors(
- std::vector< basegfx::B2DHomMatrix >& rMatrices,
- std::vector< basegfx::BColor >& rColors) const
- {
- rMatrices.clear();
- rColors.clear();
-
- // make sure steps is not too high/low
- const basegfx::BColor aStart(getFillGradient().getStartColor());
- const basegfx::BColor aEnd(getFillGradient().getEndColor());
- const sal_uInt32 nMaxSteps(sal_uInt32((aStart.getMaximumDistance(aEnd) * 127.5) + 0.5));
- sal_uInt32 nSteps(getFillGradient().getSteps());
-
- if(nSteps == 0)
- {
- nSteps = nMaxSteps;
- }
-
- if(nSteps < 2)
- {
- nSteps = 2;
- }
-
- if(nSteps > nMaxSteps)
- {
- nSteps = nMaxSteps;
- }
-
- switch(getFillGradient().getStyle())
- {
- case attribute::GRADIENTSTYLE_LINEAR:
- {
- texture::GeoTexSvxGradientLinear aGradient(getObjectRange(), aStart, aEnd, nSteps, getFillGradient().getBorder(), getFillGradient().getAngle());
- aGradient.appendTransformations(rMatrices);
- aGradient.appendColors(rColors);
- break;
- }
- case attribute::GRADIENTSTYLE_AXIAL:
- {
- texture::GeoTexSvxGradientAxial aGradient(getObjectRange(), aStart, aEnd, nSteps, getFillGradient().getBorder(), getFillGradient().getAngle());
- aGradient.appendTransformations(rMatrices);
- aGradient.appendColors(rColors);
- break;
- }
- case attribute::GRADIENTSTYLE_RADIAL:
- {
- texture::GeoTexSvxGradientRadial aGradient(getObjectRange(), aStart, aEnd, nSteps, getFillGradient().getBorder(), getFillGradient().getOffsetX(), getFillGradient().getOffsetY());
- aGradient.appendTransformations(rMatrices);
- aGradient.appendColors(rColors);
- break;
- }
- case attribute::GRADIENTSTYLE_ELLIPTICAL:
- {
- texture::GeoTexSvxGradientElliptical aGradient(getObjectRange(), aStart, aEnd, nSteps, getFillGradient().getBorder(), getFillGradient().getOffsetX(), getFillGradient().getOffsetY(), getFillGradient().getAngle());
- aGradient.appendTransformations(rMatrices);
- aGradient.appendColors(rColors);
- break;
- }
- case attribute::GRADIENTSTYLE_SQUARE:
- {
- texture::GeoTexSvxGradientSquare aGradient(getObjectRange(), aStart, aEnd, nSteps, getFillGradient().getBorder(), getFillGradient().getOffsetX(), getFillGradient().getOffsetY(), getFillGradient().getAngle());
- aGradient.appendTransformations(rMatrices);
- aGradient.appendColors(rColors);
- break;
- }
- case attribute::GRADIENTSTYLE_RECT:
- {
- texture::GeoTexSvxGradientRect aGradient(getObjectRange(), aStart, aEnd, nSteps, getFillGradient().getBorder(), getFillGradient().getOffsetX(), getFillGradient().getOffsetY(), getFillGradient().getAngle());
- aGradient.appendTransformations(rMatrices);
- aGradient.appendColors(rColors);
- break;
- }
- }
- }
-
- Primitive2DSequence FillGradientPrimitive2D::createOverlappingFill(
- const std::vector< basegfx::B2DHomMatrix >& rMatrices,
- const std::vector< basegfx::BColor >& rColors,
- const basegfx::B2DPolygon& rUnitPolygon) const
- {
- // prepare return value
- Primitive2DSequence aRetval(rColors.size() ? rMatrices.size() + 1 : rMatrices.size());
-
- // create solid fill with start color
- if(rColors.size())
- {
- // create primitive
- const Primitive2DReference xRef(
- new PolyPolygonColorPrimitive2D(
- basegfx::B2DPolyPolygon(basegfx::tools::createPolygonFromRect(getObjectRange())),
- rColors[0]));
- aRetval[0] = xRef;
- }
-
- // create solid fill steps
- for(sal_uInt32 a(0); a < rMatrices.size(); a++)
- {
- // create part polygon
- basegfx::B2DPolygon aNewPoly(rUnitPolygon);
- aNewPoly.transform(rMatrices[a]);
-
- // create solid fill
- const Primitive2DReference xRef(
- new PolyPolygonColorPrimitive2D(
- basegfx::B2DPolyPolygon(aNewPoly),
- rColors[a + 1]));
- aRetval[a + 1] = xRef;
- }
-
- return aRetval;
- }
-
- Primitive2DSequence FillGradientPrimitive2D::createNonOverlappingFill(
- const std::vector< basegfx::B2DHomMatrix >& rMatrices,
- const std::vector< basegfx::BColor >& rColors,
- const basegfx::B2DPolygon& rUnitPolygon) const
- {
- // prepare return value
- Primitive2DSequence aRetval;
- const sal_uInt32 nMatricesSize(rMatrices.size());
-
- if(nMatricesSize)
- {
- basegfx::B2DPolygon aOuterPoly(rUnitPolygon);
- aOuterPoly.transform(rMatrices[0]);
- basegfx::B2DPolyPolygon aCombinedPolyPoly(aOuterPoly);
- const sal_uInt32 nEntryCount(rColors.size() ? rMatrices.size() + 1 : rMatrices.size());
- sal_uInt32 nIndex(0);
-
- aRetval.realloc(nEntryCount);
-
- if(rColors.size())
- {
- basegfx::B2DRange aOuterPolyRange(aOuterPoly.getB2DRange());
- aOuterPolyRange.expand(getObjectRange());
- aCombinedPolyPoly.append(basegfx::tools::createPolygonFromRect(aOuterPolyRange));
- aRetval[nIndex++] = Primitive2DReference(new PolyPolygonColorPrimitive2D(aCombinedPolyPoly, rColors[0]));
- aCombinedPolyPoly = basegfx::B2DPolyPolygon(aOuterPoly);
- }
-
- for(sal_uInt32 a(1); a < nMatricesSize - 1; a++)
- {
- basegfx::B2DPolygon aInnerPoly(rUnitPolygon);
- aInnerPoly.transform(rMatrices[a]);
- aCombinedPolyPoly.append(aInnerPoly);
- aRetval[nIndex++] = Primitive2DReference(new PolyPolygonColorPrimitive2D(aCombinedPolyPoly, rColors[a]));
- aCombinedPolyPoly = basegfx::B2DPolyPolygon(aInnerPoly);
- }
-
- if(rColors.size())
- {
- aRetval[nIndex] = Primitive2DReference(new PolyPolygonColorPrimitive2D(
- aCombinedPolyPoly, rColors[rColors.size() - 1]));
- }
- }
-
- return aRetval;
- }
-
- Primitive2DSequence FillGradientPrimitive2D::createFill(bool bOverlapping) const
- {
- // prepare shape of the Unit Polygon
- basegfx::B2DPolygon aUnitPolygon;
-
- if(attribute::GRADIENTSTYLE_RADIAL == getFillGradient().getStyle()
- || attribute::GRADIENTSTYLE_ELLIPTICAL == getFillGradient().getStyle())
- {
- aUnitPolygon = basegfx::tools::createPolygonFromCircle(
- basegfx::B2DPoint(0,0), 1);
- }
- else if(attribute::GRADIENTSTYLE_LINEAR == maFillGradient.getStyle())
- {
- aUnitPolygon = basegfx::tools::createPolygonFromRect(basegfx::B2DRange(0, 0, 1, 1));
- }
- else
- {
- aUnitPolygon = basegfx::tools::createPolygonFromRect(basegfx::B2DRange(-1, -1, 1, 1));
- }
-
- // get the transform matrices and colors (where colors
- // will have one more entry that matrices)
- std::vector< basegfx::B2DHomMatrix > aMatrices;
- std::vector< basegfx::BColor > aColors;
- generateMatricesAndColors(aMatrices, aColors);
-
- if(bOverlapping)
- {
- return createOverlappingFill(aMatrices, aColors, aUnitPolygon);
- }
- else
- {
- return createNonOverlappingFill(aMatrices, aColors, aUnitPolygon);
- }
- }
-
- Primitive2DSequence FillGradientPrimitive2D::create2DDecomposition(const geometry::ViewInformation2D& /*rViewInformation*/) const
- {
- // default creates overlapping fill which works with AntiAliasing and without.
- // The non-overlapping version does not create single filled polygons, but
- // PolyPolygons where each one describes a 'ring' for the gradient such
- // that the rings will not overlap. This is useful fir the old XOR-paint
- // 'trick' of VCL which is recorded in Metafiles; so this version may be
- // used from the MetafilePrimitive2D in it's decomposition.
-
- if(!getFillGradient().isDefault())
- {
- return createFill(true);
- }
- else
- {
- return Primitive2DSequence();
- }
- }
-
- FillGradientPrimitive2D::FillGradientPrimitive2D(
- const basegfx::B2DRange& rObjectRange,
- const attribute::FillGradientAttribute& rFillGradient)
- : BufferedDecompositionPrimitive2D(),
- maObjectRange(rObjectRange),
- maFillGradient(rFillGradient)
- {
- }
-
- bool FillGradientPrimitive2D::operator==(const BasePrimitive2D& rPrimitive) const
- {
- if(BufferedDecompositionPrimitive2D::operator==(rPrimitive))
- {
- const FillGradientPrimitive2D& rCompare = (FillGradientPrimitive2D&)rPrimitive;
-
- return (getObjectRange() == rCompare.getObjectRange()
- && getFillGradient() == rCompare.getFillGradient());
- }
-
- return false;
- }
-
- basegfx::B2DRange FillGradientPrimitive2D::getB2DRange(const geometry::ViewInformation2D& /*rViewInformation*/) const
- {
- // return ObjectRange
- return getObjectRange();
- }
-
- // provide unique ID
- ImplPrimitrive2DIDBlock(FillGradientPrimitive2D, PRIMITIVE2D_ID_FILLGRADIENTPRIMITIVE2D)
-
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/primitive2d/fillhatchprimitive2d.cxx b/drawinglayer/source/primitive2d/fillhatchprimitive2d.cxx
deleted file mode 100644
index 1e0e9fdff9..0000000000
--- a/drawinglayer/source/primitive2d/fillhatchprimitive2d.cxx
+++ /dev/null
@@ -1,164 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/primitive2d/fillhatchprimitive2d.hxx>
-#include <drawinglayer/texture/texture.hxx>
-#include <drawinglayer/primitive2d/polypolygonprimitive2d.hxx>
-#include <basegfx/polygon/b2dpolygontools.hxx>
-#include <basegfx/polygon/b2dpolygon.hxx>
-#include <basegfx/tools/canvastools.hxx>
-#include <drawinglayer/primitive2d/polygonprimitive2d.hxx>
-#include <drawinglayer/primitive2d/drawinglayer_primitivetypes2d.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-using namespace com::sun::star;
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- Primitive2DSequence FillHatchPrimitive2D::create2DDecomposition(const geometry::ViewInformation2D& /*rViewInformation*/) const
- {
- Primitive2DSequence aRetval;
- if(!getFillHatch().isDefault())
- {
- // create hatch
- const basegfx::BColor aHatchColor(getFillHatch().getColor());
- const double fAngle(getFillHatch().getAngle());
- ::std::vector< basegfx::B2DHomMatrix > aMatrices;
-
- // get hatch transformations
- switch(getFillHatch().getStyle())
- {
- case attribute::HATCHSTYLE_TRIPLE:
- {
- // rotated 45 degrees
- texture::GeoTexSvxHatch aHatch(getObjectRange(), getFillHatch().getDistance(), fAngle - F_PI4);
- aHatch.appendTransformations(aMatrices);
-
- // fall-through by purpose
- }
- case attribute::HATCHSTYLE_DOUBLE:
- {
- // rotated 90 degrees
- texture::GeoTexSvxHatch aHatch(getObjectRange(), getFillHatch().getDistance(), fAngle - F_PI2);
- aHatch.appendTransformations(aMatrices);
-
- // fall-through by purpose
- }
- case attribute::HATCHSTYLE_SINGLE:
- {
- // angle as given
- texture::GeoTexSvxHatch aHatch(getObjectRange(), getFillHatch().getDistance(), fAngle);
- aHatch.appendTransformations(aMatrices);
- }
- }
-
- // prepare return value
- const bool bFillBackground(getFillHatch().isFillBackground());
- aRetval.realloc(bFillBackground ? aMatrices.size() + 1L : aMatrices.size());
-
- // evtl. create filled background
- if(bFillBackground)
- {
- // create primitive for background
- const Primitive2DReference xRef(
- new PolyPolygonColorPrimitive2D(
- basegfx::B2DPolyPolygon(
- basegfx::tools::createPolygonFromRect(getObjectRange())), getBColor()));
- aRetval[0] = xRef;
- }
-
- // create primitives
- const basegfx::B2DPoint aStart(0.0, 0.0);
- const basegfx::B2DPoint aEnd(1.0, 0.0);
-
- for(sal_uInt32 a(0L); a < aMatrices.size(); a++)
- {
- const basegfx::B2DHomMatrix& rMatrix = aMatrices[a];
- basegfx::B2DPolygon aNewLine;
-
- aNewLine.append(rMatrix * aStart);
- aNewLine.append(rMatrix * aEnd);
-
- // create hairline
- const Primitive2DReference xRef(new PolygonHairlinePrimitive2D(aNewLine, aHatchColor));
- aRetval[bFillBackground ? (a + 1) : a] = xRef;
- }
- }
-
- return aRetval;
- }
-
- FillHatchPrimitive2D::FillHatchPrimitive2D(
- const basegfx::B2DRange& rObjectRange,
- const basegfx::BColor& rBColor,
- const attribute::FillHatchAttribute& rFillHatch)
- : BufferedDecompositionPrimitive2D(),
- maObjectRange(rObjectRange),
- maFillHatch(rFillHatch),
- maBColor(rBColor)
- {
- }
-
- bool FillHatchPrimitive2D::operator==(const BasePrimitive2D& rPrimitive) const
- {
- if(BufferedDecompositionPrimitive2D::operator==(rPrimitive))
- {
- const FillHatchPrimitive2D& rCompare = (FillHatchPrimitive2D&)rPrimitive;
-
- return (getObjectRange() == rCompare.getObjectRange()
- && getFillHatch() == rCompare.getFillHatch()
- && getBColor() == rCompare.getBColor());
- }
-
- return false;
- }
-
- basegfx::B2DRange FillHatchPrimitive2D::getB2DRange(const geometry::ViewInformation2D& /*rViewInformation*/) const
- {
- // return ObjectRange
- return getObjectRange();
- }
-
- // provide unique ID
- ImplPrimitrive2DIDBlock(FillHatchPrimitive2D, PRIMITIVE2D_ID_FILLHATCHPRIMITIVE2D)
-
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/primitive2d/graphicprimitive2d.cxx b/drawinglayer/source/primitive2d/graphicprimitive2d.cxx
deleted file mode 100644
index 55ed96d09c..0000000000
--- a/drawinglayer/source/primitive2d/graphicprimitive2d.cxx
+++ /dev/null
@@ -1,502 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/primitive2d/graphicprimitive2d.hxx>
-#include <drawinglayer/animation/animationtiming.hxx>
-#include <drawinglayer/primitive2d/bitmapprimitive2d.hxx>
-#include <drawinglayer/primitive2d/rendergraphicprimitive2d.hxx>
-#include <drawinglayer/primitive2d/animatedprimitive2d.hxx>
-#include <drawinglayer/primitive2d/metafileprimitive2d.hxx>
-#include <drawinglayer/primitive2d/transformprimitive2d.hxx>
-#include <basegfx/polygon/b2dpolygon.hxx>
-#include <basegfx/polygon/b2dpolygontools.hxx>
-#include <drawinglayer/primitive2d/maskprimitive2d.hxx>
-#include <drawinglayer/primitive2d/drawinglayer_primitivetypes2d.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-// helper class for animated graphics
-
-#include <vcl/animate.hxx>
-#include <vcl/graph.hxx>
-#include <vcl/virdev.hxx>
-#include <vcl/svapp.hxx>
-#include <vcl/metaact.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-// includes for testing MetafilePrimitive2D::create2DDecomposition
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace
-{
- struct animationStep
- {
- BitmapEx maBitmapEx;
- sal_uInt32 mnTime;
- };
-
- class animatedBitmapExPreparator
- {
- ::Animation maAnimation;
- ::std::vector< animationStep > maSteps;
-
- sal_uInt32 generateStepTime(sal_uInt32 nIndex) const;
-
- public:
- animatedBitmapExPreparator(const Graphic& rGraphic);
-
- sal_uInt32 count() const { return maSteps.size(); }
- sal_uInt32 loopCount() const { return (sal_uInt32)maAnimation.GetLoopCount(); }
- sal_uInt32 stepTime(sal_uInt32 a) const { return maSteps[a].mnTime; }
- const BitmapEx& stepBitmapEx(sal_uInt32 a) const { return maSteps[a].maBitmapEx; }
- };
-
- sal_uInt32 animatedBitmapExPreparator::generateStepTime(sal_uInt32 nIndex) const
- {
- const AnimationBitmap& rAnimBitmap = maAnimation.Get(sal_uInt16(nIndex));
- sal_uInt32 nWaitTime(rAnimBitmap.nWait * 10);
-
- // #115934#
- // Take care of special value for MultiPage TIFFs. ATM these shall just
- // show their first page. Later we will offer some switching when object
- // is selected.
- if(ANIMATION_TIMEOUT_ON_CLICK == rAnimBitmap.nWait)
- {
- // ATM the huge value would block the timer, so
- // use a long time to show first page (whole day)
- nWaitTime = 100 * 60 * 60 * 24;
- }
-
- // Bad trap: There are animated gifs with no set WaitTime (!).
- // In that case use a default value.
- if(0L == nWaitTime)
- {
- nWaitTime = 100L;
- }
-
- return nWaitTime;
- }
-
- animatedBitmapExPreparator::animatedBitmapExPreparator(const Graphic& rGraphic)
- : maAnimation(rGraphic.GetAnimation())
- {
- OSL_ENSURE(GRAPHIC_BITMAP == rGraphic.GetType() && rGraphic.IsAnimated(), "animatedBitmapExPreparator: graphic is not animated (!)");
-
- // #128539# secure access to Animation, looks like there exist animated GIFs out there
- // with a step count of zero
- if(maAnimation.Count())
- {
- VirtualDevice aVirtualDevice(*Application::GetDefaultDevice());
- VirtualDevice aVirtualDeviceMask(*Application::GetDefaultDevice(), 1L);
-
- // Prepare VirtualDevices and their states
- aVirtualDevice.EnableMapMode(sal_False);
- aVirtualDeviceMask.EnableMapMode(sal_False);
- aVirtualDevice.SetOutputSizePixel(maAnimation.GetDisplaySizePixel());
- aVirtualDeviceMask.SetOutputSizePixel(maAnimation.GetDisplaySizePixel());
- aVirtualDevice.Erase();
- aVirtualDeviceMask.Erase();
-
- for(sal_uInt16 a(0L); a < maAnimation.Count(); a++)
- {
- animationStep aNextStep;
- aNextStep.mnTime = generateStepTime(a);
-
- // prepare step
- const AnimationBitmap& rAnimBitmap = maAnimation.Get(sal_uInt16(a));
-
- switch(rAnimBitmap.eDisposal)
- {
- case DISPOSE_NOT:
- {
- aVirtualDevice.DrawBitmapEx(rAnimBitmap.aPosPix, rAnimBitmap.aBmpEx);
- Bitmap aMask = rAnimBitmap.aBmpEx.GetMask();
-
- if(aMask.IsEmpty())
- {
- const Point aEmpty;
- const Rectangle aRect(aEmpty, aVirtualDeviceMask.GetOutputSizePixel());
- const Wallpaper aWallpaper(COL_BLACK);
- aVirtualDeviceMask.DrawWallpaper(aRect, aWallpaper);
- }
- else
- {
- BitmapEx aExpandVisibilityMask = BitmapEx(aMask, aMask);
- aVirtualDeviceMask.DrawBitmapEx(rAnimBitmap.aPosPix, aExpandVisibilityMask);
- }
-
- break;
- }
- case DISPOSE_BACK:
- {
- // #i70772# react on no mask, for primitives, too.
- const Bitmap aMask(rAnimBitmap.aBmpEx.GetMask());
- const Bitmap aContent(rAnimBitmap.aBmpEx.GetBitmap());
-
- aVirtualDeviceMask.Erase();
- aVirtualDevice.DrawBitmap(rAnimBitmap.aPosPix, aContent);
-
- if(aMask.IsEmpty())
- {
- const Rectangle aRect(rAnimBitmap.aPosPix, aContent.GetSizePixel());
- aVirtualDeviceMask.SetFillColor(COL_BLACK);
- aVirtualDeviceMask.SetLineColor();
- aVirtualDeviceMask.DrawRect(aRect);
- }
- else
- {
- aVirtualDeviceMask.DrawBitmap(rAnimBitmap.aPosPix, aMask);
- }
-
- break;
- }
- case DISPOSE_FULL:
- {
- aVirtualDevice.DrawBitmapEx(rAnimBitmap.aPosPix, rAnimBitmap.aBmpEx);
- break;
- }
- case DISPOSE_PREVIOUS :
- {
- aVirtualDevice.DrawBitmapEx(rAnimBitmap.aPosPix, rAnimBitmap.aBmpEx);
- aVirtualDeviceMask.DrawBitmap(rAnimBitmap.aPosPix, rAnimBitmap.aBmpEx.GetMask());
- break;
- }
- }
-
- // create BitmapEx
- Bitmap aMainBitmap = aVirtualDevice.GetBitmap(Point(), aVirtualDevice.GetOutputSizePixel());
- Bitmap aMaskBitmap = aVirtualDeviceMask.GetBitmap(Point(), aVirtualDeviceMask.GetOutputSizePixel());
- aNextStep.maBitmapEx = BitmapEx(aMainBitmap, aMaskBitmap);
-
- // add to vector
- maSteps.push_back(aNextStep);
- }
- }
- }
-} // end of anonymous namespace
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- Primitive2DSequence GraphicPrimitive2D::create2DDecomposition(const geometry::ViewInformation2D&
- ) const
- {
- Primitive2DSequence aRetval;
-
- if(255L != getGraphicAttr().GetTransparency())
- {
- Primitive2DReference xPrimitive;
-
- // do not apply mirroring from GraphicAttr to the Metafile by calling
- // GetTransformedGraphic, this will try to mirror the Metafile using Scale()
- // at the Metafile. This again calls Scale at the single MetaFile actions,
- // but this implementation never worked. I reworked that implementations,
- // but for security reasons i will try not to use it.
- basegfx::B2DHomMatrix aTransform(getTransform());
-
- if(getGraphicAttr().IsMirrored())
- {
- // content needs mirroring
- const bool bHMirr(getGraphicAttr().GetMirrorFlags() & BMP_MIRROR_HORZ);
- const bool bVMirr(getGraphicAttr().GetMirrorFlags() & BMP_MIRROR_VERT);
-
- // mirror by applying negative scale to the unit primitive and
- // applying the object transformation on it.
- aTransform = basegfx::tools::createScaleB2DHomMatrix(
- bHMirr ? -1.0 : 1.0,
- bVMirr ? -1.0 : 1.0);
- aTransform.translate(
- bHMirr ? 1.0 : 0.0,
- bVMirr ? 1.0 : 0.0);
- aTransform = getTransform() * aTransform;
- }
-
- // Get transformed graphic. Suppress rotation and cropping, only filtering is needed
- // here (and may be replaced later on). Cropping is handled below as mask primitive (if set).
- // Also need to suppress mirroring, it is part of the transformation now (see above).
- GraphicAttr aSuppressGraphicAttr(getGraphicAttr());
- aSuppressGraphicAttr.SetCrop(0, 0, 0, 0);
- aSuppressGraphicAttr.SetRotation(0);
- aSuppressGraphicAttr.SetMirrorFlags(0);
-
- const GraphicObject& rGraphicObject = getGraphicObject();
- const Graphic aTransformedGraphic(rGraphicObject.GetTransformedGraphic(&aSuppressGraphicAttr));
-
- switch(aTransformedGraphic.GetType())
- {
- case GRAPHIC_BITMAP :
- {
- if(aTransformedGraphic.IsAnimated())
- {
- // prepare animation data
- animatedBitmapExPreparator aData(aTransformedGraphic);
-
- if(aData.count())
- {
- // create sub-primitives for animated bitmap and the needed animation loop
- animation::AnimationEntryLoop aAnimationLoop(aData.loopCount() ? aData.loopCount() : 0xffff);
- Primitive2DSequence aBitmapPrimitives(aData.count());
-
- for(sal_uInt32 a(0L); a < aData.count(); a++)
- {
- animation::AnimationEntryFixed aTime((double)aData.stepTime(a), (double)a / (double)aData.count());
- aAnimationLoop.append(aTime);
- const Primitive2DReference xRef(new BitmapPrimitive2D(aData.stepBitmapEx(a), aTransform));
- aBitmapPrimitives[a] = xRef;
- }
-
- // prepare animation list
- animation::AnimationEntryList aAnimationList;
- aAnimationList.append(aAnimationLoop);
-
- // create and add animated switch primitive
- xPrimitive = Primitive2DReference(new AnimatedSwitchPrimitive2D(aAnimationList, aBitmapPrimitives, false));
- }
- }
- else
- {
- xPrimitive = Primitive2DReference(new BitmapPrimitive2D(aTransformedGraphic.GetBitmapEx(), aTransform));
- }
-
- break;
- }
-
- case GRAPHIC_GDIMETAFILE :
- {
- // create MetafilePrimitive2D
- const GDIMetaFile& rMetafile = aTransformedGraphic.GetGDIMetaFile();
-
- if( aTransformedGraphic.IsRenderGraphic() )
- {
- xPrimitive = Primitive2DReference(
- new RenderGraphicPrimitive2D(
- static_cast< MetaRenderGraphicAction* >(rMetafile.GetAction(0))->GetRenderGraphic(),
- aTransform));
- }
- else
- {
- xPrimitive = Primitive2DReference(
- new MetafilePrimitive2D(
- aTransform,
- rMetafile));
-
- // #i100357# find out if clipping is needed for this primitive. Unfortunately,
- // there exist Metafiles who's content is bigger than the proposed PrefSize set
- // at them. This is an error, but we need to work around this
- const Size aMetaFilePrefSize(rMetafile.GetPrefSize());
- const Size aMetaFileRealSize(
- const_cast< GDIMetaFile& >(rMetafile).GetBoundRect(
- *Application::GetDefaultDevice()).GetSize());
-
- if(aMetaFileRealSize.getWidth() > aMetaFilePrefSize.getWidth()
- || aMetaFileRealSize.getHeight() > aMetaFilePrefSize.getHeight())
- {
- // clipping needed. Embed to MaskPrimitive2D. Create childs and mask polygon
- const primitive2d::Primitive2DSequence aChildContent(&xPrimitive, 1);
- basegfx::B2DPolygon aMaskPolygon(basegfx::tools::createUnitPolygon());
- aMaskPolygon.transform(aTransform);
-
- xPrimitive = Primitive2DReference(
- new MaskPrimitive2D(
- basegfx::B2DPolyPolygon(aMaskPolygon),
- aChildContent));
- }
- }
-
- break;
- }
-
- default:
- {
- // nothing to create
- break;
- }
- }
-
- if(xPrimitive.is())
- {
- // check for cropping
- if(getGraphicAttr().IsCropped())
- {
- // decompose to get current pos and size
- basegfx::B2DVector aScale, aTranslate;
- double fRotate, fShearX;
- getTransform().decompose(aScale, aTranslate, fRotate, fShearX);
-
- // create ranges. The current object range is just scale and translate
- const basegfx::B2DRange aCurrent(
- aTranslate.getX(), aTranslate.getY(),
- aTranslate.getX() + aScale.getX(), aTranslate.getY() + aScale.getY());
-
- // calculate scalings between real image size and logic object size. This
- // is necessary since the crop values are relative to original bitmap size
- double fFactorX(1.0);
- double fFactorY(1.0);
-
- {
- const MapMode aMapMode100thmm(MAP_100TH_MM);
- Size aBitmapSize(rGraphicObject.GetPrefSize());
-
- // #i95968# better support PrefMapMode; special for MAP_PIXEL was missing
- if(MAP_PIXEL == rGraphicObject.GetPrefMapMode().GetMapUnit())
- {
- aBitmapSize = Application::GetDefaultDevice()->PixelToLogic(aBitmapSize, aMapMode100thmm);
- }
- else
- {
- aBitmapSize = Application::GetDefaultDevice()->LogicToLogic(aBitmapSize, rGraphicObject.GetPrefMapMode(), aMapMode100thmm);
- }
-
- const double fDivX(aBitmapSize.Width() - getGraphicAttr().GetLeftCrop() - getGraphicAttr().GetRightCrop());
- const double fDivY(aBitmapSize.Height() - getGraphicAttr().GetTopCrop() - getGraphicAttr().GetBottomCrop());
-
- if(!basegfx::fTools::equalZero(fDivX))
- {
- fFactorX = aScale.getX() / fDivX;
- }
-
- if(!basegfx::fTools::equalZero(fDivY))
- {
- fFactorY = aScale.getY() / fDivY;
- }
- }
-
- // Create cropped range, describes the bounds of the original graphic
- basegfx::B2DRange aCropped;
- aCropped.expand(aCurrent.getMinimum() - basegfx::B2DPoint(getGraphicAttr().GetLeftCrop() * fFactorX, getGraphicAttr().GetTopCrop() * fFactorY));
- aCropped.expand(aCurrent.getMaximum() + basegfx::B2DPoint(getGraphicAttr().GetRightCrop() * fFactorX, getGraphicAttr().GetBottomCrop() * fFactorY));
-
- if(aCropped.isEmpty())
- {
- // nothing to add since cropped bitmap is completely empty
- // xPrimitive will not be used
- }
- else
- {
- // build new object transformation for transform primitive which contains xPrimitive
- basegfx::B2DHomMatrix aNewObjectTransform(getTransform());
- aNewObjectTransform.invert();
- aNewObjectTransform = basegfx::tools::createScaleTranslateB2DHomMatrix(
- aCropped.getWidth(), aCropped.getHeight(),
- aCropped.getMinX() - aCurrent.getMinX(), aCropped.getMinY() - aCurrent.getMinY())
- * aNewObjectTransform;
-
- // add shear, rotate and translate using combined matrix to speedup
- const basegfx::B2DHomMatrix aCombinedMatrix(basegfx::tools::createShearXRotateTranslateB2DHomMatrix(
- fShearX, fRotate, aTranslate.getX(), aTranslate.getY()));
- aNewObjectTransform = aCombinedMatrix * aNewObjectTransform;
-
- // prepare TransformPrimitive2D with xPrimitive
- const Primitive2DReference xTransformPrimitive(new TransformPrimitive2D(aNewObjectTransform, Primitive2DSequence(&xPrimitive, 1L)));
-
- if(aCurrent.isInside(aCropped))
- {
- // cropped just got smaller, no need to really use a mask. Add to destination directly
- appendPrimitive2DReferenceToPrimitive2DSequence(aRetval, xTransformPrimitive);
- }
- else
- {
- // cropped got bigger, mask it with original object's bounds
- basegfx::B2DPolyPolygon aMaskPolyPolygon(basegfx::tools::createUnitPolygon());
- aMaskPolyPolygon.transform(getTransform());
-
- // create maskPrimitive with aMaskPolyPolygon and aMaskContentVector
- const Primitive2DReference xRefB(new MaskPrimitive2D(aMaskPolyPolygon, Primitive2DSequence(&xTransformPrimitive, 1L)));
- appendPrimitive2DReferenceToPrimitive2DSequence(aRetval, xRefB);
- }
- }
- }
- else
- {
- // add to decomposition
- appendPrimitive2DReferenceToPrimitive2DSequence(aRetval, xPrimitive);
- }
- }
- }
-
- return aRetval;
- }
-
- GraphicPrimitive2D::GraphicPrimitive2D(
- const basegfx::B2DHomMatrix& rTransform,
- const GraphicObject& rGraphicObject,
- const GraphicAttr& rGraphicAttr)
- : BufferedDecompositionPrimitive2D(),
- maTransform(rTransform),
- maGraphicObject(rGraphicObject),
- maGraphicAttr(rGraphicAttr)
- {
- }
-
- GraphicPrimitive2D::GraphicPrimitive2D(
- const basegfx::B2DHomMatrix& rTransform,
- const GraphicObject& rGraphicObject)
- : BufferedDecompositionPrimitive2D(),
- maTransform(rTransform),
- maGraphicObject(rGraphicObject),
- maGraphicAttr()
- {
- }
-
- bool GraphicPrimitive2D::operator==(const BasePrimitive2D& rPrimitive) const
- {
- if(BufferedDecompositionPrimitive2D::operator==(rPrimitive))
- {
- const GraphicPrimitive2D& rCompare = (GraphicPrimitive2D&)rPrimitive;
-
- return (getTransform() == rCompare.getTransform()
- && getGraphicObject() == rCompare.getGraphicObject()
- && getGraphicAttr() == rCompare.getGraphicAttr());
- }
-
- return false;
- }
-
- basegfx::B2DRange GraphicPrimitive2D::getB2DRange(const geometry::ViewInformation2D& /*rViewInformation*/) const
- {
- basegfx::B2DRange aRetval(0.0, 0.0, 1.0, 1.0);
- aRetval.transform(getTransform());
- return aRetval;
- }
-
- // provide unique ID
- ImplPrimitrive2DIDBlock(GraphicPrimitive2D, PRIMITIVE2D_ID_GRAPHICPRIMITIVE2D)
-
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/primitive2d/gridprimitive2d.cxx b/drawinglayer/source/primitive2d/gridprimitive2d.cxx
deleted file mode 100644
index 6c0fd1948a..0000000000
--- a/drawinglayer/source/primitive2d/gridprimitive2d.cxx
+++ /dev/null
@@ -1,323 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/primitive2d/gridprimitive2d.hxx>
-#include <basegfx/tools/canvastools.hxx>
-#include <drawinglayer/primitive2d/pointarrayprimitive2d.hxx>
-#include <drawinglayer/primitive2d/markerarrayprimitive2d.hxx>
-#include <drawinglayer/geometry/viewinformation2d.hxx>
-#include <drawinglayer/primitive2d/drawinglayer_primitivetypes2d.hxx>
-#include <basegfx/matrix/b2dhommatrixtools.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-using namespace com::sun::star;
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- Primitive2DSequence GridPrimitive2D::create2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const
- {
- Primitive2DSequence aRetval;
-
- if(!rViewInformation.getViewport().isEmpty() && getWidth() > 0.0 && getHeight() > 0.0)
- {
- // decompose grid matrix to get logic size
- basegfx::B2DVector aScale, aTranslate;
- double fRotate, fShearX;
- getTransform().decompose(aScale, aTranslate, fRotate, fShearX);
-
- // create grid matrix which transforms from scaled logic to view
- basegfx::B2DHomMatrix aRST(basegfx::tools::createShearXRotateTranslateB2DHomMatrix(
- fShearX, fRotate, aTranslate.getX(), aTranslate.getY()));
- aRST *= rViewInformation.getObjectToViewTransformation();
-
- // get step widths
- double fStepX(getWidth());
- double fStepY(getHeight());
- const double fMinimalStep(10.0);
-
- // guarantee a step width of 10.0
- if(basegfx::fTools::less(fStepX, fMinimalStep))
- {
- fStepX = fMinimalStep;
- }
-
- if(basegfx::fTools::less(fStepY, fMinimalStep))
- {
- fStepY = fMinimalStep;
- }
-
- // get relative distances in view coordinates
- double fViewStepX((rViewInformation.getObjectToViewTransformation() * basegfx::B2DVector(fStepX, 0.0)).getLength());
- double fViewStepY((rViewInformation.getObjectToViewTransformation() * basegfx::B2DVector(0.0, fStepY)).getLength());
- double fSmallStepX(1.0), fViewSmallStepX(1.0), fSmallStepY(1.0), fViewSmallStepY(1.0);
- sal_uInt32 nSmallStepsX(0L), nSmallStepsY(0L);
-
- // setup subdivisions
- if(getSubdivisionsX())
- {
- fSmallStepX = fStepX / getSubdivisionsX();
- fViewSmallStepX = fViewStepX / getSubdivisionsX();
- }
-
- if(getSubdivisionsY())
- {
- fSmallStepY = fStepY / getSubdivisionsY();
- fViewSmallStepY = fViewStepY / getSubdivisionsY();
- }
-
- // correct step width
- while(fViewStepX < getSmallestViewDistance())
- {
- fViewStepX *= 2.0;
- fStepX *= 2.0;
- }
-
- while(fViewStepY < getSmallestViewDistance())
- {
- fViewStepY *= 2.0;
- fStepY *= 2.0;
- }
-
- // correct small step width
- if(getSubdivisionsX())
- {
- while(fViewSmallStepX < getSmallestSubdivisionViewDistance())
- {
- fViewSmallStepX *= 2.0;
- fSmallStepX *= 2.0;
- }
-
- nSmallStepsX = (sal_uInt32)(fStepX / fSmallStepX);
- }
-
- if(getSubdivisionsY())
- {
- while(fViewSmallStepY < getSmallestSubdivisionViewDistance())
- {
- fViewSmallStepY *= 2.0;
- fSmallStepY *= 2.0;
- }
-
- nSmallStepsY = (sal_uInt32)(fStepY / fSmallStepY);
- }
-
- // prepare point vectors for point and cross markers
- std::vector< basegfx::B2DPoint > aPositionsPoint;
- std::vector< basegfx::B2DPoint > aPositionsCross;
-
- for(double fX(0.0); fX < aScale.getX(); fX += fStepX)
- {
- const bool bXZero(basegfx::fTools::equalZero(fX));
-
- for(double fY(0.0); fY < aScale.getY(); fY += fStepY)
- {
- const bool bYZero(basegfx::fTools::equalZero(fY));
-
- if(!bXZero && !bYZero)
- {
- // get discrete position and test against 3x3 area surrounding it
- // since it's a cross
- const double fHalfCrossSize(3.0 * 0.5);
- const basegfx::B2DPoint aViewPos(aRST * basegfx::B2DPoint(fX, fY));
- const basegfx::B2DRange aDiscreteRangeCross(
- aViewPos.getX() - fHalfCrossSize, aViewPos.getY() - fHalfCrossSize,
- aViewPos.getX() + fHalfCrossSize, aViewPos.getY() + fHalfCrossSize);
-
- if(rViewInformation.getDiscreteViewport().overlaps(aDiscreteRangeCross))
- {
- const basegfx::B2DPoint aLogicPos(rViewInformation.getInverseObjectToViewTransformation() * aViewPos);
- aPositionsCross.push_back(aLogicPos);
- }
- }
-
- if(getSubdivisionsX() && !bYZero)
- {
- double fF(fX + fSmallStepX);
-
- for(sal_uInt32 a(1L); a < nSmallStepsX && fF < aScale.getX(); a++, fF += fSmallStepX)
- {
- const basegfx::B2DPoint aViewPos(aRST * basegfx::B2DPoint(fF, fY));
-
- if(rViewInformation.getDiscreteViewport().isInside(aViewPos))
- {
- const basegfx::B2DPoint aLogicPos(rViewInformation.getInverseObjectToViewTransformation() * aViewPos);
- aPositionsPoint.push_back(aLogicPos);
- }
- }
- }
-
- if(getSubdivisionsY() && !bXZero)
- {
- double fF(fY + fSmallStepY);
-
- for(sal_uInt32 a(1L); a < nSmallStepsY && fF < aScale.getY(); a++, fF += fSmallStepY)
- {
- const basegfx::B2DPoint aViewPos(aRST * basegfx::B2DPoint(fX, fF));
-
- if(rViewInformation.getDiscreteViewport().isInside(aViewPos))
- {
- const basegfx::B2DPoint aLogicPos(rViewInformation.getInverseObjectToViewTransformation() * aViewPos);
- aPositionsPoint.push_back(aLogicPos);
- }
- }
- }
- }
- }
-
- // prepare return value
- const sal_uInt32 nCountPoint(aPositionsPoint.size());
- const sal_uInt32 nCountCross(aPositionsCross.size());
- const sal_uInt32 nRetvalCount((nCountPoint ? 1 : 0) + (nCountCross ? 1 : 0));
- sal_uInt32 nInsertCounter(0);
-
- aRetval.realloc(nRetvalCount);
-
- // add PointArrayPrimitive2D if point markers were added
- if(nCountPoint)
- {
- aRetval[nInsertCounter++] = Primitive2DReference(new PointArrayPrimitive2D(aPositionsPoint, getBColor()));
- }
-
- // add MarkerArrayPrimitive2D if cross markers were added
- if(nCountCross)
- {
- if(!getSubdivisionsX() && !getSubdivisionsY())
- {
- // no subdivisions, so fall back to points at grid positions, no need to
- // visualize a difference between divisions and sub-divisions
- aRetval[nInsertCounter++] = Primitive2DReference(new PointArrayPrimitive2D(aPositionsCross, getBColor()));
- }
- else
- {
- aRetval[nInsertCounter++] = Primitive2DReference(new MarkerArrayPrimitive2D(aPositionsCross, getCrossMarker()));
- }
- }
- }
-
- return aRetval;
- }
-
- GridPrimitive2D::GridPrimitive2D(
- const basegfx::B2DHomMatrix& rTransform,
- double fWidth,
- double fHeight,
- double fSmallestViewDistance,
- double fSmallestSubdivisionViewDistance,
- sal_uInt32 nSubdivisionsX,
- sal_uInt32 nSubdivisionsY,
- const basegfx::BColor& rBColor,
- const BitmapEx& rCrossMarker)
- : BufferedDecompositionPrimitive2D(),
- maTransform(rTransform),
- mfWidth(fWidth),
- mfHeight(fHeight),
- mfSmallestViewDistance(fSmallestViewDistance),
- mfSmallestSubdivisionViewDistance(fSmallestSubdivisionViewDistance),
- mnSubdivisionsX(nSubdivisionsX),
- mnSubdivisionsY(nSubdivisionsY),
- maBColor(rBColor),
- maCrossMarker(rCrossMarker),
- maLastObjectToViewTransformation(),
- maLastViewport()
- {
- }
-
- bool GridPrimitive2D::operator==(const BasePrimitive2D& rPrimitive) const
- {
- if(BufferedDecompositionPrimitive2D::operator==(rPrimitive))
- {
- const GridPrimitive2D& rCompare = (GridPrimitive2D&)rPrimitive;
-
- return (getTransform() == rCompare.getTransform()
- && getWidth() == rCompare.getWidth()
- && getHeight() == rCompare.getHeight()
- && getSmallestViewDistance() == rCompare.getSmallestViewDistance()
- && getSmallestSubdivisionViewDistance() == rCompare.getSmallestSubdivisionViewDistance()
- && getSubdivisionsX() == rCompare.getSubdivisionsX()
- && getSubdivisionsY() == rCompare.getSubdivisionsY()
- && getBColor() == rCompare.getBColor()
- && getCrossMarker() == rCompare.getCrossMarker());
- }
-
- return false;
- }
-
- basegfx::B2DRange GridPrimitive2D::getB2DRange(const geometry::ViewInformation2D& rViewInformation) const
- {
- // get object's range
- basegfx::B2DRange aUnitRange(0.0, 0.0, 1.0, 1.0);
- aUnitRange.transform(getTransform());
-
- // intersect with visible part
- aUnitRange.intersect(rViewInformation.getViewport());
-
- return aUnitRange;
- }
-
- Primitive2DSequence GridPrimitive2D::get2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const
- {
- ::osl::MutexGuard aGuard( m_aMutex );
-
- if(getBuffered2DDecomposition().hasElements())
- {
- if(maLastViewport != rViewInformation.getViewport() || maLastObjectToViewTransformation != rViewInformation.getObjectToViewTransformation())
- {
- // conditions of last local decomposition have changed, delete
- const_cast< GridPrimitive2D* >(this)->setBuffered2DDecomposition(Primitive2DSequence());
- }
- }
-
- if(!getBuffered2DDecomposition().hasElements())
- {
- // remember ViewRange and ViewTransformation
- const_cast< GridPrimitive2D* >(this)->maLastObjectToViewTransformation = rViewInformation.getObjectToViewTransformation();
- const_cast< GridPrimitive2D* >(this)->maLastViewport = rViewInformation.getViewport();
- }
-
- // use parent implementation
- return BufferedDecompositionPrimitive2D::get2DDecomposition(rViewInformation);
- }
-
- // provide unique ID
- ImplPrimitrive2DIDBlock(GridPrimitive2D, PRIMITIVE2D_ID_GRIDPRIMITIVE2D)
-
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/primitive2d/groupprimitive2d.cxx b/drawinglayer/source/primitive2d/groupprimitive2d.cxx
deleted file mode 100644
index abb6989a57..0000000000
--- a/drawinglayer/source/primitive2d/groupprimitive2d.cxx
+++ /dev/null
@@ -1,82 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/primitive2d/groupprimitive2d.hxx>
-#include <drawinglayer/primitive2d/drawinglayer_primitivetypes2d.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-using namespace com::sun::star;
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- GroupPrimitive2D::GroupPrimitive2D( const Primitive2DSequence& rChildren )
- : BasePrimitive2D(),
- maChildren(rChildren)
- {
- }
-
- /** The compare opertator uses the Sequence::==operator, so only checking if
- the rererences are equal. All non-equal references are interpreted as
- non-equal.
- */
- bool GroupPrimitive2D::operator==( const BasePrimitive2D& rPrimitive ) const
- {
- if(BasePrimitive2D::operator==(rPrimitive))
- {
- const GroupPrimitive2D& rCompare = static_cast< const GroupPrimitive2D& >(rPrimitive);
-
- return (arePrimitive2DSequencesEqual(getChildren(), rCompare.getChildren()));
- }
-
- return false;
- }
-
- /// default: just return children, so all renderers not supporting group will use it's content
- Primitive2DSequence GroupPrimitive2D::get2DDecomposition(const geometry::ViewInformation2D& /*rViewInformation*/) const
- {
- return getChildren();
- }
-
- // provide unique ID
- ImplPrimitrive2DIDBlock(GroupPrimitive2D, PRIMITIVE2D_ID_GROUPPRIMITIVE2D)
-
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/primitive2d/helplineprimitive2d.cxx b/drawinglayer/source/primitive2d/helplineprimitive2d.cxx
deleted file mode 100644
index 45559b7c1b..0000000000
--- a/drawinglayer/source/primitive2d/helplineprimitive2d.cxx
+++ /dev/null
@@ -1,225 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/primitive2d/helplineprimitive2d.hxx>
-#include <basegfx/polygon/b2dpolygon.hxx>
-#include <drawinglayer/primitive2d/polygonprimitive2d.hxx>
-#include <basegfx/polygon/b2dpolygonclipper.hxx>
-#include <basegfx/tools/canvastools.hxx>
-#include <drawinglayer/geometry/viewinformation2d.hxx>
-#include <drawinglayer/primitive2d/drawinglayer_primitivetypes2d.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-using namespace com::sun::star;
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- Primitive2DSequence HelplinePrimitive2D::create2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const
- {
- std::vector< BasePrimitive2D* > aTempPrimitiveTarget;
-
- if(!rViewInformation.getViewport().isEmpty() && !getDirection().equalZero())
- {
- // position to view coordinates, DashLen and DashLen in logic
- const basegfx::B2DPoint aViewPosition(rViewInformation.getObjectToViewTransformation() * getPosition());
-
- switch(getStyle())
- {
- default : // HELPLINESTYLE2D_POINT
- {
- const double fViewFixValue(15.0);
- basegfx::B2DVector aNormalizedDirection(getDirection());
- aNormalizedDirection.normalize();
- aNormalizedDirection *= fViewFixValue;
- const basegfx::B2DPoint aStartA(aViewPosition - aNormalizedDirection);
- const basegfx::B2DPoint aEndA(aViewPosition + aNormalizedDirection);
- basegfx::B2DPolygon aLineA;
- aLineA.append(aStartA);
- aLineA.append(aEndA);
- aLineA.transform(rViewInformation.getInverseObjectToViewTransformation());
- PolygonMarkerPrimitive2D* pNewA = new PolygonMarkerPrimitive2D(aLineA, getRGBColA(), getRGBColB(), getDiscreteDashLength());
- aTempPrimitiveTarget.push_back(pNewA);
-
- const basegfx::B2DVector aPerpendicularNormalizedDirection(basegfx::getPerpendicular(aNormalizedDirection));
- const basegfx::B2DPoint aStartB(aViewPosition - aPerpendicularNormalizedDirection);
- const basegfx::B2DPoint aEndB(aViewPosition + aPerpendicularNormalizedDirection);
- basegfx::B2DPolygon aLineB;
- aLineB.append(aStartB);
- aLineB.append(aEndB);
- aLineB.transform(rViewInformation.getInverseObjectToViewTransformation());
- PolygonMarkerPrimitive2D* pNewB = new PolygonMarkerPrimitive2D(aLineB, getRGBColA(), getRGBColB(), getDiscreteDashLength());
- aTempPrimitiveTarget.push_back(pNewB);
-
- break;
- }
- case HELPLINESTYLE2D_LINE :
- {
- basegfx::B2DPolygon aLine;
-
- if(basegfx::areParallel(getDirection(), basegfx::B2DVector(1.0, 0.0)))
- {
- // parallel to X-Axis, get cuts with Y-Axes
- const double fCutA((rViewInformation.getDiscreteViewport().getMinX() - aViewPosition.getX()) / getDirection().getX());
- const double fCutB((rViewInformation.getDiscreteViewport().getMaxX() - aViewPosition.getX()) / getDirection().getX());
- const basegfx::B2DPoint aPosA(aViewPosition + (fCutA * getDirection()));
- const basegfx::B2DPoint aPosB(aViewPosition + (fCutB * getDirection()));
- const bool bBothLeft(aPosA.getX() < rViewInformation.getDiscreteViewport().getMinX() && aPosB.getX() < rViewInformation.getDiscreteViewport().getMinX());
- const bool bBothRight(aPosA.getX() > rViewInformation.getDiscreteViewport().getMaxX() && aPosB.getX() < rViewInformation.getDiscreteViewport().getMaxX());
-
- if(!bBothLeft && !bBothRight)
- {
- aLine.append(aPosA);
- aLine.append(aPosB);
- }
- }
- else
- {
- // get cuts with X-Axes
- const double fCutA((rViewInformation.getDiscreteViewport().getMinY() - aViewPosition.getY()) / getDirection().getY());
- const double fCutB((rViewInformation.getDiscreteViewport().getMaxY() - aViewPosition.getY()) / getDirection().getY());
- const basegfx::B2DPoint aPosA(aViewPosition + (fCutA * getDirection()));
- const basegfx::B2DPoint aPosB(aViewPosition + (fCutB * getDirection()));
- const bool bBothAbove(aPosA.getY() < rViewInformation.getDiscreteViewport().getMinY() && aPosB.getY() < rViewInformation.getDiscreteViewport().getMinY());
- const bool bBothBelow(aPosA.getY() > rViewInformation.getDiscreteViewport().getMaxY() && aPosB.getY() < rViewInformation.getDiscreteViewport().getMaxY());
-
- if(!bBothAbove && !bBothBelow)
- {
- aLine.append(aPosA);
- aLine.append(aPosB);
- }
- }
-
- if(aLine.count())
- {
- // clip against visible area
- const basegfx::B2DPolyPolygon aResult(basegfx::tools::clipPolygonOnRange(aLine, rViewInformation.getDiscreteViewport(), true, true));
-
- for(sal_uInt32 a(0L); a < aResult.count(); a++)
- {
- basegfx::B2DPolygon aPart(aResult.getB2DPolygon(a));
- aPart.transform(rViewInformation.getInverseObjectToViewTransformation());
- PolygonMarkerPrimitive2D* pNew = new PolygonMarkerPrimitive2D(aPart, getRGBColA(), getRGBColB(), getDiscreteDashLength());
- aTempPrimitiveTarget.push_back(pNew);
- }
- }
-
- break;
- }
- }
- }
-
- // prepare return value
- Primitive2DSequence aRetval(aTempPrimitiveTarget.size());
-
- for(sal_uInt32 a(0L); a < aTempPrimitiveTarget.size(); a++)
- {
- const Primitive2DReference xRef(aTempPrimitiveTarget[a]);
- aRetval[a] = xRef;
- }
-
- return aRetval;
- }
-
- HelplinePrimitive2D::HelplinePrimitive2D(
- const basegfx::B2DPoint& rPosition,
- const basegfx::B2DVector& rDirection,
- HelplineStyle2D eStyle,
- const basegfx::BColor& rRGBColA,
- const basegfx::BColor& rRGBColB,
- double fDiscreteDashLength)
- : BufferedDecompositionPrimitive2D(),
- maPosition(rPosition),
- maDirection(rDirection),
- meStyle(eStyle),
- maRGBColA(rRGBColA),
- maRGBColB(rRGBColB),
- mfDiscreteDashLength(fDiscreteDashLength),
- maLastObjectToViewTransformation(),
- maLastViewport()
- {
- }
-
- bool HelplinePrimitive2D::operator==(const BasePrimitive2D& rPrimitive) const
- {
- if(BufferedDecompositionPrimitive2D::operator==(rPrimitive))
- {
- const HelplinePrimitive2D& rCompare = (HelplinePrimitive2D&)rPrimitive;
-
- return (getPosition() == rCompare.getPosition()
- && getDirection() == rCompare.getDirection()
- && getStyle() == rCompare.getStyle()
- && getRGBColA() == rCompare.getRGBColA()
- && getRGBColB() == rCompare.getRGBColB()
- && getDiscreteDashLength() == rCompare.getDiscreteDashLength());
- }
-
- return false;
- }
-
- Primitive2DSequence HelplinePrimitive2D::get2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const
- {
- ::osl::MutexGuard aGuard( m_aMutex );
-
- if(getBuffered2DDecomposition().hasElements())
- {
- if(maLastViewport != rViewInformation.getViewport() || maLastObjectToViewTransformation != rViewInformation.getObjectToViewTransformation())
- {
- // conditions of last local decomposition have changed, delete
- const_cast< HelplinePrimitive2D* >(this)->setBuffered2DDecomposition(Primitive2DSequence());
- }
- }
-
- if(!getBuffered2DDecomposition().hasElements())
- {
- // remember ViewRange and ViewTransformation
- const_cast< HelplinePrimitive2D* >(this)->maLastObjectToViewTransformation = rViewInformation.getObjectToViewTransformation();
- const_cast< HelplinePrimitive2D* >(this)->maLastViewport = rViewInformation.getViewport();
- }
-
- // use parent implementation
- return BufferedDecompositionPrimitive2D::get2DDecomposition(rViewInformation);
- }
-
- // provide unique ID
- ImplPrimitrive2DIDBlock(HelplinePrimitive2D, PRIMITIVE2D_ID_HELPLINEPRIMITIVE2D)
-
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/primitive2d/hiddengeometryprimitive2d.cxx b/drawinglayer/source/primitive2d/hiddengeometryprimitive2d.cxx
deleted file mode 100644
index ab9e56b2e1..0000000000
--- a/drawinglayer/source/primitive2d/hiddengeometryprimitive2d.cxx
+++ /dev/null
@@ -1,72 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * The Contents of this file are made available subject to
- * the terms of GNU Lesser General Public License Version 2.1.
- *
- *
- * GNU Lesser General Public License Version 2.1
- * =============================================
- * Copyright 2005 by Sun Microsystems, Inc.
- * 901 San Antonio Road, Palo Alto, CA 94303, USA
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License version 2.1, as published by the Free Software Foundation.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/primitive2d/hiddengeometryprimitive2d.hxx>
-#include <drawinglayer/primitive2d/drawinglayer_primitivetypes2d.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-using namespace com::sun::star;
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- HiddenGeometryPrimitive2D::HiddenGeometryPrimitive2D(
- const Primitive2DSequence& rChildren)
- : GroupPrimitive2D(rChildren)
- {
- }
-
- basegfx::B2DRange HiddenGeometryPrimitive2D::getB2DRange(const geometry::ViewInformation2D& rViewInformation) const
- {
- return getB2DRangeFromPrimitive2DSequence(getChildren(), rViewInformation);
- }
-
- Primitive2DSequence HiddenGeometryPrimitive2D::get2DDecomposition(const geometry::ViewInformation2D& /*rViewInformation*/) const
- {
- return Primitive2DSequence();
- }
-
- // provide unique ID
- ImplPrimitrive2DIDBlock(HiddenGeometryPrimitive2D, PRIMITIVE2D_ID_HIDDENGEOMETRYPRIMITIVE2D)
-
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/primitive2d/invertprimitive2d.cxx b/drawinglayer/source/primitive2d/invertprimitive2d.cxx
deleted file mode 100644
index dc1f10fbc0..0000000000
--- a/drawinglayer/source/primitive2d/invertprimitive2d.cxx
+++ /dev/null
@@ -1,60 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/primitive2d/invertprimitive2d.hxx>
-#include <drawinglayer/primitive2d/drawinglayer_primitivetypes2d.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-using namespace com::sun::star;
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- InvertPrimitive2D::InvertPrimitive2D(
- const Primitive2DSequence& rChildren)
- : GroupPrimitive2D(rChildren)
- {
- }
-
- // provide unique ID
- ImplPrimitrive2DIDBlock(InvertPrimitive2D, PRIMITIVE2D_ID_INVERTPRIMITIVE2D)
-
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/primitive2d/markerarrayprimitive2d.cxx b/drawinglayer/source/primitive2d/markerarrayprimitive2d.cxx
deleted file mode 100644
index 5aa3beebd0..0000000000
--- a/drawinglayer/source/primitive2d/markerarrayprimitive2d.cxx
+++ /dev/null
@@ -1,160 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/primitive2d/markerarrayprimitive2d.hxx>
-#include <basegfx/matrix/b2dhommatrix.hxx>
-#include <drawinglayer/geometry/viewinformation2d.hxx>
-#include <basegfx/polygon/b2dpolygon.hxx>
-#include <drawinglayer/primitive2d/polygonprimitive2d.hxx>
-#include <drawinglayer/primitive2d/transformprimitive2d.hxx>
-#include <drawinglayer/primitive2d/drawinglayer_primitivetypes2d.hxx>
-#include <drawinglayer/primitive2d/bitmapprimitive2d.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-using namespace com::sun::star;
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- Primitive2DSequence MarkerArrayPrimitive2D::create2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const
- {
- Primitive2DSequence xRetval;
- const std::vector< basegfx::B2DPoint >& rPositions = getPositions();
- const sal_uInt32 nMarkerCount(rPositions.size());
-
- if(nMarkerCount && !getMarker().IsEmpty())
- {
- // get pixel size
- Size aBitmapSize(getMarker().GetSizePixel());
-
- if(aBitmapSize.Width() && aBitmapSize.Height())
- {
- // get logic half pixel size
- basegfx::B2DVector aLogicHalfSize(rViewInformation.getInverseObjectToViewTransformation() *
- basegfx::B2DVector(aBitmapSize.getWidth() - 1.0, aBitmapSize.getHeight() - 1.0));
-
- // use half size for expand
- aLogicHalfSize *= 0.5;
-
- // number of primitives is known; realloc accordingly
- xRetval.realloc(nMarkerCount);
-
- for(sal_uInt32 a(0); a < nMarkerCount; a++)
- {
- const basegfx::B2DPoint& rPosition(rPositions[a]);
- const basegfx::B2DRange aRange(rPosition - aLogicHalfSize, rPosition + aLogicHalfSize);
- basegfx::B2DHomMatrix aTransform;
-
- aTransform.set(0, 0, aRange.getWidth());
- aTransform.set(1, 1, aRange.getHeight());
- aTransform.set(0, 2, aRange.getMinX());
- aTransform.set(1, 2, aRange.getMinY());
-
- xRetval[a] = Primitive2DReference(new BitmapPrimitive2D(getMarker(), aTransform));
- }
- }
- }
-
- return xRetval;
- }
-
- MarkerArrayPrimitive2D::MarkerArrayPrimitive2D(
- const std::vector< basegfx::B2DPoint >& rPositions,
- const BitmapEx& rMarker)
- : BufferedDecompositionPrimitive2D(),
- maPositions(rPositions),
- maMarker(rMarker)
- {
- }
-
- bool MarkerArrayPrimitive2D::operator==(const BasePrimitive2D& rPrimitive) const
- {
- if(BufferedDecompositionPrimitive2D::operator==(rPrimitive))
- {
- const MarkerArrayPrimitive2D& rCompare = (MarkerArrayPrimitive2D&)rPrimitive;
-
- return (getPositions() == rCompare.getPositions()
- && getMarker() == rCompare.getMarker());
- }
-
- return false;
- }
-
- basegfx::B2DRange MarkerArrayPrimitive2D::getB2DRange(const geometry::ViewInformation2D& rViewInformation) const
- {
- basegfx::B2DRange aRetval;
-
- if(getPositions().size())
- {
- // get the basic range from the position vector
- for(std::vector< basegfx::B2DPoint >::const_iterator aIter(getPositions().begin()); aIter != getPositions().end(); aIter++)
- {
- aRetval.expand(*aIter);
- }
-
- if(!getMarker().IsEmpty())
- {
- // get pixel size
- const Size aBitmapSize(getMarker().GetSizePixel());
-
- if(aBitmapSize.Width() && aBitmapSize.Height())
- {
- // get logic half size
- basegfx::B2DVector aLogicHalfSize(rViewInformation.getInverseObjectToViewTransformation() *
- basegfx::B2DVector(aBitmapSize.getWidth(), aBitmapSize.getHeight()));
-
- // use half size for expand
- aLogicHalfSize *= 0.5;
-
- // apply aLogicHalfSize
- aRetval.expand(aRetval.getMinimum() - aLogicHalfSize);
- aRetval.expand(aRetval.getMaximum() + aLogicHalfSize);
- }
- }
- }
-
- return aRetval;
- }
-
- // provide unique ID
- ImplPrimitrive2DIDBlock(MarkerArrayPrimitive2D, PRIMITIVE2D_ID_MARKERARRAYPRIMITIVE2D)
-
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/primitive2d/maskprimitive2d.cxx b/drawinglayer/source/primitive2d/maskprimitive2d.cxx
deleted file mode 100644
index ab1d36f3cc..0000000000
--- a/drawinglayer/source/primitive2d/maskprimitive2d.cxx
+++ /dev/null
@@ -1,79 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/primitive2d/maskprimitive2d.hxx>
-#include <drawinglayer/primitive2d/drawinglayer_primitivetypes2d.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-using namespace com::sun::star;
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- MaskPrimitive2D::MaskPrimitive2D(
- const basegfx::B2DPolyPolygon& rMask,
- const Primitive2DSequence& rChildren)
- : GroupPrimitive2D(rChildren),
- maMask(rMask)
- {
- }
-
- bool MaskPrimitive2D::operator==(const BasePrimitive2D& rPrimitive) const
- {
- if(GroupPrimitive2D::operator==(rPrimitive))
- {
- const MaskPrimitive2D& rCompare = static_cast< const MaskPrimitive2D& >(rPrimitive);
-
- return (getMask() == rCompare.getMask());
- }
-
- return false;
- }
-
- basegfx::B2DRange MaskPrimitive2D::getB2DRange(const geometry::ViewInformation2D& /*rViewInformation*/) const
- {
- return getMask().getB2DRange();
- }
-
- // provide unique ID
- ImplPrimitrive2DIDBlock(MaskPrimitive2D, PRIMITIVE2D_ID_MASKPRIMITIVE2D)
-
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/primitive2d/mediaprimitive2d.cxx b/drawinglayer/source/primitive2d/mediaprimitive2d.cxx
deleted file mode 100644
index 4c69061e81..0000000000
--- a/drawinglayer/source/primitive2d/mediaprimitive2d.cxx
+++ /dev/null
@@ -1,166 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/primitive2d/mediaprimitive2d.hxx>
-#include <basegfx/polygon/b2dpolygon.hxx>
-#include <basegfx/polygon/b2dpolygontools.hxx>
-#include <drawinglayer/primitive2d/polypolygonprimitive2d.hxx>
-#include <avmedia/mediawindow.hxx>
-#include <svtools/grfmgr.hxx>
-#include <drawinglayer/primitive2d/graphicprimitive2d.hxx>
-#include <drawinglayer/geometry/viewinformation2d.hxx>
-#include <drawinglayer/primitive2d/transformprimitive2d.hxx>
-#include <drawinglayer/primitive2d/drawinglayer_primitivetypes2d.hxx>
-#include <drawinglayer/primitive2d/hiddengeometryprimitive2d.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- Primitive2DSequence MediaPrimitive2D::create2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const
- {
- Primitive2DSequence xRetval(1);
-
- // create background object
- basegfx::B2DPolygon aBackgroundPolygon(basegfx::tools::createUnitPolygon());
- aBackgroundPolygon.transform(getTransform());
- const Primitive2DReference xRefBackground(
- new PolyPolygonColorPrimitive2D(
- basegfx::B2DPolyPolygon(aBackgroundPolygon),
- getBackgroundColor()));
- xRetval[0] = xRefBackground;
-
- // try to get graphic snapshot
- const Graphic aGraphic(avmedia::MediaWindow::grabFrame(getURL(), true));
-
- if(GRAPHIC_BITMAP == aGraphic.GetType() || GRAPHIC_GDIMETAFILE == aGraphic.GetType())
- {
- const GraphicObject aGraphicObject(aGraphic);
- const GraphicAttr aGraphicAttr;
- xRetval.realloc(2);
- xRetval[0] = xRefBackground;
- xRetval[1] = Primitive2DReference(new GraphicPrimitive2D(getTransform(), aGraphicObject, aGraphicAttr));
- }
-
- if(getDiscreteBorder())
- {
- const basegfx::B2DVector aDiscreteInLogic(rViewInformation.getInverseObjectToViewTransformation() *
- basegfx::B2DVector((double)getDiscreteBorder(), (double)getDiscreteBorder()));
- const double fDiscreteSize(aDiscreteInLogic.getX() + aDiscreteInLogic.getY());
-
- basegfx::B2DRange aSourceRange(0.0, 0.0, 1.0, 1.0);
- aSourceRange.transform(getTransform());
-
- basegfx::B2DRange aDestRange(aSourceRange);
- aDestRange.grow(-0.5 * fDiscreteSize);
-
- if(basegfx::fTools::equalZero(aDestRange.getWidth()) || basegfx::fTools::equalZero(aDestRange.getHeight()))
- {
- // shrunk primitive has no content (zero size in X or Y), nothing to display. Still create
- // invisible content for HitTest and BoundRect
- const Primitive2DReference xHiddenLines(new HiddenGeometryPrimitive2D(xRetval));
-
- xRetval = Primitive2DSequence(&xHiddenLines, 1);
- }
- else
- {
- // create transformation matrix from original range to shrunk range
- basegfx::B2DHomMatrix aTransform;
- aTransform.translate(-aSourceRange.getMinX(), -aSourceRange.getMinY());
- aTransform.scale(aDestRange.getWidth() / aSourceRange.getWidth(), aDestRange.getHeight() / aSourceRange.getHeight());
- aTransform.translate(aDestRange.getMinX(), aDestRange.getMinY());
-
- // add transform primitive
- const Primitive2DReference aScaled(new TransformPrimitive2D(aTransform, xRetval));
- xRetval = Primitive2DSequence(&aScaled, 1L);
- }
- }
-
- return xRetval;
- }
-
- MediaPrimitive2D::MediaPrimitive2D(
- const basegfx::B2DHomMatrix& rTransform,
- const rtl::OUString& rURL,
- const basegfx::BColor& rBackgroundColor,
- sal_uInt32 nDiscreteBorder)
- : BufferedDecompositionPrimitive2D(),
- maTransform(rTransform),
- maURL(rURL),
- maBackgroundColor(rBackgroundColor),
- mnDiscreteBorder(nDiscreteBorder)
- {
- }
-
- bool MediaPrimitive2D::operator==(const BasePrimitive2D& rPrimitive) const
- {
- if(BufferedDecompositionPrimitive2D::operator==(rPrimitive))
- {
- const MediaPrimitive2D& rCompare = (MediaPrimitive2D&)rPrimitive;
-
- return (getTransform() == rCompare.getTransform()
- && getURL() == rCompare.getURL()
- && getBackgroundColor() == rCompare.getBackgroundColor()
- && getDiscreteBorder() == rCompare.getDiscreteBorder());
- }
-
- return false;
- }
-
- basegfx::B2DRange MediaPrimitive2D::getB2DRange(const geometry::ViewInformation2D& rViewInformation) const
- {
- basegfx::B2DRange aRetval(0.0, 0.0, 1.0, 1.0);
- aRetval.transform(getTransform());
-
- if(getDiscreteBorder())
- {
- const basegfx::B2DVector aDiscreteInLogic(rViewInformation.getInverseObjectToViewTransformation() *
- basegfx::B2DVector((double)getDiscreteBorder(), (double)getDiscreteBorder()));
- const double fDiscreteSize(aDiscreteInLogic.getX() + aDiscreteInLogic.getY());
-
- aRetval.grow(-0.5 * fDiscreteSize);
- }
-
- return aRetval;
- }
-
- // provide unique ID
- ImplPrimitrive2DIDBlock(MediaPrimitive2D, PRIMITIVE2D_ID_MEDIAPRIMITIVE2D)
-
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/primitive2d/metafileprimitive2d.cxx b/drawinglayer/source/primitive2d/metafileprimitive2d.cxx
deleted file mode 100644
index e7795981ea..0000000000
--- a/drawinglayer/source/primitive2d/metafileprimitive2d.cxx
+++ /dev/null
@@ -1,3287 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/primitive2d/metafileprimitive2d.hxx>
-#include <basegfx/tools/canvastools.hxx>
-#include <drawinglayer/primitive2d/drawinglayer_primitivetypes2d.hxx>
-#include <basegfx/color/bcolor.hxx>
-#include <drawinglayer/primitive2d/pointarrayprimitive2d.hxx>
-#include <vcl/lineinfo.hxx>
-#include <drawinglayer/attribute/lineattribute.hxx>
-#include <drawinglayer/attribute/strokeattribute.hxx>
-#include <drawinglayer/primitive2d/polygonprimitive2d.hxx>
-#include <vcl/metaact.hxx>
-#include <drawinglayer/primitive2d/transformprimitive2d.hxx>
-#include <basegfx/matrix/b2dhommatrixtools.hxx>
-#include <drawinglayer/primitive2d/polypolygonprimitive2d.hxx>
-#include <basegfx/polygon/b2dpolygontools.hxx>
-#include <drawinglayer/primitive2d/discretebitmapprimitive2d.hxx>
-#include <drawinglayer/primitive2d/bitmapprimitive2d.hxx>
-#include <vcl/salbtype.hxx>
-#include <drawinglayer/primitive2d/unifiedtransparenceprimitive2d.hxx>
-#include <drawinglayer/primitive2d/fillgradientprimitive2d.hxx>
-#include <vcl/svapp.hxx>
-#include <drawinglayer/primitive2d/transparenceprimitive2d.hxx>
-#include <drawinglayer/primitive2d/fillhatchprimitive2d.hxx>
-#include <drawinglayer/primitive2d/maskprimitive2d.hxx>
-#include <basegfx/polygon/b2dpolygonclipper.hxx>
-#include <drawinglayer/primitive2d/invertprimitive2d.hxx>
-#include <drawinglayer/primitive2d/modifiedcolorprimitive2d.hxx>
-#include <drawinglayer/primitive2d/fillbitmapprimitive2d.hxx>
-#include <drawinglayer/primitive2d/wallpaperprimitive2d.hxx>
-#include <drawinglayer/primitive2d/textprimitive2d.hxx>
-#include <drawinglayer/primitive2d/textlayoutdevice.hxx>
-#include <drawinglayer/primitive2d/textdecoratedprimitive2d.hxx>
-#include <i18npool/mslangid.hxx>
-#include <drawinglayer/primitive2d/textlineprimitive2d.hxx>
-#include <drawinglayer/primitive2d/textstrikeoutprimitive2d.hxx>
-#include <drawinglayer/primitive2d/epsprimitive2d.hxx>
-#include <drawinglayer/primitive2d/rendergraphicprimitive2d.hxx>
-#include <numeric>
-
-//////////////////////////////////////////////////////////////////////////////
-
-using namespace com::sun::star;
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace
-{
- /** helper class for graphic context
-
- This class allows to hold a complete status of classic
- VCL OutputDevice stati. This data is needed for correct
- interpretation of the MetaFile action flow.
- */
- class PropertyHolder
- {
- private:
- /// current transformation (aka MapMode)
- basegfx::B2DHomMatrix maTransformation;
- MapUnit maMapUnit;
-
- /// current colors
- basegfx::BColor maLineColor;
- basegfx::BColor maFillColor;
- basegfx::BColor maTextColor;
- basegfx::BColor maTextFillColor;
- basegfx::BColor maTextLineColor;
- basegfx::BColor maOverlineColor;
-
- /// clipping
- basegfx::B2DPolyPolygon maClipPolyPoygon;
-
- /// font, etc.
- Font maFont;
- RasterOp maRasterOp;
- sal_uInt32 mnLayoutMode;
- LanguageType maLanguageType;
- sal_uInt16 mnPushFlags;
-
- /// bitfield
- /// contains all active markers
- bool mbLineColor : 1;
- bool mbFillColor : 1;
- bool mbTextColor : 1;
- bool mbTextFillColor : 1;
- bool mbTextLineColor : 1;
- bool mbOverlineColor : 1;
- bool mbClipPolyPolygonActive : 1;
-
- public:
- PropertyHolder()
- : maTransformation(),
- maMapUnit(MAP_100TH_MM),
- maLineColor(),
- maFillColor(),
- maTextColor(COL_BLACK),
- maTextFillColor(),
- maTextLineColor(),
- maOverlineColor(),
- maClipPolyPoygon(),
- maFont(),
- maRasterOp(ROP_OVERPAINT),
- mnLayoutMode(0),
- maLanguageType(0),
- mnPushFlags(0),
- mbLineColor(false),
- mbFillColor(false),
- mbTextColor(true),
- mbTextFillColor(false),
- mbTextLineColor(false),
- mbOverlineColor(false),
- mbClipPolyPolygonActive(false)
- {
- }
-
- ~PropertyHolder()
- {
- }
-
- /// read/write accesses
- const basegfx::B2DHomMatrix& getTransformation() const { return maTransformation; }
- void setTransformation(const basegfx::B2DHomMatrix& rNew) { if(rNew != maTransformation) maTransformation = rNew; }
-
- MapUnit getMapUnit() const { return maMapUnit; }
- void setMapUnit(MapUnit eNew) { if(eNew != maMapUnit) maMapUnit = eNew; }
-
- const basegfx::BColor& getLineColor() const { return maLineColor; }
- void setLineColor(const basegfx::BColor& rNew) { if(rNew != maLineColor) maLineColor = rNew; }
- bool getLineColorActive() const { return mbLineColor; }
- void setLineColorActive(bool bNew) { if(bNew != mbLineColor) mbLineColor = bNew; }
-
- const basegfx::BColor& getFillColor() const { return maFillColor; }
- void setFillColor(const basegfx::BColor& rNew) { if(rNew != maFillColor) maFillColor = rNew; }
- bool getFillColorActive() const { return mbFillColor; }
- void setFillColorActive(bool bNew) { if(bNew != mbFillColor) mbFillColor = bNew; }
-
- const basegfx::BColor& getTextColor() const { return maTextColor; }
- void setTextColor(const basegfx::BColor& rNew) { if(rNew != maTextColor) maTextColor = rNew; }
- bool getTextColorActive() const { return mbTextColor; }
- void setTextColorActive(bool bNew) { if(bNew != mbTextColor) mbTextColor = bNew; }
-
- const basegfx::BColor& getTextFillColor() const { return maTextFillColor; }
- void setTextFillColor(const basegfx::BColor& rNew) { if(rNew != maTextFillColor) maTextFillColor = rNew; }
- bool getTextFillColorActive() const { return mbTextFillColor; }
- void setTextFillColorActive(bool bNew) { if(bNew != mbTextFillColor) mbTextFillColor = bNew; }
-
- const basegfx::BColor& getTextLineColor() const { return maTextLineColor; }
- void setTextLineColor(const basegfx::BColor& rNew) { if(rNew != maTextLineColor) maTextLineColor = rNew; }
- bool getTextLineColorActive() const { return mbTextLineColor; }
- void setTextLineColorActive(bool bNew) { if(bNew != mbTextLineColor) mbTextLineColor = bNew; }
-
- const basegfx::BColor& getOverlineColor() const { return maOverlineColor; }
- void setOverlineColor(const basegfx::BColor& rNew) { if(rNew != maOverlineColor) maOverlineColor = rNew; }
- bool getOverlineColorActive() const { return mbOverlineColor; }
- void setOverlineColorActive(bool bNew) { if(bNew != mbOverlineColor) mbOverlineColor = bNew; }
-
- const basegfx::B2DPolyPolygon& getClipPolyPolygon() const { return maClipPolyPoygon; }
- void setClipPolyPolygon(const basegfx::B2DPolyPolygon& rNew) { if(rNew != maClipPolyPoygon) maClipPolyPoygon = rNew; }
- bool getClipPolyPolygonActive() const { return mbClipPolyPolygonActive; }
- void setClipPolyPolygonActive(bool bNew) { if(bNew != mbClipPolyPolygonActive) mbClipPolyPolygonActive = bNew; }
-
- const Font& getFont() const { return maFont; }
- void setFont(const Font& rFont) { if(rFont != maFont) maFont = rFont; }
-
- const RasterOp& getRasterOp() const { return maRasterOp; }
- void setRasterOp(const RasterOp& rRasterOp) { if(rRasterOp != maRasterOp) maRasterOp = rRasterOp; }
- bool isRasterOpInvert() const { return (ROP_XOR == maRasterOp || ROP_INVERT == maRasterOp); }
- bool isRasterOpForceBlack() const { return ROP_0 == maRasterOp; }
- bool isRasterOpActive() const { return isRasterOpInvert() || isRasterOpForceBlack(); }
-
- sal_uInt32 getLayoutMode() const { return mnLayoutMode; }
- void setLayoutMode(sal_uInt32 nNew) { if(nNew != mnLayoutMode) mnLayoutMode = nNew; }
-
- LanguageType getLanguageType() const { return maLanguageType; }
- void setLanguageType(LanguageType aNew) { if(aNew != maLanguageType) maLanguageType = aNew; }
-
- sal_uInt16 getPushFlags() const { return mnPushFlags; }
- void setPushFlags(sal_uInt16 nNew) { if(nNew != mnPushFlags) mnPushFlags = nNew; }
-
- bool getLineOrFillActive() const { return (mbLineColor || mbFillColor); }
- };
-} // end of anonymous namespace
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace
-{
- /** stack for properites
-
- This class builds a stack based on the PropertyHolder
- class. It encapsulates the pointer/new/delete usage to
- make it safe and implements the push/pop as needed by a
- VCL Metafile interpreter. The critical part here are the
- flag values VCL OutputDevice uses here; not all stuff is
- pushed and thus needs to be copied at pop.
- */
- class PropertyHolders
- {
- private:
- std::vector< PropertyHolder* > maPropertyHolders;
-
- public:
- PropertyHolders()
- {
- maPropertyHolders.push_back(new PropertyHolder());
- }
-
- sal_uInt32 size() const
- {
- return maPropertyHolders.size();
- }
-
- void PushDefault()
- {
- PropertyHolder* pNew = new PropertyHolder();
- maPropertyHolders.push_back(pNew);
- }
-
- void Push(sal_uInt16 nPushFlags)
- {
- if(nPushFlags)
- {
- OSL_ENSURE(maPropertyHolders.size(), "PropertyHolders: PUSH with no property holders (!)");
- if ( !maPropertyHolders.empty() )
- {
- PropertyHolder* pNew = new PropertyHolder(*maPropertyHolders.back());
- pNew->setPushFlags(nPushFlags);
- maPropertyHolders.push_back(pNew);
- }
- }
- }
-
- void Pop()
- {
- OSL_ENSURE(maPropertyHolders.size(), "PropertyHolders: POP with no property holders (!)");
- const sal_uInt32 nSize(maPropertyHolders.size());
-
- if(nSize)
- {
- const PropertyHolder* pTip = maPropertyHolders.back();
- const sal_uInt16 nPushFlags(pTip->getPushFlags());
-
- if(nPushFlags)
- {
- if(nSize > 1)
- {
- // copy back content for all non-set flags
- PropertyHolder* pLast = maPropertyHolders[nSize - 2];
-
- if(PUSH_ALL != nPushFlags)
- {
- if(!(nPushFlags & PUSH_LINECOLOR ))
- {
- pLast->setLineColor(pTip->getLineColor());
- pLast->setLineColorActive(pTip->getLineColorActive());
- }
- if(!(nPushFlags & PUSH_FILLCOLOR ))
- {
- pLast->setFillColor(pTip->getFillColor());
- pLast->setFillColorActive(pTip->getFillColorActive());
- }
- if(!(nPushFlags & PUSH_FONT ))
- {
- pLast->setFont(pTip->getFont());
- }
- if(!(nPushFlags & PUSH_TEXTCOLOR ))
- {
- pLast->setTextColor(pTip->getTextColor());
- pLast->setTextColorActive(pTip->getTextColorActive());
- }
- if(!(nPushFlags & PUSH_MAPMODE ))
- {
- pLast->setTransformation(pTip->getTransformation());
- pLast->setMapUnit(pTip->getMapUnit());
- }
- if(!(nPushFlags & PUSH_CLIPREGION ))
- {
- pLast->setClipPolyPolygon(pTip->getClipPolyPolygon());
- pLast->setClipPolyPolygonActive(pTip->getClipPolyPolygonActive());
- }
- if(!(nPushFlags & PUSH_RASTEROP ))
- {
- pLast->setRasterOp(pTip->getRasterOp());
- }
- if(!(nPushFlags & PUSH_TEXTFILLCOLOR ))
- {
- pLast->setTextFillColor(pTip->getTextFillColor());
- pLast->setTextFillColorActive(pTip->getTextFillColorActive());
- }
- if(!(nPushFlags & PUSH_TEXTALIGN ))
- {
- if(pLast->getFont().GetAlign() != pTip->getFont().GetAlign())
- {
- Font aFont(pLast->getFont());
- aFont.SetAlign(pTip->getFont().GetAlign());
- pLast->setFont(aFont);
- }
- }
- if(!(nPushFlags & PUSH_REFPOINT ))
- {
- // not supported
- }
- if(!(nPushFlags & PUSH_TEXTLINECOLOR ))
- {
- pLast->setTextLineColor(pTip->getTextLineColor());
- pLast->setTextLineColorActive(pTip->getTextLineColorActive());
- }
- if(!(nPushFlags & PUSH_TEXTLAYOUTMODE ))
- {
- pLast->setLayoutMode(pTip->getLayoutMode());
- }
- if(!(nPushFlags & PUSH_TEXTLANGUAGE ))
- {
- pLast->setLanguageType(pTip->getLanguageType());
- }
- if(!(nPushFlags & PUSH_OVERLINECOLOR ))
- {
- pLast->setOverlineColor(pTip->getOverlineColor());
- pLast->setOverlineColorActive(pTip->getOverlineColorActive());
- }
- }
- }
- }
-
- // execute the pop
- delete maPropertyHolders.back();
- maPropertyHolders.pop_back();
- }
- }
-
- PropertyHolder& Current()
- {
- static PropertyHolder aDummy;
- OSL_ENSURE(maPropertyHolders.size(), "PropertyHolders: CURRENT with no property holders (!)");
- return maPropertyHolders.empty() ? aDummy : *maPropertyHolders.back();
- }
-
- ~PropertyHolders()
- {
- while(!maPropertyHolders.empty())
- {
- delete maPropertyHolders.back();
- maPropertyHolders.pop_back();
- }
- }
- };
-} // end of anonymous namespace
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace
-{
- /** helper to convert a Region to a B2DPolyPolygon
- when it does not yet contain one. In the future
- this may be expanded to merge the polygons created
- from rectangles or use a special algo to directly turn
- the spans of regions to a single, already merged
- PolyPolygon.
- */
- basegfx::B2DPolyPolygon getB2DPolyPolygonFromRegion(const Region& rRegion)
- {
- basegfx::B2DPolyPolygon aRetval;
-
- if(!rRegion.IsEmpty())
- {
- Region aRegion(rRegion);
- aRetval = aRegion.GetB2DPolyPolygon();
-
- if(!aRetval.count())
- {
- RegionHandle aRegionHandle(aRegion.BeginEnumRects());
- Rectangle aRegionRectangle;
-
- while(aRegion.GetEnumRects(aRegionHandle, aRegionRectangle))
- {
- if(!aRegionRectangle.IsEmpty())
- {
- const basegfx::B2DRange aRegionRange(
- aRegionRectangle.Left(), aRegionRectangle.Top(),
- aRegionRectangle.Right(), aRegionRectangle.Bottom());
- aRetval.append(basegfx::tools::createPolygonFromRect(aRegionRange));
- }
- }
-
- aRegion.EndEnumRects(aRegionHandle);
- }
- }
-
- return aRetval;
- }
-} // end of anonymous namespace
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace
-{
- /** Helper class to buffer and hold a Primive target vector. It
- encapsulates the new/delete functionality and aloows to work
- on pointers of the implementation classes. All data will
- be converted to uno sequences of uno references when accessing the
- data.
- */
- class TargetHolder
- {
- private:
- std::vector< drawinglayer::primitive2d::BasePrimitive2D* > aTargets;
-
- public:
- TargetHolder()
- : aTargets()
- {
- }
-
- ~TargetHolder()
- {
- const sal_uInt32 nCount(aTargets.size());
-
- for(sal_uInt32 a(0); a < nCount; a++)
- {
- delete aTargets[a];
- }
- }
-
- sal_uInt32 size() const
- {
- return aTargets.size();
- }
-
- void append(drawinglayer::primitive2d::BasePrimitive2D* pCandidate)
- {
- if(pCandidate)
- {
- aTargets.push_back(pCandidate);
- }
- }
-
- drawinglayer::primitive2d::Primitive2DSequence getPrimitive2DSequence(const PropertyHolder& rPropertyHolder)
- {
- const sal_uInt32 nCount(aTargets.size());
- drawinglayer::primitive2d::Primitive2DSequence xRetval(nCount);
-
- for(sal_uInt32 a(0); a < nCount; a++)
- {
- xRetval[a] = aTargets[a];
- }
-
- // All Targets were pointers, but do not need to be deleted since they
- // were converted to UNO API references now, so they stay as long as
- // referenced. Do NOT delete the C++ implementation classes here, but clear
- // the buffer to not delete them in the destructor.
- aTargets.clear();
-
- if(xRetval.hasElements() && rPropertyHolder.getClipPolyPolygonActive())
- {
- const basegfx::B2DPolyPolygon& rClipPolyPolygon = rPropertyHolder.getClipPolyPolygon();
-
- if(rClipPolyPolygon.count())
- {
- const drawinglayer::primitive2d::Primitive2DReference xMask(
- new drawinglayer::primitive2d::MaskPrimitive2D(
- rClipPolyPolygon,
- xRetval));
-
- xRetval = drawinglayer::primitive2d::Primitive2DSequence(&xMask, 1);
- }
- }
-
- return xRetval;
- }
- };
-} // end of anonymous namespace
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace
-{
- /** Helper class which builds a stack on the TargetHolder class */
- class TargetHolders
- {
- private:
- std::vector< TargetHolder* > maTargetHolders;
-
- public:
- TargetHolders()
- {
- maTargetHolders.push_back(new TargetHolder());
- }
-
- sal_uInt32 size() const
- {
- return maTargetHolders.size();
- }
-
- void Push()
- {
- maTargetHolders.push_back(new TargetHolder());
- }
-
- void Pop()
- {
- OSL_ENSURE(maTargetHolders.size(), "TargetHolders: POP with no property holders (!)");
- if(!maTargetHolders.empty())
- {
- delete maTargetHolders.back();
- maTargetHolders.pop_back();
- }
- }
-
- TargetHolder& Current()
- {
- OSL_ENSURE(maTargetHolders.size(), "TargetHolders: CURRENT with no property holders (!)");
- return *maTargetHolders.back();
- }
-
- ~TargetHolders()
- {
- while(!maTargetHolders.empty())
- {
- delete maTargetHolders.back();
- maTargetHolders.pop_back();
- }
- }
- };
-} // end of anonymous namespace
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- /** NonOverlappingFillGradientPrimitive2D class
-
- This is a special version of the FillGradientPrimitive2D which decomposes
- to a non-overlapping geometry version of the gradient. This needs to be
- used to support the old XOR paint-'trick'.
-
- It does not need an own identifier since a renderer who wants to interpret
- it itself may do so. It just overloads the decomposition of the C++
- implementation class to do an alternative decomposition.
- */
- class NonOverlappingFillGradientPrimitive2D : public FillGradientPrimitive2D
- {
- protected:
- /// local decomposition.
- virtual Primitive2DSequence create2DDecomposition(
- const geometry::ViewInformation2D& rViewInformation) const;
-
- public:
- /// constructor
- NonOverlappingFillGradientPrimitive2D(
- const basegfx::B2DRange& rObjectRange,
- const attribute::FillGradientAttribute& rFillGradient)
- : FillGradientPrimitive2D(rObjectRange, rFillGradient)
- {
- }
- };
-
- Primitive2DSequence NonOverlappingFillGradientPrimitive2D::create2DDecomposition(
- const geometry::ViewInformation2D& /*rViewInformation*/) const
- {
- if(!getFillGradient().isDefault())
- {
- return createFill(false);
- }
- else
- {
- return Primitive2DSequence();
- }
- }
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace
-{
- /** helper to convert a MapMode to a transformation */
- basegfx::B2DHomMatrix getTransformFromMapMode(const MapMode& rMapMode)
- {
- basegfx::B2DHomMatrix aMapping;
- const Fraction aNoScale(1, 1);
- const Point& rOrigin(rMapMode.GetOrigin());
-
- if(0 != rOrigin.X() || 0 != rOrigin.Y())
- {
- aMapping.translate(rOrigin.X(), rOrigin.Y());
- }
-
- if(rMapMode.GetScaleX() != aNoScale || rMapMode.GetScaleY() != aNoScale)
- {
- aMapping.scale(
- double(rMapMode.GetScaleX()),
- double(rMapMode.GetScaleY()));
- }
-
- return aMapping;
- }
-
- /** helper to create a PointArrayPrimitive2D based on current context */
- void createPointArrayPrimitive(
- const std::vector< basegfx::B2DPoint >& rPositions,
- TargetHolder& rTarget,
- PropertyHolder& rProperties,
- basegfx::BColor aBColor)
- {
- if(!rPositions.empty())
- {
- if(rProperties.getTransformation().isIdentity())
- {
- rTarget.append(
- new drawinglayer::primitive2d::PointArrayPrimitive2D(
- rPositions,
- aBColor));
- }
- else
- {
- std::vector< basegfx::B2DPoint > aPositions(rPositions);
-
- for(sal_uInt32 a(0); a < aPositions.size(); a++)
- {
- aPositions[a] = rProperties.getTransformation() * aPositions[a];
- }
-
- rTarget.append(
- new drawinglayer::primitive2d::PointArrayPrimitive2D(
- aPositions,
- aBColor));
- }
- }
- }
-
- /** helper to create a PolygonHairlinePrimitive2D based on current context */
- void createHairlinePrimitive(
- const basegfx::B2DPolygon& rLinePolygon,
- TargetHolder& rTarget,
- PropertyHolder& rProperties)
- {
- if(rLinePolygon.count())
- {
- basegfx::B2DPolygon aLinePolygon(rLinePolygon);
- aLinePolygon.transform(rProperties.getTransformation());
- rTarget.append(
- new drawinglayer::primitive2d::PolygonHairlinePrimitive2D(
- aLinePolygon,
- rProperties.getLineColor()));
- }
- }
-
- /** helper to create a PolyPolygonColorPrimitive2D based on current context */
- void createFillPrimitive(
- const basegfx::B2DPolyPolygon& rFillPolyPolygon,
- TargetHolder& rTarget,
- PropertyHolder& rProperties)
- {
- if(rFillPolyPolygon.count())
- {
- basegfx::B2DPolyPolygon aFillPolyPolygon(rFillPolyPolygon);
- aFillPolyPolygon.transform(rProperties.getTransformation());
- rTarget.append(
- new drawinglayer::primitive2d::PolyPolygonColorPrimitive2D(
- aFillPolyPolygon,
- rProperties.getFillColor()));
- }
- }
-
- /** helper to create a PolygonStrokePrimitive2D based on current context */
- void createLinePrimitive(
- const basegfx::B2DPolygon& rLinePolygon,
- const LineInfo& rLineInfo,
- TargetHolder& rTarget,
- PropertyHolder& rProperties)
- {
- if(rLinePolygon.count())
- {
- const bool bDashDotUsed(LINE_DASH == rLineInfo.GetStyle());
- const bool bWidthUsed(rLineInfo.GetWidth() > 1);
-
- if(bDashDotUsed || bWidthUsed)
- {
- basegfx::B2DPolygon aLinePolygon(rLinePolygon);
- aLinePolygon.transform(rProperties.getTransformation());
- const drawinglayer::attribute::LineAttribute aLineAttribute(
- rProperties.getLineColor(),
- bWidthUsed ? rLineInfo.GetWidth() : 0.0,
- rLineInfo.GetLineJoin());
-
- if(bDashDotUsed)
- {
- ::std::vector< double > fDotDashArray;
- const double fDashLen(rLineInfo.GetDashLen());
- const double fDotLen(rLineInfo.GetDotLen());
- const double fDistance(rLineInfo.GetDistance());
-
- for(sal_uInt16 a(0); a < rLineInfo.GetDashCount(); a++)
- {
- fDotDashArray.push_back(fDashLen);
- fDotDashArray.push_back(fDistance);
- }
-
- for(sal_uInt16 b(0); b < rLineInfo.GetDotCount(); b++)
- {
- fDotDashArray.push_back(fDotLen);
- fDotDashArray.push_back(fDistance);
- }
-
- const double fAccumulated(::std::accumulate(fDotDashArray.begin(), fDotDashArray.end(), 0.0));
- const drawinglayer::attribute::StrokeAttribute aStrokeAttribute(
- fDotDashArray,
- fAccumulated);
-
- rTarget.append(
- new drawinglayer::primitive2d::PolygonStrokePrimitive2D(
- aLinePolygon,
- aLineAttribute,
- aStrokeAttribute));
- }
- else
- {
- rTarget.append(
- new drawinglayer::primitive2d::PolygonStrokePrimitive2D(
- aLinePolygon,
- aLineAttribute));
- }
- }
- else
- {
- createHairlinePrimitive(rLinePolygon, rTarget, rProperties);
- }
- }
- }
-
- /** helper to create needed line and fill primitives based on current context */
- void createHairlineAndFillPrimitive(
- const basegfx::B2DPolygon& rPolygon,
- TargetHolder& rTarget,
- PropertyHolder& rProperties)
- {
- if(rProperties.getFillColorActive())
- {
- createFillPrimitive(basegfx::B2DPolyPolygon(rPolygon), rTarget, rProperties);
- }
-
- if(rProperties.getLineColorActive())
- {
- createHairlinePrimitive(rPolygon, rTarget, rProperties);
- }
- }
-
- /** helper to create needed line and fill primitives based on current context */
- void createHairlineAndFillPrimitive(
- const basegfx::B2DPolyPolygon& rPolyPolygon,
- TargetHolder& rTarget,
- PropertyHolder& rProperties)
- {
- if(rProperties.getFillColorActive())
- {
- createFillPrimitive(rPolyPolygon, rTarget, rProperties);
- }
-
- if(rProperties.getLineColorActive())
- {
- for(sal_uInt32 a(0); a < rPolyPolygon.count(); a++)
- {
- createHairlinePrimitive(rPolyPolygon.getB2DPolygon(a), rTarget, rProperties);
- }
- }
- }
-
- /** helper to create DiscreteBitmapPrimitive2D based on current context.
- The DiscreteBitmapPrimitive2D is especially created for this usage
- since no other usage defines a bitmap visualisation based on top-left
- position and size in pixels. At the end it will create a view-dependent
- transformed embedding of a BitmapPrimitive2D.
- */
- void createBitmapExPrimitive(
- const BitmapEx& rBitmapEx,
- const Point& rPoint,
- TargetHolder& rTarget,
- PropertyHolder& rProperties)
- {
- if(!rBitmapEx.IsEmpty())
- {
- basegfx::B2DPoint aPoint(rPoint.X(), rPoint.Y());
- aPoint = rProperties.getTransformation() * aPoint;
-
- rTarget.append(
- new drawinglayer::primitive2d::DiscreteBitmapPrimitive2D(
- rBitmapEx,
- aPoint));
- }
- }
-
- /** helper to create BitmapPrimitive2D based on current context */
- void createBitmapExPrimitive(
- const BitmapEx& rBitmapEx,
- const Point& rPoint,
- const Size& rSize,
- TargetHolder& rTarget,
- PropertyHolder& rProperties)
- {
- if(!rBitmapEx.IsEmpty())
- {
- basegfx::B2DHomMatrix aObjectTransform;
-
- aObjectTransform.set(0, 0, rSize.Width());
- aObjectTransform.set(1, 1, rSize.Height());
- aObjectTransform.set(0, 2, rPoint.X());
- aObjectTransform.set(1, 2, rPoint.Y());
-
- aObjectTransform = rProperties.getTransformation() * aObjectTransform;
-
- rTarget.append(
- new drawinglayer::primitive2d::BitmapPrimitive2D(
- rBitmapEx,
- aObjectTransform));
- }
- }
-
- /** helper to create a regular BotmapEx from a MaskAction (definitions
- which use a bitmap without transparence but define one of the colors as
- transparent)
- */
- BitmapEx createMaskBmpEx(const Bitmap& rBitmap, const Color& rMaskColor)
- {
- const Color aWhite(COL_WHITE);
- BitmapPalette aBiLevelPalette(2);
-
- aBiLevelPalette[0] = aWhite;
- aBiLevelPalette[1] = rMaskColor;
-
- Bitmap aMask(rBitmap.CreateMask(aWhite));
- Bitmap aSolid(rBitmap.GetSizePixel(), 1, &aBiLevelPalette);
-
- aSolid.Erase(rMaskColor);
-
- return BitmapEx(aSolid, aMask);
- }
-
- /** helper to convert from a VCL Gradient definition to the corresponding
- data for primitive representation
- */
- drawinglayer::attribute::FillGradientAttribute createFillGradientAttribute(const Gradient& rGradient)
- {
- const Color aStartColor(rGradient.GetStartColor());
- const sal_uInt16 nStartIntens(rGradient.GetStartIntensity());
- basegfx::BColor aStart(aStartColor.getBColor());
-
- if(nStartIntens != 100)
- {
- const basegfx::BColor aBlack;
- aStart = interpolate(aBlack, aStart, (double)nStartIntens * 0.01);
- }
-
- const Color aEndColor(rGradient.GetEndColor());
- const sal_uInt16 nEndIntens(rGradient.GetEndIntensity());
- basegfx::BColor aEnd(aEndColor.getBColor());
-
- if(nEndIntens != 100)
- {
- const basegfx::BColor aBlack;
- aEnd = interpolate(aBlack, aEnd, (double)nEndIntens * 0.01);
- }
-
- drawinglayer::attribute::GradientStyle aGradientStyle(drawinglayer::attribute::GRADIENTSTYLE_RECT);
-
- switch(rGradient.GetStyle())
- {
- case GRADIENT_LINEAR :
- {
- aGradientStyle = drawinglayer::attribute::GRADIENTSTYLE_LINEAR;
- break;
- }
- case GRADIENT_AXIAL :
- {
- aGradientStyle = drawinglayer::attribute::GRADIENTSTYLE_AXIAL;
- break;
- }
- case GRADIENT_RADIAL :
- {
- aGradientStyle = drawinglayer::attribute::GRADIENTSTYLE_RADIAL;
- break;
- }
- case GRADIENT_ELLIPTICAL :
- {
- aGradientStyle = drawinglayer::attribute::GRADIENTSTYLE_ELLIPTICAL;
- break;
- }
- case GRADIENT_SQUARE :
- {
- aGradientStyle = drawinglayer::attribute::GRADIENTSTYLE_SQUARE;
- break;
- }
- default : // GRADIENT_RECT
- {
- aGradientStyle = drawinglayer::attribute::GRADIENTSTYLE_RECT;
- break;
- }
- }
-
- return drawinglayer::attribute::FillGradientAttribute(
- aGradientStyle,
- (double)rGradient.GetBorder() * 0.01,
- (double)rGradient.GetOfsX() * 0.01,
- (double)rGradient.GetOfsY() * 0.01,
- (double)rGradient.GetAngle() * F_PI1800,
- aStart,
- aEnd,
- rGradient.GetSteps());
- }
-
- /** helper to convert from a VCL Hatch definition to the corresponding
- data for primitive representation
- */
- drawinglayer::attribute::FillHatchAttribute createFillHatchAttribute(const Hatch& rHatch)
- {
- drawinglayer::attribute::HatchStyle aHatchStyle(drawinglayer::attribute::HATCHSTYLE_SINGLE);
-
- switch(rHatch.GetStyle())
- {
- default : // case HATCH_SINGLE :
- {
- aHatchStyle = drawinglayer::attribute::HATCHSTYLE_SINGLE;
- break;
- }
- case HATCH_DOUBLE :
- {
- aHatchStyle = drawinglayer::attribute::HATCHSTYLE_DOUBLE;
- break;
- }
- case HATCH_TRIPLE :
- {
- aHatchStyle = drawinglayer::attribute::HATCHSTYLE_TRIPLE;
- break;
- }
- }
-
- return drawinglayer::attribute::FillHatchAttribute(
- aHatchStyle,
- (double)rHatch.GetDistance(),
- (double)rHatch.GetAngle() * F_PI1800,
- rHatch.GetColor().getBColor(),
- false);
- }
-
- /** helper to take needed action on ClipRegion change. This method needs to be called
- on any Region change, e.g. at the obvious actions doing this, but also at pop-calls
- whcih change the Region of the current context. It takes care of creating the
- current embeddec context, set the new Region at the context and eventually prepare
- a new target for embracing new geometry to the current region
- */
- void HandleNewClipRegion(
- const basegfx::B2DPolyPolygon& rClipPolyPolygon,
- TargetHolders& rTargetHolders,
- PropertyHolders& rPropertyHolders)
- {
- const bool bNewActive(rClipPolyPolygon.count());
-
- // #i108636# The handlig of new ClipPolyPolygons was not done as good as possible
- // in the first version of this interpreter; e.g. when a ClipPolyPolygon was set
- // initially and then using a lot of push/pop actions, the pop always leads
- // to setting a 'new' ClipPolyPolygon which indeed is the return to the ClipPolyPolygon
- // of the properties next on the stack.
- //
- // This ClipPolyPolygon is identical to the current one, so there is no need to
- // create a MaskPrimitive2D containing the up-to-now created primitives, but
- // this was done before. While this does not lead to wrong primitive
- // representations of the metafile data, it creates unneccesarily expensive
- // representations. Just detecting when no really 'new' ClipPolyPolygon gets set
- // solves the problem.
-
- if(!rPropertyHolders.Current().getClipPolyPolygonActive() && !bNewActive)
- {
- // no active ClipPolyPolygon exchanged by no new one, done
- return;
- }
-
- if(rPropertyHolders.Current().getClipPolyPolygonActive() && bNewActive)
- {
- // active ClipPolyPolygon and new active ClipPolyPolygon
- if(rPropertyHolders.Current().getClipPolyPolygon() == rClipPolyPolygon)
- {
- // new is the same as old, done
- return;
- }
- }
-
- // Here the old and the new are definitively different, maybe
- // old one and/or new one is not active.
-
- // Handle deletion of old ClipPolyPolygon. The process evtl. created primitives which
- // belong to this active ClipPolyPolygon. These need to be embedded to a
- // MaskPrimitive2D accordingly.
- if(rPropertyHolders.Current().getClipPolyPolygonActive() && rTargetHolders.size() > 1)
- {
- drawinglayer::primitive2d::Primitive2DSequence aSubContent;
-
- if(rPropertyHolders.Current().getClipPolyPolygon().count()
- && rTargetHolders.Current().size())
- {
- aSubContent = rTargetHolders.Current().getPrimitive2DSequence(
- rPropertyHolders.Current());
- }
-
- rTargetHolders.Pop();
-
- if(aSubContent.hasElements())
- {
- rTargetHolders.Current().append(
- new drawinglayer::primitive2d::GroupPrimitive2D(
- aSubContent));
- }
- }
-
- // apply new settings to current properties by setting
- // the new region now
- rPropertyHolders.Current().setClipPolyPolygonActive(bNewActive);
-
- if(bNewActive)
- {
- rPropertyHolders.Current().setClipPolyPolygon(rClipPolyPolygon);
-
- // prepare new content holder for new active region
- rTargetHolders.Push();
- }
- }
-
- /** helper to handle the change of RasterOp. It takes care of encapsulating all current
- geometry to the current RasterOp (if changed) and needs to be called on any RasterOp
- change. It will also start a new geometry target to embrace to the new RasterOp if
- a changuing RasterOp is used. Currently, ROP_XOR and ROP_INVERT are supported using
- InvertPrimitive2D, and ROP_0 by using a ModifiedColorPrimitive2D to force to black paint
- */
- void HandleNewRasterOp(
- RasterOp aRasterOp,
- TargetHolders& rTargetHolders,
- PropertyHolders& rPropertyHolders)
- {
- // check if currently active
- if(rPropertyHolders.Current().isRasterOpActive() && rTargetHolders.size() > 1)
- {
- drawinglayer::primitive2d::Primitive2DSequence aSubContent;
-
- if(rTargetHolders.Current().size())
- {
- aSubContent = rTargetHolders.Current().getPrimitive2DSequence(rPropertyHolders.Current());
- }
-
- rTargetHolders.Pop();
-
- if(aSubContent.hasElements())
- {
- if(rPropertyHolders.Current().isRasterOpForceBlack())
- {
- // force content to black
- rTargetHolders.Current().append(
- new drawinglayer::primitive2d::ModifiedColorPrimitive2D(
- aSubContent,
- basegfx::BColorModifier(basegfx::BColor(0.0, 0.0, 0.0))));
- }
- else // if(rPropertyHolders.Current().isRasterOpInvert())
- {
- // invert content
- rTargetHolders.Current().append(
- new drawinglayer::primitive2d::InvertPrimitive2D(
- aSubContent));
- }
- }
- }
-
- // apply new settings
- rPropertyHolders.Current().setRasterOp(aRasterOp);
-
- // check if now active
- if(rPropertyHolders.Current().isRasterOpActive())
- {
- // prepare new content holder for new invert
- rTargetHolders.Push();
- }
- }
-
- /** helper to create needed data to emulate the VCL Wallpaper Metafile action.
- It is a quite mighty action. This helper is for simple color filled background.
- */
- drawinglayer::primitive2d::BasePrimitive2D* CreateColorWallpaper(
- const basegfx::B2DRange& rRange,
- const basegfx::BColor& rColor,
- PropertyHolder& rPropertyHolder)
- {
- basegfx::B2DPolygon aOutline(basegfx::tools::createPolygonFromRect(rRange));
- aOutline.transform(rPropertyHolder.getTransformation());
-
- return new drawinglayer::primitive2d::PolyPolygonColorPrimitive2D(
- basegfx::B2DPolyPolygon(aOutline),
- rColor);
- }
-
- /** helper to create needed data to emulate the VCL Wallpaper Metafile action.
- It is a quite mighty action. This helper is for gradient filled background.
- */
- drawinglayer::primitive2d::BasePrimitive2D* CreateGradientWallpaper(
- const basegfx::B2DRange& rRange,
- const Gradient& rGradient,
- PropertyHolder& rPropertyHolder)
- {
- const drawinglayer::attribute::FillGradientAttribute aAttribute(createFillGradientAttribute(rGradient));
-
- if(aAttribute.getStartColor() == aAttribute.getEndColor())
- {
- // not really a gradient. Create filled rectangle
- return CreateColorWallpaper(rRange, aAttribute.getStartColor(), rPropertyHolder);
- }
- else
- {
- // really a gradient
- drawinglayer::primitive2d::BasePrimitive2D* pRetval =
- new drawinglayer::primitive2d::FillGradientPrimitive2D(
- rRange,
- aAttribute);
-
- if(!rPropertyHolder.getTransformation().isIdentity())
- {
- const drawinglayer::primitive2d::Primitive2DReference xPrim(pRetval);
- const drawinglayer::primitive2d::Primitive2DSequence xSeq(&xPrim, 1);
-
- pRetval = new drawinglayer::primitive2d::TransformPrimitive2D(
- rPropertyHolder.getTransformation(),
- xSeq);
- }
-
- return pRetval;
- }
- }
-
- /** helper to create needed data to emulate the VCL Wallpaper Metafile action.
- It is a quite mighty action. This helper decides if color and/or gradient
- background is needed for the wnated bitmap fill and then creates the needed
- WallpaperBitmapPrimitive2D. This primitive was created for this purpose and
- takes over all needed logic of orientations and tiling.
- */
- void CreateAndAppendBitmapWallpaper(
- basegfx::B2DRange aWallpaperRange,
- const Wallpaper& rWallpaper,
- TargetHolder& rTarget,
- PropertyHolder& rProperty)
- {
- const BitmapEx aBitmapEx(rWallpaper.GetBitmap());
- const WallpaperStyle eWallpaperStyle(rWallpaper.GetStyle());
-
- // if bitmap visualisation is transparent, maybe background
- // needs to be filled. Create background
- if(aBitmapEx.IsTransparent()
- || (WALLPAPER_TILE != eWallpaperStyle && WALLPAPER_SCALE != eWallpaperStyle))
- {
- if(rWallpaper.IsGradient())
- {
- rTarget.append(
- CreateGradientWallpaper(
- aWallpaperRange,
- rWallpaper.GetGradient(),
- rProperty));
- }
- else if(!rWallpaper.GetColor().GetTransparency())
- {
- rTarget.append(
- CreateColorWallpaper(
- aWallpaperRange,
- rWallpaper.GetColor().getBColor(),
- rProperty));
- }
- }
-
- // use wallpaper rect if set
- if(rWallpaper.IsRect() && !rWallpaper.GetRect().IsEmpty())
- {
- aWallpaperRange = basegfx::B2DRange(
- rWallpaper.GetRect().Left(), rWallpaper.GetRect().Top(),
- rWallpaper.GetRect().Right(), rWallpaper.GetRect().Bottom());
- }
-
- drawinglayer::primitive2d::BasePrimitive2D* pBitmapWallpaperFill =
- new drawinglayer::primitive2d::WallpaperBitmapPrimitive2D(
- aWallpaperRange,
- aBitmapEx,
- eWallpaperStyle);
-
- if(rProperty.getTransformation().isIdentity())
- {
- // add directly
- rTarget.append(pBitmapWallpaperFill);
- }
- else
- {
- // when a transformation is set, embed to it
- const drawinglayer::primitive2d::Primitive2DReference xPrim(pBitmapWallpaperFill);
-
- rTarget.append(
- new drawinglayer::primitive2d::TransformPrimitive2D(
- rProperty.getTransformation(),
- drawinglayer::primitive2d::Primitive2DSequence(&xPrim, 1)));
- }
- }
-
- /** helper to decide UnderlineAbove for text primitives */
- bool isUnderlineAbove(const Font& rFont)
- {
- if(!rFont.IsVertical())
- {
- return false;
- }
-
- if((LANGUAGE_JAPANESE == rFont.GetLanguage()) || (LANGUAGE_JAPANESE == rFont.GetCJKContextLanguage()))
- {
- // the underline is right for Japanese only
- return true;
- }
-
- return false;
- }
-
- void createFontAttributeTransformAndAlignment(
- drawinglayer::attribute::FontAttribute& rFontAttribute,
- basegfx::B2DHomMatrix& rTextTransform,
- basegfx::B2DVector& rAlignmentOffset,
- PropertyHolder& rProperty)
- {
- const Font& rFont = rProperty.getFont();
- basegfx::B2DVector aFontScaling;
-
- rFontAttribute = drawinglayer::attribute::FontAttribute(
- drawinglayer::primitive2d::getFontAttributeFromVclFont(
- aFontScaling,
- rFont,
- 0 != (rProperty.getLayoutMode() & TEXT_LAYOUT_BIDI_RTL),
- 0 != (rProperty.getLayoutMode() & TEXT_LAYOUT_BIDI_STRONG)));
-
- // add FontScaling
- rTextTransform.scale(aFontScaling.getX(), aFontScaling.getY());
-
- // take text align into account
- if(ALIGN_BASELINE != rFont.GetAlign())
- {
- drawinglayer::primitive2d::TextLayouterDevice aTextLayouterDevice;
- aTextLayouterDevice.setFont(rFont);
-
- if(ALIGN_TOP == rFont.GetAlign())
- {
- rAlignmentOffset.setY(aTextLayouterDevice.getFontAscent());
- }
- else // ALIGN_BOTTOM
- {
- rAlignmentOffset.setY(-aTextLayouterDevice.getFontDescent());
- }
-
- rTextTransform.translate(rAlignmentOffset.getX(), rAlignmentOffset.getY());
- }
-
- // add FontRotation (if used)
- if(rFont.GetOrientation())
- {
- rTextTransform.rotate(-rFont.GetOrientation() * F_PI1800);
- }
- }
-
- /** helper which takes complete care for creating the needed text primitives. It
- takes care of decorated stuff and all the geometry adaptions needed
- */
- void proccessMetaTextAction(
- const Point& rTextStartPosition,
- const XubString& rText,
- sal_uInt16 nTextStart,
- sal_uInt16 nTextLength,
- const ::std::vector< double >& rDXArray,
- TargetHolder& rTarget,
- PropertyHolder& rProperty)
- {
- drawinglayer::primitive2d::BasePrimitive2D* pResult = 0;
- const Font& rFont = rProperty.getFont();
- basegfx::B2DVector aAlignmentOffset(0.0, 0.0);
-
- if(nTextLength)
- {
- drawinglayer::attribute::FontAttribute aFontAttribute;
- basegfx::B2DHomMatrix aTextTransform;
-
- // fill parameters derived from current font
- createFontAttributeTransformAndAlignment(
- aFontAttribute,
- aTextTransform,
- aAlignmentOffset,
- rProperty);
-
- // add TextStartPosition
- aTextTransform.translate(rTextStartPosition.X(), rTextStartPosition.Y());
-
- // prepare FontColor and Locale
- const basegfx::BColor aFontColor(rProperty.getTextColor());
- const com::sun::star::lang::Locale aLocale(MsLangId::convertLanguageToLocale(rProperty.getLanguageType()));
- const bool bWordLineMode(rFont.IsWordLineMode());
-
- const bool bDecoratedIsNeeded(
- UNDERLINE_NONE != rFont.GetOverline()
- || UNDERLINE_NONE != rFont.GetUnderline()
- || STRIKEOUT_NONE != rFont.GetStrikeout()
- || EMPHASISMARK_NONE != (rFont.GetEmphasisMark() & EMPHASISMARK_STYLE)
- || RELIEF_NONE != rFont.GetRelief()
- || rFont.IsShadow()
- || bWordLineMode);
-
- if(bDecoratedIsNeeded)
- {
- // prepare overline, underline and srikeout data
- const drawinglayer::primitive2d::TextLine eFontOverline(drawinglayer::primitive2d::mapFontUnderlineToTextLine(rFont.GetOverline()));
- const drawinglayer::primitive2d::TextLine eFontUnderline(drawinglayer::primitive2d::mapFontUnderlineToTextLine(rFont.GetUnderline()));
- const drawinglayer::primitive2d::TextStrikeout eTextStrikeout(drawinglayer::primitive2d::mapFontStrikeoutToTextStrikeout(rFont.GetStrikeout()));
-
- // check UndelineAbove
- const bool bUnderlineAbove(drawinglayer::primitive2d::TEXT_LINE_NONE != eFontUnderline && isUnderlineAbove(rFont));
-
- // prepare emphasis mark data
- drawinglayer::primitive2d::TextEmphasisMark eTextEmphasisMark(drawinglayer::primitive2d::TEXT_EMPHASISMARK_NONE);
-
- switch(rFont.GetEmphasisMark() & EMPHASISMARK_STYLE)
- {
- case EMPHASISMARK_DOT : eTextEmphasisMark = drawinglayer::primitive2d::TEXT_EMPHASISMARK_DOT; break;
- case EMPHASISMARK_CIRCLE : eTextEmphasisMark = drawinglayer::primitive2d::TEXT_EMPHASISMARK_CIRCLE; break;
- case EMPHASISMARK_DISC : eTextEmphasisMark = drawinglayer::primitive2d::TEXT_EMPHASISMARK_DISC; break;
- case EMPHASISMARK_ACCENT : eTextEmphasisMark = drawinglayer::primitive2d::TEXT_EMPHASISMARK_ACCENT; break;
- }
-
- const bool bEmphasisMarkAbove(rFont.GetEmphasisMark() & EMPHASISMARK_POS_ABOVE);
- const bool bEmphasisMarkBelow(rFont.GetEmphasisMark() & EMPHASISMARK_POS_BELOW);
-
- // prepare font relief data
- drawinglayer::primitive2d::TextRelief eTextRelief(drawinglayer::primitive2d::TEXT_RELIEF_NONE);
-
- switch(rFont.GetRelief())
- {
- case RELIEF_EMBOSSED : eTextRelief = drawinglayer::primitive2d::TEXT_RELIEF_EMBOSSED; break;
- case RELIEF_ENGRAVED : eTextRelief = drawinglayer::primitive2d::TEXT_RELIEF_ENGRAVED; break;
- default : break; // RELIEF_NONE, FontRelief_FORCE_EQUAL_SIZE
- }
-
- // prepare shadow/outline data
- const bool bShadow(rFont.IsShadow());
-
- // TextDecoratedPortionPrimitive2D is needed, create one
- pResult = new drawinglayer::primitive2d::TextDecoratedPortionPrimitive2D(
-
- // attributes for TextSimplePortionPrimitive2D
- aTextTransform,
- rText,
- nTextStart,
- nTextLength,
- rDXArray,
- aFontAttribute,
- aLocale,
- aFontColor,
-
- // attributes for TextDecoratedPortionPrimitive2D
- rProperty.getOverlineColorActive() ? rProperty.getOverlineColor() : aFontColor,
- rProperty.getTextLineColorActive() ? rProperty.getTextLineColor() : aFontColor,
- eFontOverline,
- eFontUnderline,
- bUnderlineAbove,
- eTextStrikeout,
- bWordLineMode,
- eTextEmphasisMark,
- bEmphasisMarkAbove,
- bEmphasisMarkBelow,
- eTextRelief,
- bShadow);
- }
- else
- {
- // TextSimplePortionPrimitive2D is enough
- pResult = new drawinglayer::primitive2d::TextSimplePortionPrimitive2D(
- aTextTransform,
- rText,
- nTextStart,
- nTextLength,
- rDXArray,
- aFontAttribute,
- aLocale,
- aFontColor);
- }
- }
-
- if(pResult && rProperty.getTextFillColorActive())
- {
- // text background is requested, add and encapsulate both to new primitive
- drawinglayer::primitive2d::TextLayouterDevice aTextLayouterDevice;
- aTextLayouterDevice.setFont(rFont);
-
- // get text width
- double fTextWidth(0.0);
-
- if(rDXArray.empty())
- {
- fTextWidth = aTextLayouterDevice.getTextWidth(rText, nTextStart, nTextLength);
- }
- else
- {
- fTextWidth = rDXArray.back();
- }
-
- if(basegfx::fTools::more(fTextWidth, 0.0))
- {
- // build text range
- const basegfx::B2DRange aTextRange(
- 0.0, -aTextLayouterDevice.getFontAscent(),
- fTextWidth, aTextLayouterDevice.getFontDescent());
-
- // create Transform
- basegfx::B2DHomMatrix aTextTransform;
-
- aTextTransform.translate(aAlignmentOffset.getX(), aAlignmentOffset.getY());
-
- if(rFont.GetOrientation())
- {
- aTextTransform.rotate(-rFont.GetOrientation() * F_PI1800);
- }
-
- aTextTransform.translate(rTextStartPosition.X(), rTextStartPosition.Y());
-
- // prepare Primitive2DSequence, put text in foreground
- drawinglayer::primitive2d::Primitive2DSequence aSequence(2);
- aSequence[1] = drawinglayer::primitive2d::Primitive2DReference(pResult);
-
- // prepare filled polygon
- basegfx::B2DPolygon aOutline(basegfx::tools::createPolygonFromRect(aTextRange));
- aOutline.transform(aTextTransform);
-
- aSequence[0] = drawinglayer::primitive2d::Primitive2DReference(
- new drawinglayer::primitive2d::PolyPolygonColorPrimitive2D(
- basegfx::B2DPolyPolygon(aOutline),
- rProperty.getTextFillColor()));
-
- // set as group at pResult
- pResult = new drawinglayer::primitive2d::GroupPrimitive2D(aSequence);
- }
- }
-
- if(pResult)
- {
- // add created text primitive to target
- if(rProperty.getTransformation().isIdentity())
- {
- rTarget.append(pResult);
- }
- else
- {
- // when a transformation is set, embed to it
- const drawinglayer::primitive2d::Primitive2DReference aReference(pResult);
-
- rTarget.append(
- new drawinglayer::primitive2d::TransformPrimitive2D(
- rProperty.getTransformation(),
- drawinglayer::primitive2d::Primitive2DSequence(&aReference, 1)));
- }
- }
- }
-
- /** helper which takes complete care for creating the needed textLine primitives */
- void proccessMetaTextLineAction(
- const MetaTextLineAction& rAction,
- TargetHolder& rTarget,
- PropertyHolder& rProperty)
- {
- const double fLineWidth(fabs((double)rAction.GetWidth()));
-
- if(fLineWidth > 0.0)
- {
- const drawinglayer::primitive2d::TextLine aOverlineMode(drawinglayer::primitive2d::mapFontUnderlineToTextLine(rAction.GetOverline()));
- const drawinglayer::primitive2d::TextLine aUnderlineMode(drawinglayer::primitive2d::mapFontUnderlineToTextLine(rAction.GetUnderline()));
- const drawinglayer::primitive2d::TextStrikeout aTextStrikeout(drawinglayer::primitive2d::mapFontStrikeoutToTextStrikeout(rAction.GetStrikeout()));
-
- const bool bOverlineUsed(drawinglayer::primitive2d::TEXT_LINE_NONE != aOverlineMode);
- const bool bUnderlineUsed(drawinglayer::primitive2d::TEXT_LINE_NONE != aUnderlineMode);
- const bool bStrikeoutUsed(drawinglayer::primitive2d::TEXT_STRIKEOUT_NONE != aTextStrikeout);
-
- if(bUnderlineUsed || bStrikeoutUsed || bOverlineUsed)
- {
- std::vector< drawinglayer::primitive2d::BasePrimitive2D* > aTargetVector;
- basegfx::B2DVector aAlignmentOffset(0.0, 0.0);
- drawinglayer::attribute::FontAttribute aFontAttribute;
- basegfx::B2DHomMatrix aTextTransform;
-
- // fill parameters derived from current font
- createFontAttributeTransformAndAlignment(
- aFontAttribute,
- aTextTransform,
- aAlignmentOffset,
- rProperty);
-
- // add TextStartPosition
- aTextTransform.translate(rAction.GetStartPoint().X(), rAction.GetStartPoint().Y());
-
- // prepare TextLayouter (used in most cases)
- drawinglayer::primitive2d::TextLayouterDevice aTextLayouter;
- aTextLayouter.setFont(rProperty.getFont());
-
- if(bOverlineUsed)
- {
- // create primitive geometry for overline
- aTargetVector.push_back(
- new drawinglayer::primitive2d::TextLinePrimitive2D(
- aTextTransform,
- fLineWidth,
- aTextLayouter.getOverlineOffset(),
- aTextLayouter.getOverlineHeight(),
- aOverlineMode,
- rProperty.getOverlineColor()));
- }
-
- if(bUnderlineUsed)
- {
- // create primitive geometry for underline
- aTargetVector.push_back(
- new drawinglayer::primitive2d::TextLinePrimitive2D(
- aTextTransform,
- fLineWidth,
- aTextLayouter.getUnderlineOffset(),
- aTextLayouter.getUnderlineHeight(),
- aUnderlineMode,
- rProperty.getTextLineColor()));
- }
-
- if(bStrikeoutUsed)
- {
- // create primitive geometry for strikeout
- if(drawinglayer::primitive2d::TEXT_STRIKEOUT_SLASH == aTextStrikeout
- || drawinglayer::primitive2d::TEXT_STRIKEOUT_X == aTextStrikeout)
- {
- // strikeout with character
- const sal_Unicode aStrikeoutChar(
- drawinglayer::primitive2d::TEXT_STRIKEOUT_SLASH == aTextStrikeout ? '/' : 'X');
- const com::sun::star::lang::Locale aLocale(MsLangId::convertLanguageToLocale(
- rProperty.getLanguageType()));
-
- aTargetVector.push_back(
- new drawinglayer::primitive2d::TextCharacterStrikeoutPrimitive2D(
- aTextTransform,
- fLineWidth,
- rProperty.getTextColor(),
- aStrikeoutChar,
- aFontAttribute,
- aLocale));
- }
- else
- {
- // strikeout with geometry
- aTargetVector.push_back(
- new drawinglayer::primitive2d::TextGeometryStrikeoutPrimitive2D(
- aTextTransform,
- fLineWidth,
- rProperty.getTextColor(),
- aTextLayouter.getUnderlineHeight(),
- aTextLayouter.getStrikeoutOffset(),
- aTextStrikeout));
- }
- }
-
- if(!aTargetVector.empty())
- {
- // add created text primitive to target
- if(rProperty.getTransformation().isIdentity())
- {
- for(sal_uInt32 a(0); a < aTargetVector.size(); a++)
- {
- rTarget.append(aTargetVector[a]);
- }
- }
- else
- {
- // when a transformation is set, embed to it
- drawinglayer::primitive2d::Primitive2DSequence xTargets(aTargetVector.size());
-
- for(sal_uInt32 a(0); a < aTargetVector.size(); a++)
- {
- xTargets[a] = drawinglayer::primitive2d::Primitive2DReference(aTargetVector[a]);
- }
-
- rTarget.append(
- new drawinglayer::primitive2d::TransformPrimitive2D(
- rProperty.getTransformation(),
- xTargets));
- }
- }
- }
- }
-
- }
-
- /** This is the main interpreter method. It is designed to handle the given Metafile
- completely inside the given context and target. It may use and modify the context and
- target. This design allows to call itself recursively wich adapted contexts and
- targets as e.g. needed for the META_FLOATTRANSPARENT_ACTION where the content is expressed
- as a metafile as sub-content.
-
- This interpreter is as free of VCL functionality as possible. It uses VCL data classes
- (else reading the data would not be possible), but e.g. does NOT use a local OutputDevice
- as most other MetaFile interpreters/exporters do to hold and work with the current context.
- This is necessary to be able to get away from the strong internal VCL-binding.
-
- It tries to combine e.g. pixel and/or point actions and to stitch together single line primitives
- where possible (which is not trivial with the possible line geometry definitions).
-
- It tries to handle clipping no longer as Regions and spans of Rectangles, but as PolyPolygon
- ClipRegions with (where possible) high precision by using the best possible data quality
- from the Region. The Region is unavoidable as data container, but nowadays allows the transport
- of Polygon-based clip regions. Where this is not used, a Polygon is constructed from the
- Region ranges. All primitive clipping uses the MaskPrimitive2D with Polygon-based clipping.
-
- I have marked the single MetaActions with:
-
- SIMPLE, DONE:
- Simple, e.g nothing to do or value setting in the context
-
- CHECKED, WORKS WELL:
- Thoroughly tested with extra written test code which created a replacement
- Metafile just to test this action in various combinations
-
- NEEDS IMPLEMENTATION:
- Not implemented and asserted, but also no usage found, neither in own Metafile
- creations, nor in EMF/WMF imports (checked with a whole bunch of critical EMF/WMF
- bugdocs)
-
- For more commens, see the single action implementations.
- */
- void interpretMetafile(
- const GDIMetaFile& rMetaFile,
- TargetHolders& rTargetHolders,
- PropertyHolders& rPropertyHolders,
- const drawinglayer::geometry::ViewInformation2D& rViewInformation)
- {
- const size_t nCount(rMetaFile.GetActionSize());
-
- for(size_t nAction(0); nAction < nCount; nAction++)
- {
- MetaAction* pAction = rMetaFile.GetAction(nAction);
-
- switch(pAction->GetType())
- {
- case META_NULL_ACTION :
- {
- /** SIMPLE, DONE */
- break;
- }
- case META_PIXEL_ACTION :
- {
- /** CHECKED, WORKS WELL */
- std::vector< basegfx::B2DPoint > aPositions;
- Color aLastColor(COL_BLACK);
-
- while(META_PIXEL_ACTION == pAction->GetType() && nAction < nCount)
- {
- const MetaPixelAction* pA = (const MetaPixelAction*)pAction;
-
- if(pA->GetColor() != aLastColor)
- {
- if(!aPositions.empty())
- {
- createPointArrayPrimitive(aPositions, rTargetHolders.Current(), rPropertyHolders.Current(), aLastColor.getBColor());
- aPositions.clear();
- }
-
- aLastColor = pA->GetColor();
- }
-
- const Point& rPoint = pA->GetPoint();
- aPositions.push_back(basegfx::B2DPoint(rPoint.X(), rPoint.Y()));
- nAction++; if(nAction < nCount) pAction = rMetaFile.GetAction(nAction);
- }
-
- nAction--;
-
- if(!aPositions.empty())
- {
- createPointArrayPrimitive(aPositions, rTargetHolders.Current(), rPropertyHolders.Current(), aLastColor.getBColor());
- }
-
- break;
- }
- case META_POINT_ACTION :
- {
- /** CHECKED, WORKS WELL */
- if(rPropertyHolders.Current().getLineColorActive())
- {
- std::vector< basegfx::B2DPoint > aPositions;
-
- while(META_POINT_ACTION == pAction->GetType() && nAction < nCount)
- {
- const MetaPointAction* pA = (const MetaPointAction*)pAction;
- const Point& rPoint = pA->GetPoint();
- aPositions.push_back(basegfx::B2DPoint(rPoint.X(), rPoint.Y()));
- nAction++; if(nAction < nCount) pAction = rMetaFile.GetAction(nAction);
- }
-
- nAction--;
-
- if(!aPositions.empty())
- {
- createPointArrayPrimitive(aPositions, rTargetHolders.Current(), rPropertyHolders.Current(), rPropertyHolders.Current().getLineColor());
- }
- }
-
- break;
- }
- case META_LINE_ACTION :
- {
- /** CHECKED, WORKS WELL */
- if(rPropertyHolders.Current().getLineColorActive())
- {
- basegfx::B2DPolygon aLinePolygon;
- LineInfo aLineInfo;
-
- while(META_LINE_ACTION == pAction->GetType() && nAction < nCount)
- {
- const MetaLineAction* pA = (const MetaLineAction*)pAction;
- const Point& rStartPoint = pA->GetStartPoint();
- const Point& rEndPoint = pA->GetEndPoint();
- const basegfx::B2DPoint aStart(rStartPoint.X(), rStartPoint.Y());
- const basegfx::B2DPoint aEnd(rEndPoint.X(), rEndPoint.Y());
-
- if(aLinePolygon.count())
- {
- if(pA->GetLineInfo() == aLineInfo
- && aStart == aLinePolygon.getB2DPoint(aLinePolygon.count() - 1))
- {
- aLinePolygon.append(aEnd);
- }
- else
- {
- aLineInfo.SetLineJoin(basegfx::B2DLINEJOIN_NONE); // It were lines; force to NONE
- createLinePrimitive(aLinePolygon, aLineInfo, rTargetHolders.Current(), rPropertyHolders.Current());
- aLinePolygon.clear();
- aLineInfo = pA->GetLineInfo();
- aLinePolygon.append(aStart);
- aLinePolygon.append(aEnd);
- }
- }
- else
- {
- aLineInfo = pA->GetLineInfo();
- aLinePolygon.append(aStart);
- aLinePolygon.append(aEnd);
- }
-
- nAction++; if(nAction < nCount) pAction = rMetaFile.GetAction(nAction);
- }
-
- nAction--;
-
- if(aLinePolygon.count())
- {
- aLineInfo.SetLineJoin(basegfx::B2DLINEJOIN_NONE); // It were lines; force to NONE
- createLinePrimitive(aLinePolygon, aLineInfo, rTargetHolders.Current(), rPropertyHolders.Current());
- }
- }
-
- break;
- }
- case META_RECT_ACTION :
- {
- /** CHECKED, WORKS WELL */
- if(rPropertyHolders.Current().getLineOrFillActive())
- {
- const MetaRectAction* pA = (const MetaRectAction*)pAction;
- const Rectangle& rRectangle = pA->GetRect();
-
- if(!rRectangle.IsEmpty())
- {
- const basegfx::B2DRange aRange(rRectangle.Left(), rRectangle.Top(), rRectangle.Right(), rRectangle.Bottom());
-
- if(!aRange.isEmpty())
- {
- const basegfx::B2DPolygon aOutline(basegfx::tools::createPolygonFromRect(aRange));
- createHairlineAndFillPrimitive(aOutline, rTargetHolders.Current(), rPropertyHolders.Current());
- }
- }
- }
-
- break;
- }
- case META_ROUNDRECT_ACTION :
- {
- /** CHECKED, WORKS WELL */
- /** The original OutputDevice::DrawRect paints nothing when nHor or nVer is zero; but just
- because the tools::Polygon operator creating the rounding does produce nonsense. I assume
- this an error and create an unrounded rectangle in that case (implicit in
- createPolygonFromRect)
- */
- if(rPropertyHolders.Current().getLineOrFillActive())
- {
- const MetaRoundRectAction* pA = (const MetaRoundRectAction*)pAction;
- const Rectangle& rRectangle = pA->GetRect();
-
- if(!rRectangle.IsEmpty())
- {
- const basegfx::B2DRange aRange(rRectangle.Left(), rRectangle.Top(), rRectangle.Right(), rRectangle.Bottom());
-
- if(!aRange.isEmpty())
- {
- const sal_uInt32 nHor(pA->GetHorzRound());
- const sal_uInt32 nVer(pA->GetVertRound());
- basegfx::B2DPolygon aOutline;
-
- if(nHor || nVer)
- {
- double fRadiusX((nHor * 2.0) / (aRange.getWidth() > 0.0 ? aRange.getWidth() : 1.0));
- double fRadiusY((nVer * 2.0) / (aRange.getHeight() > 0.0 ? aRange.getHeight() : 1.0));
- fRadiusX = std::max(0.0, std::min(1.0, fRadiusX));
- fRadiusY = std::max(0.0, std::min(1.0, fRadiusY));
-
- aOutline = basegfx::tools::createPolygonFromRect(aRange, fRadiusX, fRadiusY);
- }
- else
- {
- aOutline = basegfx::tools::createPolygonFromRect(aRange);
- }
-
- createHairlineAndFillPrimitive(aOutline, rTargetHolders.Current(), rPropertyHolders.Current());
- }
- }
- }
-
- break;
- }
- case META_ELLIPSE_ACTION :
- {
- /** CHECKED, WORKS WELL */
- if(rPropertyHolders.Current().getLineOrFillActive())
- {
- const MetaEllipseAction* pA = (const MetaEllipseAction*)pAction;
- const Rectangle& rRectangle = pA->GetRect();
-
- if(!rRectangle.IsEmpty())
- {
- const basegfx::B2DRange aRange(rRectangle.Left(), rRectangle.Top(), rRectangle.Right(), rRectangle.Bottom());
-
- if(!aRange.isEmpty())
- {
- const basegfx::B2DPolygon aOutline(basegfx::tools::createPolygonFromEllipse(
- aRange.getCenter(), aRange.getWidth() * 0.5, aRange.getHeight() * 0.5));
-
- createHairlineAndFillPrimitive(aOutline, rTargetHolders.Current(), rPropertyHolders.Current());
- }
- }
- }
-
- break;
- }
- case META_ARC_ACTION :
- {
- /** CHECKED, WORKS WELL */
- if(rPropertyHolders.Current().getLineColorActive())
- {
- const MetaArcAction* pA = (const MetaArcAction*)pAction;
- const Polygon aToolsPoly(pA->GetRect(), pA->GetStartPoint(), pA->GetEndPoint(), POLY_ARC);
- const basegfx::B2DPolygon aOutline(aToolsPoly.getB2DPolygon());
-
- createHairlinePrimitive(aOutline, rTargetHolders.Current(), rPropertyHolders.Current());
- }
-
- break;
- }
- case META_PIE_ACTION :
- {
- /** CHECKED, WORKS WELL */
- if(rPropertyHolders.Current().getLineOrFillActive())
- {
- const MetaPieAction* pA = (const MetaPieAction*)pAction;
- const Polygon aToolsPoly(pA->GetRect(), pA->GetStartPoint(), pA->GetEndPoint(), POLY_PIE);
- const basegfx::B2DPolygon aOutline(aToolsPoly.getB2DPolygon());
-
- createHairlineAndFillPrimitive(aOutline, rTargetHolders.Current(), rPropertyHolders.Current());
- }
-
- break;
- }
- case META_CHORD_ACTION :
- {
- /** CHECKED, WORKS WELL */
- if(rPropertyHolders.Current().getLineOrFillActive())
- {
- const MetaChordAction* pA = (const MetaChordAction*)pAction;
- const Polygon aToolsPoly(pA->GetRect(), pA->GetStartPoint(), pA->GetEndPoint(), POLY_CHORD);
- const basegfx::B2DPolygon aOutline(aToolsPoly.getB2DPolygon());
-
- createHairlineAndFillPrimitive(aOutline, rTargetHolders.Current(), rPropertyHolders.Current());
- }
-
- break;
- }
- case META_POLYLINE_ACTION :
- {
- /** CHECKED, WORKS WELL */
- if(rPropertyHolders.Current().getLineColorActive())
- {
- const MetaPolyLineAction* pA = (const MetaPolyLineAction*)pAction;
- createLinePrimitive(pA->GetPolygon().getB2DPolygon(), pA->GetLineInfo(), rTargetHolders.Current(), rPropertyHolders.Current());
- }
-
- break;
- }
- case META_POLYGON_ACTION :
- {
- /** CHECKED, WORKS WELL */
- if(rPropertyHolders.Current().getLineOrFillActive())
- {
- const MetaPolygonAction* pA = (const MetaPolygonAction*)pAction;
- basegfx::B2DPolygon aOutline(pA->GetPolygon().getB2DPolygon());
-
- // the metafile play interprets the polygons from MetaPolygonAction
- // always as closed and always paints an edge from last to first point,
- // so force to closed here to emulate that
- if(aOutline.count() > 1 && !aOutline.isClosed())
- {
- aOutline.setClosed(true);
- }
-
- createHairlineAndFillPrimitive(aOutline, rTargetHolders.Current(), rPropertyHolders.Current());
- }
-
- break;
- }
- case META_POLYPOLYGON_ACTION :
- {
- /** CHECKED, WORKS WELL */
- if(rPropertyHolders.Current().getLineOrFillActive())
- {
- const MetaPolyPolygonAction* pA = (const MetaPolyPolygonAction*)pAction;
- basegfx::B2DPolyPolygon aPolyPolygonOutline(pA->GetPolyPolygon().getB2DPolyPolygon());
-
- // the metafile play interprets the single polygons from MetaPolyPolygonAction
- // always as closed and always paints an edge from last to first point,
- // so force to closed here to emulate that
- for(sal_uInt32 b(0); b < aPolyPolygonOutline.count(); b++)
- {
- basegfx::B2DPolygon aPolygonOutline(aPolyPolygonOutline.getB2DPolygon(b));
-
- if(aPolygonOutline.count() > 1 && !aPolygonOutline.isClosed())
- {
- aPolygonOutline.setClosed(true);
- aPolyPolygonOutline.setB2DPolygon(b, aPolygonOutline);
- }
- }
-
- createHairlineAndFillPrimitive(aPolyPolygonOutline, rTargetHolders.Current(), rPropertyHolders.Current());
- }
-
- break;
- }
- case META_TEXT_ACTION :
- {
- /** CHECKED, WORKS WELL */
- const MetaTextAction* pA = (const MetaTextAction*)pAction;
- sal_uInt32 nTextLength(pA->GetLen());
- const sal_uInt32 nTextIndex(pA->GetIndex());
- const sal_uInt32 nStringLength(pA->GetText().Len());
-
- if(nTextLength + nTextIndex > nStringLength)
- {
- nTextLength = nStringLength - nTextIndex;
- }
-
- if(nTextLength && rPropertyHolders.Current().getTextColorActive())
- {
- const std::vector< double > aDXArray;
- proccessMetaTextAction(
- pA->GetPoint(),
- pA->GetText(),
- nTextIndex,
- nTextLength,
- aDXArray,
- rTargetHolders.Current(),
- rPropertyHolders.Current());
- }
-
- break;
- }
- case META_TEXTARRAY_ACTION :
- {
- /** CHECKED, WORKS WELL */
- const MetaTextArrayAction* pA = (const MetaTextArrayAction*)pAction;
- sal_uInt32 nTextLength(pA->GetLen());
- const sal_uInt32 nTextIndex(pA->GetIndex());
- const sal_uInt32 nStringLength(pA->GetText().Len());
-
- if(nTextLength + nTextIndex > nStringLength)
- {
- nTextLength = nTextIndex > nStringLength ? 0 : nStringLength - nTextIndex;
- }
-
- if(nTextLength && rPropertyHolders.Current().getTextColorActive())
- {
- // preapare DXArray (if used)
- std::vector< double > aDXArray;
- sal_Int32* pDXArray = pA->GetDXArray();
-
- if(pDXArray)
- {
- aDXArray.reserve(nTextLength);
-
- for(sal_uInt32 a(0); a < nTextLength; a++)
- {
- aDXArray.push_back((double)(*(pDXArray + a)));
- }
- }
-
- proccessMetaTextAction(
- pA->GetPoint(),
- pA->GetText(),
- nTextIndex,
- nTextLength,
- aDXArray,
- rTargetHolders.Current(),
- rPropertyHolders.Current());
- }
-
- break;
- }
- case META_STRETCHTEXT_ACTION :
- {
- // #i108440# StarMath uses MetaStretchTextAction, thus support is needed.
- // It looks as if it pretty never really uses a width different from
- // the default text-layout width, but it's not possible to be sure.
- // Implemented getting the DXArray and checking for scale at all. If
- // scale is more than 3.5% different, scale the DXArray before usage.
- // New status:
-
- /** CHECKED, WORKS WELL */
- const MetaStretchTextAction* pA = (const MetaStretchTextAction*)pAction;
- sal_uInt32 nTextLength(pA->GetLen());
- const sal_uInt32 nTextIndex(pA->GetIndex());
- const sal_uInt32 nStringLength(pA->GetText().Len());
-
- if(nTextLength + nTextIndex > nStringLength)
- {
- nTextLength = nStringLength - nTextIndex;
- }
-
- if(nTextLength && rPropertyHolders.Current().getTextColorActive())
- {
- drawinglayer::primitive2d::TextLayouterDevice aTextLayouterDevice;
- aTextLayouterDevice.setFont(rPropertyHolders.Current().getFont());
-
- ::std::vector< double > aTextArray(
- aTextLayouterDevice.getTextArray(
- pA->GetText(),
- nTextIndex,
- nTextLength));
-
- if(!aTextArray.empty())
- {
- const double fTextLength(aTextArray.back());
-
- if(0.0 != fTextLength && pA->GetWidth())
- {
- const double fRelative(pA->GetWidth() / fTextLength);
-
- if(fabs(fRelative - 1.0) >= 0.035)
- {
- // when derivation is more than 3,5% from default text size,
- // scale the DXArray
- for(sal_uInt32 a(0); a < aTextArray.size(); a++)
- {
- aTextArray[a] *= fRelative;
- }
- }
- }
- }
-
- proccessMetaTextAction(
- pA->GetPoint(),
- pA->GetText(),
- nTextIndex,
- nTextLength,
- aTextArray,
- rTargetHolders.Current(),
- rPropertyHolders.Current());
- }
-
- break;
- }
- case META_TEXTRECT_ACTION :
- {
- /** CHECKED, WORKS WELL */
- // OSL_FAIL("META_TEXTRECT_ACTION requested (!)");
- const MetaTextRectAction* pA = (const MetaTextRectAction*)pAction;
- const Rectangle& rRectangle = pA->GetRect();
- const sal_uInt32 nStringLength(pA->GetText().Len());
-
- if(!rRectangle.IsEmpty() && 0 != nStringLength)
- {
- // The problem with this action is that it describes unlayouted text
- // and the layout capabilities are in EditEngine/Outliner in SVX. The
- // same problem is true for VCL which internally has implementations
- // to layout text in this case. There exists even a call
- // OutputDevice::AddTextRectActions(...) to create the needed actions
- // as 'sub-content' of a Metafile. Unfortunately i do not have an
- // OutputDevice here since this interpreter tries to work without
- // VCL AFAP.
- // Since AddTextRectActions is the only way as long as we do not have
- // a simple text layouter available, i will try to add it to the
- // TextLayouterDevice isloation.
- drawinglayer::primitive2d::TextLayouterDevice aTextLayouterDevice;
- aTextLayouterDevice.setFont(rPropertyHolders.Current().getFont());
- GDIMetaFile aGDIMetaFile;
-
- aTextLayouterDevice.addTextRectActions(
- rRectangle, pA->GetText(), pA->GetStyle(), aGDIMetaFile);
-
- if(aGDIMetaFile.GetActionSize())
- {
- // cerate sub-content
- drawinglayer::primitive2d::Primitive2DSequence xSubContent;
- {
- rTargetHolders.Push();
- // #i# for sub-Mteafile contents, do start with new, default render state
- rPropertyHolders.PushDefault();
- interpretMetafile(aGDIMetaFile, rTargetHolders, rPropertyHolders, rViewInformation);
- xSubContent = rTargetHolders.Current().getPrimitive2DSequence(rPropertyHolders.Current());
- rPropertyHolders.Pop();
- rTargetHolders.Pop();
- }
-
- if(xSubContent.hasElements())
- {
- // add with transformation
- rTargetHolders.Current().append(
- new drawinglayer::primitive2d::TransformPrimitive2D(
- rPropertyHolders.Current().getTransformation(),
- xSubContent));
- }
- }
- }
-
- break;
- }
- case META_BMP_ACTION :
- {
- /** CHECKED, WORKS WELL */
- const MetaBmpAction* pA = (const MetaBmpAction*)pAction;
- const BitmapEx aBitmapEx(pA->GetBitmap());
-
- createBitmapExPrimitive(aBitmapEx, pA->GetPoint(), rTargetHolders.Current(), rPropertyHolders.Current());
-
- break;
- }
- case META_BMPSCALE_ACTION :
- {
- /** CHECKED, WORKS WELL */
- const MetaBmpScaleAction* pA = (const MetaBmpScaleAction*)pAction;
- const Bitmap aBitmapEx(pA->GetBitmap());
-
- createBitmapExPrimitive(aBitmapEx, pA->GetPoint(), pA->GetSize(), rTargetHolders.Current(), rPropertyHolders.Current());
-
- break;
- }
- case META_BMPSCALEPART_ACTION :
- {
- /** CHECKED, WORKS WELL */
- const MetaBmpScalePartAction* pA = (const MetaBmpScalePartAction*)pAction;
- const Bitmap& rBitmap = pA->GetBitmap();
-
- if(!rBitmap.IsEmpty())
- {
- Bitmap aCroppedBitmap(rBitmap);
- const Rectangle aCropRectangle(pA->GetSrcPoint(), pA->GetSrcSize());
-
- if(!aCropRectangle.IsEmpty())
- {
- aCroppedBitmap.Crop(aCropRectangle);
- }
-
- const BitmapEx aCroppedBitmapEx(aCroppedBitmap);
- createBitmapExPrimitive(aCroppedBitmapEx, pA->GetDestPoint(), pA->GetDestSize(), rTargetHolders.Current(), rPropertyHolders.Current());
- }
-
- break;
- }
- case META_BMPEX_ACTION :
- {
- /** CHECKED, WORKS WELL: Simply same as META_BMP_ACTION */
- const MetaBmpExAction* pA = (const MetaBmpExAction*)pAction;
- const BitmapEx& rBitmapEx = pA->GetBitmapEx();
-
- createBitmapExPrimitive(rBitmapEx, pA->GetPoint(), rTargetHolders.Current(), rPropertyHolders.Current());
-
- break;
- }
- case META_BMPEXSCALE_ACTION :
- {
- /** CHECKED, WORKS WELL: Simply same as META_BMPSCALE_ACTION */
- const MetaBmpExScaleAction* pA = (const MetaBmpExScaleAction*)pAction;
- const BitmapEx& rBitmapEx = pA->GetBitmapEx();
-
- createBitmapExPrimitive(rBitmapEx, pA->GetPoint(), pA->GetSize(), rTargetHolders.Current(), rPropertyHolders.Current());
-
- break;
- }
- case META_BMPEXSCALEPART_ACTION :
- {
- /** CHECKED, WORKS WELL: Simply same as META_BMPSCALEPART_ACTION */
- const MetaBmpExScalePartAction* pA = (const MetaBmpExScalePartAction*)pAction;
- const BitmapEx& rBitmapEx = pA->GetBitmapEx();
-
- if(!rBitmapEx.IsEmpty())
- {
- BitmapEx aCroppedBitmapEx(rBitmapEx);
- const Rectangle aCropRectangle(pA->GetSrcPoint(), pA->GetSrcSize());
-
- if(!aCropRectangle.IsEmpty())
- {
- aCroppedBitmapEx.Crop(aCropRectangle);
- }
-
- createBitmapExPrimitive(aCroppedBitmapEx, pA->GetDestPoint(), pA->GetDestSize(), rTargetHolders.Current(), rPropertyHolders.Current());
- }
-
- break;
- }
- case META_MASK_ACTION :
- {
- /** CHECKED, WORKS WELL: Simply same as META_BMP_ACTION */
- const MetaMaskAction* pA = (const MetaMaskAction*)pAction;
- const BitmapEx aBitmapEx(createMaskBmpEx(pA->GetBitmap(), pA->GetColor()));
-
- createBitmapExPrimitive(aBitmapEx, pA->GetPoint(), rTargetHolders.Current(), rPropertyHolders.Current());
-
- break;
- }
- case META_MASKSCALE_ACTION :
- {
- /** CHECKED, WORKS WELL: Simply same as META_BMPSCALE_ACTION */
- const MetaMaskScaleAction* pA = (const MetaMaskScaleAction*)pAction;
- const BitmapEx aBitmapEx(createMaskBmpEx(pA->GetBitmap(), pA->GetColor()));
-
- createBitmapExPrimitive(aBitmapEx, pA->GetPoint(), pA->GetSize(), rTargetHolders.Current(), rPropertyHolders.Current());
-
- break;
- }
- case META_MASKSCALEPART_ACTION :
- {
- /** CHECKED, WORKS WELL: Simply same as META_BMPSCALEPART_ACTION */
- const MetaMaskScalePartAction* pA = (const MetaMaskScalePartAction*)pAction;
- const Bitmap& rBitmap = pA->GetBitmap();
-
- if(!rBitmap.IsEmpty())
- {
- Bitmap aCroppedBitmap(rBitmap);
- const Rectangle aCropRectangle(pA->GetSrcPoint(), pA->GetSrcSize());
-
- if(!aCropRectangle.IsEmpty())
- {
- aCroppedBitmap.Crop(aCropRectangle);
- }
-
- const BitmapEx aCroppedBitmapEx(createMaskBmpEx(aCroppedBitmap, pA->GetColor()));
- createBitmapExPrimitive(aCroppedBitmapEx, pA->GetDestPoint(), pA->GetDestSize(), rTargetHolders.Current(), rPropertyHolders.Current());
- }
-
- break;
- }
- case META_GRADIENT_ACTION :
- {
- /** CHECKED, WORKS WELL */
- const MetaGradientAction* pA = (const MetaGradientAction*)pAction;
- const Rectangle& rRectangle = pA->GetRect();
-
- if(!rRectangle.IsEmpty())
- {
- basegfx::B2DRange aRange(rRectangle.Left(), rRectangle.Top(), rRectangle.Right(), rRectangle.Bottom());
-
- if(!aRange.isEmpty())
- {
- const Gradient& rGradient = pA->GetGradient();
- const drawinglayer::attribute::FillGradientAttribute aAttribute(createFillGradientAttribute(rGradient));
- basegfx::B2DPolyPolygon aOutline(basegfx::tools::createPolygonFromRect(aRange));
-
- if(aAttribute.getStartColor() == aAttribute.getEndColor())
- {
- // not really a gradient. Create filled rectangle
- createFillPrimitive(
- aOutline,
- rTargetHolders.Current(),
- rPropertyHolders.Current());
- }
- else
- {
- // really a gradient
- aRange.transform(rPropertyHolders.Current().getTransformation());
- drawinglayer::primitive2d::Primitive2DSequence xGradient(1);
-
- if(rPropertyHolders.Current().isRasterOpInvert())
- {
- // use a special version of FillGradientPrimitive2D which creates
- // non-overlapping geometry on decomposition to makethe old XOR
- // paint 'trick' work.
- xGradient[0] = drawinglayer::primitive2d::Primitive2DReference(
- new drawinglayer::primitive2d::NonOverlappingFillGradientPrimitive2D(
- aRange,
- aAttribute));
- }
- else
- {
- xGradient[0] = drawinglayer::primitive2d::Primitive2DReference(
- new drawinglayer::primitive2d::FillGradientPrimitive2D(
- aRange,
- aAttribute));
- }
-
- // #i112300# clip against polygon representing the rectangle from
- // the action. This is implicitely done using a temp Clipping in VCL
- // when a MetaGradientAction is executed
- aOutline.transform(rPropertyHolders.Current().getTransformation());
- rTargetHolders.Current().append(
- new drawinglayer::primitive2d::MaskPrimitive2D(
- aOutline,
- xGradient));
- }
- }
- }
-
- break;
- }
- case META_HATCH_ACTION :
- {
- /** CHECKED, WORKS WELL */
- const MetaHatchAction* pA = (const MetaHatchAction*)pAction;
- basegfx::B2DPolyPolygon aOutline(pA->GetPolyPolygon().getB2DPolyPolygon());
-
- if(aOutline.count())
- {
- const Hatch& rHatch = pA->GetHatch();
- const drawinglayer::attribute::FillHatchAttribute aAttribute(createFillHatchAttribute(rHatch));
-
- aOutline.transform(rPropertyHolders.Current().getTransformation());
-
- const basegfx::B2DRange aObjectRange(aOutline.getB2DRange());
- const drawinglayer::primitive2d::Primitive2DReference aFillHatch(
- new drawinglayer::primitive2d::FillHatchPrimitive2D(
- aObjectRange,
- basegfx::BColor(),
- aAttribute));
-
- rTargetHolders.Current().append(
- new drawinglayer::primitive2d::MaskPrimitive2D(
- aOutline,
- drawinglayer::primitive2d::Primitive2DSequence(&aFillHatch, 1)));
- }
-
- break;
- }
- case META_WALLPAPER_ACTION :
- {
- /** CHECKED, WORKS WELL */
- const MetaWallpaperAction* pA = (const MetaWallpaperAction*)pAction;
- Rectangle aWallpaperRectangle(pA->GetRect());
-
- if(!aWallpaperRectangle.IsEmpty())
- {
- const Wallpaper& rWallpaper = pA->GetWallpaper();
- const WallpaperStyle eWallpaperStyle(rWallpaper.GetStyle());
- basegfx::B2DRange aWallpaperRange(
- aWallpaperRectangle.Left(), aWallpaperRectangle.Top(),
- aWallpaperRectangle.Right(), aWallpaperRectangle.Bottom());
-
- if(WALLPAPER_NULL != eWallpaperStyle)
- {
- if(rWallpaper.IsBitmap())
- {
- // create bitmap background. Caution: This
- // also will create gradient/color background(s)
- // when the bitmap is transparent or not tiled
- CreateAndAppendBitmapWallpaper(
- aWallpaperRange,
- rWallpaper,
- rTargetHolders.Current(),
- rPropertyHolders.Current());
- }
- else if(rWallpaper.IsGradient())
- {
- // create gradient background
- rTargetHolders.Current().append(
- CreateGradientWallpaper(
- aWallpaperRange,
- rWallpaper.GetGradient(),
- rPropertyHolders.Current()));
- }
- else if(!rWallpaper.GetColor().GetTransparency())
- {
- // create color background
- rTargetHolders.Current().append(
- CreateColorWallpaper(
- aWallpaperRange,
- rWallpaper.GetColor().getBColor(),
- rPropertyHolders.Current()));
- }
- }
- }
-
- break;
- }
- case META_CLIPREGION_ACTION :
- {
- /** CHECKED, WORKS WELL */
- const MetaClipRegionAction* pA = (const MetaClipRegionAction*)pAction;
-
- if(pA->IsClipping())
- {
- // new clipping. Get PolyPolygon and transform with current transformation
- basegfx::B2DPolyPolygon aNewClipPolyPolygon(getB2DPolyPolygonFromRegion(pA->GetRegion()));
-
- aNewClipPolyPolygon.transform(rPropertyHolders.Current().getTransformation());
- HandleNewClipRegion(aNewClipPolyPolygon, rTargetHolders, rPropertyHolders);
- }
- else
- {
- // end clipping
- const basegfx::B2DPolyPolygon aEmptyPolyPolygon;
-
- HandleNewClipRegion(aEmptyPolyPolygon, rTargetHolders, rPropertyHolders);
- }
-
- break;
- }
- case META_ISECTRECTCLIPREGION_ACTION :
- {
- /** CHECKED, WORKS WELL */
- const MetaISectRectClipRegionAction* pA = (const MetaISectRectClipRegionAction*)pAction;
- const Rectangle& rRectangle = pA->GetRect();
-
- if(rRectangle.IsEmpty())
- {
- // intersect with empty rectangle will always give empty
- // ClipPolyPolygon; start new clipping with empty PolyPolygon
- const basegfx::B2DPolyPolygon aEmptyPolyPolygon;
-
- HandleNewClipRegion(aEmptyPolyPolygon, rTargetHolders, rPropertyHolders);
- }
- else
- {
- // create transformed ClipRange
- basegfx::B2DRange aClipRange(
- rRectangle.Left(), rRectangle.Top(),
- rRectangle.Right(), rRectangle.Bottom());
-
- aClipRange.transform(rPropertyHolders.Current().getTransformation());
-
- if(rPropertyHolders.Current().getClipPolyPolygonActive())
- {
- if(0 == rPropertyHolders.Current().getClipPolyPolygon().count())
- {
- // nothing to do, empty active clipPolyPolygon will stay
- // empty when intersecting
- }
- else
- {
- // AND existing region and new ClipRange
- const basegfx::B2DPolyPolygon aOriginalPolyPolygon(
- rPropertyHolders.Current().getClipPolyPolygon());
- basegfx::B2DPolyPolygon aClippedPolyPolygon;
-
- if(aOriginalPolyPolygon.count())
- {
- aClippedPolyPolygon = basegfx::tools::clipPolyPolygonOnRange(
- aOriginalPolyPolygon,
- aClipRange,
- true,
- false);
- }
-
- if(aClippedPolyPolygon != aOriginalPolyPolygon)
- {
- // start new clipping with intersected region
- HandleNewClipRegion(
- aClippedPolyPolygon,
- rTargetHolders,
- rPropertyHolders);
- }
- }
- }
- else
- {
- // start new clipping with ClipRange
- const basegfx::B2DPolyPolygon aNewClipPolyPolygon(
- basegfx::tools::createPolygonFromRect(aClipRange));
-
- HandleNewClipRegion(aNewClipPolyPolygon, rTargetHolders, rPropertyHolders);
- }
- }
-
- break;
- }
- case META_ISECTREGIONCLIPREGION_ACTION :
- {
- /** CHECKED, WORKS WELL */
- const MetaISectRegionClipRegionAction* pA = (const MetaISectRegionClipRegionAction*)pAction;
- const Region& rNewRegion = pA->GetRegion();
-
- if(rNewRegion.IsEmpty())
- {
- // intersect with empty region will always give empty
- // region; start new clipping with empty PolyPolygon
- const basegfx::B2DPolyPolygon aEmptyPolyPolygon;
-
- HandleNewClipRegion(aEmptyPolyPolygon, rTargetHolders, rPropertyHolders);
- }
- else
- {
- // get new ClipPolyPolygon, transform it with current transformation
- basegfx::B2DPolyPolygon aNewClipPolyPolygon(getB2DPolyPolygonFromRegion(rNewRegion));
- aNewClipPolyPolygon.transform(rPropertyHolders.Current().getTransformation());
-
- if(rPropertyHolders.Current().getClipPolyPolygonActive())
- {
- if(0 == rPropertyHolders.Current().getClipPolyPolygon().count())
- {
- // nothing to do, empty active clipPolyPolygon will stay empty
- // when intersecting with any region
- }
- else
- {
- // AND existing and new region
- const basegfx::B2DPolyPolygon aOriginalPolyPolygon(
- rPropertyHolders.Current().getClipPolyPolygon());
- basegfx::B2DPolyPolygon aClippedPolyPolygon;
-
- if(aOriginalPolyPolygon.count())
- {
- aClippedPolyPolygon = basegfx::tools::clipPolyPolygonOnPolyPolygon(
- aOriginalPolyPolygon, aNewClipPolyPolygon, true, false);
- }
-
- if(aClippedPolyPolygon != aOriginalPolyPolygon)
- {
- // start new clipping with intersected ClipPolyPolygon
- HandleNewClipRegion(aClippedPolyPolygon, rTargetHolders, rPropertyHolders);
- }
- }
- }
- else
- {
- // start new clipping with new ClipPolyPolygon
- HandleNewClipRegion(aNewClipPolyPolygon, rTargetHolders, rPropertyHolders);
- }
- }
-
- break;
- }
- case META_MOVECLIPREGION_ACTION :
- {
- /** CHECKED, WORKS WELL */
- const MetaMoveClipRegionAction* pA = (const MetaMoveClipRegionAction*)pAction;
-
- if(rPropertyHolders.Current().getClipPolyPolygonActive())
- {
- if(0 == rPropertyHolders.Current().getClipPolyPolygon().count())
- {
- // nothing to do
- }
- else
- {
- const sal_Int32 nHor(pA->GetHorzMove());
- const sal_Int32 nVer(pA->GetVertMove());
-
- if(0 != nHor || 0 != nVer)
- {
- // prepare translation, add current transformation
- basegfx::B2DVector aVector(pA->GetHorzMove(), pA->GetVertMove());
- aVector *= rPropertyHolders.Current().getTransformation();
- basegfx::B2DHomMatrix aTransform(
- basegfx::tools::createTranslateB2DHomMatrix(aVector));
-
- // transform existing region
- basegfx::B2DPolyPolygon aClipPolyPolygon(
- rPropertyHolders.Current().getClipPolyPolygon());
-
- aClipPolyPolygon.transform(aTransform);
- HandleNewClipRegion(aClipPolyPolygon, rTargetHolders, rPropertyHolders);
- }
- }
- }
-
- break;
- }
- case META_LINECOLOR_ACTION :
- {
- /** CHECKED, WORKS WELL */
- const MetaLineColorAction* pA = (const MetaLineColorAction*)pAction;
- const bool bActive(pA->IsSetting());
-
- rPropertyHolders.Current().setLineColorActive(bActive);
- if(bActive)
- rPropertyHolders.Current().setLineColor(pA->GetColor().getBColor());
-
- break;
- }
- case META_FILLCOLOR_ACTION :
- {
- /** CHECKED, WORKS WELL */
- const MetaFillColorAction* pA = (const MetaFillColorAction*)pAction;
- const bool bActive(pA->IsSetting());
-
- rPropertyHolders.Current().setFillColorActive(bActive);
- if(bActive)
- rPropertyHolders.Current().setFillColor(pA->GetColor().getBColor());
-
- break;
- }
- case META_TEXTCOLOR_ACTION :
- {
- /** SIMPLE, DONE */
- const MetaTextColorAction* pA = (const MetaTextColorAction*)pAction;
- const bool bActivate(COL_TRANSPARENT != pA->GetColor().GetColor());
-
- rPropertyHolders.Current().setTextColorActive(bActivate);
- rPropertyHolders.Current().setTextColor(pA->GetColor().getBColor());
-
- break;
- }
- case META_TEXTFILLCOLOR_ACTION :
- {
- /** SIMPLE, DONE */
- const MetaTextFillColorAction* pA = (const MetaTextFillColorAction*)pAction;
- const bool bWithColorArgument(pA->IsSetting());
-
- if(bWithColorArgument)
- {
- // emulate OutputDevice::SetTextFillColor(...) WITH argument
- const Color& rFontFillColor = pA->GetColor();
- rPropertyHolders.Current().setTextFillColor(rFontFillColor.getBColor());
- rPropertyHolders.Current().setTextFillColorActive(COL_TRANSPARENT != rFontFillColor.GetColor());
- }
- else
- {
- // emulate SetFillColor() <- NO argument (!)
- rPropertyHolders.Current().setTextFillColorActive(false);
- }
-
- break;
- }
- case META_TEXTALIGN_ACTION :
- {
- /** SIMPLE, DONE */
- const MetaTextAlignAction* pA = (const MetaTextAlignAction*)pAction;
- const TextAlign aNewTextAlign = pA->GetTextAlign();
-
- // TextAlign is applied to the current font (as in
- // OutputDevice::SetTextAlign which would be used when
- // playing the Metafile)
- if(rPropertyHolders.Current().getFont().GetAlign() != aNewTextAlign)
- {
- Font aNewFont(rPropertyHolders.Current().getFont());
- aNewFont.SetAlign(aNewTextAlign);
- rPropertyHolders.Current().setFont(aNewFont);
- }
-
- break;
- }
- case META_MAPMODE_ACTION :
- {
- /** CHECKED, WORKS WELL */
- // the most necessary MapMode to be interpreted is MAP_RELATIVE,
- // but also the others may occur. Even not yet supported ones
- // may need to be added here later
- const MetaMapModeAction* pA = (const MetaMapModeAction*)pAction;
- const MapMode& rMapMode = pA->GetMapMode();
- basegfx::B2DHomMatrix aMapping;
-
- if(MAP_RELATIVE == rMapMode.GetMapUnit())
- {
- aMapping = getTransformFromMapMode(rMapMode);
- }
- else
- {
- switch(rMapMode.GetMapUnit())
- {
- case MAP_100TH_MM :
- {
- if(MAP_TWIP == rPropertyHolders.Current().getMapUnit())
- {
- // MAP_TWIP -> MAP_100TH_MM
- const double fTwipTo100thMm(127.0 / 72.0);
- aMapping.scale(fTwipTo100thMm, fTwipTo100thMm);
- }
- break;
- }
- case MAP_TWIP :
- {
- if(MAP_100TH_MM == rPropertyHolders.Current().getMapUnit())
- {
- // MAP_100TH_MM -> MAP_TWIP
- const double f100thMmToTwip(72.0 / 127.0);
- aMapping.scale(f100thMmToTwip, f100thMmToTwip);
- }
- break;
- }
- default :
- {
- OSL_FAIL("interpretMetafile: META_MAPMODE_ACTION with unsupported MapUnit (!)");
- break;
- }
- }
-
- aMapping = getTransformFromMapMode(rMapMode) * aMapping;
- rPropertyHolders.Current().setMapUnit(rMapMode.GetMapUnit());
- }
-
- if(!aMapping.isIdentity())
- {
- aMapping = aMapping * rPropertyHolders.Current().getTransformation();
- rPropertyHolders.Current().setTransformation(aMapping);
- }
-
- break;
- }
- case META_FONT_ACTION :
- {
- /** SIMPLE, DONE */
- const MetaFontAction* pA = (const MetaFontAction*)pAction;
- rPropertyHolders.Current().setFont(pA->GetFont());
- Size aFontSize(pA->GetFont().GetSize());
-
- if(0 == aFontSize.Height())
- {
- // this should not happen but i got Metafiles where this was the
- // case. A height needs to be guessed (similar to OutputDevice::ImplNewFont())
- Font aCorrectedFont(pA->GetFont());
-
- // guess 16 pixel (as in VCL)
- aFontSize = Size(0, 16);
-
- // convert to target MapUnit if not pixels
- aFontSize = Application::GetDefaultDevice()->LogicToLogic(
- aFontSize, MAP_PIXEL, rPropertyHolders.Current().getMapUnit());
-
- aCorrectedFont.SetSize(aFontSize);
- rPropertyHolders.Current().setFont(aCorrectedFont);
- }
-
- // older Metafiles have no META_TEXTCOLOR_ACTION which defines
- // the FontColor now, so use the Font's color when not transparent
- const Color& rFontColor = pA->GetFont().GetColor();
- const bool bActivate(COL_TRANSPARENT != rFontColor.GetColor());
-
- if(bActivate)
- {
- rPropertyHolders.Current().setTextColor(rFontColor.getBColor());
- }
-
- // caution: do NOT decativate here on transparet, see
- // OutputDevice::SetFont(..) for more info
- // rPropertyHolders.Current().setTextColorActive(bActivate);
-
- // for fill color emulate a MetaTextFillColorAction with !transparent as bool,
- // see OutputDevice::SetFont(..) the if(mpMetaFile) case
- if(bActivate)
- {
- const Color& rFontFillColor = pA->GetFont().GetFillColor();
- rPropertyHolders.Current().setTextFillColor(rFontFillColor.getBColor());
- rPropertyHolders.Current().setTextFillColorActive(COL_TRANSPARENT != rFontFillColor.GetColor());
- }
- else
- {
- rPropertyHolders.Current().setTextFillColorActive(false);
- }
-
- break;
- }
- case META_PUSH_ACTION :
- {
- /** CHECKED, WORKS WELL */
- const MetaPushAction* pA = (const MetaPushAction*)pAction;
- rPropertyHolders.Push(pA->GetFlags());
-
- break;
- }
- case META_POP_ACTION :
- {
- /** CHECKED, WORKS WELL */
- const bool bRegionMayChange(rPropertyHolders.Current().getPushFlags() & PUSH_CLIPREGION);
- const bool bRasterOpMayChange(rPropertyHolders.Current().getPushFlags() & PUSH_RASTEROP);
-
- if(bRegionMayChange && rPropertyHolders.Current().getClipPolyPolygonActive())
- {
- // end evtl. clipping
- const basegfx::B2DPolyPolygon aEmptyPolyPolygon;
-
- HandleNewClipRegion(aEmptyPolyPolygon, rTargetHolders, rPropertyHolders);
- }
-
- if(bRasterOpMayChange && rPropertyHolders.Current().isRasterOpActive())
- {
- // end evtl. RasterOp
- HandleNewRasterOp(ROP_OVERPAINT, rTargetHolders, rPropertyHolders);
- }
-
- rPropertyHolders.Pop();
-
- if(bRasterOpMayChange && rPropertyHolders.Current().isRasterOpActive())
- {
- // start evtl. RasterOp
- HandleNewRasterOp(rPropertyHolders.Current().getRasterOp(), rTargetHolders, rPropertyHolders);
- }
-
- if(bRegionMayChange && rPropertyHolders.Current().getClipPolyPolygonActive())
- {
- // start evtl. clipping
- HandleNewClipRegion(
- rPropertyHolders.Current().getClipPolyPolygon(), rTargetHolders, rPropertyHolders);
- }
-
- break;
- }
- case META_RASTEROP_ACTION :
- {
- /** CHECKED, WORKS WELL */
- const MetaRasterOpAction* pA = (const MetaRasterOpAction*)pAction;
- const RasterOp aRasterOp = pA->GetRasterOp();
-
- HandleNewRasterOp(aRasterOp, rTargetHolders, rPropertyHolders);
-
- break;
- }
- case META_TRANSPARENT_ACTION :
- {
- /** CHECKED, WORKS WELL */
- const MetaTransparentAction* pA = (const MetaTransparentAction*)pAction;
- const basegfx::B2DPolyPolygon aOutline(pA->GetPolyPolygon().getB2DPolyPolygon());
-
- if(aOutline.count())
- {
- const sal_uInt16 nTransparence(pA->GetTransparence());
-
- if(0 == nTransparence)
- {
- // not transparent
- createHairlineAndFillPrimitive(aOutline, rTargetHolders.Current(), rPropertyHolders.Current());
- }
- else if(nTransparence >= 100)
- {
- // fully or more than transparent
- }
- else
- {
- // transparent. Create new target
- rTargetHolders.Push();
-
- // create primitives there and get them
- createHairlineAndFillPrimitive(aOutline, rTargetHolders.Current(), rPropertyHolders.Current());
- const drawinglayer::primitive2d::Primitive2DSequence aSubContent(
- rTargetHolders.Current().getPrimitive2DSequence(rPropertyHolders.Current()));
-
- // back to old target
- rTargetHolders.Pop();
-
- if(aSubContent.hasElements())
- {
- rTargetHolders.Current().append(
- new drawinglayer::primitive2d::UnifiedTransparencePrimitive2D(
- aSubContent,
- nTransparence * 0.01));
- }
- }
- }
-
- break;
- }
- case META_EPS_ACTION :
- {
- /** CHECKED, WORKS WELL */
- // To support this action, i have added a EpsPrimitive2D which will
- // by default decompose to the Metafile replacement data. To support
- // this EPS on screen, the renderer visualizing this has to support
- // that primitive and visualize the Eps file (e.g. printing)
- const MetaEPSAction* pA = (const MetaEPSAction*)pAction;
- const Rectangle aRectangle(pA->GetPoint(), pA->GetSize());
-
- if(!aRectangle.IsEmpty())
- {
- // create object transform
- basegfx::B2DHomMatrix aObjectTransform;
-
- aObjectTransform.set(0, 0, aRectangle.GetWidth());
- aObjectTransform.set(1, 1, aRectangle.GetHeight());
- aObjectTransform.set(0, 2, aRectangle.Left());
- aObjectTransform.set(1, 2, aRectangle.Top());
-
- // add current transformation
- aObjectTransform = rPropertyHolders.Current().getTransformation() * aObjectTransform;
-
- // embed using EpsPrimitive
- rTargetHolders.Current().append(
- new drawinglayer::primitive2d::EpsPrimitive2D(
- aObjectTransform,
- pA->GetLink(),
- pA->GetSubstitute()));
- }
-
- break;
- }
- case META_REFPOINT_ACTION :
- {
- /** SIMPLE, DONE */
- // only used for hatch and line pattern offsets, pretty much no longer
- // supported today
- // const MetaRefPointAction* pA = (const MetaRefPointAction*)pAction;
- break;
- }
- case META_TEXTLINECOLOR_ACTION :
- {
- /** SIMPLE, DONE */
- const MetaTextLineColorAction* pA = (const MetaTextLineColorAction*)pAction;
- const bool bActive(pA->IsSetting());
-
- rPropertyHolders.Current().setTextLineColorActive(bActive);
- if(bActive)
- rPropertyHolders.Current().setTextLineColor(pA->GetColor().getBColor());
-
- break;
- }
- case META_TEXTLINE_ACTION :
- {
- /** CHECKED, WORKS WELL */
- // actually creates overline, underline and strikeouts, so
- // these should be isolated from TextDecoratedPortionPrimitive2D
- // to own primitives. Done, available now.
- //
- // This Metaaction seems not to be used (was not used in any
- // checked files). It's used in combination with the current
- // Font.
- const MetaTextLineAction* pA = (const MetaTextLineAction*)pAction;
-
- proccessMetaTextLineAction(
- *pA,
- rTargetHolders.Current(),
- rPropertyHolders.Current());
-
- break;
- }
- case META_FLOATTRANSPARENT_ACTION :
- {
- /** CHECKED, WORKS WELL */
- const MetaFloatTransparentAction* pA = (const MetaFloatTransparentAction*)pAction;
- const Rectangle aTargetRectangle(pA->GetPoint(), pA->GetSize());
-
- if(!aTargetRectangle.IsEmpty())
- {
- const GDIMetaFile& rContent = pA->GetGDIMetaFile();
-
- if(rContent.GetActionSize())
- {
- // create the sub-content with no embedding specific to the
- // sub-metafile, this seems not to be used.
- drawinglayer::primitive2d::Primitive2DSequence xSubContent;
- {
- rTargetHolders.Push();
- // #i# for sub-Mteafile contents, do start with new, default render state
- rPropertyHolders.PushDefault();
- interpretMetafile(rContent, rTargetHolders, rPropertyHolders, rViewInformation);
- xSubContent = rTargetHolders.Current().getPrimitive2DSequence(rPropertyHolders.Current());
- rPropertyHolders.Pop();
- rTargetHolders.Pop();
- }
-
- if(xSubContent.hasElements())
- {
- // check if gradient is a real gradient
- const Gradient& rGradient = pA->GetGradient();
- const drawinglayer::attribute::FillGradientAttribute aAttribute(createFillGradientAttribute(rGradient));
-
- if(aAttribute.getStartColor() == aAttribute.getEndColor())
- {
- // not really a gradient; create UnifiedTransparencePrimitive2D
- rTargetHolders.Current().append(
- new drawinglayer::primitive2d::UnifiedTransparencePrimitive2D(
- xSubContent,
- aAttribute.getStartColor().luminance()));
- }
- else
- {
- // really a gradient. Create gradient sub-content (with correct scaling)
- basegfx::B2DRange aRange(
- aTargetRectangle.Left(), aTargetRectangle.Top(),
- aTargetRectangle.Right(), aTargetRectangle.Bottom());
- aRange.transform(rPropertyHolders.Current().getTransformation());
-
- // prepare gradient for transparent content
- const drawinglayer::primitive2d::Primitive2DReference xTransparence(
- new drawinglayer::primitive2d::FillGradientPrimitive2D(
- aRange,
- aAttribute));
-
- // create transparence primitive
- rTargetHolders.Current().append(
- new drawinglayer::primitive2d::TransparencePrimitive2D(
- xSubContent,
- drawinglayer::primitive2d::Primitive2DSequence(&xTransparence, 1)));
- }
- }
- }
- }
-
- break;
- }
- case META_GRADIENTEX_ACTION :
- {
- /** SIMPLE, DONE */
- // This is only a data holder which is interpreted inside comment actions,
- // see META_COMMENT_ACTION for more info
- // const MetaGradientExAction* pA = (const MetaGradientExAction*)pAction;
- break;
- }
- case META_LAYOUTMODE_ACTION :
- {
- /** SIMPLE, DONE */
- const MetaLayoutModeAction* pA = (const MetaLayoutModeAction*)pAction;
- rPropertyHolders.Current().setLayoutMode(pA->GetLayoutMode());
- break;
- }
- case META_TEXTLANGUAGE_ACTION :
- {
- /** SIMPLE, DONE */
- const MetaTextLanguageAction* pA = (const MetaTextLanguageAction*)pAction;
- rPropertyHolders.Current().setLanguageType(pA->GetTextLanguage());
- break;
- }
- case META_OVERLINECOLOR_ACTION :
- {
- /** SIMPLE, DONE */
- const MetaOverlineColorAction* pA = (const MetaOverlineColorAction*)pAction;
- const bool bActive(pA->IsSetting());
-
- rPropertyHolders.Current().setOverlineColorActive(bActive);
- if(bActive)
- rPropertyHolders.Current().setOverlineColor(pA->GetColor().getBColor());
-
- break;
- }
- case META_RENDERGRAPHIC_ACTION :
- {
- const MetaRenderGraphicAction* pA = (const MetaRenderGraphicAction*)pAction;
- const Rectangle aRectangle(pA->GetPoint(), pA->GetSize());
-
- if(!aRectangle.IsEmpty())
- {
- // create object transform
- basegfx::B2DHomMatrix aObjectTransform;
-
- aObjectTransform.set(0, 0, aRectangle.GetWidth());
- aObjectTransform.set(1, 1, aRectangle.GetHeight());
- aObjectTransform.set(0, 2, aRectangle.Left());
- aObjectTransform.set(1, 2, aRectangle.Top());
-
- // add current transformation
- aObjectTransform = rPropertyHolders.Current().getTransformation() * aObjectTransform;
-
- // embed using EpsPrimitive
- rTargetHolders.Current().append(
- new drawinglayer::primitive2d::RenderGraphicPrimitive2D(
- pA->GetRenderGraphic(),
- aObjectTransform ) );
- }
-
- break;
- }
- case META_COMMENT_ACTION :
- {
- /** CHECKED, WORKS WELL */
- // I already implemented
- // XPATHFILL_SEQ_BEGIN, XPATHFILL_SEQ_END
- // XPATHSTROKE_SEQ_BEGIN, XPATHSTROKE_SEQ_END,
- // but opted to remove these again; it works well without them
- // and makes the code less dependent from those Metafile Add-Ons
- const MetaCommentAction* pA = (const MetaCommentAction*)pAction;
-
- if(COMPARE_EQUAL == pA->GetComment().CompareIgnoreCaseToAscii("XGRAD_SEQ_BEGIN"))
- {
- // XGRAD_SEQ_BEGIN, XGRAD_SEQ_END should be supported since the
- // pure recorded paint of the gradients uses the XOR paint functionality
- // ('trick'). This is (and will be) broblematic with AntAliasing, so it's
- // better to use this info
- const MetaGradientExAction* pMetaGradientExAction = 0;
- bool bDone(false);
- sal_uInt32 b(nAction + 1);
-
- for(; !bDone && b < nCount; b++)
- {
- pAction = rMetaFile.GetAction(b);
-
- if(META_GRADIENTEX_ACTION == pAction->GetType())
- {
- pMetaGradientExAction = (const MetaGradientExAction*)pAction;
- }
- else if(META_COMMENT_ACTION == pAction->GetType())
- {
- if(COMPARE_EQUAL == ((const MetaCommentAction*)pAction)->GetComment().CompareIgnoreCaseToAscii("XGRAD_SEQ_END"))
- {
- bDone = true;
- }
- }
- }
-
- if(bDone && pMetaGradientExAction)
- {
- // consume actions and skip forward
- nAction = b - 1;
-
- // get geometry data
- basegfx::B2DPolyPolygon aPolyPolygon(pMetaGradientExAction->GetPolyPolygon().getB2DPolyPolygon());
-
- if(aPolyPolygon.count())
- {
- // transform geometry
- aPolyPolygon.transform(rPropertyHolders.Current().getTransformation());
-
- // get and check if gradient is a real gradient
- const Gradient& rGradient = pMetaGradientExAction->GetGradient();
- const drawinglayer::attribute::FillGradientAttribute aAttribute(createFillGradientAttribute(rGradient));
-
- if(aAttribute.getStartColor() == aAttribute.getEndColor())
- {
- // not really a gradient
- rTargetHolders.Current().append(
- new drawinglayer::primitive2d::PolyPolygonColorPrimitive2D(
- aPolyPolygon,
- aAttribute.getStartColor()));
- }
- else
- {
- // really a gradient
- rTargetHolders.Current().append(
- new drawinglayer::primitive2d::PolyPolygonGradientPrimitive2D(
- aPolyPolygon,
- aAttribute));
- }
- }
- }
- }
-
- break;
- }
- default:
- {
- OSL_FAIL("Unknown MetaFile Action (!)");
- break;
- }
- }
- }
- }
-} // end of anonymous namespace
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- Primitive2DSequence MetafilePrimitive2D::create2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const
- {
- // prepare target and porperties; each will have one default entry
- TargetHolders aTargetHolders;
- PropertyHolders aPropertyHolders;
-
- // set target MapUnit at Properties
- aPropertyHolders.Current().setMapUnit(getMetaFile().GetPrefMapMode().GetMapUnit());
-
- // interpret the Metafile
- interpretMetafile(getMetaFile(), aTargetHolders, aPropertyHolders, rViewInformation);
-
- // get the content. There should be ony one target, as in the start condition,
- // but iterating will be the right thing to do when some push/pop is not closed
- Primitive2DSequence xRetval;
-
- while(aTargetHolders.size() > 1)
- {
- appendPrimitive2DSequenceToPrimitive2DSequence(xRetval,
- aTargetHolders.Current().getPrimitive2DSequence(aPropertyHolders.Current()));
- aTargetHolders.Pop();
- }
-
- appendPrimitive2DSequenceToPrimitive2DSequence(xRetval,
- aTargetHolders.Current().getPrimitive2DSequence(aPropertyHolders.Current()));
-
- if(xRetval.hasElements())
- {
- // get target size
- const Rectangle aMtfTarget(getMetaFile().GetPrefMapMode().GetOrigin(), getMetaFile().GetPrefSize());
-
- // create transformation
- basegfx::B2DHomMatrix aAdaptedTransform;
-
- aAdaptedTransform.translate(-aMtfTarget.Left(), -aMtfTarget.Top());
- aAdaptedTransform.scale(
- aMtfTarget.getWidth() ? 1.0 / aMtfTarget.getWidth() : 1.0,
- aMtfTarget.getHeight() ? 1.0 / aMtfTarget.getHeight() : 1.0);
- aAdaptedTransform = getTransform() * aAdaptedTransform;
-
- // embed to target transformation
- const Primitive2DReference aEmbeddedTransform(
- new TransformPrimitive2D(
- aAdaptedTransform,
- xRetval));
-
- xRetval = Primitive2DSequence(&aEmbeddedTransform, 1);
- }
-
- return xRetval;
- }
-
- MetafilePrimitive2D::MetafilePrimitive2D(
- const basegfx::B2DHomMatrix& rMetaFileTransform,
- const GDIMetaFile& rMetaFile)
- : BufferedDecompositionPrimitive2D(),
- maMetaFileTransform(rMetaFileTransform),
- maMetaFile(rMetaFile)
- {
- }
-
- bool MetafilePrimitive2D::operator==(const BasePrimitive2D& rPrimitive) const
- {
- if(BufferedDecompositionPrimitive2D::operator==(rPrimitive))
- {
- const MetafilePrimitive2D& rCompare = (MetafilePrimitive2D&)rPrimitive;
-
- return (getTransform() == rCompare.getTransform()
- && getMetaFile() == rCompare.getMetaFile());
- }
-
- return false;
- }
-
- basegfx::B2DRange MetafilePrimitive2D::getB2DRange(const geometry::ViewInformation2D& /*rViewInformation*/) const
- {
- // use own implementation to quickly answer the getB2DRange question. The
- // MetafilePrimitive2D assumes that all geometry is inside of the shape. If
- // this is not the case (i have already seen some wrong Metafiles) it should
- // be embedded to a MaskPrimitive2D
- basegfx::B2DRange aRetval(0.0, 0.0, 1.0, 1.0);
- aRetval.transform(getTransform());
-
- return aRetval;
- }
-
- // provide unique ID
- ImplPrimitrive2DIDBlock(MetafilePrimitive2D, PRIMITIVE2D_ID_METAFILEPRIMITIVE2D)
-
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/primitive2d/modifiedcolorprimitive2d.cxx b/drawinglayer/source/primitive2d/modifiedcolorprimitive2d.cxx
deleted file mode 100644
index d43403be14..0000000000
--- a/drawinglayer/source/primitive2d/modifiedcolorprimitive2d.cxx
+++ /dev/null
@@ -1,74 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/primitive2d/modifiedcolorprimitive2d.hxx>
-#include <drawinglayer/primitive2d/drawinglayer_primitivetypes2d.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-using namespace com::sun::star;
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- ModifiedColorPrimitive2D::ModifiedColorPrimitive2D(
- const Primitive2DSequence& rChildren,
- const basegfx::BColorModifier& rColorModifier)
- : GroupPrimitive2D(rChildren),
- maColorModifier(rColorModifier)
- {
- }
-
- bool ModifiedColorPrimitive2D::operator==(const BasePrimitive2D& rPrimitive) const
- {
- if(GroupPrimitive2D::operator==(rPrimitive))
- {
- const ModifiedColorPrimitive2D& rCompare = (ModifiedColorPrimitive2D&)rPrimitive;
-
- return (getColorModifier() == rCompare.getColorModifier());
- }
-
- return false;
- }
-
- // provide unique ID
- ImplPrimitrive2DIDBlock(ModifiedColorPrimitive2D, PRIMITIVE2D_ID_MODIFIEDCOLORPRIMITIVE2D)
-
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/primitive2d/pagepreviewprimitive2d.cxx b/drawinglayer/source/primitive2d/pagepreviewprimitive2d.cxx
deleted file mode 100644
index e28f5debcb..0000000000
--- a/drawinglayer/source/primitive2d/pagepreviewprimitive2d.cxx
+++ /dev/null
@@ -1,186 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/primitive2d/pagepreviewprimitive2d.hxx>
-#include <drawinglayer/primitive2d/drawinglayer_primitivetypes2d.hxx>
-#include <drawinglayer/primitive2d/maskprimitive2d.hxx>
-#include <basegfx/polygon/b2dpolygontools.hxx>
-#include <basegfx/polygon/b2dpolygon.hxx>
-#include <drawinglayer/primitive2d/transformprimitive2d.hxx>
-#include <basegfx/matrix/b2dhommatrixtools.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-using namespace com::sun::star;
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- Primitive2DSequence PagePreviewPrimitive2D::create2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const
- {
- Primitive2DSequence xRetval;
- Primitive2DSequence aContent(getPageContent());
-
- if(aContent.hasElements()
- && basegfx::fTools::more(getContentWidth(), 0.0)
- && basegfx::fTools::more(getContentHeight(), 0.0))
- {
- // the decomposed matrix will be needed
- basegfx::B2DVector aScale, aTranslate;
- double fRotate, fShearX;
- getTransform().decompose(aScale, aTranslate, fRotate, fShearX);
-
- if(basegfx::fTools::more(aScale.getX(), 0.0) && basegfx::fTools::more(aScale.getY(), 0.0))
- {
- // check if content overlaps with tageted size and needs to be embedded with a
- // clipping primitive
- const basegfx::B2DRange aRealContentRange(getB2DRangeFromPrimitive2DSequence(aContent, rViewInformation));
- const basegfx::B2DRange aAllowedContentRange(0.0, 0.0, getContentWidth(), getContentHeight());
-
- if(!aAllowedContentRange.isInside(aRealContentRange))
- {
- const Primitive2DReference xReferenceA(
- new MaskPrimitive2D(
- basegfx::B2DPolyPolygon(
- basegfx::tools::createPolygonFromRect(aAllowedContentRange)), aContent));
- aContent = Primitive2DSequence(&xReferenceA, 1);
- }
-
- // create a mapping from content to object.
- basegfx::B2DHomMatrix aPageTrans;
-
- if(getKeepAspectRatio())
- {
- // #i101075# when keeping the aspect ratio is wanted, it is necessary to calculate
- // an equidistant scaling in X and Y and a corresponding translation to
- // center the output. Calculate needed scale factors
- const double fScaleX(aScale.getX() / getContentWidth());
- const double fScaleY(aScale.getY() / getContentHeight());
-
- // to keep the aspect, use the smaller scale and adapt missing size by translation
- if(fScaleX < fScaleY)
- {
- // height needs to be adapted
- const double fNeededHeight(aScale.getY() / fScaleX);
- const double fSpaceToAdd(fNeededHeight - getContentHeight());
-
- aPageTrans.translate(0.0, fSpaceToAdd * 0.5);
- aPageTrans.scale(fScaleX, aScale.getY() / fNeededHeight);
- }
- else
- {
- // width needs to be adapted
- const double fNeededWidth(aScale.getX() / fScaleY);
- const double fSpaceToAdd(fNeededWidth - getContentWidth());
-
- aPageTrans.translate(fSpaceToAdd * 0.5, 0.0);
- aPageTrans.scale(aScale.getX() / fNeededWidth, fScaleY);
- }
-
- // add the missing object transformation aspects
- const basegfx::B2DHomMatrix aCombined(basegfx::tools::createShearXRotateTranslateB2DHomMatrix(
- fShearX, fRotate, aTranslate.getX(), aTranslate.getY()));
- aPageTrans = aCombined * aPageTrans;
- }
- else
- {
- // completely scale to PageObject size. Scale to unit size.
- aPageTrans.scale(1.0/ getContentWidth(), 1.0 / getContentHeight());
-
- // apply object matrix
- aPageTrans *= getTransform();
- }
-
- // embed in necessary transformation to map from SdrPage to SdrPageObject
- const Primitive2DReference xReferenceB(new TransformPrimitive2D(aPageTrans, aContent));
- xRetval = Primitive2DSequence(&xReferenceB, 1);
- }
- }
-
- return xRetval;
- }
-
- PagePreviewPrimitive2D::PagePreviewPrimitive2D(
- const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XDrawPage >& rxDrawPage,
- const basegfx::B2DHomMatrix& rTransform,
- double fContentWidth,
- double fContentHeight,
- const Primitive2DSequence& rPageContent,
- bool bKeepAspectRatio)
- : BufferedDecompositionPrimitive2D(),
- mxDrawPage(rxDrawPage),
- maPageContent(rPageContent),
- maTransform(rTransform),
- mfContentWidth(fContentWidth),
- mfContentHeight(fContentHeight),
- mbKeepAspectRatio(bKeepAspectRatio)
- {
- }
-
- bool PagePreviewPrimitive2D::operator==(const BasePrimitive2D& rPrimitive) const
- {
- if(BasePrimitive2D::operator==(rPrimitive))
- {
- const PagePreviewPrimitive2D& rCompare = static_cast< const PagePreviewPrimitive2D& >(rPrimitive);
-
- return (getXDrawPage() == rCompare.getXDrawPage()
- && getPageContent() == rCompare.getPageContent()
- && getTransform() == rCompare.getTransform()
- && getContentWidth() == rCompare.getContentWidth()
- && getContentHeight() == rCompare.getContentHeight()
- && getKeepAspectRatio() == rCompare.getKeepAspectRatio());
- }
-
- return false;
- }
-
- basegfx::B2DRange PagePreviewPrimitive2D::getB2DRange(const geometry::ViewInformation2D& /*rViewInformation`*/) const
- {
- // nothing is allowed to stick out of a PagePreviewPrimitive, thus we
- // can quickly deliver our range here
- basegfx::B2DRange aRetval(0.0, 0.0, 1.0, 1.0);
- aRetval.transform(getTransform());
- return aRetval;
- }
-
- // provide unique ID
- ImplPrimitrive2DIDBlock(PagePreviewPrimitive2D, PRIMITIVE2D_ID_PAGEPREVIEWPRIMITIVE2D)
-
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/primitive2d/pointarrayprimitive2d.cxx b/drawinglayer/source/primitive2d/pointarrayprimitive2d.cxx
deleted file mode 100644
index df508d4a63..0000000000
--- a/drawinglayer/source/primitive2d/pointarrayprimitive2d.cxx
+++ /dev/null
@@ -1,96 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/primitive2d/pointarrayprimitive2d.hxx>
-#include <drawinglayer/primitive2d/drawinglayer_primitivetypes2d.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-using namespace com::sun::star;
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- PointArrayPrimitive2D::PointArrayPrimitive2D(
- const std::vector< basegfx::B2DPoint >& rPositions,
- const basegfx::BColor& rRGBColor)
- : BasePrimitive2D(),
- maPositions(rPositions),
- maRGBColor(rRGBColor),
- maB2DRange()
- {
- }
-
- bool PointArrayPrimitive2D::operator==(const BasePrimitive2D& rPrimitive) const
- {
- if(BasePrimitive2D::operator==(rPrimitive))
- {
- const PointArrayPrimitive2D& rCompare = (PointArrayPrimitive2D&)rPrimitive;
-
- return (getPositions() == rCompare.getPositions()
- && getRGBColor() == rCompare.getRGBColor());
- }
-
- return false;
- }
-
- basegfx::B2DRange PointArrayPrimitive2D::getB2DRange(const geometry::ViewInformation2D& /*rViewInformation*/) const
- {
- if(maB2DRange.isEmpty())
- {
- basegfx::B2DRange aNewRange;
-
- // get the basic range from the position vector
- for(std::vector< basegfx::B2DPoint >::const_iterator aIter(getPositions().begin()); aIter != getPositions().end(); aIter++)
- {
- aNewRange.expand(*aIter);
- }
-
- // assign to buffered value
- const_cast< PointArrayPrimitive2D* >(this)->maB2DRange = aNewRange;
- }
-
- return maB2DRange;
- }
-
- // provide unique ID
- ImplPrimitrive2DIDBlock(PointArrayPrimitive2D, PRIMITIVE2D_ID_POINTARRAYPRIMITIVE2D)
-
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/primitive2d/polygonprimitive2d.cxx b/drawinglayer/source/primitive2d/polygonprimitive2d.cxx
deleted file mode 100644
index 79a280f00d..0000000000
--- a/drawinglayer/source/primitive2d/polygonprimitive2d.cxx
+++ /dev/null
@@ -1,642 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/primitive2d/polygonprimitive2d.hxx>
-#include <basegfx/tools/canvastools.hxx>
-#include <basegfx/polygon/b2dpolygontools.hxx>
-#include <basegfx/polygon/b2dpolypolygontools.hxx>
-#include <drawinglayer/primitive2d/polypolygonprimitive2d.hxx>
-#include <drawinglayer/primitive2d/drawinglayer_primitivetypes2d.hxx>
-#include <drawinglayer/geometry/viewinformation2d.hxx>
-#include <basegfx/polygon/b2dlinegeometry.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-using namespace com::sun::star;
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- PolygonHairlinePrimitive2D::PolygonHairlinePrimitive2D(
- const basegfx::B2DPolygon& rPolygon,
- const basegfx::BColor& rBColor)
- : BasePrimitive2D(),
- maPolygon(rPolygon),
- maBColor(rBColor)
- {
- }
-
- bool PolygonHairlinePrimitive2D::operator==(const BasePrimitive2D& rPrimitive) const
- {
- if(BasePrimitive2D::operator==(rPrimitive))
- {
- const PolygonHairlinePrimitive2D& rCompare = (PolygonHairlinePrimitive2D&)rPrimitive;
-
- return (getB2DPolygon() == rCompare.getB2DPolygon()
- && getBColor() == rCompare.getBColor());
- }
-
- return false;
- }
-
- basegfx::B2DRange PolygonHairlinePrimitive2D::getB2DRange(const geometry::ViewInformation2D& rViewInformation) const
- {
- // this is a hairline, thus the line width is view-dependent. Get range of polygon
- // as base size
- basegfx::B2DRange aRetval(getB2DPolygon().getB2DRange());
-
- if(!aRetval.isEmpty())
- {
- // Calculate view-dependent hairline width
- const basegfx::B2DVector aDiscreteSize(rViewInformation.getInverseObjectToViewTransformation() * basegfx::B2DVector(1.0, 0.0));
- const double fDiscreteHalfLineWidth(aDiscreteSize.getLength() * 0.5);
-
- if(basegfx::fTools::more(fDiscreteHalfLineWidth, 0.0))
- {
- aRetval.grow(fDiscreteHalfLineWidth);
- }
- }
-
- // return range
- return aRetval;
- }
-
- // provide unique ID
- ImplPrimitrive2DIDBlock(PolygonHairlinePrimitive2D, PRIMITIVE2D_ID_POLYGONHAIRLINEPRIMITIVE2D)
-
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- Primitive2DSequence PolygonMarkerPrimitive2D::create2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const
- {
- // calculate logic DashLength
- const basegfx::B2DVector aDashVector(rViewInformation.getInverseObjectToViewTransformation() * basegfx::B2DVector(getDiscreteDashLength(), 0.0));
- const double fLogicDashLength(aDashVector.getX());
-
- if(fLogicDashLength > 0.0 && !getRGBColorA().equal(getRGBColorB()))
- {
- // apply dashing; get line and gap snippets
- ::std::vector< double > aDash;
- basegfx::B2DPolyPolygon aDashedPolyPolyA;
- basegfx::B2DPolyPolygon aDashedPolyPolyB;
-
- aDash.push_back(fLogicDashLength);
- aDash.push_back(fLogicDashLength);
- basegfx::tools::applyLineDashing(getB2DPolygon(), aDash, &aDashedPolyPolyA, &aDashedPolyPolyB, 2.0 * fLogicDashLength);
-
- // prepare return value
- Primitive2DSequence aRetval(2);
-
- aRetval[0] = Primitive2DReference(new PolyPolygonHairlinePrimitive2D(aDashedPolyPolyA, getRGBColorA()));
- aRetval[1] = Primitive2DReference(new PolyPolygonHairlinePrimitive2D(aDashedPolyPolyB, getRGBColorB()));
-
- return aRetval;
- }
- else
- {
- const Primitive2DReference xRef(new PolygonHairlinePrimitive2D(getB2DPolygon(), getRGBColorA()));
- return Primitive2DSequence(&xRef, 1L);
- }
- }
-
- PolygonMarkerPrimitive2D::PolygonMarkerPrimitive2D(
- const basegfx::B2DPolygon& rPolygon,
- const basegfx::BColor& rRGBColorA,
- const basegfx::BColor& rRGBColorB,
- double fDiscreteDashLength)
- : BufferedDecompositionPrimitive2D(),
- maPolygon(rPolygon),
- maRGBColorA(rRGBColorA),
- maRGBColorB(rRGBColorB),
- mfDiscreteDashLength(fDiscreteDashLength),
- maLastInverseObjectToViewTransformation()
- {
- }
-
- bool PolygonMarkerPrimitive2D::operator==(const BasePrimitive2D& rPrimitive) const
- {
- if(BufferedDecompositionPrimitive2D::operator==(rPrimitive))
- {
- const PolygonMarkerPrimitive2D& rCompare = (PolygonMarkerPrimitive2D&)rPrimitive;
-
- return (getB2DPolygon() == rCompare.getB2DPolygon()
- && getRGBColorA() == rCompare.getRGBColorA()
- && getRGBColorB() == rCompare.getRGBColorB()
- && getDiscreteDashLength() == rCompare.getDiscreteDashLength());
- }
-
- return false;
- }
-
- basegfx::B2DRange PolygonMarkerPrimitive2D::getB2DRange(const geometry::ViewInformation2D& rViewInformation) const
- {
- // this is a hairline, thus the line width is view-dependent. Get range of polygon
- // as base size
- basegfx::B2DRange aRetval(getB2DPolygon().getB2DRange());
-
- if(!aRetval.isEmpty())
- {
- // Calculate view-dependent hairline width
- const basegfx::B2DVector aDiscreteSize(rViewInformation.getInverseObjectToViewTransformation() * basegfx::B2DVector(1.0, 0.0));
- const double fDiscreteHalfLineWidth(aDiscreteSize.getLength() * 0.5);
-
- if(basegfx::fTools::more(fDiscreteHalfLineWidth, 0.0))
- {
- aRetval.grow(fDiscreteHalfLineWidth);
- }
- }
-
- // return range
- return aRetval;
- }
-
- Primitive2DSequence PolygonMarkerPrimitive2D::get2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const
- {
- ::osl::MutexGuard aGuard( m_aMutex );
- bool bNeedNewDecomposition(false);
-
- if(getBuffered2DDecomposition().hasElements())
- {
- if(rViewInformation.getInverseObjectToViewTransformation() != maLastInverseObjectToViewTransformation)
- {
- bNeedNewDecomposition = true;
- }
- }
-
- if(bNeedNewDecomposition)
- {
- // conditions of last local decomposition have changed, delete
- const_cast< PolygonMarkerPrimitive2D* >(this)->setBuffered2DDecomposition(Primitive2DSequence());
- }
-
- if(!getBuffered2DDecomposition().hasElements())
- {
- // remember last used InverseObjectToViewTransformation
- PolygonMarkerPrimitive2D* pThat = const_cast< PolygonMarkerPrimitive2D* >(this);
- pThat->maLastInverseObjectToViewTransformation = rViewInformation.getInverseObjectToViewTransformation();
- }
-
- // use parent implementation
- return BufferedDecompositionPrimitive2D::get2DDecomposition(rViewInformation);
- }
-
- // provide unique ID
- ImplPrimitrive2DIDBlock(PolygonMarkerPrimitive2D, PRIMITIVE2D_ID_POLYGONMARKERPRIMITIVE2D)
-
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- Primitive2DSequence PolygonStrokePrimitive2D::create2DDecomposition(const geometry::ViewInformation2D& /*rViewInformation*/) const
- {
- if(getB2DPolygon().count())
- {
- // #i102241# try to simplify before usage
- const basegfx::B2DPolygon aB2DPolygon(basegfx::tools::simplifyCurveSegments(getB2DPolygon()));
- basegfx::B2DPolyPolygon aHairLinePolyPolygon;
-
- if(getStrokeAttribute().isDefault() || 0.0 == getStrokeAttribute().getFullDotDashLen())
- {
- // no line dashing, just copy
- aHairLinePolyPolygon.append(aB2DPolygon);
- }
- else
- {
- // apply LineStyle
- basegfx::tools::applyLineDashing(
- aB2DPolygon, getStrokeAttribute().getDotDashArray(),
- &aHairLinePolyPolygon, 0, getStrokeAttribute().getFullDotDashLen());
- }
-
- const sal_uInt32 nCount(aHairLinePolyPolygon.count());
-
- if(!getLineAttribute().isDefault() && getLineAttribute().getWidth())
- {
- // create fat line data
- const double fHalfLineWidth(getLineAttribute().getWidth() / 2.0);
- const basegfx::B2DLineJoin aLineJoin(getLineAttribute().getLineJoin());
- basegfx::B2DPolyPolygon aAreaPolyPolygon;
-
- for(sal_uInt32 a(0L); a < nCount; a++)
- {
- // New version of createAreaGeometry; now creates bezier polygons
- aAreaPolyPolygon.append(basegfx::tools::createAreaGeometry(
- aHairLinePolyPolygon.getB2DPolygon(a), fHalfLineWidth, aLineJoin));
- }
-
- // prepare return value
- Primitive2DSequence aRetval(aAreaPolyPolygon.count());
-
- // create primitive
- for(sal_uInt32 b(0L); b < aAreaPolyPolygon.count(); b++)
- {
- // put into single polyPolygon primitives to make clear that this is NOT meant
- // to be painted as a single PolyPolygon (XORed as fill rule). Alternatively, a
- // melting process may be used here one day.
- const basegfx::B2DPolyPolygon aNewPolyPolygon(aAreaPolyPolygon.getB2DPolygon(b));
- static bool bTestByUsingRandomColor(false);
- const basegfx::BColor aColor(bTestByUsingRandomColor
- ? basegfx::BColor(rand() / 32767.0, rand() / 32767.0, rand() / 32767.0)
- : getLineAttribute().getColor());
- const Primitive2DReference xRef(new PolyPolygonColorPrimitive2D(aNewPolyPolygon, aColor));
- aRetval[b] = xRef;
- }
-
- return aRetval;
- }
- else
- {
- // prepare return value
- const Primitive2DReference xRef(
- new PolyPolygonHairlinePrimitive2D(
- aHairLinePolyPolygon,
- getLineAttribute().getColor()));
-
- return Primitive2DSequence(&xRef, 1);
- }
- }
- else
- {
- return Primitive2DSequence();
- }
- }
-
- PolygonStrokePrimitive2D::PolygonStrokePrimitive2D(
- const basegfx::B2DPolygon& rPolygon,
- const attribute::LineAttribute& rLineAttribute,
- const attribute::StrokeAttribute& rStrokeAttribute)
- : BufferedDecompositionPrimitive2D(),
- maPolygon(rPolygon),
- maLineAttribute(rLineAttribute),
- maStrokeAttribute(rStrokeAttribute)
- {
- }
-
- PolygonStrokePrimitive2D::PolygonStrokePrimitive2D(
- const basegfx::B2DPolygon& rPolygon,
- const attribute::LineAttribute& rLineAttribute)
- : BufferedDecompositionPrimitive2D(),
- maPolygon(rPolygon),
- maLineAttribute(rLineAttribute),
- maStrokeAttribute()
- {
- }
-
- bool PolygonStrokePrimitive2D::operator==(const BasePrimitive2D& rPrimitive) const
- {
- if(BufferedDecompositionPrimitive2D::operator==(rPrimitive))
- {
- const PolygonStrokePrimitive2D& rCompare = (PolygonStrokePrimitive2D&)rPrimitive;
-
- return (getB2DPolygon() == rCompare.getB2DPolygon()
- && getLineAttribute() == rCompare.getLineAttribute()
- && getStrokeAttribute() == rCompare.getStrokeAttribute());
- }
-
- return false;
- }
-
- basegfx::B2DRange PolygonStrokePrimitive2D::getB2DRange(const geometry::ViewInformation2D& rViewInformation) const
- {
- basegfx::B2DRange aRetval;
-
- if(getLineAttribute().getWidth())
- {
- if(basegfx::B2DLINEJOIN_MITER == getLineAttribute().getLineJoin())
- {
- // if line is mitered, use parent call since mitered line
- // geometry may use more space than the geometry grown by half line width
- aRetval = BufferedDecompositionPrimitive2D::getB2DRange(rViewInformation);
- }
- else
- {
- // for all other B2DLINEJOIN_* get the range from the base geometry
- // and expand by half the line width
- aRetval = getB2DPolygon().getB2DRange();
- aRetval.grow(getLineAttribute().getWidth() * 0.5);
- }
- }
- else
- {
- // this is a hairline, thus the line width is view-dependent. Get range of polygon
- // as base size
- aRetval = getB2DPolygon().getB2DRange();
-
- if(!aRetval.isEmpty())
- {
- // Calculate view-dependent hairline width
- const basegfx::B2DVector aDiscreteSize(rViewInformation.getInverseObjectToViewTransformation() * basegfx::B2DVector(1.0, 0.0));
- const double fDiscreteHalfLineWidth(aDiscreteSize.getLength() * 0.5);
-
- if(basegfx::fTools::more(fDiscreteHalfLineWidth, 0.0))
- {
- aRetval.grow(fDiscreteHalfLineWidth);
- }
- }
- }
-
- return aRetval;
- }
-
- // provide unique ID
- ImplPrimitrive2DIDBlock(PolygonStrokePrimitive2D, PRIMITIVE2D_ID_POLYGONSTROKEPRIMITIVE2D)
-
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- Primitive2DSequence PolygonWavePrimitive2D::create2DDecomposition(const geometry::ViewInformation2D& /*rViewInformation*/) const
- {
- Primitive2DSequence aRetval;
-
- if(getB2DPolygon().count())
- {
- const bool bHasWidth(!basegfx::fTools::equalZero(getWaveWidth()));
- const bool bHasHeight(!basegfx::fTools::equalZero(getWaveHeight()));
-
- if(bHasWidth && bHasHeight)
- {
- // create waveline curve
- const basegfx::B2DPolygon aWaveline(basegfx::tools::createWaveline(getB2DPolygon(), getWaveWidth(), getWaveHeight()));
- const Primitive2DReference xRef(new PolygonStrokePrimitive2D(aWaveline, getLineAttribute(), getStrokeAttribute()));
- aRetval = Primitive2DSequence(&xRef, 1);
- }
- else
- {
- // flat waveline, decompose to simple line primitive
- const Primitive2DReference xRef(new PolygonStrokePrimitive2D(getB2DPolygon(), getLineAttribute(), getStrokeAttribute()));
- aRetval = Primitive2DSequence(&xRef, 1);
- }
- }
-
- return aRetval;
- }
-
- PolygonWavePrimitive2D::PolygonWavePrimitive2D(
- const basegfx::B2DPolygon& rPolygon,
- const attribute::LineAttribute& rLineAttribute,
- const attribute::StrokeAttribute& rStrokeAttribute,
- double fWaveWidth,
- double fWaveHeight)
- : PolygonStrokePrimitive2D(rPolygon, rLineAttribute, rStrokeAttribute),
- mfWaveWidth(fWaveWidth),
- mfWaveHeight(fWaveHeight)
- {
- if(mfWaveWidth < 0.0)
- {
- mfWaveWidth = 0.0;
- }
-
- if(mfWaveHeight < 0.0)
- {
- mfWaveHeight = 0.0;
- }
- }
-
- PolygonWavePrimitive2D::PolygonWavePrimitive2D(
- const basegfx::B2DPolygon& rPolygon,
- const attribute::LineAttribute& rLineAttribute,
- double fWaveWidth,
- double fWaveHeight)
- : PolygonStrokePrimitive2D(rPolygon, rLineAttribute),
- mfWaveWidth(fWaveWidth),
- mfWaveHeight(fWaveHeight)
- {
- if(mfWaveWidth < 0.0)
- {
- mfWaveWidth = 0.0;
- }
-
- if(mfWaveHeight < 0.0)
- {
- mfWaveHeight = 0.0;
- }
- }
-
- bool PolygonWavePrimitive2D::operator==(const BasePrimitive2D& rPrimitive) const
- {
- if(PolygonStrokePrimitive2D::operator==(rPrimitive))
- {
- const PolygonWavePrimitive2D& rCompare = (PolygonWavePrimitive2D&)rPrimitive;
-
- return (getWaveWidth() == rCompare.getWaveWidth()
- && getWaveHeight() == rCompare.getWaveHeight());
- }
-
- return false;
- }
-
- basegfx::B2DRange PolygonWavePrimitive2D::getB2DRange(const geometry::ViewInformation2D& rViewInformation) const
- {
- // get range of parent
- basegfx::B2DRange aRetval(PolygonStrokePrimitive2D::getB2DRange(rViewInformation));
-
- // if WaveHeight, grow by it
- if(basegfx::fTools::more(getWaveHeight(), 0.0))
- {
- aRetval.grow(getWaveHeight());
- }
-
- // if line width, grow by it
- if(basegfx::fTools::more(getLineAttribute().getWidth(), 0.0))
- {
- aRetval.grow(getLineAttribute().getWidth() * 0.5);
- }
-
- return aRetval;
- }
-
- // provide unique ID
- ImplPrimitrive2DIDBlock(PolygonWavePrimitive2D, PRIMITIVE2D_ID_POLYGONWAVEPRIMITIVE2D)
-
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- Primitive2DSequence PolygonStrokeArrowPrimitive2D::create2DDecomposition(const geometry::ViewInformation2D& /*rViewInformation*/) const
- {
- // copy local polygon, it may be changed
- basegfx::B2DPolygon aLocalPolygon(getB2DPolygon());
- aLocalPolygon.removeDoublePoints();
- basegfx::B2DPolyPolygon aArrowA;
- basegfx::B2DPolyPolygon aArrowB;
-
- if(!aLocalPolygon.isClosed() && aLocalPolygon.count() > 1)
- {
- // apply arrows
- const double fPolyLength(basegfx::tools::getLength(aLocalPolygon));
- double fStart(0.0);
- double fEnd(0.0);
-
- if(!getStart().isDefault() && getStart().isActive())
- {
- // create start arrow primitive and consume
- aArrowA = basegfx::tools::createAreaGeometryForLineStartEnd(
- aLocalPolygon, getStart().getB2DPolyPolygon(), true, getStart().getWidth(),
- fPolyLength, getStart().isCentered() ? 0.5 : 0.0, &fStart);
-
- // create some overlapping
- fStart *= 0.8;
- }
-
- if(!getEnd().isDefault() && getEnd().isActive())
- {
- // create end arrow primitive and consume
- aArrowB = basegfx::tools::createAreaGeometryForLineStartEnd(
- aLocalPolygon, getEnd().getB2DPolyPolygon(), false, getEnd().getWidth(),
- fPolyLength, getEnd().isCentered() ? 0.5 : 0.0, &fEnd);
-
- // create some overlapping
- fEnd *= 0.8;
- }
-
- if(0.0 != fStart || 0.0 != fEnd)
- {
- // build new poly, consume something from old poly
- aLocalPolygon = basegfx::tools::getSnippetAbsolute(aLocalPolygon, fStart, fPolyLength - fEnd, fPolyLength);
- }
- }
-
- // prepare return value
- Primitive2DSequence aRetval(1L + (aArrowA.count() ? 1L : 0L) + (aArrowB.count() ? 1L : 0L));
- sal_uInt32 nInd(0L);
-
- // add shaft
- const Primitive2DReference xRefShaft(new
- PolygonStrokePrimitive2D(
- aLocalPolygon, getLineAttribute(), getStrokeAttribute()));
- aRetval[nInd++] = xRefShaft;
-
- if(aArrowA.count())
- {
- const Primitive2DReference xRefA(
- new PolyPolygonColorPrimitive2D(
- aArrowA, getLineAttribute().getColor()));
- aRetval[nInd++] = xRefA;
- }
-
- if(aArrowB.count())
- {
- const Primitive2DReference xRefB(
- new PolyPolygonColorPrimitive2D(
- aArrowB, getLineAttribute().getColor()));
- aRetval[nInd++] = xRefB;
- }
-
- return aRetval;
- }
-
- PolygonStrokeArrowPrimitive2D::PolygonStrokeArrowPrimitive2D(
- const basegfx::B2DPolygon& rPolygon,
- const attribute::LineAttribute& rLineAttribute,
- const attribute::StrokeAttribute& rStrokeAttribute,
- const attribute::LineStartEndAttribute& rStart,
- const attribute::LineStartEndAttribute& rEnd)
- : PolygonStrokePrimitive2D(rPolygon, rLineAttribute, rStrokeAttribute),
- maStart(rStart),
- maEnd(rEnd)
- {
- }
-
- PolygonStrokeArrowPrimitive2D::PolygonStrokeArrowPrimitive2D(
- const basegfx::B2DPolygon& rPolygon,
- const attribute::LineAttribute& rLineAttribute,
- const attribute::LineStartEndAttribute& rStart,
- const attribute::LineStartEndAttribute& rEnd)
- : PolygonStrokePrimitive2D(rPolygon, rLineAttribute),
- maStart(rStart),
- maEnd(rEnd)
- {
- }
-
- bool PolygonStrokeArrowPrimitive2D::operator==(const BasePrimitive2D& rPrimitive) const
- {
- if(PolygonStrokePrimitive2D::operator==(rPrimitive))
- {
- const PolygonStrokeArrowPrimitive2D& rCompare = (PolygonStrokeArrowPrimitive2D&)rPrimitive;
-
- return (getStart() == rCompare.getStart()
- && getEnd() == rCompare.getEnd());
- }
-
- return false;
- }
-
- basegfx::B2DRange PolygonStrokeArrowPrimitive2D::getB2DRange(const geometry::ViewInformation2D& rViewInformation) const
- {
- basegfx::B2DRange aRetval;
-
- if(getStart().isActive() || getEnd().isActive())
- {
- // use decomposition when line start/end is used
- return BufferedDecompositionPrimitive2D::getB2DRange(rViewInformation);
- }
- else
- {
- // get range from parent
- return PolygonStrokePrimitive2D::getB2DRange(rViewInformation);
- }
- }
-
- // provide unique ID
- ImplPrimitrive2DIDBlock(PolygonStrokeArrowPrimitive2D, PRIMITIVE2D_ID_POLYGONSTROKEARROWPRIMITIVE2D)
-
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/primitive2d/polypolygonprimitive2d.cxx b/drawinglayer/source/primitive2d/polypolygonprimitive2d.cxx
deleted file mode 100644
index 98966c70a3..0000000000
--- a/drawinglayer/source/primitive2d/polypolygonprimitive2d.cxx
+++ /dev/null
@@ -1,575 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/primitive2d/polypolygonprimitive2d.hxx>
-#include <basegfx/polygon/b2dpolypolygontools.hxx>
-#include <basegfx/tools/canvastools.hxx>
-#include <drawinglayer/primitive2d/fillgradientprimitive2d.hxx>
-#include <drawinglayer/primitive2d/maskprimitive2d.hxx>
-#include <drawinglayer/primitive2d/fillhatchprimitive2d.hxx>
-#include <basegfx/matrix/b2dhommatrix.hxx>
-#include <drawinglayer/primitive2d/fillbitmapprimitive2d.hxx>
-#include <drawinglayer/primitive2d/polygonprimitive2d.hxx>
-#include <drawinglayer/primitive2d/drawinglayer_primitivetypes2d.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-using namespace com::sun::star;
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- Primitive2DSequence PolyPolygonHairlinePrimitive2D::create2DDecomposition(const geometry::ViewInformation2D& /*rViewInformation*/) const
- {
- const basegfx::B2DPolyPolygon aPolyPolygon(getB2DPolyPolygon());
- const sal_uInt32 nCount(aPolyPolygon.count());
-
- if(nCount)
- {
- Primitive2DSequence aRetval(nCount);
-
- for(sal_uInt32 a(0L); a < nCount; a++)
- {
- aRetval[a] = Primitive2DReference(new PolygonHairlinePrimitive2D(aPolyPolygon.getB2DPolygon(a), getBColor()));
- }
-
- return aRetval;
- }
- else
- {
- return Primitive2DSequence();
- }
- }
-
- PolyPolygonHairlinePrimitive2D::PolyPolygonHairlinePrimitive2D(const basegfx::B2DPolyPolygon& rPolyPolygon, const basegfx::BColor& rBColor)
- : BufferedDecompositionPrimitive2D(),
- maPolyPolygon(rPolyPolygon),
- maBColor(rBColor)
- {
- }
-
- bool PolyPolygonHairlinePrimitive2D::operator==(const BasePrimitive2D& rPrimitive) const
- {
- if(BufferedDecompositionPrimitive2D::operator==(rPrimitive))
- {
- const PolyPolygonHairlinePrimitive2D& rCompare = (PolyPolygonHairlinePrimitive2D&)rPrimitive;
-
- return (getB2DPolyPolygon() == rCompare.getB2DPolyPolygon()
- && getBColor() == rCompare.getBColor());
- }
-
- return false;
- }
-
- basegfx::B2DRange PolyPolygonHairlinePrimitive2D::getB2DRange(const geometry::ViewInformation2D& /*rViewInformation*/) const
- {
- // return range
- return basegfx::tools::getRange(getB2DPolyPolygon());
- }
-
- // provide unique ID
- ImplPrimitrive2DIDBlock(PolyPolygonHairlinePrimitive2D, PRIMITIVE2D_ID_POLYPOLYGONHAIRLINEPRIMITIVE2D)
-
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- Primitive2DSequence PolyPolygonMarkerPrimitive2D::create2DDecomposition(const geometry::ViewInformation2D& /*rViewInformation*/) const
- {
- const basegfx::B2DPolyPolygon aPolyPolygon(getB2DPolyPolygon());
- const sal_uInt32 nCount(aPolyPolygon.count());
-
- if(nCount)
- {
- Primitive2DSequence aRetval(nCount);
-
- for(sal_uInt32 a(0L); a < nCount; a++)
- {
- aRetval[a] = Primitive2DReference(new PolygonMarkerPrimitive2D(aPolyPolygon.getB2DPolygon(a), getRGBColorA(), getRGBColorB(), getDiscreteDashLength()));
- }
-
- return aRetval;
- }
- else
- {
- return Primitive2DSequence();
- }
- }
-
- PolyPolygonMarkerPrimitive2D::PolyPolygonMarkerPrimitive2D(
- const basegfx::B2DPolyPolygon& rPolyPolygon,
- const basegfx::BColor& rRGBColorA,
- const basegfx::BColor& rRGBColorB,
- double fDiscreteDashLength)
- : BufferedDecompositionPrimitive2D(),
- maPolyPolygon(rPolyPolygon),
- maRGBColorA(rRGBColorA),
- maRGBColorB(rRGBColorB),
- mfDiscreteDashLength(fDiscreteDashLength)
- {
- }
-
- bool PolyPolygonMarkerPrimitive2D::operator==(const BasePrimitive2D& rPrimitive) const
- {
- if(BufferedDecompositionPrimitive2D::operator==(rPrimitive))
- {
- const PolyPolygonMarkerPrimitive2D& rCompare = (PolyPolygonMarkerPrimitive2D&)rPrimitive;
-
- return (getB2DPolyPolygon() == rCompare.getB2DPolyPolygon()
- && getRGBColorA() == rCompare.getRGBColorA()
- && getRGBColorB() == rCompare.getRGBColorB()
- && getDiscreteDashLength() == rCompare.getDiscreteDashLength());
- }
-
- return false;
- }
-
- basegfx::B2DRange PolyPolygonMarkerPrimitive2D::getB2DRange(const geometry::ViewInformation2D& /*rViewInformation*/) const
- {
- // return range
- return basegfx::tools::getRange(getB2DPolyPolygon());
- }
-
- // provide unique ID
- ImplPrimitrive2DIDBlock(PolyPolygonMarkerPrimitive2D, PRIMITIVE2D_ID_POLYPOLYGONMARKERPRIMITIVE2D)
-
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- Primitive2DSequence PolyPolygonStrokePrimitive2D::create2DDecomposition(const geometry::ViewInformation2D& /*rViewInformation*/) const
- {
- const basegfx::B2DPolyPolygon aPolyPolygon(getB2DPolyPolygon());
- const sal_uInt32 nCount(aPolyPolygon.count());
-
- if(nCount)
- {
- Primitive2DSequence aRetval(nCount);
-
- for(sal_uInt32 a(0L); a < nCount; a++)
- {
- aRetval[a] = Primitive2DReference(
- new PolygonStrokePrimitive2D(
- aPolyPolygon.getB2DPolygon(a), getLineAttribute(), getStrokeAttribute()));
- }
-
- return aRetval;
- }
- else
- {
- return Primitive2DSequence();
- }
- }
-
- PolyPolygonStrokePrimitive2D::PolyPolygonStrokePrimitive2D(
- const basegfx::B2DPolyPolygon& rPolyPolygon,
- const attribute::LineAttribute& rLineAttribute,
- const attribute::StrokeAttribute& rStrokeAttribute)
- : BufferedDecompositionPrimitive2D(),
- maPolyPolygon(rPolyPolygon),
- maLineAttribute(rLineAttribute),
- maStrokeAttribute(rStrokeAttribute)
- {
- }
-
- PolyPolygonStrokePrimitive2D::PolyPolygonStrokePrimitive2D(
- const basegfx::B2DPolyPolygon& rPolyPolygon,
- const attribute::LineAttribute& rLineAttribute)
- : BufferedDecompositionPrimitive2D(),
- maPolyPolygon(rPolyPolygon),
- maLineAttribute(rLineAttribute),
- maStrokeAttribute()
- {
- }
-
- bool PolyPolygonStrokePrimitive2D::operator==(const BasePrimitive2D& rPrimitive) const
- {
- if(BufferedDecompositionPrimitive2D::operator==(rPrimitive))
- {
- const PolyPolygonStrokePrimitive2D& rCompare = (PolyPolygonStrokePrimitive2D&)rPrimitive;
-
- return (getB2DPolyPolygon() == rCompare.getB2DPolyPolygon()
- && getLineAttribute() == rCompare.getLineAttribute()
- && getStrokeAttribute() == rCompare.getStrokeAttribute());
- }
-
- return false;
- }
-
- basegfx::B2DRange PolyPolygonStrokePrimitive2D::getB2DRange(const geometry::ViewInformation2D& /*rViewInformation*/) const
- {
- // get range of it (subdivided)
- basegfx::B2DRange aRetval(basegfx::tools::getRange(getB2DPolyPolygon()));
-
- // if width, grow by line width
- if(getLineAttribute().getWidth())
- {
- aRetval.grow(getLineAttribute().getWidth() / 2.0);
- }
-
- return aRetval;
- }
-
- // provide unique ID
- ImplPrimitrive2DIDBlock(PolyPolygonStrokePrimitive2D, PRIMITIVE2D_ID_POLYPOLYGONSTROKEPRIMITIVE2D)
-
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- Primitive2DSequence PolyPolygonStrokeArrowPrimitive2D::create2DDecomposition(const geometry::ViewInformation2D& /*rViewInformation*/) const
- {
- const basegfx::B2DPolyPolygon aPolyPolygon(getB2DPolyPolygon());
- const sal_uInt32 nCount(aPolyPolygon.count());
-
- if(nCount)
- {
- Primitive2DSequence aRetval(nCount);
-
- for(sal_uInt32 a(0L); a < nCount; a++)
- {
- const basegfx::B2DPolygon aPolygon(aPolyPolygon.getB2DPolygon(a));
-
- if(aPolygon.isClosed())
- {
- // no need for PolygonStrokeArrowPrimitive2D when polygon is closed
- aRetval[a] = Primitive2DReference(
- new PolygonStrokePrimitive2D(aPolygon, getLineAttribute(), getStrokeAttribute()));
- }
- else
- {
- aRetval[a] = Primitive2DReference(
- new PolygonStrokeArrowPrimitive2D(aPolygon, getLineAttribute(),
- getStrokeAttribute(), getStart(), getEnd()));
- }
- }
-
- return aRetval;
- }
- else
- {
- return Primitive2DSequence();
- }
- }
-
- PolyPolygonStrokeArrowPrimitive2D::PolyPolygonStrokeArrowPrimitive2D(
- const basegfx::B2DPolyPolygon& rPolyPolygon,
- const attribute::LineAttribute& rLineAttribute,
- const attribute::StrokeAttribute& rStrokeAttribute,
- const attribute::LineStartEndAttribute& rStart,
- const attribute::LineStartEndAttribute& rEnd)
- : PolyPolygonStrokePrimitive2D(rPolyPolygon, rLineAttribute, rStrokeAttribute),
- maStart(rStart),
- maEnd(rEnd)
- {
- }
-
- PolyPolygonStrokeArrowPrimitive2D::PolyPolygonStrokeArrowPrimitive2D(
- const basegfx::B2DPolyPolygon& rPolyPolygon,
- const attribute::LineAttribute& rLineAttribute,
- const attribute::LineStartEndAttribute& rStart,
- const attribute::LineStartEndAttribute& rEnd)
- : PolyPolygonStrokePrimitive2D(rPolyPolygon, rLineAttribute),
- maStart(rStart),
- maEnd(rEnd)
- {
- }
-
- bool PolyPolygonStrokeArrowPrimitive2D::operator==(const BasePrimitive2D& rPrimitive) const
- {
- if(PolyPolygonStrokePrimitive2D::operator==(rPrimitive))
- {
- const PolyPolygonStrokeArrowPrimitive2D& rCompare = (PolyPolygonStrokeArrowPrimitive2D&)rPrimitive;
-
- return (getStart() == rCompare.getStart()
- && getEnd() == rCompare.getEnd());
- }
-
- return false;
- }
-
- basegfx::B2DRange PolyPolygonStrokeArrowPrimitive2D::getB2DRange(const geometry::ViewInformation2D& rViewInformation) const
- {
- basegfx::B2DRange aRetval;
-
- if(getStart().isActive() || getEnd().isActive())
- {
- // use decomposition when line start/end is used
- return BufferedDecompositionPrimitive2D::getB2DRange(rViewInformation);
- }
- else
- {
- // get range from parent
- return PolyPolygonStrokePrimitive2D::getB2DRange(rViewInformation);
- }
- }
-
- // provide unique ID
- ImplPrimitrive2DIDBlock(PolyPolygonStrokeArrowPrimitive2D, PRIMITIVE2D_ID_POLYPOLYGONSTROKEARROWPRIMITIVE2D)
-
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- PolyPolygonColorPrimitive2D::PolyPolygonColorPrimitive2D(
- const basegfx::B2DPolyPolygon& rPolyPolygon,
- const basegfx::BColor& rBColor)
- : BasePrimitive2D(),
- maPolyPolygon(rPolyPolygon),
- maBColor(rBColor)
- {
- }
-
- bool PolyPolygonColorPrimitive2D::operator==(const BasePrimitive2D& rPrimitive) const
- {
- if(BasePrimitive2D::operator==(rPrimitive))
- {
- const PolyPolygonColorPrimitive2D& rCompare = (PolyPolygonColorPrimitive2D&)rPrimitive;
-
- return (getB2DPolyPolygon() == rCompare.getB2DPolyPolygon()
- && getBColor() == rCompare.getBColor());
- }
-
- return false;
- }
-
- basegfx::B2DRange PolyPolygonColorPrimitive2D::getB2DRange(const geometry::ViewInformation2D& /*rViewInformation*/) const
- {
- // return range
- return basegfx::tools::getRange(getB2DPolyPolygon());
- }
-
- // provide unique ID
- ImplPrimitrive2DIDBlock(PolyPolygonColorPrimitive2D, PRIMITIVE2D_ID_POLYPOLYGONCOLORPRIMITIVE2D)
-
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- Primitive2DSequence PolyPolygonGradientPrimitive2D::create2DDecomposition(const geometry::ViewInformation2D& /*rViewInformation*/) const
- {
- if(!getFillGradient().isDefault())
- {
- // create SubSequence with FillGradientPrimitive2D
- const basegfx::B2DRange aPolyPolygonRange(getB2DPolyPolygon().getB2DRange());
- FillGradientPrimitive2D* pNewGradient = new FillGradientPrimitive2D(aPolyPolygonRange, getFillGradient());
- const Primitive2DReference xSubRef(pNewGradient);
- const Primitive2DSequence aSubSequence(&xSubRef, 1L);
-
- // create mask primitive
- MaskPrimitive2D* pNewMask = new MaskPrimitive2D(getB2DPolyPolygon(), aSubSequence);
- const Primitive2DReference xRef(pNewMask);
-
- return Primitive2DSequence(&xRef, 1);
- }
- else
- {
- return Primitive2DSequence();
- }
- }
-
- PolyPolygonGradientPrimitive2D::PolyPolygonGradientPrimitive2D(
- const basegfx::B2DPolyPolygon& rPolyPolygon,
- const attribute::FillGradientAttribute& rFillGradient)
- : BufferedDecompositionPrimitive2D(),
- maPolyPolygon(rPolyPolygon),
- maFillGradient(rFillGradient)
- {
- }
-
- bool PolyPolygonGradientPrimitive2D::operator==(const BasePrimitive2D& rPrimitive) const
- {
- if(BufferedDecompositionPrimitive2D::operator==(rPrimitive))
- {
- const PolyPolygonGradientPrimitive2D& rCompare = (PolyPolygonGradientPrimitive2D&)rPrimitive;
-
- return (getFillGradient() == rCompare.getFillGradient());
- }
-
- return false;
- }
-
- // provide unique ID
- ImplPrimitrive2DIDBlock(PolyPolygonGradientPrimitive2D, PRIMITIVE2D_ID_POLYPOLYGONGRADIENTPRIMITIVE2D)
-
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- Primitive2DSequence PolyPolygonHatchPrimitive2D::create2DDecomposition(const geometry::ViewInformation2D& /*rViewInformation*/) const
- {
- if(!getFillHatch().isDefault())
- {
- // create SubSequence with FillHatchPrimitive2D
- const basegfx::B2DRange aPolyPolygonRange(getB2DPolyPolygon().getB2DRange());
- FillHatchPrimitive2D* pNewHatch = new FillHatchPrimitive2D(aPolyPolygonRange, getBackgroundColor(), getFillHatch());
- const Primitive2DReference xSubRef(pNewHatch);
- const Primitive2DSequence aSubSequence(&xSubRef, 1L);
-
- // create mask primitive
- MaskPrimitive2D* pNewMask = new MaskPrimitive2D(getB2DPolyPolygon(), aSubSequence);
- const Primitive2DReference xRef(pNewMask);
-
- return Primitive2DSequence(&xRef, 1);
- }
- else
- {
- return Primitive2DSequence();
- }
- }
-
- PolyPolygonHatchPrimitive2D::PolyPolygonHatchPrimitive2D(
- const basegfx::B2DPolyPolygon& rPolyPolygon,
- const basegfx::BColor& rBackgroundColor,
- const attribute::FillHatchAttribute& rFillHatch)
- : BufferedDecompositionPrimitive2D(),
- maPolyPolygon(rPolyPolygon),
- maBackgroundColor(rBackgroundColor),
- maFillHatch(rFillHatch)
- {
- }
-
- bool PolyPolygonHatchPrimitive2D::operator==(const BasePrimitive2D& rPrimitive) const
- {
- if(BufferedDecompositionPrimitive2D::operator==(rPrimitive))
- {
- const PolyPolygonHatchPrimitive2D& rCompare = (PolyPolygonHatchPrimitive2D&)rPrimitive;
-
- return (getBackgroundColor() == rCompare.getBackgroundColor()
- && getFillHatch() == rCompare.getFillHatch());
- }
-
- return false;
- }
-
- // provide unique ID
- ImplPrimitrive2DIDBlock(PolyPolygonHatchPrimitive2D, PRIMITIVE2D_ID_POLYPOLYGONHATCHPRIMITIVE2D)
-
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- Primitive2DSequence PolyPolygonBitmapPrimitive2D::create2DDecomposition(const geometry::ViewInformation2D& /*rViewInformation*/) const
- {
- if(!getFillBitmap().isDefault())
- {
- // create SubSequence with FillBitmapPrimitive2D
- const basegfx::B2DRange aPolyPolygonRange(getB2DPolyPolygon().getB2DRange());
- basegfx::B2DHomMatrix aNewObjectTransform;
- aNewObjectTransform.set(0, 0, aPolyPolygonRange.getWidth());
- aNewObjectTransform.set(1, 1, aPolyPolygonRange.getHeight());
- aNewObjectTransform.set(0, 2, aPolyPolygonRange.getMinX());
- aNewObjectTransform.set(1, 2, aPolyPolygonRange.getMinY());
- FillBitmapPrimitive2D* pNewBitmap = new FillBitmapPrimitive2D(aNewObjectTransform, getFillBitmap());
- const Primitive2DReference xSubRef(pNewBitmap);
- const Primitive2DSequence aSubSequence(&xSubRef, 1L);
-
- // create mask primitive
- MaskPrimitive2D* pNewMask = new MaskPrimitive2D(getB2DPolyPolygon(), aSubSequence);
- const Primitive2DReference xRef(pNewMask);
-
- return Primitive2DSequence(&xRef, 1);
- }
- else
- {
- return Primitive2DSequence();
- }
- }
-
- PolyPolygonBitmapPrimitive2D::PolyPolygonBitmapPrimitive2D(
- const basegfx::B2DPolyPolygon& rPolyPolygon,
- const attribute::FillBitmapAttribute& rFillBitmap)
- : BufferedDecompositionPrimitive2D(),
- maPolyPolygon(rPolyPolygon),
- maFillBitmap(rFillBitmap)
- {
- }
-
- bool PolyPolygonBitmapPrimitive2D::operator==(const BasePrimitive2D& rPrimitive) const
- {
- if(BufferedDecompositionPrimitive2D::operator==(rPrimitive))
- {
- const PolyPolygonBitmapPrimitive2D& rCompare = (PolyPolygonBitmapPrimitive2D&)rPrimitive;
-
- return (getFillBitmap() == rCompare.getFillBitmap());
- }
-
- return false;
- }
-
- // provide unique ID
- ImplPrimitrive2DIDBlock(PolyPolygonBitmapPrimitive2D, PRIMITIVE2D_ID_POLYPOLYGONBITMAPPRIMITIVE2D)
-
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/primitive2d/primitivetools2d.cxx b/drawinglayer/source/primitive2d/primitivetools2d.cxx
deleted file mode 100644
index 03425a2ead..0000000000
--- a/drawinglayer/source/primitive2d/primitivetools2d.cxx
+++ /dev/null
@@ -1,173 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/primitive2d/primitivetools2d.hxx>
-#include <basegfx/vector/b2dvector.hxx>
-#include <drawinglayer/geometry/viewinformation2d.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- Primitive2DSequence DiscreteMetricDependentPrimitive2D::get2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const
- {
- ::osl::MutexGuard aGuard( m_aMutex );
-
- // get the current DiscreteUnit
- const double fDiscreteUnit((rViewInformation.getInverseObjectToViewTransformation() * basegfx::B2DVector(1.0, 0.0)).getLength());
-
- if(getBuffered2DDecomposition().hasElements() && !basegfx::fTools::equal(fDiscreteUnit, getDiscreteUnit()))
- {
- // conditions of last local decomposition have changed, delete
- const_cast< DiscreteMetricDependentPrimitive2D* >(this)->setBuffered2DDecomposition(Primitive2DSequence());
- }
-
- if(!getBuffered2DDecomposition().hasElements())
- {
- // remember new valid DiscreteUnit
- const_cast< DiscreteMetricDependentPrimitive2D* >(this)->mfDiscreteUnit = fDiscreteUnit;
- }
-
- // call base implementation
- return BufferedDecompositionPrimitive2D::get2DDecomposition(rViewInformation);
- }
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- Primitive2DSequence ViewportDependentPrimitive2D::get2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const
- {
- ::osl::MutexGuard aGuard( m_aMutex );
-
- // get the current Viewport
- const basegfx::B2DRange& rViewport = rViewInformation.getViewport();
-
- if(getBuffered2DDecomposition().hasElements() && !rViewport.equal(getViewport()))
- {
- // conditions of last local decomposition have changed, delete
- const_cast< ViewportDependentPrimitive2D* >(this)->setBuffered2DDecomposition(Primitive2DSequence());
- }
-
- if(!getBuffered2DDecomposition().hasElements())
- {
- // remember new valid DiscreteUnit
- const_cast< ViewportDependentPrimitive2D* >(this)->maViewport = rViewport;
- }
-
- // call base implementation
- return BufferedDecompositionPrimitive2D::get2DDecomposition(rViewInformation);
- }
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- Primitive2DSequence ViewTransformationDependentPrimitive2D::get2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const
- {
- ::osl::MutexGuard aGuard( m_aMutex );
-
- // get the current ViewTransformation
- const basegfx::B2DHomMatrix& rViewTransformation = rViewInformation.getViewTransformation();
-
- if(getBuffered2DDecomposition().hasElements() && rViewTransformation != getViewTransformation())
- {
- // conditions of last local decomposition have changed, delete
- const_cast< ViewTransformationDependentPrimitive2D* >(this)->setBuffered2DDecomposition(Primitive2DSequence());
- }
-
- if(!getBuffered2DDecomposition().hasElements())
- {
- // remember new valid ViewTransformation
- const_cast< ViewTransformationDependentPrimitive2D* >(this)->maViewTransformation = rViewTransformation;
- }
-
- // call base implementation
- return BufferedDecompositionPrimitive2D::get2DDecomposition(rViewInformation);
- }
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- Primitive2DSequence ObjectAndViewTransformationDependentPrimitive2D::get2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const
- {
- ::osl::MutexGuard aGuard( m_aMutex );
-
- // get the current ViewTransfromation
- const basegfx::B2DHomMatrix& rViewTransformation = rViewInformation.getViewTransformation();
-
- if(getBuffered2DDecomposition().hasElements() && rViewTransformation != getViewTransformation())
- {
- // conditions of last local decomposition have changed, delete
- const_cast< ObjectAndViewTransformationDependentPrimitive2D* >(this)->setBuffered2DDecomposition(Primitive2DSequence());
- }
-
- // get the current ObjectTransformation
- const basegfx::B2DHomMatrix& rObjectTransformation = rViewInformation.getObjectTransformation();
-
- if(getBuffered2DDecomposition().hasElements() && rObjectTransformation != getObjectTransformation())
- {
- // conditions of last local decomposition have changed, delete
- const_cast< ObjectAndViewTransformationDependentPrimitive2D* >(this)->setBuffered2DDecomposition(Primitive2DSequence());
- }
-
- if(!getBuffered2DDecomposition().hasElements())
- {
- // remember new valid ViewTransformation, and ObjectTransformation
- const_cast< ObjectAndViewTransformationDependentPrimitive2D* >(this)->maViewTransformation = rViewTransformation;
- const_cast< ObjectAndViewTransformationDependentPrimitive2D* >(this)->maObjectTransformation = rObjectTransformation;
- }
-
- // call base implementation
- return BufferedDecompositionPrimitive2D::get2DDecomposition(rViewInformation);
- }
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/primitive2d/rendergraphicprimitive2d.cxx b/drawinglayer/source/primitive2d/rendergraphicprimitive2d.cxx
deleted file mode 100644
index c58990a420..0000000000
--- a/drawinglayer/source/primitive2d/rendergraphicprimitive2d.cxx
+++ /dev/null
@@ -1,92 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/primitive2d/rendergraphicprimitive2d.hxx>
-#include <drawinglayer/primitive2d/drawinglayer_primitivetypes2d.hxx>
-#include <basegfx/tools/canvastools.hxx>
-#include <vcl/rendergraphicrasterizer.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-using namespace com::sun::star;
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- RenderGraphicPrimitive2D::RenderGraphicPrimitive2D(
- const vcl::RenderGraphic& rRenderGraphic,
- const basegfx::B2DHomMatrix& rTransform)
- : BasePrimitive2D(),
- maRenderGraphic(rRenderGraphic),
- maTransform(rTransform)
- {
- }
-
- void RenderGraphicPrimitive2D::setCurrentRasterizer() const
- {
- mapCurrentRasterizer.reset();
- }
-
- void RenderGraphicPrimitive2D::setCurrentRasterizer( const vcl::RenderGraphicRasterizer& rCurrentRasterizer ) const
- {
- mapCurrentRasterizer.reset( new vcl::RenderGraphicRasterizer( rCurrentRasterizer ) );
- }
-
- bool RenderGraphicPrimitive2D::operator==(const BasePrimitive2D& rPrimitive) const
- {
- if(BasePrimitive2D::operator==(rPrimitive))
- {
- const RenderGraphicPrimitive2D& rCompare = (RenderGraphicPrimitive2D&)rPrimitive;
-
- return (getRenderGraphic() == rCompare.getRenderGraphic()
- && getTransform() == rCompare.getTransform());
- }
-
- return false;
- }
-
- basegfx::B2DRange RenderGraphicPrimitive2D::getB2DRange(const geometry::ViewInformation2D& /*rViewInformation*/) const
- {
- basegfx::B2DRange aRetval(0.0, 0.0, 1.0, 1.0);
- aRetval.transform(maTransform);
- return aRetval;
- }
-
- // provide unique ID
- ImplPrimitrive2DIDBlock(RenderGraphicPrimitive2D, PRIMITIVE2D_ID_RENDERGRAPHICPRIMITIVE2D)
-
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
diff --git a/drawinglayer/source/primitive2d/sceneprimitive2d.cxx b/drawinglayer/source/primitive2d/sceneprimitive2d.cxx
deleted file mode 100644
index f9959744c2..0000000000
--- a/drawinglayer/source/primitive2d/sceneprimitive2d.cxx
+++ /dev/null
@@ -1,483 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/primitive2d/sceneprimitive2d.hxx>
-#include <basegfx/tools/canvastools.hxx>
-#include <basegfx/polygon/b2dpolygontools.hxx>
-#include <basegfx/polygon/b2dpolygon.hxx>
-#include <basegfx/polygon/b2dpolygonclipper.hxx>
-#include <basegfx/polygon/b2dpolypolygontools.hxx>
-#include <basegfx/matrix/b2dhommatrix.hxx>
-#include <drawinglayer/primitive2d/bitmapprimitive2d.hxx>
-#include <drawinglayer/processor3d/zbufferprocessor3d.hxx>
-#include <drawinglayer/processor3d/shadow3dextractor.hxx>
-#include <drawinglayer/geometry/viewinformation2d.hxx>
-#include <drawinglayer/primitive2d/drawinglayer_primitivetypes2d.hxx>
-#include <svtools/optionsdrawinglayer.hxx>
-#include <drawinglayer/processor3d/geometry2dextractor.hxx>
-#include <drawinglayer/primitive2d/polygonprimitive2d.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-using namespace com::sun::star;
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- bool ScenePrimitive2D::impGetShadow3D(const geometry::ViewInformation2D& /*rViewInformation*/) const
- {
- ::osl::MutexGuard aGuard( m_aMutex );
-
- // create on demand
- if(!mbShadow3DChecked && getChildren3D().hasElements())
- {
- basegfx::B3DVector aLightNormal;
- const double fShadowSlant(getSdrSceneAttribute().getShadowSlant());
- const basegfx::B3DRange aScene3DRange(primitive3d::getB3DRangeFromPrimitive3DSequence(getChildren3D(), getViewInformation3D()));
-
- if(maSdrLightingAttribute.getLightVector().size())
- {
- // get light normal from first light and normalize
- aLightNormal = maSdrLightingAttribute.getLightVector()[0].getDirection();
- aLightNormal.normalize();
- }
-
- // create shadow extraction processor
- processor3d::Shadow3DExtractingProcessor aShadowProcessor(
- getViewInformation3D(),
- getObjectTransformation(),
- aLightNormal,
- fShadowSlant,
- aScene3DRange);
-
- // process local primitives
- aShadowProcessor.process(getChildren3D());
-
- // fetch result and set checked flag
- const_cast< ScenePrimitive2D* >(this)->maShadowPrimitives = aShadowProcessor.getPrimitive2DSequence();
- const_cast< ScenePrimitive2D* >(this)->mbShadow3DChecked = true;
- }
-
- // return if there are shadow primitives
- return maShadowPrimitives.hasElements();
- }
-
- void ScenePrimitive2D::calculateDiscreteSizes(
- const geometry::ViewInformation2D& rViewInformation,
- basegfx::B2DRange& rDiscreteRange,
- basegfx::B2DRange& rVisibleDiscreteRange,
- basegfx::B2DRange& rUnitVisibleRange) const
- {
- // use unit range and transform to discrete coordinates
- rDiscreteRange = basegfx::B2DRange(0.0, 0.0, 1.0, 1.0);
- rDiscreteRange.transform(rViewInformation.getObjectToViewTransformation() * getObjectTransformation());
-
- // clip it against discrete Viewport (if set)
- rVisibleDiscreteRange = rDiscreteRange;
-
- if(!rViewInformation.getViewport().isEmpty())
- {
- rVisibleDiscreteRange.intersect(rViewInformation.getDiscreteViewport());
- }
-
- if(rVisibleDiscreteRange.isEmpty())
- {
- rUnitVisibleRange = rVisibleDiscreteRange;
- }
- else
- {
- // create UnitVisibleRange containing unit range values [0.0 .. 1.0] describing
- // the relative position of rVisibleDiscreteRange inside rDiscreteRange
- const double fDiscreteScaleFactorX(basegfx::fTools::equalZero(rDiscreteRange.getWidth()) ? 1.0 : 1.0 / rDiscreteRange.getWidth());
- const double fDiscreteScaleFactorY(basegfx::fTools::equalZero(rDiscreteRange.getHeight()) ? 1.0 : 1.0 / rDiscreteRange.getHeight());
-
- const double fMinX(basegfx::fTools::equal(rVisibleDiscreteRange.getMinX(), rDiscreteRange.getMinX())
- ? 0.0
- : (rVisibleDiscreteRange.getMinX() - rDiscreteRange.getMinX()) * fDiscreteScaleFactorX);
- const double fMinY(basegfx::fTools::equal(rVisibleDiscreteRange.getMinY(), rDiscreteRange.getMinY())
- ? 0.0
- : (rVisibleDiscreteRange.getMinY() - rDiscreteRange.getMinY()) * fDiscreteScaleFactorY);
-
- const double fMaxX(basegfx::fTools::equal(rVisibleDiscreteRange.getMaxX(), rDiscreteRange.getMaxX())
- ? 1.0
- : (rVisibleDiscreteRange.getMaxX() - rDiscreteRange.getMinX()) * fDiscreteScaleFactorX);
- const double fMaxY(basegfx::fTools::equal(rVisibleDiscreteRange.getMaxY(), rDiscreteRange.getMaxY())
- ? 1.0
- : (rVisibleDiscreteRange.getMaxY() - rDiscreteRange.getMinY()) * fDiscreteScaleFactorY);
-
- rUnitVisibleRange = basegfx::B2DRange(fMinX, fMinY, fMaxX, fMaxY);
- }
- }
-
- Primitive2DSequence ScenePrimitive2D::create2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const
- {
- Primitive2DSequence aRetval;
-
- // create 2D shadows from contained 3D primitives. This creates the shadow primitives on demand and tells if
- // there are some or not. Do this at start, the shadow might still be visible even when the scene is not
- if(impGetShadow3D(rViewInformation))
- {
- // test visibility
- const basegfx::B2DRange aShadow2DRange(
- getB2DRangeFromPrimitive2DSequence(maShadowPrimitives, rViewInformation));
- const basegfx::B2DRange aViewRange(
- rViewInformation.getViewport());
-
- if(aViewRange.isEmpty() || aShadow2DRange.overlaps(aViewRange))
- {
- // add extracted 2d shadows (before 3d scene creations itself)
- aRetval = maShadowPrimitives;
- }
- }
-
- // get the involved ranges (see helper method calculateDiscreteSizes for details)
- basegfx::B2DRange aDiscreteRange;
- basegfx::B2DRange aVisibleDiscreteRange;
- basegfx::B2DRange aUnitVisibleRange;
-
- calculateDiscreteSizes(rViewInformation, aDiscreteRange, aVisibleDiscreteRange, aUnitVisibleRange);
-
- if(!aVisibleDiscreteRange.isEmpty())
- {
- // test if discrete view size (pixel) maybe too big and limit it
- double fViewSizeX(aVisibleDiscreteRange.getWidth());
- double fViewSizeY(aVisibleDiscreteRange.getHeight());
- const double fViewVisibleArea(fViewSizeX * fViewSizeY);
- const SvtOptionsDrawinglayer aDrawinglayerOpt;
- const double fMaximumVisibleArea(aDrawinglayerOpt.GetQuadratic3DRenderLimit());
- double fReduceFactor(1.0);
-
- if(fViewVisibleArea > fMaximumVisibleArea)
- {
- fReduceFactor = sqrt(fMaximumVisibleArea / fViewVisibleArea);
- fViewSizeX *= fReduceFactor;
- fViewSizeY *= fReduceFactor;
- }
-
- if(rViewInformation.getReducedDisplayQuality())
- {
- // when reducing the visualisation is allowed (e.g. an OverlayObject
- // only needed for dragging), reduce resolution extra
- // to speed up dragging interactions
- const double fArea(fViewSizeX * fViewSizeY);
- double fReducedVisualisationFactor(1.0 / (sqrt(fArea) * (1.0 / 170.0)));
-
- if(fReducedVisualisationFactor > 1.0)
- {
- fReducedVisualisationFactor = 1.0;
- }
- else if(fReducedVisualisationFactor < 0.20)
- {
- fReducedVisualisationFactor = 0.20;
- }
-
- if(fReducedVisualisationFactor != 1.0)
- {
- fReduceFactor *= fReducedVisualisationFactor;
- fViewSizeX *= fReducedVisualisationFactor;
- fViewSizeY *= fReducedVisualisationFactor;
- }
- }
-
- // calculate logic render size in world coordinates for usage in renderer
- basegfx::B2DVector aLogicRenderSize(
- aDiscreteRange.getWidth() * fReduceFactor,
- aDiscreteRange.getHeight() * fReduceFactor);
- aLogicRenderSize *= rViewInformation.getInverseObjectToViewTransformation();
-
- // determine the oversample value
- static sal_uInt16 nDefaultOversampleValue(3);
- const sal_uInt16 nOversampleValue(aDrawinglayerOpt.IsAntiAliasing() ? nDefaultOversampleValue : 0);
-
- // use default 3D primitive processor to create BitmapEx for aUnitVisiblePart and process
- processor3d::ZBufferProcessor3D aZBufferProcessor3D(
- getViewInformation3D(),
- rViewInformation,
- getSdrSceneAttribute(),
- getSdrLightingAttribute(),
- aLogicRenderSize.getX(),
- aLogicRenderSize.getY(),
- aUnitVisibleRange,
- nOversampleValue);
-
- aZBufferProcessor3D.process(getChildren3D());
- aZBufferProcessor3D.finish();
-
- const_cast< ScenePrimitive2D* >(this)->maOldRenderedBitmap = aZBufferProcessor3D.getBitmapEx();
- const Size aBitmapSizePixel(maOldRenderedBitmap.GetSizePixel());
-
- if(aBitmapSizePixel.getWidth() && aBitmapSizePixel.getHeight())
- {
- // create transform for the created bitmap in discrete coordinates first.
- basegfx::B2DHomMatrix aNew2DTransform;
-
- aNew2DTransform.set(0, 0, aVisibleDiscreteRange.getWidth());
- aNew2DTransform.set(1, 1, aVisibleDiscreteRange.getHeight());
- aNew2DTransform.set(0, 2, aVisibleDiscreteRange.getMinX());
- aNew2DTransform.set(1, 2, aVisibleDiscreteRange.getMinY());
-
- // transform back to world coordinates for usage in primitive creation
- aNew2DTransform *= rViewInformation.getInverseObjectToViewTransformation();
-
- // create bitmap primitive and add
- const Primitive2DReference xRef(new BitmapPrimitive2D(maOldRenderedBitmap, aNew2DTransform));
- appendPrimitive2DReferenceToPrimitive2DSequence(aRetval, xRef);
-
- // test: Allow to add an outline in the debugger when tests are needed
- static bool bAddOutlineToCreated3DSceneRepresentation(false);
-
- if(bAddOutlineToCreated3DSceneRepresentation)
- {
- basegfx::B2DPolygon aOutline(basegfx::tools::createUnitPolygon());
- aOutline.transform(aNew2DTransform);
- const Primitive2DReference xRef2(new PolygonHairlinePrimitive2D(aOutline, basegfx::BColor(1.0, 0.0, 0.0)));
- appendPrimitive2DReferenceToPrimitive2DSequence(aRetval, xRef2);
- }
- }
- }
-
- return aRetval;
- }
-
- Primitive2DSequence ScenePrimitive2D::getGeometry2D() const
- {
- Primitive2DSequence aRetval;
-
- // create 2D projected geometry from 3D geometry
- if(getChildren3D().hasElements())
- {
- // create 2D geometry extraction processor
- processor3d::Geometry2DExtractingProcessor aGeometryProcessor(
- getViewInformation3D(),
- getObjectTransformation());
-
- // process local primitives
- aGeometryProcessor.process(getChildren3D());
-
- // fetch result
- aRetval = aGeometryProcessor.getPrimitive2DSequence();
- }
-
- return aRetval;
- }
-
- Primitive2DSequence ScenePrimitive2D::getShadow2D(const geometry::ViewInformation2D& rViewInformation) const
- {
- Primitive2DSequence aRetval;
-
- // create 2D shadows from contained 3D primitives
- if(impGetShadow3D(rViewInformation))
- {
- // add extracted 2d shadows (before 3d scene creations itself)
- aRetval = maShadowPrimitives;
- }
-
- return aRetval;
- }
-
- bool ScenePrimitive2D::tryToCheckLastVisualisationDirectHit(const basegfx::B2DPoint& rLogicHitPoint, bool& o_rResult) const
- {
- if(!maOldRenderedBitmap.IsEmpty() && !maOldUnitVisiblePart.isEmpty())
- {
- basegfx::B2DHomMatrix aInverseSceneTransform(getObjectTransformation());
- aInverseSceneTransform.invert();
- const basegfx::B2DPoint aRelativePoint(aInverseSceneTransform * rLogicHitPoint);
-
- if(maOldUnitVisiblePart.isInside(aRelativePoint))
- {
- // calculate coordinates relative to visualized part
- double fDivisorX(maOldUnitVisiblePart.getWidth());
- double fDivisorY(maOldUnitVisiblePart.getHeight());
-
- if(basegfx::fTools::equalZero(fDivisorX))
- {
- fDivisorX = 1.0;
- }
-
- if(basegfx::fTools::equalZero(fDivisorY))
- {
- fDivisorY = 1.0;
- }
-
- const double fRelativeX((aRelativePoint.getX() - maOldUnitVisiblePart.getMinX()) / fDivisorX);
- const double fRelativeY((aRelativePoint.getY() - maOldUnitVisiblePart.getMinY()) / fDivisorY);
-
- // combine with real BitmapSizePixel to get bitmap coordinates
- const Size aBitmapSizePixel(maOldRenderedBitmap.GetSizePixel());
- const sal_Int32 nX(basegfx::fround(fRelativeX * aBitmapSizePixel.Width()));
- const sal_Int32 nY(basegfx::fround(fRelativeY * aBitmapSizePixel.Height()));
-
- // try to get a statement about transparency in that pixel
- o_rResult = (0xff != maOldRenderedBitmap.GetTransparency(nX, nY));
- return true;
- }
- }
-
- return false;
- }
-
- ScenePrimitive2D::ScenePrimitive2D(
- const primitive3d::Primitive3DSequence& rxChildren3D,
- const attribute::SdrSceneAttribute& rSdrSceneAttribute,
- const attribute::SdrLightingAttribute& rSdrLightingAttribute,
- const basegfx::B2DHomMatrix& rObjectTransformation,
- const geometry::ViewInformation3D& rViewInformation3D)
- : BufferedDecompositionPrimitive2D(),
- mxChildren3D(rxChildren3D),
- maSdrSceneAttribute(rSdrSceneAttribute),
- maSdrLightingAttribute(rSdrLightingAttribute),
- maObjectTransformation(rObjectTransformation),
- maViewInformation3D(rViewInformation3D),
- maShadowPrimitives(),
- mbShadow3DChecked(false),
- mfOldDiscreteSizeX(0.0),
- mfOldDiscreteSizeY(0.0),
- maOldUnitVisiblePart(),
- maOldRenderedBitmap()
- {
- }
-
- bool ScenePrimitive2D::operator==(const BasePrimitive2D& rPrimitive) const
- {
- if(BufferedDecompositionPrimitive2D::operator==(rPrimitive))
- {
- const ScenePrimitive2D& rCompare = (ScenePrimitive2D&)rPrimitive;
-
- return (primitive3d::arePrimitive3DSequencesEqual(getChildren3D(), rCompare.getChildren3D())
- && getSdrSceneAttribute() == rCompare.getSdrSceneAttribute()
- && getSdrLightingAttribute() == rCompare.getSdrLightingAttribute()
- && getObjectTransformation() == rCompare.getObjectTransformation()
- && getViewInformation3D() == rCompare.getViewInformation3D());
- }
-
- return false;
- }
-
- basegfx::B2DRange ScenePrimitive2D::getB2DRange(const geometry::ViewInformation2D& rViewInformation) const
- {
- // transform unit range to discrete coordinate range
- basegfx::B2DRange aRetval(0.0, 0.0, 1.0, 1.0);
- aRetval.transform(rViewInformation.getObjectToViewTransformation() * getObjectTransformation());
-
- // force to discrete expanded bounds (it grows, so expanding works perfectly well)
- aRetval.expand(basegfx::B2DTuple(floor(aRetval.getMinX()), floor(aRetval.getMinY())));
- aRetval.expand(basegfx::B2DTuple(ceil(aRetval.getMaxX()), ceil(aRetval.getMaxY())));
-
- // transform back from discrete (view) to world coordinates
- aRetval.transform(rViewInformation.getInverseObjectToViewTransformation());
-
- // expand by evtl. existing shadow primitives
- if(impGetShadow3D(rViewInformation))
- {
- const basegfx::B2DRange aShadow2DRange(getB2DRangeFromPrimitive2DSequence(maShadowPrimitives, rViewInformation));
-
- if(!aShadow2DRange.isEmpty())
- {
- aRetval.expand(aShadow2DRange);
- }
- }
-
- return aRetval;
- }
-
- Primitive2DSequence ScenePrimitive2D::get2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const
- {
- ::osl::MutexGuard aGuard( m_aMutex );
-
- // get the involved ranges (see helper method calculateDiscreteSizes for details)
- basegfx::B2DRange aDiscreteRange;
- basegfx::B2DRange aUnitVisibleRange;
- bool bNeedNewDecomposition(false);
- bool bDiscreteSizesAreCalculated(false);
-
- if(getBuffered2DDecomposition().hasElements())
- {
- basegfx::B2DRange aVisibleDiscreteRange;
- calculateDiscreteSizes(rViewInformation, aDiscreteRange, aVisibleDiscreteRange, aUnitVisibleRange);
- bDiscreteSizesAreCalculated = true;
-
- // needs to be painted when the new part is not part of the last
- // decomposition
- if(!maOldUnitVisiblePart.isInside(aUnitVisibleRange))
- {
- bNeedNewDecomposition = true;
- }
-
- // display has changed and cannot be reused when resolution got bigger. It
- // can be reused when resolution got smaller, though.
- if(!bNeedNewDecomposition)
- {
- if(basegfx::fTools::more(aDiscreteRange.getWidth(), mfOldDiscreteSizeX) ||
- basegfx::fTools::more(aDiscreteRange.getHeight(), mfOldDiscreteSizeY))
- {
- bNeedNewDecomposition = true;
- }
- }
- }
-
- if(bNeedNewDecomposition)
- {
- // conditions of last local decomposition have changed, delete
- const_cast< ScenePrimitive2D* >(this)->setBuffered2DDecomposition(Primitive2DSequence());
- }
-
- if(!getBuffered2DDecomposition().hasElements())
- {
- if(!bDiscreteSizesAreCalculated)
- {
- basegfx::B2DRange aVisibleDiscreteRange;
- calculateDiscreteSizes(rViewInformation, aDiscreteRange, aVisibleDiscreteRange, aUnitVisibleRange);
- }
-
- // remember last used NewDiscreteSize and NewUnitVisiblePart
- ScenePrimitive2D* pThat = const_cast< ScenePrimitive2D* >(this);
- pThat->mfOldDiscreteSizeX = aDiscreteRange.getWidth();
- pThat->mfOldDiscreteSizeY = aDiscreteRange.getHeight();
- pThat->maOldUnitVisiblePart = aUnitVisibleRange;
- }
-
- // use parent implementation
- return BufferedDecompositionPrimitive2D::get2DDecomposition(rViewInformation);
- }
-
- // provide unique ID
- ImplPrimitrive2DIDBlock(ScenePrimitive2D, PRIMITIVE2D_ID_SCENEPRIMITIVE2D)
-
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/primitive2d/sdrdecompositiontools2d.cxx b/drawinglayer/source/primitive2d/sdrdecompositiontools2d.cxx
deleted file mode 100644
index bde27c4796..0000000000
--- a/drawinglayer/source/primitive2d/sdrdecompositiontools2d.cxx
+++ /dev/null
@@ -1,127 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * The Contents of this file are made available subject to
- * the terms of GNU Lesser General Public License Version 2.1.
- *
- *
- * GNU Lesser General Public License Version 2.1
- * =============================================
- * Copyright 2005 by Sun Microsystems, Inc.
- * 901 San Antonio Road, Palo Alto, CA 94303, USA
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License version 2.1, as published by the Free Software Foundation.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/primitive2d/sdrdecompositiontools2d.hxx>
-#include <basegfx/polygon/b2dpolygon.hxx>
-#include <basegfx/polygon/b2dpolygontools.hxx>
-#include <basegfx/matrix/b2dhommatrix.hxx>
-#include <drawinglayer/primitive2d/polypolygonprimitive2d.hxx>
-#include <drawinglayer/primitive2d/hiddengeometryprimitive2d.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- Primitive2DReference createHiddenGeometryPrimitives2D(
- bool bFilled,
- const basegfx::B2DHomMatrix& rMatrix)
- {
- const basegfx::B2DPolygon aUnitOutline(basegfx::tools::createUnitPolygon());
-
- return createHiddenGeometryPrimitives2D(
- bFilled,
- basegfx::B2DPolyPolygon(aUnitOutline),
- rMatrix);
- }
-
- Primitive2DReference createHiddenGeometryPrimitives2D(
- bool bFilled,
- const basegfx::B2DPolyPolygon& rPolyPolygon)
- {
- return createHiddenGeometryPrimitives2D(
- bFilled,
- rPolyPolygon,
- basegfx::B2DHomMatrix());
- }
-
- Primitive2DReference createHiddenGeometryPrimitives2D(
- bool bFilled,
- const basegfx::B2DRange& rRange)
- {
- return createHiddenGeometryPrimitives2D(
- bFilled,
- rRange,
- basegfx::B2DHomMatrix());
- }
-
- Primitive2DReference createHiddenGeometryPrimitives2D(
- bool bFilled,
- const basegfx::B2DRange& rRange,
- const basegfx::B2DHomMatrix& rMatrix)
- {
- const basegfx::B2DPolyPolygon aOutline(basegfx::tools::createPolygonFromRect(rRange));
-
- return createHiddenGeometryPrimitives2D(
- bFilled,
- aOutline,
- rMatrix);
- }
-
- Primitive2DReference createHiddenGeometryPrimitives2D(
- bool bFilled,
- const basegfx::B2DPolyPolygon& rPolyPolygon,
- const basegfx::B2DHomMatrix& rMatrix)
- {
- // create fill or line primitive
- Primitive2DReference xReference;
- basegfx::B2DPolyPolygon aScaledOutline(rPolyPolygon);
- aScaledOutline.transform(rMatrix);
-
- if(bFilled)
- {
- xReference = new PolyPolygonColorPrimitive2D(
- basegfx::B2DPolyPolygon(aScaledOutline),
- basegfx::BColor(0.0, 0.0, 0.0));
- }
- else
- {
- const basegfx::BColor aGrayTone(0xc0 / 255.0, 0xc0 / 255.0, 0xc0 / 255.0);
-
- xReference = new PolyPolygonHairlinePrimitive2D(
- aScaledOutline,
- aGrayTone);
- }
-
- // create HiddenGeometryPrimitive2D
- return Primitive2DReference(
- new HiddenGeometryPrimitive2D(Primitive2DSequence(&xReference, 1)));
- }
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/primitive2d/shadowprimitive2d.cxx b/drawinglayer/source/primitive2d/shadowprimitive2d.cxx
deleted file mode 100644
index c0d436964e..0000000000
--- a/drawinglayer/source/primitive2d/shadowprimitive2d.cxx
+++ /dev/null
@@ -1,109 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/primitive2d/shadowprimitive2d.hxx>
-#include <basegfx/color/bcolormodifier.hxx>
-#include <drawinglayer/primitive2d/modifiedcolorprimitive2d.hxx>
-#include <drawinglayer/primitive2d/transformprimitive2d.hxx>
-#include <basegfx/tools/canvastools.hxx>
-#include <drawinglayer/primitive2d/transparenceprimitive2d.hxx>
-#include <drawinglayer/primitive2d/unifiedtransparenceprimitive2d.hxx>
-#include <drawinglayer/primitive2d/drawinglayer_primitivetypes2d.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-using namespace com::sun::star;
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- ShadowPrimitive2D::ShadowPrimitive2D(
- const basegfx::B2DHomMatrix& rShadowTransform,
- const basegfx::BColor& rShadowColor,
- const Primitive2DSequence& rChildren)
- : GroupPrimitive2D(rChildren),
- maShadowTransform(rShadowTransform),
- maShadowColor(rShadowColor)
- {
- }
-
- bool ShadowPrimitive2D::operator==(const BasePrimitive2D& rPrimitive) const
- {
- if(BasePrimitive2D::operator==(rPrimitive))
- {
- const ShadowPrimitive2D& rCompare = static_cast< const ShadowPrimitive2D& >(rPrimitive);
-
- return (getShadowTransform() == rCompare.getShadowTransform()
- && getShadowColor() == rCompare.getShadowColor());
- }
-
- return false;
- }
-
- basegfx::B2DRange ShadowPrimitive2D::getB2DRange(const geometry::ViewInformation2D& rViewInformation) const
- {
- basegfx::B2DRange aRetval(getB2DRangeFromPrimitive2DSequence(getChildren(), rViewInformation));
- aRetval.transform(getShadowTransform());
- return aRetval;
- }
-
- Primitive2DSequence ShadowPrimitive2D::get2DDecomposition(const geometry::ViewInformation2D& /*rViewInformation*/) const
- {
- Primitive2DSequence aRetval;
-
- if(getChildren().hasElements())
- {
- // create a modifiedColorPrimitive containing the shadow color and the content
- const basegfx::BColorModifier aBColorModifier(getShadowColor());
- const Primitive2DReference xRefA(new ModifiedColorPrimitive2D(getChildren(), aBColorModifier));
- const Primitive2DSequence aSequenceB(&xRefA, 1L);
-
- // build transformed primitiveVector with shadow offset and add to target
- const Primitive2DReference xRefB(new TransformPrimitive2D(getShadowTransform(), aSequenceB));
- aRetval = Primitive2DSequence(&xRefB, 1L);
- }
-
- return aRetval;
- }
-
- // provide unique ID
- ImplPrimitrive2DIDBlock(ShadowPrimitive2D, PRIMITIVE2D_ID_SHADOWPRIMITIVE2D)
-
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/primitive2d/structuretagprimitive2d.cxx b/drawinglayer/source/primitive2d/structuretagprimitive2d.cxx
deleted file mode 100644
index 4e26a06e02..0000000000
--- a/drawinglayer/source/primitive2d/structuretagprimitive2d.cxx
+++ /dev/null
@@ -1,62 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/primitive2d/structuretagprimitive2d.hxx>
-#include <drawinglayer/primitive2d/drawinglayer_primitivetypes2d.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-using namespace com::sun::star;
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- StructureTagPrimitive2D::StructureTagPrimitive2D(
- const vcl::PDFWriter::StructElement& rStructureElement,
- const Primitive2DSequence& rChildren)
- : GroupPrimitive2D(rChildren),
- maStructureElement(rStructureElement)
- {
- }
-
- // provide unique ID
- ImplPrimitrive2DIDBlock(StructureTagPrimitive2D, PRIMITIVE2D_ID_STRUCTURETAGPRIMITIVE2D)
-
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/primitive2d/textdecoratedprimitive2d.cxx b/drawinglayer/source/primitive2d/textdecoratedprimitive2d.cxx
deleted file mode 100644
index 6b5c4aab0f..0000000000
--- a/drawinglayer/source/primitive2d/textdecoratedprimitive2d.cxx
+++ /dev/null
@@ -1,610 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/primitive2d/textdecoratedprimitive2d.hxx>
-#include <drawinglayer/primitive2d/textlayoutdevice.hxx>
-#include <drawinglayer/primitive2d/polygonprimitive2d.hxx>
-#include <drawinglayer/attribute/strokeattribute.hxx>
-#include <drawinglayer/primitive2d/drawinglayer_primitivetypes2d.hxx>
-#include <basegfx/matrix/b2dhommatrixtools.hxx>
-#include <comphelper/processfactory.hxx>
-#include <com/sun/star/i18n/WordType.hpp>
-#include <drawinglayer/primitive2d/texteffectprimitive2d.hxx>
-#include <drawinglayer/primitive2d/shadowprimitive2d.hxx>
-#include <com/sun/star/i18n/XBreakIterator.hpp>
-#include <drawinglayer/primitive2d/transformprimitive2d.hxx>
-#include <drawinglayer/primitive2d/textlineprimitive2d.hxx>
-#include <drawinglayer/primitive2d/textstrikeoutprimitive2d.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- void TextDecoratedPortionPrimitive2D::impCreateGeometryContent(
- std::vector< Primitive2DReference >& rTarget,
- basegfx::tools::B2DHomMatrixBufferedOnDemandDecompose& rDecTrans,
- const String& rText,
- xub_StrLen aTextPosition,
- xub_StrLen aTextLength,
- const ::std::vector< double >& rDXArray,
- const attribute::FontAttribute& rFontAttribute) const
- {
- // create the SimpleTextPrimitive needed in any case
- rTarget.push_back(Primitive2DReference(
- new TextSimplePortionPrimitive2D(
- rDecTrans.getB2DHomMatrix(),
- rText,
- aTextPosition,
- aTextLength,
- rDXArray,
- rFontAttribute,
- getLocale(),
- getFontColor())));
-
- // see if something else needs to be done
- const bool bOverlineUsed(TEXT_LINE_NONE != getFontOverline());
- const bool bUnderlineUsed(TEXT_LINE_NONE != getFontUnderline());
- const bool bStrikeoutUsed(TEXT_STRIKEOUT_NONE != getTextStrikeout());
-
- if(bUnderlineUsed || bStrikeoutUsed || bOverlineUsed)
- {
- // common preparations
- TextLayouterDevice aTextLayouter;
-
- // TextLayouterDevice is needed to get metrics for text decorations like
- // underline/strikeout/emphasis marks from it. For setup, the font size is needed
- aTextLayouter.setFontAttribute(
- getFontAttribute(),
- rDecTrans.getScale().getX(),
- rDecTrans.getScale().getY(),
- getLocale());
-
- // get text width
- double fTextWidth(0.0);
-
- if(rDXArray.empty())
- {
- fTextWidth = aTextLayouter.getTextWidth(rText, aTextPosition, aTextLength);
- }
- else
- {
- fTextWidth = rDXArray.back() * rDecTrans.getScale().getX();
- const double fFontScaleX(rDecTrans.getScale().getX());
-
- if(!basegfx::fTools::equal(fFontScaleX, 1.0)
- && !basegfx::fTools::equalZero(fFontScaleX))
- {
- // need to take FontScaling out of the DXArray
- fTextWidth /= fFontScaleX;
- }
- }
-
- if(bOverlineUsed)
- {
- // create primitive geometry for overline
- rTarget.push_back(Primitive2DReference(
- new TextLinePrimitive2D(
- rDecTrans.getB2DHomMatrix(),
- fTextWidth,
- aTextLayouter.getOverlineOffset(),
- aTextLayouter.getOverlineHeight(),
- getFontOverline(),
- getOverlineColor())));
- }
-
- if(bUnderlineUsed)
- {
- // create primitive geometry for underline
- rTarget.push_back(Primitive2DReference(
- new TextLinePrimitive2D(
- rDecTrans.getB2DHomMatrix(),
- fTextWidth,
- aTextLayouter.getUnderlineOffset(),
- aTextLayouter.getUnderlineHeight(),
- getFontUnderline(),
- getTextlineColor())));
- }
-
- if(bStrikeoutUsed)
- {
- // create primitive geometry for strikeout
- if(TEXT_STRIKEOUT_SLASH == getTextStrikeout() || TEXT_STRIKEOUT_X == getTextStrikeout())
- {
- // strikeout with character
- const sal_Unicode aStrikeoutChar(TEXT_STRIKEOUT_SLASH == getTextStrikeout() ? '/' : 'X');
-
- rTarget.push_back(Primitive2DReference(
- new TextCharacterStrikeoutPrimitive2D(
- rDecTrans.getB2DHomMatrix(),
- fTextWidth,
- getFontColor(),
- aStrikeoutChar,
- getFontAttribute(),
- getLocale())));
- }
- else
- {
- // strikeout with geometry
- rTarget.push_back(Primitive2DReference(
- new TextGeometryStrikeoutPrimitive2D(
- rDecTrans.getB2DHomMatrix(),
- fTextWidth,
- getFontColor(),
- aTextLayouter.getUnderlineHeight(),
- aTextLayouter.getStrikeoutOffset(),
- getTextStrikeout())));
- }
- }
- }
-
- // TODO: Handle Font Emphasis Above/Below
- }
-
- void TextDecoratedPortionPrimitive2D::impCorrectTextBoundary(::com::sun::star::i18n::Boundary& rNextWordBoundary) const
- {
- // truncate aNextWordBoundary to min/max possible values. This is necessary since the word start may be
- // before/after getTextPosition() when a long string is the content and getTextPosition()
- // is right inside a word. Same for end.
- const sal_Int32 aMinPos(static_cast< sal_Int32 >(getTextPosition()));
- const sal_Int32 aMaxPos(aMinPos + static_cast< sal_Int32 >(getTextLength()));
-
- if(rNextWordBoundary.startPos < aMinPos)
- {
- rNextWordBoundary.startPos = aMinPos;
- }
- else if(rNextWordBoundary.startPos > aMaxPos)
- {
- rNextWordBoundary.startPos = aMaxPos;
- }
-
- if(rNextWordBoundary.endPos < aMinPos)
- {
- rNextWordBoundary.endPos = aMinPos;
- }
- else if(rNextWordBoundary.endPos > aMaxPos)
- {
- rNextWordBoundary.endPos = aMaxPos;
- }
- }
-
- void TextDecoratedPortionPrimitive2D::impSplitSingleWords(
- std::vector< Primitive2DReference >& rTarget,
- basegfx::tools::B2DHomMatrixBufferedOnDemandDecompose& rDecTrans) const
- {
- // break iterator support
- // made static so it only needs to be fetched once, even with many single
- // constructed VclMetafileProcessor2D. It's still incarnated on demand,
- // but exists for OOo runtime now by purpose.
- static ::com::sun::star::uno::Reference< ::com::sun::star::i18n::XBreakIterator > xLocalBreakIterator;
-
- if(!xLocalBreakIterator.is())
- {
- ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > xMSF(::comphelper::getProcessServiceFactory());
- xLocalBreakIterator.set(xMSF->createInstance(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.i18n.BreakIterator"))), ::com::sun::star::uno::UNO_QUERY);
- }
-
- if(xLocalBreakIterator.is() && getTextLength())
- {
- // init word iterator, get first word and truncate to possibilities
- ::com::sun::star::i18n::Boundary aNextWordBoundary(xLocalBreakIterator->getWordBoundary(
- getText(), getTextPosition(), getLocale(), ::com::sun::star::i18n::WordType::ANYWORD_IGNOREWHITESPACES, sal_True));
-
- if(aNextWordBoundary.endPos == getTextPosition())
- {
- // backward hit, force next word
- aNextWordBoundary = xLocalBreakIterator->getWordBoundary(
- getText(), getTextPosition() + 1, getLocale(), ::com::sun::star::i18n::WordType::ANYWORD_IGNOREWHITESPACES, sal_True);
- }
-
- impCorrectTextBoundary(aNextWordBoundary);
-
- // prepare new font attributes WITHOUT outline
- const attribute::FontAttribute aNewFontAttribute(
- getFontAttribute().getFamilyName(),
- getFontAttribute().getStyleName(),
- getFontAttribute().getWeight(),
- getFontAttribute().getSymbol(),
- getFontAttribute().getVertical(),
- getFontAttribute().getItalic(),
- getFontAttribute().getMonospaced(),
- false, // no outline anymore, handled locally
- getFontAttribute().getRTL(),
- getFontAttribute().getBiDiStrong());
-
- if(aNextWordBoundary.startPos == getTextPosition() && aNextWordBoundary.endPos == getTextLength())
- {
- // it IS only a single word, handle as one word
- impCreateGeometryContent(rTarget, rDecTrans, getText(), getTextPosition(), getTextLength(), getDXArray(), aNewFontAttribute);
- }
- else
- {
- // prepare TextLayouter
- const bool bNoDXArray(getDXArray().empty());
- TextLayouterDevice aTextLayouter;
-
- if(bNoDXArray)
- {
- // ..but only completely when no DXArray
- aTextLayouter.setFontAttribute(
- getFontAttribute(),
- rDecTrans.getScale().getX(),
- rDecTrans.getScale().getY(),
- getLocale());
- }
-
- // do iterate over single words
- while(aNextWordBoundary.startPos != aNextWordBoundary.endPos)
- {
- // prepare values for new portion
- const xub_StrLen nNewTextStart(static_cast< xub_StrLen >(aNextWordBoundary.startPos));
- const xub_StrLen nNewTextEnd(static_cast< xub_StrLen >(aNextWordBoundary.endPos));
-
- // prepare transform for the single word
- basegfx::B2DHomMatrix aNewTransform;
- ::std::vector< double > aNewDXArray;
- const bool bNewStartIsNotOldStart(nNewTextStart > getTextPosition());
-
- if(!bNoDXArray)
- {
- // prepare new DXArray for the single word
- aNewDXArray = ::std::vector< double >(
- getDXArray().begin() + static_cast< sal_uInt32 >(nNewTextStart - getTextPosition()),
- getDXArray().begin() + static_cast< sal_uInt32 >(nNewTextEnd - getTextPosition()));
- }
-
- if(bNewStartIsNotOldStart)
- {
- // needs to be moved to a new start position
- double fOffset(0.0);
-
- if(bNoDXArray)
- {
- // evaluate using TextLayouter
- fOffset = aTextLayouter.getTextWidth(getText(), getTextPosition(), nNewTextStart);
- }
- else
- {
- // get from DXArray
- const sal_uInt32 nIndex(static_cast< sal_uInt32 >(nNewTextStart - getTextPosition()));
- fOffset = getDXArray()[nIndex - 1];
- }
-
- // need offset without FontScale for building the new transformation. The
- // new transformation will be multiplied with the current text transformation
- // so FontScale would be double
- double fOffsetNoScale(fOffset);
- const double fFontScaleX(rDecTrans.getScale().getX());
-
- if(!basegfx::fTools::equal(fFontScaleX, 1.0)
- && !basegfx::fTools::equalZero(fFontScaleX))
- {
- fOffsetNoScale /= fFontScaleX;
- }
-
- // apply needed offset to transformation
- aNewTransform.translate(fOffsetNoScale, 0.0);
-
- if(!bNoDXArray)
- {
- // DXArray values need to be corrected with the offset, too. Here,
- // take the scaled offset since the DXArray is scaled
- const sal_uInt32 nArraySize(aNewDXArray.size());
-
- for(sal_uInt32 a(0); a < nArraySize; a++)
- {
- aNewDXArray[a] -= fOffset;
- }
- }
- }
-
- // add text transformation to new transformation
- aNewTransform *= rDecTrans.getB2DHomMatrix();
-
- // create geometry content for the single word. Do not forget
- // to use the new transformation
- basegfx::tools::B2DHomMatrixBufferedOnDemandDecompose aDecTrans(aNewTransform);
-
- impCreateGeometryContent(rTarget, aDecTrans, getText(), nNewTextStart,
- nNewTextEnd - nNewTextStart, aNewDXArray, aNewFontAttribute);
-
- if(aNextWordBoundary.endPos >= getTextPosition() + getTextLength())
- {
- // end reached
- aNextWordBoundary.startPos = aNextWordBoundary.endPos;
- }
- else
- {
- // get new word portion
- const sal_Int32 nLastEndPos(aNextWordBoundary.endPos);
-
- aNextWordBoundary = xLocalBreakIterator->getWordBoundary(
- getText(), aNextWordBoundary.endPos, getLocale(),
- ::com::sun::star::i18n::WordType::ANYWORD_IGNOREWHITESPACES, sal_True);
-
- if(nLastEndPos == aNextWordBoundary.endPos)
- {
- // backward hit, force next word
- aNextWordBoundary = xLocalBreakIterator->getWordBoundary(
- getText(), nLastEndPos + 1, getLocale(),
- ::com::sun::star::i18n::WordType::ANYWORD_IGNOREWHITESPACES, sal_True);
- }
-
- impCorrectTextBoundary(aNextWordBoundary);
- }
- }
- }
- }
- }
-
- Primitive2DSequence TextDecoratedPortionPrimitive2D::create2DDecomposition(const geometry::ViewInformation2D& /*rViewInformation*/) const
- {
- std::vector< Primitive2DReference > aNewPrimitives;
- basegfx::tools::B2DHomMatrixBufferedOnDemandDecompose aDecTrans(getTextTransform());
- Primitive2DSequence aRetval;
-
- // create basic geometry such as SimpleTextPrimitive, Overline, Underline,
- // Strikeout, etc...
- if(getWordLineMode())
- {
- // support for single word mode
- impSplitSingleWords(aNewPrimitives, aDecTrans);
- }
- else
- {
- // prepare new font attributes WITHOUT outline
- const attribute::FontAttribute aNewFontAttribute(
- getFontAttribute().getFamilyName(),
- getFontAttribute().getStyleName(),
- getFontAttribute().getWeight(),
- getFontAttribute().getSymbol(),
- getFontAttribute().getVertical(),
- getFontAttribute().getItalic(),
- false, // no outline anymore, handled locally
- getFontAttribute().getRTL(),
- getFontAttribute().getBiDiStrong());
-
- // handle as one word
- impCreateGeometryContent(aNewPrimitives, aDecTrans, getText(), getTextPosition(), getTextLength(), getDXArray(), aNewFontAttribute);
- }
-
- // convert to Primitive2DSequence
- const sal_uInt32 nMemberCount(aNewPrimitives.size());
-
- if(nMemberCount)
- {
- aRetval.realloc(nMemberCount);
-
- for(sal_uInt32 a(0); a < nMemberCount; a++)
- {
- aRetval[a] = aNewPrimitives[a];
- }
- }
-
- // Handle Shadow, Outline and TextRelief
- if(aRetval.hasElements())
- {
- // outline AND shadow depend on NO TextRelief (see dialog)
- const bool bHasTextRelief(TEXT_RELIEF_NONE != getTextRelief());
- const bool bHasShadow(!bHasTextRelief && getShadow());
- const bool bHasOutline(!bHasTextRelief && getFontAttribute().getOutline());
-
- if(bHasShadow || bHasTextRelief || bHasOutline)
- {
- Primitive2DReference aShadow;
-
- if(bHasShadow)
- {
- // create shadow with current content (in aRetval). Text shadow
- // is constant, relative to font size, rotated with the text and has a
- // constant color.
- // shadow parameter values
- static double fFactor(1.0 / 24.0);
- const double fTextShadowOffset(aDecTrans.getScale().getY() * fFactor);
- static basegfx::BColor aShadowColor(0.3, 0.3, 0.3);
-
- // preapare shadow transform matrix
- const basegfx::B2DHomMatrix aShadowTransform(basegfx::tools::createTranslateB2DHomMatrix(
- fTextShadowOffset, fTextShadowOffset));
-
- // create shadow primitive
- aShadow = Primitive2DReference(new ShadowPrimitive2D(
- aShadowTransform,
- aShadowColor,
- aRetval));
- }
-
- if(bHasTextRelief)
- {
- // create emboss using an own helper primitive since this will
- // be view-dependent
- const basegfx::BColor aBBlack(0.0, 0.0, 0.0);
- const bool bDefaultTextColor(aBBlack == getFontColor());
- TextEffectStyle2D aTextEffectStyle2D(TEXTEFFECTSTYLE2D_RELIEF_EMBOSSED);
-
- if(bDefaultTextColor)
- {
- if(TEXT_RELIEF_ENGRAVED == getTextRelief())
- {
- aTextEffectStyle2D = TEXTEFFECTSTYLE2D_RELIEF_ENGRAVED_DEFAULT;
- }
- else
- {
- aTextEffectStyle2D = TEXTEFFECTSTYLE2D_RELIEF_EMBOSSED_DEFAULT;
- }
- }
- else
- {
- if(TEXT_RELIEF_ENGRAVED == getTextRelief())
- {
- aTextEffectStyle2D = TEXTEFFECTSTYLE2D_RELIEF_ENGRAVED;
- }
- else
- {
- aTextEffectStyle2D = TEXTEFFECTSTYLE2D_RELIEF_EMBOSSED;
- }
- }
-
- Primitive2DReference aNewTextEffect(new TextEffectPrimitive2D(
- aRetval,
- aDecTrans.getTranslate(),
- aDecTrans.getRotate(),
- aTextEffectStyle2D));
- aRetval = Primitive2DSequence(&aNewTextEffect, 1);
- }
- else if(bHasOutline)
- {
- // create outline using an own helper primitive since this will
- // be view-dependent
- Primitive2DReference aNewTextEffect(new TextEffectPrimitive2D(
- aRetval,
- aDecTrans.getTranslate(),
- aDecTrans.getRotate(),
- TEXTEFFECTSTYLE2D_OUTLINE));
- aRetval = Primitive2DSequence(&aNewTextEffect, 1);
- }
-
- if(aShadow.is())
- {
- // put shadow in front if there is one to paint timely before
- // but placed behind content
- const Primitive2DSequence aContent(aRetval);
- aRetval = Primitive2DSequence(&aShadow, 1);
- appendPrimitive2DSequenceToPrimitive2DSequence(aRetval, aContent);
- }
- }
- }
-
- return aRetval;
- }
-
- TextDecoratedPortionPrimitive2D::TextDecoratedPortionPrimitive2D(
-
- // TextSimplePortionPrimitive2D parameters
- const basegfx::B2DHomMatrix& rNewTransform,
- const String& rText,
- xub_StrLen aTextPosition,
- xub_StrLen aTextLength,
- const ::std::vector< double >& rDXArray,
- const attribute::FontAttribute& rFontAttribute,
- const ::com::sun::star::lang::Locale& rLocale,
- const basegfx::BColor& rFontColor,
-
- // local parameters
- const basegfx::BColor& rOverlineColor,
- const basegfx::BColor& rTextlineColor,
- TextLine eFontOverline,
- TextLine eFontUnderline,
- bool bUnderlineAbove,
- TextStrikeout eTextStrikeout,
- bool bWordLineMode,
- TextEmphasisMark eTextEmphasisMark,
- bool bEmphasisMarkAbove,
- bool bEmphasisMarkBelow,
- TextRelief eTextRelief,
- bool bShadow)
- : TextSimplePortionPrimitive2D(rNewTransform, rText, aTextPosition, aTextLength, rDXArray, rFontAttribute, rLocale, rFontColor),
- maOverlineColor(rOverlineColor),
- maTextlineColor(rTextlineColor),
- meFontOverline(eFontOverline),
- meFontUnderline(eFontUnderline),
- meTextStrikeout(eTextStrikeout),
- meTextEmphasisMark(eTextEmphasisMark),
- meTextRelief(eTextRelief),
- mbUnderlineAbove(bUnderlineAbove),
- mbWordLineMode(bWordLineMode),
- mbEmphasisMarkAbove(bEmphasisMarkAbove),
- mbEmphasisMarkBelow(bEmphasisMarkBelow),
- mbShadow(bShadow)
- {
- }
-
- bool TextDecoratedPortionPrimitive2D::operator==(const BasePrimitive2D& rPrimitive) const
- {
- if(TextSimplePortionPrimitive2D::operator==(rPrimitive))
- {
- const TextDecoratedPortionPrimitive2D& rCompare = (TextDecoratedPortionPrimitive2D&)rPrimitive;
-
- return (getOverlineColor() == rCompare.getOverlineColor()
- && getTextlineColor() == rCompare.getTextlineColor()
- && getFontOverline() == rCompare.getFontOverline()
- && getFontUnderline() == rCompare.getFontUnderline()
- && getTextStrikeout() == rCompare.getTextStrikeout()
- && getTextEmphasisMark() == rCompare.getTextEmphasisMark()
- && getTextRelief() == rCompare.getTextRelief()
- && getUnderlineAbove() == rCompare.getUnderlineAbove()
- && getWordLineMode() == rCompare.getWordLineMode()
- && getEmphasisMarkAbove() == rCompare.getEmphasisMarkAbove()
- && getEmphasisMarkBelow() == rCompare.getEmphasisMarkBelow()
- && getShadow() == rCompare.getShadow());
- }
-
- return false;
- }
-
- // #i96475#
- // Added missing implementation. Decorations may (will) stick out of the text's
- // inking area, so add them if needed
- basegfx::B2DRange TextDecoratedPortionPrimitive2D::getB2DRange(const geometry::ViewInformation2D& rViewInformation) const
- {
- const bool bDecoratedIsNeeded(
- TEXT_LINE_NONE != getFontOverline()
- || TEXT_LINE_NONE != getFontUnderline()
- || TEXT_STRIKEOUT_NONE != getTextStrikeout()
- || TEXT_EMPHASISMARK_NONE != getTextEmphasisMark()
- || TEXT_RELIEF_NONE != getTextRelief()
- || getShadow());
-
- if(bDecoratedIsNeeded)
- {
- // decoration is used, fallback to BufferedDecompositionPrimitive2D::getB2DRange which uses
- // the own local decomposition for computation and thus creates all necessary
- // geometric objects
- return BufferedDecompositionPrimitive2D::getB2DRange(rViewInformation);
- }
- else
- {
- // no relevant decoration used, fallback to TextSimplePortionPrimitive2D::getB2DRange
- return TextSimplePortionPrimitive2D::getB2DRange(rViewInformation);
- }
- }
-
- // provide unique ID
- ImplPrimitrive2DIDBlock(TextDecoratedPortionPrimitive2D, PRIMITIVE2D_ID_TEXTDECORATEDPORTIONPRIMITIVE2D)
-
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/primitive2d/texteffectprimitive2d.cxx b/drawinglayer/source/primitive2d/texteffectprimitive2d.cxx
deleted file mode 100644
index cf29d00e3b..0000000000
--- a/drawinglayer/source/primitive2d/texteffectprimitive2d.cxx
+++ /dev/null
@@ -1,242 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/primitive2d/texteffectprimitive2d.hxx>
-#include <drawinglayer/geometry/viewinformation2d.hxx>
-#include <drawinglayer/primitive2d/modifiedcolorprimitive2d.hxx>
-#include <drawinglayer/primitive2d/transformprimitive2d.hxx>
-#include <drawinglayer/primitive2d/drawinglayer_primitivetypes2d.hxx>
-#include <basegfx/matrix/b2dhommatrixtools.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- static double fDiscreteSize(1.1);
-
- Primitive2DSequence TextEffectPrimitive2D::create2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const
- {
- Primitive2DSequence aRetval;
-
- // get the distance of one discrete units from target display. Use between 1.0 and sqrt(2) to
- // have good results on rotated objects, too
- const basegfx::B2DVector aDistance(rViewInformation.getInverseObjectToViewTransformation() *
- basegfx::B2DVector(fDiscreteSize, fDiscreteSize));
- const basegfx::B2DVector aDiagonalDistance(aDistance * (1.0 / 1.44));
-
- switch(getTextEffectStyle2D())
- {
- case TEXTEFFECTSTYLE2D_RELIEF_EMBOSSED:
- case TEXTEFFECTSTYLE2D_RELIEF_ENGRAVED:
- case TEXTEFFECTSTYLE2D_RELIEF_EMBOSSED_DEFAULT:
- case TEXTEFFECTSTYLE2D_RELIEF_ENGRAVED_DEFAULT:
- {
- // prepare transform of sub-group back to (0,0) and align to X-Axis
- basegfx::B2DHomMatrix aBackTransform(basegfx::tools::createTranslateB2DHomMatrix(
- -getRotationCenter().getX(), -getRotationCenter().getY()));
- aBackTransform.rotate(-getDirection());
-
- // prepare transform of sub-group back to it's position and rotation
- basegfx::B2DHomMatrix aForwardTransform(basegfx::tools::createRotateB2DHomMatrix(getDirection()));
- aForwardTransform.translate(getRotationCenter().getX(), getRotationCenter().getY());
-
- // create transformation for one discrete unit
- const bool bEmbossed(
- TEXTEFFECTSTYLE2D_RELIEF_EMBOSSED == getTextEffectStyle2D()
- || TEXTEFFECTSTYLE2D_RELIEF_EMBOSSED_DEFAULT == getTextEffectStyle2D());
- const bool bDefaultTextColor(
- TEXTEFFECTSTYLE2D_RELIEF_EMBOSSED_DEFAULT == getTextEffectStyle2D()
- || TEXTEFFECTSTYLE2D_RELIEF_ENGRAVED_DEFAULT == getTextEffectStyle2D());
- basegfx::B2DHomMatrix aTransform(aBackTransform);
- aRetval.realloc(2);
-
- if(bEmbossed)
- {
- // to bottom-right
- aTransform.translate(aDiagonalDistance.getX(), aDiagonalDistance.getY());
- }
- else
- {
- // to top-left
- aTransform.translate(-aDiagonalDistance.getX(), -aDiagonalDistance.getY());
- }
-
- aTransform *= aForwardTransform;
-
- if(bDefaultTextColor)
- {
- // emboss/engrave in black, original forced to white
- const basegfx::BColorModifier aBColorModifierToGray(basegfx::BColor(0.0));
- const Primitive2DReference xModifiedColor(new ModifiedColorPrimitive2D(getTextContent(), aBColorModifierToGray));
- aRetval[0] = Primitive2DReference(new TransformPrimitive2D(aTransform, Primitive2DSequence(&xModifiedColor, 1)));
-
- // add original, too
- const basegfx::BColorModifier aBColorModifierToWhite(basegfx::BColor(1.0));
- aRetval[1] = Primitive2DReference(new ModifiedColorPrimitive2D(getTextContent(), aBColorModifierToWhite));
- }
- else
- {
- // emboss/engrave in gray, keep original's color
- const basegfx::BColorModifier aBColorModifierToGray(basegfx::BColor(0.75)); // 192
- const Primitive2DReference xModifiedColor(new ModifiedColorPrimitive2D(getTextContent(), aBColorModifierToGray));
- aRetval[0] = Primitive2DReference(new TransformPrimitive2D(aTransform, Primitive2DSequence(&xModifiedColor, 1)));
-
- // add original, too
- aRetval[1] = Primitive2DReference(new GroupPrimitive2D(getTextContent()));
- }
-
- break;
- }
- case TEXTEFFECTSTYLE2D_OUTLINE:
- {
- // create transform primitives in all directions
- basegfx::B2DHomMatrix aTransform;
- aRetval.realloc(9);
-
- aTransform.set(0, 2, aDistance.getX());
- aTransform.set(1, 2, 0.0);
- aRetval[0] = Primitive2DReference(new TransformPrimitive2D(aTransform, getTextContent()));
-
- aTransform.set(0, 2, aDiagonalDistance.getX());
- aTransform.set(1, 2, aDiagonalDistance.getY());
- aRetval[1] = Primitive2DReference(new TransformPrimitive2D(aTransform, getTextContent()));
-
- aTransform.set(0, 2, 0.0);
- aTransform.set(1, 2, aDistance.getY());
- aRetval[2] = Primitive2DReference(new TransformPrimitive2D(aTransform, getTextContent()));
-
- aTransform.set(0, 2, -aDiagonalDistance.getX());
- aTransform.set(1, 2, aDiagonalDistance.getY());
- aRetval[3] = Primitive2DReference(new TransformPrimitive2D(aTransform, getTextContent()));
-
- aTransform.set(0, 2, -aDistance.getX());
- aTransform.set(1, 2, 0.0);
- aRetval[4] = Primitive2DReference(new TransformPrimitive2D(aTransform, getTextContent()));
-
- aTransform.set(0, 2, -aDiagonalDistance.getX());
- aTransform.set(1, 2, -aDiagonalDistance.getY());
- aRetval[5] = Primitive2DReference(new TransformPrimitive2D(aTransform, getTextContent()));
-
- aTransform.set(0, 2, 0.0);
- aTransform.set(1, 2, -aDistance.getY());
- aRetval[6] = Primitive2DReference(new TransformPrimitive2D(aTransform, getTextContent()));
-
- aTransform.set(0, 2, aDiagonalDistance.getX());
- aTransform.set(1, 2, -aDiagonalDistance.getY());
- aRetval[7] = Primitive2DReference(new TransformPrimitive2D(aTransform, getTextContent()));
-
- // at last, place original over it, but force to white
- const basegfx::BColorModifier aBColorModifierToWhite(basegfx::BColor(1.0, 1.0, 1.0));
- aRetval[8] = Primitive2DReference(new ModifiedColorPrimitive2D(getTextContent(), aBColorModifierToWhite));
-
- break;
- }
- }
-
- return aRetval;
- }
-
- TextEffectPrimitive2D::TextEffectPrimitive2D(
- const Primitive2DSequence& rTextContent,
- const basegfx::B2DPoint& rRotationCenter,
- double fDirection,
- TextEffectStyle2D eTextEffectStyle2D)
- : BufferedDecompositionPrimitive2D(),
- maTextContent(rTextContent),
- maRotationCenter(rRotationCenter),
- mfDirection(fDirection),
- meTextEffectStyle2D(eTextEffectStyle2D)
- {
- }
-
- bool TextEffectPrimitive2D::operator==(const BasePrimitive2D& rPrimitive) const
- {
- if(BasePrimitive2D::operator==(rPrimitive))
- {
- const TextEffectPrimitive2D& rCompare = (TextEffectPrimitive2D&)rPrimitive;
-
- return (getTextContent() == rCompare.getTextContent()
- && getRotationCenter() == rCompare.getRotationCenter()
- && getDirection() == rCompare.getDirection()
- && getTextEffectStyle2D() == rCompare.getTextEffectStyle2D());
- }
-
- return false;
- }
-
- basegfx::B2DRange TextEffectPrimitive2D::getB2DRange(const geometry::ViewInformation2D& rViewInformation) const
- {
- // get range of content and grow by used fDiscreteSize. That way it is not necessary to ask
- // the whole decomposition for it's ranges (which may be expensive with outline mode which
- // then will ask 9 times at nearly the same content. This may even be refined here using the
- // TextEffectStyle information, e.g. for TEXTEFFECTSTYLE2D_RELIEF the grow needs only to
- // be in two directions
- basegfx::B2DRange aRetval(getB2DRangeFromPrimitive2DSequence(getTextContent(), rViewInformation));
- aRetval.grow(fDiscreteSize);
-
- return aRetval;
- }
-
- Primitive2DSequence TextEffectPrimitive2D::get2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const
- {
- ::osl::MutexGuard aGuard( m_aMutex );
-
- if(getBuffered2DDecomposition().hasElements())
- {
- if(maLastObjectToViewTransformation != rViewInformation.getObjectToViewTransformation())
- {
- // conditions of last local decomposition have changed, delete
- const_cast< TextEffectPrimitive2D* >(this)->setBuffered2DDecomposition(Primitive2DSequence());
- }
- }
-
- if(!getBuffered2DDecomposition().hasElements())
- {
- // remember ViewRange and ViewTransformation
- const_cast< TextEffectPrimitive2D* >(this)->maLastObjectToViewTransformation = rViewInformation.getObjectToViewTransformation();
- }
-
- // use parent implementation
- return BufferedDecompositionPrimitive2D::get2DDecomposition(rViewInformation);
- }
-
- // provide unique ID
- ImplPrimitrive2DIDBlock(TextEffectPrimitive2D, PRIMITIVE2D_ID_TEXTEFFECTPRIMITIVE2D)
-
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/primitive2d/textenumsprimitive2d.cxx b/drawinglayer/source/primitive2d/textenumsprimitive2d.cxx
deleted file mode 100644
index 5247d4404e..0000000000
--- a/drawinglayer/source/primitive2d/textenumsprimitive2d.cxx
+++ /dev/null
@@ -1,124 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/primitive2d/textenumsprimitive2d.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- TextLine mapFontUnderlineToTextLine(FontUnderline eLineStyle)
- {
- switch(eLineStyle)
- {
- case UNDERLINE_SINGLE: return TEXT_LINE_SINGLE;
- case UNDERLINE_DOUBLE: return TEXT_LINE_DOUBLE;
- case UNDERLINE_DOTTED: return TEXT_LINE_DOTTED;
- case UNDERLINE_DASH: return TEXT_LINE_DASH;
- case UNDERLINE_LONGDASH: return TEXT_LINE_LONGDASH;
- case UNDERLINE_DASHDOT: return TEXT_LINE_DASHDOT;
- case UNDERLINE_DASHDOTDOT: return TEXT_LINE_DASHDOTDOT;
- case UNDERLINE_SMALLWAVE: return TEXT_LINE_SMALLWAVE;
- case UNDERLINE_WAVE: return TEXT_LINE_WAVE;
- case UNDERLINE_DOUBLEWAVE: return TEXT_LINE_DOUBLEWAVE;
- case UNDERLINE_BOLD: return TEXT_LINE_BOLD;
- case UNDERLINE_BOLDDOTTED: return TEXT_LINE_BOLDDOTTED;
- case UNDERLINE_BOLDDASH: return TEXT_LINE_BOLDDASH;
- case UNDERLINE_BOLDLONGDASH: return TEXT_LINE_BOLDLONGDASH;
- case UNDERLINE_BOLDDASHDOT: return TEXT_LINE_BOLDDASHDOT;
- case UNDERLINE_BOLDDASHDOTDOT: return TEXT_LINE_BOLDDASHDOTDOT;
- case UNDERLINE_BOLDWAVE: return TEXT_LINE_BOLDWAVE;
- // FontUnderline_FORCE_EQUAL_SIZE, UNDERLINE_DONTKNOW, UNDERLINE_NONE
- default: return TEXT_LINE_NONE;
- }
- }
-
- FontUnderline mapTextLineToFontUnderline(TextLine eLineStyle)
- {
- switch(eLineStyle)
- {
- default: /*TEXT_LINE_NONE*/ return UNDERLINE_NONE;
- case TEXT_LINE_SINGLE: return UNDERLINE_SINGLE;
- case TEXT_LINE_DOUBLE: return UNDERLINE_DOUBLE;
- case TEXT_LINE_DOTTED: return UNDERLINE_DOTTED;
- case TEXT_LINE_DASH: return UNDERLINE_DASH;
- case TEXT_LINE_LONGDASH: return UNDERLINE_LONGDASH;
- case TEXT_LINE_DASHDOT: return UNDERLINE_DASHDOT;
- case TEXT_LINE_DASHDOTDOT: return UNDERLINE_DASHDOTDOT;
- case TEXT_LINE_SMALLWAVE: return UNDERLINE_SMALLWAVE;
- case TEXT_LINE_WAVE: return UNDERLINE_WAVE;
- case TEXT_LINE_DOUBLEWAVE: return UNDERLINE_DOUBLEWAVE;
- case TEXT_LINE_BOLD: return UNDERLINE_BOLD;
- case TEXT_LINE_BOLDDOTTED: return UNDERLINE_BOLDDOTTED;
- case TEXT_LINE_BOLDDASH: return UNDERLINE_BOLDDASH;
- case TEXT_LINE_BOLDLONGDASH: return UNDERLINE_LONGDASH;
- case TEXT_LINE_BOLDDASHDOT: return UNDERLINE_BOLDDASHDOT;
- case TEXT_LINE_BOLDDASHDOTDOT:return UNDERLINE_BOLDDASHDOT;
- case TEXT_LINE_BOLDWAVE: return UNDERLINE_BOLDWAVE;
- }
- }
-
- TextStrikeout mapFontStrikeoutToTextStrikeout(FontStrikeout eFontStrikeout)
- {
- switch(eFontStrikeout)
- {
- case STRIKEOUT_SINGLE: return TEXT_STRIKEOUT_SINGLE;
- case STRIKEOUT_DOUBLE: return TEXT_STRIKEOUT_DOUBLE;
- case STRIKEOUT_BOLD: return TEXT_STRIKEOUT_BOLD;
- case STRIKEOUT_SLASH: return TEXT_STRIKEOUT_SLASH;
- case STRIKEOUT_X: return TEXT_STRIKEOUT_X;
- // FontStrikeout_FORCE_EQUAL_SIZE, STRIKEOUT_NONE, STRIKEOUT_DONTKNOW
- default: return TEXT_STRIKEOUT_NONE;
- }
- }
-
- FontStrikeout mapTextStrikeoutToFontStrikeout(TextStrikeout eTextStrikeout)
- {
- switch(eTextStrikeout)
- {
- default: /*case primitive2d::TEXT_STRIKEOUT_NONE*/ return STRIKEOUT_NONE;
- case TEXT_STRIKEOUT_SINGLE: return STRIKEOUT_SINGLE;
- case TEXT_STRIKEOUT_DOUBLE: return STRIKEOUT_DOUBLE;
- case TEXT_STRIKEOUT_BOLD: return STRIKEOUT_BOLD;
- case TEXT_STRIKEOUT_SLASH: return STRIKEOUT_SLASH;
- case TEXT_STRIKEOUT_X: return STRIKEOUT_X;
- }
- }
-
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/primitive2d/texthierarchyprimitive2d.cxx b/drawinglayer/source/primitive2d/texthierarchyprimitive2d.cxx
deleted file mode 100644
index 896b37252f..0000000000
--- a/drawinglayer/source/primitive2d/texthierarchyprimitive2d.cxx
+++ /dev/null
@@ -1,161 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/primitive2d/texthierarchyprimitive2d.hxx>
-#include <drawinglayer/primitive2d/drawinglayer_primitivetypes2d.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-using namespace com::sun::star;
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- TextHierarchyLinePrimitive2D::TextHierarchyLinePrimitive2D(const Primitive2DSequence& rChildren)
- : GroupPrimitive2D(rChildren)
- {
- }
-
- // provide unique ID
- ImplPrimitrive2DIDBlock(TextHierarchyLinePrimitive2D, PRIMITIVE2D_ID_TEXTHIERARCHYLINEPRIMITIVE2D)
-
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- TextHierarchyParagraphPrimitive2D::TextHierarchyParagraphPrimitive2D(const Primitive2DSequence& rChildren)
- : GroupPrimitive2D(rChildren)
- {
- }
-
- // provide unique ID
- ImplPrimitrive2DIDBlock(TextHierarchyParagraphPrimitive2D, PRIMITIVE2D_ID_TEXTHIERARCHYPARAGRAPHPRIMITIVE2D)
-
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- TextHierarchyBulletPrimitive2D::TextHierarchyBulletPrimitive2D(const Primitive2DSequence& rChildren)
- : GroupPrimitive2D(rChildren)
- {
- }
-
- // provide unique ID
- ImplPrimitrive2DIDBlock(TextHierarchyBulletPrimitive2D, PRIMITIVE2D_ID_TEXTHIERARCHYBULLETPRIMITIVE2D)
-
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- TextHierarchyBlockPrimitive2D::TextHierarchyBlockPrimitive2D(const Primitive2DSequence& rChildren)
- : GroupPrimitive2D(rChildren)
- {
- }
-
- // provide unique ID
- ImplPrimitrive2DIDBlock(TextHierarchyBlockPrimitive2D, PRIMITIVE2D_ID_TEXTHIERARCHYBLOCKPRIMITIVE2D)
-
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- TextHierarchyFieldPrimitive2D::TextHierarchyFieldPrimitive2D(
- const Primitive2DSequence& rChildren,
- const FieldType& rFieldType,
- const rtl::OUString& rString)
- : GroupPrimitive2D(rChildren),
- meType(rFieldType),
- maString(rString)
- {
- }
-
- bool TextHierarchyFieldPrimitive2D::operator==(const BasePrimitive2D& rPrimitive) const
- {
- if(GroupPrimitive2D::operator==(rPrimitive))
- {
- const TextHierarchyFieldPrimitive2D& rCompare = (TextHierarchyFieldPrimitive2D&)rPrimitive;
-
- return (getType() == rCompare.getType()
- && getString() == rCompare.getString());
- }
-
- return false;
- }
-
- // provide unique ID
- ImplPrimitrive2DIDBlock(TextHierarchyFieldPrimitive2D, PRIMITIVE2D_ID_TEXTHIERARCHYFIELDPRIMITIVE2D)
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- TextHierarchyEditPrimitive2D::TextHierarchyEditPrimitive2D(const Primitive2DSequence& rChildren)
- : GroupPrimitive2D(rChildren)
- {
- }
-
- // provide unique ID
- ImplPrimitrive2DIDBlock(TextHierarchyEditPrimitive2D, PRIMITIVE2D_ID_TEXTHIERARCHYEDITPRIMITIVE2D)
-
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/primitive2d/textlayoutdevice.cxx b/drawinglayer/source/primitive2d/textlayoutdevice.cxx
deleted file mode 100644
index 0c37200c77..0000000000
--- a/drawinglayer/source/primitive2d/textlayoutdevice.cxx
+++ /dev/null
@@ -1,503 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/primitive2d/textlayoutdevice.hxx>
-#include <comphelper/processfactory.hxx>
-#include <comphelper/scoped_disposing_ptr.hxx>
-#include <vcl/timer.hxx>
-#include <vcl/virdev.hxx>
-#include <vcl/font.hxx>
-#include <vcl/metric.hxx>
-#include <i18npool/mslangid.hxx>
-#include <drawinglayer/primitive2d/textprimitive2d.hxx>
-#include <vcl/svapp.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-// VDev RevDevice provider
-
-namespace
-{
- class ImpTimedRefDev;
-
- //the scoped_timed_RefDev owns a ImpTimeRefDev and releases it on dtor
- //or disposing of the default XComponentContext which causes the underlying
- //OutputDevice to get released
- //
- //The ImpTimerRefDev itself, if the timeout ever gets hit, will call
- //reset on the scoped_timed_RefDev to release the ImpTimerRefDev early
- //if its unused for a few minutes
- class scoped_timed_RefDev : public comphelper::scoped_disposing_ptr<ImpTimedRefDev>
- {
- public:
- scoped_timed_RefDev() : comphelper::scoped_disposing_ptr<ImpTimedRefDev>((::com::sun::star::uno::Reference<com::sun::star::lang::XComponent>(::comphelper::getProcessComponentContext(), ::com::sun::star::uno::UNO_QUERY_THROW)))
- {
- }
- };
-
- class the_scoped_timed_RefDev : public rtl::Static<scoped_timed_RefDev, the_scoped_timed_RefDev> {};
-
- class ImpTimedRefDev : public Timer
- {
- scoped_timed_RefDev& mrOwnerOfMe;
- VirtualDevice* mpVirDev;
- sal_uInt32 mnUseCount;
-
- public:
- ImpTimedRefDev(scoped_timed_RefDev& rOwnerofMe);
- ~ImpTimedRefDev();
- virtual void Timeout();
-
- VirtualDevice& acquireVirtualDevice();
- void releaseVirtualDevice();
- };
-
- ImpTimedRefDev::ImpTimedRefDev(scoped_timed_RefDev& rOwnerOfMe)
- : mrOwnerOfMe(rOwnerOfMe),
- mpVirDev(0L),
- mnUseCount(0L)
- {
- SetTimeout(3L * 60L * 1000L); // three minutes
- Start();
- }
-
- ImpTimedRefDev::~ImpTimedRefDev()
- {
- OSL_ENSURE(0L == mnUseCount, "destruction of a still used ImpTimedRefDev (!)");
- delete mpVirDev;
- }
-
- void ImpTimedRefDev::Timeout()
- {
- // for obvious reasons, do not call anything after this
- mrOwnerOfMe.reset();
- }
-
- VirtualDevice& ImpTimedRefDev::acquireVirtualDevice()
- {
- if(!mpVirDev)
- {
- mpVirDev = new VirtualDevice();
- mpVirDev->SetReferenceDevice( VirtualDevice::REFDEV_MODE_MSO1 );
- }
-
- if(!mnUseCount)
- {
- Stop();
- }
-
- mnUseCount++;
-
- return *mpVirDev;
- }
-
- void ImpTimedRefDev::releaseVirtualDevice()
- {
- OSL_ENSURE(mnUseCount, "mismatch call number to releaseVirtualDevice() (!)");
- mnUseCount--;
-
- if(!mnUseCount)
- {
- Start();
- }
- }
-} // end of anonymous namespace
-
-//////////////////////////////////////////////////////////////////////////////
-// access to one global ImpTimedRefDev incarnation in namespace drawinglayer::primitive
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- // static methods here
- VirtualDevice& acquireGlobalVirtualDevice()
- {
- scoped_timed_RefDev& rStdRefDevice = the_scoped_timed_RefDev::get();
-
- if(!rStdRefDevice)
- rStdRefDevice.reset(new ImpTimedRefDev(rStdRefDevice));
-
- return rStdRefDevice->acquireVirtualDevice();
- }
-
- void releaseGlobalVirtualDevice()
- {
- scoped_timed_RefDev& rStdRefDevice = the_scoped_timed_RefDev::get();
-
- OSL_ENSURE(rStdRefDevice, "releaseGlobalVirtualDevice() without prior acquireGlobalVirtualDevice() call(!)");
- rStdRefDevice->releaseVirtualDevice();
- }
-
- TextLayouterDevice::TextLayouterDevice()
- : mrDevice(acquireGlobalVirtualDevice())
- {
- }
-
- TextLayouterDevice::~TextLayouterDevice()
- {
- releaseGlobalVirtualDevice();
- }
-
- void TextLayouterDevice::setFont(const Font& rFont)
- {
- mrDevice.SetFont( rFont );
- }
-
- void TextLayouterDevice::setFontAttribute(
- const attribute::FontAttribute& rFontAttribute,
- double fFontScaleX,
- double fFontScaleY,
- const ::com::sun::star::lang::Locale& rLocale)
- {
- setFont(getVclFontFromFontAttribute(
- rFontAttribute,
- fFontScaleX,
- fFontScaleY,
- 0.0,
- rLocale));
- }
-
- double TextLayouterDevice::getOverlineOffset() const
- {
- const ::FontMetric& rMetric = mrDevice.GetFontMetric();
- double fRet = (rMetric.GetIntLeading() / 2.0) - rMetric.GetAscent();
- return fRet;
- }
-
- double TextLayouterDevice::getUnderlineOffset() const
- {
- const ::FontMetric& rMetric = mrDevice.GetFontMetric();
- double fRet = rMetric.GetDescent() / 2.0;
- return fRet;
- }
-
- double TextLayouterDevice::getStrikeoutOffset() const
- {
- const ::FontMetric& rMetric = mrDevice.GetFontMetric();
- double fRet = (rMetric.GetAscent() - rMetric.GetIntLeading()) / 3.0;
- return fRet;
- }
-
- double TextLayouterDevice::getOverlineHeight() const
- {
- const ::FontMetric& rMetric = mrDevice.GetFontMetric();
- double fRet = rMetric.GetIntLeading() / 2.5;
- return fRet;
- }
-
- double TextLayouterDevice::getUnderlineHeight() const
- {
- const ::FontMetric& rMetric = mrDevice.GetFontMetric();
- double fRet = rMetric.GetDescent() / 4.0;
- return fRet;
- }
-
- double TextLayouterDevice::getTextHeight() const
- {
- return mrDevice.GetTextHeight();
- }
-
- double TextLayouterDevice::getTextWidth(
- const String& rText,
- sal_uInt32 nIndex,
- sal_uInt32 nLength) const
- {
- return mrDevice.GetTextWidth(rText, nIndex, nLength);
- }
-
- bool TextLayouterDevice::getTextOutlines(
- basegfx::B2DPolyPolygonVector& rB2DPolyPolyVector,
- const String& rText,
- sal_uInt32 nIndex,
- sal_uInt32 nLength,
- const ::std::vector< double >& rDXArray) const
- {
- const sal_uInt32 nDXArrayCount(rDXArray.size());
- sal_uInt32 nTextLength(nLength);
- const sal_uInt32 nStringLength(rText.Len());
-
- if(nTextLength + nIndex > nStringLength)
- {
- nTextLength = nStringLength - nIndex;
- }
-
- if(nDXArrayCount)
- {
- OSL_ENSURE(nDXArrayCount == nTextLength, "DXArray size does not correspond to text portion size (!)");
- std::vector< sal_Int32 > aIntegerDXArray(nDXArrayCount);
-
- for(sal_uInt32 a(0); a < nDXArrayCount; a++)
- {
- aIntegerDXArray[a] = basegfx::fround(rDXArray[a]);
- }
-
- return mrDevice.GetTextOutlines(
- rB2DPolyPolyVector,
- rText,
- nIndex,
- nIndex,
- nLength,
- true,
- 0,
- &(aIntegerDXArray[0]));
- }
- else
- {
- return mrDevice.GetTextOutlines(
- rB2DPolyPolyVector,
- rText,
- nIndex,
- nIndex,
- nLength,
- true,
- 0,
- 0);
- }
- }
-
- basegfx::B2DRange TextLayouterDevice::getTextBoundRect(
- const String& rText,
- sal_uInt32 nIndex,
- sal_uInt32 nLength) const
- {
- sal_uInt32 nTextLength(nLength);
- const sal_uInt32 nStringLength(rText.Len());
-
- if(nTextLength + nIndex > nStringLength)
- {
- nTextLength = nStringLength - nIndex;
- }
-
- if(nTextLength)
- {
- Rectangle aRect;
-
- mrDevice.GetTextBoundRect(
- aRect,
- rText,
- nIndex,
- nIndex,
- nLength);
-
- // #i104432#, #i102556# take empty results into account
- if(!aRect.IsEmpty())
- {
- return basegfx::B2DRange(
- aRect.Left(), aRect.Top(),
- aRect.Right(), aRect.Bottom());
- }
- }
-
- return basegfx::B2DRange();
- }
-
- double TextLayouterDevice::getFontAscent() const
- {
- const ::FontMetric& rMetric = mrDevice.GetFontMetric();
- return rMetric.GetAscent();
- }
-
- double TextLayouterDevice::getFontDescent() const
- {
- const ::FontMetric& rMetric = mrDevice.GetFontMetric();
- return rMetric.GetDescent();
- }
-
- void TextLayouterDevice::addTextRectActions(
- const Rectangle& rRectangle,
- const String& rText,
- sal_uInt16 nStyle,
- GDIMetaFile& rGDIMetaFile) const
- {
- mrDevice.AddTextRectActions(
- rRectangle, rText, nStyle, rGDIMetaFile);
- }
-
- ::std::vector< double > TextLayouterDevice::getTextArray(
- const String& rText,
- sal_uInt32 nIndex,
- sal_uInt32 nLength) const
- {
- ::std::vector< double > aRetval;
- sal_uInt32 nTextLength(nLength);
- const sal_uInt32 nStringLength(rText.Len());
-
- if(nTextLength + nIndex > nStringLength)
- {
- nTextLength = nStringLength - nIndex;
- }
-
- if(nTextLength)
- {
- aRetval.reserve(nTextLength);
- ::std::vector<sal_Int32> aArray(nTextLength);
- mrDevice.GetTextArray(rText, &aArray[0], nIndex, nLength);
- aRetval.assign(aArray.begin(), aArray.end());
- }
-
- return aRetval;
- }
-
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// helper methods for vcl font handling
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- Font getVclFontFromFontAttribute(
- const attribute::FontAttribute& rFontAttribute,
- double fFontScaleX,
- double fFontScaleY,
- double fFontRotation,
- const ::com::sun::star::lang::Locale& rLocale)
- {
- // detect FontScaling
- const sal_uInt32 nHeight(basegfx::fround(fabs(fFontScaleY)));
- const sal_uInt32 nWidth(basegfx::fround(fabs(fFontScaleX)));
- const bool bFontIsScaled(nHeight != nWidth);
-
-#ifdef WIN32
- // for WIN32 systems, start with creating an unscaled font. If FontScaling
- // is wanted, that width needs to be adapted using FontMetric again to get a
- // width of the unscaled font
- Font aRetval(
- rFontAttribute.getFamilyName(),
- rFontAttribute.getStyleName(),
- Size(0, nHeight));
-#else
- // for non-WIN32 systems things are easier since these accept a Font creation
- // with initially nWidth != nHeight for FontScaling. Despite that, use zero for
- // FontWidth when no scaling is used to explicitely have that zero when e.g. the
- // Font would be recorded in a MetaFile (The MetaFile FontAction WILL record a
- // set FontWidth; import that in a WIN32 system, and trouble is there)
- Font aRetval(
- rFontAttribute.getFamilyName(),
- rFontAttribute.getStyleName(),
- Size(bFontIsScaled ? nWidth : 0, nHeight));
-#endif
- // define various other FontAttribute
- aRetval.SetAlign(ALIGN_BASELINE);
- aRetval.SetCharSet(rFontAttribute.getSymbol() ? RTL_TEXTENCODING_SYMBOL : RTL_TEXTENCODING_UNICODE);
- aRetval.SetVertical(rFontAttribute.getVertical() ? sal_True : sal_False);
- aRetval.SetWeight(static_cast<FontWeight>(rFontAttribute.getWeight()));
- aRetval.SetItalic(rFontAttribute.getItalic() ? ITALIC_NORMAL : ITALIC_NONE);
- aRetval.SetOutline(rFontAttribute.getOutline());
- aRetval.SetPitch(rFontAttribute.getMonospaced() ? PITCH_FIXED : PITCH_VARIABLE);
- aRetval.SetLanguage(MsLangId::convertLocaleToLanguage(rLocale));
-
-#ifdef WIN32
- // for WIN32 systems, correct the FontWidth if FontScaling is used
- if(bFontIsScaled && nHeight > 0)
- {
- const FontMetric aUnscaledFontMetric(Application::GetDefaultDevice()->GetFontMetric(aRetval));
-
- if(aUnscaledFontMetric.GetWidth() > 0)
- {
- const double fScaleFactor((double)nWidth / (double)nHeight);
- const sal_uInt32 nScaledWidth(basegfx::fround((double)aUnscaledFontMetric.GetWidth() * fScaleFactor));
- aRetval.SetWidth(nScaledWidth);
- }
- }
-#endif
- // handle FontRotation (if defined)
- if(!basegfx::fTools::equalZero(fFontRotation))
- {
- sal_Int16 aRotate10th((sal_Int16)(fFontRotation * (-1800.0/F_PI)));
- aRetval.SetOrientation(aRotate10th % 3600);
- }
-
- return aRetval;
- }
-
- attribute::FontAttribute getFontAttributeFromVclFont(
- basegfx::B2DVector& o_rSize,
- const Font& rFont,
- bool bRTL,
- bool bBiDiStrong)
- {
- const attribute::FontAttribute aRetval(
- rFont.GetName(),
- rFont.GetStyleName(),
- static_cast<sal_uInt16>(rFont.GetWeight()),
- RTL_TEXTENCODING_SYMBOL == rFont.GetCharSet(),
- rFont.IsVertical(),
- ITALIC_NONE != rFont.GetItalic(),
- PITCH_FIXED == rFont.GetPitch(),
- rFont.IsOutline(),
- bRTL,
- bBiDiStrong);
- // TODO: eKerning
-
- // set FontHeight and init to no FontScaling
- o_rSize.setY(rFont.GetSize().getHeight() > 0 ? rFont.GetSize().getHeight() : 0);
- o_rSize.setX(o_rSize.getY());
-
-#ifdef WIN32
- // for WIN32 systems, the FontScaling at the Font is detected by
- // checking that FontWidth != 0. When FontScaling is used, WIN32
- // needs to do extra stuff to detect the correct width (since it's
- // zero and not equal the font height) and it's relationship to
- // the height
- if(rFont.GetSize().getWidth() > 0)
- {
- Font aUnscaledFont(rFont);
- aUnscaledFont.SetWidth(0);
- const FontMetric aUnscaledFontMetric(Application::GetDefaultDevice()->GetFontMetric(aUnscaledFont));
-
- if(aUnscaledFontMetric.GetWidth() > 0)
- {
- const double fScaleFactor((double)rFont.GetSize().getWidth() / (double)aUnscaledFontMetric.GetWidth());
- o_rSize.setX(fScaleFactor * o_rSize.getY());
- }
- }
-#else
- // For non-WIN32 systems the detection is the same, but the value
- // is easier achieved since width == height is interpreted as no
- // scaling. Ergo, Width == 0 means width == height, and width != 0
- // means the scaling is in the direct relation of width to height
- if(rFont.GetSize().getWidth() > 0)
- {
- o_rSize.setX((double)rFont.GetSize().getWidth());
- }
-#endif
- return aRetval;
- }
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/primitive2d/textlineprimitive2d.cxx b/drawinglayer/source/primitive2d/textlineprimitive2d.cxx
deleted file mode 100644
index f04021c77f..0000000000
--- a/drawinglayer/source/primitive2d/textlineprimitive2d.cxx
+++ /dev/null
@@ -1,312 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/primitive2d/textlineprimitive2d.hxx>
-#include <drawinglayer/primitive2d/drawinglayer_primitivetypes2d.hxx>
-#include <drawinglayer/attribute/strokeattribute.hxx>
-#include <drawinglayer/attribute/lineattribute.hxx>
-#include <basegfx/matrix/b2dhommatrixtools.hxx>
-#include <drawinglayer/primitive2d/polygonprimitive2d.hxx>
-#include <drawinglayer/primitive2d/transformprimitive2d.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- Primitive2DSequence TextLinePrimitive2D::create2DDecomposition(const geometry::ViewInformation2D& /*rViewInformation*/) const
- {
- Primitive2DSequence xRetval;
-
- if(TEXT_LINE_NONE != getTextLine())
- {
- bool bDoubleLine(false);
- bool bWaveLine(false);
- bool bBoldLine(false);
- const int* pDotDashArray(0);
- basegfx::B2DLineJoin eLineJoin(basegfx::B2DLINEJOIN_NONE);
- double fOffset(getOffset());
- double fHeight(getHeight());
-
- static const int aDottedArray[] = { 1, 1, 0}; // DOTTED LINE
- static const int aDotDashArray[] = { 1, 1, 4, 1, 0}; // DASHDOT
- static const int aDashDotDotArray[] = { 1, 1, 1, 1, 4, 1, 0}; // DASHDOTDOT
- static const int aDashedArray[] = { 5, 2, 0}; // DASHED LINE
- static const int aLongDashArray[] = { 7, 2, 0}; // LONGDASH
-
- // get decomposition
- basegfx::B2DVector aScale, aTranslate;
- double fRotate, fShearX;
- getObjectTransformation().decompose(aScale, aTranslate, fRotate, fShearX);
-
- switch(getTextLine())
- {
- default: // case TEXT_LINE_SINGLE:
- {
- break;
- }
- case TEXT_LINE_DOUBLE:
- {
- bDoubleLine = true;
- break;
- }
- case TEXT_LINE_DOTTED:
- {
- pDotDashArray = aDottedArray;
- break;
- }
- case TEXT_LINE_DASH:
- {
- pDotDashArray = aDashedArray;
- break;
- }
- case TEXT_LINE_LONGDASH:
- {
- pDotDashArray = aLongDashArray;
- break;
- }
- case TEXT_LINE_DASHDOT:
- {
- pDotDashArray = aDotDashArray;
- break;
- }
- case TEXT_LINE_DASHDOTDOT:
- {
- pDotDashArray = aDashDotDotArray;
- break;
- }
- case TEXT_LINE_SMALLWAVE:
- {
- bWaveLine = true;
- break;
- }
- case TEXT_LINE_WAVE:
- {
- bWaveLine = true;
- break;
- }
- case TEXT_LINE_DOUBLEWAVE:
- {
- bDoubleLine = true;
- bWaveLine = true;
- break;
- }
- case TEXT_LINE_BOLD:
- {
- bBoldLine = true;
- break;
- }
- case TEXT_LINE_BOLDDOTTED:
- {
- bBoldLine = true;
- pDotDashArray = aDottedArray;
- break;
- }
- case TEXT_LINE_BOLDDASH:
- {
- bBoldLine = true;
- pDotDashArray = aDashedArray;
- break;
- }
- case TEXT_LINE_BOLDLONGDASH:
- {
- bBoldLine = true;
- pDotDashArray = aLongDashArray;
- break;
- }
- case TEXT_LINE_BOLDDASHDOT:
- {
- bBoldLine = true;
- pDotDashArray = aDotDashArray;
- break;
- }
- case TEXT_LINE_BOLDDASHDOTDOT:
- {
- bBoldLine = true;
- pDotDashArray = aDashDotDotArray;
- break;
- }
- case TEXT_LINE_BOLDWAVE:
- {
- bWaveLine = true;
- bBoldLine = true;
- break;
- }
- }
-
- if(bBoldLine)
- {
- fHeight *= 2.0;
- }
-
- if(bDoubleLine)
- {
- fOffset -= 0.50 * fHeight;
- fHeight *= 0.64;
- }
-
- if(bWaveLine)
- {
- eLineJoin = basegfx::B2DLINEJOIN_ROUND;
- fHeight *= 0.25;
- }
-
- // prepare Line and Stroke Attributes
- const attribute::LineAttribute aLineAttribute(getLineColor(), fHeight, eLineJoin);
- attribute::StrokeAttribute aStrokeAttribute;
-
- if(pDotDashArray)
- {
- ::std::vector< double > aDoubleArray;
-
- for(const int* p = pDotDashArray; *p; ++p)
- {
- aDoubleArray.push_back((double)(*p) * fHeight);
- }
-
- aStrokeAttribute = attribute::StrokeAttribute(aDoubleArray);
- }
-
- // create base polygon and new primitive
- basegfx::B2DPolygon aLine;
- Primitive2DReference aNewPrimitive;
-
- aLine.append(basegfx::B2DPoint(0.0, fOffset));
- aLine.append(basegfx::B2DPoint(getWidth(), fOffset));
-
- const basegfx::B2DHomMatrix aUnscaledTransform(
- basegfx::tools::createShearXRotateTranslateB2DHomMatrix(
- fShearX, fRotate, aTranslate));
-
- aLine.transform(aUnscaledTransform);
-
- if(bWaveLine)
- {
- double fWaveWidth(10.6 * fHeight);
-
- if(TEXT_LINE_SMALLWAVE == getTextLine())
- {
- fWaveWidth *= 0.7;
- }
- else if(TEXT_LINE_WAVE == getTextLine())
- {
- // extra multiply to get the same WaveWidth as with the bold version
- fWaveWidth *= 2.0;
- }
-
- aNewPrimitive = Primitive2DReference(new PolygonWavePrimitive2D(aLine, aLineAttribute, aStrokeAttribute, fWaveWidth, fWaveWidth * 0.5));
- }
- else
- {
- aNewPrimitive = Primitive2DReference(new PolygonStrokePrimitive2D(aLine, aLineAttribute, aStrokeAttribute));
- }
-
- // add primitive
- appendPrimitive2DReferenceToPrimitive2DSequence(xRetval, aNewPrimitive);
-
- if(bDoubleLine)
- {
- // double line, create 2nd primitive with offset using TransformPrimitive based on
- // already created NewPrimitive
- double fLineDist(2.3 * fHeight);
-
- if(bWaveLine)
- {
- fLineDist = 6.3 * fHeight;
- }
-
- // move base point of text to 0.0 and de-rotate
- basegfx::B2DHomMatrix aTransform(basegfx::tools::createTranslateB2DHomMatrix(
- -aTranslate.getX(), -aTranslate.getY()));
- aTransform.rotate(-fRotate);
-
- // translate in Y by offset
- aTransform.translate(0.0, fLineDist);
-
- // move back and rotate
- aTransform.rotate(fRotate);
- aTransform.translate(aTranslate.getX(), aTranslate.getY());
-
- // add transform primitive
- const Primitive2DSequence aContent(&aNewPrimitive, 1);
- appendPrimitive2DReferenceToPrimitive2DSequence(xRetval,
- Primitive2DReference(new TransformPrimitive2D(aTransform, aContent)));
- }
- }
-
- return xRetval;
- }
-
- TextLinePrimitive2D::TextLinePrimitive2D(
- const basegfx::B2DHomMatrix& rObjectTransformation,
- double fWidth,
- double fOffset,
- double fHeight,
- TextLine eTextLine,
- const basegfx::BColor& rLineColor)
- : BufferedDecompositionPrimitive2D(),
- maObjectTransformation(rObjectTransformation),
- mfWidth(fWidth),
- mfOffset(fOffset),
- mfHeight(fHeight),
- meTextLine(eTextLine),
- maLineColor(rLineColor)
- {
- }
-
- bool TextLinePrimitive2D::operator==( const BasePrimitive2D& rPrimitive ) const
- {
- if(BufferedDecompositionPrimitive2D::operator==(rPrimitive))
- {
- const TextLinePrimitive2D& rCompare = (TextLinePrimitive2D&)rPrimitive;
-
- return (getObjectTransformation() == rCompare.getObjectTransformation()
- && getWidth() == rCompare.getWidth()
- && getOffset() == rCompare.getOffset()
- && getHeight() == rCompare.getHeight()
- && getTextLine() == rCompare.getTextLine()
- && getLineColor() == rCompare.getLineColor());
- }
-
- return false;
- }
-
- // provide unique ID
- ImplPrimitrive2DIDBlock(TextLinePrimitive2D, PRIMITIVE2D_ID_TEXTLINEPRIMITIVE2D)
-
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/primitive2d/textprimitive2d.cxx b/drawinglayer/source/primitive2d/textprimitive2d.cxx
deleted file mode 100644
index fc5296e7d2..0000000000
--- a/drawinglayer/source/primitive2d/textprimitive2d.cxx
+++ /dev/null
@@ -1,348 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/primitive2d/textprimitive2d.hxx>
-#include <drawinglayer/primitive2d/textlayoutdevice.hxx>
-#include <basegfx/polygon/b2dpolypolygon.hxx>
-#include <drawinglayer/primitive2d/polypolygonprimitive2d.hxx>
-#include <drawinglayer/primitive2d/drawinglayer_primitivetypes2d.hxx>
-#include <drawinglayer/primitive2d/texteffectprimitive2d.hxx>
-#include <basegfx/matrix/b2dhommatrixtools.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-using namespace com::sun::star;
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace
-{
- // adapts fontScale for usage with TextLayouter. Input is rScale which is the extracted
- // scale from a text transformation. A copy is modified so that it contains only positive
- // scalings and XY-equal scalings to allow to get a non-X-scaled Vcl-Font for TextLayouter.
- // rScale is adapted accordingly to contain the corrected scale which would need to be
- // applied to e.g. outlines received from TextLayouter under usage of fontScale. This
- // includes Y-Scale, X-Scale-correction and mirrorings.
- basegfx::B2DVector getCorrectedScaleAndFontScale(basegfx::B2DVector& rScale)
- {
- // copy input value
- basegfx::B2DVector aFontScale(rScale);
-
- // correct FontHeight settings
- if(basegfx::fTools::equalZero(aFontScale.getY()))
- {
- // no font height; choose one and adapt scale to get back to original scaling
- static double fDefaultFontScale(100.0);
- rScale.setY(1.0 / fDefaultFontScale);
- aFontScale.setY(fDefaultFontScale);
- }
- else if(basegfx::fTools::less(aFontScale.getY(), 0.0))
- {
- // negative font height; invert and adapt scale to get back to original scaling
- aFontScale.setY(-aFontScale.getY());
- rScale.setY(-1.0);
- }
- else
- {
- // positive font height; adapt scale; scaling will be part of the polygons
- rScale.setY(1.0);
- }
-
- // correct FontWidth settings
- if(basegfx::fTools::equal(aFontScale.getX(), aFontScale.getY()))
- {
- // no FontScale, adapt scale
- rScale.setX(1.0);
- }
- else
- {
- // If FontScale is used, force to no FontScale to get a non-scaled VCL font.
- // Adapt scaling in X accordingly.
- rScale.setX(aFontScale.getX() / aFontScale.getY());
- aFontScale.setX(aFontScale.getY());
- }
-
- return aFontScale;
- }
-} // end of anonymous namespace
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- void TextSimplePortionPrimitive2D::getTextOutlinesAndTransformation(basegfx::B2DPolyPolygonVector& rTarget, basegfx::B2DHomMatrix& rTransformation) const
- {
- if(getTextLength())
- {
- // decompose object transformation to single values
- basegfx::B2DVector aScale, aTranslate;
- double fRotate, fShearX;
-
- // if decomposition returns false, create no geometry since e.g. scaling may
- // be zero
- if(getTextTransform().decompose(aScale, aTranslate, fRotate, fShearX))
- {
- // handle special case: If scale is negative in (x,y) (3rd quadrant), it can
- // be expressed as rotation by PI
- if(basegfx::fTools::less(aScale.getX(), 0.0) && basegfx::fTools::less(aScale.getY(), 0.0))
- {
- aScale = basegfx::absolute(aScale);
- fRotate += F_PI;
- }
-
- // for the TextLayouterDevice, it is necessary to have a scaling representing
- // the font size. Since we want to extract polygons here, it is okay to
- // work just with scaling and to ignore shear, rotation and translation,
- // all that can be applied to the polygons later
- const basegfx::B2DVector aFontScale(getCorrectedScaleAndFontScale(aScale));
-
- // prepare textlayoutdevice
- TextLayouterDevice aTextLayouter;
- aTextLayouter.setFontAttribute(
- getFontAttribute(),
- aFontScale.getX(),
- aFontScale.getY(),
- getLocale());
-
- // When getting outlines from stretched text (aScale.getX() != 1.0) it
- // is necessary to inverse-scale the DXArray (if used) to not get the
- // outlines already aligned to given, but wrong DXArray
- if(getDXArray().size() && !basegfx::fTools::equal(aScale.getX(), 1.0))
- {
- ::std::vector< double > aScaledDXArray = getDXArray();
- const double fDXArrayScale(1.0 / aScale.getX());
-
- for(sal_uInt32 a(0); a < aScaledDXArray.size(); a++)
- {
- aScaledDXArray[a] *= fDXArrayScale;
- }
-
- // get the text outlines
- aTextLayouter.getTextOutlines(
- rTarget,
- getText(),
- getTextPosition(),
- getTextLength(),
- aScaledDXArray);
- }
- else
- {
- // get the text outlines
- aTextLayouter.getTextOutlines(
- rTarget,
- getText(),
- getTextPosition(),
- getTextLength(),
- getDXArray());
- }
-
- // create primitives for the outlines
- const sal_uInt32 nCount(rTarget.size());
-
- if(nCount)
- {
- // prepare object transformation for polygons
- rTransformation = basegfx::tools::createScaleShearXRotateTranslateB2DHomMatrix(
- aScale, fShearX, fRotate, aTranslate);
- }
- }
- }
- }
-
- Primitive2DSequence TextSimplePortionPrimitive2D::create2DDecomposition(const geometry::ViewInformation2D& /*rViewInformation*/) const
- {
- Primitive2DSequence aRetval;
-
- if(getTextLength())
- {
- basegfx::B2DPolyPolygonVector aB2DPolyPolyVector;
- basegfx::B2DHomMatrix aPolygonTransform;
-
- // get text outlines and their object transformation
- getTextOutlinesAndTransformation(aB2DPolyPolyVector, aPolygonTransform);
-
- // create primitives for the outlines
- const sal_uInt32 nCount(aB2DPolyPolyVector.size());
-
- if(nCount)
- {
- // alloc space for the primitives
- aRetval.realloc(nCount);
-
- // color-filled polypolygons
- for(sal_uInt32 a(0L); a < nCount; a++)
- {
- // prepare polypolygon
- basegfx::B2DPolyPolygon& rPolyPolygon = aB2DPolyPolyVector[a];
- rPolyPolygon.transform(aPolygonTransform);
- aRetval[a] = new PolyPolygonColorPrimitive2D(rPolyPolygon, getFontColor());
- }
-
- if(getFontAttribute().getOutline())
- {
- // decompose polygon transformation to single values
- basegfx::B2DVector aScale, aTranslate;
- double fRotate, fShearX;
- aPolygonTransform.decompose(aScale, aTranslate, fRotate, fShearX);
-
- // create outline text effect with current content and replace
- Primitive2DReference aNewTextEffect(new TextEffectPrimitive2D(
- aRetval,
- aTranslate,
- fRotate,
- TEXTEFFECTSTYLE2D_OUTLINE));
-
- aRetval = Primitive2DSequence(&aNewTextEffect, 1);
- }
- }
- }
-
- return aRetval;
- }
-
- TextSimplePortionPrimitive2D::TextSimplePortionPrimitive2D(
- const basegfx::B2DHomMatrix& rNewTransform,
- const String& rText,
- xub_StrLen aTextPosition,
- xub_StrLen aTextLength,
- const ::std::vector< double >& rDXArray,
- const attribute::FontAttribute& rFontAttribute,
- const ::com::sun::star::lang::Locale& rLocale,
- const basegfx::BColor& rFontColor,
- bool bFilled,
- long nWidthToFill)
- : BufferedDecompositionPrimitive2D(),
- maTextTransform(rNewTransform),
- maText(rText),
- maTextPosition(aTextPosition),
- maTextLength(aTextLength),
- maDXArray(rDXArray),
- maFontAttribute(rFontAttribute),
- maLocale(rLocale),
- maFontColor(rFontColor),
- maB2DRange(),
- mbFilled(bFilled),
- mnWidthToFill(nWidthToFill)
- {
-#if OSL_DEBUG_LEVEL > 0
- const xub_StrLen aStringLength(getText().Len());
- OSL_ENSURE(aStringLength >= getTextPosition() && aStringLength >= getTextPosition() + getTextLength(),
- "TextSimplePortionPrimitive2D with text out of range (!)");
-#endif
- }
-
- bool LocalesAreEqual(const ::com::sun::star::lang::Locale& rA, const ::com::sun::star::lang::Locale& rB)
- {
- return (rA.Language == rB.Language
- && rA.Country == rB.Country
- && rA.Variant == rB.Variant);
- }
-
- bool TextSimplePortionPrimitive2D::operator==(const BasePrimitive2D& rPrimitive) const
- {
- if(BufferedDecompositionPrimitive2D::operator==(rPrimitive))
- {
- const TextSimplePortionPrimitive2D& rCompare = (TextSimplePortionPrimitive2D&)rPrimitive;
-
- return (getTextTransform() == rCompare.getTextTransform()
- && getText() == rCompare.getText()
- && getTextPosition() == rCompare.getTextPosition()
- && getTextLength() == rCompare.getTextLength()
- && getDXArray() == rCompare.getDXArray()
- && getFontAttribute() == rCompare.getFontAttribute()
- && LocalesAreEqual(getLocale(), rCompare.getLocale())
- && getFontColor() == rCompare.getFontColor()
- && mbFilled == rCompare.mbFilled
- && mnWidthToFill == rCompare.mnWidthToFill);
- }
-
- return false;
- }
-
- basegfx::B2DRange TextSimplePortionPrimitive2D::getB2DRange(const geometry::ViewInformation2D& /*rViewInformation*/) const
- {
- if(maB2DRange.isEmpty() && getTextLength())
- {
- // get TextBoundRect as base size
- // decompose object transformation to single values
- basegfx::B2DVector aScale, aTranslate;
- double fRotate, fShearX;
-
- if(getTextTransform().decompose(aScale, aTranslate, fRotate, fShearX))
- {
- // for the TextLayouterDevice, it is necessary to have a scaling representing
- // the font size. Since we want to extract polygons here, it is okay to
- // work just with scaling and to ignore shear, rotation and translation,
- // all that can be applied to the polygons later
- const basegfx::B2DVector aFontScale(getCorrectedScaleAndFontScale(aScale));
-
- // prepare textlayoutdevice
- TextLayouterDevice aTextLayouter;
- aTextLayouter.setFontAttribute(
- getFontAttribute(),
- aFontScale.getX(),
- aFontScale.getY(),
- getLocale());
-
- // get basic text range
- basegfx::B2DRange aNewRange(aTextLayouter.getTextBoundRect(getText(), getTextPosition(), getTextLength()));
-
- // #i104432#, #i102556# take empty results into account
- if(!aNewRange.isEmpty())
- {
- // prepare object transformation for range
- const basegfx::B2DHomMatrix aRangeTransformation(basegfx::tools::createScaleShearXRotateTranslateB2DHomMatrix(
- aScale, fShearX, fRotate, aTranslate));
-
- // apply range transformation to it
- aNewRange.transform(aRangeTransformation);
-
- // assign to buffered value
- const_cast< TextSimplePortionPrimitive2D* >(this)->maB2DRange = aNewRange;
- }
- }
- }
-
- return maB2DRange;
- }
-
- // provide unique ID
- ImplPrimitrive2DIDBlock(TextSimplePortionPrimitive2D, PRIMITIVE2D_ID_TEXTSIMPLEPORTIONPRIMITIVE2D)
-
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/primitive2d/textstrikeoutprimitive2d.cxx b/drawinglayer/source/primitive2d/textstrikeoutprimitive2d.cxx
deleted file mode 100644
index c278ba7494..0000000000
--- a/drawinglayer/source/primitive2d/textstrikeoutprimitive2d.cxx
+++ /dev/null
@@ -1,289 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/primitive2d/textstrikeoutprimitive2d.hxx>
-#include <drawinglayer/primitive2d/textlayoutdevice.hxx>
-#include <drawinglayer/primitive2d/textprimitive2d.hxx>
-#include <drawinglayer/primitive2d/drawinglayer_primitivetypes2d.hxx>
-#include <basegfx/polygon/b2dpolygon.hxx>
-#include <basegfx/matrix/b2dhommatrixtools.hxx>
-#include <drawinglayer/attribute/lineattribute.hxx>
-#include <drawinglayer/primitive2d/polygonprimitive2d.hxx>
-#include <drawinglayer/primitive2d/transformprimitive2d.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- BaseTextStrikeoutPrimitive2D::BaseTextStrikeoutPrimitive2D(
- const basegfx::B2DHomMatrix& rObjectTransformation,
- double fWidth,
- const basegfx::BColor& rFontColor)
- : BufferedDecompositionPrimitive2D(),
- maObjectTransformation(rObjectTransformation),
- mfWidth(fWidth),
- maFontColor(rFontColor)
- {
- }
-
- bool BaseTextStrikeoutPrimitive2D::operator==( const BasePrimitive2D& rPrimitive ) const
- {
- if(BufferedDecompositionPrimitive2D::operator==(rPrimitive))
- {
- const BaseTextStrikeoutPrimitive2D& rCompare = (BaseTextStrikeoutPrimitive2D&)rPrimitive;
-
- return (getObjectTransformation() == rCompare.getObjectTransformation()
- && getWidth() == rCompare.getWidth()
- && getFontColor() == rCompare.getFontColor());
- }
-
- return false;
- }
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- Primitive2DSequence TextCharacterStrikeoutPrimitive2D::create2DDecomposition(const geometry::ViewInformation2D& /*rViewInformation*/) const
- {
- // strikeout with character
- const String aSingleCharString(getStrikeoutChar());
- basegfx::B2DVector aScale, aTranslate;
- double fRotate, fShearX;
-
- // get decomposition
- getObjectTransformation().decompose(aScale, aTranslate, fRotate, fShearX);
-
- // prepare TextLayouter
- TextLayouterDevice aTextLayouter;
-
- aTextLayouter.setFontAttribute(
- getFontAttribute(),
- aScale.getX(),
- aScale.getY(),
- getLocale());
-
- const double fStrikeCharWidth(aTextLayouter.getTextWidth(aSingleCharString, 0, 1));
- const double fStrikeCharCount(fabs(getWidth()/fStrikeCharWidth));
- const sal_uInt32 nStrikeCharCount(static_cast< sal_uInt32 >(fStrikeCharCount + 0.5));
- std::vector<double> aDXArray(nStrikeCharCount);
- String aStrikeoutString;
-
- for(sal_uInt32 a(0); a < nStrikeCharCount; a++)
- {
- aStrikeoutString += aSingleCharString;
- aDXArray[a] = (a + 1) * fStrikeCharWidth;
- }
-
- Primitive2DReference xReference(
- new TextSimplePortionPrimitive2D(
- getObjectTransformation(),
- aStrikeoutString,
- 0,
- aStrikeoutString.Len(),
- aDXArray,
- getFontAttribute(),
- getLocale(),
- getFontColor()));
-
- return Primitive2DSequence(&xReference, 1);
- }
-
- TextCharacterStrikeoutPrimitive2D::TextCharacterStrikeoutPrimitive2D(
- const basegfx::B2DHomMatrix& rObjectTransformation,
- double fWidth,
- const basegfx::BColor& rFontColor,
- sal_Unicode aStrikeoutChar,
- const attribute::FontAttribute& rFontAttribute,
- const ::com::sun::star::lang::Locale& rLocale)
- : BaseTextStrikeoutPrimitive2D(rObjectTransformation, fWidth, rFontColor),
- maStrikeoutChar(aStrikeoutChar),
- maFontAttribute(rFontAttribute),
- maLocale(rLocale)
- {
- }
-
- bool TextCharacterStrikeoutPrimitive2D::operator==( const BasePrimitive2D& rPrimitive ) const
- {
- if(BaseTextStrikeoutPrimitive2D::operator==(rPrimitive))
- {
- const TextCharacterStrikeoutPrimitive2D& rCompare = (TextCharacterStrikeoutPrimitive2D&)rPrimitive;
-
- return (getStrikeoutChar() == rCompare.getStrikeoutChar()
- && getFontAttribute() == rCompare.getFontAttribute()
- && LocalesAreEqual(getLocale(), rCompare.getLocale()));
- }
-
- return false;
- }
-
- // provide unique ID
- ImplPrimitrive2DIDBlock(TextCharacterStrikeoutPrimitive2D, PRIMITIVE2D_ID_TEXTCHARACTERSTRIKEOUTPRIMITIVE2D)
-
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- Primitive2DSequence TextGeometryStrikeoutPrimitive2D::create2DDecomposition(const geometry::ViewInformation2D& /*rViewInformation*/) const
- {
- OSL_ENSURE(TEXT_STRIKEOUT_SLASH != getTextStrikeout() && TEXT_STRIKEOUT_X != getTextStrikeout(),
- "Wrong TEXT_STRIKEOUT type; a TextCharacterStrikeoutPrimitive2D should be used (!)");
-
- // strikeout with geometry
- double fStrikeoutHeight(getHeight());
- double fStrikeoutOffset(getOffset());
- bool bDoubleLine(false);
-
- // get decomposition
- basegfx::B2DVector aScale, aTranslate;
- double fRotate, fShearX;
- getObjectTransformation().decompose(aScale, aTranslate, fRotate, fShearX);
-
- // set line attribute
- switch(getTextStrikeout())
- {
- default : // case primitive2d::TEXT_STRIKEOUT_SINGLE:
- {
- break;
- }
- case primitive2d::TEXT_STRIKEOUT_DOUBLE:
- {
- bDoubleLine = true;
- break;
- }
- case primitive2d::TEXT_STRIKEOUT_BOLD:
- {
- fStrikeoutHeight *= 2.0;
- break;
- }
- }
-
- if(bDoubleLine)
- {
- fStrikeoutOffset -= 0.50 * fStrikeoutHeight;
- fStrikeoutHeight *= 0.64;
- }
-
- // create base polygon and new primitive
- basegfx::B2DPolygon aStrikeoutLine;
-
- aStrikeoutLine.append(basegfx::B2DPoint(0.0, -fStrikeoutOffset));
- aStrikeoutLine.append(basegfx::B2DPoint(getWidth(), -fStrikeoutOffset));
-
- const basegfx::B2DHomMatrix aUnscaledTransform(
- basegfx::tools::createShearXRotateTranslateB2DHomMatrix(
- fShearX, fRotate, aTranslate));
-
- aStrikeoutLine.transform(aUnscaledTransform);
-
- // add primitive
- const attribute::LineAttribute aLineAttribute(getFontColor(), fStrikeoutHeight, basegfx::B2DLINEJOIN_NONE);
- Primitive2DSequence xRetval(1);
- xRetval[0] = Primitive2DReference(new PolygonStrokePrimitive2D(aStrikeoutLine, aLineAttribute));
-
- if(bDoubleLine)
- {
- // double line, create 2nd primitive with offset using TransformPrimitive based on
- // already created NewPrimitive
- const double fLineDist(2.0 * fStrikeoutHeight);
-
- // move base point of text to 0.0 and de-rotate
- basegfx::B2DHomMatrix aTransform(basegfx::tools::createTranslateB2DHomMatrix(
- -aTranslate.getX(), -aTranslate.getY()));
- aTransform.rotate(-fRotate);
-
- // translate in Y by offset
- aTransform.translate(0.0, -fLineDist);
-
- // move back and rotate
- aTransform.rotate(fRotate);
- aTransform.translate(aTranslate.getX(), aTranslate.getY());
-
- // add transform primitive
- appendPrimitive2DReferenceToPrimitive2DSequence(xRetval,
- Primitive2DReference(
- new TransformPrimitive2D(
- aTransform,
- xRetval)));
- }
-
- return xRetval;
- }
-
- TextGeometryStrikeoutPrimitive2D::TextGeometryStrikeoutPrimitive2D(
- const basegfx::B2DHomMatrix& rObjectTransformation,
- double fWidth,
- const basegfx::BColor& rFontColor,
- double fHeight,
- double fOffset,
- TextStrikeout eTextStrikeout)
- : BaseTextStrikeoutPrimitive2D(rObjectTransformation, fWidth, rFontColor),
- mfHeight(fHeight),
- mfOffset(fOffset),
- meTextStrikeout(eTextStrikeout)
- {
- }
-
- bool TextGeometryStrikeoutPrimitive2D::operator==( const BasePrimitive2D& rPrimitive ) const
- {
- if(BaseTextStrikeoutPrimitive2D::operator==(rPrimitive))
- {
- const TextGeometryStrikeoutPrimitive2D& rCompare = (TextGeometryStrikeoutPrimitive2D&)rPrimitive;
-
- return (getHeight() == rCompare.getHeight()
- && getOffset() == rCompare.getOffset()
- && getTextStrikeout() == rCompare.getTextStrikeout());
- }
-
- return false;
- }
-
- // provide unique ID
- ImplPrimitrive2DIDBlock(TextGeometryStrikeoutPrimitive2D, PRIMITIVE2D_ID_TEXTGEOMETRYSTRIKEOUTPRIMITIVE2D)
-
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/primitive2d/transformprimitive2d.cxx b/drawinglayer/source/primitive2d/transformprimitive2d.cxx
deleted file mode 100644
index f8ad7e2e36..0000000000
--- a/drawinglayer/source/primitive2d/transformprimitive2d.cxx
+++ /dev/null
@@ -1,82 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/primitive2d/transformprimitive2d.hxx>
-#include <basegfx/tools/canvastools.hxx>
-#include <drawinglayer/primitive2d/drawinglayer_primitivetypes2d.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-using namespace com::sun::star;
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- TransformPrimitive2D::TransformPrimitive2D(
- const basegfx::B2DHomMatrix& rTransformation,
- const Primitive2DSequence& rChildren)
- : GroupPrimitive2D(rChildren),
- maTransformation(rTransformation)
- {
- }
-
- bool TransformPrimitive2D::operator==(const BasePrimitive2D& rPrimitive) const
- {
- if(GroupPrimitive2D::operator==(rPrimitive))
- {
- const TransformPrimitive2D& rCompare = static_cast< const TransformPrimitive2D& >(rPrimitive);
-
- return (getTransformation() == rCompare.getTransformation());
- }
-
- return false;
- }
-
- basegfx::B2DRange TransformPrimitive2D::getB2DRange(const geometry::ViewInformation2D& rViewInformation) const
- {
- basegfx::B2DRange aRetval(getB2DRangeFromPrimitive2DSequence(getChildren(), rViewInformation));
- aRetval.transform(getTransformation());
- return aRetval;
- }
-
- // provide unique ID
- ImplPrimitrive2DIDBlock(TransformPrimitive2D, PRIMITIVE2D_ID_TRANSFORMPRIMITIVE2D)
-
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/primitive2d/transparenceprimitive2d.cxx b/drawinglayer/source/primitive2d/transparenceprimitive2d.cxx
deleted file mode 100644
index c62699e070..0000000000
--- a/drawinglayer/source/primitive2d/transparenceprimitive2d.cxx
+++ /dev/null
@@ -1,75 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * The Contents of this file are made available subject to
- * the terms of GNU Lesser General Public License Version 2.1.
- *
- *
- * GNU Lesser General Public License Version 2.1
- * =============================================
- * Copyright 2005 by Sun Microsystems, Inc.
- * 901 San Antonio Road, Palo Alto, CA 94303, USA
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License version 2.1, as published by the Free Software Foundation.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/primitive2d/transparenceprimitive2d.hxx>
-#include <drawinglayer/primitive2d/drawinglayer_primitivetypes2d.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-using namespace com::sun::star;
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- TransparencePrimitive2D::TransparencePrimitive2D(
- const Primitive2DSequence& rChildren,
- const Primitive2DSequence& rTransparence)
- : GroupPrimitive2D(rChildren),
- maTransparence(rTransparence)
- {
- }
-
- bool TransparencePrimitive2D::operator==(const BasePrimitive2D& rPrimitive) const
- {
- if(GroupPrimitive2D::operator==(rPrimitive))
- {
- const TransparencePrimitive2D& rCompare = (TransparencePrimitive2D&)rPrimitive;
-
- return (getTransparence() == rCompare.getTransparence());
- }
-
- return false;
- }
-
- // provide unique ID
- ImplPrimitrive2DIDBlock(TransparencePrimitive2D, PRIMITIVE2D_ID_TRANSPARENCEPRIMITIVE2D)
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/primitive2d/unifiedtransparenceprimitive2d.cxx b/drawinglayer/source/primitive2d/unifiedtransparenceprimitive2d.cxx
deleted file mode 100644
index cedb90b188..0000000000
--- a/drawinglayer/source/primitive2d/unifiedtransparenceprimitive2d.cxx
+++ /dev/null
@@ -1,133 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * The Contents of this file are made available subject to
- * the terms of GNU Lesser General Public License Version 2.1.
- *
- *
- * GNU Lesser General Public License Version 2.1
- * =============================================
- * Copyright 2005 by Sun Microsystems, Inc.
- * 901 San Antonio Road, Palo Alto, CA 94303, USA
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License version 2.1, as published by the Free Software Foundation.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/primitive2d/unifiedtransparenceprimitive2d.hxx>
-#include <basegfx/polygon/b2dpolygon.hxx>
-#include <basegfx/polygon/b2dpolygontools.hxx>
-#include <basegfx/color/bcolor.hxx>
-#include <drawinglayer/primitive2d/polypolygonprimitive2d.hxx>
-#include <drawinglayer/primitive2d/transparenceprimitive2d.hxx>
-#include <drawinglayer/primitive2d/drawinglayer_primitivetypes2d.hxx>
-#include <drawinglayer/primitive2d/polygonprimitive2d.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-using namespace com::sun::star;
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- UnifiedTransparencePrimitive2D::UnifiedTransparencePrimitive2D(
- const Primitive2DSequence& rChildren,
- double fTransparence)
- : GroupPrimitive2D(rChildren),
- mfTransparence(fTransparence)
- {
- }
-
- bool UnifiedTransparencePrimitive2D::operator==(const BasePrimitive2D& rPrimitive) const
- {
- if(GroupPrimitive2D::operator==(rPrimitive))
- {
- const UnifiedTransparencePrimitive2D& rCompare = (UnifiedTransparencePrimitive2D&)rPrimitive;
-
- return (getTransparence() == rCompare.getTransparence());
- }
-
- return false;
- }
-
- basegfx::B2DRange UnifiedTransparencePrimitive2D::getB2DRange(const geometry::ViewInformation2D& rViewInformation) const
- {
- // do not use the fallback to decomposition here since for a correct BoundRect we also
- // need invisible (1.0 == getTransparence()) geometry; these would be deleted in the decomposition
- return getB2DRangeFromPrimitive2DSequence(getChildren(), rViewInformation);
- }
-
- Primitive2DSequence UnifiedTransparencePrimitive2D::get2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const
- {
- if(0.0 == getTransparence())
- {
- // no transparence used, so just use the content
- return getChildren();
- }
- else if(getTransparence() > 0.0 && getTransparence() < 1.0)
- {
- // The idea is to create a TransparencePrimitive2D with transparent content using a fill color
- // corresponding to the transparence value. Problem is that in most systems, the right
- // and bottom pixel array is not filled when filling polygons, thus this would not
- // always produce a complete transparent bitmap. There are some solutions:
- //
- // - Grow the used polygon range by one discrete unit in X and Y. This
- // will make the decomposition view-dependent.
- //
- // - For all filled polygon renderings, dra wthe polygon outline extra. This
- // would lead to unwanted side effects when using concatenated polygons.
- //
- // - At this decomposition, add a filled polygon and a hairline polygon. This
- // solution stays view-independent.
- //
- // I will take the last one here. The small overhead of two primitives will only be
- // used when UnifiedTransparencePrimitive2D is not handled directly.
- const basegfx::B2DRange aPolygonRange(getB2DRangeFromPrimitive2DSequence(getChildren(), rViewInformation));
- const basegfx::B2DPolygon aPolygon(basegfx::tools::createPolygonFromRect(aPolygonRange));
- const basegfx::BColor aGray(getTransparence(), getTransparence(), getTransparence());
- Primitive2DSequence aTransparenceContent(2);
-
- aTransparenceContent[0] = Primitive2DReference(new PolyPolygonColorPrimitive2D(basegfx::B2DPolyPolygon(aPolygon), aGray));
- aTransparenceContent[1] = Primitive2DReference(new PolygonHairlinePrimitive2D(aPolygon, aGray));
-
- // create sub-transparence group with a gray-colored rectangular fill polygon
- const Primitive2DReference xRefB(new TransparencePrimitive2D(getChildren(), aTransparenceContent));
- return Primitive2DSequence(&xRefB, 1L);
- }
- else
- {
- // completely transparent or invalid definition, add nothing
- return Primitive2DSequence();
- }
- }
-
- // provide unique ID
- ImplPrimitrive2DIDBlock(UnifiedTransparencePrimitive2D, PRIMITIVE2D_ID_UNIFIEDTRANSPARENCEPRIMITIVE2D)
-
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/primitive2d/wallpaperprimitive2d.cxx b/drawinglayer/source/primitive2d/wallpaperprimitive2d.cxx
deleted file mode 100644
index 625cd5db13..0000000000
--- a/drawinglayer/source/primitive2d/wallpaperprimitive2d.cxx
+++ /dev/null
@@ -1,272 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/primitive2d/wallpaperprimitive2d.hxx>
-#include <drawinglayer/primitive2d/bitmapprimitive2d.hxx>
-#include <drawinglayer/primitive2d/drawinglayer_primitivetypes2d.hxx>
-#include <drawinglayer/primitive2d/fillbitmapprimitive2d.hxx>
-#include <basegfx/polygon/b2dpolygontools.hxx>
-#include <basegfx/polygon/b2dpolygon.hxx>
-#include <drawinglayer/primitive2d/maskprimitive2d.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- Primitive2DSequence WallpaperBitmapPrimitive2D::create2DDecomposition(const geometry::ViewInformation2D& /*rViewInformation*/) const
- {
- Primitive2DSequence aRetval;
-
- if(!getLocalObjectRange().isEmpty() && !getBitmapEx().IsEmpty())
- {
- // get bitmap PIXEL size
- const Size& rPixelSize = getBitmapEx().GetSizePixel();
-
- if(rPixelSize.Width() > 0 && rPixelSize.Height() > 0)
- {
- if(WALLPAPER_SCALE == getWallpaperStyle())
- {
- // shortcut for scale; use simple BitmapPrimitive2D
- basegfx::B2DHomMatrix aObjectTransform;
-
- aObjectTransform.set(0, 0, getLocalObjectRange().getWidth());
- aObjectTransform.set(1, 1, getLocalObjectRange().getHeight());
- aObjectTransform.set(0, 2, getLocalObjectRange().getMinX());
- aObjectTransform.set(1, 2, getLocalObjectRange().getMinY());
-
- Primitive2DReference xReference(
- new BitmapPrimitive2D(
- getBitmapEx(),
- aObjectTransform));
-
- aRetval = Primitive2DSequence(&xReference, 1);
- }
- else
- {
- // transform to logic size
- basegfx::B2DHomMatrix aInverseViewTransformation(getViewTransformation());
- aInverseViewTransformation.invert();
- basegfx::B2DVector aLogicSize(rPixelSize.Width(), rPixelSize.Height());
- aLogicSize = aInverseViewTransformation * aLogicSize;
-
- // apply laout
- basegfx::B2DPoint aTargetTopLeft(getLocalObjectRange().getMinimum());
- bool bUseTargetTopLeft(true);
- bool bNeedsClipping(false);
-
- switch(getWallpaperStyle())
- {
- default: //case WALLPAPER_TILE :, also WALLPAPER_NULL and WALLPAPER_APPLICATIONGRADIENT
- {
- bUseTargetTopLeft = false;
- break;
- }
- case WALLPAPER_SCALE :
- {
- // handled by shortcut above
- break;
- }
- case WALLPAPER_TOPLEFT :
- {
- // nothing to do
- break;
- }
- case WALLPAPER_TOP :
- {
- const basegfx::B2DPoint aCenter(getLocalObjectRange().getCenter());
- aTargetTopLeft.setX(aCenter.getX() - (aLogicSize.getX() * 0.5));
- break;
- }
- case WALLPAPER_TOPRIGHT :
- {
- aTargetTopLeft.setX(getLocalObjectRange().getMaxX() - aLogicSize.getX());
- break;
- }
- case WALLPAPER_LEFT :
- {
- const basegfx::B2DPoint aCenter(getLocalObjectRange().getCenter());
- aTargetTopLeft.setY(aCenter.getY() - (aLogicSize.getY() * 0.5));
- break;
- }
- case WALLPAPER_CENTER :
- {
- const basegfx::B2DPoint aCenter(getLocalObjectRange().getCenter());
- aTargetTopLeft = aCenter - (aLogicSize * 0.5);
- break;
- }
- case WALLPAPER_RIGHT :
- {
- const basegfx::B2DPoint aCenter(getLocalObjectRange().getCenter());
- aTargetTopLeft.setX(getLocalObjectRange().getMaxX() - aLogicSize.getX());
- aTargetTopLeft.setY(aCenter.getY() - (aLogicSize.getY() * 0.5));
- break;
- }
- case WALLPAPER_BOTTOMLEFT :
- {
- aTargetTopLeft.setY(getLocalObjectRange().getMaxY() - aLogicSize.getY());
- break;
- }
- case WALLPAPER_BOTTOM :
- {
- const basegfx::B2DPoint aCenter(getLocalObjectRange().getCenter());
- aTargetTopLeft.setX(aCenter.getX() - (aLogicSize.getX() * 0.5));
- aTargetTopLeft.setY(getLocalObjectRange().getMaxY() - aLogicSize.getY());
- break;
- }
- case WALLPAPER_BOTTOMRIGHT :
- {
- aTargetTopLeft = getLocalObjectRange().getMaximum() - aLogicSize;
- break;
- }
- }
-
- if(bUseTargetTopLeft)
- {
- // fill target range
- const basegfx::B2DRange aTargetRange(aTargetTopLeft, aTargetTopLeft + aLogicSize);
-
- // create aligned, single BitmapPrimitive2D
- basegfx::B2DHomMatrix aObjectTransform;
-
- aObjectTransform.set(0, 0, aTargetRange.getWidth());
- aObjectTransform.set(1, 1, aTargetRange.getHeight());
- aObjectTransform.set(0, 2, aTargetRange.getMinX());
- aObjectTransform.set(1, 2, aTargetRange.getMinY());
-
- Primitive2DReference xReference(
- new BitmapPrimitive2D(
- getBitmapEx(),
- aObjectTransform));
- aRetval = Primitive2DSequence(&xReference, 1);
-
- // clip when not completely inside object range
- bNeedsClipping = !getLocalObjectRange().isInside(aTargetRange);
- }
- else
- {
- // WALLPAPER_TILE, WALLPAPER_NULL, WALLPAPER_APPLICATIONGRADIENT
- // convert to relative positions
- const basegfx::B2DVector aRelativeSize(
- aLogicSize.getX() / (getLocalObjectRange().getWidth() ? getLocalObjectRange().getWidth() : 1.0),
- aLogicSize.getY() / (getLocalObjectRange().getHeight() ? getLocalObjectRange().getHeight() : 1.0));
- basegfx::B2DPoint aRelativeTopLeft(0.0, 0.0);
-
- if(WALLPAPER_TILE != getWallpaperStyle())
- {
- aRelativeTopLeft.setX(0.5 - aRelativeSize.getX());
- aRelativeTopLeft.setY(0.5 - aRelativeSize.getY());
- }
-
- // prepare FillBitmapAttribute
- const attribute::FillBitmapAttribute aFillBitmapAttribute(
- getBitmapEx(),
- aRelativeTopLeft,
- aRelativeSize,
- true);
-
- // create ObjectTransform
- basegfx::B2DHomMatrix aObjectTransform;
-
- aObjectTransform.set(0, 0, getLocalObjectRange().getWidth());
- aObjectTransform.set(1, 1, getLocalObjectRange().getHeight());
- aObjectTransform.set(0, 2, getLocalObjectRange().getMinX());
- aObjectTransform.set(1, 2, getLocalObjectRange().getMinY());
-
- // create FillBitmapPrimitive
- const drawinglayer::primitive2d::Primitive2DReference xFillBitmap(
- new drawinglayer::primitive2d::FillBitmapPrimitive2D(
- aObjectTransform,
- aFillBitmapAttribute));
- aRetval = Primitive2DSequence(&xFillBitmap, 1);
-
- // always embed tiled fill to clipping
- bNeedsClipping = true;
- }
-
- if(bNeedsClipping)
- {
- // embed to clipping; this is necessary for tiled fills
- const basegfx::B2DPolyPolygon aPolyPolygon(
- basegfx::tools::createPolygonFromRect(getLocalObjectRange()));
- const drawinglayer::primitive2d::Primitive2DReference xClippedFill(
- new drawinglayer::primitive2d::MaskPrimitive2D(
- aPolyPolygon,
- aRetval));
- aRetval = Primitive2DSequence(&xClippedFill, 1);
- }
- }
- }
- }
-
- return aRetval;
- }
-
- WallpaperBitmapPrimitive2D::WallpaperBitmapPrimitive2D(
- const basegfx::B2DRange& rObjectRange,
- const BitmapEx& rBitmapEx,
- WallpaperStyle eWallpaperStyle)
- : ViewTransformationDependentPrimitive2D(),
- maObjectRange(rObjectRange),
- maBitmapEx(rBitmapEx),
- meWallpaperStyle(eWallpaperStyle)
- {
- }
-
- bool WallpaperBitmapPrimitive2D::operator==(const BasePrimitive2D& rPrimitive) const
- {
- if(ViewTransformationDependentPrimitive2D::operator==(rPrimitive))
- {
- const WallpaperBitmapPrimitive2D& rCompare = (WallpaperBitmapPrimitive2D&)rPrimitive;
-
- return (getLocalObjectRange() == rCompare.getLocalObjectRange()
- && getBitmapEx() == rCompare.getBitmapEx()
- && getWallpaperStyle() == rCompare.getWallpaperStyle());
- }
-
- return false;
- }
-
- basegfx::B2DRange WallpaperBitmapPrimitive2D::getB2DRange(const geometry::ViewInformation2D& /*rViewInformation*/) const
- {
- return getLocalObjectRange();
- }
-
- // provide unique ID
- ImplPrimitrive2DIDBlock(WallpaperBitmapPrimitive2D, PRIMITIVE2D_ID_WALLPAPERBITMAPPRIMITIVE2D)
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/primitive2d/wrongspellprimitive2d.cxx b/drawinglayer/source/primitive2d/wrongspellprimitive2d.cxx
deleted file mode 100644
index 2e38ed8bed..0000000000
--- a/drawinglayer/source/primitive2d/wrongspellprimitive2d.cxx
+++ /dev/null
@@ -1,125 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/primitive2d/wrongspellprimitive2d.hxx>
-#include <basegfx/polygon/b2dpolygon.hxx>
-#include <drawinglayer/primitive2d/polygonprimitive2d.hxx>
-#include <drawinglayer/primitive2d/drawinglayer_primitivetypes2d.hxx>
-#include <drawinglayer/geometry/viewinformation2d.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- Primitive2DSequence WrongSpellPrimitive2D::create2DDecomposition(const geometry::ViewInformation2D& /*rViewInformation*/) const
- {
- // ATM this decompose is view-independent, what the original VCL-Display is not. To mimic
- // the old behaviour here if wanted it is necessary to add get2DDecomposition and implement
- // it similar to the usage in e.g. HelplinePrimitive2D. Remembering the ViewTransformation
- // should be enough then.
- // The view-independent wavelines work well (if You ask me). Maybe the old VCL-Behaviour is only
- // in place because it was not possible/too expensive at that time to scale the wavelines with the
- // view...
- // With the VCL-PixelRenderer this will not even be used since it implements WrongSpellPrimitive2D
- // directly and mimics the old VCL-Display there. If You implemented a new renderer without
- // direct WrongSpellPrimitive2D support, You may want to do the described change here.
-
- // get the font height (part of scale), so decompose the matrix
- basegfx::B2DVector aScale, aTranslate;
- double fRotate, fShearX;
- getTransformation().decompose(aScale, aTranslate, fRotate, fShearX);
-
- // calculate distances based on a static default (to allow testing in debugger)
- static double fDefaultDistance(0.03);
- const double fFontHeight(aScale.getY());
- const double fUnderlineDistance(fFontHeight * fDefaultDistance);
- const double fWaveWidth(2.0 * fUnderlineDistance);
-
- // the Y-distance needs to be relativated to FontHeight since the points get
- // transformed with the transformation containing that scale already.
- const double fRelativeUnderlineDistance(basegfx::fTools::equalZero(aScale.getY()) ? 0.0 : fUnderlineDistance / aScale.getY());
- basegfx::B2DPoint aStart(getStart(), fRelativeUnderlineDistance);
- basegfx::B2DPoint aStop(getStop(), fRelativeUnderlineDistance);
- basegfx::B2DPolygon aPolygon;
-
- aPolygon.append(getTransformation() * aStart);
- aPolygon.append(getTransformation() * aStop);
-
- // prepare line attribute
- const attribute::LineAttribute aLineAttribute(getColor());
-
- // create the waveline primitive
- Primitive2DReference xPrimitive(new PolygonWavePrimitive2D(aPolygon, aLineAttribute, fWaveWidth, 0.5 * fWaveWidth));
- Primitive2DSequence xRetval(&xPrimitive, 1);
-
- return xRetval;
- }
-
- WrongSpellPrimitive2D::WrongSpellPrimitive2D(
- const basegfx::B2DHomMatrix& rTransformation,
- double fStart,
- double fStop,
- const basegfx::BColor& rColor)
- : BufferedDecompositionPrimitive2D(),
- maTransformation(rTransformation),
- mfStart(fStart),
- mfStop(fStop),
- maColor(rColor)
- {
- }
-
- bool WrongSpellPrimitive2D::operator==(const BasePrimitive2D& rPrimitive) const
- {
- if(BufferedDecompositionPrimitive2D::operator==(rPrimitive))
- {
- const WrongSpellPrimitive2D& rCompare = (WrongSpellPrimitive2D&)rPrimitive;
-
- return (getTransformation() == rCompare.getTransformation()
- && getStart() == rCompare.getStart()
- && getStop() == rCompare.getStop()
- && getColor() == rCompare.getColor());
- }
-
- return false;
- }
-
- // provide unique ID
- ImplPrimitrive2DIDBlock(WrongSpellPrimitive2D, PRIMITIVE2D_ID_WRONGSPELLPRIMITIVE2D)
-
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/primitive3d/baseprimitive3d.cxx b/drawinglayer/source/primitive3d/baseprimitive3d.cxx
deleted file mode 100644
index 022cd65d5a..0000000000
--- a/drawinglayer/source/primitive3d/baseprimitive3d.cxx
+++ /dev/null
@@ -1,281 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/primitive3d/baseprimitive3d.hxx>
-#include <drawinglayer/geometry/viewinformation3d.hxx>
-#include <basegfx/tools/canvastools.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-using namespace com::sun::star;
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive3d
- {
- BasePrimitive3D::BasePrimitive3D()
- : BasePrimitive3DImplBase(m_aMutex)
- {
- }
-
- BasePrimitive3D::~BasePrimitive3D()
- {
- }
-
- bool BasePrimitive3D::operator==( const BasePrimitive3D& rPrimitive ) const
- {
- return (getPrimitive3DID() == rPrimitive.getPrimitive3DID());
- }
-
- basegfx::B3DRange BasePrimitive3D::getB3DRange(const geometry::ViewInformation3D& rViewInformation) const
- {
- return getB3DRangeFromPrimitive3DSequence(get3DDecomposition(rViewInformation), rViewInformation);
- }
-
- Primitive3DSequence BasePrimitive3D::get3DDecomposition(const geometry::ViewInformation3D& /*rViewInformation*/) const
- {
- return Primitive3DSequence();
- }
-
- Primitive3DSequence SAL_CALL BasePrimitive3D::getDecomposition( const uno::Sequence< beans::PropertyValue >& rViewParameters ) throw ( uno::RuntimeException )
- {
- const geometry::ViewInformation3D aViewInformation(rViewParameters);
- return get3DDecomposition(rViewParameters);
- }
-
- com::sun::star::geometry::RealRectangle3D SAL_CALL BasePrimitive3D::getRange( const uno::Sequence< beans::PropertyValue >& rViewParameters ) throw ( uno::RuntimeException )
- {
- const geometry::ViewInformation3D aViewInformation(rViewParameters);
- return basegfx::unotools::rectangle3DFromB3DRectangle(getB3DRange(aViewInformation));
- }
- } // end of namespace primitive3d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive3d
- {
- Primitive3DSequence BufferedDecompositionPrimitive3D::create3DDecomposition(const geometry::ViewInformation3D& /*rViewInformation*/) const
- {
- return Primitive3DSequence();
- }
-
- BufferedDecompositionPrimitive3D::BufferedDecompositionPrimitive3D()
- : BasePrimitive3D(),
- maBuffered3DDecomposition()
- {
- }
-
- Primitive3DSequence BufferedDecompositionPrimitive3D::get3DDecomposition(const geometry::ViewInformation3D& rViewInformation) const
- {
- ::osl::MutexGuard aGuard( m_aMutex );
-
- if(!getBuffered3DDecomposition().hasElements())
- {
- const Primitive3DSequence aNewSequence(create3DDecomposition(rViewInformation));
- const_cast< BufferedDecompositionPrimitive3D* >(this)->setBuffered3DDecomposition(aNewSequence);
- }
-
- return getBuffered3DDecomposition();
- }
- } // end of namespace primitive3d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// tooling
-
-namespace drawinglayer
-{
- namespace primitive3d
- {
- // get range3D from a given Primitive3DReference
- basegfx::B3DRange getB3DRangeFromPrimitive3DReference(const Primitive3DReference& rCandidate, const geometry::ViewInformation3D& aViewInformation)
- {
- basegfx::B3DRange aRetval;
-
- if(rCandidate.is())
- {
- // try to get C++ implementation base
- const BasePrimitive3D* pCandidate(dynamic_cast< BasePrimitive3D* >(rCandidate.get()));
-
- if(pCandidate)
- {
- // use it if possible
- aRetval.expand(pCandidate->getB3DRange(aViewInformation));
- }
- else
- {
- // use UNO API call instead
- const uno::Sequence< beans::PropertyValue >& rViewParameters(aViewInformation.getViewInformationSequence());
- aRetval.expand(basegfx::unotools::b3DRectangleFromRealRectangle3D(rCandidate->getRange(rViewParameters)));
- }
- }
-
- return aRetval;
- }
-
- // get range3D from a given Primitive3DSequence
- basegfx::B3DRange getB3DRangeFromPrimitive3DSequence(const Primitive3DSequence& rCandidate, const geometry::ViewInformation3D& aViewInformation)
- {
- basegfx::B3DRange aRetval;
-
- if(rCandidate.hasElements())
- {
- const sal_Int32 nCount(rCandidate.getLength());
-
- for(sal_Int32 a(0L); a < nCount; a++)
- {
- aRetval.expand(getB3DRangeFromPrimitive3DReference(rCandidate[a], aViewInformation));
- }
- }
-
- return aRetval;
- }
-
- bool arePrimitive3DReferencesEqual(const Primitive3DReference& rxA, const Primitive3DReference& rxB)
- {
- const sal_Bool bAIs(rxA.is());
-
- if(bAIs != rxB.is())
- {
- return false;
- }
-
- if(!bAIs)
- {
- return true;
- }
-
- const BasePrimitive3D* pA(dynamic_cast< const BasePrimitive3D* >(rxA.get()));
- const BasePrimitive3D* pB(dynamic_cast< const BasePrimitive3D* >(rxB.get()));
- const bool bAEqualZero(pA == 0L);
-
- if(bAEqualZero != (pB == 0L))
- {
- return false;
- }
-
- if(bAEqualZero)
- {
- return false;
- }
-
- return (pA->operator==(*pB));
- }
-
- bool arePrimitive3DSequencesEqual(const Primitive3DSequence& rA, const Primitive3DSequence& rB)
- {
- const sal_Bool bAHasElements(rA.hasElements());
-
- if(bAHasElements != rB.hasElements())
- {
- return false;
- }
-
- if(!bAHasElements)
- {
- return true;
- }
-
- const sal_Int32 nCount(rA.getLength());
-
- if(nCount != rB.getLength())
- {
- return false;
- }
-
- for(sal_Int32 a(0L); a < nCount; a++)
- {
- if(!arePrimitive3DReferencesEqual(rA[a], rB[a]))
- {
- return false;
- }
- }
-
- return true;
- }
-
- // concatenate sequence
- void appendPrimitive3DSequenceToPrimitive3DSequence(Primitive3DSequence& rDest, const Primitive3DSequence& rSource)
- {
- if(rSource.hasElements())
- {
- if(rDest.hasElements())
- {
- const sal_Int32 nSourceCount(rSource.getLength());
- const sal_Int32 nDestCount(rDest.getLength());
- const sal_Int32 nTargetCount(nSourceCount + nDestCount);
- sal_Int32 nInsertPos(nDestCount);
-
- rDest.realloc(nTargetCount);
-
- for(sal_Int32 a(0L); a < nSourceCount; a++)
- {
- if(rSource[a].is())
- {
- rDest[nInsertPos++] = rSource[a];
- }
- }
-
- if(nInsertPos != nTargetCount)
- {
- rDest.realloc(nInsertPos);
- }
- }
- else
- {
- rDest = rSource;
- }
- }
- }
-
- // concatenate single Primitive3D
- void appendPrimitive3DReferenceToPrimitive3DSequence(Primitive3DSequence& rDest, const Primitive3DReference& rSource)
- {
- if(rSource.is())
- {
- const sal_Int32 nDestCount(rDest.getLength());
- rDest.realloc(nDestCount + 1L);
- rDest[nDestCount] = rSource;
- }
- }
-
- } // end of namespace primitive3d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/primitive3d/groupprimitive3d.cxx b/drawinglayer/source/primitive3d/groupprimitive3d.cxx
deleted file mode 100644
index 56b0dde494..0000000000
--- a/drawinglayer/source/primitive3d/groupprimitive3d.cxx
+++ /dev/null
@@ -1,82 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/primitive3d/groupprimitive3d.hxx>
-#include <drawinglayer/primitive3d/drawinglayer_primitivetypes3d.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-using namespace com::sun::star;
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive3d
- {
- GroupPrimitive3D::GroupPrimitive3D( const Primitive3DSequence& rChildren )
- : BasePrimitive3D(),
- maChildren(rChildren)
- {
- }
-
- /** The compare opertator uses the Sequence::==operator, so only checking if
- the rererences are equal. All non-equal references are interpreted as
- non-equal.
- */
- bool GroupPrimitive3D::operator==( const BasePrimitive3D& rPrimitive ) const
- {
- if(BasePrimitive3D::operator==(rPrimitive))
- {
- const GroupPrimitive3D& rCompare = static_cast< const GroupPrimitive3D& >(rPrimitive);
-
- return (arePrimitive3DSequencesEqual(getChildren(), rCompare.getChildren()));
- }
-
- return false;
- }
-
- /// default: just return children, so all renderers not supporting group will use it's content
- Primitive3DSequence GroupPrimitive3D::get3DDecomposition(const geometry::ViewInformation3D& /*rViewInformation*/) const
- {
- return getChildren();
- }
-
- // provide unique ID
- ImplPrimitrive3DIDBlock(GroupPrimitive3D, PRIMITIVE3D_ID_GROUPPRIMITIVE3D)
-
- } // end of namespace primitive3d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/primitive3d/hatchtextureprimitive3d.cxx b/drawinglayer/source/primitive3d/hatchtextureprimitive3d.cxx
deleted file mode 100644
index 519d2f8330..0000000000
--- a/drawinglayer/source/primitive3d/hatchtextureprimitive3d.cxx
+++ /dev/null
@@ -1,322 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/primitive3d/hatchtextureprimitive3d.hxx>
-#include <drawinglayer/primitive3d/polypolygonprimitive3d.hxx>
-#include <basegfx/polygon/b2dpolypolygon.hxx>
-#include <basegfx/polygon/b3dpolygon.hxx>
-#include <basegfx/polygon/b2dpolygon.hxx>
-#include <basegfx/polygon/b2dpolypolygontools.hxx>
-#include <basegfx/range/b2drange.hxx>
-#include <drawinglayer/texture/texture.hxx>
-#include <basegfx/polygon/b2dpolygonclipper.hxx>
-#include <basegfx/matrix/b3dhommatrix.hxx>
-#include <drawinglayer/primitive3d/polygonprimitive3d.hxx>
-#include <drawinglayer/primitive3d/drawinglayer_primitivetypes3d.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-using namespace com::sun::star;
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive3d
- {
- Primitive3DSequence HatchTexturePrimitive3D::impCreate3DDecomposition() const
- {
- Primitive3DSequence aRetval;
-
- if(getChildren().hasElements())
- {
- const Primitive3DSequence aSource(getChildren());
- const sal_uInt32 nSourceCount(aSource.getLength());
- std::vector< Primitive3DReference > aDestination;
-
- for(sal_uInt32 a(0); a < nSourceCount; a++)
- {
- // get reference
- const Primitive3DReference xReference(aSource[a]);
-
- if(xReference.is())
- {
- // try to cast to BasePrimitive2D implementation
- const BasePrimitive3D* pBasePrimitive = dynamic_cast< const BasePrimitive3D* >(xReference.get());
-
- if(pBasePrimitive)
- {
- // it is a BasePrimitive3D implementation, use getPrimitive3DID() call for switch
- // not all content is needed, remove transparencies and ModifiedColorPrimitives
- switch(pBasePrimitive->getPrimitive3DID())
- {
- case PRIMITIVE3D_ID_POLYPOLYGONMATERIALPRIMITIVE3D :
- {
- // polyPolygonMaterialPrimitive3D, check texturing and hatching
- const PolyPolygonMaterialPrimitive3D& rPrimitive = static_cast< const PolyPolygonMaterialPrimitive3D& >(*pBasePrimitive);
- const basegfx::B3DPolyPolygon aFillPolyPolygon(rPrimitive.getB3DPolyPolygon());
-
- if(maHatch.isFillBackground())
- {
- // add original primitive for background
- aDestination.push_back(xReference);
- }
-
- if(aFillPolyPolygon.areTextureCoordinatesUsed())
- {
- const sal_uInt32 nPolyCount(aFillPolyPolygon.count());
- basegfx::B2DPolyPolygon aTexPolyPolygon;
- basegfx::B2DPoint a2N;
- basegfx::B2DVector a2X, a2Y;
- basegfx::B3DPoint a3N;
- basegfx::B3DVector a3X, a3Y;
- bool b2N(false), b2X(false), b2Y(false);
-
- for(sal_uInt32 b(0); b < nPolyCount; b++)
- {
- const basegfx::B3DPolygon aPartPoly(aFillPolyPolygon.getB3DPolygon(b));
- const sal_uInt32 nPointCount(aPartPoly.count());
- basegfx::B2DPolygon aTexPolygon;
-
- for(sal_uInt32 c(0); c < nPointCount; c++)
- {
- const basegfx::B2DPoint a2Candidate(aPartPoly.getTextureCoordinate(c));
-
- if(!b2N)
- {
- a2N = a2Candidate;
- a3N = aPartPoly.getB3DPoint(c);
- b2N = true;
- }
- else if(!b2X && !a2N.equal(a2Candidate))
- {
- a2X = a2Candidate - a2N;
- a3X = aPartPoly.getB3DPoint(c) - a3N;
- b2X = true;
- }
- else if(!b2Y && !a2N.equal(a2Candidate) && !a2X.equal(a2Candidate))
- {
- a2Y = a2Candidate - a2N;
-
- const double fCross(a2X.cross(a2Y));
-
- if(!basegfx::fTools::equalZero(fCross))
- {
- a3Y = aPartPoly.getB3DPoint(c) - a3N;
- b2Y = true;
- }
- }
-
- aTexPolygon.append(a2Candidate);
- }
-
- aTexPolygon.setClosed(true);
- aTexPolyPolygon.append(aTexPolygon);
- }
-
- if(b2N && b2X && b2Y)
- {
- // found two linearly independent 2D vectors
- // get 2d range of texture coordinates
- const basegfx::B2DRange aOutlineRange(basegfx::tools::getRange(aTexPolyPolygon));
- const basegfx::BColor aHatchColor(getHatch().getColor());
- const double fAngle(getHatch().getAngle());
- ::std::vector< basegfx::B2DHomMatrix > aMatrices;
-
- // get hatch transformations
- switch(getHatch().getStyle())
- {
- case attribute::HATCHSTYLE_TRIPLE:
- {
- // rotated 45 degrees
- texture::GeoTexSvxHatch aHatch(aOutlineRange, getHatch().getDistance(), fAngle - F_PI4);
- aHatch.appendTransformations(aMatrices);
- }
- case attribute::HATCHSTYLE_DOUBLE:
- {
- // rotated 90 degrees
- texture::GeoTexSvxHatch aHatch(aOutlineRange, getHatch().getDistance(), fAngle - F_PI2);
- aHatch.appendTransformations(aMatrices);
- }
- case attribute::HATCHSTYLE_SINGLE:
- {
- // angle as given
- texture::GeoTexSvxHatch aHatch(aOutlineRange, getHatch().getDistance(), fAngle);
- aHatch.appendTransformations(aMatrices);
- }
- }
-
- // create geometry from unit line
- basegfx::B2DPolyPolygon a2DHatchLines;
- basegfx::B2DPolygon a2DUnitLine;
- a2DUnitLine.append(basegfx::B2DPoint(0.0, 0.0));
- a2DUnitLine.append(basegfx::B2DPoint(1.0, 0.0));
-
- for(sal_uInt32 c(0); c < aMatrices.size(); c++)
- {
- const basegfx::B2DHomMatrix& rMatrix = aMatrices[c];
- basegfx::B2DPolygon aNewLine(a2DUnitLine);
- aNewLine.transform(rMatrix);
- a2DHatchLines.append(aNewLine);
- }
-
- if(a2DHatchLines.count())
- {
- // clip against texture polygon
- a2DHatchLines = basegfx::tools::clipPolyPolygonOnPolyPolygon(a2DHatchLines, aTexPolyPolygon, true, true);
- }
-
- if(a2DHatchLines.count())
- {
- // create 2d matrix with 2d vectors as column vectors and 2d point as offset, this represents
- // a coordinate system transformation from unit coordinates to the new coordinate system
- basegfx::B2DHomMatrix a2D;
- a2D.set(0, 0, a2X.getX());
- a2D.set(1, 0, a2X.getY());
- a2D.set(0, 1, a2Y.getX());
- a2D.set(1, 1, a2Y.getY());
- a2D.set(0, 2, a2N.getX());
- a2D.set(1, 2, a2N.getY());
-
- // invert that transformation, so we have a back-transformation from texture coordinates
- // to unit coordinates
- a2D.invert();
- a2DHatchLines.transform(a2D);
-
- // expand back-transformated geometry tpo 3D
- basegfx::B3DPolyPolygon a3DHatchLines(basegfx::tools::createB3DPolyPolygonFromB2DPolyPolygon(a2DHatchLines, 0.0));
-
- // create 3d matrix with 3d vectors as column vectors (0,0,1 as Z) and 3d point as offset, this represents
- // a coordinate system transformation from unit coordinates to the object's 3d coordinate system
- basegfx::B3DHomMatrix a3D;
- a3D.set(0, 0, a3X.getX());
- a3D.set(1, 0, a3X.getY());
- a3D.set(2, 0, a3X.getZ());
- a3D.set(0, 1, a3Y.getX());
- a3D.set(1, 1, a3Y.getY());
- a3D.set(2, 1, a3Y.getZ());
- a3D.set(0, 3, a3N.getX());
- a3D.set(1, 3, a3N.getY());
- a3D.set(2, 3, a3N.getZ());
-
- // transform hatch lines to 3D object coordinates
- a3DHatchLines.transform(a3D);
-
- // build primitives from this geometry
- const sal_uInt32 nHatchLines(a3DHatchLines.count());
-
- for(sal_uInt32 d(0); d < nHatchLines; d++)
- {
- const Primitive3DReference xRef(new PolygonHairlinePrimitive3D(a3DHatchLines.getB3DPolygon(d), aHatchColor));
- aDestination.push_back(xRef);
- }
- }
- }
- }
-
- break;
- }
- default :
- {
- // add reference to result
- aDestination.push_back(xReference);
- break;
- }
- }
- }
- else
- {
- // unknown implementation, add to result
- aDestination.push_back(xReference);
- }
- }
- }
-
- // prepare return value
- const sal_uInt32 nDestSize(aDestination.size());
- aRetval.realloc(nDestSize);
-
- for(sal_uInt32 b(0); b < nDestSize; b++)
- {
- aRetval[b] = aDestination[b];
- }
- }
-
- return aRetval;
- }
-
- HatchTexturePrimitive3D::HatchTexturePrimitive3D(
- const attribute::FillHatchAttribute& rHatch,
- const Primitive3DSequence& rChildren,
- const basegfx::B2DVector& rTextureSize,
- bool bModulate,
- bool bFilter)
- : TexturePrimitive3D(rChildren, rTextureSize, bModulate, bFilter),
- maHatch(rHatch),
- maBuffered3DDecomposition()
- {
- }
-
- bool HatchTexturePrimitive3D::operator==(const BasePrimitive3D& rPrimitive) const
- {
- if(TexturePrimitive3D::operator==(rPrimitive))
- {
- const HatchTexturePrimitive3D& rCompare = (HatchTexturePrimitive3D&)rPrimitive;
-
- return (getHatch() == rCompare.getHatch());
- }
-
- return false;
- }
-
- Primitive3DSequence HatchTexturePrimitive3D::get3DDecomposition(const geometry::ViewInformation3D& /*rViewInformation*/) const
- {
- ::osl::MutexGuard aGuard( m_aMutex );
-
- if(!getBuffered3DDecomposition().hasElements())
- {
- const Primitive3DSequence aNewSequence(impCreate3DDecomposition());
- const_cast< HatchTexturePrimitive3D* >(this)->setBuffered3DDecomposition(aNewSequence);
- }
-
- return getBuffered3DDecomposition();
- }
-
- // provide unique ID
- ImplPrimitrive3DIDBlock(HatchTexturePrimitive3D, PRIMITIVE3D_ID_HATCHTEXTUREPRIMITIVE3D)
-
- } // end of namespace primitive3d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/primitive3d/hiddengeometryprimitive3d.cxx b/drawinglayer/source/primitive3d/hiddengeometryprimitive3d.cxx
deleted file mode 100644
index 0cf95b2ac8..0000000000
--- a/drawinglayer/source/primitive3d/hiddengeometryprimitive3d.cxx
+++ /dev/null
@@ -1,73 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * The Contents of this file are made available subject to
- * the terms of GNU Lesser General Public License Version 2.1.
- *
- *
- * GNU Lesser General Public License Version 2.1
- * =============================================
- * Copyright 2005 by Sun Microsystems, Inc.
- * 901 San Antonio Road, Palo Alto, CA 94303, USA
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License version 2.1, as published by the Free Software Foundation.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/primitive3d/hiddengeometryprimitive3d.hxx>
-#include <drawinglayer/primitive3d/drawinglayer_primitivetypes3d.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-using namespace com::sun::star;
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive3d
- {
- HiddenGeometryPrimitive3D::HiddenGeometryPrimitive3D(
- const Primitive3DSequence& rChildren)
- : GroupPrimitive3D(rChildren)
- {
- }
-
- basegfx::B3DRange HiddenGeometryPrimitive3D::getB3DRange(const geometry::ViewInformation3D& rViewInformation) const
- {
- return getB3DRangeFromPrimitive3DSequence(getChildren(), rViewInformation);
- }
-
- Primitive3DSequence HiddenGeometryPrimitive3D::get3DDecomposition(const geometry::ViewInformation3D& /*rViewInformation*/) const
- {
- // return empty sequence
- return Primitive3DSequence();
- }
-
- // provide unique ID
- ImplPrimitrive3DIDBlock(HiddenGeometryPrimitive3D, PRIMITIVE3D_ID_HIDDENGEOMETRYPRIMITIVE3D)
-
- } // end of namespace primitive3d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/primitive3d/modifiedcolorprimitive3d.cxx b/drawinglayer/source/primitive3d/modifiedcolorprimitive3d.cxx
deleted file mode 100644
index 8a5c98be4d..0000000000
--- a/drawinglayer/source/primitive3d/modifiedcolorprimitive3d.cxx
+++ /dev/null
@@ -1,74 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/primitive3d/modifiedcolorprimitive3d.hxx>
-#include <drawinglayer/primitive3d/drawinglayer_primitivetypes3d.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-using namespace com::sun::star;
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive3d
- {
- ModifiedColorPrimitive3D::ModifiedColorPrimitive3D(
- const Primitive3DSequence& rChildren,
- const basegfx::BColorModifier& rColorModifier)
- : GroupPrimitive3D(rChildren),
- maColorModifier(rColorModifier)
- {
- }
-
- bool ModifiedColorPrimitive3D::operator==(const BasePrimitive3D& rPrimitive) const
- {
- if(GroupPrimitive3D::operator==(rPrimitive))
- {
- const ModifiedColorPrimitive3D& rCompare = (ModifiedColorPrimitive3D&)rPrimitive;
-
- return (maColorModifier == rCompare.maColorModifier);
- }
-
- return false;
- }
-
- // provide unique ID
- ImplPrimitrive3DIDBlock(ModifiedColorPrimitive3D, PRIMITIVE3D_ID_MODIFIEDCOLORPRIMITIVE3D)
-
- } // end of namespace primitive3d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/primitive3d/polygonprimitive3d.cxx b/drawinglayer/source/primitive3d/polygonprimitive3d.cxx
deleted file mode 100644
index 1ecc2ab49e..0000000000
--- a/drawinglayer/source/primitive3d/polygonprimitive3d.cxx
+++ /dev/null
@@ -1,181 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/primitive3d/polygonprimitive3d.hxx>
-#include <basegfx/polygon/b3dpolygontools.hxx>
-#include <basegfx/tools/canvastools.hxx>
-#include <basegfx/polygon/b3dpolypolygontools.hxx>
-#include <drawinglayer/primitive3d/polygontubeprimitive3d.hxx>
-#include <drawinglayer/primitive3d/drawinglayer_primitivetypes3d.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-using namespace com::sun::star;
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive3d
- {
- PolygonHairlinePrimitive3D::PolygonHairlinePrimitive3D(
- const basegfx::B3DPolygon& rPolygon,
- const basegfx::BColor& rBColor)
- : BasePrimitive3D(),
- maPolygon(rPolygon),
- maBColor(rBColor)
- {
- }
-
- bool PolygonHairlinePrimitive3D::operator==(const BasePrimitive3D& rPrimitive) const
- {
- if(BasePrimitive3D::operator==(rPrimitive))
- {
- const PolygonHairlinePrimitive3D& rCompare = (PolygonHairlinePrimitive3D&)rPrimitive;
-
- return (getB3DPolygon() == rCompare.getB3DPolygon()
- && getBColor() == rCompare.getBColor());
- }
-
- return false;
- }
-
- basegfx::B3DRange PolygonHairlinePrimitive3D::getB3DRange(const geometry::ViewInformation3D& /*rViewInformation*/) const
- {
- return basegfx::tools::getRange(getB3DPolygon());
- }
-
- // provide unique ID
- ImplPrimitrive3DIDBlock(PolygonHairlinePrimitive3D, PRIMITIVE3D_ID_POLYGONHAIRLINEPRIMITIVE3D)
-
- } // end of namespace primitive3d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive3d
- {
- Primitive3DSequence PolygonStrokePrimitive3D::create3DDecomposition(const geometry::ViewInformation3D& /*rViewInformation*/) const
- {
- Primitive3DSequence aRetval;
-
- if(getB3DPolygon().count())
- {
- basegfx::B3DPolyPolygon aHairLinePolyPolygon;
-
- if(0.0 == getStrokeAttribute().getFullDotDashLen())
- {
- aHairLinePolyPolygon = basegfx::B3DPolyPolygon(getB3DPolygon());
- }
- else
- {
- // apply LineStyle
- basegfx::tools::applyLineDashing(getB3DPolygon(), getStrokeAttribute().getDotDashArray(), &aHairLinePolyPolygon, 0, getStrokeAttribute().getFullDotDashLen());
- }
-
- // prepare result
- aRetval.realloc(aHairLinePolyPolygon.count());
-
- if(getLineAttribute().getWidth())
- {
- // create fat line data
- const double fRadius(getLineAttribute().getWidth() / 2.0);
- const basegfx::B2DLineJoin aLineJoin(getLineAttribute().getLineJoin());
-
- for(sal_uInt32 a(0L); a < aHairLinePolyPolygon.count(); a++)
- {
- // create tube primitives
- const Primitive3DReference xRef(new PolygonTubePrimitive3D(aHairLinePolyPolygon.getB3DPolygon(a), getLineAttribute().getColor(), fRadius, aLineJoin));
- aRetval[a] = xRef;
- }
- }
- else
- {
- // create hair line data for all sub polygons
- for(sal_uInt32 a(0L); a < aHairLinePolyPolygon.count(); a++)
- {
- const basegfx::B3DPolygon aCandidate = aHairLinePolyPolygon.getB3DPolygon(a);
- const Primitive3DReference xRef(new PolygonHairlinePrimitive3D(aCandidate, getLineAttribute().getColor()));
- aRetval[a] = xRef;
- }
- }
- }
-
- return aRetval;
- }
-
- PolygonStrokePrimitive3D::PolygonStrokePrimitive3D(
- const basegfx::B3DPolygon& rPolygon,
- const attribute::LineAttribute& rLineAttribute,
- const attribute::StrokeAttribute& rStrokeAttribute)
- : BufferedDecompositionPrimitive3D(),
- maPolygon(rPolygon),
- maLineAttribute(rLineAttribute),
- maStrokeAttribute(rStrokeAttribute)
- {
- }
-
- PolygonStrokePrimitive3D::PolygonStrokePrimitive3D(
- const basegfx::B3DPolygon& rPolygon,
- const attribute::LineAttribute& rLineAttribute)
- : BufferedDecompositionPrimitive3D(),
- maPolygon(rPolygon),
- maLineAttribute(rLineAttribute),
- maStrokeAttribute()
- {
- }
-
- bool PolygonStrokePrimitive3D::operator==(const BasePrimitive3D& rPrimitive) const
- {
- if(BufferedDecompositionPrimitive3D::operator==(rPrimitive))
- {
- const PolygonStrokePrimitive3D& rCompare = (PolygonStrokePrimitive3D&)rPrimitive;
-
- return (getB3DPolygon() == rCompare.getB3DPolygon()
- && getLineAttribute() == rCompare.getLineAttribute()
- && getStrokeAttribute() == rCompare.getStrokeAttribute());
- }
-
- return false;
- }
-
- // provide unique ID
- ImplPrimitrive3DIDBlock(PolygonStrokePrimitive3D, PRIMITIVE3D_ID_POLYGONSTROKEPRIMITIVE3D)
-
- } // end of namespace primitive3d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/primitive3d/polygontubeprimitive3d.cxx b/drawinglayer/source/primitive3d/polygontubeprimitive3d.cxx
deleted file mode 100644
index dcc63dd1c3..0000000000
--- a/drawinglayer/source/primitive3d/polygontubeprimitive3d.cxx
+++ /dev/null
@@ -1,582 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/primitive3d/polygontubeprimitive3d.hxx>
-#include <drawinglayer/attribute/materialattribute3d.hxx>
-#include <basegfx/matrix/b3dhommatrix.hxx>
-#include <basegfx/polygon/b3dpolypolygon.hxx>
-#include <drawinglayer/primitive3d/polypolygonprimitive3d.hxx>
-#include <basegfx/polygon/b3dpolypolygontools.hxx>
-#include <drawinglayer/primitive3d/transformprimitive3d.hxx>
-#include <drawinglayer/primitive3d/drawinglayer_primitivetypes3d.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive3d
- {
- namespace // anonymous namespace
- {
- Primitive3DSequence getLineTubeSegments(
- sal_uInt32 nSegments,
- const attribute::MaterialAttribute3D& rMaterial)
- {
- // static data for buffered tube primitives
- static Primitive3DSequence aLineTubeList;
- static sal_uInt32 nLineTubeSegments(0L);
- static attribute::MaterialAttribute3D aLineMaterial;
-
- // may exclusively change static data, use mutex
- ::osl::Mutex m_mutex;
-
- if(nSegments != nLineTubeSegments || !(rMaterial == aLineMaterial))
- {
- nLineTubeSegments = nSegments;
- aLineMaterial = rMaterial;
- aLineTubeList = Primitive3DSequence();
- }
-
- if(!aLineTubeList.hasElements() && 0L != nLineTubeSegments)
- {
- const basegfx::B3DPoint aLeft(0.0, 0.0, 0.0);
- const basegfx::B3DPoint aRight(1.0, 0.0, 0.0);
- basegfx::B3DPoint aLastLeft(0.0, 1.0, 0.0);
- basegfx::B3DPoint aLastRight(1.0, 1.0, 0.0);
- basegfx::B3DHomMatrix aRot;
- aRot.rotate(F_2PI / (double)nLineTubeSegments, 0.0, 0.0);
- aLineTubeList.realloc(nLineTubeSegments);
-
- for(sal_uInt32 a(0L); a < nLineTubeSegments; a++)
- {
- const basegfx::B3DPoint aNextLeft(aRot * aLastLeft);
- const basegfx::B3DPoint aNextRight(aRot * aLastRight);
- basegfx::B3DPolygon aNewPolygon;
-
- aNewPolygon.append(aNextLeft);
- aNewPolygon.setNormal(0L, basegfx::B3DVector(aNextLeft - aLeft));
-
- aNewPolygon.append(aLastLeft);
- aNewPolygon.setNormal(1L, basegfx::B3DVector(aLastLeft - aLeft));
-
- aNewPolygon.append(aLastRight);
- aNewPolygon.setNormal(2L, basegfx::B3DVector(aLastRight - aRight));
-
- aNewPolygon.append(aNextRight);
- aNewPolygon.setNormal(3L, basegfx::B3DVector(aNextRight - aRight));
-
- aNewPolygon.setClosed(true);
-
- const basegfx::B3DPolyPolygon aNewPolyPolygon(aNewPolygon);
- const Primitive3DReference xRef(new PolyPolygonMaterialPrimitive3D(aNewPolyPolygon, aLineMaterial, false));
- aLineTubeList[a] = xRef;
-
- aLastLeft = aNextLeft;
- aLastRight = aNextRight;
- }
- }
-
- return aLineTubeList;
- }
-
- Primitive3DSequence getLineCapSegments(
- sal_uInt32 nSegments,
- const attribute::MaterialAttribute3D& rMaterial)
- {
- // static data for buffered tube primitives
- static Primitive3DSequence aLineCapList;
- static sal_uInt32 nLineCapSegments(0L);
- static attribute::MaterialAttribute3D aLineMaterial;
-
- // may exclusively change static data, use mutex
- ::osl::Mutex m_mutex;
-
- if(nSegments != nLineCapSegments || !(rMaterial == aLineMaterial))
- {
- nLineCapSegments = nSegments;
- aLineMaterial = rMaterial;
- aLineCapList = Primitive3DSequence();
- }
-
- if(!aLineCapList.hasElements() && 0L != nLineCapSegments)
- {
- const basegfx::B3DPoint aNull(0.0, 0.0, 0.0);
- basegfx::B3DPoint aLast(0.0, 1.0, 0.0);
- basegfx::B3DHomMatrix aRot;
- aRot.rotate(F_2PI / (double)nLineCapSegments, 0.0, 0.0);
- aLineCapList.realloc(nLineCapSegments);
-
- for(sal_uInt32 a(0L); a < nLineCapSegments; a++)
- {
- const basegfx::B3DPoint aNext(aRot * aLast);
- basegfx::B3DPolygon aNewPolygon;
-
- aNewPolygon.append(aLast);
- aNewPolygon.setNormal(0L, basegfx::B3DVector(aLast - aNull));
-
- aNewPolygon.append(aNext);
- aNewPolygon.setNormal(1L, basegfx::B3DVector(aNext - aNull));
-
- aNewPolygon.append(aNull);
- aNewPolygon.setNormal(2L, basegfx::B3DVector(-1.0, 0.0, 0.0));
-
- aNewPolygon.setClosed(true);
-
- const basegfx::B3DPolyPolygon aNewPolyPolygon(aNewPolygon);
- const Primitive3DReference xRef(new PolyPolygonMaterialPrimitive3D(aNewPolyPolygon, aLineMaterial, false));
- aLineCapList[a] = xRef;
-
- aLast = aNext;
- }
- }
-
- return aLineCapList;
- }
-
- Primitive3DSequence getLineJoinSegments(
- sal_uInt32 nSegments,
- const attribute::MaterialAttribute3D& rMaterial,
- double fAngle,
- double /*fDegreeStepWidth*/,
- double fMiterMinimumAngle,
- basegfx::B2DLineJoin aLineJoin)
- {
- // nSegments is for whole circle, adapt to half circle
- const sal_uInt32 nVerSeg(nSegments >> 1L);
- std::vector< BasePrimitive3D* > aResultVector;
-
- if(nVerSeg)
- {
- if(basegfx::B2DLINEJOIN_ROUND == aLineJoin)
- {
- // calculate new horizontal segments
- const sal_uInt32 nHorSeg((sal_uInt32)((fAngle / F_2PI) * (double)nSegments));
-
- if(nHorSeg)
- {
- // create half-sphere
- const basegfx::B3DPolyPolygon aSphere(basegfx::tools::createUnitSphereFillPolyPolygon(nHorSeg, nVerSeg, true, F_PI2, -F_PI2, 0.0, fAngle));
-
- for(sal_uInt32 a(0L); a < aSphere.count(); a++)
- {
- const basegfx::B3DPolygon aPartPolygon(aSphere.getB3DPolygon(a));
- const basegfx::B3DPolyPolygon aPartPolyPolygon(aPartPolygon);
- BasePrimitive3D* pNew = new PolyPolygonMaterialPrimitive3D(aPartPolyPolygon, rMaterial, false);
- aResultVector.push_back(pNew);
- }
- }
- else
- {
- // fallback to bevel when there is not at least one segment hor and ver
- aLineJoin = basegfx::B2DLINEJOIN_BEVEL;
- }
- }
-
- if(basegfx::B2DLINEJOIN_MIDDLE == aLineJoin
- || basegfx::B2DLINEJOIN_BEVEL == aLineJoin
- || basegfx::B2DLINEJOIN_MITER == aLineJoin)
- {
- if(basegfx::B2DLINEJOIN_MITER == aLineJoin)
- {
- const double fMiterAngle(fAngle/2.0);
-
- if(fMiterAngle < fMiterMinimumAngle)
- {
- // fallback to bevel when miter's angle is too small
- aLineJoin = basegfx::B2DLINEJOIN_BEVEL;
- }
- }
-
- const double fInc(F_PI / (double)nVerSeg);
- const double fSin(sin(-fAngle));
- const double fCos(cos(-fAngle));
- const bool bMiter(basegfx::B2DLINEJOIN_MITER == aLineJoin);
- const double fMiterSin(bMiter ? sin(-(fAngle/2.0)) : 0.0);
- const double fMiterCos(bMiter ? cos(-(fAngle/2.0)) : 0.0);
- double fPos(-F_PI2);
- basegfx::B3DPoint aPointOnXY, aPointRotY, aNextPointOnXY, aNextPointRotY;
- basegfx::B3DPoint aCurrMiter, aNextMiter;
- basegfx::B3DPolygon aNewPolygon, aMiterPolygon;
-
- // close polygon
- aNewPolygon.setClosed(true);
- aMiterPolygon.setClosed(true);
-
- for(sal_uInt32 a(0L); a < nVerSeg; a++)
- {
- const bool bFirst(0L == a);
- const bool bLast(a + 1L == nVerSeg);
-
- if(bFirst || !bLast)
- {
- fPos += fInc;
-
- aNextPointOnXY = basegfx::B3DPoint(
- cos(fPos),
- sin(fPos),
- 0.0);
-
- aNextPointRotY = basegfx::B3DPoint(
- aNextPointOnXY.getX() * fCos,
- aNextPointOnXY.getY(),
- aNextPointOnXY.getX() * fSin);
-
- if(bMiter)
- {
- aNextMiter = basegfx::B3DPoint(
- aNextPointOnXY.getX(),
- aNextPointOnXY.getY(),
- fMiterSin * (aNextPointOnXY.getX() / fMiterCos));
- }
- }
-
- if(bFirst)
- {
- aNewPolygon.clear();
-
- if(bMiter)
- {
- aNewPolygon.append(basegfx::B3DPoint(0.0, -1.0, 0.0));
- aNewPolygon.append(aNextPointOnXY);
- aNewPolygon.append(aNextMiter);
-
- aMiterPolygon.clear();
- aMiterPolygon.append(basegfx::B3DPoint(0.0, -1.0, 0.0));
- aMiterPolygon.append(aNextMiter);
- aMiterPolygon.append(aNextPointRotY);
- }
- else
- {
- aNewPolygon.append(basegfx::B3DPoint(0.0, -1.0, 0.0));
- aNewPolygon.append(aNextPointOnXY);
- aNewPolygon.append(aNextPointRotY);
- }
- }
- else if(bLast)
- {
- aNewPolygon.clear();
-
- if(bMiter)
- {
- aNewPolygon.append(basegfx::B3DPoint(0.0, 1.0, 0.0));
- aNewPolygon.append(aCurrMiter);
- aNewPolygon.append(aPointOnXY);
-
- aMiterPolygon.clear();
- aMiterPolygon.append(basegfx::B3DPoint(0.0, 1.0, 0.0));
- aMiterPolygon.append(aPointRotY);
- aMiterPolygon.append(aCurrMiter);
- }
- else
- {
- aNewPolygon.append(basegfx::B3DPoint(0.0, 1.0, 0.0));
- aNewPolygon.append(aPointRotY);
- aNewPolygon.append(aPointOnXY);
- }
- }
- else
- {
- aNewPolygon.clear();
-
- if(bMiter)
- {
- aNewPolygon.append(aPointOnXY);
- aNewPolygon.append(aNextPointOnXY);
- aNewPolygon.append(aNextMiter);
- aNewPolygon.append(aCurrMiter);
-
- aMiterPolygon.clear();
- aMiterPolygon.append(aCurrMiter);
- aMiterPolygon.append(aNextMiter);
- aMiterPolygon.append(aNextPointRotY);
- aMiterPolygon.append(aPointRotY);
- }
- else
- {
- aNewPolygon.append(aPointRotY);
- aNewPolygon.append(aPointOnXY);
- aNewPolygon.append(aNextPointOnXY);
- aNewPolygon.append(aNextPointRotY);
- }
- }
-
- // set normals
- for(sal_uInt32 b(0L); b < aNewPolygon.count(); b++)
- {
- aNewPolygon.setNormal(b, basegfx::B3DVector(aNewPolygon.getB3DPoint(b)));
- }
-
- // create primitive
- if(aNewPolygon.count())
- {
- const basegfx::B3DPolyPolygon aNewPolyPolygon(aNewPolygon);
- BasePrimitive3D* pNew = new PolyPolygonMaterialPrimitive3D(aNewPolyPolygon, rMaterial, false);
- aResultVector.push_back(pNew);
- }
-
- if(bMiter && aMiterPolygon.count())
- {
- // set normals
- for(sal_uInt32 c(0L); c < aMiterPolygon.count(); c++)
- {
- aMiterPolygon.setNormal(c, basegfx::B3DVector(aMiterPolygon.getB3DPoint(c)));
- }
-
- // create primitive
- const basegfx::B3DPolyPolygon aMiterPolyPolygon(aMiterPolygon);
- BasePrimitive3D* pNew = new PolyPolygonMaterialPrimitive3D(aMiterPolyPolygon, rMaterial, false);
- aResultVector.push_back(pNew);
- }
-
- // prepare next step
- if(bFirst || !bLast)
- {
- aPointOnXY = aNextPointOnXY;
- aPointRotY = aNextPointRotY;
-
- if(bMiter)
- {
- aCurrMiter = aNextMiter;
- }
- }
- }
- }
- }
-
- Primitive3DSequence aRetval(aResultVector.size());
-
- for(sal_uInt32 a(0L); a < aResultVector.size(); a++)
- {
- aRetval[a] = Primitive3DReference(aResultVector[a]);
- }
-
- return aRetval;
- }
-
- basegfx::B3DHomMatrix getRotationFromVector(const basegfx::B3DVector& rVector)
- {
- // build transformation from unit vector to vector
- basegfx::B3DHomMatrix aRetval;
-
- // get applied rotations from angles in XY and in XZ (cartesian)
- const double fRotInXY(atan2(rVector.getY(), rVector.getXZLength()));
- const double fRotInXZ(atan2(-rVector.getZ(), rVector.getX()));
-
- // apply rotations. Rot around Z needs to be done first, so apply in two steps
- aRetval.rotate(0.0, 0.0, fRotInXY);
- aRetval.rotate(0.0, fRotInXZ, 0.0);
-
- return aRetval;
- }
- } // end of anonymous namespace
- } // end of namespace primitive3d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-using namespace com::sun::star;
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive3d
- {
- Primitive3DSequence PolygonTubePrimitive3D::impCreate3DDecomposition(const geometry::ViewInformation3D& /*rViewInformation*/) const
- {
- const sal_uInt32 nPointCount(getB3DPolygon().count());
- std::vector< BasePrimitive3D* > aResultVector;
-
- if(0L != nPointCount)
- {
- if(basegfx::fTools::more(getRadius(), 0.0))
- {
- const attribute::MaterialAttribute3D aMaterial(getBColor());
- static sal_uInt32 nSegments(8L); // default for 3d line segments, for more quality just raise this value (in even steps)
- const bool bClosed(getB3DPolygon().isClosed());
- const bool bNoLineJoin(basegfx::B2DLINEJOIN_NONE == getLineJoin());
- const sal_uInt32 nLoopCount(bClosed ? nPointCount : nPointCount - 1L);
- basegfx::B3DPoint aLast(getB3DPolygon().getB3DPoint(nPointCount - 1L));
- basegfx::B3DPoint aCurr(getB3DPolygon().getB3DPoint(0L));
-
- for(sal_uInt32 a(0L); a < nLoopCount; a++)
- {
- // get next data
- const basegfx::B3DPoint aNext(getB3DPolygon().getB3DPoint((a + 1L) % nPointCount));
- const basegfx::B3DVector aForw(aNext - aCurr);
- const double fForwLen(aForw.getLength());
-
- if(basegfx::fTools::more(fForwLen, 0.0))
- {
- // get rotation from vector, this describes rotation from (1, 0, 0) to aForw
- basegfx::B3DHomMatrix aRotVector(getRotationFromVector(aForw));
-
- // create default transformation with scale and rotate
- basegfx::B3DHomMatrix aVectorTrans;
- aVectorTrans.scale(fForwLen, getRadius(), getRadius());
- aVectorTrans *= aRotVector;
- aVectorTrans.translate(aCurr.getX(), aCurr.getY(), aCurr.getZ());
-
- if(bNoLineJoin || (!bClosed && !a))
- {
- // line start edge, build transformed primitiveVector3D
- TransformPrimitive3D* pNewTransformedA = new TransformPrimitive3D(aVectorTrans, getLineCapSegments(nSegments, aMaterial));
- aResultVector.push_back(pNewTransformedA);
- }
- else
- {
- const basegfx::B3DVector aBack(aCurr - aLast);
- const double fCross(basegfx::cross(aBack, aForw).getLength());
-
- if(!basegfx::fTools::equalZero(fCross))
- {
- // line connect non-parallel, aBack, aForw, use getLineJoin()
- const double fAngle(acos(aBack.scalar(aForw) / (fForwLen * aBack.getLength()))); // 0.0 .. F_PI2
- Primitive3DSequence aNewList(getLineJoinSegments(nSegments, aMaterial, fAngle, getDegreeStepWidth(), getMiterMinimumAngle(), getLineJoin()));
-
- // calculate transformation. First, get angle in YZ between nForw projected on (1, 0, 0) and nBack
- basegfx::B3DHomMatrix aInvRotVector(aRotVector);
- aInvRotVector.invert();
- basegfx::B3DVector aTransBack(aInvRotVector * aBack);
- const double fRotInYZ(atan2(aTransBack.getY(), aTransBack.getZ()));
-
- // create trans by rotating unit sphere with angle 90 degrees around Y, then 180-fRot in X.
- // Also apply usual scaling and translation
- basegfx::B3DHomMatrix aSphereTrans;
- aSphereTrans.rotate(0.0, F_PI2, 0.0);
- aSphereTrans.rotate(F_PI - fRotInYZ, 0.0, 0.0);
- aSphereTrans *= aRotVector;
- aSphereTrans.scale(getRadius(), getRadius(), getRadius());
- aSphereTrans.translate(aCurr.getX(), aCurr.getY(), aCurr.getZ());
-
- // line start edge, build transformed primitiveVector3D
- TransformPrimitive3D* pNewTransformedB = new TransformPrimitive3D(aSphereTrans, aNewList);
- aResultVector.push_back(pNewTransformedB);
- }
- }
-
- // create line segments, build transformed primitiveVector3D
- TransformPrimitive3D* pNewTransformedC = new TransformPrimitive3D(aVectorTrans, getLineTubeSegments(nSegments, aMaterial));
- aResultVector.push_back(pNewTransformedC);
-
- if(bNoLineJoin || (!bClosed && ((a + 1L) == nLoopCount)))
- {
- // line end edge, first rotate (mirror) and translate, then use use aRotVector
- basegfx::B3DHomMatrix aBackTrans;
- aBackTrans.rotate(0.0, F_PI, 0.0);
- aBackTrans.translate(1.0, 0.0, 0.0);
- aBackTrans.scale(fForwLen, getRadius(), getRadius());
- aBackTrans *= aRotVector;
- aBackTrans.translate(aCurr.getX(), aCurr.getY(), aCurr.getZ());
-
- // line end edge, build transformed primitiveVector3D
- TransformPrimitive3D* pNewTransformedD = new TransformPrimitive3D(aBackTrans, getLineCapSegments(nSegments, aMaterial));
- aResultVector.push_back(pNewTransformedD);
- }
- }
-
- // prepare next loop step
- aLast = aCurr;
- aCurr = aNext;
- }
- }
- else
- {
- // create hairline
- PolygonHairlinePrimitive3D* pNew = new PolygonHairlinePrimitive3D(getB3DPolygon(), getBColor());
- aResultVector.push_back(pNew);
- }
- }
-
- // prepare return value
- Primitive3DSequence aRetval(aResultVector.size());
-
- for(sal_uInt32 a(0L); a < aResultVector.size(); a++)
- {
- aRetval[a] = Primitive3DReference(aResultVector[a]);
- }
-
- return aRetval;
- }
-
- PolygonTubePrimitive3D::PolygonTubePrimitive3D(
- const basegfx::B3DPolygon& rPolygon,
- const basegfx::BColor& rBColor,
- double fRadius, basegfx::B2DLineJoin aLineJoin,
- double fDegreeStepWidth,
- double fMiterMinimumAngle)
- : PolygonHairlinePrimitive3D(rPolygon, rBColor),
- maLast3DDecomposition(),
- mfRadius(fRadius),
- mfDegreeStepWidth(fDegreeStepWidth),
- mfMiterMinimumAngle(fMiterMinimumAngle),
- maLineJoin(aLineJoin)
- {
- }
-
- bool PolygonTubePrimitive3D::operator==(const BasePrimitive3D& rPrimitive) const
- {
- if(PolygonHairlinePrimitive3D::operator==(rPrimitive))
- {
- const PolygonTubePrimitive3D& rCompare = (PolygonTubePrimitive3D&)rPrimitive;
-
- return (getRadius() == rCompare.getRadius()
- && getDegreeStepWidth() == rCompare.getDegreeStepWidth()
- && getMiterMinimumAngle() == rCompare.getMiterMinimumAngle()
- && getLineJoin() == rCompare.getLineJoin());
- }
-
- return false;
- }
-
- Primitive3DSequence PolygonTubePrimitive3D::get3DDecomposition(const geometry::ViewInformation3D& rViewInformation) const
- {
- ::osl::MutexGuard aGuard( m_aMutex );
-
- if(!getLast3DDecomposition().hasElements())
- {
- const Primitive3DSequence aNewSequence(impCreate3DDecomposition(rViewInformation));
- const_cast< PolygonTubePrimitive3D* >(this)->setLast3DDecomposition(aNewSequence);
- }
-
- return getLast3DDecomposition();
- }
-
- // provide unique ID
- ImplPrimitrive3DIDBlock(PolygonTubePrimitive3D, PRIMITIVE3D_ID_POLYGONTUBEPRIMITIVE3D)
-
- } // end of namespace primitive3d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/primitive3d/polypolygonprimitive3d.cxx b/drawinglayer/source/primitive3d/polypolygonprimitive3d.cxx
deleted file mode 100644
index 4066dfe163..0000000000
--- a/drawinglayer/source/primitive3d/polypolygonprimitive3d.cxx
+++ /dev/null
@@ -1,86 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/primitive3d/polypolygonprimitive3d.hxx>
-#include <basegfx/polygon/b3dpolypolygontools.hxx>
-#include <basegfx/tools/canvastools.hxx>
-#include <drawinglayer/primitive3d/drawinglayer_primitivetypes3d.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-using namespace com::sun::star;
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive3d
- {
- PolyPolygonMaterialPrimitive3D::PolyPolygonMaterialPrimitive3D(
- const basegfx::B3DPolyPolygon& rPolyPolygon,
- const attribute::MaterialAttribute3D& rMaterial,
- bool bDoubleSided)
- : BasePrimitive3D(),
- maPolyPolygon(rPolyPolygon),
- maMaterial(rMaterial),
- mbDoubleSided(bDoubleSided)
- {
- }
-
- bool PolyPolygonMaterialPrimitive3D::operator==(const BasePrimitive3D& rPrimitive) const
- {
- if(BasePrimitive3D::operator==(rPrimitive))
- {
- const PolyPolygonMaterialPrimitive3D& rCompare = (PolyPolygonMaterialPrimitive3D&)rPrimitive;
-
- return (getB3DPolyPolygon() == rCompare.getB3DPolyPolygon()
- && getMaterial() == rCompare.getMaterial()
- && getDoubleSided() == rCompare.getDoubleSided());
- }
-
- return false;
- }
-
- basegfx::B3DRange PolyPolygonMaterialPrimitive3D::getB3DRange(const geometry::ViewInformation3D& /*rViewInformation*/) const
- {
- return basegfx::tools::getRange(getB3DPolyPolygon());
- }
-
- // provide unique ID
- ImplPrimitrive3DIDBlock(PolyPolygonMaterialPrimitive3D, PRIMITIVE3D_ID_POLYPOLYGONMATERIALPRIMITIVE3D)
-
- } // end of namespace primitive3d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/primitive3d/sdrcubeprimitive3d.cxx b/drawinglayer/source/primitive3d/sdrcubeprimitive3d.cxx
deleted file mode 100644
index 287bc4e43e..0000000000
--- a/drawinglayer/source/primitive3d/sdrcubeprimitive3d.cxx
+++ /dev/null
@@ -1,225 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/primitive3d/sdrcubeprimitive3d.hxx>
-#include <basegfx/polygon/b3dpolypolygontools.hxx>
-#include <basegfx/polygon/b3dpolygon.hxx>
-#include <basegfx/matrix/b2dhommatrix.hxx>
-#include <drawinglayer/primitive3d/sdrdecompositiontools3d.hxx>
-#include <basegfx/tools/canvastools.hxx>
-#include <drawinglayer/primitive3d/drawinglayer_primitivetypes3d.hxx>
-#include <drawinglayer/attribute/sdrfillattribute.hxx>
-#include <drawinglayer/attribute/sdrlineattribute.hxx>
-#include <drawinglayer/attribute/sdrshadowattribute.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-using namespace com::sun::star;
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive3d
- {
- Primitive3DSequence SdrCubePrimitive3D::create3DDecomposition(const geometry::ViewInformation3D& /*rViewInformation*/) const
- {
- const basegfx::B3DRange aUnitRange(0.0, 0.0, 0.0, 1.0, 1.0, 1.0);
- Primitive3DSequence aRetval;
- basegfx::B3DPolyPolygon aFill(basegfx::tools::createCubeFillPolyPolygonFromB3DRange(aUnitRange));
-
- // normal creation
- if(!getSdrLFSAttribute().getFill().isDefault())
- {
- if(::com::sun::star::drawing::NormalsKind_SPECIFIC == getSdr3DObjectAttribute().getNormalsKind()
- || ::com::sun::star::drawing::NormalsKind_SPHERE == getSdr3DObjectAttribute().getNormalsKind())
- {
- // create sphere normals
- const basegfx::B3DPoint aCenter(basegfx::tools::getRange(aFill).getCenter());
- aFill = basegfx::tools::applyDefaultNormalsSphere(aFill, aCenter);
- }
-
- if(getSdr3DObjectAttribute().getNormalsInvert())
- {
- // invert normals
- aFill = basegfx::tools::invertNormals(aFill);
- }
- }
-
- // texture coordinates
- if(!getSdrLFSAttribute().getFill().isDefault())
- {
- // handle texture coordinates X
- const bool bParallelX(::com::sun::star::drawing::TextureProjectionMode_PARALLEL == getSdr3DObjectAttribute().getTextureProjectionX());
- const bool bObjectSpecificX(::com::sun::star::drawing::TextureProjectionMode_OBJECTSPECIFIC == getSdr3DObjectAttribute().getTextureProjectionX());
- const bool bSphereX(!bParallelX && (::com::sun::star::drawing::TextureProjectionMode_SPHERE == getSdr3DObjectAttribute().getTextureProjectionX()));
-
- // handle texture coordinates Y
- const bool bParallelY(::com::sun::star::drawing::TextureProjectionMode_PARALLEL == getSdr3DObjectAttribute().getTextureProjectionY());
- const bool bObjectSpecificY(::com::sun::star::drawing::TextureProjectionMode_OBJECTSPECIFIC == getSdr3DObjectAttribute().getTextureProjectionY());
- const bool bSphereY(!bParallelY && (::com::sun::star::drawing::TextureProjectionMode_SPHERE == getSdr3DObjectAttribute().getTextureProjectionY()));
-
- if(bParallelX || bParallelY)
- {
- // apply parallel texture coordinates in X and/or Y
- const basegfx::B3DRange aRange(basegfx::tools::getRange(aFill));
- aFill = basegfx::tools::applyDefaultTextureCoordinatesParallel(aFill, aRange, bParallelX, bParallelY);
- }
-
- if(bSphereX || bSphereY)
- {
- // apply spherical texture coordinates in X and/or Y
- const basegfx::B3DRange aRange(basegfx::tools::getRange(aFill));
- const basegfx::B3DPoint aCenter(aRange.getCenter());
- aFill = basegfx::tools::applyDefaultTextureCoordinatesSphere(aFill, aCenter, bSphereX, bSphereY);
- }
-
- if(bObjectSpecificX || bObjectSpecificY)
- {
- // object-specific
- for(sal_uInt32 a(0L); a < aFill.count(); a++)
- {
- basegfx::B3DPolygon aTmpPoly(aFill.getB3DPolygon(a));
-
- if(aTmpPoly.count() >= 4L)
- {
- for(sal_uInt32 b(0L); b < 4L; b++)
- {
- basegfx::B2DPoint aPoint(aTmpPoly.getTextureCoordinate(b));
-
- if(bObjectSpecificX)
- {
- aPoint.setX((1L == b || 2L == b) ? 1.0 : 0.0);
- }
-
- if(bObjectSpecificY)
- {
- aPoint.setY((2L == b || 3L == b) ? 1.0 : 0.0);
- }
-
- aTmpPoly.setTextureCoordinate(b, aPoint);
- }
-
- aFill.setB3DPolygon(a, aTmpPoly);
- }
- }
- }
-
- // transform texture coordinates to texture size
- basegfx::B2DHomMatrix aTexMatrix;
- aTexMatrix.scale(getTextureSize().getX(), getTextureSize().getY());
- aFill.transformTextureCoordiantes(aTexMatrix);
- }
-
- // build vector of PolyPolygons
- ::std::vector< basegfx::B3DPolyPolygon > a3DPolyPolygonVector;
-
- for(sal_uInt32 a(0L); a < aFill.count(); a++)
- {
- a3DPolyPolygonVector.push_back(basegfx::B3DPolyPolygon(aFill.getB3DPolygon(a)));
- }
-
- if(!getSdrLFSAttribute().getFill().isDefault())
- {
- // add fill
- aRetval = create3DPolyPolygonFillPrimitives(
- a3DPolyPolygonVector,
- getTransform(),
- getTextureSize(),
- getSdr3DObjectAttribute(),
- getSdrLFSAttribute().getFill(),
- getSdrLFSAttribute().getFillFloatTransGradient());
- }
- else
- {
- // create simplified 3d hit test geometry
- aRetval = createHiddenGeometryPrimitives3D(
- a3DPolyPolygonVector,
- getTransform(),
- getTextureSize(),
- getSdr3DObjectAttribute());
- }
-
- // add line
- if(!getSdrLFSAttribute().getLine().isDefault())
- {
- basegfx::B3DPolyPolygon aLine(basegfx::tools::createCubePolyPolygonFromB3DRange(aUnitRange));
- const Primitive3DSequence aLines(create3DPolyPolygonLinePrimitives(
- aLine, getTransform(), getSdrLFSAttribute().getLine()));
- appendPrimitive3DSequenceToPrimitive3DSequence(aRetval, aLines);
- }
-
- // add shadow
- if(!getSdrLFSAttribute().getShadow().isDefault() && aRetval.hasElements())
- {
- const Primitive3DSequence aShadow(createShadowPrimitive3D(
- aRetval, getSdrLFSAttribute().getShadow(), getSdr3DObjectAttribute().getShadow3D()));
- appendPrimitive3DSequenceToPrimitive3DSequence(aRetval, aShadow);
- }
-
- return aRetval;
- }
-
- SdrCubePrimitive3D::SdrCubePrimitive3D(
- const basegfx::B3DHomMatrix& rTransform,
- const basegfx::B2DVector& rTextureSize,
- const attribute::SdrLineFillShadowAttribute3D& rSdrLFSAttribute,
- const attribute::Sdr3DObjectAttribute& rSdr3DObjectAttribute)
- : SdrPrimitive3D(rTransform, rTextureSize, rSdrLFSAttribute, rSdr3DObjectAttribute)
- {
- }
-
- bool SdrCubePrimitive3D::operator==(const BasePrimitive3D& rPrimitive) const
- {
- return SdrPrimitive3D::operator==(rPrimitive);
- }
-
- basegfx::B3DRange SdrCubePrimitive3D::getB3DRange(const geometry::ViewInformation3D& /*rViewInformation*/) const
- {
- // use defaut from sdrPrimitive3D which uses transformation expanded by line width/2.
- // The parent implementation which uses the ranges of the decomposition would be more
- // corrcet, but for historical reasons it is necessary to do the old method: To get
- // the range of the non-transformed geometry and transform it then. This leads to different
- // ranges where the new method is more correct, but the need to keep the old behaviour
- // has priority here.
- return getStandard3DRange();
- }
-
- // provide unique ID
- ImplPrimitrive3DIDBlock(SdrCubePrimitive3D, PRIMITIVE3D_ID_SDRCUBEPRIMITIVE3D)
-
- } // end of namespace primitive3d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/primitive3d/sdrdecompositiontools3d.cxx b/drawinglayer/source/primitive3d/sdrdecompositiontools3d.cxx
deleted file mode 100644
index a75772cf9c..0000000000
--- a/drawinglayer/source/primitive3d/sdrdecompositiontools3d.cxx
+++ /dev/null
@@ -1,342 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/primitive3d/sdrdecompositiontools3d.hxx>
-#include <basegfx/polygon/b3dpolygon.hxx>
-#include <drawinglayer/attribute/strokeattribute.hxx>
-#include <drawinglayer/primitive3d/baseprimitive3d.hxx>
-#include <drawinglayer/primitive3d/polygonprimitive3d.hxx>
-#include <basegfx/polygon/b3dpolypolygon.hxx>
-#include <drawinglayer/primitive3d/polypolygonprimitive3d.hxx>
-#include <vcl/vclenum.hxx>
-#include <drawinglayer/attribute/fillbitmapattribute.hxx>
-#include <drawinglayer/attribute/sdrfillbitmapattribute.hxx>
-#include <vcl/bmpacc.hxx>
-#include <basegfx/polygon/b3dpolypolygontools.hxx>
-#include <drawinglayer/primitive3d/textureprimitive3d.hxx>
-#include <drawinglayer/primitive3d/modifiedcolorprimitive3d.hxx>
-#include <drawinglayer/primitive3d/hatchtextureprimitive3d.hxx>
-#include <drawinglayer/primitive3d/shadowprimitive3d.hxx>
-#include <basegfx/range/b2drange.hxx>
-#include <drawinglayer/attribute/sdrlineattribute.hxx>
-#include <drawinglayer/attribute/sdrobjectattribute3d.hxx>
-#include <drawinglayer/attribute/sdrfillattribute.hxx>
-#include <drawinglayer/attribute/sdrshadowattribute.hxx>
-#include <drawinglayer/primitive3d/hiddengeometryprimitive3d.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive3d
- {
- basegfx::B3DRange getRangeFrom3DGeometry(::std::vector< basegfx::B3DPolyPolygon >& rFill)
- {
- basegfx::B3DRange aRetval;
-
- for(sal_uInt32 a(0); a < rFill.size(); a++)
- {
- aRetval.expand(basegfx::tools::getRange(rFill[a]));
- }
-
- return aRetval;
- }
-
- void applyNormalsKindSphereTo3DGeometry(::std::vector< basegfx::B3DPolyPolygon >& rFill, const basegfx::B3DRange& rRange)
- {
- // create sphere normals
- const basegfx::B3DPoint aCenter(rRange.getCenter());
-
- for(sal_uInt32 a(0); a < rFill.size(); a++)
- {
- rFill[a] = basegfx::tools::applyDefaultNormalsSphere(rFill[a], aCenter);
- }
- }
-
- void applyNormalsKindFlatTo3DGeometry(::std::vector< basegfx::B3DPolyPolygon >& rFill)
- {
- for(sal_uInt32 a(0); a < rFill.size(); a++)
- {
- rFill[a].clearNormals();
- }
- }
-
- void applyNormalsInvertTo3DGeometry(::std::vector< basegfx::B3DPolyPolygon >& rFill)
- {
- // invert normals
- for(sal_uInt32 a(0); a < rFill.size(); a++)
- {
- rFill[a] = basegfx::tools::invertNormals(rFill[a]);
- }
- }
-
- void applyTextureTo3DGeometry(
- ::com::sun::star::drawing::TextureProjectionMode eModeX,
- ::com::sun::star::drawing::TextureProjectionMode eModeY,
- ::std::vector< basegfx::B3DPolyPolygon >& rFill,
- const basegfx::B3DRange& rRange,
- const basegfx::B2DVector& rTextureSize)
- {
- sal_uInt32 a;
-
- // handle texture coordinates X
- const bool bParallelX(::com::sun::star::drawing::TextureProjectionMode_PARALLEL == eModeX);
- const bool bSphereX(!bParallelX && (::com::sun::star::drawing::TextureProjectionMode_SPHERE == eModeX));
-
- // handle texture coordinates Y
- const bool bParallelY(::com::sun::star::drawing::TextureProjectionMode_PARALLEL == eModeY);
- const bool bSphereY(!bParallelY && (::com::sun::star::drawing::TextureProjectionMode_SPHERE == eModeY));
-
- if(bParallelX || bParallelY)
- {
- // apply parallel texture coordinates in X and/or Y
- for(a = 0; a < rFill.size(); a++)
- {
- rFill[a] = basegfx::tools::applyDefaultTextureCoordinatesParallel(rFill[a], rRange, bParallelX, bParallelY);
- }
- }
-
- if(bSphereX || bSphereY)
- {
- // apply spherical texture coordinates in X and/or Y
- const basegfx::B3DPoint aCenter(rRange.getCenter());
-
- for(a = 0; a < rFill.size(); a++)
- {
- rFill[a] = basegfx::tools::applyDefaultTextureCoordinatesSphere(rFill[a], aCenter, bSphereX, bSphereY);
- }
- }
-
- // transform texture coordinates to texture size
- basegfx::B2DHomMatrix aTexMatrix;
- aTexMatrix.scale(rTextureSize.getX(), rTextureSize.getY());
-
- for(a = 0; a < rFill.size(); a++)
- {
- rFill[a].transformTextureCoordiantes(aTexMatrix);
- }
- }
-
- Primitive3DSequence create3DPolyPolygonLinePrimitives(
- const basegfx::B3DPolyPolygon& rUnitPolyPolygon,
- const basegfx::B3DHomMatrix& rObjectTransform,
- const attribute::SdrLineAttribute& rLine)
- {
- // prepare fully scaled polyPolygon
- basegfx::B3DPolyPolygon aScaledPolyPolygon(rUnitPolyPolygon);
- aScaledPolyPolygon.transform(rObjectTransform);
-
- // create line and stroke attribute
- const attribute::LineAttribute aLineAttribute(rLine.getColor(), rLine.getWidth(), rLine.getJoin());
- const attribute::StrokeAttribute aStrokeAttribute(rLine.getDotDashArray(), rLine.getFullDotDashLen());
-
- // create primitives
- Primitive3DSequence aRetval(aScaledPolyPolygon.count());
-
- for(sal_uInt32 a(0L); a < aScaledPolyPolygon.count(); a++)
- {
- const Primitive3DReference xRef(new PolygonStrokePrimitive3D(aScaledPolyPolygon.getB3DPolygon(a), aLineAttribute, aStrokeAttribute));
- aRetval[a] = xRef;
- }
-
- if(0.0 != rLine.getTransparence())
- {
- // create UnifiedTransparenceTexturePrimitive3D, add created primitives and exchange
- const Primitive3DReference xRef(new UnifiedTransparenceTexturePrimitive3D(rLine.getTransparence(), aRetval));
- aRetval = Primitive3DSequence(&xRef, 1L);
- }
-
- return aRetval;
- }
-
- Primitive3DSequence create3DPolyPolygonFillPrimitives(
- const ::std::vector< basegfx::B3DPolyPolygon >& r3DPolyPolygonVector,
- const basegfx::B3DHomMatrix& rObjectTransform,
- const basegfx::B2DVector& rTextureSize,
- const attribute::Sdr3DObjectAttribute& aSdr3DObjectAttribute,
- const attribute::SdrFillAttribute& rFill,
- const attribute::FillGradientAttribute& rFillGradient)
- {
- Primitive3DSequence aRetval;
-
- if(r3DPolyPolygonVector.size())
- {
- // create list of simple fill primitives
- aRetval.realloc(r3DPolyPolygonVector.size());
-
- for(sal_uInt32 a(0L); a < r3DPolyPolygonVector.size(); a++)
- {
- // get scaled PolyPolygon
- basegfx::B3DPolyPolygon aScaledPolyPolygon(r3DPolyPolygonVector[a]);
- aScaledPolyPolygon.transform(rObjectTransform);
-
- if(aScaledPolyPolygon.areNormalsUsed())
- {
- aScaledPolyPolygon.transformNormals(rObjectTransform);
- }
-
- const Primitive3DReference xRef(new PolyPolygonMaterialPrimitive3D(
- aScaledPolyPolygon,
- aSdr3DObjectAttribute.getMaterial(),
- aSdr3DObjectAttribute.getDoubleSided()));
- aRetval[a] = xRef;
- }
-
- // look for and evtl. build texture sub-group primitive
- if(!rFill.getGradient().isDefault()
- || !rFill.getHatch().isDefault()
- || !rFill.getBitmap().isDefault())
- {
- bool bModulate(::com::sun::star::drawing::TextureMode_MODULATE == aSdr3DObjectAttribute.getTextureMode());
- bool bFilter(aSdr3DObjectAttribute.getTextureFilter());
- BasePrimitive3D* pNewTexturePrimitive3D = 0;
-
- if(!rFill.getGradient().isDefault())
- {
- // create gradientTexture3D with sublist, add to local aRetval
- pNewTexturePrimitive3D = new GradientTexturePrimitive3D(
- rFill.getGradient(),
- aRetval,
- rTextureSize,
- bModulate,
- bFilter);
- }
- else if(!rFill.getHatch().isDefault())
- {
- // create hatchTexture3D with sublist, add to local aRetval
- pNewTexturePrimitive3D = new HatchTexturePrimitive3D(
- rFill.getHatch(),
- aRetval,
- rTextureSize,
- bModulate,
- bFilter);
- }
- else // if(!rFill.getBitmap().isDefault())
- {
- // create bitmapTexture3D with sublist, add to local aRetval
- basegfx::B2DRange aTexRange(0.0, 0.0, rTextureSize.getX(), rTextureSize.getY());
-
- pNewTexturePrimitive3D = new BitmapTexturePrimitive3D(
- rFill.getBitmap().getFillBitmapAttribute(aTexRange),
- aRetval,
- rTextureSize,
- bModulate,
- bFilter);
- }
-
- // exchange aRetval content with texture group
- const Primitive3DReference xRef(pNewTexturePrimitive3D);
- aRetval = Primitive3DSequence(&xRef, 1L);
-
- if(::com::sun::star::drawing::TextureKind2_LUMINANCE == aSdr3DObjectAttribute.getTextureKind())
- {
- // use modified color primitive to force textures to gray
- const basegfx::BColorModifier aBColorModifier(basegfx::BColor(), 0.0, basegfx::BCOLORMODIFYMODE_GRAY);
- const Primitive3DReference xRef2(new ModifiedColorPrimitive3D(aRetval, aBColorModifier));
- aRetval = Primitive3DSequence(&xRef2, 1L);
- }
- }
-
- if(0.0 != rFill.getTransparence())
- {
- // create UnifiedTransparenceTexturePrimitive3D with sublist and exchange
- const Primitive3DReference xRef(new UnifiedTransparenceTexturePrimitive3D(rFill.getTransparence(), aRetval));
- aRetval = Primitive3DSequence(&xRef, 1L);
- }
- else if(!rFillGradient.isDefault())
- {
- // create TransparenceTexturePrimitive3D with sublist and exchange
- const Primitive3DReference xRef(new TransparenceTexturePrimitive3D(rFillGradient, aRetval, rTextureSize));
- aRetval = Primitive3DSequence(&xRef, 1L);
- }
- }
-
- return aRetval;
- }
-
- Primitive3DSequence createShadowPrimitive3D(
- const Primitive3DSequence& rSource,
- const attribute::SdrShadowAttribute& rShadow,
- bool bShadow3D)
- {
- // create Shadow primitives. Uses already created primitives
- if(rSource.hasElements() && !basegfx::fTools::moreOrEqual(rShadow.getTransparence(), 1.0))
- {
- // prepare new list for shadow geometry
- basegfx::B2DHomMatrix aShadowOffset;
- aShadowOffset.set(0, 2, rShadow.getOffset().getX());
- aShadowOffset.set(1, 2, rShadow.getOffset().getY());
-
- // create shadow primitive and add primitives
- const Primitive3DReference xRef(new ShadowPrimitive3D(aShadowOffset, rShadow.getColor(), rShadow.getTransparence(), bShadow3D, rSource));
- return Primitive3DSequence(&xRef, 1L);
- }
- else
- {
- return Primitive3DSequence();
- }
- }
-
- Primitive3DSequence createHiddenGeometryPrimitives3D(
- const ::std::vector< basegfx::B3DPolyPolygon >& r3DPolyPolygonVector,
- const basegfx::B3DHomMatrix& rObjectTransform,
- const basegfx::B2DVector& rTextureSize,
- const attribute::Sdr3DObjectAttribute& aSdr3DObjectAttribute)
- {
- // create hidden sub-geometry which can be used for HitTest
- // and BoundRect calculations, but will not be visualized
- const attribute::SdrFillAttribute aSimplifiedFillAttribute(
- 0.0,
- basegfx::BColor(),
- attribute::FillGradientAttribute(),
- attribute::FillHatchAttribute(),
- attribute::SdrFillBitmapAttribute());
-
- const Primitive3DReference aHidden(
- new HiddenGeometryPrimitive3D(
- create3DPolyPolygonFillPrimitives(
- r3DPolyPolygonVector,
- rObjectTransform,
- rTextureSize,
- aSdr3DObjectAttribute,
- aSimplifiedFillAttribute,
- attribute::FillGradientAttribute())));
-
- return Primitive3DSequence(&aHidden, 1);
- }
-
- } // end of namespace primitive3d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/primitive3d/sdrextrudelathetools3d.cxx b/drawinglayer/source/primitive3d/sdrextrudelathetools3d.cxx
deleted file mode 100644
index 8d52439781..0000000000
--- a/drawinglayer/source/primitive3d/sdrextrudelathetools3d.cxx
+++ /dev/null
@@ -1,994 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/primitive3d/sdrextrudelathetools3d.hxx>
-#include <basegfx/polygon/b2dpolypolygon.hxx>
-#include <basegfx/range/b2drange.hxx>
-#include <basegfx/polygon/b2dpolypolygontools.hxx>
-#include <basegfx/matrix/b2dhommatrix.hxx>
-#include <basegfx/point/b3dpoint.hxx>
-#include <basegfx/polygon/b3dpolygon.hxx>
-#include <basegfx/polygon/b3dpolygontools.hxx>
-#include <basegfx/polygon/b3dpolypolygontools.hxx>
-#include <basegfx/range/b3drange.hxx>
-#include <basegfx/matrix/b3dhommatrix.hxx>
-#include <basegfx/polygon/b2dpolygontools.hxx>
-#include <drawinglayer/geometry/viewinformation3d.hxx>
-#include <numeric>
-
-//////////////////////////////////////////////////////////////////////////////
-// decompositon helpers for extrude/lathe (rotation) objects
-
-namespace
-{
- //////////////////////////////////////////////////////////////////////////////
- // common helpers
-
- basegfx::B2DPolyPolygon impScalePolyPolygonOnCenter(
- const basegfx::B2DPolyPolygon& rSource,
- double fScale)
- {
- basegfx::B2DPolyPolygon aRetval(rSource);
-
- if(!basegfx::fTools::equalZero(fScale))
- {
- const basegfx::B2DRange aRange(basegfx::tools::getRange(rSource));
- const basegfx::B2DPoint aCenter(aRange.getCenter());
- basegfx::B2DHomMatrix aTrans;
-
- aTrans.translate(-aCenter.getX(), -aCenter.getY());
- aTrans.scale(fScale, fScale);
- aTrans.translate(aCenter.getX(), aCenter.getY());
- aRetval.transform(aTrans);
- }
-
- return aRetval;
- }
-
- void impGetOuterPolyPolygon(
- basegfx::B2DPolyPolygon& rPolygon,
- basegfx::B2DPolyPolygon& rOuterPolyPolygon,
- double fOffset,
- bool bCharacterMode)
- {
- rOuterPolyPolygon = rPolygon;
-
- if(basegfx::fTools::more(fOffset, 0.0))
- {
- if(bCharacterMode)
- {
- // grow the outside polygon and scale all polygons to original size. This is done
- // to avoid a shrink which potentially would lead to self-intersections, but changes
- // the original polygon -> not a precision step, so e.g. not usable for charts
- const basegfx::B2DRange aRange(basegfx::tools::getRange(rPolygon));
- rPolygon = basegfx::tools::growInNormalDirection(rPolygon, fOffset);
- const basegfx::B2DRange aGrownRange(basegfx::tools::getRange(rPolygon));
- const double fScaleX(basegfx::fTools::equalZero(aGrownRange.getWidth()) ? 1.0 : aRange.getWidth() / aGrownRange.getWidth());
- const double fScaleY(basegfx::fTools::equalZero(aGrownRange.getHeight())? 1.0 : aRange.getHeight() / aGrownRange.getHeight());
- basegfx::B2DHomMatrix aScaleTrans;
-
- aScaleTrans.translate(-aGrownRange.getMinX(), -aGrownRange.getMinY());
- aScaleTrans.scale(fScaleX, fScaleY);
- aScaleTrans.translate(aRange.getMinX(), aRange.getMinY());
- rPolygon.transform(aScaleTrans);
- rOuterPolyPolygon.transform(aScaleTrans);
- }
- else
- {
- // use more precision, shrink the outer polygons. Since this may lead to self-intersections,
- // some kind of correction should be applied here after that step
- rOuterPolyPolygon = basegfx::tools::growInNormalDirection(rPolygon, -fOffset);
- basegfx::tools::correctGrowShrinkPolygonPair(rPolygon, rOuterPolyPolygon);
- }
- }
- }
-
- void impAddInBetweenFill(
- basegfx::B3DPolyPolygon& rTarget,
- const basegfx::B3DPolyPolygon& rPolA,
- const basegfx::B3DPolyPolygon& rPolB,
- double fTexVerStart,
- double fTexVerStop,
- bool bCreateNormals,
- bool bCreateTextureCoordinates)
- {
- OSL_ENSURE(rPolA.count() == rPolB.count(), "impAddInBetweenFill: unequally sized polygons (!)");
- const sal_uInt32 nPolygonCount(rPolA.count());
-
- for(sal_uInt32 a(0L); a < nPolygonCount; a++)
- {
- const basegfx::B3DPolygon aSubA(rPolA.getB3DPolygon(a));
- const basegfx::B3DPolygon aSubB(rPolB.getB3DPolygon(a));
- OSL_ENSURE(aSubA.count() == aSubB.count(), "impAddInBetweenFill: unequally sized polygons (!)");
- const sal_uInt32 nPointCount(aSubA.count());
-
- if(nPointCount)
- {
- const sal_uInt32 nEdgeCount(aSubA.isClosed() ? nPointCount : nPointCount - 1L);
- double fTexHorMultiplicatorA(0.0), fTexHorMultiplicatorB(0.0);
- double fPolygonPosA(0.0), fPolygonPosB(0.0);
-
- if(bCreateTextureCoordinates)
- {
- const double fPolygonLengthA(basegfx::tools::getLength(aSubA));
- fTexHorMultiplicatorA = basegfx::fTools::equalZero(fPolygonLengthA) ? 1.0 : 1.0 / fPolygonLengthA;
-
- const double fPolygonLengthB(basegfx::tools::getLength(aSubB));
- fTexHorMultiplicatorB = basegfx::fTools::equalZero(fPolygonLengthB) ? 1.0 : 1.0 / fPolygonLengthB;
- }
-
- for(sal_uInt32 b(0L); b < nEdgeCount; b++)
- {
- const sal_uInt32 nIndexA(b);
- const sal_uInt32 nIndexB((b + 1L) % nPointCount);
-
- const basegfx::B3DPoint aStartA(aSubA.getB3DPoint(nIndexA));
- const basegfx::B3DPoint aEndA(aSubA.getB3DPoint(nIndexB));
- const basegfx::B3DPoint aStartB(aSubB.getB3DPoint(nIndexA));
- const basegfx::B3DPoint aEndB(aSubB.getB3DPoint(nIndexB));
-
- basegfx::B3DPolygon aNew;
- aNew.setClosed(true);
-
- aNew.append(aStartA);
- aNew.append(aStartB);
- aNew.append(aEndB);
- aNew.append(aEndA);
-
- if(bCreateNormals)
- {
- aNew.setNormal(0L, aSubA.getNormal(nIndexA));
- aNew.setNormal(1L, aSubB.getNormal(nIndexA));
- aNew.setNormal(2L, aSubB.getNormal(nIndexB));
- aNew.setNormal(3L, aSubA.getNormal(nIndexB));
- }
-
- if(bCreateTextureCoordinates)
- {
- const double fRelTexAL(fPolygonPosA * fTexHorMultiplicatorA);
- const double fEdgeLengthA(basegfx::B3DVector(aEndA - aStartA).getLength());
- fPolygonPosA += fEdgeLengthA;
- const double fRelTexAR(fPolygonPosA * fTexHorMultiplicatorA);
-
- const double fRelTexBL(fPolygonPosB * fTexHorMultiplicatorB);
- const double fEdgeLengthB(basegfx::B3DVector(aEndB - aStartB).getLength());
- fPolygonPosB += fEdgeLengthB;
- const double fRelTexBR(fPolygonPosB * fTexHorMultiplicatorB);
-
- aNew.setTextureCoordinate(0L, basegfx::B2DPoint(fRelTexAL, fTexVerStart));
- aNew.setTextureCoordinate(1L, basegfx::B2DPoint(fRelTexBL, fTexVerStop));
- aNew.setTextureCoordinate(2L, basegfx::B2DPoint(fRelTexBR, fTexVerStop));
- aNew.setTextureCoordinate(3L, basegfx::B2DPoint(fRelTexAR, fTexVerStart));
- }
-
- rTarget.append(aNew);
- }
- }
- }
- }
-
- void impSetNormal(
- basegfx::B3DPolyPolygon& rCandidate,
- const basegfx::B3DVector& rNormal)
- {
- for(sal_uInt32 a(0L); a < rCandidate.count(); a++)
- {
- basegfx::B3DPolygon aSub(rCandidate.getB3DPolygon(a));
-
- for(sal_uInt32 b(0L); b < aSub.count(); b++)
- {
- aSub.setNormal(b, rNormal);
- }
-
- rCandidate.setB3DPolygon(a, aSub);
- }
- }
-
- void impCreateInBetweenNormals(
- basegfx::B3DPolyPolygon& rPolA,
- basegfx::B3DPolyPolygon& rPolB,
- bool bSmoothHorizontalNormals)
- {
- OSL_ENSURE(rPolA.count() == rPolB.count(), "sdrExtrudePrimitive3D: unequally sized polygons (!)");
-
- for(sal_uInt32 a(0L); a < rPolA.count(); a++)
- {
- basegfx::B3DPolygon aSubA(rPolA.getB3DPolygon(a));
- basegfx::B3DPolygon aSubB(rPolB.getB3DPolygon(a));
- OSL_ENSURE(aSubA.count() == aSubB.count(), "sdrExtrudePrimitive3D: unequally sized polygons (!)");
- const sal_uInt32 nPointCount(aSubA.count());
-
- if(nPointCount)
- {
- basegfx::B3DPoint aPrevA(aSubA.getB3DPoint(nPointCount - 1L));
- basegfx::B3DPoint aCurrA(aSubA.getB3DPoint(0L));
- const bool bClosed(aSubA.isClosed());
-
- for(sal_uInt32 b(0L); b < nPointCount; b++)
- {
- const sal_uInt32 nIndNext((b + 1L) % nPointCount);
- const basegfx::B3DPoint aNextA(aSubA.getB3DPoint(nIndNext));
- const basegfx::B3DPoint aCurrB(aSubB.getB3DPoint(b));
-
- // vector to back
- basegfx::B3DVector aDepth(aCurrB - aCurrA);
- aDepth.normalize();
-
- if(aDepth.equalZero())
- {
- // no difference, try to get depth from next point
- const basegfx::B3DPoint aNextB(aSubB.getB3DPoint(nIndNext));
- aDepth = aNextB - aNextA;
- aDepth.normalize();
- }
-
- // vector to left (correct for non-closed lines)
- const bool bFirstAndNotClosed(!bClosed && 0L == b);
- basegfx::B3DVector aLeft(bFirstAndNotClosed ? aCurrA - aNextA : aPrevA - aCurrA);
- aLeft.normalize();
-
- // create left normal
- const basegfx::B3DVector aNormalLeft(aDepth.getPerpendicular(aLeft));
-
- if(bSmoothHorizontalNormals)
- {
- // vector to right (correct for non-closed lines)
- const bool bLastAndNotClosed(!bClosed && b + 1L == nPointCount);
- basegfx::B3DVector aRight(bLastAndNotClosed ? aCurrA - aPrevA : aNextA - aCurrA);
- aRight.normalize();
-
- // create right normal
- const basegfx::B3DVector aNormalRight(aRight.getPerpendicular(aDepth));
-
- // create smoothed in-between normal
- basegfx::B3DVector aNewNormal(aNormalLeft + aNormalRight);
- aNewNormal.normalize();
-
- // set as new normal at polygons
- aSubA.setNormal(b, aNewNormal);
- aSubB.setNormal(b, aNewNormal);
- }
- else
- {
- // set aNormalLeft as new normal at polygons
- aSubA.setNormal(b, aNormalLeft);
- aSubB.setNormal(b, aNormalLeft);
- }
-
- // prepare next step
- aPrevA = aCurrA;
- aCurrA = aNextA;
- }
-
- rPolA.setB3DPolygon(a, aSubA);
- rPolB.setB3DPolygon(a, aSubB);
- }
- }
- }
-
- void impMixNormals(
- basegfx::B3DPolyPolygon& rPolA,
- const basegfx::B3DPolyPolygon& rPolB,
- double fWeightA)
- {
- const double fWeightB(1.0 - fWeightA);
- OSL_ENSURE(rPolA.count() == rPolB.count(), "sdrExtrudePrimitive3D: unequally sized polygons (!)");
-
- for(sal_uInt32 a(0L); a < rPolA.count(); a++)
- {
- basegfx::B3DPolygon aSubA(rPolA.getB3DPolygon(a));
- const basegfx::B3DPolygon aSubB(rPolB.getB3DPolygon(a));
- OSL_ENSURE(aSubA.count() == aSubB.count(), "sdrExtrudePrimitive3D: unequally sized polygons (!)");
- const sal_uInt32 nPointCount(aSubA.count());
-
- for(sal_uInt32 b(0L); b < nPointCount; b++)
- {
- const basegfx::B3DVector aVA(aSubA.getNormal(b) * fWeightA);
- const basegfx::B3DVector aVB(aSubB.getNormal(b) * fWeightB);
- basegfx::B3DVector aVNew(aVA + aVB);
- aVNew.normalize();
- aSubA.setNormal(b, aVNew);
- }
-
- rPolA.setB3DPolygon(a, aSubA);
- }
- }
-
- bool impHasCutWith(const basegfx::B2DPolygon& rPoly, const basegfx::B2DPoint& rStart, const basegfx::B2DPoint& rEnd)
- {
- // polygon is closed, one of the points is a member
- const sal_uInt32 nPointCount(rPoly.count());
-
- if(nPointCount)
- {
- basegfx::B2DPoint aCurrent(rPoly.getB2DPoint(0));
- const basegfx::B2DVector aVector(rEnd - rStart);
-
- for(sal_uInt32 a(0); a < nPointCount; a++)
- {
- const sal_uInt32 nNextIndex((a + 1) % nPointCount);
- const basegfx::B2DPoint aNext(rPoly.getB2DPoint(nNextIndex));
- const basegfx::B2DVector aEdgeVector(aNext - aCurrent);
-
- if(basegfx::tools::findCut(
- rStart, aVector,
- aCurrent, aEdgeVector))
- {
- return true;
- }
-
- aCurrent = aNext;
- }
- }
-
- return false;
- }
-} // end of anonymous namespace
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive3d
- {
- void createLatheSlices(
- Slice3DVector& rSliceVector,
- const basegfx::B2DPolyPolygon& rSource,
- double fBackScale,
- double fDiagonal,
- double fRotation,
- sal_uInt32 nSteps,
- bool bCharacterMode,
- bool bCloseFront,
- bool bCloseBack)
- {
- if(basegfx::fTools::equalZero(fRotation) || 0L == nSteps)
- {
- // no rotation or no steps, just one plane
- rSliceVector.push_back(Slice3D(rSource, basegfx::B3DHomMatrix()));
- }
- else
- {
- const bool bBackScale(!basegfx::fTools::equal(fBackScale, 1.0));
- const bool bClosedRotation(!bBackScale && basegfx::fTools::equal(fRotation, F_2PI));
- basegfx::B2DPolyPolygon aFront(rSource);
- basegfx::B2DPolyPolygon aBack(rSource);
- basegfx::B3DHomMatrix aTransformBack;
- basegfx::B2DPolyPolygon aOuterBack;
-
- if(bClosedRotation)
- {
- bCloseFront = bCloseBack = false;
- }
-
- if(bBackScale)
- {
- // avoid null zoom
- if(basegfx::fTools::equalZero(fBackScale))
- {
- fBackScale = 0.000001;
- }
-
- // back is scaled compared to front, create scaled version
- aBack = impScalePolyPolygonOnCenter(aBack, fBackScale);
- }
-
- if(bCloseFront || bCloseBack)
- {
- const basegfx::B2DRange aBaseRange(basegfx::tools::getRange(aFront));
- const double fOuterLength(aBaseRange.getMaxX() * fRotation);
- const double fInnerLength(aBaseRange.getMinX() * fRotation);
- const double fAverageLength((fOuterLength + fInnerLength) * 0.5);
-
- if(bCloseFront)
- {
- const double fOffsetLen((fAverageLength / 12.0) * fDiagonal);
- basegfx::B2DPolyPolygon aOuterFront;
- impGetOuterPolyPolygon(aFront, aOuterFront, fOffsetLen, bCharacterMode);
- basegfx::B3DHomMatrix aTransform;
- aTransform.translate(0.0, 0.0, fOffsetLen);
- rSliceVector.push_back(Slice3D(aOuterFront, aTransform, SLICETYPE3D_FRONTCAP));
- }
-
- if(bCloseBack)
- {
- const double fOffsetLen((fAverageLength / 12.0) * fDiagonal);
- impGetOuterPolyPolygon(aBack, aOuterBack, fOffsetLen, bCharacterMode);
- aTransformBack.translate(0.0, 0.0, -fOffsetLen);
- aTransformBack.rotate(0.0, fRotation, 0.0);
- }
- }
-
- // add start polygon (a = 0L)
- if(!bClosedRotation)
- {
- rSliceVector.push_back(Slice3D(aFront, basegfx::B3DHomMatrix()));
- }
-
- // create segments (a + 1 .. nSteps)
- const double fStepSize(1.0 / (double)nSteps);
-
- for(sal_uInt32 a(0L); a < nSteps; a++)
- {
- const double fStep((double)(a + 1L) * fStepSize);
- basegfx::B2DPolyPolygon aNewPoly(bBackScale ? basegfx::tools::interpolate(aFront, aBack, fStep) : aFront);
- basegfx::B3DHomMatrix aNewMat;
- aNewMat.rotate(0.0, fRotation * fStep, 0.0);
- rSliceVector.push_back(Slice3D(aNewPoly, aNewMat));
- }
-
- if(bCloseBack)
- {
- rSliceVector.push_back(Slice3D(aOuterBack, aTransformBack, SLICETYPE3D_BACKCAP));
- }
- }
- }
-
- void createExtrudeSlices(
- Slice3DVector& rSliceVector,
- const basegfx::B2DPolyPolygon& rSource,
- double fBackScale,
- double fDiagonal,
- double fDepth,
- bool bCharacterMode,
- bool bCloseFront,
- bool bCloseBack)
- {
- if(basegfx::fTools::equalZero(fDepth))
- {
- // no depth, just one plane
- rSliceVector.push_back(Slice3D(rSource, basegfx::B3DHomMatrix()));
- }
- else
- {
- // there is depth, create Polygons for front,back and their default depth positions
- basegfx::B2DPolyPolygon aFront(rSource);
- basegfx::B2DPolyPolygon aBack(rSource);
- const bool bBackScale(!basegfx::fTools::equal(fBackScale, 1.0));
- double fZFront(fDepth); // default depth for aFront
- double fZBack(0.0); // default depth for aBack
- basegfx::B2DPolyPolygon aOuterBack;
-
- if(bBackScale)
- {
- // avoid null zoom
- if(basegfx::fTools::equalZero(fBackScale))
- {
- fBackScale = 0.000001;
- }
-
- // aFront is scaled compared to aBack, create scaled version
- aFront = impScalePolyPolygonOnCenter(aFront, fBackScale);
- }
-
- if(bCloseFront)
- {
- const double fOffset(fDepth * fDiagonal * 0.5);
- fZFront = fDepth - fOffset;
- basegfx::B2DPolyPolygon aOuterFront;
- impGetOuterPolyPolygon(aFront, aOuterFront, fOffset, bCharacterMode);
- basegfx::B3DHomMatrix aTransformFront;
- aTransformFront.translate(0.0, 0.0, fDepth);
- rSliceVector.push_back(Slice3D(aOuterFront, aTransformFront, SLICETYPE3D_FRONTCAP));
- }
-
- if(bCloseBack)
- {
- const double fOffset(fDepth * fDiagonal * 0.5);
- fZBack = fOffset;
- impGetOuterPolyPolygon(aBack, aOuterBack, fOffset, bCharacterMode);
- }
-
- // add front and back polygons at evtl. changed depths
- {
- basegfx::B3DHomMatrix aTransformA, aTransformB;
-
- aTransformA.translate(0.0, 0.0, fZFront);
- rSliceVector.push_back(Slice3D(aFront, aTransformA));
-
- aTransformB.translate(0.0, 0.0, fZBack);
- rSliceVector.push_back(Slice3D(aBack, aTransformB));
- }
-
- if(bCloseBack)
- {
- rSliceVector.push_back(Slice3D(aOuterBack, basegfx::B3DHomMatrix(), SLICETYPE3D_BACKCAP));
- }
- }
- }
-
- basegfx::B3DPolyPolygon extractHorizontalLinesFromSlice(const Slice3DVector& rSliceVector, bool bCloseHorLines)
- {
- basegfx::B3DPolyPolygon aRetval;
- const sal_uInt32 nNumSlices(rSliceVector.size());
-
- if(nNumSlices)
- {
- const sal_uInt32 nSlideSubPolygonCount(rSliceVector[0].getB3DPolyPolygon().count());
-
- for(sal_uInt32 b(0); b < nSlideSubPolygonCount; b++)
- {
- const sal_uInt32 nSubPolygonPointCount(rSliceVector[0].getB3DPolyPolygon().getB3DPolygon(b).count());
-
- for(sal_uInt32 c(0); c < nSubPolygonPointCount; c++)
- {
- basegfx::B3DPolygon aNew;
-
- for(sal_uInt32 d(0); d < nNumSlices; d++)
- {
- OSL_ENSURE(nSlideSubPolygonCount == rSliceVector[d].getB3DPolyPolygon().count(),
- "Slice PolyPolygon with different Polygon count (!)");
- OSL_ENSURE(nSubPolygonPointCount == rSliceVector[d].getB3DPolyPolygon().getB3DPolygon(b).count(),
- "Slice Polygon with different point count (!)");
- aNew.append(rSliceVector[d].getB3DPolyPolygon().getB3DPolygon(b).getB3DPoint(c));
- }
-
- aNew.setClosed(bCloseHorLines);
- aRetval.append(aNew);
- }
- }
- }
-
- return aRetval;
- }
-
- basegfx::B3DPolyPolygon extractVerticalLinesFromSlice(const Slice3DVector& rSliceVector)
- {
- basegfx::B3DPolyPolygon aRetval;
- const sal_uInt32 nNumSlices(rSliceVector.size());
-
- for(sal_uInt32 a(0L); a < nNumSlices; a++)
- {
- aRetval.append(rSliceVector[a].getB3DPolyPolygon());
- }
-
- return aRetval;
- }
-
- void extractPlanesFromSlice(
- ::std::vector< basegfx::B3DPolyPolygon >& rFill,
- const Slice3DVector& rSliceVector,
- bool bCreateNormals,
- bool bSmoothHorizontalNormals,
- bool bSmoothNormals,
- bool bSmoothLids,
- bool bClosed,
- double fSmoothNormalsMix,
- double fSmoothLidsMix,
- bool bCreateTextureCoordinates,
- const basegfx::B2DHomMatrix& rTexTransform)
- {
- const sal_uInt32 nNumSlices(rSliceVector.size());
-
- if(nNumSlices)
- {
- // common parameters
- const sal_uInt32 nLoopCount(bClosed ? nNumSlices : nNumSlices - 1L);
- basegfx::B3DPolyPolygon aEdgeRounding;
- sal_uInt32 a;
-
- // tetxture parameters
- double fInvTexHeight(1.0);
- double fTexHeightPos(0.0);
- double fTexStart(0.0);
- double fTexStop(1.0);
- ::std::vector<double> aTexHeightArray;
- basegfx::B3DRange aTexRangeFront;
- basegfx::B3DRange aTexRangeBack;
-
- if(bCreateTextureCoordinates)
- {
- aTexRangeFront = basegfx::tools::getRange(rSliceVector[0L].getB3DPolyPolygon());
- aTexRangeBack = basegfx::tools::getRange(rSliceVector[nNumSlices - 1L].getB3DPolyPolygon());
-
- if(aTexRangeBack.getDepth() > aTexRangeBack.getWidth())
- {
- // last polygon is rotated so that depth is bigger than width, exchange X and Z
- // for making applyDefaultTextureCoordinatesParallel use Z instead of X for
- // horizontal texture coordinate
- aTexRangeBack = basegfx::B3DRange(
- aTexRangeBack.getMinZ(), aTexRangeBack.getMinY(), aTexRangeBack.getMinX(),
- aTexRangeBack.getMaxZ(), aTexRangeBack.getMaxY(), aTexRangeBack.getMaxX());
- }
-
- basegfx::B3DPoint aCenter(basegfx::tools::getRange(rSliceVector[0L].getB3DPolyPolygon()).getCenter());
-
- for(a = 0L; a < nLoopCount; a++)
- {
- const basegfx::B3DPoint aNextCenter(basegfx::tools::getRange(rSliceVector[(a + 1L) % nNumSlices].getB3DPolyPolygon()).getCenter());
- const double fLength(basegfx::B3DVector(aNextCenter - aCenter).getLength());
- aTexHeightArray.push_back(fLength);
- aCenter = aNextCenter;
- }
-
- const double fTexHeight(::std::accumulate(aTexHeightArray.begin(), aTexHeightArray.end(), 0.0));
-
- if(!basegfx::fTools::equalZero(fTexHeight))
- {
- fInvTexHeight = 1.0 / fTexHeight;
- }
- }
-
- if(nLoopCount)
- {
- for(a = 0L; a < nLoopCount; a++)
- {
- const Slice3D& rSliceA(rSliceVector[a]);
- const Slice3D& rSliceB(rSliceVector[(a + 1L) % nNumSlices]);
- const bool bAcceptPair(SLICETYPE3D_REGULAR == rSliceA.getSliceType() && SLICETYPE3D_REGULAR == rSliceB.getSliceType());
- basegfx::B3DPolyPolygon aPolA(rSliceA.getB3DPolyPolygon());
- basegfx::B3DPolyPolygon aPolB(rSliceB.getB3DPolyPolygon());
-
- if(bAcceptPair)
- {
- if(bCreateNormals)
- {
- impCreateInBetweenNormals(aPolB, aPolA, bSmoothHorizontalNormals);
- }
-
- {
- const sal_uInt32 nIndPrev((a + nNumSlices - 1L) % nNumSlices);
- const Slice3D& rSlicePrev(rSliceVector[nIndPrev]);
- basegfx::B3DPolyPolygon aPrev(rSlicePrev.getB3DPolyPolygon());
- basegfx::B3DPolyPolygon aPolAA(rSliceA.getB3DPolyPolygon());
-
- if(SLICETYPE3D_FRONTCAP == rSlicePrev.getSliceType())
- {
- basegfx::B3DPolyPolygon aFront(rSlicePrev.getB3DPolyPolygon());
- const bool bHasSlant(aPolAA != aPrev);
-
- if(bCreateTextureCoordinates)
- {
- aFront = basegfx::tools::applyDefaultTextureCoordinatesParallel(aFront, aTexRangeFront);
- }
-
- if(bCreateNormals)
- {
- basegfx::B3DVector aNormal(0.0, 0.0, -1.0);
-
- if(aFront.count())
- {
- aNormal = -aFront.getB3DPolygon(0L).getNormal();
- }
-
- impSetNormal(aFront, aNormal);
-
- if(bHasSlant)
- {
- impCreateInBetweenNormals(aPolAA, aPrev, bSmoothHorizontalNormals);
-
- if(bSmoothNormals)
- {
- // smooth and copy
- impMixNormals(aPolA, aPolAA, fSmoothNormalsMix);
- aPolAA = aPolA;
- }
- else
- {
- // take over from surface
- aPolAA = aPolA;
- }
-
- if(bSmoothLids)
- {
- // smooth and copy
- impMixNormals(aFront, aPrev, fSmoothLidsMix);
- aPrev = aFront;
- }
- else
- {
- // take over from front
- aPrev = aFront;
- }
- }
- else
- {
- if(bSmoothNormals)
- {
- // smooth
- impMixNormals(aPolA, aFront, fSmoothNormalsMix);
- }
-
- if(bSmoothLids)
- {
- // smooth and copy
- impMixNormals(aFront, aPolA, fSmoothLidsMix);
- aPolA = aFront;
- }
- }
- }
-
- if(bHasSlant)
- {
- if(bCreateTextureCoordinates)
- {
- fTexStart = fTexHeightPos * fInvTexHeight;
- fTexStop = (fTexHeightPos - aTexHeightArray[(a + nLoopCount - 1L) % nLoopCount]) * fInvTexHeight;
- }
-
- impAddInBetweenFill(aEdgeRounding, aPolAA, aPrev, fTexStart, fTexStop, bCreateNormals, bCreateTextureCoordinates);
- }
-
- aFront.flip();
- rFill.push_back(aFront);
- }
- else
- {
- if(bCreateNormals && bSmoothNormals && (nIndPrev != a + 1L))
- {
- impCreateInBetweenNormals(aPolAA, aPrev, bSmoothHorizontalNormals);
- impMixNormals(aPolA, aPolAA, 0.5);
- }
- }
- }
-
- {
- const sal_uInt32 nIndNext((a + 2L) % nNumSlices);
- const Slice3D& rSliceNext(rSliceVector[nIndNext]);
- basegfx::B3DPolyPolygon aNext(rSliceNext.getB3DPolyPolygon());
- basegfx::B3DPolyPolygon aPolBB(rSliceB.getB3DPolyPolygon());
-
- if(SLICETYPE3D_BACKCAP == rSliceNext.getSliceType())
- {
- basegfx::B3DPolyPolygon aBack(rSliceNext.getB3DPolyPolygon());
- const bool bHasSlant(aPolBB != aNext);
-
- if(bCreateTextureCoordinates)
- {
- aBack = basegfx::tools::applyDefaultTextureCoordinatesParallel(aBack, aTexRangeBack);
- }
-
- if(bCreateNormals)
- {
- const basegfx::B3DVector aNormal(aBack.count() ? aBack.getB3DPolygon(0L).getNormal() : basegfx::B3DVector(0.0, 0.0, 1.0));
- impSetNormal(aBack, aNormal);
-
- if(bHasSlant)
- {
- impCreateInBetweenNormals(aNext, aPolBB, bSmoothHorizontalNormals);
-
- if(bSmoothNormals)
- {
- // smooth and copy
- impMixNormals(aPolB, aPolBB, fSmoothNormalsMix);
- aPolBB = aPolB;
- }
- else
- {
- // take over from surface
- aPolBB = aPolB;
- }
-
- if(bSmoothLids)
- {
- // smooth and copy
- impMixNormals(aBack, aNext, fSmoothLidsMix);
- aNext = aBack;
- }
- else
- {
- // take over from back
- aNext = aBack;
- }
- }
- else
- {
- if(bSmoothNormals)
- {
- // smooth
- impMixNormals(aPolB, aBack, fSmoothNormalsMix);
- }
-
- if(bSmoothLids)
- {
- // smooth and copy
- impMixNormals(aBack, aPolB, fSmoothLidsMix);
- aPolB = aBack;
- }
- }
- }
-
- if(bHasSlant)
- {
- if(bCreateTextureCoordinates)
- {
- fTexStart = (fTexHeightPos + aTexHeightArray[a] + aTexHeightArray[(a + 1L) % nLoopCount]) * fInvTexHeight;
- fTexStop = (fTexHeightPos + aTexHeightArray[a]) * fInvTexHeight;
- }
-
- impAddInBetweenFill(aEdgeRounding, aNext, aPolBB, fTexStart, fTexStop, bCreateNormals, bCreateTextureCoordinates);
- }
-
- rFill.push_back(aBack);
- }
- else
- {
- if(bCreateNormals && bSmoothNormals && (nIndNext != a))
- {
- impCreateInBetweenNormals(aNext, aPolBB, bSmoothHorizontalNormals);
- impMixNormals(aPolB, aPolBB, 0.5);
- }
- }
- }
-
- if(bCreateTextureCoordinates)
- {
- fTexStart = (fTexHeightPos + aTexHeightArray[a]) * fInvTexHeight;
- fTexStop = fTexHeightPos * fInvTexHeight;
- }
-
- impAddInBetweenFill(aEdgeRounding, aPolB, aPolA, fTexStart, fTexStop, bCreateNormals, bCreateTextureCoordinates);
- }
-
- if(bCreateTextureCoordinates)
- {
- fTexHeightPos += aTexHeightArray[a];
- }
- }
- }
- else
- {
- // no loop, but a single slice (1 == nNumSlices), create a filling from the single
- // front plane
- const Slice3D& rSlice(rSliceVector[0]);
- basegfx::B3DPolyPolygon aFront(rSlice.getB3DPolyPolygon());
-
- if(bCreateTextureCoordinates)
- {
- aFront = basegfx::tools::applyDefaultTextureCoordinatesParallel(aFront, aTexRangeFront);
- }
-
- if(bCreateNormals)
- {
- basegfx::B3DVector aNormal(0.0, 0.0, -1.0);
-
- if(aFront.count())
- {
- aNormal = -aFront.getB3DPolygon(0L).getNormal();
- }
-
- impSetNormal(aFront, aNormal);
- }
-
- aFront.flip();
- rFill.push_back(aFront);
- }
-
- if(bCreateTextureCoordinates)
- {
- aEdgeRounding.transformTextureCoordiantes(rTexTransform);
- }
-
- for(a = 0L; a < aEdgeRounding.count(); a++)
- {
- rFill.push_back(basegfx::B3DPolyPolygon(aEdgeRounding.getB3DPolygon(a)));
- }
- }
- }
-
- void createReducedOutlines(
- const geometry::ViewInformation3D& rViewInformation,
- const basegfx::B3DHomMatrix& rObjectTransform,
- const basegfx::B3DPolygon& rLoopA,
- const basegfx::B3DPolygon& rLoopB,
- basegfx::B3DPolyPolygon& rTarget)
- {
- const sal_uInt32 nPointCount(rLoopA.count());
-
- // with idetic polygons there are no outlines
- if(rLoopA != rLoopB)
- {
- if(nPointCount && nPointCount == rLoopB.count())
- {
- const basegfx::B3DHomMatrix aObjectTransform(rViewInformation.getObjectToView() * rObjectTransform);
- const basegfx::B2DPolygon a2DLoopA(basegfx::tools::createB2DPolygonFromB3DPolygon(rLoopA, aObjectTransform));
- const basegfx::B2DPolygon a2DLoopB(basegfx::tools::createB2DPolygonFromB3DPolygon(rLoopB, aObjectTransform));
- const basegfx::B2DPoint a2DCenterA(a2DLoopA.getB2DRange().getCenter());
- const basegfx::B2DPoint a2DCenterB(a2DLoopB.getB2DRange().getCenter());
-
- // without detectable Y-Axis there are no outlines
- if(!a2DCenterA.equal(a2DCenterB))
- {
- // search for outmost left and right inter-loop-edges which do not cut the loops
- const basegfx::B2DPoint aCommonCenter(basegfx::average(a2DCenterA, a2DCenterB));
- const basegfx::B2DVector aAxisVector(a2DCenterA - a2DCenterB);
- double fMaxLeft(0.0);
- double fMaxRight(0.0);
- sal_uInt32 nIndexLeft(0);
- sal_uInt32 nIndexRight(0);
-
- for(sal_uInt32 a(0); a < nPointCount; a++)
- {
- const basegfx::B2DPoint aStart(a2DLoopA.getB2DPoint(a));
- const basegfx::B2DPoint aEnd(a2DLoopB.getB2DPoint(a));
- const basegfx::B2DPoint aMiddle(basegfx::average(aStart, aEnd));
-
- if(!basegfx::tools::isInside(a2DLoopA, aMiddle))
- {
- if(!basegfx::tools::isInside(a2DLoopB, aMiddle))
- {
- if(!impHasCutWith(a2DLoopA, aStart, aEnd))
- {
- if(!impHasCutWith(a2DLoopB, aStart, aEnd))
- {
- const basegfx::B2DVector aCandidateVector(aMiddle - aCommonCenter);
- const double fCross(aCandidateVector.cross(aAxisVector));
- const double fDistance(aCandidateVector.getLength());
-
- if(fCross > 0.0)
- {
- if(fDistance > fMaxLeft)
- {
- fMaxLeft = fDistance;
- nIndexLeft = a;
- }
- }
- else if(fCross < 0.0)
- {
- if(fDistance > fMaxRight)
- {
- fMaxRight = fDistance;
- nIndexRight = a;
- }
- }
- }
- }
- }
- }
- }
-
- if(fMaxLeft != 0.0)
- {
- basegfx::B3DPolygon aToBeAdded;
- aToBeAdded.append(rLoopA.getB3DPoint(nIndexLeft));
- aToBeAdded.append(rLoopB.getB3DPoint(nIndexLeft));
- rTarget.append(aToBeAdded);
- }
-
- if(fMaxRight != 0.0)
- {
- basegfx::B3DPolygon aToBeAdded;
- aToBeAdded.append(rLoopA.getB3DPoint(nIndexRight));
- aToBeAdded.append(rLoopB.getB3DPoint(nIndexRight));
- rTarget.append(aToBeAdded);
- }
- }
- }
- }
- }
-
- } // end of namespace primitive3d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/primitive3d/sdrextrudeprimitive3d.cxx b/drawinglayer/source/primitive3d/sdrextrudeprimitive3d.cxx
deleted file mode 100644
index c1f958f4ef..0000000000
--- a/drawinglayer/source/primitive3d/sdrextrudeprimitive3d.cxx
+++ /dev/null
@@ -1,528 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/primitive3d/sdrextrudeprimitive3d.hxx>
-#include <basegfx/matrix/b2dhommatrix.hxx>
-#include <basegfx/polygon/b2dpolygontools.hxx>
-#include <basegfx/polygon/b3dpolypolygontools.hxx>
-#include <drawinglayer/primitive3d/sdrdecompositiontools3d.hxx>
-#include <basegfx/tools/canvastools.hxx>
-#include <drawinglayer/primitive3d/drawinglayer_primitivetypes3d.hxx>
-#include <drawinglayer/geometry/viewinformation3d.hxx>
-#include <drawinglayer/attribute/sdrfillattribute.hxx>
-#include <drawinglayer/attribute/sdrlineattribute.hxx>
-#include <drawinglayer/attribute/sdrshadowattribute.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-using namespace com::sun::star;
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive3d
- {
- Primitive3DSequence SdrExtrudePrimitive3D::create3DDecomposition(const geometry::ViewInformation3D& rViewInformation) const
- {
- Primitive3DSequence aRetval;
-
- // get slices
- const Slice3DVector& rSliceVector = getSlices();
-
- if(rSliceVector.size())
- {
- sal_uInt32 a;
-
- // decide what to create
- const ::com::sun::star::drawing::NormalsKind eNormalsKind(getSdr3DObjectAttribute().getNormalsKind());
- const bool bCreateNormals(::com::sun::star::drawing::NormalsKind_SPECIFIC == eNormalsKind);
- const bool bCreateTextureCoordiantesX(::com::sun::star::drawing::TextureProjectionMode_OBJECTSPECIFIC == getSdr3DObjectAttribute().getTextureProjectionX());
- const bool bCreateTextureCoordiantesY(::com::sun::star::drawing::TextureProjectionMode_OBJECTSPECIFIC == getSdr3DObjectAttribute().getTextureProjectionY());
- basegfx::B2DHomMatrix aTexTransform;
-
- if(!getSdrLFSAttribute().getFill().isDefault() && (bCreateTextureCoordiantesX || bCreateTextureCoordiantesY))
- {
- const basegfx::B2DPolygon aFirstPolygon(maCorrectedPolyPolygon.getB2DPolygon(0L));
- const double fFrontLength(basegfx::tools::getLength(aFirstPolygon));
- const double fFrontArea(basegfx::tools::getArea(aFirstPolygon));
- const double fSqrtFrontArea(sqrt(fFrontArea));
- double fRelativeTextureWidth = basegfx::fTools::equalZero(fSqrtFrontArea) ? 1.0 : fFrontLength / fSqrtFrontArea;
- fRelativeTextureWidth = (double)((sal_uInt32)(fRelativeTextureWidth - 0.5));
-
- if(fRelativeTextureWidth < 1.0)
- {
- fRelativeTextureWidth = 1.0;
- }
-
- aTexTransform.translate(-0.5, -0.5);
- aTexTransform.scale(-1.0, -1.0);
- aTexTransform.translate(0.5, 0.5);
- aTexTransform.scale(fRelativeTextureWidth, 1.0);
- }
-
- // create geometry
- ::std::vector< basegfx::B3DPolyPolygon > aFill;
- extractPlanesFromSlice(aFill, rSliceVector,
- bCreateNormals, getSmoothHorizontalNormals(), getSmoothNormals(), getSmoothLids(), false,
- 0.5, 0.6, bCreateTextureCoordiantesX || bCreateTextureCoordiantesY, aTexTransform);
-
- // get full range
- const basegfx::B3DRange aRange(getRangeFrom3DGeometry(aFill));
-
- // normal creation
- if(!getSdrLFSAttribute().getFill().isDefault())
- {
- if(::com::sun::star::drawing::NormalsKind_SPHERE == eNormalsKind)
- {
- applyNormalsKindSphereTo3DGeometry(aFill, aRange);
- }
- else if(::com::sun::star::drawing::NormalsKind_FLAT == eNormalsKind)
- {
- applyNormalsKindFlatTo3DGeometry(aFill);
- }
-
- if(getSdr3DObjectAttribute().getNormalsInvert())
- {
- applyNormalsInvertTo3DGeometry(aFill);
- }
- }
-
- // texture coordinates
- if(!getSdrLFSAttribute().getFill().isDefault())
- {
- applyTextureTo3DGeometry(
- getSdr3DObjectAttribute().getTextureProjectionX(),
- getSdr3DObjectAttribute().getTextureProjectionY(),
- aFill,
- aRange,
- getTextureSize());
- }
-
- if(!getSdrLFSAttribute().getFill().isDefault())
- {
- // add fill
- aRetval = create3DPolyPolygonFillPrimitives(
- aFill,
- getTransform(),
- getTextureSize(),
- getSdr3DObjectAttribute(),
- getSdrLFSAttribute().getFill(),
- getSdrLFSAttribute().getFillFloatTransGradient());
- }
- else
- {
- // create simplified 3d hit test geometry
- aRetval = createHiddenGeometryPrimitives3D(
- aFill,
- getTransform(),
- getTextureSize(),
- getSdr3DObjectAttribute());
- }
-
- // add line
- if(!getSdrLFSAttribute().getLine().isDefault())
- {
- if(getSdr3DObjectAttribute().getReducedLineGeometry())
- {
- // create geometric outlines with reduced line geometry for chart.
- const basegfx::B3DPolyPolygon aVerLine(extractVerticalLinesFromSlice(rSliceVector));
- const sal_uInt32 nCount(aVerLine.count());
- basegfx::B3DPolyPolygon aReducedLoops;
- basegfx::B3DPolyPolygon aNewLineGeometry;
-
- // sort out doubles (front and back planes when no edge rounding is done). Since
- // this is a line geometry merged from PolyPolygons, loop over all Polygons
- for(a = 0; a < nCount; a++)
- {
- const sal_uInt32 nReducedCount(aReducedLoops.count());
- const basegfx::B3DPolygon aCandidate(aVerLine.getB3DPolygon(a));
- bool bAdd(true);
-
- if(nReducedCount)
- {
- for(sal_uInt32 b(0); bAdd && b < nReducedCount; b++)
- {
- if(aCandidate == aReducedLoops.getB3DPolygon(b))
- {
- bAdd = false;
- }
- }
- }
-
- if(bAdd)
- {
- aReducedLoops.append(aCandidate);
- }
- }
-
- // from here work with reduced loops and reduced count without changing them
- const sal_uInt32 nReducedCount(aReducedLoops.count());
-
- if(nReducedCount > 1)
- {
- for(sal_uInt32 b(1); b < nReducedCount; b++)
- {
- // get loop pair
- const basegfx::B3DPolygon aCandA(aReducedLoops.getB3DPolygon(b - 1));
- const basegfx::B3DPolygon aCandB(aReducedLoops.getB3DPolygon(b));
-
- // for each loop pair create the connection edges
- createReducedOutlines(
- rViewInformation,
- getTransform(),
- aCandA,
- aCandB,
- aNewLineGeometry);
- }
- }
-
- // add reduced loops themselves
- aNewLineGeometry.append(aReducedLoops);
-
- // to create vertical edges at non-C1/C2 steady loops, use maCorrectedPolyPolygon
- // directly since the 3D Polygons do not suport this.
- //
- // Unfortunately there is no bezier polygon provided by the chart module; one reason is
- // that the API for extrude wants a 3D polygon geometry (for historical reasons, i guess)
- // and those have no beziers. Another reason is that he chart module uses self-created
- // stuff to create the 2D geometry (in ShapeFactory::createPieSegment), but this geometry
- // does not contain bezier infos, either. The only way which is possible for now is to 'detect'
- // candidates for vertical edges of pie segments by looking for the angles in the polygon.
- //
- // This is all not very well designed ATM. Ideally, the ReducedLineGeometry is responsible
- // for creating the outer geometry edges (createReducedOutlines), but for special edges
- // like the vertical ones for pie center and both start/end, the incarnation with the
- // knowledge about that it needs to create those and IS a pie segment -> in this case,
- // the chart itself.
- const sal_uInt32 nPolyCount(maCorrectedPolyPolygon.count());
-
- for(sal_uInt32 c(0); c < nPolyCount; c++)
- {
- const basegfx::B2DPolygon aCandidate(maCorrectedPolyPolygon.getB2DPolygon(c));
- const sal_uInt32 nPointCount(aCandidate.count());
-
- if(nPointCount > 2)
- {
- sal_uInt32 nIndexA(nPointCount);
- sal_uInt32 nIndexB(nPointCount);
- sal_uInt32 nIndexC(nPointCount);
-
- for(sal_uInt32 d(0); d < nPointCount; d++)
- {
- const sal_uInt32 nPrevInd((d + nPointCount - 1) % nPointCount);
- const sal_uInt32 nNextInd((d + 1) % nPointCount);
- const basegfx::B2DPoint aPoint(aCandidate.getB2DPoint(d));
- const basegfx::B2DVector aPrev(aCandidate.getB2DPoint(nPrevInd) - aPoint);
- const basegfx::B2DVector aNext(aCandidate.getB2DPoint(nNextInd) - aPoint);
- const double fAngle(aPrev.angle(aNext));
-
- // take each angle which deviates more than 10% from going straight as
- // special edge. This will detect the two outer edges of pie segments,
- // but not always the center one (think about a near 180 degree pie)
- if(F_PI - fabs(fAngle) > F_PI * 0.1)
- {
- if(nPointCount == nIndexA)
- {
- nIndexA = d;
- }
- else if(nPointCount == nIndexB)
- {
- nIndexB = d;
- }
- else if(nPointCount == nIndexC)
- {
- nIndexC = d;
- d = nPointCount;
- }
- }
- }
-
- const bool bIndexAUsed(nIndexA != nPointCount);
- const bool bIndexBUsed(nIndexB != nPointCount);
- bool bIndexCUsed(nIndexC != nPointCount);
-
- if(bIndexCUsed)
- {
- // already three special edges found, so the center one was already detected
- // and does not need to be searched
- }
- else if(bIndexAUsed && bIndexBUsed)
- {
- // outer edges detected (they are approx. 90 degrees), but center one not.
- // Look with the knowledge that it's in-between the two found ones
- if(((nIndexA + 2) % nPointCount) == nIndexB)
- {
- nIndexC = (nIndexA + 1) % nPointCount;
- }
- else if(((nIndexA + nPointCount - 2) % nPointCount) == nIndexB)
- {
- nIndexC = (nIndexA + nPointCount - 1) % nPointCount;
- }
-
- bIndexCUsed = (nIndexC != nPointCount);
- }
-
- if(bIndexAUsed)
- {
- const basegfx::B2DPoint aPoint(aCandidate.getB2DPoint(nIndexA));
- const basegfx::B3DPoint aStart(aPoint.getX(), aPoint.getY(), 0.0);
- const basegfx::B3DPoint aEnd(aPoint.getX(), aPoint.getY(), getDepth());
- basegfx::B3DPolygon aToBeAdded;
-
- aToBeAdded.append(aStart);
- aToBeAdded.append(aEnd);
- aNewLineGeometry.append(aToBeAdded);
- }
-
- if(bIndexBUsed)
- {
- const basegfx::B2DPoint aPoint(aCandidate.getB2DPoint(nIndexB));
- const basegfx::B3DPoint aStart(aPoint.getX(), aPoint.getY(), 0.0);
- const basegfx::B3DPoint aEnd(aPoint.getX(), aPoint.getY(), getDepth());
- basegfx::B3DPolygon aToBeAdded;
-
- aToBeAdded.append(aStart);
- aToBeAdded.append(aEnd);
- aNewLineGeometry.append(aToBeAdded);
- }
-
- if(bIndexCUsed)
- {
- const basegfx::B2DPoint aPoint(aCandidate.getB2DPoint(nIndexC));
- const basegfx::B3DPoint aStart(aPoint.getX(), aPoint.getY(), 0.0);
- const basegfx::B3DPoint aEnd(aPoint.getX(), aPoint.getY(), getDepth());
- basegfx::B3DPolygon aToBeAdded;
-
- aToBeAdded.append(aStart);
- aToBeAdded.append(aEnd);
- aNewLineGeometry.append(aToBeAdded);
- }
- }
- }
-
- // append loops themselves
- aNewLineGeometry.append(aReducedLoops);
-
- if(aNewLineGeometry.count())
- {
- const Primitive3DSequence aLines(create3DPolyPolygonLinePrimitives(
- aNewLineGeometry, getTransform(), getSdrLFSAttribute().getLine()));
- appendPrimitive3DSequenceToPrimitive3DSequence(aRetval, aLines);
- }
- }
- else
- {
- // extract line geometry from slices
- const basegfx::B3DPolyPolygon aHorLine(extractHorizontalLinesFromSlice(rSliceVector, false));
- const basegfx::B3DPolyPolygon aVerLine(extractVerticalLinesFromSlice(rSliceVector));
-
- // add horizontal lines
- const Primitive3DSequence aHorLines(create3DPolyPolygonLinePrimitives(
- aHorLine, getTransform(), getSdrLFSAttribute().getLine()));
- appendPrimitive3DSequenceToPrimitive3DSequence(aRetval, aHorLines);
-
- // add vertical lines
- const Primitive3DSequence aVerLines(create3DPolyPolygonLinePrimitives(
- aVerLine, getTransform(), getSdrLFSAttribute().getLine()));
- appendPrimitive3DSequenceToPrimitive3DSequence(aRetval, aVerLines);
- }
- }
-
- // add shadow
- if(!getSdrLFSAttribute().getShadow().isDefault() && aRetval.hasElements())
- {
- const Primitive3DSequence aShadow(createShadowPrimitive3D(
- aRetval, getSdrLFSAttribute().getShadow(), getSdr3DObjectAttribute().getShadow3D()));
- appendPrimitive3DSequenceToPrimitive3DSequence(aRetval, aShadow);
- }
- }
-
- return aRetval;
- }
-
- void SdrExtrudePrimitive3D::impCreateSlices()
- {
- // prepare the polygon. No double points, correct orientations and a correct
- // outmost polygon are needed
- maCorrectedPolyPolygon = getPolyPolygon();
- maCorrectedPolyPolygon.removeDoublePoints();
- maCorrectedPolyPolygon = basegfx::tools::correctOrientations(maCorrectedPolyPolygon);
- maCorrectedPolyPolygon = basegfx::tools::correctOutmostPolygon(maCorrectedPolyPolygon);
-
- // prepare slices as geometry
- createExtrudeSlices(maSlices, maCorrectedPolyPolygon, getBackScale(), getDiagonal(), getDepth(), getCharacterMode(), getCloseFront(), getCloseBack());
- }
-
- const Slice3DVector& SdrExtrudePrimitive3D::getSlices() const
- {
- // This can be made dependent of getSdrLFSAttribute().getFill() and getSdrLFSAttribute().getLine()
- // again when no longer geometry is needed for non-visible 3D objects as it is now for chart
- if(getPolyPolygon().count() && !maSlices.size())
- {
- ::osl::Mutex m_mutex;
- const_cast< SdrExtrudePrimitive3D& >(*this).impCreateSlices();
- }
-
- return maSlices;
- }
-
- SdrExtrudePrimitive3D::SdrExtrudePrimitive3D(
- const basegfx::B3DHomMatrix& rTransform,
- const basegfx::B2DVector& rTextureSize,
- const attribute::SdrLineFillShadowAttribute3D& rSdrLFSAttribute,
- const attribute::Sdr3DObjectAttribute& rSdr3DObjectAttribute,
- const basegfx::B2DPolyPolygon& rPolyPolygon,
- double fDepth,
- double fDiagonal,
- double fBackScale,
- bool bSmoothNormals,
- bool bSmoothHorizontalNormals,
- bool bSmoothLids,
- bool bCharacterMode,
- bool bCloseFront,
- bool bCloseBack)
- : SdrPrimitive3D(rTransform, rTextureSize, rSdrLFSAttribute, rSdr3DObjectAttribute),
- maCorrectedPolyPolygon(),
- maSlices(),
- maPolyPolygon(rPolyPolygon),
- mfDepth(fDepth),
- mfDiagonal(fDiagonal),
- mfBackScale(fBackScale),
- mpLastRLGViewInformation(0),
- mbSmoothNormals(bSmoothNormals),
- mbSmoothHorizontalNormals(bSmoothHorizontalNormals),
- mbSmoothLids(bSmoothLids),
- mbCharacterMode(bCharacterMode),
- mbCloseFront(bCloseFront),
- mbCloseBack(bCloseBack)
- {
- // make sure depth is positive
- if(basegfx::fTools::lessOrEqual(getDepth(), 0.0))
- {
- mfDepth = 0.0;
- }
-
- // make sure the percentage value getDiagonal() is between 0.0 and 1.0
- if(basegfx::fTools::lessOrEqual(getDiagonal(), 0.0))
- {
- mfDiagonal = 0.0;
- }
- else if(basegfx::fTools::moreOrEqual(getDiagonal(), 1.0))
- {
- mfDiagonal = 1.0;
- }
-
- // no close front/back when polygon is not closed
- if(getPolyPolygon().count() && !getPolyPolygon().getB2DPolygon(0L).isClosed())
- {
- mbCloseFront = mbCloseBack = false;
- }
-
- // no edge rounding when not closing
- if(!getCloseFront() && !getCloseBack())
- {
- mfDiagonal = 0.0;
- }
- }
-
- SdrExtrudePrimitive3D::~SdrExtrudePrimitive3D()
- {
- if(mpLastRLGViewInformation)
- {
- delete mpLastRLGViewInformation;
- }
- }
-
- bool SdrExtrudePrimitive3D::operator==(const BasePrimitive3D& rPrimitive) const
- {
- if(SdrPrimitive3D::operator==(rPrimitive))
- {
- const SdrExtrudePrimitive3D& rCompare = static_cast< const SdrExtrudePrimitive3D& >(rPrimitive);
-
- return (getPolyPolygon() == rCompare.getPolyPolygon()
- && getDepth() == rCompare.getDepth()
- && getDiagonal() == rCompare.getDiagonal()
- && getBackScale() == rCompare.getBackScale()
- && getSmoothNormals() == rCompare.getSmoothNormals()
- && getSmoothHorizontalNormals() == rCompare.getSmoothHorizontalNormals()
- && getSmoothLids() == rCompare.getSmoothLids()
- && getCharacterMode() == rCompare.getCharacterMode()
- && getCloseFront() == rCompare.getCloseFront()
- && getCloseBack() == rCompare.getCloseBack());
- }
-
- return false;
- }
-
- basegfx::B3DRange SdrExtrudePrimitive3D::getB3DRange(const geometry::ViewInformation3D& /*rViewInformation*/) const
- {
- // use defaut from sdrPrimitive3D which uses transformation expanded by line width/2
- // The parent implementation which uses the ranges of the decomposition would be more
- // corrcet, but for historical reasons it is necessary to do the old method: To get
- // the range of the non-transformed geometry and transform it then. This leads to different
- // ranges where the new method is more correct, but the need to keep the old behaviour
- // has priority here.
- return get3DRangeFromSlices(getSlices());
- }
-
- Primitive3DSequence SdrExtrudePrimitive3D::get3DDecomposition(const geometry::ViewInformation3D& rViewInformation) const
- {
- if(getSdr3DObjectAttribute().getReducedLineGeometry())
- {
- if(!mpLastRLGViewInformation ||
- (getBuffered3DDecomposition().hasElements()
- && *mpLastRLGViewInformation != rViewInformation))
- {
- // conditions of last local decomposition with reduced lines have changed. Remember
- // new one and clear current decompositiopn
- ::osl::Mutex m_mutex;
- SdrExtrudePrimitive3D* pThat = const_cast< SdrExtrudePrimitive3D* >(this);
- pThat->setBuffered3DDecomposition(Primitive3DSequence());
- delete pThat->mpLastRLGViewInformation;
- pThat->mpLastRLGViewInformation = new geometry::ViewInformation3D(rViewInformation);
- }
- }
-
- // no test for buffering needed, call parent
- return SdrPrimitive3D::get3DDecomposition(rViewInformation);
- }
-
- // provide unique ID
- ImplPrimitrive3DIDBlock(SdrExtrudePrimitive3D, PRIMITIVE3D_ID_SDREXTRUDEPRIMITIVE3D)
-
- } // end of namespace primitive3d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/primitive3d/sdrlatheprimitive3d.cxx b/drawinglayer/source/primitive3d/sdrlatheprimitive3d.cxx
deleted file mode 100644
index dcb5409ae9..0000000000
--- a/drawinglayer/source/primitive3d/sdrlatheprimitive3d.cxx
+++ /dev/null
@@ -1,390 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/primitive3d/sdrlatheprimitive3d.hxx>
-#include <basegfx/matrix/b2dhommatrix.hxx>
-#include <basegfx/polygon/b2dpolygontools.hxx>
-#include <basegfx/polygon/b3dpolypolygontools.hxx>
-#include <drawinglayer/primitive3d/sdrdecompositiontools3d.hxx>
-#include <basegfx/tools/canvastools.hxx>
-#include <drawinglayer/primitive3d/drawinglayer_primitivetypes3d.hxx>
-#include <drawinglayer/geometry/viewinformation3d.hxx>
-#include <drawinglayer/attribute/sdrfillattribute.hxx>
-#include <drawinglayer/attribute/sdrlineattribute.hxx>
-#include <drawinglayer/attribute/sdrshadowattribute.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-using namespace com::sun::star;
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive3d
- {
- Primitive3DSequence SdrLathePrimitive3D::create3DDecomposition(const geometry::ViewInformation3D& rViewInformation) const
- {
- Primitive3DSequence aRetval;
-
- // get slices
- const Slice3DVector& rSliceVector = getSlices();
-
- if(rSliceVector.size())
- {
- const bool bBackScale(!basegfx::fTools::equal(getBackScale(), 1.0));
- const bool bClosedRotation(!bBackScale && getHorizontalSegments() && basegfx::fTools::equal(getRotation(), F_2PI));
- sal_uInt32 a;
-
- // decide what to create
- const ::com::sun::star::drawing::NormalsKind eNormalsKind(getSdr3DObjectAttribute().getNormalsKind());
- const bool bCreateNormals(::com::sun::star::drawing::NormalsKind_SPECIFIC == eNormalsKind);
- const bool bCreateTextureCoordiantesX(::com::sun::star::drawing::TextureProjectionMode_OBJECTSPECIFIC == getSdr3DObjectAttribute().getTextureProjectionX());
- const bool bCreateTextureCoordiantesY(::com::sun::star::drawing::TextureProjectionMode_OBJECTSPECIFIC == getSdr3DObjectAttribute().getTextureProjectionY());
- basegfx::B2DHomMatrix aTexTransform;
-
- if(!getSdrLFSAttribute().getFill().isDefault()
- && (bCreateTextureCoordiantesX || bCreateTextureCoordiantesY))
- {
- aTexTransform.set(0, 0, 0.0);
- aTexTransform.set(0, 1, 1.0);
- aTexTransform.set(1, 0, 1.0);
- aTexTransform.set(1, 1, 0.0);
-
- aTexTransform.translate(0.0, -0.5);
- aTexTransform.scale(1.0, -1.0);
- aTexTransform.translate(0.0, 0.5);
- }
-
- // create geometry
- ::std::vector< basegfx::B3DPolyPolygon > aFill;
- extractPlanesFromSlice(aFill, rSliceVector,
- bCreateNormals, getSmoothHorizontalNormals(), getSmoothNormals(), getSmoothLids(), bClosedRotation,
- 0.85, 0.6, bCreateTextureCoordiantesX || bCreateTextureCoordiantesY, aTexTransform);
-
- // get full range
- const basegfx::B3DRange aRange(getRangeFrom3DGeometry(aFill));
-
- // normal creation
- if(!getSdrLFSAttribute().getFill().isDefault())
- {
- if(::com::sun::star::drawing::NormalsKind_SPHERE == eNormalsKind)
- {
- applyNormalsKindSphereTo3DGeometry(aFill, aRange);
- }
- else if(::com::sun::star::drawing::NormalsKind_FLAT == eNormalsKind)
- {
- applyNormalsKindFlatTo3DGeometry(aFill);
- }
-
- if(getSdr3DObjectAttribute().getNormalsInvert())
- {
- applyNormalsInvertTo3DGeometry(aFill);
- }
- }
-
- // texture coordinates
- if(!getSdrLFSAttribute().getFill().isDefault())
- {
- applyTextureTo3DGeometry(
- getSdr3DObjectAttribute().getTextureProjectionX(),
- getSdr3DObjectAttribute().getTextureProjectionY(),
- aFill,
- aRange,
- getTextureSize());
- }
-
- if(!getSdrLFSAttribute().getFill().isDefault())
- {
- // add fill
- aRetval = create3DPolyPolygonFillPrimitives(
- aFill,
- getTransform(),
- getTextureSize(),
- getSdr3DObjectAttribute(),
- getSdrLFSAttribute().getFill(),
- getSdrLFSAttribute().getFillFloatTransGradient());
- }
- else
- {
- // create simplified 3d hit test geometry
- aRetval = createHiddenGeometryPrimitives3D(
- aFill,
- getTransform(),
- getTextureSize(),
- getSdr3DObjectAttribute());
- }
-
- // add line
- if(!getSdrLFSAttribute().getLine().isDefault())
- {
- if(getSdr3DObjectAttribute().getReducedLineGeometry())
- {
- // create geometric outlines with reduced line geometry for chart
- const basegfx::B3DPolyPolygon aHorLine(extractHorizontalLinesFromSlice(rSliceVector, bClosedRotation));
- const sal_uInt32 nCount(aHorLine.count());
- basegfx::B3DPolyPolygon aNewLineGeometry;
-
- for(a = 1; a < nCount; a++)
- {
- // for each loop pair create the connection edges
- createReducedOutlines(
- rViewInformation,
- getTransform(),
- aHorLine.getB3DPolygon(a - 1),
- aHorLine.getB3DPolygon(a),
- aNewLineGeometry);
- }
-
- for(a = 0; a < nCount; a++)
- {
- // filter hor lines for empty loops (those who have their defining point on the Y-Axis)
- basegfx::B3DPolygon aCandidate(aHorLine.getB3DPolygon(a));
- aCandidate.removeDoublePoints();
-
- if(aCandidate.count())
- {
- aNewLineGeometry.append(aCandidate);
- }
- }
-
- if(aNewLineGeometry.count())
- {
- const Primitive3DSequence aLines(create3DPolyPolygonLinePrimitives(
- aNewLineGeometry, getTransform(), getSdrLFSAttribute().getLine()));
- appendPrimitive3DSequenceToPrimitive3DSequence(aRetval, aLines);
- }
- }
- else
- {
- // extract line geometry from slices
- const basegfx::B3DPolyPolygon aHorLine(extractHorizontalLinesFromSlice(rSliceVector, bClosedRotation));
- const basegfx::B3DPolyPolygon aVerLine(extractVerticalLinesFromSlice(rSliceVector));
-
- // add horizontal lines
- const Primitive3DSequence aHorLines(create3DPolyPolygonLinePrimitives(
- aHorLine, getTransform(), getSdrLFSAttribute().getLine()));
- appendPrimitive3DSequenceToPrimitive3DSequence(aRetval, aHorLines);
-
- // add vertical lines
- const Primitive3DSequence aVerLines(create3DPolyPolygonLinePrimitives(
- aVerLine, getTransform(), getSdrLFSAttribute().getLine()));
- appendPrimitive3DSequenceToPrimitive3DSequence(aRetval, aVerLines);
- }
- }
-
- // add shadow
- if(!getSdrLFSAttribute().getShadow().isDefault()
- && aRetval.hasElements())
- {
- const Primitive3DSequence aShadow(createShadowPrimitive3D(
- aRetval, getSdrLFSAttribute().getShadow(), getSdr3DObjectAttribute().getShadow3D()));
- appendPrimitive3DSequenceToPrimitive3DSequence(aRetval, aShadow);
- }
- }
-
- return aRetval;
- }
-
- void SdrLathePrimitive3D::impCreateSlices()
- {
- // prepare the polygon. No double points, correct orientations and a correct
- // outmost polygon are needed
- maCorrectedPolyPolygon = basegfx::tools::adaptiveSubdivideByAngle(getPolyPolygon());
- maCorrectedPolyPolygon.removeDoublePoints();
- maCorrectedPolyPolygon = basegfx::tools::correctOrientations(maCorrectedPolyPolygon);
- maCorrectedPolyPolygon = basegfx::tools::correctOutmostPolygon(maCorrectedPolyPolygon);
-
- // check edge count of first sub-polygon. If different, reSegment polyPolygon. This ensures
- // that for polyPolygons, the subPolys 1..n only get reSegmented when polygon 0L is different
- // at all (and not always)
- const basegfx::B2DPolygon aSubCandidate(maCorrectedPolyPolygon.getB2DPolygon(0));
- const sal_uInt32 nSubEdgeCount(aSubCandidate.isClosed() ? aSubCandidate.count() : (aSubCandidate.count() ? aSubCandidate.count() - 1L : 0L));
-
- if(nSubEdgeCount != getVerticalSegments())
- {
- maCorrectedPolyPolygon = basegfx::tools::reSegmentPolyPolygon(maCorrectedPolyPolygon, getVerticalSegments());
- }
-
- // prepare slices as geometry
- createLatheSlices(maSlices, maCorrectedPolyPolygon, getBackScale(), getDiagonal(), getRotation(), getHorizontalSegments(), getCharacterMode(), getCloseFront(), getCloseBack());
- }
-
- const Slice3DVector& SdrLathePrimitive3D::getSlices() const
- {
- // This can be made dependent of getSdrLFSAttribute().getFill() and getSdrLFSAttribute().getLine()
- // again when no longer geometry is needed for non-visible 3D objects as it is now for chart
- if(getPolyPolygon().count() && !maSlices.size())
- {
- ::osl::Mutex m_mutex;
- const_cast< SdrLathePrimitive3D& >(*this).impCreateSlices();
- }
-
- return maSlices;
- }
-
- SdrLathePrimitive3D::SdrLathePrimitive3D(
- const basegfx::B3DHomMatrix& rTransform,
- const basegfx::B2DVector& rTextureSize,
- const attribute::SdrLineFillShadowAttribute3D& rSdrLFSAttribute,
- const attribute::Sdr3DObjectAttribute& rSdr3DObjectAttribute,
- const basegfx::B2DPolyPolygon& rPolyPolygon,
- sal_uInt32 nHorizontalSegments,
- sal_uInt32 nVerticalSegments,
- double fDiagonal,
- double fBackScale,
- double fRotation,
- bool bSmoothNormals,
- bool bSmoothHorizontalNormals,
- bool bSmoothLids,
- bool bCharacterMode,
- bool bCloseFront,
- bool bCloseBack)
- : SdrPrimitive3D(rTransform, rTextureSize, rSdrLFSAttribute, rSdr3DObjectAttribute),
- maCorrectedPolyPolygon(),
- maSlices(),
- maPolyPolygon(rPolyPolygon),
- mnHorizontalSegments(nHorizontalSegments),
- mnVerticalSegments(nVerticalSegments),
- mfDiagonal(fDiagonal),
- mfBackScale(fBackScale),
- mfRotation(fRotation),
- mpLastRLGViewInformation(0),
- mbSmoothNormals(bSmoothNormals),
- mbSmoothHorizontalNormals(bSmoothHorizontalNormals),
- mbSmoothLids(bSmoothLids),
- mbCharacterMode(bCharacterMode),
- mbCloseFront(bCloseFront),
- mbCloseBack(bCloseBack)
- {
- // make sure Rotation is positive
- if(basegfx::fTools::lessOrEqual(getRotation(), 0.0))
- {
- mfRotation = 0.0;
- }
-
- // make sure the percentage value getDiagonal() is between 0.0 and 1.0
- if(basegfx::fTools::lessOrEqual(getDiagonal(), 0.0))
- {
- mfDiagonal = 0.0;
- }
- else if(basegfx::fTools::moreOrEqual(getDiagonal(), 1.0))
- {
- mfDiagonal = 1.0;
- }
-
- // no close front/back when polygon is not closed
- if(getPolyPolygon().count() && !getPolyPolygon().getB2DPolygon(0L).isClosed())
- {
- mbCloseFront = mbCloseBack = false;
- }
-
- // no edge rounding when not closing
- if(!getCloseFront() && !getCloseBack())
- {
- mfDiagonal = 0.0;
- }
- }
-
- SdrLathePrimitive3D::~SdrLathePrimitive3D()
- {
- if(mpLastRLGViewInformation)
- {
- delete mpLastRLGViewInformation;
- }
- }
-
- bool SdrLathePrimitive3D::operator==(const BasePrimitive3D& rPrimitive) const
- {
- if(SdrPrimitive3D::operator==(rPrimitive))
- {
- const SdrLathePrimitive3D& rCompare = static_cast< const SdrLathePrimitive3D& >(rPrimitive);
-
- return (getPolyPolygon() == rCompare.getPolyPolygon()
- && getHorizontalSegments() == rCompare.getHorizontalSegments()
- && getVerticalSegments() == rCompare.getVerticalSegments()
- && getDiagonal() == rCompare.getDiagonal()
- && getBackScale() == rCompare.getBackScale()
- && getRotation() == rCompare.getRotation()
- && getSmoothNormals() == rCompare.getSmoothNormals()
- && getSmoothHorizontalNormals() == rCompare.getSmoothHorizontalNormals()
- && getSmoothLids() == rCompare.getSmoothLids()
- && getCharacterMode() == rCompare.getCharacterMode()
- && getCloseFront() == rCompare.getCloseFront()
- && getCloseBack() == rCompare.getCloseBack());
- }
-
- return false;
- }
-
- basegfx::B3DRange SdrLathePrimitive3D::getB3DRange(const geometry::ViewInformation3D& /*rViewInformation*/) const
- {
- // use defaut from sdrPrimitive3D which uses transformation expanded by line width/2
- // The parent implementation which uses the ranges of the decomposition would be more
- // corrcet, but for historical reasons it is necessary to do the old method: To get
- // the range of the non-transformed geometry and transform it then. This leads to different
- // ranges where the new method is more correct, but the need to keep the old behaviour
- // has priority here.
- return get3DRangeFromSlices(getSlices());
- }
-
- Primitive3DSequence SdrLathePrimitive3D::get3DDecomposition(const geometry::ViewInformation3D& rViewInformation) const
- {
- if(getSdr3DObjectAttribute().getReducedLineGeometry())
- {
- if(!mpLastRLGViewInformation ||
- (getBuffered3DDecomposition().hasElements()
- && *mpLastRLGViewInformation != rViewInformation))
- {
- // conditions of last local decomposition with reduced lines have changed. Remember
- // new one and clear current decompositiopn
- ::osl::Mutex m_mutex;
- SdrLathePrimitive3D* pThat = const_cast< SdrLathePrimitive3D* >(this);
- pThat->setBuffered3DDecomposition(Primitive3DSequence());
- delete pThat->mpLastRLGViewInformation;
- pThat->mpLastRLGViewInformation = new geometry::ViewInformation3D(rViewInformation);
- }
- }
-
- // no test for buffering needed, call parent
- return SdrPrimitive3D::get3DDecomposition(rViewInformation);
- }
-
- // provide unique ID
- ImplPrimitrive3DIDBlock(SdrLathePrimitive3D, PRIMITIVE3D_ID_SDRLATHEPRIMITIVE3D)
-
- } // end of namespace primitive3d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/primitive3d/sdrpolypolygonprimitive3d.cxx b/drawinglayer/source/primitive3d/sdrpolypolygonprimitive3d.cxx
deleted file mode 100644
index 46b3225c29..0000000000
--- a/drawinglayer/source/primitive3d/sdrpolypolygonprimitive3d.cxx
+++ /dev/null
@@ -1,197 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/primitive3d/sdrpolypolygonprimitive3d.hxx>
-#include <drawinglayer/primitive3d/sdrdecompositiontools3d.hxx>
-#include <drawinglayer/primitive3d/drawinglayer_primitivetypes3d.hxx>
-#include <basegfx/polygon/b3dpolypolygontools.hxx>
-#include <drawinglayer/attribute/sdrfillattribute.hxx>
-#include <drawinglayer/attribute/sdrlineattribute.hxx>
-#include <drawinglayer/attribute/sdrshadowattribute.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-using namespace com::sun::star;
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive3d
- {
- Primitive3DSequence SdrPolyPolygonPrimitive3D::create3DDecomposition(const geometry::ViewInformation3D& /*rViewInformation*/) const
- {
- Primitive3DSequence aRetval;
-
- if(getPolyPolygon3D().count())
- {
- ::std::vector< basegfx::B3DPolyPolygon > aFill;
- aFill.push_back(getPolyPolygon3D());
-
- // get full range
- const basegfx::B3DRange aRange(getRangeFrom3DGeometry(aFill));
-
- // #i98295# normal creation
- if(!getSdrLFSAttribute().getFill().isDefault())
- {
- if(::com::sun::star::drawing::NormalsKind_SPHERE == getSdr3DObjectAttribute().getNormalsKind())
- {
- applyNormalsKindSphereTo3DGeometry(aFill, aRange);
- }
- else if(::com::sun::star::drawing::NormalsKind_FLAT == getSdr3DObjectAttribute().getNormalsKind())
- {
- applyNormalsKindFlatTo3DGeometry(aFill);
- }
-
- if(getSdr3DObjectAttribute().getNormalsInvert())
- {
- applyNormalsInvertTo3DGeometry(aFill);
- }
- }
-
- // #i98314# texture coordinates
- if(!getSdrLFSAttribute().getFill().isDefault())
- {
- applyTextureTo3DGeometry(
- getSdr3DObjectAttribute().getTextureProjectionX(),
- getSdr3DObjectAttribute().getTextureProjectionY(),
- aFill,
- aRange,
- getTextureSize());
- }
-
- if(!getSdrLFSAttribute().getFill().isDefault())
- {
- // add fill
- aRetval = create3DPolyPolygonFillPrimitives(
- aFill,
- getTransform(),
- getTextureSize(),
- getSdr3DObjectAttribute(),
- getSdrLFSAttribute().getFill(),
- getSdrLFSAttribute().getFillFloatTransGradient());
- }
- else
- {
- // create simplified 3d hit test geometry
- aRetval = createHiddenGeometryPrimitives3D(
- aFill,
- getTransform(),
- getTextureSize(),
- getSdr3DObjectAttribute());
- }
-
- // add line
- if(!getSdrLFSAttribute().getLine().isDefault())
- {
- basegfx::B3DPolyPolygon aLine(getPolyPolygon3D());
- aLine.clearNormals();
- aLine.clearTextureCoordinates();
- const Primitive3DSequence aLines(create3DPolyPolygonLinePrimitives(
- aLine, getTransform(), getSdrLFSAttribute().getLine()));
- appendPrimitive3DSequenceToPrimitive3DSequence(aRetval, aLines);
- }
-
- // add shadow
- if(!getSdrLFSAttribute().getShadow().isDefault()
- && aRetval.hasElements())
- {
- const Primitive3DSequence aShadow(createShadowPrimitive3D(
- aRetval, getSdrLFSAttribute().getShadow(), getSdr3DObjectAttribute().getShadow3D()));
- appendPrimitive3DSequenceToPrimitive3DSequence(aRetval, aShadow);
- }
- }
-
- return aRetval;
- }
-
- SdrPolyPolygonPrimitive3D::SdrPolyPolygonPrimitive3D(
- const basegfx::B3DPolyPolygon& rPolyPolygon3D,
- const basegfx::B3DHomMatrix& rTransform,
- const basegfx::B2DVector& rTextureSize,
- const attribute::SdrLineFillShadowAttribute3D& rSdrLFSAttribute,
- const attribute::Sdr3DObjectAttribute& rSdr3DObjectAttribute)
- : SdrPrimitive3D(rTransform, rTextureSize, rSdrLFSAttribute, rSdr3DObjectAttribute),
- maPolyPolygon3D(rPolyPolygon3D)
- {
- }
-
- bool SdrPolyPolygonPrimitive3D::operator==(const BasePrimitive3D& rPrimitive) const
- {
- if(SdrPrimitive3D::operator==(rPrimitive))
- {
- const SdrPolyPolygonPrimitive3D& rCompare = static_cast< const SdrPolyPolygonPrimitive3D& >(rPrimitive);
-
- return (getPolyPolygon3D() == rCompare.getPolyPolygon3D());
- }
-
- return false;
- }
-
- basegfx::B3DRange SdrPolyPolygonPrimitive3D::getB3DRange(const geometry::ViewInformation3D& /*rViewInformation*/) const
- {
- // added this implementation to make sure that non-visible objects of this
- // kind will deliver their expansion. If not implemented, it would never deliver
- // the used space for non-visible objects since the decomposition for that
- // case will be empty (what is correct). To support chart ATM which relies on
- // non-visible objects occupying space in 3D, this method was added
- basegfx::B3DRange aRetval;
-
- if(getPolyPolygon3D().count())
- {
- aRetval = basegfx::tools::getRange(getPolyPolygon3D());
- aRetval.transform(getTransform());
-
- if(!getSdrLFSAttribute().getLine().isDefault())
- {
- const attribute::SdrLineAttribute& rLine = getSdrLFSAttribute().getLine();
-
- if(!rLine.isDefault() && !basegfx::fTools::equalZero(rLine.getWidth()))
- {
- // expand by half LineWidth as tube radius
- aRetval.grow(rLine.getWidth() / 2.0);
- }
- }
- }
-
- return aRetval;
- }
-
- // provide unique ID
- ImplPrimitrive3DIDBlock(SdrPolyPolygonPrimitive3D, PRIMITIVE3D_ID_SDRPOLYPOLYGONPRIMITIVE3D)
-
- } // end of namespace primitive3d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/primitive3d/sdrprimitive3d.cxx b/drawinglayer/source/primitive3d/sdrprimitive3d.cxx
deleted file mode 100644
index 19f436da86..0000000000
--- a/drawinglayer/source/primitive3d/sdrprimitive3d.cxx
+++ /dev/null
@@ -1,128 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/primitive3d/sdrprimitive3d.hxx>
-#include <basegfx/polygon/b3dpolypolygontools.hxx>
-#include <drawinglayer/primitive3d/sdrdecompositiontools3d.hxx>
-#include <drawinglayer/attribute/sdrlineattribute.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-using namespace com::sun::star;
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive3d
- {
- basegfx::B3DRange SdrPrimitive3D::getStandard3DRange() const
- {
- basegfx::B3DRange aUnitRange(0.0, 0.0, 0.0, 1.0, 1.0, 1.0);
- aUnitRange.transform(getTransform());
-
- if(!getSdrLFSAttribute().getLine().isDefault())
- {
- const attribute::SdrLineAttribute& rLine = getSdrLFSAttribute().getLine();
-
- if(!rLine.isDefault() && !basegfx::fTools::equalZero(rLine.getWidth()))
- {
- // expand by hald LineWidth as tube radius
- aUnitRange.grow(rLine.getWidth() / 2.0);
- }
- }
-
- return aUnitRange;
- }
-
- basegfx::B3DRange SdrPrimitive3D::get3DRangeFromSlices(const Slice3DVector& rSlices) const
- {
- basegfx::B3DRange aRetval;
-
- if(rSlices.size())
- {
- for(sal_uInt32 a(0L); a < rSlices.size(); a++)
- {
- aRetval.expand(basegfx::tools::getRange(rSlices[a].getB3DPolyPolygon()));
- }
-
- aRetval.transform(getTransform());
-
- if(!getSdrLFSAttribute().getLine().isDefault())
- {
- const attribute::SdrLineAttribute& rLine = getSdrLFSAttribute().getLine();
-
- if(!rLine.isDefault() && !basegfx::fTools::equalZero(rLine.getWidth()))
- {
- // expand by half LineWidth as tube radius
- aRetval.grow(rLine.getWidth() / 2.0);
- }
- }
- }
-
- return aRetval;
- }
-
- SdrPrimitive3D::SdrPrimitive3D(
- const basegfx::B3DHomMatrix& rTransform,
- const basegfx::B2DVector& rTextureSize,
- const attribute::SdrLineFillShadowAttribute3D& rSdrLFSAttribute,
- const attribute::Sdr3DObjectAttribute& rSdr3DObjectAttribute)
- : BufferedDecompositionPrimitive3D(),
- maTransform(rTransform),
- maTextureSize(rTextureSize),
- maSdrLFSAttribute(rSdrLFSAttribute),
- maSdr3DObjectAttribute(rSdr3DObjectAttribute)
- {
- }
-
- bool SdrPrimitive3D::operator==(const BasePrimitive3D& rPrimitive) const
- {
- if(BufferedDecompositionPrimitive3D::operator==(rPrimitive))
- {
- const SdrPrimitive3D& rCompare = static_cast< const SdrPrimitive3D& >(rPrimitive);
-
- return (getTransform() == rCompare.getTransform()
- && getTextureSize() == rCompare.getTextureSize()
- && getSdrLFSAttribute() == rCompare.getSdrLFSAttribute()
- && getSdr3DObjectAttribute() == rCompare.getSdr3DObjectAttribute());
- }
-
- return false;
- }
-
- } // end of namespace primitive3d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/primitive3d/sdrsphereprimitive3d.cxx b/drawinglayer/source/primitive3d/sdrsphereprimitive3d.cxx
deleted file mode 100644
index b69bde3e5a..0000000000
--- a/drawinglayer/source/primitive3d/sdrsphereprimitive3d.cxx
+++ /dev/null
@@ -1,227 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/primitive3d/sdrsphereprimitive3d.hxx>
-#include <basegfx/polygon/b3dpolypolygontools.hxx>
-#include <basegfx/matrix/b2dhommatrix.hxx>
-#include <basegfx/polygon/b3dpolygon.hxx>
-#include <drawinglayer/primitive3d/sdrdecompositiontools3d.hxx>
-#include <basegfx/tools/canvastools.hxx>
-#include <drawinglayer/primitive3d/drawinglayer_primitivetypes3d.hxx>
-#include <drawinglayer/attribute/sdrfillattribute.hxx>
-#include <drawinglayer/attribute/sdrlineattribute.hxx>
-#include <drawinglayer/attribute/sdrshadowattribute.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-using namespace com::sun::star;
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive3d
- {
- Primitive3DSequence SdrSpherePrimitive3D::create3DDecomposition(const geometry::ViewInformation3D& /*rViewInformation*/) const
- {
- Primitive3DSequence aRetval;
- const basegfx::B3DRange aUnitRange(0.0, 0.0, 0.0, 1.0, 1.0, 1.0);
- const bool bCreateNormals(::com::sun::star::drawing::NormalsKind_SPECIFIC == getSdr3DObjectAttribute().getNormalsKind()
- || ::com::sun::star::drawing::NormalsKind_SPHERE == getSdr3DObjectAttribute().getNormalsKind());
-
- // create unit geometry
- basegfx::B3DPolyPolygon aFill(basegfx::tools::createSphereFillPolyPolygonFromB3DRange(aUnitRange,
- getHorizontalSegments(), getVerticalSegments(), bCreateNormals));
-
- // normal inversion
- if(!getSdrLFSAttribute().getFill().isDefault()
- && bCreateNormals
- && getSdr3DObjectAttribute().getNormalsInvert()
- && aFill.areNormalsUsed())
- {
- // invert normals
- aFill = basegfx::tools::invertNormals(aFill);
- }
-
- // texture coordinates
- if(!getSdrLFSAttribute().getFill().isDefault())
- {
- // handle texture coordinates X
- const bool bParallelX(::com::sun::star::drawing::TextureProjectionMode_PARALLEL == getSdr3DObjectAttribute().getTextureProjectionX());
- const bool bObjectSpecificX(::com::sun::star::drawing::TextureProjectionMode_OBJECTSPECIFIC == getSdr3DObjectAttribute().getTextureProjectionX());
- const bool bSphereX(::com::sun::star::drawing::TextureProjectionMode_SPHERE == getSdr3DObjectAttribute().getTextureProjectionX());
-
- // handle texture coordinates Y
- const bool bParallelY(::com::sun::star::drawing::TextureProjectionMode_PARALLEL == getSdr3DObjectAttribute().getTextureProjectionY());
- const bool bObjectSpecificY(::com::sun::star::drawing::TextureProjectionMode_OBJECTSPECIFIC == getSdr3DObjectAttribute().getTextureProjectionY());
- const bool bSphereY(::com::sun::star::drawing::TextureProjectionMode_SPHERE == getSdr3DObjectAttribute().getTextureProjectionY());
-
- if(bParallelX || bParallelY)
- {
- // apply parallel texture coordinates in X and/or Y
- const basegfx::B3DRange aRange(basegfx::tools::getRange(aFill));
- aFill = basegfx::tools::applyDefaultTextureCoordinatesParallel(aFill, aRange, bParallelX, bParallelY);
- }
-
- if(bSphereX || bObjectSpecificX || bSphereY || bObjectSpecificY)
- {
- double fRelativeAngle(0.0);
-
- if(bObjectSpecificX)
- {
- // Since the texture coordinates are (for historical reasons)
- // different from forced to sphere texture coordinates,
- // create a old version from it by rotating to old state before applying
- // the texture coordinates to emulate old behaviour
- fRelativeAngle = F_2PI * ((double)((getHorizontalSegments() >> 1L) - 1L) / (double)getHorizontalSegments());
- basegfx::B3DHomMatrix aRot;
- aRot.rotate(0.0, fRelativeAngle, 0.0);
- aFill.transform(aRot);
- }
-
- // apply spherical texture coordinates in X and/or Y
- const basegfx::B3DRange aRange(basegfx::tools::getRange(aFill));
- const basegfx::B3DPoint aCenter(aRange.getCenter());
- aFill = basegfx::tools::applyDefaultTextureCoordinatesSphere(aFill, aCenter,
- bSphereX || bObjectSpecificX, bSphereY || bObjectSpecificY);
-
- if(bObjectSpecificX)
- {
- // rotate back again
- basegfx::B3DHomMatrix aRot;
- aRot.rotate(0.0, -fRelativeAngle, 0.0);
- aFill.transform(aRot);
- }
- }
-
- // transform texture coordinates to texture size
- basegfx::B2DHomMatrix aTexMatrix;
- aTexMatrix.scale(getTextureSize().getX(), getTextureSize().getY());
- aFill.transformTextureCoordiantes(aTexMatrix);
- }
-
- // build vector of PolyPolygons
- ::std::vector< basegfx::B3DPolyPolygon > a3DPolyPolygonVector;
-
- for(sal_uInt32 a(0L); a < aFill.count(); a++)
- {
- a3DPolyPolygonVector.push_back(basegfx::B3DPolyPolygon(aFill.getB3DPolygon(a)));
- }
-
- if(!getSdrLFSAttribute().getFill().isDefault())
- {
- // add fill
- aRetval = create3DPolyPolygonFillPrimitives(
- a3DPolyPolygonVector,
- getTransform(),
- getTextureSize(),
- getSdr3DObjectAttribute(),
- getSdrLFSAttribute().getFill(),
- getSdrLFSAttribute().getFillFloatTransGradient());
- }
- else
- {
- // create simplified 3d hit test geometry
- aRetval = createHiddenGeometryPrimitives3D(
- a3DPolyPolygonVector,
- getTransform(),
- getTextureSize(),
- getSdr3DObjectAttribute());
- }
-
- // add line
- if(!getSdrLFSAttribute().getLine().isDefault())
- {
- basegfx::B3DPolyPolygon aSphere(basegfx::tools::createSpherePolyPolygonFromB3DRange(aUnitRange, getHorizontalSegments(), getVerticalSegments()));
- const Primitive3DSequence aLines(create3DPolyPolygonLinePrimitives(
- aSphere, getTransform(), getSdrLFSAttribute().getLine()));
- appendPrimitive3DSequenceToPrimitive3DSequence(aRetval, aLines);
- }
-
- // add shadow
- if(!getSdrLFSAttribute().getShadow().isDefault()
- && aRetval.hasElements())
- {
- const Primitive3DSequence aShadow(createShadowPrimitive3D(
- aRetval, getSdrLFSAttribute().getShadow(), getSdr3DObjectAttribute().getShadow3D()));
- appendPrimitive3DSequenceToPrimitive3DSequence(aRetval, aShadow);
- }
-
- return aRetval;
- }
-
- SdrSpherePrimitive3D::SdrSpherePrimitive3D(
- const basegfx::B3DHomMatrix& rTransform,
- const basegfx::B2DVector& rTextureSize,
- const attribute::SdrLineFillShadowAttribute3D& rSdrLFSAttribute,
- const attribute::Sdr3DObjectAttribute& rSdr3DObjectAttribute,
- sal_uInt32 nHorizontalSegments,
- sal_uInt32 nVerticalSegments)
- : SdrPrimitive3D(rTransform, rTextureSize, rSdrLFSAttribute, rSdr3DObjectAttribute),
- mnHorizontalSegments(nHorizontalSegments),
- mnVerticalSegments(nVerticalSegments)
- {
- }
-
- bool SdrSpherePrimitive3D::operator==(const BasePrimitive3D& rPrimitive) const
- {
- if(SdrPrimitive3D::operator==(rPrimitive))
- {
- const SdrSpherePrimitive3D& rCompare = static_cast< const SdrSpherePrimitive3D& >(rPrimitive);
-
- return (getHorizontalSegments() == rCompare.getHorizontalSegments()
- && getVerticalSegments() == rCompare.getVerticalSegments());
- }
-
- return false;
- }
-
- basegfx::B3DRange SdrSpherePrimitive3D::getB3DRange(const geometry::ViewInformation3D& /*rViewInformation*/) const
- {
- // use defaut from sdrPrimitive3D which uses transformation expanded by line width/2
- // The parent implementation which uses the ranges of the decomposition would be more
- // corrcet, but for historical reasons it is necessary to do the old method: To get
- // the range of the non-transformed geometry and transform it then. This leads to different
- // ranges where the new method is more correct, but the need to keep the old behaviour
- // has priority here.
- return getStandard3DRange();
- }
-
- // provide unique ID
- ImplPrimitrive3DIDBlock(SdrSpherePrimitive3D, PRIMITIVE3D_ID_SDRSPHEREPRIMITIVE3D)
-
- } // end of namespace primitive3d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/primitive3d/shadowprimitive3d.cxx b/drawinglayer/source/primitive3d/shadowprimitive3d.cxx
deleted file mode 100644
index 02818c74af..0000000000
--- a/drawinglayer/source/primitive3d/shadowprimitive3d.cxx
+++ /dev/null
@@ -1,83 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/primitive3d/shadowprimitive3d.hxx>
-#include <drawinglayer/primitive3d/drawinglayer_primitivetypes3d.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-using namespace com::sun::star;
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive3d
- {
- ShadowPrimitive3D::ShadowPrimitive3D(
- const basegfx::B2DHomMatrix& rShadowTransform,
- const basegfx::BColor& rShadowColor,
- double fShadowTransparence,
- bool bShadow3D,
- const Primitive3DSequence& rChildren)
- : GroupPrimitive3D(rChildren),
- maShadowTransform(rShadowTransform),
- maShadowColor(rShadowColor),
- mfShadowTransparence(fShadowTransparence),
- mbShadow3D(bShadow3D)
- {
- }
-
- bool ShadowPrimitive3D::operator==(const BasePrimitive3D& rPrimitive) const
- {
- if(GroupPrimitive3D::operator==(rPrimitive))
- {
- const ShadowPrimitive3D& rCompare = (ShadowPrimitive3D&)rPrimitive;
-
- return (getShadowTransform() == rCompare.getShadowTransform()
- && getShadowColor() == rCompare.getShadowColor()
- && getShadowTransparence() == rCompare.getShadowTransparence()
- && getShadow3D() == rCompare.getShadow3D());
- }
-
- return false;
- }
-
- // provide unique ID
- ImplPrimitrive3DIDBlock(ShadowPrimitive3D, PRIMITIVE3D_ID_SHADOWPRIMITIVE3D)
-
- } // end of namespace primitive3d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/primitive3d/textureprimitive3d.cxx b/drawinglayer/source/primitive3d/textureprimitive3d.cxx
deleted file mode 100644
index 1285549380..0000000000
--- a/drawinglayer/source/primitive3d/textureprimitive3d.cxx
+++ /dev/null
@@ -1,230 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/primitive3d/textureprimitive3d.hxx>
-#include <drawinglayer/primitive3d/drawinglayer_primitivetypes3d.hxx>
-#include <basegfx/color/bcolor.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-using namespace com::sun::star;
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive3d
- {
- TexturePrimitive3D::TexturePrimitive3D(
- const Primitive3DSequence& rChildren,
- const basegfx::B2DVector& rTextureSize,
- bool bModulate, bool bFilter)
- : GroupPrimitive3D(rChildren),
- maTextureSize(rTextureSize),
- mbModulate(bModulate),
- mbFilter(bFilter)
- {
- }
-
- bool TexturePrimitive3D::operator==(const BasePrimitive3D& rPrimitive) const
- {
- if(GroupPrimitive3D::operator==(rPrimitive))
- {
- const TexturePrimitive3D& rCompare = (TexturePrimitive3D&)rPrimitive;
-
- return (getModulate() == rCompare.getModulate()
- && getFilter() == rCompare.getFilter());
- }
-
- return false;
- }
- } // end of namespace primitive3d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive3d
- {
- UnifiedTransparenceTexturePrimitive3D::UnifiedTransparenceTexturePrimitive3D(
- double fTransparence,
- const Primitive3DSequence& rChildren)
- : TexturePrimitive3D(rChildren, basegfx::B2DVector(), false, false),
- mfTransparence(fTransparence)
- {
- }
-
- bool UnifiedTransparenceTexturePrimitive3D::operator==(const BasePrimitive3D& rPrimitive) const
- {
- if(TexturePrimitive3D::operator==(rPrimitive))
- {
- const UnifiedTransparenceTexturePrimitive3D& rCompare = (UnifiedTransparenceTexturePrimitive3D&)rPrimitive;
-
- return (getTransparence() == rCompare.getTransparence());
- }
-
- return false;
- }
-
- basegfx::B3DRange UnifiedTransparenceTexturePrimitive3D::getB3DRange(const geometry::ViewInformation3D& rViewInformation) const
- {
- // do not use the fallback to decomposition here since for a correct BoundRect we also
- // need invisible (1.0 == getTransparence()) geometry; these would be deleted in the decomposition
- return getB3DRangeFromPrimitive3DSequence(getChildren(), rViewInformation);
- }
-
- Primitive3DSequence UnifiedTransparenceTexturePrimitive3D::get3DDecomposition(const geometry::ViewInformation3D& /*rViewInformation*/) const
- {
- if(0.0 == getTransparence())
- {
- // no transparence used, so just use content
- return getChildren();
- }
- else if(getTransparence() > 0.0 && getTransparence() < 1.0)
- {
- // create TransparenceTexturePrimitive3D with fixed transparence as replacement
- const basegfx::BColor aGray(getTransparence(), getTransparence(), getTransparence());
- const attribute::FillGradientAttribute aFillGradient(attribute::GRADIENTSTYLE_LINEAR, 0.0, 0.0, 0.0, 0.0, aGray, aGray, 1);
- const Primitive3DReference xRef(new TransparenceTexturePrimitive3D(aFillGradient, getChildren(), getTextureSize()));
- return Primitive3DSequence(&xRef, 1L);
- }
- else
- {
- // completely transparent or invalid definition, add nothing
- return Primitive3DSequence();
- }
- }
-
- // provide unique ID
- ImplPrimitrive3DIDBlock(UnifiedTransparenceTexturePrimitive3D, PRIMITIVE3D_ID_UNIFIEDTRANSPARENCETEXTUREPRIMITIVE3D)
-
- } // end of namespace primitive3d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive3d
- {
- GradientTexturePrimitive3D::GradientTexturePrimitive3D(
- const attribute::FillGradientAttribute& rGradient,
- const Primitive3DSequence& rChildren,
- const basegfx::B2DVector& rTextureSize,
- bool bModulate,
- bool bFilter)
- : TexturePrimitive3D(rChildren, rTextureSize, bModulate, bFilter),
- maGradient(rGradient)
- {
- }
-
- bool GradientTexturePrimitive3D::operator==(const BasePrimitive3D& rPrimitive) const
- {
- if(TexturePrimitive3D::operator==(rPrimitive))
- {
- const GradientTexturePrimitive3D& rCompare = (GradientTexturePrimitive3D&)rPrimitive;
-
- return (getGradient() == rCompare.getGradient());
- }
-
- return false;
- }
-
- // provide unique ID
- ImplPrimitrive3DIDBlock(GradientTexturePrimitive3D, PRIMITIVE3D_ID_GRADIENTTEXTUREPRIMITIVE3D)
-
- } // end of namespace primitive3d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive3d
- {
- BitmapTexturePrimitive3D::BitmapTexturePrimitive3D(
- const attribute::FillBitmapAttribute& rFillBitmapAttribute,
- const Primitive3DSequence& rChildren,
- const basegfx::B2DVector& rTextureSize,
- bool bModulate, bool bFilter)
- : TexturePrimitive3D(rChildren, rTextureSize, bModulate, bFilter),
- maFillBitmapAttribute(rFillBitmapAttribute)
- {
- }
-
- bool BitmapTexturePrimitive3D::operator==(const BasePrimitive3D& rPrimitive) const
- {
- if(TexturePrimitive3D::operator==(rPrimitive))
- {
- const BitmapTexturePrimitive3D& rCompare = (BitmapTexturePrimitive3D&)rPrimitive;
-
- return (getFillBitmapAttribute() == rCompare.getFillBitmapAttribute());
- }
-
- return false;
- }
-
- // provide unique ID
- ImplPrimitrive3DIDBlock(BitmapTexturePrimitive3D, PRIMITIVE3D_ID_BITMAPTEXTUREPRIMITIVE3D)
-
- } // end of namespace primitive3d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive3d
- {
- TransparenceTexturePrimitive3D::TransparenceTexturePrimitive3D(
- const attribute::FillGradientAttribute& rGradient,
- const Primitive3DSequence& rChildren,
- const basegfx::B2DVector& rTextureSize)
- : GradientTexturePrimitive3D(rGradient, rChildren, rTextureSize, false, false)
- {
- }
-
- bool TransparenceTexturePrimitive3D::operator==(const BasePrimitive3D& rPrimitive) const
- {
- return (GradientTexturePrimitive3D::operator==(rPrimitive));
- }
-
- // provide unique ID
- ImplPrimitrive3DIDBlock(TransparenceTexturePrimitive3D, PRIMITIVE3D_ID_TRANSPARENCETEXTUREPRIMITIVE3D)
-
- } // end of namespace primitive3d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/primitive3d/transformprimitive3d.cxx b/drawinglayer/source/primitive3d/transformprimitive3d.cxx
deleted file mode 100644
index a452c28c53..0000000000
--- a/drawinglayer/source/primitive3d/transformprimitive3d.cxx
+++ /dev/null
@@ -1,82 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/primitive3d/transformprimitive3d.hxx>
-#include <basegfx/tools/canvastools.hxx>
-#include <drawinglayer/primitive3d/drawinglayer_primitivetypes3d.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-using namespace com::sun::star;
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive3d
- {
- TransformPrimitive3D::TransformPrimitive3D(
- const basegfx::B3DHomMatrix& rTransformation,
- const Primitive3DSequence& rChildren)
- : GroupPrimitive3D(rChildren),
- maTransformation(rTransformation)
- {
- }
-
- bool TransformPrimitive3D::operator==(const BasePrimitive3D& rPrimitive) const
- {
- if(GroupPrimitive3D::operator==(rPrimitive))
- {
- const TransformPrimitive3D& rCompare = static_cast< const TransformPrimitive3D& >(rPrimitive);
-
- return (getTransformation() == rCompare.getTransformation());
- }
-
- return false;
- }
-
- basegfx::B3DRange TransformPrimitive3D::getB3DRange(const geometry::ViewInformation3D& rViewInformation) const
- {
- basegfx::B3DRange aRetval(getB3DRangeFromPrimitive3DSequence(getChildren(), rViewInformation));
- aRetval.transform(getTransformation());
- return aRetval;
- }
-
- // provide unique ID
- ImplPrimitrive3DIDBlock(TransformPrimitive3D, PRIMITIVE3D_ID_TRANSFORMPRIMITIVE3D)
-
- } // end of namespace primitive3d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/processor2d/baseprocessor2d.cxx b/drawinglayer/source/processor2d/baseprocessor2d.cxx
deleted file mode 100644
index 7dce36b364..0000000000
--- a/drawinglayer/source/processor2d/baseprocessor2d.cxx
+++ /dev/null
@@ -1,94 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/processor2d/baseprocessor2d.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-using namespace com::sun::star;
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace processor2d
- {
- void BaseProcessor2D::processBasePrimitive2D(const primitive2d::BasePrimitive2D& /*rCandidate*/)
- {
- }
-
- BaseProcessor2D::BaseProcessor2D(const geometry::ViewInformation2D& rViewInformation)
- : maViewInformation2D(rViewInformation)
- {
- }
-
- BaseProcessor2D::~BaseProcessor2D()
- {
- }
-
- void BaseProcessor2D::process(const primitive2d::Primitive2DSequence& rSource)
- {
- if(rSource.hasElements())
- {
- const sal_Int32 nCount(rSource.getLength());
-
- for(sal_Int32 a(0L); a < nCount; a++)
- {
- // get reference
- const primitive2d::Primitive2DReference xReference(rSource[a]);
-
- if(xReference.is())
- {
- // try to cast to BasePrimitive2D implementation
- const primitive2d::BasePrimitive2D* pBasePrimitive = dynamic_cast< const primitive2d::BasePrimitive2D* >(xReference.get());
-
- if(pBasePrimitive)
- {
- // it is a BasePrimitive2D implementation, use local processor
- processBasePrimitive2D(*pBasePrimitive);
- }
- else
- {
- // unknown implementation, use UNO API call instead and process recursively
- const uno::Sequence< beans::PropertyValue >& rViewParameters(getViewInformation2D().getViewInformationSequence());
- process(xReference->getDecomposition(rViewParameters));
- }
- }
- }
- }
- }
- } // end of namespace processor2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/processor2d/canvasprocessor.cxx b/drawinglayer/source/processor2d/canvasprocessor.cxx
deleted file mode 100644
index 3e59746d97..0000000000
--- a/drawinglayer/source/processor2d/canvasprocessor.cxx
+++ /dev/null
@@ -1,1029 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/processor2d/canvasprocessor.hxx>
-#include <drawinglayer/primitive2d/drawinglayer_primitivetypes2d.hxx>
-#include <drawinglayer/primitive2d/polygonprimitive2d.hxx>
-#include <com/sun/star/rendering/XCanvas.hpp>
-#include <vcl/canvastools.hxx>
-#include <basegfx/tools/canvastools.hxx>
-#include <drawinglayer/primitive2d/polypolygonprimitive2d.hxx>
-#include <drawinglayer/primitive2d/modifiedcolorprimitive2d.hxx>
-#include <drawinglayer/primitive2d/transformprimitive2d.hxx>
-#include <canvas/canvastools.hxx>
-#include <svl/ctloptions.hxx>
-#include <vcl/svapp.hxx>
-#include <drawinglayer/primitive2d/maskprimitive2d.hxx>
-#include <basegfx/polygon/b2dpolygonclipper.hxx>
-#include <drawinglayer/primitive2d/pagepreviewprimitive2d.hxx>
-#include <drawinglayer/primitive2d/metafileprimitive2d.hxx>
-#include <cppcanvas/basegfxfactory.hxx>
-#include <com/sun/star/rendering/XBitmapCanvas.hpp>
-#include <cppcanvas/vclfactory.hxx>
-#include <drawinglayer/primitive2d/pointarrayprimitive2d.hxx>
-#include <drawinglayer/primitive2d/textprimitive2d.hxx>
-#include <com/sun/star/rendering/TextDirection.hpp>
-#include <vclhelperbitmaptransform.hxx>
-#include <drawinglayer/primitive2d/bitmapprimitive2d.hxx>
-#include <basegfx/polygon/b2dpolygontools.hxx>
-#include <drawinglayer/primitive2d/transparenceprimitive2d.hxx>
-#include <basegfx/tuple/b2i64tuple.hxx>
-#include <basegfx/range/b2irange.hxx>
-#include <com/sun/star/rendering/XIntegerReadOnlyBitmap.hpp>
-#include <com/sun/star/rendering/PanoseProportion.hpp>
-#include <com/sun/star/rendering/CompositeOperation.hpp>
-#include <com/sun/star/rendering/StrokeAttributes.hpp>
-#include <com/sun/star/rendering/PathJoinType.hpp>
-#include <drawinglayer/primitive2d/fillbitmapprimitive2d.hxx>
-#include <com/sun/star/rendering/TexturingMode.hpp>
-#include <drawinglayer/primitive2d/unifiedtransparenceprimitive2d.hxx>
-#include <vclhelperbufferdevice.hxx>
-#include <drawinglayer/primitive2d/chartprimitive2d.hxx>
-#include <helperchartrenderer.hxx>
-#include <drawinglayer/primitive2d/wrongspellprimitive2d.hxx>
-#include <helperwrongspellrenderer.hxx>
-#include <basegfx/matrix/b2dhommatrixtools.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-using namespace com::sun::star;
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace processor2d
- {
- //////////////////////////////////////////////////////////////////////////////
- // single primitive renderers
-
- void canvasProcessor2D::impRenderMaskPrimitive2D(const primitive2d::MaskPrimitive2D& rMaskCandidate)
- {
- const primitive2d::Primitive2DSequence& rChildren = rMaskCandidate.getChildren();
- static bool bUseMaskBitmapMethod(true);
-
- if(rChildren.hasElements())
- {
- basegfx::B2DPolyPolygon aMask(rMaskCandidate.getMask());
-
- if(!aMask.count())
- {
- // no mask, no clipping. recursively paint content
- process(rChildren);
- }
- else
- {
- // there are principally two methods for implementing the mask primitive. One
- // is to set a clip polygon at the canvas, the other is to create and use a
- // transparence-using XBitmap for content and draw the mask as transparence. Both have their
- // advantages and disadvantages, so here are both with a bool allowing simple
- // change
- if(bUseMaskBitmapMethod)
- {
- // get logic range of transparent part, clip with ViewRange
- basegfx::B2DRange aLogicRange(aMask.getB2DRange());
-
- if(!getViewInformation2D().getViewport().isEmpty())
- {
- aLogicRange.intersect(getViewInformation2D().getViewport());
- }
-
- if(!aLogicRange.isEmpty())
- {
- // get discrete range of transparent part
- basegfx::B2DRange aDiscreteRange(aLogicRange);
- aDiscreteRange.transform(getViewInformation2D().getObjectToViewTransformation());
-
- // expand to next covering discrete values (pixel bounds)
- aDiscreteRange.expand(basegfx::B2DTuple(floor(aDiscreteRange.getMinX()), floor(aDiscreteRange.getMinY())));
- aDiscreteRange.expand(basegfx::B2DTuple(ceil(aDiscreteRange.getMaxX()), ceil(aDiscreteRange.getMaxY())));
-
- // use VCL-based buffer device
- impBufferDevice aBufferDevice(*mpOutputDevice, aDiscreteRange, false);
-
- if(aBufferDevice.isVisible())
- {
- // remember current OutDev, Canvas and ViewInformation
- OutputDevice* pLastOutputDevice = mpOutputDevice;
- uno::Reference< rendering::XCanvas > xLastCanvas(mxCanvas);
- const geometry::ViewInformation2D aLastViewInformation2D(getViewInformation2D());
-
- // prepare discrete offset for XBitmap, do not forget that the buffer bitmap
- // may be truncated to discrete visible pixels
- const basegfx::B2DHomMatrix aDiscreteOffset(basegfx::tools::createTranslateB2DHomMatrix(
- aDiscreteRange.getMinX() > 0.0 ? -aDiscreteRange.getMinX() : 0.0,
- aDiscreteRange.getMinY() > 0.0 ? -aDiscreteRange.getMinY() : 0.0));
-
- // create new local ViewInformation2D with new transformation
- const geometry::ViewInformation2D aViewInformation2D(
- getViewInformation2D().getObjectTransformation(),
- aDiscreteOffset * getViewInformation2D().getViewTransformation(),
- getViewInformation2D().getViewport(),
- getViewInformation2D().getVisualizedPage(),
- getViewInformation2D().getViewTime(),
- getViewInformation2D().getExtendedInformationSequence());
- updateViewInformation(aViewInformation2D);
-
- // set OutDev and Canvas to content target
- mpOutputDevice = &aBufferDevice.getContent();
- mxCanvas = mpOutputDevice->GetCanvas();
- canvas::tools::setViewStateTransform(maViewState, getViewInformation2D().getViewTransformation());
-
- // if ViewState transform is changed, the clipping polygon needs to be adapted, too
- const basegfx::B2DPolyPolygon aOldClipPolyPolygon(maClipPolyPolygon);
-
- if(maClipPolyPolygon.count())
- {
- maClipPolyPolygon.transform(aDiscreteOffset);
- maViewState.Clip = basegfx::unotools::xPolyPolygonFromB2DPolyPolygon(mxCanvas->getDevice(), maClipPolyPolygon);
- }
-
- // paint content
- process(rChildren);
-
- // draw mask
- const basegfx::BColor aBlack(0.0, 0.0, 0.0);
- maRenderState.DeviceColor = aBlack.colorToDoubleSequence(mxCanvas->getDevice());
-
- if(getOptionsDrawinglayer().IsAntiAliasing())
- {
- // with AA, use 8bit AlphaMask to get nice borders
- VirtualDevice& rTransparence = aBufferDevice.getTransparence();
- rTransparence.GetCanvas()->fillPolyPolygon(
- basegfx::unotools::xPolyPolygonFromB2DPolyPolygon(mxCanvas->getDevice(), aMask),
- maViewState, maRenderState);
- }
- else
- {
- // No AA, use 1bit mask
- VirtualDevice& rMask = aBufferDevice.getMask();
- rMask.GetCanvas()->fillPolyPolygon(
- basegfx::unotools::xPolyPolygonFromB2DPolyPolygon(mxCanvas->getDevice(), aMask),
- maViewState, maRenderState);
- }
-
- // back to old color stack, OutDev, Canvas and ViewTransform
- mpOutputDevice = pLastOutputDevice;
- mxCanvas = xLastCanvas;
- updateViewInformation(aLastViewInformation2D);
- canvas::tools::setViewStateTransform(maViewState, getViewInformation2D().getViewTransformation());
-
- // restore clipping polygon
- maClipPolyPolygon = aOldClipPolyPolygon;
-
- if(maClipPolyPolygon.count())
- {
- maViewState.Clip = basegfx::unotools::xPolyPolygonFromB2DPolyPolygon(mxCanvas->getDevice(), maClipPolyPolygon);
- }
-
- // dump buffer to outdev
- aBufferDevice.paint();
- }
- }
- }
- else
- {
- // transform new mask polygon to view coordinates for processing. All masks
- // are processed in view coordinates and clipped against each other evtl. to
- // create multi-clips
- aMask.transform(getViewInformation2D().getObjectTransformation());
-
- // remember last current clip polygon
- const basegfx::B2DPolyPolygon aLastClipPolyPolygon(maClipPolyPolygon);
-
- if(maClipPolyPolygon.count())
- {
- // there is already a clip polygon set; build clipped union of
- // current mask polygon and new one
- maClipPolyPolygon = basegfx::tools::clipPolyPolygonOnPolyPolygon(aMask, maClipPolyPolygon, false, false);
- }
- else
- {
- // use mask directly
- maClipPolyPolygon = aMask;
- }
-
- // set at ViewState
- if(maClipPolyPolygon.count())
- {
- // set new as clip polygon
- maViewState.Clip = basegfx::unotools::xPolyPolygonFromB2DPolyPolygon(mxCanvas->getDevice(), maClipPolyPolygon);
- }
- else
- {
- // empty, reset
- maViewState.Clip.clear();
- }
-
- // paint content
- process(rChildren);
-
- // restore local current to rescued clip polygon
- maClipPolyPolygon = aLastClipPolyPolygon;
-
- // set at ViewState
- if(maClipPolyPolygon.count())
- {
- // set new as clip polygon
- maViewState.Clip = basegfx::unotools::xPolyPolygonFromB2DPolyPolygon(mxCanvas->getDevice(), maClipPolyPolygon);
- }
- else
- {
- // empty, reset
- maViewState.Clip.clear();
- }
- }
- }
- }
- }
-
- void canvasProcessor2D::impRenderMetafilePrimitive2D(const primitive2d::MetafilePrimitive2D& rMetaCandidate)
- {
- GDIMetaFile aMetaFile;
-
- if(maBColorModifierStack.count())
- {
- const basegfx::BColor aRGBBaseColor(0, 0, 0);
- const basegfx::BColor aRGBColor(maBColorModifierStack.getModifiedColor(aRGBBaseColor));
- aMetaFile = rMetaCandidate.getMetaFile().GetMonochromeMtf(Color(aRGBColor));
- }
- else
- {
- aMetaFile = rMetaCandidate.getMetaFile();
- }
-
- cppcanvas::BitmapCanvasSharedPtr pCanvas(cppcanvas::VCLFactory::getInstance().createCanvas(
- uno::Reference<rendering::XBitmapCanvas>(mxCanvas, uno::UNO_QUERY_THROW)));
- cppcanvas::RendererSharedPtr pMtfRenderer(cppcanvas::VCLFactory::getInstance().createRenderer(
- pCanvas, aMetaFile, cppcanvas::Renderer::Parameters()));
-
- if(pMtfRenderer)
- {
- pCanvas->setTransformation(getViewInformation2D().getObjectToViewTransformation());
- pMtfRenderer->setTransformation(rMetaCandidate.getTransform());
- pMtfRenderer->draw();
- }
- }
-
- void canvasProcessor2D::impRenderTextSimplePortionPrimitive2D(const primitive2d::TextSimplePortionPrimitive2D& rTextCandidate)
- {
- if(rTextCandidate.getTextLength())
- {
- double fShearX(0.0);
- {
- const basegfx::B2DHomMatrix aLocalTransform(getViewInformation2D().getObjectToViewTransformation() * rTextCandidate.getTextTransform());
- basegfx::B2DVector aScale, aTranslate;
- double fRotate;
- aLocalTransform.decompose(aScale, aTranslate, fRotate, fShearX);
- }
-
- if(!basegfx::fTools::equalZero(fShearX))
- {
- // text is sheared. As long as the canvas renderers do not support this,
- // use the decomposed primitive
- process(rTextCandidate.get2DDecomposition(getViewInformation2D()));
- }
- else
- {
- const attribute::FontAttribute& rFontAttr(rTextCandidate.getFontAttribute());
- rendering::FontRequest aFontRequest;
-
- aFontRequest.FontDescription.FamilyName = rFontAttr.getFamilyName();
- aFontRequest.FontDescription.StyleName = rFontAttr.getStyleName();
- aFontRequest.FontDescription.IsSymbolFont = rFontAttr.getSymbol() ? util::TriState_YES : util::TriState_NO;
- aFontRequest.FontDescription.IsVertical = rFontAttr.getVertical() ? util::TriState_YES : util::TriState_NO;
- // TODO(F2): improve vclenum->panose conversion
- aFontRequest.FontDescription.FontDescription.Weight = static_cast< sal_uInt8 >(rFontAttr.getWeight());
- aFontRequest.FontDescription.FontDescription.Proportion =
- rFontAttr.getMonospaced()
- ? rendering::PanoseProportion::MONO_SPACED
- : rendering::PanoseProportion::ANYTHING;
- aFontRequest.FontDescription.FontDescription.Letterform = rFontAttr.getItalic() ? 9 : 0;
-
- // init CellSize to 1.0, else a default font height will be used
- aFontRequest.CellSize = 1.0;
- aFontRequest.Locale = rTextCandidate.getLocale();
-
- // font matrix should only be used for glyph rotations etc.
- com::sun::star::geometry::Matrix2D aFontMatrix;
- canvas::tools::setIdentityMatrix2D(aFontMatrix);
-
- uno::Reference<rendering::XCanvasFont> xFont(mxCanvas->createFont(
- aFontRequest, uno::Sequence< beans::PropertyValue >(), aFontMatrix));
-
- if(xFont.is())
- {
- // got a font, now try to get a TextLayout
- const rendering::StringContext aStringContext(
- rTextCandidate.getText(), rTextCandidate.getTextPosition(), rTextCandidate.getTextLength());
- uno::Reference<rendering::XTextLayout> xLayout(xFont->createTextLayout(
- aStringContext, com::sun::star::rendering::TextDirection::WEAK_LEFT_TO_RIGHT, 0));
-
- if(xLayout.is())
- {
- // got a text layout, apply DXArray if given
- const ::std::vector< double >& rDXArray = rTextCandidate.getDXArray();
- const sal_uInt32 nDXCount(rDXArray.size());
-
- if(nDXCount)
- {
- // DXArray does not need to be adapted to getTextPosition/getTextLength,
- // it is already provided correctly
- const uno::Sequence< double > aDXSequence(&rDXArray[0], nDXCount);
- xLayout->applyLogicalAdvancements(aDXSequence);
- }
-
- // set text color
- const basegfx::BColor aRGBColor(maBColorModifierStack.getModifiedColor(rTextCandidate.getFontColor()));
- maRenderState.DeviceColor = aRGBColor.colorToDoubleSequence(mxCanvas->getDevice());
-
- // set text transformation
- canvas::tools::setRenderStateTransform(maRenderState,
- getViewInformation2D().getObjectTransformation() * rTextCandidate.getTextTransform());
-
- // paint
- mxCanvas->drawTextLayout(xLayout, maViewState, maRenderState);
- }
- }
- }
- }
- }
-
- void canvasProcessor2D::impRenderBitmapPrimitive2D(const primitive2d::BitmapPrimitive2D& rBitmapCandidate)
- {
- // apply possible color modification to BitmapEx
- BitmapEx aModifiedBitmapEx(impModifyBitmapEx(maBColorModifierStack, rBitmapCandidate.getBitmapEx()));
-
- if(aModifiedBitmapEx.IsEmpty())
- {
- // replace with color filled polygon
- const basegfx::BColor aModifiedColor(maBColorModifierStack.getModifiedColor(basegfx::BColor()));
- const basegfx::B2DPolygon aPolygon(basegfx::tools::createUnitPolygon());
-
- maRenderState.DeviceColor = aModifiedColor.colorToDoubleSequence(mxCanvas->getDevice());
- canvas::tools::setRenderStateTransform(maRenderState,
- getViewInformation2D().getObjectTransformation() * rBitmapCandidate.getTransform());
-
- mxCanvas->fillPolyPolygon(basegfx::unotools::xPolyPolygonFromB2DPolyPolygon(
- mxCanvas->getDevice(), basegfx::B2DPolyPolygon(aPolygon)), maViewState, maRenderState);
- }
- else
- {
- // adapt object's transformation to the correct scale
- basegfx::B2DVector aScale, aTranslate;
- const Size aSizePixel(aModifiedBitmapEx.GetSizePixel());
-
- if(0 != aSizePixel.Width() && 0 != aSizePixel.Height())
- {
- double fRotate, fShearX;
- rBitmapCandidate.getTransform().decompose(aScale, aTranslate, fRotate, fShearX);
- const basegfx::B2DHomMatrix aNewMatrix(basegfx::tools::createScaleShearXRotateTranslateB2DHomMatrix(
- aScale.getX() / aSizePixel.Width(), aScale.getY() / aSizePixel.Height(),
- fShearX, fRotate, aTranslate.getX(), aTranslate.getY()));
-
- canvas::tools::setRenderStateTransform(maRenderState,
- getViewInformation2D().getObjectTransformation() * aNewMatrix);
-
- mxCanvas->drawBitmap(
- vcl::unotools::xBitmapFromBitmapEx(mxCanvas->getDevice(), aModifiedBitmapEx),
- maViewState, maRenderState);
- }
- }
- }
-
- void canvasProcessor2D::impRenderTransparencePrimitive2D(const primitive2d::TransparencePrimitive2D& rTransparenceCandidate)
- {
- const primitive2d::Primitive2DSequence& rChildren = rTransparenceCandidate.getChildren();
- const primitive2d::Primitive2DSequence& rTransparence = rTransparenceCandidate.getTransparence();
-
- if(rChildren.hasElements() && rTransparence.hasElements())
- {
- // get logic range of transparent part and clip with ViewRange
- basegfx::B2DRange aLogicRange(primitive2d::getB2DRangeFromPrimitive2DSequence(rChildren, getViewInformation2D()));
-
- if(!getViewInformation2D().getViewport().isEmpty())
- {
- aLogicRange.intersect(getViewInformation2D().getViewport());
- }
-
- if(!aLogicRange.isEmpty())
- {
- // get discrete range of transparent part
- basegfx::B2DRange aDiscreteRange(aLogicRange);
- aDiscreteRange.transform(getViewInformation2D().getObjectToViewTransformation());
-
- // expand to next covering discrete values (pixel bounds)
- aDiscreteRange.expand(basegfx::B2DTuple(floor(aDiscreteRange.getMinX()), floor(aDiscreteRange.getMinY())));
- aDiscreteRange.expand(basegfx::B2DTuple(ceil(aDiscreteRange.getMaxX()), ceil(aDiscreteRange.getMaxY())));
-
- // use VCL-based buffer device
- impBufferDevice aBufferDevice(*mpOutputDevice, aDiscreteRange, false);
-
- if(aBufferDevice.isVisible())
- {
- // remember current OutDev, Canvas and ViewInformation
- OutputDevice* pLastOutputDevice = mpOutputDevice;
- uno::Reference< rendering::XCanvas > xLastCanvas(mxCanvas);
- const geometry::ViewInformation2D aLastViewInformation2D(getViewInformation2D());
-
- // prepare discrete offset for XBitmap, do not forget that the buffer bitmap
- // may be truncated to discrete visible pixels
- const basegfx::B2DHomMatrix aDiscreteOffset(basegfx::tools::createTranslateB2DHomMatrix(
- aDiscreteRange.getMinX() > 0.0 ? -aDiscreteRange.getMinX() : 0.0,
- aDiscreteRange.getMinY() > 0.0 ? -aDiscreteRange.getMinY() : 0.0));
-
- // create new local ViewInformation2D with new transformation
- const geometry::ViewInformation2D aViewInformation2D(
- getViewInformation2D().getObjectTransformation(),
- aDiscreteOffset * getViewInformation2D().getViewTransformation(),
- getViewInformation2D().getViewport(),
- getViewInformation2D().getVisualizedPage(),
- getViewInformation2D().getViewTime(),
- getViewInformation2D().getExtendedInformationSequence());
- updateViewInformation(aViewInformation2D);
-
- // set OutDev and Canvas to content target
- mpOutputDevice = &aBufferDevice.getContent();
- mxCanvas = mpOutputDevice->GetCanvas();
- canvas::tools::setViewStateTransform(maViewState, getViewInformation2D().getViewTransformation());
-
- // if ViewState transform is changed, the clipping polygon needs to be adapted, too
- const basegfx::B2DPolyPolygon aOldClipPolyPolygon(maClipPolyPolygon);
-
- if(maClipPolyPolygon.count())
- {
- maClipPolyPolygon.transform(aDiscreteOffset);
- maViewState.Clip = basegfx::unotools::xPolyPolygonFromB2DPolyPolygon(mxCanvas->getDevice(), maClipPolyPolygon);
- }
-
- // paint content
- process(rChildren);
-
- // set to mask
- mpOutputDevice = &aBufferDevice.getTransparence();
- mxCanvas = mpOutputDevice->GetCanvas();
- canvas::tools::setViewStateTransform(maViewState, getViewInformation2D().getViewTransformation());
-
- // when painting transparence masks, reset the color stack
- basegfx::BColorModifierStack aLastBColorModifierStack(maBColorModifierStack);
- maBColorModifierStack = basegfx::BColorModifierStack();
-
- // paint mask to it (always with transparence intensities, evtl. with AA)
- process(rTransparence);
-
- // back to old color stack, OutDev, Canvas and ViewTransform
- maBColorModifierStack = aLastBColorModifierStack;
- mpOutputDevice = pLastOutputDevice;
- mxCanvas = xLastCanvas;
- updateViewInformation(aLastViewInformation2D);
- canvas::tools::setViewStateTransform(maViewState, getViewInformation2D().getViewTransformation());
-
- // restore clipping polygon
- maClipPolyPolygon = aOldClipPolyPolygon;
-
- if(maClipPolyPolygon.count())
- {
- maViewState.Clip = basegfx::unotools::xPolyPolygonFromB2DPolyPolygon(mxCanvas->getDevice(), maClipPolyPolygon);
- }
-
- // dump buffer to outdev
- aBufferDevice.paint();
- }
- }
- }
- }
-
- void canvasProcessor2D::impRenderPolygonStrokePrimitive2D(const primitive2d::PolygonStrokePrimitive2D& rPolygonStrokePrimitive)
- {
- // support direct fat line geometry. This moves the decomposition to the canvas.
- // As long as our canvases are used (which also use basegfx tooling) this makes
- // no difference, but potentially canvases may better support this
- static bool bSupportFatLineDirectly(true);
- bool bOutputDone(false);
-
- if(bSupportFatLineDirectly)
- {
- const attribute::LineAttribute& rLineAttribute = rPolygonStrokePrimitive.getLineAttribute();
- const attribute::StrokeAttribute& rStrokeAttribute = rPolygonStrokePrimitive.getStrokeAttribute();
-
- if(0.0 < rLineAttribute.getWidth() || 0 != rStrokeAttribute.getDotDashArray().size())
- {
- rendering::StrokeAttributes aStrokeAttribute;
-
- aStrokeAttribute.StrokeWidth = rLineAttribute.getWidth();
- aStrokeAttribute.MiterLimit = 15.0; // degrees; maybe here (15.0 * F_PI180) is needed, not clear in the documentation
- const ::std::vector< double >& rDotDashArray = rStrokeAttribute.getDotDashArray();
-
- if(rDotDashArray.size())
- {
- aStrokeAttribute.DashArray = uno::Sequence< double >(&rDotDashArray[0], rDotDashArray.size());
- }
-
- switch(rLineAttribute.getLineJoin())
- {
- default: // B2DLINEJOIN_NONE, B2DLINEJOIN_MIDDLE
- aStrokeAttribute.JoinType = rendering::PathJoinType::NONE;
- break;
- case basegfx::B2DLINEJOIN_BEVEL:
- aStrokeAttribute.JoinType = rendering::PathJoinType::BEVEL;
- break;
- case basegfx::B2DLINEJOIN_MITER:
- aStrokeAttribute.JoinType = rendering::PathJoinType::MITER;
- break;
- case basegfx::B2DLINEJOIN_ROUND:
- aStrokeAttribute.JoinType = rendering::PathJoinType::ROUND;
- break;
- }
-
- const basegfx::BColor aHairlineColor(maBColorModifierStack.getModifiedColor(rLineAttribute.getColor()));
- maRenderState.DeviceColor = aHairlineColor.colorToDoubleSequence(mxCanvas->getDevice());
- canvas::tools::setRenderStateTransform(maRenderState, getViewInformation2D().getObjectTransformation());
-
- mxCanvas->strokePolyPolygon(
- basegfx::unotools::xPolyPolygonFromB2DPolygon(mxCanvas->getDevice(), rPolygonStrokePrimitive.getB2DPolygon()),
- maViewState, maRenderState, aStrokeAttribute);
-
- bOutputDone = true;
- }
- }
-
- if(!bOutputDone)
- {
- // process decomposition
- process(rPolygonStrokePrimitive.get2DDecomposition(getViewInformation2D()));
- }
- }
-
- void canvasProcessor2D::impRenderFillBitmapPrimitive2D(const primitive2d::FillBitmapPrimitive2D& rFillBitmapPrimitive2D)
- {
- // support tiled fills directly when tiling is on
- static bool bSupportFillBitmapDirectly(true);
- bool bOutputDone(false);
-
- if(bSupportFillBitmapDirectly)
- {
- const attribute::FillBitmapAttribute& rFillBitmapAttribute = rFillBitmapPrimitive2D.getFillBitmap();
-
- if(rFillBitmapAttribute.getTiling())
- {
- // apply possible color modification to Bitmap
- const BitmapEx aChangedBitmapEx(impModifyBitmapEx(maBColorModifierStack, rFillBitmapAttribute.getBitmapEx()));
-
- if(aChangedBitmapEx.IsEmpty())
- {
- // replace with color filled polygon
- const basegfx::BColor aModifiedColor(maBColorModifierStack.getModifiedColor(basegfx::BColor()));
- const basegfx::B2DPolygon aPolygon(basegfx::tools::createUnitPolygon());
-
- maRenderState.DeviceColor = aModifiedColor.colorToDoubleSequence(mxCanvas->getDevice());
- canvas::tools::setRenderStateTransform(maRenderState,
- getViewInformation2D().getObjectTransformation() * rFillBitmapPrimitive2D.getTransformation());
-
- mxCanvas->fillPolyPolygon(basegfx::unotools::xPolyPolygonFromB2DPolyPolygon(
- mxCanvas->getDevice(), basegfx::B2DPolyPolygon(aPolygon)), maViewState, maRenderState);
- }
- else
- {
- const Size aSizePixel(aChangedBitmapEx.GetSizePixel());
-
- if(0 != aSizePixel.Width() && 0 != aSizePixel.Height())
- {
- // create texture matrix from texture to object (where object is unit square here),
- // so use values directly
- const basegfx::B2DHomMatrix aTextureMatrix(basegfx::tools::createScaleTranslateB2DHomMatrix(
- rFillBitmapAttribute.getSize().getX(), rFillBitmapAttribute.getSize().getY(),
- rFillBitmapAttribute.getTopLeft().getX(), rFillBitmapAttribute.getTopLeft().getY()));
-
- // create and fill texture
- rendering::Texture aTexture;
-
- basegfx::unotools::affineMatrixFromHomMatrix(aTexture.AffineTransform, aTextureMatrix);
- aTexture.Alpha = 1.0;
- aTexture.Bitmap = vcl::unotools::xBitmapFromBitmapEx(mxCanvas->getDevice(), aChangedBitmapEx);
- aTexture.RepeatModeX = rendering::TexturingMode::REPEAT;
- aTexture.RepeatModeY = rendering::TexturingMode::REPEAT;
-
- // canvas needs a polygon to fill, create unit rectangle polygon
- const basegfx::B2DPolygon aOutlineRectangle(basegfx::tools::createUnitPolygon());
-
- // set primitive's transformation as render state transform
- canvas::tools::setRenderStateTransform(maRenderState,
- getViewInformation2D().getObjectTransformation() * rFillBitmapPrimitive2D.getTransformation());
-
- // put texture into a uno sequence for handover
- uno::Sequence< rendering::Texture > aSeq(1);
- aSeq[0] = aTexture;
-
- // draw textured rectangle
- mxCanvas->fillTexturedPolyPolygon(
- basegfx::unotools::xPolyPolygonFromB2DPolyPolygon(mxCanvas->getDevice(), basegfx::B2DPolyPolygon(aOutlineRectangle)),
- maViewState, maRenderState, aSeq);
- }
- }
-
- bOutputDone = true;
- }
- }
-
- if(!bOutputDone)
- {
- // process decomposition
- process(rFillBitmapPrimitive2D.get2DDecomposition(getViewInformation2D()));
- }
- }
-
- void canvasProcessor2D::impRenderUnifiedTransparencePrimitive2D(const primitive2d::UnifiedTransparencePrimitive2D& rUniTransparenceCandidate)
- {
- if(0.0 == rUniTransparenceCandidate.getTransparence())
- {
- // not transparent at all, directly use content
- process(rUniTransparenceCandidate.getChildren());
- }
- else if(rUniTransparenceCandidate.getTransparence() > 0.0 && rUniTransparenceCandidate.getTransparence() < 1.0)
- {
- const primitive2d::Primitive2DSequence rChildren = rUniTransparenceCandidate.getChildren();
-
- if(rChildren.hasElements())
- {
- bool bOutputDone(false);
-
- // Detect if a single PolyPolygonColorPrimitive2D is contained; in that case,
- // use the fillPolyPolygon method with correctly set transparence. This is a often used
- // case, so detectiong it is valuable
- if(1 == rChildren.getLength())
- {
- const primitive2d::Primitive2DReference xReference(rChildren[0]);
- const primitive2d::PolyPolygonColorPrimitive2D* pPoPoColor = dynamic_cast< const primitive2d::PolyPolygonColorPrimitive2D* >(xReference.get());
-
- if(pPoPoColor && PRIMITIVE2D_ID_POLYPOLYGONCOLORPRIMITIVE2D == pPoPoColor->getPrimitive2DID())
- {
- // direct draw of PolyPolygon with color and transparence
- const basegfx::BColor aPolygonColor(maBColorModifierStack.getModifiedColor(pPoPoColor->getBColor()));
-
- // add transparence modulation value to DeviceColor
- uno::Sequence< double > aColor(4);
-
- aColor[0] = aPolygonColor.getRed();
- aColor[1] = aPolygonColor.getGreen();
- aColor[2] = aPolygonColor.getBlue();
- aColor[3] = 1.0 - rUniTransparenceCandidate.getTransparence();
- maRenderState.DeviceColor = aColor;
-
- canvas::tools::setRenderStateTransform(maRenderState, getViewInformation2D().getObjectTransformation());
- mxCanvas->fillPolyPolygon(
- basegfx::unotools::xPolyPolygonFromB2DPolyPolygon(mxCanvas->getDevice(), pPoPoColor->getB2DPolyPolygon()),
- maViewState, maRenderState);
- bOutputDone = true;
- }
- }
-
- if(!bOutputDone)
- {
- // process decomposition. This will be decomposed to an TransparencePrimitive2D
- // with the same child context and a single polygon for transparent context. This could be
- // directly handled here with known VCL-buffer technology, but would only
- // make a small difference compared to directly rendering the TransparencePrimitive2D
- // using impRenderTransparencePrimitive2D above.
- process(rUniTransparenceCandidate.get2DDecomposition(getViewInformation2D()));
- }
- }
- }
- }
-
- //////////////////////////////////////////////////////////////////////////////
- // internal processing support
-
- void canvasProcessor2D::processBasePrimitive2D(const primitive2d::BasePrimitive2D& rCandidate)
- {
- switch(rCandidate.getPrimitive2DID())
- {
- case PRIMITIVE2D_ID_POLYGONHAIRLINEPRIMITIVE2D :
- {
- // direct draw of hairline
- const primitive2d::PolygonHairlinePrimitive2D& rPolygonCandidate = static_cast< const primitive2d::PolygonHairlinePrimitive2D& >(rCandidate);
- const basegfx::BColor aHairlineColor(maBColorModifierStack.getModifiedColor(rPolygonCandidate.getBColor()));
-
- maRenderState.DeviceColor = aHairlineColor.colorToDoubleSequence(mxCanvas->getDevice());
- canvas::tools::setRenderStateTransform(maRenderState, getViewInformation2D().getObjectTransformation());
- mxCanvas->drawPolyPolygon(
- basegfx::unotools::xPolyPolygonFromB2DPolygon(mxCanvas->getDevice(), rPolygonCandidate.getB2DPolygon()),
- maViewState, maRenderState);
-
- break;
- }
- case PRIMITIVE2D_ID_POLYPOLYGONCOLORPRIMITIVE2D :
- {
- // direct draw of PolyPolygon with color
- const primitive2d::PolyPolygonColorPrimitive2D& rPolygonCandidate = static_cast< const primitive2d::PolyPolygonColorPrimitive2D& >(rCandidate);
- const basegfx::BColor aPolygonColor(maBColorModifierStack.getModifiedColor(rPolygonCandidate.getBColor()));
-
- maRenderState.DeviceColor = aPolygonColor.colorToDoubleSequence(mxCanvas->getDevice());
- canvas::tools::setRenderStateTransform(maRenderState, getViewInformation2D().getObjectTransformation());
- mxCanvas->fillPolyPolygon(
- basegfx::unotools::xPolyPolygonFromB2DPolyPolygon(mxCanvas->getDevice(), rPolygonCandidate.getB2DPolyPolygon()),
- maViewState, maRenderState);
-
- break;
- }
- case PRIMITIVE2D_ID_MODIFIEDCOLORPRIMITIVE2D :
- {
- // modified color group. Force output to unified color.
- const primitive2d::ModifiedColorPrimitive2D& rModifiedCandidate = static_cast< const primitive2d::ModifiedColorPrimitive2D& >(rCandidate);
-
- if(rModifiedCandidate.getChildren().hasElements())
- {
- maBColorModifierStack.push(rModifiedCandidate.getColorModifier());
- process(rModifiedCandidate.getChildren());
- maBColorModifierStack.pop();
- }
-
- break;
- }
- case PRIMITIVE2D_ID_MASKPRIMITIVE2D :
- {
- // mask group
- impRenderMaskPrimitive2D(static_cast< const primitive2d::MaskPrimitive2D& >(rCandidate));
-
- break;
- }
- case PRIMITIVE2D_ID_TRANSFORMPRIMITIVE2D :
- {
- // transform group. Remember current ViewInformation2D
- const primitive2d::TransformPrimitive2D& rTransformCandidate = static_cast< const primitive2d::TransformPrimitive2D& >(rCandidate);
- const geometry::ViewInformation2D aLastViewInformation2D(getViewInformation2D());
-
- // create new local ViewInformation2D with new transformation
- const geometry::ViewInformation2D aViewInformation2D(
- getViewInformation2D().getObjectTransformation() * rTransformCandidate.getTransformation(),
- getViewInformation2D().getViewTransformation(),
- getViewInformation2D().getViewport(),
- getViewInformation2D().getVisualizedPage(),
- getViewInformation2D().getViewTime(),
- getViewInformation2D().getExtendedInformationSequence());
- updateViewInformation(aViewInformation2D);
-
- // set at canvas
- canvas::tools::setRenderStateTransform(maRenderState, getViewInformation2D().getObjectTransformation());
-
- // proccess content
- process(rTransformCandidate.getChildren());
-
- // restore transformations
- updateViewInformation(aLastViewInformation2D);
-
- // restore at canvas
- canvas::tools::setRenderStateTransform(maRenderState, getViewInformation2D().getObjectTransformation());
-
- break;
- }
- case PRIMITIVE2D_ID_PAGEPREVIEWPRIMITIVE2D :
- {
- // new XDrawPage for ViewInformation2D
- const primitive2d::PagePreviewPrimitive2D& rPagePreviewCandidate = static_cast< const primitive2d::PagePreviewPrimitive2D& >(rCandidate);
-
- // remember current transformation and ViewInformation
- const geometry::ViewInformation2D aLastViewInformation2D(getViewInformation2D());
-
- // create new local ViewInformation2D
- const geometry::ViewInformation2D aViewInformation2D(
- getViewInformation2D().getObjectTransformation(),
- getViewInformation2D().getViewTransformation(),
- getViewInformation2D().getViewport(),
- rPagePreviewCandidate.getXDrawPage(),
- getViewInformation2D().getViewTime(),
- getViewInformation2D().getExtendedInformationSequence());
- updateViewInformation(aViewInformation2D);
-
- // proccess decomposed content
- process(rPagePreviewCandidate.get2DDecomposition(getViewInformation2D()));
-
- // restore transformations
- updateViewInformation(aLastViewInformation2D);
- break;
- }
- case PRIMITIVE2D_ID_METAFILEPRIMITIVE2D :
- {
- // MetaFile primitive
- impRenderMetafilePrimitive2D(static_cast< const primitive2d::MetafilePrimitive2D& >(rCandidate));
-
- break;
- }
- case PRIMITIVE2D_ID_POINTARRAYPRIMITIVE2D :
- {
- // PointArray primitive
- const primitive2d::PointArrayPrimitive2D& rPointArrayCandidate = static_cast< const primitive2d::PointArrayPrimitive2D& >(rCandidate);
-
- // set point color
- const basegfx::BColor aRGBColor(maBColorModifierStack.getModifiedColor(rPointArrayCandidate.getRGBColor()));
- maRenderState.DeviceColor = aRGBColor.colorToDoubleSequence(mxCanvas->getDevice());
- canvas::tools::setRenderStateTransform(maRenderState, getViewInformation2D().getObjectTransformation());
-
- const std::vector< basegfx::B2DPoint >& rPointVector = rPointArrayCandidate.getPositions();
- const sal_uInt32 nPointCount(rPointVector.size());
-
- for(sal_uInt32 a(0); a < nPointCount; a++)
- {
- const basegfx::B2DPoint& rPoint = rPointVector[a];
- mxCanvas->drawPoint(basegfx::unotools::point2DFromB2DPoint(rPoint), maViewState, maRenderState);
- }
-
- break;
- }
- case PRIMITIVE2D_ID_TEXTSIMPLEPORTIONPRIMITIVE2D :
- {
- // TextSimplePortion primitive
- impRenderTextSimplePortionPrimitive2D(static_cast< const primitive2d::TextSimplePortionPrimitive2D& >(rCandidate));
-
- break;
- }
- case PRIMITIVE2D_ID_BITMAPPRIMITIVE2D :
- {
- // Bitmap primitive
- impRenderBitmapPrimitive2D(static_cast< const primitive2d::BitmapPrimitive2D& >(rCandidate));
-
- break;
- }
- case PRIMITIVE2D_ID_TRANSPARENCEPRIMITIVE2D :
- {
- // Transparence primitive
- impRenderTransparencePrimitive2D(static_cast< const primitive2d::TransparencePrimitive2D& >(rCandidate));
-
- break;
- }
- case PRIMITIVE2D_ID_POLYGONSTROKEPRIMITIVE2D:
- {
- // PolygonStrokePrimitive
- impRenderPolygonStrokePrimitive2D(static_cast< const primitive2d::PolygonStrokePrimitive2D& >(rCandidate));
-
- break;
- }
- case PRIMITIVE2D_ID_FILLBITMAPPRIMITIVE2D :
- {
- // FillBitmapPrimitive2D
- impRenderFillBitmapPrimitive2D(static_cast< const primitive2d::FillBitmapPrimitive2D& >(rCandidate));
-
- break;
- }
- case PRIMITIVE2D_ID_UNIFIEDTRANSPARENCEPRIMITIVE2D :
- {
- // UnifiedTransparencePrimitive2D
- impRenderUnifiedTransparencePrimitive2D(static_cast< const primitive2d::UnifiedTransparencePrimitive2D& >(rCandidate));
-
- break;
- }
- case PRIMITIVE2D_ID_CHARTPRIMITIVE2D :
- {
- // chart primitive in canvas renderer; restore original DrawMode during call
- // since the evtl. used ChartPrettyPainter will use the MapMode
- const primitive2d::ChartPrimitive2D& rChartPrimitive = static_cast< const primitive2d::ChartPrimitive2D& >(rCandidate);
- mpOutputDevice->Push(PUSH_MAPMODE);
- mpOutputDevice->SetMapMode(maOriginalMapMode);
-
- if(!renderChartPrimitive2D(
- rChartPrimitive,
- *mpOutputDevice,
- getViewInformation2D()))
- {
- // fallback to decomposition (MetaFile)
- process(rChartPrimitive.get2DDecomposition(getViewInformation2D()));
- }
-
- mpOutputDevice->Pop();
- break;
- }
- case PRIMITIVE2D_ID_WRONGSPELLPRIMITIVE2D :
- {
- // wrong spell primitive. Handled directly here using VCL since VCL has a nice and
- // very direct waveline painting which is needed for this. If VCL is to be avoided,
- // this can be removed anytime and the decomposition may be used
- const primitive2d::WrongSpellPrimitive2D& rWrongSpellPrimitive = static_cast< const primitive2d::WrongSpellPrimitive2D& >(rCandidate);
-
- if(!renderWrongSpellPrimitive2D(
- rWrongSpellPrimitive,
- *mpOutputDevice,
- getViewInformation2D().getObjectToViewTransformation(),
- maBColorModifierStack))
- {
- // fallback to decomposition (MetaFile)
- process(rWrongSpellPrimitive.get2DDecomposition(getViewInformation2D()));
- }
-
- break;
- }
-
- // nice to have:
- //
- // case PRIMITIVE2D_ID_CONTROLPRIMITIVE2D :
- // - support FormControls more direct eventually, not sure if this is needed
- // with the canvas renderer. The decomposition provides a bitmap representation
- // of the control which will work
- //
-
- default :
- {
- // process recursively
- process(rCandidate.get2DDecomposition(getViewInformation2D()));
-
- break;
- }
- }
- }
-
- //////////////////////////////////////////////////////////////////////////////
- // process support
-
- canvasProcessor2D::canvasProcessor2D(
- const geometry::ViewInformation2D& rViewInformation,
- OutputDevice& rOutDev)
- : BaseProcessor2D(rViewInformation),
- maOriginalMapMode(rOutDev.GetMapMode()),
- mpOutputDevice(&rOutDev),
- mxCanvas(rOutDev.GetCanvas()),
- maViewState(),
- maRenderState(),
- maBColorModifierStack(),
- maDrawinglayerOpt(),
- maClipPolyPolygon(),
- meLang(LANGUAGE_SYSTEM)
- {
- const SvtCTLOptions aSvtCTLOptions;
-
- canvas::tools::initViewState(maViewState);
- canvas::tools::initRenderState(maRenderState);
- canvas::tools::setViewStateTransform(maViewState, getViewInformation2D().getViewTransformation());
-
- // set digit language, derived from SvtCTLOptions to have the correct
- // number display for arabic/hindi numerals
- if(SvtCTLOptions::NUMERALS_HINDI == aSvtCTLOptions.GetCTLTextNumerals())
- {
- meLang = LANGUAGE_ARABIC_SAUDI_ARABIA;
- }
- else if(SvtCTLOptions::NUMERALS_ARABIC == aSvtCTLOptions.GetCTLTextNumerals())
- {
- meLang = LANGUAGE_ENGLISH;
- }
- else
- {
- meLang = (LanguageType)Application::GetSettings().GetLanguage();
- }
-
- rOutDev.SetDigitLanguage(meLang);
-
- // prepare output directly to pixels
- mpOutputDevice->Push(PUSH_MAPMODE);
- mpOutputDevice->SetMapMode();
-
- // react on AntiAliasing settings
- if(getOptionsDrawinglayer().IsAntiAliasing())
- {
- mpOutputDevice->SetAntialiasing(mpOutputDevice->GetAntialiasing() | ANTIALIASING_ENABLE_B2DDRAW);
- }
- else
- {
- mpOutputDevice->SetAntialiasing(mpOutputDevice->GetAntialiasing() & ~ANTIALIASING_ENABLE_B2DDRAW);
- }
- }
-
- canvasProcessor2D::~canvasProcessor2D()
- {
- // restore MapMode
- mpOutputDevice->Pop();
-
- // restore AntiAliasing
- mpOutputDevice->SetAntialiasing(mpOutputDevice->GetAntialiasing() & ~ANTIALIASING_ENABLE_B2DDRAW);
- }
- } // end of namespace processor2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/processor2d/contourextractor2d.cxx b/drawinglayer/source/processor2d/contourextractor2d.cxx
deleted file mode 100644
index b7089f23eb..0000000000
--- a/drawinglayer/source/processor2d/contourextractor2d.cxx
+++ /dev/null
@@ -1,206 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/processor2d/contourextractor2d.hxx>
-#include <drawinglayer/primitive2d/drawinglayer_primitivetypes2d.hxx>
-#include <drawinglayer/primitive2d/polygonprimitive2d.hxx>
-#include <drawinglayer/primitive2d/polypolygonprimitive2d.hxx>
-#include <drawinglayer/primitive2d/bitmapprimitive2d.hxx>
-#include <basegfx/polygon/b2dpolygontools.hxx>
-#include <drawinglayer/primitive2d/metafileprimitive2d.hxx>
-#include <drawinglayer/primitive2d/transparenceprimitive2d.hxx>
-#include <drawinglayer/primitive2d/maskprimitive2d.hxx>
-#include <drawinglayer/primitive2d/transformprimitive2d.hxx>
-#include <drawinglayer/primitive2d/sceneprimitive2d.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-using namespace com::sun::star;
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace processor2d
- {
- ContourExtractor2D::ContourExtractor2D(const geometry::ViewInformation2D& rViewInformation)
- : BaseProcessor2D(rViewInformation),
- maExtractedContour()
- {
- }
-
- ContourExtractor2D::~ContourExtractor2D()
- {
- }
-
- void ContourExtractor2D::processBasePrimitive2D(const primitive2d::BasePrimitive2D& rCandidate)
- {
- switch(rCandidate.getPrimitive2DID())
- {
- case PRIMITIVE2D_ID_POLYGONHAIRLINEPRIMITIVE2D :
- {
- // extract hairline in world coordinates
- const primitive2d::PolygonHairlinePrimitive2D& rPolygonCandidate(static_cast< const primitive2d::PolygonHairlinePrimitive2D& >(rCandidate));
- basegfx::B2DPolygon aLocalPolygon(rPolygonCandidate.getB2DPolygon());
- aLocalPolygon.transform(getViewInformation2D().getObjectTransformation());
-
- if(aLocalPolygon.isClosed())
- {
- // line polygons need to be represented as open polygons to differentiate them
- // from filled polygons
- basegfx::tools::openWithGeometryChange(aLocalPolygon);
- }
-
- maExtractedContour.push_back(basegfx::B2DPolyPolygon(aLocalPolygon));
- break;
- }
- case PRIMITIVE2D_ID_POLYPOLYGONCOLORPRIMITIVE2D :
- {
- // extract fill in world coordinates
- const primitive2d::PolyPolygonColorPrimitive2D& rPolygonCandidate(static_cast< const primitive2d::PolyPolygonColorPrimitive2D& >(rCandidate));
- basegfx::B2DPolyPolygon aLocalPolyPolygon(rPolygonCandidate.getB2DPolyPolygon());
- aLocalPolyPolygon.transform(getViewInformation2D().getObjectTransformation());
- maExtractedContour.push_back(aLocalPolyPolygon);
- break;
- }
- case PRIMITIVE2D_ID_BITMAPPRIMITIVE2D :
- {
- // extract BoundRect from bitmaps in world coordinates
- const primitive2d::BitmapPrimitive2D& rBitmapCandidate(static_cast< const primitive2d::BitmapPrimitive2D& >(rCandidate));
- basegfx::B2DHomMatrix aLocalTransform(getViewInformation2D().getObjectTransformation() * rBitmapCandidate.getTransform());
- basegfx::B2DPolygon aPolygon(basegfx::tools::createUnitPolygon());
- aPolygon.transform(aLocalTransform);
- maExtractedContour.push_back(basegfx::B2DPolyPolygon(aPolygon));
- break;
- }
- case PRIMITIVE2D_ID_METAFILEPRIMITIVE2D :
- {
- // extract BoundRect from MetaFiles in world coordinates
- const primitive2d::MetafilePrimitive2D& rMetaCandidate(static_cast< const primitive2d::MetafilePrimitive2D& >(rCandidate));
- basegfx::B2DHomMatrix aLocalTransform(getViewInformation2D().getObjectTransformation() * rMetaCandidate.getTransform());
- basegfx::B2DPolygon aPolygon(basegfx::tools::createUnitPolygon());
- aPolygon.transform(aLocalTransform);
- maExtractedContour.push_back(basegfx::B2DPolyPolygon(aPolygon));
- break;
- }
- case PRIMITIVE2D_ID_TRANSPARENCEPRIMITIVE2D :
- {
- // sub-transparence group. Look at children
- const primitive2d::TransparencePrimitive2D& rTransCandidate(static_cast< const primitive2d::TransparencePrimitive2D& >(rCandidate));
- process(rTransCandidate.getChildren());
- break;
- }
- case PRIMITIVE2D_ID_MASKPRIMITIVE2D :
- {
- // extract mask in world coordinates, ignore content
- const primitive2d::MaskPrimitive2D& rMaskCandidate(static_cast< const primitive2d::MaskPrimitive2D& >(rCandidate));
- basegfx::B2DPolyPolygon aMask(rMaskCandidate.getMask());
- aMask.transform(getViewInformation2D().getObjectTransformation());
- maExtractedContour.push_back(basegfx::B2DPolyPolygon(aMask));
- break;
- }
- case PRIMITIVE2D_ID_TRANSFORMPRIMITIVE2D :
- {
- // remember current ViewInformation2D
- const primitive2d::TransformPrimitive2D& rTransformCandidate(static_cast< const primitive2d::TransformPrimitive2D& >(rCandidate));
- const geometry::ViewInformation2D aLastViewInformation2D(getViewInformation2D());
-
- // create new local ViewInformation2D
- const geometry::ViewInformation2D aViewInformation2D(
- getViewInformation2D().getObjectTransformation() * rTransformCandidate.getTransformation(),
- getViewInformation2D().getViewTransformation(),
- getViewInformation2D().getViewport(),
- getViewInformation2D().getVisualizedPage(),
- getViewInformation2D().getViewTime(),
- getViewInformation2D().getExtendedInformationSequence());
- updateViewInformation(aViewInformation2D);
-
- // proccess content
- process(rTransformCandidate.getChildren());
-
- // restore transformations
- updateViewInformation(aLastViewInformation2D);
-
- break;
- }
- case PRIMITIVE2D_ID_SCENEPRIMITIVE2D :
- {
- // 2D Scene primitive containing 3D stuff; extract 2D contour in world coordinates
- const primitive2d::ScenePrimitive2D& rScenePrimitive2DCandidate(static_cast< const primitive2d::ScenePrimitive2D& >(rCandidate));
- const primitive2d::Primitive2DSequence xExtracted2DSceneGeometry(rScenePrimitive2DCandidate.getGeometry2D());
- const primitive2d::Primitive2DSequence xExtracted2DSceneShadow(rScenePrimitive2DCandidate.getShadow2D(getViewInformation2D()));
-
- // proccess content
- if(xExtracted2DSceneGeometry.hasElements())
- {
- process(xExtracted2DSceneGeometry);
- }
-
- // proccess content
- if(xExtracted2DSceneShadow.hasElements())
- {
- process(xExtracted2DSceneShadow);
- }
-
- break;
- }
- case PRIMITIVE2D_ID_WRONGSPELLPRIMITIVE2D :
- case PRIMITIVE2D_ID_MARKERARRAYPRIMITIVE2D :
- case PRIMITIVE2D_ID_POINTARRAYPRIMITIVE2D :
- {
- // ignorable primitives
- break;
- }
- case PRIMITIVE2D_ID_TEXTSIMPLEPORTIONPRIMITIVE2D :
- case PRIMITIVE2D_ID_TEXTDECORATEDPORTIONPRIMITIVE2D :
- {
- // primitives who's BoundRect will be added in world coordinates
- basegfx::B2DRange aRange(rCandidate.getB2DRange(getViewInformation2D()));
- aRange.transform(getViewInformation2D().getObjectTransformation());
- maExtractedContour.push_back(basegfx::B2DPolyPolygon(basegfx::tools::createPolygonFromRect(aRange)));
- break;
- }
- default :
- {
- // process recursively
- process(rCandidate.get2DDecomposition(getViewInformation2D()));
- break;
- }
- }
- }
-
- } // end of namespace processor2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/processor2d/helperchartrenderer.cxx b/drawinglayer/source/processor2d/helperchartrenderer.cxx
deleted file mode 100644
index a3a24767c1..0000000000
--- a/drawinglayer/source/processor2d/helperchartrenderer.cxx
+++ /dev/null
@@ -1,158 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <helperchartrenderer.hxx>
-#include <drawinglayer/primitive2d/chartprimitive2d.hxx>
-#include <svtools/chartprettypainter.hxx>
-#include <com/sun/star/lang/XUnoTunnel.hpp>
-#include <com/sun/star/lang/XMultiServiceFactory.hpp>
-#include <drawinglayer/geometry/viewinformation2d.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-using namespace com::sun::star;
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- bool renderChartPrimitive2D(
- const primitive2d::ChartPrimitive2D& rChartCandidate,
- OutputDevice& rOutputDevice,
- const geometry::ViewInformation2D& rViewInformation2D)
- {
- bool bChartRendered(false);
-
- // code from chart PrettyPrinter
- try
- {
- uno::Reference< lang::XMultiServiceFactory > xFact( rChartCandidate.getChartModel(), uno::UNO_QUERY );
- OSL_ENSURE( xFact.is(), "Chart cannot be painted pretty!\n" );
-
- if( xFact.is() )
- {
- uno::Reference< lang::XUnoTunnel > xChartRenderer( xFact->createInstance(
- ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.comp.chart2.ChartRenderer" ) ) ), uno::UNO_QUERY );
- OSL_ENSURE( xChartRenderer.is(), "Chart cannot be painted pretty!\n" );
-
- if( xChartRenderer.is() )
- {
- ChartPrettyPainter* pPrettyPainter = reinterpret_cast<ChartPrettyPainter*>(
- xChartRenderer->getSomething( ChartPrettyPainter::getUnoTunnelId() ));
-
- if( pPrettyPainter )
- {
- // create logic object range; do NOT use ObjectTransformation for this
- // (rViewInformation2D.getObjectTransformation()), only the logic object
- // size is wanted
- basegfx::B2DRange aObjectRange(0.0, 0.0, 1.0, 1.0);
- aObjectRange.transform(rChartCandidate.getTransformation());
- const Rectangle aRectangle(
- (sal_Int32)aObjectRange.getMinX(), (sal_Int32)aObjectRange.getMinY(),
- (sal_Int32)aObjectRange.getMaxX(), (sal_Int32)aObjectRange.getMaxY());
-
- // #i101811#
- if(rViewInformation2D.getObjectTransformation().isIdentity())
- {
- // no embedding in another transfromation, just paint with existing
- // MapMode. This is just a shortcut; using the below code will also
- // work; it has just a neutral ObjectTransformation
- bChartRendered = pPrettyPainter->DoPaint(&rOutputDevice, aRectangle);
- }
- else
- {
- // rViewInformation2D.getObjectTransformation() is used and
- // needs to be expressed in the MapMode for the PrettyPainter;
- // else it would call ChartModelHelper::setPageSize(...) with the
- // changed size what really will change the chart model and leads
- // to re-layouts and re-formattings
- const MapMode aOldMapMode(rOutputDevice.GetMapMode());
- basegfx::B2DVector aVTScale, aScale, aTranslate;
- double fRotate, fShearX;
-
- // get basic scaling with current MapMode (aVTScale), containing
- // mapping for set MapUnit (e.g. for 100th mm, the basic scale is
- // not 1.0, 1.0). This is needed since this scale is included in
- // the ObjectToView Transformation and needs to be removed (see
- // correction below) to re-create a MapMode
- rOutputDevice.SetMapMode(aOldMapMode.GetMapUnit());
- rOutputDevice.GetViewTransformation().decompose(aVTScale, aTranslate, fRotate, fShearX);
-
- // get complete ObjectToView Transformation scale and translate from current
- // transformation chain (combined view and object transform)
- rViewInformation2D.getObjectToViewTransformation().decompose(aScale, aTranslate, fRotate, fShearX);
-
- // assert when shear and/or rotation is used
- OSL_ENSURE(basegfx::fTools::equalZero(fRotate), "Chart PrettyPrinting with unsupportable rotation (!)");
- OSL_ENSURE(basegfx::fTools::equalZero(fShearX), "Chart PrettyPrinting with unsupportable shear (!)");
-
- // clean scale and translate from basic scaling (DPI, etc...)
- // since this will implicitely be part of the to-be-created MapMode
- const basegfx::B2DTuple aBasicCleaner(
- basegfx::fTools::equalZero(aVTScale.getX()) ? 1.0 : 1.0 / aVTScale.getX(),
- basegfx::fTools::equalZero(aVTScale.getY()) ? 1.0 : 1.0 / aVTScale.getY());
- aScale *= aBasicCleaner;
- aTranslate *= aBasicCleaner;
-
- // for MapMode, take scale out of translation
- const basegfx::B2DTuple aScaleRemover(
- basegfx::fTools::equalZero(aScale.getX()) ? 1.0 : 1.0 / aScale.getX(),
- basegfx::fTools::equalZero(aScale.getY()) ? 1.0 : 1.0 / aScale.getY());
- aTranslate *= aScaleRemover;
-
- // build new MapMode
- const MapMode aNewMapMode(aOldMapMode.GetMapUnit(),
- Point(basegfx::fround(aTranslate.getX()), basegfx::fround(aTranslate.getY())),
- Fraction(aScale.getX()), Fraction(aScale.getY()));
-
- // use, paint, restore
- rOutputDevice.SetMapMode(aNewMapMode);
- bChartRendered = pPrettyPainter->DoPaint(&rOutputDevice, aRectangle);
- rOutputDevice.SetMapMode(aOldMapMode);
- }
- }
- }
- }
- }
- catch( uno::Exception& e )
- {
- (void)e;
- OSL_FAIL( "Chart cannot be painted pretty!" );
- }
-
- return bChartRendered;
- }
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/processor2d/helperchartrenderer.hxx b/drawinglayer/source/processor2d/helperchartrenderer.hxx
deleted file mode 100644
index 0f1da6e515..0000000000
--- a/drawinglayer/source/processor2d/helperchartrenderer.hxx
+++ /dev/null
@@ -1,63 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_PROCESSOR2D_HELPERCHARTRENDER_HXX
-#define INCLUDED_DRAWINGLAYER_PROCESSOR2D_HELPERCHARTRENDER_HXX
-
-#include <sal/types.h>
-
-//////////////////////////////////////////////////////////////////////////////
-// predefines
-
-class OutputDevice;
-
-namespace drawinglayer { namespace primitive2d { class ChartPrimitive2D; }}
-namespace drawinglayer { namespace geometry { class ViewInformation2D; }}
-
-//////////////////////////////////////////////////////////////////////////////
-// support chart PrettyPrinter usage from primitives
-
-namespace drawinglayer
-{
- // #i101811#
- // Added current ViewInformation2D to take evtl. changed
- // ObjectTransformation into account
- bool renderChartPrimitive2D(
- const primitive2d::ChartPrimitive2D& rChartCandidate,
- OutputDevice& rOutputDevice,
- const geometry::ViewInformation2D& rViewInformation2D);
-
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif // INCLUDED_DRAWINGLAYER_PROCESSOR2D_HELPERCHARTRENDER_HXX
-
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/processor2d/helperwrongspellrenderer.cxx b/drawinglayer/source/processor2d/helperwrongspellrenderer.cxx
deleted file mode 100644
index a1be549911..0000000000
--- a/drawinglayer/source/processor2d/helperwrongspellrenderer.cxx
+++ /dev/null
@@ -1,99 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <helperwrongspellrenderer.hxx>
-#include <drawinglayer/primitive2d/wrongspellprimitive2d.hxx>
-#include <tools/gen.hxx>
-#include <vcl/outdev.hxx>
-#include <basegfx/color/bcolormodifier.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-using namespace com::sun::star;
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- bool renderWrongSpellPrimitive2D(
- const primitive2d::WrongSpellPrimitive2D& rWrongSpellCandidate,
- OutputDevice& rOutputDevice,
- const basegfx::B2DHomMatrix& rObjectToViewTransformation,
- const basegfx::BColorModifierStack& rBColorModifierStack)
- {
- const basegfx::B2DHomMatrix aLocalTransform(rObjectToViewTransformation * rWrongSpellCandidate.getTransformation());
- const basegfx::B2DVector aFontVectorPixel(aLocalTransform * basegfx::B2DVector(0.0, 1.0));
- const sal_uInt32 nFontPixelHeight(basegfx::fround(aFontVectorPixel.getLength()));
-
- static const sal_uInt32 nMinimumFontHeight(5); // #define WRONG_SHOW_MIN 5
- static const sal_uInt32 nSmallFontHeight(11); // #define WRONG_SHOW_SMALL 11
- static const sal_uInt32 nMediumFontHeight(15); // #define WRONG_SHOW_MEDIUM 15
-
- if(nFontPixelHeight > nMinimumFontHeight)
- {
- const basegfx::B2DPoint aStart(aLocalTransform * basegfx::B2DPoint(rWrongSpellCandidate.getStart(), 0.0));
- const basegfx::B2DPoint aStop(aLocalTransform * basegfx::B2DPoint(rWrongSpellCandidate.getStop(), 0.0));
- const Point aVclStart(basegfx::fround(aStart.getX()), basegfx::fround(aStart.getY()));
- const Point aVclStop(basegfx::fround(aStop.getX()), basegfx::fround(aStop.getY()));
- sal_uInt16 nWaveStyle(WAVE_FLAT);
-
- if(nFontPixelHeight > nMediumFontHeight)
- {
- nWaveStyle = WAVE_NORMAL;
- }
- else if(nFontPixelHeight > nSmallFontHeight)
- {
- nWaveStyle = WAVE_SMALL;
- }
-
- // #i101075# draw it. Do not forget to use the evtl. offsetted origin of the target device,
- // e.g. when used with mask/transparence buffer device
- const Point aOrigin(rOutputDevice.GetMapMode().GetOrigin());
-
- const basegfx::BColor aProcessedColor(rBColorModifierStack.getModifiedColor(rWrongSpellCandidate.getColor()));
- const bool bMapModeEnabledState(rOutputDevice.IsMapModeEnabled());
-
- rOutputDevice.EnableMapMode(false);
- rOutputDevice.SetLineColor(Color(aProcessedColor));
- rOutputDevice.SetFillColor();
- rOutputDevice.DrawWaveLine(aOrigin + aVclStart, aOrigin + aVclStop, nWaveStyle);
- rOutputDevice.EnableMapMode(bMapModeEnabledState);
- }
-
- // cannot really go wrong
- return true;
- }
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/processor2d/helperwrongspellrenderer.hxx b/drawinglayer/source/processor2d/helperwrongspellrenderer.hxx
deleted file mode 100644
index cdc572dba0..0000000000
--- a/drawinglayer/source/processor2d/helperwrongspellrenderer.hxx
+++ /dev/null
@@ -1,68 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_PROCESSOR2D_HELPERWRONGSPELLRENDER_HXX
-#define INCLUDED_DRAWINGLAYER_PROCESSOR2D_HELPERWRONGSPELLRENDER_HXX
-
-#include <sal/types.h>
-
-//////////////////////////////////////////////////////////////////////////////
-// predefines
-
-class OutputDevice;
-
-namespace drawinglayer { namespace primitive2d {
- class WrongSpellPrimitive2D;
-}}
-
-namespace basegfx {
- class B2DHomMatrix;
- class BColorModifierStack;
-}
-
-//////////////////////////////////////////////////////////////////////////////
-// support WrongSpell rendreing using VCL from primitives due to VCLs nice
-// and fast solution with wavelines
-
-namespace drawinglayer
-{
- bool renderWrongSpellPrimitive2D(
- const primitive2d::WrongSpellPrimitive2D& rWrongSpellCandidate,
- OutputDevice& rOutputDevice,
- const basegfx::B2DHomMatrix& rObjectToViewTransformation,
- const basegfx::BColorModifierStack& rBColorModifierStack);
-
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif // INCLUDED_DRAWINGLAYER_PROCESSOR2D_HELPERWRONGSPELLRENDER_HXX
-
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/processor2d/hittestprocessor2d.cxx b/drawinglayer/source/processor2d/hittestprocessor2d.cxx
deleted file mode 100644
index 4349ee6d19..0000000000
--- a/drawinglayer/source/processor2d/hittestprocessor2d.cxx
+++ /dev/null
@@ -1,610 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/processor2d/hittestprocessor2d.hxx>
-#include <drawinglayer/primitive2d/drawinglayer_primitivetypes2d.hxx>
-#include <drawinglayer/primitive2d/transformprimitive2d.hxx>
-#include <drawinglayer/primitive2d/polygonprimitive2d.hxx>
-#include <drawinglayer/primitive2d/polypolygonprimitive2d.hxx>
-#include <basegfx/polygon/b2dpolygontools.hxx>
-#include <basegfx/polygon/b2dpolypolygontools.hxx>
-#include <drawinglayer/primitive2d/transparenceprimitive2d.hxx>
-#include <drawinglayer/primitive2d/maskprimitive2d.hxx>
-#include <drawinglayer/primitive2d/sceneprimitive2d.hxx>
-#include <drawinglayer/primitive2d/pointarrayprimitive2d.hxx>
-#include <basegfx/matrix/b3dhommatrix.hxx>
-#include <drawinglayer/processor3d/cutfindprocessor3d.hxx>
-#include <drawinglayer/primitive2d/hiddengeometryprimitive2d.hxx>
-#include <drawinglayer/primitive2d/bitmapprimitive2d.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace processor2d
- {
- HitTestProcessor2D::HitTestProcessor2D(const geometry::ViewInformation2D& rViewInformation,
- const basegfx::B2DPoint& rLogicHitPosition,
- double fLogicHitTolerance,
- bool bHitTextOnly)
- : BaseProcessor2D(rViewInformation),
- maDiscreteHitPosition(),
- mfDiscreteHitTolerance(0.0),
- mbHit(false),
- mbHitToleranceUsed(false),
- mbUseInvisiblePrimitiveContent(true),
- mbHitTextOnly(bHitTextOnly)
- {
- // init hit tolerance
- mfDiscreteHitTolerance = fLogicHitTolerance;
-
- if(basegfx::fTools::less(mfDiscreteHitTolerance, 0.0))
- {
- // ensure input parameter for hit tolerance is >= 0.0
- mfDiscreteHitTolerance = 0.0;
- }
- else if(basegfx::fTools::more(mfDiscreteHitTolerance, 0.0))
- {
- // generate discrete hit tolerance
- mfDiscreteHitTolerance = (getViewInformation2D().getObjectToViewTransformation()
- * basegfx::B2DVector(mfDiscreteHitTolerance, 0.0)).getLength();
- }
-
- // gererate discrete hit position
- maDiscreteHitPosition = getViewInformation2D().getObjectToViewTransformation() * rLogicHitPosition;
-
- // check if HitTolerance is used
- mbHitToleranceUsed = basegfx::fTools::more(getDiscreteHitTolerance(), 0.0);
- }
-
- HitTestProcessor2D::~HitTestProcessor2D()
- {
- }
-
- bool HitTestProcessor2D::checkHairlineHitWithTolerance(
- const basegfx::B2DPolygon& rPolygon,
- double fDiscreteHitTolerance)
- {
- basegfx::B2DPolygon aLocalPolygon(rPolygon);
- aLocalPolygon.transform(getViewInformation2D().getObjectToViewTransformation());
-
- // get discrete range
- basegfx::B2DRange aPolygonRange(aLocalPolygon.getB2DRange());
-
- if(basegfx::fTools::more(fDiscreteHitTolerance, 0.0))
- {
- aPolygonRange.grow(fDiscreteHitTolerance);
- }
-
- // do rough range test first
- if(aPolygonRange.isInside(getDiscreteHitPosition()))
- {
- // check if a polygon edge is hit
- return basegfx::tools::isInEpsilonRange(
- aLocalPolygon,
- getDiscreteHitPosition(),
- fDiscreteHitTolerance);
- }
-
- return false;
- }
-
- bool HitTestProcessor2D::checkFillHitWithTolerance(
- const basegfx::B2DPolyPolygon& rPolyPolygon,
- double fDiscreteHitTolerance)
- {
- bool bRetval(false);
- basegfx::B2DPolyPolygon aLocalPolyPolygon(rPolyPolygon);
- aLocalPolyPolygon.transform(getViewInformation2D().getObjectToViewTransformation());
-
- // get discrete range
- basegfx::B2DRange aPolygonRange(aLocalPolyPolygon.getB2DRange());
- const bool bDiscreteHitToleranceUsed(basegfx::fTools::more(fDiscreteHitTolerance, 0.0));
-
- if(bDiscreteHitToleranceUsed)
- {
- aPolygonRange.grow(fDiscreteHitTolerance);
- }
-
- // do rough range test first
- if(aPolygonRange.isInside(getDiscreteHitPosition()))
- {
- // if a HitTolerance is given, check for polygon edge hit in epsilon first
- if(bDiscreteHitToleranceUsed &&
- basegfx::tools::isInEpsilonRange(
- aLocalPolyPolygon,
- getDiscreteHitPosition(),
- fDiscreteHitTolerance))
- {
- bRetval = true;
- }
-
- // check for hit in filled polyPolygon
- if(!bRetval && basegfx::tools::isInside(
- aLocalPolyPolygon,
- getDiscreteHitPosition(),
- true))
- {
- bRetval = true;
- }
- }
-
- return bRetval;
- }
-
- void HitTestProcessor2D::check3DHit(const primitive2d::ScenePrimitive2D& rCandidate)
- {
- // calculate relative point in unified 2D scene
- const basegfx::B2DPoint aLogicHitPosition(getViewInformation2D().getInverseObjectToViewTransformation() * getDiscreteHitPosition());
-
- // use bitmap check in ScenePrimitive2D
- bool bTryFastResult(false);
-
- if(rCandidate.tryToCheckLastVisualisationDirectHit(aLogicHitPosition, bTryFastResult))
- {
- mbHit = bTryFastResult;
- }
- else
- {
- basegfx::B2DHomMatrix aInverseSceneTransform(rCandidate.getObjectTransformation());
- aInverseSceneTransform.invert();
- const basegfx::B2DPoint aRelativePoint(aInverseSceneTransform * aLogicHitPosition);
-
- // check if test point is inside scene's unified area at all
- if(aRelativePoint.getX() >= 0.0 && aRelativePoint.getX() <= 1.0
- && aRelativePoint.getY() >= 0.0 && aRelativePoint.getY() <= 1.0)
- {
- // get 3D view information
- const geometry::ViewInformation3D& rObjectViewInformation3D = rCandidate.getViewInformation3D();
-
- // create HitPoint Front and Back, transform to object coordinates
- basegfx::B3DHomMatrix aViewToObject(rObjectViewInformation3D.getObjectToView());
- aViewToObject.invert();
- const basegfx::B3DPoint aFront(aViewToObject * basegfx::B3DPoint(aRelativePoint.getX(), aRelativePoint.getY(), 0.0));
- const basegfx::B3DPoint aBack(aViewToObject * basegfx::B3DPoint(aRelativePoint.getX(), aRelativePoint.getY(), 1.0));
-
- if(!aFront.equal(aBack))
- {
- const primitive3d::Primitive3DSequence& rPrimitives = rCandidate.getChildren3D();
-
- if(rPrimitives.hasElements())
- {
- // make BoundVolume empty and overlapping test for speedup
- const basegfx::B3DRange aObjectRange(
- drawinglayer::primitive3d::getB3DRangeFromPrimitive3DSequence(
- rPrimitives, rObjectViewInformation3D));
-
- if(!aObjectRange.isEmpty())
- {
- const basegfx::B3DRange aFrontBackRange(aFront, aBack);
-
- if(aObjectRange.overlaps(aFrontBackRange))
- {
- // bound volumes hit, geometric cut tests needed
- drawinglayer::processor3d::CutFindProcessor aCutFindProcessor(
- rObjectViewInformation3D,
- aFront,
- aBack,
- true);
- aCutFindProcessor.process(rPrimitives);
-
- mbHit = (0 != aCutFindProcessor.getCutPoints().size());
- }
- }
- }
- }
- }
-
- // This is needed to check hit with 3D shadows, too. HitTest is without shadow
- // to keep compatible with previous versions. Keeping here as reference
- //
- // if(!getHit())
- // {
- // // if scene has shadow, check hit with shadow, too
- // const primitive2d::Primitive2DSequence xExtracted2DSceneShadow(rCandidate.getShadow2D(getViewInformation2D()));
- //
- // if(xExtracted2DSceneShadow.hasElements())
- // {
- // // proccess extracted 2D content
- // process(xExtracted2DSceneShadow);
- // }
- // }
-
- if(!getHit())
- {
- // empty 3D scene; Check for border hit
- basegfx::B2DPolygon aOutline(basegfx::tools::createUnitPolygon());
- aOutline.transform(rCandidate.getObjectTransformation());
-
- mbHit = checkHairlineHitWithTolerance(aOutline, getDiscreteHitTolerance());
- }
-
- // This is what the previous version did. Keeping it here for reference
- //
- // // 2D Scene primitive containing 3D stuff; extract 2D contour in world coordinates
- // // This may be refined later to an own 3D HitTest renderer which processes the 3D
- // // geometry directly
- // const primitive2d::ScenePrimitive2D& rScenePrimitive2DCandidate(static_cast< const primitive2d::ScenePrimitive2D& >(rCandidate));
- // const primitive2d::Primitive2DSequence xExtracted2DSceneGeometry(rScenePrimitive2DCandidate.getGeometry2D());
- // const primitive2d::Primitive2DSequence xExtracted2DSceneShadow(rScenePrimitive2DCandidate.getShadow2D(getViewInformation2D()));
- //
- // if(xExtracted2DSceneGeometry.hasElements() || xExtracted2DSceneShadow.hasElements())
- // {
- // // proccess extracted 2D content
- // process(xExtracted2DSceneGeometry);
- // process(xExtracted2DSceneShadow);
- // }
- // else
- // {
- // // empty 3D scene; Check for border hit
- // const basegfx::B2DRange aRange(rCandidate.getB2DRange(getViewInformation2D()));
- // if(!aRange.isEmpty())
- // {
- // const basegfx::B2DPolygon aOutline(basegfx::tools::createPolygonFromRect(aRange));
- // mbHit = checkHairlineHitWithTolerance(aOutline, getDiscreteHitTolerance());
- // }
- // }
- }
- }
-
- void HitTestProcessor2D::processBasePrimitive2D(const primitive2d::BasePrimitive2D& rCandidate)
- {
- if(getHit())
- {
- // stop processing as soon as a hit was recognized
- return;
- }
-
- switch(rCandidate.getPrimitive2DID())
- {
- case PRIMITIVE2D_ID_TRANSFORMPRIMITIVE2D :
- {
- // remember current ViewInformation2D
- const primitive2d::TransformPrimitive2D& rTransformCandidate(static_cast< const primitive2d::TransformPrimitive2D& >(rCandidate));
- const geometry::ViewInformation2D aLastViewInformation2D(getViewInformation2D());
-
- // create new local ViewInformation2D containing transformation
- const geometry::ViewInformation2D aViewInformation2D(
- getViewInformation2D().getObjectTransformation() * rTransformCandidate.getTransformation(),
- getViewInformation2D().getViewTransformation(),
- getViewInformation2D().getViewport(),
- getViewInformation2D().getVisualizedPage(),
- getViewInformation2D().getViewTime(),
- getViewInformation2D().getExtendedInformationSequence());
- updateViewInformation(aViewInformation2D);
-
- // proccess child content recursively
- process(rTransformCandidate.getChildren());
-
- // restore transformations
- updateViewInformation(aLastViewInformation2D);
-
- break;
- }
- case PRIMITIVE2D_ID_POLYGONHAIRLINEPRIMITIVE2D :
- {
- if(!getHitTextOnly())
- {
- // create hairline in discrete coordinates
- const primitive2d::PolygonHairlinePrimitive2D& rPolygonCandidate(static_cast< const primitive2d::PolygonHairlinePrimitive2D& >(rCandidate));
-
- // use hairline test
- mbHit = checkHairlineHitWithTolerance(rPolygonCandidate.getB2DPolygon(), getDiscreteHitTolerance());
- }
-
- break;
- }
- case PRIMITIVE2D_ID_POLYGONMARKERPRIMITIVE2D :
- {
- if(!getHitTextOnly())
- {
- // handle marker like hairline; no need to decompose in dashes
- const primitive2d::PolygonMarkerPrimitive2D& rPolygonCandidate(static_cast< const primitive2d::PolygonMarkerPrimitive2D& >(rCandidate));
-
- // use hairline test
- mbHit = checkHairlineHitWithTolerance(rPolygonCandidate.getB2DPolygon(), getDiscreteHitTolerance());
- }
-
- break;
- }
- case PRIMITIVE2D_ID_POLYGONSTROKEPRIMITIVE2D :
- {
- if(!getHitTextOnly())
- {
- // handle stroke evtl. directly; no need to decompose to filled polygon outlines
- const primitive2d::PolygonStrokePrimitive2D& rPolygonCandidate(static_cast< const primitive2d::PolygonStrokePrimitive2D& >(rCandidate));
- const attribute::LineAttribute& rLineAttribute = rPolygonCandidate.getLineAttribute();
-
- if(basegfx::fTools::more(rLineAttribute.getWidth(), 0.0))
- {
- if(basegfx::B2DLINEJOIN_MITER == rLineAttribute.getLineJoin())
- {
- // if line is mitered, use decomposition since mitered line
- // geometry may use more space than the geometry grown by half line width
- process(rCandidate.get2DDecomposition(getViewInformation2D()));
- }
- else
- {
- // for all other B2DLINEJOIN_* do a hairline HitTest with expanded tolerance
- const basegfx::B2DVector aDiscreteHalfLineVector(getViewInformation2D().getObjectToViewTransformation()
- * basegfx::B2DVector(rLineAttribute.getWidth() * 0.5, 0.0));
- mbHit = checkHairlineHitWithTolerance(
- rPolygonCandidate.getB2DPolygon(),
- getDiscreteHitTolerance() + aDiscreteHalfLineVector.getLength());
- }
- }
- else
- {
- // hairline; fallback to hairline test. Do not decompose
- // since this may decompose the hairline to dashes
- mbHit = checkHairlineHitWithTolerance(rPolygonCandidate.getB2DPolygon(), getDiscreteHitTolerance());
- }
- }
-
- break;
- }
- case PRIMITIVE2D_ID_POLYGONWAVEPRIMITIVE2D :
- {
- if(!getHitTextOnly())
- {
- // do not use decompose; just handle like a line with width
- const primitive2d::PolygonWavePrimitive2D& rPolygonCandidate(static_cast< const primitive2d::PolygonWavePrimitive2D& >(rCandidate));
- double fLogicHitTolerance(0.0);
-
- // if WaveHeight, grow by it
- if(basegfx::fTools::more(rPolygonCandidate.getWaveHeight(), 0.0))
- {
- fLogicHitTolerance += rPolygonCandidate.getWaveHeight();
- }
-
- // if line width, grow by it
- if(basegfx::fTools::more(rPolygonCandidate.getLineAttribute().getWidth(), 0.0))
- {
- fLogicHitTolerance += rPolygonCandidate.getLineAttribute().getWidth() * 0.5;
- }
-
- const basegfx::B2DVector aDiscreteHalfLineVector(getViewInformation2D().getObjectToViewTransformation()
- * basegfx::B2DVector(fLogicHitTolerance, 0.0));
-
- mbHit = checkHairlineHitWithTolerance(
- rPolygonCandidate.getB2DPolygon(),
- getDiscreteHitTolerance() + aDiscreteHalfLineVector.getLength());
- }
-
- break;
- }
- case PRIMITIVE2D_ID_POLYPOLYGONCOLORPRIMITIVE2D :
- {
- if(!getHitTextOnly())
- {
- // create filled polyPolygon in discrete coordinates
- const primitive2d::PolyPolygonColorPrimitive2D& rPolygonCandidate(static_cast< const primitive2d::PolyPolygonColorPrimitive2D& >(rCandidate));
-
- // use fill hit test
- mbHit = checkFillHitWithTolerance(rPolygonCandidate.getB2DPolyPolygon(), getDiscreteHitTolerance());
- }
-
- break;
- }
- case PRIMITIVE2D_ID_TRANSPARENCEPRIMITIVE2D :
- {
- // sub-transparence group
- const primitive2d::TransparencePrimitive2D& rTransCandidate(static_cast< const primitive2d::TransparencePrimitive2D& >(rCandidate));
-
- // Currently the transparence content is not taken into account; only
- // the children are recursively checked for hit. This may be refined for
- // parts where the content is completely transparent if needed.
- process(rTransCandidate.getChildren());
-
- break;
- }
- case PRIMITIVE2D_ID_MASKPRIMITIVE2D :
- {
- // create mask in discrete coordinates; only recursively continue
- // with content when HitTest position is inside the mask
- const primitive2d::MaskPrimitive2D& rMaskCandidate(static_cast< const primitive2d::MaskPrimitive2D& >(rCandidate));
-
- // use fill hit test
- if(checkFillHitWithTolerance(rMaskCandidate.getMask(), getDiscreteHitTolerance()))
- {
- // recursively HitTest children
- process(rMaskCandidate.getChildren());
- }
-
- break;
- }
- case PRIMITIVE2D_ID_SCENEPRIMITIVE2D :
- {
- if(!getHitTextOnly())
- {
- const primitive2d::ScenePrimitive2D& rScenePrimitive2D(
- static_cast< const primitive2d::ScenePrimitive2D& >(rCandidate));
- check3DHit(rScenePrimitive2D);
- }
-
- break;
- }
- case PRIMITIVE2D_ID_WRONGSPELLPRIMITIVE2D :
- case PRIMITIVE2D_ID_MARKERARRAYPRIMITIVE2D :
- case PRIMITIVE2D_ID_GRIDPRIMITIVE2D :
- case PRIMITIVE2D_ID_HELPLINEPRIMITIVE2D :
- {
- // ignorable primitives
- break;
- }
- case PRIMITIVE2D_ID_SHADOWPRIMITIVE2D :
- {
- // Ignore shadows; we do not want to have shadows hittable.
- // Remove this one to make shadows hittable on demand.
- break;
- }
- case PRIMITIVE2D_ID_TEXTSIMPLEPORTIONPRIMITIVE2D :
- case PRIMITIVE2D_ID_TEXTDECORATEDPORTIONPRIMITIVE2D :
- {
- // for text use the BoundRect of the primitive itself
- const basegfx::B2DRange aRange(rCandidate.getB2DRange(getViewInformation2D()));
-
- if(!aRange.isEmpty())
- {
- const basegfx::B2DPolygon aOutline(basegfx::tools::createPolygonFromRect(aRange));
- mbHit = checkFillHitWithTolerance(basegfx::B2DPolyPolygon(aOutline), getDiscreteHitTolerance());
- }
-
- break;
- }
- case PRIMITIVE2D_ID_BITMAPPRIMITIVE2D :
- {
- if(!getHitTextOnly())
- {
- // The recently added BitmapEx::GetTransparency() makes it easy to extend
- // the BitmapPrimitive2D HitTest to take the contained BotmapEx and it's
- // transparency into account
- const basegfx::B2DRange aRange(rCandidate.getB2DRange(getViewInformation2D()));
-
- if(!aRange.isEmpty())
- {
- const primitive2d::BitmapPrimitive2D& rBitmapCandidate(static_cast< const primitive2d::BitmapPrimitive2D& >(rCandidate));
- const BitmapEx& rBitmapEx = rBitmapCandidate.getBitmapEx();
- const Size& rSizePixel(rBitmapEx.GetSizePixel());
-
- if(rSizePixel.Width() && rSizePixel.Height())
- {
- basegfx::B2DHomMatrix aBackTransform(
- getViewInformation2D().getObjectToViewTransformation() *
- rBitmapCandidate.getTransform());
- aBackTransform.invert();
-
- const basegfx::B2DPoint aRelativePoint(aBackTransform * getDiscreteHitPosition());
- const basegfx::B2DRange aUnitRange(0.0, 0.0, 1.0, 1.0);
-
- if(aUnitRange.isInside(aRelativePoint))
- {
- const sal_Int32 nX(basegfx::fround(aRelativePoint.getX() * rSizePixel.Width()));
- const sal_Int32 nY(basegfx::fround(aRelativePoint.getY() * rSizePixel.Height()));
-
- mbHit = (0xff != rBitmapEx.GetTransparency(nX, nY));
- }
- }
- else
- {
- // fallback to standard HitTest
- const basegfx::B2DPolygon aOutline(basegfx::tools::createPolygonFromRect(aRange));
- mbHit = checkFillHitWithTolerance(basegfx::B2DPolyPolygon(aOutline), getDiscreteHitTolerance());
- }
- }
- }
-
- break;
- }
- case PRIMITIVE2D_ID_METAFILEPRIMITIVE2D :
- case PRIMITIVE2D_ID_CONTROLPRIMITIVE2D :
- case PRIMITIVE2D_ID_FILLGRADIENTPRIMITIVE2D :
- case PRIMITIVE2D_ID_FILLHATCHPRIMITIVE2D :
- case PRIMITIVE2D_ID_PAGEPREVIEWPRIMITIVE2D :
- case PRIMITIVE2D_ID_MEDIAPRIMITIVE2D:
- case PRIMITIVE2D_ID_RENDERGRAPHICPRIMITIVE2D:
- {
- if(!getHitTextOnly())
- {
- // Class of primitives for which just the BoundRect of the primitive itself
- // will be used for HitTest currently.
- //
- // This may be refined in the future, e.g:
- // - For Bitamps, the mask and/or transparence information may be used
- // - For MetaFiles, the MetaFile content may be used
- const basegfx::B2DRange aRange(rCandidate.getB2DRange(getViewInformation2D()));
-
- if(!aRange.isEmpty())
- {
- const basegfx::B2DPolygon aOutline(basegfx::tools::createPolygonFromRect(aRange));
- mbHit = checkFillHitWithTolerance(basegfx::B2DPolyPolygon(aOutline), getDiscreteHitTolerance());
- }
- }
-
- break;
- }
- case PRIMITIVE2D_ID_HIDDENGEOMETRYPRIMITIVE2D :
- {
- // HiddenGeometryPrimitive2D; the default decomposition would return an empty seqence,
- // so force this primitive to process it's children directly if the switch is set
- // (which is the default). Else, ignore invisible content
- const primitive2d::HiddenGeometryPrimitive2D& rHiddenGeometry(static_cast< const primitive2d::HiddenGeometryPrimitive2D& >(rCandidate));
- const primitive2d::Primitive2DSequence& rChildren = rHiddenGeometry.getChildren();
-
- if(rChildren.hasElements())
- {
- if(getUseInvisiblePrimitiveContent())
- {
- process(rChildren);
- }
- }
-
- break;
- }
- case PRIMITIVE2D_ID_POINTARRAYPRIMITIVE2D :
- {
- if(!getHitTextOnly())
- {
- const primitive2d::PointArrayPrimitive2D& rPointArrayCandidate(static_cast< const primitive2d::PointArrayPrimitive2D& >(rCandidate));
- const std::vector< basegfx::B2DPoint >& rPositions = rPointArrayCandidate.getPositions();
- const sal_uInt32 nCount(rPositions.size());
-
- for(sal_uInt32 a(0); !getHit() && a < nCount; a++)
- {
- const basegfx::B2DPoint aPosition(getViewInformation2D().getObjectToViewTransformation() * rPositions[a]);
- const basegfx::B2DVector aDistance(aPosition - getDiscreteHitPosition());
-
- if(aDistance.getLength() <= getDiscreteHitTolerance())
- {
- mbHit = true;
- }
- }
- }
-
- break;
- }
- default :
- {
- // process recursively
- process(rCandidate.get2DDecomposition(getViewInformation2D()));
-
- break;
- }
- }
- }
-
- } // end of namespace processor2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/processor2d/linegeometryextractor2d.cxx b/drawinglayer/source/processor2d/linegeometryextractor2d.cxx
deleted file mode 100644
index 37966678eb..0000000000
--- a/drawinglayer/source/processor2d/linegeometryextractor2d.cxx
+++ /dev/null
@@ -1,148 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/processor2d/linegeometryextractor2d.hxx>
-#include <drawinglayer/primitive2d/drawinglayer_primitivetypes2d.hxx>
-#include <drawinglayer/primitive2d/polygonprimitive2d.hxx>
-#include <drawinglayer/primitive2d/polypolygonprimitive2d.hxx>
-#include <drawinglayer/primitive2d/transformprimitive2d.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-using namespace com::sun::star;
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace processor2d
- {
- LineGeometryExtractor2D::LineGeometryExtractor2D(const geometry::ViewInformation2D& rViewInformation)
- : BaseProcessor2D(rViewInformation),
- maExtractedHairlines(),
- maExtractedLineFills(),
- mbInLineGeometry(false)
- {
- }
-
- LineGeometryExtractor2D::~LineGeometryExtractor2D()
- {
- }
-
- void LineGeometryExtractor2D::processBasePrimitive2D(const primitive2d::BasePrimitive2D& rCandidate)
- {
- switch(rCandidate.getPrimitive2DID())
- {
- case PRIMITIVE2D_ID_POLYGONSTROKEPRIMITIVE2D :
- case PRIMITIVE2D_ID_POLYGONSTROKEARROWPRIMITIVE2D :
- {
- // enter a line geometry group (with or without LineEnds)
- bool bOldState(mbInLineGeometry);
- mbInLineGeometry = true;
- process(rCandidate.get2DDecomposition(getViewInformation2D()));
- mbInLineGeometry = bOldState;
- break;
- }
- case PRIMITIVE2D_ID_POLYGONHAIRLINEPRIMITIVE2D :
- {
- if(mbInLineGeometry)
- {
- // extract hairline line geometry in world coordinates
- const primitive2d::PolygonHairlinePrimitive2D& rPolygonCandidate(static_cast< const primitive2d::PolygonHairlinePrimitive2D& >(rCandidate));
- basegfx::B2DPolygon aLocalPolygon(rPolygonCandidate.getB2DPolygon());
- aLocalPolygon.transform(getViewInformation2D().getObjectTransformation());
- maExtractedHairlines.push_back(aLocalPolygon);
- }
- break;
- }
- case PRIMITIVE2D_ID_POLYPOLYGONCOLORPRIMITIVE2D :
- {
- if(mbInLineGeometry)
- {
- // extract filled line geometry (line with width)
- const primitive2d::PolyPolygonColorPrimitive2D& rPolygonCandidate(static_cast< const primitive2d::PolyPolygonColorPrimitive2D& >(rCandidate));
- basegfx::B2DPolyPolygon aLocalPolyPolygon(rPolygonCandidate.getB2DPolyPolygon());
- aLocalPolyPolygon.transform(getViewInformation2D().getObjectTransformation());
- maExtractedLineFills.push_back(aLocalPolyPolygon);
- }
- break;
- }
- case PRIMITIVE2D_ID_TRANSFORMPRIMITIVE2D :
- {
- // remember current transformation and ViewInformation
- const primitive2d::TransformPrimitive2D& rTransformCandidate(static_cast< const primitive2d::TransformPrimitive2D& >(rCandidate));
- const geometry::ViewInformation2D aLastViewInformation2D(getViewInformation2D());
-
- // create new transformations for CurrentTransformation and for local ViewInformation2D
- const geometry::ViewInformation2D aViewInformation2D(
- getViewInformation2D().getObjectTransformation() * rTransformCandidate.getTransformation(),
- getViewInformation2D().getViewTransformation(),
- getViewInformation2D().getViewport(),
- getViewInformation2D().getVisualizedPage(),
- getViewInformation2D().getViewTime(),
- getViewInformation2D().getExtendedInformationSequence());
- updateViewInformation(aViewInformation2D);
-
- // proccess content
- process(rTransformCandidate.getChildren());
-
- // restore transformations
- updateViewInformation(aLastViewInformation2D);
-
- break;
- }
- case PRIMITIVE2D_ID_SCENEPRIMITIVE2D :
- case PRIMITIVE2D_ID_WRONGSPELLPRIMITIVE2D :
- case PRIMITIVE2D_ID_MARKERARRAYPRIMITIVE2D :
- case PRIMITIVE2D_ID_POINTARRAYPRIMITIVE2D :
- case PRIMITIVE2D_ID_BITMAPPRIMITIVE2D :
- case PRIMITIVE2D_ID_RENDERGRAPHICPRIMITIVE2D :
- case PRIMITIVE2D_ID_METAFILEPRIMITIVE2D :
- case PRIMITIVE2D_ID_MASKPRIMITIVE2D :
- {
- // ignorable primitives
- break;
- }
- default :
- {
- // process recursively
- process(rCandidate.get2DDecomposition(getViewInformation2D()));
- break;
- }
- }
- }
- } // end of namespace processor2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/processor2d/textaspolygonextractor2d.cxx b/drawinglayer/source/processor2d/textaspolygonextractor2d.cxx
deleted file mode 100644
index e23eb20f83..0000000000
--- a/drawinglayer/source/processor2d/textaspolygonextractor2d.cxx
+++ /dev/null
@@ -1,251 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/processor2d/textaspolygonextractor2d.hxx>
-#include <drawinglayer/primitive2d/drawinglayer_primitivetypes2d.hxx>
-#include <drawinglayer/primitive2d/polypolygonprimitive2d.hxx>
-#include <drawinglayer/primitive2d/polygonprimitive2d.hxx>
-#include <drawinglayer/primitive2d/modifiedcolorprimitive2d.hxx>
-#include <drawinglayer/primitive2d/transformprimitive2d.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace processor2d
- {
- void TextAsPolygonExtractor2D::processBasePrimitive2D(const primitive2d::BasePrimitive2D& rCandidate)
- {
- switch(rCandidate.getPrimitive2DID())
- {
- case PRIMITIVE2D_ID_TEXTDECORATEDPORTIONPRIMITIVE2D :
- {
- // TextDecoratedPortionPrimitive2D can produce the following primitives
- // when being decomposed:
- //
- // - TextSimplePortionPrimitive2D
- // - PolygonWavePrimitive2D
- // - PolygonStrokePrimitive2D
- // - PolygonStrokePrimitive2D
- // - PolyPolygonColorPrimitive2D
- // - PolyPolygonHairlinePrimitive2D
- // - PolygonHairlinePrimitive2D
- // - ShadowPrimitive2D
- // - ModifiedColorPrimitive2D
- // - TransformPrimitive2D
- // - TextEffectPrimitive2D
- // - ModifiedColorPrimitive2D
- // - TransformPrimitive2D
- // - GroupPrimitive2D
-
- // encapsulate with flag and use decomposition
- mnInText++;
- process(rCandidate.get2DDecomposition(getViewInformation2D()));
- mnInText--;
-
- break;
- }
- case PRIMITIVE2D_ID_TEXTSIMPLEPORTIONPRIMITIVE2D :
- {
- // TextSimplePortionPrimitive2D can produce the following primitives
- // when being decomposed:
- //
- // - PolyPolygonColorPrimitive2D
- // - TextEffectPrimitive2D
- // - ModifiedColorPrimitive2D
- // - TransformPrimitive2D
- // - GroupPrimitive2D
-
- // encapsulate with flag and use decomposition
- mnInText++;
- process(rCandidate.get2DDecomposition(getViewInformation2D()));
- mnInText--;
-
- break;
- }
-
- // as can be seen from the TextSimplePortionPrimitive2D and the
- // TextDecoratedPortionPrimitive2D, inside of the mnInText marks
- // the following primitives can occurr containing geometry data
- // from text decomposition:
- //
- // - PolyPolygonColorPrimitive2D
- // - PolygonHairlinePrimitive2D
- // - PolyPolygonHairlinePrimitive2D (for convenience)
- //
- case PRIMITIVE2D_ID_POLYPOLYGONCOLORPRIMITIVE2D :
- {
- if(mnInText)
- {
- const primitive2d::PolyPolygonColorPrimitive2D& rPoPoCoCandidate(static_cast< const primitive2d::PolyPolygonColorPrimitive2D& >(rCandidate));
- basegfx::B2DPolyPolygon aPolyPolygon(rPoPoCoCandidate.getB2DPolyPolygon());
-
- if(aPolyPolygon.count())
- {
- // transform the PolyPolygon
- aPolyPolygon.transform(getViewInformation2D().getObjectToViewTransformation());
-
- // get evtl. corrected color
- const basegfx::BColor aColor(maBColorModifierStack.getModifiedColor(rPoPoCoCandidate.getBColor()));
-
- // add to result vector
- maTarget.push_back(TextAsPolygonDataNode(aPolyPolygon, aColor, true));
- }
- }
-
- break;
- }
- case PRIMITIVE2D_ID_POLYGONHAIRLINEPRIMITIVE2D :
- {
- if(mnInText)
- {
- const primitive2d::PolygonHairlinePrimitive2D& rPoHaCandidate(static_cast< const primitive2d::PolygonHairlinePrimitive2D& >(rCandidate));
- basegfx::B2DPolygon aPolygon(rPoHaCandidate.getB2DPolygon());
-
- if(aPolygon.count())
- {
- // transform the Polygon
- aPolygon.transform(getViewInformation2D().getObjectToViewTransformation());
-
- // get evtl. corrected color
- const basegfx::BColor aColor(maBColorModifierStack.getModifiedColor(rPoHaCandidate.getBColor()));
-
- // add to result vector
- maTarget.push_back(TextAsPolygonDataNode(basegfx::B2DPolyPolygon(aPolygon), aColor, false));
- }
- }
-
- break;
- }
- case PRIMITIVE2D_ID_POLYPOLYGONHAIRLINEPRIMITIVE2D :
- {
- if(mnInText)
- {
- const primitive2d::PolyPolygonHairlinePrimitive2D& rPoPoHaCandidate(static_cast< const primitive2d::PolyPolygonHairlinePrimitive2D& >(rCandidate));
- basegfx::B2DPolyPolygon aPolyPolygon(rPoPoHaCandidate.getB2DPolyPolygon());
-
- if(aPolyPolygon.count())
- {
- // transform the Polygon
- aPolyPolygon.transform(getViewInformation2D().getObjectToViewTransformation());
-
- // get evtl. corrected color
- const basegfx::BColor aColor(maBColorModifierStack.getModifiedColor(rPoPoHaCandidate.getBColor()));
-
- // add to result vector
- maTarget.push_back(TextAsPolygonDataNode(aPolyPolygon, aColor, false));
- }
- }
-
- break;
- }
-
- // usage of color modification stack is needed
- case PRIMITIVE2D_ID_MODIFIEDCOLORPRIMITIVE2D :
- {
- const primitive2d::ModifiedColorPrimitive2D& rModifiedColorCandidate(static_cast< const primitive2d::ModifiedColorPrimitive2D& >(rCandidate));
-
- if(rModifiedColorCandidate.getChildren().hasElements())
- {
- maBColorModifierStack.push(rModifiedColorCandidate.getColorModifier());
- process(rModifiedColorCandidate.getChildren());
- maBColorModifierStack.pop();
- }
-
- break;
- }
-
- // usage of transformation stack is needed
- case PRIMITIVE2D_ID_TRANSFORMPRIMITIVE2D :
- {
- // remember current transformation and ViewInformation
- const primitive2d::TransformPrimitive2D& rTransformCandidate(static_cast< const primitive2d::TransformPrimitive2D& >(rCandidate));
- const geometry::ViewInformation2D aLastViewInformation2D(getViewInformation2D());
-
- // create new transformations for CurrentTransformation and for local ViewInformation2D
- const geometry::ViewInformation2D aViewInformation2D(
- getViewInformation2D().getObjectTransformation() * rTransformCandidate.getTransformation(),
- getViewInformation2D().getViewTransformation(),
- getViewInformation2D().getViewport(),
- getViewInformation2D().getVisualizedPage(),
- getViewInformation2D().getViewTime(),
- getViewInformation2D().getExtendedInformationSequence());
- updateViewInformation(aViewInformation2D);
-
- // proccess content
- process(rTransformCandidate.getChildren());
-
- // restore transformations
- updateViewInformation(aLastViewInformation2D);
-
- break;
- }
-
- // ignorable primitives
- case PRIMITIVE2D_ID_SCENEPRIMITIVE2D :
- case PRIMITIVE2D_ID_WRONGSPELLPRIMITIVE2D :
- case PRIMITIVE2D_ID_MARKERARRAYPRIMITIVE2D :
- case PRIMITIVE2D_ID_POINTARRAYPRIMITIVE2D :
- case PRIMITIVE2D_ID_BITMAPPRIMITIVE2D :
- case PRIMITIVE2D_ID_RENDERGRAPHICPRIMITIVE2D :
- case PRIMITIVE2D_ID_METAFILEPRIMITIVE2D :
- case PRIMITIVE2D_ID_MASKPRIMITIVE2D :
- {
- break;
- }
-
- default :
- {
- // process recursively
- process(rCandidate.get2DDecomposition(getViewInformation2D()));
- break;
- }
- }
- }
-
- TextAsPolygonExtractor2D::TextAsPolygonExtractor2D(const geometry::ViewInformation2D& rViewInformation)
- : BaseProcessor2D(rViewInformation),
- maTarget(),
- maBColorModifierStack(),
- mnInText(0)
- {
- }
-
- TextAsPolygonExtractor2D::~TextAsPolygonExtractor2D()
- {
- }
- } // end of namespace processor2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/processor2d/vclhelperbitmaprender.cxx b/drawinglayer/source/processor2d/vclhelperbitmaprender.cxx
deleted file mode 100644
index 75ace24df6..0000000000
--- a/drawinglayer/source/processor2d/vclhelperbitmaprender.cxx
+++ /dev/null
@@ -1,280 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <vclhelperbitmaprender.hxx>
-#include <svtools/grfmgr.hxx>
-#include <basegfx/vector/b2dvector.hxx>
-#include <basegfx/matrix/b2dhommatrix.hxx>
-#include <basegfx/range/b2drange.hxx>
-#include <vcl/outdev.hxx>
-#include <vclhelperbitmaptransform.hxx>
-#include <basegfx/matrix/b2dhommatrixtools.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-// support for different kinds of bitmap rendering using vcl
-
-namespace drawinglayer
-{
- void RenderBitmapPrimitive2D_GraphicManager(
- OutputDevice& rOutDev,
- const BitmapEx& rBitmapEx,
- const basegfx::B2DHomMatrix& rTransform)
- {
- // prepare attributes
- GraphicAttr aAttributes;
-
- // decompose matrix to check for shear, rotate and mirroring
- basegfx::B2DVector aScale, aTranslate;
- double fRotate, fShearX;
- rTransform.decompose(aScale, aTranslate, fRotate, fShearX);
-
- // mirror flags
- aAttributes.SetMirrorFlags(
- (basegfx::fTools::less(aScale.getX(), 0.0) ? BMP_MIRROR_HORZ : 0)|
- (basegfx::fTools::less(aScale.getY(), 0.0) ? BMP_MIRROR_VERT : 0));
-
- // rotation
- if(!basegfx::fTools::equalZero(fRotate))
- {
- double fRotation(fmod(3600.0 - (fRotate * (10.0 / F_PI180)), 3600.0));
- aAttributes.SetRotation((sal_uInt16)(fRotation));
- }
-
- // prepare Bitmap
- basegfx::B2DRange aOutlineRange(0.0, 0.0, 1.0, 1.0);
-
- if(basegfx::fTools::equalZero(fRotate))
- {
- aOutlineRange.transform(rTransform);
- }
- else
- {
- // if rotated, create the unrotated output rectangle for the GraphicManager paint
- const basegfx::B2DHomMatrix aSimpleObjectMatrix(basegfx::tools::createScaleTranslateB2DHomMatrix(
- fabs(aScale.getX()), fabs(aScale.getY()),
- aTranslate.getX(), aTranslate.getY()));
-
- aOutlineRange.transform(aSimpleObjectMatrix);
- }
-
- // prepare dest coordinates
- const Point aPoint(
- basegfx::fround(aOutlineRange.getMinX()),
- basegfx::fround(aOutlineRange.getMinY()));
- const Size aSize(
- basegfx::fround(aOutlineRange.getWidth()),
- basegfx::fround(aOutlineRange.getHeight()));
-
- // paint it using GraphicManager
- Graphic aGraphic(rBitmapEx);
- GraphicObject aGraphicObject(aGraphic);
- aGraphicObject.Draw(&rOutDev, aPoint, aSize, &aAttributes);
- }
-
- void RenderBitmapPrimitive2D_BitmapEx(
- OutputDevice& rOutDev,
- const BitmapEx& rBitmapEx,
- const basegfx::B2DHomMatrix& rTransform)
- {
- // only translate and scale, use vcl's DrawBitmapEx().
- BitmapEx aContent(rBitmapEx);
-
- // prepare dest coor. Necessary to expand since vcl's DrawBitmapEx draws one pix less
- basegfx::B2DRange aOutlineRange(0.0, 0.0, 1.0, 1.0);
- aOutlineRange.transform(rTransform);
- // prepare dest coordinates
- const Point aPoint(
- basegfx::fround(aOutlineRange.getMinX()),
- basegfx::fround(aOutlineRange.getMinY()));
- const Size aSize(
- basegfx::fround(aOutlineRange.getWidth()),
- basegfx::fround(aOutlineRange.getHeight()));
-
- // decompose matrix to check for shear, rotate and mirroring
- basegfx::B2DVector aScale, aTranslate;
- double fRotate, fShearX;
- rTransform.decompose(aScale, aTranslate, fRotate, fShearX);
-
- // Check mirroring.
- sal_uInt32 nMirrorFlags(BMP_MIRROR_NONE);
-
- if(basegfx::fTools::less(aScale.getX(), 0.0))
- {
- nMirrorFlags |= BMP_MIRROR_HORZ;
- }
-
- if(basegfx::fTools::less(aScale.getY(), 0.0))
- {
- nMirrorFlags |= BMP_MIRROR_VERT;
- }
-
- if(BMP_MIRROR_NONE != nMirrorFlags)
- {
- aContent.Mirror(nMirrorFlags);
- }
-
- // draw bitmap
- rOutDev.DrawBitmapEx(aPoint, aSize, aContent);
- }
-
- void RenderBitmapPrimitive2D_self(
- OutputDevice& rOutDev,
- const BitmapEx& rBitmapEx,
- const basegfx::B2DHomMatrix& rTransform)
- {
- // process self with free transformation (containing shear and rotate). Get dest rect in pixels.
- basegfx::B2DRange aOutlineRange(0.0, 0.0, 1.0, 1.0);
- aOutlineRange.transform(rTransform);
- const Rectangle aDestRectLogic(
- basegfx::fround(aOutlineRange.getMinX()),
- basegfx::fround(aOutlineRange.getMinY()),
- basegfx::fround(aOutlineRange.getMaxX()),
- basegfx::fround(aOutlineRange.getMaxY()));
- const Rectangle aDestRectPixel(rOutDev.LogicToPixel(aDestRectLogic));
-
- // #i96708# check if Metafile is recorded
- const GDIMetaFile* pMetaFile = rOutDev.GetConnectMetaFile();
- const bool bRecordToMetaFile(pMetaFile && pMetaFile->IsRecord() && !pMetaFile->IsPause());
-
- // intersect with output pixel size, but only
- // when not recording to metafile
- const Rectangle aOutputRectPixel(Point(), rOutDev.GetOutputSizePixel());
- Rectangle aCroppedRectPixel(bRecordToMetaFile ? aDestRectPixel : aDestRectPixel.GetIntersection(aOutputRectPixel));
-
- if(!aCroppedRectPixel.IsEmpty())
- {
- // as maximum for destination, orientate at aOutputRectPixel, but
- // take a rotation of 45 degrees (sqrt(2)) as maximum expansion into account
- const Size aSourceSizePixel(rBitmapEx.GetSizePixel());
- const double fMaximumArea(
- (double)aOutputRectPixel.getWidth() *
- (double)aOutputRectPixel.getHeight() *
- 1.4142136); // 1.4142136 taken as sqrt(2.0)
-
- // test if discrete view size (pixel) maybe too big and limit it
- const double fArea(aCroppedRectPixel.getWidth() * aCroppedRectPixel.getHeight());
- const bool bNeedToReduce(fArea > fMaximumArea);
- double fReduceFactor(1.0);
- const Size aDestSizePixel(aCroppedRectPixel.GetSize());
-
- if(bNeedToReduce)
- {
- fReduceFactor = sqrt(fMaximumArea / fArea);
- aCroppedRectPixel.setWidth(basegfx::fround(aCroppedRectPixel.getWidth() * fReduceFactor));
- aCroppedRectPixel.setHeight(basegfx::fround(aCroppedRectPixel.getHeight() * fReduceFactor));
- }
-
- // build transform from pixel in aDestination to pixel in rBitmapEx
- // from relative in aCroppedRectPixel to relative in aDestRectPixel
- // No need to take bNeedToReduce into account, TopLeft is unchanged
- basegfx::B2DHomMatrix aTransform(basegfx::tools::createTranslateB2DHomMatrix(
- aCroppedRectPixel.Left() - aDestRectPixel.Left(),
- aCroppedRectPixel.Top() - aDestRectPixel.Top()));
-
- // from relative in aDestRectPixel to absolute Logic. Here it
- // is essential to adapt to reduce factor (if used)
- double fAdaptedDRPWidth((double)aDestRectPixel.getWidth());
- double fAdaptedDRPHeight((double)aDestRectPixel.getHeight());
-
- if(bNeedToReduce)
- {
- fAdaptedDRPWidth *= fReduceFactor;
- fAdaptedDRPHeight *= fReduceFactor;
- }
-
- aTransform = basegfx::tools::createScaleTranslateB2DHomMatrix(
- aDestRectLogic.getWidth() / fAdaptedDRPWidth, aDestRectLogic.getHeight() / fAdaptedDRPHeight,
- aDestRectLogic.Left(), aDestRectLogic.Top())
- * aTransform;
-
- // from absolute in Logic to unified object coordinates (0.0 .. 1.0 in x and y)
- basegfx::B2DHomMatrix aInvBitmapTransform(rTransform);
- aInvBitmapTransform.invert();
- aTransform = aInvBitmapTransform * aTransform;
-
- // from unit object coordinates to rBitmapEx pixel coordintes
- aTransform.scale(aSourceSizePixel.getWidth() - 1L, aSourceSizePixel.getHeight() - 1L);
-
- // create bitmap using source, destination and linear back-transformation
- BitmapEx aDestination = impTransformBitmapEx(rBitmapEx, aCroppedRectPixel, aTransform);
-
- // paint
- if(bNeedToReduce)
- {
- // paint in target size
- if(bRecordToMetaFile)
- {
- rOutDev.DrawBitmapEx(
- rOutDev.PixelToLogic(aCroppedRectPixel.TopLeft()),
- rOutDev.PixelToLogic(aDestSizePixel),
- aDestination);
- }
- else
- {
- const bool bWasEnabled(rOutDev.IsMapModeEnabled());
- rOutDev.EnableMapMode(false);
-
- rOutDev.DrawBitmapEx(
- aCroppedRectPixel.TopLeft(),
- aDestSizePixel,
- aDestination);
-
- rOutDev.EnableMapMode(bWasEnabled);
- }
- }
- else
- {
- if(bRecordToMetaFile)
- {
- rOutDev.DrawBitmapEx(
- rOutDev.PixelToLogic(aCroppedRectPixel.TopLeft()),
- aDestination);
- }
- else
- {
- const bool bWasEnabled(rOutDev.IsMapModeEnabled());
- rOutDev.EnableMapMode(false);
-
- rOutDev.DrawBitmapEx(
- aCroppedRectPixel.TopLeft(),
- aDestination);
-
- rOutDev.EnableMapMode(bWasEnabled);
- }
- }
- }
- }
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/processor2d/vclhelperbitmaprender.hxx b/drawinglayer/source/processor2d/vclhelperbitmaprender.hxx
deleted file mode 100644
index 674c578cbf..0000000000
--- a/drawinglayer/source/processor2d/vclhelperbitmaprender.hxx
+++ /dev/null
@@ -1,69 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_PROCESSOR2D_VCLHELPERBITMAPRENDER_HXX
-#define INCLUDED_DRAWINGLAYER_PROCESSOR2D_VCLHELPERBITMAPRENDER_HXX
-
-#include <sal/types.h>
-
-//////////////////////////////////////////////////////////////////////////////
-// predefines
-
-class OutputDevice;
-class BitmapEx;
-namespace basegfx { class B2DHomMatrix; }
-
-//////////////////////////////////////////////////////////////////////////////
-// support methods for vcl direct gradient renderering
-
-namespace drawinglayer
-{
- void RenderBitmapPrimitive2D_GraphicManager(
- OutputDevice& rOutDev,
- const BitmapEx& rBitmapEx,
- const basegfx::B2DHomMatrix& rTransform);
-
- void RenderBitmapPrimitive2D_BitmapEx(
- OutputDevice& rOutDev,
- const BitmapEx& rBitmapEx,
- const basegfx::B2DHomMatrix& rTransform);
-
- void RenderBitmapPrimitive2D_self(
- OutputDevice& rOutDev,
- const BitmapEx& rBitmapEx,
- const basegfx::B2DHomMatrix& rTransform);
-
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif // INCLUDED_DRAWINGLAYER_PROCESSOR2D_VCLHELPERBITMAPRENDER_HXX
-
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/processor2d/vclhelperbitmaptransform.cxx b/drawinglayer/source/processor2d/vclhelperbitmaptransform.cxx
deleted file mode 100644
index 0676aabc04..0000000000
--- a/drawinglayer/source/processor2d/vclhelperbitmaptransform.cxx
+++ /dev/null
@@ -1,434 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <vclhelperbitmaptransform.hxx>
-#include <vcl/bmpacc.hxx>
-#include <basegfx/point/b2dpoint.hxx>
-#include <basegfx/color/bcolormodifier.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-// support for rendering Bitmap and BitmapEx contents
-
-namespace drawinglayer
-{
- namespace
- {
- void impSmoothPoint(BitmapColor& rValue, const basegfx::B2DPoint& rSource, sal_Int32 nIntX, sal_Int32 nIntY, BitmapReadAccess& rRead)
- {
- double fDeltaX(rSource.getX() - nIntX);
- double fDeltaY(rSource.getY() - nIntY);
- sal_Int32 nIndX(0L);
- sal_Int32 nIndY(0L);
-
- if(fDeltaX > 0.0 && nIntX + 1L < rRead.Width())
- {
- nIndX++;
- }
- else if(fDeltaX < 0.0 && nIntX >= 1L)
- {
- fDeltaX = -fDeltaX;
- nIndX--;
- }
-
- if(fDeltaY > 0.0 && nIntY + 1L < rRead.Height())
- {
- nIndY++;
- }
- else if(fDeltaY < 0.0 && nIntY >= 1L)
- {
- fDeltaY = -fDeltaY;
- nIndY--;
- }
-
- if(nIndX || nIndY)
- {
- const double fColorToReal(1.0 / 255.0);
- double fR(rValue.GetRed() * fColorToReal);
- double fG(rValue.GetGreen() * fColorToReal);
- double fB(rValue.GetBlue() * fColorToReal);
- double fRBottom(0.0), fGBottom(0.0), fBBottom(0.0);
-
- if(nIndX)
- {
- const double fMulA(fDeltaX * fColorToReal);
- double fMulB(1.0 - fDeltaX);
- const BitmapColor aTopPartner(rRead.GetColor(nIntY, nIntX + nIndX));
-
- fR = (fR * fMulB) + (aTopPartner.GetRed() * fMulA);
- fG = (fG * fMulB) + (aTopPartner.GetGreen() * fMulA);
- fB = (fB * fMulB) + (aTopPartner.GetBlue() * fMulA);
-
- if(nIndY)
- {
- fMulB *= fColorToReal;
- const BitmapColor aBottom(rRead.GetColor(nIntY + nIndY, nIntX));
- const BitmapColor aBottomPartner(rRead.GetColor(nIntY + nIndY, nIntX + nIndX));
-
- fRBottom = (aBottom.GetRed() * fMulB) + (aBottomPartner.GetRed() * fMulA);
- fGBottom = (aBottom.GetGreen() * fMulB) + (aBottomPartner.GetGreen() * fMulA);
- fBBottom = (aBottom.GetBlue() * fMulB) + (aBottomPartner.GetBlue() * fMulA);
- }
- }
-
- if(nIndY)
- {
- if(!nIndX)
- {
- const BitmapColor aBottom(rRead.GetColor(nIntY + nIndY, nIntX));
-
- fRBottom = aBottom.GetRed() * fColorToReal;
- fGBottom = aBottom.GetGreen() * fColorToReal;
- fBBottom = aBottom.GetBlue() * fColorToReal;
- }
-
- const double fMulB(1.0 - fDeltaY);
-
- fR = (fR * fMulB) + (fRBottom * fDeltaY);
- fG = (fG * fMulB) + (fGBottom * fDeltaY);
- fB = (fB * fMulB) + (fBBottom * fDeltaY);
- }
-
- rValue.SetRed((sal_uInt8)(fR * 255.0));
- rValue.SetGreen((sal_uInt8)(fG * 255.0));
- rValue.SetBlue((sal_uInt8)(fB * 255.0));
- }
- }
-
- void impSmoothIndex(BitmapColor& rValue, const basegfx::B2DPoint& rSource, sal_Int32 nIntX, sal_Int32 nIntY, BitmapReadAccess& rRead)
- {
- double fDeltaX(rSource.getX() - nIntX);
- double fDeltaY(rSource.getY() - nIntY);
- sal_Int32 nIndX(0L);
- sal_Int32 nIndY(0L);
-
- if(fDeltaX > 0.0 && nIntX + 1L < rRead.Width())
- {
- nIndX++;
- }
- else if(fDeltaX < 0.0 && nIntX >= 1L)
- {
- fDeltaX = -fDeltaX;
- nIndX--;
- }
-
- if(fDeltaY > 0.0 && nIntY + 1L < rRead.Height())
- {
- nIndY++;
- }
- else if(fDeltaY < 0.0 && nIntY >= 1L)
- {
- fDeltaY = -fDeltaY;
- nIndY--;
- }
-
- if(nIndX || nIndY)
- {
- const double fColorToReal(1.0 / 255.0);
- double fVal(rValue.GetIndex() * fColorToReal);
- double fValBottom(0.0);
-
- if(nIndX)
- {
- const double fMulA(fDeltaX * fColorToReal);
- double fMulB(1.0 - fDeltaX);
- const BitmapColor aTopPartner(rRead.GetPixel(nIntY, nIntX + nIndX));
-
- fVal = (fVal * fMulB) + (aTopPartner.GetIndex() * fMulA);
-
- if(nIndY)
- {
- fMulB *= fColorToReal;
- const BitmapColor aBottom(rRead.GetPixel(nIntY + nIndY, nIntX));
- const BitmapColor aBottomPartner(rRead.GetPixel(nIntY + nIndY, nIntX + nIndX));
-
- fValBottom = (aBottom.GetIndex() * fMulB) + (aBottomPartner.GetIndex() * fMulA);
- }
- }
-
- if(nIndY)
- {
- if(!nIndX)
- {
- const BitmapColor aBottom(rRead.GetPixel(nIntY + nIndY, nIntX));
-
- fValBottom = aBottom.GetIndex() * fColorToReal;
- }
-
- const double fMulB(1.0 - fDeltaY);
-
- fVal = (fVal * fMulB) + (fValBottom * fDeltaY);
- }
-
- rValue.SetIndex((sal_uInt8)(fVal * 255.0));
- }
- }
-
- void impTransformBitmap(const Bitmap& rSource, Bitmap& rDestination, const basegfx::B2DHomMatrix& rTransform, bool bSmooth)
- {
- BitmapWriteAccess* pWrite = rDestination.AcquireWriteAccess();
-
- if(pWrite)
- {
- const Size aContentSizePixel(rSource.GetSizePixel());
- BitmapReadAccess* pRead = (const_cast< Bitmap& >(rSource)).AcquireReadAccess();
-
- if(pRead)
- {
- const Size aDestinationSizePixel(rDestination.GetSizePixel());
- bool bWorkWithIndex(rDestination.GetBitCount() <= 8);
- BitmapColor aOutside(pRead->GetBestMatchingColor(BitmapColor(0xff, 0xff, 0xff)));
-
- for(sal_Int32 y(0L); y < aDestinationSizePixel.getHeight(); y++)
- {
- for(sal_Int32 x(0L); x < aDestinationSizePixel.getWidth(); x++)
- {
- const basegfx::B2DPoint aSourceCoor(rTransform * basegfx::B2DPoint(x, y));
- const sal_Int32 nIntX(basegfx::fround(aSourceCoor.getX()));
-
- if(nIntX >= 0L && nIntX < aContentSizePixel.getWidth())
- {
- const sal_Int32 nIntY(basegfx::fround(aSourceCoor.getY()));
-
- if(nIntY >= 0L && nIntY < aContentSizePixel.getHeight())
- {
- if(bWorkWithIndex)
- {
- BitmapColor aValue(pRead->GetPixel(nIntY, nIntX));
-
- if(bSmooth)
- {
- impSmoothIndex(aValue, aSourceCoor, nIntX, nIntY, *pRead);
- }
-
- pWrite->SetPixel(y, x, aValue);
- }
- else
- {
- BitmapColor aValue(pRead->GetColor(nIntY, nIntX));
-
- if(bSmooth)
- {
- impSmoothPoint(aValue, aSourceCoor, nIntX, nIntY, *pRead);
- }
-
- pWrite->SetPixel(y, x, aValue.IsIndex() ? aValue : pWrite->GetBestMatchingColor(aValue));
- }
-
- continue;
- }
- }
-
- // here are outside pixels. Complete mask
- if(bWorkWithIndex)
- {
- pWrite->SetPixel(y, x, aOutside);
- }
- }
- }
-
- delete pRead;
- }
-
- delete pWrite;
- }
- }
-
- Bitmap impCreateEmptyBitmapWithPattern(const Bitmap& rSource, const Size& aTargetSizePixel)
- {
- Bitmap aRetval;
- BitmapReadAccess* pReadAccess = (const_cast< Bitmap& >(rSource)).AcquireReadAccess();
-
- if(pReadAccess)
- {
- if(rSource.GetBitCount() <= 8)
- {
- BitmapPalette aPalette(pReadAccess->GetPalette());
- aRetval = Bitmap(aTargetSizePixel, rSource.GetBitCount(), &aPalette);
- }
- else
- {
- aRetval = Bitmap(aTargetSizePixel, rSource.GetBitCount());
- }
-
- delete pReadAccess;
- }
-
- return aRetval;
- }
- } // end of anonymous namespace
-} // end of namespace drawinglayer
-
-namespace drawinglayer
-{
- BitmapEx impTransformBitmapEx(
- const BitmapEx& rSource,
- const Rectangle& rCroppedRectPixel,
- const basegfx::B2DHomMatrix& rTransform)
- {
- // force destination to 24 bit, we want to smooth output
- const Size aDestinationSize(rCroppedRectPixel.GetSize());
- Bitmap aDestination(impCreateEmptyBitmapWithPattern(rSource.GetBitmap(), aDestinationSize));
- static bool bDoSmoothAtAll(true);
- impTransformBitmap(rSource.GetBitmap(), aDestination, rTransform, bDoSmoothAtAll);
-
- // create mask
- if(rSource.IsTransparent())
- {
- if(rSource.IsAlpha())
- {
- Bitmap aAlpha(impCreateEmptyBitmapWithPattern(rSource.GetAlpha().GetBitmap(), aDestinationSize));
- impTransformBitmap(rSource.GetAlpha().GetBitmap(), aAlpha, rTransform, bDoSmoothAtAll);
- return BitmapEx(aDestination, AlphaMask(aAlpha));
- }
- else
- {
- Bitmap aMask(impCreateEmptyBitmapWithPattern(rSource.GetMask(), aDestinationSize));
- impTransformBitmap(rSource.GetMask(), aMask, rTransform, false);
- return BitmapEx(aDestination, aMask);
- }
- }
-
- return BitmapEx(aDestination);
- }
-
- BitmapEx impModifyBitmapEx(
- const basegfx::BColorModifierStack& rBColorModifierStack,
- const BitmapEx& rSource)
- {
- Bitmap aChangedBitmap(rSource.GetBitmap());
- bool bDone(false);
-
- for(sal_uInt32 a(rBColorModifierStack.count()); a && !bDone; )
- {
- const basegfx::BColorModifier& rModifier = rBColorModifierStack.getBColorModifier(--a);
-
- switch(rModifier.getMode())
- {
- case basegfx::BCOLORMODIFYMODE_REPLACE :
- {
- // complete replace
- if(rSource.IsTransparent())
- {
- // clear bitmap with dest color
- if(aChangedBitmap.GetBitCount() <= 8)
- {
- // do NOT use erase; for e.g. 8bit Bitmaps, the nearest color to the given
- // erase color is determined and used -> this may be different from what is
- // wanted here. Better create a new bitmap with the needed color explicitely
- BitmapReadAccess* pReadAccess = aChangedBitmap.AcquireReadAccess();
- OSL_ENSURE(pReadAccess, "Got no Bitmap ReadAccess ?!?");
-
- if(pReadAccess)
- {
- BitmapPalette aNewPalette(pReadAccess->GetPalette());
- aNewPalette[0] = BitmapColor(Color(rModifier.getBColor()));
- aChangedBitmap = Bitmap(
- aChangedBitmap.GetSizePixel(),
- aChangedBitmap.GetBitCount(),
- &aNewPalette);
- delete pReadAccess;
- }
- }
- else
- {
- aChangedBitmap.Erase(Color(rModifier.getBColor()));
- }
- }
- else
- {
- // erase bitmap, caller will know to paint direct
- aChangedBitmap.SetEmpty();
- }
-
- bDone = true;
- break;
- }
-
- default : // BCOLORMODIFYMODE_INTERPOLATE, BCOLORMODIFYMODE_GRAY, BCOLORMODIFYMODE_BLACKANDWHITE
- {
- BitmapWriteAccess* pContent = aChangedBitmap.AcquireWriteAccess();
-
- if(pContent)
- {
- const double fConvertColor(1.0 / 255.0);
-
- for(sal_uInt32 y(0L); y < (sal_uInt32)pContent->Height(); y++)
- {
- for(sal_uInt32 x(0L); x < (sal_uInt32)pContent->Width(); x++)
- {
- const BitmapColor aBMCol(pContent->GetColor(y, x));
- const basegfx::BColor aBSource(
- (double)aBMCol.GetRed() * fConvertColor,
- (double)aBMCol.GetGreen() * fConvertColor,
- (double)aBMCol.GetBlue() * fConvertColor);
- const basegfx::BColor aBDest(rModifier.getModifiedColor(aBSource));
-
- pContent->SetPixel(y, x, BitmapColor(Color(aBDest)));
- }
- }
-
- delete pContent;
- }
-
- break;
- }
- }
- }
-
- if(aChangedBitmap.IsEmpty())
- {
- return BitmapEx();
- }
- else
- {
- if(rSource.IsTransparent())
- {
- if(rSource.IsAlpha())
- {
- return BitmapEx(aChangedBitmap, rSource.GetAlpha());
- }
- else
- {
- return BitmapEx(aChangedBitmap, rSource.GetMask());
- }
- }
- else
- {
- return BitmapEx(aChangedBitmap);
- }
- }
- }
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/processor2d/vclhelperbitmaptransform.hxx b/drawinglayer/source/processor2d/vclhelperbitmaptransform.hxx
deleted file mode 100644
index 4362ea66e5..0000000000
--- a/drawinglayer/source/processor2d/vclhelperbitmaptransform.hxx
+++ /dev/null
@@ -1,63 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_PROCESSOR2D_VCLHELPERBITMAPTRANSFORM_HXX
-#define INCLUDED_DRAWINGLAYER_PROCESSOR2D_VCLHELPERBITMAPTRANSFORM_HXX
-
-#include <vcl/bitmapex.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-// predefines
-
-namespace basegfx {
- class B2DHomMatrix;
- class BColorModifierStack;
-}
-
-//////////////////////////////////////////////////////////////////////////////
-// support methods for vcl direct gradient renderering
-
-namespace drawinglayer
-{
- BitmapEx impTransformBitmapEx(
- const BitmapEx& rSource,
- const Rectangle& rCroppedRectPixel,
- const basegfx::B2DHomMatrix& rTransform);
-
- BitmapEx impModifyBitmapEx(
- const basegfx::BColorModifierStack& rBColorModifierStack,
- const BitmapEx& rSource);
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif // INCLUDED_DRAWINGLAYER_PROCESSOR2D_VCLHELPERBITMAPTRANSFORM_HXX
-
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/processor2d/vclhelperbufferdevice.cxx b/drawinglayer/source/processor2d/vclhelperbufferdevice.cxx
deleted file mode 100644
index e3bec6802c..0000000000
--- a/drawinglayer/source/processor2d/vclhelperbufferdevice.cxx
+++ /dev/null
@@ -1,166 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <vclhelperbufferdevice.hxx>
-#include <basegfx/range/b2drange.hxx>
-#include <vcl/bitmapex.hxx>
-#include <basegfx/matrix/b2dhommatrix.hxx>
-#include <tools/stream.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-// support for rendering Bitmap and BitmapEx contents
-
-namespace drawinglayer
-{
- impBufferDevice::impBufferDevice(
- OutputDevice& rOutDev,
- const basegfx::B2DRange& rRange,
- bool bAddOffsetToMapping)
- : mrOutDev(rOutDev),
- maContent(rOutDev),
- mpMask(0L),
- mpAlpha(0L)
- {
- basegfx::B2DRange aRangePixel(rRange);
- aRangePixel.transform(rOutDev.GetViewTransformation());
- const Rectangle aRectPixel(
- (sal_Int32)floor(aRangePixel.getMinX()), (sal_Int32)floor(aRangePixel.getMinY()),
- (sal_Int32)ceil(aRangePixel.getMaxX()), (sal_Int32)ceil(aRangePixel.getMaxY()));
- const Point aEmptyPoint;
- maDestPixel = Rectangle(aEmptyPoint, rOutDev.GetOutputSizePixel());
- maDestPixel.Intersection(aRectPixel);
-
- if(isVisible())
- {
- maContent.SetOutputSizePixel(maDestPixel.GetSize(), false);
-
- // #i93485# assert when copying from window to VDev is used
- OSL_ENSURE(rOutDev.GetOutDevType() != OUTDEV_WINDOW,
- "impBufferDevice render helper: Copying from Window to VDev, this should be avoided (!)");
-
- const bool bWasEnabledSrc(rOutDev.IsMapModeEnabled());
- rOutDev.EnableMapMode(false);
- maContent.DrawOutDev(aEmptyPoint, maDestPixel.GetSize(), maDestPixel.TopLeft(), maDestPixel.GetSize(), rOutDev);
- rOutDev.EnableMapMode(bWasEnabledSrc);
-
- MapMode aNewMapMode(rOutDev.GetMapMode());
-
- if(bAddOffsetToMapping)
- {
- const Point aLogicTopLeft(rOutDev.PixelToLogic(maDestPixel.TopLeft()));
- aNewMapMode.SetOrigin(Point(-aLogicTopLeft.X(), -aLogicTopLeft.Y()));
- }
-
- maContent.SetMapMode(aNewMapMode);
-
- // copy AA flag for new target
- maContent.SetAntialiasing(mrOutDev.GetAntialiasing());
- }
- }
-
- impBufferDevice::~impBufferDevice()
- {
- delete mpMask;
- delete mpAlpha;
- }
-
- void impBufferDevice::paint(double fTrans)
- {
- const Point aEmptyPoint;
- const Size aSizePixel(maContent.GetOutputSizePixel());
- const bool bWasEnabledDst(mrOutDev.IsMapModeEnabled());
-
- mrOutDev.EnableMapMode(false);
- maContent.EnableMapMode(false);
- Bitmap aContent(maContent.GetBitmap(aEmptyPoint, aSizePixel));
-
- if(mpAlpha)
- {
- mpAlpha->EnableMapMode(false);
- const AlphaMask aAlphaMask(mpAlpha->GetBitmap(aEmptyPoint, aSizePixel));
-
- mrOutDev.DrawBitmapEx(maDestPixel.TopLeft(), BitmapEx(aContent, aAlphaMask));
- }
- else if(mpMask)
- {
- mpMask->EnableMapMode(false);
- const Bitmap aMask(mpMask->GetBitmap(aEmptyPoint, aSizePixel));
-
- mrOutDev.DrawBitmapEx(maDestPixel.TopLeft(), BitmapEx(aContent, aMask));
- }
- else if(0.0 != fTrans)
- {
- sal_uInt8 nMaskValue((sal_uInt8)basegfx::fround(fTrans * 255.0));
- const AlphaMask aAlphaMask(aSizePixel, &nMaskValue);
- mrOutDev.DrawBitmapEx(maDestPixel.TopLeft(), BitmapEx(aContent, aAlphaMask));
- }
- else
- {
- mrOutDev.DrawBitmap(maDestPixel.TopLeft(), aContent);
- }
-
- mrOutDev.EnableMapMode(bWasEnabledDst);
- }
-
- VirtualDevice& impBufferDevice::getMask()
- {
- if(!mpMask)
- {
- mpMask = new VirtualDevice(mrOutDev, 1);
- mpMask->SetOutputSizePixel(maDestPixel.GetSize(), true);
- mpMask->SetMapMode(maContent.GetMapMode());
-
- // do NOT copy AA flag for mask!
- }
-
- return *mpMask;
- }
-
- VirtualDevice& impBufferDevice::getTransparence()
- {
- if(!mpAlpha)
- {
- mpAlpha = new VirtualDevice();
- mpAlpha->SetOutputSizePixel(maDestPixel.GetSize(), true);
- mpAlpha->SetMapMode(maContent.GetMapMode());
-
- // copy AA flag for new target; masking needs to be smooth
- mpAlpha->SetAntialiasing(maContent.GetAntialiasing());
- }
-
- return *mpAlpha;
- }
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/processor2d/vclhelperbufferdevice.hxx b/drawinglayer/source/processor2d/vclhelperbufferdevice.hxx
deleted file mode 100644
index 21cf3f4fb6..0000000000
--- a/drawinglayer/source/processor2d/vclhelperbufferdevice.hxx
+++ /dev/null
@@ -1,73 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_PROCESSOR2D_VCLHELPERBUFFERDEVICE_HXX
-#define INCLUDED_DRAWINGLAYER_PROCESSOR2D_VCLHELPERBUFFERDEVICE_HXX
-
-#include <vcl/virdev.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-// predefines
-
-namespace basegfx { class B2DRange; }
-
-//////////////////////////////////////////////////////////////////////////////
-// support methods for vcl direct gradient renderering
-
-namespace drawinglayer
-{
- class impBufferDevice
- {
- OutputDevice& mrOutDev;
- VirtualDevice maContent;
- VirtualDevice* mpMask;
- VirtualDevice* mpAlpha;
- Rectangle maDestPixel;
-
- public:
- impBufferDevice(
- OutputDevice& rOutDev,
- const basegfx::B2DRange& rRange,
- bool bAddOffsetToMapping);
- ~impBufferDevice();
-
- void paint(double fTrans = 0.0);
- bool isVisible() const { return !maDestPixel.IsEmpty(); }
- VirtualDevice& getContent() { return maContent; }
- VirtualDevice& getMask();
- VirtualDevice& getTransparence();
- };
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif // INCLUDED_DRAWINGLAYER_PROCESSOR2D_VCLHELPERBUFFERDEVICE_HXX
-
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/processor2d/vclhelpergradient.cxx b/drawinglayer/source/processor2d/vclhelpergradient.cxx
deleted file mode 100644
index 46786d72f3..0000000000
--- a/drawinglayer/source/processor2d/vclhelpergradient.cxx
+++ /dev/null
@@ -1,288 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <vclhelpergradient.hxx>
-#include <basegfx/range/b2drange.hxx>
-#include <vcl/outdev.hxx>
-#include <basegfx/polygon/b2dpolygon.hxx>
-#include <basegfx/polygon/b2dpolypolygontools.hxx>
-#include <basegfx/polygon/b2dpolygontools.hxx>
-#include <drawinglayer/texture/texture.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-// support methods for vcl direct gradient renderering
-
-namespace drawinglayer
-{
- namespace
- {
- sal_uInt32 impCalcGradientSteps(OutputDevice& rOutDev, sal_uInt32 nSteps, const basegfx::B2DRange& rRange, sal_uInt32 nMaxDist)
- {
- if(nSteps == 0L)
- {
- const Size aSize(rOutDev.LogicToPixel(Size(basegfx::fround(rRange.getWidth()), basegfx::fround(rRange.getHeight()))));
- nSteps = (aSize.getWidth() + aSize.getHeight()) >> 3L;
- }
-
- if(nSteps < 2L)
- {
- nSteps = 2L;
- }
-
- if(nSteps > nMaxDist)
- {
- nSteps = nMaxDist;
- }
-
- return nSteps;
- }
-
- void impDrawGradientToOutDevSimple(
- OutputDevice& rOutDev,
- const basegfx::B2DPolyPolygon& rTargetForm,
- const ::std::vector< basegfx::B2DHomMatrix >& rMatrices,
- const ::std::vector< basegfx::BColor >& rColors,
- const basegfx::B2DPolygon& rUnitPolygon)
- {
- rOutDev.SetLineColor();
-
- for(sal_uInt32 a(0L); a < rColors.size(); a++)
- {
- // set correct color
- const basegfx::BColor aFillColor(rColors[a]);
- rOutDev.SetFillColor(Color(aFillColor));
-
- if(a)
- {
- if(a - 1L < static_cast< sal_uInt32 >(rMatrices.size()))
- {
- basegfx::B2DPolygon aNewPoly(rUnitPolygon);
- aNewPoly.transform(rMatrices[a - 1L]);
- rOutDev.DrawPolygon(aNewPoly);
- }
- }
- else
- {
- rOutDev.DrawPolyPolygon(rTargetForm);
- }
- }
- }
-
- void impDrawGradientToOutDevComplex(
- OutputDevice& rOutDev,
- const basegfx::B2DPolyPolygon& rTargetForm,
- const ::std::vector< basegfx::B2DHomMatrix >& rMatrices,
- const ::std::vector< basegfx::BColor >& rColors,
- const basegfx::B2DPolygon& rUnitPolygon)
- {
- PolyPolygon aVclTargetForm(rTargetForm);
- ::std::vector< Polygon > aVclPolygons;
- sal_uInt32 a;
-
- // remember and set to XOR
- rOutDev.SetLineColor();
- rOutDev.Push(PUSH_RASTEROP);
- rOutDev.SetRasterOp(ROP_XOR);
-
- // draw gradient PolyPolygons
- for(a = 0L; a < rMatrices.size(); a++)
- {
- // create polygon and remember
- basegfx::B2DPolygon aNewPoly(rUnitPolygon);
- aNewPoly.transform(rMatrices[a]);
- aVclPolygons.push_back(Polygon(aNewPoly));
-
- // set correct color
- if(rColors.size() > a)
- {
- const basegfx::BColor aFillColor(rColors[a]);
- rOutDev.SetFillColor(Color(aFillColor));
- }
-
- // create vcl PolyPolygon and draw it
- if(a)
- {
- PolyPolygon aVclPolyPoly(aVclPolygons[a - 1L]);
- aVclPolyPoly.Insert(aVclPolygons[a]);
- rOutDev.DrawPolyPolygon(aVclPolyPoly);
- }
- else
- {
- PolyPolygon aVclPolyPoly(aVclTargetForm);
- aVclPolyPoly.Insert(aVclPolygons[0L]);
- rOutDev.DrawPolyPolygon(aVclPolyPoly);
- }
- }
-
- // draw last poly in last color
- if(rColors.size())
- {
- const basegfx::BColor aFillColor(rColors[rColors.size() - 1L]);
- rOutDev.SetFillColor(Color(aFillColor));
- rOutDev.DrawPolygon(aVclPolygons[aVclPolygons.size() - 1L]);
- }
-
- // draw object form in black and go back to XOR
- rOutDev.SetFillColor(COL_BLACK);
- rOutDev.SetRasterOp(ROP_0);
- rOutDev.DrawPolyPolygon(aVclTargetForm);
- rOutDev.SetRasterOp(ROP_XOR);
-
- // draw gradient PolyPolygons again
- for(a = 0L; a < rMatrices.size(); a++)
- {
- // set correct color
- if(rColors.size() > a)
- {
- const basegfx::BColor aFillColor(rColors[a]);
- rOutDev.SetFillColor(Color(aFillColor));
- }
-
- // create vcl PolyPolygon and draw it
- if(a)
- {
- PolyPolygon aVclPolyPoly(aVclPolygons[a - 1L]);
- aVclPolyPoly.Insert(aVclPolygons[a]);
- rOutDev.DrawPolyPolygon(aVclPolyPoly);
- }
- else
- {
- PolyPolygon aVclPolyPoly(aVclTargetForm);
- aVclPolyPoly.Insert(aVclPolygons[0L]);
- rOutDev.DrawPolyPolygon(aVclPolyPoly);
- }
- }
-
- // draw last poly in last color
- if(rColors.size())
- {
- const basegfx::BColor aFillColor(rColors[rColors.size() - 1L]);
- rOutDev.SetFillColor(Color(aFillColor));
- rOutDev.DrawPolygon(aVclPolygons[aVclPolygons.size() - 1L]);
- }
-
- // reset drawmode
- rOutDev.Pop();
- }
- } // end of anonymous namespace
-} // end of namespace drawinglayer
-
-namespace drawinglayer
-{
- void impDrawGradientToOutDev(
- OutputDevice& rOutDev,
- const basegfx::B2DPolyPolygon& rTargetForm,
- attribute::GradientStyle eGradientStyle,
- sal_uInt32 nSteps,
- const basegfx::BColor& rStart,
- const basegfx::BColor& rEnd,
- double fBorder, double fAngle, double fOffsetX, double fOffsetY, bool bSimple)
- {
- const basegfx::B2DRange aOutlineRange(basegfx::tools::getRange(rTargetForm));
- ::std::vector< basegfx::B2DHomMatrix > aMatrices;
- ::std::vector< basegfx::BColor > aColors;
- basegfx::B2DPolygon aUnitPolygon;
-
- // make sure steps is not too high/low
- nSteps = impCalcGradientSteps(rOutDev, nSteps, aOutlineRange, sal_uInt32((rStart.getMaximumDistance(rEnd) * 127.5) + 0.5));
-
- // create geometries
- switch(eGradientStyle)
- {
- case attribute::GRADIENTSTYLE_LINEAR:
- {
- texture::GeoTexSvxGradientLinear aGradient(aOutlineRange, rStart, rEnd, nSteps, fBorder, fAngle);
- aGradient.appendTransformations(aMatrices);
- aGradient.appendColors(aColors);
- aUnitPolygon = basegfx::tools::createUnitPolygon();
- break;
- }
- case attribute::GRADIENTSTYLE_AXIAL:
- {
- texture::GeoTexSvxGradientAxial aGradient(aOutlineRange, rStart, rEnd, nSteps, fBorder, fAngle);
- aGradient.appendTransformations(aMatrices);
- aGradient.appendColors(aColors);
- aUnitPolygon = basegfx::tools::createPolygonFromRect(basegfx::B2DRange(-1, -1, 1, 1));
- break;
- }
- case attribute::GRADIENTSTYLE_RADIAL:
- {
- texture::GeoTexSvxGradientRadial aGradient(aOutlineRange, rStart, rEnd, nSteps, fBorder, fOffsetX, fOffsetY);
- aGradient.appendTransformations(aMatrices);
- aGradient.appendColors(aColors);
- aUnitPolygon = basegfx::tools::createPolygonFromCircle(basegfx::B2DPoint(0,0), 1);
- break;
- }
- case attribute::GRADIENTSTYLE_ELLIPTICAL:
- {
- texture::GeoTexSvxGradientElliptical aGradient(aOutlineRange, rStart, rEnd, nSteps, fBorder, fOffsetX, fOffsetX, fAngle);
- aGradient.appendTransformations(aMatrices);
- aGradient.appendColors(aColors);
- aUnitPolygon = basegfx::tools::createPolygonFromCircle(basegfx::B2DPoint(0,0), 1);
- break;
- }
- case attribute::GRADIENTSTYLE_SQUARE:
- {
- texture::GeoTexSvxGradientSquare aGradient(aOutlineRange, rStart, rEnd, nSteps, fBorder, fOffsetX, fOffsetX, fAngle);
- aGradient.appendTransformations(aMatrices);
- aGradient.appendColors(aColors);
- aUnitPolygon = basegfx::tools::createPolygonFromRect(basegfx::B2DRange(-1, -1, 1, 1));
- break;
- }
- case attribute::GRADIENTSTYLE_RECT:
- {
- texture::GeoTexSvxGradientRect aGradient(aOutlineRange, rStart, rEnd, nSteps, fBorder, fOffsetX, fOffsetX, fAngle);
- aGradient.appendTransformations(aMatrices);
- aGradient.appendColors(aColors);
- aUnitPolygon = basegfx::tools::createPolygonFromRect(basegfx::B2DRange(-1, -1, 1, 1));
- break;
- }
- }
-
- // paint them with mask using the XOR method
- if(aMatrices.size())
- {
- if(bSimple)
- {
- impDrawGradientToOutDevSimple(rOutDev, rTargetForm, aMatrices, aColors, aUnitPolygon);
- }
- else
- {
- impDrawGradientToOutDevComplex(rOutDev, rTargetForm, aMatrices, aColors, aUnitPolygon);
- }
- }
- }
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/processor2d/vclhelpergradient.hxx b/drawinglayer/source/processor2d/vclhelpergradient.hxx
deleted file mode 100644
index c47c27829a..0000000000
--- a/drawinglayer/source/processor2d/vclhelpergradient.hxx
+++ /dev/null
@@ -1,65 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_DRAWINGLAYER_PROCESSOR2D_VCLHELPERGRADIENT_HXX
-#define INCLUDED_DRAWINGLAYER_PROCESSOR2D_VCLHELPERGRADIENT_HXX
-
-#include <sal/types.h>
-#include <drawinglayer/attribute/fillgradientattribute.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-// predefines
-
-class OutputDevice;
-namespace basegfx {
- class B2DPolyPolygon;
- class BColor;
-}
-
-//////////////////////////////////////////////////////////////////////////////
-// support methods for vcl direct gradient renderering
-
-namespace drawinglayer
-{
- void impDrawGradientToOutDev(
- OutputDevice& rOutDev,
- const basegfx::B2DPolyPolygon& rTargetForm,
- attribute::GradientStyle eGradientStyle,
- sal_uInt32 nSteps,
- const basegfx::BColor& rStart,
- const basegfx::BColor& rEnd,
- double fBorder, double fAngle, double fOffsetX, double fOffsetY, bool bSimple);
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif // INCLUDED_DRAWINGLAYER_PROCESSOR2D_VCLHELPERGRADIENT_HXX
-
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/processor2d/vclmetafileprocessor2d.cxx b/drawinglayer/source/processor2d/vclmetafileprocessor2d.cxx
deleted file mode 100644
index 7f3c22e269..0000000000
--- a/drawinglayer/source/processor2d/vclmetafileprocessor2d.cxx
+++ /dev/null
@@ -1,2031 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/processor2d/vclmetafileprocessor2d.hxx>
-#include <tools/gen.hxx>
-#include <vcl/virdev.hxx>
-#include <vcl/gdimtf.hxx>
-#include <vcl/gradient.hxx>
-#include <drawinglayer/primitive2d/drawinglayer_primitivetypes2d.hxx>
-#include <drawinglayer/primitive2d/textprimitive2d.hxx>
-#include <drawinglayer/primitive2d/polypolygonprimitive2d.hxx>
-#include <drawinglayer/primitive2d/polygonprimitive2d.hxx>
-#include <drawinglayer/primitive2d/bitmapprimitive2d.hxx>
-#include <drawinglayer/primitive2d/rendergraphicprimitive2d.hxx>
-#include <drawinglayer/primitive2d/metafileprimitive2d.hxx>
-#include <drawinglayer/primitive2d/maskprimitive2d.hxx>
-#include <basegfx/polygon/b2dpolygonclipper.hxx>
-#include <basegfx/polygon/b2dpolypolygontools.hxx>
-#include <drawinglayer/primitive2d/modifiedcolorprimitive2d.hxx>
-#include <drawinglayer/primitive2d/unifiedtransparenceprimitive2d.hxx>
-#include <drawinglayer/primitive2d/transparenceprimitive2d.hxx>
-#include <drawinglayer/primitive2d/fillgradientprimitive2d.hxx>
-#include <drawinglayer/processor2d/vclpixelprocessor2d.hxx>
-#include <tools/stream.hxx>
-#include <drawinglayer/primitive2d/transformprimitive2d.hxx>
-#include <drawinglayer/primitive2d/markerarrayprimitive2d.hxx>
-#include <drawinglayer/primitive2d/pointarrayprimitive2d.hxx>
-#include <vcl/graphictools.hxx>
-#include <vcl/metaact.hxx>
-#include <drawinglayer/primitive2d/texthierarchyprimitive2d.hxx>
-#include <drawinglayer/primitive2d/textdecoratedprimitive2d.hxx>
-#include <comphelper/processfactory.hxx>
-#include <rtl/ustring.hxx>
-#include <com/sun/star/i18n/CharacterIteratorMode.hdl>
-#include <com/sun/star/i18n/WordType.hpp>
-#include <drawinglayer/primitive2d/controlprimitive2d.hxx>
-#include <drawinglayer/primitive2d/graphicprimitive2d.hxx>
-#include <basegfx/polygon/b2dpolygontools.hxx>
-#include <drawinglayer/primitive2d/pagepreviewprimitive2d.hxx>
-#include <helperchartrenderer.hxx>
-#include <drawinglayer/primitive2d/epsprimitive2d.hxx>
-#include <basegfx/polygon/b2dlinegeometry.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-// for PDFExtOutDevData Graphic support
-
-#include <vcl/graph.hxx>
-#include <vcl/svapp.hxx>
-#include <toolkit/helper/formpdfexport.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-// for Control printing
-
-#include <com/sun/star/beans/XPropertySet.hpp>
-
-//////////////////////////////////////////////////////////////////////////////
-// for current chart PrettyPrinting support
-
-#include <drawinglayer/primitive2d/chartprimitive2d.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-// for StructureTagPrimitive support in sd's unomodel.cxx
-
-#include <drawinglayer/primitive2d/structuretagprimitive2d.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-using namespace com::sun::star;
-
-//////////////////////////////////////////////////////////////////////////////
-// #112245# definition for maximum allowed point count due to Metafile target.
-// To be on the safe side with the old tools polygon, use slightly less then
-// the theoretical maximum (bad experiences with tools polygon)
-
-#define MAX_POLYGON_POINT_COUNT_METAFILE (0x0000fff0)
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace
-{
- // #112245# helper to split line polygon in half
- void splitLinePolygon(
- const basegfx::B2DPolygon& rBasePolygon,
- basegfx::B2DPolygon& o_aLeft,
- basegfx::B2DPolygon& o_aRight)
- {
- const sal_uInt32 nCount(rBasePolygon.count());
-
- if(nCount)
- {
- const sal_uInt32 nHalfCount((nCount - 1) >> 1);
-
- o_aLeft = basegfx::B2DPolygon(rBasePolygon, 0, nHalfCount + 1);
- o_aLeft.setClosed(false);
-
- o_aRight = basegfx::B2DPolygon(rBasePolygon, nHalfCount, nCount - nHalfCount);
- o_aRight.setClosed(false);
-
- if(rBasePolygon.isClosed())
- {
- o_aRight.append(rBasePolygon.getB2DPoint(0));
-
- if(rBasePolygon.areControlPointsUsed())
- {
- o_aRight.setControlPoints(
- o_aRight.count() - 1,
- rBasePolygon.getPrevControlPoint(0),
- rBasePolygon.getNextControlPoint(0));
- }
- }
- }
- else
- {
- o_aLeft.clear();
- o_aRight.clear();
- }
- }
-
- // #112245# helper to evtl. split filled polygons to maximum metafile point count
- bool fillPolyPolygonNeededToBeSplit(basegfx::B2DPolyPolygon& rPolyPolygon)
- {
- bool bRetval(false);
- const sal_uInt32 nPolyCount(rPolyPolygon.count());
-
- if(nPolyCount)
- {
- basegfx::B2DPolyPolygon aSplitted;
-
- for(sal_uInt32 a(0); a < nPolyCount; a++)
- {
- const basegfx::B2DPolygon aCandidate(rPolyPolygon.getB2DPolygon(a));
- const sal_uInt32 nPointCount(aCandidate.count());
- bool bNeedToSplit(false);
-
- if(aCandidate.areControlPointsUsed())
- {
- // compare with the maximum for bezier curved polygons
- bNeedToSplit = nPointCount > ((MAX_POLYGON_POINT_COUNT_METAFILE / 3L) - 1L);
- }
- else
- {
- // compare with the maximum for simple point polygons
- bNeedToSplit = nPointCount > (MAX_POLYGON_POINT_COUNT_METAFILE - 1);
- }
-
- if(bNeedToSplit)
- {
- // need to split the partial polygon
- const basegfx::B2DRange aRange(aCandidate.getB2DRange());
- const basegfx::B2DPoint aCenter(aRange.getCenter());
-
- if(aRange.getWidth() > aRange.getHeight())
- {
- // clip in left and right
- const basegfx::B2DPolyPolygon aLeft(
- basegfx::tools::clipPolygonOnParallelAxis(
- aCandidate,
- false,
- true,
- aCenter.getX(),
- false));
- const basegfx::B2DPolyPolygon aRight(
- basegfx::tools::clipPolygonOnParallelAxis(
- aCandidate,
- false,
- false,
- aCenter.getX(),
- false));
-
- aSplitted.append(aLeft);
- aSplitted.append(aRight);
- }
- else
- {
- // clip in top and bottom
- const basegfx::B2DPolyPolygon aTop(
- basegfx::tools::clipPolygonOnParallelAxis(
- aCandidate,
- true,
- true,
- aCenter.getY(),
- false));
- const basegfx::B2DPolyPolygon aBottom(
- basegfx::tools::clipPolygonOnParallelAxis(
- aCandidate,
- true,
- false,
- aCenter.getY(),
- false));
-
- aSplitted.append(aTop);
- aSplitted.append(aBottom);
- }
- }
- else
- {
- aSplitted.append(aCandidate);
- }
- }
-
- if(aSplitted.count() != nPolyCount)
- {
- rPolyPolygon = aSplitted;
- }
- }
-
- return bRetval;
- }
-} // end of anonymous namespace
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace processor2d
- {
- Rectangle VclMetafileProcessor2D::impDumpToMetaFile(
- const primitive2d::Primitive2DSequence& rContent,
- GDIMetaFile& o_rContentMetafile)
- {
- // Prepare VDev, MetaFile and connections
- OutputDevice* pLastOutputDevice = mpOutputDevice;
- GDIMetaFile* pLastMetafile = mpMetaFile;
- basegfx::B2DRange aPrimitiveRange(primitive2d::getB2DRangeFromPrimitive2DSequence(rContent, getViewInformation2D()));
-
- // transform primitive range with current transformation (e.g shadow offset)
- aPrimitiveRange.transform(maCurrentTransformation);
-
- const Rectangle aPrimitiveRectangle(
- basegfx::fround(aPrimitiveRange.getMinX()), basegfx::fround(aPrimitiveRange.getMinY()),
- basegfx::fround(aPrimitiveRange.getMaxX()), basegfx::fround(aPrimitiveRange.getMaxY()));
- VirtualDevice aContentVDev;
- MapMode aNewMapMode(pLastOutputDevice->GetMapMode());
-
- mpOutputDevice = &aContentVDev;
- mpMetaFile = &o_rContentMetafile;
- aContentVDev.EnableOutput(false);
- aContentVDev.SetMapMode(pLastOutputDevice->GetMapMode());
- o_rContentMetafile.Record(&aContentVDev);
- aContentVDev.SetLineColor(pLastOutputDevice->GetLineColor());
- aContentVDev.SetFillColor(pLastOutputDevice->GetFillColor());
- aContentVDev.SetFont(pLastOutputDevice->GetFont());
- aContentVDev.SetDrawMode(pLastOutputDevice->GetDrawMode());
- aContentVDev.SetSettings(pLastOutputDevice->GetSettings());
- aContentVDev.SetRefPoint(pLastOutputDevice->GetRefPoint());
-
- // dump to MetaFile
- process(rContent);
-
- // cleanups
- o_rContentMetafile.Stop();
- o_rContentMetafile.WindStart();
- aNewMapMode.SetOrigin(aPrimitiveRectangle.TopLeft());
- o_rContentMetafile.SetPrefMapMode(aNewMapMode);
- o_rContentMetafile.SetPrefSize(aPrimitiveRectangle.GetSize());
- mpOutputDevice = pLastOutputDevice;
- mpMetaFile = pLastMetafile;
-
- return aPrimitiveRectangle;
- }
-
- void VclMetafileProcessor2D::impConvertFillGradientAttributeToVCLGradient(
- Gradient& o_rVCLGradient,
- const attribute::FillGradientAttribute& rFiGrAtt,
- bool bIsTransparenceGradient)
- {
- if(bIsTransparenceGradient)
- {
- // it's about transparence channel intensities (black/white), do not use color modifier
- o_rVCLGradient.SetStartColor(Color(rFiGrAtt.getStartColor()));
- o_rVCLGradient.SetEndColor(Color(rFiGrAtt.getEndColor()));
- }
- else
- {
- // use color modifier to influence start/end color of gradient
- o_rVCLGradient.SetStartColor(Color(maBColorModifierStack.getModifiedColor(rFiGrAtt.getStartColor())));
- o_rVCLGradient.SetEndColor(Color(maBColorModifierStack.getModifiedColor(rFiGrAtt.getEndColor())));
- }
-
- o_rVCLGradient.SetAngle(static_cast< sal_uInt16 >(rFiGrAtt.getAngle() * (1.0 / F_PI1800)));
- o_rVCLGradient.SetBorder(static_cast< sal_uInt16 >(rFiGrAtt.getBorder() * 100.0));
- o_rVCLGradient.SetOfsX(static_cast< sal_uInt16 >(rFiGrAtt.getOffsetX() * 100.0));
- o_rVCLGradient.SetOfsY(static_cast< sal_uInt16 >(rFiGrAtt.getOffsetY() * 100.0));
- o_rVCLGradient.SetSteps(rFiGrAtt.getSteps());
-
- // defaults for intensity; those were computed into the start/end colors already
- o_rVCLGradient.SetStartIntensity(100);
- o_rVCLGradient.SetEndIntensity(100);
-
- switch(rFiGrAtt.getStyle())
- {
- default : // attribute::GRADIENTSTYLE_LINEAR :
- {
- o_rVCLGradient.SetStyle(GRADIENT_LINEAR);
- break;
- }
- case attribute::GRADIENTSTYLE_AXIAL :
- {
- o_rVCLGradient.SetStyle(GRADIENT_AXIAL);
- break;
- }
- case attribute::GRADIENTSTYLE_RADIAL :
- {
- o_rVCLGradient.SetStyle(GRADIENT_RADIAL);
- break;
- }
- case attribute::GRADIENTSTYLE_ELLIPTICAL :
- {
- o_rVCLGradient.SetStyle(GRADIENT_ELLIPTICAL);
- break;
- }
- case attribute::GRADIENTSTYLE_SQUARE :
- {
- o_rVCLGradient.SetStyle(GRADIENT_SQUARE);
- break;
- }
- case attribute::GRADIENTSTYLE_RECT :
- {
- o_rVCLGradient.SetStyle(GRADIENT_RECT);
- break;
- }
- }
- }
-
- void VclMetafileProcessor2D::impStartSvtGraphicFill(SvtGraphicFill* pSvtGraphicFill)
- {
- if(pSvtGraphicFill && !mnSvtGraphicFillCount)
- {
- SvMemoryStream aMemStm;
-
- aMemStm << *pSvtGraphicFill;
- mpMetaFile->AddAction(new MetaCommentAction("XPATHFILL_SEQ_BEGIN", 0, static_cast< const sal_uInt8* >(aMemStm.GetData()), aMemStm.Seek(STREAM_SEEK_TO_END)));
- mnSvtGraphicFillCount++;
- }
- }
-
- void VclMetafileProcessor2D::impEndSvtGraphicFill(SvtGraphicFill* pSvtGraphicFill)
- {
- if(pSvtGraphicFill && mnSvtGraphicFillCount)
- {
- mnSvtGraphicFillCount--;
- mpMetaFile->AddAction(new MetaCommentAction("XPATHFILL_SEQ_END"));
- delete pSvtGraphicFill;
- }
- }
-
- SvtGraphicStroke* VclMetafileProcessor2D::impTryToCreateSvtGraphicStroke(
- const basegfx::B2DPolygon& rB2DPolygon,
- const basegfx::BColor* pColor,
- const attribute::LineAttribute* pLineAttribute,
- const attribute::StrokeAttribute* pStrokeAttribute,
- const attribute::LineStartEndAttribute* pStart,
- const attribute::LineStartEndAttribute* pEnd)
- {
- SvtGraphicStroke* pRetval = 0;
-
- if(rB2DPolygon.count() && !mnSvtGraphicStrokeCount)
- {
- basegfx::BColor aStrokeColor;
- basegfx::B2DPolyPolygon aStartArrow;
- basegfx::B2DPolyPolygon aEndArrow;
-
- if(pColor)
- {
- aStrokeColor = *pColor;
- }
- else if(pLineAttribute)
- {
- aStrokeColor = maBColorModifierStack.getModifiedColor(pLineAttribute->getColor());
- }
-
- // It IS needed to record the stroke color at all in the metafile,
- // SvtGraphicStroke has NO entry for stroke color(!)
- mpOutputDevice->SetLineColor(Color(aStrokeColor));
-
- if(!rB2DPolygon.isClosed())
- {
- double fPolyLength(0.0);
-
- if(pStart && pStart->isActive())
- {
- fPolyLength = basegfx::tools::getLength(rB2DPolygon);
-
- aStartArrow = basegfx::tools::createAreaGeometryForLineStartEnd(
- rB2DPolygon, pStart->getB2DPolyPolygon(), true, pStart->getWidth(),
- fPolyLength, pStart->isCentered() ? 0.5 : 0.0, 0);
- }
-
- if(pEnd && pEnd->isActive())
- {
- if(basegfx::fTools::equalZero(fPolyLength))
- {
- fPolyLength = basegfx::tools::getLength(rB2DPolygon);
- }
-
- aEndArrow = basegfx::tools::createAreaGeometryForLineStartEnd(
- rB2DPolygon, pEnd->getB2DPolyPolygon(), false, pEnd->getWidth(),
- fPolyLength, pEnd->isCentered() ? 0.5 : 0.0, 0);
- }
- }
-
- SvtGraphicStroke::JoinType eJoin(SvtGraphicStroke::joinNone);
- double fLineWidth(0.0);
- double fMiterLength(0.0);
- SvtGraphicStroke::DashArray aDashArray;
-
- if(pLineAttribute)
- {
- // pre-fill fLineWidth
- fLineWidth = pLineAttribute->getWidth();
-
- // pre-fill fMiterLength
- fMiterLength = fLineWidth;
-
- // get Join
- switch(pLineAttribute->getLineJoin())
- {
- default : // basegfx::B2DLINEJOIN_NONE :
- {
- eJoin = SvtGraphicStroke::joinNone;
- break;
- }
- case basegfx::B2DLINEJOIN_BEVEL :
- {
- eJoin = SvtGraphicStroke::joinBevel;
- break;
- }
- case basegfx::B2DLINEJOIN_MIDDLE :
- case basegfx::B2DLINEJOIN_MITER :
- {
- eJoin = SvtGraphicStroke::joinMiter;
- // ATM 15 degrees is assumed
- fMiterLength /= rtl::math::sin(M_PI * (15.0 / 360.0));
- break;
- }
- case basegfx::B2DLINEJOIN_ROUND :
- {
- eJoin = SvtGraphicStroke::joinRound;
- break;
- }
- }
- }
-
- if(pStrokeAttribute)
- {
- // copy dash array
- aDashArray = pStrokeAttribute->getDotDashArray();
- }
-
- // #i101734# apply current object transformation to created geometry.
- // This is a partial fix. When a object transformation is used which
- // e.g. contains a scaleX != scaleY, an unproportional scaling would
- // have to be applied to the evtl. existing fat line. The current
- // concept of PDF export and SvtGraphicStroke usage does simply not
- // allow handling such definitions. The only clean way would be to
- // add the transformation to SvtGraphicStroke and to handle it there
- basegfx::B2DPolygon aB2DPolygon(rB2DPolygon);
-
- aB2DPolygon.transform(maCurrentTransformation);
- aStartArrow.transform(maCurrentTransformation);
- aEndArrow.transform(maCurrentTransformation);
-
- pRetval = new SvtGraphicStroke(
- Polygon(aB2DPolygon),
- PolyPolygon(aStartArrow),
- PolyPolygon(aEndArrow),
- mfCurrentUnifiedTransparence,
- fLineWidth,
- SvtGraphicStroke::capButt,
- eJoin,
- fMiterLength,
- aDashArray);
- }
-
- return pRetval;
- }
-
- void VclMetafileProcessor2D::impStartSvtGraphicStroke(SvtGraphicStroke* pSvtGraphicStroke)
- {
- if(pSvtGraphicStroke && !mnSvtGraphicStrokeCount)
- {
- SvMemoryStream aMemStm;
-
- aMemStm << *pSvtGraphicStroke;
- mpMetaFile->AddAction(new MetaCommentAction("XPATHSTROKE_SEQ_BEGIN", 0, static_cast< const sal_uInt8* >(aMemStm.GetData()), aMemStm.Seek(STREAM_SEEK_TO_END)));
- mnSvtGraphicStrokeCount++;
- }
- }
-
- void VclMetafileProcessor2D::impEndSvtGraphicStroke(SvtGraphicStroke* pSvtGraphicStroke)
- {
- if(pSvtGraphicStroke && mnSvtGraphicStrokeCount)
- {
- mnSvtGraphicStrokeCount--;
- mpMetaFile->AddAction(new MetaCommentAction("XPATHSTROKE_SEQ_END"));
- delete pSvtGraphicStroke;
- }
- }
-
- // init static break iterator
- uno::Reference< ::com::sun::star::i18n::XBreakIterator > VclMetafileProcessor2D::mxBreakIterator;
-
- VclMetafileProcessor2D::VclMetafileProcessor2D(const geometry::ViewInformation2D& rViewInformation, OutputDevice& rOutDev)
- : VclProcessor2D(rViewInformation, rOutDev),
- mpMetaFile(rOutDev.GetConnectMetaFile()),
- mnSvtGraphicFillCount(0),
- mnSvtGraphicStrokeCount(0),
- mfCurrentUnifiedTransparence(0.0),
- mpPDFExtOutDevData(dynamic_cast< vcl::PDFExtOutDevData* >(rOutDev.GetExtOutDevData()))
- {
- OSL_ENSURE(rOutDev.GetConnectMetaFile(), "VclMetafileProcessor2D: Used on OutDev which has no MetaFile Target (!)");
- // draw to logic coordinates, do not initialize maCurrentTransformation to viewTransformation
- // but only to ObjectTransformation. Do not change MapMode of destination.
- maCurrentTransformation = rViewInformation.getObjectTransformation();
- }
-
- VclMetafileProcessor2D::~VclMetafileProcessor2D()
- {
- // MapMode was not changed, no restore necessary
- }
-
- /***********************************************************************************************
-
- Support of MetaCommentActions in the VclMetafileProcessor2D
- Found MetaCommentActions and how they are supported:
-
- XGRAD_SEQ_BEGIN, XGRAD_SEQ_END:
-
- Used inside OutputDevice::DrawGradient to mark the start and end of a MetaGradientEx action.
- It is used in various exporters/importers to have direct access to the gradient before it
- is rendered by VCL (and thus fragmented to polygon color actions and others). On that base, e.g.
- the Metafile to SdrObject import creates it's gradient objects.
- Best (and safest) way to support it here is to use PRIMITIVE2D_ID_POLYPOLYGONGRADIENTPRIMITIVE2D,
- map it back to the corresponding tools PolyPolygon and the Gradient and just call
- OutputDevice::DrawGradient which creates the necessary compatible actions.
-
- XPATHFILL_SEQ_BEGIN, XPATHFILL_SEQ_END:
-
- Two producers, one is vcl/source/gdi/gdimtf.cxx, line 1273. There, it is transformed
- inside GDIMetaFile::Rotate, nothing to take care of here.
- The second producer is in graphics/svx/source/svdraw/impgrfll.cxx, line 374. This is used
- with each incarnation of Imp_GraphicFill when a metafile is recorded, fillstyle is not
- XFILL_NONE and not completely transparent. It creates a SvtGraphicFill and streams it
- to the comment action. A closing end token is created in the destructor.
- Usages of Imp_GraphicFill are in Do_Paint_Object-methods of SdrCircObj, SdrPathObj and
- SdrRectObj.
- The token users pick various actions from SvtGraphicFill, so it may need to be added for all kind
- of filled objects, even simple colored polygons. It is added as extra information; the
- Metafile actions between the two tokens are interpreted as output generated from those
- fills. Thus, users have the choice to use the SvtGraphicFill info or the created output
- actions.
- Even for XFillTransparenceItem it is used, thus it may need to be supported in
- UnifiedTransparencePrimitive2D, too, when interpreted as normally filled PolyPolygon.
- Implemented for:
- PRIMITIVE2D_ID_POLYPOLYGONBITMAPPRIMITIVE2D,
- PRIMITIVE2D_ID_POLYPOLYGONHATCHPRIMITIVE2D,
- PRIMITIVE2D_ID_POLYPOLYGONGRADIENTPRIMITIVE2D,
- PRIMITIVE2D_ID_POLYPOLYGONCOLORPRIMITIVE2D,
- and for PRIMITIVE2D_ID_UNIFIEDTRANSPARENCEPRIMITIVE2D when detected unified transparence
-
- XPATHSTROKE_SEQ_BEGIN, XPATHSTROKE_SEQ_END:
-
- Similar to pathfill, but using SvtGraphicStroke instead. It also has two producers where one
- is also the GDIMetaFile::Rotate. Another user is MetaCommentAction::Move which modifies the
- contained path accordingly.
- The other one is SdrObject::Imp_DrawLineGeometry. It's done when MetaFile is set at OutDev and
- only when geometry is a single polygon (!). I see no reason for that; in the PS exporter this
- would hinder to make use of PolyPolygon strokes. I will need to add support at:
- PRIMITIVE2D_ID_POLYGONHAIRLINEPRIMITIVE2D
- PRIMITIVE2D_ID_POLYGONSTROKEPRIMITIVE2D
- PRIMITIVE2D_ID_POLYGONSTROKEARROWPRIMITIVE2D
- This can be done hierarchical, too.
- Okay, base implementation done based on those three primitives.
-
- FIELD_SEQ_BEGIN, FIELD_SEQ_END
-
- Used from slideshow for URLs, created from diverse SvxField implementations inside
- createBeginComment()/createEndComment(). createBeginComment() is used from editeng\impedit3.cxx
- inside ImpEditEngine::Paint.
- Created TextHierarchyFieldPrimitive2D and added needed infos there; it is an group primitive and wraps
- text primitives (but is not limited to that). It contains the field type if special actions for the
- support of FIELD_SEQ_BEGIN/END are needed; this is the case for Page and URL fields. If more is
- needed, it may be supported there.
- FIELD_SEQ_BEGIN;PageField
- FIELD_SEQ_END
- Okay, these are now completely supported by TextHierarchyFieldPrimitive2D. URL works, too.
-
- XTEXT
-
- XTEXT_EOC(i) end of character
- XTEXT_EOW(i) end of word
- XTEXT_EOS(i) end of sentence
-
- this three are with index and are created with the help of a i18n::XBreakIterator in
- ImplDrawWithComments. Simplifying, moving out text painting, reworking to create some
- data structure for holding those TEXT infos.
- Supported directly by TextSimplePortionPrimitive2D with adding a Locale to the basic text
- primitive. In the MetaFileRenderer, the creation is now done (see below). This has the advantage
- that this creations do not need to be done for all paints all the time. This would be
- expensive since the BreakIterator and it's usage is expensive and for each paint also the
- whole character stops would need to be created.
- Created only for TextDecoratedPortionPrimitive2D due to XTEXT_EOL and XTEXT_EOP (see below)
-
- XTEXT_EOL() end of line
- XTEXT_EOP() end of paragraph
-
- First try with boolean marks at TextDecoratedPortionPrimitive2D did not work too well,
- i decided to solve it with structure. I added the TextHierarchyPrimitives for this,
- namely:
- - TextHierarchyLinePrimitive2D: Encapsulates single line
- - TextHierarchyParagraphPrimitive2D: Encapsulates single paragraph
- - TextHierarchyBlockPrimitive2D: encapsulates object texts (only one ATM)
- Those are now supported in hierarchy. This means the MetaFile renderer will support them
- by using them, reculrively using their content and adding MetaFile comments as needed.
- This also means that when another text layouter will be used it will be necessary to
- create/support the same HierarchyPrimitives to support users.
- To transport the information using this hierarchy is best suited to all future needs;
- the slideshow will be able to profit from it directly when using primitives; all other
- renderers not interested in the text structure will just ignore the encapsulations.
-
- XTEXT_PAINTSHAPE_BEGIN, XTEXT_PAINTSHAPE_END
- Supported now by the TextHierarchyBlockPrimitive2D.
-
- EPSReplacementGraphic:
- Only used in goodies\source\filter.vcl\ieps\ieps.cxx and svx\source\xml\xmlgrhlp.cxx to
- hold the original EPS which was imported in the same MetaFile as first 2 entries. Only
- used to export the original again (if exists).
- Not necessary to support with MetaFuleRenderer.
-
- XTEXT_SCROLLRECT, XTEXT_PAINTRECT
- Currently used to get extra MetaFile infos using GraphicExporter which again uses
- SdrTextObj::GetTextScrollMetaFileAndRectangle(). ATM works with primitives since
- the rectangle data is added directly by the GraphicsExporter as comment. Does not need
- to be adapted at once.
- When adapting later, the only user - the diashow - should directly use the provided
- Anination infos in the appropriate primitives (e.g. AnimatedSwitchPrimitive2D)
-
- PRNSPOOL_TRANSPARENTBITMAP_BEGIN, PRNSPOOL_TRANSPARENTBITMAP_END
- VCL usage when printing PL -> THB. Okay, THB confirms that it is only used as
- a fix (hack) while VCL printing. It is needed to not downscale a bitmap which
- was explicitely created for the printer already again to some default maximum
- bitmap sizes.
- Nothing to do here for the primitive renderer.
-
- Support for vcl::PDFExtOutDevData:
- PL knows that SJ did that stuff, it's used to hold a pointer to PDFExtOutDevData at
- the OutDev. When set, some extra data is written there. Trying simple PDF export and
- watching if i get those infos.
- Well, a PDF export does not use e.g. ImpEditEngine::Paint since the PdfFilter uses
- the SdXImpressDocument::render and thus uses the VclMetafileProcessor2D. I will check
- if i get a PDFExtOutDevData at the target output device.
- Indeed, i get one. Checking what all may be done when that extra-device-info is there.
-
- All in all i have to talk to SJ. I will need to emulate some of those actions, but
- i need to discuss which ones.
- In the future, all those infos would be taken from the primitive sequence anyways,
- thus these extensions would potentially be temporary, too.
- Discussed with SJ, added the necessary support and tested it. Details follow.
-
- - In ImpEditEngine::Paint, paragraph infos and URL stuff is added.
- Added in primitive MetaFile renderer.
- Checking URL: Indeed, current version exports it, but it is missing in primitive
- CWS version. Adding support.
- Okay, URLs work. Checked, Done.
-
- - UnoControlPDFExportContact is only created when PDFExtOutDevData is used at the
- target and uno control data is created in UnoControlPDFExportContact::do_PaintObject.
- This may be added in primitive MetaFile renderer.
- Adding support...
- OOps, the necessary helper stuff is in svx/source/form/formpdxexport.cxx in namespace
- svxform. Have to talk to FS if this has to be like that. Especially since
- ::vcl::PDFWriter::AnyWidget is filled out, which is already part of vcl.
- Wrote an eMail to FS, he is on vacation currently. I see no reason why not to move
- that stuff to somewhere else, maybe tools or svtools ?!? We will see...
- Moved to toolkit, so i have to link against it. I tried VCL first, but it did
- not work since VCLUnoHelper::CreateFont is unresolved in VCL (!). Other then the name
- may imply, it is defined in toolkit (!). Since toolkit is linked against VCL itself,
- the lowest move,ment plave is toolkit.
- Checked form control export, it works well. Done.
-
- - In goodies, in GraphicObject::Draw, when the used Graphic is linked, infos are
- generated. I will need to check what happens here with primitives.
- To support, use of GraphicPrimitive2D (PRIMITIVE2D_ID_GRAPHICPRIMITIVE2D) may be needed.
- Added support, but feature is broken in main version, so i cannot test at all.
- Writing a bug to CL (or SJ) and seeing what happens (#i80380#).
- SJ took a look and we got it working. Tested VCL MetaFile Renderer based export,
- as intended, the original file is exported. Works, Done.
-
-
-
-
- To be done:
-
- - Maybe there are more places to take care of for vcl::PDFExtOutDevData!
-
-
-
- ****************************************************************************************************/
-
- void VclMetafileProcessor2D::processBasePrimitive2D(const primitive2d::BasePrimitive2D& rCandidate)
- {
- switch(rCandidate.getPrimitive2DID())
- {
- case PRIMITIVE2D_ID_WRONGSPELLPRIMITIVE2D :
- {
- // directdraw of wrong spell primitive
- // Ignore for VclMetafileProcessor2D, this is for printing and MetaFile recording only
- break;
- }
- case PRIMITIVE2D_ID_GRAPHICPRIMITIVE2D :
- {
- const primitive2d::GraphicPrimitive2D& rGraphicPrimitive = static_cast< const primitive2d::GraphicPrimitive2D& >(rCandidate);
- bool bUsingPDFExtOutDevData(false);
- basegfx::B2DVector aTranslate, aScale;
- static bool bSuppressPDFExtOutDevDataSupport(false);
-
- if(mpPDFExtOutDevData && !bSuppressPDFExtOutDevDataSupport)
- {
- // emulate data handling from UnoControlPDFExportContact, original see
- // svtools/source/graphic/grfmgr.cxx
- const Graphic& rGraphic = rGraphicPrimitive.getGraphicObject().GetGraphic();
-
- if(rGraphic.IsLink())
- {
- const GraphicAttr& rAttr = rGraphicPrimitive.getGraphicAttr();
-
- if(!rAttr.IsSpecialDrawMode() && !rAttr.IsAdjusted())
- {
- const basegfx::B2DHomMatrix& rTransform = rGraphicPrimitive.getTransform();
- double fRotate, fShearX;
- rTransform.decompose(aScale, aTranslate, fRotate, fShearX);
-
- if( basegfx::fTools::equalZero( fRotate ) && ( aScale.getX() > 0.0 ) && ( aScale.getY() > 0.0 ) )
- {
- bUsingPDFExtOutDevData = true;
- mpPDFExtOutDevData->BeginGroup();
- }
- }
- }
- }
-
- // process recursively and add MetaFile comment
- process(rGraphicPrimitive.get2DDecomposition(getViewInformation2D()));
-
- if(bUsingPDFExtOutDevData)
- {
- // emulate data handling from UnoControlPDFExportContact, original see
- // svtools/source/graphic/grfmgr.cxx
- const basegfx::B2DRange aCurrentRange(
- aTranslate.getX(), aTranslate.getY(),
- aTranslate.getX() + aScale.getX(), aTranslate.getY() + aScale.getY());
- const Rectangle aCurrentRect(
- sal_Int32(floor(aCurrentRange.getMinX())), sal_Int32(floor(aCurrentRange.getMinY())),
- sal_Int32(ceil(aCurrentRange.getMaxX())), sal_Int32(ceil(aCurrentRange.getMaxY())));
- const GraphicAttr& rAttr = rGraphicPrimitive.getGraphicAttr();
- Rectangle aCropRect;
-
- if(rAttr.IsCropped())
- {
- // calculate scalings between real image size and logic object size. This
- // is necessary since the crop values are relative to original bitmap size
- double fFactorX(1.0);
- double fFactorY(1.0);
-
- {
- const MapMode aMapMode100thmm(MAP_100TH_MM);
- const Size aBitmapSize(Application::GetDefaultDevice()->LogicToLogic(
- rGraphicPrimitive.getGraphicObject().GetPrefSize(),
- rGraphicPrimitive.getGraphicObject().GetPrefMapMode(), aMapMode100thmm));
- const double fDivX(aBitmapSize.Width() - rAttr.GetLeftCrop() - rAttr.GetRightCrop());
- const double fDivY(aBitmapSize.Height() - rAttr.GetTopCrop() - rAttr.GetBottomCrop());
-
- if(!basegfx::fTools::equalZero(fDivX))
- {
- fFactorX = aScale.getX() / fDivX;
- }
-
- if(!basegfx::fTools::equalZero(fDivY))
- {
- fFactorY = aScale.getY() / fDivY;
- }
- }
-
- // calculate crop range and rect
- basegfx::B2DRange aCropRange;
- aCropRange.expand(aCurrentRange.getMinimum() - basegfx::B2DPoint(rAttr.GetLeftCrop() * fFactorX, rAttr.GetTopCrop() * fFactorY));
- aCropRange.expand(aCurrentRange.getMaximum() + basegfx::B2DPoint(rAttr.GetRightCrop() * fFactorX, rAttr.GetBottomCrop() * fFactorY));
-
- aCropRect = Rectangle(
- sal_Int32(floor(aCropRange.getMinX())), sal_Int32(floor(aCropRange.getMinY())),
- sal_Int32(ceil(aCropRange.getMaxX())), sal_Int32(ceil(aCropRange.getMaxY())));
- }
-
- mpPDFExtOutDevData->EndGroup(rGraphicPrimitive.getGraphicObject().GetGraphic(),
- rAttr.GetTransparency(),
- aCurrentRect,
- aCropRect);
- }
-
- break;
- }
- case PRIMITIVE2D_ID_CONTROLPRIMITIVE2D :
- {
- const primitive2d::ControlPrimitive2D& rControlPrimitive = static_cast< const primitive2d::ControlPrimitive2D& >(rCandidate);
- const uno::Reference< awt::XControl >& rXControl(rControlPrimitive.getXControl());
- bool bIsPrintableControl(false);
-
- // find out if control is printable
- if(rXControl.is())
- {
- try
- {
- uno::Reference< beans::XPropertySet > xModelProperties(rXControl->getModel(), uno::UNO_QUERY);
- uno::Reference< beans::XPropertySetInfo > xPropertyInfo(xModelProperties.is()
- ? xModelProperties->getPropertySetInfo()
- : uno::Reference< beans::XPropertySetInfo >());
- const ::rtl::OUString sPrintablePropertyName(RTL_CONSTASCII_USTRINGPARAM("Printable"));
-
- if(xPropertyInfo.is() && xPropertyInfo->hasPropertyByName(sPrintablePropertyName))
- {
- OSL_VERIFY(xModelProperties->getPropertyValue(sPrintablePropertyName) >>= bIsPrintableControl);
- }
- }
- catch(const uno::Exception&)
- {
- OSL_FAIL("VclMetafileProcessor2D: No access to printable flag of Control, caught an exception!");
- }
- }
-
- // PDF export and printing only for printable controls
- if(bIsPrintableControl)
- {
- const bool bPDFExport(mpPDFExtOutDevData && mpPDFExtOutDevData->GetIsExportFormFields());
- bool bDoProcessRecursively(true);
-
- if(bPDFExport)
- {
- // PDF export. Emulate data handling from UnoControlPDFExportContact
- // I have now moved describePDFControl to toolkit, thus i can implement the PDF
- // form control support now as follows
- ::std::auto_ptr< ::vcl::PDFWriter::AnyWidget > pPDFControl;
- ::toolkitform::describePDFControl( rXControl, pPDFControl, *mpPDFExtOutDevData );
-
- if(pPDFControl.get())
- {
- // still need to fill in the location (is a class Rectangle)
- const basegfx::B2DRange aRangeLogic(rControlPrimitive.getB2DRange(getViewInformation2D()));
- const Rectangle aRectLogic(
- (sal_Int32)floor(aRangeLogic.getMinX()), (sal_Int32)floor(aRangeLogic.getMinY()),
- (sal_Int32)ceil(aRangeLogic.getMaxX()), (sal_Int32)ceil(aRangeLogic.getMaxY()));
- pPDFControl->Location = aRectLogic;
-
- Size aFontSize(pPDFControl->TextFont.GetSize());
- aFontSize = mpOutputDevice->LogicToLogic(aFontSize, MapMode(MAP_POINT), mpOutputDevice->GetMapMode());
- pPDFControl->TextFont.SetSize(aFontSize);
-
- mpPDFExtOutDevData->BeginStructureElement(vcl::PDFWriter::Form);
- mpPDFExtOutDevData->CreateControl(*pPDFControl.get());
- mpPDFExtOutDevData->EndStructureElement();
-
- // no normal paint needed (see original UnoControlPDFExportContact::do_PaintObject);
- // do not process recursively
- bDoProcessRecursively = false;
- }
- else
- {
- // PDF export did not work, try simple output.
- // Fallback to printer output by not setting bDoProcessRecursively
- // to false.
- }
- }
-
- // #i93169# used flag the wrong way; true means that nothing was done yet
- if(bDoProcessRecursively)
- {
- // printer output
- try
- {
- // remember old graphics and create new
- uno::Reference< awt::XView > xControlView(rXControl, uno::UNO_QUERY_THROW);
- const uno::Reference< awt::XGraphics > xOriginalGraphics(xControlView->getGraphics());
- const uno::Reference< awt::XGraphics > xNewGraphics(mpOutputDevice->CreateUnoGraphics());
-
- if(xNewGraphics.is())
- {
- // link graphics and view
- xControlView->setGraphics(xNewGraphics);
-
- // get position
- const basegfx::B2DHomMatrix aObjectToDiscrete(getViewInformation2D().getObjectToViewTransformation() * rControlPrimitive.getTransform());
- const basegfx::B2DPoint aTopLeftDiscrete(aObjectToDiscrete * basegfx::B2DPoint(0.0, 0.0));
-
- // draw it
- xControlView->draw(basegfx::fround(aTopLeftDiscrete.getX()), basegfx::fround(aTopLeftDiscrete.getY()));
- bDoProcessRecursively = false;
-
- // restore original graphics
- xControlView->setGraphics(xOriginalGraphics);
- }
- }
- catch( const uno::Exception& )
- {
- OSL_FAIL("VclMetafileProcessor2D: Printing of Control failed, caught an exception!");
- }
- }
-
- // process recursively if not done yet to export as decomposition (bitmap)
- if(bDoProcessRecursively)
- {
- process(rControlPrimitive.get2DDecomposition(getViewInformation2D()));
- }
- }
-
- break;
- }
- case PRIMITIVE2D_ID_TEXTHIERARCHYFIELDPRIMITIVE2D :
- {
- // support for FIELD_SEQ_BEGIN, FIELD_SEQ_END and URL. It wraps text primitives (but is not limited to)
- // thus do the MetafileAction embedding stuff but just handle recursively.
- const primitive2d::TextHierarchyFieldPrimitive2D& rFieldPrimitive = static_cast< const primitive2d::TextHierarchyFieldPrimitive2D& >(rCandidate);
- static const ByteString aCommentStringCommon("FIELD_SEQ_BEGIN");
- static const ByteString aCommentStringPage("FIELD_SEQ_BEGIN;PageField");
- static const ByteString aCommentStringEnd("FIELD_SEQ_END");
-
- switch(rFieldPrimitive.getType())
- {
- default : // case drawinglayer::primitive2d::FIELD_TYPE_COMMON :
- {
- mpMetaFile->AddAction(new MetaCommentAction(aCommentStringCommon));
- break;
- }
- case drawinglayer::primitive2d::FIELD_TYPE_PAGE :
- {
- mpMetaFile->AddAction(new MetaCommentAction(aCommentStringPage));
- break;
- }
- case drawinglayer::primitive2d::FIELD_TYPE_URL :
- {
- const rtl::OUString& rURL = rFieldPrimitive.getString();
- const String aOldString(rURL);
- mpMetaFile->AddAction(new MetaCommentAction(aCommentStringCommon, 0, reinterpret_cast< const sal_uInt8* >(aOldString.GetBuffer()), 2 * aOldString.Len()));
- break;
- }
- }
-
- // process recursively
- const primitive2d::Primitive2DSequence rContent = rFieldPrimitive.get2DDecomposition(getViewInformation2D());
- process(rContent);
-
- // for the end comment the type is not relevant yet, they are all the same. Just add.
- mpMetaFile->AddAction(new MetaCommentAction(aCommentStringEnd));
-
- if(mpPDFExtOutDevData && drawinglayer::primitive2d::FIELD_TYPE_URL == rFieldPrimitive.getType())
- {
- // emulate data handling from ImpEditEngine::Paint
- const basegfx::B2DRange aViewRange(primitive2d::getB2DRangeFromPrimitive2DSequence(rContent, getViewInformation2D()));
- const Rectangle aRectLogic(
- (sal_Int32)floor(aViewRange.getMinX()), (sal_Int32)floor(aViewRange.getMinY()),
- (sal_Int32)ceil(aViewRange.getMaxX()), (sal_Int32)ceil(aViewRange.getMaxY()));
- vcl::PDFExtOutDevBookmarkEntry aBookmark;
- aBookmark.nLinkId = mpPDFExtOutDevData->CreateLink(aRectLogic);
- aBookmark.aBookmark = rFieldPrimitive.getString();
- std::vector< vcl::PDFExtOutDevBookmarkEntry >& rBookmarks = mpPDFExtOutDevData->GetBookmarks();
- rBookmarks.push_back( aBookmark );
- }
-
- break;
- }
- case PRIMITIVE2D_ID_TEXTHIERARCHYLINEPRIMITIVE2D :
- {
- const primitive2d::TextHierarchyLinePrimitive2D& rLinePrimitive = static_cast< const primitive2d::TextHierarchyLinePrimitive2D& >(rCandidate);
- static const ByteString aCommentString("XTEXT_EOL");
-
- // process recursively and add MetaFile comment
- process(rLinePrimitive.get2DDecomposition(getViewInformation2D()));
- mpMetaFile->AddAction(new MetaCommentAction(aCommentString));
-
- break;
- }
- case PRIMITIVE2D_ID_TEXTHIERARCHYBULLETPRIMITIVE2D :
- {
- // in Outliner::PaintBullet(), a MetafileComment for bullets is added, too. The
- // "XTEXT_EOC" is used, use here, too.
- const primitive2d::TextHierarchyBulletPrimitive2D& rBulletPrimitive = static_cast< const primitive2d::TextHierarchyBulletPrimitive2D& >(rCandidate);
- static const ByteString aCommentString("XTEXT_EOC");
-
- // process recursively and add MetaFile comment
- process(rBulletPrimitive.get2DDecomposition(getViewInformation2D()));
- mpMetaFile->AddAction(new MetaCommentAction(aCommentString));
-
- break;
- }
- case PRIMITIVE2D_ID_TEXTHIERARCHYPARAGRAPHPRIMITIVE2D :
- {
- const primitive2d::TextHierarchyParagraphPrimitive2D& rParagraphPrimitive = static_cast< const primitive2d::TextHierarchyParagraphPrimitive2D& >(rCandidate);
- static const ByteString aCommentString("XTEXT_EOP");
-
- if(mpPDFExtOutDevData)
- {
- // emulate data handling from ImpEditEngine::Paint
- mpPDFExtOutDevData->BeginStructureElement( vcl::PDFWriter::Paragraph );
- }
-
- // process recursively and add MetaFile comment
- process(rParagraphPrimitive.get2DDecomposition(getViewInformation2D()));
- mpMetaFile->AddAction(new MetaCommentAction(aCommentString));
-
- if(mpPDFExtOutDevData)
- {
- // emulate data handling from ImpEditEngine::Paint
- mpPDFExtOutDevData->EndStructureElement();
- }
-
- break;
- }
- case PRIMITIVE2D_ID_TEXTHIERARCHYBLOCKPRIMITIVE2D :
- {
- const primitive2d::TextHierarchyBlockPrimitive2D& rBlockPrimitive = static_cast< const primitive2d::TextHierarchyBlockPrimitive2D& >(rCandidate);
- static const ByteString aCommentStringA("XTEXT_PAINTSHAPE_BEGIN");
- static const ByteString aCommentStringB("XTEXT_PAINTSHAPE_END");
-
- // add MetaFile comment, process recursively and add MetaFile comment
- mpMetaFile->AddAction(new MetaCommentAction(aCommentStringA));
- process(rBlockPrimitive.get2DDecomposition(getViewInformation2D()));
- mpMetaFile->AddAction(new MetaCommentAction(aCommentStringB));
-
- break;
- }
- case PRIMITIVE2D_ID_TEXTSIMPLEPORTIONPRIMITIVE2D :
- case PRIMITIVE2D_ID_TEXTDECORATEDPORTIONPRIMITIVE2D :
- {
- // for supporting TEXT_ MetaFile actions there is more to do here; get the candidate
- const primitive2d::TextSimplePortionPrimitive2D& rTextCandidate = static_cast< const primitive2d::TextSimplePortionPrimitive2D& >(rCandidate);
- // const primitive2d::TextDecoratedPortionPrimitive2D* pTextDecoratedCandidate = dynamic_cast< const primitive2d::TextDecoratedPortionPrimitive2D* >(&rCandidate);
-
- // Adapt evtl. used special DrawMode
- const sal_uInt32 nOriginalDrawMode(mpOutputDevice->GetDrawMode());
- adaptTextToFillDrawMode();
-
- // directdraw of text simple portion; use default processing
- RenderTextSimpleOrDecoratedPortionPrimitive2D(rTextCandidate);
-
- // restore DrawMode
- mpOutputDevice->SetDrawMode(nOriginalDrawMode);
-
- // #i101169# if(pTextDecoratedCandidate)
- {
- // support for TEXT_ MetaFile actions only for decorated texts
- if(!mxBreakIterator.is())
- {
- uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > xMSF(::comphelper::getProcessServiceFactory());
- mxBreakIterator.set(xMSF->createInstance(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.i18n.BreakIterator"))), uno::UNO_QUERY);
- }
-
- if(mxBreakIterator.is())
- {
- const rtl::OUString& rTxt = rTextCandidate.getText();
- const sal_Int32 nTextLength(rTextCandidate.getTextLength()); // rTxt.getLength());
-
- if(nTextLength)
- {
- const ::com::sun::star::lang::Locale& rLocale = rTextCandidate.getLocale();
- const sal_Int32 nTextPosition(rTextCandidate.getTextPosition());
-
- sal_Int32 nDone;
- sal_Int32 nNextCellBreak(mxBreakIterator->nextCharacters(rTxt, nTextPosition, rLocale, ::com::sun::star::i18n::CharacterIteratorMode::SKIPCELL, 0, nDone));
- ::com::sun::star::i18n::Boundary nNextWordBoundary(mxBreakIterator->getWordBoundary(rTxt, nTextPosition, rLocale, ::com::sun::star::i18n::WordType::ANY_WORD, sal_True));
- sal_Int32 nNextSentenceBreak(mxBreakIterator->endOfSentence(rTxt, nTextPosition, rLocale));
- static const ByteString aCommentStringA("XTEXT_EOC");
- static const ByteString aCommentStringB("XTEXT_EOW");
- static const ByteString aCommentStringC("XTEXT_EOS");
-
- for(sal_Int32 i(nTextPosition); i < nTextPosition + nTextLength; i++)
- {
- // create the entries for the respective break positions
- if(i == nNextCellBreak)
- {
- mpMetaFile->AddAction(new MetaCommentAction(aCommentStringA, i - nTextPosition));
- nNextCellBreak = mxBreakIterator->nextCharacters(rTxt, i, rLocale, ::com::sun::star::i18n::CharacterIteratorMode::SKIPCELL, 1, nDone);
- }
- if(i == nNextWordBoundary.endPos)
- {
- mpMetaFile->AddAction(new MetaCommentAction(aCommentStringB, i - nTextPosition));
- nNextWordBoundary = mxBreakIterator->getWordBoundary(rTxt, i + 1, rLocale, ::com::sun::star::i18n::WordType::ANY_WORD, sal_True);
- }
- if(i == nNextSentenceBreak)
- {
- mpMetaFile->AddAction(new MetaCommentAction(aCommentStringC, i - nTextPosition));
- nNextSentenceBreak = mxBreakIterator->endOfSentence(rTxt, i + 1, rLocale);
- }
- }
- }
- }
- }
-
- break;
- }
- case PRIMITIVE2D_ID_POLYGONHAIRLINEPRIMITIVE2D :
- {
- const primitive2d::PolygonHairlinePrimitive2D& rHairlinePrimitive = static_cast< const primitive2d::PolygonHairlinePrimitive2D& >(rCandidate);
- const basegfx::B2DPolygon& rBasePolygon = rHairlinePrimitive.getB2DPolygon();
-
- if(rBasePolygon.count() > (MAX_POLYGON_POINT_COUNT_METAFILE - 1))
- {
- // #i112245# Metafiles use tools Polygon and are not able to have more than 65535 points
- // per polygon. If there are more, split the polygon in half and call recursively
- basegfx::B2DPolygon aLeft, aRight;
- splitLinePolygon(rBasePolygon, aLeft, aRight);
- const primitive2d::PolygonHairlinePrimitive2D aPLeft(aLeft, rHairlinePrimitive.getBColor());
- const primitive2d::PolygonHairlinePrimitive2D aPRight(aRight, rHairlinePrimitive.getBColor());
-
- processBasePrimitive2D(aPLeft);
- processBasePrimitive2D(aPRight);
- }
- else
- {
- // direct draw of hairline; use default processing
- // support SvtGraphicStroke MetaCommentAction
- const basegfx::BColor aLineColor(maBColorModifierStack.getModifiedColor(rHairlinePrimitive.getBColor()));
- SvtGraphicStroke* pSvtGraphicStroke = impTryToCreateSvtGraphicStroke(
- rHairlinePrimitive.getB2DPolygon(),
- &aLineColor,
- 0, 0, 0, 0);
-
- impStartSvtGraphicStroke(pSvtGraphicStroke);
- RenderPolygonHairlinePrimitive2D(static_cast< const primitive2d::PolygonHairlinePrimitive2D& >(rCandidate), false);
- impEndSvtGraphicStroke(pSvtGraphicStroke);
- }
- break;
- }
- case PRIMITIVE2D_ID_POLYGONSTROKEPRIMITIVE2D :
- {
- const primitive2d::PolygonStrokePrimitive2D& rStrokePrimitive = static_cast< const primitive2d::PolygonStrokePrimitive2D& >(rCandidate);
- const basegfx::B2DPolygon& rBasePolygon = rStrokePrimitive.getB2DPolygon();
-
- if(rBasePolygon.count() > (MAX_POLYGON_POINT_COUNT_METAFILE - 1))
- {
- // #i112245# Metafiles use tools Polygon and are not able to have more than 65535 points
- // per polygon. If there are more, split the polygon in half and call recursively
- basegfx::B2DPolygon aLeft, aRight;
- splitLinePolygon(rBasePolygon, aLeft, aRight);
- const primitive2d::PolygonStrokePrimitive2D aPLeft(
- aLeft, rStrokePrimitive.getLineAttribute(), rStrokePrimitive.getStrokeAttribute());
- const primitive2d::PolygonStrokePrimitive2D aPRight(
- aRight, rStrokePrimitive.getLineAttribute(), rStrokePrimitive.getStrokeAttribute());
-
- processBasePrimitive2D(aPLeft);
- processBasePrimitive2D(aPRight);
- }
- else
- {
- // support SvtGraphicStroke MetaCommentAction
- SvtGraphicStroke* pSvtGraphicStroke = impTryToCreateSvtGraphicStroke(
- rBasePolygon, 0,
- &rStrokePrimitive.getLineAttribute(),
- &rStrokePrimitive.getStrokeAttribute(),
- 0, 0);
-
- impStartSvtGraphicStroke(pSvtGraphicStroke);
- const attribute::LineAttribute& rLine = rStrokePrimitive.getLineAttribute();
-
- // create MetaPolyLineActions, but without LINE_DASH
- if(basegfx::fTools::more(rLine.getWidth(), 0.0))
- {
- const attribute::StrokeAttribute& rStroke = rStrokePrimitive.getStrokeAttribute();
- basegfx::B2DPolyPolygon aHairLinePolyPolygon;
-
- if(0.0 == rStroke.getFullDotDashLen())
- {
- aHairLinePolyPolygon.append(rBasePolygon);
- }
- else
- {
- basegfx::tools::applyLineDashing(
- rBasePolygon, rStroke.getDotDashArray(),
- &aHairLinePolyPolygon, 0, rStroke.getFullDotDashLen());
- }
-
- const basegfx::BColor aHairlineColor(maBColorModifierStack.getModifiedColor(rLine.getColor()));
- mpOutputDevice->SetLineColor(Color(aHairlineColor));
- mpOutputDevice->SetFillColor();
- aHairLinePolyPolygon.transform(maCurrentTransformation);
-
- // #i113922# LineWidth needs to be transformed, too
- const basegfx::B2DVector aDiscreteUnit(maCurrentTransformation * basegfx::B2DVector(rLine.getWidth(), 0.0));
- const double fDiscreteLineWidth(aDiscreteUnit.getLength());
-
- LineInfo aLineInfo(LINE_SOLID, basegfx::fround(fDiscreteLineWidth));
- aLineInfo.SetLineJoin(rLine.getLineJoin());
-
- for(sal_uInt32 a(0); a < aHairLinePolyPolygon.count(); a++)
- {
- const basegfx::B2DPolygon aCandidate(aHairLinePolyPolygon.getB2DPolygon(a));
-
- if(aCandidate.count() > 1)
- {
- const Polygon aToolsPolygon(aCandidate);
-
- mpMetaFile->AddAction(new MetaPolyLineAction(aToolsPolygon, aLineInfo));
- }
- }
- }
- else
- {
- process(rCandidate.get2DDecomposition(getViewInformation2D()));
- }
-
- impEndSvtGraphicStroke(pSvtGraphicStroke);
- }
-
- break;
- }
- case PRIMITIVE2D_ID_POLYGONSTROKEARROWPRIMITIVE2D :
- {
- const primitive2d::PolygonStrokeArrowPrimitive2D& rStrokeArrowPrimitive = static_cast< const primitive2d::PolygonStrokeArrowPrimitive2D& >(rCandidate);
- const basegfx::B2DPolygon& rBasePolygon = rStrokeArrowPrimitive.getB2DPolygon();
-
- if(rBasePolygon.count() > (MAX_POLYGON_POINT_COUNT_METAFILE - 1))
- {
- // #i112245# Metafiles use tools Polygon and are not able to have more than 65535 points
- // per polygon. If there are more, split the polygon in half and call recursively
- basegfx::B2DPolygon aLeft, aRight;
- splitLinePolygon(rBasePolygon, aLeft, aRight);
- const attribute::LineStartEndAttribute aEmpty;
- const primitive2d::PolygonStrokeArrowPrimitive2D aPLeft(
- aLeft,
- rStrokeArrowPrimitive.getLineAttribute(),
- rStrokeArrowPrimitive.getStrokeAttribute(),
- rStrokeArrowPrimitive.getStart(),
- aEmpty);
- const primitive2d::PolygonStrokeArrowPrimitive2D aPRight(
- aRight,
- rStrokeArrowPrimitive.getLineAttribute(),
- rStrokeArrowPrimitive.getStrokeAttribute(),
- aEmpty,
- rStrokeArrowPrimitive.getEnd());
-
- processBasePrimitive2D(aPLeft);
- processBasePrimitive2D(aPRight);
- }
- else
- {
- // support SvtGraphicStroke MetaCommentAction
- SvtGraphicStroke* pSvtGraphicStroke = impTryToCreateSvtGraphicStroke(
- rBasePolygon, 0,
- &rStrokeArrowPrimitive.getLineAttribute(),
- &rStrokeArrowPrimitive.getStrokeAttribute(),
- &rStrokeArrowPrimitive.getStart(),
- &rStrokeArrowPrimitive.getEnd());
-
- impStartSvtGraphicStroke(pSvtGraphicStroke);
- process(rCandidate.get2DDecomposition(getViewInformation2D()));
- impEndSvtGraphicStroke(pSvtGraphicStroke);
- }
-
- break;
- }
- case PRIMITIVE2D_ID_BITMAPPRIMITIVE2D :
- {
- // direct draw of transformed BitmapEx primitive; use default processing
- RenderBitmapPrimitive2D(static_cast< const primitive2d::BitmapPrimitive2D& >(rCandidate));
- break;
- }
- case PRIMITIVE2D_ID_RENDERGRAPHICPRIMITIVE2D :
- {
- // direct draw of transformed RenderGraphic primitive; use default processing
- RenderRenderGraphicPrimitive2D(static_cast< const primitive2d::RenderGraphicPrimitive2D& >(rCandidate));
- break;
- }
- case PRIMITIVE2D_ID_POLYPOLYGONBITMAPPRIMITIVE2D :
- {
- // need to handle PolyPolygonBitmapPrimitive2D here to support XPATHFILL_SEQ_BEGIN/XPATHFILL_SEQ_END
- const primitive2d::PolyPolygonBitmapPrimitive2D& rBitmapCandidate = static_cast< const primitive2d::PolyPolygonBitmapPrimitive2D& >(rCandidate);
- basegfx::B2DPolyPolygon aLocalPolyPolygon(rBitmapCandidate.getB2DPolyPolygon());
-
- if(fillPolyPolygonNeededToBeSplit(aLocalPolyPolygon))
- {
- // #i112245# Metafiles use tools Polygon and are not able to have more than 65535 points
- // per polygon. If there are more use the splitted polygon and call recursively
- const primitive2d::PolyPolygonBitmapPrimitive2D aSplitted(
- aLocalPolyPolygon,
- rBitmapCandidate.getFillBitmap());
-
- processBasePrimitive2D(aSplitted);
- }
- else
- {
- SvtGraphicFill* pSvtGraphicFill = 0;
-
- if(!mnSvtGraphicFillCount && aLocalPolyPolygon.count())
- {
- aLocalPolyPolygon.transform(maCurrentTransformation);
- // calculate transformation. Get real object size, all values in FillBitmapAttribute
- // are relative to the unified object
- const attribute::FillBitmapAttribute& rFillBitmapAttribute = rBitmapCandidate .getFillBitmap();
- const basegfx::B2DRange aOutlineRange(basegfx::tools::getRange(aLocalPolyPolygon));
- const basegfx::B2DVector aOutlineSize(aOutlineRange.getRange());
-
- // get absolute values
- const basegfx::B2DVector aFillBitmapSize(rFillBitmapAttribute.getSize() * aOutlineSize);
- const basegfx::B2DPoint aFillBitmapTopLeft(rFillBitmapAttribute.getTopLeft() * aOutlineSize);
-
- // the scaling needs scale from pixel to logic coordinate system
- const BitmapEx& rBitmapEx = rFillBitmapAttribute.getBitmapEx();
- Size aBmpSizePixel(rBitmapEx.GetSizePixel());
-
- if(!aBmpSizePixel.Width())
- {
- aBmpSizePixel.Width() = 1;
- }
-
- if(!aBmpSizePixel.Height())
- {
- aBmpSizePixel.Height() = 1;
- }
-
- // setup transformation like in impgrfll
- SvtGraphicFill::Transform aTransform;
-
- // scale values are divided by bitmap pixel sizes
- aTransform.matrix[0] = aFillBitmapSize.getX() / aBmpSizePixel.Width();
- aTransform.matrix[4] = aFillBitmapSize.getY() / aBmpSizePixel.Height();
-
- // translates are absolute
- aTransform.matrix[2] = aFillBitmapTopLeft.getX();
- aTransform.matrix[5] = aFillBitmapTopLeft.getY();
-
- // setup fill graphic like in impgrfll
- Graphic aFillGraphic = Graphic(rBitmapEx);
- aFillGraphic.SetPrefMapMode(MapMode(MAP_PIXEL));
- aFillGraphic.SetPrefSize(aBmpSizePixel);
-
- pSvtGraphicFill = new SvtGraphicFill(
- PolyPolygon(aLocalPolyPolygon),
- Color(),
- 0.0,
- SvtGraphicFill::fillEvenOdd,
- SvtGraphicFill::fillTexture,
- aTransform,
- rFillBitmapAttribute.getTiling(),
- SvtGraphicFill::hatchSingle,
- Color(),
- SvtGraphicFill::gradientLinear,
- Color(),
- Color(),
- 0,
- aFillGraphic);
- }
-
- // Do use decomposition; encapsulate with SvtGraphicFill
- impStartSvtGraphicFill(pSvtGraphicFill);
- process(rCandidate.get2DDecomposition(getViewInformation2D()));
- impEndSvtGraphicFill(pSvtGraphicFill);
- }
-
- break;
- }
- case PRIMITIVE2D_ID_POLYPOLYGONHATCHPRIMITIVE2D :
- {
- // need to handle PolyPolygonHatchPrimitive2D here to support XPATHFILL_SEQ_BEGIN/XPATHFILL_SEQ_END
- const primitive2d::PolyPolygonHatchPrimitive2D& rHatchCandidate = static_cast< const primitive2d::PolyPolygonHatchPrimitive2D& >(rCandidate);
- const attribute::FillHatchAttribute& rFillHatchAttribute = rHatchCandidate.getFillHatch();
- basegfx::B2DPolyPolygon aLocalPolyPolygon(rHatchCandidate.getB2DPolyPolygon());
-
- // #i112245# Metafiles use tools Polygon and are not able to have more than 65535 points
- // per polygon. Split polygon until there are less than that
- while(fillPolyPolygonNeededToBeSplit(aLocalPolyPolygon))
- ;
-
- if(rFillHatchAttribute.isFillBackground())
- {
- // with fixing #i111954# (see below) the possible background
- // fill of a hatched object was lost.Generate a background fill
- // primitive and render it
- const primitive2d::Primitive2DReference xBackground(
- new primitive2d::PolyPolygonColorPrimitive2D(
- aLocalPolyPolygon,
- rHatchCandidate.getBackgroundColor()));
-
- process(primitive2d::Primitive2DSequence(&xBackground, 1));
- }
-
- SvtGraphicFill* pSvtGraphicFill = 0;
- aLocalPolyPolygon.transform(maCurrentTransformation);
-
- if(!mnSvtGraphicFillCount && aLocalPolyPolygon.count())
- {
- // re-create a VCL hatch as base data
- SvtGraphicFill::HatchType eHatch(SvtGraphicFill::hatchSingle);
-
- switch(rFillHatchAttribute.getStyle())
- {
- default: // attribute::HATCHSTYLE_SINGLE :
- {
- eHatch = SvtGraphicFill::hatchSingle;
- break;
- }
- case attribute::HATCHSTYLE_DOUBLE :
- {
- eHatch = SvtGraphicFill::hatchDouble;
- break;
- }
- case attribute::HATCHSTYLE_TRIPLE :
- {
- eHatch = SvtGraphicFill::hatchTriple;
- break;
- }
- }
-
- SvtGraphicFill::Transform aTransform;
-
- // scale
- aTransform.matrix[0] *= rFillHatchAttribute.getDistance();
- aTransform.matrix[4] *= rFillHatchAttribute.getDistance();
-
- // rotate (was never correct in impgrfll anyways, use correct angle now)
- aTransform.matrix[0] *= cos(rFillHatchAttribute.getAngle());
- aTransform.matrix[1] *= -sin(rFillHatchAttribute.getAngle());
- aTransform.matrix[3] *= sin(rFillHatchAttribute.getAngle());
- aTransform.matrix[4] *= cos(rFillHatchAttribute.getAngle());
-
- pSvtGraphicFill = new SvtGraphicFill(
- PolyPolygon(aLocalPolyPolygon),
- Color(),
- 0.0,
- SvtGraphicFill::fillEvenOdd,
- SvtGraphicFill::fillHatch,
- aTransform,
- false,
- eHatch,
- Color(rFillHatchAttribute.getColor()),
- SvtGraphicFill::gradientLinear,
- Color(),
- Color(),
- 0,
- Graphic());
- }
-
- // Do use decomposition; encapsulate with SvtGraphicFill
- impStartSvtGraphicFill(pSvtGraphicFill);
-
- // #i111954# do NOT use decomposition, but use direct VCL-command
- // process(rCandidate.get2DDecomposition(getViewInformation2D()));
- const PolyPolygon aToolsPolyPolygon(aLocalPolyPolygon);
- const HatchStyle aHatchStyle(
- attribute::HATCHSTYLE_SINGLE == rFillHatchAttribute.getStyle() ? HATCH_SINGLE :
- attribute::HATCHSTYLE_DOUBLE == rFillHatchAttribute.getStyle() ? HATCH_DOUBLE :
- HATCH_TRIPLE);
-
- mpOutputDevice->DrawHatch(aToolsPolyPolygon,
- Hatch(aHatchStyle,
- Color(rFillHatchAttribute.getColor()),
- basegfx::fround(rFillHatchAttribute.getDistance()),
- basegfx::fround(rFillHatchAttribute.getAngle() / F_PI1800)));
-
- impEndSvtGraphicFill(pSvtGraphicFill);
-
- break;
- }
- case PRIMITIVE2D_ID_POLYPOLYGONGRADIENTPRIMITIVE2D :
- {
- const primitive2d::PolyPolygonGradientPrimitive2D& rGradientCandidate = static_cast< const primitive2d::PolyPolygonGradientPrimitive2D& >(rCandidate);
- basegfx::B2DPolyPolygon aLocalPolyPolygon(rGradientCandidate.getB2DPolyPolygon());
-
- // #i112245# Metafiles use tools Polygon and are not able to have more than 65535 points
- // per polygon. Split polygon until there are less than that
- while(fillPolyPolygonNeededToBeSplit(aLocalPolyPolygon))
- ;
-
- // for support of MetaCommentActions of the form XGRAD_SEQ_BEGIN, XGRAD_SEQ_END
- // it is safest to use the VCL OutputDevice::DrawGradient method which creates those.
- // re-create a VCL-gradient from FillGradientPrimitive2D and the needed tools PolyPolygon
- Gradient aVCLGradient;
- impConvertFillGradientAttributeToVCLGradient(aVCLGradient, rGradientCandidate.getFillGradient(), false);
- aLocalPolyPolygon.transform(maCurrentTransformation);
-
- // #i82145# ATM VCL printing of gradients using curved shapes does not work,
- // i submitted the bug with the given ID to THB. When that task is fixed it is
- // necessary to again remove this subdivision since it decreases possible
- // printing quality (not even resolution-dependent for now). THB will tell
- // me when that task is fixed in the master
- const PolyPolygon aToolsPolyPolygon(basegfx::tools::adaptiveSubdivideByAngle(aLocalPolyPolygon));
-
- // XPATHFILL_SEQ_BEGIN/XPATHFILL_SEQ_END support
- SvtGraphicFill* pSvtGraphicFill = 0;
-
- if(!mnSvtGraphicFillCount && aLocalPolyPolygon.count())
- {
- // setup gradient stuff like in like in impgrfll
- SvtGraphicFill::GradientType eGrad(SvtGraphicFill::gradientLinear);
-
- switch(aVCLGradient.GetStyle())
- {
- default : // GRADIENT_LINEAR:
- case GRADIENT_AXIAL:
- eGrad = SvtGraphicFill::gradientLinear;
- break;
- case GRADIENT_RADIAL:
- case GRADIENT_ELLIPTICAL:
- eGrad = SvtGraphicFill::gradientRadial;
- break;
- case GRADIENT_SQUARE:
- case GRADIENT_RECT:
- eGrad = SvtGraphicFill::gradientRectangular;
- break;
- }
-
- pSvtGraphicFill = new SvtGraphicFill(
- aToolsPolyPolygon,
- Color(),
- 0.0,
- SvtGraphicFill::fillEvenOdd,
- SvtGraphicFill::fillGradient,
- SvtGraphicFill::Transform(),
- false,
- SvtGraphicFill::hatchSingle,
- Color(),
- eGrad,
- aVCLGradient.GetStartColor(),
- aVCLGradient.GetEndColor(),
- aVCLGradient.GetSteps(),
- Graphic());
- }
-
- // call VCL directly; encapsulate with SvtGraphicFill
- impStartSvtGraphicFill(pSvtGraphicFill);
- mpOutputDevice->DrawGradient(aToolsPolyPolygon, aVCLGradient);
- impEndSvtGraphicFill(pSvtGraphicFill);
-
- // NO usage of common own gradient randerer, not used ATM for VCL MetaFile, see text above
- // RenderPolyPolygonGradientPrimitive2D(static_cast< const primitive2d::PolyPolygonGradientPrimitive2D& >(rCandidate));
-
- break;
- }
- case PRIMITIVE2D_ID_POLYPOLYGONCOLORPRIMITIVE2D :
- {
- const primitive2d::PolyPolygonColorPrimitive2D& rPolygonCandidate(static_cast< const primitive2d::PolyPolygonColorPrimitive2D& >(rCandidate));
- basegfx::B2DPolyPolygon aLocalPolyPolygon(rPolygonCandidate.getB2DPolyPolygon());
-
- // #i112245# Metafiles use tools Polygon and are not able to have more than 65535 points
- // per polygon. Split polygon until there are less than that
- while(fillPolyPolygonNeededToBeSplit(aLocalPolyPolygon))
- ;
-
- const basegfx::BColor aPolygonColor(maBColorModifierStack.getModifiedColor(rPolygonCandidate.getBColor()));
- aLocalPolyPolygon.transform(maCurrentTransformation);
-
- // XPATHFILL_SEQ_BEGIN/XPATHFILL_SEQ_END support
- SvtGraphicFill* pSvtGraphicFill = 0;
-
- if(!mnSvtGraphicFillCount && aLocalPolyPolygon.count())
- {
- // setup simple color fill stuff like in impgrfll
- pSvtGraphicFill = new SvtGraphicFill(
- PolyPolygon(aLocalPolyPolygon),
- Color(aPolygonColor),
- 0.0,
- SvtGraphicFill::fillEvenOdd,
- SvtGraphicFill::fillSolid,
- SvtGraphicFill::Transform(),
- false,
- SvtGraphicFill::hatchSingle,
- Color(),
- SvtGraphicFill::gradientLinear,
- Color(),
- Color(),
- 0,
- Graphic());
- }
-
- // set line and fill color
- mpOutputDevice->SetFillColor(Color(aPolygonColor));
- mpOutputDevice->SetLineColor();
-
- // call VCL directly; encapsulate with SvtGraphicFill
- impStartSvtGraphicFill(pSvtGraphicFill);
- mpOutputDevice->DrawPolyPolygon(aLocalPolyPolygon);
- impEndSvtGraphicFill(pSvtGraphicFill);
-
- break;
- }
- case PRIMITIVE2D_ID_METAFILEPRIMITIVE2D :
- {
- // direct draw of MetaFile, use default pocessing
- RenderMetafilePrimitive2D(static_cast< const primitive2d::MetafilePrimitive2D& >(rCandidate));
- break;
- }
- case PRIMITIVE2D_ID_MASKPRIMITIVE2D :
- {
- // mask group. Special handling for MetaFiles.
- const primitive2d::MaskPrimitive2D& rMaskCandidate = static_cast< const primitive2d::MaskPrimitive2D& >(rCandidate);
-
- if(rMaskCandidate.getChildren().hasElements())
- {
- basegfx::B2DPolyPolygon aMask(rMaskCandidate.getMask());
-
- if(aMask.count())
- {
- // prepare new mask polygon and rescue current one
- aMask.transform(maCurrentTransformation);
- const basegfx::B2DPolyPolygon aLastClipPolyPolygon(maClipPolyPolygon);
-
- if(maClipPolyPolygon.count())
- {
- // there is already a clip polygon set; build clipped union of
- // current mask polygon and new one
- maClipPolyPolygon = basegfx::tools::clipPolyPolygonOnPolyPolygon(
- aMask,
- maClipPolyPolygon,
- true, // #i106516# we want the inside of aMask, not the outside
- false);
- }
- else
- {
- // use mask directly
- maClipPolyPolygon = aMask;
- }
-
- if(maClipPolyPolygon.count())
- {
- // set VCL clip region; subdivide before conversion to tools polygon. Subdivision necessary (!)
- // Removed subdivision and fixed in Region::ImplPolyPolyRegionToBandRegionFunc() in VCL where
- // the ClipRegion is built from the Polygon. A AdaptiveSubdivide on the source polygon was missing there
- mpOutputDevice->Push(PUSH_CLIPREGION);
- //mpOutputDevice->SetClipRegion(Region(PolyPolygon(basegfx::tools::adaptiveSubdivideByAngle(maClipPolyPolygon))));
- mpOutputDevice->SetClipRegion(Region(PolyPolygon(maClipPolyPolygon)));
- }
-
- // recursively paint content
- process(rMaskCandidate.getChildren());
-
- if(maClipPolyPolygon.count())
- {
- // restore VCL clip region
- mpOutputDevice->Pop();
- }
-
- // restore to rescued clip polygon
- maClipPolyPolygon = aLastClipPolyPolygon;
- }
- else
- {
- // no mask, no clipping. recursively paint content
- process(rMaskCandidate.getChildren());
- }
- }
-
- break;
- }
- case PRIMITIVE2D_ID_MODIFIEDCOLORPRIMITIVE2D :
- {
- // modified color group. Force output to unified color. Use default pocessing.
- RenderModifiedColorPrimitive2D(static_cast< const primitive2d::ModifiedColorPrimitive2D& >(rCandidate));
- break;
- }
- case PRIMITIVE2D_ID_HIDDENGEOMETRYPRIMITIVE2D :
- {
- // HiddenGeometryPrimitive2D; to rebuilt the old MetaFile creation, it is necessary to
- // not ignore them (as it was thought), but to add a MetaFile entry for them.
- basegfx::B2DRange aInvisibleRange(rCandidate.getB2DRange(getViewInformation2D()));
-
- if(!aInvisibleRange.isEmpty())
- {
- aInvisibleRange.transform(maCurrentTransformation);
- const Rectangle aRectLogic(
- (sal_Int32)floor(aInvisibleRange.getMinX()), (sal_Int32)floor(aInvisibleRange.getMinY()),
- (sal_Int32)ceil(aInvisibleRange.getMaxX()), (sal_Int32)ceil(aInvisibleRange.getMaxY()));
-
- mpOutputDevice->SetFillColor();
- mpOutputDevice->SetLineColor();
- mpOutputDevice->DrawRect(aRectLogic);
- }
-
- break;
- }
- case PRIMITIVE2D_ID_UNIFIEDTRANSPARENCEPRIMITIVE2D :
- {
- // for metafile: Need to examine what the pure vcl version is doing here actually
- // - uses DrawTransparent with metafile for content and a gradient
- // - uses DrawTransparent for single PolyPoylgons directly. Can be detected by
- // checking the content for single PolyPolygonColorPrimitive2D
- const primitive2d::UnifiedTransparencePrimitive2D& rUniTransparenceCandidate = static_cast< const primitive2d::UnifiedTransparencePrimitive2D& >(rCandidate);
- const primitive2d::Primitive2DSequence rContent = rUniTransparenceCandidate.getChildren();
-
- if(rContent.hasElements())
- {
- if(0.0 == rUniTransparenceCandidate.getTransparence())
- {
- // not transparent at all, use content
- process(rUniTransparenceCandidate.getChildren());
- }
- else if(rUniTransparenceCandidate.getTransparence() > 0.0 && rUniTransparenceCandidate.getTransparence() < 1.0)
- {
- // try to identify a single PolyPolygonColorPrimitive2D in the
- // content part of the transparence primitive
- const primitive2d::PolyPolygonColorPrimitive2D* pPoPoColor = 0;
- static bool bForceToMetafile(false);
-
- if(!bForceToMetafile && 1 == rContent.getLength())
- {
- const primitive2d::Primitive2DReference xReference(rContent[0]);
- pPoPoColor = dynamic_cast< const primitive2d::PolyPolygonColorPrimitive2D* >(xReference.get());
- }
-
- // PolyPolygonGradientPrimitive2D, PolyPolygonHatchPrimitive2D and
- // PolyPolygonBitmapPrimitive2D are derived from PolyPolygonColorPrimitive2D.
- // Check also for correct ID to exclude derived implementations
- if(pPoPoColor && PRIMITIVE2D_ID_POLYPOLYGONCOLORPRIMITIVE2D == pPoPoColor->getPrimitive2DID())
- {
- // single transparent PolyPolygon identified, use directly
- const basegfx::BColor aPolygonColor(maBColorModifierStack.getModifiedColor(pPoPoColor->getBColor()));
- basegfx::B2DPolyPolygon aLocalPolyPolygon(pPoPoColor->getB2DPolyPolygon());
-
- // #i112245# Metafiles use tools Polygon and are not able to have more than 65535 points
- // per polygon. Split polygon until there are less than that
- while(fillPolyPolygonNeededToBeSplit(aLocalPolyPolygon))
- ;
-
- // now transform
- aLocalPolyPolygon.transform(maCurrentTransformation);
-
- // XPATHFILL_SEQ_BEGIN/XPATHFILL_SEQ_END support
- SvtGraphicFill* pSvtGraphicFill = 0;
-
- if(!mnSvtGraphicFillCount && aLocalPolyPolygon.count())
- {
- // setup simple color with transparence fill stuff like in impgrfll
- pSvtGraphicFill = new SvtGraphicFill(
- PolyPolygon(aLocalPolyPolygon),
- Color(aPolygonColor),
- rUniTransparenceCandidate.getTransparence(),
- SvtGraphicFill::fillEvenOdd,
- SvtGraphicFill::fillSolid,
- SvtGraphicFill::Transform(),
- false,
- SvtGraphicFill::hatchSingle,
- Color(),
- SvtGraphicFill::gradientLinear,
- Color(),
- Color(),
- 0,
- Graphic());
- }
-
- // set line and fill color
- const sal_uInt16 nTransPercentVcl((sal_uInt16)basegfx::fround(rUniTransparenceCandidate.getTransparence() * 100.0));
- mpOutputDevice->SetFillColor(Color(aPolygonColor));
- mpOutputDevice->SetLineColor();
-
- // call VCL directly; encapsulate with SvtGraphicFill
- impStartSvtGraphicFill(pSvtGraphicFill);
- mpOutputDevice->DrawTransparent(
- PolyPolygon(aLocalPolyPolygon),
- nTransPercentVcl);
- impEndSvtGraphicFill(pSvtGraphicFill);
- }
- else
- {
- // svae old mfCurrentUnifiedTransparence and set new one
- // so that contained SvtGraphicStroke may use the current one
- const double fLastCurrentUnifiedTransparence(mfCurrentUnifiedTransparence);
- // #i105377# paint the content metafile opaque as the transparency gets
- // split of into the gradient below
- // mfCurrentUnifiedTransparence = rUniTransparenceCandidate.getTransparence();
- mfCurrentUnifiedTransparence = 0;
-
- // various content, create content-metafile
- GDIMetaFile aContentMetafile;
- const Rectangle aPrimitiveRectangle(impDumpToMetaFile(rContent, aContentMetafile));
-
- // restore mfCurrentUnifiedTransparence; it may have been used
- // while processing the sub-content in impDumpToMetaFile
- mfCurrentUnifiedTransparence = fLastCurrentUnifiedTransparence;
-
- // create uniform VCL gradient for uniform transparency
- Gradient aVCLGradient;
- const sal_uInt8 nTransPercentVcl((sal_uInt8)basegfx::fround(rUniTransparenceCandidate.getTransparence() * 255.0));
- const Color aTransColor(nTransPercentVcl, nTransPercentVcl, nTransPercentVcl);
-
- aVCLGradient.SetStyle(GRADIENT_LINEAR);
- aVCLGradient.SetStartColor(aTransColor);
- aVCLGradient.SetEndColor(aTransColor);
- aVCLGradient.SetAngle(0);
- aVCLGradient.SetBorder(0);
- aVCLGradient.SetOfsX(0);
- aVCLGradient.SetOfsY(0);
- aVCLGradient.SetStartIntensity(100);
- aVCLGradient.SetEndIntensity(100);
- aVCLGradient.SetSteps(2);
-
- // render it to VCL
- mpOutputDevice->DrawTransparent(
- aContentMetafile, aPrimitiveRectangle.TopLeft(),
- aPrimitiveRectangle.GetSize(), aVCLGradient);
- }
- }
- }
-
- break;
- }
- case PRIMITIVE2D_ID_TRANSPARENCEPRIMITIVE2D :
- {
- // for metafile: Need to examine what the pure vcl version is doing here actually
- // - uses DrawTransparent with metafile for content and a gradient
- // i can detect this here with checking the gradient part for a single
- // FillGradientPrimitive2D and reconstruct the gradient.
- // If that detection goes wrong, i have to create an transparence-blended bitmap. Eventually
- // do that in stripes, else RenderTransparencePrimitive2D may just be used
- const primitive2d::TransparencePrimitive2D& rTransparenceCandidate = static_cast< const primitive2d::TransparencePrimitive2D& >(rCandidate);
- const primitive2d::Primitive2DSequence rContent = rTransparenceCandidate.getChildren();
- const primitive2d::Primitive2DSequence rTransparence = rTransparenceCandidate.getTransparence();
-
- if(rContent.hasElements() && rTransparence.hasElements())
- {
- // try to identify a single FillGradientPrimitive2D in the
- // transparence part of the primitive
- const primitive2d::FillGradientPrimitive2D* pFiGradient = 0;
- static bool bForceToBigTransparentVDev(false);
-
- if(!bForceToBigTransparentVDev && 1 == rTransparence.getLength())
- {
- const primitive2d::Primitive2DReference xReference(rTransparence[0]);
- pFiGradient = dynamic_cast< const primitive2d::FillGradientPrimitive2D* >(xReference.get());
- }
-
- // Check also for correct ID to exclude derived implementations
- if(pFiGradient && PRIMITIVE2D_ID_FILLGRADIENTPRIMITIVE2D == pFiGradient->getPrimitive2DID())
- {
- // various content, create content-metafile
- GDIMetaFile aContentMetafile;
- const Rectangle aPrimitiveRectangle(impDumpToMetaFile(rContent, aContentMetafile));
-
- // re-create a VCL-gradient from FillGradientPrimitive2D
- Gradient aVCLGradient;
- impConvertFillGradientAttributeToVCLGradient(aVCLGradient, pFiGradient->getFillGradient(), true);
-
- // render it to VCL
- mpOutputDevice->DrawTransparent(
- aContentMetafile, aPrimitiveRectangle.TopLeft(),
- aPrimitiveRectangle.GetSize(), aVCLGradient);
- }
- else
- {
- // sub-transparence group. Draw to VDev first.
- // this may get refined to tiling when resolution is too big here
-
- // need to avoid switching off MapMode stuff here; maybe need another
- // tooling class, cannot just do the same as with the pixel renderer.
- // Need to experiment...
-
- // Okay, basic implementation finished and tested. The DPI stuff was hard
- // and not easy to find out that it's needed.
- // Since this will not yet happen normally (as long as noone constructs
- // transparence primitives with non-trivial transparence content) i will for now not
- // refine to tiling here.
-
- basegfx::B2DRange aViewRange(primitive2d::getB2DRangeFromPrimitive2DSequence(rContent, getViewInformation2D()));
- aViewRange.transform(maCurrentTransformation);
- const Rectangle aRectLogic(
- (sal_Int32)floor(aViewRange.getMinX()), (sal_Int32)floor(aViewRange.getMinY()),
- (sal_Int32)ceil(aViewRange.getMaxX()), (sal_Int32)ceil(aViewRange.getMaxY()));
- const Rectangle aRectPixel(mpOutputDevice->LogicToPixel(aRectLogic));
- const Size aSizePixel(aRectPixel.GetSize());
- const Point aEmptyPoint;
- VirtualDevice aBufferDevice;
-
- if(aBufferDevice.SetOutputSizePixel(aSizePixel))
- {
- // create and set MapModes for target devices
- MapMode aNewMapMode(mpOutputDevice->GetMapMode());
- aNewMapMode.SetOrigin(Point(-aRectLogic.Left(), -aRectLogic.Top()));
- aBufferDevice.SetMapMode(aNewMapMode);
-
- // prepare view transformation for target renderers
- // ATTENTION! Need to apply another scaling because of the potential DPI differences
- // between Printer and VDev (mpOutputDevice and aBufferDevice here).
- // To get the DPI, LogicToPixel from (1,1) from MAP_INCH needs to be used.
- basegfx::B2DHomMatrix aViewTransform(aBufferDevice.GetViewTransformation());
- const Size aDPIOld(mpOutputDevice->LogicToPixel(Size(1, 1), MAP_INCH));
- const Size aDPINew(aBufferDevice.LogicToPixel(Size(1, 1), MAP_INCH));
- const double fDPIXChange((double)aDPIOld.getWidth() / (double)aDPINew.getWidth());
- const double fDPIYChange((double)aDPIOld.getHeight() / (double)aDPINew.getHeight());
-
- if(!basegfx::fTools::equal(fDPIXChange, 1.0) || !basegfx::fTools::equal(fDPIYChange, 1.0))
- {
- aViewTransform.scale(fDPIXChange, fDPIYChange);
- }
-
- // create view information and pixel renderer. Reuse known ViewInformation
- // except new transformation and range
- const geometry::ViewInformation2D aViewInfo(
- getViewInformation2D().getObjectTransformation(),
- aViewTransform,
- aViewRange,
- getViewInformation2D().getVisualizedPage(),
- getViewInformation2D().getViewTime(),
- getViewInformation2D().getExtendedInformationSequence());
-
- VclPixelProcessor2D aBufferProcessor(aViewInfo, aBufferDevice);
-
- // draw content using pixel renderer
- aBufferProcessor.process(rContent);
- const Bitmap aBmContent(aBufferDevice.GetBitmap(aEmptyPoint, aSizePixel));
-
- // draw transparence using pixel renderer
- aBufferDevice.Erase();
- aBufferProcessor.process(rTransparence);
- const AlphaMask aBmAlpha(aBufferDevice.GetBitmap(aEmptyPoint, aSizePixel));
-
- // paint
- mpOutputDevice->DrawBitmapEx(
- aRectLogic.TopLeft(),
- aRectLogic.GetSize(),
- BitmapEx(aBmContent, aBmAlpha));
- }
- }
- }
-
- break;
- }
- case PRIMITIVE2D_ID_TRANSFORMPRIMITIVE2D :
- {
- // use default transform group pocessing
- RenderTransformPrimitive2D(static_cast< const primitive2d::TransformPrimitive2D& >(rCandidate));
- break;
- }
- case PRIMITIVE2D_ID_PAGEPREVIEWPRIMITIVE2D :
- {
- // new XDrawPage for ViewInformation2D
- RenderPagePreviewPrimitive2D(static_cast< const primitive2d::PagePreviewPrimitive2D& >(rCandidate));
- break;
- }
- case PRIMITIVE2D_ID_MARKERARRAYPRIMITIVE2D :
- {
- // use default marker array pocessing
- RenderMarkerArrayPrimitive2D(static_cast< const primitive2d::MarkerArrayPrimitive2D& >(rCandidate));
- break;
- }
- case PRIMITIVE2D_ID_POINTARRAYPRIMITIVE2D :
- {
- // use default point array pocessing
- RenderPointArrayPrimitive2D(static_cast< const primitive2d::PointArrayPrimitive2D& >(rCandidate));
- break;
- }
- case PRIMITIVE2D_ID_CHARTPRIMITIVE2D :
- {
- // ChartPrimitive2D
- const primitive2d::ChartPrimitive2D& rChartPrimitive = static_cast< const primitive2d::ChartPrimitive2D& >(rCandidate);
-
- if(!renderChartPrimitive2D(
- rChartPrimitive,
- *mpOutputDevice,
- getViewInformation2D()))
- {
- // fallback to decomposition (MetaFile)
- process(rChartPrimitive.get2DDecomposition(getViewInformation2D()));
- }
- break;
- }
- case PRIMITIVE2D_ID_STRUCTURETAGPRIMITIVE2D :
- {
- // structured tag primitive
- const primitive2d::StructureTagPrimitive2D& rStructureTagCandidate = static_cast< const primitive2d::StructureTagPrimitive2D& >(rCandidate);
- const vcl::PDFWriter::StructElement& rTagElement(rStructureTagCandidate.getStructureElement());
- const bool bTagUsed(vcl::PDFWriter::NonStructElement != rTagElement);
-
- if(mpPDFExtOutDevData && bTagUsed)
- {
- // write start tag
- mpPDFExtOutDevData->BeginStructureElement(rTagElement);
- }
-
- // proccess childs normally
- process(rStructureTagCandidate.getChildren());
-
- if(mpPDFExtOutDevData && bTagUsed)
- {
- // write end tag
- mpPDFExtOutDevData->EndStructureElement();
- }
-
- break;
- }
- case PRIMITIVE2D_ID_EPSPRIMITIVE2D :
- {
- RenderEpsPrimitive2D(static_cast< const primitive2d::EpsPrimitive2D& >(rCandidate));
- break;
- }
- default :
- {
- // process recursively
- process(rCandidate.get2DDecomposition(getViewInformation2D()));
- break;
- }
- }
- }
- } // end of namespace processor2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/processor2d/vclpixelprocessor2d.cxx b/drawinglayer/source/processor2d/vclpixelprocessor2d.cxx
deleted file mode 100644
index 9db1485af3..0000000000
--- a/drawinglayer/source/processor2d/vclpixelprocessor2d.cxx
+++ /dev/null
@@ -1,625 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/processor2d/vclpixelprocessor2d.hxx>
-#include <vcl/outdev.hxx>
-#include <drawinglayer/primitive2d/drawinglayer_primitivetypes2d.hxx>
-#include <drawinglayer/primitive2d/textprimitive2d.hxx>
-#include <drawinglayer/primitive2d/polypolygonprimitive2d.hxx>
-#include <drawinglayer/primitive2d/polygonprimitive2d.hxx>
-#include <drawinglayer/primitive2d/bitmapprimitive2d.hxx>
-#include <drawinglayer/primitive2d/rendergraphicprimitive2d.hxx>
-#include <drawinglayer/primitive2d/fillbitmapprimitive2d.hxx>
-#include <drawinglayer/primitive2d/metafileprimitive2d.hxx>
-#include <drawinglayer/primitive2d/maskprimitive2d.hxx>
-#include <drawinglayer/primitive2d/modifiedcolorprimitive2d.hxx>
-#include <drawinglayer/primitive2d/transparenceprimitive2d.hxx>
-#include <drawinglayer/primitive2d/transformprimitive2d.hxx>
-#include <drawinglayer/primitive2d/markerarrayprimitive2d.hxx>
-#include <drawinglayer/primitive2d/pointarrayprimitive2d.hxx>
-#include <drawinglayer/primitive2d/wrongspellprimitive2d.hxx>
-#include <drawinglayer/primitive2d/controlprimitive2d.hxx>
-#include <com/sun/star/awt/XWindow2.hpp>
-#include <drawinglayer/primitive2d/unifiedtransparenceprimitive2d.hxx>
-#include <drawinglayer/primitive2d/pagepreviewprimitive2d.hxx>
-#include <drawinglayer/primitive2d/chartprimitive2d.hxx>
-#include <helperchartrenderer.hxx>
-#include <helperwrongspellrenderer.hxx>
-#include <drawinglayer/primitive2d/fillhatchprimitive2d.hxx>
-#include <basegfx/polygon/b2dpolygontools.hxx>
-#include <vcl/hatch.hxx>
-#include <tools/diagnose_ex.h>
-#include <com/sun/star/awt/PosSize.hpp>
-#include <drawinglayer/primitive2d/invertprimitive2d.hxx>
-#include <cstdio>
-#include <drawinglayer/primitive2d/backgroundcolorprimitive2d.hxx>
-#include <basegfx/matrix/b2dhommatrixtools.hxx>
-#include <drawinglayer/primitive2d/epsprimitive2d.hxx>
-
-#include <toolkit/helper/vclunohelper.hxx>
-#include <vcl/window.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-using namespace com::sun::star;
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace processor2d
- {
- VclPixelProcessor2D::VclPixelProcessor2D(const geometry::ViewInformation2D& rViewInformation, OutputDevice& rOutDev)
- : VclProcessor2D(rViewInformation, rOutDev),
- maOriginalMapMode(rOutDev.GetMapMode())
- {
- // prepare maCurrentTransformation matrix with viewTransformation to target directly to pixels
- maCurrentTransformation = rViewInformation.getObjectToViewTransformation();
-
- // prepare output directly to pixels
- mpOutputDevice->Push(PUSH_MAPMODE);
- mpOutputDevice->SetMapMode();
-
- // react on AntiAliasing settings
- if(getOptionsDrawinglayer().IsAntiAliasing())
- {
- mpOutputDevice->SetAntialiasing(mpOutputDevice->GetAntialiasing() | ANTIALIASING_ENABLE_B2DDRAW);
- }
- else
- {
- mpOutputDevice->SetAntialiasing(mpOutputDevice->GetAntialiasing() & ~ANTIALIASING_ENABLE_B2DDRAW);
- }
- }
-
- VclPixelProcessor2D::~VclPixelProcessor2D()
- {
- // restore MapMode
- mpOutputDevice->Pop();
-
- // restore AntiAliasing
- mpOutputDevice->SetAntialiasing(mpOutputDevice->GetAntialiasing() & ~ANTIALIASING_ENABLE_B2DDRAW);
- }
-
- void VclPixelProcessor2D::processBasePrimitive2D(const primitive2d::BasePrimitive2D& rCandidate)
- {
- switch(rCandidate.getPrimitive2DID())
- {
- case PRIMITIVE2D_ID_WRONGSPELLPRIMITIVE2D :
- {
- // directdraw of wrong spell primitive; added test possibility to check wrong spell decompose
- static bool bHandleWrongSpellDirectly(true);
-
- if(bHandleWrongSpellDirectly)
- {
- const primitive2d::WrongSpellPrimitive2D& rWrongSpellPrimitive = static_cast< const primitive2d::WrongSpellPrimitive2D& >(rCandidate);
-
- if(!renderWrongSpellPrimitive2D(
- rWrongSpellPrimitive,
- *mpOutputDevice,
- maCurrentTransformation,
- maBColorModifierStack))
- {
- // fallback to decomposition (MetaFile)
- process(rWrongSpellPrimitive.get2DDecomposition(getViewInformation2D()));
- }
- }
- else
- {
- process(rCandidate.get2DDecomposition(getViewInformation2D()));
- }
- break;
- }
- case PRIMITIVE2D_ID_TEXTSIMPLEPORTIONPRIMITIVE2D :
- {
- // directdraw of text simple portion; added test possibility to check text decompose
- static bool bForceSimpleTextDecomposition(false);
-
- // Adapt evtl. used special DrawMode
- const sal_uInt32 nOriginalDrawMode(mpOutputDevice->GetDrawMode());
- adaptTextToFillDrawMode();
-
- if(!bForceSimpleTextDecomposition && getOptionsDrawinglayer().IsRenderSimpleTextDirect())
- {
- RenderTextSimpleOrDecoratedPortionPrimitive2D(static_cast< const primitive2d::TextSimplePortionPrimitive2D& >(rCandidate));
- }
- else
- {
- process(rCandidate.get2DDecomposition(getViewInformation2D()));
- }
-
- // restore DrawMode
- mpOutputDevice->SetDrawMode(nOriginalDrawMode);
-
- break;
- }
- case PRIMITIVE2D_ID_TEXTDECORATEDPORTIONPRIMITIVE2D :
- {
- // directdraw of text simple portion; added test possibility to check text decompose
- static bool bForceComplexTextDecomposition(false);
-
- // Adapt evtl. used special DrawMode
- const sal_uInt32 nOriginalDrawMode(mpOutputDevice->GetDrawMode());
- adaptTextToFillDrawMode();
-
- if(!bForceComplexTextDecomposition && getOptionsDrawinglayer().IsRenderDecoratedTextDirect())
- {
- RenderTextSimpleOrDecoratedPortionPrimitive2D(static_cast< const primitive2d::TextSimplePortionPrimitive2D& >(rCandidate));
- }
- else
- {
- process(rCandidate.get2DDecomposition(getViewInformation2D()));
- }
-
- // restore DrawMode
- mpOutputDevice->SetDrawMode(nOriginalDrawMode);
-
- break;
- }
- case PRIMITIVE2D_ID_POLYGONHAIRLINEPRIMITIVE2D :
- {
- // direct draw of hairline
- RenderPolygonHairlinePrimitive2D(static_cast< const primitive2d::PolygonHairlinePrimitive2D& >(rCandidate), true);
- break;
- }
- case PRIMITIVE2D_ID_BITMAPPRIMITIVE2D :
- {
- // direct draw of transformed BitmapEx primitive
- RenderBitmapPrimitive2D(static_cast< const primitive2d::BitmapPrimitive2D& >(rCandidate));
- break;
- }
- case PRIMITIVE2D_ID_RENDERGRAPHICPRIMITIVE2D :
- {
- // direct draw of transformed BitmapEx primitive
- RenderRenderGraphicPrimitive2D(static_cast< const primitive2d::RenderGraphicPrimitive2D& >(rCandidate));
- break;
- }
- case PRIMITIVE2D_ID_FILLBITMAPPRIMITIVE2D :
- {
- // direct draw of fillBitmapPrimitive
- RenderFillBitmapPrimitive2D(static_cast< const primitive2d::FillBitmapPrimitive2D& >(rCandidate));
- break;
- }
- case PRIMITIVE2D_ID_POLYPOLYGONGRADIENTPRIMITIVE2D :
- {
- // direct draw of gradient
- RenderPolyPolygonGradientPrimitive2D(static_cast< const primitive2d::PolyPolygonGradientPrimitive2D& >(rCandidate));
- break;
- }
- case PRIMITIVE2D_ID_POLYPOLYGONBITMAPPRIMITIVE2D :
- {
- // direct draw of bitmap
- RenderPolyPolygonBitmapPrimitive2D(static_cast< const primitive2d::PolyPolygonBitmapPrimitive2D& >(rCandidate));
- break;
- }
- case PRIMITIVE2D_ID_POLYPOLYGONCOLORPRIMITIVE2D :
- {
- // direct draw of PolyPolygon with color
- RenderPolyPolygonColorPrimitive2D(static_cast< const primitive2d::PolyPolygonColorPrimitive2D& >(rCandidate));
- break;
- }
- case PRIMITIVE2D_ID_METAFILEPRIMITIVE2D :
- {
- // #i98289#
- const bool bForceLineSnap(getOptionsDrawinglayer().IsAntiAliasing() && getOptionsDrawinglayer().IsSnapHorVerLinesToDiscrete());
- const sal_uInt16 nOldAntiAliase(mpOutputDevice->GetAntialiasing());
-
- if(bForceLineSnap)
- {
- mpOutputDevice->SetAntialiasing(nOldAntiAliase | ANTIALIASING_PIXELSNAPHAIRLINE);
- }
-
- const primitive2d::MetafilePrimitive2D& rMetafilePrimitive( static_cast< const primitive2d::MetafilePrimitive2D& >(rCandidate) );
-
- static bool bTestMetaFilePrimitiveDecomposition( true );
- if( bTestMetaFilePrimitiveDecomposition && !rMetafilePrimitive.getMetaFile().GetUseCanvas() )
- {
- // use new Metafile decomposition
- process(rCandidate.get2DDecomposition(getViewInformation2D()));
- }
- else
- {
- // direct draw of MetaFile
- RenderMetafilePrimitive2D( rMetafilePrimitive );
- }
-
- if(bForceLineSnap)
- {
- mpOutputDevice->SetAntialiasing(nOldAntiAliase);
- }
-
- break;
- }
- case PRIMITIVE2D_ID_MASKPRIMITIVE2D :
- {
- // mask group.
- RenderMaskPrimitive2DPixel(static_cast< const primitive2d::MaskPrimitive2D& >(rCandidate));
- break;
- }
- case PRIMITIVE2D_ID_MODIFIEDCOLORPRIMITIVE2D :
- {
- // modified color group. Force output to unified color.
- RenderModifiedColorPrimitive2D(static_cast< const primitive2d::ModifiedColorPrimitive2D& >(rCandidate));
- break;
- }
- case PRIMITIVE2D_ID_UNIFIEDTRANSPARENCEPRIMITIVE2D :
- {
- // Detect if a single PolyPolygonColorPrimitive2D is contained; in that case,
- // use the faster OutputDevice::DrawTransparent method
- const primitive2d::UnifiedTransparencePrimitive2D& rUniTransparenceCandidate = static_cast< const primitive2d::UnifiedTransparencePrimitive2D& >(rCandidate);
- const primitive2d::Primitive2DSequence rContent = rUniTransparenceCandidate.getChildren();
-
- if(rContent.hasElements())
- {
- if(0.0 == rUniTransparenceCandidate.getTransparence())
- {
- // not transparent at all, use content
- process(rUniTransparenceCandidate.getChildren());
- }
- else if(rUniTransparenceCandidate.getTransparence() > 0.0 && rUniTransparenceCandidate.getTransparence() < 1.0)
- {
- bool bDrawTransparentUsed(false);
-
- // since DEV300 m33 DrawTransparent is supported in VCL (for some targets
- // natively), so i am now enabling this shortcut
- static bool bAllowUsingDrawTransparent(true);
-
- if(bAllowUsingDrawTransparent && 1 == rContent.getLength())
- {
- const primitive2d::Primitive2DReference xReference(rContent[0]);
- const primitive2d::BasePrimitive2D* pBasePrimitive = dynamic_cast< const primitive2d::BasePrimitive2D* >(xReference.get());
-
- if(pBasePrimitive)
- {
- switch(pBasePrimitive->getPrimitive2DID())
- {
- case PRIMITIVE2D_ID_POLYPOLYGONCOLORPRIMITIVE2D:
- {
- // single transparent PolyPolygon identified, use directly
- const primitive2d::PolyPolygonColorPrimitive2D* pPoPoColor = static_cast< const primitive2d::PolyPolygonColorPrimitive2D* >(pBasePrimitive);
- OSL_ENSURE(pPoPoColor, "OOps, PrimitiveID and PrimitiveType do not match (!)");
- const basegfx::BColor aPolygonColor(maBColorModifierStack.getModifiedColor(pPoPoColor->getBColor()));
- mpOutputDevice->SetFillColor(Color(aPolygonColor));
- mpOutputDevice->SetLineColor();
-
- basegfx::B2DPolyPolygon aLocalPolyPolygon(pPoPoColor->getB2DPolyPolygon());
- aLocalPolyPolygon.transform(maCurrentTransformation);
-
- mpOutputDevice->DrawTransparent(aLocalPolyPolygon, rUniTransparenceCandidate.getTransparence());
- bDrawTransparentUsed = true;
- break;
- }
- // #i# need to wait for #i101378# which is in CWS vcl112 to directly paint transparent hairlines
- //case PRIMITIVE2D_ID_POLYGONHAIRLINEPRIMITIVE2D:
- //{
- // // single transparent PolygonHairlinePrimitive2D identified, use directly
- // const primitive2d::PolygonHairlinePrimitive2D* pPoHair = static_cast< const primitive2d::PolygonHairlinePrimitive2D* >(pBasePrimitive);
- // OSL_ENSURE(pPoHair, "OOps, PrimitiveID and PrimitiveType do not match (!)");
- // break;
- //}
- }
- }
- }
-
- if(!bDrawTransparentUsed)
- {
- // unified sub-transparence. Draw to VDev first.
- RenderUnifiedTransparencePrimitive2D(rUniTransparenceCandidate);
- }
- }
- }
-
- break;
- }
- case PRIMITIVE2D_ID_TRANSPARENCEPRIMITIVE2D :
- {
- // sub-transparence group. Draw to VDev first.
- RenderTransparencePrimitive2D(static_cast< const primitive2d::TransparencePrimitive2D& >(rCandidate));
- break;
- }
- case PRIMITIVE2D_ID_TRANSFORMPRIMITIVE2D :
- {
- // transform group.
- RenderTransformPrimitive2D(static_cast< const primitive2d::TransformPrimitive2D& >(rCandidate));
- break;
- }
- case PRIMITIVE2D_ID_PAGEPREVIEWPRIMITIVE2D :
- {
- // new XDrawPage for ViewInformation2D
- RenderPagePreviewPrimitive2D(static_cast< const primitive2d::PagePreviewPrimitive2D& >(rCandidate));
- break;
- }
- case PRIMITIVE2D_ID_MARKERARRAYPRIMITIVE2D :
- {
- // marker array
- RenderMarkerArrayPrimitive2D(static_cast< const primitive2d::MarkerArrayPrimitive2D& >(rCandidate));
- break;
- }
- case PRIMITIVE2D_ID_POINTARRAYPRIMITIVE2D :
- {
- // point array
- RenderPointArrayPrimitive2D(static_cast< const primitive2d::PointArrayPrimitive2D& >(rCandidate));
- break;
- }
- case PRIMITIVE2D_ID_CONTROLPRIMITIVE2D :
- {
- // control primitive
- const primitive2d::ControlPrimitive2D& rControlPrimitive = static_cast< const primitive2d::ControlPrimitive2D& >(rCandidate);
- const uno::Reference< awt::XControl >& rXControl(rControlPrimitive.getXControl());
-
- try
- {
- // remember old graphics and create new
- uno::Reference< awt::XView > xControlView(rXControl, uno::UNO_QUERY_THROW);
- const uno::Reference< awt::XGraphics > xOriginalGraphics(xControlView->getGraphics());
- const uno::Reference< awt::XGraphics > xNewGraphics(mpOutputDevice->CreateUnoGraphics());
-
- if(xNewGraphics.is())
- {
- // link graphics and view
- xControlView->setGraphics(xNewGraphics);
-
- // get position
- const basegfx::B2DHomMatrix aObjectToPixel(maCurrentTransformation * rControlPrimitive.getTransform());
- const basegfx::B2DPoint aTopLeftPixel(aObjectToPixel * basegfx::B2DPoint(0.0, 0.0));
-
- // find out if the control is already visualized as a VCL-ChildWindow. If yes,
- // it does not need to be painted at all.
- uno::Reference< awt::XWindow2 > xControlWindow(rXControl, uno::UNO_QUERY_THROW);
- const bool bControlIsVisibleAsChildWindow(rXControl->getPeer().is() && xControlWindow->isVisible());
-
- if(!bControlIsVisibleAsChildWindow)
- {
- // draw it. Do not forget to use the evtl. offsetted origin of the target device,
- // e.g. when used with mask/transparence buffer device
- const Point aOrigin(mpOutputDevice->GetMapMode().GetOrigin());
- xControlView->draw(
- aOrigin.X() + basegfx::fround(aTopLeftPixel.getX()),
- aOrigin.Y() + basegfx::fround(aTopLeftPixel.getY()));
- }
-
- // restore original graphics
- xControlView->setGraphics(xOriginalGraphics);
- }
- }
- catch(const uno::Exception&)
- {
- DBG_UNHANDLED_EXCEPTION();
-
- // process recursively and use the decomposition as Bitmap
- process(rCandidate.get2DDecomposition(getViewInformation2D()));
- }
-
- break;
- }
- case PRIMITIVE2D_ID_POLYGONSTROKEPRIMITIVE2D:
- {
- // the stroke primitive may be decomposed to filled polygons. To keep
- // evtl. set DrawModes aka DRAWMODE_BLACKLINE, DRAWMODE_GRAYLINE,
- // DRAWMODE_GHOSTEDLINE, DRAWMODE_WHITELINE or DRAWMODE_SETTINGSLINE
- // working, these need to be copied to the corresponding fill modes
- const sal_uInt32 nOriginalDrawMode(mpOutputDevice->GetDrawMode());
- adaptLineToFillDrawMode();
-
- // polygon stroke primitive
- static bool bSuppressFatToHairlineCorrection(false);
-
- if(bSuppressFatToHairlineCorrection)
- {
- // remeber that we enter a PolygonStrokePrimitive2D decomposition,
- // used for AA thick line drawing
- mnPolygonStrokePrimitive2D++;
-
- // with AA there is no need to handle thin lines special
- process(rCandidate.get2DDecomposition(getViewInformation2D()));
-
- // leave PolygonStrokePrimitive2D
- mnPolygonStrokePrimitive2D--;
- }
- else
- {
- // Lines with 1 and 2 pixel width without AA need special treatment since their vsiualisation
- // as filled polygons is geometrically corret but looks wrong since polygon filling avoids
- // the right and bottom pixels. The used method evaluates that and takes the correct action,
- // including calling recursively with decomposition if line is wide enough
- const primitive2d::PolygonStrokePrimitive2D& rPolygonStrokePrimitive = static_cast< const primitive2d::PolygonStrokePrimitive2D& >(rCandidate);
-
- RenderPolygonStrokePrimitive2D(rPolygonStrokePrimitive);
- }
-
- // restore DrawMode
- mpOutputDevice->SetDrawMode(nOriginalDrawMode);
-
- break;
- }
- case PRIMITIVE2D_ID_CHARTPRIMITIVE2D :
- {
- // chart primitive in pixel renderer; restore original DrawMode during call
- // since the evtl. used ChartPrettyPainter will use the MapMode
- const primitive2d::ChartPrimitive2D& rChartPrimitive = static_cast< const primitive2d::ChartPrimitive2D& >(rCandidate);
- mpOutputDevice->Push(PUSH_MAPMODE);
- mpOutputDevice->SetMapMode(maOriginalMapMode);
-
- if(!renderChartPrimitive2D(
- rChartPrimitive,
- *mpOutputDevice,
- getViewInformation2D()))
- {
- // fallback to decomposition (MetaFile)
- process(rChartPrimitive.get2DDecomposition(getViewInformation2D()));
- }
-
- mpOutputDevice->Pop();
- break;
- }
- case PRIMITIVE2D_ID_FILLHATCHPRIMITIVE2D :
- {
- static bool bForceIgnoreHatchSmoothing(false);
-
- if(bForceIgnoreHatchSmoothing || getOptionsDrawinglayer().IsAntiAliasing())
- {
- // if AA is used (or ignore smoothing is on), there is no need to smooth
- // hatch painting, use decomposition
- process(rCandidate.get2DDecomposition(getViewInformation2D()));
- }
- else
- {
- // without AA, use VCL to draw the hatch. It snaps hatch distances to the next pixel
- // and forces hatch distance to be >= 3 pixels to make the hatch display look smoother.
- // This is wrong in principle, but looks nicer. This could also be done here directly
- // without VCL usage if needed
- const primitive2d::FillHatchPrimitive2D& rFillHatchPrimitive = static_cast< const primitive2d::FillHatchPrimitive2D& >(rCandidate);
- const attribute::FillHatchAttribute& rFillHatchAttributes = rFillHatchPrimitive.getFillHatch();
-
- // create hatch polygon in range size and discrete coordinates
- basegfx::B2DRange aHatchRange(rFillHatchPrimitive.getObjectRange());
- aHatchRange.transform(maCurrentTransformation);
- const basegfx::B2DPolygon aHatchPolygon(basegfx::tools::createPolygonFromRect(aHatchRange));
-
- if(rFillHatchAttributes.isFillBackground())
- {
- // #i111846# background fill is active; draw fill polygon
- const basegfx::BColor aPolygonColor(maBColorModifierStack.getModifiedColor(rFillHatchPrimitive.getBColor()));
-
- mpOutputDevice->SetFillColor(Color(aPolygonColor));
- mpOutputDevice->SetLineColor();
- mpOutputDevice->DrawPolygon(aHatchPolygon);
- }
-
- // set hatch line color
- const basegfx::BColor aHatchColor(maBColorModifierStack.getModifiedColor(rFillHatchPrimitive.getBColor()));
- mpOutputDevice->SetFillColor();
- mpOutputDevice->SetLineColor(Color(aHatchColor));
-
- // get hatch style
- HatchStyle eHatchStyle(HATCH_SINGLE);
-
- switch(rFillHatchAttributes.getStyle())
- {
- default : // HATCHSTYLE_SINGLE
- {
- break;
- }
- case attribute::HATCHSTYLE_DOUBLE :
- {
- eHatchStyle = HATCH_DOUBLE;
- break;
- }
- case attribute::HATCHSTYLE_TRIPLE :
- {
- eHatchStyle = HATCH_TRIPLE;
- break;
- }
- }
-
- // create hatch
- const basegfx::B2DVector aDiscreteDistance(maCurrentTransformation * basegfx::B2DVector(rFillHatchAttributes.getDistance(), 0.0));
- const sal_uInt32 nDistance(basegfx::fround(aDiscreteDistance.getLength()));
- const sal_uInt16 nAngle10((sal_uInt16)basegfx::fround(rFillHatchAttributes.getAngle() / F_PI1800));
- ::Hatch aVCLHatch(eHatchStyle, Color(rFillHatchAttributes.getColor()), nDistance, nAngle10);
-
- // draw hatch using VCL
- mpOutputDevice->DrawHatch(PolyPolygon(Polygon(aHatchPolygon)), aVCLHatch);
- }
- break;
- }
- case PRIMITIVE2D_ID_BACKGROUNDCOLORPRIMITIVE2D :
- {
- // #i98404# Handle directly, especially when AA is active
- const primitive2d::BackgroundColorPrimitive2D& rPrimitive = static_cast< const primitive2d::BackgroundColorPrimitive2D& >(rCandidate);
- const sal_uInt16 nOriginalAA(mpOutputDevice->GetAntialiasing());
-
- // switch AA off in all cases
- mpOutputDevice->SetAntialiasing(mpOutputDevice->GetAntialiasing() & ~ANTIALIASING_ENABLE_B2DDRAW);
-
- // create color for fill
- const basegfx::BColor aPolygonColor(maBColorModifierStack.getModifiedColor(rPrimitive.getBColor()));
- mpOutputDevice->SetFillColor(Color(aPolygonColor));
- mpOutputDevice->SetLineColor();
-
- // create rectangle for fill
- const basegfx::B2DRange& aViewport(getViewInformation2D().getDiscreteViewport());
- const Rectangle aRectangle(
- (sal_Int32)floor(aViewport.getMinX()), (sal_Int32)floor(aViewport.getMinY()),
- (sal_Int32)ceil(aViewport.getMaxX()), (sal_Int32)ceil(aViewport.getMaxY()));
- mpOutputDevice->DrawRect(aRectangle);
-
- // restore AA setting
- mpOutputDevice->SetAntialiasing(nOriginalAA);
- break;
- }
- case PRIMITIVE2D_ID_TEXTHIERARCHYEDITPRIMITIVE2D :
- {
- // #i97628#
- // This primitive means that the content is derived from an active text edit,
- // not from model data itself. Some renderers need to suppress this content, e.g.
- // the pixel renderer used for displaying the edit view (like this one). It's
- // not to be suppressed by the MetaFile renderers, so that the edited text is
- // part of the MetaFile, e.g. needed for presentation previews.
- // Action: Ignore here, do nothing.
- break;
- }
- case PRIMITIVE2D_ID_INVERTPRIMITIVE2D :
- {
- // invert primitive (currently only used for HighContrast fallback for selection in SW and SC).
- // Set OutDev to XOR and switch AA off (XOR does not work with AA)
- mpOutputDevice->Push();
- mpOutputDevice->SetRasterOp( ROP_XOR );
- const sal_uInt16 nAntiAliasing(mpOutputDevice->GetAntialiasing());
- mpOutputDevice->SetAntialiasing(nAntiAliasing & ~ANTIALIASING_ENABLE_B2DDRAW);
-
- // process content recursively
- process(rCandidate.get2DDecomposition(getViewInformation2D()));
-
- // restore OutDev
- mpOutputDevice->Pop();
- mpOutputDevice->SetAntialiasing(nAntiAliasing);
- break;
- }
- case PRIMITIVE2D_ID_EPSPRIMITIVE2D :
- {
- RenderEpsPrimitive2D(static_cast< const primitive2d::EpsPrimitive2D& >(rCandidate));
- break;
- }
- default :
- {
- // process recursively
- process(rCandidate.get2DDecomposition(getViewInformation2D()));
- break;
- }
- }
- }
- } // end of namespace processor2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/processor2d/vclprocessor2d.cxx b/drawinglayer/source/processor2d/vclprocessor2d.cxx
deleted file mode 100644
index 5b0897d7aa..0000000000
--- a/drawinglayer/source/processor2d/vclprocessor2d.cxx
+++ /dev/null
@@ -1,1593 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/processor2d/vclprocessor2d.hxx>
-#include <drawinglayer/primitive2d/textprimitive2d.hxx>
-#include <drawinglayer/primitive2d/textdecoratedprimitive2d.hxx>
-#include <tools/debug.hxx>
-#include <vcl/outdev.hxx>
-#include <drawinglayer/primitive2d/polygonprimitive2d.hxx>
-#include <drawinglayer/primitive2d/bitmapprimitive2d.hxx>
-#include <drawinglayer/primitive2d/rendergraphicprimitive2d.hxx>
-#include <vclhelperbitmaptransform.hxx>
-#include <basegfx/polygon/b2dpolygontools.hxx>
-#include <vclhelperbitmaprender.hxx>
-#include <drawinglayer/attribute/sdrfillbitmapattribute.hxx>
-#include <drawinglayer/primitive2d/fillbitmapprimitive2d.hxx>
-#include <drawinglayer/primitive2d/polypolygonprimitive2d.hxx>
-#include <vclhelpergradient.hxx>
-#include <drawinglayer/primitive2d/metafileprimitive2d.hxx>
-#include <drawinglayer/primitive2d/maskprimitive2d.hxx>
-#include <basegfx/polygon/b2dpolypolygontools.hxx>
-#include <vclhelperbufferdevice.hxx>
-#include <drawinglayer/primitive2d/modifiedcolorprimitive2d.hxx>
-#include <drawinglayer/primitive2d/unifiedtransparenceprimitive2d.hxx>
-#include <drawinglayer/primitive2d/transparenceprimitive2d.hxx>
-#include <drawinglayer/primitive2d/transformprimitive2d.hxx>
-#include <drawinglayer/primitive2d/markerarrayprimitive2d.hxx>
-#include <drawinglayer/primitive2d/pointarrayprimitive2d.hxx>
-#include <drawinglayer/primitive2d/wrongspellprimitive2d.hxx>
-#include <svl/ctloptions.hxx>
-#include <vcl/svapp.hxx>
-#include <drawinglayer/primitive2d/pagepreviewprimitive2d.hxx>
-#include <tools/diagnose_ex.h>
-#include <vcl/metric.hxx>
-#include <drawinglayer/primitive2d/textenumsprimitive2d.hxx>
-#include <drawinglayer/primitive2d/epsprimitive2d.hxx>
-#include <vcl/rendergraphicrasterizer.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-// control support
-
-#include <com/sun/star/awt/XWindow2.hpp>
-#include <com/sun/star/awt/PosSize.hpp>
-#include <com/sun/star/awt/XView.hpp>
-#include <drawinglayer/primitive2d/controlprimitive2d.hxx>
-#include <drawinglayer/primitive2d/textlayoutdevice.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-// for test, can be removed again
-
-#include <basegfx/polygon/b2dpolygonclipper.hxx>
-#include <basegfx/polygon/b2dtrapezoid.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-using namespace com::sun::star;
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace processor2d
- {
- //////////////////////////////////////////////////////////////////////////////
- // UNO class usages
- using ::com::sun::star::uno::Reference;
- using ::com::sun::star::uno::UNO_QUERY;
- using ::com::sun::star::uno::UNO_QUERY_THROW;
- using ::com::sun::star::uno::Exception;
- using ::com::sun::star::awt::XView;
- using ::com::sun::star::awt::XGraphics;
- using ::com::sun::star::awt::XWindow;
- using ::com::sun::star::awt::PosSize::POSSIZE;
-
- //////////////////////////////////////////////////////////////////////////////
- // rendering support
-
- // directdraw of text simple portion or decorated portion primitive. When decorated, all the extra
- // information is translated to VCL parameters and set at the font.
- // Acceptance is restricted to no shearing and positive scaling in X and Y (no font mirroring
- // for VCL)
- void VclProcessor2D::RenderTextSimpleOrDecoratedPortionPrimitive2D(const primitive2d::TextSimplePortionPrimitive2D& rTextCandidate)
- {
- // decompose matrix to have position and size of text
- basegfx::B2DHomMatrix aLocalTransform(maCurrentTransformation * rTextCandidate.getTextTransform());
- basegfx::B2DVector aFontScaling, aTranslate;
- double fRotate, fShearX;
- aLocalTransform.decompose(aFontScaling, aTranslate, fRotate, fShearX);
- bool bPrimitiveAccepted(false);
-
- if(basegfx::fTools::equalZero(fShearX))
- {
- if(basegfx::fTools::less(aFontScaling.getX(), 0.0) && basegfx::fTools::less(aFontScaling.getY(), 0.0))
- {
- // handle special case: If scale is negative in (x,y) (3rd quadrant), it can
- // be expressed as rotation by PI. Use this since the Font rendering will not
- // apply the negative scales in any form
- aFontScaling = basegfx::absolute(aFontScaling);
- fRotate += F_PI;
- }
-
- if(basegfx::fTools::more(aFontScaling.getX(), 0.0) && basegfx::fTools::more(aFontScaling.getY(), 0.0))
- {
- // Get the VCL font (use FontHeight as FontWidth)
- Font aFont(primitive2d::getVclFontFromFontAttribute(
- rTextCandidate.getFontAttribute(),
- aFontScaling.getX(),
- aFontScaling.getY(),
- fRotate,
- rTextCandidate.getLocale()));
-
- // handle additional font attributes
- const primitive2d::TextDecoratedPortionPrimitive2D* pTCPP =
- dynamic_cast<const primitive2d::TextDecoratedPortionPrimitive2D*>( &rTextCandidate );
-
- if( pTCPP != NULL )
- {
-
- // set the color of text decorations
- const basegfx::BColor aTextlineColor = maBColorModifierStack.getModifiedColor(pTCPP->getTextlineColor());
- mpOutputDevice->SetTextLineColor( Color(aTextlineColor) );
-
- // set Overline attribute
- const FontUnderline eFontOverline(primitive2d::mapTextLineToFontUnderline( pTCPP->getFontOverline() ));
- if( eFontOverline != UNDERLINE_NONE )
- {
- aFont.SetOverline( eFontOverline );
- const basegfx::BColor aOverlineColor = maBColorModifierStack.getModifiedColor(pTCPP->getOverlineColor());
- mpOutputDevice->SetOverlineColor( Color(aOverlineColor) );
- if( pTCPP->getWordLineMode() )
- aFont.SetWordLineMode( true );
- }
-
- // set Underline attribute
- const FontUnderline eFontUnderline(primitive2d::mapTextLineToFontUnderline( pTCPP->getFontUnderline() ));
- if( eFontUnderline != UNDERLINE_NONE )
- {
- aFont.SetUnderline( eFontUnderline );
- if( pTCPP->getWordLineMode() )
- aFont.SetWordLineMode( true );
-//TODO: ??? if( pTCPP->getUnderlineAbove() )
-// aFont.SetUnderlineAbove( true );
- }
-
- // set Strikeout attribute
- const FontStrikeout eFontStrikeout(primitive2d::mapTextStrikeoutToFontStrikeout(pTCPP->getTextStrikeout()));
-
- if( eFontStrikeout != STRIKEOUT_NONE )
- aFont.SetStrikeout( eFontStrikeout );
-
- // set EmphasisMark attribute
- FontEmphasisMark eFontEmphasisMark = EMPHASISMARK_NONE;
- switch( pTCPP->getTextEmphasisMark() )
- {
- default:
- DBG_WARNING1( "DrawingLayer: Unknown EmphasisMark style (%d)!", pTCPP->getTextEmphasisMark() );
- // fall through
- case primitive2d::TEXT_EMPHASISMARK_NONE: eFontEmphasisMark = EMPHASISMARK_NONE; break;
- case primitive2d::TEXT_EMPHASISMARK_DOT: eFontEmphasisMark = EMPHASISMARK_DOT; break;
- case primitive2d::TEXT_EMPHASISMARK_CIRCLE: eFontEmphasisMark = EMPHASISMARK_CIRCLE; break;
- case primitive2d::TEXT_EMPHASISMARK_DISC: eFontEmphasisMark = EMPHASISMARK_DISC; break;
- case primitive2d::TEXT_EMPHASISMARK_ACCENT: eFontEmphasisMark = EMPHASISMARK_ACCENT; break;
- }
-
- if( eFontEmphasisMark != EMPHASISMARK_NONE )
- {
- DBG_ASSERT( (pTCPP->getEmphasisMarkAbove() != pTCPP->getEmphasisMarkBelow()),
- "DrawingLayer: Bad EmphasisMark position!" );
- if( pTCPP->getEmphasisMarkAbove() )
- eFontEmphasisMark |= EMPHASISMARK_POS_ABOVE;
- else
- eFontEmphasisMark |= EMPHASISMARK_POS_BELOW;
- aFont.SetEmphasisMark( eFontEmphasisMark );
- }
-
- // set Relief attribute
- FontRelief eFontRelief = RELIEF_NONE;
- switch( pTCPP->getTextRelief() )
- {
- default:
- DBG_WARNING1( "DrawingLayer: Unknown Relief style (%d)!", pTCPP->getTextRelief() );
- // fall through
- case primitive2d::TEXT_RELIEF_NONE: eFontRelief = RELIEF_NONE; break;
- case primitive2d::TEXT_RELIEF_EMBOSSED: eFontRelief = RELIEF_EMBOSSED; break;
- case primitive2d::TEXT_RELIEF_ENGRAVED: eFontRelief = RELIEF_ENGRAVED; break;
- }
-
- if( eFontRelief != RELIEF_NONE )
- aFont.SetRelief( eFontRelief );
-
- // set Shadow attribute
- if( pTCPP->getShadow() )
- aFont.SetShadow( true );
- }
-
- // create transformed integer DXArray in view coordinate system
- ::std::vector< sal_Int32 > aTransformedDXArray;
-
- if(rTextCandidate.getDXArray().size())
- {
- aTransformedDXArray.reserve(rTextCandidate.getDXArray().size());
- const basegfx::B2DVector aPixelVector(maCurrentTransformation * basegfx::B2DVector(1.0, 0.0));
- const double fPixelVectorFactor(aPixelVector.getLength());
-
- for(::std::vector< double >::const_iterator aStart(rTextCandidate.getDXArray().begin());
- aStart != rTextCandidate.getDXArray().end(); aStart++)
- {
- aTransformedDXArray.push_back(basegfx::fround((*aStart) * fPixelVectorFactor));
- }
- }
-
- // set parameters and paint text snippet
- const basegfx::BColor aRGBFontColor(maBColorModifierStack.getModifiedColor(rTextCandidate.getFontColor()));
- const basegfx::B2DPoint aPoint(aLocalTransform * basegfx::B2DPoint(0.0, 0.0));
- const Point aStartPoint(basegfx::fround(aPoint.getX()), basegfx::fround(aPoint.getY()));
- const sal_uInt32 nOldLayoutMode(mpOutputDevice->GetLayoutMode());
-
- if(rTextCandidate.getFontAttribute().getRTL())
- {
- sal_uInt32 nRTLLayoutMode(nOldLayoutMode & ~(TEXT_LAYOUT_COMPLEX_DISABLED|TEXT_LAYOUT_BIDI_STRONG));
- nRTLLayoutMode |= TEXT_LAYOUT_BIDI_RTL|TEXT_LAYOUT_TEXTORIGIN_LEFT;
- mpOutputDevice->SetLayoutMode(nRTLLayoutMode);
- }
-
- mpOutputDevice->SetFont(aFont);
- mpOutputDevice->SetTextColor(Color(aRGBFontColor));
-
- String aText( rTextCandidate.getText() );
- xub_StrLen nPos = rTextCandidate.getTextPosition();
- xub_StrLen nLen = rTextCandidate.getTextLength();
-
- sal_Int32* pDXArray = aTransformedDXArray.size() ? &(aTransformedDXArray[0]) : NULL ;
-
- if ( rTextCandidate.isFilled() )
- {
- basegfx::B2DVector aOldFontScaling, aOldTranslate;
- double fOldRotate, fOldShearX;
- rTextCandidate.getTextTransform().decompose(aOldFontScaling, aOldTranslate, fOldRotate, fOldShearX);
-
- long nWidthToFill = static_cast<long>(rTextCandidate.getWidthToFill( ) * aFontScaling.getX() / aOldFontScaling.getX());
-
- long nWidth = mpOutputDevice->GetTextArray(
- rTextCandidate.getText(), pDXArray, 0, 1 );
- long nChars = 2;
- if ( nWidth )
- nChars = nWidthToFill / nWidth;
-
- String aFilled;
- aFilled.Fill( (sal_uInt16)nChars, aText.GetChar( 0 ) );
- aText = aFilled;
- nPos = 0;
- nLen = nChars;
- }
-
- if(aTransformedDXArray.size())
- {
- mpOutputDevice->DrawTextArray(
- aStartPoint,
- aText,
- pDXArray,
- nPos,
- nLen);
- }
- else
- {
- mpOutputDevice->DrawText(
- aStartPoint,
- aText,
- nPos,
- nLen);
- }
-
- if(rTextCandidate.getFontAttribute().getRTL())
- {
- mpOutputDevice->SetLayoutMode(nOldLayoutMode);
- }
-
- bPrimitiveAccepted = true;
- }
- }
-
- if(!bPrimitiveAccepted)
- {
- // let break down
- process(rTextCandidate.get2DDecomposition(getViewInformation2D()));
- }
- }
-
- // direct draw of hairline
- void VclProcessor2D::RenderPolygonHairlinePrimitive2D(const primitive2d::PolygonHairlinePrimitive2D& rPolygonCandidate, bool bPixelBased)
- {
- const basegfx::BColor aHairlineColor(maBColorModifierStack.getModifiedColor(rPolygonCandidate.getBColor()));
- mpOutputDevice->SetLineColor(Color(aHairlineColor));
- mpOutputDevice->SetFillColor();
-
- basegfx::B2DPolygon aLocalPolygon(rPolygonCandidate.getB2DPolygon());
- aLocalPolygon.transform(maCurrentTransformation);
-
- static bool bCheckTrapezoidDecomposition(false);
- static bool bShowOutlinesThere(false);
- if(bCheckTrapezoidDecomposition)
- {
- // clip against discrete ViewPort
- const basegfx::B2DRange& rDiscreteViewport = getViewInformation2D().getDiscreteViewport();
- basegfx::B2DPolyPolygon aLocalPolyPolygon(basegfx::tools::clipPolygonOnRange(
- aLocalPolygon, rDiscreteViewport, true, false));
-
- if(aLocalPolyPolygon.count())
- {
- // subdivide
- aLocalPolyPolygon = basegfx::tools::adaptiveSubdivideByDistance(
- aLocalPolyPolygon, 0.5);
-
- // trapezoidize
- static double fLineWidth(2.0);
- basegfx::B2DTrapezoidVector aB2DTrapezoidVector;
- basegfx::tools::createLineTrapezoidFromB2DPolyPolygon(aB2DTrapezoidVector, aLocalPolyPolygon, fLineWidth);
-
- const sal_uInt32 nCount(aB2DTrapezoidVector.size());
-
- if(nCount)
- {
- basegfx::BColor aInvPolygonColor(aHairlineColor);
- aInvPolygonColor.invert();
-
- for(sal_uInt32 a(0); a < nCount; a++)
- {
- const basegfx::B2DPolygon aTempPolygon(aB2DTrapezoidVector[a].getB2DPolygon());
-
- if(bShowOutlinesThere)
- {
- mpOutputDevice->SetFillColor(Color(aHairlineColor));
- mpOutputDevice->SetLineColor();
- }
-
- mpOutputDevice->DrawPolygon(aTempPolygon);
-
- if(bShowOutlinesThere)
- {
- mpOutputDevice->SetFillColor();
- mpOutputDevice->SetLineColor(Color(aInvPolygonColor));
- mpOutputDevice->DrawPolyLine(aTempPolygon, 0.0);
- }
- }
- }
- }
- }
- else
- {
- if(bPixelBased && getOptionsDrawinglayer().IsAntiAliasing() && getOptionsDrawinglayer().IsSnapHorVerLinesToDiscrete())
- {
- // #i98289#
- // when a Hairline is painted and AntiAliasing is on the option SnapHorVerLinesToDiscrete
- // allows to suppress AntiAliasing for pure horizontal or vertical lines. This is done since
- // not-AntiAliased such lines look more pleasing to the eye (e.g. 2D chart content). This
- // NEEDS to be done in discrete coordinates, so only useful for pixel based rendering.
- aLocalPolygon = basegfx::tools::snapPointsOfHorizontalOrVerticalEdges(aLocalPolygon);
- }
-
- mpOutputDevice->DrawPolyLine(aLocalPolygon, 0.0);
- }
- }
-
- // direct draw of transformed BitmapEx primitive
- void VclProcessor2D::RenderBitmapPrimitive2D(const primitive2d::BitmapPrimitive2D& rBitmapCandidate)
- {
- // create local transform
- basegfx::B2DHomMatrix aLocalTransform(maCurrentTransformation * rBitmapCandidate.getTransform());
- BitmapEx aBitmapEx(rBitmapCandidate.getBitmapEx());
- bool bPainted(false);
-
- if(maBColorModifierStack.count())
- {
- aBitmapEx = impModifyBitmapEx(maBColorModifierStack, aBitmapEx);
-
- if(aBitmapEx.IsEmpty())
- {
- // color gets completely replaced, get it
- const basegfx::BColor aModifiedColor(maBColorModifierStack.getModifiedColor(basegfx::BColor()));
- basegfx::B2DPolygon aPolygon(basegfx::tools::createUnitPolygon());
- aPolygon.transform(aLocalTransform);
-
- mpOutputDevice->SetFillColor(Color(aModifiedColor));
- mpOutputDevice->SetLineColor();
- mpOutputDevice->DrawPolygon(aPolygon);
-
- bPainted = true;
- }
- }
-
- if(!bPainted)
- {
- static bool bForceUseOfOwnTransformer(false);
- static bool bUseGraphicManager(true);
-
- // decompose matrix to check for shear, rotate and mirroring
- basegfx::B2DVector aScale, aTranslate;
- double fRotate, fShearX;
- aLocalTransform.decompose(aScale, aTranslate, fRotate, fShearX);
-
- if(!bForceUseOfOwnTransformer && basegfx::fTools::equalZero(fShearX))
- {
- if(!bUseGraphicManager && basegfx::fTools::equalZero(fRotate))
- {
- RenderBitmapPrimitive2D_BitmapEx(*mpOutputDevice, aBitmapEx, aLocalTransform);
- }
- else
- {
- RenderBitmapPrimitive2D_GraphicManager(*mpOutputDevice, aBitmapEx, aLocalTransform);
- }
- }
- else
- {
- if(!aBitmapEx.IsTransparent() && (!basegfx::fTools::equalZero(fShearX) || !basegfx::fTools::equalZero(fRotate)))
- {
- // parts will be uncovered, extend aBitmapEx with a mask bitmap
- const Bitmap aContent(aBitmapEx.GetBitmap());
- aBitmapEx = BitmapEx(aContent, Bitmap(aContent.GetSizePixel(), 1));
- }
-
- RenderBitmapPrimitive2D_self(*mpOutputDevice, aBitmapEx, aLocalTransform);
- }
- }
- }
-
- void VclProcessor2D::RenderRenderGraphicPrimitive2D(const primitive2d::RenderGraphicPrimitive2D& rRenderGraphicCandidate)
- {
- // create local transform
- basegfx::B2DHomMatrix aLocalTransform(maCurrentTransformation * rRenderGraphicCandidate.getTransform());
- vcl::RenderGraphic aRenderGraphic(rRenderGraphicCandidate.getRenderGraphic());
- bool bPainted(false);
-
- if(maBColorModifierStack.count())
- {
- // !!! TODO
- // aRenderGraphic = impModifyRenderGraphic(maBColorModifierStack, aRenderGraphic);
-
- if(aRenderGraphic.IsEmpty())
- {
- // color gets completely replaced, get it
- const basegfx::BColor aModifiedColor(maBColorModifierStack.getModifiedColor(basegfx::BColor()));
- basegfx::B2DPolygon aPolygon(basegfx::tools::createUnitPolygon());
- aPolygon.transform(aLocalTransform);
-
- mpOutputDevice->SetFillColor(Color(aModifiedColor));
- mpOutputDevice->SetLineColor();
- mpOutputDevice->DrawPolygon(aPolygon);
-
- bPainted = true;
- }
- }
-
- if(!bPainted)
- {
- // decompose matrix to check for shear, rotate and mirroring
- basegfx::B2DVector aScale, aTranslate;
- double fRotate, fShearX;
- aLocalTransform.decompose(aScale, aTranslate, fRotate, fShearX);
-
- basegfx::B2DRange aOutlineRange(0.0, 0.0, 1.0, 1.0);
-
- if( basegfx::fTools::equalZero( fRotate ) )
- {
- aOutlineRange.transform( aLocalTransform );
- }
- else
- {
- // !!! TODO
- // if rotated, create the unrotated output rectangle for the GraphicManager paint
- /*
- const basegfx::B2DHomMatrix aSimpleObjectMatrix(basegfx::tools::createScaleTranslateB2DHomMatrix(
- fabs(aScale.getX()), fabs(aScale.getY()),
- aTranslate.getX(), aTranslate.getY()));
-
- aOutlineRange.transform(aSimpleObjectMatrix);
- */
- }
-
- // prepare dest coordinates
- const Point aPoint( basegfx::fround(aOutlineRange.getMinX() ),
- basegfx::fround(aOutlineRange.getMinY() ) );
- const Size aSize( basegfx::fround(aOutlineRange.getWidth() ),
- basegfx::fround(aOutlineRange.getHeight() ) );
- const Size aSizePixel( mpOutputDevice->LogicToPixel( aSize ) );
- const vcl::RenderGraphicRasterizer aRasterizer( aRenderGraphic );
- const BitmapEx aBitmapEx( aRasterizer.Rasterize( aSizePixel, fRotate, fShearX ) );
-
- if( !aBitmapEx.IsEmpty() )
- {
- mpOutputDevice->DrawBitmapEx( aPoint, aSize, aBitmapEx );
- }
- }
- }
-
- void VclProcessor2D::RenderFillBitmapPrimitive2D(const primitive2d::FillBitmapPrimitive2D& rFillBitmapCandidate)
- {
- const attribute::FillBitmapAttribute& rFillBitmapAttribute(rFillBitmapCandidate.getFillBitmap());
- bool bPrimitiveAccepted(false);
-
- if(rFillBitmapAttribute.getTiling())
- {
- // decompose matrix to check for shear, rotate and mirroring
- basegfx::B2DHomMatrix aLocalTransform(maCurrentTransformation * rFillBitmapCandidate.getTransformation());
- basegfx::B2DVector aScale, aTranslate;
- double fRotate, fShearX;
- aLocalTransform.decompose(aScale, aTranslate, fRotate, fShearX);
-
- if(basegfx::fTools::equalZero(fRotate) && basegfx::fTools::equalZero(fShearX))
- {
- // no shear or rotate, draw direct in pixel coordinates
- bPrimitiveAccepted = true;
- BitmapEx aBitmapEx(rFillBitmapAttribute.getBitmapEx());
- bool bPainted(false);
-
- if(maBColorModifierStack.count())
- {
- aBitmapEx = impModifyBitmapEx(maBColorModifierStack, aBitmapEx);
-
- if(aBitmapEx.IsEmpty())
- {
- // color gets completely replaced, get it
- const basegfx::BColor aModifiedColor(maBColorModifierStack.getModifiedColor(basegfx::BColor()));
- basegfx::B2DPolygon aPolygon(basegfx::tools::createUnitPolygon());
- aPolygon.transform(aLocalTransform);
-
- mpOutputDevice->SetFillColor(Color(aModifiedColor));
- mpOutputDevice->SetLineColor();
- mpOutputDevice->DrawPolygon(aPolygon);
-
- bPainted = true;
- }
- }
-
- if(!bPainted)
- {
- const basegfx::B2DPoint aObjTopLeft(aTranslate.getX(), aTranslate.getY());
- const basegfx::B2DPoint aObjBottomRight(aTranslate.getX() + aScale.getX(), aTranslate.getY() + aScale.getY());
- const Point aObjTL(mpOutputDevice->LogicToPixel(Point((sal_Int32)aObjTopLeft.getX(), (sal_Int32)aObjTopLeft.getY())));
- const Point aObjBR(mpOutputDevice->LogicToPixel(Point((sal_Int32)aObjBottomRight.getX(), (sal_Int32)aObjBottomRight.getY())));
-
- const basegfx::B2DPoint aBmpTopLeft(aLocalTransform * rFillBitmapAttribute.getTopLeft());
- const basegfx::B2DPoint aBmpBottomRight(aLocalTransform * basegfx::B2DPoint(rFillBitmapAttribute.getTopLeft() + rFillBitmapAttribute.getSize()));
- const Point aBmpTL(mpOutputDevice->LogicToPixel(Point((sal_Int32)aBmpTopLeft.getX(), (sal_Int32)aBmpTopLeft.getY())));
- const Point aBmpBR(mpOutputDevice->LogicToPixel(Point((sal_Int32)aBmpBottomRight.getX(), (sal_Int32)aBmpBottomRight.getY())));
-
- sal_Int32 nOWidth(aObjBR.X() - aObjTL.X());
- sal_Int32 nOHeight(aObjBR.Y() - aObjTL.Y());
-
- // only do something when object has a size in discrete units
- if(nOWidth > 0 && nOHeight > 0)
- {
- sal_Int32 nBWidth(aBmpBR.X() - aBmpTL.X());
- sal_Int32 nBHeight(aBmpBR.Y() - aBmpTL.Y());
-
- // only do something when bitmap fill has a size in discrete units
- if(nBWidth > 0 && nBHeight > 0)
- {
- sal_Int32 nBLeft(aBmpTL.X());
- sal_Int32 nBTop(aBmpTL.Y());
-
- if(nBLeft > aObjTL.X())
- {
- nBLeft -= ((nBLeft / nBWidth) + 1L) * nBWidth;
- }
-
- if(nBLeft + nBWidth <= aObjTL.X())
- {
- nBLeft -= (nBLeft / nBWidth) * nBWidth;
- }
-
- if(nBTop > aObjTL.Y())
- {
- nBTop -= ((nBTop / nBHeight) + 1L) * nBHeight;
- }
-
- if(nBTop + nBHeight <= aObjTL.Y())
- {
- nBTop -= (nBTop / nBHeight) * nBHeight;
- }
-
- // nBWidth, nBHeight is the pixel size of the neede bitmap. To not need to scale it
- // in vcl many times, create a size-optimized version
- const Size aNeededBitmapSizePixel(nBWidth, nBHeight);
-
- if(aNeededBitmapSizePixel != aBitmapEx.GetSizePixel())
- {
- aBitmapEx.Scale(aNeededBitmapSizePixel);
- }
-
- // prepare OutDev
- const Point aEmptyPoint(0, 0);
- const Rectangle aVisiblePixel(aEmptyPoint, mpOutputDevice->GetOutputSizePixel());
- const bool bWasEnabled(mpOutputDevice->IsMapModeEnabled());
- mpOutputDevice->EnableMapMode(false);
-
- for(sal_Int32 nXPos(nBLeft); nXPos < aObjTL.X() + nOWidth; nXPos += nBWidth)
- {
- for(sal_Int32 nYPos(nBTop); nYPos < aObjTL.Y() + nOHeight; nYPos += nBHeight)
- {
- const Rectangle aOutRectPixel(Point(nXPos, nYPos), aNeededBitmapSizePixel);
-
- if(aOutRectPixel.IsOver(aVisiblePixel))
- {
- mpOutputDevice->DrawBitmapEx(aOutRectPixel.TopLeft(), aBitmapEx);
- }
- }
- }
-
- // restore OutDev
- mpOutputDevice->EnableMapMode(bWasEnabled);
- }
- }
- }
- }
- }
-
- if(!bPrimitiveAccepted)
- {
- // do not accept, use decomposition
- process(rFillBitmapCandidate.get2DDecomposition(getViewInformation2D()));
- }
- }
-
- // direct draw of gradient
- void VclProcessor2D::RenderPolyPolygonGradientPrimitive2D(const primitive2d::PolyPolygonGradientPrimitive2D& rPolygonCandidate)
- {
- const attribute::FillGradientAttribute& rGradient(rPolygonCandidate.getFillGradient());
- basegfx::BColor aStartColor(maBColorModifierStack.getModifiedColor(rGradient.getStartColor()));
- basegfx::BColor aEndColor(maBColorModifierStack.getModifiedColor(rGradient.getEndColor()));
- basegfx::B2DPolyPolygon aLocalPolyPolygon(rPolygonCandidate.getB2DPolyPolygon());
-
- if(aLocalPolyPolygon.count())
- {
- aLocalPolyPolygon.transform(maCurrentTransformation);
-
- if(aStartColor == aEndColor)
- {
- // no gradient at all, draw as polygon in AA and non-AA case
- mpOutputDevice->SetLineColor();
- mpOutputDevice->SetFillColor(Color(aStartColor));
- mpOutputDevice->DrawPolyPolygon(aLocalPolyPolygon);
- }
- else if(getOptionsDrawinglayer().IsAntiAliasing())
- {
- // For AA, direct render has to be avoided since it uses XOR maskings which will not
- // work with AA. Instead, the decompose which uses MaskPrimitive2D with fillings is
- // used
- process(rPolygonCandidate.get2DDecomposition(getViewInformation2D()));
- }
- else
- {
- impDrawGradientToOutDev(
- *mpOutputDevice, aLocalPolyPolygon, rGradient.getStyle(), rGradient.getSteps(),
- aStartColor, aEndColor, rGradient.getBorder(),
- rGradient.getAngle(), rGradient.getOffsetX(), rGradient.getOffsetY(), false);
- }
- }
- }
-
- // direct draw of bitmap
- void VclProcessor2D::RenderPolyPolygonBitmapPrimitive2D(const primitive2d::PolyPolygonBitmapPrimitive2D& rPolygonCandidate)
- {
- bool bDone(false);
- const basegfx::B2DPolyPolygon& rPolyPolygon = rPolygonCandidate.getB2DPolyPolygon();
-
- if(rPolyPolygon.count())
- {
- const attribute::FillBitmapAttribute& rFillBitmapAttribute = rPolygonCandidate.getFillBitmap();
- const BitmapEx& rBitmapEx = rFillBitmapAttribute.getBitmapEx();
-
- if(rBitmapEx.IsEmpty())
- {
- // empty bitmap, done
- bDone = true;
- }
- else
- {
- // try to catch cases where the bitmap will be color-modified to a single
- // color (e.g. shadow). This would NOT be optimizable with an transparence channel
- // at the Bitmap which we do not have here. When this should change, this
- // optimization has to be reworked accordingly.
- const sal_uInt32 nBColorModifierStackCount(maBColorModifierStack.count());
-
- if(nBColorModifierStackCount)
- {
- const basegfx::BColorModifier& rTopmostModifier = maBColorModifierStack.getBColorModifier(nBColorModifierStackCount - 1);
-
- if(basegfx::BCOLORMODIFYMODE_REPLACE == rTopmostModifier.getMode())
- {
- // the bitmap fill is in unified color, so we can replace it with
- // a single polygon fill. The form of the fill depends on tiling
- if(rFillBitmapAttribute.getTiling())
- {
- // with tiling, fill the whole PolyPolygon with the modifier color
- basegfx::B2DPolyPolygon aLocalPolyPolygon(rPolyPolygon);
-
- aLocalPolyPolygon.transform(maCurrentTransformation);
- mpOutputDevice->SetLineColor();
- mpOutputDevice->SetFillColor(Color(rTopmostModifier.getBColor()));
- mpOutputDevice->DrawPolyPolygon(aLocalPolyPolygon);
- }
- else
- {
- // without tiling, only the area common to the bitmap tile and the
- // PolyPolygon is filled. Create the bitmap tile area in object
- // coordinates. For this, the object transformation needs to be created
- // from the already scaled PolyPolygon. The tile area in object
- // coordinates wil always be non-rotated, so it's not necessary to
- // work with a polygon here
- basegfx::B2DRange aTileRange(rFillBitmapAttribute.getTopLeft(),
- rFillBitmapAttribute.getTopLeft() + rFillBitmapAttribute.getSize());
- const basegfx::B2DRange aPolyPolygonRange(rPolyPolygon.getB2DRange());
- basegfx::B2DHomMatrix aNewObjectTransform;
-
- aNewObjectTransform.set(0, 0, aPolyPolygonRange.getWidth());
- aNewObjectTransform.set(1, 1, aPolyPolygonRange.getHeight());
- aNewObjectTransform.set(0, 2, aPolyPolygonRange.getMinX());
- aNewObjectTransform.set(1, 2, aPolyPolygonRange.getMinY());
- aTileRange.transform(aNewObjectTransform);
-
- // now clip the object polyPolygon against the tile range
- // to get the common area (OR)
- basegfx::B2DPolyPolygon aTarget = basegfx::tools::clipPolyPolygonOnRange(rPolyPolygon, aTileRange, true, false);
-
- if(aTarget.count())
- {
- aTarget.transform(maCurrentTransformation);
- mpOutputDevice->SetLineColor();
- mpOutputDevice->SetFillColor(Color(rTopmostModifier.getBColor()));
- mpOutputDevice->DrawPolyPolygon(aTarget);
- }
- }
-
- bDone = true;
- }
- }
- }
- }
- else
- {
- // empty polyPolygon, done
- bDone = true;
- }
-
- if(!bDone)
- {
- // use default decomposition
- process(rPolygonCandidate.get2DDecomposition(getViewInformation2D()));
- }
- }
-
- // direct draw of PolyPolygon with color
- void VclProcessor2D::RenderPolyPolygonColorPrimitive2D(const primitive2d::PolyPolygonColorPrimitive2D& rPolygonCandidate)
- {
- const basegfx::BColor aPolygonColor(maBColorModifierStack.getModifiedColor(rPolygonCandidate.getBColor()));
- mpOutputDevice->SetFillColor(Color(aPolygonColor));
- mpOutputDevice->SetLineColor();
-
- basegfx::B2DPolyPolygon aLocalPolyPolygon(rPolygonCandidate.getB2DPolyPolygon());
- aLocalPolyPolygon.transform(maCurrentTransformation);
-
- static bool bCheckTrapezoidDecomposition(false);
- static bool bShowOutlinesThere(false);
- if(bCheckTrapezoidDecomposition)
- {
- // clip against discrete ViewPort
- const basegfx::B2DRange& rDiscreteViewport = getViewInformation2D().getDiscreteViewport();
- aLocalPolyPolygon = basegfx::tools::clipPolyPolygonOnRange(
- aLocalPolyPolygon, rDiscreteViewport, true, false);
-
- if(aLocalPolyPolygon.count())
- {
- // subdivide
- aLocalPolyPolygon = basegfx::tools::adaptiveSubdivideByDistance(
- aLocalPolyPolygon, 0.5);
-
- // trapezoidize
- basegfx::B2DTrapezoidVector aB2DTrapezoidVector;
- basegfx::tools::trapezoidSubdivide(aB2DTrapezoidVector, aLocalPolyPolygon);
-
- const sal_uInt32 nCount(aB2DTrapezoidVector.size());
-
- if(nCount)
- {
- basegfx::BColor aInvPolygonColor(aPolygonColor);
- aInvPolygonColor.invert();
-
- for(sal_uInt32 a(0); a < nCount; a++)
- {
- const basegfx::B2DPolygon aTempPolygon(aB2DTrapezoidVector[a].getB2DPolygon());
-
- if(bShowOutlinesThere)
- {
- mpOutputDevice->SetFillColor(Color(aPolygonColor));
- mpOutputDevice->SetLineColor();
- }
-
- mpOutputDevice->DrawPolygon(aTempPolygon);
-
- if(bShowOutlinesThere)
- {
- mpOutputDevice->SetFillColor();
- mpOutputDevice->SetLineColor(Color(aInvPolygonColor));
- mpOutputDevice->DrawPolyLine(aTempPolygon, 0.0);
- }
- }
- }
- }
- }
- else
- {
- mpOutputDevice->DrawPolyPolygon(aLocalPolyPolygon);
-
- if(mnPolygonStrokePrimitive2D
- && getOptionsDrawinglayer().IsAntiAliasing()
- && (mpOutputDevice->GetAntialiasing() & ANTIALIASING_ENABLE_B2DDRAW))
- {
- // when AA is on and this filled polygons are the result of stroked line geometry,
- // draw the geometry once extra as lines to avoid AA 'gaps' between partial polygons
- mpOutputDevice->SetFillColor();
- mpOutputDevice->SetLineColor(Color(aPolygonColor));
- const sal_uInt32 nCount(aLocalPolyPolygon.count());
-
- for(sal_uInt32 a(0); a < nCount; a++)
- {
- mpOutputDevice->DrawPolyLine(aLocalPolyPolygon.getB2DPolygon(a), 0.0);
- }
- }
- }
- }
-
- // direct draw of MetaFile
- void VclProcessor2D::RenderMetafilePrimitive2D(const primitive2d::MetafilePrimitive2D& rMetaCandidate)
- {
- // decompose matrix to check for shear, rotate and mirroring
- basegfx::B2DHomMatrix aLocalTransform(maCurrentTransformation * rMetaCandidate.getTransform());
- basegfx::B2DVector aScale, aTranslate;
- double fRotate, fShearX;
- aLocalTransform.decompose(aScale, aTranslate, fRotate, fShearX);
-
- if(basegfx::fTools::less(aScale.getX(), 0.0) && basegfx::fTools::less(aScale.getY(), 0.0))
- {
- // #i102175# handle special case: If scale is negative in (x,y) (3rd quadrant), it can
- // be expressed as rotation by PI. This needs to be done for Metafiles since
- // these can be rotated, but not really mirrored
- aScale = basegfx::absolute(aScale);
- fRotate += F_PI;
- }
-
- // get BoundRect
- basegfx::B2DRange aOutlineRange(rMetaCandidate.getB2DRange(getViewInformation2D()));
- aOutlineRange.transform(maCurrentTransformation);
-
- // Due to the integer MapModes used from VCL aind inside MetaFiles errors of up to three
- // pixels in size may happen. As long as there is no better way (e.g. convert the MetaFile
- // to primitives) it is necessary to reduce maximum pixel size by 1 in X and Y and to use
- // the inner pixel bounds accordingly (ceil resp. floor). This will also be done for logic
- // units e.g. when creating a new MetaFile, but since much huger value ranges are used
- // there typically will be okay for this compromize.
- Rectangle aDestRectView(
- // !!CAUTION!! Here, ceil and floor are exchanged BY PURPOSE, do NOT copy when
- // looking for a standard conversion to rectangle (!)
- (sal_Int32)ceil(aOutlineRange.getMinX()), (sal_Int32)ceil(aOutlineRange.getMinY()),
- (sal_Int32)floor(aOutlineRange.getMaxX()), (sal_Int32)floor(aOutlineRange.getMaxY()));
-
- // get metafile (copy it)
- GDIMetaFile aMetaFile;
-
- if(maBColorModifierStack.count())
- {
- const basegfx::BColor aRGBBaseColor(0, 0, 0);
- const basegfx::BColor aRGBColor(maBColorModifierStack.getModifiedColor(aRGBBaseColor));
- aMetaFile = rMetaCandidate.getMetaFile().GetMonochromeMtf(Color(aRGBColor));
- }
- else
- {
- aMetaFile = rMetaCandidate.getMetaFile();
- }
-
- // rotation
- if(!basegfx::fTools::equalZero(fRotate))
- {
- // #i103530#
- // MetaFile::Rotate has no input parameter check, so the parameter needs to be
- // well-aligned to the old range [0..3600] 10th degrees with inverse orientation
- sal_Int16 nRotation((sal_Int16)((fRotate / F_PI180) * -10.0));
-
- while(nRotation < 0)
- nRotation += 3600;
-
- while(nRotation >= 3600)
- nRotation -= 3600;
-
- aMetaFile.Rotate(nRotation);
- }
-
- // Prepare target output size
- Size aDestSize(aDestRectView.GetSize());
-
- if(aDestSize.getWidth() && aDestSize.getHeight())
- {
- // Get preferred Metafile output size. When it's very equal to the output size, it's probably
- // a rounding error somewhere, so correct it to get a 1:1 output without single pixel scalings
- // of the Metafile (esp. for contaned Bitmaps, e.g 3D charts)
- const Size aPrefSize(mpOutputDevice->LogicToPixel(aMetaFile.GetPrefSize(), aMetaFile.GetPrefMapMode()));
-
- if(aPrefSize.getWidth() && (aPrefSize.getWidth() - 1 == aDestSize.getWidth() || aPrefSize.getWidth() + 1 == aDestSize.getWidth()))
- {
- aDestSize.setWidth(aPrefSize.getWidth());
- }
-
- if(aPrefSize.getHeight() && (aPrefSize.getHeight() - 1 == aDestSize.getHeight() || aPrefSize.getHeight() + 1 == aDestSize.getHeight()))
- {
- aDestSize.setHeight(aPrefSize.getHeight());
- }
-
- // paint it
- aMetaFile.WindStart();
- aMetaFile.Play(mpOutputDevice, aDestRectView.TopLeft(), aDestSize);
- }
- }
-
- // mask group. Force output to VDev and create mask from given mask
- void VclProcessor2D::RenderMaskPrimitive2DPixel(const primitive2d::MaskPrimitive2D& rMaskCandidate)
- {
- if(rMaskCandidate.getChildren().hasElements())
- {
- basegfx::B2DPolyPolygon aMask(rMaskCandidate.getMask());
-
- if(aMask.count())
- {
- aMask.transform(maCurrentTransformation);
- const basegfx::B2DRange aRange(basegfx::tools::getRange(aMask));
- impBufferDevice aBufferDevice(*mpOutputDevice, aRange, true);
-
- if(aBufferDevice.isVisible())
- {
- // remember last OutDev and set to content
- OutputDevice* pLastOutputDevice = mpOutputDevice;
- mpOutputDevice = &aBufferDevice.getContent();
-
- // paint to it
- process(rMaskCandidate.getChildren());
-
- // back to old OutDev
- mpOutputDevice = pLastOutputDevice;
-
- // draw mask
- if(getOptionsDrawinglayer().IsAntiAliasing())
- {
- // with AA, use 8bit AlphaMask to get nice borders
- VirtualDevice& rTransparence = aBufferDevice.getTransparence();
- rTransparence.SetLineColor();
- rTransparence.SetFillColor(COL_BLACK);
- rTransparence.DrawPolyPolygon(aMask);
-
- // dump buffer to outdev
- aBufferDevice.paint();
- }
- else
- {
- // No AA, use 1bit mask
- VirtualDevice& rMask = aBufferDevice.getMask();
- rMask.SetLineColor();
- rMask.SetFillColor(COL_BLACK);
- rMask.DrawPolyPolygon(aMask);
-
- // dump buffer to outdev
- aBufferDevice.paint();
- }
- }
- }
- }
- }
-
- // modified color group. Force output to unified color.
- void VclProcessor2D::RenderModifiedColorPrimitive2D(const primitive2d::ModifiedColorPrimitive2D& rModifiedCandidate)
- {
- if(rModifiedCandidate.getChildren().hasElements())
- {
- maBColorModifierStack.push(rModifiedCandidate.getColorModifier());
- process(rModifiedCandidate.getChildren());
- maBColorModifierStack.pop();
- }
- }
-
- // unified sub-transparence. Draw to VDev first.
- void VclProcessor2D::RenderUnifiedTransparencePrimitive2D(const primitive2d::UnifiedTransparencePrimitive2D& rTransCandidate)
- {
- static bool bForceToDecomposition(false);
-
- if(rTransCandidate.getChildren().hasElements())
- {
- if(bForceToDecomposition)
- {
- // use decomposition
- process(rTransCandidate.get2DDecomposition(getViewInformation2D()));
- }
- else
- {
- if(0.0 == rTransCandidate.getTransparence())
- {
- // no transparence used, so just use the content
- process(rTransCandidate.getChildren());
- }
- else if(rTransCandidate.getTransparence() > 0.0 && rTransCandidate.getTransparence() < 1.0)
- {
- // transparence is in visible range
- basegfx::B2DRange aRange(primitive2d::getB2DRangeFromPrimitive2DSequence(rTransCandidate.getChildren(), getViewInformation2D()));
- aRange.transform(maCurrentTransformation);
- impBufferDevice aBufferDevice(*mpOutputDevice, aRange, true);
-
- if(aBufferDevice.isVisible())
- {
- // remember last OutDev and set to content
- OutputDevice* pLastOutputDevice = mpOutputDevice;
- mpOutputDevice = &aBufferDevice.getContent();
-
- // paint content to it
- process(rTransCandidate.getChildren());
-
- // back to old OutDev
- mpOutputDevice = pLastOutputDevice;
-
- // dump buffer to outdev using given transparence
- aBufferDevice.paint(rTransCandidate.getTransparence());
- }
- }
- }
- }
- }
-
- // sub-transparence group. Draw to VDev first.
- void VclProcessor2D::RenderTransparencePrimitive2D(const primitive2d::TransparencePrimitive2D& rTransCandidate)
- {
- if(rTransCandidate.getChildren().hasElements())
- {
- basegfx::B2DRange aRange(primitive2d::getB2DRangeFromPrimitive2DSequence(rTransCandidate.getChildren(), getViewInformation2D()));
- aRange.transform(maCurrentTransformation);
- impBufferDevice aBufferDevice(*mpOutputDevice, aRange, true);
-
- if(aBufferDevice.isVisible())
- {
- // remember last OutDev and set to content
- OutputDevice* pLastOutputDevice = mpOutputDevice;
- mpOutputDevice = &aBufferDevice.getContent();
-
- // paint content to it
- process(rTransCandidate.getChildren());
-
- // set to mask
- mpOutputDevice = &aBufferDevice.getTransparence();
-
- // when painting transparence masks, reset the color stack
- basegfx::BColorModifierStack aLastBColorModifierStack(maBColorModifierStack);
- maBColorModifierStack = basegfx::BColorModifierStack();
-
- // paint mask to it (always with transparence intensities, evtl. with AA)
- process(rTransCandidate.getTransparence());
-
- // back to old color stack
- maBColorModifierStack = aLastBColorModifierStack;
-
- // back to old OutDev
- mpOutputDevice = pLastOutputDevice;
-
- // dump buffer to outdev
- aBufferDevice.paint();
- }
- }
- }
-
- // transform group.
- void VclProcessor2D::RenderTransformPrimitive2D(const primitive2d::TransformPrimitive2D& rTransformCandidate)
- {
- // remember current transformation and ViewInformation
- const basegfx::B2DHomMatrix aLastCurrentTransformation(maCurrentTransformation);
- const geometry::ViewInformation2D aLastViewInformation2D(getViewInformation2D());
-
- // create new transformations for CurrentTransformation
- // and for local ViewInformation2D
- maCurrentTransformation = maCurrentTransformation * rTransformCandidate.getTransformation();
- const geometry::ViewInformation2D aViewInformation2D(
- getViewInformation2D().getObjectTransformation() * rTransformCandidate.getTransformation(),
- getViewInformation2D().getViewTransformation(),
- getViewInformation2D().getViewport(),
- getViewInformation2D().getVisualizedPage(),
- getViewInformation2D().getViewTime(),
- getViewInformation2D().getExtendedInformationSequence());
- updateViewInformation(aViewInformation2D);
-
- // proccess content
- process(rTransformCandidate.getChildren());
-
- // restore transformations
- maCurrentTransformation = aLastCurrentTransformation;
- updateViewInformation(aLastViewInformation2D);
- }
-
- // new XDrawPage for ViewInformation2D
- void VclProcessor2D::RenderPagePreviewPrimitive2D(const primitive2d::PagePreviewPrimitive2D& rPagePreviewCandidate)
- {
- // remember current transformation and ViewInformation
- const geometry::ViewInformation2D aLastViewInformation2D(getViewInformation2D());
-
- // create new local ViewInformation2D
- const geometry::ViewInformation2D aViewInformation2D(
- getViewInformation2D().getObjectTransformation(),
- getViewInformation2D().getViewTransformation(),
- getViewInformation2D().getViewport(),
- rPagePreviewCandidate.getXDrawPage(),
- getViewInformation2D().getViewTime(),
- getViewInformation2D().getExtendedInformationSequence());
- updateViewInformation(aViewInformation2D);
-
- // proccess decomposed content
- process(rPagePreviewCandidate.get2DDecomposition(getViewInformation2D()));
-
- // restore transformations
- updateViewInformation(aLastViewInformation2D);
- }
-
- // marker
- void VclProcessor2D::RenderMarkerArrayPrimitive2D(const primitive2d::MarkerArrayPrimitive2D& rMarkArrayCandidate)
- {
- static bool bCheckCompleteMarkerDecompose(false);
- if(bCheckCompleteMarkerDecompose)
- {
- process(rMarkArrayCandidate.get2DDecomposition(getViewInformation2D()));
- return;
- }
-
- // get data
- const std::vector< basegfx::B2DPoint >& rPositions = rMarkArrayCandidate.getPositions();
- const sal_uInt32 nCount(rPositions.size());
-
- if(nCount && !rMarkArrayCandidate.getMarker().IsEmpty())
- {
- // get pixel size
- const BitmapEx& rMarker(rMarkArrayCandidate.getMarker());
- const Size aBitmapSize(rMarker.GetSizePixel());
-
- if(aBitmapSize.Width() && aBitmapSize.Height())
- {
- // get discrete half size
- const basegfx::B2DVector aDiscreteHalfSize(
- (aBitmapSize.getWidth() - 1.0) * 0.5,
- (aBitmapSize.getHeight() - 1.0) * 0.5);
- const bool bWasEnabled(mpOutputDevice->IsMapModeEnabled());
-
- // do not forget evtl. moved origin in target device MapMode when
- // switching it off; it would be missing and lead to wrong positions.
- // All his could be done using logic sizes and coordinates, too, but
- // we want a 1:1 bitmap rendering here, so it's more safe and faster
- // to work with switching off MapMode usage completely.
- const Point aOrigin(mpOutputDevice->GetMapMode().GetOrigin());
-
- mpOutputDevice->EnableMapMode(false);
-
- for(std::vector< basegfx::B2DPoint >::const_iterator aIter(rPositions.begin()); aIter != rPositions.end(); ++aIter)
- {
- const basegfx::B2DPoint aDiscreteTopLeft((maCurrentTransformation * (*aIter)) - aDiscreteHalfSize);
- const Point aDiscretePoint(basegfx::fround(aDiscreteTopLeft.getX()), basegfx::fround(aDiscreteTopLeft.getY()));
-
- mpOutputDevice->DrawBitmapEx(aDiscretePoint + aOrigin, rMarker);
- }
-
- mpOutputDevice->EnableMapMode(bWasEnabled);
- }
- }
- }
-
- // point
- void VclProcessor2D::RenderPointArrayPrimitive2D(const primitive2d::PointArrayPrimitive2D& rPointArrayCandidate)
- {
- const std::vector< basegfx::B2DPoint >& rPositions = rPointArrayCandidate.getPositions();
- const basegfx::BColor aRGBColor(maBColorModifierStack.getModifiedColor(rPointArrayCandidate.getRGBColor()));
- const Color aVCLColor(aRGBColor);
-
- for(std::vector< basegfx::B2DPoint >::const_iterator aIter(rPositions.begin()); aIter != rPositions.end(); ++aIter)
- {
- const basegfx::B2DPoint aViewPosition(maCurrentTransformation * (*aIter));
- const Point aPos(basegfx::fround(aViewPosition.getX()), basegfx::fround(aViewPosition.getY()));
-
- mpOutputDevice->DrawPixel(aPos, aVCLColor);
- }
- }
-
- void VclProcessor2D::RenderPolygonStrokePrimitive2D(const primitive2d::PolygonStrokePrimitive2D& rPolygonStrokeCandidate)
- {
- // #i101491# method restructured to clearly use the DrawPolyLine
- // calls starting from a deined line width
- const attribute::LineAttribute& rLineAttribute = rPolygonStrokeCandidate.getLineAttribute();
- const double fLineWidth(rLineAttribute.getWidth());
- bool bDone(false);
-
- if(basegfx::fTools::more(fLineWidth, 0.0))
- {
- const basegfx::B2DVector aDiscreteUnit(maCurrentTransformation * basegfx::B2DVector(fLineWidth, 0.0));
- const double fDiscreteLineWidth(aDiscreteUnit.getLength());
- const attribute::StrokeAttribute& rStrokeAttribute = rPolygonStrokeCandidate.getStrokeAttribute();
- const basegfx::BColor aHairlineColor(maBColorModifierStack.getModifiedColor(rLineAttribute.getColor()));
- basegfx::B2DPolyPolygon aHairlinePolyPolygon;
-
- mpOutputDevice->SetLineColor(Color(aHairlineColor));
- mpOutputDevice->SetFillColor();
-
- if(0.0 == rStrokeAttribute.getFullDotDashLen())
- {
- // no line dashing, just copy
- aHairlinePolyPolygon.append(rPolygonStrokeCandidate.getB2DPolygon());
- }
- else
- {
- // else apply LineStyle
- basegfx::tools::applyLineDashing(rPolygonStrokeCandidate.getB2DPolygon(),
- rStrokeAttribute.getDotDashArray(),
- &aHairlinePolyPolygon, 0, rStrokeAttribute.getFullDotDashLen());
- }
-
- const sal_uInt32 nCount(aHairlinePolyPolygon.count());
-
- if(nCount)
- {
- const bool bAntiAliased(getOptionsDrawinglayer().IsAntiAliasing());
- aHairlinePolyPolygon.transform(maCurrentTransformation);
-
- for(sal_uInt32 a(0); a < nCount; a++)
- {
- basegfx::B2DPolygon aCandidate(aHairlinePolyPolygon.getB2DPolygon(a));
-
- if(bAntiAliased)
- {
- if(basegfx::fTools::lessOrEqual(fDiscreteLineWidth, 1.0))
- {
- // line in range ]0.0 .. 1.0[
- // paint as simple hairline
- mpOutputDevice->DrawPolyLine(aCandidate, 0.0);
- bDone = true;
- }
- else if(basegfx::fTools::lessOrEqual(fDiscreteLineWidth, 2.0))
- {
- // line in range [1.0 .. 2.0[
- // paint as 2x2 with dynamic line distance
- basegfx::B2DHomMatrix aMat;
- const double fDistance(fDiscreteLineWidth - 1.0);
- const double fHalfDistance(fDistance * 0.5);
-
- aMat.set(0, 2, -fHalfDistance);
- aMat.set(1, 2, -fHalfDistance);
- aCandidate.transform(aMat);
- mpOutputDevice->DrawPolyLine(aCandidate, 0.0);
-
- aMat.set(0, 2, fDistance);
- aMat.set(1, 2, 0.0);
- aCandidate.transform(aMat);
- mpOutputDevice->DrawPolyLine(aCandidate, 0.0);
-
- aMat.set(0, 2, 0.0);
- aMat.set(1, 2, fDistance);
- aCandidate.transform(aMat);
- mpOutputDevice->DrawPolyLine(aCandidate, 0.0);
-
- aMat.set(0, 2, -fDistance);
- aMat.set(1, 2, 0.0);
- aCandidate.transform(aMat);
- mpOutputDevice->DrawPolyLine(aCandidate, 0.0);
- bDone = true;
- }
- else if(basegfx::fTools::lessOrEqual(fDiscreteLineWidth, 3.0))
- {
- // line in range [2.0 .. 3.0]
- // paint as cross in a 3x3 with dynamic line distance
- basegfx::B2DHomMatrix aMat;
- const double fDistance((fDiscreteLineWidth - 1.0) * 0.5);
-
- mpOutputDevice->DrawPolyLine(aCandidate, 0.0);
-
- aMat.set(0, 2, -fDistance);
- aMat.set(1, 2, 0.0);
- aCandidate.transform(aMat);
- mpOutputDevice->DrawPolyLine(aCandidate, 0.0);
-
- aMat.set(0, 2, fDistance);
- aMat.set(1, 2, -fDistance);
- aCandidate.transform(aMat);
- mpOutputDevice->DrawPolyLine(aCandidate, 0.0);
-
- aMat.set(0, 2, fDistance);
- aMat.set(1, 2, fDistance);
- aCandidate.transform(aMat);
- mpOutputDevice->DrawPolyLine(aCandidate, 0.0);
-
- aMat.set(0, 2, -fDistance);
- aMat.set(1, 2, fDistance);
- aCandidate.transform(aMat);
- mpOutputDevice->DrawPolyLine(aCandidate, 0.0);
- bDone = true;
- }
- else
- {
- // #i101491# line width above 3.0
- }
- }
- else
- {
- if(basegfx::fTools::lessOrEqual(fDiscreteLineWidth, 1.5))
- {
- // line width below 1.5, draw the basic hairline polygon
- mpOutputDevice->DrawPolyLine(aCandidate, 0.0);
- bDone = true;
- }
- else if(basegfx::fTools::lessOrEqual(fDiscreteLineWidth, 2.5))
- {
- // line width is in range ]1.5 .. 2.5], use four hairlines
- // drawn in a square
- basegfx::B2DHomMatrix aMat;
- mpOutputDevice->DrawPolyLine(aCandidate, 0.0);
-
- aMat.set(0, 2, 1.0);
- aMat.set(1, 2, 0.0);
- aCandidate.transform(aMat);
-
- mpOutputDevice->DrawPolyLine(aCandidate, 0.0);
-
- aMat.set(0, 2, 0.0);
- aMat.set(1, 2, 1.0);
- aCandidate.transform(aMat);
-
- mpOutputDevice->DrawPolyLine(aCandidate, 0.0);
-
- aMat.set(0, 2, -1.0);
- aMat.set(1, 2, 0.0);
- aCandidate.transform(aMat);
-
- mpOutputDevice->DrawPolyLine(aCandidate, 0.0);
- bDone = true;
- }
- else
- {
- // #i101491# line width is above 2.5
- }
- }
-
- if(!bDone && rPolygonStrokeCandidate.getB2DPolygon().count() > 1000)
- {
- // #i101491# If the polygon complexity uses more than a given amount, do
- // use OuputDevice::DrawPolyLine directly; this will avoid buffering all
- // decompositions in primtives (memory) and fallback to old line painting
- // for very complex polygons, too
- mpOutputDevice->DrawPolyLine(aCandidate, fDiscreteLineWidth, rLineAttribute.getLineJoin());
- bDone = true;
- }
- }
- }
- }
-
- if(!bDone)
- {
- // remeber that we enter a PolygonStrokePrimitive2D decomposition,
- // used for AA thick line drawing
- mnPolygonStrokePrimitive2D++;
-
- // line width is big enough for standard filled polygon visualisation or zero
- process(rPolygonStrokeCandidate.get2DDecomposition(getViewInformation2D()));
-
- // leave PolygonStrokePrimitive2D
- mnPolygonStrokePrimitive2D--;
- }
- }
-
- void VclProcessor2D::RenderEpsPrimitive2D(const primitive2d::EpsPrimitive2D& rEpsPrimitive2D)
- {
- // The new decomposition of Metafiles made it necessary to add an Eps
- // primitive to handle embedded Eps data. On some devices, this can be
- // painted directly (mac, printer).
- // To be able to handle the replacement correctly, i need to handle it myself
- // since DrawEPS will not be able e.g. to rotate the replacement. To be able
- // to do that, i added a boolean return to OutputDevice::DrawEPS(..)
- // to know when EPS was handled directly already.
- basegfx::B2DRange aRange(0.0, 0.0, 1.0, 1.0);
- aRange.transform(maCurrentTransformation * rEpsPrimitive2D.getEpsTransform());
-
- if(!aRange.isEmpty())
- {
- const Rectangle aRectangle(
- (sal_Int32)floor(aRange.getMinX()), (sal_Int32)floor(aRange.getMinY()),
- (sal_Int32)ceil(aRange.getMaxX()), (sal_Int32)ceil(aRange.getMaxY()));
-
- if(!aRectangle.IsEmpty())
- {
- // try to paint EPS directly without fallback visualisation
- const bool bEPSPaintedDirectly(mpOutputDevice->DrawEPS(
- aRectangle.TopLeft(),
- aRectangle.GetSize(),
- rEpsPrimitive2D.getGfxLink(),
- 0));
-
- if(!bEPSPaintedDirectly)
- {
- // use the decomposition which will correctly handle the
- // fallback visualisation using full transformation (e.g. rotation)
- process(rEpsPrimitive2D.get2DDecomposition(getViewInformation2D()));
- }
- }
- }
- }
-
- void VclProcessor2D::adaptLineToFillDrawMode() const
- {
- const sal_uInt32 nOriginalDrawMode(mpOutputDevice->GetDrawMode());
-
- if(nOriginalDrawMode & (DRAWMODE_BLACKLINE|DRAWMODE_GRAYLINE|DRAWMODE_GHOSTEDLINE|DRAWMODE_WHITELINE|DRAWMODE_SETTINGSLINE))
- {
- sal_uInt32 nAdaptedDrawMode(nOriginalDrawMode);
-
- if(nOriginalDrawMode & DRAWMODE_BLACKLINE)
- {
- nAdaptedDrawMode |= DRAWMODE_BLACKFILL;
- }
- else
- {
- nAdaptedDrawMode &= ~DRAWMODE_BLACKFILL;
- }
-
- if(nOriginalDrawMode & DRAWMODE_GRAYLINE)
- {
- nAdaptedDrawMode |= DRAWMODE_GRAYFILL;
- }
- else
- {
- nAdaptedDrawMode &= ~DRAWMODE_GRAYFILL;
- }
-
- if(nOriginalDrawMode & DRAWMODE_GHOSTEDLINE)
- {
- nAdaptedDrawMode |= DRAWMODE_GHOSTEDFILL;
- }
- else
- {
- nAdaptedDrawMode &= ~DRAWMODE_GHOSTEDFILL;
- }
-
- if(nOriginalDrawMode & DRAWMODE_WHITELINE)
- {
- nAdaptedDrawMode |= DRAWMODE_WHITEFILL;
- }
- else
- {
- nAdaptedDrawMode &= ~DRAWMODE_WHITEFILL;
- }
-
- if(nOriginalDrawMode & DRAWMODE_SETTINGSLINE)
- {
- nAdaptedDrawMode |= DRAWMODE_SETTINGSFILL;
- }
- else
- {
- nAdaptedDrawMode &= ~DRAWMODE_SETTINGSFILL;
- }
-
- mpOutputDevice->SetDrawMode(nAdaptedDrawMode);
- }
- }
-
- void VclProcessor2D::adaptTextToFillDrawMode() const
- {
- const sal_uInt32 nOriginalDrawMode(mpOutputDevice->GetDrawMode());
- if(nOriginalDrawMode & (DRAWMODE_BLACKTEXT|DRAWMODE_GRAYTEXT|DRAWMODE_GHOSTEDTEXT|DRAWMODE_WHITETEXT|DRAWMODE_SETTINGSTEXT))
- {
- sal_uInt32 nAdaptedDrawMode(nOriginalDrawMode);
-
- if(nOriginalDrawMode & DRAWMODE_BLACKTEXT)
- {
- nAdaptedDrawMode |= DRAWMODE_BLACKFILL;
- }
- else
- {
- nAdaptedDrawMode &= ~DRAWMODE_BLACKFILL;
- }
-
- if(nOriginalDrawMode & DRAWMODE_GRAYTEXT)
- {
- nAdaptedDrawMode |= DRAWMODE_GRAYFILL;
- }
- else
- {
- nAdaptedDrawMode &= ~DRAWMODE_GRAYFILL;
- }
-
- if(nOriginalDrawMode & DRAWMODE_GHOSTEDTEXT)
- {
- nAdaptedDrawMode |= DRAWMODE_GHOSTEDFILL;
- }
- else
- {
- nAdaptedDrawMode &= ~DRAWMODE_GHOSTEDFILL;
- }
-
- if(nOriginalDrawMode & DRAWMODE_WHITETEXT)
- {
- nAdaptedDrawMode |= DRAWMODE_WHITEFILL;
- }
- else
- {
- nAdaptedDrawMode &= ~DRAWMODE_WHITEFILL;
- }
-
- if(nOriginalDrawMode & DRAWMODE_SETTINGSTEXT)
- {
- nAdaptedDrawMode |= DRAWMODE_SETTINGSFILL;
- }
- else
- {
- nAdaptedDrawMode &= ~DRAWMODE_SETTINGSFILL;
- }
-
- mpOutputDevice->SetDrawMode(nAdaptedDrawMode);
- }
- }
-
- //////////////////////////////////////////////////////////////////////////////
- // process support
-
- VclProcessor2D::VclProcessor2D(
- const geometry::ViewInformation2D& rViewInformation,
- OutputDevice& rOutDev)
- : BaseProcessor2D(rViewInformation),
- mpOutputDevice(&rOutDev),
- maBColorModifierStack(),
- maCurrentTransformation(),
- maDrawinglayerOpt(),
- mnPolygonStrokePrimitive2D(0)
- {
- // set digit language, derived from SvtCTLOptions to have the correct
- // number display for arabic/hindi numerals
- const SvtCTLOptions aSvtCTLOptions;
- LanguageType eLang(LANGUAGE_SYSTEM);
-
- if(SvtCTLOptions::NUMERALS_HINDI == aSvtCTLOptions.GetCTLTextNumerals())
- {
- eLang = LANGUAGE_ARABIC_SAUDI_ARABIA;
- }
- else if(SvtCTLOptions::NUMERALS_ARABIC == aSvtCTLOptions.GetCTLTextNumerals())
- {
- eLang = LANGUAGE_ENGLISH;
- }
- else
- {
- eLang = (LanguageType)Application::GetSettings().GetLanguage();
- }
-
- rOutDev.SetDigitLanguage(eLang);
- }
-
- VclProcessor2D::~VclProcessor2D()
- {
- }
- } // end of namespace processor2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/processor3d/baseprocessor3d.cxx b/drawinglayer/source/processor3d/baseprocessor3d.cxx
deleted file mode 100644
index 9636c6b295..0000000000
--- a/drawinglayer/source/processor3d/baseprocessor3d.cxx
+++ /dev/null
@@ -1,117 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/processor3d/baseprocessor3d.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-using namespace com::sun::star;
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace processor3d
- {
- void BaseProcessor3D::processBasePrimitive3D(const primitive3d::BasePrimitive3D& /*rCandidate*/)
- {
- }
-
- BaseProcessor3D::BaseProcessor3D(const geometry::ViewInformation3D& rViewInformation)
- : maViewInformation3D(rViewInformation)
- {
- }
-
- BaseProcessor3D::~BaseProcessor3D()
- {
- }
-
- void BaseProcessor3D::process(const primitive3d::Primitive3DSequence& rSource)
- {
- if(rSource.hasElements())
- {
- const sal_Int32 nCount(rSource.getLength());
-
- for(sal_Int32 a(0L); a < nCount; a++)
- {
- // get reference
- const primitive3d::Primitive3DReference xReference(rSource[a]);
-
- if(xReference.is())
- {
- // try to cast to BasePrimitive3D implementation
- const primitive3d::BasePrimitive3D* pBasePrimitive = dynamic_cast< const primitive3d::BasePrimitive3D* >(xReference.get());
-
- if(pBasePrimitive)
- {
- processBasePrimitive3D(*pBasePrimitive);
- }
- else
- {
- // unknown implementation, use UNO API call instead and process recursively
- const uno::Sequence< beans::PropertyValue >& rViewParameters(getViewInformation3D().getViewInformationSequence());
- process(xReference->getDecomposition(rViewParameters));
- }
- }
- }
- }
- }
- } // end of namespace processor3d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace processor3d
- {
- CollectingProcessor3D::CollectingProcessor3D(const geometry::ViewInformation3D& rViewInformation)
- : BaseProcessor3D(rViewInformation),
- maPrimitive3DSequence()
- {
- }
-
- CollectingProcessor3D::~CollectingProcessor3D()
- {
- }
-
- void CollectingProcessor3D::process(const primitive3d::Primitive3DSequence& rSource)
- {
- // accept everything
- primitive3d::appendPrimitive3DSequenceToPrimitive3DSequence(maPrimitive3DSequence, rSource);
- }
- } // end of namespace processor3d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/processor3d/cutfindprocessor3d.cxx b/drawinglayer/source/processor3d/cutfindprocessor3d.cxx
deleted file mode 100644
index 2b1f67e94a..0000000000
--- a/drawinglayer/source/processor3d/cutfindprocessor3d.cxx
+++ /dev/null
@@ -1,228 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/processor3d/cutfindprocessor3d.hxx>
-#include <drawinglayer/primitive3d/drawinglayer_primitivetypes3d.hxx>
-#include <drawinglayer/primitive3d/transformprimitive3d.hxx>
-#include <drawinglayer/primitive3d/hatchtextureprimitive3d.hxx>
-#include <drawinglayer/primitive3d/polypolygonprimitive3d.hxx>
-#include <basegfx/polygon/b3dpolygon.hxx>
-#include <basegfx/polygon/b3dpolygontools.hxx>
-#include <basegfx/polygon/b3dpolypolygontools.hxx>
-#include <drawinglayer/primitive3d/hiddengeometryprimitive3d.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace processor3d
- {
- CutFindProcessor::CutFindProcessor(const geometry::ViewInformation3D& rViewInformation,
- const basegfx::B3DPoint& rFront,
- const basegfx::B3DPoint& rBack,
- bool bAnyHit)
- : BaseProcessor3D(rViewInformation),
- maFront(rFront),
- maBack(rBack),
- maResult(),
- maCombinedTransform(),
- mbAnyHit(bAnyHit),
- mbUseInvisiblePrimitiveContent(true)
- {
- }
-
- void CutFindProcessor::processBasePrimitive3D(const primitive3d::BasePrimitive3D& rCandidate)
- {
- if(getAnyHit() && maResult.size())
- {
- // stop processing as soon as a hit was recognized
- return;
- }
-
- // it is a BasePrimitive3D implementation, use getPrimitive3DID() call for switch
- switch(rCandidate.getPrimitive3DID())
- {
- case PRIMITIVE3D_ID_TRANSFORMPRIMITIVE3D :
- {
- // transform group.
- const primitive3d::TransformPrimitive3D& rPrimitive = static_cast< const primitive3d::TransformPrimitive3D& >(rCandidate);
-
- // remember old and transform front, back to object coordinates
- const basegfx::B3DPoint aLastFront(maFront);
- const basegfx::B3DPoint aLastBack(maBack);
- basegfx::B3DHomMatrix aInverseTrans(rPrimitive.getTransformation());
- aInverseTrans.invert();
- maFront *= aInverseTrans;
- maBack *= aInverseTrans;
-
- // remember current and create new transformation; add new object transform from right side
- const geometry::ViewInformation3D aLastViewInformation3D(getViewInformation3D());
- const geometry::ViewInformation3D aNewViewInformation3D(
- aLastViewInformation3D.getObjectTransformation() * rPrimitive.getTransformation(),
- aLastViewInformation3D.getOrientation(),
- aLastViewInformation3D.getProjection(),
- aLastViewInformation3D.getDeviceToView(),
- aLastViewInformation3D.getViewTime(),
- aLastViewInformation3D.getExtendedInformationSequence());
- updateViewInformation(aNewViewInformation3D);
-
- // #i102956# remember needed back-transform for found cuts (combine from right side)
- const basegfx::B3DHomMatrix aLastCombinedTransform(maCombinedTransform);
- maCombinedTransform = maCombinedTransform * rPrimitive.getTransformation();
-
- // let break down
- process(rPrimitive.getChildren());
-
- // restore transformations and front, back
- maCombinedTransform = aLastCombinedTransform;
- updateViewInformation(aLastViewInformation3D);
- maFront = aLastFront;
- maBack = aLastBack;
- break;
- }
- case PRIMITIVE3D_ID_POLYGONHAIRLINEPRIMITIVE3D :
- {
- // PolygonHairlinePrimitive3D, not used for hit test with planes, ignore. This
- // means that also thick line expansion will not be hit-tested as
- // PolyPolygonMaterialPrimitive3D
- break;
- }
- case PRIMITIVE3D_ID_HATCHTEXTUREPRIMITIVE3D :
- {
- // #i97321#
- // For HatchTexturePrimitive3D, do not use the decomposition since it will produce
- // clipped hatch lines in 3D. It can be used when the hatch also has a filling, but for
- // simplicity, just use the children which are the PolyPolygonMaterialPrimitive3D
- // which define the hatched areas anyways; for HitTest this is more than adequate
- const primitive3d::HatchTexturePrimitive3D& rPrimitive = static_cast< const primitive3d::HatchTexturePrimitive3D& >(rCandidate);
- process(rPrimitive.getChildren());
- break;
- }
- case PRIMITIVE3D_ID_HIDDENGEOMETRYPRIMITIVE3D :
- {
- // HiddenGeometryPrimitive3D; the default decomposition would return an empty seqence,
- // so force this primitive to process it's children directly if the switch is set
- // (which is the default). Else, ignore invisible content
- const primitive3d::HiddenGeometryPrimitive3D& rHiddenGeometry(static_cast< const primitive3d::HiddenGeometryPrimitive3D& >(rCandidate));
- const primitive3d::Primitive3DSequence& rChildren = rHiddenGeometry.getChildren();
-
- if(rChildren.hasElements())
- {
- if(getUseInvisiblePrimitiveContent())
- {
- process(rChildren);
- }
- }
-
- break;
- }
- case PRIMITIVE3D_ID_UNIFIEDTRANSPARENCETEXTUREPRIMITIVE3D :
- {
- const primitive3d::UnifiedTransparenceTexturePrimitive3D& rPrimitive = static_cast< const primitive3d::UnifiedTransparenceTexturePrimitive3D& >(rCandidate);
- const primitive3d::Primitive3DSequence rChildren = rPrimitive.getChildren();
-
- if(rChildren.getLength())
- {
- if(1.0 <= rPrimitive.getTransparence())
- {
- // not visible, but use for HitTest
- if(getUseInvisiblePrimitiveContent())
- {
- process(rChildren);
- }
- }
- else if(rPrimitive.getTransparence() >= 0.0 && rPrimitive.getTransparence() < 1.0)
- {
- // visible; use content
- process(rChildren);
- }
- }
-
- break;
- }
- case PRIMITIVE3D_ID_POLYPOLYGONMATERIALPRIMITIVE3D :
- {
- // PolyPolygonMaterialPrimitive3D
- const primitive3d::PolyPolygonMaterialPrimitive3D& rPrimitive = static_cast< const primitive3d::PolyPolygonMaterialPrimitive3D& >(rCandidate);
-
- if(!maFront.equal(maBack))
- {
- const basegfx::B3DPolyPolygon& rPolyPolygon = rPrimitive.getB3DPolyPolygon();
- const sal_uInt32 nPolyCount(rPolyPolygon.count());
-
- if(nPolyCount)
- {
- const basegfx::B3DPolygon aPolygon(rPolyPolygon.getB3DPolygon(0));
- const sal_uInt32 nPointCount(aPolygon.count());
-
- if(nPointCount > 2)
- {
- const basegfx::B3DVector aPlaneNormal(aPolygon.getNormal());
-
- if(!aPlaneNormal.equalZero())
- {
- const basegfx::B3DPoint aPointOnPlane(aPolygon.getB3DPoint(0));
- double fCut(0.0);
-
- if(basegfx::tools::getCutBetweenLineAndPlane(aPlaneNormal, aPointOnPlane, maFront, maBack, fCut))
- {
- const basegfx::B3DPoint aCutPoint(basegfx::interpolate(maFront, maBack, fCut));
-
- if(basegfx::tools::isInside(rPolyPolygon, aCutPoint, false))
- {
- // #i102956# add result. Do not forget to do this in the coordinate
- // system the processor get started with, so use the collected
- // combined transformation from processed TransformPrimitive3D's
- maResult.push_back(maCombinedTransform * aCutPoint);
- }
- }
- }
- }
- }
- }
-
- break;
- }
- default :
- {
- // process recursively
- process(rCandidate.get3DDecomposition(getViewInformation3D()));
- break;
- }
- }
- }
- } // end of namespace processor3d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/processor3d/defaultprocessor3d.cxx b/drawinglayer/source/processor3d/defaultprocessor3d.cxx
deleted file mode 100644
index 8768d25dc3..0000000000
--- a/drawinglayer/source/processor3d/defaultprocessor3d.cxx
+++ /dev/null
@@ -1,569 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/processor3d/defaultprocessor3d.hxx>
-#include <drawinglayer/primitive3d/textureprimitive3d.hxx>
-#include <drawinglayer/texture/texture.hxx>
-#include <drawinglayer/texture/texture3d.hxx>
-#include <drawinglayer/primitive3d/hatchtextureprimitive3d.hxx>
-#include <drawinglayer/primitive3d/modifiedcolorprimitive3d.hxx>
-#include <drawinglayer/primitive3d/polygonprimitive3d.hxx>
-#include <basegfx/polygon/b3dpolygontools.hxx>
-#include <drawinglayer/attribute/materialattribute3d.hxx>
-#include <drawinglayer/primitive3d/polypolygonprimitive3d.hxx>
-#include <basegfx/polygon/b3dpolypolygontools.hxx>
-#include <com/sun/star/drawing/ShadeMode.hpp>
-#include <drawinglayer/primitive3d/transformprimitive3d.hxx>
-#include <drawinglayer/primitive3d/drawinglayer_primitivetypes3d.hxx>
-#include <vcl/bitmapex.hxx>
-#include <drawinglayer/attribute/sdrsceneattribute3d.hxx>
-#include <drawinglayer/attribute/sdrlightingattribute3d.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-using namespace com::sun::star;
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace processor3d
- {
- void DefaultProcessor3D::impRenderGradientTexturePrimitive3D(const primitive3d::GradientTexturePrimitive3D& rPrimitive, bool bTransparence)
- {
- const primitive3d::Primitive3DSequence& rSubSequence = rPrimitive.getChildren();
-
- if(rSubSequence.hasElements())
- {
- // rescue values
- const bool bOldModulate(getModulate()); mbModulate = rPrimitive.getModulate();
- const bool bOldFilter(getFilter()); mbFilter = rPrimitive.getFilter();
- const bool bOldSimpleTextureActive(getSimpleTextureActive());
- boost::shared_ptr< texture::GeoTexSvx > pOldTex = (bTransparence) ? mpTransparenceGeoTexSvx : mpGeoTexSvx;
-
- // create texture
- const attribute::FillGradientAttribute& rFillGradient = rPrimitive.getGradient();
- const basegfx::B2DRange aOutlineRange(0.0, 0.0, rPrimitive.getTextureSize().getX(), rPrimitive.getTextureSize().getY());
- const attribute::GradientStyle aGradientStyle(rFillGradient.getStyle());
- sal_uInt32 nSteps(rFillGradient.getSteps());
- const basegfx::BColor aStart(rFillGradient.getStartColor());
- const basegfx::BColor aEnd(rFillGradient.getEndColor());
- const sal_uInt32 nMaxSteps(sal_uInt32((aStart.getMaximumDistance(aEnd) * 127.5) + 0.5));
- boost::shared_ptr< texture::GeoTexSvx > pNewTex;
-
- if(nMaxSteps)
- {
- // there IS a color distance
- if(nSteps == 0L)
- {
- nSteps = nMaxSteps;
- }
-
- if(nSteps < 2L)
- {
- nSteps = 2L;
- }
-
- if(nSteps > nMaxSteps)
- {
- nSteps = nMaxSteps;
- }
-
- switch(aGradientStyle)
- {
- case attribute::GRADIENTSTYLE_LINEAR:
- {
- pNewTex.reset(new texture::GeoTexSvxGradientLinear(aOutlineRange, aStart, aEnd, nSteps, rFillGradient.getBorder(), rFillGradient.getAngle()));
- break;
- }
- case attribute::GRADIENTSTYLE_AXIAL:
- {
- pNewTex.reset(new texture::GeoTexSvxGradientAxial(aOutlineRange, aStart, aEnd, nSteps, rFillGradient.getBorder(), rFillGradient.getAngle()));
- break;
- }
- case attribute::GRADIENTSTYLE_RADIAL:
- {
- pNewTex.reset(new texture::GeoTexSvxGradientRadial(aOutlineRange, aStart, aEnd, nSteps, rFillGradient.getBorder(), rFillGradient.getOffsetX(), rFillGradient.getOffsetY()));
- break;
- }
- case attribute::GRADIENTSTYLE_ELLIPTICAL:
- {
- pNewTex.reset(new texture::GeoTexSvxGradientElliptical(aOutlineRange, aStart, aEnd, nSteps, rFillGradient.getBorder(), rFillGradient.getOffsetX(), rFillGradient.getOffsetY(), rFillGradient.getAngle()));
- break;
- }
- case attribute::GRADIENTSTYLE_SQUARE:
- {
- pNewTex.reset(new texture::GeoTexSvxGradientSquare(aOutlineRange, aStart, aEnd, nSteps, rFillGradient.getBorder(), rFillGradient.getOffsetX(), rFillGradient.getOffsetY(), rFillGradient.getAngle()));
- break;
- }
- case attribute::GRADIENTSTYLE_RECT:
- {
- pNewTex.reset(new texture::GeoTexSvxGradientRect(aOutlineRange, aStart, aEnd, nSteps, rFillGradient.getBorder(), rFillGradient.getOffsetX(), rFillGradient.getOffsetY(), rFillGradient.getAngle()));
- break;
- }
- }
-
- mbSimpleTextureActive = false;
- }
- else
- {
- // no color distance -> same color, use simple texture
- pNewTex.reset(new texture::GeoTexSvxMono(aStart, 1.0 - aStart.luminance()));
- mbSimpleTextureActive = true;
- }
-
- // set created texture
- if(bTransparence)
- {
- mpTransparenceGeoTexSvx = pNewTex;
- }
- else
- {
- mpGeoTexSvx = pNewTex;
- }
-
- // process sub-list
- process(rSubSequence);
-
- // restore values
- mbModulate = bOldModulate;
- mbFilter = bOldFilter;
- mbSimpleTextureActive = bOldSimpleTextureActive;
-
- if(bTransparence)
- {
- mpTransparenceGeoTexSvx = pOldTex;
- }
- else
- {
- mpGeoTexSvx = pOldTex;
- }
- }
- }
-
- void DefaultProcessor3D::impRenderHatchTexturePrimitive3D(const primitive3d::HatchTexturePrimitive3D& rPrimitive)
- {
- const primitive3d::Primitive3DSequence& rSubSequence = rPrimitive.getChildren();
-
- if(rSubSequence.hasElements())
- {
- // rescue values
- const bool bOldModulate(getModulate()); mbModulate = rPrimitive.getModulate();
- const bool bOldFilter(getFilter()); mbFilter = rPrimitive.getFilter();
- boost::shared_ptr< texture::GeoTexSvx > pOldTex = mpGeoTexSvx;
-
- // calculate logic pixel size in object coordinates. Create transformation view
- // to object by inverting ObjectToView
- basegfx::B3DHomMatrix aInvObjectToView(getViewInformation3D().getObjectToView());
- aInvObjectToView.invert();
-
- // back-project discrete coordinates to object coordinates and extract
- // maximum distance
- const basegfx::B3DPoint aZero(aInvObjectToView * basegfx::B3DPoint(0.0, 0.0, 0.0));
- const basegfx::B3DPoint aOne(aInvObjectToView * basegfx::B3DPoint(1.0, 1.0, 1.0));
- const basegfx::B3DVector aLogicPixel(aOne - aZero);
- double fLogicPixelSizeWorld(::std::max(::std::max(fabs(aLogicPixel.getX()), fabs(aLogicPixel.getY())), fabs(aLogicPixel.getZ())));
-
- // calculate logic pixel size in texture coordinates
- const double fLogicTexSizeX(fLogicPixelSizeWorld / rPrimitive.getTextureSize().getX());
- const double fLogicTexSizeY(fLogicPixelSizeWorld / rPrimitive.getTextureSize().getY());
- const double fLogicTexSize(fLogicTexSizeX > fLogicTexSizeY ? fLogicTexSizeX : fLogicTexSizeY);
-
- // create texture and set
- mpGeoTexSvx.reset(new texture::GeoTexSvxMultiHatch(rPrimitive, fLogicTexSize));
-
- // process sub-list
- process(rSubSequence);
-
- // restore values
- mbModulate = bOldModulate;
- mbFilter = bOldFilter;
- mpGeoTexSvx = pOldTex;
- }
- }
-
- void DefaultProcessor3D::impRenderBitmapTexturePrimitive3D(const primitive3d::BitmapTexturePrimitive3D& rPrimitive)
- {
- const primitive3d::Primitive3DSequence& rSubSequence = rPrimitive.getChildren();
-
- if(rSubSequence.hasElements())
- {
- // rescue values
- const bool bOldModulate(getModulate()); mbModulate = rPrimitive.getModulate();
- const bool bOldFilter(getFilter()); mbFilter = rPrimitive.getFilter();
- boost::shared_ptr< texture::GeoTexSvx > pOldTex = mpGeoTexSvx;
-
- // create texture
- const attribute::FillBitmapAttribute& rFillBitmapAttribute = rPrimitive.getFillBitmapAttribute();
-
- if(rFillBitmapAttribute.getTiling())
- {
- mpGeoTexSvx.reset(new texture::GeoTexSvxBitmapTiled(
- rFillBitmapAttribute.getBitmapEx().GetBitmap(),
- rFillBitmapAttribute.getTopLeft() * rPrimitive.getTextureSize(),
- rFillBitmapAttribute.getSize() * rPrimitive.getTextureSize()));
- }
- else
- {
- mpGeoTexSvx.reset(new texture::GeoTexSvxBitmap(
- rFillBitmapAttribute.getBitmapEx().GetBitmap(),
- rFillBitmapAttribute.getTopLeft() * rPrimitive.getTextureSize(),
- rFillBitmapAttribute.getSize() * rPrimitive.getTextureSize()));
- }
-
- // process sub-list
- process(rSubSequence);
-
- // restore values
- mbModulate = bOldModulate;
- mbFilter = bOldFilter;
- mpGeoTexSvx = pOldTex;
- }
- }
-
- void DefaultProcessor3D::impRenderModifiedColorPrimitive3D(const primitive3d::ModifiedColorPrimitive3D& rModifiedCandidate)
- {
- const primitive3d::Primitive3DSequence& rSubSequence = rModifiedCandidate.getChildren();
-
- if(rSubSequence.hasElements())
- {
- // put modifier on stack
- maBColorModifierStack.push(rModifiedCandidate.getColorModifier());
-
- // process sub-list
- process(rModifiedCandidate.getChildren());
-
- // remove modifier from stack
- maBColorModifierStack.pop();
- }
- }
-
- void DefaultProcessor3D::impRenderPolygonHairlinePrimitive3D(const primitive3d::PolygonHairlinePrimitive3D& rPrimitive)
- {
- basegfx::B3DPolygon aHairline(rPrimitive.getB3DPolygon());
-
- if(aHairline.count())
- {
- // hairlines need no extra data, clear it
- aHairline.clearTextureCoordinates();
- aHairline.clearNormals();
- aHairline.clearBColors();
-
- // transform to device coordinates (-1.0 .. 1.0) and check for visibility
- aHairline.transform(getViewInformation3D().getObjectToView());
- const basegfx::B3DRange a3DRange(basegfx::tools::getRange(aHairline));
- const basegfx::B2DRange a2DRange(a3DRange.getMinX(), a3DRange.getMinY(), a3DRange.getMaxX(), a3DRange.getMaxY());
-
- if(a2DRange.overlaps(maRasterRange))
- {
- const attribute::MaterialAttribute3D aMaterial(maBColorModifierStack.getModifiedColor(rPrimitive.getBColor()));
-
- rasterconvertB3DPolygon(aMaterial, aHairline);
- }
- }
- }
-
- void DefaultProcessor3D::impRenderPolyPolygonMaterialPrimitive3D(const primitive3d::PolyPolygonMaterialPrimitive3D& rPrimitive)
- {
- basegfx::B3DPolyPolygon aFill(rPrimitive.getB3DPolyPolygon());
- basegfx::BColor aObjectColor(rPrimitive.getMaterial().getColor());
- bool bPaintIt(aFill.count());
-
- // #i98295# get ShadeMode. Correct early when only flat is possible due to missing normals
- const ::com::sun::star::drawing::ShadeMode aShadeMode(
- aFill.areNormalsUsed() ?
- getSdrSceneAttribute().getShadeMode() : ::com::sun::star::drawing::ShadeMode_FLAT);
-
- if(bPaintIt)
- {
- // get rid of texture coordinates if there is no texture
- if(aFill.areTextureCoordinatesUsed() && !getGeoTexSvx().get() && !getTransparenceGeoTexSvx().get())
- {
- aFill.clearTextureCoordinates();
- }
-
- // #i98295# get rid of normals and color early when not needed
- if(::com::sun::star::drawing::ShadeMode_FLAT == aShadeMode)
- {
- aFill.clearNormals();
- aFill.clearBColors();
- }
-
- // transform to device coordinates (-1.0 .. 1.0) and check for visibility
- aFill.transform(getViewInformation3D().getObjectToView());
- const basegfx::B3DRange a3DRange(basegfx::tools::getRange(aFill));
- const basegfx::B2DRange a2DRange(a3DRange.getMinX(), a3DRange.getMinY(), a3DRange.getMaxX(), a3DRange.getMaxY());
-
- bPaintIt = a2DRange.overlaps(maRasterRange);
- }
-
- // check if it shall be painted regarding hiding of normals (backface culling)
- if(bPaintIt && !rPrimitive.getDoubleSided())
- {
- // get plane normal of polygon in view coordinates (with ZBuffer values),
- // left-handed coordinate system
- const basegfx::B3DVector aPlaneNormal(aFill.getB3DPolygon(0L).getNormal());
-
- if(aPlaneNormal.getZ() > 0.0)
- {
- bPaintIt = false;
- }
- }
-
- if(bPaintIt)
- {
- // prepare ObjectToEye in NormalTransform
- basegfx::B3DHomMatrix aNormalTransform(getViewInformation3D().getOrientation() * getViewInformation3D().getObjectTransformation());
-
- if(getSdrSceneAttribute().getTwoSidedLighting())
- {
- // get plane normal of polygon in view coordinates (with ZBuffer values),
- // left-handed coordinate system
- const basegfx::B3DVector aPlaneNormal(aFill.getB3DPolygon(0L).getNormal());
-
- if(aPlaneNormal.getZ() > 0.0)
- {
- // mirror normals
- aNormalTransform.scale(-1.0, -1.0, -1.0);
- }
- }
-
- switch(aShadeMode)
- {
- case ::com::sun::star::drawing::ShadeMode_PHONG:
- {
- // phong shading. Transform normals to eye coor
- aFill.transformNormals(aNormalTransform);
- break;
- }
- case ::com::sun::star::drawing::ShadeMode_SMOOTH:
- {
- // gouraud shading. Transform normals to eye coor
- aFill.transformNormals(aNormalTransform);
-
- // prepare color model parameters, evtl. use blend color
- const basegfx::BColor aColor(getModulate() ? basegfx::BColor(1.0, 1.0, 1.0) : rPrimitive.getMaterial().getColor());
- const basegfx::BColor& rSpecular(rPrimitive.getMaterial().getSpecular());
- const basegfx::BColor& rEmission(rPrimitive.getMaterial().getEmission());
- const sal_uInt16 nSpecularIntensity(rPrimitive.getMaterial().getSpecularIntensity());
-
- // solve color model for each normal vector, set colors at points. Clear normals.
- for(sal_uInt32 a(0L); a < aFill.count(); a++)
- {
- basegfx::B3DPolygon aPartFill(aFill.getB3DPolygon(a));
-
- for(sal_uInt32 b(0L); b < aPartFill.count(); b++)
- {
- // solve color model. Transform normal to eye coor
- const basegfx::B3DVector aNormal(aPartFill.getNormal(b));
- const basegfx::BColor aSolvedColor(getSdrLightingAttribute().solveColorModel(aNormal, aColor, rSpecular, rEmission, nSpecularIntensity));
- aPartFill.setBColor(b, aSolvedColor);
- }
-
- // clear normals on this part polygon and write it back
- aPartFill.clearNormals();
- aFill.setB3DPolygon(a, aPartFill);
- }
- break;
- }
- case ::com::sun::star::drawing::ShadeMode_FLAT:
- {
- // flat shading. Get plane vector in eye coordinates
- const basegfx::B3DVector aPlaneEyeNormal(aNormalTransform * rPrimitive.getB3DPolyPolygon().getB3DPolygon(0L).getNormal());
-
- // prepare color model parameters, evtl. use blend color
- const basegfx::BColor aColor(getModulate() ? basegfx::BColor(1.0, 1.0, 1.0) : rPrimitive.getMaterial().getColor());
- const basegfx::BColor& rSpecular(rPrimitive.getMaterial().getSpecular());
- const basegfx::BColor& rEmission(rPrimitive.getMaterial().getEmission());
- const sal_uInt16 nSpecularIntensity(rPrimitive.getMaterial().getSpecularIntensity());
-
- // solve color model for plane vector and use that color for whole plane
- aObjectColor = getSdrLightingAttribute().solveColorModel(aPlaneEyeNormal, aColor, rSpecular, rEmission, nSpecularIntensity);
- break;
- }
- default: // case ::com::sun::star::drawing::ShadeMode_DRAFT:
- {
- // draft, just use object color which is already set. Delete all other infos
- aFill.clearNormals();
- aFill.clearBColors();
- break;
- }
- }
-
- // draw it to ZBuffer
- const attribute::MaterialAttribute3D aMaterial(
- maBColorModifierStack.getModifiedColor(aObjectColor),
- rPrimitive.getMaterial().getSpecular(),
- rPrimitive.getMaterial().getEmission(),
- rPrimitive.getMaterial().getSpecularIntensity());
-
- rasterconvertB3DPolyPolygon(aMaterial, aFill);
- }
- }
-
- void DefaultProcessor3D::impRenderTransformPrimitive3D(const primitive3d::TransformPrimitive3D& rTransformCandidate)
- {
- // transform group. Remember current transformations
- const geometry::ViewInformation3D aLastViewInformation3D(getViewInformation3D());
-
- // create new transformation; add new object transform from right side
- const geometry::ViewInformation3D aNewViewInformation3D(
- aLastViewInformation3D.getObjectTransformation() * rTransformCandidate.getTransformation(),
- aLastViewInformation3D.getOrientation(),
- aLastViewInformation3D.getProjection(),
- aLastViewInformation3D.getDeviceToView(),
- aLastViewInformation3D.getViewTime(),
- aLastViewInformation3D.getExtendedInformationSequence());
- updateViewInformation(aNewViewInformation3D);
-
- // let break down recursively
- process(rTransformCandidate.getChildren());
-
- // restore transformations
- updateViewInformation(aLastViewInformation3D);
- }
-
- void DefaultProcessor3D::processBasePrimitive3D(const primitive3d::BasePrimitive3D& rBasePrimitive)
- {
- // it is a BasePrimitive3D implementation, use getPrimitive3DID() call for switch
- switch(rBasePrimitive.getPrimitive3DID())
- {
- case PRIMITIVE3D_ID_GRADIENTTEXTUREPRIMITIVE3D :
- {
- // GradientTexturePrimitive3D
- const primitive3d::GradientTexturePrimitive3D& rPrimitive = static_cast< const primitive3d::GradientTexturePrimitive3D& >(rBasePrimitive);
- impRenderGradientTexturePrimitive3D(rPrimitive, false);
- break;
- }
- case PRIMITIVE3D_ID_HATCHTEXTUREPRIMITIVE3D :
- {
- // HatchTexturePrimitive3D
- static bool bDoHatchDecomposition(false);
-
- if(bDoHatchDecomposition)
- {
- // let break down
- process(rBasePrimitive.get3DDecomposition(getViewInformation3D()));
- }
- else
- {
- // hatchTexturePrimitive3D
- const primitive3d::HatchTexturePrimitive3D& rPrimitive = static_cast< const primitive3d::HatchTexturePrimitive3D& >(rBasePrimitive);
- impRenderHatchTexturePrimitive3D(rPrimitive);
- }
- break;
- }
- case PRIMITIVE3D_ID_BITMAPTEXTUREPRIMITIVE3D :
- {
- // BitmapTexturePrimitive3D
- const primitive3d::BitmapTexturePrimitive3D& rPrimitive = static_cast< const primitive3d::BitmapTexturePrimitive3D& >(rBasePrimitive);
- impRenderBitmapTexturePrimitive3D(rPrimitive);
- break;
- }
- case PRIMITIVE3D_ID_TRANSPARENCETEXTUREPRIMITIVE3D :
- {
- // TransparenceTexturePrimitive3D
- const primitive3d::TransparenceTexturePrimitive3D& rPrimitive = static_cast< const primitive3d::TransparenceTexturePrimitive3D& >(rBasePrimitive);
- mnTransparenceCounter++;
- impRenderGradientTexturePrimitive3D(rPrimitive, true);
- mnTransparenceCounter--;
- break;
- }
- case PRIMITIVE3D_ID_MODIFIEDCOLORPRIMITIVE3D :
- {
- // ModifiedColorPrimitive3D
- // Force output to unified color.
- const primitive3d::ModifiedColorPrimitive3D& rPrimitive = static_cast< const primitive3d::ModifiedColorPrimitive3D& >(rBasePrimitive);
- impRenderModifiedColorPrimitive3D(rPrimitive);
- break;
- }
- case PRIMITIVE3D_ID_POLYGONHAIRLINEPRIMITIVE3D :
- {
- // directdraw of PolygonHairlinePrimitive3D
- const primitive3d::PolygonHairlinePrimitive3D& rPrimitive = static_cast< const primitive3d::PolygonHairlinePrimitive3D& >(rBasePrimitive);
- impRenderPolygonHairlinePrimitive3D(rPrimitive);
- break;
- }
- case PRIMITIVE3D_ID_POLYPOLYGONMATERIALPRIMITIVE3D :
- {
- // directdraw of PolyPolygonMaterialPrimitive3D
- const primitive3d::PolyPolygonMaterialPrimitive3D& rPrimitive = static_cast< const primitive3d::PolyPolygonMaterialPrimitive3D& >(rBasePrimitive);
- impRenderPolyPolygonMaterialPrimitive3D(rPrimitive);
- break;
- }
- case PRIMITIVE3D_ID_TRANSFORMPRIMITIVE3D :
- {
- // transform group (TransformPrimitive3D)
- impRenderTransformPrimitive3D(static_cast< const primitive3d::TransformPrimitive3D& >(rBasePrimitive));
- break;
- }
- default:
- {
- // process recursively
- process(rBasePrimitive.get3DDecomposition(getViewInformation3D()));
- break;
- }
- }
- }
-
- DefaultProcessor3D::DefaultProcessor3D(
- const geometry::ViewInformation3D& rViewInformation,
- const attribute::SdrSceneAttribute& rSdrSceneAttribute,
- const attribute::SdrLightingAttribute& rSdrLightingAttribute)
- : BaseProcessor3D(rViewInformation),
- mrSdrSceneAttribute(rSdrSceneAttribute),
- mrSdrLightingAttribute(rSdrLightingAttribute),
- maRasterRange(),
- maBColorModifierStack(),
- mpGeoTexSvx(),
- mpTransparenceGeoTexSvx(),
- maDrawinglayerOpt(),
- mnTransparenceCounter(0),
- mbModulate(false),
- mbFilter(false),
- mbSimpleTextureActive(false)
- {
- // a derivation has to set maRasterRange which is used in the basic render methods.
- // Setting to default here ([0.0 .. 1.0] in X,Y) to avoid problems
- maRasterRange.expand(basegfx::B2DTuple(0.0, 0.0));
- maRasterRange.expand(basegfx::B2DTuple(1.0, 1.0));
- }
-
- DefaultProcessor3D::~DefaultProcessor3D()
- {
- }
- } // end of namespace processor3d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/processor3d/geometry2dextractor.cxx b/drawinglayer/source/processor3d/geometry2dextractor.cxx
deleted file mode 100644
index 7a422bc8d8..0000000000
--- a/drawinglayer/source/processor3d/geometry2dextractor.cxx
+++ /dev/null
@@ -1,173 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/processor3d/geometry2dextractor.hxx>
-#include <drawinglayer/primitive3d/drawinglayer_primitivetypes3d.hxx>
-#include <drawinglayer/primitive3d/transformprimitive3d.hxx>
-#include <drawinglayer/primitive3d/modifiedcolorprimitive3d.hxx>
-#include <drawinglayer/primitive3d/polygonprimitive3d.hxx>
-#include <basegfx/polygon/b2dpolygontools.hxx>
-#include <drawinglayer/primitive2d/polygonprimitive2d.hxx>
-#include <drawinglayer/primitive3d/polypolygonprimitive3d.hxx>
-#include <basegfx/polygon/b2dpolypolygontools.hxx>
-#include <drawinglayer/primitive2d/polypolygonprimitive2d.hxx>
-#include <drawinglayer/primitive3d/textureprimitive3d.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-using namespace com::sun::star;
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace processor3d
- {
- // as tooling, the process() implementation takes over API handling and calls this
- // virtual render method when the primitive implementation is BasePrimitive3D-based.
- void Geometry2DExtractingProcessor::processBasePrimitive3D(const primitive3d::BasePrimitive3D& rCandidate)
- {
- // it is a BasePrimitive3D implementation, use getPrimitive3DID() call for switch
- switch(rCandidate.getPrimitive3DID())
- {
- case PRIMITIVE3D_ID_TRANSFORMPRIMITIVE3D :
- {
- // transform group. Remember current transformations
- const primitive3d::TransformPrimitive3D& rPrimitive = static_cast< const primitive3d::TransformPrimitive3D& >(rCandidate);
- const geometry::ViewInformation3D aLastViewInformation3D(getViewInformation3D());
-
- // create new transformation; add new object transform from right side
- const geometry::ViewInformation3D aNewViewInformation3D(
- aLastViewInformation3D.getObjectTransformation() * rPrimitive.getTransformation(),
- aLastViewInformation3D.getOrientation(),
- aLastViewInformation3D.getProjection(),
- aLastViewInformation3D.getDeviceToView(),
- aLastViewInformation3D.getViewTime(),
- aLastViewInformation3D.getExtendedInformationSequence());
- updateViewInformation(aNewViewInformation3D);
-
- // let break down recursively
- process(rPrimitive.getChildren());
-
- // restore transformations
- updateViewInformation(aLastViewInformation3D);
- break;
- }
- case PRIMITIVE3D_ID_MODIFIEDCOLORPRIMITIVE3D :
- {
- // ModifiedColorPrimitive3D; push, process and pop
- const primitive3d::ModifiedColorPrimitive3D& rModifiedCandidate = static_cast< const primitive3d::ModifiedColorPrimitive3D& >(rCandidate);
- const primitive3d::Primitive3DSequence& rSubSequence = rModifiedCandidate.getChildren();
-
- if(rSubSequence.hasElements())
- {
- maBColorModifierStack.push(rModifiedCandidate.getColorModifier());
- process(rModifiedCandidate.getChildren());
- maBColorModifierStack.pop();
- }
- break;
- }
- case PRIMITIVE3D_ID_POLYGONHAIRLINEPRIMITIVE3D :
- {
- // PolygonHairlinePrimitive3D
- const primitive3d::PolygonHairlinePrimitive3D& rPrimitive = static_cast< const primitive3d::PolygonHairlinePrimitive3D& >(rCandidate);
- basegfx::B2DPolygon a2DHairline(basegfx::tools::createB2DPolygonFromB3DPolygon(rPrimitive.getB3DPolygon(), getViewInformation3D().getObjectToView()));
-
- if(a2DHairline.count())
- {
- a2DHairline.transform(getObjectTransformation());
- const basegfx::BColor aModifiedColor(maBColorModifierStack.getModifiedColor(rPrimitive.getBColor()));
- const primitive2d::Primitive2DReference xRef(new primitive2d::PolygonHairlinePrimitive2D(a2DHairline, aModifiedColor));
- primitive2d::appendPrimitive2DReferenceToPrimitive2DSequence(maPrimitive2DSequence, xRef);
- }
- break;
- }
- case PRIMITIVE3D_ID_POLYPOLYGONMATERIALPRIMITIVE3D :
- {
- // PolyPolygonMaterialPrimitive3D
- const primitive3d::PolyPolygonMaterialPrimitive3D& rPrimitive = static_cast< const primitive3d::PolyPolygonMaterialPrimitive3D& >(rCandidate);
- basegfx::B2DPolyPolygon a2DFill(basegfx::tools::createB2DPolyPolygonFromB3DPolyPolygon(rPrimitive.getB3DPolyPolygon(), getViewInformation3D().getObjectToView()));
-
- if(a2DFill.count())
- {
- a2DFill.transform(getObjectTransformation());
- const basegfx::BColor aModifiedColor(maBColorModifierStack.getModifiedColor(rPrimitive.getMaterial().getColor()));
- const primitive2d::Primitive2DReference xRef(new primitive2d::PolyPolygonColorPrimitive2D(a2DFill, aModifiedColor));
- primitive2d::appendPrimitive2DReferenceToPrimitive2DSequence(maPrimitive2DSequence, xRef);
- }
- break;
- }
- case PRIMITIVE3D_ID_GRADIENTTEXTUREPRIMITIVE3D :
- case PRIMITIVE3D_ID_HATCHTEXTUREPRIMITIVE3D :
- case PRIMITIVE3D_ID_BITMAPTEXTUREPRIMITIVE3D :
- case PRIMITIVE3D_ID_TRANSPARENCETEXTUREPRIMITIVE3D :
- case PRIMITIVE3D_ID_UNIFIEDTRANSPARENCETEXTUREPRIMITIVE3D :
- {
- // TexturePrimitive3D: Process children, do not try to decompose
- const primitive3d::TexturePrimitive3D& rTexturePrimitive = static_cast< const primitive3d::TexturePrimitive3D& >(rCandidate);
- const primitive3d::Primitive3DSequence aChildren(rTexturePrimitive.getChildren());
-
- if(aChildren.hasElements())
- {
- process(aChildren);
- }
- break;
- }
- case PRIMITIVE3D_ID_SHADOWPRIMITIVE3D :
- {
- // accept but ignore labels and shadow; these should be extracted seperately
- break;
- }
- default :
- {
- // process recursively
- process(rCandidate.get3DDecomposition(getViewInformation3D()));
- break;
- }
- }
- }
-
- Geometry2DExtractingProcessor::Geometry2DExtractingProcessor(
- const geometry::ViewInformation3D& rViewInformation,
- const basegfx::B2DHomMatrix& rObjectTransformation)
- : BaseProcessor3D(rViewInformation),
- maPrimitive2DSequence(),
- maObjectTransformation(rObjectTransformation),
- maBColorModifierStack()
- {
- }
- } // end of namespace processor3d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/processor3d/shadow3dextractor.cxx b/drawinglayer/source/processor3d/shadow3dextractor.cxx
deleted file mode 100644
index 2a71d97a29..0000000000
--- a/drawinglayer/source/processor3d/shadow3dextractor.cxx
+++ /dev/null
@@ -1,345 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/processor3d/shadow3dextractor.hxx>
-#include <drawinglayer/primitive3d/shadowprimitive3d.hxx>
-#include <drawinglayer/primitive2d/shadowprimitive2d.hxx>
-#include <drawinglayer/primitive2d/unifiedtransparenceprimitive2d.hxx>
-#include <drawinglayer/primitive3d/transformprimitive3d.hxx>
-#include <drawinglayer/primitive3d/polygonprimitive3d.hxx>
-#include <basegfx/polygon/b2dpolygontools.hxx>
-#include <drawinglayer/primitive2d/polygonprimitive2d.hxx>
-#include <drawinglayer/primitive3d/polypolygonprimitive3d.hxx>
-#include <basegfx/polygon/b2dpolypolygontools.hxx>
-#include <drawinglayer/primitive2d/polypolygonprimitive2d.hxx>
-#include <drawinglayer/primitive3d/drawinglayer_primitivetypes3d.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-using namespace com::sun::star;
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace processor3d
- {
- /// helper to convert from BasePrimitive2DVector to primitive2d::Primitive2DSequence
- const primitive2d::Primitive2DSequence Shadow3DExtractingProcessor::getPrimitive2DSequenceFromBasePrimitive2DVector(
- const BasePrimitive2DVector& rVector) const
- {
- const sal_uInt32 nCount(rVector.size());
- primitive2d::Primitive2DSequence aRetval(nCount);
-
- for(sal_uInt32 a(0); a < nCount; a++)
- {
- aRetval[a] = rVector[a];
- }
-
- // all entries taken over; no need to delete entries, just reset to
- // mark as empty
- const_cast< BasePrimitive2DVector& >(rVector).clear();
-
- return aRetval;
- }
-
- // as tooling, the process() implementation takes over API handling and calls this
- // virtual render method when the primitive implementation is BasePrimitive3D-based.
- void Shadow3DExtractingProcessor::processBasePrimitive3D(const primitive3d::BasePrimitive3D& rCandidate)
- {
- // it is a BasePrimitive3D implementation, use getPrimitive3DID() call for switch
- switch(rCandidate.getPrimitive3DID())
- {
- case PRIMITIVE3D_ID_SHADOWPRIMITIVE3D :
- {
- // shadow3d object. Call recursive with content and start conversion
- const primitive3d::ShadowPrimitive3D& rPrimitive = static_cast< const primitive3d::ShadowPrimitive3D& >(rCandidate);
-
- // set new target
- BasePrimitive2DVector aNewSubList;
- BasePrimitive2DVector* pLastTargetSequence = mpPrimitive2DSequence;
- mpPrimitive2DSequence = &aNewSubList;
-
- // activate convert
- const bool bLastConvert(mbConvert);
- mbConvert = true;
-
- // set projection flag
- const bool bLastUseProjection(mbUseProjection);
- mbUseProjection = rPrimitive.getShadow3D();
-
- // process content
- process(rPrimitive.getChildren());
-
- // restore values
- mbUseProjection = bLastUseProjection;
- mbConvert = bLastConvert;
- mpPrimitive2DSequence = pLastTargetSequence;
-
- // create 2d shadow primitive with result. This also fetches all entries
- // from aNewSubList, so there is no need to delete them
- primitive2d::BasePrimitive2D* pNew = new primitive2d::ShadowPrimitive2D(
- rPrimitive.getShadowTransform(),
- rPrimitive.getShadowColor(),
- getPrimitive2DSequenceFromBasePrimitive2DVector(aNewSubList));
-
- if(basegfx::fTools::more(rPrimitive.getShadowTransparence(), 0.0))
- {
- // create simpleTransparencePrimitive, add created primitives
- const primitive2d::Primitive2DReference xRef(pNew);
- const primitive2d::Primitive2DSequence aNewTransPrimitiveVector(&xRef, 1);
-
- pNew = new primitive2d::UnifiedTransparencePrimitive2D(
- aNewTransPrimitiveVector,
- rPrimitive.getShadowTransparence());
- }
-
- mpPrimitive2DSequence->push_back(pNew);
-
- break;
- }
- case PRIMITIVE3D_ID_TRANSFORMPRIMITIVE3D :
- {
- // transform group. Remember current transformations
- const primitive3d::TransformPrimitive3D& rPrimitive = static_cast< const primitive3d::TransformPrimitive3D& >(rCandidate);
- const geometry::ViewInformation3D aLastViewInformation3D(getViewInformation3D());
-
- // create new transformation; add new object transform from right side
- const geometry::ViewInformation3D aNewViewInformation3D(
- aLastViewInformation3D.getObjectTransformation() * rPrimitive.getTransformation(),
- aLastViewInformation3D.getOrientation(),
- aLastViewInformation3D.getProjection(),
- aLastViewInformation3D.getDeviceToView(),
- aLastViewInformation3D.getViewTime(),
- aLastViewInformation3D.getExtendedInformationSequence());
- updateViewInformation(aNewViewInformation3D);
-
- if(mbShadowProjectionIsValid)
- {
- // update buffered WorldToEye and EyeToView
- maWorldToEye = getViewInformation3D().getOrientation() * getViewInformation3D().getObjectTransformation();
- maEyeToView = getViewInformation3D().getDeviceToView() * getViewInformation3D().getProjection();
- }
-
- // let break down
- process(rPrimitive.getChildren());
-
- // restore transformations
- updateViewInformation(aLastViewInformation3D);
-
- if(mbShadowProjectionIsValid)
- {
- // update buffered WorldToEye and EyeToView
- maWorldToEye = getViewInformation3D().getOrientation() * getViewInformation3D().getObjectTransformation();
- maEyeToView = getViewInformation3D().getDeviceToView() * getViewInformation3D().getProjection();
- }
- break;
- }
- case PRIMITIVE3D_ID_POLYGONHAIRLINEPRIMITIVE3D :
- {
- // PolygonHairlinePrimitive3D
- if(mbConvert)
- {
- const primitive3d::PolygonHairlinePrimitive3D& rPrimitive = static_cast< const primitive3d::PolygonHairlinePrimitive3D& >(rCandidate);
- basegfx::B2DPolygon a2DHairline;
-
- if(mbUseProjection)
- {
- if(mbShadowProjectionIsValid)
- {
- a2DHairline = impDoShadowProjection(rPrimitive.getB3DPolygon());
- }
- }
- else
- {
- a2DHairline = basegfx::tools::createB2DPolygonFromB3DPolygon(rPrimitive.getB3DPolygon(), getViewInformation3D().getObjectToView());
- }
-
- if(a2DHairline.count())
- {
- a2DHairline.transform(getObjectTransformation());
- mpPrimitive2DSequence->push_back(
- new primitive2d::PolygonHairlinePrimitive2D(
- a2DHairline,
- maPrimitiveColor));
- }
- }
- break;
- }
- case PRIMITIVE3D_ID_POLYPOLYGONMATERIALPRIMITIVE3D :
- {
- // PolyPolygonMaterialPrimitive3D
- if(mbConvert)
- {
- const primitive3d::PolyPolygonMaterialPrimitive3D& rPrimitive = static_cast< const primitive3d::PolyPolygonMaterialPrimitive3D& >(rCandidate);
- basegfx::B2DPolyPolygon a2DFill;
-
- if(mbUseProjection)
- {
- if(mbShadowProjectionIsValid)
- {
- a2DFill = impDoShadowProjection(rPrimitive.getB3DPolyPolygon());
- }
- }
- else
- {
- a2DFill = basegfx::tools::createB2DPolyPolygonFromB3DPolyPolygon(rPrimitive.getB3DPolyPolygon(), getViewInformation3D().getObjectToView());
- }
-
- if(a2DFill.count())
- {
- a2DFill.transform(getObjectTransformation());
- mpPrimitive2DSequence->push_back(
- new primitive2d::PolyPolygonColorPrimitive2D(
- a2DFill,
- maPrimitiveColor));
- }
- }
- break;
- }
- default :
- {
- // process recursively
- process(rCandidate.get3DDecomposition(getViewInformation3D()));
- break;
- }
- }
- }
-
- Shadow3DExtractingProcessor::Shadow3DExtractingProcessor(
- const geometry::ViewInformation3D& rViewInformation,
- const basegfx::B2DHomMatrix& rObjectTransformation,
- const basegfx::B3DVector& rLightNormal,
- double fShadowSlant,
- const basegfx::B3DRange& rContained3DRange)
- : BaseProcessor3D(rViewInformation),
- maPrimitive2DSequence(),
- mpPrimitive2DSequence(&maPrimitive2DSequence),
- maObjectTransformation(rObjectTransformation),
- maWorldToEye(),
- maEyeToView(),
- maLightNormal(rLightNormal),
- maShadowPlaneNormal(),
- maPlanePoint(),
- mfLightPlaneScalar(0.0),
- maPrimitiveColor(),
- mbShadowProjectionIsValid(false),
- mbConvert(false),
- mbUseProjection(false)
- {
- // normalize light normal, get and normalize shadow plane normal and calculate scalar from it
- maLightNormal.normalize();
- maShadowPlaneNormal = basegfx::B3DVector(0.0, sin(fShadowSlant), cos(fShadowSlant));
- maShadowPlaneNormal.normalize();
- mfLightPlaneScalar = maLightNormal.scalar(maShadowPlaneNormal);
-
- // use only when scalar is > 0.0, so the light is in front of the object
- if(basegfx::fTools::more(mfLightPlaneScalar, 0.0))
- {
- // prepare buffered WorldToEye and EyeToView
- maWorldToEye = getViewInformation3D().getOrientation() * getViewInformation3D().getObjectTransformation();
- maEyeToView = getViewInformation3D().getDeviceToView() * getViewInformation3D().getProjection();
-
- // calculate range to get front edge around which to rotate the shadow's projection
- basegfx::B3DRange aContained3DRange(rContained3DRange);
- aContained3DRange.transform(getWorldToEye());
- maPlanePoint.setX(maShadowPlaneNormal.getX() < 0.0 ? aContained3DRange.getMinX() : aContained3DRange.getMaxX());
- maPlanePoint.setY(maShadowPlaneNormal.getY() > 0.0 ? aContained3DRange.getMinY() : aContained3DRange.getMaxY());
- maPlanePoint.setZ(aContained3DRange.getMinZ() - (aContained3DRange.getDepth() / 8.0));
-
- // set flag that shadow projection is prepared and allowed
- mbShadowProjectionIsValid = true;
- }
- }
-
- Shadow3DExtractingProcessor::~Shadow3DExtractingProcessor()
- {
- OSL_ENSURE(0 == maPrimitive2DSequence.size(),
- "OOps, someone used Shadow3DExtractingProcessor, but did not fetch the results (!)");
- for(sal_uInt32 a(0); a < maPrimitive2DSequence.size(); a++)
- {
- delete maPrimitive2DSequence[a];
- }
- }
-
- basegfx::B2DPolygon Shadow3DExtractingProcessor::impDoShadowProjection(const basegfx::B3DPolygon& rSource)
- {
- basegfx::B2DPolygon aRetval;
-
- for(sal_uInt32 a(0L); a < rSource.count(); a++)
- {
- // get point, transform to eye coordinate system
- basegfx::B3DPoint aCandidate(rSource.getB3DPoint(a));
- aCandidate *= getWorldToEye();
-
- // we are in eye coordinates
- // ray is (aCandidate + fCut * maLightNormal)
- // plane is (maPlanePoint, maShadowPlaneNormal)
- // maLightNormal.scalar(maShadowPlaneNormal) is already in mfLightPlaneScalar and > 0.0
- // get cut point of ray with shadow plane
- const double fCut(basegfx::B3DVector(maPlanePoint - aCandidate).scalar(maShadowPlaneNormal) / mfLightPlaneScalar);
- aCandidate += maLightNormal * fCut;
-
- // transform to view, use 2d coordinates
- aCandidate *= getEyeToView();
- aRetval.append(basegfx::B2DPoint(aCandidate.getX(), aCandidate.getY()));
- }
-
- // copy closed flag
- aRetval.setClosed(rSource.isClosed());
-
- return aRetval;
- }
-
- basegfx::B2DPolyPolygon Shadow3DExtractingProcessor::impDoShadowProjection(const basegfx::B3DPolyPolygon& rSource)
- {
- basegfx::B2DPolyPolygon aRetval;
-
- for(sal_uInt32 a(0L); a < rSource.count(); a++)
- {
- aRetval.append(impDoShadowProjection(rSource.getB3DPolygon(a)));
- }
-
- return aRetval;
- }
-
- const primitive2d::Primitive2DSequence Shadow3DExtractingProcessor::getPrimitive2DSequence() const
- {
- return getPrimitive2DSequenceFromBasePrimitive2DVector(maPrimitive2DSequence);
- }
-
- } // end of namespace processor3d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/processor3d/zbufferprocessor3d.cxx b/drawinglayer/source/processor3d/zbufferprocessor3d.cxx
deleted file mode 100644
index 3e822a4f36..0000000000
--- a/drawinglayer/source/processor3d/zbufferprocessor3d.cxx
+++ /dev/null
@@ -1,834 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/processor3d/zbufferprocessor3d.hxx>
-#include <basegfx/raster/bpixelraster.hxx>
-#include <vcl/bmpacc.hxx>
-#include <basegfx/raster/rasterconvert3d.hxx>
-#include <basegfx/raster/bzpixelraster.hxx>
-#include <drawinglayer/attribute/materialattribute3d.hxx>
-#include <drawinglayer/texture/texture.hxx>
-#include <drawinglayer/primitive3d/drawinglayer_primitivetypes3d.hxx>
-#include <drawinglayer/primitive3d/textureprimitive3d.hxx>
-#include <drawinglayer/primitive3d/polygonprimitive3d.hxx>
-#include <drawinglayer/primitive3d/polypolygonprimitive3d.hxx>
-#include <drawinglayer/geometry/viewinformation2d.hxx>
-#include <basegfx/polygon/b3dpolygontools.hxx>
-#include <basegfx/polygon/b3dpolypolygontools.hxx>
-#include <drawinglayer/attribute/sdrlightingattribute3d.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-using namespace com::sun::star;
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace
-{
- BitmapEx BPixelRasterToBitmapEx(const basegfx::BPixelRaster& rRaster, sal_uInt16 mnAntiAlialize)
- {
- BitmapEx aRetval;
- const sal_uInt32 nWidth(mnAntiAlialize ? rRaster.getWidth()/mnAntiAlialize : rRaster.getWidth());
- const sal_uInt32 nHeight(mnAntiAlialize ? rRaster.getHeight()/mnAntiAlialize : rRaster.getHeight());
-
- if(nWidth && nHeight)
- {
- const Size aDestSize(nWidth, nHeight);
- sal_uInt8 nInitAlpha(255);
- Bitmap aContent(aDestSize, 24);
- AlphaMask aAlpha(aDestSize, &nInitAlpha);
- BitmapWriteAccess* pContent = aContent.AcquireWriteAccess();
- BitmapWriteAccess* pAlpha = aAlpha.AcquireWriteAccess();
-
- if(pContent && pAlpha)
- {
- if(mnAntiAlialize)
- {
- const sal_uInt16 nDivisor(mnAntiAlialize * mnAntiAlialize);
-
- for(sal_uInt32 y(0L); y < nHeight; y++)
- {
- for(sal_uInt32 x(0L); x < nWidth; x++)
- {
- sal_uInt16 nRed(0);
- sal_uInt16 nGreen(0);
- sal_uInt16 nBlue(0);
- sal_uInt16 nOpacity(0);
- sal_uInt32 nIndex(rRaster.getIndexFromXY(x * mnAntiAlialize, y * mnAntiAlialize));
-
- for(sal_uInt32 c(0); c < mnAntiAlialize; c++)
- {
- for(sal_uInt32 d(0); d < mnAntiAlialize; d++)
- {
- const basegfx::BPixel& rPixel(rRaster.getBPixel(nIndex++));
- nRed = nRed + rPixel.getRed();
- nGreen = nGreen + rPixel.getGreen();
- nBlue = nBlue + rPixel.getBlue();
- nOpacity = nOpacity + rPixel.getOpacity();
- }
-
- nIndex += rRaster.getWidth() - mnAntiAlialize;
- }
-
- nOpacity = nOpacity / nDivisor;
-
- if(nOpacity)
- {
- pContent->SetPixel(y, x, BitmapColor(
- (sal_uInt8)(nRed / nDivisor),
- (sal_uInt8)(nGreen / nDivisor),
- (sal_uInt8)(nBlue / nDivisor)));
- pAlpha->SetPixel(y, x, BitmapColor(255 - (sal_uInt8)nOpacity));
- }
- }
- }
- }
- else
- {
- sal_uInt32 nIndex(0L);
-
- for(sal_uInt32 y(0L); y < nHeight; y++)
- {
- for(sal_uInt32 x(0L); x < nWidth; x++)
- {
- const basegfx::BPixel& rPixel(rRaster.getBPixel(nIndex++));
-
- if(rPixel.getOpacity())
- {
- pContent->SetPixel(y, x, BitmapColor(rPixel.getRed(), rPixel.getGreen(), rPixel.getBlue()));
- pAlpha->SetPixel(y, x, BitmapColor(255 - rPixel.getOpacity()));
- }
- }
- }
- }
-
- aContent.ReleaseAccess(pContent);
- aAlpha.ReleaseAccess(pAlpha);
- }
-
- aRetval = BitmapEx(aContent, aAlpha);
-
- // #i101811# set PrefMapMode and PrefSize at newly created Bitmap
- aRetval.SetPrefMapMode(MAP_100TH_MM);
- aRetval.SetPrefSize(Size(nWidth, nHeight));
- }
-
- return aRetval;
- }
-} // end of anonymous namespace
-
-//////////////////////////////////////////////////////////////////////////////
-
-class ZBufferRasterConverter3D : public basegfx::RasterConverter3D
-{
-private:
- const drawinglayer::processor3d::DefaultProcessor3D& mrProcessor;
- basegfx::BZPixelRaster& mrBuffer;
-
- // interpolators for a single line span
- basegfx::ip_single maIntZ;
- basegfx::ip_triple maIntColor;
- basegfx::ip_triple maIntNormal;
- basegfx::ip_double maIntTexture;
- basegfx::ip_triple maIntInvTexture;
-
- // current material to use for ratsreconversion
- const drawinglayer::attribute::MaterialAttribute3D* mpCurrentMaterial;
-
- // bitfield
- // some boolean flags for line span interpolator usages
- unsigned mbModifyColor : 1;
- unsigned mbUseTex : 1;
- unsigned mbHasTexCoor : 1;
- unsigned mbHasInvTexCoor : 1;
- unsigned mbUseNrm : 1;
- unsigned mbUseCol : 1;
-
- void getTextureCoor(basegfx::B2DPoint& rTarget) const
- {
- if(mbHasTexCoor)
- {
- rTarget.setX(maIntTexture.getX().getVal());
- rTarget.setY(maIntTexture.getY().getVal());
- }
- else if(mbHasInvTexCoor)
- {
- const double fZFactor(maIntInvTexture.getZ().getVal());
- const double fInvZFactor(basegfx::fTools::equalZero(fZFactor) ? 1.0 : 1.0 / fZFactor);
- rTarget.setX(maIntInvTexture.getX().getVal() * fInvZFactor);
- rTarget.setY(maIntInvTexture.getY().getVal() * fInvZFactor);
- }
- }
-
- void incrementLineSpanInterpolators(double fStep)
- {
- maIntZ.increment(fStep);
-
- if(mbUseTex)
- {
- if(mbHasTexCoor)
- {
- maIntTexture.increment(fStep);
- }
- else if(mbHasInvTexCoor)
- {
- maIntInvTexture.increment(fStep);
- }
- }
-
- if(mbUseNrm)
- {
- maIntNormal.increment(fStep);
- }
-
- if(mbUseCol)
- {
- maIntColor.increment(fStep);
- }
- }
-
- double decideColorAndOpacity(basegfx::BColor& rColor)
- {
- // init values with full opacity and material color
- OSL_ENSURE(0 != mpCurrentMaterial, "CurrentMaterial not set (!)");
- double fOpacity(1.0);
- rColor = mpCurrentMaterial->getColor();
-
- if(mbUseTex)
- {
- basegfx::B2DPoint aTexCoor(0.0, 0.0);
- getTextureCoor(aTexCoor);
-
- if(mrProcessor.getGeoTexSvx().get())
- {
- // calc color in spot. This may also set to invisible already when
- // e.g. bitmap textures have transparent parts
- mrProcessor.getGeoTexSvx()->modifyBColor(aTexCoor, rColor, fOpacity);
- }
-
- if(basegfx::fTools::more(fOpacity, 0.0) && mrProcessor.getTransparenceGeoTexSvx().get())
- {
- // calc opacity. Object has a 2nd texture, a transparence texture
- mrProcessor.getTransparenceGeoTexSvx()->modifyOpacity(aTexCoor, fOpacity);
- }
- }
-
- if(basegfx::fTools::more(fOpacity, 0.0))
- {
- if(mrProcessor.getGeoTexSvx().get())
- {
- if(mbUseNrm)
- {
- // blend texture with phong
- rColor = mrProcessor.getSdrLightingAttribute().solveColorModel(
- basegfx::B3DVector(maIntNormal.getX().getVal(), maIntNormal.getY().getVal(), maIntNormal.getZ().getVal()),
- rColor,
- mpCurrentMaterial->getSpecular(),
- mpCurrentMaterial->getEmission(),
- mpCurrentMaterial->getSpecularIntensity());
- }
- else if(mbUseCol)
- {
- // blend texture with gouraud
- basegfx::BColor aBlendColor(maIntColor.getX().getVal(), maIntColor.getY().getVal(), maIntColor.getZ().getVal());
- rColor *= aBlendColor;
- }
- else if(mrProcessor.getModulate())
- {
- // blend texture with single material color
- rColor *= mpCurrentMaterial->getColor();
- }
- }
- else
- {
- if(mbUseNrm)
- {
- // modify color with phong
- rColor = mrProcessor.getSdrLightingAttribute().solveColorModel(
- basegfx::B3DVector(maIntNormal.getX().getVal(), maIntNormal.getY().getVal(), maIntNormal.getZ().getVal()),
- rColor,
- mpCurrentMaterial->getSpecular(),
- mpCurrentMaterial->getEmission(),
- mpCurrentMaterial->getSpecularIntensity());
- }
- else if(mbUseCol)
- {
- // modify color with gouraud
- rColor.setRed(maIntColor.getX().getVal());
- rColor.setGreen(maIntColor.getY().getVal());
- rColor.setBlue(maIntColor.getZ().getVal());
- }
- }
-
- if(mbModifyColor)
- {
- rColor = mrProcessor.getBColorModifierStack().getModifiedColor(rColor);
- }
- }
-
- return fOpacity;
- }
-
- void setupLineSpanInterpolators(const basegfx::RasterConversionLineEntry3D& rA, const basegfx::RasterConversionLineEntry3D& rB)
- {
- // get inverse XDelta
- const double xInvDelta(1.0 / (rB.getX().getVal() - rA.getX().getVal()));
-
- // prepare Z-interpolator
- const double fZA(rA.getZ().getVal());
- const double fZB(rB.getZ().getVal());
- maIntZ = basegfx::ip_single(fZA, (fZB - fZA) * xInvDelta);
-
- // get bools and init other interpolators on demand accordingly
- mbModifyColor = mrProcessor.getBColorModifierStack().count();
- mbHasTexCoor = SCANLINE_EMPTY_INDEX != rA.getTextureIndex() && SCANLINE_EMPTY_INDEX != rB.getTextureIndex();
- mbHasInvTexCoor = SCANLINE_EMPTY_INDEX != rA.getInverseTextureIndex() && SCANLINE_EMPTY_INDEX != rB.getInverseTextureIndex();
- const bool bTextureActive(mrProcessor.getGeoTexSvx().get() || mrProcessor.getTransparenceGeoTexSvx().get());
- mbUseTex = bTextureActive && (mbHasTexCoor || mbHasInvTexCoor || mrProcessor.getSimpleTextureActive());
- const bool bUseColorTex(mbUseTex && mrProcessor.getGeoTexSvx().get());
- const bool bNeedNrmOrCol(!bUseColorTex || (bUseColorTex && mrProcessor.getModulate()));
- mbUseNrm = bNeedNrmOrCol && SCANLINE_EMPTY_INDEX != rA.getNormalIndex() && SCANLINE_EMPTY_INDEX != rB.getNormalIndex();
- mbUseCol = !mbUseNrm && bNeedNrmOrCol && SCANLINE_EMPTY_INDEX != rA.getColorIndex() && SCANLINE_EMPTY_INDEX != rB.getColorIndex();
-
- if(mbUseTex)
- {
- if(mbHasTexCoor)
- {
- const basegfx::ip_double& rTA(getTextureInterpolators()[rA.getTextureIndex()]);
- const basegfx::ip_double& rTB(getTextureInterpolators()[rB.getTextureIndex()]);
- maIntTexture = basegfx::ip_double(
- rTA.getX().getVal(), (rTB.getX().getVal() - rTA.getX().getVal()) * xInvDelta,
- rTA.getY().getVal(), (rTB.getY().getVal() - rTA.getY().getVal()) * xInvDelta);
- }
- else if(mbHasInvTexCoor)
- {
- const basegfx::ip_triple& rITA(getInverseTextureInterpolators()[rA.getInverseTextureIndex()]);
- const basegfx::ip_triple& rITB(getInverseTextureInterpolators()[rB.getInverseTextureIndex()]);
- maIntInvTexture = basegfx::ip_triple(
- rITA.getX().getVal(), (rITB.getX().getVal() - rITA.getX().getVal()) * xInvDelta,
- rITA.getY().getVal(), (rITB.getY().getVal() - rITA.getY().getVal()) * xInvDelta,
- rITA.getZ().getVal(), (rITB.getZ().getVal() - rITA.getZ().getVal()) * xInvDelta);
- }
- }
-
- if(mbUseNrm)
- {
- const basegfx::ip_triple& rNA(getNormalInterpolators()[rA.getNormalIndex()]);
- const basegfx::ip_triple& rNB(getNormalInterpolators()[rB.getNormalIndex()]);
- maIntNormal = basegfx::ip_triple(
- rNA.getX().getVal(), (rNB.getX().getVal() - rNA.getX().getVal()) * xInvDelta,
- rNA.getY().getVal(), (rNB.getY().getVal() - rNA.getY().getVal()) * xInvDelta,
- rNA.getZ().getVal(), (rNB.getZ().getVal() - rNA.getZ().getVal()) * xInvDelta);
- }
-
- if(mbUseCol)
- {
- const basegfx::ip_triple& rCA(getColorInterpolators()[rA.getColorIndex()]);
- const basegfx::ip_triple& rCB(getColorInterpolators()[rB.getColorIndex()]);
- maIntColor = basegfx::ip_triple(
- rCA.getX().getVal(), (rCB.getX().getVal() - rCA.getX().getVal()) * xInvDelta,
- rCA.getY().getVal(), (rCB.getY().getVal() - rCA.getY().getVal()) * xInvDelta,
- rCA.getZ().getVal(), (rCB.getZ().getVal() - rCA.getZ().getVal()) * xInvDelta);
- }
- }
-
- virtual void processLineSpan(const basegfx::RasterConversionLineEntry3D& rA, const basegfx::RasterConversionLineEntry3D& rB, sal_Int32 nLine, sal_uInt32 nSpanCount);
-
-public:
- ZBufferRasterConverter3D(basegfx::BZPixelRaster& rBuffer, const drawinglayer::processor3d::ZBufferProcessor3D& rProcessor)
- : basegfx::RasterConverter3D(),
- mrProcessor(rProcessor),
- mrBuffer(rBuffer),
- maIntZ(),
- maIntColor(),
- maIntNormal(),
- maIntTexture(),
- maIntInvTexture(),
- mpCurrentMaterial(0),
- mbModifyColor(false),
- mbUseTex(false),
- mbHasTexCoor(false),
- mbUseNrm(false),
- mbUseCol(false)
- {}
-
- void setCurrentMaterial(const drawinglayer::attribute::MaterialAttribute3D& rMaterial)
- {
- mpCurrentMaterial = &rMaterial;
- }
-};
-
-void ZBufferRasterConverter3D::processLineSpan(const basegfx::RasterConversionLineEntry3D& rA, const basegfx::RasterConversionLineEntry3D& rB, sal_Int32 nLine, sal_uInt32 nSpanCount)
-{
- if(!(nSpanCount & 0x0001))
- {
- if(nLine >= 0 && nLine < (sal_Int32)mrBuffer.getHeight())
- {
- sal_uInt32 nXA(::std::min(mrBuffer.getWidth(), (sal_uInt32)::std::max((sal_Int32)0, basegfx::fround(rA.getX().getVal()))));
- const sal_uInt32 nXB(::std::min(mrBuffer.getWidth(), (sal_uInt32)::std::max((sal_Int32)0, basegfx::fround(rB.getX().getVal()))));
-
- if(nXA < nXB)
- {
- // prepare the span interpolators
- setupLineSpanInterpolators(rA, rB);
-
- // bring span interpolators to start condition by incrementing with the possible difference of
- // clamped and non-clamped XStart. Interpolators are setup relying on double precision
- // X-values, so that difference is the correct value to compensate for possible clampings
- incrementLineSpanInterpolators(static_cast<double>(nXA) - rA.getX().getVal());
-
- // prepare scanline index
- sal_uInt32 nScanlineIndex(mrBuffer.getIndexFromXY(nXA, static_cast<sal_uInt32>(nLine)));
- basegfx::BColor aNewColor;
-
- while(nXA < nXB)
- {
- // early-test Z values if we need to do anything at all
- const double fNewZ(::std::max(0.0, ::std::min((double)0xffff, maIntZ.getVal())));
- const sal_uInt16 nNewZ(static_cast< sal_uInt16 >(fNewZ));
- sal_uInt16& rOldZ(mrBuffer.getZ(nScanlineIndex));
-
- if(nNewZ > rOldZ)
- {
- // detect color and opacity for this pixel
- const sal_uInt16 nOpacity(::std::max((sal_Int16)0, static_cast< sal_Int16 >(decideColorAndOpacity(aNewColor) * 255.0)));
-
- if(nOpacity > 0)
- {
- // avoid color overrun
- aNewColor.clamp();
-
- if(nOpacity >= 0x00ff)
- {
- // full opacity (not transparent), set z and color
- rOldZ = nNewZ;
- mrBuffer.getBPixel(nScanlineIndex) = basegfx::BPixel(aNewColor, 0xff);
- }
- else
- {
- basegfx::BPixel& rDest = mrBuffer.getBPixel(nScanlineIndex);
-
- if(rDest.getOpacity())
- {
- // mix new color by using
- // color' = color * (1 - opacity) + newcolor * opacity
- const sal_uInt16 nTransparence(0x0100 - nOpacity);
- rDest.setRed((sal_uInt8)(((rDest.getRed() * nTransparence) + ((sal_uInt16)(255.0 * aNewColor.getRed()) * nOpacity)) >> 8));
- rDest.setGreen((sal_uInt8)(((rDest.getGreen() * nTransparence) + ((sal_uInt16)(255.0 * aNewColor.getGreen()) * nOpacity)) >> 8));
- rDest.setBlue((sal_uInt8)(((rDest.getBlue() * nTransparence) + ((sal_uInt16)(255.0 * aNewColor.getBlue()) * nOpacity)) >> 8));
-
- if(0xff != rDest.getOpacity())
- {
- // both are transparent, mix new opacity by using
- // opacity = newopacity * (1 - oldopacity) + oldopacity
- rDest.setOpacity(((sal_uInt8)((nOpacity * (0x0100 - rDest.getOpacity())) >> 8)) + rDest.getOpacity());
- }
- }
- else
- {
- // dest is unused, set color
- rDest = basegfx::BPixel(aNewColor, (sal_uInt8)nOpacity);
- }
- }
- }
- }
-
- // increments
- nScanlineIndex++;
- nXA++;
- incrementLineSpanInterpolators(1.0);
- }
- }
- }
- }
-}
-
-//////////////////////////////////////////////////////////////////////////////
-// helper class to buffer output for transparent rasterprimitives (filled areas
-// and lines) until the end of processing. To ensure correct transparent
-// visualisation, ZBuffers require to not set Z and to mix with the transparent
-// color. If transparent rasterprimitives overlap, it gets necessary to
-// paint transparent rasterprimitives from back to front to ensure that the
-// mixing happens from back to front. For that purpose, transparent
-// rasterprimitives are held in this class during the processing run, remember
-// all data and will be rendered
-
-class RasterPrimitive3D
-{
-private:
- boost::shared_ptr< drawinglayer::texture::GeoTexSvx > mpGeoTexSvx;
- boost::shared_ptr< drawinglayer::texture::GeoTexSvx > mpTransparenceGeoTexSvx;
- drawinglayer::attribute::MaterialAttribute3D maMaterial;
- basegfx::B3DPolyPolygon maPolyPolygon;
- double mfCenterZ;
-
- // bitfield
- bool mbModulate : 1;
- bool mbFilter : 1;
- bool mbSimpleTextureActive : 1;
- bool mbIsLine : 1;
-
-public:
- RasterPrimitive3D(
- const boost::shared_ptr< drawinglayer::texture::GeoTexSvx >& pGeoTexSvx,
- const boost::shared_ptr< drawinglayer::texture::GeoTexSvx >& pTransparenceGeoTexSvx,
- const drawinglayer::attribute::MaterialAttribute3D& rMaterial,
- const basegfx::B3DPolyPolygon& rPolyPolygon,
- bool bModulate,
- bool bFilter,
- bool bSimpleTextureActive,
- bool bIsLine)
- : mpGeoTexSvx(pGeoTexSvx),
- mpTransparenceGeoTexSvx(pTransparenceGeoTexSvx),
- maMaterial(rMaterial),
- maPolyPolygon(rPolyPolygon),
- mfCenterZ(basegfx::tools::getRange(rPolyPolygon).getCenter().getZ()),
- mbModulate(bModulate),
- mbFilter(bFilter),
- mbSimpleTextureActive(bSimpleTextureActive),
- mbIsLine(bIsLine)
- {
- }
-
- RasterPrimitive3D& operator=(const RasterPrimitive3D& rComp)
- {
- mpGeoTexSvx = rComp.mpGeoTexSvx;
- mpTransparenceGeoTexSvx = rComp.mpTransparenceGeoTexSvx;
- maMaterial = rComp.maMaterial;
- maPolyPolygon = rComp.maPolyPolygon;
- mfCenterZ = rComp.mfCenterZ;
- mbModulate = rComp.mbModulate;
- mbFilter = rComp.mbFilter;
- mbSimpleTextureActive = rComp.mbSimpleTextureActive;
- mbIsLine = rComp.mbIsLine;
-
- return *this;
- }
-
- bool operator<(const RasterPrimitive3D& rComp) const
- {
- return mfCenterZ < rComp.mfCenterZ;
- }
-
- const boost::shared_ptr< drawinglayer::texture::GeoTexSvx >& getGeoTexSvx() const { return mpGeoTexSvx; }
- const boost::shared_ptr< drawinglayer::texture::GeoTexSvx >& getTransparenceGeoTexSvx() const { return mpTransparenceGeoTexSvx; }
- const drawinglayer::attribute::MaterialAttribute3D& getMaterial() const { return maMaterial; }
- const basegfx::B3DPolyPolygon& getPolyPolygon() const { return maPolyPolygon; }
- bool getModulate() const { return mbModulate; }
- bool getFilter() const { return mbFilter; }
- bool getSimpleTextureActive() const { return mbSimpleTextureActive; }
- bool getIsLine() const { return mbIsLine; }
-};
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace processor3d
- {
- void ZBufferProcessor3D::rasterconvertB3DPolygon(const attribute::MaterialAttribute3D& rMaterial, const basegfx::B3DPolygon& rHairline) const
- {
- if(mpBZPixelRaster)
- {
- if(getTransparenceCounter())
- {
- // transparent output; record for later sorting and painting from
- // back to front
- if(!mpRasterPrimitive3Ds)
- {
- const_cast< ZBufferProcessor3D* >(this)->mpRasterPrimitive3Ds = new std::vector< RasterPrimitive3D >;
- }
-
- mpRasterPrimitive3Ds->push_back(RasterPrimitive3D(
- getGeoTexSvx(),
- getTransparenceGeoTexSvx(),
- rMaterial,
- basegfx::B3DPolyPolygon(rHairline),
- getModulate(),
- getFilter(),
- getSimpleTextureActive(),
- true));
- }
- else
- {
- // do rasterconversion
- mpZBufferRasterConverter3D->setCurrentMaterial(rMaterial);
-
- if(mnAntiAlialize > 1)
- {
- const bool bForceLineSnap(getOptionsDrawinglayer().IsAntiAliasing() && getOptionsDrawinglayer().IsSnapHorVerLinesToDiscrete());
-
- if(bForceLineSnap)
- {
- basegfx::B3DHomMatrix aTransform;
- basegfx::B3DPolygon aSnappedHairline(rHairline);
- const double fScaleDown(1.0 / mnAntiAlialize);
- const double fScaleUp(mnAntiAlialize);
-
- // take oversampling out
- aTransform.scale(fScaleDown, fScaleDown, 1.0);
- aSnappedHairline.transform(aTransform);
-
- // snap to integer
- aSnappedHairline = basegfx::tools::snapPointsOfHorizontalOrVerticalEdges(aSnappedHairline);
-
- // add oversampling again
- aTransform.identity();
- aTransform.scale(fScaleUp, fScaleUp, 1.0);
-
- aSnappedHairline.transform(aTransform);
-
- mpZBufferRasterConverter3D->rasterconvertB3DPolygon(aSnappedHairline, 0, mpBZPixelRaster->getHeight(), mnAntiAlialize);
- }
- else
- {
- mpZBufferRasterConverter3D->rasterconvertB3DPolygon(rHairline, 0, mpBZPixelRaster->getHeight(), mnAntiAlialize);
- }
- }
- else
- {
- mpZBufferRasterConverter3D->rasterconvertB3DPolygon(rHairline, 0, mpBZPixelRaster->getHeight(), 1);
- }
- }
- }
- }
-
- void ZBufferProcessor3D::rasterconvertB3DPolyPolygon(const attribute::MaterialAttribute3D& rMaterial, const basegfx::B3DPolyPolygon& rFill) const
- {
- if(mpBZPixelRaster)
- {
- if(getTransparenceCounter())
- {
- // transparent output; record for later sorting and painting from
- // back to front
- if(!mpRasterPrimitive3Ds)
- {
- const_cast< ZBufferProcessor3D* >(this)->mpRasterPrimitive3Ds = new std::vector< RasterPrimitive3D >;
- }
-
- mpRasterPrimitive3Ds->push_back(RasterPrimitive3D(
- getGeoTexSvx(),
- getTransparenceGeoTexSvx(),
- rMaterial,
- rFill,
- getModulate(),
- getFilter(),
- getSimpleTextureActive(),
- false));
- }
- else
- {
- mpZBufferRasterConverter3D->setCurrentMaterial(rMaterial);
- mpZBufferRasterConverter3D->rasterconvertB3DPolyPolygon(rFill, &maInvEyeToView, 0, mpBZPixelRaster->getHeight());
- }
- }
- }
-
- ZBufferProcessor3D::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)
- : DefaultProcessor3D(rViewInformation3D, rSdrSceneAttribute, rSdrLightingAttribute),
- mpBZPixelRaster(0),
- maInvEyeToView(),
- mpZBufferRasterConverter3D(0),
- mnAntiAlialize(nAntiAlialize),
- mpRasterPrimitive3Ds(0)
- {
- // generate ViewSizes
- const double fFullViewSizeX((rViewInformation2D.getObjectToViewTransformation() * basegfx::B2DVector(fSizeX, 0.0)).getLength());
- const double fFullViewSizeY((rViewInformation2D.getObjectToViewTransformation() * basegfx::B2DVector(0.0, fSizeY)).getLength());
- const double fViewSizeX(fFullViewSizeX * rVisiblePart.getWidth());
- const double fViewSizeY(fFullViewSizeY * rVisiblePart.getHeight());
-
- // generate RasterWidth and RasterHeight
- const sal_uInt32 nRasterWidth((sal_uInt32)basegfx::fround(fViewSizeX) + 1);
- const sal_uInt32 nRasterHeight((sal_uInt32)basegfx::fround(fViewSizeY) + 1);
-
- if(nRasterWidth && nRasterHeight)
- {
- // create view unit buffer
- mpBZPixelRaster = new basegfx::BZPixelRaster(
- mnAntiAlialize ? nRasterWidth * mnAntiAlialize : nRasterWidth,
- mnAntiAlialize ? nRasterHeight * mnAntiAlialize : nRasterHeight);
- OSL_ENSURE(mpBZPixelRaster, "ZBufferProcessor3D: Could not allocate basegfx::BZPixelRaster (!)");
-
- // create DeviceToView for Z-Buffer renderer since Z is handled
- // different from standard 3D transformations (Z is mirrored). Also
- // the transformation includes the step from unit device coordinates
- // to discrete units ([-1.0 .. 1.0] -> [minDiscrete .. maxDiscrete]
-
- basegfx::B3DHomMatrix aDeviceToView;
-
- {
- // step one:
- //
- // bring from [-1.0 .. 1.0] in X,Y and Z to [0.0 .. 1.0]. Also
- // necessary to
- // - flip Y due to screen orientation
- // - flip Z due to Z-Buffer orientation from back to front
-
- aDeviceToView.scale(0.5, -0.5, -0.5);
- aDeviceToView.translate(0.5, 0.5, 0.5);
- }
-
- {
- // step two:
- //
- // bring from [0.0 .. 1.0] in X,Y and Z to view cordinates
- //
- // #i102611#
- // also: scale Z to [1.5 .. 65534.5]. Normally, a range of [0.0 .. 65535.0]
- // could be used, but a 'unused' value is needed, so '0' is used what reduces
- // the range to [1.0 .. 65535.0]. It has also shown that small numerical errors
- // (smaller as basegfx::fTools::mfSmallValue, which is 0.000000001) happen.
- // Instead of checking those by basegfx::fTools methods which would cost
- // runtime, just add another 0.5 tolerance to the start and end of the Z-Buffer
- // range, thus resulting in [1.5 .. 65534.5]
- const double fMaxZDepth(65533.0);
- aDeviceToView.translate(-rVisiblePart.getMinX(), -rVisiblePart.getMinY(), 0.0);
-
- if(mnAntiAlialize)
- aDeviceToView.scale(fFullViewSizeX * mnAntiAlialize, fFullViewSizeY * mnAntiAlialize, fMaxZDepth);
- else
- aDeviceToView.scale(fFullViewSizeX, fFullViewSizeY, fMaxZDepth);
-
- aDeviceToView.translate(0.0, 0.0, 1.5);
- }
-
- // update local ViewInformation3D with own DeviceToView
- const geometry::ViewInformation3D aNewViewInformation3D(
- getViewInformation3D().getObjectTransformation(),
- getViewInformation3D().getOrientation(),
- getViewInformation3D().getProjection(),
- aDeviceToView,
- getViewInformation3D().getViewTime(),
- getViewInformation3D().getExtendedInformationSequence());
- updateViewInformation(aNewViewInformation3D);
-
- // prepare inverse EyeToView transformation. This can be done in constructor
- // since changes in object transformations when processing TransformPrimitive3Ds
- // do not influence this prepared partial transformation
- maInvEyeToView = getViewInformation3D().getDeviceToView() * getViewInformation3D().getProjection();
- maInvEyeToView.invert();
-
- // prepare maRasterRange
- maRasterRange.reset();
- maRasterRange.expand(basegfx::B2DPoint(0.0, 0.0));
- maRasterRange.expand(basegfx::B2DPoint(mpBZPixelRaster->getWidth(), mpBZPixelRaster->getHeight()));
-
- // create the raster converter
- mpZBufferRasterConverter3D = new ZBufferRasterConverter3D(*mpBZPixelRaster, *this);
- }
- }
-
- ZBufferProcessor3D::~ZBufferProcessor3D()
- {
- if(mpBZPixelRaster)
- {
- delete mpZBufferRasterConverter3D;
- delete mpBZPixelRaster;
- }
-
- if(mpRasterPrimitive3Ds)
- {
- OSL_FAIL("ZBufferProcessor3D: destructed, but there are unrendered transparent geometries. Use ZBufferProcessor3D::finish() to render these (!)");
- delete mpRasterPrimitive3Ds;
- }
- }
-
- void ZBufferProcessor3D::finish()
- {
- if(mpRasterPrimitive3Ds)
- {
- // there are transparent rasterprimitives
- const sal_uInt32 nSize(mpRasterPrimitive3Ds->size());
-
- if(nSize > 1)
- {
- // sort them from back to front
- std::sort(mpRasterPrimitive3Ds->begin(), mpRasterPrimitive3Ds->end());
- }
-
- for(sal_uInt32 a(0); a < nSize; a++)
- {
- // paint each one by setting the remembered data and calling
- // the render method
- const RasterPrimitive3D& rCandidate = (*mpRasterPrimitive3Ds)[a];
-
- mpGeoTexSvx = rCandidate.getGeoTexSvx();
- mpTransparenceGeoTexSvx = rCandidate.getTransparenceGeoTexSvx();
- mbModulate = rCandidate.getModulate();
- mbFilter = rCandidate.getFilter();
- mbSimpleTextureActive = rCandidate.getSimpleTextureActive();
-
- if(rCandidate.getIsLine())
- {
- rasterconvertB3DPolygon(
- rCandidate.getMaterial(),
- rCandidate.getPolyPolygon().getB3DPolygon(0));
- }
- else
- {
- rasterconvertB3DPolyPolygon(
- rCandidate.getMaterial(),
- rCandidate.getPolyPolygon());
- }
- }
-
- // delete them to signal the destructor that all is done and
- // to allow asserting there
- delete mpRasterPrimitive3Ds;
- mpRasterPrimitive3Ds = 0;
- }
- }
-
- BitmapEx ZBufferProcessor3D::getBitmapEx() const
- {
- if(mpBZPixelRaster)
- {
- return BPixelRasterToBitmapEx(*mpBZPixelRaster, mnAntiAlialize);
- }
-
- return BitmapEx();
- }
- } // end of namespace processor3d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/texture/texture.cxx b/drawinglayer/source/texture/texture.cxx
deleted file mode 100644
index f3b2db62ad..0000000000
--- a/drawinglayer/source/texture/texture.cxx
+++ /dev/null
@@ -1,647 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/texture/texture.hxx>
-#include <basegfx/numeric/ftools.hxx>
-#include <basegfx/tools/gradienttools.hxx>
-#include <basegfx/matrix/b2dhommatrixtools.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace texture
- {
- GeoTexSvx::GeoTexSvx()
- {
- }
-
- GeoTexSvx::~GeoTexSvx()
- {
- }
-
- bool GeoTexSvx::operator==(const GeoTexSvx& /*rGeoTexSvx*/) const
- {
- // default implementation says yes (no data -> no difference)
- return true;
- }
-
- void GeoTexSvx::appendTransformations(::std::vector< basegfx::B2DHomMatrix >& /*rMatrices*/)
- {
- // default implementation does nothing
- }
-
- void GeoTexSvx::modifyBColor(const basegfx::B2DPoint& /*rUV*/, basegfx::BColor& rBColor, double& /*rfOpacity*/) const
- {
- // base implementation creates random color (for testing only, may also be pure virtual)
- rBColor.setRed((rand() & 0x7fff) / 32767.0);
- rBColor.setGreen((rand() & 0x7fff) / 32767.0);
- rBColor.setBlue((rand() & 0x7fff) / 32767.0);
- }
-
- void GeoTexSvx::modifyOpacity(const basegfx::B2DPoint& rUV, double& rfOpacity) const
- {
- // base implementation uses inverse of luminance of solved color (for testing only, may also be pure virtual)
- basegfx::BColor aBaseColor;
- modifyBColor(rUV, aBaseColor, rfOpacity);
- rfOpacity = 1.0 - aBaseColor.luminance();
- }
- } // end of namespace texture
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace texture
- {
- void GeoTexSvxGradient::impAppendMatrix(::std::vector< basegfx::B2DHomMatrix >& rMatrices, const basegfx::B2DRange& rRange)
- {
- basegfx::B2DHomMatrix aNew;
- aNew.set(0, 0, rRange.getWidth());
- aNew.set(1, 1, rRange.getHeight());
- aNew.set(0, 2, rRange.getMinX());
- aNew.set(1, 2, rRange.getMinY());
- rMatrices.push_back(maGradientInfo.maTextureTransform * aNew);
- }
-
- void GeoTexSvxGradient::impAppendColorsRadial(::std::vector< basegfx::BColor >& rColors)
- {
- if(maGradientInfo.mnSteps)
- {
- rColors.push_back(maStart);
-
- for(sal_uInt32 a(1L); a < maGradientInfo.mnSteps - 1L; a++)
- {
- rColors.push_back(interpolate(maStart, maEnd, (double)a / (double)maGradientInfo.mnSteps));
- }
-
- rColors.push_back(maEnd);
- }
- }
-
- GeoTexSvxGradient::GeoTexSvxGradient(const basegfx::B2DRange& rTargetRange, const basegfx::BColor& rStart, const basegfx::BColor& rEnd, sal_uInt32 nSteps, double fBorder)
- : maTargetRange(rTargetRange),
- maStart(rStart),
- maEnd(rEnd),
- mfBorder(fBorder)
- {
- maGradientInfo.mnSteps = nSteps;
- maGradientInfo.mfAspectRatio = 1.0;
- }
-
- GeoTexSvxGradient::~GeoTexSvxGradient()
- {
- }
-
- bool GeoTexSvxGradient::operator==(const GeoTexSvx& rGeoTexSvx) const
- {
- const GeoTexSvxGradient* pCompare = dynamic_cast< const GeoTexSvxGradient* >(&rGeoTexSvx);
- return (pCompare
- && maGradientInfo.maTextureTransform == pCompare->maGradientInfo.maTextureTransform
- && maTargetRange == pCompare->maTargetRange
- && maGradientInfo.mnSteps == pCompare->maGradientInfo.mnSteps
- && maGradientInfo.mfAspectRatio == pCompare->maGradientInfo.mfAspectRatio
- && mfBorder == pCompare->mfBorder);
- }
- } // end of namespace texture
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace texture
- {
- GeoTexSvxGradientLinear::GeoTexSvxGradientLinear(const basegfx::B2DRange& rTargetRange, const basegfx::BColor& rStart, const basegfx::BColor& rEnd, sal_uInt32 nSteps, double fBorder, double fAngle)
- : GeoTexSvxGradient(rTargetRange, rStart, rEnd, nSteps, fBorder)
- {
- basegfx::tools::createLinearODFGradientInfo(maGradientInfo,
- rTargetRange,
- nSteps,
- fBorder,
- fAngle);
- }
-
- GeoTexSvxGradientLinear::~GeoTexSvxGradientLinear()
- {
- }
-
- void GeoTexSvxGradientLinear::appendTransformations(::std::vector< basegfx::B2DHomMatrix >& rMatrices)
- {
- if(maGradientInfo.mnSteps)
- {
- const double fStripeWidth(1.0 / maGradientInfo.mnSteps);
- for(sal_uInt32 a(1L); a < maGradientInfo.mnSteps; a++)
- {
- const basegfx::B2DRange aRect(0.0, fStripeWidth * a, 1.0, 1.0);
- impAppendMatrix(rMatrices, aRect);
- }
- }
- }
-
- void GeoTexSvxGradientLinear::appendColors(::std::vector< basegfx::BColor >& rColors)
- {
- if(maGradientInfo.mnSteps)
- {
- rColors.push_back(maStart);
-
- for(sal_uInt32 a(1L); a < maGradientInfo.mnSteps; a++)
- {
- rColors.push_back(interpolate(maStart, maEnd, (double)a / (double)(maGradientInfo.mnSteps + 1L)));
- }
- }
- }
-
- void GeoTexSvxGradientLinear::modifyBColor(const basegfx::B2DPoint& rUV, basegfx::BColor& rBColor, double& /*rfOpacity*/) const
- {
- const double fScaler(basegfx::tools::getLinearGradientAlpha(rUV, maGradientInfo));
-
- rBColor = (maStart * (1.0 - fScaler)) + (maEnd * fScaler);
- }
- } // end of namespace texture
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace texture
- {
- GeoTexSvxGradientAxial::GeoTexSvxGradientAxial(const basegfx::B2DRange& rTargetRange, const basegfx::BColor& rStart, const basegfx::BColor& rEnd, sal_uInt32 nSteps, double fBorder, double fAngle)
- : GeoTexSvxGradient(rTargetRange, rStart, rEnd, nSteps, fBorder)
- {
- basegfx::tools::createAxialODFGradientInfo(maGradientInfo,
- rTargetRange,
- nSteps,
- fBorder,
- fAngle);
- }
-
- GeoTexSvxGradientAxial::~GeoTexSvxGradientAxial()
- {
- }
-
- void GeoTexSvxGradientAxial::appendTransformations(::std::vector< basegfx::B2DHomMatrix >& rMatrices)
- {
- if(maGradientInfo.mnSteps)
- {
- const double fStripeWidth=1.0 / (maGradientInfo.mnSteps - 1L);
- for(sal_uInt32 a(maGradientInfo.mnSteps-1L); a != 0; a--)
- {
- const basegfx::B2DRange aRect(0, 0, 1.0, fStripeWidth * a);
- impAppendMatrix(rMatrices, aRect);
- }
- }
- }
-
- void GeoTexSvxGradientAxial::appendColors(::std::vector< basegfx::BColor >& rColors)
- {
- if(maGradientInfo.mnSteps)
- {
- rColors.push_back(maEnd);
-
- for(sal_uInt32 a(1L); a < maGradientInfo.mnSteps; a++)
- {
- rColors.push_back(interpolate(maEnd, maStart, (double)a / (double)maGradientInfo.mnSteps));
- }
- }
- }
-
- void GeoTexSvxGradientAxial::modifyBColor(const basegfx::B2DPoint& rUV, basegfx::BColor& rBColor, double& /*rfOpacity*/) const
- {
- const double fScaler(basegfx::tools::getAxialGradientAlpha(rUV, maGradientInfo));
-
- rBColor = (maStart * (1.0 - fScaler)) + (maEnd * fScaler);
- }
- } // end of namespace texture
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace texture
- {
- GeoTexSvxGradientRadial::GeoTexSvxGradientRadial(const basegfx::B2DRange& rTargetRange, const basegfx::BColor& rStart, const basegfx::BColor& rEnd, sal_uInt32 nSteps, double fBorder, double fOffsetX, double fOffsetY)
- : GeoTexSvxGradient(rTargetRange, rStart, rEnd, nSteps, fBorder)
- {
- basegfx::tools::createRadialODFGradientInfo(maGradientInfo,
- rTargetRange,
- basegfx::B2DVector(fOffsetX,fOffsetY),
- nSteps,
- fBorder);
- }
-
- GeoTexSvxGradientRadial::~GeoTexSvxGradientRadial()
- {
- }
-
- void GeoTexSvxGradientRadial::appendTransformations(::std::vector< basegfx::B2DHomMatrix >& rMatrices)
- {
- if(maGradientInfo.mnSteps)
- {
- const double fStepSize=1.0 / maGradientInfo.mnSteps;
- for(sal_uInt32 a(maGradientInfo.mnSteps-1L); a > 0; a--)
- {
- const basegfx::B2DRange aRect(0, 0, fStepSize*a, fStepSize*a);
- impAppendMatrix(rMatrices, aRect);
- }
- }
- }
-
- void GeoTexSvxGradientRadial::appendColors(::std::vector< basegfx::BColor >& rColors)
- {
- impAppendColorsRadial(rColors);
- }
-
- void GeoTexSvxGradientRadial::modifyBColor(const basegfx::B2DPoint& rUV, basegfx::BColor& rBColor, double& /*rfOpacity*/) const
- {
- const double fScaler(basegfx::tools::getRadialGradientAlpha(rUV, maGradientInfo));
-
- rBColor = (maStart * (1.0 - fScaler)) + (maEnd * fScaler);
- }
- } // end of namespace texture
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace texture
- {
- GeoTexSvxGradientElliptical::GeoTexSvxGradientElliptical(const basegfx::B2DRange& rTargetRange, const basegfx::BColor& rStart, const basegfx::BColor& rEnd, sal_uInt32 nSteps, double fBorder, double fOffsetX, double fOffsetY, double fAngle)
- : GeoTexSvxGradient(rTargetRange, rStart, rEnd, nSteps, fBorder)
- {
- basegfx::tools::createEllipticalODFGradientInfo(maGradientInfo,
- rTargetRange,
- basegfx::B2DVector(fOffsetX,fOffsetY),
- nSteps,
- fBorder,
- fAngle);
- }
-
- GeoTexSvxGradientElliptical::~GeoTexSvxGradientElliptical()
- {
- }
-
- void GeoTexSvxGradientElliptical::appendTransformations(::std::vector< basegfx::B2DHomMatrix >& rMatrices)
- {
- if(maGradientInfo.mnSteps)
- {
- double fWidth(1);
- double fHeight(1);
- double fIncrementX, fIncrementY;
-
- if(maGradientInfo.mfAspectRatio > 1.0)
- {
- fIncrementY = fHeight / maGradientInfo.mnSteps;
- fIncrementX = fIncrementY / maGradientInfo.mfAspectRatio;
- }
- else
- {
- fIncrementX = fWidth / maGradientInfo.mnSteps;
- fIncrementY = fIncrementX * maGradientInfo.mfAspectRatio;
- }
-
- for(sal_uInt32 a(1L); a < maGradientInfo.mnSteps; a++)
- {
- // next step
- fWidth -= fIncrementX;
- fHeight -= fIncrementY;
-
- // create matrix
- const basegfx::B2DRange aRect(0, 0, fWidth, fHeight);
- impAppendMatrix(rMatrices, aRect);
- }
- }
- }
-
- void GeoTexSvxGradientElliptical::appendColors(::std::vector< basegfx::BColor >& rColors)
- {
- impAppendColorsRadial(rColors);
- }
-
- void GeoTexSvxGradientElliptical::modifyBColor(const basegfx::B2DPoint& rUV, basegfx::BColor& rBColor, double& /*rfOpacity*/) const
- {
- const double fScaler(basegfx::tools::getEllipticalGradientAlpha(rUV, maGradientInfo));
-
- rBColor = (maStart * (1.0 - fScaler)) + (maEnd * fScaler);
- }
- } // end of namespace texture
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace texture
- {
- GeoTexSvxGradientSquare::GeoTexSvxGradientSquare(const basegfx::B2DRange& rTargetRange, const basegfx::BColor& rStart, const basegfx::BColor& rEnd, sal_uInt32 nSteps, double fBorder, double fOffsetX, double fOffsetY, double fAngle)
- : GeoTexSvxGradient(rTargetRange, rStart, rEnd, nSteps, fBorder)
- {
- basegfx::tools::createSquareODFGradientInfo(maGradientInfo,
- rTargetRange,
- basegfx::B2DVector(fOffsetX,fOffsetY),
- nSteps,
- fBorder,
- fAngle);
- }
-
- GeoTexSvxGradientSquare::~GeoTexSvxGradientSquare()
- {
- }
-
- void GeoTexSvxGradientSquare::appendTransformations(::std::vector< basegfx::B2DHomMatrix >& rMatrices)
- {
- if(maGradientInfo.mnSteps)
- {
- const double fStepSize=1.0 / maGradientInfo.mnSteps;
- for(sal_uInt32 a(maGradientInfo.mnSteps-1L); a > 0; a--)
- {
- const basegfx::B2DRange aRect(0, 0, fStepSize*a, fStepSize*a);
- impAppendMatrix(rMatrices, aRect);
- }
- }
- }
-
- void GeoTexSvxGradientSquare::appendColors(::std::vector< basegfx::BColor >& rColors)
- {
- impAppendColorsRadial(rColors);
- }
-
- void GeoTexSvxGradientSquare::modifyBColor(const basegfx::B2DPoint& rUV, basegfx::BColor& rBColor, double& /*rfOpacity*/) const
- {
- const double fScaler(basegfx::tools::getSquareGradientAlpha(rUV, maGradientInfo));
-
- rBColor = (maStart * (1.0 - fScaler)) + (maEnd * fScaler);
- }
- } // end of namespace texture
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace texture
- {
- GeoTexSvxGradientRect::GeoTexSvxGradientRect(const basegfx::B2DRange& rTargetRange, const basegfx::BColor& rStart, const basegfx::BColor& rEnd, sal_uInt32 nSteps, double fBorder, double fOffsetX, double fOffsetY, double fAngle)
- : GeoTexSvxGradient(rTargetRange, rStart, rEnd, nSteps, fBorder)
- {
- basegfx::tools::createRectangularODFGradientInfo(maGradientInfo,
- rTargetRange,
- basegfx::B2DVector(fOffsetX,fOffsetY),
- nSteps,
- fBorder,
- fAngle);
- }
-
- GeoTexSvxGradientRect::~GeoTexSvxGradientRect()
- {
- }
-
- void GeoTexSvxGradientRect::appendTransformations(::std::vector< basegfx::B2DHomMatrix >& rMatrices)
- {
- if(maGradientInfo.mnSteps)
- {
- double fWidth(1);
- double fHeight(1);
- double fIncrementX, fIncrementY;
-
- if(maGradientInfo.mfAspectRatio > 1.0)
- {
- fIncrementY = fHeight / maGradientInfo.mnSteps;
- fIncrementX = fIncrementY / maGradientInfo.mfAspectRatio;
- }
- else
- {
- fIncrementX = fWidth / maGradientInfo.mnSteps;
- fIncrementY = fIncrementX * maGradientInfo.mfAspectRatio;
- }
-
- for(sal_uInt32 a(1L); a < maGradientInfo.mnSteps; a++)
- {
- // next step
- fWidth -= fIncrementX;
- fHeight -= fIncrementY;
-
- // create matrix
- const basegfx::B2DRange aRect(0, 0, fWidth, fHeight);
- impAppendMatrix(rMatrices, aRect);
- }
- }
- }
-
- void GeoTexSvxGradientRect::appendColors(::std::vector< basegfx::BColor >& rColors)
- {
- impAppendColorsRadial(rColors);
- }
-
- void GeoTexSvxGradientRect::modifyBColor(const basegfx::B2DPoint& rUV, basegfx::BColor& rBColor, double& /*rfOpacity*/) const
- {
- const double fScaler(basegfx::tools::getRectangularGradientAlpha(rUV, maGradientInfo));
-
- rBColor = (maStart * (1.0 - fScaler)) + (maEnd * fScaler);
- }
- } // end of namespace texture
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace texture
- {
- GeoTexSvxHatch::GeoTexSvxHatch(const basegfx::B2DRange& rTargetRange, double fDistance, double fAngle)
- : mfDistance(0.1),
- mfAngle(fAngle),
- mnSteps(10L)
- {
- double fTargetSizeX(rTargetRange.getWidth());
- double fTargetSizeY(rTargetRange.getHeight());
- double fTargetOffsetX(rTargetRange.getMinX());
- double fTargetOffsetY(rTargetRange.getMinY());
-
- fAngle = -fAngle;
-
- // add object expansion
- if(0.0 != fAngle)
- {
- const double fAbsCos(fabs(cos(fAngle)));
- const double fAbsSin(fabs(sin(fAngle)));
- const double fNewX(fTargetSizeX * fAbsCos + fTargetSizeY * fAbsSin);
- const double fNewY(fTargetSizeY * fAbsCos + fTargetSizeX * fAbsSin);
- fTargetOffsetX -= (fNewX - fTargetSizeX) / 2.0;
- fTargetOffsetY -= (fNewY - fTargetSizeY) / 2.0;
- fTargetSizeX = fNewX;
- fTargetSizeY = fNewY;
- }
-
- // add object scale before rotate
- maTextureTransform.scale(fTargetSizeX, fTargetSizeY);
-
- // add texture rotate after scale to keep perpendicular angles
- if(0.0 != fAngle)
- {
- basegfx::B2DPoint aCenter(0.5, 0.5);
- aCenter *= maTextureTransform;
-
- maTextureTransform = basegfx::tools::createRotateAroundPoint(aCenter, fAngle)
- * maTextureTransform;
- }
-
- // add object translate
- maTextureTransform.translate(fTargetOffsetX, fTargetOffsetY);
-
- // prepare height for texture
- const double fSteps((0.0 != fDistance) ? fTargetSizeY / fDistance : 10.0);
- mnSteps = basegfx::fround(fSteps + 0.5);
- mfDistance = 1.0 / fSteps;
-
- // build transform from u,v to [0.0 .. 1.0]. As base, use inverse texture transform
- maBackTextureTransform = maTextureTransform;
- maBackTextureTransform.invert();
- }
-
- GeoTexSvxHatch::~GeoTexSvxHatch()
- {
- }
-
- bool GeoTexSvxHatch::operator==(const GeoTexSvx& rGeoTexSvx) const
- {
- const GeoTexSvxHatch* pCompare = dynamic_cast< const GeoTexSvxHatch* >(&rGeoTexSvx);
- return (pCompare
- && maTextureTransform == pCompare->maTextureTransform
- && mfDistance == pCompare->mfDistance
- && mfAngle == pCompare->mfAngle
- && mnSteps == pCompare->mnSteps);
- }
-
- void GeoTexSvxHatch::appendTransformations(::std::vector< basegfx::B2DHomMatrix >& rMatrices)
- {
- for(sal_uInt32 a(1L); a < mnSteps; a++)
- {
- // create matrix
- const double fOffset(mfDistance * (double)a);
- basegfx::B2DHomMatrix aNew;
- aNew.set(1, 2, fOffset);
- rMatrices.push_back(maTextureTransform * aNew);
- }
- }
-
- double GeoTexSvxHatch::getDistanceToHatch(const basegfx::B2DPoint& rUV) const
- {
- const basegfx::B2DPoint aCoor(maBackTextureTransform * rUV);
- return fmod(aCoor.getY(), mfDistance);
- }
- } // end of namespace texture
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace texture
- {
- GeoTexSvxTiled::GeoTexSvxTiled(const basegfx::B2DPoint& rTopLeft, const basegfx::B2DVector& rSize)
- : maTopLeft(rTopLeft),
- maSize(rSize)
- {
- if(basegfx::fTools::lessOrEqual(maSize.getX(), 0.0))
- {
- maSize.setX(1.0);
- }
-
- if(basegfx::fTools::lessOrEqual(maSize.getY(), 0.0))
- {
- maSize.setY(1.0);
- }
- }
-
- GeoTexSvxTiled::~GeoTexSvxTiled()
- {
- }
-
- bool GeoTexSvxTiled::operator==(const GeoTexSvx& rGeoTexSvx) const
- {
- const GeoTexSvxTiled* pCompare = dynamic_cast< const GeoTexSvxTiled* >(&rGeoTexSvx);
- return (pCompare
- && maTopLeft == pCompare->maTopLeft
- && maSize == pCompare->maSize);
- }
-
- void GeoTexSvxTiled::appendTransformations(::std::vector< basegfx::B2DHomMatrix >& rMatrices)
- {
- double fStartX(maTopLeft.getX());
- double fStartY(maTopLeft.getY());
-
- if(basegfx::fTools::more(fStartX, 0.0))
- {
- fStartX -= (floor(fStartX / maSize.getX()) + 1.0) * maSize.getX();
- }
-
- if(basegfx::fTools::less(fStartX + maSize.getX(), 0.0))
- {
- fStartX += floor(-fStartX / maSize.getX()) * maSize.getX();
- }
-
- if(basegfx::fTools::more(fStartY, 0.0))
- {
- fStartY -= (floor(fStartY / maSize.getY()) + 1.0) * maSize.getY();
- }
-
- if(basegfx::fTools::less(fStartY + maSize.getY(), 0.0))
- {
- fStartY += floor(-fStartY / maSize.getY()) * maSize.getY();
- }
-
- for(double fPosY(fStartY); basegfx::fTools::less(fPosY, 1.0); fPosY += maSize.getY())
- {
- for(double fPosX(fStartX); basegfx::fTools::less(fPosX, 1.0); fPosX += maSize.getX())
- {
- basegfx::B2DHomMatrix aNew;
-
- aNew.set(0, 0, maSize.getX());
- aNew.set(1, 1, maSize.getY());
- aNew.set(0, 2, fPosX);
- aNew.set(1, 2, fPosY);
-
- rMatrices.push_back(aNew);
- }
- }
- }
- } // end of namespace texture
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/texture/texture3d.cxx b/drawinglayer/source/texture/texture3d.cxx
deleted file mode 100644
index f93e85fd91..0000000000
--- a/drawinglayer/source/texture/texture3d.cxx
+++ /dev/null
@@ -1,265 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/texture/texture3d.hxx>
-#include <vcl/bmpacc.hxx>
-#include <drawinglayer/primitive3d/hatchtextureprimitive3d.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace texture
- {
- GeoTexSvxMono::GeoTexSvxMono(const basegfx::BColor& rSingleColor, double fOpacity)
- : maSingleColor(rSingleColor),
- mfOpacity(fOpacity)
- {
- }
-
- bool GeoTexSvxMono::operator==(const GeoTexSvx& rGeoTexSvx) const
- {
- const GeoTexSvxMono* pCompare = dynamic_cast< const GeoTexSvxMono* >(&rGeoTexSvx);
- return (pCompare
- && maSingleColor == pCompare->maSingleColor
- && mfOpacity == pCompare->mfOpacity);
- }
-
- void GeoTexSvxMono::modifyBColor(const basegfx::B2DPoint& /*rUV*/, basegfx::BColor& rBColor, double& /*rfOpacity*/) const
- {
- rBColor = maSingleColor;
- }
-
- void GeoTexSvxMono::modifyOpacity(const basegfx::B2DPoint& /*rUV*/, double& rfOpacity) const
- {
- rfOpacity = mfOpacity;
- }
- } // end of namespace texture
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace texture
- {
- GeoTexSvxBitmap::GeoTexSvxBitmap(const Bitmap& rBitmap, const basegfx::B2DPoint& rTopLeft, const basegfx::B2DVector& rSize)
- : maBitmap(rBitmap),
- mpRead(0L),
- maTopLeft(rTopLeft),
- maSize(rSize),
- mfMulX(0.0),
- mfMulY(0.0)
- {
- mpRead = maBitmap.AcquireReadAccess();
- OSL_ENSURE(mpRead, "GeoTexSvxBitmap: Got no read access to Bitmap (!)");
- mfMulX = (double)mpRead->Width() / maSize.getX();
- mfMulY = (double)mpRead->Height() / maSize.getY();
- }
-
- GeoTexSvxBitmap::~GeoTexSvxBitmap()
- {
- delete mpRead;
- }
-
- bool GeoTexSvxBitmap::impIsValid(const basegfx::B2DPoint& rUV, sal_Int32& rX, sal_Int32& rY) const
- {
- if(mpRead)
- {
- rX = (sal_Int32)((rUV.getX() - maTopLeft.getX()) * mfMulX);
-
- if(rX >= 0L && rX < mpRead->Width())
- {
- rY = (sal_Int32)((rUV.getY() - maTopLeft.getY()) * mfMulY);
-
- return (rY >= 0L && rY < mpRead->Height());
- }
- }
-
- return false;
- }
-
- void GeoTexSvxBitmap::modifyBColor(const basegfx::B2DPoint& rUV, basegfx::BColor& rBColor, double& rfOpacity) const
- {
- sal_Int32 nX, nY;
-
- if(impIsValid(rUV, nX, nY))
- {
- const double fConvertColor(1.0 / 255.0);
- const BitmapColor aBMCol(mpRead->GetColor(nY, nX));
- const basegfx::BColor aBSource(
- (double)aBMCol.GetRed() * fConvertColor,
- (double)aBMCol.GetGreen() * fConvertColor,
- (double)aBMCol.GetBlue() * fConvertColor);
-
- rBColor = aBSource;
- }
- else
- {
- rfOpacity = 0.0;
- }
- }
-
- void GeoTexSvxBitmap::modifyOpacity(const basegfx::B2DPoint& rUV, double& rfOpacity) const
- {
- sal_Int32 nX, nY;
-
- if(impIsValid(rUV, nX, nY))
- {
- const BitmapColor aBMCol(mpRead->GetColor(nY, nX));
- const Color aColor(aBMCol.GetRed(), aBMCol.GetGreen(), aBMCol.GetBlue());
-
- rfOpacity = ((double)(0xff - aColor.GetLuminance()) * (1.0 / 255.0));
- }
- else
- {
- rfOpacity = 0.0;
- }
- }
- } // end of namespace texture
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace texture
- {
- GeoTexSvxBitmapTiled::GeoTexSvxBitmapTiled(const Bitmap& rBitmap, const basegfx::B2DPoint& rTopLeft, const basegfx::B2DVector& rSize)
- : GeoTexSvxBitmap(rBitmap, rTopLeft, rSize)
- {
- }
-
- void GeoTexSvxBitmapTiled::modifyBColor(const basegfx::B2DPoint& rUV, basegfx::BColor& rBColor, double& rfOpacity) const
- {
- if(mpRead)
- {
- GeoTexSvxBitmap::modifyBColor(impGetCorrected(rUV), rBColor, rfOpacity);
- }
- }
-
- void GeoTexSvxBitmapTiled::modifyOpacity(const basegfx::B2DPoint& rUV, double& rfOpacity) const
- {
- if(mpRead)
- {
- GeoTexSvxBitmap::modifyOpacity(impGetCorrected(rUV), rfOpacity);
- }
- }
- } // end of namespace texture
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace texture
- {
- GeoTexSvxMultiHatch::GeoTexSvxMultiHatch(const primitive3d::HatchTexturePrimitive3D& rPrimitive, double fLogicPixelSize)
- : mfLogicPixelSize(fLogicPixelSize),
- mp0(0L),
- mp1(0L),
- mp2(0L)
- {
- const attribute::FillHatchAttribute& rHatch(rPrimitive.getHatch());
- const basegfx::B2DRange aOutlineRange(0.0, 0.0, rPrimitive.getTextureSize().getX(), rPrimitive.getTextureSize().getY());
- const double fAngleA(rHatch.getAngle());
- maColor = rHatch.getColor();
- mbFillBackground = rHatch.isFillBackground();
- mp0 = new GeoTexSvxHatch(aOutlineRange, rHatch.getDistance(), fAngleA);
-
- if(attribute::HATCHSTYLE_DOUBLE == rHatch.getStyle() || attribute::HATCHSTYLE_TRIPLE == rHatch.getStyle())
- {
- mp1 = new GeoTexSvxHatch(aOutlineRange, rHatch.getDistance(), fAngleA + F_PI2);
- }
-
- if(attribute::HATCHSTYLE_TRIPLE == rHatch.getStyle())
- {
- mp2 = new GeoTexSvxHatch(aOutlineRange, rHatch.getDistance(), fAngleA + F_PI4);
- }
- }
-
- GeoTexSvxMultiHatch::~GeoTexSvxMultiHatch()
- {
- delete mp0;
- delete mp1;
- delete mp2;
- }
-
- bool GeoTexSvxMultiHatch::impIsOnHatch(const basegfx::B2DPoint& rUV) const
- {
- if(mp0->getDistanceToHatch(rUV) < mfLogicPixelSize)
- {
- return true;
- }
-
- if(mp1 && mp1->getDistanceToHatch(rUV) < mfLogicPixelSize)
- {
- return true;
- }
-
- if(mp2 && mp2->getDistanceToHatch(rUV) < mfLogicPixelSize)
- {
- return true;
- }
-
- return false;
- }
-
- void GeoTexSvxMultiHatch::modifyBColor(const basegfx::B2DPoint& rUV, basegfx::BColor& rBColor, double& rfOpacity) const
- {
- if(impIsOnHatch(rUV))
- {
- rBColor = maColor;
- }
- else if(!mbFillBackground)
- {
- rfOpacity = 0.0;
- }
- }
-
- void GeoTexSvxMultiHatch::modifyOpacity(const basegfx::B2DPoint& rUV, double& rfOpacity) const
- {
- if(mbFillBackground || impIsOnHatch(rUV))
- {
- rfOpacity = 1.0;
- }
- else
- {
- rfOpacity = 0.0;
- }
- }
- } // end of namespace texture
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/util/drawinglayer.flt b/drawinglayer/util/drawinglayer.flt
deleted file mode 100755
index 28a1dd1b65..0000000000
--- a/drawinglayer/util/drawinglayer.flt
+++ /dev/null
@@ -1,4 +0,0 @@
-__CT
-Impl
-IMP
-internal \ No newline at end of file