filter/source/graphicfilter/itiff/ccidecom.cxx | 8 +++++++- filter/source/graphicfilter/itiff/ccidecom.hxx | 2 +- filter/source/graphicfilter/itiff/itiff.cxx | 2 +- oox/source/ppt/presentationfragmenthandler.cxx | 3 +++ oox/source/ppt/slidefragmenthandler.cxx | 11 ++++++++--- vcl/source/gdi/print.cxx | 24 +++++++++++++++++++----- 6 files changed, 39 insertions(+), 11 deletions(-)
New commits: commit 13f70473b4a341ec513a5a070a0828b3f85c0c84 Author: Jürgen Schmidt <j...@apache.org> Date: Wed Mar 19 12:47:53 2014 +0000 #124456# merge from aoo410 branch, add null pointer check to avoid usage of not initialzed theme, add comment for missing theme support in notes page diff --git a/oox/source/ppt/presentationfragmenthandler.cxx b/oox/source/ppt/presentationfragmenthandler.cxx index 609b960..401b01e 100644 --- a/oox/source/ppt/presentationfragmenthandler.cxx +++ b/oox/source/ppt/presentationfragmenthandler.cxx @@ -273,6 +273,9 @@ void PresentationFragmentHandler::endDocument() throw (SAXException, RuntimeExce SlidePersistPtr pNotesMasterPersistPtr( new SlidePersist( rFilter, sal_True/*sal_False*/, sal_True, xNotesPage, ShapePtr( new PPTShape( Slide, "com.sun.star.drawing.GroupShape" ) ), mpTextListStyle ) ); FragmentHandlerRef xNotesMasterFragmentHandler( new SlideFragmentHandler( getFilter(), aNotesMasterFragmentPath, pNotesMasterPersistPtr, Slide ) ); + + // TODO: Theme support is missing, theme pointer in SlidePersist is null and used later + importSlide( xNotesMasterFragmentHandler, pNotesMasterPersistPtr ); pNotesMasterPersistPtr->createXShapes( rFilter ); pNotesPersistPtr->setMasterPersist(pNotesMasterPersistPtr); diff --git a/oox/source/ppt/slidefragmenthandler.cxx b/oox/source/ppt/slidefragmenthandler.cxx index 2992880..0f2ab8d 100644 --- a/oox/source/ppt/slidefragmenthandler.cxx +++ b/oox/source/ppt/slidefragmenthandler.cxx @@ -141,10 +141,15 @@ Reference< XFastContextHandler > SlideFragmentHandler::createFastChildContext( s case PPT_TOKEN( bgRef ): // a:CT_StyleMatrixReference { - FillPropertiesPtr pFillPropertiesPtr( new FillProperties( - *mpSlidePersistPtr->getTheme()->getFillStyle( xAttribs->getOptionalValue( XML_idx ).toInt32() ) ) ); + oox::drawingml::ThemePtr pTheme = mpSlidePersistPtr->getTheme(); + if (pTheme) + { + FillPropertiesPtr pFillPropertiesPtr( new FillProperties( + *pTheme->getFillStyle( xAttribs->getOptionalValue( XML_idx ).toInt32() ) ) ); + mpSlidePersistPtr->setBackgroundProperties( pFillPropertiesPtr ); + } xRet.set( new ColorContext( *this, mpSlidePersistPtr->getBackgroundColor() ) ); - mpSlidePersistPtr->setBackgroundProperties( pFillPropertiesPtr ); + } break; commit 0ab284f5064f66a11741fa4aa2e2774c1d7e5f14 Author: Armin Le Grand <a...@apache.org> Date: Wed Mar 19 12:34:44 2014 +0000 i122984 Avoid too many Print JobSetups, be more tolerant with last line TIFF imports diff --git a/filter/source/graphicfilter/itiff/ccidecom.cxx b/filter/source/graphicfilter/itiff/ccidecom.cxx index 92dbd31..77b856e 100644 --- a/filter/source/graphicfilter/itiff/ccidecom.cxx +++ b/filter/source/graphicfilter/itiff/ccidecom.cxx @@ -629,7 +629,7 @@ void CCIDecompressor::StartDecompression( SvStream & rIStream ) } -sal_Bool CCIDecompressor::DecompressScanline( sal_uInt8 * pTarget, sal_uLong nTargetBits ) +sal_Bool CCIDecompressor::DecompressScanline( sal_uInt8 * pTarget, sal_uLong nTargetBits, bool bLastLine ) { sal_uInt16 i; sal_uInt8 * pSrc,* pDst; @@ -714,6 +714,12 @@ sal_Bool CCIDecompressor::DecompressScanline( sal_uInt8 * pTarget, sal_uLong nTa for ( i = 0; i < nLastLineSize; i++ ) *(pDst++)=*(pSrc++); } + // #122984# + if( !bStatus && bLastLine ) + { + bStatus = sal_True; + } + if ( pIStream->GetError() ) bStatus = sal_False; diff --git a/filter/source/graphicfilter/itiff/ccidecom.hxx b/filter/source/graphicfilter/itiff/ccidecom.hxx index ac75d2b..d021a84 100644 --- a/filter/source/graphicfilter/itiff/ccidecom.hxx +++ b/filter/source/graphicfilter/itiff/ccidecom.hxx @@ -58,7 +58,7 @@ public: void StartDecompression( SvStream & rIStream ); - sal_Bool DecompressScanline(sal_uInt8 * pTarget, sal_uLong nTargetBits ); + sal_Bool DecompressScanline(sal_uInt8 * pTarget, sal_uLong nTargetBits, bool bLastLine ); private: diff --git a/filter/source/graphicfilter/itiff/itiff.cxx b/filter/source/graphicfilter/itiff/itiff.cxx index 4cb6400..e31ed00 100644 --- a/filter/source/graphicfilter/itiff/itiff.cxx +++ b/filter/source/graphicfilter/itiff/itiff.cxx @@ -564,7 +564,7 @@ sal_Bool TIFFReader::ReadMap( sal_uLong nMinPercent, sal_uLong nMaxPercent ) pTIFF->Seek( pStripOffsets[ nStrip ] ); aCCIDecom.StartDecompression( *pTIFF ); } - if ( aCCIDecom.DecompressScanline( pMap[ np ], nImageWidth * nBitsPerSample * nSamplesPerPixel / nPlanes ) == sal_False ) + if ( aCCIDecom.DecompressScanline( pMap[ np ], nImageWidth * nBitsPerSample * nSamplesPerPixel / nPlanes, np + 1 == nPlanes ) == sal_False ) return sal_False; if ( pTIFF->GetError() ) return sal_False; diff --git a/vcl/source/gdi/print.cxx b/vcl/source/gdi/print.cxx index d6503b5..76e1642 100644 --- a/vcl/source/gdi/print.cxx +++ b/vcl/source/gdi/print.cxx @@ -1224,11 +1224,25 @@ sal_Bool Printer::SetPaperSizeUser( const Size& rSize, bool bMatchNearest ) if ( mbInPrintPage ) return sal_False; - Size aPixSize = LogicToPixel( rSize ); - Size aPageSize = PixelToLogic( aPixSize, MAP_100TH_MM ); - if ( (maJobSetup.ImplGetConstData()->mePaperFormat != PAPER_USER) || - (maJobSetup.ImplGetConstData()->mnPaperWidth != aPageSize.Width()) || - (maJobSetup.ImplGetConstData()->mnPaperHeight != aPageSize.Height()) ) + const Size aPixSize = LogicToPixel( rSize ); + const Size aPageSize = PixelToLogic( aPixSize, MAP_100TH_MM ); + bool bNeedToChange(maJobSetup.ImplGetConstData()->mnPaperWidth != aPageSize.Width() || + maJobSetup.ImplGetConstData()->mnPaperHeight != aPageSize.Height()); + + if(!bNeedToChange) + { + // #122984# only need to change when Paper is different from PAPER_USER and + // the mapped Paper which will created below in the call to ImplFindPaperFormatForUserSize + // and will replace maJobSetup.ImplGetConstData()->mePaperFormat. This leads to + // unnecessary JobSetups, e.g. when printing a multi-page fax, but also with + // normal print + const Paper aPaper = ImplGetPaperFormat(aPageSize.Width(), aPageSize.Height()); + + bNeedToChange = maJobSetup.ImplGetConstData()->mePaperFormat != PAPER_USER && + maJobSetup.ImplGetConstData()->mePaperFormat != aPaper; + } + + if(bNeedToChange) { JobSetup aJobSetup = maJobSetup; ImplJobSetup* pSetupData = aJobSetup.ImplGetData();
_______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits