Jump to content

GreSetCurrentPosition: Difference between revisions

From EDM2
Created page with "GreSetCurrentPosition sets the current (X,Y) position and resets the line type sequence. This function must be supported by all presentation drivers. GreSetCurrentPosition i..."
 
Ak120 (talk | contribs)
mNo edit summary
 
(One intermediate revision by the same user not shown)
Line 1: Line 1:
GreSetCurrentPosition sets the current (X,Y) position and resets the line type sequence.  
GreSetCurrentPosition sets the current (X,Y) position and resets the line type sequence.


This function must be supported by all presentation drivers. GreSetCurrentPosition is called by the function GpiSetCurrentPosition. GreSetCurrentPosition might be called in response to any of the Presentation Manager drawing functions, which end their operations by updating the current presentation space position.  
This function must be supported by all presentation drivers. GreSetCurrentPosition is called by the function [[GpiSetCurrentPosition]]. GreSetCurrentPosition might be called in response to any of the Presentation Manager drawing functions, which end their operations by updating the current presentation space position.


; Simulation support: None. This function is mandatory for all drivers.  
;Simulation support: None. This function is mandatory for all drivers.


== Syntax ==  
== Syntax ==  
  GreSetCurrentPosition(hdc, pptlPosition, pInstance, lFunction);
  GreSetCurrentPosition(hdc, pptlPosition, pInstance, lFunction)


== Parameters ==
== Parameters ==
; hdc (HDC) - input : Device context handle.  
;hdc (HDC) - input: Device context handle.
 
;pptlPosition (PPOINTL) - input: Pointer to new current position.
; pptlPosition (PPOINTL) - input : Pointer to new current position.  
:When COM_TRANSFORM is set, the current position is expressed in world coordinates. Otherwise, this value is passed in device coordinates. The handling routine must transform these values as appropriate. Typically, the presentation driver maintains the current position in both coordinate sets in the DC instance data structure.
 
;pInstance (PVOID) - input: Pointer to instance data.
: When COM_TRANSFORM is set, the current position is expressed in world coordinates. Otherwise, this value is passed in device coordinates. The handling routine must transform these values as appropriate. Typically, the presentation driver maintains the current position in both coordinate sets in the DC instance data structure.  
;lFunction (ULONG) - input: High-order WORD=flags; low-order WORD=NGreSetCurrentPosition.
 
; pInstance (PVOID) - input : Pointer to instance data.  
 
; lFunction (ULONG) - input : High-order WORD=flags; low-order WORD=NGreSetCurrentPosition.  


== Returns ==
== Returns ==
; rc (BOOL) - returns : Return code.  
;rc (BOOL) - returns: Return code.
 
:On completion, the handling routine must return a BOOLEAN value to indicate success or an error.
On completion, the handling routine must return a BOOLEAN value to indicate success or an error.  
* TRUE Successful
 
* FALSE Error
* TRUE Successful  
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:
* FALSE Error  
* PMERR_BASE_ERROR
 
* PMERR_COORDINATE_OVERFLOW
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_DEV_FUNC_NOT_INSTALLED
 
* PMERR_HDC_BUSY
* PMERR_BASE_ERROR  
* PMERR_INV_COORD_SPACE
* PMERR_COORDINATE_OVERFLOW  
* PMERR_INV_HDC
* PMERR_DEV_FUNC_NOT_INSTALLED  
* PMERR_INV_LENGTH_OR_COUNT
* PMERR_HDC_BUSY  
* PMERR_PATH_LIMIT_EXCEEDED
* PMERR_INV_COORD_SPACE  
* PMERR_INV_HDC  
* PMERR_INV_LENGTH_OR_COUNT  
* PMERR_PATH_LIMIT_EXCEEDED  
 
== Sample ==
<pre>
#define INCL_GRE_LINES
#include <os2.h>
 
HDC        hdc;          /*  Device context handle. */
PPOINTL    pptlPosition;  /*  Pointer to new current position. */
PVOID      pInstance;    /*  Pointer to instance data. */
ULONG      lFunction;    /*  High-order WORD=flags; low-order WORD=NGreSetCurrentPosition. */
BOOL      rc;            /*  Return code. */


