diff options
Diffstat (limited to 'xc/lib/PEX5/pl_oc_enc.c')
-rw-r--r-- | xc/lib/PEX5/pl_oc_enc.c | 2138 |
1 files changed, 0 insertions, 2138 deletions
diff --git a/xc/lib/PEX5/pl_oc_enc.c b/xc/lib/PEX5/pl_oc_enc.c deleted file mode 100644 index cb5163e1b..000000000 --- a/xc/lib/PEX5/pl_oc_enc.c +++ /dev/null @@ -1,2138 +0,0 @@ -/* $TOG: pl_oc_enc.c /main/12 1998/02/06 16:11:03 kaleb $ */ -/* - -Copyright 1992, 1998 The Open Group - -All Rights Reserved. - -The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR -OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall -not be used in advertising or otherwise to promote the sale, use or -other dealings in this Software without prior written authorization -from The Open Group. - -*/ - -#include "PEXlib.h" -#include "PEXlibint.h" -#include "pl_oc_util.h" - - -char * -PEXEncodeOCs (float_format, oc_count, oc_data, length_return) - -INPUT int float_format; -INPUT unsigned long oc_count; -INPUT PEXOCData *oc_data; -OUTPUT unsigned long *length_return; - -{ - extern void (*(PEX_encode_oc_funcs[]))(); - PEXOCData *ocSrc; - char *ocDest, *ocRet; - int i; - - - /* - * Allocate a buffer to hold the encodings. - */ - - *length_return = PEXGetSizeOCs (float_format, oc_count, oc_data); - ocRet = ocDest = (char *) Xmalloc ((unsigned) *length_return); - - - /* - * Now, encode the OCs in the buffer. - */ - - for (i = 0, ocSrc = oc_data; i < oc_count; i++, ocSrc++) - (*PEX_encode_oc_funcs[ocSrc->oc_type]) (float_format, ocSrc, &ocDest); - - -#ifdef DEBUG - if (ocDest - ocRet != *length_return) - { - printf ("PEXlib WARNING : Internal error in PEXEncodeOCs :\n"); - printf ("Data size encoded != Data size allocated.\n"); - } -#endif - - return (ocRet); -} - - -void _PEXEncodeEnumType (fpFormat, ocSrc, ocDest) - -int fpFormat; -PEXOCData *ocSrc; -char **ocDest; - -{ - pexMarkerType *oc; - - BEGIN_SIMPLE_ENCODE (MarkerType, ocSrc->oc_type, *ocDest, oc); - - oc->markerType = ocSrc->data.SetMarkerType.marker_type; - - END_SIMPLE_ENCODE (MarkerType, *ocDest, oc); -} - - -void _PEXEncodeTableIndex (fpFormat, ocSrc, ocDest) - -int fpFormat; -PEXOCData *ocSrc; -char **ocDest; - -{ - pexMarkerColorIndex *oc; - - BEGIN_SIMPLE_ENCODE (MarkerColorIndex, ocSrc->oc_type, *ocDest, oc); - - oc->index = ocSrc->data.SetMarkerColorIndex.index; - - END_SIMPLE_ENCODE (MarkerColorIndex, *ocDest, oc); -} - - -void _PEXEncodeColor (fpFormat, ocSrc, ocDest) - -int fpFormat; -PEXOCData *ocSrc; -char **ocDest; - -{ - pexMarkerColor *oc; - int lenofColor; - int fpConvert = (fpFormat != NATIVE_FP_FORMAT); - - lenofColor = GetColorLength (ocSrc->data.SetMarkerColor.color_type); - - BEGIN_ENCODE_OCHEADER (MarkerColor, ocSrc->oc_type, - lenofColor, *ocDest, oc); - - oc->colorType = ocSrc->data.SetMarkerColor.color_type; - - END_ENCODE_OCHEADER (MarkerColor, *ocDest, oc); - - STORE_COLOR_VAL (ocSrc->data.SetMarkerColor.color_type, - ocSrc->data.SetMarkerColor.color, - *ocDest, fpConvert, fpFormat) -} - - -void _PEXEncodeFloat (fpFormat, ocSrc, ocDest) - -int fpFormat; -PEXOCData *ocSrc; -char **ocDest; - -{ - pexMarkerScale *oc; - int fpConvert = (fpFormat != NATIVE_FP_FORMAT); - - BEGIN_SIMPLE_ENCODE (MarkerScale, ocSrc->oc_type, *ocDest, oc); - - if (fpConvert) - { - FP_CONVERT_HTON (ocSrc->data.SetMarkerScale.scale, - oc->scale, fpFormat); - } - else - oc->scale = ocSrc->data.SetMarkerScale.scale; - - END_SIMPLE_ENCODE (MarkerScale, *ocDest, oc); -} - - -void _PEXEncodeCARD16 (fpFormat, ocSrc, ocDest) - -int fpFormat; -PEXOCData *ocSrc; -char **ocDest; - -{ - pexTextPrecision *oc; - - BEGIN_SIMPLE_ENCODE (TextPrecision, ocSrc->oc_type, *ocDest, oc); - - oc->precision = ocSrc->data.SetTextPrecision.precision; - - END_SIMPLE_ENCODE (TextPrecision, *ocDest, oc); -} - - -void _PEXEncodeVector2D (fpFormat, ocSrc, ocDest) - -int fpFormat; -PEXOCData *ocSrc; -char **ocDest; - -{ - pexCharUpVector *oc; - int fpConvert = (fpFormat != NATIVE_FP_FORMAT); - - BEGIN_SIMPLE_ENCODE (CharUpVector, ocSrc->oc_type, *ocDest, oc); - - if (fpConvert) - { - FP_CONVERT_HTON (ocSrc->data.SetCharUpVector.vector.x, - oc->up_x, fpFormat); - FP_CONVERT_HTON (ocSrc->data.SetCharUpVector.vector.y, - oc->up_y, fpFormat); - } - else - { - oc->up_x = ocSrc->data.SetCharUpVector.vector.x; - oc->up_y = ocSrc->data.SetCharUpVector.vector.y; - } - - END_SIMPLE_ENCODE (CharUpVector, *ocDest, oc); -} - - -void _PEXEncodeTextAlignment (fpFormat, ocSrc, ocDest) - -int fpFormat; -PEXOCData *ocSrc; -char **ocDest; - -{ - pexTextAlignment *oc; - - BEGIN_SIMPLE_ENCODE (TextAlignment, ocSrc->oc_type, *ocDest, oc); - - oc->alignment_horizontal = ocSrc->data.SetTextAlignment.halignment; - oc->alignment_vertical = ocSrc->data.SetTextAlignment.valignment; - - END_SIMPLE_ENCODE (TextAlignment, *ocDest, oc); -} - - -void _PEXEncodeCurveApprox (fpFormat, ocSrc, ocDest) - -int fpFormat; -PEXOCData *ocSrc; -char **ocDest; - -{ - pexCurveApprox *oc; - int fpConvert = (fpFormat != NATIVE_FP_FORMAT); - - BEGIN_SIMPLE_ENCODE (CurveApprox, ocSrc->oc_type, *ocDest, oc); - - oc->approxMethod = ocSrc->data.SetCurveApprox.method; - - if (fpConvert) - { - FP_CONVERT_HTON (ocSrc->data.SetCurveApprox.tolerance, - oc->tolerance, fpFormat); - } - else - oc->tolerance = ocSrc->data.SetCurveApprox.tolerance; - - END_SIMPLE_ENCODE (CurveApprox, *ocDest, oc); -} - - -void _PEXEncodeReflectionAttr (fpFormat, ocSrc, ocDest) - -int fpFormat; -PEXOCData *ocSrc; -char **ocDest; - -{ - pexReflectionAttributes *oc; - PEXReflectionAttributes *reflectionAttr; - int lenofColor; - int fpConvert = (fpFormat != NATIVE_FP_FORMAT); - - reflectionAttr = &(ocSrc->data.SetReflectionAttributes.attributes); - lenofColor = GetColorLength (reflectionAttr->specular_color.type); - - BEGIN_ENCODE_OCHEADER (ReflectionAttributes, ocSrc->oc_type, - lenofColor, *ocDest, oc); - - if (fpConvert) - { - FP_CONVERT_HTON (reflectionAttr->ambient, oc->ambient, fpFormat); - FP_CONVERT_HTON (reflectionAttr->diffuse, oc->diffuse, fpFormat); - FP_CONVERT_HTON (reflectionAttr->specular, oc->specular, fpFormat); - FP_CONVERT_HTON (reflectionAttr->specular_conc, - oc->specularConc, fpFormat); - FP_CONVERT_HTON (reflectionAttr->transmission, - oc->transmission, fpFormat); - } - else - { - oc->ambient = reflectionAttr->ambient; - oc->diffuse = reflectionAttr->diffuse; - oc->specular = reflectionAttr->specular; - oc->specularConc = reflectionAttr->specular_conc; - oc->transmission = reflectionAttr->transmission; - } - - oc->specular_colorType = reflectionAttr->specular_color.type; - - END_ENCODE_OCHEADER (ReflectionAttributes, *ocDest, oc); - - STORE_COLOR_VAL (reflectionAttr->specular_color.type, - reflectionAttr->specular_color.value, *ocDest, fpConvert, fpFormat); -} - - -void _PEXEncodeSurfaceApprox (fpFormat, ocSrc, ocDest) - -int fpFormat; -PEXOCData *ocSrc; -char **ocDest; - -{ - pexSurfaceApprox *oc; - int fpConvert = (fpFormat != NATIVE_FP_FORMAT); - - BEGIN_SIMPLE_ENCODE (SurfaceApprox, ocSrc->oc_type, *ocDest, oc); - - oc->approxMethod = ocSrc->data.SetSurfaceApprox.method; - - if (fpConvert) - { - FP_CONVERT_HTON (ocSrc->data.SetSurfaceApprox.utolerance, - oc->uTolerance, fpFormat); - FP_CONVERT_HTON (ocSrc->data.SetSurfaceApprox.vtolerance, - oc->vTolerance, fpFormat); - } - else - { - oc->uTolerance = ocSrc->data.SetSurfaceApprox.utolerance; - oc->vTolerance = ocSrc->data.SetSurfaceApprox.vtolerance; - } - - END_SIMPLE_ENCODE (SurfaceApprox, *ocDest, oc); -} - - -void _PEXEncodeCullMode (fpFormat, ocSrc, ocDest) - -int fpFormat; -PEXOCData *ocSrc; -char **ocDest; - -{ - pexFacetCullingMode *oc; - - BEGIN_SIMPLE_ENCODE (FacetCullingMode, ocSrc->oc_type, *ocDest, oc); - - oc->cullMode = ocSrc->data.SetFacetCullingMode.mode; - - END_SIMPLE_ENCODE (FacetCullingMode, *ocDest, oc); -} - - -void _PEXEncodeSwitch (fpFormat, ocSrc, ocDest) - -int fpFormat; -PEXOCData *ocSrc; -char **ocDest; - -{ - pexFacetDistinguishFlag *oc; - - BEGIN_SIMPLE_ENCODE (FacetDistinguishFlag, ocSrc->oc_type, *ocDest, oc); - - oc->distinguish = ocSrc->data.SetFacetDistinguishFlag.flag; - - END_SIMPLE_ENCODE (FacetDistinguishFlag, *ocDest, oc); -} - - -void _PEXEncodePatternSize (fpFormat, ocSrc, ocDest) - -int fpFormat; -PEXOCData *ocSrc; -char **ocDest; - -{ - pexPatternSize *oc; - int fpConvert = (fpFormat != NATIVE_FP_FORMAT); - - BEGIN_SIMPLE_ENCODE (PatternSize, ocSrc->oc_type, *ocDest, oc); - - if (fpConvert) - { - FP_CONVERT_HTON (ocSrc->data.SetPatternSize.width, - oc->size_x, fpFormat); - FP_CONVERT_HTON (ocSrc->data.SetPatternSize.height, - oc->size_y, fpFormat); - } - else - { - oc->size_x = ocSrc->data.SetPatternSize.width; - oc->size_y = ocSrc->data.SetPatternSize.height; - } - - END_SIMPLE_ENCODE (PatternSize, *ocDest, oc); -} - - -void _PEXEncodePatternAttr2D (fpFormat, ocSrc, ocDest) - -int fpFormat; -PEXOCData *ocSrc; -char **ocDest; - -{ - pexPatternAttributes2D *oc; - int fpConvert = (fpFormat != NATIVE_FP_FORMAT); - - BEGIN_SIMPLE_ENCODE (PatternAttributes2D, ocSrc->oc_type, *ocDest, oc); - - if (fpConvert) - { - FP_CONVERT_HTON (ocSrc->data.SetPatternAttributes2D.ref_point.x, - oc->point_x, fpFormat); - FP_CONVERT_HTON (ocSrc->data.SetPatternAttributes2D.ref_point.y, - oc->point_y, fpFormat); - } - else - { - oc->point_x = ocSrc->data.SetPatternAttributes2D.ref_point.x; - oc->point_y = ocSrc->data.SetPatternAttributes2D.ref_point.y; - } - - END_SIMPLE_ENCODE (PatternAttributes2D, *ocDest, oc); -} - - -void _PEXEncodePatternAttr (fpFormat, ocSrc, ocDest) - -int fpFormat; -PEXOCData *ocSrc; -char **ocDest; - -{ - pexPatternAttributes *oc; - int fpConvert = (fpFormat != NATIVE_FP_FORMAT); - - BEGIN_SIMPLE_ENCODE (PatternAttributes, ocSrc->oc_type, *ocDest, oc); - - if (fpConvert) - { - FP_CONVERT_HTON (ocSrc->data.SetPatternAttributes.ref_point.x, - oc->refPt_x, fpFormat); - FP_CONVERT_HTON (ocSrc->data.SetPatternAttributes.ref_point.y, - oc->refPt_y, fpFormat); - FP_CONVERT_HTON (ocSrc->data.SetPatternAttributes.ref_point.z, - oc->refPt_z, fpFormat); - FP_CONVERT_HTON (ocSrc->data.SetPatternAttributes.vector1.x, - oc->vector1_x, fpFormat); - FP_CONVERT_HTON (ocSrc->data.SetPatternAttributes.vector1.y, - oc->vector1_y, fpFormat); - FP_CONVERT_HTON (ocSrc->data.SetPatternAttributes.vector1.z, - oc->vector1_z, fpFormat); - FP_CONVERT_HTON (ocSrc->data.SetPatternAttributes.vector2.x, - oc->vector2_x, fpFormat); - FP_CONVERT_HTON (ocSrc->data.SetPatternAttributes.vector2.y, - oc->vector2_y, fpFormat); - FP_CONVERT_HTON (ocSrc->data.SetPatternAttributes.vector2.z, - oc->vector2_z, fpFormat); - } - else - { - oc->refPt_x = ocSrc->data.SetPatternAttributes.ref_point.x; - oc->refPt_y = ocSrc->data.SetPatternAttributes.ref_point.y; - oc->refPt_z = ocSrc->data.SetPatternAttributes.ref_point.z; - oc->vector1_x = ocSrc->data.SetPatternAttributes.vector1.x; - oc->vector1_y = ocSrc->data.SetPatternAttributes.vector1.y; - oc->vector1_z = ocSrc->data.SetPatternAttributes.vector1.z; - oc->vector2_x = ocSrc->data.SetPatternAttributes.vector2.x; - oc->vector2_y = ocSrc->data.SetPatternAttributes.vector2.y; - oc->vector2_z = ocSrc->data.SetPatternAttributes.vector2.z; - } - - END_SIMPLE_ENCODE (PatternAttributes, *ocDest, oc); -} - - -void _PEXEncodeASF (fpFormat, ocSrc, ocDest) - -int fpFormat; -PEXOCData *ocSrc; -char **ocDest; - -{ - pexIndividualASF *oc; - - BEGIN_SIMPLE_ENCODE (IndividualASF, ocSrc->oc_type, *ocDest, oc); - - oc->attribute = ocSrc->data.SetIndividualASF.attribute; - oc->source = ocSrc->data.SetIndividualASF.asf; - - END_SIMPLE_ENCODE (IndividualASF, *ocDest, oc); -} - - -void _PEXEncodeLocalTransform (fpFormat, ocSrc, ocDest) - -int fpFormat; -PEXOCData *ocSrc; -char **ocDest; - -{ - pexLocalTransform *oc; - char *ptr; - int fpConvert = (fpFormat != NATIVE_FP_FORMAT); - - BEGIN_SIMPLE_ENCODE (LocalTransform, ocSrc->oc_type, *ocDest, oc); - - oc->compType = ocSrc->data.SetLocalTransform.composition; - - ptr = (char *) oc->matrix; - STORE_LISTOF_FLOAT32 (16, ocSrc->data.SetLocalTransform.transform, ptr, - fpConvert, fpFormat); - - END_SIMPLE_ENCODE (LocalTransform, *ocDest, oc); -} - - -void _PEXEncodeLocalTransform2D (fpFormat, ocSrc, ocDest) - -int fpFormat; -PEXOCData *ocSrc; -char **ocDest; - -{ - pexLocalTransform2D *oc; - char *ptr; - int fpConvert = (fpFormat != NATIVE_FP_FORMAT); - - BEGIN_SIMPLE_ENCODE (LocalTransform2D, ocSrc->oc_type, *ocDest, oc); - - oc->compType = ocSrc->data.SetLocalTransform2D.composition; - - ptr = (char *) oc->matrix3X3; - STORE_LISTOF_FLOAT32 (9, ocSrc->data.SetLocalTransform2D.transform, ptr, - fpConvert, fpFormat); - - END_SIMPLE_ENCODE (LocalTransform2D, *ocDest, oc); -} - - -void _PEXEncodeGlobalTransform (fpFormat, ocSrc, ocDest) - -int fpFormat; -PEXOCData *ocSrc; -char **ocDest; - -{ - pexGlobalTransform *oc; - char *ptr; - int fpConvert = (fpFormat != NATIVE_FP_FORMAT); - - BEGIN_SIMPLE_ENCODE (GlobalTransform, ocSrc->oc_type, *ocDest, oc); - - ptr = (char *) oc->matrix; - STORE_LISTOF_FLOAT32 (16, ocSrc->data.SetGlobalTransform.transform, ptr, - fpConvert, fpFormat); - - END_SIMPLE_ENCODE (GlobalTransform, *ocDest, oc); -} - - -void _PEXEncodeGlobalTransform2D (fpFormat, ocSrc, ocDest) - -int fpFormat; -PEXOCData *ocSrc; -char **ocDest; - -{ - pexGlobalTransform2D *oc; - char *ptr; - int fpConvert = (fpFormat != NATIVE_FP_FORMAT); - - BEGIN_SIMPLE_ENCODE (GlobalTransform2D, ocSrc->oc_type, *ocDest, oc); - - ptr = (char *) oc->matrix3X3; - STORE_LISTOF_FLOAT32 (9, ocSrc->data.SetGlobalTransform2D.transform, ptr, - fpConvert, fpFormat); - - END_SIMPLE_ENCODE (GlobalTransform2D, *ocDest, oc); -} - - -void _PEXEncodeModelClipVolume (fpFormat, ocSrc, ocDest) - -int fpFormat; -PEXOCData *ocSrc; -char **ocDest; - -{ - pexModelClipVolume *oc; - int dataLength; - int fpConvert = (fpFormat != NATIVE_FP_FORMAT); - - dataLength = NUMWORDS (SIZEOF (pexHalfSpace) * - ocSrc->data.SetModelClipVolume.count); - - BEGIN_ENCODE_OCHEADER (ModelClipVolume, ocSrc->oc_type, - dataLength, *ocDest, oc); - - oc->modelClipOperator = ocSrc->data.SetModelClipVolume.op; - oc->numHalfSpaces = ocSrc->data.SetModelClipVolume.count; - - END_ENCODE_OCHEADER (ModelClipVolume, *ocDest, oc); - - STORE_LISTOF_HALFSPACE3D (ocSrc->data.SetModelClipVolume.count, - ocSrc->data.SetModelClipVolume.half_spaces, *ocDest, - fpConvert, fpFormat); -} - - -void _PEXEncodeModelClipVolume2D (fpFormat, ocSrc, ocDest) - -int fpFormat; -PEXOCData *ocSrc; -char **ocDest; - -{ - pexModelClipVolume2D *oc; - int dataLength; - int fpConvert = (fpFormat != NATIVE_FP_FORMAT); - - dataLength = NUMWORDS (SIZEOF (pexHalfSpace2D) * - ocSrc->data.SetModelClipVolume2D.count); - - BEGIN_ENCODE_OCHEADER (ModelClipVolume2D, ocSrc->oc_type, - dataLength, *ocDest, oc); - - oc->modelClipOperator = ocSrc->data.SetModelClipVolume2D.op; - oc->numHalfSpaces = ocSrc->data.SetModelClipVolume2D.count; - - END_ENCODE_OCHEADER (ModelClipVolume2D, *ocDest, oc); - - STORE_LISTOF_HALFSPACE2D (ocSrc->data.SetModelClipVolume2D.count, - ocSrc->data.SetModelClipVolume2D.half_spaces, *ocDest, - fpConvert, fpFormat); -} - - -void _PEXEncodeRestoreModelClip (fpFormat, ocSrc, ocDest) - -int fpFormat; -PEXOCData *ocSrc; -char **ocDest; - -{ - pexRestoreModelClipVolume *oc; - - BEGIN_SIMPLE_ENCODE (RestoreModelClipVolume, ocSrc->oc_type, *ocDest, oc); - /* no data */ - END_SIMPLE_ENCODE (RestoreModelClipVolume, *ocDest, oc); -} - - -void _PEXEncodeLightSourceState (fpFormat, ocSrc, ocDest) - -int fpFormat; -PEXOCData *ocSrc; -char **ocDest; - -{ - pexLightSourceState *oc; - int dataLength; - - dataLength = - NUMWORDS (SIZEOF (CARD16) * - ocSrc->data.SetLightSourceState.enable_count) + - NUMWORDS (SIZEOF (CARD16) * - ocSrc->data.SetLightSourceState.disable_count); - - BEGIN_ENCODE_OCHEADER (LightSourceState, ocSrc->oc_type, - dataLength, *ocDest, oc); - - oc->numEnable = ocSrc->data.SetLightSourceState.enable_count; - oc->numDisable = ocSrc->data.SetLightSourceState.disable_count; - - END_ENCODE_OCHEADER (LightSourceState, *ocDest, oc); - - STORE_LISTOF_CARD16 (ocSrc->data.SetLightSourceState.enable_count, - ocSrc->data.SetLightSourceState.enable, *ocDest); - - if (ocSrc->data.SetLightSourceState.enable_count & 1) - *ocDest += 2; - - STORE_LISTOF_CARD16 (ocSrc->data.SetLightSourceState.disable_count, - ocSrc->data.SetLightSourceState.disable, *ocDest); - - if (ocSrc->data.SetLightSourceState.disable_count & 1) - *ocDest += 2; -} - - -void _PEXEncodeID (fpFormat, ocSrc, ocDest) - -int fpFormat; -PEXOCData *ocSrc; -char **ocDest; - -{ - pexPickID *oc; - - BEGIN_SIMPLE_ENCODE (PickID, ocSrc->oc_type, *ocDest, oc); - - oc->pickId = ocSrc->data.SetPickID.pick_id; - - END_SIMPLE_ENCODE (PickID, *ocDest, oc); -} - - -void _PEXEncodePSC (fpFormat, ocSrc, ocDest) - -int fpFormat; -PEXOCData *ocSrc; -char **ocDest; - -{ - pexParaSurfCharacteristics *oc; - PEXPSCData *pscData; - int pscType; - int dataLength = 0; - int fpConvert = (fpFormat != NATIVE_FP_FORMAT); - - pscType = ocSrc->data.SetParaSurfCharacteristics.psc_type; - pscData = &(ocSrc->data.SetParaSurfCharacteristics.characteristics); - - if (pscType == PEXPSCIsoCurves) - { - dataLength = LENOF (pexPSC_IsoparametricCurves); - } - else if (pscType == PEXPSCMCLevelCurves || pscType == PEXPSCWCLevelCurves) - { - dataLength = NUMWORDS (SIZEOF (pexPSC_LevelCurves) + - (pscData->level_curves.count * SIZEOF (float))); - } - - BEGIN_ENCODE_OCHEADER (ParaSurfCharacteristics, ocSrc->oc_type, - dataLength, *ocDest, oc); - - oc->characteristics = pscType; - oc->length = NUMBYTES (dataLength); - - END_ENCODE_OCHEADER (ParaSurfCharacteristics, *ocDest, oc); - - if (dataLength > 0) - { - if (pscType == PEXPSCIsoCurves) - { - STORE_PSC_ISOCURVES (pscData->iso_curves, *ocDest); - } - else if (pscType == PEXPSCMCLevelCurves || - pscType == PEXPSCWCLevelCurves) - { - STORE_PSC_LEVELCURVES (pscData->level_curves, *ocDest, - fpConvert, fpFormat); - - STORE_LISTOF_FLOAT32 (pscData->level_curves.count, - pscData->level_curves.parameters, *ocDest, - fpConvert, fpFormat); - } - } -} - - -void _PEXEncodeNameSet (fpFormat, ocSrc, ocDest) - -int fpFormat; -PEXOCData *ocSrc; -char **ocDest; - -{ - pexAddToNameSet *oc; - int dataLength; - - dataLength = NUMWORDS (ocSrc->data.AddToNameSet.count * SIZEOF (pexName)); - - BEGIN_ENCODE_OCHEADER (AddToNameSet, ocSrc->oc_type, - dataLength, *ocDest, oc); - - END_ENCODE_OCHEADER (AddToNameSet, *ocDest, oc); - - STORE_LISTOF_CARD32 (ocSrc->data.AddToNameSet.count, - ocSrc->data.AddToNameSet.names, *ocDest); -} - - -void _PEXEncodeExecuteStructure (fpFormat, ocSrc, ocDest) - -int fpFormat; -PEXOCData *ocSrc; -char **ocDest; - -{ - pexExecuteStructure *oc; - - BEGIN_SIMPLE_ENCODE (ExecuteStructure, ocSrc->oc_type, *ocDest, oc); - - oc->id = ocSrc->data.ExecuteStructure.structure; - - END_SIMPLE_ENCODE (ExecuteStructure, *ocDest, oc); -} - - -void _PEXEncodeLabel (fpFormat, ocSrc, ocDest) - -int fpFormat; -PEXOCData *ocSrc; -char **ocDest; - -{ - pexLabel *oc; - - BEGIN_SIMPLE_ENCODE (Label, ocSrc->oc_type, *ocDest, oc); - - oc->label = ocSrc->data.Label.label; - - END_SIMPLE_ENCODE (Label, *ocDest, oc); -} - - -void _PEXEncodeApplicationData (fpFormat, ocSrc, ocDest) - -int fpFormat; -PEXOCData *ocSrc; -char **ocDest; - -{ - pexApplicationData *oc; - int dataLength; - - dataLength = NUMWORDS (ocSrc->data.ApplicationData.length); - - BEGIN_ENCODE_OCHEADER (ApplicationData, ocSrc->oc_type, - dataLength, *ocDest, oc); - - oc->numElements = ocSrc->data.ApplicationData.length; - - END_ENCODE_OCHEADER (ApplicationData, *ocDest, oc); - - memcpy (*ocDest, ocSrc->data.ApplicationData.data, - ocSrc->data.ApplicationData.length); - - *ocDest += PADDED_BYTES (ocSrc->data.ApplicationData.length); -} - - -void _PEXEncodeGSE (fpFormat, ocSrc, ocDest) - -int fpFormat; -PEXOCData *ocSrc; -char **ocDest; - -{ - pexGSE *oc; - int dataLength; - - dataLength = NUMWORDS (ocSrc->data.GSE.length); - - BEGIN_ENCODE_OCHEADER (GSE, ocSrc->oc_type, dataLength, *ocDest, oc); - - oc->id = ocSrc->data.GSE.id; - oc->numElements = ocSrc->data.GSE.length; - - END_ENCODE_OCHEADER (GSE, *ocDest, oc); - - memcpy (*ocDest, ocSrc->data.GSE.data, ocSrc->data.GSE.length); - *ocDest += PADDED_BYTES (ocSrc->data.GSE.length); -} - - -void _PEXEncodeMarkers (fpFormat, ocSrc, ocDest) - -int fpFormat; -PEXOCData *ocSrc; -char **ocDest; - -{ - pexMarkers *oc; - int dataLength; - int fpConvert = (fpFormat != NATIVE_FP_FORMAT); - - dataLength = NUMWORDS (ocSrc->data.Markers.count * SIZEOF (pexCoord3D)); - - BEGIN_ENCODE_OCHEADER (Markers, ocSrc->oc_type, dataLength, *ocDest, oc); - END_ENCODE_OCHEADER (Markers, *ocDest, oc); - - STORE_LISTOF_COORD3D (ocSrc->data.Markers.count, - ocSrc->data.Markers.points, *ocDest, fpConvert, fpFormat); -} - - -void _PEXEncodePolyline (fpFormat, ocSrc, ocDest) - -int fpFormat; -PEXOCData *ocSrc; -char **ocDest; - -{ - pexPolyline *oc; - int dataLength; - int fpConvert = (fpFormat != NATIVE_FP_FORMAT); - - dataLength = NUMWORDS (ocSrc->data.Polyline.count * SIZEOF (pexCoord3D)); - - BEGIN_ENCODE_OCHEADER (Polyline, ocSrc->oc_type, dataLength, *ocDest, oc); - END_ENCODE_OCHEADER (Polyline, *ocDest, oc); - - STORE_LISTOF_COORD3D (ocSrc->data.Polyline.count, - ocSrc->data.Polyline.points, *ocDest, fpConvert, fpFormat); -} - - -void _PEXEncodeMarkers2D (fpFormat, ocSrc, ocDest) - -int fpFormat; -PEXOCData *ocSrc; -char **ocDest; - -{ - pexMarkers2D *oc; - int dataLength; - int fpConvert = (fpFormat != NATIVE_FP_FORMAT); - - dataLength = NUMWORDS (ocSrc->data.Markers2D.count * SIZEOF (pexCoord2D)); - - BEGIN_ENCODE_OCHEADER (Markers2D, ocSrc->oc_type, - dataLength, *ocDest, oc); - END_ENCODE_OCHEADER (Markers2D, *ocDest, oc); - - STORE_LISTOF_COORD2D (ocSrc->data.Markers2D.count, - ocSrc->data.Markers2D.points, *ocDest, fpConvert, fpFormat); -} - - -void _PEXEncodePolyline2D (fpFormat, ocSrc, ocDest) - -int fpFormat; -PEXOCData *ocSrc; -char **ocDest; - -{ - pexPolyline2D *oc; - int dataLength; - int fpConvert = (fpFormat != NATIVE_FP_FORMAT); - - dataLength = NUMWORDS (ocSrc->data.Polyline2D.count * SIZEOF (pexCoord2D)); - - BEGIN_ENCODE_OCHEADER (Polyline2D, ocSrc->oc_type, - dataLength, *ocDest, oc); - END_ENCODE_OCHEADER (Polyline2D, *ocDest, oc); - - STORE_LISTOF_COORD2D (ocSrc->data.Polyline2D.count, - ocSrc->data.Polyline2D.points, *ocDest, fpConvert, fpFormat); -} - - -void _PEXEncodeText (fpFormat, ocSrc, ocDest) - -int fpFormat; -PEXOCData *ocSrc; -char **ocDest; - -{ - /* Text is always mono encoded */ - - pexText *oc; - int lenofStrings; - int fpConvert = (fpFormat != NATIVE_FP_FORMAT); - - GetStringsLength (ocSrc->data.EncodedText.count, - ocSrc->data.EncodedText.encoded_text, lenofStrings); - - BEGIN_ENCODE_OCHEADER (Text, ocSrc->oc_type, lenofStrings, *ocDest, oc); - - if (fpConvert) - { - FP_CONVERT_HTON (ocSrc->data.EncodedText.origin.x, - oc->origin_x, fpFormat); - FP_CONVERT_HTON (ocSrc->data.EncodedText.origin.y, - oc->origin_y, fpFormat); - FP_CONVERT_HTON (ocSrc->data.EncodedText.origin.z, - oc->origin_z, fpFormat); - FP_CONVERT_HTON (ocSrc->data.EncodedText.vector1.x, - oc->vector1_x, fpFormat); - FP_CONVERT_HTON (ocSrc->data.EncodedText.vector1.y, - oc->vector1_y, fpFormat); - FP_CONVERT_HTON (ocSrc->data.EncodedText.vector1.z, - oc->vector1_z, fpFormat); - FP_CONVERT_HTON (ocSrc->data.EncodedText.vector2.x, - oc->vector2_x, fpFormat); - FP_CONVERT_HTON (ocSrc->data.EncodedText.vector2.y, - oc->vector2_y, fpFormat); - FP_CONVERT_HTON (ocSrc->data.EncodedText.vector2.z, - oc->vector2_z, fpFormat); - } - else - { - oc->origin_x = ocSrc->data.EncodedText.origin.x; - oc->origin_y = ocSrc->data.EncodedText.origin.y; - oc->origin_z = ocSrc->data.EncodedText.origin.z; - oc->vector1_x = ocSrc->data.EncodedText.vector1.x; - oc->vector1_y = ocSrc->data.EncodedText.vector1.y; - oc->vector1_z = ocSrc->data.EncodedText.vector1.z; - oc->vector2_x = ocSrc->data.EncodedText.vector2.x; - oc->vector2_y = ocSrc->data.EncodedText.vector2.y; - oc->vector2_z = ocSrc->data.EncodedText.vector2.z; - } - - oc->numEncodings = ocSrc->data.EncodedText.count; - - END_ENCODE_OCHEADER (Text, *ocDest, oc); - - STORE_LISTOF_MONOENCODING (ocSrc->data.EncodedText.count, - ocSrc->data.EncodedText.encoded_text, *ocDest); -} - - -void _PEXEncodeText2D (fpFormat, ocSrc, ocDest) - -int fpFormat; -PEXOCData *ocSrc; -char **ocDest; - -{ - /* Text is always mono encoded */ - - pexText2D *oc; - int lenofStrings; - int fpConvert = (fpFormat != NATIVE_FP_FORMAT); - - GetStringsLength (ocSrc->data.EncodedText2D.count, - ocSrc->data.EncodedText2D.encoded_text, lenofStrings); - - BEGIN_ENCODE_OCHEADER (Text2D, ocSrc->oc_type, lenofStrings, *ocDest, oc); - - if (fpConvert) - { - FP_CONVERT_HTON (ocSrc->data.EncodedText2D.origin.x, - oc->origin_x, fpFormat); - FP_CONVERT_HTON (ocSrc->data.EncodedText2D.origin.y, - oc->origin_y, fpFormat); - } - else - { - oc->origin_x = ocSrc->data.EncodedText2D.origin.x; - oc->origin_y = ocSrc->data.EncodedText2D.origin.y; - } - - oc->numEncodings = ocSrc->data.EncodedText2D.count; - - END_ENCODE_OCHEADER (Text2D, *ocDest, oc); - - STORE_LISTOF_MONOENCODING (ocSrc->data.EncodedText2D.count, - ocSrc->data.EncodedText2D.encoded_text, *ocDest); -} - - -void _PEXEncodeAnnoText (fpFormat, ocSrc, ocDest) - -int fpFormat; -PEXOCData *ocSrc; -char **ocDest; - -{ - /* Anno Text is always mono encoded */ - - pexAnnotationText *oc; - int lenofStrings; - int fpConvert = (fpFormat != NATIVE_FP_FORMAT); - - GetStringsLength (ocSrc->data.EncodedAnnoText.count, - ocSrc->data.EncodedAnnoText.encoded_text, lenofStrings); - - BEGIN_ENCODE_OCHEADER (AnnotationText, ocSrc->oc_type, - lenofStrings, *ocDest, oc); - - if (fpConvert) - { - FP_CONVERT_HTON (ocSrc->data.EncodedAnnoText.origin.x, - oc->origin_x, fpFormat); - FP_CONVERT_HTON (ocSrc->data.EncodedAnnoText.origin.y, - oc->origin_y, fpFormat); - FP_CONVERT_HTON (ocSrc->data.EncodedAnnoText.origin.z, - oc->origin_z, fpFormat); - FP_CONVERT_HTON (ocSrc->data.EncodedAnnoText.offset.x, - oc->offset_x, fpFormat); - FP_CONVERT_HTON (ocSrc->data.EncodedAnnoText.offset.y, - oc->offset_y, fpFormat); - FP_CONVERT_HTON (ocSrc->data.EncodedAnnoText.offset.z, - oc->offset_z, fpFormat); - } - else - { - oc->origin_x = ocSrc->data.EncodedAnnoText.origin.x; - oc->origin_y = ocSrc->data.EncodedAnnoText.origin.y; - oc->origin_z = ocSrc->data.EncodedAnnoText.origin.z; - oc->offset_x = ocSrc->data.EncodedAnnoText.offset.x; - oc->offset_y = ocSrc->data.EncodedAnnoText.offset.y; - oc->offset_z = ocSrc->data.EncodedAnnoText.offset.z; - } - - oc->numEncodings = ocSrc->data.EncodedAnnoText.count; - - END_ENCODE_OCHEADER (AnnotationText, *ocDest, oc); - - STORE_LISTOF_MONOENCODING (ocSrc->data.EncodedAnnoText.count, - ocSrc->data.EncodedAnnoText.encoded_text, *ocDest); -} - - -void _PEXEncodeAnnoText2D (fpFormat, ocSrc, ocDest) - -int fpFormat; -PEXOCData *ocSrc; -char **ocDest; - -{ - /* Anno Text is always mono encoded */ - - pexAnnotationText2D *oc; - int lenofStrings; - int fpConvert = (fpFormat != NATIVE_FP_FORMAT); - - GetStringsLength (ocSrc->data.EncodedAnnoText2D.count, - ocSrc->data.EncodedAnnoText2D.encoded_text, lenofStrings); - - BEGIN_ENCODE_OCHEADER (AnnotationText2D, ocSrc->oc_type, - lenofStrings, *ocDest, oc); - - if (fpConvert) - { - FP_CONVERT_HTON (ocSrc->data.EncodedAnnoText2D.origin.x, - oc->origin_x, fpFormat); - FP_CONVERT_HTON (ocSrc->data.EncodedAnnoText2D.origin.y, - oc->origin_y, fpFormat); - FP_CONVERT_HTON (ocSrc->data.EncodedAnnoText2D.offset.x, - oc->offset_x, fpFormat); - FP_CONVERT_HTON (ocSrc->data.EncodedAnnoText2D.offset.y, - oc->offset_y, fpFormat); - } - else - { - oc->origin_x = ocSrc->data.EncodedAnnoText2D.origin.x; - oc->origin_y = ocSrc->data.EncodedAnnoText2D.origin.y; - oc->offset_x = ocSrc->data.EncodedAnnoText2D.offset.x; - oc->offset_y = ocSrc->data.EncodedAnnoText2D.offset.y; - } - - oc->numEncodings = ocSrc->data.EncodedAnnoText2D.count; - - END_ENCODE_OCHEADER (AnnotationText2D, *ocDest, oc); - - STORE_LISTOF_MONOENCODING (ocSrc->data.EncodedAnnoText2D.count, - ocSrc->data.EncodedAnnoText2D.encoded_text, *ocDest); -} - - -void _PEXEncodePolylineSet (fpFormat, ocSrc, ocDest) - -int fpFormat; -PEXOCData *ocSrc; -char **ocDest; - -{ - pexPolylineSetWithData *oc; - int numPoints, i; - int dataLength; - int lenofVertex; - unsigned int vertexAttributes; - unsigned int numPolylines; - int colorType; - PEXListOfVertex *polylines; - int fpConvert = (fpFormat != NATIVE_FP_FORMAT); - - numPolylines = ocSrc->data.PolylineSetWithData.count; - polylines = ocSrc->data.PolylineSetWithData.vertex_lists; - colorType = ocSrc->data.PolylineSetWithData.color_type; - vertexAttributes = ocSrc->data.PolylineSetWithData.vertex_attributes; - - for (i = 0, numPoints = 0; i < numPolylines; i++) - numPoints += polylines[i].count; - - lenofVertex = LENOF (pexCoord3D) + ((vertexAttributes & PEXGAColor) ? - GetColorLength (colorType) : 0); - - dataLength = numPolylines + (numPoints * lenofVertex); - - BEGIN_ENCODE_OCHEADER (PolylineSetWithData, ocSrc->oc_type, - dataLength, *ocDest, oc); - - oc->colorType = colorType; - oc->vertexAttribs = vertexAttributes; - oc->numLists = numPolylines; - - END_ENCODE_OCHEADER (PolylineSetWithData, *ocDest, oc); - - for (i = 0; i < numPolylines; i++) - { - STORE_CARD32 (polylines[i].count, *ocDest); - - STORE_LISTOF_VERTEX (polylines[i].count, NUMBYTES (lenofVertex), - colorType, vertexAttributes, polylines[i].vertices, - *ocDest, fpConvert, fpFormat); - } -} - - -void _PEXEncodeNURBCurve (fpFormat, ocSrc, ocDest) - -int fpFormat; -PEXOCData *ocSrc; -char **ocDest; - -{ - pexNURBCurve *oc; - int lenofVertexList; - int lenofKnotList; - unsigned int numPoints; - int rationality, order; - int fpConvert = (fpFormat != NATIVE_FP_FORMAT); - - numPoints = ocSrc->data.NURBCurve.count; - rationality = ocSrc->data.NURBCurve.rationality; - order = ocSrc->data.NURBCurve.order; - - lenofVertexList = numPoints * ((rationality == PEXRational) ? - LENOF (pexCoord4D) : LENOF (pexCoord3D)); - lenofKnotList = order + numPoints; - - BEGIN_ENCODE_OCHEADER (NURBCurve, ocSrc->oc_type, - lenofKnotList + lenofVertexList, *ocDest, oc); - - oc->curveOrder = order; - oc->coordType = rationality; - oc->numKnots = order + numPoints; - oc->numPoints = numPoints; - - if (fpConvert) - { - FP_CONVERT_HTON (ocSrc->data.NURBCurve.tmin, oc->tmin, fpFormat); - FP_CONVERT_HTON (ocSrc->data.NURBCurve.tmax, oc->tmax, fpFormat); - } - else - { - oc->tmin = ocSrc->data.NURBCurve.tmin; - oc->tmax = ocSrc->data.NURBCurve.tmax; - } - - END_ENCODE_OCHEADER (NURBCurve, *ocDest, oc); - - STORE_LISTOF_FLOAT32 (lenofKnotList, ocSrc->data.NURBCurve.knots, *ocDest, - fpConvert, fpFormat); - - if (rationality == PEXRational) - { - STORE_LISTOF_COORD4D (numPoints, ocSrc->data.NURBCurve.points.point_4d, - *ocDest, fpConvert, fpFormat); - } - else - { - STORE_LISTOF_COORD3D (numPoints, ocSrc->data.NURBCurve.points.point, - *ocDest, fpConvert, fpFormat); - } -} - - -void _PEXEncodeFillArea (fpFormat, ocSrc, ocDest) - -int fpFormat; -PEXOCData *ocSrc; -char **ocDest; - -{ - pexFillArea *oc; - int dataLength; - int fpConvert = (fpFormat != NATIVE_FP_FORMAT); - - dataLength = ocSrc->data.FillArea.count * LENOF (pexCoord3D); - - BEGIN_ENCODE_OCHEADER (FillArea, ocSrc->oc_type, dataLength, *ocDest, oc); - - oc->shape = ocSrc->data.FillArea.shape_hint; - oc->ignoreEdges = ocSrc->data.FillArea.ignore_edges; - - END_ENCODE_OCHEADER (FillArea, *ocDest, oc); - - STORE_LISTOF_COORD3D (ocSrc->data.FillArea.count, - ocSrc->data.FillArea.points, *ocDest, fpConvert, fpFormat); -} - - -void _PEXEncodeFillArea2D (fpFormat, ocSrc, ocDest) - -int fpFormat; -PEXOCData *ocSrc; -char **ocDest; - -{ - pexFillArea2D *oc; - int dataLength; - int fpConvert = (fpFormat != NATIVE_FP_FORMAT); - - dataLength = ocSrc->data.FillArea2D.count * LENOF (pexCoord2D); - - BEGIN_ENCODE_OCHEADER (FillArea2D, ocSrc->oc_type, - dataLength, *ocDest, oc); - - oc->shape = ocSrc->data.FillArea2D.shape_hint; - oc->ignoreEdges = ocSrc->data.FillArea2D.ignore_edges; - - END_ENCODE_OCHEADER (FillArea2D, *ocDest, oc); - - STORE_LISTOF_COORD2D (ocSrc->data.FillArea2D.count, - ocSrc->data.FillArea2D.points, *ocDest, fpConvert, fpFormat); -} - - -void _PEXEncodeFillAreaWithData (fpFormat, ocSrc, ocDest) - -int fpFormat; -PEXOCData *ocSrc; -char **ocDest; - -{ - pexFillAreaWithData *oc; - int dataLength; - int lenofFacet; - int lenofVertex; - int lenofColor; - unsigned int facetAttributes; - unsigned int vertexAttributes; - int colorType; - unsigned int numVertices; - int fpConvert = (fpFormat != NATIVE_FP_FORMAT); - - colorType = ocSrc->data.FillAreaWithData.color_type; - facetAttributes = ocSrc->data.FillAreaWithData.facet_attributes; - vertexAttributes = ocSrc->data.FillAreaWithData.vertex_attributes; - numVertices = ocSrc->data.FillAreaWithData.count; - - lenofColor = GetColorLength (colorType); - lenofFacet = GetFacetDataLength (facetAttributes, lenofColor); - lenofVertex = GetVertexWithDataLength (vertexAttributes, lenofColor); - - dataLength = lenofFacet + 1 /* count */ + numVertices * lenofVertex; - - BEGIN_ENCODE_OCHEADER (FillAreaWithData, ocSrc->oc_type, - dataLength, *ocDest, oc); - - oc->shape = ocSrc->data.FillAreaWithData.shape_hint; - oc->ignoreEdges = ocSrc->data.FillAreaWithData.ignore_edges; - oc->colorType = colorType; - oc->facetAttribs = facetAttributes; - oc->vertexAttribs = vertexAttributes; - - END_ENCODE_OCHEADER (FillAreaWithData, *ocDest, oc); - - if (facetAttributes) - { - STORE_FACET (colorType, facetAttributes, - ocSrc->data.FillAreaWithData.facet_data, *ocDest, - fpConvert, fpFormat); - } - - STORE_CARD32 (numVertices, *ocDest); - - STORE_LISTOF_VERTEX (numVertices, NUMBYTES (lenofVertex), colorType, - vertexAttributes, ocSrc->data.FillAreaWithData.vertices, *ocDest, - fpConvert, fpFormat); -} - - -void _PEXEncodeFillAreaSet (fpFormat, ocSrc, ocDest) - -int fpFormat; -PEXOCData *ocSrc; -char **ocDest; - -{ - pexFillAreaSet *oc; - int dataLength; - int numPoints, i; - unsigned int numFillAreas; - PEXListOfCoord *vertices; - int fpConvert = (fpFormat != NATIVE_FP_FORMAT); - - numFillAreas = ocSrc->data.FillAreaSet.count; - vertices = ocSrc->data.FillAreaSet.point_lists; - - for (i = 0, numPoints = 0; i < numFillAreas; i++) - numPoints += vertices[i].count; - - dataLength = numFillAreas + (numPoints * LENOF (pexCoord3D)); - - BEGIN_ENCODE_OCHEADER (FillAreaSet, ocSrc->oc_type, - dataLength, *ocDest, oc); - - oc->shape = ocSrc->data.FillAreaSet.shape_hint; - oc->ignoreEdges = ocSrc->data.FillAreaSet.ignore_edges; - oc->contourHint = ocSrc->data.FillAreaSet.contour_hint; - oc->numLists = numFillAreas; - - END_ENCODE_OCHEADER (FillAreaSet, *ocDest, oc); - - for (i = 0; i < numFillAreas; i++) - { - STORE_CARD32 (vertices[i].count, *ocDest); - - STORE_LISTOF_COORD3D (vertices[i].count, vertices[i].points, *ocDest, - fpConvert, fpFormat); - } -} - - -void _PEXEncodeFillAreaSet2D (fpFormat, ocSrc, ocDest) - -int fpFormat; -PEXOCData *ocSrc; -char **ocDest; - -{ - pexFillAreaSet2D *oc; - int dataLength; - int numPoints, i; - unsigned int numFillAreas; - PEXListOfCoord2D *vertices; - int fpConvert = (fpFormat != NATIVE_FP_FORMAT); - - numFillAreas = ocSrc->data.FillAreaSet2D.count; - vertices = ocSrc->data.FillAreaSet2D.point_lists; - - for (i = 0, numPoints = 0; i < numFillAreas; i++) - numPoints += vertices[i].count; - - dataLength = numFillAreas /* counts */ + (numPoints * LENOF (pexCoord2D)); - - BEGIN_ENCODE_OCHEADER (FillAreaSet2D, ocSrc->oc_type, - dataLength, *ocDest, oc); - - oc->shape = ocSrc->data.FillAreaSet2D.shape_hint; - oc->ignoreEdges = ocSrc->data.FillAreaSet2D.ignore_edges; - oc->contourHint = ocSrc->data.FillAreaSet2D.contour_hint; - oc->numLists = numFillAreas; - - END_ENCODE_OCHEADER (FillAreaSet2D, *ocDest, oc); - - for (i = 0; i < numFillAreas; i++) - { - STORE_CARD32 (vertices[i].count, *ocDest); - - STORE_LISTOF_COORD2D (vertices[i].count, vertices[i].points, *ocDest, - fpConvert, fpFormat); - } -} - - -void _PEXEncodeFillAreaSetWithData (fpFormat, ocSrc, ocDest) - -int fpFormat; -PEXOCData *ocSrc; -char **ocDest; - -{ - pexFillAreaSetWithData *oc; - int dataLength; - int lenofColor; - int lenofFacet; - int lenofVertex; - int numVertices, i; - int colorType; - unsigned int numFillAreas; - unsigned int facetAttributes; - unsigned int vertexAttributes; - PEXListOfVertex *vertices; - int fpConvert = (fpFormat != NATIVE_FP_FORMAT); - - colorType = ocSrc->data.FillAreaSetWithData.color_type; - numFillAreas = ocSrc->data.FillAreaSetWithData.count; - facetAttributes = ocSrc->data.FillAreaSetWithData.facet_attributes; - vertexAttributes = ocSrc->data.FillAreaSetWithData.vertex_attributes; - vertices = ocSrc->data.FillAreaSetWithData.vertex_lists; - - lenofColor = GetColorLength (colorType); - lenofFacet = GetFacetDataLength (facetAttributes, lenofColor); - lenofVertex = GetVertexWithDataLength (vertexAttributes, lenofColor); - - if (vertexAttributes & PEXGAEdges) - lenofVertex++; /* edge switch is CARD32 */ - - for (i = 0, numVertices = 0; i < numFillAreas; i++) - numVertices += vertices[i].count; - - dataLength = lenofFacet + numFillAreas + numVertices * lenofVertex; - - BEGIN_ENCODE_OCHEADER (FillAreaSetWithData, ocSrc->oc_type, - dataLength, *ocDest, oc); - - oc->shape = ocSrc->data.FillAreaSetWithData.shape_hint; - oc->ignoreEdges = ocSrc->data.FillAreaSetWithData.ignore_edges; - oc->contourHint = ocSrc->data.FillAreaSetWithData.contour_hint; - oc->colorType = colorType; - oc->facetAttribs = facetAttributes; - oc->vertexAttribs = vertexAttributes; - oc->numLists = numFillAreas; - - END_ENCODE_OCHEADER (FillAreaSetWithData, *ocDest, oc); - - if (facetAttributes) - { - STORE_FACET (colorType, facetAttributes, - ocSrc->data.FillAreaSetWithData.facet_data, *ocDest, - fpConvert, fpFormat); - } - - for (i = 0; i < numFillAreas; i++) - { - STORE_CARD32 (vertices[i].count, *ocDest); - - STORE_LISTOF_VERTEX (vertices[i].count, NUMBYTES (lenofVertex), - colorType, vertexAttributes, vertices[i].vertices, *ocDest, - fpConvert, fpFormat); - } -} - - -void _PEXEncodeTriangleStrip (fpFormat, ocSrc, ocDest) - -int fpFormat; -PEXOCData *ocSrc; -char **ocDest; - -{ - pexTriangleStrip *oc; - int dataLength; - int lenofColor; - int lenofFacet; - int lenofVertex; - int colorType; - unsigned long numVertices; - unsigned int facetAttributes; - unsigned int vertexAttributes; - int fpConvert = (fpFormat != NATIVE_FP_FORMAT); - - colorType = ocSrc->data.TriangleStrip.color_type; - numVertices = ocSrc->data.TriangleStrip.count; - facetAttributes = ocSrc->data.TriangleStrip.facet_attributes; - vertexAttributes = ocSrc->data.TriangleStrip.vertex_attributes; - - lenofColor = GetColorLength (colorType); - lenofFacet = GetFacetDataLength (facetAttributes, lenofColor); - lenofVertex = GetVertexWithDataLength (vertexAttributes, lenofColor); - - dataLength = (numVertices - 2) * lenofFacet + numVertices * lenofVertex; - - BEGIN_ENCODE_OCHEADER (TriangleStrip, ocSrc->oc_type, - dataLength, *ocDest, oc); - - oc->colorType = colorType; - oc->facetAttribs = facetAttributes; - oc->vertexAttribs = vertexAttributes; - oc->numVertices = numVertices; - - END_ENCODE_OCHEADER (TriangleStrip, *ocDest, oc); - - if (facetAttributes) - { - STORE_LISTOF_FACET ((numVertices - 2), - NUMBYTES (lenofFacet), colorType, - facetAttributes, ocSrc->data.TriangleStrip.facet_data, - *ocDest, fpConvert, fpFormat); - } - - STORE_LISTOF_VERTEX (numVertices, NUMBYTES (lenofVertex), colorType, - vertexAttributes, ocSrc->data.TriangleStrip.vertices, *ocDest, - fpConvert, fpFormat); -} - - -void _PEXEncodeQuadMesh (fpFormat, ocSrc, ocDest) - -int fpFormat; -PEXOCData *ocSrc; -char **ocDest; - -{ - pexQuadrilateralMesh *oc; - int dataLength; - int lenofColor; - int lenofFacet; - int lenofVertex; - int colorType; - unsigned int rowCount; - unsigned int colCount; - unsigned int facetAttributes; - unsigned int vertexAttributes; - int fpConvert = (fpFormat != NATIVE_FP_FORMAT); - - colorType = ocSrc->data.QuadrilateralMesh.color_type; - rowCount = ocSrc->data.QuadrilateralMesh.row_count; - colCount = ocSrc->data.QuadrilateralMesh.col_count; - facetAttributes = ocSrc->data.QuadrilateralMesh.facet_attributes; - vertexAttributes = ocSrc->data.QuadrilateralMesh.vertex_attributes; - - lenofColor = GetColorLength (colorType); - lenofFacet = GetFacetDataLength (facetAttributes, lenofColor); - lenofVertex = GetVertexWithDataLength (vertexAttributes, lenofColor); - - dataLength = (((rowCount - 1) * (colCount - 1)) * lenofFacet) + - (rowCount * colCount * lenofVertex); - - BEGIN_ENCODE_OCHEADER (QuadrilateralMesh, ocSrc->oc_type, - dataLength, *ocDest, oc); - - oc->colorType = colorType; - oc->mPts = colCount; - oc->nPts = rowCount; - oc->facetAttribs = facetAttributes; - oc->vertexAttribs = vertexAttributes; - oc->shape = ocSrc->data.QuadrilateralMesh.shape_hint; - - END_ENCODE_OCHEADER (QuadrilateralMesh, *ocDest, oc); - - if (facetAttributes) - { - STORE_LISTOF_FACET ((rowCount - 1) * (colCount - 1), - NUMBYTES (lenofFacet), colorType, facetAttributes, - ocSrc->data.QuadrilateralMesh.facet_data, - *ocDest, fpConvert, fpFormat); - } - - STORE_LISTOF_VERTEX (rowCount * colCount, NUMBYTES (lenofVertex), - colorType, vertexAttributes, ocSrc->data.QuadrilateralMesh.vertices, - *ocDest, fpConvert, fpFormat); -} - - -void _PEXEncodeSOFA (fpFormat, ocSrc, ocDest) - -int fpFormat; -PEXOCData *ocSrc; -char **ocDest; - -{ - pexSetOfFillAreaSets *oc; - PEXConnectivityData *pConnectivity; - PEXListOfUShort *pList; - int lenofColor; - int lenofFacet; - int lenofVertex; - int sizeofEdge; - int totLength; - int numContours; - int count; - int i, j; - unsigned int facetAttributes; - unsigned int vertexAttributes; - unsigned int edgeAttributes; - int colorType, cbytes; - unsigned int numFillAreaSets; - unsigned int numVertices; - unsigned int numIndices; - int fpConvert = (fpFormat != NATIVE_FP_FORMAT); - - colorType = ocSrc->data.SetOfFillAreaSets.color_type; - facetAttributes = ocSrc->data.SetOfFillAreaSets.facet_attributes; - vertexAttributes = ocSrc->data.SetOfFillAreaSets.vertex_attributes; - edgeAttributes = ocSrc->data.SetOfFillAreaSets.edge_attributes; - numFillAreaSets = ocSrc->data.SetOfFillAreaSets.set_count; - numVertices = ocSrc->data.SetOfFillAreaSets.vertex_count; - numIndices = ocSrc->data.SetOfFillAreaSets.index_count; - - numContours = 0; - pConnectivity = ocSrc->data.SetOfFillAreaSets.connectivity; - for (i = 0; i < numFillAreaSets; i++, pConnectivity++) - numContours += pConnectivity->count; - - lenofColor = GetColorLength (colorType); - lenofFacet = GetFacetDataLength (facetAttributes, lenofColor); - lenofVertex = GetVertexWithDataLength (vertexAttributes, lenofColor); - sizeofEdge = edgeAttributes ? SIZEOF (CARD8) : 0; - - cbytes = SIZEOF (CARD16) * (numFillAreaSets + numContours + numIndices); - - totLength = (lenofFacet * numFillAreaSets) + (lenofVertex * numVertices) + - NUMWORDS (sizeofEdge * numIndices) + NUMWORDS (cbytes); - - BEGIN_ENCODE_OCHEADER (SetOfFillAreaSets, ocSrc->oc_type, - totLength, *ocDest, oc); - - oc->shape = ocSrc->data.SetOfFillAreaSets.shape_hint; - oc->colorType = colorType; - oc->FAS_Attributes = facetAttributes; - oc->vertexAttributes = vertexAttributes; - oc->edgeAttributes = edgeAttributes ? PEXOn : PEXOff; - oc->contourHint = ocSrc->data.SetOfFillAreaSets.contour_hint; - oc->contourCountsFlag = ocSrc->data.SetOfFillAreaSets.contours_all_one; - oc->numFAS = numFillAreaSets; - oc->numVertices = numVertices; - oc->numEdges = numIndices; - oc->numContours = numContours; - - END_ENCODE_OCHEADER (SetOfFillAreaSets, *ocDest, oc); - - if (facetAttributes) - { - STORE_LISTOF_FACET (numFillAreaSets, NUMBYTES (lenofFacet), colorType, - facetAttributes, ocSrc->data.SetOfFillAreaSets.facet_data, - *ocDest, fpConvert, fpFormat); - } - - STORE_LISTOF_VERTEX (numVertices, NUMBYTES (lenofVertex), colorType, - vertexAttributes, ocSrc->data.SetOfFillAreaSets.vertices, - *ocDest, fpConvert, fpFormat); - - if (edgeAttributes) - { - memcpy (*ocDest, ocSrc->data.SetOfFillAreaSets.edge_flags, numIndices); - - *ocDest += PADDED_BYTES (numIndices); - } - - pConnectivity = ocSrc->data.SetOfFillAreaSets.connectivity; - - for (i = 0 ; i < numFillAreaSets; i++) - { - count = pConnectivity->count; - STORE_CARD16 (count, *ocDest); - - for (j = 0, pList = pConnectivity->lists; j < count; j++, pList++) - { - STORE_CARD16 (pList->count, *ocDest); - - STORE_LISTOF_CARD16 (pList->count, pList->shorts, *ocDest); - } - - pConnectivity++; - } - - *ocDest += PAD (cbytes); -} - - -void _PEXEncodeNURBSurface (fpFormat, ocSrc, ocDest) - -int fpFormat; -PEXOCData *ocSrc; -char **ocDest; - -{ - pexNURBSurface *oc; - pexTrimCurve *pTCHead; - PEXTrimCurve *ptrimCurve; - PEXListOfTrimCurve *ptrimLoop; - int dataLength; - int lenofVertexList; - int lenofUKnotList; - int lenofVKnotList; - int lenofTrimData; - int thisLength, i; - int count; - unsigned int numMPoints, numNPoints; - int rationality, uorder, vorder; - unsigned long numTrimLoops; - int fpConvert = (fpFormat != NATIVE_FP_FORMAT); - - numMPoints = ocSrc->data.NURBSurface.col_count; - numNPoints = ocSrc->data.NURBSurface.row_count; - rationality = ocSrc->data.NURBSurface.rationality; - uorder = ocSrc->data.NURBSurface.uorder; - vorder = ocSrc->data.NURBSurface.vorder; - numTrimLoops = ocSrc->data.NURBSurface.curve_count; - - lenofVertexList = numMPoints * numNPoints * - ((rationality == PEXRational) ? - LENOF (pexCoord4D) : LENOF (pexCoord3D)); - lenofUKnotList = uorder + numMPoints; - lenofVKnotList = vorder + numNPoints; - - lenofTrimData = numTrimLoops * LENOF (CARD32); - - ptrimLoop = ocSrc->data.NURBSurface.trim_curves; - for (i = 0; i < numTrimLoops; i++, ptrimLoop++) - { - ptrimCurve = ptrimLoop->curves; - count = ptrimLoop->count; - - while (count--) - { - lenofTrimData += (LENOF (pexTrimCurve) + - ptrimCurve->count + - ptrimCurve->order + /* knot list */ - ptrimCurve->count * - (ptrimCurve->rationality == PEXRational ? - LENOF (pexCoord3D) : LENOF (pexCoord2D))); - ptrimCurve++; - } - } - - dataLength = lenofUKnotList + lenofVKnotList + - lenofVertexList + lenofTrimData; - - BEGIN_ENCODE_OCHEADER (NURBSurface, ocSrc->oc_type, - dataLength, *ocDest, oc); - - oc->type = rationality; - oc->uOrder = uorder; - oc->vOrder = vorder; - oc->numUknots = uorder + numMPoints; - oc->numVknots = vorder + numNPoints; - oc->mPts = numMPoints; - oc->nPts = numNPoints; - oc->numLists = numTrimLoops; - - END_ENCODE_OCHEADER (NURBSurface, *ocDest, oc); - - STORE_LISTOF_FLOAT32 (lenofUKnotList, ocSrc->data.NURBSurface.uknots, - *ocDest, fpConvert, fpFormat); - - STORE_LISTOF_FLOAT32 (lenofVKnotList, ocSrc->data.NURBSurface.vknots, - *ocDest, fpConvert, fpFormat); - - if (rationality == PEXRational) - { - STORE_LISTOF_COORD4D (numMPoints * numNPoints, - ocSrc->data.NURBSurface.points.point_4d, *ocDest, - fpConvert, fpFormat); - } - else - { - STORE_LISTOF_COORD3D (numMPoints * numNPoints, - ocSrc->data.NURBSurface.points.point, *ocDest, - fpConvert, fpFormat); - } - - ptrimLoop = ocSrc->data.NURBSurface.trim_curves; - for (i = 0; i < numTrimLoops; i++, ptrimLoop++) - { - count = ptrimLoop->count; - STORE_CARD32 (count, *ocDest); - - ptrimCurve = ptrimLoop->curves; - - while (count--) - { - thisLength = ptrimCurve->order + ptrimCurve->count; - - BEGIN_TRIMCURVE_HEAD (*ocDest, pTCHead); - - pTCHead->visibility = (pexSwitch) ptrimCurve->visibility; - pTCHead->order = (CARD16) ptrimCurve->order; - pTCHead->type = (pexCoordType) ptrimCurve->rationality; - pTCHead->approxMethod = (INT16) ptrimCurve->approx_method; - pTCHead->numKnots = thisLength; - pTCHead->numCoord = ptrimCurve->count; - - if (fpConvert) - { - FP_CONVERT_HTON (ptrimCurve->tolerance, - pTCHead->tolerance, fpFormat); - FP_CONVERT_HTON (ptrimCurve->tmin, - pTCHead->tMin, fpFormat); - FP_CONVERT_HTON (ptrimCurve->tmax, - pTCHead->tMax, fpFormat); - } - else - { - pTCHead->tolerance = (float) ptrimCurve->tolerance; - pTCHead->tMin = (float) ptrimCurve->tmin; - pTCHead->tMax = (float) ptrimCurve->tmax; - } - - END_TRIMCURVE_HEAD (*ocDest, pTCHead); - *ocDest += SIZEOF (pexTrimCurve); - - STORE_LISTOF_FLOAT32 (thisLength, - ptrimCurve->knots.floats, *ocDest, fpConvert, fpFormat); - - if (ptrimCurve->rationality == PEXRational) - { - STORE_LISTOF_COORD3D (ptrimCurve->count, - ptrimCurve->control_points.point, *ocDest, - fpConvert, fpFormat); - } - else - { - STORE_LISTOF_COORD2D (ptrimCurve->count, - ptrimCurve->control_points.point_2d, *ocDest, - fpConvert, fpFormat); - } - - ptrimCurve++; - } - } -} - - -void _PEXEncodeCellArray (fpFormat, ocSrc, ocDest) - -int fpFormat; -PEXOCData *ocSrc; -char **ocDest; - -{ - pexCellArray *oc; - int dataLength; - int count; - int fpConvert = (fpFormat != NATIVE_FP_FORMAT); - - count = ocSrc->data.CellArray.col_count * ocSrc->data.CellArray.row_count; - dataLength = NUMWORDS (count * SIZEOF (pexTableIndex)); - - BEGIN_ENCODE_OCHEADER (CellArray, ocSrc->oc_type, dataLength, *ocDest, oc); - - if (fpConvert) - { - FP_CONVERT_HTON (ocSrc->data.CellArray.point1.x, - oc->point1_x, fpFormat); - FP_CONVERT_HTON (ocSrc->data.CellArray.point1.y, - oc->point1_y, fpFormat); - FP_CONVERT_HTON (ocSrc->data.CellArray.point1.z, - oc->point1_z, fpFormat); - FP_CONVERT_HTON (ocSrc->data.CellArray.point2.x, - oc->point2_x, fpFormat); - FP_CONVERT_HTON (ocSrc->data.CellArray.point2.y, - oc->point2_y, fpFormat); - FP_CONVERT_HTON (ocSrc->data.CellArray.point2.z, - oc->point2_z, fpFormat); - FP_CONVERT_HTON (ocSrc->data.CellArray.point3.x, - oc->point3_x, fpFormat); - FP_CONVERT_HTON (ocSrc->data.CellArray.point3.y, - oc->point3_y, fpFormat); - FP_CONVERT_HTON (ocSrc->data.CellArray.point3.z, - oc->point3_z, fpFormat); - } - else - { - oc->point1_x = ocSrc->data.CellArray.point1.x; - oc->point1_y = ocSrc->data.CellArray.point1.y; - oc->point1_z = ocSrc->data.CellArray.point1.z; - oc->point2_x = ocSrc->data.CellArray.point2.x; - oc->point2_y = ocSrc->data.CellArray.point2.y; - oc->point2_z = ocSrc->data.CellArray.point2.z; - oc->point3_x = ocSrc->data.CellArray.point3.x; - oc->point3_y = ocSrc->data.CellArray.point3.y; - oc->point3_z = ocSrc->data.CellArray.point3.z; - } - - oc->dx = ocSrc->data.CellArray.col_count; - oc->dy = ocSrc->data.CellArray.row_count; - - END_ENCODE_OCHEADER (CellArray, *ocDest, oc); - - STORE_LISTOF_CARD16 (count, ocSrc->data.CellArray.color_indices, *ocDest); - - if (count & 1) - *ocDest += 2; -} - - -void _PEXEncodeCellArray2D (fpFormat, ocSrc, ocDest) - -int fpFormat; -PEXOCData *ocSrc; -char **ocDest; - -{ - pexCellArray2D *oc; - int dataLength; - int count; - int fpConvert = (fpFormat != NATIVE_FP_FORMAT); - - count = ocSrc->data.CellArray2D.col_count * - ocSrc->data.CellArray2D.row_count; - - dataLength = NUMWORDS (count * SIZEOF (pexTableIndex)); - - BEGIN_ENCODE_OCHEADER (CellArray2D, ocSrc->oc_type, - dataLength, *ocDest, oc); - - if (fpConvert) - { - FP_CONVERT_HTON (ocSrc->data.CellArray2D.point1.x, - oc->point1_x, fpFormat); - FP_CONVERT_HTON (ocSrc->data.CellArray2D.point1.y, - oc->point1_y, fpFormat); - FP_CONVERT_HTON (ocSrc->data.CellArray2D.point2.x, - oc->point2_x, fpFormat); - FP_CONVERT_HTON (ocSrc->data.CellArray2D.point2.y, - oc->point2_y, fpFormat); - } - else - { - oc->point1_x = ocSrc->data.CellArray2D.point1.x; - oc->point1_y = ocSrc->data.CellArray2D.point1.y; - oc->point2_x = ocSrc->data.CellArray2D.point2.x; - oc->point2_y = ocSrc->data.CellArray2D.point2.y; - } - - oc->dx = ocSrc->data.CellArray2D.col_count; - oc->dy = ocSrc->data.CellArray2D.row_count; - - END_ENCODE_OCHEADER (CellArray2D, *ocDest, oc); - - STORE_LISTOF_CARD16 (count, - ocSrc->data.CellArray2D.color_indices, *ocDest); - - if (count & 1) - *ocDest += 2; -} - - -void _PEXEncodeExtendedCellArray (fpFormat, ocSrc, ocDest) - -int fpFormat; -PEXOCData *ocSrc; -char **ocDest; - -{ - pexExtendedCellArray *oc; - int count; - int dataLength; - int fpConvert = (fpFormat != NATIVE_FP_FORMAT); - - count = ocSrc->data.ExtendedCellArray.col_count * - ocSrc->data.ExtendedCellArray.row_count; - - dataLength = count * - GetColorLength (ocSrc->data.ExtendedCellArray.color_type); - - BEGIN_ENCODE_OCHEADER (ExtendedCellArray, ocSrc->oc_type, - dataLength, *ocDest, oc); - - if (fpConvert) - { - FP_CONVERT_HTON (ocSrc->data.ExtendedCellArray.point1.x, - oc->point1_x, fpFormat); - FP_CONVERT_HTON (ocSrc->data.ExtendedCellArray.point1.y, - oc->point1_y, fpFormat); - FP_CONVERT_HTON (ocSrc->data.ExtendedCellArray.point1.z, - oc->point1_z, fpFormat); - FP_CONVERT_HTON (ocSrc->data.ExtendedCellArray.point2.x, - oc->point2_x, fpFormat); - FP_CONVERT_HTON (ocSrc->data.ExtendedCellArray.point2.y, - oc->point2_y, fpFormat); - FP_CONVERT_HTON (ocSrc->data.ExtendedCellArray.point2.z, - oc->point2_z, fpFormat); - FP_CONVERT_HTON (ocSrc->data.ExtendedCellArray.point3.x, - oc->point3_x, fpFormat); - FP_CONVERT_HTON (ocSrc->data.ExtendedCellArray.point3.y, - oc->point3_y, fpFormat); - FP_CONVERT_HTON (ocSrc->data.ExtendedCellArray.point3.z, - oc->point3_z, fpFormat); - } - else - { - oc->point1_x = ocSrc->data.ExtendedCellArray.point1.x; - oc->point1_y = ocSrc->data.ExtendedCellArray.point1.y; - oc->point1_z = ocSrc->data.ExtendedCellArray.point1.z; - oc->point2_x = ocSrc->data.ExtendedCellArray.point2.x; - oc->point2_y = ocSrc->data.ExtendedCellArray.point2.y; - oc->point2_z = ocSrc->data.ExtendedCellArray.point2.z; - oc->point3_x = ocSrc->data.ExtendedCellArray.point3.x; - oc->point3_y = ocSrc->data.ExtendedCellArray.point3.y; - oc->point3_z = ocSrc->data.ExtendedCellArray.point3.z; - } - - oc->colorType = ocSrc->data.ExtendedCellArray.color_type; - oc->dx = ocSrc->data.ExtendedCellArray.col_count; - oc->dy = ocSrc->data.ExtendedCellArray.row_count; - - END_ENCODE_OCHEADER (ExtendedCellArray, *ocDest, oc); - - STORE_LISTOF_COLOR_VAL (count, ocSrc->data.ExtendedCellArray.color_type, - ocSrc->data.ExtendedCellArray.colors, *ocDest, fpConvert, fpFormat); -} - - -void _PEXEncodeGDP (fpFormat, ocSrc, ocDest) - -int fpFormat; -PEXOCData *ocSrc; -char **ocDest; - -{ - pexGDP *oc; - int dataLength; - int fpConvert = (fpFormat != NATIVE_FP_FORMAT); - - dataLength = ocSrc->data.GDP.count * LENOF (pexCoord3D) + - NUMWORDS (ocSrc->data.GDP.length); - - BEGIN_ENCODE_OCHEADER (GDP, ocSrc->oc_type, dataLength, *ocDest, oc); - - oc->gdpId = ocSrc->data.GDP.gdp_id; - oc->numPoints = ocSrc->data.GDP.count; - oc->numBytes = ocSrc->data.GDP.length; - - END_ENCODE_OCHEADER (GDP, *ocDest, oc); - - STORE_LISTOF_COORD3D (ocSrc->data.GDP.count, ocSrc->data.GDP.points, - *ocDest, fpConvert, fpFormat); - - memcpy (*ocDest, ocSrc->data.GDP.data, ocSrc->data.GDP.length); - *ocDest += PADDED_BYTES (ocSrc->data.GDP.length); -} - - -void _PEXEncodeGDP2D (fpFormat, ocSrc, ocDest) - -int fpFormat; -PEXOCData *ocSrc; -char **ocDest; - -{ - pexGDP2D *oc; - int dataLength; - int fpConvert = (fpFormat != NATIVE_FP_FORMAT); - - dataLength = ocSrc->data.GDP2D.count * LENOF (pexCoord2D) + - NUMWORDS (ocSrc->data.GDP2D.length); - - BEGIN_ENCODE_OCHEADER (GDP2D, ocSrc->oc_type, dataLength, *ocDest, oc); - - oc->gdpId = ocSrc->data.GDP2D.gdp_id; - oc->numPoints = ocSrc->data.GDP2D.count; - oc->numBytes = ocSrc->data.GDP2D.length; - - END_ENCODE_OCHEADER (GDP2D, *ocDest, oc); - - STORE_LISTOF_COORD2D (ocSrc->data.GDP2D.count, ocSrc->data.GDP2D.points, - *ocDest, fpConvert, fpFormat); - - memcpy (*ocDest, ocSrc->data.GDP2D.data, ocSrc->data.GDP2D.length); - *ocDest += PADDED_BYTES (ocSrc->data.GDP2D.length); -} - - -void _PEXEncodeNoop (fpFormat, ocSrc, ocDest) - -int fpFormat; -PEXOCData *ocSrc; -char **ocDest; - -{ - pexNoop *oc; - - BEGIN_SIMPLE_ENCODE (Noop, ocSrc->oc_type, *ocDest, oc); - /* no data */ - END_SIMPLE_ENCODE (Noop, *ocDest, oc); -} |