SDL_surface.h

Función SDL_BlitSurface

Sintaxis

int SDL_BlitSurface(SDL_Surface*    src,
                    const SDL_Rect* srcrect,
                    SDL_Surface*    dst,
                    SDL_Rect*       dstrect)

Descripción

Usar esta función para realizar una copia de superficie rápida a una superficie de destino.

Parámetros

srv
La estructura SDL_Surface desde la que copiar.
srcrect
La estructura SDL_Rect que representa el rectángulo a copiar, o NULL para copiar la superficie completa.
dst
La estructura SDL_Surface objetivo de destino.
dstrect
La estructura SDL_Rect que representa el rectángulo al que se copia.

Valor de retorno

Devuelve 0 si la copia tiene éxito o un código de error negativo en caso de fallo. Llamar a SDL_GetError() para más información.

Observaciones

Se debería llamar a SDL_BlitSurface() a menos que sepa exactamente cómo funciona internamente el blitting de SDL y cómo usar las otras funciones de blit.

Esta es la función blit pública, y realiza la validación del rectángulo y el recorte antes de pasarlo a SDL_LowerBlit().

La función blit no debe ser llamada en una superficie bloqueada.

La anchura y la altura en srcrect determinan el tamaño del rectángulo copiado. En dstrect solo se utiliza la posición (la anchura y la altura se ignoran). Los blits con coordenadas dstrect negativas se recortarán correctamente.

Si srcrect es NULL, se copia toda la superficie. Si dstrect es NULL, la posición de destino (esquina superior izquierda) es (0, 0).

El rectángulo blit final se guarda en dstrect después de que se haya realizado todo el recorte (srcrect no se modifica).

La semántica de blit para superficies con y sin blending y colorkey se define como sigue:

RGBA->RGB:
     El modo de mezcla de la superficie fuente se establece en SDL_BLENDMODE_BLEND:
       alpha-blend (usando el canal alfa fuente y el alfa por superficie)
       SDL_SRCCOLORKEY ignorado.
     El modo de mezcla de la superficie fuente se establece en SDL_BLENDMODE_NONE:
       copia RGB.
       Si SDL_SRCCOLORKEY está activado, sólo copia los píxeles que coincidan con los valores
       RGB de la clave de color de origen, ignorando alfa en la comparación.

   RGB->RGBA:
     El modo de mezcla de la superficie fuente se establece en SDL_BLENDMODE_BLEND:
       alpha-blend (usando el alfa de la superficie fuente)
     Modo de mezcla de la superficie de origen a SDL_BLENDMODE_NONE:
       copia RGB, establece el alfa de destino al valor alfa por superficie de origen.
     ambos:
       si SDL_SRCCOLORKEY está establecido, sólo copia los píxeles que coincidan con la
       clave de color de origen.

   RGBA->RGBA:
     El modo de mezcla de la superficie fuente se establece en SDL_BLENDMODE_BLEND:
       alpha-blend (usando el canal alfa fuente y el alfa por superficie)
       SDL_SRCCOLORKEY ignorado.
     El modo de mezcla de la superficie fuente se establece en SDL_BLENDMODE_NONE:
       copia todo el RGBA al destino.
       si SDL_SRCCOLORKEY está definido, sólo copia los píxeles que coincidan con los 
       valores RGB de la clave de color de origen, ignorando alfa en la comparación.

   RGB->RGB:
     El modo de mezcla de la superficie fuente se establece en SDL_BLENDMODE_BLEND:
       alpha-blend (usando el alfa por superficie fuente)
     Modo de mezcla de la superficie fuente establecido a SDL_BLENDMODE_NONE:
       copia RGB.
     ambos:
       si SDL_SRCCOLORKEY está establecido, sólo copia los píxeles que coinciden con la
       clave de color fuente.

Ejemplo

SDL_BlitSurface(surface, &source_rect, temp_surface, NULL);