APIIo_GetArcID
호 입력을 수행합니다.
GSErrCode ACAPI_Interface (
APIIo_GetArcID,
API_GetArcType* arcInfo,
RubberLineInfoProc* rubberLineInfoProc
);
파라미터
- arcInfo
- [in/out] 호 입력 동작의 파라미터들입니다.
- rubberLineInfoProc
- [in] 커스텀 피드백 드로잉에 대한 콜백 함수입니다.
리턴 값
NoError- 함수가 성공적으로 완료되었습니다.
APIERR_BADPARSarcInfo가 NULL입니다.APIERR_BADPLANEarcInfo안에 유효하지 않은 평면 정의가 있습니다.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 함수