'\" 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