diff options
author | Caolán McNamara <caolanm@redhat.com> | 2016-01-19 09:55:18 +0000 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2016-01-19 13:24:27 +0000 |
commit | 22a9f5c90e3060a835bb56079bf71093d898196f (patch) | |
tree | 3277ed9b6dd094c6adb0f09e1def7c1e45b1134a /basebmp | |
parent | d3b0f6bcd464c84052ca2af36ea2649aeef57b74 (diff) |
never scaling now
Change-Id: Iaa8afb2c642c9108eb1b3be4737b74285d064cf3
Diffstat (limited to 'basebmp')
-rw-r--r-- | basebmp/inc/fillimage.hxx | 63 | ||||
-rw-r--r-- | basebmp/inc/scaleimage.hxx | 177 | ||||
-rw-r--r-- | basebmp/source/bitmapdevice.cxx | 21 |
3 files changed, 5 insertions, 256 deletions
diff --git a/basebmp/inc/fillimage.hxx b/basebmp/inc/fillimage.hxx deleted file mode 100644 index 7acd901edacb..000000000000 --- a/basebmp/inc/fillimage.hxx +++ /dev/null @@ -1,63 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/* - * This file is part of the LibreOffice project. - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - * - * This file incorporates work covered by the following license notice: - * - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed - * with this work for additional information regarding copyright - * ownership. The ASF licenses this file to you under the Apache - * License, Version 2.0 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.apache.org/licenses/LICENSE-2.0 . - */ - -#ifndef INCLUDED_BASEBMP_INC_FILLIMAGE_HXX -#define INCLUDED_BASEBMP_INC_FILLIMAGE_HXX - -#include <vigra/tuple.hxx> -#include <vigra/iteratortraits.hxx> - -namespace basebmp -{ - -template< class DestIterator, class DestAccessor, typename T > -void fillImage( DestIterator begin, - const DestIterator& end, - DestAccessor ad, - const T& fillVal ) -{ - const int width ( end.x - begin.x ); - const int height( end.y - begin.y ); - - for( int y=0; y<height; ++y, ++begin.y ) - { - typename vigra::IteratorTraits<DestIterator>::row_iterator - rowIter( begin.rowIterator() ); - const typename vigra::IteratorTraits<DestIterator>::row_iterator - rowEnd( rowIter + width ); - - // TODO(P2): Provide specialized span fill methods on the - // iterator/accessor - while( rowIter != rowEnd ) - ad.set(fillVal, rowIter++); - } -} - -template< class DestIterator, class DestAccessor, typename T > -inline void fillImage( vigra::triple<DestIterator,DestIterator,DestAccessor> const& src, - const T& fillVal ) -{ - fillImage(src.first,src.second,src.third,fillVal); -} - -} // namespace basebmp - -#endif /* INCLUDED_BASEBMP_INC_FILLIMAGE_HXX */ - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/basebmp/inc/scaleimage.hxx b/basebmp/inc/scaleimage.hxx deleted file mode 100644 index f3975e9e835e..000000000000 --- a/basebmp/inc/scaleimage.hxx +++ /dev/null @@ -1,177 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/* - * This file is part of the LibreOffice project. - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - * - * This file incorporates work covered by the following license notice: - * - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed - * with this work for additional information regarding copyright - * ownership. The ASF licenses this file to you under the Apache - * License, Version 2.0 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.apache.org/licenses/LICENSE-2.0 . - */ - -#ifndef INCLUDED_BASEBMP_INC_SCALEIMAGE_HXX -#define INCLUDED_BASEBMP_INC_SCALEIMAGE_HXX - -#include <osl/diagnose.h> - -#include <vigra/tuple.hxx> -#include <vigra/copyimage.hxx> -#include <vigra/basicimage.hxx> -#include <vigra/iteratortraits.hxx> - -namespace basebmp -{ - -template< class SourceIter, class SourceAcc, - class DestIter, class DestAcc > -void scaleLine( SourceIter s_begin, - SourceIter s_end, - SourceAcc s_acc, - DestIter d_begin, - DestIter d_end, - DestAcc d_acc ) -{ - const int src_width = s_end - s_begin; - const int dest_width = d_end - d_begin; - - OSL_ASSERT( src_width > 0 && dest_width > 0 ); - - if( src_width >= dest_width ) - { - // shrink - int rem = 0; - while( s_begin != s_end ) - { - if( rem >= 0 ) - { - d_acc.set( s_acc(s_begin), d_begin ); - - rem -= src_width; - ++d_begin; - } - - rem += dest_width; - ++s_begin; - } - } - else - { - // enlarge - int rem = -dest_width; - while( d_begin != d_end ) - { - if( rem >= 0 ) - { - rem -= dest_width; - ++s_begin; - } - - d_acc.set( s_acc(s_begin), d_begin ); - - rem += src_width; - ++d_begin; - } - } -} - -/** Scale an image using zero order interpolation (pixel replication) - - Source and destination range must be at least one pixel wide and - high. - - @param s_begin - Start iterator for source image - - @param s_end - End iterator for source image - - @param s_acc - Source accessor - - @param d_begin - Start iterator for destination image - - @param d_end - End iterator for destination image - - @param d_acc - Destination accessor - */ -template< class SourceIter, class SourceAcc, - class DestIter, class DestAcc > -void scaleImage( SourceIter s_begin, - SourceIter s_end, - SourceAcc s_acc, - DestIter d_begin, - DestIter d_end, - DestAcc d_acc ) -{ - const int src_width ( s_end.x - s_begin.x ); - const int src_height( s_end.y - s_begin.y ); - - const int dest_width ( d_end.x - d_begin.x ); - const int dest_height( d_end.y - d_begin.y ); - - if ( src_width == dest_width && - src_height == dest_height ) - { - // no scaling involved, can simply copy - vigra::copyImage( s_begin, s_end, s_acc, - d_begin, d_acc ); - return; - } - - typedef vigra::BasicImage<typename SourceAcc::value_type> TmpImage; - typedef typename TmpImage::traverser TmpImageIter; - - TmpImage tmp_image(src_width, - dest_height); - TmpImageIter t_begin = tmp_image.upperLeft(); - - // scale in y direction - for( int x=0; x<src_width; ++x, ++s_begin.x, ++t_begin.x ) - { - typename SourceIter::column_iterator s_cbegin = s_begin.columnIterator(); - typename TmpImageIter::column_iterator t_cbegin = t_begin.columnIterator(); - - scaleLine(s_cbegin, s_cbegin+src_height, s_acc, - t_cbegin, t_cbegin+dest_height, tmp_image.accessor()); - } - - t_begin = tmp_image.upperLeft(); - - // scale in x direction - for( int y=0; y<dest_height; ++y, ++d_begin.y, ++t_begin.y ) - { - typename DestIter::row_iterator d_rbegin = d_begin.rowIterator(); - typename TmpImageIter::row_iterator t_rbegin = t_begin.rowIterator(); - - scaleLine(t_rbegin, t_rbegin+src_width, tmp_image.accessor(), - d_rbegin, d_rbegin+dest_width, d_acc); - } -} - -/** Scale an image, range tuple version - */ -template< class SourceIter, class SourceAcc, - class DestIter, class DestAcc > -inline void scaleImage( vigra::triple<SourceIter,SourceIter,SourceAcc> const& src, - vigra::triple<DestIter,DestIter,DestAcc> const& dst ) -{ - scaleImage(src.first,src.second,src.third, - dst.first,dst.second,dst.third); -} - -} - -#endif /* INCLUDED_BASEBMP_INC_SCALEIMAGE_HXX */ - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/basebmp/source/bitmapdevice.cxx b/basebmp/source/bitmapdevice.cxx index c0afe86d5f96..ce7b35afe128 100644 --- a/basebmp/source/bitmapdevice.cxx +++ b/basebmp/source/bitmapdevice.cxx @@ -42,8 +42,7 @@ #include <rgb24pixelformats.hxx> #include <basebmp/scanlineformats.hxx> -#include <fillimage.hxx> -#include <scaleimage.hxx> +#include <vigra/copyimage.hxx> #include <genericcolorimageaccessor.hxx> #include <tools.hxx> @@ -242,13 +241,8 @@ namespace std::shared_ptr<BitmapRenderer> pSrcBmp( getCompatibleBitmap(rSrcBitmap) ); OSL_ASSERT( pSrcBmp ); - scaleImage( - srcIterRange(pSrcBmp->maBegin, - pSrcBmp->maRawAccessor, - aRect), - destIterRange(begin, - acc, - aRect)); + vigra::copyImage( pSrcBmp->maBegin, pSrcBmp->maBegin + bottomRight(aRect), pSrcBmp->maRawAccessor, + begin, acc ); } template< typename Iterator, typename Acc > static @@ -261,13 +255,8 @@ namespace GenericColorImageAccessor aSrcAcc( rSrcBitmap ); - scaleImage( - srcIterRange(vigra::Diff2D(), - aSrcAcc, - aRect), - destIterRange(begin, - acc, - aRect)); + vigra::copyImage( vigra::Diff2D(), vigra::Diff2D() + bottomRight(aRect), aSrcAcc, + begin, acc ); } void implDrawBitmapDirect(const BitmapDeviceSharedPtr& rSrcBitmap) |