rc = GreSetCurrentPosition(hdc, pptlPosition,
      pInstance, lFunction);
</pre>
== Remarks ==
== Remarks ==
Typically, the handling routine also sets a flag in the DC instance data structure to indicate that the first pel of the next line must be drawn. When the COM_AREA or COM_PATH flag is set, this function is part of an area or path definition. In either case, the handling routine usually passes the call back to the graphics engine for processing by the default handling routine. The call would not be passed back to the graphics engine if the presentation driver had hooked all of the area and path functions.  
Typically, the handling routine also sets a flag in the DC instance data structure to indicate that the first pel of the next line must be drawn. When the COM_AREA or COM_PATH flag is set, this function is part of an area or path definition. In either case, the handling routine usually passes the call back to the graphics engine for processing by the default handling routine. The call would not be passed back to the graphics engine if the presentation driver had hooked all of the area and path functions.


When the current context is "in area," a figure closure line is generated (if necessary). This can cause a correlation hit to occur on an area boundary. The current position should only be correlated on, merged into the bounds, or both correlated and merged, if it is actually used in a drawing primitive.  
When the current context is "in area," a figure closure line is generated (if necessary). This can cause a correlation hit to occur on an area boundary. The current position should only be correlated on, merged into the bounds, or both correlated and merged, if it is actually used in a drawing primitive.
 
The following is an example:


The following is an example:
               ...
               ...
     GreSetCurrentPosition (hdc, p1);
     GreSetCurrentPosition (hdc, p1);
Line 70: Line 47:
     GrePolyLine (hdc, to p3, n);
     GrePolyLine (hdc, to p3, n);
               ...
               ...
 
Notice that the sequence does not merge p1 into the bounds or correlate on it.
Notice that the sequence does not merge p1 into the bounds or correlate on it.  


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

Latest revision as of 20:34, 19 June 2020

GreSetCurrentPosition sets the current (X,Y) position and resets the line type sequence.

This function must be supported by all presentation drivers. GreSetCurrentPosition is called by the function GpiSetCurrentPosition. GreSetCurrentPosition might be called in response to any of the Presentation Manager drawing functions, which end their operations by updating the current presentation space position.

Simulation support
None. This function is mandatory for all drivers.

Syntax

GreSetCurrentPosition(hdc, pptlPosition, pInstance, lFunction)

Parameters

hdc (HDC) - input
Device context handle.
pptlPosition (PPOINTL) - input
Pointer to new current position.
When COM_TRANSFORM is set, the current position is expressed in world coordinates. Otherwise, this value is passed in device coordinates. The handling routine must transform these values as appropriate. Typically, the presentation driver maintains the current position in both coordinate sets in the DC instance data structure.
pInstance (PVOID) - input
Pointer to instance data.
lFunction (ULONG) - input
High-order WORD=flags; low-order WORD=NGreSetCurrentPosition.

Returns

rc (BOOL) - returns
Return code.
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

Remarks

Typically, the handling routine also sets a flag in the DC instance data structure to indicate that the first pel of the next line must be drawn. When the COM_AREA or COM_PATH flag is set, this function is part of an area or path definition. In either case, the handling routine usually passes the call back to the graphics engine for processing by the default handling routine. The call would not be passed back to the graphics engine if the presentation driver had hooked all of the area and path functions.

When the current context is "in area," a figure closure line is generated (if necessary). This can cause a correlation hit to occur on an area boundary. The current position should only be correlated on, merged into the bounds, or both correlated and merged, if it is actually used in a drawing primitive.

The following is an example:

             ...
   GreSetCurrentPosition (hdc, p1);
             ...
             ...
             ...
   GreSetCurrentPosition (hdc, p2);
             ...
             ...
             ...
   GrePolyLine (hdc, to p3, n);
             ...

Notice that the sequence does not merge p1 into the bounds or correlate on it.