00001 #ifndef Impala_Core_Array_Scale_h
00002 #define Impala_Core_Array_Scale_h
00003
00004 #include "Core/Geometry/GeoIntType.h"
00005 #include "Core/Matrix/MatMakeScale2d.h"
00006 #include "Core/Array/Pattern/PatGeometricOp.h"
00007 #include "Core/Array/Element/E1Cast.h"
00008
00009 namespace Impala
00010 {
00011 namespace Core
00012 {
00013 namespace Array
00014 {
00015
00016
00017 template<class DstArrayT, class SrcArrayT>
00018 inline void
00019 Scale(DstArrayT*& dst, SrcArrayT* src, double sx, double sy,
00020 Geometry::GeoIntType gi, bool adjustSize = true)
00021 {
00022 Matrix::Mat* m = Matrix::MatMakeScale2d(sx, sy);
00023 typedef typename DstArrayT::ArithType AT;
00024 AT background = Element::E1Cast(0, AT());
00025 Pattern::PatGeometricOp(dst, src, m, true, gi, adjustSize, background);
00026 delete m;
00027 }
00028
00029 }
00030 }
00031 }
00032
00033 #endif