Defines | Typedefs
contrib/tbl/vipl/filter/vipl_filter_helper.h File Reference

Go to the source code of this file.

Defines

#define READY(x)   (x & Ready)
#define NOT_READY(x)   (!(x & Ready))
#define UNCHANGED(x)   (x & Unchanged)
#define CHANGED(x)   (!(x & Unchanged))
#define USER_OWNED(x)   (!(x & Filter_Owned))
#define FILTER_OWNED(x)   (x & Filter_Owned)
#define NOT(x)   (!x)
#define FILL(X1, Y1, X2, Y2, DST, FV)
#define MASK_CONV(X1, Y1, X2, Y2, DELTA_X, DELTA_Y, SRC, DST, KERN)
#define MASK_CONV_BOARDER(X1, Y1, X2, Y2, DELTA_X, DELTA_Y, SRC, DST, KERN)
#define NORMAL_INTERMEDIATE
#define HORIZ_CONV(X1, Y1, X2, Y2, DELTA_X, DELTA_Y, SRC, DST, KERN)
#define HORIZ_CONV_BOARDER(X1, Y1, X2, Y2, DELTA_X, DELTA_Y, SRC, DST, KERN)
#define VERTI_CONV(X1, Y1, X2, Y2, DELTA_X, DELTA_Y, SRC, DST, KERN)
#define VERTI_CONV_BOARDER(X1, Y1, X2, Y2, DELTA_X, DELTA_Y, SRC, DST, KERN)
#define IMB_LEFT(D, C)   ((D).curr_sec_start(X_Axis()) == (C).image_start(X_Axis()))
#define IMB_RIGHT(D, C)   ((D).curr_sec_end(X_Axis()) == (C).image_end(X_Axis()))
#define IMB_TOP(D, C)   ((D).curr_sec_end(Y_Axis()) == (C).image_end(Y_Axis()))
#define IMB_BOTTOM(D, C)   ((D).curr_sec_start(Y_Axis()) == (C).image_start(Y_Axis()))
#define CONVOL_PREAMBLE(CONTAINER, DESCRIPTOR)
#define CALC_BORDER(B, D, C)
#define IMB_L   (1)
#define IMB_T   (2)
#define IMB_R   (4)
#define IMB_B   (8)
#define CHECK_START_AND_END_FILL(CONTAINER)
#define CHECK_START_AND_END_OPERATION(CONTAINER)
#define DO_PREOP(OPERATION, DESCRIPTOR, CONTAINER, SRC, DST, KERN)
#define DO_POSTOP(OPERATION, DESCRIPTOR, CONTAINER, SRC, DST, KERN)

Typedefs

typedef unsigned int VIPL_FILTER_STATE

Define Documentation

#define CALC_BORDER (   B,
  D,
 
)
Value:
(B) = 0; \
  if (IMB_LEFT((D), (C))) (B) |= 1;\
  if (IMB_TOP((D), (C))) (B) |= 2;\
  if (IMB_RIGHT((D), (C))) (B) |= 4;\
  if (IMB_BOTTOM((D), (C))) (B) |= 8;

Definition at line 221 of file vipl_filter_helper.h.

#define CHANGED (   x)    (!(x & Unchanged))

Definition at line 13 of file vipl_filter_helper.h.

