pods::...eFilter(3pm)

πŸ’… SDL::GFX::ImageFilter πŸ’…

Okay bestie, so this is the pods::...eFilter(3pm) page β€” it's the Perl docs for SDL::GFX::ImageFilter, aka the image filtering functions. Think of it as the corner of SDL where you poke at pixels and make them do stuff. Lowkey iconic. πŸŽ€


✨ NAME ✨

SDL::GFX::ImageFilter β€” image filtering functions. That's the whole vibe. πŸ¦‹


🌈 CATEGORY 🌈

TODO, GFX β€” yes bestie it's literally filed under both, no cap. The TODO is giving "we'll finish this later" energy and honestly? Relatable. 😭


πŸ’– METHODS πŸ’–

Alright, buckle up. There's a lot of these. Every single one is listed below with its exact signature, arg types, CODE call and OUTPUT, so you can copy-paste without me ruining a single character. Periodt. πŸ‘‘


🌸 MMX_detect

int gfx_image_MMX_detect()

CODE:

SDL_imageFilterMMXdetect();

🌸 MMX_off

void gfx_image_MMX_off()

CODE:

SDL_imageFilterMMXoff();

🌸 MMX_on

void gfx_image_MMX_on()

CODE:

SDL_imageFilterMMXon();

πŸ¦‹ add

int gfx_image_add(Src1, Src2, Dest, length)
  unsigned char *Src1
  unsigned char *Src2
  unsigned char *Dest
  int length

CODE:

RETVAL = SDL_imageFilterAdd(Src1, Src2, Dest, length);

OUTPUT: RETVAL

πŸ¦‹ mean

int gfx_image_mean(Src1, Src2, Dest, length)
  unsigned char *Src1
  unsigned char *Src2
  unsigned char *Dest
  int length

CODE:

RETVAL = SDL_imageFilterMean(Src1, Src2, Dest, length);

OUTPUT: RETVAL

πŸ¦‹ sub

int gfx_image_sub(Src1, Src2, Dest, length)
  unsigned char *Src1
  unsigned char *Src2
  unsigned char *Dest
  int length

CODE:

RETVAL = SDL_imageFilterSub(Src1, Src2, Dest, length);

OUTPUT: RETVAL

πŸ¦‹ abs_diff

int gfx_image_abs_diff(Src1, Src2, Dest, length)
  unsigned char *Src1
  unsigned char *Src2
  unsigned char *Dest
  int length

CODE:

RETVAL = SDL_imageFilterAbsDiff(Src1, Src2, Dest, length);

OUTPUT: RETVAL

πŸ¦‹ mult

int gfx_image_mult(Src1, Src2, Dest, length)
  unsigned char *Src1
  unsigned char *Src2
  unsigned char *Dest
  int length

CODE:

RETVAL = SDL_imageFilterMult(Src1, Src2, Dest, length);

OUTPUT: RETVAL

πŸ¦‹ mult_nor

int gfx_image_mult_nor(Src1, Src2, Dest, length)
  unsigned char *Src1
  unsigned char *Src2
  unsigned char *Dest
  int length

CODE:

RETVAL = SDL_imageFilterMultNor(Src1, Src2, Dest, length);

OUTPUT: RETVAL

πŸ¦‹ mult_div_by_2

int gfx_image_mult_div_by_2(Src1, Src2, Dest, length)
  unsigned char *Src1
  unsigned char *Src2
  unsigned char *Dest
  int length

CODE:

RETVAL = SDL_imageFilterMultDivby2(Src1, Src2, Dest, length);

OUTPUT: RETVAL

πŸ¦‹ mult_div_by_4

int gfx_image_mult_div_by_4(Src1, Src2, Dest, length)
  unsigned char *Src1
  unsigned char *Src2
  unsigned char *Dest
  int length

CODE:

RETVAL = SDL_imageFilterMultDivby4(Src1, Src2, Dest, length);

OUTPUT: RETVAL

πŸ¦‹ bit_and

int gfx_image_bit_and(Src1, Src2, Dest, length)
  unsigned char *Src1
  unsigned char *Src2
  unsigned char *Dest
  int length

CODE:

RETVAL = SDL_imageFilterBitAnd(Src1, Src2, Dest, length);

OUTPUT: RETVAL

πŸ¦‹ bit_or

