sdl_gfx_imagefilter

sdl_gfx_imagefilter.nim

1. MMX procedures work best if all data blocks are aligned on a 32 bytes boundary.

2. Data that is not within an 8 byte boundary is processed using the C routine.

3. Convolution routines do not have C routines at this time.

All routines return:
  • 0 OK
  • -1 Error (internal error, parameter error)

Procs

proc imageFilterMMXdetect*(): cint {...}{.cdecl, importc: "SDL_imageFilterMMXdetect",
                                     dynlib: SDL2_GFX_LIB.}
Detect MMX capability in CPU.
proc imageFilterMMXoff*() {...}{.cdecl, importc: "SDL_imageFilterMMXoff",
                            dynlib: SDL2_GFX_LIB.}
Force use of MMX off.
proc imageFilterMMXon*() {...}{.cdecl, importc: "SDL_imageFilterMMXon",
                           dynlib: SDL2_GFX_LIB.}
Turn possible use of MMX back on.
proc imageFilterAdd*(src1: ptr cuchar; src2: ptr cuchar; dest: ptr cuchar;
                     length: cuint): cint {...}{.cdecl,
    importc: "SDL_imageFilterAdd", dynlib: SDL2_GFX_LIB.}
imageFilterAdd: D = saturation255(S1 + S2)
proc imageFilterMean*(src1: ptr cuchar; src2: ptr cuchar; dest: ptr cuchar;
                      length: cuint): cint {...}{.cdecl,
    importc: "SDL_imageFilterMean", dynlib: SDL2_GFX_LIB.}
imageFilterMean: D = S1/2 + S2/2
proc imageFilterSub*(src1: ptr cuchar; src2: ptr cuchar; dest: ptr cuchar;
                     length: cuint): cint {...}{.cdecl,
    importc: "SDL_imageFilterSub", dynlib: SDL2_GFX_LIB.}
imageFilterSub: D = saturation0(S1 - S2)
proc imageFilterAbsDiff*(src1: ptr cuchar; src2: ptr cuchar; dest: ptr cuchar;
                         length: cuint): cint {...}{.cdecl,
    importc: "SDL_imageFilterAbsDiff", dynlib: SDL2_GFX_LIB.}
imageFilterAbsDiff: D = | S1 - S2 |
proc imageFilterMult*(src1: ptr cuchar; src2: ptr cuchar; dest: ptr cuchar;
                      length: cuint): cint {...}{.cdecl,
    importc: "SDL_imageFilterMult", dynlib: SDL2_GFX_LIB.}
imageFilterMult: D = saturation(S1 * S2)
proc imageFilterMultNor*(src1: ptr cuchar; src2: ptr cuchar; dest: ptr cuchar;
                         length: cuint): cint {...}{.cdecl,
    importc: "SDL_imageFilterMultNor", dynlib: SDL2_GFX_LIB.}
imageFilterMultNor: D = S1 * S2 (non-MMX)
proc imageFilterMultDivby2*(src1: ptr cuchar; src2: ptr cuchar;
                            dest: ptr cuchar; length: cuint): cint {...}{.cdecl,
    importc: "SDL_imageFilterMultDivby2", dynlib: SDL2_GFX_LIB.}
imageFilterMultDivby2: D = saturation255(S1/2 * S2)
proc imageFilterMultDivby4*(src1: ptr cuchar; src2: ptr cuchar;
                            dest: ptr cuchar; length: cuint): cint {...}{.cdecl,
    importc: "SDL_imageFilterMultDivby4", dynlib: SDL2_GFX_LIB.}
imageFilterMultDivby4: D = saturation255(S1/2 * S2/2)
proc imageFilterBitAnd*(src1: ptr cuchar; src2: ptr cuchar; dest: ptr cuchar;
                        length: cuint): cint {...}{.cdecl,
    importc: "SDL_imageFilterBitAnd", dynlib: SDL2_GFX_LIB.}
imageFilterBitAnd: D = S1 & S2
proc imageFilterBitOr*(src1: ptr cuchar; src2: ptr cuchar; dest: ptr cuchar;
                       length: cuint): cint {...}{.cdecl,
    importc: "SDL_imageFilterBitOr", dynlib: SDL2_GFX_LIB.}
imageFilterBitOr: D = S1 | S2
proc imageFilterDiv*(src1: ptr cuchar; src2: ptr cuchar; dest: ptr cuchar;
                     length: cuint): cint {...}{.cdecl,
    importc: "SDL_imageFilterDiv", dynlib: SDL2_GFX_LIB.}
imageFilterDiv: D = S1 / S2 (non-MMX)
proc imageFilterBitNegation*(src1: ptr cuchar; dest: ptr cuchar; length: cuint): cint {...}{.
    cdecl, importc: "SDL_imageFilterBitNegation", dynlib: SDL2_GFX_LIB.}
imageFilterBitNegation: D = !S
proc imageFilterAddByte*(src1: ptr cuchar; dest: ptr cuchar; length: cuint;
                         c: cuchar): cint {...}{.cdecl,
    importc: "SDL_imageFilterAddByte", dynlib: SDL2_GFX_LIB.}
