diff options
Diffstat (limited to 'drawinglayer/source/processor2d/vclprocessor2d.cxx')
-rw-r--r-- | drawinglayer/source/processor2d/vclprocessor2d.cxx | 92 |
1 files changed, 0 insertions, 92 deletions
diff --git a/drawinglayer/source/processor2d/vclprocessor2d.cxx b/drawinglayer/source/processor2d/vclprocessor2d.cxx index 5af036d3cced..b699d84a1dc7 100644 --- a/drawinglayer/source/processor2d/vclprocessor2d.cxx +++ b/drawinglayer/source/processor2d/vclprocessor2d.cxx @@ -87,18 +87,6 @@ namespace return nSteps; } - - // get metafile (copy it) - GDIMetaFile GetMetaFile(const drawinglayer::primitive2d::MetafilePrimitive2D& rMetaCandidate, const basegfx::BColorModifierStack& rColorModifierStack) - { - if (rColorModifierStack.count()) - { - const basegfx::BColor aRGBBaseColor(0, 0, 0); - const basegfx::BColor aRGBColor(rColorModifierStack.getModifiedColor(aRGBBaseColor)); - return rMetaCandidate.getMetaFile().GetMonochromeMtf(Color(aRGBColor)); - } - return rMetaCandidate.getMetaFile(); - } } namespace drawinglayer @@ -713,86 +701,6 @@ namespace drawinglayer } } - // 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 compromise. - tools::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(GetMetaFile(rMetaCandidate, maBColorModifierStack)); - - // 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() > 0 && aDestSize.getHeight() > 0) - { - // 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 contained 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) { |