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 noOUTPUThere β it's avoidsituation, 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 noOUTPUTβ 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
- ubuntu stonking: libsdl-perl 2.548-6build1 Β· Artistic-1.0-Perl OR GPL-1.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms