Jump to content

GreBoxBoth: Difference between revisions

From EDM2
Created page with "GreBoxBoth draws and fills a rectangular box with one corner at the current (X,Y) position and the opposite corner at the specified (X,Y) position. The current (X,Y) position ..."
 
Ak120 (talk | contribs)
mNo edit summary
 
Line 1: Line 1:
GreBoxBoth draws and fills a rectangular box with one corner at the current (X,Y) position and the opposite corner at the specified (X,Y) position. The current (X,Y) position does not change. When this function occurs within an area or path definition, it generates a closed figure. GreBoxBoth must not occur within any other figure definition.  
GreBoxBoth draws and fills a rectangular box with one corner at the current (X,Y) position and the opposite corner at the specified (X,Y) position. The current (X,Y) position does not change. When this function occurs within an area or path definition, it generates a closed figure. GreBoxBoth must not occur within any other figure definition.


This function is supported by the graphics engine and can be hooked by the presentation driver.  
This function is supported by the graphics engine and can be hooked by the presentation driver.


;Simulation support: This function is simulated by a handling routine in the graphics engine.  
;Simulation support: This function is simulated by a handling routine in the graphics engine.


==Syntax==
==Syntax==
  GreBoxBoth(hdc, pBox, pInstance, lFunction);
  GreBoxBoth(hdc, pBox, pInstance, lFunction)
 
==Parameters==
==Parameters==
;hdc (HDC) - input  
;hdc (HDC) - input:Device context handle.
:Device context handle.  
;pBox (PBOXPARAMS) - input:Pointer to a [[BOXPARAMS]] structure
 
;pInstance (PVOID) - input:Pointer to instance data.
;pBox (PBOXPARAMS) - input  
;lFunction (ULONG) - input:High-order WORD=flags; low-order WORD=NGreBoxBoth.
:Pointer to a BOXPARAMS structure:
 
:;ptl
::POINTL structure defining the opposite corner of the box. If COM_TRANSFORM is not set, the function expects the point to be in screen coordinates.
::;x
:::X-coordinate of opposite corner
::;y
:::Y-coordinate of opposite corner
:;sizl.cx
::Horizontal length of the full axis of an ellipse. This field is used for rounding each corner.
:;sizl.cy
::Vertical length of the full axis of an ellipse. This field is used for rounding each corner.
 
;pInstance (PVOID) - input  
:Pointer to instance data.  
 
;lFunction (ULONG) - input  
:High-order WORD=flags; low-order WORD=NGreBoxBoth.  


==Return Code==
==Return Code==
;rc (LONG) - returns  
;rc (LONG) - returns:On completion, this function returns an integer (cHits) indicating, where appropriate, whether correlation hits were detected.
:On completion, this function returns an integer (cHits) indicating, where appropriate, whether correlation hits were detected.  
::GPI_OK : Successful
 
::GPI_HITS : Successful with correlation hit (returned by display drivers when the correlation flag is ON and a hit is detected)
:;GPI_OK  
::GPI_ERROR : Error
::Successful  
:;GPI_HITS  
::Successful with correlation hit (returned by display drivers when the correlation flag is ON and a hit is detected)  
:;GPI_ERROR  
::Error  


