Linux test merged.

This commit is contained in:
Vahagn Khachatryan
2013-02-22 23:48:24 +04:00
parent 16f2ae5f57
commit a730bde647
16 changed files with 747 additions and 269 deletions

View File

@@ -5,11 +5,11 @@
* contained herein except pursuant to a valid written license from Synopsys.
*/
#include "base/type-traits2.h"
//#include "ssetypes.h"
#include "type-traits2.h"
#include "ssetypes.h"
#include "transform.h"
#include "base/constants.h"
#include "constants.h"
namespace base
{
@@ -109,8 +109,6 @@ namespace base
pModifyFunLongToInt modifyLongToIntFunTbl[transformTypeMAX];
pModifyFunIntToInt modifyIntToIntFunTbl[transformTypeMAX];
pModifyFunLongToLong modifyLongToLongFunTbl[transformTypeMAX];
pModifyFunLongLongToLongLong modifyLongLongToLongLongFunTbl[transformTypeMAX];
pModifyRectFunLongToLong modifyRectLongToLongFunTbl[transformTypeMAX];
pModifyRectFunDblToDbl modifyRectDblToDblFunTbl[transformTypeMAX];
pModifyRectFunIntToInt modifyRectIntToIntFunTbl[transformTypeMAX];
@@ -136,7 +134,7 @@ namespace base
return std::tr1::is_floating_point<oC>::value ?
pod::point<oC>((oC)tmp.X(),(oC)tmp.Y())
:
pod::point<oC>((oC)base::setSaturated<oC>(tmp.X()),(oC)base::setSaturated<oC>(tmp.Y()));
pod::point<oC>((oC)base::round(tmp.X()),(oC)base::round(tmp.Y()));
}
//
/// Modify a point using scale and offset transform.
@@ -149,7 +147,7 @@ namespace base
return std::tr1::is_floating_point<oC>::value ?
pod::point<oC>((oC)tmp.X(),(oC)tmp.Y())
:
pod::point<oC>((oC)base::setSaturated<oC>(tmp.X()),(oC)base::setSaturated<oC>(tmp.Y()));
pod::point<oC>((oC)base::round(tmp.X()),(oC)base::round(tmp.Y()));
}
//
/// Modify a point using a general transform.
@@ -162,7 +160,7 @@ namespace base
return std::tr1::is_floating_point<oC>::value ?
pod::point<oC>((oC)tmp.X(),(oC)tmp.Y())
:
pod::point<oC>((oC)base::setSaturated<oC>(tmp.X()),(oC)base::setSaturated<oC>(tmp.Y()));
pod::point<oC>((oC)base::round(tmp.X()),(oC)base::round(tmp.Y()));
}
template <class iC,class oC>
@@ -178,7 +176,7 @@ namespace base
return std::tr1::is_floating_point<oC>::value ?
pod::point<oC>( (oC)(d.getX()), (oC)(d.getY()))
:
pod::point<oC>( (oC)base::setSaturated<oC>(d.getX()), (oC)base::setSaturated<oC>(d.getY()));
pod::point<oC>( (oC)base::round(d.getX()), (oC)base::round(d.getY()));
}
//
/// Modify a point using standard transform with magnification
@@ -196,7 +194,7 @@ namespace base
return std::tr1::is_floating_point<oC>::value ?
pod::point<oC>( (oC)(d.getX()), (oC)(d.getY()))
:
pod::point<oC>( (oC)base::setSaturated<oC>(d.getX()), (oC)base::setSaturated<oC>(d.getY()));
pod::point<oC>( (oC)base::round(d.getX()), (oC)base::round(d.getY()));
}
//
/// Modify a point using resolution transform.
@@ -205,38 +203,29 @@ namespace base
pod::point<oC> GXX_HIDDEN modifyResolution( const transform &T, pod::point<iC> xy )
{
pod::point<double> tmp = xy % T.getDiagonal();
if (T.getNext())
{
if ( std::tr1::is_double<oC>::value )
{
pod::point<double> tmp2((double)tmp.X(),
(double)tmp.Y());
if (T.getNext()) {
if (std::tr1::is_double<oC>::value) {
pod::point<double> tmp2 = pod::point<double>((double)tmp.X(),
(double)tmp.Y());
return T.getNext()->modifyDblToDbl(tmp2);
}
else if ( std::tr1::is_i64<oC>::value )
{
pod::point<i64> tmp2((i64)base::setSaturated<i64>(tmp.X()),
(i64)base::setSaturated<i64>(tmp.Y()));
} else if (std::tr1::is_long<oC>::value) {
pod::point<long> tmp2 = pod::point<long>((long)base::round(tmp.X()),
(long)base::round(tmp.Y()));
return T.getNext()->modifyLongToLong(tmp2);
}
else if ( std::tr1::is_int<oC>::value )
{
pod::point<i64> tmp2((i64)base::setSaturated<i64>(tmp.X()),
(i64)base::setSaturated<i64>(tmp.Y()));
} else if (std::tr1::is_int<oC>::value) {
pod::point<long> tmp2 = pod::point<long>((long)base::round(tmp.X()),
(long)base::round(tmp.Y()));
return T.getNext()->modifyLongToInt(tmp2);
}
else if ( std::tr1::is_short<oC>::value )
{
pod::point<i64> tmp2((i64)base::setSaturated<i64>(tmp.X()),
(i64)base::setSaturated<i64>(tmp.Y()));
} else if (std::tr1::is_short<oC>::value) {
pod::point<long> tmp2 = pod::point<long>((long)base::round(tmp.X()),
(long)base::round(tmp.Y()));
return T.getNext()->modifyLongToShort(tmp2);
}
}
else
} else
return std::tr1::is_floating_point<oC>::value ?
pod::point<oC>((oC)tmp.X(),(oC)tmp.Y()) :
pod::point<oC>((oC)base::setSaturated<oC>(tmp.X()),
(oC)base::setSaturated<oC>(tmp.Y()));
pod::point<oC>((oC)base::round(tmp.X()),
(oC)base::round(tmp.Y()));
// Should not get here or something is missing.
throw except::programError();
return pod::point<oC>((oC)0, (oC)0);
@@ -344,14 +333,14 @@ namespace base
modifyDblToShortFunTbl[ScaleTransformType] = &modifyScale<double,short>;
modifyDblToShortFunTbl[ResolutionTransformType] = &modifyResolution<double,short>;
//
// i64 to short
// long to short
//
modifyLongToShortFunTbl[ScaleOffsetTransformType] = &modifyScaleOffset<i64,short>;
modifyLongToShortFunTbl[GeneralTransformType] = &modifyGeneral<i64,short>;
modifyLongToShortFunTbl[StdTransformType] = &modifyStd<i64,short>;
modifyLongToShortFunTbl[StdTransformWithMagType] = &modifyStdMag<i64,short>;
modifyLongToShortFunTbl[ScaleTransformType] = &modifyScale<i64,short>;
modifyLongToShortFunTbl[ResolutionTransformType] = &modifyResolution<i64,short>;
modifyLongToShortFunTbl[ScaleOffsetTransformType] = &modifyScaleOffset<long,short>;
modifyLongToShortFunTbl[GeneralTransformType] = &modifyGeneral<long,short>;
modifyLongToShortFunTbl[StdTransformType] = &modifyStd<long,short>;
modifyLongToShortFunTbl[StdTransformWithMagType] = &modifyStdMag<long,short>;
modifyLongToShortFunTbl[ScaleTransformType] = &modifyScale<long,short>;
modifyLongToShortFunTbl[ResolutionTransformType] = &modifyResolution<long,short>;
//
// int to short
//
@@ -380,14 +369,14 @@ namespace base
modifyDblToDblFunTbl[ScaleTransformType] = &modifyScale<double,double>;
modifyDblToDblFunTbl[ResolutionTransformType] = &modifyResolution<double,double>;
//
// i64 to int
// long to int
//
modifyLongToIntFunTbl[ScaleOffsetTransformType] = &modifyScaleOffset<i64,int>;
modifyLongToIntFunTbl[GeneralTransformType] = &modifyGeneral<i64,int>;
modifyLongToIntFunTbl[StdTransformType] = &modifyStd<i64,int>;
modifyLongToIntFunTbl[StdTransformWithMagType] = &modifyStdMag<i64,int>;
modifyLongToIntFunTbl[ScaleTransformType] = &modifyScale<i64,int>;
modifyLongToIntFunTbl[ResolutionTransformType] = &modifyResolution<i64,int>;
modifyLongToIntFunTbl[ScaleOffsetTransformType] = &modifyScaleOffset<long,int>;
modifyLongToIntFunTbl[GeneralTransformType] = &modifyGeneral<long,int>;
modifyLongToIntFunTbl[StdTransformType] = &modifyStd<long,int>;
modifyLongToIntFunTbl[StdTransformWithMagType] = &modifyStdMag<long,int>;
modifyLongToIntFunTbl[ScaleTransformType] = &modifyScale<long,int>;
modifyLongToIntFunTbl[ResolutionTransformType] = &modifyResolution<long,int>;
//
// int to int
//
@@ -398,14 +387,14 @@ namespace base
modifyIntToIntFunTbl[ScaleTransformType] = &modifyScale<int,int>;
modifyIntToIntFunTbl[ResolutionTransformType] = &modifyResolution<int,int>;
//
// i64 to i64
// long to long
//
modifyLongToLongFunTbl[ScaleOffsetTransformType] = &modifyScaleOffset<i64,i64>;
modifyLongToLongFunTbl[GeneralTransformType] = &modifyGeneral<i64,i64>;
modifyLongToLongFunTbl[StdTransformType] = &modifyStd<i64,i64>;
modifyLongToLongFunTbl[StdTransformWithMagType] = &modifyStdMag<i64,i64>;
modifyLongToLongFunTbl[ScaleTransformType] = &modifyScale<i64,i64>;
modifyLongToLongFunTbl[ResolutionTransformType] = &modifyResolution<i64,i64>;
modifyLongToLongFunTbl[ScaleOffsetTransformType] = &modifyScaleOffset<long,long>;
modifyLongToLongFunTbl[GeneralTransformType] = &modifyGeneral<long,long>;
modifyLongToLongFunTbl[StdTransformType] = &modifyStd<long,long>;
modifyLongToLongFunTbl[StdTransformWithMagType] = &modifyStdMag<long,long>;
modifyLongToLongFunTbl[ScaleTransformType] = &modifyScale<long,long>;
modifyLongToLongFunTbl[ResolutionTransformType] = &modifyResolution<long,long>;
//
/// Init get inverse func table.
//
@@ -457,12 +446,12 @@ namespace base
//
// Initialize the rectangle modification function tables.
//
modifyRectLongToLongFunTbl[ScaleOffsetTransformType] = modifyScaleOffsetRect<i64,i64>;
modifyRectLongToLongFunTbl[GeneralTransformType] = modifyGeneralRect<i64,i64>;
modifyRectLongToLongFunTbl[StdTransformType] = modifyStdRect<i64,i64>;
modifyRectLongToLongFunTbl[StdTransformWithMagType] = modifyStdMagRect<i64,i64>;
modifyRectLongToLongFunTbl[ScaleTransformType] = modifyScaleRect<i64,i64>;
modifyRectLongToLongFunTbl[ResolutionTransformType] = modifyResolutionRect<i64,i64>;
modifyRectLongToLongFunTbl[ScaleOffsetTransformType] = modifyScaleOffsetRect<long,long>;
modifyRectLongToLongFunTbl[GeneralTransformType] = modifyGeneralRect<long,long>;
modifyRectLongToLongFunTbl[StdTransformType] = modifyStdRect<long,long>;
modifyRectLongToLongFunTbl[StdTransformWithMagType] = modifyStdMagRect<long,long>;
modifyRectLongToLongFunTbl[ScaleTransformType] = modifyScaleRect<long,long>;
modifyRectLongToLongFunTbl[ResolutionTransformType] = modifyResolutionRect<long,long>;
modifyRectDblToDblFunTbl[ScaleOffsetTransformType] = modifyScaleOffsetRect<double,double>;
modifyRectDblToDblFunTbl[GeneralTransformType] = modifyGeneralRect<double,double>;
@@ -1404,80 +1393,80 @@ std::ostream & operator << (std::ostream & os, const transform & t)
/*****************************************************************************
* Instantiate template with some arguments.
*/
template void transform::modify<i32,i16>( const pod::point<i32>&, pod::point<i16>& ) const;
template void transform::modify<i64,i16>( const pod::point<i64>&, pod::point<i16>& ) const;
template void transform::modify<dbl,i16>( const pod::point<dbl>&, pod::point<i16>& ) const;
template void transform::modify<int,short>( const pod::point<int>&, pod::point<short>& ) const;
template void transform::modify<long,short>( const pod::point<long>&, pod::point<short>& ) const;
template void transform::modify<double,short>( const pod::point<double>&, pod::point<short>& ) const;
template void transform::modify<i32,i32>( const pod::point<i32>&, pod::point<i32>& ) const;
template void transform::modify<i64,i32>( const pod::point<i64>&, pod::point<i32>& ) const;
template void transform::modify<dbl,i32>( const pod::point<dbl>&, pod::point<i32>& ) const;
template void transform::modify<int,int>( const pod::point<int>&, pod::point<int>& ) const;
template void transform::modify<long,int>( const pod::point<long>&, pod::point<int>& ) const;
template void transform::modify<double,int>( const pod::point<double>&, pod::point<int>& ) const;
template void transform::modify<i32,i64>( const pod::point<i32>&, pod::point<i64>& ) const;
template void transform::modify<i64,i64>( const pod::point<i64>&, pod::point<i64>& ) const;
template void transform::modify<dbl,i64>( const pod::point<dbl>&, pod::point<i64>& ) const;
template void transform::modify<int,long>( const pod::point<int>&, pod::point<long>& ) const;
template void transform::modify<long,long>( const pod::point<long>&, pod::point<long>& ) const;
template void transform::modify<double,long>( const pod::point<double>&, pod::point<long>& ) const;
template void transform::modify<i32,dbl>( const pod::point<i32>&, pod::point<dbl>& ) const;
template void transform::modify<i64,dbl>( const pod::point<i64>&, pod::point<dbl>& ) const;
template void transform::modify<dbl,dbl>( const pod::point<dbl>&, pod::point<dbl>& ) const;
template void transform::modify<int,double>( const pod::point<int>&, pod::point<double>& ) const;
template void transform::modify<long,double>( const pod::point<long>&, pod::point<double>& ) const;
template void transform::modify<double,double>( const pod::point<double>&, pod::point<double>& ) const;
template void transform::modify<i32,i16>( const pod::rectangle<i32>&, pod::rectangle<i16>& ) const;
template void transform::modify<i64,i16>( const pod::rectangle<i64>&, pod::rectangle<i16>& ) const;
template void transform::modify<dbl,i16>( const pod::rectangle<dbl>&, pod::rectangle<i16>& ) const;
template void transform::modify<int,short>( const pod::rectangle<int>&, pod::rectangle<short>& ) const;
template void transform::modify<long,short>( const pod::rectangle<long>&, pod::rectangle<short>& ) const;
template void transform::modify<double,short>( const pod::rectangle<double>&, pod::rectangle<short>& ) const;
template void transform::modify<i32,i32>( const pod::rectangle<i32>&, pod::rectangle<i32>& ) const;
template void transform::modify<i64,i32>( const pod::rectangle<i64>&, pod::rectangle<i32>& ) const;
template void transform::modify<dbl,i32>( const pod::rectangle<dbl>&, pod::rectangle<i32>& ) const;
template void transform::modify<int,int>( const pod::rectangle<int>&, pod::rectangle<int>& ) const;
template void transform::modify<long,int>( const pod::rectangle<long>&, pod::rectangle<int>& ) const;
template void transform::modify<double,int>( const pod::rectangle<double>&, pod::rectangle<int>& ) const;
template void transform::modify<i32,i64>( const pod::rectangle<i32>&, pod::rectangle<i64>& ) const;
template void transform::modify<i64,i64>( const pod::rectangle<i64>&, pod::rectangle<i64>& ) const;
template void transform::modify<dbl,i64>( const pod::rectangle<dbl>&, pod::rectangle<i64>& ) const;
template void transform::modify<int,long>( const pod::rectangle<int>&, pod::rectangle<long>& ) const;
template void transform::modify<long,long>( const pod::rectangle<long>&, pod::rectangle<long>& ) const;
template void transform::modify<double,long>( const pod::rectangle<double>&, pod::rectangle<long>& ) const;
template void transform::modify<i32,dbl>( const pod::rectangle<i32>&, pod::rectangle<dbl>& ) const;
template void transform::modify<i64,dbl>( const pod::rectangle<i64>&, pod::rectangle<dbl>& ) const;
template void transform::modify<dbl,dbl>( const pod::rectangle<dbl>&, pod::rectangle<dbl>& ) const;
template void transform::modify<int,double>( const pod::rectangle<int>&, pod::rectangle<double>& ) const;
template void transform::modify<long,double>( const pod::rectangle<long>&, pod::rectangle<double>& ) const;
template void transform::modify<double,double>( const pod::rectangle<double>&, pod::rectangle<double>& ) const;
template void transform::modifyBBox<i32,i16>( const pod::rectangle<i32>&, pod::rectangle<i16>& ) const;
template void transform::modifyBBox<i64,i16>( const pod::rectangle<i64>&, pod::rectangle<i16>& ) const;
template void transform::modifyBBox<dbl,i16>( const pod::rectangle<dbl>&, pod::rectangle<i16>& ) const;
template void transform::modifyBBox<int,short>( const pod::rectangle<int>&, pod::rectangle<short>& ) const;
template void transform::modifyBBox<long,short>( const pod::rectangle<long>&, pod::rectangle<short>& ) const;
template void transform::modifyBBox<double,short>( const pod::rectangle<double>&, pod::rectangle<short>& ) const;
template void transform::modifyBBox<i32,i32>( const pod::rectangle<i32>&, pod::rectangle<i32>& ) const;
template void transform::modifyBBox<i64,i32>( const pod::rectangle<i64>&, pod::rectangle<i32>& ) const;
template void transform::modifyBBox<dbl,i32>( const pod::rectangle<dbl>&, pod::rectangle<i32>& ) const;
template void transform::modifyBBox<int,int>( const pod::rectangle<int>&, pod::rectangle<int>& ) const;
template void transform::modifyBBox<long,int>( const pod::rectangle<long>&, pod::rectangle<int>& ) const;
template void transform::modifyBBox<double,int>( const pod::rectangle<double>&, pod::rectangle<int>& ) const;
template void transform::modifyBBox<i32,i64>( const pod::rectangle<i32>&, pod::rectangle<i64>& ) const;
template void transform::modifyBBox<i64,i64>( const pod::rectangle<i64>&, pod::rectangle<i64>& ) const;
template void transform::modifyBBox<dbl,i64>( const pod::rectangle<dbl>&, pod::rectangle<i64>& ) const;
template void transform::modifyBBox<int,long>( const pod::rectangle<int>&, pod::rectangle<long>& ) const;
template void transform::modifyBBox<long,long>( const pod::rectangle<long>&, pod::rectangle<long>& ) const;
template void transform::modifyBBox<double,long>( const pod::rectangle<double>&, pod::rectangle<long>& ) const;
template void transform::modifyBBox<i32,dbl>( const pod::rectangle<i32>&, pod::rectangle<dbl>& ) const;
template void transform::modifyBBox<i64,dbl>( const pod::rectangle<i64>&, pod::rectangle<dbl>& ) const;
template void transform::modifyBBox<dbl,dbl>( const pod::rectangle<dbl>&, pod::rectangle<dbl>& ) const;
template void transform::modifyBBox<int,double>( const pod::rectangle<int>&, pod::rectangle<double>& ) const;
template void transform::modifyBBox<long,double>( const pod::rectangle<long>&, pod::rectangle<double>& ) const;
template void transform::modifyBBox<double,double>( const pod::rectangle<double>&, pod::rectangle<double>& ) const;
#if 0
template void transform::modify<int64,i16>( const pod::point<int64>&, pod::point<i16>& ) const;
template void transform::modify<int64,i32>( const pod::point<int64>&, pod::point<i32>& ) const;
template void transform::modify<int64,i64>( const pod::point<int64>&, pod::point<i64>& ) const;
template void transform::modify<int64,dbl>( const pod::point<int64>&, pod::point<dbl>& ) const;
template void transform::modify<i32,int64>( const pod::point<i32>&, pod::point<int64>& ) const;
template void transform::modify<i64,int64>( const pod::point<i64>&, pod::point<int64>& ) const;
template void transform::modify<dbl,int64>( const pod::point<dbl>&, pod::point<int64>& ) const;
#if defined( _MSC_VER )
template void transform::modify<int64,short>( const pod::point<int64>&, pod::point<short>& ) const;
template void transform::modify<int64,int>( const pod::point<int64>&, pod::point<int>& ) const;
template void transform::modify<int64,long>( const pod::point<int64>&, pod::point<long>& ) const;
template void transform::modify<int64,double>( const pod::point<int64>&, pod::point<double>& ) const;
template void transform::modify<int,int64>( const pod::point<int>&, pod::point<int64>& ) const;
template void transform::modify<long,int64>( const pod::point<long>&, pod::point<int64>& ) const;
template void transform::modify<double,int64>( const pod::point<double>&, pod::point<int64>& ) const;
template void transform::modify<int64,int64>( const pod::point<int64>&, pod::point<int64>& ) const;
template void transform::modify<int64,i16>( const pod::rectangle<int64>&, pod::rectangle<i16>& ) const;
template void transform::modify<int64,i32>( const pod::rectangle<int64>&, pod::rectangle<i32>& ) const;
template void transform::modify<int64,i64>( const pod::rectangle<int64>&, pod::rectangle<i64>& ) const;
template void transform::modify<int64,dbl>( const pod::rectangle<int64>&, pod::rectangle<dbl>& ) const;
template void transform::modify<i32,int64>( const pod::rectangle<i32>&, pod::rectangle<int64>& ) const;
template void transform::modify<i64,int64>( const pod::rectangle<i64>&, pod::rectangle<int64>& ) const;
template void transform::modify<dbl,int64>( const pod::rectangle<dbl>&, pod::rectangle<int64>& ) const;
template void transform::modify<int64,short>( const pod::rectangle<int64>&, pod::rectangle<short>& ) const;
template void transform::modify<int64,int>( const pod::rectangle<int64>&, pod::rectangle<int>& ) const;
template void transform::modify<int64,long>( const pod::rectangle<int64>&, pod::rectangle<long>& ) const;
template void transform::modify<int64,double>( const pod::rectangle<int64>&, pod::rectangle<double>& ) const;
template void transform::modify<int,int64>( const pod::rectangle<int>&, pod::rectangle<int64>& ) const;
template void transform::modify<long,int64>( const pod::rectangle<long>&, pod::rectangle<int64>& ) const;
template void transform::modify<double,int64>( const pod::rectangle<double>&, pod::rectangle<int64>& ) const;
template void transform::modify<int64,int64>( const pod::rectangle<int64>&, pod::rectangle<int64>& ) const;
template void transform::modifyBBox<int64,i16>( const pod::rectangle<int64>&, pod::rectangle<i16>& ) const;
template void transform::modifyBBox<int64,i32>( const pod::rectangle<int64>&, pod::rectangle<i32>& ) const;
template void transform::modifyBBox<int64,i64>( const pod::rectangle<int64>&, pod::rectangle<i64>& ) const;
template void transform::modifyBBox<int64,dbl>( const pod::rectangle<int64>&, pod::rectangle<dbl>& ) const;
template void transform::modifyBBox<i32,int64>( const pod::rectangle<i32>&, pod::rectangle<int64>& ) const;
template void transform::modifyBBox<i64,int64>( const pod::rectangle<i64>&, pod::rectangle<int64>& ) const;
template void transform::modifyBBox<dbl,int64>( const pod::rectangle<dbl>&, pod::rectangle<int64>& ) const;
template void transform::modifyBBox<int64,short>( const pod::rectangle<int64>&, pod::rectangle<short>& ) const;
template void transform::modifyBBox<int64,int>( const pod::rectangle<int64>&, pod::rectangle<int>& ) const;
template void transform::modifyBBox<int64,long>( const pod::rectangle<int64>&, pod::rectangle<long>& ) const;
template void transform::modifyBBox<int64,double>( const pod::rectangle<int64>&, pod::rectangle<double>& ) const;
template void transform::modifyBBox<int,int64>( const pod::rectangle<int>&, pod::rectangle<int64>& ) const;
template void transform::modifyBBox<long,int64>( const pod::rectangle<long>&, pod::rectangle<int64>& ) const;
template void transform::modifyBBox<double,int64>( const pod::rectangle<double>&, pod::rectangle<int64>& ) const;
template void transform::modifyBBox<int64,int64>( const pod::rectangle<int64>&, pod::rectangle<int64>& ) const;
#endif