/***********************************************************************/ /* Open Visualization Data Explorer */ /* (C) Copyright IBM Corp. 1989,1999 */ /* ALL RIGHTS RESERVED */ /* This code licensed under the */ /* "IBM PUBLIC LICENSE - Open Visualization Data Explorer" */ /***********************************************************************/ /*********************************************************************/ /* I.B.M. CONFIENTIAL */ /*********************************************************************/ #include /* */ #define _HP_FAST_MACROS 1 #include #include "hwDeclarations.h" #include "hwPortSB.h" #include "hwXfield.h" #include "hwMemory.h" #include "hwDebug.h" void _dxfUnconnectedPointDraw (tdmPortHandleP portHandle, xfieldT *xf, int buttonUp) { register Point *points ; register RGBColor *fcolors, *color_map ; register int i, mod, num ; int type, rank, shape, is_2d ; struct p2d {float x, y ;} *pnts2d ; DEFPORT(portHandle) ; ENTRY(("_dxfUnconnectedPointDraw(0x%x, 0x%x, %d)", portHandle, xf, buttonUp)); PRINT(("%d invalid positions", xf->invPositions? DXGetInvalidCount(xf->invPositions): 0)); /* * Extract required data from the xfield. */ if (is_2d = IS_2D (xf->positions_array, type, rank, shape)) pnts2d = (struct p2d *) DXGetArrayData(xf->positions_array) ; else points = (Point *) DXGetArrayData(xf->positions_array) ; color_map = (RGBColor *) DXGetArrayData(xf->cmap_array) ; if (DXGetArrayClass(xf->fcolors_array) == CLASS_CONSTANTARRAY) fcolors = (Pointer) DXGetArrayEntry(xf->fcolors, 0, NULL) ; else fcolors = (Pointer) DXGetArrayData(xf->fcolors_array) ; mod = buttonUp ? xf->attributes.buttonUp.density : xf->attributes.buttonDown.density ; marker_type (FILDES, 0) ; hidden_surface (FILDES, TRUE, FALSE) ; if (xf->colorsDep == dep_field && mod == 1 && !xf->invPositions) { /* fast path */ SET_COLOR (marker_color, 0) ; if (is_2d) polymarker2d (FILDES, (float *)pnts2d, xf->npositions, 0) ; else polymarker3d (FILDES, (float *)points, xf->npositions, 0) ; } else { num = xf->npositions ; if (xf->colorsDep == dep_field) { SET_COLOR (marker_color, 0) ; if (xf->invPositions) if (is_2d) for (i=0 ; iinvPositions, i)) polymarker2d (FILDES, (float *)(pnts2d+i), 1, 0) ; } else for (i=0 ; iinvPositions, i)) polymarker3d (FILDES, (float *)(points+i), 1, 0) ; } else if (is_2d) for (i=0 ; iinvPositions) if (is_2d) for (i=0 ; iinvPositions, i)) { SET_CMAP_COLOR (marker_color, i) ; polymarker2d (FILDES, (float *)(pnts2d+i), 1, 0) ; } } else for (i=0 ; iinvPositions, i)) { SET_CMAP_COLOR (marker_color, i) ; polymarker3d (FILDES, (float *)(points+i), 1, 0) ; } } else if (is_2d) for (i=0 ; iinvPositions) if (is_2d) for (i=0 ; iinvPositions, i)) { SET_CDIR_COLOR (marker_color, i) ; polymarker2d (FILDES, (float *)(pnts2d+i), 1, 0) ; } } else for (i=0 ; iinvPositions, i)) { SET_CDIR_COLOR (marker_color, i) ; polymarker3d (FILDES, (float *)(points+i), 1, 0) ; } } else if (is_2d) for (i=0 ; i