1*48cdb363SAndrew Rist /************************************************************** 2cdf0e10cSrcweir * 3*48cdb363SAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 4*48cdb363SAndrew Rist * or more contributor license agreements. See the NOTICE file 5*48cdb363SAndrew Rist * distributed with this work for additional information 6*48cdb363SAndrew Rist * regarding copyright ownership. The ASF licenses this file 7*48cdb363SAndrew Rist * to you under the Apache License, Version 2.0 (the 8*48cdb363SAndrew Rist * "License"); you may not use this file except in compliance 9*48cdb363SAndrew Rist * with the License. You may obtain a copy of the License at 10*48cdb363SAndrew Rist * 11*48cdb363SAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12*48cdb363SAndrew Rist * 13*48cdb363SAndrew Rist * Unless required by applicable law or agreed to in writing, 14*48cdb363SAndrew Rist * software distributed under the License is distributed on an 15*48cdb363SAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*48cdb363SAndrew Rist * KIND, either express or implied. See the License for the 17*48cdb363SAndrew Rist * specific language governing permissions and limitations 18*48cdb363SAndrew Rist * under the License. 19*48cdb363SAndrew Rist * 20*48cdb363SAndrew Rist *************************************************************/ 21*48cdb363SAndrew Rist 22*48cdb363SAndrew Rist 23cdf0e10cSrcweir 24cdf0e10cSrcweir #ifndef INCLUDED_BASEBMP_TOOLS_HXX 25cdf0e10cSrcweir #define INCLUDED_BASEBMP_TOOLS_HXX 26cdf0e10cSrcweir 27cdf0e10cSrcweir #include <basegfx/range/b2irange.hxx> 28cdf0e10cSrcweir #include <basegfx/point/b2ipoint.hxx> 29cdf0e10cSrcweir #include <vigra/tuple.hxx> 30cdf0e10cSrcweir #include <vigra/diff2d.hxx> 31cdf0e10cSrcweir 32cdf0e10cSrcweir namespace basebmp 33cdf0e10cSrcweir { topLeft(const basegfx::B2IRange & rRange)34cdf0e10cSrcweir inline vigra::Diff2D topLeft( const basegfx::B2IRange& rRange ) 35cdf0e10cSrcweir { return vigra::Diff2D(rRange.getMinX(),rRange.getMinY()); } 36cdf0e10cSrcweir bottomRight(const basegfx::B2IRange & rRange)37cdf0e10cSrcweir inline vigra::Diff2D bottomRight( const basegfx::B2IRange& rRange ) 38cdf0e10cSrcweir { return vigra::Diff2D(rRange.getMaxX(),rRange.getMaxY()); } 39cdf0e10cSrcweir 40cdf0e10cSrcweir template< class Iterator, class Accessor > 41cdf0e10cSrcweir inline vigra::triple<Iterator,Iterator,Accessor> destIterRange(Iterator const & begin,Accessor const & accessor,const basegfx::B2IRange & rRange)42cdf0e10cSrcweir destIterRange(Iterator const& begin, 43cdf0e10cSrcweir Accessor const& accessor, 44cdf0e10cSrcweir const basegfx::B2IRange& rRange) 45cdf0e10cSrcweir { 46cdf0e10cSrcweir return vigra::triple<Iterator,Iterator,Accessor>( 47cdf0e10cSrcweir begin + topLeft(rRange), 48cdf0e10cSrcweir begin + bottomRight(rRange), 49cdf0e10cSrcweir accessor); 50cdf0e10cSrcweir } 51cdf0e10cSrcweir 52cdf0e10cSrcweir template< class Iterator, class Accessor > 53cdf0e10cSrcweir inline vigra::triple<Iterator,Iterator,Accessor> srcIterRange(Iterator const & begin,Accessor const & accessor,const basegfx::B2IRange & rRange)54cdf0e10cSrcweir srcIterRange(Iterator const& begin, 55cdf0e10cSrcweir Accessor const& accessor, 56cdf0e10cSrcweir const basegfx::B2IRange& rRange) 57cdf0e10cSrcweir { 58cdf0e10cSrcweir return vigra::triple<Iterator,Iterator,Accessor>( 59cdf0e10cSrcweir begin + topLeft(rRange), 60cdf0e10cSrcweir begin + bottomRight(rRange), 61cdf0e10cSrcweir accessor); 62cdf0e10cSrcweir } 63cdf0e10cSrcweir 64cdf0e10cSrcweir template< class Iterator, class Accessor > 65cdf0e10cSrcweir inline vigra::pair<Iterator,Accessor> srcIter(Iterator const & begin,Accessor const & accessor,const basegfx::B2IPoint & rPt)66cdf0e10cSrcweir srcIter(Iterator const& begin, 67cdf0e10cSrcweir Accessor const& accessor, 68cdf0e10cSrcweir const basegfx::B2IPoint& rPt) 69cdf0e10cSrcweir { 70cdf0e10cSrcweir return vigra::pair<Iterator,Accessor>( 71cdf0e10cSrcweir begin + vigra::Diff2D(rPt.getX(),rPt.getY()), 72cdf0e10cSrcweir accessor); 73cdf0e10cSrcweir } 74cdf0e10cSrcweir 75cdf0e10cSrcweir template< class Iterator, class Accessor > 76cdf0e10cSrcweir inline vigra::pair<Iterator,Accessor> destIter(Iterator const & begin,Accessor const & accessor,const basegfx::B2IPoint & rPt)77cdf0e10cSrcweir destIter(Iterator const& begin, 78cdf0e10cSrcweir Accessor const& accessor, 79cdf0e10cSrcweir const basegfx::B2IPoint& rPt) 80cdf0e10cSrcweir { 81cdf0e10cSrcweir return vigra::pair<Iterator,Accessor>( 82cdf0e10cSrcweir begin + vigra::Diff2D(rPt.getX(),rPt.getY()), 83cdf0e10cSrcweir accessor); 84cdf0e10cSrcweir } 85cdf0e10cSrcweir } 86cdf0e10cSrcweir 87cdf0e10cSrcweir #endif /* INCLUDED_BASEBMP_TOOLS_HXX */ 88