#[repr(C)]pub struct HOOKFCNS {Show 17 fields
pub setup_cal_display_hook: Option<unsafe extern "C" fn() -> INT16>,
pub exit_cal_display_hook: Option<unsafe extern "C" fn()>,
pub record_abort_hide_hook: Option<unsafe extern "C" fn()>,
pub setup_image_display_hook: Option<unsafe extern "C" fn(width: INT16, height: INT16) -> INT16>,
pub image_title_hook: Option<unsafe extern "C" fn(threshold: INT16, cam_name: *mut c_char)>,
pub draw_image_line_hook: Option<unsafe extern "C" fn(width: INT16, line: INT16, totlines: INT16, pixels: *mut byte)>,
pub set_image_palette_hook: Option<unsafe extern "C" fn(ncolors: INT16, r: *mut byte, g: *mut byte, b: *mut byte)>,
pub exit_image_display_hook: Option<unsafe extern "C" fn()>,
pub clear_cal_display_hook: Option<unsafe extern "C" fn()>,
pub erase_cal_target_hook: Option<unsafe extern "C" fn()>,
pub draw_cal_target_hook: Option<unsafe extern "C" fn(x: INT16, y: INT16)>,
pub cal_target_beep_hook: Option<unsafe extern "C" fn()>,
pub cal_done_beep_hook: Option<unsafe extern "C" fn(error: INT16)>,
pub dc_done_beep_hook: Option<unsafe extern "C" fn(error: INT16)>,
pub dc_target_beep_hook: Option<unsafe extern "C" fn()>,
pub get_input_key_hook: Option<unsafe extern "C" fn(event: *mut InputEvent) -> c_short>,
pub alert_printf_hook: Option<unsafe extern "C" fn(arg1: *const c_char)>,
}Expand description
@ingroup display \brief Structure used set and get callback functions
Structure used set and get callback functions so that the calibration graphics can be drawn.
Fields§
§setup_cal_display_hook: Option<unsafe extern "C" fn() -> INT16>This function is called to setup calibration/validation display. This function called before any calibration routines are called.
exit_cal_display_hook: Option<unsafe extern "C" fn()>This is called to release any resources that are not required beyond calibration. Beyond this call, no calibration functions will be called.
record_abort_hide_hook: Option<unsafe extern "C" fn()>This function is called if abort of record. It is used to hide display from subject.
setup_image_display_hook: Option<unsafe extern "C" fn(width: INT16, height: INT16) -> INT16>This function is responsible for initializing any resources that are required for camera setup.
@param width width of the source image to expect. @param height height of the source image to expect. @return -1 if failed, 0 otherwise.
image_title_hook: Option<unsafe extern "C" fn(threshold: INT16, cam_name: *mut c_char)>This function is called to update any image title change. @param threshold if -1 the entire tile is in the title string otherwise, the threshold of the current image. @param title if threshold is -1, the title contains the whole title for the image. Otherwise only the camera name is given.
draw_image_line_hook: Option<unsafe extern "C" fn(width: INT16, line: INT16, totlines: INT16, pixels: *mut byte)>This function is called to supply the image line by line from top to bottom.
@param width width of the picture. Essentially, number of bytes in \c pixels. @param line current line of the image @param totlines total number of lines in the image. This will always equal the height of the image. @param pixels pixel data.
Eg. Say we want to extract pixel at position (20,20) and print it out as rgb values.
@code
if(line == 20) // y = 20
{
byte pix = pixels[19];
printf("RGB %d %d %d\n",r[pix],g[pix],b[pix]);
}
@endcode
@remark certain display draw the image up side down. eg. GDI.
set_image_palette_hook: Option<unsafe extern "C" fn(ncolors: INT16, r: *mut byte, g: *mut byte, b: *mut byte)>This function is called after setup_image_display and before the first call to draw_image_line. This is responsible to setup the palettes to display the camera image.
@param ncolors number of colors in the palette. @param r red component of rgb. @param g blue component of rgb. @param b green component of rgb.
exit_image_display_hook: Option<unsafe extern "C" fn()>This is called to notify that all camera setup things are complete. Any resources that are allocated in setup_image_display can be released in this function.
clear_cal_display_hook: Option<unsafe extern "C" fn()>Called to clear the calibration display.
erase_cal_target_hook: Option<unsafe extern "C" fn()>This function is responsible for erasing the target that was drawn by the last call to draw_cal_target.
draw_cal_target_hook: Option<unsafe extern "C" fn(x: INT16, y: INT16)>This function is responsible for the drawing of the target for calibration,validation and drift correct at the given coordinate. @param x x coordinate of the target. @param y y coordinate of the target. @remark The x and y are relative to what is sent to the tracker for the command screen_pixel_coords.
cal_target_beep_hook: Option<unsafe extern "C" fn()>This function is called to signal new target.
cal_done_beep_hook: Option<unsafe extern "C" fn(error: INT16)>This function is called to signal end of calibration. @param error if non zero, then the calibration has error.
dc_done_beep_hook: Option<unsafe extern "C" fn(error: INT16)>This function is called to singnal the end of drift correct. @param error if non zero, then the drift correction failed.
dc_target_beep_hook: Option<unsafe extern "C" fn()>This function is called to signal a new drift correct target.
get_input_key_hook: Option<unsafe extern "C" fn(event: *mut InputEvent) -> c_short>This is called to check for keyboard input. In this function: \arg check if there are any input events \arg if there are input events, fill key_input and return 1. otherwise return 0. If 1 is returned this will be called again to check for more events.
@param[out] key_input fill in the InputEvent structure to return key,modifier values. @return if there is a key, return 1 otherwise return 0.
@remark Special keys and modifiers should match the following code.
\b Special \b keys:
@code #define F1_KEY 0x3B00 #define F2_KEY 0x3C00 #define F3_KEY 0x3D00 #define F4_KEY 0x3E00 #define F5_KEY 0x3F00 #define F6_KEY 0x4000 #define F7_KEY 0x4100 #define F8_KEY 0x4200 #define F9_KEY 0x4300 #define F10_KEY 0x4400 #define PAGE_UP 0x4900 #define PAGE_DOWN 0x5100 #define CURS_UP 0x4800 #define CURS_DOWN 0x5000 #define CURS_LEFT 0x4B00 #define CURS_RIGHT 0x4D00 #define ESC_KEY 0x001B #define ENTER_KEY 0x000D @endcode
Modifier: If you are using SDL you do not need to modify the modifier value as they match the value.
@code #define ELKMOD_NONE 0x0000 #define ELKMOD_LSHIFT 0x0001 #define ELKMOD_RSHIFT 0x0002 #define ELKMOD_LCTRL 0x0040 #define ELKMOD_RCTRL 0x0080 #define ELKMOD_LALT 0x0100 #define ELKMOD_RALT 0x0200 #define ELKMOD_LMETA 0x0400 #define ELKMOD_RMETA 0x0800, #define ELKMOD_NUM 0x1000 #define ELKMOD_CAPS 0x2000 #define ELKMOD_MODE 0x4000 @endcode
alert_printf_hook: Option<unsafe extern "C" fn(arg1: *const c_char)>This function is called whenever alert_printf is called. In windows, if no callback is set calls MessageBox function. In other platforms, if no call back is set prints out to console.