#ifndef _H3D_H_
 
#define _H3D_H_
 
 
 
#ifdef _CVI_ 
 
#include <cvidef.h>
 
#include <ivi.h>
 
#include "toolbox.h"
 
 
 
#ifndef _HCOLORMAP_
 
#define _HCOLORMAP_ 
 
typedef struct {
 
  ColorMapEntry *array;
 
  int numberofColors;
 
  int HiColor;
 
} HColorMap;
 
#endif
 
 
 
HColorMap * _VI_FUNC H3D_GetColorMap(void);
 
#else
 
#define _VI_FUNC
 
#endif
 
 
 
#include <stdio.h>
 
 
 
/* 2d histogramming */
 
#define H3D_ID 0x12
 
#pragma pack(4)
 
typedef struct
 
{
 
unsigned int id,len;
 
unsigned int nx;
 
unsigned int ny;
 
unsigned int nz; 
 
int nentries;
 
unsigned int size;      
 
double min;
 
double max;
 
double minx;
 
double miny;
 
double minz;
 
double stepx;
 
double stepy; 
 
double stepz;
 
char name[20];
 
char title[100];
 
char titlex[40];
 
char titley[40]; 
 
char titlez[40]; 
 
double *data;
 
}H3D;
 
#pragma pack()
 
 
 
 
 
 
 
int _VI_FUNC  H3D_SliXY(int histogram,int slice, int direction);
 
 
 
double _VI_FUNC   H3D_GetYBinCenter(int h3d,int ybin);
 
double _VI_FUNC   H3D_GetYBinCenter(int h3d,int xbin); 
 
 
 
int _VI_FUNC  H3D_Clear(int h3d);
 
int _VI_FUNC  H3D_Print(int h3d);
 
int _VI_FUNC  H3D_Exist(int h3d);
 
int _VI_FUNC  H3D_CalculateBin(int h3d, int axis, double value);
 
int _VI_FUNC  H3D_GetBin(int h3d,int x, int y, int z);
 
int _VI_FUNC  H3D_Fill(int h3d,double x, double y, double z, double val);
 
int _VI_FUNC  H3D_FillBin(int h3d,int x, int y, int z, double val);
 
double _VI_FUNC  H3D_GetBinContent(int h3d,int atx, int aty, int atz);
 
int _VI_FUNC  H3D_Init(int h3d,char *name, char *title,int nx, double minx, double maxx, int ny, double miny, double maxy,int nz, double minz, double maxz);
 
int _VI_FUNC  H3D_Write(int h3d,const char *fname,const char*opt);
 
int _VI_FUNC  H3D_Write2File(int h3d,FILE *fp); 
 
int _VI_FUNC  H3D_SetTitle(int h3d,char *title);
 
int _VI_FUNC  H3D_SetTitleX(int h3d,char *title);
 
int _VI_FUNC  H3D_SetTitleY(int h3d,char *title);
 
int _VI_FUNC  H3D_SetTitleZ(int h3d,char *title);
 
int _VI_FUNC  H3D_SetName(int h3d,char *title);
 
 
 
int _VI_FUNC  H3D_GetNbinsY(int h);
 
int _VI_FUNC  H3D_GetNbinsX(int h);
 
int _VI_FUNC  H3D_GetNbinsZ(int h);
 
 
 
double  _VI_FUNC H3D_GetMaxX(int h);
 
double  _VI_FUNC H3D_GetMaxY(int h);
 
double  _VI_FUNC H3D_GetMaxZ(int h);
 
 
 
double  _VI_FUNC H3D_GetMinX(int h);
 
double  _VI_FUNC H3D_GetMinY(int h);
 
double  _VI_FUNC H3D_GetMinZ(int h);
 
 
 
double _VI_FUNC  H3D_GetStepX(int h);
 
double _VI_FUNC  H3D_GetStepY(int h); 
 
double  _VI_FUNC H3D_GetStepZ(int h); 
 
 
 
double  _VI_FUNC H3D_GetMin(int h);
 
double  _VI_FUNC H3D_GetMax(int h);
 
double *  _VI_FUNC H3D_GetSliceXYData(int h, int slice);
 
double *  _VI_FUNC H3D_GetData(int h);  
 
 
 
#endif