:Possible Errors Detected:   When an error is detected, the handling routine must call WinSetErrorInfo to post the condition. Error codes for conditions that the handling routine is expected to check include:  
;Possible Errors Detected:When an error is detected, the handling routine must call WinSetErrorInfo to post the condition. Error codes for conditions that the handling routine is expected to check include:
:*PMERR_ALREADY_IN_AREA  
*PMERR_ALREADY_IN_AREA
:*PMERR_BASE_ERROR  
*PMERR_BASE_ERROR
:*PMERR_BITMAP_NOT_SELECTED  
*PMERR_BITMAP_NOT_SELECTED
:*PMERR_COORDINATE_OVERFLOW  
*PMERR_COORDINATE_OVERFLOW
:*PMERR_DEV_FUNC_NOT_INSTALLED  
*PMERR_DEV_FUNC_NOT_INSTALLED
:*PMERR_EXCEEDS_MAX_SEG_LENGTH  
*PMERR_EXCEEDS_MAX_SEG_LENGTH
:*PMERR_HDC_BUSY  
*PMERR_HDC_BUSY
:*PMERR_HRGN_BUSY  
*PMERR_HRGN_BUSY
:*PMERR_HUGE_FONTS_NOT_SUPPORTED  
*PMERR_HUGE_FONTS_NOT_SUPPORTED
:*PMERR_INSUFFICIENT_MEMORY  
*PMERR_INSUFFICIENT_MEMORY
:*PMERR_INV_AREA_CONTROL  
*PMERR_INV_AREA_CONTROL
:*PMERR_INV_BACKGROUND_COL_ATTR  
*PMERR_INV_BACKGROUND_COL_ATTR
:*PMERR_INV_BACKGROUND_MIX_ATTR  
*PMERR_INV_BACKGROUND_MIX_ATTR
:*PMERR_INV_BOX_ROUNDING_PARM  
*PMERR_INV_BOX_ROUNDING_PARM
:*PMERR_INV_CHAR_DIRECTION_ATTR  
*PMERR_INV_CHAR_DIRECTION_ATTR
:*PMERR_INV_CHAR_MODE_ATTR  
*PMERR_INV_CHAR_MODE_ATTR
:*PMERR_INV_CODEPAGE  
*PMERR_INV_CODEPAGE
:*PMERR_INV_COLOR_ATTR  
*PMERR_INV_COLOR_ATTR
:*PMERR_INV_COLOR_DATA  
*PMERR_INV_COLOR_DATA
:*PMERR_INV_COLOR_INDEX  
*PMERR_INV_COLOR_INDEX
:*PMERR_INV_COORD_SPACE  
*PMERR_INV_COORD_SPACE
:*PMERR_INV_COORDINATE  
*PMERR_INV_COORDINATE
:*PMERR_INV_HDC  
*PMERR_INV_HDC
:*PMERR_INV_HRGN  
*PMERR_INV_HRGN
:*PMERR_INV_IN_AREA  
*PMERR_INV_IN_AREA
:*PMERR_INV_IN_PATH  
*PMERR_INV_IN_PATH
:*PMERR_INV_LENGTH_OR_COUNT  
*PMERR_INV_LENGTH_OR_COUNT
:*PMERR_INV_LINE_TYPE_ATTR  
*PMERR_INV_LINE_TYPE_ATTR
:*PMERR_INV_MIX_ATTR  
*PMERR_INV_MIX_ATTR
:*PMERR_INV_NESTED_FIGURES  
*PMERR_INV_NESTED_FIGURES
:*PMERR_INV_PATTERN_REF_PT_ATTR  
*PMERR_INV_PATTERN_REF_PT_ATTR
:*PMERR_INV_PATTERN_SET_ATTR  
*PMERR_INV_PATTERN_SET_ATTR
:*PMERR_INV_PATTERN_SET_FONT  
*PMERR_INV_PATTERN_SET_FONT
:*PMERR_INV_PICK_APERTURE_POSN  
*PMERR_INV_PICK_APERTURE_POSN
:*PMERR_INV_RECT  
*PMERR_INV_RECT
:*PMERR_INV_REGION_CONTROL  
*PMERR_INV_REGION_CONTROL
:*PMERR_NOT_IN_AREA  
*PMERR_NOT_IN_AREA
:*PMERR_NOT_IN_PATH  
*PMERR_NOT_IN_PATH
:*PMERR_PATH_LIMIT_EXCEEDED  
*PMERR_PATH_LIMIT_EXCEEDED
:*PMERR_PATH_UNKNOWN  
*PMERR_PATH_UNKNOWN
:*PMERR_REGION_IS_CLIP_REGION  
*PMERR_REGION_IS_CLIP_REGION
 
Refer to the "Error Explanations" section in the Presentation Manager Programming Reference for further explanation.
Refer to the "Error Explanations" section in the Presentation Manager Programming Reference for further explanation.  


==Remarks==
==Remarks==
The sides of the box (before transformation) are parallel to the X-axis and the Y-axis. The corners of the box can be rounded by means of quarter ellipses of the specified diameters. When the value of either diameter is 0, no rounding occurs. When the value of either diameter exceeds the length of the corresponding side, that length is used as the diameter instead. When the value of the diameters are equal to the value of the sides, the corners are rounded with a quarter circle. If the current position is (x0, y0), the box is drawn from the current position in a counterclockwise direction.  
The sides of the box (before transformation) are parallel to the X-axis and the Y-axis. The corners of the box can be rounded by means of quarter ellipses of the specified diameters. When the value of either diameter is 0, no rounding occurs. When the value of either diameter exceeds the length of the corresponding side, that length is used as the diameter instead. When the value of the diameters are equal to the value of the sides, the corners are rounded with a quarter circle. If the current position is (x0, y0), the box is drawn from the current position in a counterclockwise direction.
 
When correlating, the handling routine records a hit when the pick aperture intersects the boundary or interior, or is completely within the interior (even if the mix used for the fill operation is LEAVEALONE).
==Sample Code==
<PRE>
#define INCL_GRE_ARCS
#include <os2.h>
 
