Hi Ronald, Roland Baudin píše v Pá 17. 06. 2011 v 23:23 +0200: > Hi, > > here is a small patch for sw that fixes another issue related to bug > 33781 that I already fixed last month. > > The problem is that a graphic object of type "Draw 8" is not > anti-aliased when anchored as char (see test file for example). > > IMHO, this patch is safe and acts exactly the same as the previous fix > for bug 33781.
It works nice. Well, just after your new lines there is another hack with aliasing for http://openoffice.org/bugzilla/show_bug.cgi?id=99665 . It solves the problem where the aliasing caused problems => we should be more careful with setting aliasing to ANTIALIASING_ENABLE_B2DDRAW globally. I prefer the more conservative approach from i#99665. It modifies the current aliasing using "byte or" (operator |) and restores the original aliasing at the end of the "if" block. I see that the aliasing value is always modified by byte operators '&', '|'. Try to search for ANTIALIASING_ENABLE_B2DDRAW at http://opengrok.libreoffice.org/ So, what do you think about the attached patch? It uses the conservative approach from i#99665 also for your two changes. Also it combines your fix with the fix for i#99665 to avoid two nFormerAntialiasingAtOutput variables. I would prefer to sort this out before we cherry-pick it to libreoffice-3-4 branch. Best Regards, Petr
--- sw/source/core/doc/notxtfrm.cxx.old1 2011-06-20 17:00:58.000000000 +0200 +++ sw/source/core/doc/notxtfrm.cxx 2011-06-20 17:24:18.000000000 +0200 @@ -819,9 +819,10 @@ void SwNoTxtFrm::PaintPicture( OutputDev if( pGrfNd ) { // Fix for bug fdo#33781 + const sal_uInt16 nFormerAntialiasingAtOutput( pOut->GetAntialiasing() ); if (pShell->Imp()->GetDrawView()->IsAntiAliasing()) { - pOut->SetAntialiasing( ANTIALIASING_ENABLE_B2DDRAW ); + pOut->SetAntialiasing( nFormerAntialiasingAtOutput | ANTIALIASING_ENABLE_B2DDRAW ); } sal_Bool bForceSwap = sal_False, bContinue = sal_True; @@ -938,8 +939,12 @@ void SwNoTxtFrm::PaintPicture( OutputDev if( bSwapped && bPrn ) bForceSwap = sal_True; } + if( bForceSwap ) pGrfNd->SwapOut(); + + if ( pShell->Imp()->GetDrawView()->IsAntiAliasing() ) + pOut->SetAntialiasing( nFormerAntialiasingAtOutput ); } else if( bIsChart //charts must be painted resolution dependent!! #i82893#, #i75867# @@ -953,22 +958,18 @@ void SwNoTxtFrm::PaintPicture( OutputDev else if( pOLENd ) { // Fix for bug fdo#33781 + const sal_uInt16 nFormerAntialiasingAtOutput( pOut->GetAntialiasing() ); if (pShell->Imp()->GetDrawView()->IsAntiAliasing()) { - pOut->SetAntialiasing( ANTIALIASING_ENABLE_B2DDRAW ); - } + sal_uInt16 nNewAntialiasingAtOutput = nFormerAntialiasingAtOutput | ANTIALIASING_ENABLE_B2DDRAW; - // #i99665# - // Adjust AntiAliasing mode at output device for chart OLE - const sal_uInt16 nFormerAntialiasingAtOutput( pOut->GetAntialiasing() ); - if ( pOLENd->IsChart() && - pShell->Imp()->GetDrawView()->IsAntiAliasing() ) - { - const sal_uInt16 nAntialiasingForChartOLE = - nFormerAntialiasingAtOutput | ANTIALIASING_PIXELSNAPHAIRLINE; - pOut->SetAntialiasing( nAntialiasingForChartOLE ); + // #i99665# + // Adjust AntiAliasing mode at output device for chart OLE + if ( pOLENd->IsChart() ) + nNewAntialiasingAtOutput |= ANTIALIASING_PIXELSNAPHAIRLINE; + + pOut->SetAntialiasing( nNewAntialiasingAtOutput ); } - // <-- Point aPosition(aAlignedGrfArea.Pos()); Size aSize(aAlignedGrfArea.SSize()); @@ -1012,13 +1013,8 @@ void SwNoTxtFrm::PaintPicture( OutputDev ((SwFEShell*)pShell)->ConnectObj( pOLENd->GetOLEObj().GetObject(), pFly->Prt(), pFly->Frm()); } - // #i99665# - if ( pOLENd->IsChart() && - pShell->Imp()->GetDrawView()->IsAntiAliasing() ) - { + if ( pShell->Imp()->GetDrawView()->IsAntiAliasing() ) pOut->SetAntialiasing( nFormerAntialiasingAtOutput ); - } - // <-- } }
_______________________________________________ LibreOffice mailing list LibreOffice@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice