cotton_double/Include/ClassicMIL/MILDyn/mil3dgra.h

968 lines
49 KiB
C++

/////////////////////////////////////////////////////////////////
//
// Filename : MIL3DGRA.H
// Content : Define for the MIL 3DGRA module
// Revision : 10.60.0776
//
// Copyright © Matrox Electronic Systems Ltd., 1992-2023.
// All Rights Reserved
//
/////////////////////////////////////////////////////////////////
#ifndef __MIL3DGRA_H__
#define __MIL3DGRA_H__
/* C++ directive if needed */
#ifdef __cplusplus
extern "C"
{
#endif
typedef MIL_HOOK_FUNCTION_PTR MIL_3DGRA_HOOK_FUNCTION_PTR;
// Control values
#define M_ROOT_NODE 0
#define M_NO_LABEL 0x20000000L // Also defined in milreg.h
#define M_LIST 0x08000000L /* already defined in mil.h */
#define M_DEFAULT_SETTINGS 0x04000000L
#define M_SELECTABLE 50L // Already defined in mil.h
#define M_EDITABLE 1772L // Already defined in mil.h
#define M_SCALABLE 5699L
// M3dgraAlloc
// 1000-2000
#define M_GRAPHIC_TYPE_ARC 1505L // already defined in mil.h
#define M_GRAPHIC_TYPE_DOTS 1507L // already defined in mil.h
#define M_GRAPHIC_TYPE_LINE 1508L // already defined in mil.h
#define M_GRAPHIC_TYPE_LINES 1509L // already defined in mil.h
#define M_GRAPHIC_TYPE_POLYGON 1510L // already defined in mil.h
#define M_GRAPHIC_TYPE_TEXT 1513L // already defined in mil.h
#define M_GRAPHIC_TYPE_AXIS 3881L
#define M_GRAPHIC_TYPE_BOX 3882L
#define M_GRAPHIC_TYPE_POINT_CLOUD 3883L
#define M_GRAPHIC_TYPE_CYLINDER 3884L
#define M_GRAPHIC_TYPE_GRID 3885L
#define M_GRAPHIC_TYPE_PLANE 3886L
#define M_GRAPHIC_TYPE_QUAD 3887L
#define M_GRAPHIC_TYPE_SPHERE 3888L
#define M_GRAPHIC_TYPE_NODE 3889L
// M3dgraCopy
#define M_CLIPPING_BOX 3868L
#define M_GRAPHIC 3879L
#define M_COLOR_LUT 3945L
#define M_RECURSIVE 0x00040000 // already defined in milmod.h
#define M_CHILDREN_ONLY 0x00080000
#define M_BOUNDING_BOX 0x00000003L // already defined
#define M_GEOMETRY 1306L // Already defined
// Gralist controls
#define M_BOTH_CORNERS 0x00000004L // Already defined in mil.h
#define M_CENTER_AND_DIMENSION 0x00000002L // Already defined in
#define M_POINT_AND_VECTOR 4670
#define M_VISIBLE 1533L // Already defined in mil.h
#define M_LABEL_EXISTS 4671
#define M_POSITION_X 0x00003400L // Already defined in milim.h
#define M_POSITION_Y 0x00004400L // Already defined in milim.h
#define M_POSITION_Z 3960L
#define M_EDITABLE_COLOR 3961L
#define M_EDITABLE_OPACITY 3962L
#define M_EDITABLE_APPEARANCE 3963L
#define M_SELECTION_RADIUS 1219L // Already defined in mil.h
// Container
#define M_TRANSFORMATION_MATRIX 72L // Already defined in milreg.h
#define M_BUFFER_LIMITS 4672
#define M_DATA_EXTREMES_GLOBAL 4673
#define M_DATA_EXTREMES_PER_BAND 4674
#define M_USER_DEFINED 21L // Already defined in alot of places
#define M_AUTO_COLOR 0x00100000L
#define M_CONTAINER_ID 4675
#define M_GRAPHIC_RESOLUTION 4676
#define M_LINK 0x00000001L // Already defined in mil.h
#define M_NO_LINK 0x00000004L
// Dots
#define M_PER_POINT 3873L
// Lines
#define M_PER_LINE 5557L
// Axis
#define M_PER_AXIS 3956L
//Plane
#define M_THREE_POINTS 3390 // Already defined in mil3dgeo.h
#define M_COEFFICIENTS 3388
#define M_POINT_AND_NORMAL 3389
#define M_POINT_AND_TWO_VECTORS 3391
// Text
#define M_GRAPHIC_TEXT (3869L | M_CLIENT_ENCODING)
#define M_FONT (7L | M_CLIENT_ENCODING) // Already defined in mil.h
#define M_TEXT_ALIGN_HORIZONTAL 58L // Already defined in Mil.h
#define M_TEXT_ALIGN_VERTICAL 71L // Already defined in Mil.h
#define M_TEXT_BORDER 1785L // Already defined in Mil.h
#define M_TEXT_DIRECTION 0x01000061L // Already defined in Mil.h
#define M_TEXT_SHADING 4747L
#define M_BACKGROUND_MODE 12L // Already defined in Mil.h
//Cylinder
#define M_TWO_POINTS 3657
// Arc
#define M_CENTER_AND_TWO_POINTS 3875L
#define M_CENTER_AND_TWO_VECTORS 3876L
#define M_NORMAL_AND_ANGLE 3877L
// Grid
#define M_SIZE_AND_SPACING 3932L
#define M_TILES_AND_SPACING 3933L
////////////////////////////////////////////////////////////////////////////////
// M3dgraControl
////////////////////////////////////////////////////////////////////////////////
// MIL_INT64 CONTROLS
#define M_COLOR_COMPONENT 4678
#define M_APPEARANCE 4679
#define M_COLOR_LIMITS 4680
#define M_COLOR_LUT_ID 5753
#define M_COLOR_LUT_SIZE 4681
#define M_COLOR_LUT_SIZE_BAND 4682
#define M_COLOR_COMPONENT_BAND 4683
#define M_COLOR_USE_LUT 4684
#define M_CHILDREN 4685
#define M_NUMBER_OF_CHILDREN 4686
#define M_PARENT 4687
#define M_DISPLAY_BASES 4688
#define M_COLOR_AXIS_X 4689
#define M_COLOR_AXIS_Y 4690
#define M_COLOR_AXIS_Z 4691
#define M_SAME_AS_COLOR 4692
#define M_COLOR_USE_TEXTURE 4693
#define M_COLOR_TEXTURE_SIZE_X 4694
#define M_COLOR_TEXTURE_SIZE_Y 4695
#define M_COLOR_TEXTURE_SIZE_BAND 4696
#define M_COLOR_TEXTURE 4697
#define M_SHADING 4698
#define M_FLAT 4699
#define M_GOURAUD 4700
#define M_PHONG 4726
#define M_KEYING_COLOR 4727
#define M_GRAPHIC_TYPE 1518L // Already defined in mil.h
#define M_FILL_COLOR (M_DISP_CONTROL_START+193L) // already defined in mildisplay.h
#define M_BASES 4153
#define M_POINTS 0x00000010L
#define M_WIREFRAME 0x00000020L
#define M_SOLID 0x00000040L
#define M_SOLID_WITH_WIREFRAME (M_SOLID + M_WIREFRAME)
//#define M_VIEW_BASED_POSITION_PIXEL 0x80000
// MIL_DOUBLE CONTROLS
#define M_OPACITY 4728
#define M_COLOR_LIMITS_MIN 4729
#define M_COLOR_LIMITS_MAX 4730
#define M_POINTS_X 4733
#define M_POINTS_Y 4734
#define M_POINTS_Z 4735
#define M_START_POINTS_X 5558
#define M_START_POINTS_Y 5559
#define M_START_POINTS_Z 5560
#define M_END_POINTS_X 5561
#define M_END_POINTS_Y 5562
#define M_END_POINTS_Z 5563
#define M_SPACING_X 4736
#define M_SPACING_Y 4737
#define M_FONT_SIZE 0x01000060L // already defined in Mil.h
#define M_THICKNESS 3L // also used in MgraLines
#define M_TRANSFORM_TYPES_SHIFT 8L // =utilities= (also defined in milcal.h)
#define M_RELATIVE_TO_ROOT (256 << M_TRANSFORM_TYPES_SHIFT)
////////////////////////////////////////////////////////////////////////////////////////////////
// Hook values
////////////////////////////////////////////////////////////////////////////////////////////////
#define M_OBJ_HOOK_MODULE_RANGE_START 0x00000FE00L // Already defined in mil.h
#define M_OBJ_HOOK_MODULE_RANGE_END 0x00000FFFFL // Already defined in mil.h
// 3ddisplay hook8
#define M_EDITABLE_GRAPHIC_MODIFIED (M_OBJ_HOOK_MODULE_RANGE_START + 02L)
#define M_HANDLE_GRAPHIC_TRANSLATED (M_OBJ_HOOK_MODULE_RANGE_START + 03L)
#define M_HANDLE_GRAPHIC_ROTATED (M_OBJ_HOOK_MODULE_RANGE_START + 04L)
#define M_HANDLE_GRAPHIC_CLICKED (M_OBJ_HOOK_MODULE_RANGE_START + 05L)
////////////////////////////////////////////////////////////////////////////////
// Deprecated starting 10 SP5
////////////////////////////////////////////////////////////////////////////////
#if OldDefinesSupport
#define M_CYLINDER_BASES 4688
MIL_DEPRECATED(M_CYLINDER_BASES, 1050)
#endif
////////////////////////////////////////////////////////////////////////////////
// M3dgra calls
MIL_INT64 MFTYPE M3dgraAdd(MIL_ID List3dgraId,
MIL_INT64 ParentLabel,
MIL_ID ContainerOrImageBufId,
MIL_INT64 ControlFlag);
MIL_ID MFTYPE M3dgraAlloc(MIL_ID SysId,
MIL_INT64 ControlFlag,
MIL_ID* List3dgraIdPtr);
void MFTYPE M3dgraControlDouble(MIL_ID List3dgraId,
MIL_INT64 Label,
MIL_INT64 ControlType,
MIL_DOUBLE ControlValue);
void MFTYPE M3dgraControlInt64 (MIL_ID List3dgraId,
MIL_INT64 Label,
MIL_INT64 ControlType,
MIL_INT64 ControlValue);
void MFTYPE M3dgraFree(MIL_ID List3dgraId);
MIL_INT64 MFTYPE M3dgraInquire(MIL_ID List3dgraId,
MIL_INT64 Label,
MIL_INT64 InquireType,
void* UserVarPtr);
void MFTYPE M3dgraRemove(MIL_ID List3dgraId,
MIL_INT64 Label,
MIL_INT64 ControlFlag);
MIL_INT MFTYPE M3dgraGetHookInfo(MIL_ID EventId,
MIL_INT64 InfoType,
void* UserVarPtr);
void MFTYPE M3dgraHookFunction(MIL_ID List3dgraId,
MIL_INT HookType,
MIL_3DGRA_HOOK_FUNCTION_PTR HookHandlerPtr,
void* UserDataPtr);
MIL_INT64 MFTYPE M3dgraBox(MIL_ID List3dgraId,
MIL_INT64 ParentLabel,
MIL_INT64 CreationMode,
MIL_DOUBLE XPos1,
MIL_DOUBLE YPos1,
MIL_DOUBLE ZPos1,
MIL_DOUBLE XPos2OrLength,
MIL_DOUBLE YPos2OrLength,
MIL_DOUBLE ZPos2OrLength,
MIL_ID Matrix3dgeoId,
MIL_INT64 ControlFlag);
MIL_INT64 MFTYPE M3dgraSphere(MIL_ID List3dgraId,
MIL_INT64 ParentLabel,
MIL_DOUBLE CenterX,
MIL_DOUBLE CenterY,
MIL_DOUBLE CenterZ,
MIL_DOUBLE Radius,
MIL_INT64 ControlFlag);
MIL_INT64 MFTYPE M3dgraCylinder(MIL_ID List3dgraId,
MIL_INT64 ParentLabel,
MIL_INT64 CreationMode,
MIL_DOUBLE XPos1,
MIL_DOUBLE YPos1,
MIL_DOUBLE ZPos1,
MIL_DOUBLE XPos2OrVector,
MIL_DOUBLE YPos2OrVector,
MIL_DOUBLE ZPos2OrVector,
MIL_DOUBLE Radius,
MIL_DOUBLE Length,
MIL_INT64 ControlFlag);
MIL_INT64 MFTYPE M3dgraGrid(MIL_ID List3dgraId,
MIL_INT64 ParentLabel,
MIL_INT64 CreationMode,
MIL_ID Matrix3dgeoId,
MIL_DOUBLE Param1,
MIL_DOUBLE Param2,
MIL_DOUBLE Param3,
MIL_DOUBLE Param4,
MIL_INT64 ControlFlag);
MIL_INT64 MFTYPE M3dgraLine(MIL_ID List3dgraId,
MIL_INT64 ParentLabel,
MIL_INT64 CreationMode,
MIL_INT64 Symbol,
MIL_DOUBLE PointX,
MIL_DOUBLE PointY,
MIL_DOUBLE PointZ,
MIL_DOUBLE PointOrVectorX,
MIL_DOUBLE PointOrVectorY,
MIL_DOUBLE PointOrVectorZ,
MIL_DOUBLE Length,
MIL_INT64 ControlFlag);
MIL_INT64 MFTYPE M3dgraNode(MIL_ID List3dgraId,
MIL_INT64 ParentLabel,
MIL_ID Matrix3dgeoId,
MIL_INT64 ControlFlag);
MIL_INT64 MFTYPE M3dgraPlane(MIL_ID List3dgraId,
MIL_INT64 ParentLabel,
MIL_INT64 CreationMode,
MIL_DOUBLE X1,
MIL_DOUBLE Y1,
MIL_DOUBLE Z1,
MIL_DOUBLE X2OrD,
MIL_DOUBLE Y2,
MIL_DOUBLE Z2,
MIL_DOUBLE X3,
MIL_DOUBLE Y3,
MIL_DOUBLE Z3,
MIL_DOUBLE Size,
MIL_INT64 ControlFlag);
MIL_INT64 MFTYPE M3dgraArc(MIL_ID List3dgraId,
MIL_INT64 ParentLabel,
MIL_INT64 CreationMode,
MIL_INT64 Symbol,
MIL_DOUBLE X1,
MIL_DOUBLE Y1,
MIL_DOUBLE Z1,
MIL_DOUBLE X2,
MIL_DOUBLE Y2,
MIL_DOUBLE Z2,
MIL_DOUBLE X3,
MIL_DOUBLE Y3,
MIL_DOUBLE Z3,
MIL_DOUBLE Angle,
MIL_INT64 ControlFlag);
MIL_INT64 MFTYPE M3dgraDotsDouble(MIL_ID List3dgraId,
MIL_INT64 ParentLabel,
MIL_INT NumPoints,
const MIL_DOUBLE* CoordXArrayPtr,
const MIL_DOUBLE* CoordYArrayPtr,
const MIL_DOUBLE* CoordZArrayPtr,
const MIL_UINT8* PointsRArrayPtr,
const MIL_UINT8* PointsGArrayPtr,
const MIL_UINT8* PointsBArrayPtr,
MIL_INT64 ControlFlag);
MIL_INT64 MFTYPE M3dgraDotsFloat(MIL_ID List3dgraId,
MIL_INT64 ParentLabel,
MIL_INT NumPoints,
const MIL_FLOAT* CoordXArrayPtr,
const MIL_FLOAT* CoordYArrayPtr,
const MIL_FLOAT* CoordZArrayPtr,
const MIL_UINT8* PointsRArrayPtr,
const MIL_UINT8* PointsGArrayPtr,
const MIL_UINT8* PointsBArrayPtr,
MIL_INT64 ControlFlag);
MIL_INT64 MFTYPE M3dgraLinesDouble(MIL_ID List3dgraId,
MIL_INT64 ParentLabel,
MIL_INT64 CreationMode,
MIL_INT NumLines,
const MIL_DOUBLE* CoordXArrayPtr,
const MIL_DOUBLE* CoordYArrayPtr,
const MIL_DOUBLE* CoordZArrayPtr,
const MIL_DOUBLE* CoordX2ArrayPtr,
const MIL_DOUBLE* CoordY2ArrayPtr,
const MIL_DOUBLE* CoordZ2ArrayPtr,
const MIL_UINT8* LinesRArrayPtr,
const MIL_UINT8* LinesGArrayPtr,
const MIL_UINT8* LinesBArrayPtr,
MIL_DOUBLE Length,
MIL_INT64 ControlFlag);
MIL_INT64 MFTYPE M3dgraLinesFloat(MIL_ID List3dgraId,
MIL_INT64 ParentLabel,
MIL_INT64 CreationMode,
MIL_INT NumLines,
const MIL_FLOAT* CoordXArrayPtr,
const MIL_FLOAT* CoordYArrayPtr,
const MIL_FLOAT* CoordZArrayPtr,
const MIL_FLOAT* CoordX2ArrayPtr,
const MIL_FLOAT* CoordY2ArrayPtr,
const MIL_FLOAT* CoordZ2ArrayPtr,
const MIL_UINT8* LinesRArrayPtr,
const MIL_UINT8* LinesGArrayPtr,
const MIL_UINT8* LinesBArrayPtr,
MIL_DOUBLE Length,
MIL_INT64 ControlFlag);
MIL_INT64 MFTYPE M3dgraCopy(MIL_ID SrcMilObjectId,
MIL_INT64 SrcLabel,
MIL_ID DstMilObjectId,
MIL_INT64 DstLabel,
MIL_INT64 CopyType,
MIL_INT64 ControlFlag);
MIL_INT64 MFTYPE M3dgraPolygonDouble(MIL_ID List3dgraId,
MIL_INT64 ParentLabel,
MIL_INT64 CreationMode,
MIL_INT NumPoints,
const MIL_DOUBLE* CoordXArrayPtr,
const MIL_DOUBLE* CoordYArrayPtr,
const MIL_DOUBLE* CoordZArrayPtr,
const MIL_DOUBLE* TextureXArrayPtr,
const MIL_DOUBLE* TextureYArrayPtr,
MIL_ID TextureBufId,
MIL_INT64 ControlFlag);
MIL_INT64 MFTYPE M3dgraPolygonFloat(MIL_ID List3dgraId,
MIL_INT64 ParentLabel,
MIL_INT64 CreationMode,
MIL_INT NumPoints,
const MIL_FLOAT* CoordXArrayPtr,
const MIL_FLOAT* CoordYArrayPtr,
const MIL_FLOAT* CoordZArrayPtr,
const MIL_FLOAT* TextureXArrayPtr,
const MIL_FLOAT* TextureYArrayPtr,
MIL_ID TextureBufId,
MIL_INT64 ControlFlag);
// For CAPI calls with strings
#if M_MIL_USE_UNICODE
MIL_INT64 MFTYPE M3dgraTextA(MIL_ID List3dgraId, MIL_INT64 ParentLabel, MIL_CONST_TEXTA_PTR Text, MIL_ID Matrix3dgeoId, MIL_INT64 Options, MIL_INT64 ControlFlag);
MIL_INT64 MFTYPE M3dgraTextW(MIL_ID List3dgraId, MIL_INT64 ParentLabel, MIL_CONST_TEXTW_PTR Text, MIL_ID Matrix3dgeoId, MIL_INT64 Options, MIL_INT64 ControlFlag);
MIL_INT64 MFTYPE M3dgraAxisA(MIL_ID List3dgraId, MIL_INT64 ParentLabel, MIL_ID Matrix3dgeoId, MIL_DOUBLE AxisLength, MIL_CONST_TEXTA_PTR Name, MIL_INT64 Options, MIL_INT64 ControlFlag);
MIL_INT64 MFTYPE M3dgraAxisW(MIL_ID List3dgraId, MIL_INT64 ParentLabel, MIL_ID Matrix3dgeoId, MIL_DOUBLE AxisLength, MIL_CONST_TEXTW_PTR Name, MIL_INT64 Options, MIL_INT64 ControlFlag);
// create default calls
#if M_MIL_UNICODE_API
#define M3dgraText M3dgraTextW
#define M3dgraAxis M3dgraAxisW
#else
#define M3dgraText M3dgraTextA
#define M3dgraAxis M3dgraAxisA
#endif
#else
MIL_INT64 MFTYPE M3dgraText(MIL_ID List3dgraId, MIL_INT64 ParentLabel, MIL_CONST_TEXT_PTR Text, MIL_ID Matrix3dgeoId, MIL_INT64 Options, MIL_INT64 ControlFlag);
MIL_INT64 MFTYPE M3dgraAxis(MIL_ID List3dgraId, MIL_INT64 ParentLabel, MIL_ID Matrix3dgeoId, MIL_DOUBLE AxisLength, MIL_CONST_TEXT_PTR Name, MIL_INT64 Options, MIL_INT64 ControlFlag);
#endif
/* C++ directive if needed */
#ifdef __cplusplus
}
#endif
// M3dgradots/polygon m_MeshData++ overloads
#ifdef __cplusplus
inline MIL_INT64 M3dgraDots(MIL_ID List3dgraId,
MIL_INT64 ParentLabel,
MIL_INT NumPoints,
const MIL_DOUBLE* CoordXArrayPtr,
const MIL_DOUBLE* CoordYArrayPtr,
const MIL_DOUBLE* CoordZArrayPtr,
const MIL_UINT8* PointsRArrayPtr,
const MIL_UINT8* PointsGArrayPtr,
const MIL_UINT8* PointsBArrayPtr,
MIL_INT64 ControlFlag)
{
return M3dgraDotsDouble(List3dgraId, ParentLabel, NumPoints, CoordXArrayPtr, CoordYArrayPtr, CoordZArrayPtr, PointsRArrayPtr, PointsGArrayPtr, PointsBArrayPtr, ControlFlag);
}
inline MIL_INT64 M3dgraDots(MIL_ID List3dgraId,
MIL_INT64 ParentLabel,
MIL_INT NumPoints,
const MIL_FLOAT* CoordXArrayPtr,
const MIL_FLOAT* CoordYArrayPtr,
const MIL_FLOAT* CoordZArrayPtr,
const MIL_UINT8* PointsRArrayPtr,
const MIL_UINT8* PointsGArrayPtr,
const MIL_UINT8* PointsBArrayPtr,
MIL_INT64 ControlFlag)
{
return M3dgraDotsFloat(List3dgraId, ParentLabel, NumPoints, CoordXArrayPtr, CoordYArrayPtr, CoordZArrayPtr, PointsRArrayPtr, PointsGArrayPtr, PointsBArrayPtr, ControlFlag);
}
inline MIL_INT64 M3dgraLines(MIL_ID List3dgraId,
MIL_INT64 ParentLabel,
MIL_INT64 CreationMode,
MIL_INT NumLines,
const MIL_DOUBLE* CoordXArrayPtr,
const MIL_DOUBLE* CoordYArrayPtr,
const MIL_DOUBLE* CoordZArrayPtr,
const MIL_DOUBLE* CoordX2ArrayPtr,
const MIL_DOUBLE* CoordY2ArrayPtr,
const MIL_DOUBLE* CoordZ2ArrayPtr,
const MIL_UINT8* LinesRArrayPtr,
const MIL_UINT8* LinesGArrayPtr,
const MIL_UINT8* LinesBArrayPtr,
MIL_DOUBLE Length,
MIL_INT64 ControlFlag)
{
return M3dgraLinesDouble(List3dgraId, ParentLabel, CreationMode, NumLines, CoordXArrayPtr, CoordYArrayPtr, CoordZArrayPtr, CoordX2ArrayPtr, CoordY2ArrayPtr, CoordZ2ArrayPtr, LinesRArrayPtr, LinesGArrayPtr, LinesBArrayPtr, Length, ControlFlag);
}
inline MIL_INT64 M3dgraLines(MIL_ID List3dgraId,
MIL_INT64 ParentLabel,
MIL_INT64 CreationMode,
MIL_INT NumLines,
const MIL_FLOAT* CoordXArrayPtr,
const MIL_FLOAT* CoordYArrayPtr,
const MIL_FLOAT* CoordZArrayPtr,
const MIL_FLOAT* CoordX2ArrayPtr,
const MIL_FLOAT* CoordY2ArrayPtr,
const MIL_FLOAT* CoordZ2ArrayPtr,
const MIL_UINT8* LinesRArrayPtr,
const MIL_UINT8* LinesGArrayPtr,
const MIL_UINT8* LinesBArrayPtr,
MIL_DOUBLE Length,
MIL_INT64 ControlFlag)
{
return M3dgraLinesFloat(List3dgraId, ParentLabel, CreationMode, NumLines, CoordXArrayPtr, CoordYArrayPtr, CoordZArrayPtr, CoordX2ArrayPtr, CoordY2ArrayPtr, CoordZ2ArrayPtr, LinesRArrayPtr, LinesGArrayPtr, LinesBArrayPtr, Length, ControlFlag);
}
inline MIL_INT64 M3dgraPolygon(MIL_ID List3dgraId,
MIL_INT64 ParentLabel,
MIL_INT64 CreationMode,
MIL_INT NumPoints,
const MIL_DOUBLE* CoordXArrayPtr,
const MIL_DOUBLE* CoordYArrayPtr,
const MIL_DOUBLE* CoordZArrayPtr,
const MIL_DOUBLE* TextureXArrayPtr,
const MIL_DOUBLE* TextureYArrayPtr,
MIL_ID TextureBufId,
MIL_INT64 ControlFlag)
{
return M3dgraPolygonDouble(List3dgraId, ParentLabel, CreationMode, NumPoints, CoordXArrayPtr, CoordYArrayPtr, CoordZArrayPtr, TextureXArrayPtr, TextureYArrayPtr, TextureBufId, ControlFlag);
}
inline MIL_INT64 M3dgraPolygon(MIL_ID List3dgraId,
MIL_INT64 ParentLabel,
MIL_INT64 CreationMode,
MIL_INT NumPoints,
const MIL_FLOAT* CoordXArrayPtr,
const MIL_FLOAT* CoordYArrayPtr,
const MIL_FLOAT* CoordZArrayPtr,
const MIL_FLOAT* TextureXArrayPtr,
const MIL_FLOAT* TextureYArrayPtr,
MIL_ID TextureBufId,
MIL_INT64 ControlFlag)
{
return M3dgraPolygonFloat(List3dgraId, ParentLabel, CreationMode, NumPoints, CoordXArrayPtr, CoordYArrayPtr, CoordZArrayPtr, TextureXArrayPtr, TextureYArrayPtr, TextureBufId, ControlFlag);
}
#endif
#ifdef __cplusplus
inline void M3dgraControl(MIL_ID List3dgraId, MIL_INT64 Label, MIL_INT64 ControlType, MIL_DOUBLE ControlValue)
{
M3dgraControlDouble(List3dgraId, Label, ControlType, ControlValue);
}
inline void M3dgraControl(MIL_ID List3dgraId, MIL_INT64 Label, MIL_INT64 ControlType, MIL_INT64 ControlValue)
{
M3dgraControlInt64(List3dgraId, Label, ControlType, ControlValue);
}
inline void M3dgraControl(MIL_ID List3dgraId, MIL_INT64 Label, MIL_INT64 ControlType, MIL_INT32 ControlValue)
{
M3dgraControlInt64(List3dgraId, Label, ControlType, ControlValue);
}
#if M_MIL_USE_STRING
inline void M3dgraControl(MIL_ID List3dgraId, MIL_INT64 Label, MIL_INT64 ControlType, const MIL_STRING& ControlValue)
{
M3dgraControl(List3dgraId, Label, ControlType, M_PTR_TO_MIL_INT(ControlValue.c_str()));
}
#endif
inline void M3dgraControl(MIL_ID List3dgraId, MIL_INT64 Label, MIL_INT64 ControlType, MIL_CONST_TEXT_PTR ControlValuePtr)
{
M3dgraControl(List3dgraId, Label, ControlType, (MIL_INT)ControlValuePtr);
}
#if !(M_MIL_USE_LINUX && M_MIL_USE_64BIT)
inline void M3dgraControl(MIL_ID List3dgraId, MIL_INT64 Label, MIL_INT64 ControlType, int ControlValue)
{
M3dgraControlInt64(List3dgraId, Label, ControlType, ControlValue);
}
#endif
#else
#define M3dgraControl M3dgraControlDouble
#endif
#ifdef __cplusplus
#if M_MIL_USE_SAFE_TYPE
// ----------------------------------------------------------
// M3dgraInquire
inline MIL_INT64 MFTYPE M3dgraInquireSafeType(MIL_ID List3dgraId, MIL_INT64 Label, MIL_INT64 InquireType, MilVoidPtr UserVarPtr)
{
MIL_INT64 RequiredParamType = M_PARAM_TYPE_MIL_INT64;
if(!(M_DEFAULT_DATA_TYPE_BIT_SET(InquireType) || M_RECOMMENDED_DATA_TYPE_BIT_SET(InquireType)))
{
M3dgraInquire(List3dgraId, Label, InquireType | M_DEFAULT_DATA_TYPE, &RequiredParamType);
}
if(!MfuncPointerIsCompatible(RequiredParamType, UserVarPtr.Type, InquireType))
{
SafeTypeError(MIL_TEXT("M3dgraInquire"));
}
return M3dgraInquire(List3dgraId, Label, InquireType, UserVarPtr.Ptr);
}
inline MIL_INT64 MFTYPE M3dgraInquireUnsafe(MIL_ID List3dgraId, MIL_INT64 Label, MIL_INT64 InquireType, void* UserVarPtr)
{
return M3dgraInquire(List3dgraId, Label, InquireType, UserVarPtr);
}
#define M3dgraInquire M3dgraInquireSafeType
#else // #if M_MIL_USE_SAFE_TYPE
#define M3dgraInquireUnsafe M3dgraInquire
#endif // #if M_MIL_USE_SAFE_TYPE
#endif //__cplusplus
#if M_MIL_USE_STRING
#if M_MIL_USE_SAFE_TYPE
inline MIL_INT64 MFTYPE M3dgraInquireSafeType(MIL_ID List3dgraId, MIL_INT64 Label, MIL_INT64 InquireType, MIL_STRING& UserVarPtr)
{
MIL_INT64 RetValue = 0;
MIL_INT InternalStringSize = 0;
MIL_INT64 DataType = 0;
M3dgraInquire(List3dgraId, Label, InquireType | M_DEFAULT_DATA_TYPE, &DataType);
if(DataType != M_PARAM_TYPE_MIL_TEXT)
{
SafeTypeError(MIL_TEXT("M3dgraInquire"), MIL_TEXT("Inquire type not supported with MIL_STRING."));
}
M3dgraInquire(List3dgraId, Label, InquireType + M_STRING_SIZE, &InternalStringSize);
if(InternalStringSize > 0)
{
UserVarPtr.assign(InternalStringSize, MIL_TEXT('\0'));
RetValue = M3dgraInquire(List3dgraId, Label, InquireType, &UserVarPtr[0]);
UserVarPtr.resize(InternalStringSize - 1);
}
return RetValue;
}
#else
inline MIL_INT64 MFTYPE M3dgraInquire(MIL_ID List3dgraId, MIL_INT64 Label, MIL_INT64 InquireType, MIL_STRING& UserVarPtr)
{
MIL_INT64 RetValue = 0;
MIL_INT InternalStringSize = 0;
M3dgraInquire(List3dgraId, Label, InquireType + M_STRING_SIZE, &InternalStringSize);
if(InternalStringSize > 0)
{
UserVarPtr.assign(InternalStringSize, MIL_TEXT('\0'));
RetValue = M3dgraInquire(List3dgraId, Label, InquireType, &UserVarPtr[0]);
UserVarPtr.resize(InternalStringSize - 1);
}
return RetValue;
}
#endif
inline MIL_INT64 MFTYPE M3dgraText(MIL_ID List3dgraId, MIL_INT64 ParentLabel, const MIL_STRING& Text, MIL_ID Matrix3dgeoId, MIL_INT64 Options, MIL_INT64 ControlFlag)
{
return M3dgraText(List3dgraId, ParentLabel, Text.c_str(), Matrix3dgeoId, Options, ControlFlag);
}
inline MIL_INT64 M3dgraAxis(MIL_ID List3dgraId, MIL_INT64 ParentLabel, MIL_ID Matrix3dgeoId, MIL_DOUBLE AxisLength, const MIL_STRING& Name, MIL_INT64 Options, MIL_INT64 ControlFlag)
{
return M3dgraAxis(List3dgraId, ParentLabel, Matrix3dgeoId, AxisLength, Name.c_str(), Options, ControlFlag);
}
#endif /* M_MIL_USE_STRING */
// ----------------------------------------------------------
// Overload for std::vector.
#if defined(M_MIL_USE_VECTOR) && M_MIL_USE_VECTOR
// ----------------------------------------------------------
// Overloads for std::vector in M3dgraInquire.
template <typename UserType>
inline MIL_INT64 MFTYPE M3dgraInquire(MIL_ID List3dgraId, MIL_INT64 Label, MIL_INT64 InquireType, std::vector<UserType> &UserVarPtr)
{
// If the given MIL data type is not the same as the SrcType, change it to the correct one
// and give a warning.
MIL_INT64 InternalTrueDataTypeForStdVector = MilTraits<UserType>::TypeFlag;
#if M_MIL_USE_SAFE_TYPE
if(M_GET_HLVLDATATYPE(InquireType) != 0)
{
SafeTypeError(MIL_TEXT("M3dgraInquire"), MIL_TEXT("Combination value for the required data type is not supported with std::vector overload."));
}
#endif
InquireType = M_STRIP_HLVLDATATYPE(InquireType) + InternalTrueDataTypeForStdVector;
MIL_INT InternalNumberOfElementsForStdVector = 0;
M3dgraInquire(List3dgraId, Label, M_STRIP_HLVLDATATYPE(InquireType) + M_NB_ELEMENTS + M_TYPE_MIL_INT, &InternalNumberOfElementsForStdVector);
UserVarPtr.resize(InternalNumberOfElementsForStdVector);
if(InternalNumberOfElementsForStdVector > 0)
{
return M3dgraInquire(List3dgraId, Label, InquireType, &UserVarPtr[0]);
}
return 0;
}
// ----------------------------------------------------------
// Overloads for std::vector in M3dgraDots.
template <typename UserType>
inline MIL_INT64 MFTYPE M3dgraDots(MIL_ID List3dgraId,
MIL_INT64 ParentLabel,
MIL_INT NumPoints,
const std::vector<UserType>& CoordXArrayPtr,
const std::vector<UserType>& CoordYArrayPtr,
const std::vector<UserType>& CoordZArrayPtr,
CMilArrayParamIn PointsRArrayPtr,
CMilArrayParamIn PointsGArrayPtr,
CMilArrayParamIn PointsBArrayPtr,
MIL_INT64 ControlFlag)
{
#if M_MIL_USE_SAFE_TYPE
if(!PointsRArrayPtr.IsValidParam() ||
!PointsGArrayPtr.IsValidParam() ||
!PointsBArrayPtr.IsValidParam())
{
SafeTypeError(MIL_TEXT("M3dgraDots"), MIL_TEXT("The input arrays cannot be a non-zero integer."));
}
if((!PointsRArrayPtr.IsNullPtr() && PointsRArrayPtr.GetMilDataType() != MilTraits<MIL_UINT8>::TypeFlag) ||
(!PointsGArrayPtr.IsNullPtr() && PointsGArrayPtr.GetMilDataType() != MilTraits<MIL_UINT8>::TypeFlag) ||
(!PointsBArrayPtr.IsNullPtr() && PointsBArrayPtr.GetMilDataType() != MilTraits<MIL_UINT8>::TypeFlag))
{
SafeTypeError(MIL_TEXT("M3dgraDots"), MIL_TEXT("The data type of the color vectors must be MIL_UINT8."));
}
if(CoordXArrayPtr.size() != CoordYArrayPtr.size() || CoordXArrayPtr.size() != CoordZArrayPtr.size())
{
SafeTypeError(MIL_TEXT("M3dgraDots"), MIL_TEXT("The coordinate vectors must have the same size."));
}
if(CoordXArrayPtr.empty())
{
SafeTypeError(MIL_TEXT("M3dgraDots"), MIL_TEXT("The coordinate vectors cannot be empty."));
}
if((PointsRArrayPtr.IsNullPtr() != PointsGArrayPtr.IsNullPtr()) ||
(PointsRArrayPtr.IsNullPtr() != PointsBArrayPtr.IsNullPtr()) ||
(!PointsRArrayPtr.IsNullPtr() && (MIL_INT)CoordXArrayPtr.size() != PointsRArrayPtr.Size<MIL_UINT8>()) ||
(!PointsGArrayPtr.IsNullPtr() && (MIL_INT)CoordXArrayPtr.size() != PointsGArrayPtr.Size<MIL_UINT8>()) ||
(!PointsBArrayPtr.IsNullPtr() && (MIL_INT)CoordXArrayPtr.size() != PointsBArrayPtr.Size<MIL_UINT8>()))
{
SafeTypeError(MIL_TEXT("M3dgraDots"), MIL_TEXT("The color vectors must either all be empty or have the same size as the coordinate vectors."));
}
if(NumPoints <= 0)
{
SafeTypeError(MIL_TEXT("M3dgraDots"), MIL_TEXT("NumPoints parameter must be greater than zero."));
}
if(NumPoints > (MIL_INT)CoordXArrayPtr.size() && NumPoints != M_DEFAULT)
{
SafeTypeError(MIL_TEXT("M3dgraDots"), MIL_TEXT("NumPoints parameter must be smaller or equal (M_DEFAULT) to the size of the coordinate vectors."));
}
#endif
if(NumPoints == M_DEFAULT || NumPoints > (MIL_INT)CoordXArrayPtr.size())
{
NumPoints = (MIL_INT)CoordXArrayPtr.size();
}
return M3dgraDots(List3dgraId,
ParentLabel,
NumPoints,
&CoordXArrayPtr[0],
&CoordYArrayPtr[0],
&CoordZArrayPtr[0],
PointsRArrayPtr.GetData<MIL_UINT8>(),
PointsGArrayPtr.GetData<MIL_UINT8>(),
PointsBArrayPtr.GetData<MIL_UINT8>(),
ControlFlag);
}
// ----------------------------------------------------------
// Overloads for std::vector in M3dgraLines.
template <typename UserType>
inline MIL_INT64 MFTYPE M3dgraLines(MIL_ID List3dgraId,
MIL_INT64 ParentLabel,
MIL_INT64 CreationMode,
MIL_INT NumLines,
const std::vector<UserType>& CoordXArrayPtr,
const std::vector<UserType>& CoordYArrayPtr,
const std::vector<UserType>& CoordZArrayPtr,
const std::vector<UserType>& CoordX2ArrayPtr,
const std::vector<UserType>& CoordY2ArrayPtr,
const std::vector<UserType>& CoordZ2ArrayPtr,
CMilArrayParamIn LinesRArrayPtr,
CMilArrayParamIn LinesGArrayPtr,
CMilArrayParamIn LinesBArrayPtr,
MIL_DOUBLE Length,
MIL_INT64 ControlFlag)
{
#if M_MIL_USE_SAFE_TYPE
if(!LinesRArrayPtr.IsValidParam() ||
!LinesGArrayPtr.IsValidParam() ||
!LinesBArrayPtr.IsValidParam())
{
SafeTypeError(MIL_TEXT("M3dgraLines"), MIL_TEXT("The input arrays cannot be a non-zero integer."));
}
if((!LinesRArrayPtr.IsNullPtr() && LinesRArrayPtr.GetMilDataType() != MilTraits<MIL_UINT8>::TypeFlag) ||
(!LinesGArrayPtr.IsNullPtr() && LinesGArrayPtr.GetMilDataType() != MilTraits<MIL_UINT8>::TypeFlag) ||
(!LinesBArrayPtr.IsNullPtr() && LinesBArrayPtr.GetMilDataType() != MilTraits<MIL_UINT8>::TypeFlag))
{
SafeTypeError(MIL_TEXT("M3dgraLines"), MIL_TEXT("The data type of the color vectors must be MIL_UINT8."));
}
if(CoordXArrayPtr.size() != CoordYArrayPtr.size() ||
CoordXArrayPtr.size() != CoordZArrayPtr.size() ||
CoordXArrayPtr.size() != CoordX2ArrayPtr.size() ||
CoordXArrayPtr.size() != CoordY2ArrayPtr.size() ||
CoordXArrayPtr.size() != CoordZ2ArrayPtr.size())
{
SafeTypeError(MIL_TEXT("M3dgraLines"), MIL_TEXT("The coordinate vectors must have the same size."));
}
if(CoordXArrayPtr.empty())
{
SafeTypeError(MIL_TEXT("M3dgraLines"), MIL_TEXT("The coordinate vectors cannot be empty."));
}
if((LinesRArrayPtr.IsNullPtr() != LinesGArrayPtr.IsNullPtr()) ||
(LinesRArrayPtr.IsNullPtr() != LinesBArrayPtr.IsNullPtr()) ||
(!LinesRArrayPtr.IsNullPtr() && (MIL_INT)CoordXArrayPtr.size() != LinesRArrayPtr.Size<MIL_UINT8>()) ||
(!LinesGArrayPtr.IsNullPtr() && (MIL_INT)CoordXArrayPtr.size() != LinesGArrayPtr.Size<MIL_UINT8>()) ||
(!LinesBArrayPtr.IsNullPtr() && (MIL_INT)CoordXArrayPtr.size() != LinesBArrayPtr.Size<MIL_UINT8>()))
{
SafeTypeError(MIL_TEXT("M3dgraLines"), MIL_TEXT("The color vectors must either all be empty or have the same size as the coordinate vectors."));
}
if(NumLines <= 0)
{
SafeTypeError(MIL_TEXT("M3dgraLines"), MIL_TEXT("NumLines parameter must be greater than zero."));
}
if(NumLines > (MIL_INT)CoordXArrayPtr.size() && NumLines != M_DEFAULT)
{
SafeTypeError(MIL_TEXT("M3dgraLines"), MIL_TEXT("NumLines parameter must be smaller or equal (M_DEFAULT) to the size of the coordinate vectors."));
}
#endif
if(NumLines == M_DEFAULT || NumLines > (MIL_INT)CoordXArrayPtr.size())
{
NumLines = (MIL_INT)CoordXArrayPtr.size();
}
return M3dgraLines(List3dgraId,
ParentLabel,
CreationMode,
NumLines,
&CoordXArrayPtr[0],
&CoordYArrayPtr[0],
&CoordZArrayPtr[0],
&CoordX2ArrayPtr[0],
&CoordY2ArrayPtr[0],
&CoordZ2ArrayPtr[0],
LinesRArrayPtr.GetData<MIL_UINT8>(),
LinesGArrayPtr.GetData<MIL_UINT8>(),
LinesBArrayPtr.GetData<MIL_UINT8>(),
Length,
ControlFlag);
}
// ----------------------------------------------------------
// Overloads for std::vector in M3dgraPolygon.
template <typename UserType>
inline MIL_INT64 MFTYPE M3dgraPolygon(MIL_ID List3dgraId,
MIL_INT64 ParentLabel,
MIL_INT64 CreationMode,
MIL_INT NumPoints,
const std::vector<UserType>& CoordXArrayPtr,
const std::vector<UserType>& CoordYArrayPtr,
const std::vector<UserType>& CoordZArrayPtr,
CMilArrayParamIn TextureXArrayPtr,
CMilArrayParamIn TextureYArrayPtr,
MIL_ID TextureBufId,
MIL_INT64 ControlFlag)
{
#if M_MIL_USE_SAFE_TYPE
if(!TextureXArrayPtr.IsValidParam() ||
!TextureYArrayPtr.IsValidParam())
{
SafeTypeError(MIL_TEXT("M3dgraPolygon"), MIL_TEXT("The input arrays cannot be a non-zero integer."));
}
if((!TextureXArrayPtr.IsNullPtr() && TextureXArrayPtr.GetMilDataType() != MilTraits<UserType>::TypeFlag) ||
(!TextureYArrayPtr.IsNullPtr() && TextureYArrayPtr.GetMilDataType() != MilTraits<UserType>::TypeFlag))
{
SafeTypeError(MIL_TEXT("M3dgraPolygon"), MIL_TEXT("The coordinate and texture vectors must all have the same data type."));
}
if(CoordXArrayPtr.size() != CoordYArrayPtr.size() || CoordXArrayPtr.size() != CoordZArrayPtr.size())
{
SafeTypeError(MIL_TEXT("M3dgraPolygon"), MIL_TEXT("The coordinate vectors must have the same size."));
}
if(CoordXArrayPtr.empty())
{
SafeTypeError(MIL_TEXT("M3dgraPolygon"), MIL_TEXT("The vectors cannot be empty."));
}
if((TextureXArrayPtr.IsNullPtr() != TextureYArrayPtr.IsNullPtr()) ||
(!TextureXArrayPtr.IsNullPtr() && (MIL_INT)CoordXArrayPtr.size() != TextureXArrayPtr.Size<UserType>()) ||
(!TextureYArrayPtr.IsNullPtr() && (MIL_INT)CoordXArrayPtr.size() != TextureYArrayPtr.Size<UserType>()))
{
SafeTypeError(MIL_TEXT("M3dgraPolygon"), MIL_TEXT("The texture vectors must either both be null or have the same size as the coordinate vectors."));
}
if(NumPoints <= 0)
{
SafeTypeError(MIL_TEXT("M3dgraPolygon"), MIL_TEXT("NumPoints parameter must be greater than zero."));
}
if(NumPoints > (MIL_INT)CoordXArrayPtr.size() && NumPoints != M_DEFAULT)
{
SafeTypeError(MIL_TEXT("M3dgraPolygon"), MIL_TEXT("NumPoints parameter must be smaller or equal (M_DEFAULT) to the size of the coordinate vectors."));
}
#endif
if(NumPoints == M_DEFAULT || NumPoints > (MIL_INT)CoordXArrayPtr.size())
{
NumPoints = (MIL_INT)CoordXArrayPtr.size();
}
return M3dgraPolygon(List3dgraId,
ParentLabel,
CreationMode,
NumPoints,
&CoordXArrayPtr[0],
&CoordYArrayPtr[0],
&CoordZArrayPtr[0],
TextureXArrayPtr.GetData<UserType>(),
TextureYArrayPtr.GetData<UserType>(),
TextureBufId,
ControlFlag);
}
#endif // defined(M_MIL_USE_VECTOR) && M_MIL_USE_VECTOR
////////////////////////////////////////////////////////////////////////////////
// MIL_UNIQUE_ID support
#if M_MIL_USE_MIL_UNIQUE_ID
#if M_MIL_USE_SAFE_TYPE
template <> inline bool MilIsCorrectObjectType<&M3dgraFree>(MIL_INT64 ObjectType)
{
return ObjectType == M_3D_GRAPHIC_LIST;
}
#endif
typedef MIL_UNIQUE_ID<&M3dgraFree > MIL_UNIQUE_3DGRA_ID;
#if M_MIL_USE_MOVE_SEMANTICS
//3DGRA
inline MIL_UNIQUE_3DGRA_ID M3dgraAlloc(MIL_ID SysId, MIL_INT64 ControlFlag, MIL_UNIQUE_ID_TAG)
{
return MIL_UNIQUE_3DGRA_ID(M3dgraAlloc(SysId, ControlFlag, M_NULL));
}
template <MilFreeFuncType FreeFunc> inline void M3dgraFree(const MIL_UNIQUE_ID<FreeFunc>&) = delete;
#endif // M_MIL_USE_MOVE_SEMANTICS
#endif // M_MIL_USE_MIL_UNIQUE_ID
// End of MIL_UNIQUE_ID support
////////////////////////////////////////////////////////////////////////////////
#endif // __MIL3DGRA_H__