drawing_mode(3)                 Allegro manual                 drawing_mode(3)



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(3), solid_mode(3), color_map(3), set_trans_blender(3),
       exalpha(3), excolmap(3), exjoy(3), expat(3), extrans(3)



Allegro                          version 4.2.3                 drawing_mode(3)
