#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