---
name: "SDL_SetRowStretchCode"
section: "3"
platform: "linux"
package: "libsdl-stretch-dev"
version: "0.3.1-12"
release: "Debian 10 (Buster)"
platforms: ["linux"]
url: "https://new.carta.tech/SDL_SetRowStretchCode"
---

# SDL\_SetRowStretchCode(3)

(src/SDL\_stretchcode.h)

## NAME

SDL\_SetRowStretchCode, SDL\_PutRowStretchCode, SDL\_RunRowStretchCode, SDL\_StretchRow1, SDL\_StretchRow2, SDL\_StretchRow3, SDL\_StretchRow4 - (src/SDL\_stretchcode.h)

## SYNOPSIS

```
 #include <SDL_stretch.h>
```

**unsigned char\* SDL\_SetRowStretchCode(int src\_w, int dst\_w, int bpp);**

**unsigned char\* SDL\_PutRowStretchCode(unsigned char\* buffer, int buflen, int src\_w, int dst\_w, int bpp);**

**void SDL\_RunRowStretchCode(unsigned char\* buffer, unsigned char\* src, unsigned char\* dst);**

**void SDL\_StretchRow1(Uint8 \*src, int src\_w, Uint8 \*dst, int dst\_w);**

**void SDL\_StretchRow2(Uint16 \*src, int src\_w, Uint16 \*dst, int dst\_w);**

**void SDL\_StretchRow3(Uint8 \*src, int src\_w, Uint8 \*dst, int dst\_w);**

**void SDL\_StretchRow4(Uint32 \*src, int src\_w, Uint32 \*dst, int dst\_w);**

## 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!).
