'\" t .\" Title: SDL_SetRowStretchCode .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 0.3.1 .\" Manual: Manual Pages .\" Source: SDL_stretch .\" Language: English .\" .TH "SDL_SETROWSTRETCHCOD" "3" "0\&.3\&.1" "SDL_stretch" "Manual Pages" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" SDL_SetRowStretchCode, SDL_PutRowStretchCode, SDL_RunRowStretchCode, SDL_StretchRow1, SDL_StretchRow2, SDL_StretchRow3, SDL_StretchRow4 \- (src/SDL_stretchcode\&.h) .SH "SYNOPSIS" .sp .ft B .nf #include .fi .ft .HP \w'unsigned\ char*\ SDL_SetRowStretchCode('u .BI "unsigned char* SDL_SetRowStretchCode(int\ src_w, int\ dst_w, int\ bpp);" .HP \w'unsigned\ char*\ SDL_PutRowStretchCode('u .BI "unsigned char* SDL_PutRowStretchCode(unsigned\ char*\ buffer, int\ buflen, int\ src_w, int\ dst_w, int\ bpp);" .HP \w'void\ SDL_RunRowStretchCode('u .BI "void SDL_RunRowStretchCode(unsigned\ char*\ buffer, unsigned\ char*\ src, unsigned\ char*\ dst);" .HP \w'void\ SDL_StretchRow1('u .BI "void SDL_StretchRow1(Uint8\ *src, int\ src_w, Uint8\ *dst, int\ dst_w);" .HP \w'void\ SDL_StretchRow2('u .BI "void SDL_StretchRow2(Uint16\ *src, int\ src_w, Uint16\ *dst, int\ dst_w);" .HP \w'void\ SDL_StretchRow3('u .BI "void SDL_StretchRow3(Uint8\ *src, int\ src_w, Uint8\ *dst, int\ dst_w);" .HP \w'void\ SDL_StretchRow4('u .BI "void SDL_StretchRow4(Uint32\ *src, int\ src_w, Uint32\ *dst, int\ dst_w);" .SH "DESCRIPTION" .PP 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 .PP 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\&. .PP .PP .PP If SDL_SetRowStretchCode fails, \fBthe SDL_StretchRow1 function\fR must be used instead\&. \fBThe SDL_StretchRow1 function\fR 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!)\&. .PP .PP .PP