Name
SDL_SetRowStretchCode, SDL_PutRowStretchCode, SDL_RunRowStretchCode, SDL_StretchRow1, SDL_StretchRow2, SDL_StretchRow3, SDL_StretchRow4 — (/vol/8/src/cvs/workspace/SDL_stretch/SDL_stretchcode.h)
Synopsis
#include <SDL_stretch.h>
unsigned char* SDL_SetRowStretchCode( | , | |
| , | |
| ) ; | |
unsigned char* SDL_PutRowStretchCode( | , | |
| , | |
| , | |
| , | |
| ) ; | |
void SDL_RunRowStretchCode( | , | |
| , | |
| ) ; | |
void SDL_StretchRow1( | , | |
| , | |
| , | |
| ) ; | |
void SDL_StretchRow2( | , | |
| , | |
| , | |
| ) ; | |
void SDL_StretchRow3( | , | |
| , | |
| , | |
| ) ; | |
void SDL_StretchRow4( | , | |
| , | |
| , | |
| ) ; | |
Description
The SetRowStretchCode is a wrapper around PutRowStretchCode that
uses the Adress and Size of the shared SDL_TheRowStretchCode buffer.
The PutRowStretchCode will fill the given buffer with an assembler
stream that should be called with SDL_RunRowStretchCode. The
assembler stream is usually faster as all the scale decisions are
done in advance of the execution. This helps when a RunCode is
done multiple times with the same src_w/dst_w/bpp pair. All the
pixel-get and pixel-set calls are unrolled in that buffer. Therefore,
the buffer should be big enough - as a rule of thumb use a buffer
of size (src_w+dst_w)*5
If PutCode or SetCode fails, a NULL is returned and SDL_SetError.
Otherwise, the start adress of the machine code buffer is returned,
which is also the input argument of PutCode and RunCode.
If SDL_SetRowStretchCode fails, the SDL_StretchRow1 function
must be used instead.
The SDL_StretchRow1 function
and its cousins are singular routines that work in
a tight loop to scale a single row. The number specifies the
byte-width of each pixel (it is not a bit-width!).