#define CHECK_START_AND_END_FILL (   CONTAINER)
Value:
if ((CONTAINER).image_start(Y_Axis()) > ycs[tmpi]){ ycs[tmpi] = (CONTAINER).image_start(Y_Axis()); }\
    if ((CONTAINER).image_start(X_Axis()) > xcs[tmpi]){ xcs[tmpi] = (CONTAINER).image_start(X_Axis()); }\
    if ((CONTAINER).image_start(Y_Axis()) > yce[tmpi]){ yce[tmpi] = (CONTAINER).image_start(Y_Axis()); }\
    if ((CONTAINER).image_start(X_Axis()) > xce[tmpi]){ xce[tmpi] = (CONTAINER).image_start(X_Axis()); }\
    if ((CONTAINER).image_end(Y_Axis()) < ycs[tmpi]){ ycs[tmpi] = (CONTAINER).image_end(Y_Axis()); }\
    if ((CONTAINER).image_end(X_Axis()) < xcs[tmpi]){ xcs[tmpi] = (CONTAINER).image_end(X_Axis()); }\
    if ((CONTAINER).image_end(Y_Axis()) < yce[tmpi]){ yce[tmpi] = (CONTAINER).image_end(Y_Axis()); }\
    if ((CONTAINER).image_end(X_Axis()) < xce[tmpi]){ xce[tmpi] = (CONTAINER).image_end(X_Axis()); }

Definition at line 236 of file vipl_filter_helper.h.

#define CHECK_START_AND_END_OPERATION (   CONTAINER)
Value:
if ((CONTAINER).image_start(Y_Axis()) + ibs > ycs[tmpi]){ ycs[tmpi] = (CONTAINER).image_start(Y_Axis()) +ibs; }\
    if ((CONTAINER).image_start(X_Axis()) +ibs> xcs[tmpi]){ xcs[tmpi] = (CONTAINER).image_start(X_Axis())+ibs; }\
    if ((CONTAINER).image_start(Y_Axis()) +ibs > yce[tmpi]){ yce[tmpi] = (CONTAINER).image_start(Y_Axis()) +ibs; }\
    if ((CONTAINER).image_start(X_Axis()) +ibs > xce[tmpi]){ xce[tmpi] = (CONTAINER).image_start(X_Axis()) +ibs; }\
    if ((CONTAINER).image_end(Y_Axis()) -ibs < ycs[tmpi]){ ycs[tmpi] = (CONTAINER).image_end(Y_Axis()) -ibs; }\
    if ((CONTAINER).image_end(X_Axis())-ibs < xcs[tmpi]){ xcs[tmpi] = (CONTAINER).image_end(X_Axis()) -ibs; }\
    if ((CONTAINER).image_end(Y_Axis())-ibs < yce[tmpi]){ yce[tmpi] = (CONTAINER).image_end(Y_Axis()) -ibs; }\
    if ((CONTAINER).image_end(X_Axis())-ibs < xce[tmpi]){ xce[tmpi] = (CONTAINER).image_end(X_Axis()) -ibs; }

Definition at line 245 of file vipl_filter_helper.h.

#define CONVOL_PREAMBLE (   CONTAINER,
  DESCRIPTOR 
)
Value:
const vipl_section_container<DataTypeOut> &C=(CONTAINER);\
  const vipl_section_descriptor<DataTypeOut> &D=(DESCRIPTOR);\
  int border = 0;\
  const int ibs = image_border_size();\
  const int d0 = ibs;\
  const int bdr = ibs;\
  const DataTypeOut fv = def_fill_value();\
  int xcs[4], ycs[4], xce[4], yce[4];\
  int do_fill[4]; \
  const int XS = D.curr_sec_start(X_Axis()), YS = D.curr_sec_start(Y_Axis());\
  const int XE = D.curr_sec_end(X_Axis()), YE = D.curr_sec_end(Y_Axis());\
  do_fill[0] = do_fill[1] = do_fill[2] = do_fill[3] = false

Definition at line 207 of file vipl_filter_helper.h.

#define DO_POSTOP (   OPERATION,
  DESCRIPTOR,
  CONTAINER,
  SRC,
  DST,
  KERN 
)

Definition at line 309 of file vipl_filter_helper.h.

#define DO_PREOP (   OPERATION,
  DESCRIPTOR,
  CONTAINER,
  SRC,
  DST,
  KERN 
)

Definition at line 260 of file vipl_filter_helper.h.

#define FILL (   X1,
  Y1,
  X2,
  Y2,
  DST,
  FV 
)
Value:
do {\
  for (int y = (Y1); y < (Y2); ++y) {\
    for (int x = (X1); x < (X2); ++x) {\
      SET_PIXEL((DST),x, y, (FV));\
    }\
  }\
} while (false)

Definition at line 30 of file vipl_filter_helper.h.

#define FILTER_OWNED (   x)    (x & Filter_Owned)

Definition at line 15 of file vipl_filter_helper.h.

#define HORIZ_CONV (   X1,
  Y1,
  X2,
  Y2,
  DELTA_X,
  DELTA_Y,
  SRC,
  DST,
  KERN 
)
Value:
do {\
  vcl_clock_t ct = clock();\
  KernType val;\
  for (int y = ((Y1) ); y < ((Y2) ); ++y) {\
    for (int x = ((X1) ); x < ((X2) ); ++x) {\
      val = 0.0;\
      for (int i = (KERN).kernel_start(0),j=i+x; i < (KERN).kernel_end(0); ++i) \
        val += ((KERN)(i) * FGET_PIXEL((SRC),j++, y));\
      FSET_PIXEL((DST),x, y, (CONVERT_TO_OUT(val)));\
    }\
  }\
  vcl_clock_t ct2= clock();\
} while (false)

Definition at line 78 of file vipl_filter_helper.h.

#define HORIZ_CONV_BOARDER (   X1,
  Y1,
  X2,
  Y2,
  DELTA_X,
  DELTA_Y,
  SRC,
  DST,
  KERN 
)
Value:
do {\
  vcl_clock_t ct = clock();\
  KernType val;\
  for (int y = ((Y1) ); y < ((Y2) ); ++y) {\
    for (int x = ((X1) ); x < ((X2) ); ++x) {\
      val = 0.0;\
      for (int i = (KERN).kernel_start(0),j=i+x; i < (KERN).kernel_end(0); ++i) \
        val += ((KERN)(i) * GET_PIXEL((SRC),j++, y));\
      SET_PIXEL((DST),x, y, (CONVERT_TO_OUT(val)));\
    }\
  }\
  vcl_clock_t ct2= clock();\
} while (false)

Definition at line 92 of file vipl_filter_helper.h.

#define IMB_B   (8)

Definition at line 232 of file vipl_filter_helper.h.

#define IMB_BOTTOM (   D,
 
)    ((D).curr_sec_start(Y_Axis()) == (C).image_start(Y_Axis()))

Definition at line 202 of file vipl_filter_helper.h.

#define IMB_L   (1)

Definition at line 229 of file vipl_filter_helper.h.

#define IMB_LEFT (   D,
 
)    ((D).curr_sec_start(X_Axis()) == (C).image_start(X_Axis()))

Definition at line 199 of file vipl_filter_helper.h.

#define IMB_R   (4)

Definition at line 231 of file vipl_filter_helper.h.

#define IMB_RIGHT (   D,
 
)    ((D).curr_sec_end(X_Axis()) == (C).image_end(X_Axis()))

Definition at line 200 of file vipl_filter_helper.h.

#define IMB_T   (2)

Definition at line 230 of file vipl_filter_helper.h.

#define IMB_TOP (   D,
 
)    ((D).curr_sec_end(Y_Axis()) == (C).image_end(Y_Axis()))

Definition at line 201 of file vipl_filter_helper.h.

#define MASK_CONV (   X1,
  Y1,
  X2,
  Y2,
  DELTA_X,
  DELTA_Y,
  SRC,
  DST,
  KERN 
)
Value:
do {\
  KernType val;\
  vcl_clock_t ct = clock(),ct1;\
  for (int y = (Y1); y < (Y2); ++y)\
    for (int x = (X1) ; x < (X2); ++x) {\
      val = 0.0;\
      int je = (KERN).y_end(); int ie = (KERN).x_end();\
      for (int j = (KERN).y_start(), jj=y+j; j < je; ++j) {\
        for (int i = (KERN).x_start(), ii=x+i; i < ie; ++i)\
        val += ((KERN) (i, j) * FGET_PIXEL((SRC), ii++, jj));\
        ++jj;\
        FSET_PIXEL((DST), x, y, (CONVERT_TO_OUT(val)));\
      }\
    }\
  ct1 = clock();\
} while (false)

