#ifndef VTK_IMAGE_VIEWER2_C_H
#define VTK_IMAGE_VIEWER2_C_H
#ifdef __cplusplus
extern "C" {
#endif
/* Forward declarations for opaque pointers */
typedef struct vtkImageViewer2_C vtkImageViewer2_C;
typedef struct vtkImageData_C vtkImageData_C;
typedef struct vtkRenderWindow_C vtkRenderWindow_C;
typedef struct vtkRenderer_C vtkRenderer_C;
typedef struct vtkImageActor_C vtkImageActor_C;
typedef struct vtkImageMapToWindowLevelColors_C vtkImageMapToWindowLevelColors_C;
typedef struct vtkInteractorStyleImage_C vtkInteractorStyleImage_C;
typedef struct vtkRenderWindowInteractor_C vtkRenderWindowInteractor_C;
typedef struct vtkAlgorithmOutput_C vtkAlgorithmOutput_C;
/* Slice orientation constants */
#define VTK_SLICE_ORIENTATION_YZ 0
#define VTK_SLICE_ORIENTATION_XZ 1
#define VTK_SLICE_ORIENTATION_XY 2
/* Object lifetime management */
vtkImageViewer2_C* vtkImageViewer2_New(void);
void vtkImageViewer2_Delete(vtkImageViewer2_C* self);
/* Basic rendering */
void vtkImageViewer2_Render(vtkImageViewer2_C* self);
const char* vtkImageViewer2_GetWindowName(vtkImageViewer2_C* self);
/* Input data management */
void vtkImageViewer2_SetInputData(vtkImageViewer2_C* self, vtkImageData_C* input);
vtkImageData_C* vtkImageViewer2_GetInput(vtkImageViewer2_C* self);
void vtkImageViewer2_SetInputConnection(vtkImageViewer2_C* self, vtkAlgorithmOutput_C* input);
/* Slice orientation */
int vtkImageViewer2_GetSliceOrientation(vtkImageViewer2_C* self);
void vtkImageViewer2_SetSliceOrientation(vtkImageViewer2_C* self, int orientation);
void vtkImageViewer2_SetSliceOrientationToXY(vtkImageViewer2_C* self);
void vtkImageViewer2_SetSliceOrientationToYZ(vtkImageViewer2_C* self);
void vtkImageViewer2_SetSliceOrientationToXZ(vtkImageViewer2_C* self);
/* Slice management */
int vtkImageViewer2_GetSlice(vtkImageViewer2_C* self);
void vtkImageViewer2_SetSlice(vtkImageViewer2_C* self, int slice);
void vtkImageViewer2_UpdateDisplayExtent(vtkImageViewer2_C* self);
/* Slice range information */
int vtkImageViewer2_GetSliceMin(vtkImageViewer2_C* self);
int vtkImageViewer2_GetSliceMax(vtkImageViewer2_C* self);
void vtkImageViewer2_GetSliceRange(vtkImageViewer2_C* self, int range[2]);
void vtkImageViewer2_GetSliceRangeMinMax(vtkImageViewer2_C* self, int* min, int* max);
int* vtkImageViewer2_GetSliceRangePtr(vtkImageViewer2_C* self);
/* Color window/level */
double vtkImageViewer2_GetColorWindow(vtkImageViewer2_C* self);
double vtkImageViewer2_GetColorLevel(vtkImageViewer2_C* self);
void vtkImageViewer2_SetColorWindow(vtkImageViewer2_C* self, double window);
void vtkImageViewer2_SetColorLevel(vtkImageViewer2_C* self, double level);
/* Window management */
void vtkImageViewer2_SetDisplayId(vtkImageViewer2_C* self, void* display_id);
void vtkImageViewer2_SetWindowId(vtkImageViewer2_C* self, void* window_id);
void vtkImageViewer2_SetParentId(vtkImageViewer2_C* self, void* parent_id);
/* Position and size */
int* vtkImageViewer2_GetPosition(vtkImageViewer2_C* self);
void vtkImageViewer2_SetPosition(vtkImageViewer2_C* self, int x, int y);
void vtkImageViewer2_SetPositionArray(vtkImageViewer2_C* self, int pos[2]);
int* vtkImageViewer2_GetSize(vtkImageViewer2_C* self);
void vtkImageViewer2_SetSize(vtkImageViewer2_C* self, int width, int height);
void vtkImageViewer2_SetSizeArray(vtkImageViewer2_C* self, int size[2]);
/* Component access */
vtkRenderWindow_C* vtkImageViewer2_GetRenderWindow(vtkImageViewer2_C* self);
vtkRenderer_C* vtkImageViewer2_GetRenderer(vtkImageViewer2_C* self);
vtkImageActor_C* vtkImageViewer2_GetImageActor(vtkImageViewer2_C* self);
vtkImageMapToWindowLevelColors_C* vtkImageViewer2_GetWindowLevel(vtkImageViewer2_C* self);
vtkInteractorStyleImage_C* vtkImageViewer2_GetInteractorStyle(vtkImageViewer2_C* self);
/* Component setup */
void vtkImageViewer2_SetRenderWindow(vtkImageViewer2_C* self, vtkRenderWindow_C* window);
void vtkImageViewer2_SetRenderer(vtkImageViewer2_C* self, vtkRenderer_C* renderer);
void vtkImageViewer2_SetupInteractor(vtkImageViewer2_C* self, vtkRenderWindowInteractor_C* interactor);
/* Off-screen rendering */
int vtkImageViewer2_GetOffScreenRendering(vtkImageViewer2_C* self);
void vtkImageViewer2_SetOffScreenRendering(vtkImageViewer2_C* self, int enable);
void vtkImageViewer2_OffScreenRenderingOn(vtkImageViewer2_C* self);
void vtkImageViewer2_OffScreenRenderingOff(vtkImageViewer2_C* self);
/* Type checking (from vtkObject inheritance) */
int vtkImageViewer2_IsTypeOf(const char* type);
int vtkImageViewer2_IsA(vtkImageViewer2_C* self, const char* type);
/* Object information */
const char* vtkImageViewer2_GetClassName(vtkImageViewer2_C* self);
void vtkImageViewer2_PrintSelf(vtkImageViewer2_C* self);
/* Reference counting */
int vtkImageViewer2_GetReferenceCount(vtkImageViewer2_C* self);
void vtkImageViewer2_Register(vtkImageViewer2_C* self, void* object);
void vtkImageViewer2_UnRegister(vtkImageViewer2_C* self, void* object);
/* Debug support */
int vtkImageViewer2_GetDebug(vtkImageViewer2_C* self);
void vtkImageViewer2_SetDebug(vtkImageViewer2_C* self, int debug_flag);
void vtkImageViewer2_DebugOn(vtkImageViewer2_C* self);
void vtkImageViewer2_DebugOff(vtkImageViewer2_C* self);
/* Modification time */
unsigned long vtkImageViewer2_GetMTime(vtkImageViewer2_C* self);
void vtkImageViewer2_Modified(vtkImageViewer2_C* self);
/* Global warning display */
int vtkImageViewer2_GetGlobalWarningDisplay(void);
void vtkImageViewer2_SetGlobalWarningDisplay(int val);
void vtkImageViewer2_GlobalWarningDisplayOn(void);
void vtkImageViewer2_GlobalWarningDisplayOff(void);
/* Object name and description */
void vtkImageViewer2_SetObjectName(vtkImageViewer2_C* self, const char* name);
const char* vtkImageViewer2_GetObjectName(vtkImageViewer2_C* self);
const char* vtkImageViewer2_GetObjectDescription(vtkImageViewer2_C* self);
#ifdef __cplusplus
}
#endif
#endif /* VTK_IMAGE_VIEWER2_C_H */