imageFilterAddByte: D = saturation255(S + C)
proc imageFilterAdduint*(src1: ptr cuchar; dest: ptr cuchar; length: cuint;
                         c: cuint): cint {...}{.cdecl,
    importc: "SDL_imageFilterAdduint", dynlib: SDL2_GFX_LIB.}
imageFilterAdduint: D = saturation255(S + (uint)C)
proc imageFilterAddByteToHalf*(src1: ptr cuchar; dest: ptr cuchar;
                               length: cuint; c: cuchar): cint {...}{.cdecl,
    importc: "SDL_imageFilterAddByteToHalf", dynlib: SDL2_GFX_LIB.}
imageFilterAddByteToHalf: D = saturation255(S/2 + C)
proc imageFilterSubByte*(src1: ptr cuchar; dest: ptr cuchar; length: cuint;
                         c: cuchar): cint {...}{.cdecl,
    importc: "SDL_imageFilterSubByte", dynlib: SDL2_GFX_LIB.}
imageFilterSubByte: D = saturation0(S - C)
proc imageFilterSubuint*(src1: ptr cuchar; dest: ptr cuchar; length: cuint;
                         c: cuint): cint {...}{.cdecl,
    importc: "SDL_imageFilterSubuint", dynlib: SDL2_GFX_LIB.}
imageFilterSubuint: D = saturation0(S - (uint)C)
proc imageFilterShiftRight*(src1: ptr cuchar; dest: ptr cuchar; length: cuint;
                            n: cuchar): cint {...}{.cdecl,
    importc: "SDL_imageFilterShiftRight", dynlib: SDL2_GFX_LIB.}
imageFilterShiftRight: D = saturation0(S >> N)
proc imageFilterShiftRightuint*(src1: ptr cuchar; dest: ptr cuchar;
                                length: cuint; n: cuchar): cint {...}{.cdecl,
    importc: "SDL_imageFilterShiftRightuint", dynlib: SDL2_GFX_LIB.}
imageFilterShiftRightuint: D = saturation0((uint)S >> N)
proc imageFilterMultByByte*(src1: ptr cuchar; dest: ptr cuchar; length: cuint;
                            c: cuchar): cint {...}{.cdecl,
    importc: "SDL_imageFilterMultByByte", dynlib: SDL2_GFX_LIB.}
imageFilterMultByByte: D = saturation255(S * C)
proc imageFilterShiftRightAndMultByByte*(src1: ptr cuchar; dest: ptr cuchar;
    length: cuint; n: cuchar; c: cuchar): cint {...}{.cdecl,
    importc: "SDL_imageFilterShiftRightAndMultByByte", dynlib: SDL2_GFX_LIB.}
imageFilterShiftRightAndMultByByte: D = saturation255((S >> N) * C)
proc imageFilterShiftLeftByte*(src1: ptr cuchar; dest: ptr cuchar;
                               length: cuint; n: cuchar): cint {...}{.cdecl,
    importc: "SDL_imageFilterShiftLeftByte", dynlib: SDL2_GFX_LIB.}
imageFilterShiftLeftByte: D = (S << N)
proc imageFilterShiftLeftuint*(src1: ptr cuchar; dest: ptr cuchar;
                               length: cuint; n: cuchar): cint {...}{.cdecl,
    importc: "SDL_imageFilterShiftLeftuint", dynlib: SDL2_GFX_LIB.}
imageFilterShiftLeftuint: D = ((uint)S << N)
proc imageFilterShiftLeft*(src1: ptr cuchar; dest: ptr cuchar; length: cuint;
                           n: cuchar): cint {...}{.cdecl,
    importc: "SDL_imageFilterShiftLeft", dynlib: SDL2_GFX_LIB.}
imageFilterShiftLeft: D = saturation255(S << N)
proc imageFilterBinarizeUsingThreshold*(src1: ptr cuchar; dest: ptr cuchar;
                                        length: cuint; T: cuchar): cint {...}{.cdecl,
    importc: "SDL_imageFilterBinarizeUsingThreshold", dynlib: SDL2_GFX_LIB.}
imageFilterBinarizeUsingThreshold: D = S >= T ? 255:0
proc imageFilterClipToRange*(src1: ptr cuchar; dest: ptr cuchar; length: cuint;
                             Tmin: cuchar; Tmax: cuchar): cint {...}{.cdecl,
    importc: "SDL_imageFilterClipToRange", dynlib: SDL2_GFX_LIB.}
imageFilterClipToRange: D = (S >= Tmin) & (S <= Tmax) 255:0
proc imageFilterNormalizeLinear*(src: ptr cuchar; dest: ptr cuchar;
                                 length: cuint; cmin: cint; cmax: cint;
                                 nmin: cint; nmax: cint): cint {...}{.cdecl,
    importc: "SDL_imageFilterNormalizeLinear", dynlib: SDL2_GFX_LIB.}
imageFilterNormalizeLinear: D = saturation255((Nmax - Nmin)/(Cmax - Cmin)*(S - Cmin) + Nmin)