//This file is automatically generated by generator.lua from https://github.com/cimgui/cimplot3d
//based on implot3d.h file version 0.4 from https://github.com/brenocq/implot3d
#ifndef CIMPLOT3D_INCLUDED
#define CIMPLOT3D_INCLUDED

#include "cimgui.h"

#ifdef CIMGUI_DEFINE_ENUMS_AND_STRUCTS

typedef struct ImPlot3DContext ImPlot3DContext;
typedef struct ImPlot3DStyle_c ImPlot3DStyle_c;
typedef struct ImPlot3DPoint_c ImPlot3DPoint_c;
typedef struct ImPlot3DRay ImPlot3DRay;
typedef struct ImPlot3DPlane ImPlot3DPlane;
typedef struct ImPlot3DBox ImPlot3DBox;
typedef struct ImPlot3DRange ImPlot3DRange;
typedef struct ImPlot3DQuat_c ImPlot3DQuat_c;
struct ImPlot3DContext;
struct ImPlot3DStyle_c;
struct ImPlot3DPoint_c;
struct ImPlot3DRay;
struct ImPlot3DPlane;
struct ImPlot3DBox;
struct ImPlot3DRange;
struct ImPlot3DQuat_c;
typedef int ImPlot3DCond;
typedef int ImPlot3DCol;
typedef int ImPlot3DStyleVar;
typedef int ImPlot3DMarker;
typedef int ImPlot3DLocation;
typedef int ImAxis3D;
typedef int ImPlane3D;
typedef int ImPlot3DScale;
typedef int ImPlot3DColormap;
typedef int ImPlot3DProp;
typedef int ImPlot3DFlags;
typedef int ImPlot3DItemFlags;
typedef int ImPlot3DScatterFlags;
typedef int ImPlot3DLineFlags;
typedef int ImPlot3DTriangleFlags;
typedef int ImPlot3DQuadFlags;
typedef int ImPlot3DSurfaceFlags;
typedef int ImPlot3DMeshFlags;
typedef int ImPlot3DImageFlags;
typedef int ImPlot3DDummyFlags;
typedef int ImPlot3DLegendFlags;
typedef int ImPlot3DAxisFlags;
typedef enum {
    ImPlot3DProp_LineColor,
    ImPlot3DProp_LineColors,
    ImPlot3DProp_LineWeight,
    ImPlot3DProp_FillColor,
    ImPlot3DProp_FillColors,
    ImPlot3DProp_FillAlpha,
    ImPlot3DProp_Marker,
    ImPlot3DProp_MarkerSize,
    ImPlot3DProp_MarkerSizes,
    ImPlot3DProp_MarkerLineColor,
    ImPlot3DProp_MarkerLineColors,
    ImPlot3DProp_MarkerFillColor,
    ImPlot3DProp_MarkerFillColors,
    ImPlot3DProp_Offset,
    ImPlot3DProp_Stride,
    ImPlot3DProp_Flags
}ImPlot3DProp_;
typedef enum {
    ImPlot3DFlags_None = 0,
    ImPlot3DFlags_NoTitle = 1 << 0,
    ImPlot3DFlags_NoLegend = 1 << 1,
    ImPlot3DFlags_NoMouseText = 1 << 2,
    ImPlot3DFlags_NoClip = 1 << 3,
    ImPlot3DFlags_NoMenus = 1 << 4,
    ImPlot3DFlags_Equal = 1 << 5,
    ImPlot3DFlags_NoRotate = 1 << 6,
    ImPlot3DFlags_NoPan = 1 << 7,
    ImPlot3DFlags_NoZoom = 1 << 8,
    ImPlot3DFlags_NoInputs = 1 << 9,
    ImPlot3DFlags_CanvasOnly = ImPlot3DFlags_NoTitle | ImPlot3DFlags_NoLegend | ImPlot3DFlags_NoMouseText,
}ImPlot3DFlags_;
typedef enum {
    ImPlot3DCond_None = ImGuiCond_None,
    ImPlot3DCond_Always = ImGuiCond_Always,
    ImPlot3DCond_Once = ImGuiCond_Once,
}ImPlot3DCond_;
typedef enum {
    ImPlot3DCol_TitleText,
    ImPlot3DCol_InlayText,
    ImPlot3DCol_FrameBg,
    ImPlot3DCol_PlotBg,
    ImPlot3DCol_PlotBorder,
    ImPlot3DCol_LegendBg,
    ImPlot3DCol_LegendBorder,
    ImPlot3DCol_LegendText,
    ImPlot3DCol_AxisText,
    ImPlot3DCol_AxisGrid,
    ImPlot3DCol_AxisTick,
    ImPlot3DCol_AxisBg,
    ImPlot3DCol_AxisBgHovered,
    ImPlot3DCol_AxisBgActive,
    ImPlot3DCol_COUNT,
}ImPlot3DCol_;
typedef enum {
    ImPlot3DStyleVar_LineWeight,
    ImPlot3DStyleVar_Marker,
    ImPlot3DStyleVar_MarkerSize,
    ImPlot3DStyleVar_FillAlpha,
    ImPlot3DStyleVar_PlotDefaultSize,
    ImPlot3DStyleVar_PlotMinSize,
    ImPlot3DStyleVar_PlotPadding,
    ImPlot3DStyleVar_LabelPadding,
    ImPlot3DStyleVar_ViewScaleFactor,
    ImPlot3DStyleVar_LegendPadding,
    ImPlot3DStyleVar_LegendInnerPadding,
    ImPlot3DStyleVar_LegendSpacing,
    ImPlot3DStyleVar_COUNT
}ImPlot3DStyleVar_;
typedef enum {
    ImPlot3DMarker_None = -2,
    ImPlot3DMarker_Auto = -1,
    ImPlot3DMarker_Circle,
    ImPlot3DMarker_Square,
    ImPlot3DMarker_Diamond,
    ImPlot3DMarker_Up,
    ImPlot3DMarker_Down,
    ImPlot3DMarker_Left,
    ImPlot3DMarker_Right,
    ImPlot3DMarker_Cross,
    ImPlot3DMarker_Plus,
    ImPlot3DMarker_Asterisk,
    ImPlot3DMarker_COUNT
}ImPlot3DMarker_;
typedef enum {
    ImPlot3DItemFlags_None = 0,
    ImPlot3DItemFlags_NoLegend = 1 << 0,
    ImPlot3DItemFlags_NoFit = 1 << 1,
}ImPlot3DItemFlags_;
typedef enum {
    ImPlot3DScatterFlags_None = 0,
    ImPlot3DScatterFlags_NoLegend = ImPlot3DItemFlags_NoLegend,
    ImPlot3DScatterFlags_NoFit = ImPlot3DItemFlags_NoFit,
}ImPlot3DScatterFlags_;
typedef enum {
    ImPlot3DLineFlags_None = 0,
    ImPlot3DLineFlags_NoLegend = ImPlot3DItemFlags_NoLegend,
    ImPlot3DLineFlags_NoFit = ImPlot3DItemFlags_NoFit,
    ImPlot3DLineFlags_Segments = 1 << 10,
    ImPlot3DLineFlags_Loop = 1 << 11,
    ImPlot3DLineFlags_SkipNaN = 1 << 12,
}ImPlot3DLineFlags_;
typedef enum {
    ImPlot3DTriangleFlags_None = 0,
    ImPlot3DTriangleFlags_NoLegend = ImPlot3DItemFlags_NoLegend,
    ImPlot3DTriangleFlags_NoFit = ImPlot3DItemFlags_NoFit,
    ImPlot3DTriangleFlags_NoLines = 1 << 10,
    ImPlot3DTriangleFlags_NoFill = 1 << 11,
    ImPlot3DTriangleFlags_NoMarkers = 1 << 12,
}ImPlot3DTriangleFlags_;
typedef enum {
    ImPlot3DQuadFlags_None = 0,
    ImPlot3DQuadFlags_NoLegend = ImPlot3DItemFlags_NoLegend,
    ImPlot3DQuadFlags_NoFit = ImPlot3DItemFlags_NoFit,
    ImPlot3DQuadFlags_NoLines = 1 << 10,
    ImPlot3DQuadFlags_NoFill = 1 << 11,
    ImPlot3DQuadFlags_NoMarkers = 1 << 12,
}ImPlot3DQuadFlags_;
typedef enum {
    ImPlot3DSurfaceFlags_None = 0,
    ImPlot3DSurfaceFlags_NoLegend = ImPlot3DItemFlags_NoLegend,
    ImPlot3DSurfaceFlags_NoFit = ImPlot3DItemFlags_NoFit,
    ImPlot3DSurfaceFlags_NoLines = 1 << 10,
    ImPlot3DSurfaceFlags_NoFill = 1 << 11,
    ImPlot3DSurfaceFlags_NoMarkers = 1 << 12,
}ImPlot3DSurfaceFlags_;
typedef enum {
    ImPlot3DMeshFlags_None = 0,
    ImPlot3DMeshFlags_NoLegend = ImPlot3DItemFlags_NoLegend,
    ImPlot3DMeshFlags_NoFit = ImPlot3DItemFlags_NoFit,
    ImPlot3DMeshFlags_NoLines = 1 << 10,
    ImPlot3DMeshFlags_NoFill = 1 << 11,
    ImPlot3DMeshFlags_NoMarkers = 1 << 12,
}ImPlot3DMeshFlags_;
typedef enum {
    ImPlot3DImageFlags_None = 0,
    ImPlot3DImageFlags_NoLegend = ImPlot3DItemFlags_NoLegend,
    ImPlot3DImageFlags_NoFit = ImPlot3DItemFlags_NoFit,
}ImPlot3DImageFlags_;
typedef enum {
    ImPlot3DDummyFlags_None = 0
}ImPlot3DDummyFlags_;
typedef enum {
    ImPlot3DLegendFlags_None = 0,
    ImPlot3DLegendFlags_NoButtons = 1 << 0,
    ImPlot3DLegendFlags_NoHighlightItem = 1 << 1,
    ImPlot3DLegendFlags_Horizontal = 1 << 2,
}ImPlot3DLegendFlags_;
typedef enum {
    ImPlot3DLocation_Center = 0,
    ImPlot3DLocation_North = 1 << 0,
    ImPlot3DLocation_South = 1 << 1,
    ImPlot3DLocation_West = 1 << 2,
    ImPlot3DLocation_East = 1 << 3,
    ImPlot3DLocation_NorthWest = ImPlot3DLocation_North | ImPlot3DLocation_West,
    ImPlot3DLocation_NorthEast = ImPlot3DLocation_North | ImPlot3DLocation_East,
    ImPlot3DLocation_SouthWest = ImPlot3DLocation_South | ImPlot3DLocation_West,
    ImPlot3DLocation_SouthEast = ImPlot3DLocation_South | ImPlot3DLocation_East
}ImPlot3DLocation_;
typedef enum {
    ImPlot3DAxisFlags_None = 0,
    ImPlot3DAxisFlags_NoLabel = 1 << 0,
    ImPlot3DAxisFlags_NoGridLines = 1 << 1,
    ImPlot3DAxisFlags_NoTickMarks = 1 << 2,
    ImPlot3DAxisFlags_NoTickLabels = 1 << 3,
    ImPlot3DAxisFlags_LockMin = 1 << 4,
    ImPlot3DAxisFlags_LockMax = 1 << 5,
    ImPlot3DAxisFlags_AutoFit = 1 << 6,
    ImPlot3DAxisFlags_Invert = 1 << 7,
    ImPlot3DAxisFlags_PanStretch = 1 << 8,
    ImPlot3DAxisFlags_Lock = ImPlot3DAxisFlags_LockMin | ImPlot3DAxisFlags_LockMax,
    ImPlot3DAxisFlags_NoDecorations = ImPlot3DAxisFlags_NoLabel | ImPlot3DAxisFlags_NoGridLines | ImPlot3DAxisFlags_NoTickLabels,
}ImPlot3DAxisFlags_;
typedef enum {
    ImAxis3D_X = 0,
    ImAxis3D_Y,
    ImAxis3D_Z,
    ImAxis3D_COUNT,
}ImAxis3D_;
typedef enum {
    ImPlane3D_YZ = 0,
    ImPlane3D_XZ,
    ImPlane3D_XY,
    ImPlane3D_COUNT,
}ImPlane3D_;
typedef enum {
    ImPlot3DScale_Linear = 0,
    ImPlot3DScale_Log10,
    ImPlot3DScale_SymLog,
}ImPlot3DScale_;
typedef enum {
    ImPlot3DColormap_Deep = 0,
    ImPlot3DColormap_Dark = 1,
    ImPlot3DColormap_Pastel = 2,
    ImPlot3DColormap_Paired = 3,
    ImPlot3DColormap_Viridis = 4,
    ImPlot3DColormap_Plasma = 5,
    ImPlot3DColormap_Hot = 6,
    ImPlot3DColormap_Cool = 7,
    ImPlot3DColormap_Pink = 8,
    ImPlot3DColormap_Jet = 9,
    ImPlot3DColormap_Twilight = 10,
    ImPlot3DColormap_RdBu = 11,
    ImPlot3DColormap_BrBG = 12,
    ImPlot3DColormap_PiYG = 13,
    ImPlot3DColormap_Spectral = 14,
    ImPlot3DColormap_Greys = 15,
}ImPlot3DColormap_;
typedef struct ImPlot3DSpec_c ImPlot3DSpec_c;
struct ImPlot3DSpec_c
{
    ImVec4_c LineColor;
    ImU32* LineColors;
    float LineWeight;
    ImVec4_c FillColor;
    ImU32* FillColors;
    float FillAlpha;
    ImPlot3DMarker Marker;
    float MarkerSize;
    float* MarkerSizes;
    ImVec4_c MarkerLineColor;
    ImU32* MarkerLineColors;
    ImVec4_c MarkerFillColor;
    ImU32* MarkerFillColors;
    int Offset;
    int Stride;
    ImPlot3DItemFlags Flags;
};
typedef int (*ImPlot3DFormatter)(double value, char* buff, int size, void* user_data);
typedef double (*ImPlot3DTransform)(double value, void* user_data);
struct ImPlot3DPoint_c
{
    double x, y, z;
};
struct ImPlot3DRay
{
    ImPlot3DPoint_c Origin;
    ImPlot3DPoint_c Direction;
};
struct ImPlot3DPlane
{
    ImPlot3DPoint_c Point;
    ImPlot3DPoint_c Normal;
};
struct ImPlot3DBox
{
    ImPlot3DPoint_c Min;
    ImPlot3DPoint_c Max;
};
struct ImPlot3DRange
{
    double Min;
    double Max;
};
struct ImPlot3DQuat_c
{
    double x, y, z, w;
};
struct ImPlot3DStyle_c
{
    float LineWeight;
    int Marker;
    float MarkerSize;
    float FillAlpha;
    ImVec2_c PlotDefaultSize;
    ImVec2_c PlotMinSize;
    ImVec2_c PlotPadding;
    ImVec2_c LabelPadding;
    float ViewScaleFactor;
    ImVec2_c LegendPadding;
    ImVec2_c LegendInnerPadding;
    ImVec2_c LegendSpacing;
    ImVec4_c Colors[ImPlot3DCol_COUNT];
    ImPlot3DColormap Colormap;
};
static const int CUBE_VTX_COUNT = 8;
static const int CUBE_IDX_COUNT = 36;
static const int SPHERE_VTX_COUNT = 162;
static const int SPHERE_IDX_COUNT = 960;
static const int DUCK_VTX_COUNT = 254;
static const int DUCK_IDX_COUNT = 1428;
#else
#endif // CIMGUI_DEFINE_ENUMS_AND_STRUCTS

