diff options
Diffstat (limited to 'basebmp/source/bitmapdevice.cxx')
-rw-r--r-- | basebmp/source/bitmapdevice.cxx | 170 |
1 files changed, 4 insertions, 166 deletions
diff --git a/basebmp/source/bitmapdevice.cxx b/basebmp/source/bitmapdevice.cxx index c16737673baa..f40d931e79d7 100644 --- a/basebmp/source/bitmapdevice.cxx +++ b/basebmp/source/bitmapdevice.cxx @@ -163,60 +163,21 @@ namespace typedef RawAccessor raw_accessor_type; typedef AccessorSelector accessor_selector; - typedef typename Masks::clipmask_format_traits::iterator_type mask_iterator_type; - typedef typename Masks::clipmask_format_traits::raw_accessor_type mask_rawaccessor_type; - typedef typename Masks::clipmask_format_traits::accessor_selector mask_accessorselector_type; - - typedef typename Masks::alphamask_format_traits::iterator_type alphamask_iterator_type; - typedef typename Masks::alphamask_format_traits::raw_accessor_type alphamask_rawaccessor_type; - typedef typename Masks::alphamask_format_traits::accessor_selector alphamask_accessorselector_type; - typedef typename AccessorSelector::template wrap_accessor< raw_accessor_type >::type dest_accessor_type; typedef AccessorTraits< dest_accessor_type > accessor_traits; - typedef CompositeIterator2D< dest_iterator_type, - mask_iterator_type > composite_iterator_type; - - typedef BitmapRenderer<mask_iterator_type, - mask_rawaccessor_type, - mask_accessorselector_type, - Masks> mask_bitmap_type; - typedef BitmapRenderer<alphamask_iterator_type, - alphamask_rawaccessor_type, - alphamask_accessorselector_type, - Masks> alphamask_bitmap_type; - - typedef AccessorTraits< raw_accessor_type > raw_accessor_traits; typedef typename uInt32Converter< typename raw_accessor_type::value_type>::to to_uint32_functor; - typedef typename raw_accessor_traits::template masked_accessor< - mask_rawaccessor_type, - dest_iterator_type, - mask_iterator_type, - Masks::clipmask_polarity>::type raw_maskedaccessor_type; - typedef typename accessor_selector::template wrap_accessor< - raw_maskedaccessor_type >::type masked_accessor_type; - - - typedef JoinImageAccessorAdapter< dest_accessor_type, - mask_rawaccessor_type > joined_image_accessor_type; - typedef JoinImageAccessorAdapter< GenericColorImageAccessor, - GenericColorImageAccessor > joined_generic_image_accessor_type; - - - dest_iterator_type maBegin; typename accessor_traits::color_lookup maColorLookup; to_uint32_functor maToUInt32Converter; dest_accessor_type maAccessor; raw_accessor_type maRawAccessor; - masked_accessor_type maMaskedAccessor; - raw_maskedaccessor_type maRawMaskedAccessor; @@ -237,9 +198,7 @@ namespace maColorLookup(), maToUInt32Converter(), maAccessor( accessor ), - maRawAccessor( rawAccessor ), - maMaskedAccessor( accessor ), - maRawMaskedAccessor( rawAccessor ) + maRawAccessor( rawAccessor ) {} private: @@ -256,69 +215,6 @@ namespace return getCompatibleBitmap(bmp).get() != nullptr; } - std::shared_ptr<mask_bitmap_type> getCompatibleClipMask( const BitmapDeviceSharedPtr& bmp ) const - { - std::shared_ptr<mask_bitmap_type> pMask( std::dynamic_pointer_cast<mask_bitmap_type>( bmp )); - - if( !pMask ) - return pMask; - - if( pMask->getSize() != getSize() ) - pMask.reset(); - - return pMask; - } - - virtual bool isCompatibleClipMask( const BitmapDeviceSharedPtr& bmp ) const override - { - // TODO(P1): dynamic_cast usually called twice for - // compatible formats - return std::dynamic_pointer_cast<mask_bitmap_type>( bmp ).get() != nullptr; - } - - static std::shared_ptr<alphamask_bitmap_type> getCompatibleAlphaMask( const BitmapDeviceSharedPtr& bmp ) - { - return std::dynamic_pointer_cast<alphamask_bitmap_type>( bmp ); - } - - virtual void clear_i( Color fillColor, - const basegfx::B2IBox& rBounds ) override - { - fillImage(destIterRange(maBegin, - maRawAccessor, - rBounds), - maColorLookup( - maAccessor, - fillColor) ); - } - - virtual void setPixel_i( const basegfx::B2IPoint& rPt, - Color pixelColor ) override - { - const DestIterator pixel( maBegin + - vigra::Diff2D(rPt.getX(), - rPt.getY()) ); - maAccessor.set( pixelColor, pixel ); - } - - virtual void setPixel_i( const basegfx::B2IPoint& rPt, - Color pixelColor, - const BitmapDeviceSharedPtr& rClip ) override - { - std::shared_ptr<mask_bitmap_type> pMask( getCompatibleClipMask(rClip) ); - OSL_ASSERT( pMask ); - - const vigra::Diff2D offset(rPt.getX(), - rPt.getY()); - - const composite_iterator_type aIter( - maBegin + offset, - pMask->maBegin + offset ); - - maMaskedAccessor.set( pixelColor, - aIter ); - } - virtual Color getPixel_i(const basegfx::B2IPoint& rPt ) override { const DestIterator pixel( maBegin + @@ -335,15 +231,6 @@ namespace return maToUInt32Converter(maRawAccessor(pixel)); } - composite_iterator_type getMaskedIter( const BitmapDeviceSharedPtr& rClip ) const - { - std::shared_ptr<mask_bitmap_type> pMask( getCompatibleClipMask(rClip) ); - OSL_ASSERT( pMask ); - - return composite_iterator_type( maBegin, - pMask->maBegin ); - } - template< typename Iterator, typename RawAcc > void implDrawBitmap(const BitmapDeviceSharedPtr& rSrcBitmap, const basegfx::B2IBox& rSrcRect, @@ -398,8 +285,8 @@ namespace sal_Int32 dstStride = getScanlineStride(); sal_Int32 srcStride = rSrcBitmap->getScanlineStride(); sal_Int32 bytesPerPixel = (bitsPerPixel[getScanlineFormat()] + 7) >> 3; // round up to bytes - bool dstTopDown = isTopDown(); - bool srcTopDown = rSrcBitmap->isTopDown(); + bool dstTopDown = true; + bool srcTopDown = true; if (dstBuf == srcBuf && nSrcY < nDestY) // reverse copy order to avoid overlapping { @@ -539,11 +426,6 @@ basegfx::B2IVector BitmapDevice::getSize() const mpImpl->maBounds.getMaxY() - mpImpl->maBounds.getMinY() ); } -bool BitmapDevice::isTopDown() const -{ - return mpImpl->mnScanlineStride >= 0; -} - basegfx::B2IVector BitmapDevice::getBufferSize() const { return mpImpl->maBufferSize; @@ -575,37 +457,6 @@ bool BitmapDevice::isSharedBuffer( const BitmapDeviceSharedPtr& rOther ) const return rOther.get()->getBuffer().get() == getBuffer().get(); } -void BitmapDevice::clear( Color fillColor ) -{ - clear_i( fillColor, mpImpl->maBounds ); -} - -void BitmapDevice::setPixel( const basegfx::B2IPoint& rPt, - Color lineColor ) -{ - if( mpImpl->maBounds.isInside(rPt) ) - setPixel_i(rPt,lineColor); -} - -void BitmapDevice::setPixel( const basegfx::B2IPoint& rPt, - Color lineColor, - const BitmapDeviceSharedPtr& rClip ) -{ - if( !rClip ) - { - setPixel(rPt,lineColor); - return; - } - - if( mpImpl->maBounds.isInside(rPt) ) - { - if( isCompatibleClipMask( rClip ) ) - setPixel_i(rPt,lineColor,rClip); - else - getGenericRenderer()->setPixel( rPt, lineColor, rClip ); - } -} - Color BitmapDevice::getPixel( const basegfx::B2IPoint& rPt ) { if( mpImpl->maBounds.isInside(rPt) ) @@ -863,7 +714,6 @@ BitmapDeviceSharedPtr createRenderer( namespace { BitmapDeviceSharedPtr createBitmapDeviceImplInner( const basegfx::B2IVector& rSize, - bool bTopDown, Format nScanlineFormat, boost::shared_array< sal_uInt8 > pMem, PaletteMemorySharedVector pPal, @@ -886,9 +736,6 @@ BitmapDeviceSharedPtr createBitmapDeviceImplInner( const basegfx::B2IVector& sal_Int32 nScanlineStride = getBitmapDeviceStrideForWidth(nScanlineFormat, rSize.getX()); - // factor in bottom-up scanline order case - nScanlineStride *= bTopDown ? 1 : -1; - const sal_uInt32 nWidth(nScanlineStride < 0 ? -nScanlineStride : nScanlineStride); const sal_uInt32 nHeight(rSize.getY()); @@ -1040,14 +887,13 @@ BitmapDeviceSharedPtr createBitmapDeviceImplInner( const basegfx::B2IVector& } BitmapDeviceSharedPtr createBitmapDeviceImpl( const basegfx::B2IVector& rSize, - bool bTopDown, Format nScanlineFormat, boost::shared_array< sal_uInt8 > pMem, PaletteMemorySharedVector pPal, const basegfx::B2IBox* pSubset, bool bBlack = true) { - BitmapDeviceSharedPtr result( createBitmapDeviceImplInner( rSize, bTopDown, nScanlineFormat, pMem, pPal, pSubset, bBlack ) ); + BitmapDeviceSharedPtr result( createBitmapDeviceImplInner( rSize, nScanlineFormat, pMem, pPal, pSubset, bBlack ) ); #ifdef SAL_LOG_INFO std::ostringstream subset; @@ -1058,7 +904,6 @@ BitmapDeviceSharedPtr createBitmapDeviceImpl( const basegfx::B2IVector& SAL_INFO( "basebmp.bitmapdevice", "createBitmapDevice: " << rSize.getX() << "x" << rSize.getY() - << (bTopDown ? " top-down " : " bottom-up ") << subset.str() << " = " << result.get() ); #endif @@ -1080,11 +925,9 @@ sal_Int32 getBitmapDeviceStrideForWidth(Format nScanlineFormat, sal_Int32 nWidth } BitmapDeviceSharedPtr createBitmapDevice( const basegfx::B2IVector& rSize, - bool bTopDown, Format nScanlineFormat ) { return createBitmapDeviceImpl( rSize, - bTopDown, nScanlineFormat, boost::shared_array< sal_uInt8 >(), PaletteMemorySharedVector(), @@ -1092,12 +935,10 @@ BitmapDeviceSharedPtr createBitmapDevice( const basegfx::B2IVector& rSize, } BitmapDeviceSharedPtr createBitmapDevice( const basegfx::B2IVector& rSize, - bool bTopDown, Format nScanlineFormat, const PaletteMemorySharedVector& rPalette ) { return createBitmapDeviceImpl( rSize, - bTopDown, nScanlineFormat, boost::shared_array< sal_uInt8 >(), rPalette, @@ -1105,13 +946,11 @@ BitmapDeviceSharedPtr createBitmapDevice( const basegfx::B2IVector& rSize } BitmapDeviceSharedPtr createBitmapDevice( const basegfx::B2IVector& rSize, - bool bTopDown, Format nScanlineFormat, const RawMemorySharedArray& rMem, const PaletteMemorySharedVector& rPalette ) { return createBitmapDeviceImpl( rSize, - bTopDown, nScanlineFormat, rMem, rPalette, @@ -1122,7 +961,6 @@ BitmapDeviceSharedPtr cloneBitmapDevice( const basegfx::B2IVector& rSize, const BitmapDeviceSharedPtr& rProto ) { return createBitmapDeviceImpl( rSize, - rProto->isTopDown(), rProto->getScanlineFormat(), boost::shared_array< sal_uInt8 >(), rProto->getPalette(), |