/*
Copyright (c) 2019 PTC Inc. and/or Its Subsidiary Companies. All Rights Reserved.
*/
/*---------------------- Pro/Toolkit Includes ------------------------*/
#include <ProToolkit.h>
#include <ProGraphic.h>
/*---------------------- Application Includes ------------------------*/
#include <TestError.h>
/*---------------------- Function Prototypes -------------------------*/
ProError UserGetLine();
/*=====================================================================*\
Input a point, p2, drawing a rubber banded line from p1
\*=====================================================================*/
ProError UserGetLine(ProPoint3d p1, ProPoint3d p2)
{
ProMouseButton button;
ProPoint3d op2;
ProDrawMode old_graphics_mode;
ProError err;
/*---------------------------------------------------------------------*\
Set the drawing mode to COMPLEMENT
\*---------------------------------------------------------------------*/
err=ProGraphicsModeSet(PRO_DRAW_COMPLEMENT_MODE,&old_graphics_mode);
ERROR_CHECK("UserGetLine","ProGraphicsModeSet",err);
/*---------------------------------------------------------------------*\
Start a line from the input position.
\*---------------------------------------------------------------------*/
ProGraphicsPenPosition(p1);
/*---------------------------------------------------------------------*\
Get the first sample mouse position, and draw a line to it
\*---------------------------------------------------------------------*/
err=ProMouseTrack(0,&button,p2);
ERROR_CHECK("UserGetLine","ProMouseTrack",err);
ProGraphicsLineDraw(p2);
/*---------------------------------------------------------------------*\
Remember the position.
\*---------------------------------------------------------------------*/
op2[0]=p2[0];
op2[1]=p2[1];
op2[2]=p2[2];
while(1)
{
/*---------------------------------------------------------------------*\
If the user hit a button
\*---------------------------------------------------------------------*/
if(button)
break;
/*---------------------------------------------------------------------*\
Sample the mouse
\*---------------------------------------------------------------------*/
err=ProMouseTrack(0,&button,p2);
ERROR_CHECK("UserGetLine","ProMouseTrack(2)",err);
/*---------------------------------------------------------------------*\
Undraw the prevous rubber band line.
(Just redraw the line to the previous position.)
\*---------------------------------------------------------------------*/
ProGraphicsPenPosition(p1);
ProGraphicsLineDraw(op2);
op2[0]=p2[0];
op2[1]=p2[1];
op2[2]=p2[2];
/*---------------------------------------------------------------------*\
Draw a line to the new position.
\*---------------------------------------------------------------------*/
ProGraphicsPenPosition(p1);
ProGraphicsLineDraw(p2);
}
/*---------------------------------------------------------------------*\
Undraw the rubber band line.
\*---------------------------------------------------------------------*/
ProGraphicsLineDraw(p1);
/*---------------------------------------------------------------------*\
Set the drawing mode back to SET
\*---------------------------------------------------------------------*/
ProGraphicsModeSet(PRO_DRAW_SET_MODE,&old_graphics_mode);
return(button);
}