AVIR
High-quality pro image resizing library
 All Classes Files Functions Variables Typedefs Macros
Classes | Macros | Functions
avir.h File Reference
#include <stdint.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>

Go to the source code of this file.

Classes

class  avir::CBuffer< T, capint >
 
class  avir::CDSPFIREQ
 
class  avir::CDSPFracFilterBankLin< fptype >
 
class  avir::CDSPPeakedCosineLPF
 
class  avir::CDSPWindowGenPeakedCosine
 
class  avir::CFltBuffer
 
class  avir::CImageResizer< fpclass >
 
class  avir::CImageResizerDithererDefINL< fptype >
 
class  avir::CImageResizerDithererErrdINL< fptype >
 
class  avir::CImageResizerFilterStep< fptype, fptypeatom >
 
class  avir::CImageResizerFilterStepINL< fptype, fptypeatom >
 
struct  avir::CImageResizerParams
 
struct  avir::CImageResizerParamsDef
 
struct  avir::CImageResizerParamsHigh
 
struct  avir::CImageResizerParamsLow
 
struct  avir::CImageResizerParamsLR
 
struct  avir::CImageResizerParamsULR
 
struct  avir::CImageResizerParamsUltra
 
class  avir::CImageResizerThreadPool
 
class  avir::CImageResizerVars
 
struct  avir::CImageResizerFilterStep< fptype, fptypeatom >::CResizePos
 
class  avir::CImageResizerFilterStep< fptype, fptypeatom >::CRPosBuf
 
class  avir::CImageResizerFilterStep< fptype, fptypeatom >::CRPosBufArray
 
class  avir::CSineGen
 
class  avir::CStructArray< T >
 
class  avir::CImageResizerThreadPool::CWorkload
 
class  avir::fpclass_def< afptype, afptypeatom, adith >
 

Macros

#define AVIR_NOCTOR(ClassName)
 
#define AVIR_PI   3.1415926535897932
 
#define AVIR_PId2   1.5707963267948966
 
#define AVIR_RESIZE_PART1
 
#define AVIR_RESIZE_PART1
 
#define AVIR_RESIZE_PART1nx
 
#define AVIR_RESIZE_PART1nx
 
#define AVIR_RESIZE_PART2
 
#define AVIR_RESIZE_PART2
 
#define AVIR_VERSION   "3.0"
 

Functions

template<class T1 , class T2 >
void avir::addArray (const T1 *ip, T2 *op, int l, const int ipinc=1, const int opinc=1)
 
template<class T >
void avir::calcFIRFilterResponse (const T *flt, int fltlen, const double th, double &re0, double &im0, const int fltlat=0)
 
template<class T >
avir::clamp (const T &Value, const T minv, const T maxv)
 
template<class T >
avir::convertLin2SRGB (const T s)
 
template<class T >
avir::convertSRGB2Lin (const T s)
 
template<class T1 , class T2 >
void avir::copyArray (const T1 *ip, T2 *op, int l, const int ipinc=1, const int opinc=1)
 
template<class T >
void avir::normalizeFIRFilter (T *const p, const int l, const double DCGain, const int pstep=1)
 
template<class T >
avir::pow24_sRGB (const T x)
 
template<class T >
avir::pow24i_sRGB (const T x)
 
template<class T1 , class T2 >
void avir::replicateArray (const T1 *const ip, const int ipl, T2 *op, int l, const int opinc)
 
template<class T >
avir::round (const T d)
 

Detailed Description

The "main" inclusion file with all required classes and functions.

This is the "main" inclusion file for the "AVIR" image resizer. This inclusion file contains implementation of the AVIR image resizing algorithm in its entirety. Also includes several classes and functions that can be useful elsewhere.

AVIR Copyright (c) 2015-2021 Aleksey Vaneev

Macro Definition Documentation

#define AVIR_NOCTOR (   ClassName)
Value:
private: \
ClassName( const ClassName& ) { } \
ClassName& operator = ( const ClassName& ) { return( *this ); }

A special macro that defines empty copy-constructor and copy operator with the "private:" prefix. This macro should be used in classes that cannot be copied in a standard C++ way.

#define AVIR_PI   3.1415926535897932

The macro equals to "pi" constant, fills 53-bit floating point mantissa. Undefined at the end of file.

#define AVIR_PId2   1.5707963267948966

The macro equals to "pi divided by 2" constant, fills 53-bit floating point mantissa. Undefined at the end of file.

#define AVIR_RESIZE_PART1
Value:
while( rpos < rpose ) \
{ \
const fptype x = (fptype) rpos -> x; \
const fptype* const ftp = rpos -> ftp; \
const fptype* const ftp2 = ftp + IntFltLen; \
const fptype* Src = SrcLine + rpos -> SrcOffs; \
int i;
#define AVIR_RESIZE_PART1
Value:
while( rpos < rpose ) \
{ \
const fptype x = (fptype) rpos -> x; \
const fptype* const ftp = rpos -> ftp; \
const fptype* const ftp2 = ftp + IntFltLen0; \
const fptype* Src = SrcLine + rpos -> SrcOffs; \
const int IntFltLen = rpos -> fl; \
int i;
#define AVIR_RESIZE_PART1nx
Value:
while( rpos < rpose ) \
{ \
const fptype* const ftp = rpos -> ftp; \
const fptype* Src = SrcLine + rpos -> SrcOffs; \
int i;
#define AVIR_RESIZE_PART1nx
Value:
while( rpos < rpose ) \
{ \
const fptype* const ftp = rpos -> ftp; \
const fptype* Src = SrcLine + rpos -> SrcOffs; \
const int IntFltLen = rpos -> fl; \
int i;
#define AVIR_RESIZE_PART2
Value:
DstLine += DstLineIncr; \
rpos++; \
}
#define AVIR_RESIZE_PART2
Value:
DstLine += DstLineIncr; \
rpos++; \
}
#define AVIR_VERSION   "3.0"

The macro defines AVIR version string.