Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
blit(3)				Allegro	manual			       blit(3)

NAME
       blit  -	Copies	a rectangular area from	one bitmap to another. Allegro
       game programming	library.

SYNOPSIS
       #include	<allegro.h>

       void blit(BITMAP	*source, BITMAP	*dest, int source_x, int source_y, int
       dest_x, int dest_y, int width, int height);

DESCRIPTION
       Copies a	rectangular area of  the  source  bitmap  to  the  destination
       bitmap.	 The  source_x and source_y parameters are the top left	corner
       of the area to copy from	the source bitmap, and dest_x and  dest_y  are
       the  corresponding position in the destination bitmap. This routine re-
       spects the destination clipping rectangle, and it will also clip	if you
       try to blit from	areas outside the source bitmap. Example:

	  BITMAP *bmp;
	  ...
	  /* Blit src on the screen. */
	  blit(bmp, screen, 0, 0, 0, 0,	bmp->w,	bmp->h);

	  /* Now copy a	chunk to a corner, slightly outside. /*
	  blit(screen, screen, 100, 100, -10, -10, 25, 30);

       You can blit between any	parts of any two bitmaps, even if the two mem-
       ory areas overlap (ie. source and dest are the same,  or	 one  is  sub-
       bitmap  of the other). You should be aware, however, that a lot of SVGA
       cards don't provide separate read and write  banks,  which  means  that
       blitting	 from  one part	of the screen to another requires the use of a
       temporary bitmap	in memory, and is therefore extremely slow. As a  gen-
       eral rule you should avoid blitting from	the screen onto	itself in SVGA
       modes.

       In  mode-X,  on the other hand, blitting	from one part of the screen to
       another can be significantly faster than	blitting from memory onto  the
       screen,	as  long  as  the source and destination are correctly aligned
       with each other.	Copying	between	overlapping screen rectangles is slow,
       but if the areas	don't overlap, and if they have	the same plane	align-
       ment  (ie.  (source_x%4)	== (dest_x%4)),	the VGA	latch registers	can be
       used for	a very fast data transfer. To take advantage of	this, in mode-
       X it is often worth storing tile	graphics in a  hidden  area  of	 video
       memory  (using  a  large	 virtual screen), and blitting them from there
       onto the	visible	part of	the screen.

       If the GFX_HW_VRAM_BLIT bit in the gfx_capabilities flag	 is  set,  the
       current driver supports hardware	accelerated blits from one part	of the
       screen  onto  another. This is extremely	fast, so when this flag	is set
       it may be worth storing some of your more frequently used  graphics  in
       an offscreen portion of the video memory.

       Unlike most of the graphics routines, blit() allows the source and des-
       tination	 bitmaps to be of different color depths, so it	can be used to
       convert images from one pixel format to another.	In this	case, the  be-
       havior  is  affected  by	the COLORCONV_KEEP_TRANS and COLORCONV_DITHER*
       flags of	the current color conversion mode: see	set_color_conversion()
       for more	information.

SEE ALSO
       masked_blit(3),	stretch_blit(3),  draw_sprite(3), gfx_capabilities(3),
       set_color_conversion(3)

Allegro				 version 4.4.3			       blit(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=blit&sektion=3&manpath=FreeBSD+Ports+14.3.quarterly>

home | help