reman3/Rayman_X/cpa/tempgrp/Owp/src/Edi_CiAr.cpp

2612 lines
68 KiB
C++
Raw Blame History

/*
------------------------------------------------------------------------------------------
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<54>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<p_stPointListEnd;p_stPointList++)
{
GLI_xDraw3DLine16
(
(struct GLD_tdstViewportAttributes_*)(EDWAY_M_pstCircleArcObjectGetViewPortAttributes(_hCircleArcObject)),
p_stPointList,
p_stPointList+1,
EDWAY_M_lCircleArcObjectGetColor(_hCircleArcObject)
);
}
GLI_xPopMatrix();
}
/*
---------------------------------------
Contents :
Converts a point from the global repere
to the local repere of the circle arc
curve.
---------------------------------------
Function Name :
EDWAY_fnv_CircleArcObject_GlobalToLocal
---------------------------------------
Arguments :
* Name : _hCircleArcObject
Type : EDWAY_tdhCircleArcObject
Meaning : a valid handle on a circle arc
object
* Name : _pstDestPoint
Type : MTH3D_tdstVector*
Meaning : The destination point
* Name : _pstSrcPoint
Type : MTH3D_tdstVector*
Meaning : The source point
---------------------------------------
Return value :
* None.
---------------------------------------
Error Raised :
* None
---------------------------------------
Creation :
* Date :
February 27, 1997
* Author :
Albert PAIS
---------------------------------------
Modification :
* Date :
* Author :
* Modify :
---------------------------------------
*/
void EDWAY_fnv_CircleArcObject_GlobalToLocal
(
EDWAY_tdhCircleArcObject _hCircleArcObject,
MTH3D_tdstVector*_pstDestPoint,
MTH3D_tdstVector*_pstSrcPoint
)
{
MTH3D_tdstMatrix stInvLocalRepere;
if((_hCircleArcObject==0)||(_pstDestPoint==0)||(_pstSrcPoint==0))
return;
EDWAY_M_vCircleArcObjectGetInvLocalRepere(_hCircleArcObject,&stInvLocalRepere);
MTH3D_fnv_CircleArcCurve_ComputeVectorFromGlobalToLocalRepere
(
EDWAY_M_hCircleArcObjectGetCircleArcCurve(_hCircleArcObject),
_pstDestPoint,
_pstSrcPoint,
&stInvLocalRepere
);
}
/*
---------------------------------------
Contents :
Converts a point from the local repere
of the circle arc curve to the global
repere.
---------------------------------------
Function Name :
EDWAY_fnv_CircleArcObject_LocalToGlobal
---------------------------------------
Arguments :
* Name : _hCircleArcObject
Type : EDWAY_tdhCircleArcObject
Meaning : a valid handle on a circle arc
object
* Name : _pstDestPoint
Type : MTH3D_tdstVector*
Meaning : The destination point
* Name : _pstSrcPoint
Type : MTH3D_tdstVector*
Meaning : The source point
---------------------------------------
Return value :
* None.
---------------------------------------
Error Raised :
* None
---------------------------------------
Creation :
* Date :
February 27, 1997
* Author :
Albert PAIS
---------------------------------------
Modification :
* Date :
* Author :
* Modify :
---------------------------------------
*/void EDWAY_fnv_CircleArcObject_LocalToGlobal
(
EDWAY_tdhCircleArcObject _hCircleArcObject,
MTH3D_tdstVector*_pstDestPoint,
MTH3D_tdstVector*_pstSrcPoint
)
{
MTH3D_tdstMatrix stLocalRepere;
if((_hCircleArcObject==0)||(_pstDestPoint==0)||(_pstSrcPoint==0))
return;
EDWAY_M_vCircleArcObjectGetLocalRepere(_hCircleArcObject,&stLocalRepere);
MTH3D_fnv_CircleArcCurve_ComputeVectorFromLocalToGlobalRepere
(
EDWAY_M_hCircleArcObjectGetCircleArcCurve(_hCircleArcObject),
_pstDestPoint,
_pstSrcPoint,
&stLocalRepere
);
}