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

FreeBSD Manual Pages


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

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

       #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);

       Copies  a rectangular area of the source	bitmap to the destination bit-
       map.  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 respects
       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-bit-
       map 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

       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.

       masked_blit(3),	stretch_blit(3),  draw_sprite(3), gfx_capabilities(3),

Allegro				 version 4.4.3			       blit(3)


Want to link to this manual page? Use this URL:

home | help