#ifdef CIMGUI_DEFINE_ENUMS_AND_STRUCTS
typedef struct ImPlot3DPoint_c ImPlot3DPoint;
typedef struct ImPlot3DQuat_c ImPlot3DQuat;
typedef struct ImPlot3DSpec_c ImPlot3DSpec;
typedef struct ImPlot3DStyle_c ImPlot3DStyle;
#endif
#ifndef CIMGUI_DEFINE_ENUMS_AND_STRUCTS
typedef struct ImPlot3DPoint_c ImPlot3DPoint_c;
struct ImPlot3DPoint_c {
    double x;
    double y;
    double z;
};
typedef struct ImPlot3DQuat_c ImPlot3DQuat_c;
struct ImPlot3DQuat_c {
    double x;
    double y;
    double z;
    double w;
};
typedef struct ImPlot3DSpec_c ImPlot3DSpec_c;
struct ImPlot3DSpec_c {
    ImVec4_c LineColor;
    ImU32* LineColors;
    float LineWeight;
    ImVec4_c FillColor;
    ImU32* FillColors;
    float FillAlpha;
    ImPlot3DMarker Marker;
    float MarkerSize;
    float* MarkerSizes;
    ImVec4_c MarkerLineColor;
    ImU32* MarkerLineColors;
    ImVec4_c MarkerFillColor;
    ImU32* MarkerFillColors;
    int Offset;
    int Stride;
    ImPlot3DItemFlags Flags;
};
typedef struct ImPlot3DStyle_c ImPlot3DStyle_c;
struct ImPlot3DStyle_c {
    float LineWeight;
    int Marker;
    float MarkerSize;
    float FillAlpha;
    ImVec2_c PlotDefaultSize;
    ImVec2_c PlotMinSize;
    ImVec2_c PlotPadding;
    ImVec2_c LabelPadding;
    float ViewScaleFactor;
    ImVec2_c LegendPadding;
    ImVec2_c LegendInnerPadding;
    ImVec2_c LegendSpacing;
    ImVec4_c Colors[ImPlot3DCol_COUNT];
    ImPlot3DColormap Colormap;
};
#endif