HDC          hdc;        /*  Device context handle. */
PBOXPARAMS    pBox;      /*  Pointer to a BOXPARAMS structure: */
PVOID        pInstance;  /*  Pointer to instance data. */
ULONG        lFunction;  /*  High-order WORD=flags; low-order WORD=NGreBoxBoth. */
LONG          rc;
 
rc = GreBoxBoth(hdc, pBox, pInstance, lFunction);
</PRE>


When correlating, the handling routine records a hit when the pick aperture intersects the boundary or interior, or is completely within the interior (even if the mix used for the fill operation is LEAVEALONE).


[[Category:Gre]]
[[Category:Gre]]

Latest revision as of 00:33, 1 January 2020

GreBoxBoth draws and fills a rectangular box with one corner at the current (X,Y) position and the opposite corner at the specified (X,Y) position. The current (X,Y) position does not change. When this function occurs within an area or path definition, it generates a closed figure. GreBoxBoth must not occur within any other figure definition.

This function is supported by the graphics engine and can be hooked by the presentation driver.

Simulation support
This function is simulated by a handling routine in the graphics engine.

Syntax

GreBoxBoth(hdc, pBox, pInstance, lFunction)

Parameters

hdc (HDC) - input
Device context handle.
pBox (PBOXPARAMS) - input
Pointer to a BOXPARAMS structure
pInstance (PVOID) - input
Pointer to instance data.
lFunction (ULONG) - input
High-order WORD=flags; low-order WORD=NGreBoxBoth.

Return Code

rc (LONG) - returns
On completion, this function returns an integer (cHits) indicating, where appropriate, whether correlation hits were detected.
GPI_OK : Successful
GPI_HITS : Successful with correlation hit (returned by display drivers when the correlation flag is ON and a hit is detected)
GPI_ERROR : Error
Possible Errors Detected
When an error is detected, the handling routine must call WinSetErrorInfo to post the condition. Error codes for conditions that the handling routine is expected to check include:
  • PMERR_ALREADY_IN_AREA
  • PMERR_BASE_ERROR
  • PMERR_BITMAP_NOT_SELECTED
  • PMERR_COORDINATE_OVERFLOW
  • PMERR_DEV_FUNC_NOT_INSTALLED
  • PMERR_EXCEEDS_MAX_SEG_LENGTH
  • PMERR_HDC_BUSY
  • PMERR_HRGN_BUSY
  • PMERR_HUGE_FONTS_NOT_SUPPORTED
  • PMERR_INSUFFICIENT_MEMORY
  • PMERR_INV_AREA_CONTROL
  • PMERR_INV_BACKGROUND_COL_ATTR
  • PMERR_INV_BACKGROUND_MIX_ATTR
  • PMERR_INV_BOX_ROUNDING_PARM
  • PMERR_INV_CHAR_DIRECTION_ATTR
  • PMERR_INV_CHAR_MODE_ATTR
  • PMERR_INV_CODEPAGE
  • PMERR_INV_COLOR_ATTR
  • PMERR_INV_COLOR_DATA
  • PMERR_INV_COLOR_INDEX
  • PMERR_INV_COORD_SPACE
  • PMERR_INV_COORDINATE
  • PMERR_INV_HDC
  • PMERR_INV_HRGN
  • PMERR_INV_IN_AREA
  • PMERR_INV_IN_PATH
  • PMERR_INV_LENGTH_OR_COUNT
  • PMERR_INV_LINE_TYPE_ATTR
  • PMERR_INV_MIX_ATTR
  • PMERR_INV_NESTED_FIGURES
  • PMERR_INV_PATTERN_REF_PT_ATTR
  • PMERR_INV_PATTERN_SET_ATTR
  • PMERR_INV_PATTERN_SET_FONT
  • PMERR_INV_PICK_APERTURE_POSN
  • PMERR_INV_RECT
  • PMERR_INV_REGION_CONTROL
  • PMERR_NOT_IN_AREA
  • PMERR_NOT_IN_PATH
  • PMERR_PATH_LIMIT_EXCEEDED
  • PMERR_PATH_UNKNOWN
  • PMERR_REGION_IS_CLIP_REGION

Refer to the "Error Explanations" section in the Presentation Manager Programming Reference for further explanation.

Remarks

The sides of the box (before transformation) are parallel to the X-axis and the Y-axis. The corners of the box can be rounded by means of quarter ellipses of the specified diameters. When the value of either diameter is 0, no rounding occurs. When the value of either diameter exceeds the length of the corresponding side, that length is used as the diameter instead. When the value of the diameters are equal to the value of the sides, the corners are rounded with a quarter circle. If the current position is (x0, y0), the box is drawn from the current position in a counterclockwise direction.

When correlating, the handling routine records a hit when the pick aperture intersects the boundary or interior, or is completely within the interior (even if the mix used for the fill operation is LEAVEALONE).