APIIo_GetArcID
호 입력을 수행합니다.
GSErrCode ACAPI_Interface ( APIIo_GetArcID, API_GetArcType* arcInfo, RubberLineInfoProc* rubberLineInfoProc );
파라미터
- arcInfo
- [in/out] 호 입력 동작의 파라미터들입니다.
- rubberLineInfoProc
- [in] 커스텀 피드백 드로잉에 대한 콜백 함수입니다.
리턴 값
NoError
- 함수가 성공적으로 완료되었습니다.
APIERR_BADPARS
arcInfo
가 NULL입니다.APIERR_BADPLANE
arcInfo
안에 유효하지 않은 평면 정의가 있습니다.APIERR_BADWINDOW
- 애플리케이션의 현재 전면 창에서 동작을 수행할 수 없습니다.
APIERR_CANCEL
- 사용자가 입력을 취소했습니다.
다른 공통 API 오류들에 대해서는 API 오류 문서를 보십시오.
설명
이 함수는 사용자가 호를 그래픽으로 입력하도록 시키는 데 사용합니다.
만약 입력 프로세스가 실패하면, 이 함수는 APIERR_CANCEL
을 리턴합니다.
그 외에는 결과가 arcInfo
의 필드들로 리턴됩니다; startCoord
(만약 호 입력 전에 시작 좌표가 주어지지 않은 경우), negArc
, pos
그리고 neig
호의 중심점과 시작점은 직접 정의할 수 있습니다. 또는 APIIo_GetPointID와 APIIo_GetLineID 인터페이스 함수들을 이용해 그래픽으로 입력할 수 있습니다.
컨트롤 박스에 표시되는 프롬프트 문자열은 액션에 대한 지시사항들을 포함할 수 있습니다. 당신은 neig들 위에서의 커서 중력(gravity)과 커서 형태를 제어하고 입력 평면을 세트할 수 있습니다. 포인터를 당신의 rubber line 콜백 함수에 전달하여 입력하는 도중 고유의 그래픽 피드백을 그릴 수 있는 가능성이 있습니다. 활용에 대한 더 자세한 것들은 API_GetArcType structure의 문서를 참조하십시오.
모달 다이얼로그들이 열려 있는 동안에는 어떤 입력 동작도 호출하지 마십시오.
예제
API_GetPointType pointInfo; API_GetLineType lineInfo; API_GetArcType arcInfo; char buffer [256]; GSErrCode err; BNZeroMemory (&pointInfo, sizeof (API_GetPointType)); BNZeroMemory (&lineInfo, sizeof (API_GetLineType)); BNZeroMemory (&arcInfo, sizeof (API_GetArcType)); CHCopyC ("Click the arc center point", pointInfo.prompt); pointInfo.changeCursorSet = true; /* show cross cursors suggesting the center point */ pointInfo.cursorSet.nothingOnCursor = APICursor_XPoint; pointInfo.cursorSet.pointOnCursor = APICursor_ArrowXPoint; pointInfo.cursorSet.lineOnCursor = APICursor_PencilXPoint; pointInfo.cursorSet.refPointOnCursor = APICursor_ArrowXPoint; pointInfo.cursorSet.refLineOnCursor = APICursor_PencilXPoint; pointInfo.cursorSet.crossOnCursor = APICursor_ArrowXPoint; pointInfo.cursorSet.normalOnCursor = APICursor_PencilXPoint; pointInfo.cursorSet.tangentOnCursor = APICursor_ArrowXPoint; err = ACAPI_Interface (APIIo_GetPointID, &pointInfo, NULL); if (!err) { CHCopyC ("Enter the arc start point", lineInfo.prompt); lineInfo.startCoord = pointInfo.pos; lineInfo.changeCursorSet = true; /* use hand cursors for drawing the radius of the arc */ lineInfo.cursorSet.nothingOnCursor = APICursor_Hand; lineInfo.cursorSet.pointOnCursor = APICursor_MiniHand; lineInfo.cursorSet.lineOnCursor = APICursor_MiniHand; lineInfo.cursorSet.refPointOnCursor = APICursor_MiniHand; lineInfo.cursorSet.refLineOnCursor = APICursor_MiniHand; lineInfo.cursorSet.crossOnCursor = APICursor_MiniHand; lineInfo.cursorSet.normalOnCursor = APICursor_MiniHand; lineInfo.cursorSet.tangentOnCursor = APICursor_MiniHand; err = ACAPI_Interface (APIIo_GetLineID, &lineInfo, NULL); } if (!err) { CHCopyC ("Enter the arc end point", arcInfo.prompt); arcInfo.origo = lineInfo.startCoord; arcInfo.startCoord = lineInfo.pos; arcInfo.startCoordGiven = true; arcInfo.changeCursorSet = true; /* use eye cursors for getting the arc */ arcInfo.cursorSet.nothingOnCursor = APICursor_Eye; arcInfo.cursorSet.pointOnCursor = APICursor_DoubleEye; arcInfo.cursorSet.lineOnCursor = APICursor_DoubleEye; arcInfo.cursorSet.refPointOnCursor = APICursor_DoubleEye; arcInfo.cursorSet.refLineOnCursor = APICursor_DoubleEye; arcInfo.cursorSet.crossOnCursor = APICursor_DoubleEye; arcInfo.cursorSet.normalOnCursor = APICursor_DoubleEye; arcInfo.cursorSet.tangentOnCursor = APICursor_DoubleEye; err = ACAPI_Interface (APIIo_GetArcID, &arcInfo, NULL); } if (!err) { sprintf (buffer, "Origo coordinates: (%Lf, %Lf)", arcInfo.origo.x, arcInfo.origo.y); ACAPI_WriteReport (buffer, false); if (arcInfo.negArc) sprintf (buffer, "Arc begins: (%Lf, %Lf)\nArc ends: (%Lf, %Lf)", arcInfo.pos.x, arcInfo.pos.y, arcInfo.startCoord.x, arcInfo.startCoord.y); else sprintf (buffer, "Arc begins: (%Lf, %Lf)\nArc ends: (%Lf, %Lf)", arcInfo.startCoord.x, arcInfo.startCoord.y, arcInfo.pos.x, arcInfo.pos.y); ACAPI_WriteReport (buffer, false); } else if (err == APIERR_CANCEL) ACAPI_WriteReport ("Input was interrupted", true);
요구사항
- 버전: API 2.1 또는 이후
- 헤더: APIdefs_Interface.h
참고사항
API_GetArcType,
RubberLineInfoProc, APIIo_DrawRubberLineID, APIIo_GetPointID, APIIo_GetLineID, APIIo_GetPolyID,
ACAPI_Interface, API 함수