Provided by: allegro4-doc_4.4.2-4_all bug

NAME

       drawing_mode - Sets the graphics drawing mode. Allegro game programming library.

SYNOPSIS

       #include <allegro.h>

       void drawing_mode(int mode, BITMAP *pattern, int x_anchor, int y_anchor);

DESCRIPTION

       Sets  the  graphics  drawing mode. This only affects the geometric routines like putpixel,
       lines, rectangles, circles, polygons, floodfill, etc, not the text  output,  blitting,  or
       sprite drawing functions. The mode should be one of the following constants:

          DRAW_MODE_SOLID               - the default, solid color
                                          drawing
          DRAW_MODE_XOR                 - exclusive-or drawing
          DRAW_MODE_COPY_PATTERN        - multicolored pattern fill
          DRAW_MODE_SOLID_PATTERN       - single color pattern fill
          DRAW_MODE_MASKED_PATTERN      - masked pattern fill
          DRAW_MODE_TRANS               - translucent color blending

       In  DRAW_MODE_SOLID,  pixels  of  the bitmap being drawn onto are simply replaced by those
       produced by the drawing function.

       In DRAW_MODE_XOR, pixels are written to the bitmap with an exclusive-or  operation  rather
       than  a  simple  copy,  so drawing the same shape twice will erase it. Because it involves
       reading as well as writing the bitmap memory, xor drawing is a lot slower than the  normal
       replace mode.

       With  the  patterned modes, you provide a pattern bitmap which is tiled across the surface
       of the shape. Allegro stores a pointer to this bitmap rather than copying it, so you  must
       not  destroy the bitmap while it is still selected as the pattern. The width and height of
       the pattern must be powers of two, but they can be different, eg. a 64x16 pattern is fine,
       but  a  17x3  one  is  not.  The  pattern  is tiled in a grid starting at point (x_anchor,
       y_anchor). Normally you should just pass zero  for  these  values,  which  lets  you  draw
       several adjacent shapes and have the patterns meet up exactly along the shared edges. Zero
       alignment may look peculiar if you  are  moving  a  patterned  shape  around  the  screen,
       however,  because  the  shape  will  move  but  the pattern alignment will not, so in some
       situations you may wish to alter the anchor position.

       When you select DRAW_MODE_COPY_PATTERN, pixels are simply copied from the  pattern  bitmap
       onto  the destination bitmap. This allows the use of multicolored patterns, and means that
       the color you pass to the drawing routine is ignored. This is the fastest of the patterned
       modes.

       In  DRAW_MODE_SOLID_PATTERN,  each  pixel  in the pattern bitmap is compared with the mask
       color, which is zero in 256-color modes or bright pink for truecolor data (maximum red and
       blue,  zero  green). If the pattern pixel is solid, a pixel of the color you passed to the
       drawing routine is written to the destination bitmap, otherwise a  zero  is  written.  The
       pattern  is  thus  treated as a monochrome bitmask, which lets you use the same pattern to
       draw different shapes in different colors, but prevents the use of multicolored patterns.

       DRAW_MODE_MASKED_PATTERN is almost the same as  DRAW_MODE_SOLID_PATTERN,  but  the  masked
       pixels are skipped rather than being written as zeros, so the background shows through the
       gaps.

       In DRAW_MODE_TRANS, the global color_map table or truecolor blender functions are used  to
       overlay  pixels on top of the existing image. This must only be used after you have set up
       the color mapping table (for 256 color modes) or blender functions (for truecolor  modes).
       Because  it  involves reading as well as writing the bitmap memory, translucent drawing is
       very slow if you draw directly to video RAM, so wherever possible you should use a  memory
       bitmap instead.

SEE ALSO

       xor_mode(3alleg4),  solid_mode(3alleg4),  color_map(3alleg4),  set_trans_blender(3alleg4),
       exalpha(3alleg4), excolmap(3alleg4), exjoy(3alleg4), expat(3alleg4), extrans(3alleg4)