/* ------------------------------------------------------------------------------------------ IMPLEMENTATION FILE FOR : Definition of (way) editor object : circle arc curves. ------------------------------------------------------------------------------------------ File Name : Edi_CiAr.c ------------------------------------------------------------------------------------------ Creation Date : February 25,1997 Author : Albert PAIS ------------------------------------------------------------------------------------------ Contents : This file implements structures and functions for the circle arc curve used by the (way) editor. ------------------------------------------------------------------------------------------ Remarks : Code comes from old circway.c made by Yann Le Tensorer (January-February 1997) ------------------------------------------------------------------------------------------ See Also : * Mth_CiAr.h/.c for mathematical circle arc curve definition and implementation. ------------------------------------------------------------------------------------------ Modification : * Date : * Author : * Modify : ------------------------------------------------------------------------------------------ */ /* ------------------------------------------------------------------------------------------ INCLUDE FILES : ------------------------------------------------------------------------------------------ */ /* ---------------------------------------- File Name : acp_base.h ---------------------------------------- Required for : Standard CPA definitions ---------------------------------------- */ #include "acp_base.h" /* ---------------------------------------- File Name : gli.h ---------------------------------------- Required for : Graphic Library Interface ---------------------------------------- */ #include "geo.h" #include "gli.h" /* ---------------------------------------- File Name : Edi_CiAr.h ---------------------------------------- Required for : Definition of circle arc editor structures and functions ---------------------------------------- */ #define _EDWAY_CIRCLEARC_FRIEND_ #include "Edi_CiAr.h" #undef _EDWAY_CIRCLEARC_FRIEND_ /* ---------------------------------------- File Name : geoobj.h ---------------------------------------- Required for : For geometric object ---------------------------------------- */ #include "geo.h" /* ---------------------------------------- File Name : Mth_CiAr.h ---------------------------------------- Required for : For MTH Circle Arc Curve definitions ---------------------------------------- */ #include "Mth_CiAr.h" /* ------------------------------------------------------------------------------------------ FUNCTIONS AND MACROS-FUNCTIONS DECLARATION: ------------------------------------------------------------------------------------------ */ #define M_malloc(pointer,cast,size) (pointer=(cast)malloc(size)) #define M_free(pointer) (free(pointer)) int iJustToLinkCiArBidouille; void JustToLinkCiAr (void) { iJustToLinkCiArBidouille=1; } /* --------------------------------------- Contents : Allocates a new editor circle arc structure. --------------------------------------- Function Name : EDWAY_fnh_CircleArcObject_CreateSturcture --------------------------------------- Arguments : * None --------------------------------------- Return value : * Type : EDWAY_tdhCircleArcObject * Possible Value : * A valid handle (non-null) The function succeded * An invalid handle (null value) Allocation failed. --------------------------------------- Error Raised : * None --------------------------------------- Creation : * Date : February 26,1997 * Author : Albert PAIS --------------------------------------- Modification : * Date : * Author : * Modify : --------------------------------------- */ EDWAY_tdhCircleArcObject EDWAY_fnh_CircleArcObject_CreateSturcture(void) { EDWAY_tdhCircleArcObject hNewCircleArcObject; M_malloc(hNewCircleArcObject,EDWAY_tdhCircleArcObject,EDWAY_M_uwCircleArcObjectSizeOf()); if(hNewCircleArcObject) memset(hNewCircleArcObject,0,EDWAY_M_uwCircleArcObjectSizeOf()); return hNewCircleArcObject; } /* --------------------------------------- Contents : Destroy the structure. --------------------------------------- Function Name : EDWAY_fnv_CircleArcObject_DestroyStructure --------------------------------------- Arguments : * Name : _hOldCircleArcObject Type : EDWAY_tdhCircleArcObject Meaning : a valid handle on an editor circle arc object to destroy --------------------------------------- Return value : * None --------------------------------------- Error Raised : * None --------------------------------------- Creation : * Date : February 26,1997 * Author : Albert PAIS --------------------------------------- Modification : * Date : * Author : * Modify : ---------------------------------------- Remarks : * Allocation done inside the structure is not freed in this function. A previous call to EDWAY_fnv_CircleArcObject_Free should be done. ---------------------------------------- See Also : * EDWAY_fnv_CircleArcObject_Free ---------------------------------------- */ void EDWAY_fnv_CircleArcObject_DestroyStructure (EDWAY_tdhCircleArcObject _hOldCircleArcObject) { /* avoid crash */ if(_hOldCircleArcObject==0) return; M_free(_hOldCircleArcObject); } /* --------------------------------------- Contents : Create CircleArc curve (in ram only) between two points. --------------------------------------- Function Name : EDWAY_fnv_CircleArcObject_Create --------------------------------------- Arguments : * Name : _EDWAY_hCircleArcObject Type : EDWAY_tdhCircleArcObject Meaning : a valid handle on an editor cirlce arc object * Name : _ucSamplingRate Type : unsigned char Meaning : The sampling rate of the circle arc curve * Name : _p_stStartPoint Type : MTH3D_tdstVector* Meaning : A valid pointer to the starting point of the circle arc curve to create. * Name : _p_stEndPoint Type : MTH3D_tdstVector* Meaning : a valid pointer to the starting point of the circle arc curve to create. * Name : _p_stCenterPoint Type : MTH3D_tdstVector* Meaning : a valid pointer to the center of the circle arc curve to create. * Name : _ucObjectMode Type : unsigned char Meaning : The object mode (real or no object). * Name : _p_stDynamParams Type : ACP_tdstDynaParam* Meaning : A pointer to the dynamic parameters associated. --------------------------------------- Return value : * None --------------------------------------- Error Raised : * None --------------------------------------- Creation : * Date : February 25,1997 * Author : Albert Pais --------------------------------------- Modification : * Date : * Author : * Modify : --------------------------------------- */ void EDWAY_fnv_CircleArcObject_Create ( EDWAY_tdhCircleArcObject _EDWAY_hCircleArcObject, unsigned char _ucSamplingRate, MTH3D_tdstVector*_p_stStartPoint, MTH3D_tdstVector*_p_stEndPoint, MTH3D_tdstVector*_p_stCenterPoint, unsigned char _ucObjectMode, ACP_tdstDynaParam*_p_stDynamParams, MTH3D_tdstVector** pdstListOfPoints ) { MTH3D_tdhCircleArcCurve hCircleArcCurve; MTH3D_tdstMatrix stLocalMatrix,stInvLocalMatrix; MTH3D_tdstVector stLocalStart,stLocalEnd; GEO_tdstDoubledIndex xLineDoubleIndex; long xCurVertex; /* avoiding crash and errors :*/ if ( (!_EDWAY_hCircleArcObject) ||(!_p_stStartPoint) ||(!_p_stEndPoint) ||(!_p_stCenterPoint) ) return; /* build a new circle arc curve object :*/ hCircleArcCurve = MTH3D_fnh_CircleArcCurve_Create(); if(!hCircleArcCurve) return; MTH3D_fnv_CircleArcCurve_Init ( hCircleArcCurve, _ucSamplingRate, _p_stStartPoint, _p_stEndPoint, _p_stCenterPoint ); /* compute local information :*/ MTH3D_fnv_CircleArcCurve_ComputeLocalInformation ( hCircleArcCurve, &stLocalMatrix, &stLocalStart, &stLocalEnd, &stInvLocalMatrix ); /* Process angle :*/ EDWAY_M_vCircleArcObjectSetMainAngle ( _EDWAY_hCircleArcObject, MTH3D_fnx_CircleArcCurve_ComputeMainAngle(hCircleArcCurve) ); /* set other fields :*/ EDWAY_M_vCircleArcObjectSetCircleArcCurve(_EDWAY_hCircleArcObject,hCircleArcCurve); EDWAY_M_vCircleArcObjectSetDynaParams(_EDWAY_hCircleArcObject,_p_stDynamParams); EDWAY_M_vCircleArcObjectSetLocalRepere(_EDWAY_hCircleArcObject,&stLocalMatrix); EDWAY_M_vCircleArcObjectSetInvLocalRepere(_EDWAY_hCircleArcObject,&stInvLocalMatrix); EDWAY_M_vCircleArcObjectSetLocalStartPoint(_EDWAY_hCircleArcObject,&stLocalStart); EDWAY_M_vCircleArcObjectSetLocalEndPoint(_EDWAY_hCircleArcObject,&stLocalEnd); EDWAY_M_vCircleArcObjectSetObjectMode(_EDWAY_hCircleArcObject,_ucObjectMode); _EDWAY_hCircleArcObject->m_pdstListOfPoints = pdstListOfPoints; /* Depending on other fields :*/ if(_ucObjectMode==EDWAY_C_ucModeNoObject) {/* mode is MODE_NO_OBJECT */ /* allocates ram only for points list and dynamic parameters */ M_malloc ( // EDWAY_M_dstCircleArcObjectGetListOfPoints(_EDWAY_hCircleArcObject), *_EDWAY_hCircleArcObject->m_pdstListOfPoints, MTH3D_tdstVector*, (_ucSamplingRate+1)*sizeof(MTH3D_tdstVector) ); } else {/* else mode is MODE_REAL_OBJET */ /* creates the geometric object */ /* This list of points is not used */ // EDWAY_M_vCircleArcObjectSetListOfPoints(_EDWAY_hCircleArcObject,0); *_EDWAY_hCircleArcObject->m_pdstListOfPoints = 0; /* create object with 1 element (lines only), and ucSamplingRate+1 points) */ GEO_vCreateGeometricObject (&EDWAY_M_hCircleArcObjectGetGeometricObject(_EDWAY_hCircleArcObject),_ucSamplingRate+1,1); /* create line element*/ GEO_xCreateElementLines ( EDWAY_M_hCircleArcObjectGetGeometricObject(_EDWAY_hCircleArcObject), &EDWAY_M_hCircleArcObjectGetLineElement(_EDWAY_hCircleArcObject), _ucSamplingRate ); /* create lines indexes */ for (xCurVertex=0;xCurVertex<_ucSamplingRate;xCurVertex++) { /* define start and end vertex of a line */ xLineDoubleIndex.a2_xIndex[0]=xCurVertex; xLineDoubleIndex.a2_xIndex[1]=xCurVertex+1; /* set line index */ GEO_xSetIndexOfElementLines ( EDWAY_M_hCircleArcObjectGetGeometricObject(_EDWAY_hCircleArcObject), EDWAY_M_hCircleArcObjectGetLineElement(_EDWAY_hCircleArcObject), xCurVertex, &xLineDoubleIndex ); } } EDWAY_fnv_CircleArcObject_Calculate(_EDWAY_hCircleArcObject); } /* --------------------------------------- Contents : Create CircleArc curve (in ram only) between two points. --------------------------------------- Function Name : EDWAY_fnv_CircleArcObject_CreateFromCurve --------------------------------------- --------------------------------------- Return value : * None --------------------------------------- Error Raised : * None --------------------------------------- Creation : * Date : April 10,1997 * Author : Jacques Thénoz --------------------------------------- Modification : * Date : * Author : * Modify : --------------------------------------- */ void EDWAY_fnv_CircleArcObject_CreateFromCurve ( EDWAY_tdhCircleArcObject _hCircleArcObject, MTH3D_tdhCircleArcCurve _hCircleArcCurve, unsigned char _ucObjectMode, ACP_tdstDynaParam* _pstDynaParams, MTH3D_tdstVector** pdstListOfPoints ) { unsigned char _ucSamplingRate = MTH3D_fnuc_CircleArcCurve_GetSamplingRate (_hCircleArcCurve); MTH3D_tdstMatrix stLocalMatrix,stInvLocalMatrix; MTH3D_tdstVector stLocalStart,stLocalEnd; GEO_tdstDoubledIndex xLineDoubleIndex; long xCurVertex; /* compute local information :*/ MTH3D_fnv_CircleArcCurve_ComputeLocalInformation ( _hCircleArcCurve, &stLocalMatrix, &stLocalStart, &stLocalEnd, &stInvLocalMatrix ); /* Process angle :*/ EDWAY_M_vCircleArcObjectSetMainAngle ( _hCircleArcObject, MTH3D_fnx_CircleArcCurve_ComputeMainAngle(_hCircleArcCurve) ); /* set other fields :*/ EDWAY_M_vCircleArcObjectSetCircleArcCurve(_hCircleArcObject,_hCircleArcCurve); EDWAY_M_vCircleArcObjectSetDynaParams(_hCircleArcObject,_pstDynaParams); EDWAY_M_vCircleArcObjectSetLocalRepere(_hCircleArcObject,&stLocalMatrix); EDWAY_M_vCircleArcObjectSetInvLocalRepere(_hCircleArcObject,&stInvLocalMatrix); EDWAY_M_vCircleArcObjectSetLocalStartPoint(_hCircleArcObject,&stLocalStart); EDWAY_M_vCircleArcObjectSetLocalEndPoint(_hCircleArcObject,&stLocalEnd); EDWAY_M_vCircleArcObjectSetObjectMode(_hCircleArcObject,_ucObjectMode); _hCircleArcObject->m_pdstListOfPoints = pdstListOfPoints; /* Depending on other fields :*/ if(_ucObjectMode==EDWAY_C_ucModeNoObject) {/* mode is MODE_NO_OBJECT */ /* allocates ram only for points list and dynamic parameters */ M_malloc ( // EDWAY_M_dstCircleArcObjectGetListOfPoints(_hCircleArcObject), *_hCircleArcObject->m_pdstListOfPoints, MTH3D_tdstVector*, (_ucSamplingRate+1)*sizeof(MTH3D_tdstVector) ); } else {/* else mode is MODE_REAL_OBJET */ /* creates the geometric object */ /* This list of points is not used */ // EDWAY_M_vCircleArcObjectSetListOfPoints(_hCircleArcObject,0); *_hCircleArcObject->m_pdstListOfPoints = 0; /* create object with 1 element (lines only), and ucSamplingRate+1 points) */ GEO_vCreateGeometricObject (&EDWAY_M_hCircleArcObjectGetGeometricObject(_hCircleArcObject),_ucSamplingRate+1,1); /* create line element*/ GEO_xCreateElementLines ( EDWAY_M_hCircleArcObjectGetGeometricObject(_hCircleArcObject), &EDWAY_M_hCircleArcObjectGetLineElement(_hCircleArcObject), _ucSamplingRate ); /* create lines indexes */ for (xCurVertex=0;xCurVertex<_ucSamplingRate;xCurVertex++) { /* define start and end vertex of a line */ xLineDoubleIndex.a2_xIndex[0]=xCurVertex; xLineDoubleIndex.a2_xIndex[1]=xCurVertex+1; /* set line index */ GEO_xSetIndexOfElementLines ( EDWAY_M_hCircleArcObjectGetGeometricObject(_hCircleArcObject), EDWAY_M_hCircleArcObjectGetLineElement(_hCircleArcObject), xCurVertex, &xLineDoubleIndex ); } } EDWAY_fnv_CircleArcObject_Calculate(_hCircleArcObject); } /* --------------------------------------- Contents : Frees memory allocated by the editor circle arc object --------------------------------------- Function Name : EDWAY_fnv_CircleArcObject_Free --------------------------------------- Arguments : * Name : _hOldCircleArcObject Type : EDWAY_tdhCircleArcObject Meaning : a valid handle on an editor cirlce arc object to free --------------------------------------- Return value : * None --------------------------------------- Error Raised : * None --------------------------------------- Creation : * Date : February 25,1997 * Author : Albert Pais --------------------------------------- Modification : * Date : * Author : * Modify : --------------------------------------- */ void EDWAY_fnv_CircleArcObject_Free (EDWAY_tdhCircleArcObject _hOldCircleArcObject) { if (_hOldCircleArcObject!=0) { // if (EDWAY_M_dstCircleArcObjectGetListOfPoints(_hOldCircleArcObject)!=0) // { // M_free(EDWAY_M_dstCircleArcObjectGetListOfPoints(_hOldCircleArcObject)); // EDWAY_M_vCircleArcObjectSetListOfPoints(_hOldCircleArcObject,0); // } /* if dynamic parameters are present, free memory too */ if (EDWAY_M_pstCircleArcObjectGetDynaParams(_hOldCircleArcObject)!=0) { //VL fn_vDynamicObject_Free //VL (EDWAY_M_pstCircleArcObjectGetDynaParams(_hOldCircleArcObject)); EDWAY_M_vCircleArcObjectSetDynaParams(_hOldCircleArcObject,0); } } } /* --------------------------------------- Contents : Compute the list of points sampling the circle arc curve according to data inside the structure. --------------------------------------- Function Name : EDWAY_fnv_CircleArcObject_Calculate --------------------------------------- Arguments : * Name : _hCircleArcObject Type : EDWAY_tdhCircleArcObject Meaning : A valid handle on a circle arc object. --------------------------------------- Return value : * None --------------------------------------- Error Raised : * None --------------------------------------- Creation : * Date : February 26,1997 * Author : Albert PAIS --------------------------------------- Modification : * Date : * Author : * Modify : --------------------------------------- */ void EDWAY_fnv_CircleArcObject_Calculate (EDWAY_tdhCircleArcObject _hCircleArcObject) { MTH3D_tdstVector *d_stListOfPoints; /* avoid crash :*/ if(_hCircleArcObject==0) return; if(EDWAY_M_ucCircleArcObjectGetObjectMode(_hCircleArcObject)==EDWAY_C_ucModeNoObject) { // d_stListOfPoints = EDWAY_M_dstCircleArcObjectGetListOfPoints(_hCircleArcObject); d_stListOfPoints = *_hCircleArcObject->m_pdstListOfPoints; } else { d_stListOfPoints = EDWAY_M_hCircleArcObjectGetGeometricObject(_hCircleArcObject) ->d_stListOfPoints; } /* compute local information :*/ MTH3D_fnv_CircleArcCurve_CalculatePointWithLocalInformation ( EDWAY_M_hCircleArcObjectGetCircleArcCurve(_hCircleArcObject), d_stListOfPoints, EDWAY_M_pstCircleArcObjectGetLocalRepere(_hCircleArcObject), EDWAY_M_xCircleArcObjectGetMainAngle(_hCircleArcObject) ); } /* --------------------------------------- Contents : Returns the size of the structure. --------------------------------------- Function Name : EDWAY_fnuw_CircleArcObject_SizeOf --------------------------------------- Arguments : * None --------------------------------------- Return value : * Type : unsigned short * Possible Value : * any possible unsigned short value The size of the structure --------------------------------------- Error Raised : * None --------------------------------------- Creation : * Date : February 26,1997 * Author : Albert Pais --------------------------------------- Modification : * Date : * Author : * Modify : --------------------------------------- */ unsigned short EDWAY_fnuw_CircleArcObject_SizeOf(void) { /* Using the macro makes it compulsory to define the function with the _EDWAY_CIRCLEARC_FRIEND_ compilation directive, in order to be sure that the structure is known at this level. */ return EDWAY_M_uwCircleArcObjectSizeOf(); } /* --------------------------------------- Contents : Returns the handle of the circle arc curve contained in the structure. --------------------------------------- Function Name : EDWAY_fnh_CircleArcObject_GetCircleArcCurve --------------------------------------- Arguments : * Name : _hCircleArcObject Type : EDWAY_tdhCircleArcObject Meaning : a handle on the circle arc object to retrieve --------------------------------------- Return value : * Type : MTH3D_tdhCircleArcCurve * Possible Value : * A valid handle (non-null) The handle of the circle arc curve contained inside the editor cirle arc object * MTH3D_C_h_CircleArcCurveInvalidHandle The function failed --------------------------------------- Error Raised : * None --------------------------------------- Creation : * Date : February 26, 1997 * Author : Albert PAIS --------------------------------------- Modification : * Date : * Author : * Modify : --------------------------------------- */ MTH3D_tdhCircleArcCurve EDWAY_fnh_CircleArcObject_GetCircleArcCurve (EDWAY_tdhCircleArcObject _hCircleArcObject) { if(_hCircleArcObject == 0) return MTH3D_C_h_CircleArcCurveInvalidHandle; /* Using the macro makes it compulsory to define the function with the _EDWAY_CIRCLEARC_FRIEND_ compilation directive, in order to be sure that the structure is known at this level. */ return EDWAY_M_hCircleArcObjectGetCircleArcCurve(_hCircleArcObject); } /* --------------------------------------- Contents : Returns the handle of geometric object contained in the structure. --------------------------------------- Function Name : EDWAY_fnh_CircleArcObject_GetGeometricObject --------------------------------------- Arguments : * Name : _hCircleArcObject Type : EDWAY_tdhCircleArcObject Meaning : a handle on the circle arc object to retrieve --------------------------------------- Return value : * Type : ACP_tdxHandleOfObject * Possible Value : * A valid handle (non-null) The handle of the geometric object contained inside the editor cirle arc object * NULL The function failed --------------------------------------- Error Raised : * None --------------------------------------- Creation : * Date : February 26, 1997 * Author : Albert PAIS --------------------------------------- Modification : * Date : * Author : * Modify : --------------------------------------- */ ACP_tdxHandleOfObject EDWAY_fnh_CircleArcObject_GetGeometricObject (EDWAY_tdhCircleArcObject _hCircleArcObject) { if(_hCircleArcObject == 0) return 0; /* Using the macro makes it compulsory to define the function with the _EDWAY_CIRCLEARC_FRIEND_ compilation directive, in order to be sure that the structure is known at this level. */ return EDWAY_M_hCircleArcObjectGetGeometricObject(_hCircleArcObject); } /* --------------------------------------- Contents : Returns the handle on line element contained in the structure. --------------------------------------- Function Name : EDWAY_fnh_CircleArcObject_GetLineElement --------------------------------------- Arguments : * Name : _hCircleArcObject Type : EDWAY_tdhCircleArcObject Meaning : a handle on the circle arc object to retrieve --------------------------------------- Return value : * Type : ACP_tdxHandleOfElement * Possible Value : * A valid handle (non-null) The handle of the line element contained inside the editor cirle arc object * NULL The function failed --------------------------------------- Error Raised : * None --------------------------------------- Creation : * Date : February 26, 1997 * Author : Albert PAIS --------------------------------------- Modification : * Date : * Author : * Modify : --------------------------------------- */ ACP_tdxHandleOfElement EDWAY_fnh_CircleArcObject_GetLineElement (EDWAY_tdhCircleArcObject _hCircleArcObject) { if(_hCircleArcObject == 0) return 0; /* Using the macro makes it compulsory to define the function with the _EDWAY_CIRCLEARC_FRIEND_ compilation directive, in order to be sure that the structure is known at this level. */ return EDWAY_M_hCircleArcObjectGetLineElement(_hCircleArcObject); } /* --------------------------------------- Contents : Returns the color contained in the structure. --------------------------------------- Function Name : EDWAY_fnl_CircleArcObject_GetColor --------------------------------------- Arguments : * Name : _hCircleArcObject Type : EDWAY_tdhCircleArcObject Meaning : a handle on the circle arc object to retrieve --------------------------------------- Return value : * Type : long * Possible Value : * A non-null value The color contained inside the editor cirle arc object * a zero-value The function failed --------------------------------------- Error Raised : * None --------------------------------------- Creation : * Date : February 26, 1997 * Author : Albert PAIS --------------------------------------- Modification : * Date : * Author : * Modify : --------------------------------------- */ long EDWAY_fnl_CircleArcObject_GetColor (EDWAY_tdhCircleArcObject _hCircleArcObject) { if(_hCircleArcObject == 0) return 0; /* Using the macro makes it compulsory to define the function with the _EDWAY_CIRCLEARC_FRIEND_ compilation directive, in order to be sure that the structure is known at this level. */ return EDWAY_M_lCircleArcObjectGetColor(_hCircleArcObject); } /* --------------------------------------- Contents : Returns the viewport attributes contained in the structure. --------------------------------------- Function Name : EDWAY_fnpst_CircleArcObject_GetViewPortAttributes --------------------------------------- Arguments : * Name : _hCircleArcObject Type : EDWAY_tdhCircleArcObject Meaning : a handle on the circle arc object to retrieve --------------------------------------- Return value : * Type : GLD_tdstViewportAttributes* * Possible Value : * A non-null value the viewport attributes contained inside the editor cirle arc object * a zero-value The function failed --------------------------------------- Error Raised : * None --------------------------------------- Creation : * Date : February 26, 1997 * Author : Albert PAIS --------------------------------------- Modification : * Date : * Author : * Modify : --------------------------------------- */ GLD_tdstViewportAttributes* EDWAY_fnpst_CircleArcObject_GetViewPortAttributes (EDWAY_tdhCircleArcObject _hCircleArcObject) { if(_hCircleArcObject == 0) return 0; /* Using the macro makes it compulsory to define the function with the _EDWAY_CIRCLEARC_FRIEND_ compilation directive, in order to be sure that the structure is known at this level. */ return EDWAY_M_pstCircleArcObjectGetViewPortAttributes(_hCircleArcObject); } /* --------------------------------------- Contents : Returns the list of points contained in the structure. --------------------------------------- Function Name : EDWAY_fndst_CircleArcObject_GetListOfPoints --------------------------------------- Arguments : * Name : _hCircleArcObject Type : EDWAY_tdhCircleArcObject Meaning : a handle on the circle arc object to retrieve --------------------------------------- Return value : * Type : MTH3D_tdstVector* * Possible Value : * A non-null value the list of points contained inside the editor cirle arc object * a zero-value The function failed --------------------------------------- Error Raised : * None --------------------------------------- Creation : * Date : February 26, 1997 * Author : Albert PAIS --------------------------------------- Modification : * Date : * Author : * Modify : --------------------------------------- */ MTH3D_tdstVector* EDWAY_fndst_CircleArcObject_GetListOfPoints (EDWAY_tdhCircleArcObject _hCircleArcObject) { if(_hCircleArcObject == 0) return 0; /* Using the macro makes it compulsory to define the function with the _EDWAY_CIRCLEARC_FRIEND_ compilation directive, in order to be sure that the structure is known at this level. */ // return EDWAY_M_dstCircleArcObjectGetListOfPoints(_hCircleArcObject); return *_hCircleArcObject->m_pdstListOfPoints; } /* --------------------------------------- Contents : Returns the dynamic parameters contained in the structure. --------------------------------------- Function Name : EDWAY_fnpst_CircleArcObject_GetDynaParams --------------------------------------- Arguments : * Name : _hCircleArcObject Type : EDWAY_tdhCircleArcObject Meaning : a handle on the circle arc object to retrieve --------------------------------------- Return value : * Type : ACP_tdstDynaParam* * Possible Value : * A non-null value The function succeeded * a zero-value The function failed --------------------------------------- Error Raised : * None --------------------------------------- Creation : * Date : February 26, 1997 * Author : Albert PAIS --------------------------------------- Modification : * Date : * Author : * Modify : --------------------------------------- */ ACP_tdstDynaParam* EDWAY_fnpst_CircleArcObject_GetDynaParams (EDWAY_tdhCircleArcObject _hCircleArcObject) { if(_hCircleArcObject == 0) return 0; /* Using the macro makes it compulsory to define the function with the _EDWAY_CIRCLEARC_FRIEND_ compilation directive, in order to be sure that the structure is known at this level. */ return EDWAY_M_pstCircleArcObjectGetDynaParams(_hCircleArcObject); } /* --------------------------------------- Contents : Returns the local repere contained in the structure. --------------------------------------- Function Name : EDWAY_fnv_CircleArcObject_GetLocalRepere --------------------------------------- Arguments : * Name : _hCircleArcObject Type : EDWAY_tdhCircleArcObject Meaning : a handle on the circle arc object to retrieve * Name : _pstLocalMatrix Type : MTH3D_tdstMatrix* Meaning : a pointer to a matrix structure that receives the local matrix --------------------------------------- Return value : * None --------------------------------------- Error Raised : * None --------------------------------------- Creation : * Date : February 26, 1997 * Author : Albert PAIS --------------------------------------- Modification : * Date : * Author : * Modify : --------------------------------------- */ void EDWAY_fnv_CircleArcObject_GetLocalRepere ( EDWAY_tdhCircleArcObject _hCircleArcObject, MTH3D_tdstMatrix*_pstLocalMatrix ) { if((_hCircleArcObject == 0)||(_pstLocalMatrix==0)) return; /* Using the macro makes it compulsory to define the function with the _EDWAY_CIRCLEARC_FRIEND_ compilation directive, in order to be sure that the structure is known at this level. */ EDWAY_M_vCircleArcObjectGetLocalRepere(_hCircleArcObject,_pstLocalMatrix); } /* --------------------------------------- Contents : Returns the inverse matrix of the local repere contained in the structure. --------------------------------------- Function Name : EDWAY_fnv_CircleArcObject_GetInvLocalRepere --------------------------------------- Arguments : * Name : _hCircleArcObject Type : EDWAY_tdhCircleArcObject Meaning : a handle on the circle arc object to retrieve * Name : _pstInvLocalMatrix Type : MTH3D_tdstMatrix* Meaning : a pointer to a matrix structure that receives the inverse of the local matrix --------------------------------------- Return value : * None --------------------------------------- Error Raised : * None --------------------------------------- Creation : * Date : February 26, 1997 * Author : Albert PAIS --------------------------------------- Modification : * Date : * Author : * Modify : --------------------------------------- */ void EDWAY_fnv_CircleArcObject_GetInvLocalRepere ( EDWAY_tdhCircleArcObject _hCircleArcObject, MTH3D_tdstMatrix*_pstInvLocalMatrix ) { if((_hCircleArcObject == 0)||(_pstInvLocalMatrix==0)) return; /* Using the macro makes it compulsory to define the function with the _EDWAY_CIRCLEARC_FRIEND_ compilation directive, in order to be sure that the structure is known at this level. */ EDWAY_M_vCircleArcObjectGetInvLocalRepere(_hCircleArcObject,_pstInvLocalMatrix); } /* --------------------------------------- Contents : Returns the local start point of the contained in the structure. --------------------------------------- Function Name : EDWAY_fnv_CircleArcObject_GetLocalStartPoint --------------------------------------- Arguments : * Name : _hCircleArcObject Type : EDWAY_tdhCircleArcObject Meaning : a handle on the circle arc object to retrieve * Name : _pstLocalStartPoint Type : MTH3D_tdstVector* Meaning : a pointer to a vector structure that receives the local start point --------------------------------------- Return value : * None --------------------------------------- Error Raised : * None --------------------------------------- Creation : * Date : February 26, 1997 * Author : Albert PAIS --------------------------------------- Modification : * Date : * Author : * Modify : --------------------------------------- */ void EDWAY_fnv_CircleArcObject_GetLocalStartPoint ( EDWAY_tdhCircleArcObject _hCircleArcObject, MTH3D_tdstVector*_pstLocalStartPoint ) { if((_hCircleArcObject == 0)||(_pstLocalStartPoint==0)) return; /* Using the macro makes it compulsory to define the function with the _EDWAY_CIRCLEARC_FRIEND_ compilation directive, in order to be sure that the structure is known at this level. */ EDWAY_M_vCircleArcObjectGetLocalStartPoint(_hCircleArcObject,_pstLocalStartPoint); } /* --------------------------------------- Contents : Returns the local end point of the contained in the structure. --------------------------------------- Function Name : EDWAY_fnv_CircleArcObject_GetLocalEndPoint --------------------------------------- Arguments : * Name : _hCircleArcObject Type : EDWAY_tdhCircleArcObject Meaning : a handle on the circle arc object to retrieve * Name : _pstLocalEndPoint Type : MTH3D_tdstVector* Meaning : a pointer to a vector structure that receives the local end point --------------------------------------- Return value : * None --------------------------------------- Error Raised : * None --------------------------------------- Creation : * Date : February 26, 1997 * Author : Albert PAIS --------------------------------------- Modification : * Date : * Author : * Modify : --------------------------------------- */ void EDWAY_fnv_CircleArcObject_GetLocalEndPoint ( EDWAY_tdhCircleArcObject _hCircleArcObject, MTH3D_tdstVector*_pstLocalEndPoint ) { if((_hCircleArcObject == 0)||(_pstLocalEndPoint==0)) return; /* Using the macro makes it compulsory to define the function with the _EDWAY_CIRCLEARC_FRIEND_ compilation directive, in order to be sure that the structure is known at this level. */ EDWAY_M_vCircleArcObjectGetLocalEndPoint(_hCircleArcObject,_pstLocalEndPoint); } /* --------------------------------------- Contents : Returns the main angle of the circle arc curve defined in the editor circle arc object. --------------------------------------- Function Name : EDWAY_fnx_CircleArcObject_GetMainAngle --------------------------------------- Arguments : * Name : _hCircleArcObject Type : EDWAY_tdhCircleArcObject Meaning : A valid handle on the circle arc object. --------------------------------------- Return value : * Type : MTH_tdxReal * Possible Value : * Any value different from MTH_C_InfinitPlus The function succeeded * MTH_C_InfinitPlus The function failed --------------------------------------- Error Raised : * None --------------------------------------- Creation : * Date : February 26, 1997 * Author : Albert PAIS --------------------------------------- Modification : * Date : * Author : * Modify : --------------------------------------- */ MTH_tdxReal EDWAY_fnx_CircleArcObject_GetMainAngle (EDWAY_tdhCircleArcObject _hCircleArcObject) { if(_hCircleArcObject==0) return MTH_C_InfinitPlus; /* Using the macro makes it compulsory to define the function with the _EDWAY_CIRCLEARC_FRIEND_ compilation directive, in order to be sure that the structure is known at this level. */ return EDWAY_M_xCircleArcObjectGetMainAngle(_hCircleArcObject); } /* --------------------------------------- Contents : Returns the object mode defined in the editor circle arc object. --------------------------------------- Function Name : EDWAY_fnuc_CircleArcObject_GetObjectMode --------------------------------------- Arguments : * Name : _hCircleArcObject Type : EDWAY_tdhCircleArcObject Meaning : A valid handle on the circle arc object. --------------------------------------- Return value : * Type : unsigned char * Possible Value : * EDWAY_C_ucModeNoObject Mode no object * EDWAY_C_ucModeRealObject Mode real object * (unsigned char)-1 The function failed. --------------------------------------- Error Raised : * None --------------------------------------- Creation : * Date : February 26, 1997 * Author : Albert PAIS --------------------------------------- Modification : * Date : * Author : * Modify : --------------------------------------- */ unsigned char EDWAY_fnuc_CircleArcObject_GetObjectMode (EDWAY_tdhCircleArcObject _hCircleArcObject) { if(_hCircleArcObject==0) return (unsigned char)-1; /* Using the macro makes it compulsory to define the function with the _EDWAY_CIRCLEARC_FRIEND_ compilation directive, in order to be sure that the structure is known at this level. */ return EDWAY_M_ucCircleArcObjectGetObjectMode(_hCircleArcObject); } /* --------------------------------------- Contents : Changes the circle arc curve field of the editor circle arc object. --------------------------------------- Function Name : EDWAY_fnv_CircleArcObject_SetCircleArcCurve --------------------------------------- Arguments : * Name : _hCircleArcObject Type : EDWAY_tdhCircleArcObject Meaning : a valid handle on a circle arc object * Name : _hNewCircleArcCurve Type : MTH3D_tdhCircleArcCurve Meaning : The new circle arc curve --------------------------------------- Return value : * None. --------------------------------------- Error Raised : * None --------------------------------------- Creation : * Date : February 26, 1997 * Author : Albert PAIS --------------------------------------- Modification : * Date : * Author : * Modify : --------------------------------------- */ void EDWAY_fnv_CircleArcObject_SetCircleArcCurve ( EDWAY_tdhCircleArcObject _hCircleArcObject, MTH3D_tdhCircleArcCurve _hNewCircleArcCurve ) { if(_hCircleArcObject==0) return; /* Using the macro makes it compulsory to define the function with the _EDWAY_CIRCLEARC_FRIEND_ compilation directive, in order to be sure that the structure is known at this level. */ EDWAY_M_vCircleArcObjectSetCircleArcCurve(_hCircleArcObject,_hNewCircleArcCurve); } /* --------------------------------------- Contents : Changes the geometric object field of the editor circle arc object. --------------------------------------- Function Name : EDWAY_fnv_CircleArcObject_SetGeometricObject --------------------------------------- Arguments : * Name : _hCircleArcObject Type : EDWAY_tdhCircleArcObject Meaning : a valid handle on a circle arc object * Name : _hNewGeometricObject Type : ACP_tdxHandleOfObject Meaning : The new geometric object --------------------------------------- Return value : * None. --------------------------------------- Error Raised : * None --------------------------------------- Creation : * Date : February 26, 1997 * Author : Albert PAIS --------------------------------------- Modification : * Date : * Author : * Modify : --------------------------------------- */ void EDWAY_fnv_CircleArcObject_SetGeometricObject ( EDWAY_tdhCircleArcObject _hCircleArcObject, ACP_tdxHandleOfObject _hNewGeometricObject ) { if(_hCircleArcObject==0) return; /* Using the macro makes it compulsory to define the function with the _EDWAY_CIRCLEARC_FRIEND_ compilation directive, in order to be sure that the structure is known at this level. */ EDWAY_M_vCircleArcObjectSetGeometricObject(_hCircleArcObject,_hNewGeometricObject); } /* --------------------------------------- Contents : Changes the line element field of the editor circle arc object. --------------------------------------- Function Name : EDWAY_fnv_CircleArcObject_SetLineElement --------------------------------------- Arguments : * Name : _hCircleArcObject Type : EDWAY_tdhCircleArcObject Meaning : a valid handle on a circle arc object * Name : _hNewLineElement Type : ACP_tdxHandleOfElement Meaning : The new line element. --------------------------------------- Return value : * None. --------------------------------------- Error Raised : * None --------------------------------------- Creation : * Date : February 26, 1997 * Author : Albert PAIS --------------------------------------- Modification : * Date : * Author : * Modify : --------------------------------------- */ void EDWAY_fnv_CircleArcObject_SetLineElement ( EDWAY_tdhCircleArcObject _hCircleArcObject, ACP_tdxHandleOfElement _hNewLineElement ) { if(_hCircleArcObject==0) return; /* Using the macro makes it compulsory to define the function with the _EDWAY_CIRCLEARC_FRIEND_ compilation directive, in order to be sure that the structure is known at this level. */ EDWAY_M_vCircleArcObjectSetLineElement(_hCircleArcObject,_hNewLineElement); } /* --------------------------------------- Contents : Changes the color field of the editor circle arc object. --------------------------------------- Function Name : EDWAY_fnv_CircleArcObject_SetColor --------------------------------------- Arguments : * Name : _hCircleArcObject Type : EDWAY_tdhCircleArcObject Meaning : a valid handle on a circle arc object * Name : _lNewColor Type : long Meaning : The new color. --------------------------------------- Return value : * None. --------------------------------------- Error Raised : * None --------------------------------------- Creation : * Date : February 26, 1997 * Author : Albert PAIS --------------------------------------- Modification : * Date : * Author : * Modify : --------------------------------------- */ void EDWAY_fnv_CircleArcObject_SetColor ( EDWAY_tdhCircleArcObject _hCircleArcObject, long _lNewColor ) { if(_hCircleArcObject == 0) return; /* Using the macro makes it compulsory to define the function with the _EDWAY_CIRCLEARC_FRIEND_ compilation directive, in order to be sure that the structure is known at this level. */ EDWAY_M_vCircleArcObjectSetColor(_hCircleArcObject,_lNewColor); } /* --------------------------------------- Contents : Changes the viewport attributes field of the editor circle arc object. --------------------------------------- Function Name : EDWAY_fnv_CircleArcObject_SetViewPortAttributes --------------------------------------- Arguments : * Name : _hCircleArcObject Type : EDWAY_tdhCircleArcObject Meaning : a valid handle on a circle arc object * Name : _pstNewViewportAttributes Type : GLD_tdstViewportAttributes* Meaning : The new viewport attributes. --------------------------------------- Return value : * None. --------------------------------------- Error Raised : * None --------------------------------------- Creation : * Date : February 26, 1997 * Author : Albert PAIS --------------------------------------- Modification : * Date : * Author : * Modify : --------------------------------------- */ void EDWAY_fnv_CircleArcObject_SetViewPortAttributes ( EDWAY_tdhCircleArcObject _hCircleArcObject, GLD_tdstViewportAttributes*_pstNewViewportAttributes ) { if(_hCircleArcObject == 0) return; /* Using the macro makes it compulsory to define the function with the _EDWAY_CIRCLEARC_FRIEND_ compilation directive, in order to be sure that the structure is known at this level. */ EDWAY_M_vCircleArcObjectSetViewPortAttributes(_hCircleArcObject,_pstNewViewportAttributes); } /* --------------------------------------- Contents : Changes the list of points field of the editor circle arc object. --------------------------------------- Function Name : EDWAY_fnv_CircleArcObject_SetListOfPoints --------------------------------------- Arguments : * Name : _hCircleArcObject Type : EDWAY_tdhCircleArcObject Meaning : a valid handle on a circle arc object * Name : _dstNewListOfPoints Type : MTH3D_tdstVector* Meaning : The new list of points. --------------------------------------- Return value : * None. --------------------------------------- Error Raised : * None --------------------------------------- Creation : * Date : February 26, 1997 * Author : Albert PAIS --------------------------------------- Modification : * Date : * Author : * Modify : --------------------------------------- */ void EDWAY_fnv_CircleArcObject_SetListOfPoints ( EDWAY_tdhCircleArcObject _hCircleArcObject, MTH3D_tdstVector*_dstNewListOfPoints ) { if(_hCircleArcObject==0) return; /* Using the macro makes it compulsory to define the function with the _EDWAY_CIRCLEARC_FRIEND_ compilation directive, in order to be sure that the structure is known at this level. */ // EDWAY_M_vCircleArcObjectSetListOfPoints(_hCircleArcObject,_dstNewListOfPoints); *_hCircleArcObject->m_pdstListOfPoints = _dstNewListOfPoints; } /* --------------------------------------- Contents : Changes the dynamic params pointer field of the editor circle arc object. --------------------------------------- Function Name : EDWAY_fnv_CircleArcObject_SetDynaParams --------------------------------------- Arguments : * Name : _hCircleArcObject Type : EDWAY_tdhCircleArcObject Meaning : a valid handle on a circle arc object * Name : _pstNewDynaParam Type : ACP_tdstDynaParam* Meaning : The new dyna params pointer. --------------------------------------- Return value : * None. --------------------------------------- Error Raised : * None --------------------------------------- Creation : * Date : February 26, 1997 * Author : Albert PAIS --------------------------------------- Modification : * Date : * Author : * Modify : --------------------------------------- */ void EDWAY_fnv_CircleArcObject_SetDynaParams ( EDWAY_tdhCircleArcObject _hCircleArcObject, ACP_tdstDynaParam *_pstNewDynaParam ) { if(_hCircleArcObject==0) return; /* Using the macro makes it compulsory to define the function with the _EDWAY_CIRCLEARC_FRIEND_ compilation directive, in order to be sure that the structure is known at this level. */ EDWAY_M_vCircleArcObjectSetDynaParams(_hCircleArcObject,_pstNewDynaParam); } /* --------------------------------------- Contents : Changes the local repere field of the editor circle arc object. --------------------------------------- Function Name : EDWAY_fnv_CircleArcObject_SetLocalRepere --------------------------------------- Arguments : * Name : _hCircleArcObject Type : EDWAY_tdhCircleArcObject Meaning : a valid handle on a circle arc object * Name : _pstNewLocalRepere Type : MTH3D_tdstMatrix* Meaning : The new local repere. --------------------------------------- Return value : * None. --------------------------------------- Error Raised : * None --------------------------------------- Creation : * Date : February 26, 1997 * Author : Albert PAIS --------------------------------------- Modification : * Date : * Author : * Modify : --------------------------------------- */ void EDWAY_fnv_CircleArcObject_SetLocalRepere ( EDWAY_tdhCircleArcObject _hCircleArcObject, MTH3D_tdstMatrix* _pstNewLocalRepere ) { if(_hCircleArcObject==0) return; /* Using the macro makes it compulsory to define the function with the _EDWAY_CIRCLEARC_FRIEND_ compilation directive, in order to be sure that the structure is known at this level. */ EDWAY_M_vCircleArcObjectSetLocalRepere(_hCircleArcObject,_pstNewLocalRepere); } /* --------------------------------------- Contents : Changes the inverse local repere field of the editor circle arc object. --------------------------------------- Function Name : EDWAY_fnv_CircleArcObject_SetInvLocalRepere --------------------------------------- Arguments : * Name : _hCircleArcObject Type : EDWAY_tdhCircleArcObject Meaning : a valid handle on a circle arc object * Name : _pstNewInvLocalRepere Type : MTH3D_tdstMatrix* Meaning : The new inverse local repere. --------------------------------------- Return value : * None. --------------------------------------- Error Raised : * None --------------------------------------- Creation : * Date : February 26, 1997 * Author : Albert PAIS --------------------------------------- Modification : * Date : * Author : * Modify : --------------------------------------- */ void EDWAY_fnv_CircleArcObject_SetInvLocalRepere ( EDWAY_tdhCircleArcObject _hCircleArcObject, MTH3D_tdstMatrix*_pstNewInvLocalRepere ) { if(_hCircleArcObject) return; /* Using the macro makes it compulsory to define the function with the _EDWAY_CIRCLEARC_FRIEND_ compilation directive, in order to be sure that the structure is known at this level. */ EDWAY_M_vCircleArcObjectSetInvLocalRepere(_hCircleArcObject,_pstNewInvLocalRepere); } /* --------------------------------------- Contents : Changes the local start point field of the editor circle arc object. --------------------------------------- Function Name : EDWAY_fnv_CircleArcObject_SetLocalStartPoint --------------------------------------- Arguments : * Name : _hCircleArcObject Type : EDWAY_tdhCircleArcObject Meaning : a valid handle on a circle arc object * Name : _pstNewLocalStartPoint Type : MTH3D_tdstVertex* Meaning : The new local start point. --------------------------------------- Return value : * None. --------------------------------------- Error Raised : * None --------------------------------------- Creation : * Date : February 26, 1997 * Author : Albert PAIS --------------------------------------- Modification : * Date : * Author : * Modify : --------------------------------------- */ void EDWAY_fnv_CircleArcObject_SetLocalStartPoint ( EDWAY_tdhCircleArcObject _hCircleArcObject, MTH3D_tdstVector*_pstNewLocalStartPoint ) { if(_hCircleArcObject==0) return; /* Using the macro makes it compulsory to define the function with the _EDWAY_CIRCLEARC_FRIEND_ compilation directive, in order to be sure that the structure is known at this level. */ EDWAY_M_vCircleArcObjectSetLocalStartPoint(_hCircleArcObject,_pstNewLocalStartPoint); } /* --------------------------------------- Contents : Changes the local end point field of the editor circle arc object. --------------------------------------- Function Name : EDWAY_fnv_CircleArcObject_SetLocalEndPoint --------------------------------------- Arguments : * Name : _hCircleArcObject Type : EDWAY_tdhCircleArcObject Meaning : a valid handle on a circle arc object * Name : _pstNewLocalEndPoint Type : MTH3D_tdstVertex* Meaning : The new local end point. --------------------------------------- Return value : * None. --------------------------------------- Error Raised : * None --------------------------------------- Creation : * Date : February 26, 1997 * Author : Albert PAIS --------------------------------------- Modification : * Date : * Author : * Modify : --------------------------------------- */ void EDWAY_fnv_CircleArcObject_SetLocalEndPoint ( EDWAY_tdhCircleArcObject _hCircleArcObject, MTH3D_tdstVector*_pstNewLocalEndPoint ) { if(_hCircleArcObject==0) return; /* Using the macro makes it compulsory to define the function with the _EDWAY_CIRCLEARC_FRIEND_ compilation directive, in order to be sure that the structure is known at this level. */ EDWAY_M_vCircleArcObjectSetLocalEndPoint(_hCircleArcObject,_pstNewLocalEndPoint); } /* --------------------------------------- Contents : Changes the main angle field of the editor circle arc object. --------------------------------------- Function Name : EDWAY_fnv_CircleArcObject_SetMainAngle --------------------------------------- Arguments : * Name : _hCircleArcObject Type : EDWAY_tdhCircleArcObject Meaning : a valid handle on a circle arc object * Name : _xNewMainAngle Type : MTH_tdxReal Meaning : The new main angle. --------------------------------------- Return value : * None. --------------------------------------- Error Raised : * None --------------------------------------- Creation : * Date : February 26, 1997 * Author : Albert PAIS --------------------------------------- Modification : * Date : * Author : * Modify : --------------------------------------- */ void EDWAY_fnv_CircleArcObject_SetMainAngle ( EDWAY_tdhCircleArcObject _hCircleArcObject, MTH_tdxReal _xNewMainAngle ) { if(_hCircleArcObject==0) return; /* Using the macro makes it compulsory to define the function with the _EDWAY_CIRCLEARC_FRIEND_ compilation directive, in order to be sure that the structure is known at this level. */ EDWAY_M_vCircleArcObjectSetMainAngle(_hCircleArcObject,_xNewMainAngle); } /* --------------------------------------- Contents : Changes the object mode field of the editor circle arc object. --------------------------------------- Function Name : EDWAY_fnv_CircleArcObject_SetObjectMode --------------------------------------- Arguments : * Name : _hCircleArcObject Type : EDWAY_tdhCircleArcObject Meaning : a valid handle on a circle arc object * Name : _ucNewObjectMode Type : unsigned char Meaning : The new object mode. --------------------------------------- Return value : * None. --------------------------------------- Error Raised : * None --------------------------------------- Creation : * Date : February 26, 1997 * Author : Albert PAIS --------------------------------------- Modification : * Date : * Author : * Modify : --------------------------------------- */ void EDWAY_fnv_CircleArcObject_SetObjectMode ( EDWAY_tdhCircleArcObject _hCircleArcObject, unsigned char _ucNewObjectMode ) { if(_hCircleArcObject==0) return; /* Using the macro makes it compulsory to define the function with the _EDWAY_CIRCLEARC_FRIEND_ compilation directive, in order to be sure that the structure is known at this level. */ EDWAY_M_vCircleArcObjectSetObjectMode(_hCircleArcObject,_ucNewObjectMode); } /* --------------------------------------- Contents : Changes the sampling rate field and compute the new list of sampling point. --------------------------------------- Function Name : EDWAY_fnb_CircleArcObject_ChangeSamplingRate --------------------------------------- Arguments : * Name : _hCircleArcObject Type : EDWAY_tdhCircleArcObject Meaning : a valid handle on a circle arc object * Name : _ucNewSamplingRate Type : unsigned char Meaning : The new sampling rate. --------------------------------------- Return value : * Type : ACP_tdxBool * Possible values : * TRUE : The function succeeded. * FALSE : The function failed. --------------------------------------- Error Raised : * None --------------------------------------- Creation : * Date : February 26, 1997 * Author : Albert PAIS --------------------------------------- Modification : * Date : * Author : * Modify : --------------------------------------- Remarks : * The sampling rate can only be modified for objects that have been created using C_ucModeNoObject at their creation. --------------------------------------- */ ACP_tdxBool EDWAY_fnb_CircleArcObject_ChangeSamplingRate ( EDWAY_tdhCircleArcObject _hCircleArcObject, unsigned char _ucNewSamplingRate ) { if (_hCircleArcObject==0) return FALSE; if (EDWAY_M_ucCircleArcObjectGetObjectMode(_hCircleArcObject)==EDWAY_C_ucModeNoObject) { /* copies new sampling rate value into objects parameters */ if(_ucNewSamplingRate<2) _ucNewSamplingRate = 2; MTH3D_M_vCircleArcCurveSetSamplingRate ( EDWAY_M_hCircleArcObjectGetCircleArcCurve(_hCircleArcObject), _ucNewSamplingRate ); /* free old list of points and allocates new one */ // if (EDWAY_M_dstCircleArcObjectGetListOfPoints(_hCircleArcObject)!=0) // M_free(EDWAY_M_dstCircleArcObjectGetListOfPoints(_hCircleArcObject)); if (*_hCircleArcObject->m_pdstListOfPoints!=0) M_free(*_hCircleArcObject->m_pdstListOfPoints); M_malloc ( *_hCircleArcObject->m_pdstListOfPoints, MTH3D_tdstVector*, (_ucNewSamplingRate+1)*sizeof(MTH3D_tdstVector) ); /* calculate points of CircleArc curve */ EDWAY_fnv_CircleArcObject_Calculate(_hCircleArcObject); /* checks if dynamic parameters are attached to the object if yes, changes them to match the new sampling rate */ /*VL fn_vDynamicObject_ChangeSamplingRate ( EDWAY_M_pstCircleArcObjectGetDynaParams(_hCircleArcObject), _ucNewSamplingRate ); */ return TRUE; } else return FALSE; } /* --------------------------------------- Contents : Changes starting, ending and center points and reprocess the local information and list of sampled points --------------------------------------- Function Name : EDWAY_fnv_CircleArcObject_ChangeParams --------------------------------------- Arguments : * Name : _hCircleArcObject Type : EDWAY_tdhCircleArcObject Meaning : a valid handle on a circle arc object * Name : _pstNewStartPoint Type : MTH3D_tdstVector* Meaning : The new starting point. * Name : _pstNewEndPoint Type : MTH3D_tdstVector* Meaning : The new ending point. * Name : _pstNewCenterPoint Type : MTH3D_tdstVector* Meaning : The new center point. --------------------------------------- Return value : * None. --------------------------------------- Error Raised : * None --------------------------------------- Creation : * Date : February 27, 1997 * Author : Albert PAIS --------------------------------------- Modification : * Date : * Author : * Modify : --------------------------------------- Remark : If one of the pointers to the points has a null value, it is simply not changed. --------------------------------------- */ void EDWAY_fnv_CircleArcObject_ChangeParams ( EDWAY_tdhCircleArcObject _hCircleArcObject, MTH3D_tdstVector*_pstNewStartPoint, MTH3D_tdstVector*_pstNewEndPoint, MTH3D_tdstVector*_pstNewCenterPoint ) { MTH3D_tdstMatrix stLocalMatrix,stInvLocalMatrix; MTH3D_tdstVector stLocalStartPoint,stLocalEndPoint; if(_hCircleArcObject==0)return; MTH3D_fnv_CircleArcCurve_SetParams ( EDWAY_M_hCircleArcObjectGetCircleArcCurve(_hCircleArcObject), _pstNewStartPoint, _pstNewEndPoint, _pstNewCenterPoint ); /* Compute new local information : */ MTH3D_fnv_CircleArcCurve_ComputeLocalInformation ( EDWAY_M_hCircleArcObjectGetCircleArcCurve(_hCircleArcObject), &stLocalMatrix, &stLocalStartPoint, &stLocalEndPoint, &stInvLocalMatrix ); /* Change params of the circle arc object :*/ EDWAY_M_vCircleArcObjectSetLocalRepere(_hCircleArcObject,&stLocalMatrix); EDWAY_M_vCircleArcObjectSetLocalStartPoint(_hCircleArcObject,&stLocalStartPoint); EDWAY_M_vCircleArcObjectSetLocalEndPoint(_hCircleArcObject,&stLocalEndPoint); EDWAY_M_vCircleArcObjectSetInvLocalRepere(_hCircleArcObject,&stInvLocalMatrix); /* change the main angle :*/ EDWAY_M_vCircleArcObjectSetMainAngle ( _hCircleArcObject, MTH3D_fnx_CircleArcCurve_ComputeMainAngle(EDWAY_M_hCircleArcObjectGetCircleArcCurve(_hCircleArcObject)) ); /* compute the new list of sampled point :*/ EDWAY_fnv_CircleArcObject_Calculate(_hCircleArcObject); } /* --------------------------------------- Contents : Retrieves starting, ending and center points. --------------------------------------- Function Name : EDWAY_fnv_CircleArcObject_GetParams --------------------------------------- Arguments : * Name : _hCircleArcObject Type : EDWAY_tdhCircleArcObject Meaning : a valid handle on a circle arc object * Name : _pstStartPoint Type : MTH3D_tdstVector* Meaning : The starting point. * Name : _pstEndPoint Type : MTH3D_tdstVector* Meaning : The ending point. * Name : _pstCenterPoint Type : MTH3D_tdstVector* Meaning : The center point. --------------------------------------- Return value : * None. --------------------------------------- Error Raised : * None --------------------------------------- Creation : * Date : February 27, 1997 * Author : Albert PAIS --------------------------------------- Modification : * Date : * Author : * Modify : --------------------------------------- Remark : If one of the pointers to the points has a null value, it is simply not retrieved. --------------------------------------- */ void EDWAY_fnv_CircleArcObject_GetParams ( EDWAY_tdhCircleArcObject _hCircleArcObject, MTH3D_tdstVector*_pstStartPoint, MTH3D_tdstVector*_pstEndPoint, MTH3D_tdstVector*_pstCenterPoint ) { if(_hCircleArcObject==0) return; MTH3D_fnv_CircleArcCurve_GetParams ( EDWAY_M_hCircleArcObjectGetCircleArcCurve(_hCircleArcObject), _pstStartPoint, _pstEndPoint, _pstCenterPoint ); } /* --------------------------------------- Contents : Retrieves a specific sampled speed. --------------------------------------- Function Name : fn_xCircleArcObject_GetSpeed --------------------------------------- Arguments : * Name : _hCircleArcObject Type : EDWAY_tdhCircleArcObject Meaning : a valid handle on a circle arc object * Name : _ucSampledIndex Type : unsigned char Meaning : The index of the sampled speed --------------------------------------- Return value : * Type : MTH_tdxReal. * Possible values : * any MTH_tdxReal possible value excepted MTH_C_InfinitPlus : The function succeeded * MTH_C_InfinitPlus : The function failed. --------------------------------------- Error Raised : * None --------------------------------------- Creation : * Date : February 27, 1997 * Author : Albert PAIS --------------------------------------- Modification : * Date : * Author : * Modify : --------------------------------------- */ MTH_tdxReal fn_xCircleArcObject_GetSpeed ( EDWAY_tdhCircleArcObject _hCircleArcObject, unsigned char _ucSampledIndex ) { if(_hCircleArcObject==0) return MTH_C_InfinitPlus; //VL return fn_xDynamicObject_GetSpeed //( //EDWAY_M_pstCircleArcObjectGetDynaParams(_hCircleArcObject), //_ucSampledIndex //); return 0; } /* --------------------------------------- Contents : Retrieves a specific sampled point. --------------------------------------- Function Name : EDWAY_fnv_CircleArcObject_GetPoint --------------------------------------- Arguments : * Name : _hCircleArcObject Type : EDWAY_tdhCircleArcObject Meaning : a valid handle on a circle arc object * Name : _ucSampledIndex Type : unsigned char Meaning : The index of the sampled speed * Name : _pstSampledPoint Type : MTH3D_tdstVector* Meaning : The sampled point --------------------------------------- Return value : * None. --------------------------------------- Error Raised : * None --------------------------------------- Creation : * Date : February 27, 1997 * Author : Albert PAIS --------------------------------------- Modification : * Date : * Author : * Modify : --------------------------------------- */ void EDWAY_fnv_CircleArcObject_GetPoint ( EDWAY_tdhCircleArcObject _hCircleArcObject, unsigned char _ucSampledIndex, MTH3D_tdstVector*_pstSampledPoint ) { MTH3D_tdstVector *dstListOfPoints; if((_hCircleArcObject==0)||(_pstSampledPoint==0)) return; if(EDWAY_M_ucCircleArcObjectGetObjectMode(_hCircleArcObject)== EDWAY_C_ucModeNoObject) { // dstListOfPoints = EDWAY_M_dstCircleArcObjectGetListOfPoints(_hCircleArcObject); dstListOfPoints = *_hCircleArcObject->m_pdstListOfPoints; } else { dstListOfPoints = EDWAY_M_hCircleArcObjectGetGeometricObject(_hCircleArcObject)->d_stListOfPoints; } *_pstSampledPoint = dstListOfPoints[_ucSampledIndex]; } /* --------------------------------------- Contents : Draws the circle arc curve. --------------------------------------- Function Name : EDWAY_fnv_CircleArcObject_Draw --------------------------------------- Arguments : * Name : _hCircleArcObject Type : EDWAY_tdhCircleArcObject Meaning : a valid handle on a circle arc object --------------------------------------- Return value : * None. --------------------------------------- Error Raised : * None --------------------------------------- Creation : * Date : February 27, 1997 * Author : Albert PAIS --------------------------------------- Modification : * Date : * Author : * Modify : --------------------------------------- */ void EDWAY_fnv_CircleArcObject_Draw (EDWAY_tdhCircleArcObject _hCircleArcObject) { POS_tdstCompletePosition stMatrix; GEO_tdstColor ColBidon; MTH3D_tdstVector *p_stPointList; MTH3D_tdstVector *p_stPointListEnd; unsigned char ucSamplingRate; POS_fn_vSetIdentityMatrix(&stMatrix); if (_hCircleArcObject==0) return; /* avoid crash */ /* unsigned long color; */ ColBidon.xR=(float)0.5; ColBidon.xG=(float)0.5; ColBidon.xB=(float)0.5; ColBidon.xA=(float)0.5; if (EDWAY_M_ucCircleArcObjectGetObjectMode(_hCircleArcObject) ==EDWAY_C_ucModeRealObject) { p_stPointList= EDWAY_M_hCircleArcObjectGetGeometricObject(_hCircleArcObject) -> d_stListOfPoints; } else { // p_stPointList=EDWAY_M_dstCircleArcObjectGetListOfPoints(_hCircleArcObject); p_stPointList = *_hCircleArcObject->m_pdstListOfPoints; } if (p_stPointList==0) return; GLI_xGetCameraMatrix( ((GLI_tdstSpecificAttributesFor3D*) ((EDWAY_M_pstCircleArcObjectGetViewPortAttributes(_hCircleArcObject))->p_vSpecificToXD)) ->p_stCam,&stMatrix); ucSamplingRate = MTH3D_M_ucCircleArcCurveGetSamplingRate (EDWAY_M_hCircleArcObjectGetCircleArcCurve(_hCircleArcObject)); GLI_xLoadMatrix(&stMatrix); GLI_vSetFog(100,100,200,&ColBidon); p_stPointListEnd=p_stPointList+ucSamplingRate; for (;p_stPointList