PUTIMAGE, PUTIMAGE_W
Graphics Subroutine: Transfers the image
stored in memory to the screen.
Module USE DFLIB
Syntax
- CALL PUTIMAGE (x, y, image,
action)
CALL PUTIMAGE_W (wx, wy, image, action)
- x, y
(Input) INTEGER(2). Viewport coordinates for upper-left corner
of the image when placed on the screen.
- wx, wy
(Input) REAL(8). Window coordinates for upper-left corner of the
image when placed on the screen.
- image
(Input) INTEGER(1). Array of single-byte integers. Stored image
buffer.
- action
(Input) INTEGER(2). Interaction of the stored image with the existing
screen image. One of the following symbolic constants (defined in DFLIB.F90
in the \DF98\INCLUDE subdirectory):
- $GAND - Forms a new screen display as the
logical AND of the stored image and the existing screen display. Points
that have the same color in both the existing screen image and the stored
image remain the same color, while points that have different colors are
joined by a logical AND.
- $GOR - Superimposes the stored image onto
the existing screen display. The resulting image is the logical OR of the
image.
- $GPRESET - Transfers the data point-by-point
onto the screen. Each point has the inverse of the color attribute it had
when it was taken from the screen by GETIMAGE, producing a negative
image.
- $GPSET - Transfers the data point-by-point
onto the screen. Each point has the exact color attribute it had when it
was taken from the screen by GETIMAGE.
- $GXOR - Causes points in the existing screen
image to be inverted wherever a point exists in the stored image. This
behavior is like that of a cursor. If you perform an exclusive OR of an
image with the background twice, the background is restored unchanged.
This allows you to move an object around without erasing the background.
The $GXOR constant is a special mode often used for animation.
- In addition, the following ternary
raster operation constants can be used (described in
the online documentation for the Win32 API BitBlt):
- $GSRCCOPY (same as $GPSET)
- $GSRCPAINT (same as $GOR)
- $GSRCAND (same as $GAND)
- $GSRCINVERT (same as $GXOR)
- $GSRCERASE
- $GNOTSRCCOPY (same as $GPRESET)
- $GNOTSRCERASE
- $GMERGECOPY
- $GMERGEPAINT
- $GPATCOPY
- $GPATPAINT
- $GPATINVERT
- $GDSTINVERT
- $GBLACKNESS
- $GWHITENESS
PUTIMAGE places the upper-left corner of
the image at the viewport coordinates (x,y). PUTIMAGE_W
places the upper-left corner of the image at the window coordinates (wx,
wy).
Compatibility
STANDARD GRAPHICS QUICKWIN GRAPHICS LIB
See Also: GETIMAGE, GRSTATUS,
IMAGESIZE
Example
! Build as a Graphics App.
USE DFLIB
INTEGER(1), ALLOCATABLE :: buffer(:)
INTEGER(2) status, x
INTEGER(4) imsize
status = SETCOLOR(INT2(4))
! draw a circle
status = ELLIPSE($GFILLINTERIOR,INT2(40),INT2(55), &
INT2(70),INT2(85))
imsize = IMAGESIZE (INT2(39),INT2(54),INT2(71), &
INT2(86))
ALLOCATE (buffer(imsize))
CALL GETIMAGE(INT2(39),INT2(54),INT2(71),INT2(86), &
buffer)
! copy a row of circles beneath it
DO x = 5 , 395, 35
CALL PUTIMAGE(x, INT2(90), buffer, $GPSET)
END DO
DEALLOCATE(buffer)
END