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

2005 lines
49 KiB
C++
Raw Blame History

/*
------------------------------------------------------------------------------------------
IMPLEMENTATION FILE FOR :
Definition of (way) editor object : bezier curves.
------------------------------------------------------------------------------------------
File Name :
Edi_Bez.c
------------------------------------------------------------------------------------------
Creation Date :
February 20,1997
Author :
Albert PAIS
------------------------------------------------------------------------------------------
Contents :
This file implements structures and functions for the bezier curve used by
the (way) editor.
------------------------------------------------------------------------------------------
Remarks :
Code comes from old bezier.c made by Yann Le Tensorer (January-February 1997)
------------------------------------------------------------------------------------------
See Also :
* Bezier.h for definition.
* Mth_Bezier.h/.c for mathematical bezier 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_Bez.h
----------------------------------------
Required for :
Definition of Bezier editor
structures and functions
----------------------------------------
*/
#define _EDWAY_BEZ_FRIEND_
#include "Edi_Bez.h"
#undef _EDWAY_BEZ_FRIEND_
/*
----------------------------------------
File Name :
geoobj.h
----------------------------------------
Required for :
For geometric object
----------------------------------------
*/
#include "geo.h"
/*
----------------------------------------
File Name :
Mth_Bez.h
----------------------------------------
Required for :
For MTH Bezier Curve definitions
----------------------------------------
*/
#include "Mth_Bez.h"
/*
------------------------------------------------------------------------------------------
FUNCTIONS AND MACROS-FUNCTIONS DECLARATION:
------------------------------------------------------------------------------------------
*/
#define M_malloc(pointer,cast,size) (pointer=(cast)malloc(size))
#define M_free(pointer) (free(pointer))
int iJustToLinkBezBidouille;
void fn_vJustToLinkBez (void) { iJustToLinkBezBidouille=1; }
/*
---------------------------------------
Contents :
Allocates a new editor bezier object
structure.
---------------------------------------
Function Name :
EDWAY_fnh_BezierObject_CreateStructure
---------------------------------------
Arguments :
* None
---------------------------------------
Return value :
* Type :
EDWAY_tdhBezierObject
* Possible Value :
* A valid handle (non-null)
The function succeded
* An invalid handle (null value)
Allocation failed.
---------------------------------------
Error Raised :
* None
---------------------------------------
Creation :
* Date :
February 27,1997
* Author :
Albert PAIS
---------------------------------------
Modification :
* Date :
* Author :
* Modify :
---------------------------------------
*/
EDWAY_tdhBezierObject EDWAY_fnh_BezierObject_CreateStructure(void)
{
EDWAY_tdhBezierObject hNewBezierObject;
M_malloc(hNewBezierObject,EDWAY_tdhBezierObject,EDWAY_M_uwBezierObjectSizeOf());
if(hNewBezierObject)
memset(hNewBezierObject,0,EDWAY_M_uwBezierObjectSizeOf());
return hNewBezierObject;
}
/*
---------------------------------------
Contents :
Destroy the structure.
---------------------------------------
Function Name :
EDWAY_fnv_BezierObject_DestroyStructure
---------------------------------------
Arguments :
* Name : _hOldBezierObject
Type : EDWAY_tdhBezierObject
Meaning : a valid handle on an editor
bezier object to destroy
---------------------------------------
Return value :
* None
---------------------------------------
Error Raised :
* None
---------------------------------------
Creation :
* Date :
February 27,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_BezierObject_Free
should be done.
----------------------------------------
See Also :
* EDWAY_fnv_CircleArcObject_Free
----------------------------------------
*/
void EDWAY_fnv_BezierObject_DestroyStructure
(EDWAY_tdhBezierObject _hOldBezierObject)
{
/* avoid crash :*/
if(_hOldBezierObject == 0)
return;
M_free(_hOldBezierObject);
}
/*
---------------------------------------
Contents :
Create Bezier curve (in ram only)
between two points.
---------------------------------------
Function Name :
EDWAY_fnv_BezierObject_Create
---------------------------------------
Arguments :
* _hBezierObject
EDWAY_tdhBezierObject
A valid handle on a editor bezier
object
* _ucSamplingRate
unsigned char
The sampling rate of the curve
* _pstStartPoint
MTH3D_tdstVector*
The starting point of the bezier
curve
* _pstEndPoint
MTH3D_tdstVector*
The ending point of the bezier
curve
* _pstStartVector
MTH3D_tdstVector*
The first tangent vector of the bezier
curve
* _pstEndVector
MTH3D_tdstVector*
The last tangent vector of the bezier
curve
* _ucObjectMode
unsigned char
The object mode (real or no object)
* _pstDynaParam
ACP_tdstDynaParam*
A pointer to the dynamic parameters
associated with the bezier curve
---------------------------------------
Return value :
* None
---------------------------------------
Error Raised :
* None
---------------------------------------
Creation :
* Date :
February 20,1997
* Author :
Albert PAIS
---------------------------------------
Modification :
* Date :
* Author :
* Modify :
----------------------------------------
Remark :
Codes come from previous Bezier.c made by
Yann Le Tensorer (February 1997)
---------------------------------------
*/
void EDWAY_fnv_BezierObject_Create
(
EDWAY_tdhBezierObject _hBezierObject,
unsigned char _ucSamplingRate,
MTH3D_tdstVector*_pstStartPoint,
MTH3D_tdstVector*_pstEndPoint,
MTH3D_tdstVector*_pstStartVector,
MTH3D_tdstVector*_pstEndVector,
unsigned char _ucObjectMode,
ACP_tdstDynaParam*_pstDynaParams,
MTH3D_tdstVector** pdstListOfPoints
)
{
MTH3D_tdhBezierCurve MTH3D_hBezierCurve;
GEO_tdstDoubledIndex xLineDoubleIndex;
long xCurVertex;
if (_hBezierObject==0) return; /* avoid crash */
/* Create a mathematical bezier object :*/
MTH3D_hBezierCurve = MTH3D_fnh_BezierCurve_Create();
if(MTH3D_hBezierCurve==0) return; /* avoid crash */
MTH3D_fnv_BezierCurve_Init
(
MTH3D_hBezierCurve,
_ucSamplingRate,
_pstStartPoint,
_pstEndPoint,
_pstStartVector,
_pstEndVector
);
/* copies input parameters into objects parameters */
EDWAY_M_vBezierObjectSetBezierCurve(_hBezierObject,MTH3D_hBezierCurve);
EDWAY_M_vBezierObjectSetObjectMode(_hBezierObject,_ucObjectMode);
EDWAY_M_vBezierObjectSetDynaParams(_hBezierObject,_pstDynaParams);
_hBezierObject->m_pdstListOfPoints = pdstListOfPoints;
/* if mode is MODE_NO_OBJECT, allocates ram only for points list and dynamic parameters */
if (_ucObjectMode==EDWAY_C_ucModeNoObject)
{
M_malloc
(
// EDWAY_M_dstBezierObjectGetListOfPoints(_hBezierObject),
// ENG_fndst_BezierObject_GetListOfPoints ();
*_hBezierObject->m_pdstListOfPoints,
MTH3D_tdstVector*,
(_ucSamplingRate+1)*sizeof(MTH3D_tdstVector)
);
}
else
/* else mode is EDWAY_C_ucModeRealObject, creates the geometric object*/
{
/* This list of points is not used */
// EDWAY_M_vBezierObjectSetListOfPoints(_hBezierObject,NULL);
*_hBezierObject->m_pdstListOfPoints = NULL;
/* create object with 1 element (lines only), and ucSamplingRate+1 points) */
GEO_vCreateGeometricObject
(
&(EDWAY_M_hBezierObjectGetGeometricObject(_hBezierObject)),
_ucSamplingRate+1,
1
);
/* create line element*/
GEO_xCreateElementLines
(
EDWAY_M_hBezierObjectGetGeometricObject(_hBezierObject),
&EDWAY_M_hBezierObjectGetLineElement(_hBezierObject),
_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_hBezierObjectGetGeometricObject(_hBezierObject),
EDWAY_M_hBezierObjectGetLineElement(_hBezierObject),
xCurVertex,
&xLineDoubleIndex
);
}
}
/* calculate points of bezier curve */
EDWAY_fnv_BezierObject_Calculate(_hBezierObject);
}
/*
---------------------------------------
Contents :
Create Bezier curve (in ram only)
between two points.
---------------------------------------
Function Name :
EDWAY_fnv_BezierObject_CreateWithCurve
---------------------------------------
Arguments :
* _hBezierObject
EDWAY_tdhBezierObject
A valid handle on a editor bezier
object
* _ucSamplingRate
unsigned char
The sampling rate of the curve
* _pstStartPoint
MTH3D_tdstVector*
The starting point of the bezier
curve
* _pstEndPoint
MTH3D_tdstVector*
The ending point of the bezier
curve
* _pstStartVector
MTH3D_tdstVector*
The first tangent vector of the bezier
curve
* _pstEndVector
MTH3D_tdstVector*
The last tangent vector of the bezier
curve
* _ucObjectMode
unsigned char
The object mode (real or no object)
* _pstDynaParam
ACP_tdstDynaParam*
A pointer to the dynamic parameters
associated with the bezier curve
---------------------------------------
Return value :
* None
---------------------------------------
Error Raised :
* None
---------------------------------------
Creation :
* Date :
April 10,1997
* Author :
Jacques Th<54>noz
---------------------------------------
Modification :
* Date :
* Author :
* Modify :
----------------------------------------
Remark :
Codes come from previous Bezier.c made by
Yann Le Tensorer (February 1997)
---------------------------------------
*/
void EDWAY_fnv_BezierObject_CreateWithCurve
(
EDWAY_tdhBezierObject _hBezierObject,
MTH3D_tdhBezierCurve _hBezierCurve,
unsigned char _ucObjectMode,
ACP_tdstDynaParam* _pstDynaParams,
MTH3D_tdstVector** pdstListOfPoints
)
{
unsigned char _ucSamplingRate = MTH3D_fnuc_BezierCurve_GetSamplingRate (_hBezierCurve);
GEO_tdstDoubledIndex xLineDoubleIndex;
long xCurVertex;
/* copies input parameters into objects parameters */
EDWAY_M_vBezierObjectSetBezierCurve(_hBezierObject, _hBezierCurve);
EDWAY_M_vBezierObjectSetObjectMode(_hBezierObject,_ucObjectMode);
EDWAY_M_vBezierObjectSetDynaParams(_hBezierObject,_pstDynaParams);
_hBezierObject->m_pdstListOfPoints = pdstListOfPoints;
/* if mode is MODE_NO_OBJECT, allocates ram only for points list and dynamic parameters */
if (_ucObjectMode==EDWAY_C_ucModeNoObject)
{
M_malloc
(
// EDWAY_M_dstBezierObjectGetListOfPoints(_hBezierObject),
*_hBezierObject->m_pdstListOfPoints,
MTH3D_tdstVector*,
(_ucSamplingRate+1)*sizeof(MTH3D_tdstVector)
);
}
else
/* else mode is EDWAY_C_ucModeRealObject, creates the geometric object*/
{
/* This list of points is not used */
// EDWAY_M_vBezierObjectSetListOfPoints(_hBezierObject,NULL);
_hBezierObject->m_pdstListOfPoints = NULL;
/* create object with 1 element (lines only), and ucSamplingRate+1 points) */
GEO_vCreateGeometricObject
(
&(EDWAY_M_hBezierObjectGetGeometricObject(_hBezierObject)),
_ucSamplingRate+1,
1
);
/* create line element*/
GEO_xCreateElementLines
(
EDWAY_M_hBezierObjectGetGeometricObject(_hBezierObject),
&EDWAY_M_hBezierObjectGetLineElement(_hBezierObject),
_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_hBezierObjectGetGeometricObject(_hBezierObject),
EDWAY_M_hBezierObjectGetLineElement(_hBezierObject),
xCurVertex,
&xLineDoubleIndex
);
}
}
/* calculate points of bezier curve */
EDWAY_fnv_BezierObject_Calculate(_hBezierObject);
}
/*
---------------------------------------
Contents :
Frees memory allocated by the
editor bezier object
---------------------------------------
Function Name :
EDWAY_fnv_BezierObject_Free
---------------------------------------
Arguments :
* Name : _hBezierObject
Type : EDWAY_tdhBezierObject
Meaning : a valid handle on an editor
bezier object to free
---------------------------------------
Return value :
* None
---------------------------------------
Error Raised :
* None
---------------------------------------
Creation :
* Date :
February 27,1997
* Author :
Albert Pais
---------------------------------------
Modification :
* Date :
* Author :
* Modify :
---------------------------------------
*/
void EDWAY_fnv_BezierObject_Free
(EDWAY_tdhBezierObject _hBezierObject)
{
if(_hBezierObject == EDWAY_C_hInvalidBezierObject)
{
// if(EDWAY_M_dstBezierObjectGetListOfPoints(_hBezierObject)!=NULL)
// {
// M_free(EDWAY_M_dstBezierObjectGetListOfPoints(_hBezierObject));
// EDWAY_M_dstBezierObjectGetListOfPoints(_hBezierObject) = NULL;
// }
/* I disagree with following line, but since it was in the previous version :*/
if(EDWAY_M_pstBezierObjectGetDynaParams(_hBezierObject))
{
M_free(EDWAY_M_pstBezierObjectGetDynaParams(_hBezierObject));
}
}
}
/*
---------------------------------------
Contents :
Computes bezier curve sampling
points
---------------------------------------
Function Name :
EDWAY_fnv_BezierObject_Calculate
---------------------------------------
Arguments :
* _hBezierObject
EDWAY_tdhBezierObject
A valid handle on a editor bezier
object
---------------------------------------
Return value :
* None
---------------------------------------
Error Raised :
* None
---------------------------------------
Creation :
* Date :
February 20,1997
* Author :
Albert PAIS
---------------------------------------
Modification :
* Date :
* Author :
* Modify :
----------------------------------------
Remark :
Codes come from previous Bezier.c made by
Yann Le Tensorer (February 1997)
---------------------------------------
*/
void EDWAY_fnv_BezierObject_Calculate
(EDWAY_tdhBezierObject _hBezierObject)
{
MTH3D_tdstVector *p_stPointList;
if(_hBezierObject==EDWAY_C_hInvalidBezierObject) return;/* avoid crash */
if (EDWAY_M_ucBezierObjectGetObjectMode(_hBezierObject)==EDWAY_C_ucModeRealObject)
p_stPointList=(EDWAY_M_hBezierObjectGetGeometricObject(_hBezierObject) -> d_stListOfPoints);
else
// p_stPointList=EDWAY_M_dstBezierObjectGetListOfPoints(_hBezierObject);
p_stPointList=*_hBezierObject->m_pdstListOfPoints;
MTH3D_fnv_BezierCurve_CalculatePoint
(
EDWAY_M_hBezierObjectGetBezierCurve(_hBezierObject),
p_stPointList
);
}
/*
---------------------------------------
Contents :
Returns the size in bytes of the
editor bezier structure
---------------------------------------
Function Name :
EDWAY_fnuw_BezierObject_SizeOf
---------------------------------------
Arguments :
* None
---------------------------------------
Return value :
* Type :
unsigned short
* Possible Value :
* Every unsigned short possible value
The sizeof the editor bezier curve
structure.
---------------------------------------
Error Raised :
* None
---------------------------------------
Creation :
* Date :
February 25,1997
* Author :
Albert PAIS
---------------------------------------
Modification :
* Date :
* Author :
* Modify :
----------------------------------------
*/
unsigned short EDWAY_fnuw_BezierObject_SizeOf(void)
{
/*
Using the macro makes it compulsory to define the function
with the _EDWAY_BEZ_FRIEND_ compilation directive, in order to
be sure that the structure is known at this level.
*/
return EDWAY_M_uwBezierObjectSizeOf();
}
/*
---------------------------------------
Contents :
Retrieves the bezier curve from the
bezier object
---------------------------------------
Function Name :
EDWAY_fnh_BezierObject_GetBezierCurve
---------------------------------------
Arguments :
* _hBezierObject
EDWAY_tdhBezierObject
A valid handle on a editor bezier
object
---------------------------------------
Return value :
* Type :
MTH3D_tdhBezierCurve
* Possible Value :
* A valid handle on a bezier curve
The function succeeded
* MTH3D_C_h_BezierCurveInvalidHandle
The function failed
---------------------------------------
Error Raised :
* None
---------------------------------------
Creation :
* Date :
February 21,1997
* Author :
Albert PAIS
---------------------------------------
Modification :
* Date :
* Author :
* Modify :
----------------------------------------
*/
MTH3D_tdhBezierCurve EDWAY_fnh_BezierObject_GetBezierCurve
(EDWAY_tdhBezierObject _hBezierObject)
{
if(_hBezierObject==EDWAY_C_hInvalidBezierObject) return MTH3D_C_h_BezierCurveInvalidHandle;
/*
Using the macro makes it compulsory to define the function
with the _EDWAY_BEZ_FRIEND_ compilation directive, in order to
be sure that the structure is known at this level.
*/
return EDWAY_M_hBezierObjectGetBezierCurve(_hBezierObject);
}
/*
---------------------------------------
Contents :
Retrieves the geometric element from the
bezier object
---------------------------------------
Function Name :
EDWAY_fnh_BezierObject_GetGeometricObject
---------------------------------------
Arguments :
* _hBezierObject
EDWAY_tdhBezierObject
A valid handle on a editor bezier
object
---------------------------------------
Return value :
* Type :
ACP_tdxHandleOfObject
* Possible Value :
* A valid handle on an object
The function succeeded
* NULL
The function failed
---------------------------------------
Error Raised :
* None
---------------------------------------
Creation :
* Date :
February 21,1997
* Author :
Albert PAIS
---------------------------------------
Modification :
* Date :
* Author :
* Modify :
----------------------------------------
*/
ACP_tdxHandleOfObject EDWAY_fnh_BezierObject_GetGeometricObject
(EDWAY_tdhBezierObject _hBezierObject)
{
if(_hBezierObject==EDWAY_C_hInvalidBezierObject) return NULL;
/*
Using the macro makes it compulsory to define the function
with the _EDWAY_BEZ_FRIEND_ compilation directive, in order to
be sure that the structure is known at this level.
*/
return EDWAY_M_hBezierObjectGetGeometricObject(_hBezierObject);
}
/*
---------------------------------------
Contents :
Retrieves the line elements from the
bezier object
---------------------------------------
Function Name :
EDWAY_fnh_BezierObject_GetLineElement
---------------------------------------
Arguments :
* _hBezierObject
EDWAY_tdhBezierObject
A valid handle on a editor bezier
object
---------------------------------------
Return value :
* Type :
ACP_tdxHandleOfElement
* Possible Value :
* A valid handle on a line element
The function succeeded
* NULL
The function failed
---------------------------------------
Error Raised :
* None
---------------------------------------
Creation :
* Date :
February 21,1997
* Author :
Albert PAIS
---------------------------------------
Modification :
* Date :
* Author :
* Modify :
----------------------------------------
*/
ACP_tdxHandleOfElement EDWAY_fnh_BezierObject_GetLineElement
(EDWAY_tdhBezierObject _hBezierObject)
{
if(_hBezierObject==EDWAY_C_hInvalidBezierObject) return NULL;
/*
Using the macro makes it compulsory to define the function
with the _EDWAY_BEZ_FRIEND_ compilation directive, in order to
be sure that the structure is known at this level.
*/
return EDWAY_M_hBezierObjectGetLineElement(_hBezierObject);
}
/*
---------------------------------------
Contents :
Retrieves the color from the
bezier object
---------------------------------------
Function Name :
EDWAY_fnl_BezierObject_GetColor
---------------------------------------
Arguments :
* _hBezierObject
EDWAY_tdhBezierObject
A valid handle on a editor bezier
object
---------------------------------------
Return value :
* Type :
long
* Possible Value :
* A non-zero value
The function succeeded
* a zero value
The function failed
---------------------------------------
Error Raised :
* None
---------------------------------------
Creation :
* Date :
February 21,1997
* Author :
Albert PAIS
---------------------------------------
Modification :
* Date :
* Author :
* Modify :
----------------------------------------
*/
long EDWAY_fnl_BezierObject_GetColor
(EDWAY_tdhBezierObject _hBezierObject)
{
if(_hBezierObject==EDWAY_C_hInvalidBezierObject) return 0L;
/*
Using the macro makes it compulsory to define the function
with the _EDWAY_BEZ_FRIEND_ compilation directive, in order to
be sure that the structure is known at this level.
*/
return EDWAY_M_lBezierObjectGetColor(_hBezierObject);
}
/*
---------------------------------------
Contents :
Retrieves the pointer to the view port
attribute associated with the bezier object
---------------------------------------
Function Name :
EDWAY_fnpst_BezierObject_GetViewPortAttributes
---------------------------------------
Arguments :
* _hBezierObject
EDWAY_tdhBezierObject
A valid handle on a editor bezier
object
---------------------------------------
Return value :
* Type :
GLD_tdstViewportAttributes*
* Possible Value :
* A non-null pointer
The function succeeded
* NULL
The function failed
---------------------------------------
Error Raised :
* None
---------------------------------------
Creation :
* Date :
February 21,1997
* Author :
Albert PAIS
---------------------------------------
Modification :
* Date :
* Author :
* Modify :
----------------------------------------
*/
GLD_tdstViewportAttributes* EDWAY_fnpst_BezierObject_GetViewPortAttributes
(EDWAY_tdhBezierObject _hBezierObject)
{
if(_hBezierObject==EDWAY_C_hInvalidBezierObject) return NULL;
/*
Using the macro makes it compulsory to define the function
with the _EDWAY_BEZ_FRIEND_ compilation directive, in order to
be sure that the structure is known at this level.
*/
return EDWAY_M_pstBezierObjectGetViewPortAttributes(_hBezierObject);
}
/*
---------------------------------------
Contents :
Retrieves the pointer to the list of points
associated with the bezier object
---------------------------------------
Function Name :
EDWAY_fndst_BezierObject_GetListOfPoints
---------------------------------------
Arguments :
* _hBezierObject
EDWAY_tdhBezierObject
A valid handle on a editor bezier
object
---------------------------------------
Return value :
* Type :
MTH3D_tdstVector*
* Possible Value :
* A non-null pointer
The function succeeded
* NULL
The function failed
---------------------------------------
Error Raised :
* None
---------------------------------------
Creation :
* Date :
February 21,1997
* Author :
Albert PAIS
---------------------------------------
Modification :
* Date :
* Author :
* Modify :
----------------------------------------
*/
MTH3D_tdstVector* EDWAY_fndst_BezierObject_GetListOfPoints
(EDWAY_tdhBezierObject _hBezierObject)
{
if(_hBezierObject==EDWAY_C_hInvalidBezierObject) return NULL;
/*
Using the macro makes it compulsory to define the function
with the _EDWAY_BEZ_FRIEND_ compilation directive, in order to
be sure that the structure is known at this level.
*/
// return EDWAY_M_dstBezierObjectGetListOfPoints(_hBezierObject);
return *_hBezierObject->m_pdstListOfPoints;
}
/*
---------------------------------------
Contents :
Retrieves the pointer to the dynamic parameters
associated with the bezier object
---------------------------------------
Function Name :
EDWAY_fnpst_BezierObject_GetDynaParams
---------------------------------------
Arguments :
* _hBezierObject
EDWAY_tdhBezierObject
A valid handle on a editor bezier
object
---------------------------------------
Return value :
* Type :
ACP_tdstDynaParam*
* Possible Value :
* A non-null pointer
The function succeeded
* NULL
The function failed
---------------------------------------
Error Raised :
* None
---------------------------------------
Creation :
* Date :
February 21,1997
* Author :
Albert PAIS
---------------------------------------
Modification :
* Date :
* Author :
* Modify :
----------------------------------------
*/
ACP_tdstDynaParam* EDWAY_fnpst_BezierObject_GetDynaParams
(EDWAY_tdhBezierObject _hBezierObject)
{
if(_hBezierObject==EDWAY_C_hInvalidBezierObject) return NULL;
/*
Using the macro makes it compulsory to define the function
with the _EDWAY_BEZ_FRIEND_ compilation directive, in order to
be sure that the structure is known at this level.
*/
return EDWAY_M_pstBezierObjectGetDynaParams(_hBezierObject);
}
/*
---------------------------------------
Contents :
Returns the object mode of the
bezier-editor object
---------------------------------------
Function Name :
EDWAY_fnuc_BezierObject_GetObjectMode
---------------------------------------
Arguments :
* _hBezierObject
EDWAY_tdhBezierObject
A valid handle on a editor bezier
object
---------------------------------------
Return value :
* Type :
unsigned char
* Possible Value :
* EDWAY_C_ucModeNoObject
Mode is mode No object
* EDWAY_C_ucModeRealObject
Mode is Real object
* (unsigned char)-1
The function failed
---------------------------------------
Error Raised :
* None
---------------------------------------
Creation :
* Date :
February 21,1997
* Author :
Albert PAIS
---------------------------------------
Modification :
* Date :
* Author :
* Modify :
----------------------------------------
*/
unsigned char EDWAY_fnuc_BezierObject_GetObjectMode
(EDWAY_tdhBezierObject _hBezierObject)
{
if(_hBezierObject==EDWAY_C_hInvalidBezierObject) return (unsigned char)-1;
/*
Using the macro makes it compulsory to define the function
with the _EDWAY_BEZ_FRIEND_ compilation directive, in order to
be sure that the structure is known at this level.
*/
return EDWAY_M_ucBezierObjectGetObjectMode(_hBezierObject);
}
/*
---------------------------------------
Contents :
Changes the bezier curve of
the bezier editor object given in parmater
---------------------------------------
Function Name :
EDWAY_fnv_BezierObject_SetBezierCurve
---------------------------------------
Arguments :
* _hBezierObject
EDWAY_tdhBezierObject
A valid handle on a editor bezier
object
* _hNewBezierCurve
MTH3D_tdhBezierCurve
A handle on a bezier curve object
---------------------------------------
Return value :
* None
---------------------------------------
Error Raised :
* None
---------------------------------------
Creation :
* Date :
February 21,1997
* Author :
Albert PAIS
---------------------------------------
Modification :
* Date :
* Author :
* Modify :
----------------------------------------
*/
void EDWAY_fnv_BezierObject_SetBezierCurve
(
EDWAY_tdhBezierObject _hBezierObject,
MTH3D_tdhBezierCurve _hNewBezierCurve
)
{
/* avoid crash :*/
if(_hBezierObject==EDWAY_C_hInvalidBezierObject) return;
/*
Using the macro makes it compulsory to define the function
with the _EDWAY_BEZ_FRIEND_ compilation directive, in order to
be sure that the structure is known at this level.
*/
EDWAY_M_vBezierObjectSetBezierCurve(_hBezierObject,_hNewBezierCurve);
}
/*
---------------------------------------
Contents :
Changes the geometic object of
the bezier editor object given in parmater
---------------------------------------
Function Name :
EDWAY_fnv_BezierObject_SetGeometricObject
---------------------------------------
Arguments :
* _hBezierObject
EDWAY_tdhBezierObject
A valid handle on a editor bezier
object
* _hNewGeometricObject
ACP_tdxHandleOfObject
A handle on a geometric object
---------------------------------------
Return value :
* None
---------------------------------------
Error Raised :
* None
---------------------------------------
Creation :
* Date :
February 21,1997
* Author :
Albert PAIS
---------------------------------------
Modification :
* Date :
* Author :
* Modify :
----------------------------------------
*/
void EDWAY_fnv_BezierObject_SetGeometricObject
(
EDWAY_tdhBezierObject _hBezierObject,
ACP_tdxHandleOfObject _hNewGeometricObject
)
{
if(_hBezierObject==EDWAY_C_hInvalidBezierObject) return;
/*
Using the macro makes it compulsory to define the function
with the _EDWAY_BEZ_FRIEND_ compilation directive, in order to
be sure that the structure is known at this level.
*/
EDWAY_M_vBezierObjectSetGeometricObject(_hBezierObject,_hNewGeometricObject);
}
/*
---------------------------------------
Contents :
Changes the line element of
the bezier editor object given in parmater
---------------------------------------
Function Name :
EDWAY_fnv_BezierObject_SetLineElement
---------------------------------------
Arguments :
* _hBezierObject
EDWAY_tdhBezierObject
A valid handle on a editor bezier
object
* _hNewLineElement
ACP_tdxHandleOfElement
A handle on a geometric object
---------------------------------------
Return value :
* None
---------------------------------------
Error Raised :
* None
---------------------------------------
Creation :
* Date :
February 21,1997
* Author :
Albert PAIS
---------------------------------------
Modification :
* Date :
* Author :
* Modify :
----------------------------------------
*/
void EDWAY_fnv_BezierObject_SetLineElement
(
EDWAY_tdhBezierObject _hBezierObject,
ACP_tdxHandleOfElement _hNewLineElement
)
{
if(_hBezierObject==EDWAY_C_hInvalidBezierObject) return;
/*
Using the macro makes it compulsory to define the function
with the _EDWAY_BEZ_FRIEND_ compilation directive, in order to
be sure that the structure is known at this level.
*/
EDWAY_M_vBezierObjectSetLineElement(_hBezierObject,_hNewLineElement);
}
/*
---------------------------------------
Contents :
Changes the color of
the bezier editor object given in parmater
---------------------------------------
Function Name :
EDWAY_fnv_BezierObject_SetColor
---------------------------------------
Arguments :
* _hBezierObject
EDWAY_tdhBezierObject
A valid handle on a editor bezier
object
* _lNewColor
long
The new color of the object
---------------------------------------
Return value :
* None
---------------------------------------
Error Raised :
* None
---------------------------------------
Creation :
* Date :
February 21,1997
* Author :
Albert PAIS
---------------------------------------
Modification :
* Date :
* Author :
* Modify :
----------------------------------------
*/
void EDWAY_fnv_BezierObject_SetColor
(
EDWAY_tdhBezierObject _hBezierObject,
long _lNewColor
)
{
if(_hBezierObject==EDWAY_C_hInvalidBezierObject) return;
/*
Using the macro makes it compulsory to define the function
with the _EDWAY_BEZ_FRIEND_ compilation directive, in order to
be sure that the structure is known at this level.
*/
EDWAY_M_vBezierObjectSetColor(_hBezierObject,_lNewColor);
}
/*
---------------------------------------
Contents :
Changes the view port attributes of
the bezier editor object given in parmater
---------------------------------------
Function Name :
EDWAY_fnv_BezierObject_SetViewPortAttributes
---------------------------------------
Arguments :
* _hBezierObject
EDWAY_tdhBezierObject
A valid handle on a editor bezier
object
* _pstNewViewportAttributes
GLD_tdstViewportAttributes*
The new viewport attributes of the object
---------------------------------------
Return value :
* None
---------------------------------------
Error Raised :
* None
---------------------------------------
Creation :
* Date :
February 21,1997
* Author :
Albert PAIS
---------------------------------------
Modification :
* Date :
* Author :
* Modify :
----------------------------------------
*/
void EDWAY_fnv_BezierObject_SetViewPortAttributes
(
EDWAY_tdhBezierObject _hBezierObject,
GLD_tdstViewportAttributes* _pstNewViewportAttributes
)
{
if(_hBezierObject==EDWAY_C_hInvalidBezierObject) return;
/*
Using the macro makes it compulsory to define the function
with the _EDWAY_BEZ_FRIEND_ compilation directive, in order to
be sure that the structure is known at this level.
*/
EDWAY_M_vBezierObjectSetViewPortAttributes(_hBezierObject,_pstNewViewportAttributes);
}
/*
---------------------------------------
Contents :
Changes the list of points of
the bezier editor object given in parmater
---------------------------------------
Function Name :
EDWAY_fnv_BezierObject_SetListOfPoints
---------------------------------------
Arguments :
* _hBezierObject
EDWAY_tdhBezierObject
A valid handle on a editor bezier
object
* _dstNewListOfPoints
MTH3D_tdstVector*
The new list of poins of the object
---------------------------------------
Return value :
* None
---------------------------------------
Error Raised :
* None
---------------------------------------
Creation :
* Date :
February 21,1997
* Author :
Albert PAIS
---------------------------------------
Modification :
* Date :
* Author :
* Modify :
----------------------------------------
*/
void EDWAY_fnv_BezierObject_SetListOfPoints
(
EDWAY_tdhBezierObject _hBezierObject,
MTH3D_tdstVector* _dstNewListOfPoints
)
{
if(_hBezierObject==EDWAY_C_hInvalidBezierObject) return;
/*
Using the macro makes it compulsory to define the function
with the _EDWAY_BEZ_FRIEND_ compilation directive, in order to
be sure that the structure is known at this level.
*/
// EDWAY_M_vBezierObjectSetListOfPoints(_hBezierObject,_dstNewListOfPoints);
*_hBezierObject->m_pdstListOfPoints = _dstNewListOfPoints;
}
/*
---------------------------------------
Contents :
Changes the dynamic params of
the bezier editor object given in parmater
---------------------------------------
Function Name :
EDWAY_fnv_BezierObject_SetDynaParams
---------------------------------------
Arguments :
* _hBezierObject
EDWAY_tdhBezierObject
A valid handle on a editor bezier
object
* _pstNewDynaParam
ACP_tdstDynaParam*
The new dynamic parameters
---------------------------------------
Return value :
* None
---------------------------------------
Error Raised :
* None
---------------------------------------
Creation :
* Date :
February 21,1997
* Author :
Albert PAIS
---------------------------------------
Modification :
* Date :
* Author :
* Modify :
----------------------------------------
*/
void EDWAY_fnv_BezierObject_SetDynaParams
(
EDWAY_tdhBezierObject _hBezierObject,
ACP_tdstDynaParam *_pstNewDynaParam
)
{
if(_hBezierObject==EDWAY_C_hInvalidBezierObject) return;
/*
Using the macro makes it compulsory to define the function
with the _EDWAY_BEZ_FRIEND_ compilation directive, in order to
be sure that the structure is known at this level.
*/
EDWAY_M_vBezierObjectSetDynaParams(_hBezierObject,_pstNewDynaParam);
}
/*
---------------------------------------
Contents :
Changes the object mode of
the bezier editor object given in parmater
---------------------------------------
Function Name :
EDWAY_fnv_BezierObject_SetObjectMode
---------------------------------------
Arguments :
* _hBezierObject
EDWAY_tdhBezierObject
A valid handle on a editor bezier
object
* _ucNewObjectMode
unsigned char
The new object mode of the bezier object
---------------------------------------
Return value :
* None
---------------------------------------
Error Raised :
* None
---------------------------------------
Creation :
* Date :
February 21,1997
* Author :
Albert PAIS
---------------------------------------
Modification :
* Date :
* Author :
* Modify :
----------------------------------------
*/
void EDWAY_fnv_BezierObject_SetObjectMode
(
EDWAY_tdhBezierObject _hBezierObject,
unsigned char _ucNewObjectMode
)
{
if(_hBezierObject == EDWAY_C_hInvalidBezierObject) return;
/*
Using the macro makes it compulsory to define the function
with the _EDWAY_BEZ_FRIEND_ compilation directive, in order to
be sure that the structure is known at this level.
*/
EDWAY_M_vBezierObjectSetObjectMode(_hBezierObject,_ucNewObjectMode);
}
/*
---------------------------------------
Contents :
Changes the sampling rate of the bezier
curve associaed with the bezier object
and update bezier-editor object related
fields
---------------------------------------
Function Name :
EDWAY_fnb_BezierObject_ChangeSamplingRate
---------------------------------------
Arguments :
* _hBezierObject
EDWAY_tdhBezierObject
A valid handle on a editor bezier
object
* _ucNewSamplingRate
unsigned char
The new sampling rate of the bezier curve
---------------------------------------
Return value :
* Type :
ACP_tdxBool
* Possible Values :
* FALSE
The function failed to change
the sampling rate.
* TRUE
The function succeeded to change
the sampling rate
---------------------------------------
Error Raised :
* None
---------------------------------------
Creation :
* Date :
February 21,1997
* Author :
Albert PAIS
---------------------------------------
Modification :
* Date :
* Author :
* Modify :
----------------------------------------
Remark :
The sampling rate can only be modified
for objects that have been created using
C_ucModeNoObject at their creation.
----------------------------------------
*/
ACP_tdxBool EDWAY_fnb_BezierObject_ChangeSamplingRate
(
EDWAY_tdhBezierObject _hBezierObject,
unsigned char _ucNewSamplingRate
)
{
if(!_hBezierObject) return FALSE;
if(!EDWAY_M_hBezierObjectGetBezierCurve(_hBezierObject)) return FALSE;
if(EDWAY_M_ucBezierObjectGetObjectMode(_hBezierObject)==EDWAY_C_ucModeNoObject)
{
/* copies new sampling rate value into objects parameters */
if(_ucNewSamplingRate < 2)
_ucNewSamplingRate = 2;
MTH3D_M_vBezierCurveSetSamplingRate
(
EDWAY_M_hBezierObjectGetBezierCurve(_hBezierObject),
_ucNewSamplingRate
);
/* free old list of points and allocates new one */
// if (EDWAY_M_dstBezierObjectGetListOfPoints(_hBezierObject)!=NULL)
// M_free(EDWAY_M_dstBezierObjectGetListOfPoints(_hBezierObject));
if (*_hBezierObject->m_pdstListOfPoints!=NULL)
M_free(*_hBezierObject->m_pdstListOfPoints);
M_malloc
(
// EDWAY_M_dstBezierObjectGetListOfPoints(_hBezierObject),
*_hBezierObject->m_pdstListOfPoints,
MTH3D_tdstVector*,
(_ucNewSamplingRate+1)*sizeof(MTH3D_tdstVector)
);
/* calculate points of bezier curve */
EDWAY_fnv_BezierObject_Calculate(_hBezierObject);
/* 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_pstBezierObjectGetDynaParams(_hBezierObject),
_ucNewSamplingRate
);*/
return TRUE;
}
else
return FALSE;
}
/*
---------------------------------------
Contents :
Changes some parameters of the bezier
curve associaed with the bezier object
and update related fields of the
editor bezier object
---------------------------------------
Function Name :
EDWAY_fnv_BezierObject_ChangeParams
---------------------------------------
Arguments :
* _hBezierObject
EDWAY_tdhBezierObject
A valid handle on a editor bezier
object
* _p_stStartPoint
MTH3D_tdstVector
The new starting point of the bezier
curve.
* _p_stEndPoint
MTH3D_tdstVector
The new ending point of the bezier
curve.
* _p_stStartVector
MTH3D_tdstVector
The new starting tangent vector
of the bezier curve
* _p_stEndVector
The new ending tangent vector
MTH3D_tdstVector
of the bezier curve
---------------------------------------
Return value :
* None
---------------------------------------
Error Raised :
* None
---------------------------------------
Creation :
* Date :
February 21,1997
* Author :
Albert PAIS
---------------------------------------
Modification :
* Date :
* Author :
* Modify :
----------------------------------------
Remark :
If one argument is NULL,the element
is not changed.
----------------------------------------
*/
void EDWAY_fnv_BezierObject_ChangeParams
(
EDWAY_tdhBezierObject _hBezierObject,
MTH3D_tdstVector*_p_stStartPoint,
MTH3D_tdstVector*_p_stEndPoint,
MTH3D_tdstVector*_p_stStartVector,
MTH3D_tdstVector*_p_stEndVector
)
{
/* Avoid crash :*/
if(_hBezierObject==EDWAY_C_hInvalidBezierObject) return;
/* change start point if necessary :*/
if(_p_stStartPoint)
{
MTH3D_M_vBezierCurveSetStartPoint
(
EDWAY_M_hBezierObjectGetBezierCurve(_hBezierObject),
_p_stStartPoint
);
}
/* change end point if necessary */
if(_p_stEndPoint)
{
MTH3D_M_vBezierCurveSetEndPoint
(
EDWAY_M_hBezierObjectGetBezierCurve(_hBezierObject),
_p_stEndPoint
);
}
/* Change first tangent vector if necessary */
if(_p_stStartVector)
{
MTH3D_M_vBezierCurveSetStartVector
(
EDWAY_M_hBezierObjectGetBezierCurve(_hBezierObject),
_p_stStartVector
);
}
/* Change last tangent vector if necessary */
if(_p_stEndVector)
{
MTH3D_M_vBezierCurveSetEndVector
(
EDWAY_M_hBezierObjectGetBezierCurve(_hBezierObject),
_p_stEndVector
);
}
/* Update information :*/
EDWAY_fnv_BezierObject_Calculate(_hBezierObject);
}
/*
---------------------------------------
Contents :
Retrieves main parameters of the
bezier curve associated with
the bezier object
---------------------------------------
Function Name :
EDWAY_fnv_BezierObject_GetParams
---------------------------------------
Arguments :
* _hBezierObject
EDWAY_tdhBezierObject
A valid handle on a editor bezier
object
* _p_stStartPoint
MTH3D_tdstVector
A pointer to a 3D-Point receiving
the first point.
* _p_stEndPoint
MTH3D_tdstVector
A pointer to a 3D-Point receiving
the last point.
* _p_stStartVector
MTH3D_tdstVector
A pointer to a 3D-Point receiving
the first tangent vector.
* _p_stEndVector
MTH3D_tdstVector
A pointer to a 3D-point receiving
the last tangent vector.
---------------------------------------
Return value :
* None
---------------------------------------
Error Raised :
* None
---------------------------------------
Creation :
* Date :
February 21,1997
* Author :
Albert PAIS
---------------------------------------
Modification :
* Date :
* Author :
* Modify :
----------------------------------------
Remark :
If one argument is NULL,it is not
retrieved. No error is raised in this
case.
----------------------------------------
*/
void EDWAY_fnv_BezierObject_GetParams
(
EDWAY_tdhBezierObject _hBezierObject,
MTH3D_tdstVector*_p_stStartPoint,
MTH3D_tdstVector*_p_stEndPoint,
MTH3D_tdstVector*_p_stStartVector,
MTH3D_tdstVector*_p_stEndVector
)
{
/* Avoid crash : */
if(_hBezierObject==EDWAY_C_hInvalidBezierObject) return;
if(_p_stStartPoint)
{
MTH3D_M_vBezierCurveGetStartPoint
(
EDWAY_M_hBezierObjectGetBezierCurve(_hBezierObject),
_p_stStartPoint
);
}
if(_p_stEndPoint)
{
MTH3D_M_vBezierCurveGetEndPoint
(
EDWAY_M_hBezierObjectGetBezierCurve(_hBezierObject),
_p_stEndPoint
);
}
if(_p_stStartVector)
{
MTH3D_M_vBezierCurveGetStartVector
(
EDWAY_M_hBezierObjectGetBezierCurve(_hBezierObject),
_p_stStartVector
);
}
if(_p_stEndVector)
{
MTH3D_M_vBezierCurveGetEndVector
(
EDWAY_M_hBezierObjectGetBezierCurve(_hBezierObject),
_p_stEndVector
);
}
}
/*
---------------------------------------
Contents :
Retrieves the speed at a specific
sample number contained inside the
dynamic field of the bezier object
---------------------------------------
Function Name :
fn_xBezierObject_GetSpeed
---------------------------------------
Arguments :
* _hBezierObject
EDWAY_tdhBezierObject
A valid handle on a editor bezier
object
* _ucSampleNumber
unsigned char
The smaple number
---------------------------------------
Return value :
* Type :
MTH_tdxReal
* Possible value :
MTH_C_InfinitPlus
The function failed
Another tdxReal value
The function succeded
---------------------------------------
Error Raised :
* None
---------------------------------------
Creation :
* Date :
February 21,1997
* Author :
Albert PAIS
---------------------------------------
Modification :
* Date :
* Author :
* Modify :
----------------------------------------
*/
MTH_tdxReal fn_xBezierObject_GetSpeed
(
EDWAY_tdhBezierObject _hBezierObject,
unsigned char _ucSampleNumber
)
{
if(_hBezierObject==EDWAY_C_hInvalidBezierObject) return MTH_C_InfinitPlus;
/* Otherwise, no problemo :*/
//VL
return 0;
//EVL
/*
return fn_xDynamicObject_GetSpeed
(
EDWAY_M_pstBezierObjectGetDynaParams(_hBezierObject),
_ucSampleNumber
);
*/
}
/*
---------------------------------------
Contents :
Retrieve a sampled point of the bezier
curve
---------------------------------------
Function Name :
EDWAY_fnv_BezierObject_GetPoint
---------------------------------------
Arguments :
* _hBezierObject
EDWAY_tdhBezierObject
A valid handle on a editor bezier
object
* _ucSampleNumber
unsigned char
The smaple number
* _pstSampledPoint
MTH3D_tdstVector
A pointer to a vector that receives
the sampled point
---------------------------------------
Return value :
* None
---------------------------------------
Error Raised :
* None
---------------------------------------
Creation :
* Date :
February 21,1997
* Author :
Albert PAIS
---------------------------------------
Modification :
* Date :
* Author :
* Modify :
----------------------------------------
*/
void EDWAY_fnv_BezierObject_GetPoint
(
EDWAY_tdhBezierObject _hBezierObject,
unsigned char _ucSamplingNumber,
MTH3D_tdstVector*_pstSampledPoint
)
{
MTH3D_tdstVector *p_stPointList;
if
(
(_hBezierObject ==EDWAY_C_hInvalidBezierObject)
||(_pstSampledPoint == NULL )
)
{
return;
}
if(EDWAY_M_ucBezierObjectGetObjectMode(_hBezierObject)==EDWAY_C_ucModeNoObject)
{
// p_stPointList = EDWAY_M_dstBezierObjectGetListOfPoints(_hBezierObject);
p_stPointList = *_hBezierObject->m_pdstListOfPoints;
}
else
{
p_stPointList = EDWAY_M_hBezierObjectGetGeometricObject(_hBezierObject)-> d_stListOfPoints;
}
/* Beware : no check is done on the _ucSamplingNumber */
if(p_stPointList!=NULL)
*_pstSampledPoint = p_stPointList[_ucSamplingNumber];
}
/*
---------------------------------------
Contents :
Draws the bezier object
---------------------------------------
Function Name :
EDWAY_fnv_BezierObject_Draw
---------------------------------------
Arguments :
* _hBezierObject
EDWAY_tdhBezierObject
A valid handle on a editor bezier
object
---------------------------------------
Return value :
* None
---------------------------------------
Error Raised :
* None
---------------------------------------
Creation :
* Date :
February 21,1997
* Author :
Albert PAIS
---------------------------------------
Modification :
* Date :
* Author :
* Modify :
----------------------------------------
*/
void EDWAY_fnv_BezierObject_Draw
(EDWAY_tdhBezierObject _hBezierObject)
{
POS_tdstCompletePosition stMatrix;
GEO_tdstColor ColBidon;
MTH3D_tdstVector *p_stPointList;
MTH3D_tdstVector *p_stPointListEnd;
POS_fn_vSetIdentityMatrix(&stMatrix);
if (_hBezierObject==EDWAY_C_hInvalidBezierObject) 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_ucBezierObjectGetObjectMode(_hBezierObject)==EDWAY_C_ucModeRealObject)
p_stPointList=EDWAY_M_hBezierObjectGetGeometricObject(_hBezierObject)->d_stListOfPoints;
else
// p_stPointList=EDWAY_M_dstBezierObjectGetListOfPoints(_hBezierObject);
p_stPointList=*_hBezierObject->m_pdstListOfPoints;
if (p_stPointList==0) return;
GLI_xGetCameraMatrix(((GLI_tdstSpecificAttributesFor3D*)((EDWAY_M_pstBezierObjectGetViewPortAttributes(_hBezierObject))->p_vSpecificToXD))->p_stCam,&stMatrix);
GLI_xLoadMatrix(&stMatrix);
GLI_vSetFog(100,100,200,&ColBidon);
p_stPointListEnd=p_stPointList+
MTH3D_M_ucBezierCurveGetSamplingRate(EDWAY_M_hBezierObjectGetBezierCurve(_hBezierObject));
for (;p_stPointList<p_stPointListEnd;p_stPointList++)
{
GLI_xDraw3DLine16
(
(struct GLD_tdstViewportAttributes_*)(EDWAY_M_pstBezierObjectGetViewPortAttributes(_hBezierObject)),
p_stPointList,
p_stPointList+1,
EDWAY_M_lBezierObjectGetColor(_hBezierObject)
);
}
GLI_xPopMatrix();
}