int gfx_image_bit_or(Src1, Src2, Dest, length)
  unsigned char *Src1
  unsigned char *Src2
  unsigned char *Dest
  int length

CODE:

RETVAL = SDL_imageFilterBitOr(Src1, Src2, Dest, length);

OUTPUT: RETVAL

πŸ¦‹ div

int gfx_image_div(Src1, Src2, Dest, length)
  unsigned char *Src1
  unsigned char *Src2
  unsigned char *Dest
  int length

CODE:

RETVAL = SDL_imageFilterDiv(Src1, Src2, Dest, length);

OUTPUT: RETVAL

πŸ’œ bit_negation

Bestie notice this one only takes one source β€” Src1 and Dest, that's it. It's giving solo main character energy.

int gfx_image_bit_negation(Src1, Dest, length)
  unsigned char *Src1
  unsigned char *Dest
  int length

CODE:

RETVAL = SDL_imageFilterBitNegation(Src1, Dest, length);

OUTPUT: RETVAL

πŸ’œ add_byte

int gfx_image_add_byte(Src1, Dest, length, C)
  unsigned char *Src1
  unsigned char *Dest
  int length
  unsigned char C

CODE:

RETVAL = SDL_imageFilterAddByte(Src1, Dest, length, C);

OUTPUT: RETVAL

πŸ’œ add_uint

Careful β€” C here is an unsigned int, not a byte. Different C, different vibe. πŸ‘€

int gfx_image_add_uint(Src1, Dest, length, C)
  unsigned char *Src1
  unsigned char *Dest
  int length
  unsigned int C

CODE:

RETVAL = SDL_imageFilterAddUint(Src1, Dest, length, C);

OUTPUT: RETVAL

πŸ’œ add_byte_to_half

int gfx_image_add_byte_to_half(Src1, Dest, length, C)
  unsigned char *Src1
  unsigned char *Dest
  int length
  unsigned char C

CODE:

RETVAL = SDL_imageFilterAddByteToHalf(Src1, Dest, length, C);

OUTPUT: RETVAL

πŸ’œ sub_byte

int gfx_image_sub_byte(Src1, Dest, length, C)
  unsigned char *Src1
  unsigned char *Dest
  int length
  unsigned char C

CODE:

RETVAL = SDL_imageFilterSubByte(Src1, Dest, length, C);

OUTPUT: RETVAL

πŸ’œ sub_uint

int gfx_image_sub_uint(Src1, Dest, length, C)
  unsigned char *Src1
  unsigned char *Dest
  int length
  unsigned int C

CODE:

RETVAL = SDL_imageFilterSubUint(Src1, Dest, length, C);

OUTPUT: RETVAL

πŸŽ€ shift_right

int gfx_image_shift_right(Src1, Dest, length, N)
  unsigned char *Src1
  unsigned char *Dest
  int length
  unsigned char N

CODE:

RETVAL = SDL_imageFilterShiftRight(Src1, Dest, length, N);

OUTPUT: RETVAL

πŸŽ€ shift_right_uint

int gfx_image_shift_right_uint(Src1, Dest, length, N)
  unsigned char *Src1
  unsigned char *Dest
  int length
  unsigned char N

CODE:

RETVAL = SDL_imageFilterShiftRightUint(Src1, Dest, length, N);

OUTPUT: RETVAL

πŸŽ€ mult_by_byte

int gfx_image_mult_by_byte(Src1, Dest, length, C)
  unsigned char *Src1
  unsigned char *Dest
  int length
  unsigned char C

CODE:

RETVAL = SDL_imageFilterMultByByte(Src1, Dest, length, C);

OUTPUT: RETVAL

πŸŽ€ shift_right_and_mult_by_byte

Two extra args on this one, bestie β€” N and C, both unsigned char. Don't forget either, fr fr.

int gfx_image_shift_right_and_mult_by_byte(Src1, Dest, length, N, C)
  unsigned char *Src1
  unsigned char *Dest
  int length
  unsigned char N
  unsigned char C

CODE:

RETVAL = SDL_imageFilterShiftRightAndMultByByte(Src1, Dest, length, N, C);

OUTPUT: RETVAL

πŸŽ€ shift_left_byte

int gfx_image_shift_left_byte(Src1, Dest, length, N)
  unsigned char *Src1
  unsigned char *Dest
  int length
  unsigned char N

CODE:

RETVAL = SDL_imageFilterShiftLeftByte(Src1, Dest, length, N);

OUTPUT: RETVAL

πŸŽ€ shift_left_uint

int gfx_image_shift_left_uint(Src1, Dest, length, N)
  unsigned char *Src1
  unsigned char *Dest
  int length
  unsigned char N

CODE:

RETVAL = SDL_imageFilterShiftLeftUint(Src1, Dest, length, N);

OUTPUT: RETVAL

πŸŽ€ shift_left

int gfx_image_shift_left(Src1, Dest, length, N)
  unsigned char *Src1
  unsigned char *Dest
  int length
  unsigned char N

CODE:

RETVAL = SDL_imageFilterShiftLeft(Src1, Dest, length, N);

OUTPUT: RETVAL

πŸ”₯ binarize_using_threshold

T is your threshold, and it's an unsigned char. That's the whole arg list, no notes. πŸ’…

int gfx_image_binarize_using_threshold(Src1, Dest, length, T)
  unsigned char *Src1
  unsigned char *Dest
  int length
  unsigned char T

CODE:

RETVAL = SDL_imageFilterBinarizeUsingThreshold(Src1, Dest, length, T);

OUTPUT: RETVAL

πŸ”₯ clip_to_range

Two thresholds this time β€” Tmin and Tmax, both unsigned char. Yes bestie, min and max. 🌈

int gfx_image_clip_to_range(Src1, Dest, length, Tmin, Tmax)
  unsigned char *Src1
  unsigned char *Dest
  int length
  unsigned char Tmin
  unsigned char Tmax

CODE:

RETVAL = SDL_imageFilterClipToRange(Src1, Dest, length, Tmin, Tmax);

OUTPUT: RETVAL

πŸ”₯ normalize_linear

Okay so this one's the odd one out β€” Cmin, Cmax, Nmin, Nmax are all plain int, NOT unsigned char. The way that would trip you up if you weren't paying attention 😭 four ints, bestie.

int gfx_image_normalize_linear(Src1, Dest, length, Cmin, Cmax, Nmin, Nmax)
  unsigned char *Src1
  unsigned char *Dest
  int length
  int Cmin
  int Cmax
  int Nmin
  int Nmax

CODE:

RETVAL = SDL_imageFilterNormalizeLinear(Src1, Dest, length, Cmin, Cmax, Nmin, Nmax);

OUTPUT: RETVAL

🧚 convolve_kernel_3x3_divide

Heads up: the convolve crew switches things up. No length here β€” you get rows and columns instead, plus a Sint16 *Kernel and an unsigned char Divisor. 🌸

int gfx_image_convolve_kernel_3x3_divide(Src, Dest, rows, columns, Kernel, Divisor)
  unsigned char *Src
  unsigned char *Dest
  int rows
  int columns
  Sint16 *Kernel
  unsigned char Divisor

CODE:

RETVAL = SDL_imageFilterConvolveKernel3x3Divide(Src, Dest, rows, columns, Kernel, Divisor);

OUTPUT: RETVAL

🧚 convolve_kernel_5x5_divide

int gfx_image_convolve_kernel_5x5_divide(Src, Dest, rows, columns, Kernel, Divisor)
  unsigned char *Src
  unsigned char *Dest
  int rows
  int columns
  Sint16 *Kernel
  unsigned char Divisor

CODE:

RETVAL = SDL_imageFilterConvolveKernel5x5Divide(Src, Dest, rows, columns, Kernel, Divisor);

OUTPUT: RETVAL

🧚 convolve_kernel_7x7_divide

int gfx_image_convolve_kernel_7x7_divide(Src, Dest, rows, columns, Kernel, Divisor)
  unsigned char *Src
  unsigned char *Dest
  int rows
  int columns
  Sint16 *Kernel
  unsigned char Divisor

CODE:

RETVAL = SDL_imageFilterConvolveKernel7x7Divide(Src, Dest, rows, columns, Kernel, Divisor);

OUTPUT: RETVAL

🧚 convolve_kernel_9x9_divide

int gfx_image_convolve_kernel_9x9_divide(Src, Dest, rows, columns, Kernel, Divisor)
  unsigned char *Src
  unsigned char *Dest
  int rows
  int columns
  Sint16 *Kernel
  unsigned char Divisor