Definition at line 38 of file vipl_filter_helper.h.

#define MASK_CONV_BOARDER (   X1,
  Y1,
  X2,
  Y2,
  DELTA_X,
  DELTA_Y,
  SRC,
  DST,
  KERN 
)
Value:
do {\
  KernType val;\
  vcl_clock_t ct = clock(),ct1;\
  for (int y = (Y1); y < (Y2); ++y)\
    for (int x = (X1) ; x < (X2); ++x) {\
      val = 0.0;\
      int je = (KERN).y_end(); int ie = (KERN).x_end();\
      for (int j = (KERN).y_start(), jj=y+j; j < je; ++j) {\
        for (int i = (KERN).x_start(), ii=x+i; i < ie; ++i)\
        val += ((KERN) (i, j) * GET_PIXEL((SRC), ii++, jj));\
        ++jj;\
        SET_PIXEL((DST), x, y, (CONVERT_TO_OUT(val)));\
      }\
    }\
  ct1 = clock();\
} while (false)

Definition at line 55 of file vipl_filter_helper.h.

#define NORMAL_INTERMEDIATE

Definition at line 73 of file vipl_filter_helper.h.

#define NOT (   x)    (!x)

Definition at line 16 of file vipl_filter_helper.h.

#define NOT_READY (   x)    (!(x & Ready))

Definition at line 11 of file vipl_filter_helper.h.

#define READY (   x)    (x & Ready)

Definition at line 10 of file vipl_filter_helper.h.

#define UNCHANGED (   x)    (x & Unchanged)

Definition at line 12 of file vipl_filter_helper.h.

#define USER_OWNED (   x)    (!(x & Filter_Owned))

Definition at line 14 of file vipl_filter_helper.h.

#define VERTI_CONV (   X1,
  Y1,
  X2,
  Y2,
  DELTA_X,
  DELTA_Y,
  SRC,
  DST,
  KERN 
)
Value:
do {\
  KernType val;\
  vcl_clock_t ct = clock();\
  for (int x = ((X1) ); x < ((X2) ); ++x) {\
    for (int y = ((Y1) ); y < ((Y2) ); ++y) {\
      val = 0;\
      for (int i = (KERN).kernel_start(0), j =y+i; i < (KERN).kernel_end(0); ++i)\
        val += ((KERN)(i) * FGET_PIXEL((SRC),x, j++));\
      FSET_PIXEL((DST),x, y, (CONVERT_TO_OUT(val)));\
    }\
  }\
  vcl_clock_t ct2= clock();\
} while (false)

Definition at line 106 of file vipl_filter_helper.h.

#define VERTI_CONV_BOARDER (   X1,
  Y1,
  X2,
  Y2,
  DELTA_X,
  DELTA_Y,
  SRC,
  DST,
  KERN 
)
Value:
do {\
  KernType val;\
  vcl_clock_t ct = clock();\
  for (int x = ((X1) ); x < ((X2) ); ++x) {\
    for (int y = ((Y1) ); y < ((Y2) ); ++y) {\
      val = 0;\
      for (int i = (KERN).kernel_start(0), j =y+i; i < (KERN).kernel_end(0); ++i)\
        val += ((KERN)(i) * GET_PIXEL((SRC),x, j++));\
      SET_PIXEL((DST),x, y, (CONVERT_TO_OUT(val)));\
    }\
  }\
  vcl_clock_t ct2= clock();\
} while (false)

Definition at line 120 of file vipl_filter_helper.h.


Typedef Documentation

typedef unsigned int VIPL_FILTER_STATE

Definition at line 4 of file vipl_filter_helper.h.