GreSetLineOrigin: Difference between revisions
Created page with "GreSetLineOrigin sets the current line style and current position. This function must be supported by the presentation driver. GreSetLineOrigin is used to enable the simulta..." |
mNo edit summary |
||
Line 1: | Line 1: | ||
GreSetLineOrigin sets the current line style and current position. | GreSetLineOrigin sets the current line style and current position. | ||
This function must be supported by the presentation driver. GreSetLineOrigin is used to enable the simultaneous update of line style and position. This function can be handled by bit-map simulation. | This function must be supported by the presentation driver. GreSetLineOrigin is used to enable the simultaneous update of line style and position. This function can be handled by bit-map simulation. | ||
;Simulation support: None. This function is mandatory for all drivers. | ;Simulation support: None. This function is mandatory for all drivers. | ||
==Syntax== | ==Syntax== | ||
GreSetLineOrigin(hdc, pptlXY, lStyle, pInstance, lFunction) | GreSetLineOrigin(hdc, pptlXY, lStyle, pInstance, lFunction) | ||
==Parameters== | ==Parameters== | ||
;hdc (HDC) - input | ;hdc (HDC) - input:Device context handle. | ||
:Device context handle. | ;pptlXY (PPOINTL) - input:Pointer to an (X,Y) coordinate pair to which the current position is returned. | ||
;lStyle (ULONG) - input:Style number. | |||
;pptlXY (PPOINTL) - input | ;pInstance (PVOID) - input:Pointer to instance data. | ||
:Pointer to an (X,Y) coordinate pair to which the current position is returned. | ;lFunction (ULONG) - input:High-order WORD=flags; low-order WORD=NGreSetLineOrigin. | ||
;lStyle (ULONG) - input | |||
:Style number. | |||
;pInstance (PVOID) - input | |||
:Pointer to instance data. | |||
;lFunction (ULONG) - input | |||
:High-order WORD=flags; low-order WORD=NGreSetLineOrigin. | |||
==Return Code== | ==Return Code== | ||
;rc (BOOL) - returns | ;rc (BOOL) - returns:Return codes. | ||
:Return codes. | :On completion, the handling routine must return a BOOLEAN value to indicate success or an error. | ||
:*TRUE Successful | |||
:On completion, the handling routine must return a BOOLEAN value to indicate success or an error. | :*FALSE 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: | |||
:*TRUE Successful | :*PMERR_BASE_ERROR | ||
:*FALSE Error | :*PMERR_COORDINATE_OVERFLOW | ||
:*PMERR_DEV_FUNC_NOT_INSTALLED | |||
: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_HDC_BUSY | ||
:*PMERR_INV_COORD_SPACE | |||
:*PMERR_BASE_ERROR | :*PMERR_INV_HDC | ||
:*PMERR_COORDINATE_OVERFLOW | :*PMERR_INV_LENGTH_OR_COUNT | ||
:*PMERR_DEV_FUNC_NOT_INSTALLED | :*PMERR_PATH_LIMIT_EXCEEDED | ||
:*PMERR_HDC_BUSY | :Refer to the "Error Explanations" section in the Presentation Manager Programming Reference for further explanation. | ||
:*PMERR_INV_COORD_SPACE | |||
:*PMERR_INV_HDC | |||
:*PMERR_INV_LENGTH_OR_COUNT | |||
:*PMERR_PATH_LIMIT_EXCEEDED | |||
:Refer to the "Error Explanations" section in the Presentation Manager Programming Reference for further explanation. | |||
==Remarks== | ==Remarks== | ||
If COM_TRANSFORM is set, the current position is expected in world coordinates. If COM_TRANSFORM is not set, the current position is expected in screen coordinates. The new line style is stored in the DC instance data structure. Some lines and curves can be drawn either by the presentation driver or by simulations, and therefore must be able to query and set the style as required | If COM_TRANSFORM is set, the current position is expected in world coordinates. If COM_TRANSFORM is not set, the current position is expected in screen coordinates. The new line style is stored in the DC instance data structure. Some lines and curves can be drawn either by the presentation driver or by simulations, and therefore must be able to query and set the style as required. | ||
The | The high-order WORD of the style number contains the first/last pel information. The low-order BYTE indicates the position in the style mask. The next byte is the state of the style error value. Refer to GreGetLineOrigin for further information. | ||
The following C Language example outlines a strategy by which the handling routine could use the information from a call to GreSetLineOrigin. | |||
<PRE> | <PRE> | ||
/******************************************************************/ | /******************************************************************/ | ||
Line 107: | Line 91: | ||
} | } | ||
</PRE> | </PRE> | ||
The values for pRatio are set and queried by GreSetStyleRatio and GreGetStyleRatio respectively. Alternatively, the programmer can specify device-specific defaults for xRatio and yRatio. | |||
The values for pRatio are set and queried by GreSetStyleRatio and GreGetStyleRatio respectively. Alternatively, the programmer can specify device-specific defaults for xRatio and yRatio. | |||
==Sample Code== | ==Sample Code== | ||
Line 126: | Line 109: | ||
rc = GreSetLineOrigin(hdc, pptlXY, lStyle, pInstance, lFunction); | rc = GreSetLineOrigin(hdc, pptlXY, lStyle, pInstance, lFunction); | ||
</PRE> | </PRE> | ||
[[Category:Gre]] | [[Category:Gre]] |
Latest revision as of 18:44, 5 April 2025
GreSetLineOrigin sets the current line style and current position.
This function must be supported by the presentation driver. GreSetLineOrigin is used to enable the simultaneous update of line style and position. This function can be handled by bit-map simulation.
- Simulation support
- None. This function is mandatory for all drivers.
Syntax
GreSetLineOrigin(hdc, pptlXY, lStyle, pInstance, lFunction)
Parameters
- hdc (HDC) - input
- Device context handle.
- pptlXY (PPOINTL) - input
- Pointer to an (X,Y) coordinate pair to which the current position is returned.
- lStyle (ULONG) - input
- Style number.
- pInstance (PVOID) - input
- Pointer to instance data.
- lFunction (ULONG) - input
- High-order WORD=flags; low-order WORD=NGreSetLineOrigin.
Return Code
- rc (BOOL) - returns
- Return codes.
- On completion, the handling routine must return a BOOLEAN value to indicate success or an error.
- TRUE Successful
- FALSE 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_BASE_ERROR
- PMERR_COORDINATE_OVERFLOW
- PMERR_DEV_FUNC_NOT_INSTALLED
- PMERR_HDC_BUSY
- PMERR_INV_COORD_SPACE
- PMERR_INV_HDC
- PMERR_INV_LENGTH_OR_COUNT
- PMERR_PATH_LIMIT_EXCEEDED
- Refer to the "Error Explanations" section in the Presentation Manager Programming Reference for further explanation.
Remarks
If COM_TRANSFORM is set, the current position is expected in world coordinates. If COM_TRANSFORM is not set, the current position is expected in screen coordinates. The new line style is stored in the DC instance data structure. Some lines and curves can be drawn either by the presentation driver or by simulations, and therefore must be able to query and set the style as required.
The high-order WORD of the style number contains the first/last pel information. The low-order BYTE indicates the position in the style mask. The next byte is the state of the style error value. Refer to GreGetLineOrigin for further information.
The following C Language example outlines a strategy by which the handling routine could use the information from a call to GreSetLineOrigin.
/******************************************************************/ /* */ /* StyleMask is a single byte. usState is a USHORT with the */ /* error byte as the low-order byte and the mask position as */ /* the high-order byte. The three low-order bytes of the mask */ /* position represent the number of bits by which StyleMask has */ /* been rotated. */ /* */ /******************************************************************/ while (necessary--) { /******************************************************************/ /* */ /* Do we need to draw the first pel in the line? */ /* */ /******************************************************************/ if (stylemask & 0x80) SetPel (x, y); /******************************************************************/ /* */ /* Save the current style state. */ /* */ /******************************************************************/ usStateOld=usState; switch (LineMajor) { case yMajor: usState=usState+yRatio; break; default: usState=usState+xRatio; break; } if HIBYTE (usState) != HIBYTE (usStateOld) /******************************************************************/ /* */ /* If the error byte has overflowed, rotate the style ratio. */ /* The style mask is reset every eighth rotation. */ /* */ /******************************************************************/ RotateLeftOne (StyleRatio); UpDateNext (x, y); }
The values for pRatio are set and queried by GreSetStyleRatio and GreGetStyleRatio respectively. Alternatively, the programmer can specify device-specific defaults for xRatio and yRatio.
Sample Code
#define INCL_GRE_DEVMISC3 #include <os2.h> HDC hdc; /* Device context handle. */ PPOINTL pptlXY; /* Pointer to an (X,Y) coordinate pair to which the current position is returned. */ ULONG lStyle; /* Style number. */ PVOID pInstance; /* Pointer to instance data. */ ULONG lFunction; /* High-order WORD=flags; low-order WORD=NGreSetLineOrigin. */ BOOL rc; /* Return codes. */ rc = GreSetLineOrigin(hdc, pptlXY, lStyle, pInstance, lFunction);