CODE:

RETVAL = SDL_imageFilterConvolveKernel9x9Divide(Src, Dest, rows, columns, Kernel, Divisor);

OUTPUT: RETVAL

⭐ convolve_kernel_3x3_shift_right

Same shape as above but the last arg is NRightShift instead of Divisor. Keep track bestie, they're all so similar and that's exactly how you typo at 2am. πŸ’€

int gfx_image_convolve_kernel_3x3_shift_right(Src, Dest, rows, columns, Kernel, NRightShift)
  unsigned char *Src
  unsigned char *Dest
  int rows
  int columns
  Sint16 *Kernel
  unsigned char NRightShift

CODE:

RETVAL = SDL_imageFilterConvolveKernel3x3ShiftRight(Src, Dest, rows, columns, Kernel, NRightShift);

OUTPUT: RETVAL

⭐ convolve_kernel_5x5_shift_right

int gfx_image_convolve_kernel_5x5_shift_right(Src, Dest, rows, columns, Kernel, NRightShift)
  unsigned char *Src
  unsigned char *Dest
  int rows
  int columns
  Sint16 *Kernel
  unsigned char NRightShift

CODE:

RETVAL = SDL_imageFilterConvolveKernel5x5ShiftRight(Src, Dest, rows, columns, Kernel, NRightShift);

OUTPUT: RETVAL

⭐ convolve_kernel_7x7_shift_right

int gfx_image_convolve_kernel_7x7_shift_right(Src, Dest, rows, columns, Kernel, NRightShift)
  unsigned char *Src
  unsigned char *Dest
  int rows
  int columns
  Sint16 *Kernel
  unsigned char NRightShift

CODE:

RETVAL = SDL_imageFilterConvolveKernel7x7ShiftRight(Src, Dest, rows, columns, Kernel, NRightShift);

OUTPUT: RETVAL

πŸŒ€ convolve_kernel_9x9_shift_right

okay so this is the 9x9 convolve but with a right-shift sprinkled on top β€” bestie it's giving "same vibe, extra little step" ✨

int gfx_image_convolve_kernel_9x9_shift_right(Src, Dest, rows, columns, Kernel, NRightShift)

the whole cast, no cap:

unsigned char *Src
unsigned char *Dest
int rows
int columns
Sint16 *Kernel
unsigned char NRightShift

then it does the thing:

RETVAL = SDL_imageFilterConvolveKernel9x9ShiftRight(Src, Dest, rows, columns, Kernel, NRightShift);

and hands you back:

RETVAL

🌈 sobel_x

the Sobel X detect β€” edge girlypop behavior fr fr πŸ’…

int gfx_image_sobel_x(Src, Dest, rows, columns)

the params:

unsigned char *Src
unsigned char *Dest
int rows
int columns

the call:

RETVAL = SDL_imageFilterSobelX(Src, Dest, rows, columns);

the output:

RETVAL

πŸ¦‹ sobel_x_shift_right

Sobel X but shifted right β€” literally the same icon energy with a little twist at the end πŸŽ€

int gfx_image_sobel_x_shift_right(Src, Dest, rows, columns, NRightShift)

the lineup:

unsigned char *Src
unsigned char *Dest
int rows
int columns
unsigned char NRightShift

the code:

RETVAL = SDL_imageFilterSobelXShiftRight(Src, Dest, rows, columns, NRightShift);

the output:

RETVAL

🧚 align_stack

no args, no drama, just vibes β€” it aligns the stack and dips 🌸

void gfx_image_align_stack()

the call:

SDL_imageFilterAlignStack();
notice there's no OUTPUT here β€” it's a void situation, so it's not handing anything back, iykyk πŸ’œ

🫢 restore_stack

the lil cleanup bestie β€” puts the stack back how it was found πŸŽ€

void gfx_image_restore_stack()

the call:

SDL_imageFilterRestoreStack();
again, void, so no OUTPUT β€” it's giving "I was just passing through" energy ✨

πŸ‘‘ AUTHORS πŸ‘‘

See "AUTHORS" in SDL.


and that's the whole page, bestie πŸ«ΆπŸ’– mwah πŸ’‹ β€” this lil manual page came from perl v5.42.3, dated 2026-08-19, and yes she ate 🌟

πŸ“¦ where this page comes from