#ifndef CIMGUI_DEFINE_ENUMS_AND_STRUCTS
#endif //CIMGUI_DEFINE_ENUMS_AND_STRUCTS
CIMGUI_API ImPlot3DSpec* ImPlot3DSpec_ImPlot3DSpec(void);
CIMGUI_API void ImPlot3DSpec_destroy(ImPlot3DSpec* self);
CIMGUI_API void ImPlot3DSpec_SetProp_Float(ImPlot3DSpec* self,ImPlot3DProp prop,float v);
CIMGUI_API void ImPlot3DSpec_SetProp_double(ImPlot3DSpec* self,ImPlot3DProp prop,double v);
CIMGUI_API void ImPlot3DSpec_SetProp_S8(ImPlot3DSpec* self,ImPlot3DProp prop,ImS8 v);
CIMGUI_API void ImPlot3DSpec_SetProp_U8(ImPlot3DSpec* self,ImPlot3DProp prop,ImU8 v);
CIMGUI_API void ImPlot3DSpec_SetProp_S16(ImPlot3DSpec* self,ImPlot3DProp prop,ImS16 v);
CIMGUI_API void ImPlot3DSpec_SetProp_U16(ImPlot3DSpec* self,ImPlot3DProp prop,ImU16 v);
CIMGUI_API void ImPlot3DSpec_SetProp_S32(ImPlot3DSpec* self,ImPlot3DProp prop,ImS32 v);
CIMGUI_API void ImPlot3DSpec_SetProp_U32(ImPlot3DSpec* self,ImPlot3DProp prop,ImU32 v);
CIMGUI_API void ImPlot3DSpec_SetProp_S64(ImPlot3DSpec* self,ImPlot3DProp prop,ImS64 v);
CIMGUI_API void ImPlot3DSpec_SetProp_U64(ImPlot3DSpec* self,ImPlot3DProp prop,ImU64 v);
CIMGUI_API void ImPlot3DSpec_SetProp_U32Ptr(ImPlot3DSpec* self,ImPlot3DProp prop,ImU32* v);
CIMGUI_API void ImPlot3DSpec_SetProp_FloatPtr(ImPlot3DSpec* self,ImPlot3DProp prop,float* v);
CIMGUI_API void ImPlot3DSpec_SetProp_Vec4(ImPlot3DSpec* self,ImPlot3DProp prop,const ImVec4_c v);
CIMGUI_API ImPlot3DContext* ImPlot3D_CreateContext(void);
CIMGUI_API void ImPlot3D_DestroyContext(ImPlot3DContext* ctx);
CIMGUI_API ImPlot3DContext* ImPlot3D_GetCurrentContext(void);
CIMGUI_API void ImPlot3D_SetCurrentContext(ImPlot3DContext* ctx);
CIMGUI_API bool ImPlot3D_BeginPlot(const char* title_id,const ImVec2_c size,ImPlot3DFlags flags);
CIMGUI_API void ImPlot3D_EndPlot(void);
CIMGUI_API void ImPlot3D_SetupAxis(ImAxis3D axis,const char* label,ImPlot3DAxisFlags flags);
CIMGUI_API void ImPlot3D_SetupAxisLimits(ImAxis3D axis,double v_min,double v_max,ImPlot3DCond cond);
CIMGUI_API void ImPlot3D_SetupAxisFormat(ImAxis3D axis,ImPlot3DFormatter formatter,void* data);
CIMGUI_API void ImPlot3D_SetupAxisTicks_doublePtr(ImAxis3D axis,const double* values,int n_ticks,const char* const labels[],bool keep_default);
CIMGUI_API void ImPlot3D_SetupAxisTicks_double(ImAxis3D axis,double v_min,double v_max,int n_ticks,const char* const labels[],bool keep_default);
CIMGUI_API void ImPlot3D_SetupAxisScale_Plot3DScale(ImAxis3D axis,ImPlot3DScale scale);
CIMGUI_API void ImPlot3D_SetupAxisScale_Plot3DTransform(ImAxis3D axis,ImPlot3DTransform forward,ImPlot3DTransform inverse,void* data);
CIMGUI_API void ImPlot3D_SetupAxisLimitsConstraints(ImAxis3D axis,double v_min,double v_max);
CIMGUI_API void ImPlot3D_SetupAxisZoomConstraints(ImAxis3D axis,double zoom_min,double zoom_max);
CIMGUI_API void ImPlot3D_SetupAxes(const char* x_label,const char* y_label,const char* z_label,ImPlot3DAxisFlags x_flags,ImPlot3DAxisFlags y_flags,ImPlot3DAxisFlags z_flags);
CIMGUI_API void ImPlot3D_SetupAxesLimits(double x_min,double x_max,double y_min,double y_max,double z_min,double z_max,ImPlot3DCond cond);
CIMGUI_API void ImPlot3D_SetupBoxRotation_double(double elevation,double azimuth,bool animate,ImPlot3DCond cond);
CIMGUI_API void ImPlot3D_SetupBoxRotation_Plot3DQuat(ImPlot3DQuat_c rotation,bool animate,ImPlot3DCond cond);
CIMGUI_API void ImPlot3D_SetupBoxInitialRotation_double(double elevation,double azimuth);
CIMGUI_API void ImPlot3D_SetupBoxInitialRotation_Plot3DQuat(ImPlot3DQuat_c rotation);
CIMGUI_API void ImPlot3D_SetupBoxScale(double x,double y,double z);
CIMGUI_API void ImPlot3D_SetupLegend(ImPlot3DLocation location,ImPlot3DLegendFlags flags);
CIMGUI_API void ImPlot3D_PlotScatter_FloatPtr(const char* label_id,const float* xs,const float* ys,const float* zs,int count,const ImPlot3DSpec_c spec);
CIMGUI_API void ImPlot3D_PlotScatter_doublePtr(const char* label_id,const double* xs,const double* ys,const double* zs,int count,const ImPlot3DSpec_c spec);
CIMGUI_API void ImPlot3D_PlotScatter_S8Ptr(const char* label_id,const ImS8* xs,const ImS8* ys,const ImS8* zs,int count,const ImPlot3DSpec_c spec);
CIMGUI_API void ImPlot3D_PlotScatter_U8Ptr(const char* label_id,const ImU8* xs,const ImU8* ys,const ImU8* zs,int count,const ImPlot3DSpec_c spec);
CIMGUI_API void ImPlot3D_PlotScatter_S16Ptr(const char* label_id,const ImS16* xs,const ImS16* ys,const ImS16* zs,int count,const ImPlot3DSpec_c spec);
CIMGUI_API void ImPlot3D_PlotScatter_U16Ptr(const char* label_id,const ImU16* xs,const ImU16* ys,const ImU16* zs,int count,const ImPlot3DSpec_c spec);
CIMGUI_API void ImPlot3D_PlotScatter_S32Ptr(const char* label_id,const ImS32* xs,const ImS32* ys,const ImS32* zs,int count,const ImPlot3DSpec_c spec);
CIMGUI_API void ImPlot3D_PlotScatter_U32Ptr(const char* label_id,const ImU32* xs,const ImU32* ys,const ImU32* zs,int count,const ImPlot3DSpec_c spec);
CIMGUI_API void ImPlot3D_PlotScatter_S64Ptr(const char* label_id,const ImS64* xs,const ImS64* ys,const ImS64* zs,int count,const ImPlot3DSpec_c spec);
CIMGUI_API void ImPlot3D_PlotScatter_U64Ptr(const char* label_id,const ImU64* xs,const ImU64* ys,const ImU64* zs,int count,const ImPlot3DSpec_c spec);
CIMGUI_API void ImPlot3D_PlotLine_FloatPtr(const char* label_id,const float* xs,const float* ys,const float* zs,int count,const ImPlot3DSpec_c spec);
CIMGUI_API void ImPlot3D_PlotLine_doublePtr(const char* label_id,const double* xs,const double* ys,const double* zs,int count,const ImPlot3DSpec_c spec);
CIMGUI_API void ImPlot3D_PlotLine_S8Ptr(const char* label_id,const ImS8* xs,const ImS8* ys,const ImS8* zs,int count,const ImPlot3DSpec_c spec);
CIMGUI_API void ImPlot3D_PlotLine_U8Ptr(const char* label_id,const ImU8* xs,const ImU8* ys,const ImU8* zs,int count,const ImPlot3DSpec_c spec);
CIMGUI_API void ImPlot3D_PlotLine_S16Ptr(const char* label_id,const ImS16* xs,const ImS16* ys,const ImS16* zs,int count,const ImPlot3DSpec_c spec);
CIMGUI_API void ImPlot3D_PlotLine_U16Ptr(const char* label_id,const ImU16* xs,const ImU16* ys,const ImU16* zs,int count,const ImPlot3DSpec_c spec);
CIMGUI_API void ImPlot3D_PlotLine_S32Ptr(const char* label_id,const ImS32* xs,const ImS32* ys,const ImS32* zs,int count,const ImPlot3DSpec_c spec);
CIMGUI_API void ImPlot3D_PlotLine_U32Ptr(const char* label_id,const ImU32* xs,const ImU32* ys,const ImU32* zs,int count,const ImPlot3DSpec_c spec);
CIMGUI_API void ImPlot3D_PlotLine_S64Ptr(const char* label_id,const ImS64* xs,const ImS64* ys,const ImS64* zs,int count,const ImPlot3DSpec_c spec);
CIMGUI_API void ImPlot3D_PlotLine_U64Ptr(const char* label_id,const ImU64* xs,const ImU64* ys,const ImU64* zs,int count,const ImPlot3DSpec_c spec);
CIMGUI_API void ImPlot3D_PlotTriangle_FloatPtr(const char* label_id,const float* xs,const float* ys,const float* zs,int count,const ImPlot3DSpec_c spec);
CIMGUI_API void ImPlot3D_PlotTriangle_doublePtr(const char* label_id,const double* xs,const double* ys,const double* zs,int count,const ImPlot3DSpec_c spec);
CIMGUI_API void ImPlot3D_PlotTriangle_S8Ptr(const char* label_id,const ImS8* xs,const ImS8* ys,const ImS8* zs,int count,const ImPlot3DSpec_c spec);
CIMGUI_API void ImPlot3D_PlotTriangle_U8Ptr(const char* label_id,const ImU8* xs,const ImU8* ys,const ImU8* zs,int count,const ImPlot3DSpec_c spec);
CIMGUI_API void ImPlot3D_PlotTriangle_S16Ptr(const char* label_id,const ImS16* xs,const ImS16* ys,const ImS16* zs,int count,const ImPlot3DSpec_c spec);
CIMGUI_API void ImPlot3D_PlotTriangle_U16Ptr(const char* label_id,const ImU16* xs,const ImU16* ys,const ImU16* zs,int count,const ImPlot3DSpec_c spec);
CIMGUI_API void ImPlot3D_PlotTriangle_S32Ptr(const char* label_id,const ImS32* xs,const ImS32* ys,const ImS32* zs,int count,const ImPlot3DSpec_c spec);
CIMGUI_API void ImPlot3D_PlotTriangle_U32Ptr(const char* label_id,const ImU32* xs,const ImU32* ys,const ImU32* zs,int count,const ImPlot3DSpec_c spec);
CIMGUI_API void ImPlot3D_PlotTriangle_S64Ptr(const char* label_id,const ImS64* xs,const ImS64* ys,const ImS64* zs,int count,const ImPlot3DSpec_c spec);
CIMGUI_API void ImPlot3D_PlotTriangle_U64Ptr(const char* label_id,const ImU64* xs,const ImU64* ys,const ImU64* zs,int count,const ImPlot3DSpec_c spec);
CIMGUI_API void ImPlot3D_PlotQuad_FloatPtr(const char* label_id,const float* xs,const float* ys,const float* zs,int count,const ImPlot3DSpec_c spec);
CIMGUI_API void ImPlot3D_PlotQuad_doublePtr(const char* label_id,const double* xs,const double* ys,const double* zs,int count,const ImPlot3DSpec_c spec);
CIMGUI_API void ImPlot3D_PlotQuad_S8Ptr(const char* label_id,const ImS8* xs,const ImS8* ys,const ImS8* zs,int count,const ImPlot3DSpec_c spec);
CIMGUI_API void ImPlot3D_PlotQuad_U8Ptr(const char* label_id,const ImU8* xs,const ImU8* ys,const ImU8* zs,int count,const ImPlot3DSpec_c spec);
CIMGUI_API void ImPlot3D_PlotQuad_S16Ptr(const char* label_id,const ImS16* xs,const ImS16* ys,const ImS16* zs,int count,const ImPlot3DSpec_c spec);
CIMGUI_API void ImPlot3D_PlotQuad_U16Ptr(const char* label_id,const ImU16* xs,const ImU16* ys,const ImU16* zs,int count,const ImPlot3DSpec_c spec);
CIMGUI_API void ImPlot3D_PlotQuad_S32Ptr(const char* label_id,const ImS32* xs,const ImS32* ys,const ImS32* zs,int count,const ImPlot3DSpec_c spec);
CIMGUI_API void ImPlot3D_PlotQuad_U32Ptr(const char* label_id,const ImU32* xs,const ImU32* ys,const ImU32* zs,int count,const ImPlot3DSpec_c spec);
CIMGUI_API void ImPlot3D_PlotQuad_S64Ptr(const char* label_id,const ImS64* xs,const ImS64* ys,const ImS64* zs,int count,const ImPlot3DSpec_c spec);
CIMGUI_API void ImPlot3D_PlotQuad_U64Ptr(const char* label_id,const ImU64* xs,const ImU64* ys,const ImU64* zs,int count,const ImPlot3DSpec_c spec);
CIMGUI_API void ImPlot3D_PlotSurface_FloatPtr(const char* label_id,const float* xs,const float* ys,const float* zs,int x_count,int y_count,double scale_min,double scale_max,const ImPlot3DSpec_c spec);
CIMGUI_API void ImPlot3D_PlotSurface_doublePtr(const char* label_id,const double* xs,const double* ys,const double* zs,int x_count,int y_count,double scale_min,double scale_max,const ImPlot3DSpec_c spec);
CIMGUI_API void ImPlot3D_PlotSurface_S8Ptr(const char* label_id,const ImS8* xs,const ImS8* ys,const ImS8* zs,int x_count,int y_count,double scale_min,double scale_max,const ImPlot3DSpec_c spec);
CIMGUI_API void ImPlot3D_PlotSurface_U8Ptr(const char* label_id,const ImU8* xs,const ImU8* ys,const ImU8* zs,int x_count,int y_count,double scale_min,double scale_max,const ImPlot3DSpec_c spec);
CIMGUI_API void ImPlot3D_PlotSurface_S16Ptr(const char* label_id,const ImS16* xs,const ImS16* ys,const ImS16* zs,int x_count,int y_count,double scale_min,double scale_max,const ImPlot3DSpec_c spec);
CIMGUI_API void ImPlot3D_PlotSurface_U16Ptr(const char* label_id,const ImU16* xs,const ImU16* ys,const ImU16* zs,int x_count,int y_count,double scale_min,double scale_max,const ImPlot3DSpec_c spec);
CIMGUI_API void ImPlot3D_PlotSurface_S32Ptr(const char* label_id,const ImS32* xs,const ImS32* ys,const ImS32* zs,int x_count,int y_count,double scale_min,double scale_max,const ImPlot3DSpec_c spec);
CIMGUI_API void ImPlot3D_PlotSurface_U32Ptr(const char* label_id,const ImU32* xs,const ImU32* ys,const ImU32* zs,int x_count,int y_count,double scale_min,double scale_max,const ImPlot3DSpec_c spec);
CIMGUI_API void ImPlot3D_PlotSurface_S64Ptr(const char* label_id,const ImS64* xs,const ImS64* ys,const ImS64* zs,int x_count,int y_count,double scale_min,double scale_max,const ImPlot3DSpec_c spec);
CIMGUI_API void ImPlot3D_PlotSurface_U64Ptr(const char* label_id,const ImU64* xs,const ImU64* ys,const ImU64* zs,int x_count,int y_count,double scale_min,double scale_max,const ImPlot3DSpec_c spec);
CIMGUI_API void ImPlot3D_PlotMesh_FloatPtr(const char* label_id,const float* vtx_xs,const float* vtx_ys,const float* vtx_zs,const unsigned int* idxs,int vtx_count,int idx_count,const ImPlot3DSpec_c spec);
CIMGUI_API void ImPlot3D_PlotMesh_doublePtr(const char* label_id,const double* vtx_xs,const double* vtx_ys,const double* vtx_zs,const unsigned int* idxs,int vtx_count,int idx_count,const ImPlot3DSpec_c spec);
CIMGUI_API void ImPlot3D_PlotMesh_S8Ptr(const char* label_id,const ImS8* vtx_xs,const ImS8* vtx_ys,const ImS8* vtx_zs,const unsigned int* idxs,int vtx_count,int idx_count,const ImPlot3DSpec_c spec);
CIMGUI_API void ImPlot3D_PlotMesh_U8Ptr(const char* label_id,const ImU8* vtx_xs,const ImU8* vtx_ys,const ImU8* vtx_zs,const unsigned int* idxs,int vtx_count,int idx_count,const ImPlot3DSpec_c spec);
CIMGUI_API void ImPlot3D_PlotMesh_S16Ptr(const char* label_id,const ImS16* vtx_xs,const ImS16* vtx_ys,const ImS16* vtx_zs,const unsigned int* idxs,int vtx_count,int idx_count,const ImPlot3DSpec_c spec);
CIMGUI_API void ImPlot3D_PlotMesh_U16Ptr(const char* label_id,const ImU16* vtx_xs,const ImU16* vtx_ys,const ImU16* vtx_zs,const unsigned int* idxs,int vtx_count,int idx_count,const ImPlot3DSpec_c spec);
CIMGUI_API void ImPlot3D_PlotMesh_S32Ptr(const char* label_id,const ImS32* vtx_xs,const ImS32* vtx_ys,const ImS32* vtx_zs,const unsigned int* idxs,int vtx_count,int idx_count,const ImPlot3DSpec_c spec);
CIMGUI_API void ImPlot3D_PlotMesh_U32Ptr(const char* label_id,const ImU32* vtx_xs,const ImU32* vtx_ys,const ImU32* vtx_zs,const unsigned int* idxs,int vtx_count,int idx_count,const ImPlot3DSpec_c spec);
CIMGUI_API void ImPlot3D_PlotMesh_S64Ptr(const char* label_id,const ImS64* vtx_xs,const ImS64* vtx_ys,const ImS64* vtx_zs,const unsigned int* idxs,int vtx_count,int idx_count,const ImPlot3DSpec_c spec);
CIMGUI_API void ImPlot3D_PlotMesh_U64Ptr(const char* label_id,const ImU64* vtx_xs,const ImU64* vtx_ys,const ImU64* vtx_zs,const unsigned int* idxs,int vtx_count,int idx_count,const ImPlot3DSpec_c spec);
CIMGUI_API void ImPlot3D_PlotImage_Vec2(const char* label_id,ImTextureRef_c tex_ref,const ImPlot3DPoint_c center,const ImPlot3DPoint_c axis_u,const ImPlot3DPoint_c axis_v,const ImVec2_c uv0,const ImVec2_c uv1,const ImVec4_c tint_col,const ImPlot3DSpec_c spec);
CIMGUI_API void ImPlot3D_PlotImage_Plot3DPoint(const char* label_id,ImTextureRef_c tex_ref,const ImPlot3DPoint_c p0,const ImPlot3DPoint_c p1,const ImPlot3DPoint_c p2,const ImPlot3DPoint_c p3,const ImVec2_c uv0,const ImVec2_c uv1,const ImVec2_c uv2,const ImVec2_c uv3,const ImVec4_c tint_col,const ImPlot3DSpec_c spec);
CIMGUI_API void ImPlot3D_PlotText(const char* text,double x,double y,double z,double angle,const ImVec2_c pix_offset);
CIMGUI_API void ImPlot3D_PlotDummy(const char* label_id,const ImPlot3DSpec_c spec);
CIMGUI_API ImVec2_c ImPlot3D_PlotToPixels_Plot3DPoint(const ImPlot3DPoint_c point);
CIMGUI_API ImVec2_c ImPlot3D_PlotToPixels_double(double x,double y,double z);
CIMGUI_API ImPlot3DRay ImPlot3D_PixelsToPlotRay_Vec2(const ImVec2_c pix);
CIMGUI_API ImPlot3DRay ImPlot3D_PixelsToPlotRay_double(double x,double y);
CIMGUI_API ImPlot3DPoint_c ImPlot3D_PixelsToPlotPlane_Vec2(const ImVec2_c pix,ImPlane3D plane,bool mask);
CIMGUI_API ImPlot3DPoint_c ImPlot3D_PixelsToPlotPlane_double(double x,double y,ImPlane3D plane,bool mask);
CIMGUI_API ImVec2_c ImPlot3D_GetPlotRectPos(void);
CIMGUI_API ImVec2_c ImPlot3D_GetPlotRectSize(void);
CIMGUI_API ImDrawList* ImPlot3D_GetPlotDrawList(void);
CIMGUI_API ImPlot3DStyle* ImPlot3D_GetStyle(void);
CIMGUI_API void ImPlot3D_SetStyle(const ImPlot3DStyle_c style);
CIMGUI_API void ImPlot3D_StyleColorsAuto(ImPlot3DStyle* dst);
CIMGUI_API void ImPlot3D_StyleColorsDark(ImPlot3DStyle* dst);
CIMGUI_API void ImPlot3D_StyleColorsLight(ImPlot3DStyle* dst);
CIMGUI_API void ImPlot3D_StyleColorsClassic(ImPlot3DStyle* dst);
CIMGUI_API void ImPlot3D_PushStyleColor_U32(ImPlot3DCol idx,ImU32 col);
CIMGUI_API void ImPlot3D_PushStyleColor_Vec4(ImPlot3DCol idx,const ImVec4_c col);
CIMGUI_API void ImPlot3D_PopStyleColor(int count);
CIMGUI_API void ImPlot3D_PushStyleVar_Float(ImPlot3DStyleVar idx,float val);
CIMGUI_API void ImPlot3D_PushStyleVar_Int(ImPlot3DStyleVar idx,int val);
CIMGUI_API void ImPlot3D_PushStyleVar_Vec2(ImPlot3DStyleVar idx,const ImVec2_c val);
CIMGUI_API void ImPlot3D_PopStyleVar(int count);
CIMGUI_API ImVec4_c ImPlot3D_GetStyleColorVec4(ImPlot3DCol idx);
CIMGUI_API ImU32 ImPlot3D_GetStyleColorU32(ImPlot3DCol idx);
CIMGUI_API ImPlot3DMarker ImPlot3D_NextMarker(void);
CIMGUI_API ImPlot3DColormap ImPlot3D_AddColormap_Vec4Ptr(const char* name,const ImVec4* cols,int size,bool qual);
CIMGUI_API ImPlot3DColormap ImPlot3D_AddColormap_U32Ptr(const char* name,const ImU32* cols,int size,bool qual);
CIMGUI_API int ImPlot3D_GetColormapCount(void);
CIMGUI_API const char* ImPlot3D_GetColormapName(ImPlot3DColormap cmap);
CIMGUI_API ImPlot3DColormap ImPlot3D_GetColormapIndex(const char* name);
CIMGUI_API void ImPlot3D_PushColormap_Plot3DColormap(ImPlot3DColormap cmap);
CIMGUI_API void ImPlot3D_PushColormap_Str(const char* name);
CIMGUI_API void ImPlot3D_PopColormap(int count);
CIMGUI_API ImVec4_c ImPlot3D_NextColormapColor(void);
CIMGUI_API int ImPlot3D_GetColormapSize(ImPlot3DColormap cmap);
CIMGUI_API ImVec4_c ImPlot3D_GetColormapColor(int idx,ImPlot3DColormap cmap);
CIMGUI_API ImVec4_c ImPlot3D_SampleColormap(float t,ImPlot3DColormap cmap);
CIMGUI_API void ImPlot3D_ShowDemoWindow(bool* p_open);
CIMGUI_API void ImPlot3D_ShowAllDemos(void);
CIMGUI_API void ImPlot3D_ShowStyleEditor(ImPlot3DStyle* ref);
CIMGUI_API bool ImPlot3D_ShowStyleSelector(const char* label);
CIMGUI_API bool ImPlot3D_ShowColormapSelector(const char* label);
CIMGUI_API void ImPlot3D_ShowMetricsWindow(bool* p_popen);
CIMGUI_API void ImPlot3D_ShowAboutWindow(bool* p_open);
CIMGUI_API ImPlot3DPoint* ImPlot3DPoint_ImPlot3DPoint_Nil(void);
CIMGUI_API void ImPlot3DPoint_destroy(ImPlot3DPoint* self);
CIMGUI_API ImPlot3DPoint* ImPlot3DPoint_ImPlot3DPoint_double(double _x,double _y,double _z);
CIMGUI_API double ImPlot3DPoint_Dot(ImPlot3DPoint* self,const ImPlot3DPoint_c rhs);
CIMGUI_API ImPlot3DPoint_c ImPlot3DPoint_Cross(ImPlot3DPoint* self,const ImPlot3DPoint_c rhs);
CIMGUI_API double ImPlot3DPoint_Length(ImPlot3DPoint* self);
CIMGUI_API double ImPlot3DPoint_LengthSquared(ImPlot3DPoint* self);
CIMGUI_API void ImPlot3DPoint_Normalize(ImPlot3DPoint* self);
CIMGUI_API ImPlot3DPoint_c ImPlot3DPoint_Normalized(ImPlot3DPoint* self);
CIMGUI_API bool ImPlot3DPoint_IsNaN(ImPlot3DPoint* self);
CIMGUI_API ImPlot3DBox* ImPlot3DBox_ImPlot3DBox_Nil(void);
CIMGUI_API void ImPlot3DBox_destroy(ImPlot3DBox* self);
CIMGUI_API ImPlot3DBox* ImPlot3DBox_ImPlot3DBox_Plot3DPoint(const ImPlot3DPoint_c min,const ImPlot3DPoint_c max);
CIMGUI_API void ImPlot3DBox_Expand(ImPlot3DBox* self,const ImPlot3DPoint_c point);
CIMGUI_API bool ImPlot3DBox_Contains(ImPlot3DBox* self,const ImPlot3DPoint_c point);
CIMGUI_API bool ImPlot3DBox_ClipLineSegment(ImPlot3DBox* self,const ImPlot3DPoint_c p0,const ImPlot3DPoint_c p1,ImPlot3DPoint* p0_clipped,ImPlot3DPoint* p1_clipped);
CIMGUI_API ImPlot3DRange* ImPlot3DRange_ImPlot3DRange_Nil(void);
CIMGUI_API void ImPlot3DRange_destroy(ImPlot3DRange* self);
CIMGUI_API ImPlot3DRange* ImPlot3DRange_ImPlot3DRange_double(double min,double max);
CIMGUI_API void ImPlot3DRange_Expand(ImPlot3DRange* self,double value);
CIMGUI_API bool ImPlot3DRange_Contains(ImPlot3DRange* self,double value);
CIMGUI_API double ImPlot3DRange_Size(ImPlot3DRange* self);
CIMGUI_API ImPlot3DQuat* ImPlot3DQuat_ImPlot3DQuat_Nil(void);
CIMGUI_API void ImPlot3DQuat_destroy(ImPlot3DQuat* self);
CIMGUI_API ImPlot3DQuat* ImPlot3DQuat_ImPlot3DQuat_doubledouble(double _x,double _y,double _z,double _w);
CIMGUI_API ImPlot3DQuat* ImPlot3DQuat_ImPlot3DQuat_doublePlot3DPoint(double _angle,const ImPlot3DPoint_c _axis);
CIMGUI_API ImPlot3DQuat_c ImPlot3DQuat_FromTwoVectors(const ImPlot3DPoint_c v0,const ImPlot3DPoint_c v1);
CIMGUI_API ImPlot3DQuat_c ImPlot3DQuat_FromElAz(double elevation,double azimuth);
CIMGUI_API double ImPlot3DQuat_Length(ImPlot3DQuat* self);
CIMGUI_API ImPlot3DQuat_c ImPlot3DQuat_Normalized(ImPlot3DQuat* self);
CIMGUI_API ImPlot3DQuat_c ImPlot3DQuat_Conjugate(ImPlot3DQuat* self);
CIMGUI_API ImPlot3DQuat_c ImPlot3DQuat_Inverse(ImPlot3DQuat* self);
CIMGUI_API ImPlot3DQuat_c* ImPlot3DQuat_Normalize(ImPlot3DQuat* self);
CIMGUI_API ImPlot3DQuat_c ImPlot3DQuat_Slerp(const ImPlot3DQuat_c q1,const ImPlot3DQuat_c q2,double t);
CIMGUI_API double ImPlot3DQuat_Dot(ImPlot3DQuat* self,const ImPlot3DQuat_c rhs);
CIMGUI_API ImVec4_c ImPlot3DStyle_GetColor(ImPlot3DStyle* self,ImPlot3DCol idx);
CIMGUI_API void ImPlot3DStyle_SetColor(ImPlot3DStyle* self,ImPlot3DCol idx,const ImVec4_c col);
CIMGUI_API ImPlot3DStyle* ImPlot3DStyle_ImPlot3DStyle_Nil(void);
CIMGUI_API void ImPlot3DStyle_destroy(ImPlot3DStyle* self);
CIMGUI_API ImPlot3DStyle* ImPlot3DStyle_ImPlot3DStyle_Plot3DStyle(const ImPlot3DStyle_c other);



#endif //CIMPLOT3D_INCLUDED




