Kaydet (Commit) f3695b26 authored tarafından Armin Le Grand's avatar Armin Le Grand

i122216 Ensure FormControls get printed/PDFed, also ensure graphics are all visible in metafiles

üst bab3ddce
......@@ -1342,7 +1342,10 @@ namespace drawinglayer
}
case PRIMITIVE2D_ID_BITMAPPRIMITIVE2D :
{
// direct draw of transformed BitmapEx primitive; use default processing
// direct draw of transformed BitmapEx primitive; use default processing, but without
// former testing if graphic content is inside discrete local viewport; this is not
// setup for metafile targets (metafile renderer tries to render in logic coordinates,
// the mapping is kept to the OutputDevice for better Metafile recording)
RenderBitmapPrimitive2D(static_cast< const primitive2d::BitmapPrimitive2D& >(rCandidate));
break;
}
......
......@@ -183,6 +183,25 @@ namespace drawinglayer
case PRIMITIVE2D_ID_BITMAPPRIMITIVE2D :
{
// direct draw of transformed BitmapEx primitive
const primitive2d::BitmapPrimitive2D& rBitmapCandidate = static_cast< const primitive2d::BitmapPrimitive2D& >(rCandidate);
// check if graphic content is inside discrete local ViewPort
const basegfx::B2DRange& rDiscreteViewPort(getViewInformation2D().getDiscreteViewport());
const basegfx::B2DHomMatrix aLocalTransform(maCurrentTransformation * rBitmapCandidate.getTransform());
if(!rDiscreteViewPort.isEmpty())
{
basegfx::B2DRange aUnitRange(0.0, 0.0, 1.0, 1.0);
aUnitRange.transform(aLocalTransform);
if(!aUnitRange.overlaps(rDiscreteViewPort))
{
// content is outside discrete local ViewPort
break;
}
}
RenderBitmapPrimitive2D(static_cast< const primitive2d::BitmapPrimitive2D& >(rCandidate));
break;
}
......
......@@ -387,24 +387,8 @@ namespace drawinglayer
// direct draw of transformed BitmapEx primitive
void VclProcessor2D::RenderBitmapPrimitive2D(const primitive2d::BitmapPrimitive2D& rBitmapCandidate)
{
// check local ViewPort
const basegfx::B2DRange& rDiscreteViewPort(getViewInformation2D().getDiscreteViewport());
const basegfx::B2DHomMatrix aLocalTransform(maCurrentTransformation * rBitmapCandidate.getTransform());
if(!rDiscreteViewPort.isEmpty())
{
// check if we are visible
basegfx::B2DRange aUnitRange(0.0, 0.0, 1.0, 1.0);
aUnitRange.transform(aLocalTransform);
if(!aUnitRange.overlaps(rDiscreteViewPort))
{
return;
}
}
BitmapEx aBitmapEx(rBitmapCandidate.getBitmapEx());
const basegfx::B2DHomMatrix aLocalTransform(maCurrentTransformation * rBitmapCandidate.getTransform());
if(maBColorModifierStack.count())
{
......
......@@ -178,7 +178,6 @@ namespace sdr
const double fCurrentTime(getPrimitiveAnimator().GetTime());
OutputDevice& rTargetOutDev = GetPageWindow().GetPaintWindow().GetTargetOutputDevice();
basegfx::B2DRange aViewRange;
basegfx::B2DHomMatrix aViewTransformation;
// create ViewRange
if(isOutputToRecordingMetaFile())
......@@ -228,16 +227,12 @@ namespace sdr
// transform to world coordinates
aViewRange.transform(rTargetOutDev.GetInverseViewTransformation());
// for metafile, leave ViewTransformation empty, but for pixel renderer
// get it from OutputDevice
aViewTransformation = rTargetOutDev.GetViewTransformation();
}
// update local ViewInformation2D
const drawinglayer::geometry::ViewInformation2D aNewViewInformation2D(
basegfx::B2DHomMatrix(),
aViewTransformation,
rTargetOutDev.GetViewTransformation(),
aViewRange,
GetXDrawPageForSdrPage(GetSdrPage()),
fCurrentTime,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment