All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.bytedeco.javacpp.FlyCapture2 Maven / Gradle / Ivy

The newest version!
// Targeted by JavaCPP version 1.4.4: DO NOT EDIT THIS FILE

package org.bytedeco.javacpp;

import java.nio.*;
import org.bytedeco.javacpp.*;
import org.bytedeco.javacpp.annotation.*;

public class FlyCapture2 extends org.bytedeco.javacpp.presets.FlyCapture2 {
    static { Loader.load(); }

// Parsed from 

//=============================================================================
// Copyright © 2017 FLIR Integrated Imaging Solutions, Inc. All Rights Reserved.
//
// This software is the confidential and proprietary information of FLIR
// Integrated Imaging Solutions, Inc. ("Confidential Information"). You
// shall not disclose such Confidential Information and shall use it only in
// accordance with the terms of the license agreement you entered into
// with FLIR Integrated Imaging Solutions, Inc. (FLIR).
//
// FLIR MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF THE
// SOFTWARE, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
// PURPOSE, OR NON-INFRINGEMENT. FLIR SHALL NOT BE LIABLE FOR ANY DAMAGES
// SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING
// THIS SOFTWARE OR ITS DERIVATIVES.
//=============================================================================

//=============================================================================
// $Id: FlyCapture2Platform.h 316355 2017-02-20 23:02:28Z alin $
//=============================================================================

// #ifndef PGR_FC2_FLYCAPTURE2PLATFORM_H
// #define PGR_FC2_FLYCAPTURE2PLATFORM_H

//=============================================================================
// Platform-specific header file for FlyCapture2.
//
// All the platform-specific code that is required by individual compilers
// to produce the appropriate code for each platform.
//=============================================================================

// #if defined(_WIN32) || defined(_WIN64)

// Windows 32-bit and 64-bit
// #ifdef FLYCAPTURE2_EXPORT
// #define FLYCAPTURE2_API __declspec( dllexport )
// #elif defined(FLYCAPTURE2_STATIC)
// #define FLYCAPTURE2_API
// #else
// #define FLYCAPTURE2_API __declspec( dllimport )
// #endif

// #if _MSC_VER > 1000
// #pragma once
// #endif

// Provide a common naming scheme for fixed-width integer types
// #ifdef _MSC_VER
// #if _MSC_VER >= 1600
// #include 
// #else
//typedef __int8				int8_t;
//typedef unsigned __int8		uint8_t;
// #endif
// #elif __GNUC__ >=3
// #include 
// #endif

// #elif defined(MAC_OSX)

// Mac OSX

// #else
// Linux and all others

// Using GCC 4 where hiding attributes is possible
// #define FLYCAPTURE2_API __attribute__ ((visibility ("default")))
// #define FLYCAPTURE2_LOCAL  __attribute__ ((visibility ("hidden")))

// #endif

// #endif // PGR_FC2_FLYCAPTURE2PLATFORM_H



// Parsed from 

//=============================================================================
// Copyright (c) 2001-2018 FLIR Systems, Inc. All Rights Reserved.
//
// This software is the confidential and proprietary information of FLIR
// Integrated Imaging Solutions, Inc. ("Confidential Information"). You
// shall not disclose such Confidential Information and shall use it only in
// accordance with the terms of the license agreement you entered into
// with FLIR Integrated Imaging Solutions, Inc. (FLIR).
//
// FLIR MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF THE
// SOFTWARE, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
// PURPOSE, OR NON-INFRINGEMENT. FLIR SHALL NOT BE LIABLE FOR ANY DAMAGES
// SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING
// THIS SOFTWARE OR ITS DERIVATIVES.
//=============================================================================

// #ifndef FLIR_FC2_FLYCAPTURE2DEFS_H
// #define FLIR_FC2_FLYCAPTURE2DEFS_H

// #include 

//=============================================================================
// Definitions file for FlyCapture2.
//
// Holds structures, enumerations and other global definitions that are used
// across the entire FlyCapture2 API.
//=============================================================================

// #ifndef NULL
public static final int NULL = 0;
// #endif

// #ifndef FULL_32BIT_VALUE
public static final int FULL_32BIT_VALUE = 0x7FFFFFFF;
// #endif
    /**
     * \defgroup GlobalConstants Global constants
     */

    /*@{*/

    /** The maximum length that is allocated for a string. */
    @Namespace("FlyCapture2") @MemberGetter public static native @Cast("const unsigned int") int sk_maxStringLength();
    public static final int sk_maxStringLength = sk_maxStringLength();

    /** The maximum number of ports one device can have. */
    @Namespace("FlyCapture2") @MemberGetter public static native @Cast("const unsigned int") int sk_maxNumPorts();
    public static final int sk_maxNumPorts = sk_maxNumPorts();

    /*@}*/

    /**
     * \defgroup Enumerations Enumerations
     */

    /*@{*/

    /** The error types returned by functions. */
    /** enum FlyCapture2::ErrorType */
    public static final int
        /** Undefined */
        PGRERROR_UNDEFINED = -1,
        /** Function returned with no errors. */
        PGRERROR_OK = 0,
        /** General failure. */
        PGRERROR_FAILED = 1,
        /** Function has not been implemented. */
        PGRERROR_NOT_IMPLEMENTED = 2,
        /** Could not connect to Bus Master. */
        PGRERROR_FAILED_BUS_MASTER_CONNECTION = 3,
        /** Camera has not been connected. */
        PGRERROR_NOT_CONNECTED = 4,
        /** Initialization failed. */
        PGRERROR_INIT_FAILED = 5,
        /** Camera has not been initialized. */
        PGRERROR_NOT_INTITIALIZED = 6,
        /** Invalid parameter passed to function. */
        PGRERROR_INVALID_PARAMETER = 7,
        /** Setting set to camera is invalid. */
        PGRERROR_INVALID_SETTINGS = 8,
        /** Invalid Bus Manager object. */
        PGRERROR_INVALID_BUS_MANAGER = 9,
        /** Could not allocate memory. */
        PGRERROR_MEMORY_ALLOCATION_FAILED = 10,
        /** Low level error. */
        PGRERROR_LOW_LEVEL_FAILURE = 11,
        /** Device not found. */
        PGRERROR_NOT_FOUND = 12,
        /** GUID failure. */
        PGRERROR_FAILED_GUID = 13,
        /** Packet size set to camera is invalid. */
        PGRERROR_INVALID_PACKET_SIZE = 14,
        /** Invalid mode has been passed to function. */
        PGRERROR_INVALID_MODE = 15,
        /** Error due to not being in Format7. */
        PGRERROR_NOT_IN_FORMAT7 = 16,
        /** This feature is unsupported. */
        PGRERROR_NOT_SUPPORTED = 17,
        /** Timeout error. */
        PGRERROR_TIMEOUT = 18,
        /** Bus Master Failure. */
        PGRERROR_BUS_MASTER_FAILED = 19,
        /** Generation Count Mismatch. */
        PGRERROR_INVALID_GENERATION = 20,
        /** Look Up Table failure. */
        PGRERROR_LUT_FAILED = 21,
        /** IIDC failure. */
        PGRERROR_IIDC_FAILED = 22,
        /** Strobe failure. */
        PGRERROR_STROBE_FAILED = 23,
        /** Trigger failure. */
        PGRERROR_TRIGGER_FAILED = 24,
        /** Property failure. */
        PGRERROR_PROPERTY_FAILED = 25,
        /** Property is not present. */
        PGRERROR_PROPERTY_NOT_PRESENT = 26,
        /** Register access failed. */
        PGRERROR_REGISTER_FAILED = 27,
        /** Register read failed. */
        PGRERROR_READ_REGISTER_FAILED = 28,
        /** Register write failed. */
        PGRERROR_WRITE_REGISTER_FAILED = 29,
        /** Isochronous failure. */
        PGRERROR_ISOCH_FAILED = 30,
        /** Isochronous transfer has already been started. */
        PGRERROR_ISOCH_ALREADY_STARTED = 31,
        /** Isochronous transfer has not been started. */
        PGRERROR_ISOCH_NOT_STARTED = 32,
        /** Isochronous start failed. */
        PGRERROR_ISOCH_START_FAILED = 33,
        /** Isochronous retrieve buffer failed. */
        PGRERROR_ISOCH_RETRIEVE_BUFFER_FAILED = 34,
        /** Isochronous stop failed. */
        PGRERROR_ISOCH_STOP_FAILED = 35,
        /** Isochronous image synchronization failed. */
        PGRERROR_ISOCH_SYNC_FAILED = 36,
        /** Isochronous bandwidth exceeded. */
        PGRERROR_ISOCH_BANDWIDTH_EXCEEDED = 37,
        /** Image conversion failed. */
        PGRERROR_IMAGE_CONVERSION_FAILED = 38,
        /** Image library failure. */
        PGRERROR_IMAGE_LIBRARY_FAILURE = 39,
        /** Buffer is too small. */
        PGRERROR_BUFFER_TOO_SMALL = 40,
        /** There is an image consistency error. */
        PGRERROR_IMAGE_CONSISTENCY_ERROR = 41,
        /** The installed driver is not compatible with the library. */
        PGRERROR_INCOMPATIBLE_DRIVER = 42,
        PGRERROR_FORCE_32BITS = FULL_32BIT_VALUE;

    /** The type of bus callback to register a callback function for. */
    /** enum FlyCapture2::BusCallbackType */
    public static final int
        /** Register for all bus events. */
        BUS_RESET = 0,
        /** Register for arrivals only. */
        ARRIVAL = 1,
        /** Register for removals only. */
        REMOVAL = 2,
        CALLBACK_TYPE_FORCE_32BITS = FULL_32BIT_VALUE;

    /**
     * The grab strategy employed during image transfer. This type controls
     * how images that stream off the camera accumulate in a user buffer
     * for handling.
     */
    /*
       @remark Unlike earlier versions of the FlyCapture SDK, it is no longer
     * necessary to explicitly start the image grabbing process before
     * specifying an image grabbing mode.
     */
    /** enum FlyCapture2::GrabMode */
    public static final int
        /**
         * Grabs the newest image in the user buffer each time the
         * RetrieveBuffer() function is called. Older images are dropped
         * instead of accumulating in the user buffer. Grabbing blocks if the
         * camera has not finished transmitting the next available image. If
         * the camera is transmitting images faster than the application can
         * grab them, images may be dropped and only the most recent image
         * is stored for grabbing. Note that this mode is the equivalent of
         * flycaptureLockLatest in earlier versions of the FlyCapture SDK.
         */
        DROP_FRAMES = 0,

        /**
         * Images accumulate in the user buffer, and the oldest image is
         * grabbed for handling before being discarded. This member can be
         * used to guarantee that each image is seen. However, image processing
         * time must not exceed transmission time from the camera to the
         * buffer. Grabbing blocks if the camera has not finished transmitting
         * the next available image. The buffer size is controlled by the
         * numBuffers parameter in the FC2Config struct. Note that this mode is
         * the equivalent of flycaptureLockNext in earlier versions of the
         * FlyCapture SDK.
         */
        BUFFER_FRAMES = 1,

        /**
         * Unspecified grab mode.
         */
        UNSPECIFIED_GRAB_MODE = 2,
        GRAB_MODE_FORCE_32BITS = FULL_32BIT_VALUE;

    /** Timeout options for grabbing images. */
    /** enum FlyCapture2::GrabTimeout */
    public static final int
        /**  Non-blocking wait. */
        TIMEOUT_NONE = 0,
        /**  Wait indefinitely. */
        TIMEOUT_INFINITE = -1,
        /** Unspecified timeout setting. */
        TIMEOUT_UNSPECIFIED = -2,
        GRAB_TIMEOUT_FORCE_32BITS = FULL_32BIT_VALUE;

    /** Bandwidth allocation options for 1394 devices. */
    /** enum FlyCapture2::BandwidthAllocation */
    public static final int
        /** Do not allocate bandwidth. */
        BANDWIDTH_ALLOCATION_OFF = 0,
        /** Allocate bandwidth. This is the default setting. */
        BANDWIDTH_ALLOCATION_ON = 1,
        /**
         * Bandwidth allocation is not supported by either the camera or
         * operating system.
         */
        BANDWIDTH_ALLOCATION_UNSUPPORTED = 2,
        /** Not specified. This leaves the current setting unchanged. */
        BANDWIDTH_ALLOCATION_UNSPECIFIED = 3,
        BANDWIDTH_ALLOCATION_FORCE_32BITS = FULL_32BIT_VALUE;

    /** Interfaces that a camera may use to communicate with a host. */
    /** enum FlyCapture2::InterfaceType */
    public static final int
        /** IEEE-1394 (Includes 1394a and 1394b). */
        INTERFACE_IEEE1394 = 0,
        /** USB 2.0. */
        INTERFACE_USB2 = 1,
        /** USB 3.0. */
        INTERFACE_USB3 = 2,
        /** GigE. */
        INTERFACE_GIGE = 3,
        /** Unknown interface. */
        INTERFACE_UNKNOWN = 4,
        INTERFACE_TYPE_FORCE_32BITS = FULL_32BIT_VALUE;

    /**
     * Camera properties. Not all properties may be supported, depending
     * on the camera model.
     */
    /** enum FlyCapture2::PropertyType */
    public static final int
        /** Brightness. */
        BRIGHTNESS = 0,
        /** Auto exposure. */
        AUTO_EXPOSURE = 1,
        /** Sharpness */
        SHARPNESS = 2,
        /** White balance. */
        WHITE_BALANCE = 3,
        /** Hue. */
        HUE = 4,
        /** Saturation. */
        SATURATION = 5,
        /** Gamma. */
        GAMMA = 6,
        /** Iris. */
        IRIS = 7,
        /** Focus. */
        FOCUS = 8,
        /** Zoom. */
        ZOOM = 9,
        /** Pan. */
        PAN = 10,
        /** Tilt. */
        TILT = 11,
        /** Shutter. */
        SHUTTER = 12,
        /** Gain. */
        GAIN = 13,
        /** Trigger mode. */
        TRIGGER_MODE = 14,
        /** Trigger delay. */
        TRIGGER_DELAY = 15,
        /** Frame rate. */
        FRAME_RATE = 16,
        /** Temperature. */
        TEMPERATURE = 17,
        /** Unspecified property type. */
        UNSPECIFIED_PROPERTY_TYPE = 18,
        PROPERTY_TYPE_FORCE_32BITS = FULL_32BIT_VALUE;

    /** Frame rates in frames per second. */
    /** enum FlyCapture2::FrameRate */
    public static final int
        /** 1.875 fps. */
        FRAMERATE_1_875 = 0,
        /** 3.75 fps. */
        FRAMERATE_3_75 = 1,
        /** 7.5 fps. */
        FRAMERATE_7_5 = 2,
        /** 15 fps. */
        FRAMERATE_15 = 3,
        /** 30 fps. */
        FRAMERATE_30 = 4,
        /** 60 fps. */
        FRAMERATE_60 = 5,
        /** 120 fps. */
        FRAMERATE_120 = 6,
        /** 240 fps. */
        FRAMERATE_240 = 7,
        /** Custom frame rate for Format7 functionality. */
        FRAMERATE_FORMAT7 = 8,
        /** Number of possible camera frame rates. */
        NUM_FRAMERATES = 9,
        FRAMERATE_FORCE_32BITS = FULL_32BIT_VALUE;

    /** DCAM video modes. */
    /** enum FlyCapture2::VideoMode */
    public static final int
        /** 160x120 YUV444. */
        VIDEOMODE_160x120YUV444 = 0,
        /** 320x240 YUV422. */
        VIDEOMODE_320x240YUV422 = 1,
        /** 640x480 YUV411. */
        VIDEOMODE_640x480YUV411 = 2,
        /** 640x480 YUV422. */
        VIDEOMODE_640x480YUV422 = 3,
        /** 640x480 24-bit RGB. */
        VIDEOMODE_640x480RGB = 4,
        /** 640x480 8-bit. */
        VIDEOMODE_640x480Y8 = 5,
        /** 640x480 16-bit. */
        VIDEOMODE_640x480Y16 = 6,
        /** 800x600 YUV422. */
        VIDEOMODE_800x600YUV422 = 7,
        /** 800x600 RGB. */
        VIDEOMODE_800x600RGB = 8,
        /** 800x600 8-bit. */
        VIDEOMODE_800x600Y8 = 9,
        /** 800x600 16-bit. */
        VIDEOMODE_800x600Y16 = 10,
        /** 1024x768 YUV422. */
        VIDEOMODE_1024x768YUV422 = 11,
        /** 1024x768 RGB. */
        VIDEOMODE_1024x768RGB = 12,
        /** 1024x768 8-bit. */
        VIDEOMODE_1024x768Y8 = 13,
        /** 1024x768 16-bit. */
        VIDEOMODE_1024x768Y16 = 14,
        /** 1280x960 YUV422. */
        VIDEOMODE_1280x960YUV422 = 15,
        /** 1280x960 RGB. */
        VIDEOMODE_1280x960RGB = 16,
        /** 1280x960 8-bit. */
        VIDEOMODE_1280x960Y8 = 17,
        /** 1280x960 16-bit. */
        VIDEOMODE_1280x960Y16 = 18,
        /** 1600x1200 YUV422. */
        VIDEOMODE_1600x1200YUV422 = 19,
        /** 1600x1200 RGB. */
        VIDEOMODE_1600x1200RGB = 20,
        /** 1600x1200 8-bit. */
        VIDEOMODE_1600x1200Y8 = 21,
        /** 1600x1200 16-bit. */
        VIDEOMODE_1600x1200Y16 = 22,
        /** Custom video mode for Format7 functionality. */
        VIDEOMODE_FORMAT7 = 23,
        /** Number of possible video modes. */
        NUM_VIDEOMODES = 24,
        VIDEOMODE_FORCE_32BITS = FULL_32BIT_VALUE;

    /** Camera modes for DCAM formats as well as Format7. */
    /** enum FlyCapture2::Mode */
    public static final int
        MODE_0 = 0,
        MODE_1 = 1,
        MODE_2 = 2,
        MODE_3 = 3,
        MODE_4 = 4,
        MODE_5 = 5,
        MODE_6 = 6,
        MODE_7 = 7,
        MODE_8 = 8,
        MODE_9 = 9,
        MODE_10 = 10,
        MODE_11 = 11,
        MODE_12 = 12,
        MODE_13 = 13,
        MODE_14 = 14,
        MODE_15 = 15,
        MODE_16 = 16,
        MODE_17 = 17,
        MODE_18 = 18,
        MODE_19 = 19,
        MODE_20 = 20,
        MODE_21 = 21,
        MODE_22 = 22,
        MODE_23 = 23,
        MODE_24 = 24,
        MODE_25 = 25,
        MODE_26 = 26,
        MODE_27 = 27,
        MODE_28 = 28,
        MODE_29 = 29,
        MODE_30 = 30,
        MODE_31 = 31,
        /** Number of modes */
        NUM_MODES = 32,
        MODE_FORCE_32BITS = FULL_32BIT_VALUE;

    /** Pixel formats available for Format7 modes. */
    /** enum FlyCapture2::PixelFormat */
    public static final int
        /** 8 bits of mono information. */
        PIXEL_FORMAT_MONO8     = 0x80000000,
        /** YUV 4:1:1. */
        PIXEL_FORMAT_411YUV8   = 0x40000000,
        /** YUV 4:2:2. */
        PIXEL_FORMAT_422YUV8   = 0x20000000,
        /** YUV 4:4:4. */
        PIXEL_FORMAT_444YUV8   = 0x10000000,
        /** R = G = B = 8 bits. */
        PIXEL_FORMAT_RGB8      = 0x08000000,
        /** 16 bits of mono information. */
        PIXEL_FORMAT_MONO16    = 0x04000000,
        /** R = G = B = 16 bits. */
        PIXEL_FORMAT_RGB16     = 0x02000000,
        /** 16 bits of signed mono information. */
        PIXEL_FORMAT_S_MONO16  = 0x01000000,
        /** R = G = B = 16 bits signed. */
        PIXEL_FORMAT_S_RGB16   = 0x00800000,
        /** 8 bit raw data output of sensor. */
        PIXEL_FORMAT_RAW8      = 0x00400000,
        /** 16 bit raw data output of sensor. */
        PIXEL_FORMAT_RAW16     = 0x00200000,
        /** 12 bits of mono information. */
        PIXEL_FORMAT_MONO12    = 0x00100000,
        /** 12 bit raw data output of sensor. */
        PIXEL_FORMAT_RAW12     = 0x00080000,
        /** 24 bit BGR. */
        PIXEL_FORMAT_BGR       = 0x80000008,
        /** 32 bit BGRU. */
        PIXEL_FORMAT_BGRU      = 0x40000008,
        /** 24 bit RGB. */
        PIXEL_FORMAT_RGB       = PIXEL_FORMAT_RGB8,
        /** 32 bit RGBU. */
        PIXEL_FORMAT_RGBU      = 0x40000002,
        /** R = G = B = 16 bits. */
        PIXEL_FORMAT_BGR16     = 0x02000001,
        /** 64 bit BGRU. */
        PIXEL_FORMAT_BGRU16    = 0x02000002,
        /** JPEG compressed stream. */
        PIXEL_FORMAT_422YUV8_JPEG      = 0x40000001,
        /** Number of pixel formats. */
        NUM_PIXEL_FORMATS      = 20,
        /** Unspecified pixel format. */
        UNSPECIFIED_PIXEL_FORMAT = 0;

    /** Bus speeds. */
    /** enum FlyCapture2::BusSpeed */
    public static final int
        /** 100Mbits/sec. */
        BUSSPEED_S100 = 0,
        /** 200Mbits/sec. */
        BUSSPEED_S200 = 1,
        /** 400Mbits/sec. */
        BUSSPEED_S400 = 2,
        /** 480Mbits/sec. Only for USB2 cameras. */
        BUSSPEED_S480 = 3,
        /** 800Mbits/sec. */
        BUSSPEED_S800 = 4,
        /** 1600Mbits/sec. */
        BUSSPEED_S1600 = 5,
        /** 3200Mbits/sec. */
        BUSSPEED_S3200 = 6,
        /** 5000Mbits/sec. Only for USB3 cameras. */
        BUSSPEED_S5000 = 7,
        /** 10Base-T. Only for GigE Vision cameras. */
        BUSSPEED_10BASE_T = 8,
        /** 100Base-T.  Only for GigE Vision cameras.*/
        BUSSPEED_100BASE_T = 9,
        /** 1000Base-T (Gigabit Ethernet).  Only for GigE Vision cameras. */
        BUSSPEED_1000BASE_T = 10,
        /** 10000Base-T.  Only for GigE Vision cameras. */
        BUSSPEED_10000BASE_T = 11,
        /** The fastest speed available. */
        BUSSPEED_S_FASTEST = 12,
        /** Any speed that is available. */
        BUSSPEED_ANY = 13,
        /** Unknown bus speed. */
        BUSSPEED_SPEED_UNKNOWN = -1,
        BUSSPEED_FORCE_32BITS = FULL_32BIT_VALUE;

    /** enum FlyCapture2::PCIeBusSpeed */
    public static final int
        PCIE_BUSSPEED_2_5 = 0, /** 2.5 Gb/s */
        PCIE_BUSSPEED_5_0 = 1, /** 5.0 Gb/s */
        PCIE_BUSSPEED_UNKNOWN = -1, /** Speed is unknown */
        PCIE_BUSSPEED_FORCE_32BITS = FULL_32BIT_VALUE;

    /** Types of low level drivers that flycapture uses. */
    /** enum FlyCapture2::DriverType */
    public static final int
        /** PGRCam.sys. */
        DRIVER_1394_CAM = 0,
        /** PGR1394.sys. */
        DRIVER_1394_PRO = 1,
        /** firewire_core. */
        DRIVER_1394_JUJU = 2,
        /** video1394. */
        DRIVER_1394_VIDEO1394 = 3,
        /** raw1394. */
        DRIVER_1394_RAW1394 = 4,
        /** No usb driver used just BSD stack. (Linux only) */
        DRIVER_USB_NONE = 5,
        /** PGRUsbCam.sys. */
        DRIVER_USB_CAM = 6,
        /** PGRXHCI.sys. */
        DRIVER_USB3_PRO = 7,
        /** no gige drivers used,MS/BSD stack. */
        DRIVER_GIGE_NONE = 8,
        /** PGRGigE.sys. */
        DRIVER_GIGE_FILTER = 9,
        /** PGRGigEPro.sys. */
        DRIVER_GIGE_PRO = 10,
        /** PgrLwf.sys. */
        DRIVER_GIGE_LWF = 11,
        /** Unknown driver type. */
        DRIVER_UNKNOWN = -1,
        DRIVER_FORCE_32BITS = FULL_32BIT_VALUE;

    /**
     * Color processing algorithms. Please refer to our knowledge base at
     * article at http://www.ptgrey.com/support/kb/index.asp?a=4&q=33 for
     * complete details for each algorithm.
     */
    /** enum FlyCapture2::ColorProcessingAlgorithm */
    public static final int
        /** Default method. */
        DEFAULT = 0,
        /** No color processing. */
        NO_COLOR_PROCESSING = 1,
        /**
         * Fastest but lowest quality. Equivalent to
         * FLYCAPTURE_NEAREST_NEIGHBOR_FAST in FlyCapture.
         */
        NEAREST_NEIGHBOR = 2,
        /** Weights surrounding pixels based on localized edge orientation. */
        EDGE_SENSING = 3,
        /** Well-balanced speed and quality. */
        HQ_LINEAR = 4,
        /** Slowest but produces good results. */
        RIGOROUS = 5,
        /** Multithreaded with similar results to edge sensing. */
        IPP = 6,
        /** Best quality but much faster than rigorous. */
        DIRECTIONAL_FILTER = 7,
        /** Weighted pixel average from different directions*/
        WEIGHTED_DIRECTIONAL_FILTER = 8,

        COLOR_PROCESSING_ALGORITHM_FORCE_32BITS = FULL_32BIT_VALUE;

    /** Bayer tile formats. */
    /** enum FlyCapture2::BayerTileFormat */
    public static final int
        /** No bayer tile format. */
        NONE = 0,
        /** Red-Green-Green-Blue. */
        RGGB = 1,
        /** Green-Red-Blue-Green. */
        GRBG = 2,
        /** Green-Blue-Red-Green. */
        GBRG = 3,
        /** Blue-Green-Green-Red. */
        BGGR = 4,
        BT_FORCE_32BITS = FULL_32BIT_VALUE;

    /** File formats to be used for saving images to disk. */
    /** enum FlyCapture2::ImageFileFormat */
    public static final int
        /** Determine file format from file extension. */
        FROM_FILE_EXT = -1,
        /** Portable gray map. */
        PGM = 0,
        /** Portable pixmap. */
        PPM = 1,
        /** Bitmap. */
        BMP = 2,
        /** JPEG. */
        JPEG = 3,
        /** JPEG 2000. */
        JPEG2000 = 4,
        /** Tagged image file format. */
        TIFF = 5,
        /** Portable network graphics. */
        PNG = 6,
        /** Raw data. */
        RAW = 7,
        IMAGE_FILE_FORMAT_FORCE_32BITS = FULL_32BIT_VALUE;

    /*@}*/

    /**
     * \defgroup GigEEnums GigE specific enumerations
     *
     * These enumerations are specific to GigE camera operation only.
     */

    /*@{*/

    /** Possible properties that can be queried from the camera. */
    /** enum FlyCapture2::GigEPropertyType */
    public static final int
        HEARTBEAT = 0,
        HEARTBEAT_TIMEOUT = 1,
        PACKET_SIZE = 2,
        PACKET_DELAY = 3;

    /*@}*/

    /**
     * \defgroup Structures Structures
     */

    /*@{*/

    /** The current version of the library. */
    @Namespace("FlyCapture2") public static class FC2Version extends Pointer {
        static { Loader.load(); }
        /** Default native constructor. */
        public FC2Version() { super((Pointer)null); allocate(); }
        /** Native array allocator. Access with {@link Pointer#position(long)}. */
        public FC2Version(long size) { super((Pointer)null); allocateArray(size); }
        /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */
        public FC2Version(Pointer p) { super(p); }
        private native void allocate();
        private native void allocateArray(long size);
        @Override public FC2Version position(long position) {
            return (FC2Version)super.position(position);
        }
    
        /** Major version number. */
        public native @Cast("unsigned int") int major(); public native FC2Version major(int major);
        /** Minor version number. */
        public native @Cast("unsigned int") int minor(); public native FC2Version minor(int minor);
        /** Type version number. */
        public native @Cast("unsigned int") int type(); public native FC2Version type(int type);
        /** Build version number. */
        public native @Cast("unsigned int") int build(); public native FC2Version build(int build);
    }

    /** A GUID to the camera.  It is used to uniquely identify a camera. */
    @Namespace("FlyCapture2") @NoOffset public static class PGRGuid extends Pointer {
        static { Loader.load(); }
        /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */
        public PGRGuid(Pointer p) { super(p); }
        /** Native array allocator. Access with {@link Pointer#position(long)}. */
        public PGRGuid(long size) { super((Pointer)null); allocateArray(size); }
        private native void allocateArray(long size);
        @Override public PGRGuid position(long position) {
            return (PGRGuid)super.position(position);
        }
    
            public native @Cast("unsigned int") int value(int i); public native PGRGuid value(int i, int value);
            @MemberGetter public native @Cast("unsigned int*") IntPointer value();

            /** Constructor. */
            public PGRGuid() { super((Pointer)null); allocate(); }
            private native void allocate();

            /** Equality operator. */
            public native @Cast("bool") @Name("operator ==") boolean equals( @Const @ByRef PGRGuid guid );

            /** Inequality operator. */
            public native @Cast("bool") @Name("operator !=") boolean notEquals( @Const @ByRef PGRGuid guid );
    }

    /**
     * \defgroup GigEStructures GigE specific structures
     *
     * These structures are specific to GigE camera operation only.
     */

    /*@{*/

    /** IPv4 address. */
    @Namespace("FlyCapture2") @NoOffset public static class IPAddress extends Pointer {
        static { Loader.load(); }
        /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */
        public IPAddress(Pointer p) { super(p); }
        /** Native array allocator. Access with {@link Pointer#position(long)}. */
        public IPAddress(long size) { super((Pointer)null); allocateArray(size); }
        private native void allocateArray(long size);
        @Override public IPAddress position(long position) {
            return (IPAddress)super.position(position);
        }
    
        public native @Cast("unsigned char") byte octets(int i); public native IPAddress octets(int i, byte octets);
        @MemberGetter public native @Cast("unsigned char*") BytePointer octets();

        public IPAddress() { super((Pointer)null); allocate(); }
        private native void allocate();

        public IPAddress( @Cast("unsigned int") int ipAddressVal ) { super((Pointer)null); allocate(ipAddressVal); }
        private native void allocate( @Cast("unsigned int") int ipAddressVal );

        /** Equality operator. */
        public native @Cast("bool") @Name("operator ==") boolean equals( @Const @ByRef IPAddress address );

        /** Inequality operator. */
        public native @Cast("bool") @Name("operator !=") boolean notEquals( @Const @ByRef IPAddress address );
    }

    /** MAC address. */
    @Namespace("FlyCapture2") @NoOffset public static class MACAddress extends Pointer {
        static { Loader.load(); }
        /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */
        public MACAddress(Pointer p) { super(p); }
        /** Native array allocator. Access with {@link Pointer#position(long)}. */
        public MACAddress(long size) { super((Pointer)null); allocateArray(size); }
        private native void allocateArray(long size);
        @Override public MACAddress position(long position) {
            return (MACAddress)super.position(position);
        }
    
        public native @Cast("unsigned char") byte octets(int i); public native MACAddress octets(int i, byte octets);
        @MemberGetter public native @Cast("unsigned char*") BytePointer octets();

        public MACAddress() { super((Pointer)null); allocate(); }
        private native void allocate();

        public MACAddress( @Cast("unsigned int") int macAddressValHigh, @Cast("unsigned int") int macAddressValLow ) { super((Pointer)null); allocate(macAddressValHigh, macAddressValLow); }
        private native void allocate( @Cast("unsigned int") int macAddressValHigh, @Cast("unsigned int") int macAddressValLow );

        /** Equality operator. */
        public native @Cast("bool") @Name("operator ==") boolean equals( @Const @ByRef MACAddress address );

        /** Inequality operator. */
        public native @Cast("bool") @Name("operator !=") boolean notEquals( @Const @ByRef MACAddress address );
    }

    /** A GigE property. */
    @Namespace("FlyCapture2") public static class GigEProperty extends Pointer {
        static { Loader.load(); }
        /** Default native constructor. */
        public GigEProperty() { super((Pointer)null); allocate(); }
        /** Native array allocator. Access with {@link Pointer#position(long)}. */
        public GigEProperty(long size) { super((Pointer)null); allocateArray(size); }
        /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */
        public GigEProperty(Pointer p) { super(p); }
        private native void allocate();
        private native void allocateArray(long size);
        @Override public GigEProperty position(long position) {
            return (GigEProperty)super.position(position);
        }
    
        /** The type of property. */
        public native @Cast("FlyCapture2::GigEPropertyType") int propType(); public native GigEProperty propType(int propType);
        /**
         * Whether the property is readable. If this is false, then
         * no other value in this structure is valid.
         */
        public native @Cast("bool") boolean isReadable(); public native GigEProperty isReadable(boolean isReadable);
        /** Whether the property is writable. */
        public native @Cast("bool") boolean isWritable(); public native GigEProperty isWritable(boolean isWritable);
        /** Minimum value. */
        public native @Cast("unsigned int") int min(); public native GigEProperty min(int min);
        /** Maximum value. */
        public native @Cast("unsigned int") int max(); public native GigEProperty max(int max);
        /** Current value. */
        public native @Cast("unsigned int") int value(); public native GigEProperty value(int value);
    }

    /** Information about a single GigE stream channel. */
    @Namespace("FlyCapture2") @NoOffset public static class GigEStreamChannel extends Pointer {
        static { Loader.load(); }
        /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */
        public GigEStreamChannel(Pointer p) { super(p); }
        /** Native array allocator. Access with {@link Pointer#position(long)}. */
        public GigEStreamChannel(long size) { super((Pointer)null); allocateArray(size); }
        private native void allocateArray(long size);
        @Override public GigEStreamChannel position(long position) {
            return (GigEStreamChannel)super.position(position);
        }
    
        /** Network interface index used (or to use). */
        public native @Cast("unsigned int") int networkInterfaceIndex(); public native GigEStreamChannel networkInterfaceIndex(int networkInterfaceIndex);
        /** Host port on the PC where the camera will send the data stream. */
        public native @Cast("unsigned int") int hostPort(); public native GigEStreamChannel hostPort(int hostPort);
        /** Disable IP fragmentation of packets. */
        public native @Cast("bool") boolean doNotFragment(); public native GigEStreamChannel doNotFragment(boolean doNotFragment);
        /** Packet size, in bytes. */
        public native @Cast("unsigned int") int packetSize(); public native GigEStreamChannel packetSize(int packetSize);
        /** Inter packet delay, in timestamp counter units. */
        public native @Cast("unsigned int") int interPacketDelay(); public native GigEStreamChannel interPacketDelay(int interPacketDelay);
        /** Destination IP address. It can be a multicast or unicast address. */
        public native @ByRef IPAddress destinationIpAddress(); public native GigEStreamChannel destinationIpAddress(IPAddress destinationIpAddress);
        /** Source UDP port of the stream channel. Read only. */
        public native @Cast("unsigned int") int sourcePort(); public native GigEStreamChannel sourcePort(int sourcePort);

        public GigEStreamChannel() { super((Pointer)null); allocate(); }
        private native void allocate();
    }

    /**
     * Configuration for a GigE camera.  These options are options that are
     * generally should be set before starting isochronous transfer.
     */
    @Namespace("FlyCapture2") @NoOffset public static class GigEConfig extends Pointer {
        static { Loader.load(); }
        /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */
        public GigEConfig(Pointer p) { super(p); }
        /** Native array allocator. Access with {@link Pointer#position(long)}. */
        public GigEConfig(long size) { super((Pointer)null); allocateArray(size); }
        private native void allocateArray(long size);
        @Override public GigEConfig position(long position) {
            return (GigEConfig)super.position(position);
        }
    
        /** Turn on/off packet resend functionality */
        public native @Cast("bool") boolean enablePacketResend(); public native GigEConfig enablePacketResend(boolean enablePacketResend);

        /**
         * Number of retries to perform when a register read/write timeout
         * is received by the library. The default value is 0.
         */
        public native @Cast("unsigned int") int registerTimeoutRetries(); public native GigEConfig registerTimeoutRetries(int registerTimeoutRetries);

        /**
         * Register read/write timeout value, in microseconds.
         * The default value is dependent on the interface type.
         */
        public native @Cast("unsigned int") int registerTimeout(); public native GigEConfig registerTimeout(int registerTimeout);

        public GigEConfig() { super((Pointer)null); allocate(); }
        private native void allocate();
    }

    /** Format 7 information for a single mode. */
    @Namespace("FlyCapture2") @NoOffset public static class GigEImageSettingsInfo extends Pointer {
        static { Loader.load(); }
        /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */
        public GigEImageSettingsInfo(Pointer p) { super(p); }
        /** Native array allocator. Access with {@link Pointer#position(long)}. */
        public GigEImageSettingsInfo(long size) { super((Pointer)null); allocateArray(size); }
        private native void allocateArray(long size);
        @Override public GigEImageSettingsInfo position(long position) {
            return (GigEImageSettingsInfo)super.position(position);
        }
    
        /** Maximum image width. */
        public native @Cast("unsigned int") int maxWidth(); public native GigEImageSettingsInfo maxWidth(int maxWidth);
        /** Maximum image height. */
        public native @Cast("unsigned int") int maxHeight(); public native GigEImageSettingsInfo maxHeight(int maxHeight);
        /** Horizontal step size for the offset. */
        public native @Cast("unsigned int") int offsetHStepSize(); public native GigEImageSettingsInfo offsetHStepSize(int offsetHStepSize);
        /** Vertical step size for the offset. */
        public native @Cast("unsigned int") int offsetVStepSize(); public native GigEImageSettingsInfo offsetVStepSize(int offsetVStepSize);
        /** Horizontal step size for the image. */
        public native @Cast("unsigned int") int imageHStepSize(); public native GigEImageSettingsInfo imageHStepSize(int imageHStepSize);
        /** Vertical step size for the image. */
        public native @Cast("unsigned int") int imageVStepSize(); public native GigEImageSettingsInfo imageVStepSize(int imageVStepSize);
        /** Supported pixel formats in a bit field. */
        public native @Cast("unsigned int") int pixelFormatBitField(); public native GigEImageSettingsInfo pixelFormatBitField(int pixelFormatBitField);
        /** Vendor unique pixel formats in a bit field. */
        public native @Cast("unsigned int") int vendorPixelFormatBitField(); public native GigEImageSettingsInfo vendorPixelFormatBitField(int vendorPixelFormatBitField);
        /** Reserved for future use. */
        public native @Cast("unsigned int") int reserved(int i); public native GigEImageSettingsInfo reserved(int i, int reserved);
        @MemberGetter public native @Cast("unsigned int*") IntPointer reserved();

        public GigEImageSettingsInfo() { super((Pointer)null); allocate(); }
        private native void allocate();
    }

    /** Image settings for a GigE camera. */
    @Namespace("FlyCapture2") @NoOffset public static class GigEImageSettings extends Pointer {
        static { Loader.load(); }
        /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */
        public GigEImageSettings(Pointer p) { super(p); }
        /** Native array allocator. Access with {@link Pointer#position(long)}. */
        public GigEImageSettings(long size) { super((Pointer)null); allocateArray(size); }
        private native void allocateArray(long size);
        @Override public GigEImageSettings position(long position) {
            return (GigEImageSettings)super.position(position);
        }
    
        /** Horizontal image offset. */
        public native @Cast("unsigned int") int offsetX(); public native GigEImageSettings offsetX(int offsetX);
        /** Vertical image offset. */
        public native @Cast("unsigned int") int offsetY(); public native GigEImageSettings offsetY(int offsetY);
        /** Width of image. */
        public native @Cast("unsigned int") int width(); public native GigEImageSettings width(int width);
        /** Height of image. */
        public native @Cast("unsigned int") int height(); public native GigEImageSettings height(int height);
        /** Pixel format of image. */
        public native @Cast("FlyCapture2::PixelFormat") int pixelFormat(); public native GigEImageSettings pixelFormat(int pixelFormat);
        /** Reserved for future use. */
        public native @Cast("unsigned int") int reserved(int i); public native GigEImageSettings reserved(int i, int reserved);
        @MemberGetter public native @Cast("unsigned int*") IntPointer reserved();

        public GigEImageSettings() { super((Pointer)null); allocate(); }
        private native void allocate();
    }

    /*@}*/

    /**
     * \defgroup IIDCStructures IIDC specific structures
     *
     * These structures are specific to IIDC camera operation only.
     */

    /*@{*/

    /** Format 7 image settings. */
    @Namespace("FlyCapture2") @NoOffset public static class Format7ImageSettings extends Pointer {
        static { Loader.load(); }
        /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */
        public Format7ImageSettings(Pointer p) { super(p); }
        /** Native array allocator. Access with {@link Pointer#position(long)}. */
        public Format7ImageSettings(long size) { super((Pointer)null); allocateArray(size); }
        private native void allocateArray(long size);
        @Override public Format7ImageSettings position(long position) {
            return (Format7ImageSettings)super.position(position);
        }
    
        /** Format 7 mode. */
        public native @Cast("FlyCapture2::Mode") int mode(); public native Format7ImageSettings mode(int mode);
        /** Horizontal image offset. */
        public native @Cast("unsigned int") int offsetX(); public native Format7ImageSettings offsetX(int offsetX);
        /** Vertical image offset. */
        public native @Cast("unsigned int") int offsetY(); public native Format7ImageSettings offsetY(int offsetY);
        /** Width of image. */
        public native @Cast("unsigned int") int width(); public native Format7ImageSettings width(int width);
        /** Height of image. */
        public native @Cast("unsigned int") int height(); public native Format7ImageSettings height(int height);
        /** Pixel format of image. */
        public native @Cast("FlyCapture2::PixelFormat") int pixelFormat(); public native Format7ImageSettings pixelFormat(int pixelFormat);
        /** Reserved for future use. */
        public native @Cast("unsigned int") int reserved(int i); public native Format7ImageSettings reserved(int i, int reserved);
        @MemberGetter public native @Cast("unsigned int*") IntPointer reserved();

        public Format7ImageSettings() { super((Pointer)null); allocate(); }
        private native void allocate();
    }

    /** Format 7 information for a single mode. */
    @Namespace("FlyCapture2") @NoOffset public static class Format7Info extends Pointer {
        static { Loader.load(); }
        /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */
        public Format7Info(Pointer p) { super(p); }
        /** Native array allocator. Access with {@link Pointer#position(long)}. */
        public Format7Info(long size) { super((Pointer)null); allocateArray(size); }
        private native void allocateArray(long size);
        @Override public Format7Info position(long position) {
            return (Format7Info)super.position(position);
        }
    
        /** Format 7 mode. */
        public native @Cast("FlyCapture2::Mode") int mode(); public native Format7Info mode(int mode);

        /** Maximum image width. */
        public native @Cast("unsigned int") int maxWidth(); public native Format7Info maxWidth(int maxWidth);
        /** Maximum image height. */
        public native @Cast("unsigned int") int maxHeight(); public native Format7Info maxHeight(int maxHeight);
        /** Horizontal step size for the offset. */
        public native @Cast("unsigned int") int offsetHStepSize(); public native Format7Info offsetHStepSize(int offsetHStepSize);
        /** Vertical step size for the offset. */
        public native @Cast("unsigned int") int offsetVStepSize(); public native Format7Info offsetVStepSize(int offsetVStepSize);
        /** Horizontal step size for the image. */
        public native @Cast("unsigned int") int imageHStepSize(); public native Format7Info imageHStepSize(int imageHStepSize);
        /** Vertical step size for the image. */
        public native @Cast("unsigned int") int imageVStepSize(); public native Format7Info imageVStepSize(int imageVStepSize);
        /** Supported pixel formats in a bit field. */
        public native @Cast("unsigned int") int pixelFormatBitField(); public native Format7Info pixelFormatBitField(int pixelFormatBitField);
        /** Vendor unique pixel formats in a bit field. */
        public native @Cast("unsigned int") int vendorPixelFormatBitField(); public native Format7Info vendorPixelFormatBitField(int vendorPixelFormatBitField);

        /** Current packet size in bytes. */
        public native @Cast("unsigned int") int packetSize(); public native Format7Info packetSize(int packetSize);
        /** Minimum packet size in bytes for current mode. */
        public native @Cast("unsigned int") int minPacketSize(); public native Format7Info minPacketSize(int minPacketSize);
        /** Maximum packet size in bytes for current mode. */
        public native @Cast("unsigned int") int maxPacketSize(); public native Format7Info maxPacketSize(int maxPacketSize);
        /** Current packet size as a percentage of maximum packet size. */
        public native float percentage(); public native Format7Info percentage(float percentage);
        /** Reserved for future use. */
        public native @Cast("unsigned int") int reserved(int i); public native Format7Info reserved(int i, int reserved);
        @MemberGetter public native @Cast("unsigned int*") IntPointer reserved();

        public Format7Info() { super((Pointer)null); allocate(); }
        private native void allocate();
    }

    /** Format 7 packet information. */
    @Namespace("FlyCapture2") @NoOffset public static class Format7PacketInfo extends Pointer {
        static { Loader.load(); }
        /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */
        public Format7PacketInfo(Pointer p) { super(p); }
        /** Native array allocator. Access with {@link Pointer#position(long)}. */
        public Format7PacketInfo(long size) { super((Pointer)null); allocateArray(size); }
        private native void allocateArray(long size);
        @Override public Format7PacketInfo position(long position) {
            return (Format7PacketInfo)super.position(position);
        }
    
        /** Recommended bytes per packet. */
        public native @Cast("unsigned int") int recommendedBytesPerPacket(); public native Format7PacketInfo recommendedBytesPerPacket(int recommendedBytesPerPacket);
        /** Maximum bytes per packet. */
        public native @Cast("unsigned int") int maxBytesPerPacket(); public native Format7PacketInfo maxBytesPerPacket(int maxBytesPerPacket);
        /** Minimum bytes per packet. */
        public native @Cast("unsigned int") int unitBytesPerPacket(); public native Format7PacketInfo unitBytesPerPacket(int unitBytesPerPacket);
        /** Reserved for future use. */
        public native @Cast("unsigned int") int reserved(int i); public native Format7PacketInfo reserved(int i, int reserved);
        @MemberGetter public native @Cast("unsigned int*") IntPointer reserved();

        public Format7PacketInfo() { super((Pointer)null); allocate(); }
        private native void allocate();
    }

    /*@}*/

    /**
     * Configuration for a camera. These options are options that are
     * generally should be set before starting isochronous transfer.
     */
    @Namespace("FlyCapture2") @NoOffset public static class FC2Config extends Pointer {
        static { Loader.load(); }
        /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */
        public FC2Config(Pointer p) { super(p); }
        /** Native array allocator. Access with {@link Pointer#position(long)}. */
        public FC2Config(long size) { super((Pointer)null); allocateArray(size); }
        private native void allocateArray(long size);
        @Override public FC2Config position(long position) {
            return (FC2Config)super.position(position);
        }
    
        /** Number of buffers used by the FlyCapture2 library to grab images. */
        public native @Cast("unsigned int") int numBuffers(); public native FC2Config numBuffers(int numBuffers);

        /**
         * Number of notifications per image. This value should only be set
         * after the image settings to be used is set to the camera.
         * The default number of notifications is 1.
         *
         * There are 4 general scenarios:
         * - 1 notification - End of image
         * - 2 notifications - After first packet and end of image
         * - 3 notifications - After first packet, middle of image, end of image
         * - x notifications - After first packet, (x -2) spread evenly, end of image
         *
         * Specifying zero for the number of notifications will be ignored (the current value
         * will not be modified).
         *
         * Note that the event numbers start at 0. Ex. when 3 notifications are
         * used, the three events will be 0, 1 and 2.
         */
        public native @Cast("unsigned int") int numImageNotifications(); public native FC2Config numImageNotifications(int numImageNotifications);

        /**
         *  Minimum number of notifications needed for the current image
         *  settings on the camera. Read-only value.
         */
        public native @Cast("unsigned int") int minNumImageNotifications(); public native FC2Config minNumImageNotifications(int minNumImageNotifications);

        /**
         * Time in milliseconds that RetrieveBuffer() and WaitForBufferEvent()
         * will wait for an image before timing out and returning.
         */
        public native int grabTimeout(); public native FC2Config grabTimeout(int grabTimeout);

        /** Grab mode for the camera. The default is DROP_FRAMES. */
        public native @Cast("FlyCapture2::GrabMode") int grabMode(); public native FC2Config grabMode(int grabMode);

        /** This parameter enables RetrieveBuffer to run in high
         *  performance mode.  This means that any interaction
         *  with the camera, other then grabbing the image is disabled.
         *  Currently Retrieve buffer reads registers on the camera to
         *  determine which embedded image information settings have been
         *  enabled, and it reads what the bayer tile is currently set to.
         *  When High Performance mode is on, these reads are disabled.  This
         *  means that any changes to the Bayer Tile or to the Embedded image
         *  info after StartCapture() will not be tracked when made using
         *  direct register writes.  If the corresponding SetEmbededImageInfo()
         *  and GetEmbededImageInfo() calls are used then the changes will be
         *  appropriately reflected.  This also means that changes to embedded
         *  image info from other processes will not be updated either.*/
        public native @Cast("bool") boolean highPerformanceRetrieveBuffer(); public native FC2Config highPerformanceRetrieveBuffer(boolean highPerformanceRetrieveBuffer);

        /** Isochronous bus speed. */
        public native @Cast("FlyCapture2::BusSpeed") int isochBusSpeed(); public native FC2Config isochBusSpeed(int isochBusSpeed);

        /** Asynchronous bus speed. */
        public native @Cast("FlyCapture2::BusSpeed") int asyncBusSpeed(); public native FC2Config asyncBusSpeed(int asyncBusSpeed);

        /**
         * Bandwidth allocation flag that tells the camera the bandwidth
         * allocation strategy to employ.
         */
        public native @Cast("FlyCapture2::BandwidthAllocation") int bandwidthAllocation(); public native FC2Config bandwidthAllocation(int bandwidthAllocation);

        /**
         * Number of retries to perform when a register read/write timeout
         * is received by the library. The default value is 0.
         */
        public native @Cast("unsigned int") int registerTimeoutRetries(); public native FC2Config registerTimeoutRetries(int registerTimeoutRetries);

        /**
         * Register read/write timeout value, in microseconds.
         * The default value is dependent on the interface type.
         */
        public native @Cast("unsigned int") int registerTimeout(); public native FC2Config registerTimeout(int registerTimeout);

        /** Reserved for future use */
        public native @Cast("unsigned int") int reserved(int i); public native FC2Config reserved(int i, int reserved);
        @MemberGetter public native @Cast("unsigned int*") IntPointer reserved();

        public FC2Config() { super((Pointer)null); allocate(); }
        private native void allocate();
    }

    /**
     * Information about a specific camera property. This structure is also
     * also used as the TriggerDelayInfo structure.
     */
    @Namespace("FlyCapture2") @NoOffset public static class PropertyInfo extends Pointer {
        static { Loader.load(); }
        /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */
        public PropertyInfo(Pointer p) { super(p); }
        /** Native array allocator. Access with {@link Pointer#position(long)}. */
        public PropertyInfo(long size) { super((Pointer)null); allocateArray(size); }
        private native void allocateArray(long size);
        @Override public PropertyInfo position(long position) {
            return (PropertyInfo)super.position(position);
        }
    
        /** Property info type. */
        public native @Cast("FlyCapture2::PropertyType") int type(); public native PropertyInfo type(int type);
        /** Flag indicating if the property is present. */
        public native @Cast("bool") boolean present(); public native PropertyInfo present(boolean present);
        /** Flag indicating if auto is supported. */
        public native @Cast("bool") boolean autoSupported(); public native PropertyInfo autoSupported(boolean autoSupported);
        /** Flag indicating if manual is supported. */
        public native @Cast("bool") boolean manualSupported(); public native PropertyInfo manualSupported(boolean manualSupported);
        /** Flag indicating if on/off is supported. */
        public native @Cast("bool") boolean onOffSupported(); public native PropertyInfo onOffSupported(boolean onOffSupported);
        /** Flag indicating if one push is supported. */
        public native @Cast("bool") boolean onePushSupported(); public native PropertyInfo onePushSupported(boolean onePushSupported);
        /** Flag indicating if absolute mode is supported. */
        public native @Cast("bool") boolean absValSupported(); public native PropertyInfo absValSupported(boolean absValSupported);
        /** Flag indicating if property value can be read out. */
        public native @Cast("bool") boolean readOutSupported(); public native PropertyInfo readOutSupported(boolean readOutSupported);
        /** Minimum value (as an integer). */
        public native @Cast("unsigned int") int min(); public native PropertyInfo min(int min);
        /** Maximum value (as an integer). */
        public native @Cast("unsigned int") int max(); public native PropertyInfo max(int max);
        /** Minimum value (as a floating point value). */
        public native float absMin(); public native PropertyInfo absMin(float absMin);
        /** Maximum value (as a floating point value). */
        public native float absMax(); public native PropertyInfo absMax(float absMax);
        /** Textual description of units. */
        public native @Cast("char") byte pUnits(int i); public native PropertyInfo pUnits(int i, byte pUnits);
        @MemberGetter public native @Cast("char*") BytePointer pUnits();
        /** Abbreviated textual description of units. */
        public native @Cast("char") byte pUnitAbbr(int i); public native PropertyInfo pUnitAbbr(int i, byte pUnitAbbr);
        @MemberGetter public native @Cast("char*") BytePointer pUnitAbbr();
        /** Reserved for future use. */
        public native @Cast("unsigned int") int reserved(int i); public native PropertyInfo reserved(int i, int reserved);
        @MemberGetter public native @Cast("unsigned int*") IntPointer reserved();

        public PropertyInfo() { super((Pointer)null); allocate(); }
        private native void allocate();

        public PropertyInfo( @Cast("FlyCapture2::PropertyType") int propType ) { super((Pointer)null); allocate(propType); }
        private native void allocate( @Cast("FlyCapture2::PropertyType") int propType );
    }

    /** The TriggerDelayInfo structure is identical to PropertyInfo. */

    /**
     * A specific camera property. \n
     * For example, to set the gain to 12dB, set the following values:
     * - \a type - \c GAIN
     * - \a absControl - \c true
     * - \a onePush - \c false
     * - \a onOff - \c true
     * - \a autoManualMode - \c false
     * - \a absValue - \c 12.0
     */
    @Namespace("FlyCapture2") @NoOffset public static class Property extends Pointer {
        static { Loader.load(); }
        /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */
        public Property(Pointer p) { super(p); }
        /** Native array allocator. Access with {@link Pointer#position(long)}. */
        public Property(long size) { super((Pointer)null); allocateArray(size); }
        private native void allocateArray(long size);
        @Override public Property position(long position) {
            return (Property)super.position(position);
        }
    
        /** Property info type. */
        public native @Cast("FlyCapture2::PropertyType") int type(); public native Property type(int type);
        /** Flag indicating if the property is present. */
        public native @Cast("bool") boolean present(); public native Property present(boolean present);
        /**
         * Flag controlling absolute mode (real world units)
         * or non-absolute mode (camera internal units).
         */
        public native @Cast("bool") boolean absControl(); public native Property absControl(boolean absControl);
        /** Flag controlling one push. */
        public native @Cast("bool") boolean onePush(); public native Property onePush(boolean onePush);
        /** Flag controlling on/off. */
        public native @Cast("bool") boolean onOff(); public native Property onOff(boolean onOff);
        /** Flag controlling auto. */
        public native @Cast("bool") boolean autoManualMode(); public native Property autoManualMode(boolean autoManualMode);
        /**
         * Value A (integer).
         * Used to configure properties in non-absolute mode.
         */
        public native @Cast("unsigned int") int valueA(); public native Property valueA(int valueA);
        /**
         * Value B (integer). For white balance, value B applies to the blue value and
         * value A applies to the red value.
         */
        public native @Cast("unsigned int") int valueB(); public native Property valueB(int valueB);
        /**
        * Floating point value.
        * Used to configure properties in absolute mode.
        */
        public native float absValue(); public native Property absValue(float absValue);
        /** Reserved for future use. */
        public native @Cast("unsigned int") int reserved(int i); public native Property reserved(int i, int reserved);
        @MemberGetter public native @Cast("unsigned int*") IntPointer reserved();

        public Property() { super((Pointer)null); allocate(); }
        private native void allocate();

        public Property( @Cast("FlyCapture2::PropertyType") int propType ) { super((Pointer)null); allocate(propType); }
        private native void allocate( @Cast("FlyCapture2::PropertyType") int propType );
    }

    /** The TriggerDelay structure is identical to Property. */

    /** Information about a camera trigger property. */
    @Namespace("FlyCapture2") @NoOffset public static class TriggerModeInfo extends Pointer {
        static { Loader.load(); }
        /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */
        public TriggerModeInfo(Pointer p) { super(p); }
        /** Native array allocator. Access with {@link Pointer#position(long)}. */
        public TriggerModeInfo(long size) { super((Pointer)null); allocateArray(size); }
        private native void allocateArray(long size);
        @Override public TriggerModeInfo position(long position) {
            return (TriggerModeInfo)super.position(position);
        }
    
        /** Presence of trigger mode. */
        public native @Cast("bool") boolean present(); public native TriggerModeInfo present(boolean present);
        /** Flag indicating if trigger value can be read out. */
        public native @Cast("bool") boolean readOutSupported(); public native TriggerModeInfo readOutSupported(boolean readOutSupported);
        /** Flag indicating if on/off is supported. */
        public native @Cast("bool") boolean onOffSupported(); public native TriggerModeInfo onOffSupported(boolean onOffSupported);
        /** Flag indicating if polarity is supported. */
        public native @Cast("bool") boolean polaritySupported(); public native TriggerModeInfo polaritySupported(boolean polaritySupported);
        /** Flag indicating if the value is readable. */
        public native @Cast("bool") boolean valueReadable(); public native TriggerModeInfo valueReadable(boolean valueReadable);
        /** Source mask. */
        public native @Cast("unsigned int") int sourceMask(); public native TriggerModeInfo sourceMask(int sourceMask);
        /** Flag indicating if software trigger is supported. */
        public native @Cast("bool") boolean softwareTriggerSupported(); public native TriggerModeInfo softwareTriggerSupported(boolean softwareTriggerSupported);
        /** Mode mask. */
        public native @Cast("unsigned int") int modeMask(); public native TriggerModeInfo modeMask(int modeMask);
        /** Reserved for future use. */
        public native @Cast("unsigned int") int reserved(int i); public native TriggerModeInfo reserved(int i, int reserved);
        @MemberGetter public native @Cast("unsigned int*") IntPointer reserved();

        public TriggerModeInfo() { super((Pointer)null); allocate(); }
        private native void allocate();
    }

    /** A camera trigger. */
    @Namespace("FlyCapture2") @NoOffset public static class TriggerMode extends Pointer {
        static { Loader.load(); }
        /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */
        public TriggerMode(Pointer p) { super(p); }
        /** Native array allocator. Access with {@link Pointer#position(long)}. */
        public TriggerMode(long size) { super((Pointer)null); allocateArray(size); }
        private native void allocateArray(long size);
        @Override public TriggerMode position(long position) {
            return (TriggerMode)super.position(position);
        }
    
        /** Flag controlling on/off. */
        public native @Cast("bool") boolean onOff(); public native TriggerMode onOff(boolean onOff);
        /** Polarity value. */
        public native @Cast("unsigned int") int polarity(); public native TriggerMode polarity(int polarity);
        /** Source value. */
        public native @Cast("unsigned int") int source(); public native TriggerMode source(int source);
        /** Mode value. */
        public native @Cast("unsigned int") int mode(); public native TriggerMode mode(int mode);
        /** Parameter value. */
        public native @Cast("unsigned int") int parameter(); public native TriggerMode parameter(int parameter);
        /** Reserved for future use. */
        public native @Cast("unsigned int") int reserved(int i); public native TriggerMode reserved(int i, int reserved);
        @MemberGetter public native @Cast("unsigned int*") IntPointer reserved();

        public TriggerMode() { super((Pointer)null); allocate(); }
        private native void allocate();
    }

    /** A camera strobe property. */
    @Namespace("FlyCapture2") @NoOffset public static class StrobeInfo extends Pointer {
        static { Loader.load(); }
        /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */
        public StrobeInfo(Pointer p) { super(p); }
        /** Native array allocator. Access with {@link Pointer#position(long)}. */
        public StrobeInfo(long size) { super((Pointer)null); allocateArray(size); }
        private native void allocateArray(long size);
        @Override public StrobeInfo position(long position) {
            return (StrobeInfo)super.position(position);
        }
    
        /** Source value. */
        public native @Cast("unsigned int") int source(); public native StrobeInfo source(int source);
        /** Presence of strobe. */
        public native @Cast("bool") boolean present(); public native StrobeInfo present(boolean present);
        /** Flag indicating if strobe value can be read out. */
        public native @Cast("bool") boolean readOutSupported(); public native StrobeInfo readOutSupported(boolean readOutSupported);
        /** Flag indicating if on/off is supported. */
        public native @Cast("bool") boolean onOffSupported(); public native StrobeInfo onOffSupported(boolean onOffSupported);
        /** Flag indicating if polarity is supported. */
        public native @Cast("bool") boolean polaritySupported(); public native StrobeInfo polaritySupported(boolean polaritySupported);
        /** Minimum value. */
        public native float minValue(); public native StrobeInfo minValue(float minValue);
        /** Maximum value. */
        public native float maxValue(); public native StrobeInfo maxValue(float maxValue);
        /** Reserved for future use. */
        public native @Cast("unsigned int") int reserved(int i); public native StrobeInfo reserved(int i, int reserved);
        @MemberGetter public native @Cast("unsigned int*") IntPointer reserved();

        public StrobeInfo() { super((Pointer)null); allocate(); }
        private native void allocate();
    }

    /** A camera strobe. */
    @Namespace("FlyCapture2") @NoOffset public static class StrobeControl extends Pointer {
        static { Loader.load(); }
        /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */
        public StrobeControl(Pointer p) { super(p); }
        /** Native array allocator. Access with {@link Pointer#position(long)}. */
        public StrobeControl(long size) { super((Pointer)null); allocateArray(size); }
        private native void allocateArray(long size);
        @Override public StrobeControl position(long position) {
            return (StrobeControl)super.position(position);
        }
    
        /** Source value. */
        public native @Cast("unsigned int") int source(); public native StrobeControl source(int source);
        /** Flag controlling on/off. */
        public native @Cast("bool") boolean onOff(); public native StrobeControl onOff(boolean onOff);
        /** Signal polarity. */
        public native @Cast("unsigned int") int polarity(); public native StrobeControl polarity(int polarity);
        /** Signal delay (in ms). */
        public native float delay(); public native StrobeControl delay(float delay);
        /** Signal duration (in ms). */
        public native float duration(); public native StrobeControl duration(float duration);
        /** Reserved for future use. */
        public native @Cast("unsigned int") int reserved(int i); public native StrobeControl reserved(int i, int reserved);
        @MemberGetter public native @Cast("unsigned int*") IntPointer reserved();

        public StrobeControl() { super((Pointer)null); allocate(); }
        private native void allocate();
    }

    /** Timestamp information. */
    @Namespace("FlyCapture2") @NoOffset public static class TimeStamp extends Pointer {
        static { Loader.load(); }
        /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */
        public TimeStamp(Pointer p) { super(p); }
        /** Native array allocator. Access with {@link Pointer#position(long)}. */
        public TimeStamp(long size) { super((Pointer)null); allocateArray(size); }
        private native void allocateArray(long size);
        @Override public TimeStamp position(long position) {
            return (TimeStamp)super.position(position);
        }
    
        /** Seconds. */
        public native long seconds(); public native TimeStamp seconds(long seconds);
        /** Microseconds. */
        public native @Cast("unsigned int") int microSeconds(); public native TimeStamp microSeconds(int microSeconds);
        /** 1394 cycle time seconds. */
        public native @Cast("unsigned int") int cycleSeconds(); public native TimeStamp cycleSeconds(int cycleSeconds);
        /** 1394 cycle time count. */
        public native @Cast("unsigned int") int cycleCount(); public native TimeStamp cycleCount(int cycleCount);
        /** 1394 cycle time offset. */
        public native @Cast("unsigned int") int cycleOffset(); public native TimeStamp cycleOffset(int cycleOffset);
        /** Reserved for future use. */
        public native @Cast("unsigned int") int reserved(int i); public native TimeStamp reserved(int i, int reserved);
        @MemberGetter public native @Cast("unsigned int*") IntPointer reserved();

        public TimeStamp() { super((Pointer)null); allocate(); }
        private native void allocate();
    }

    /** Camera configuration ROM. */
    @Namespace("FlyCapture2") @NoOffset public static class ConfigROM extends Pointer {
        static { Loader.load(); }
        /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */
        public ConfigROM(Pointer p) { super(p); }
        /** Native array allocator. Access with {@link Pointer#position(long)}. */
        public ConfigROM(long size) { super((Pointer)null); allocateArray(size); }
        private native void allocateArray(long size);
        @Override public ConfigROM position(long position) {
            return (ConfigROM)super.position(position);
        }
    
        /** Vendor ID of a node. */
        public native @Cast("unsigned int") int nodeVendorId(); public native ConfigROM nodeVendorId(int nodeVendorId);
        /** Chip ID (high part). */
        public native @Cast("unsigned int") int chipIdHi(); public native ConfigROM chipIdHi(int chipIdHi);
        /** Chip ID (low part). */
        public native @Cast("unsigned int") int chipIdLo(); public native ConfigROM chipIdLo(int chipIdLo);
        /** Unit Spec ID, usually 0xa02d. */
        public native @Cast("unsigned int") int unitSpecId(); public native ConfigROM unitSpecId(int unitSpecId);
        /** Unit software version. */
        public native @Cast("unsigned int") int unitSWVer(); public native ConfigROM unitSWVer(int unitSWVer);
        /** Unit sub software version. */
        public native @Cast("unsigned int") int unitSubSWVer(); public native ConfigROM unitSubSWVer(int unitSubSWVer);
        /** Vendor unique info 0. */
        public native @Cast("unsigned int") int vendorUniqueInfo_0(); public native ConfigROM vendorUniqueInfo_0(int vendorUniqueInfo_0);
        /** Vendor unique info 1. */
        public native @Cast("unsigned int") int vendorUniqueInfo_1(); public native ConfigROM vendorUniqueInfo_1(int vendorUniqueInfo_1);
        /** Vendor unique info 2. */
        public native @Cast("unsigned int") int vendorUniqueInfo_2(); public native ConfigROM vendorUniqueInfo_2(int vendorUniqueInfo_2);
        /** Vendor unique info 3. */
        public native @Cast("unsigned int") int vendorUniqueInfo_3(); public native ConfigROM vendorUniqueInfo_3(int vendorUniqueInfo_3);
        /** Keyword. */
        public native @Cast("char") byte pszKeyword(int i); public native ConfigROM pszKeyword(int i, byte pszKeyword);
        @MemberGetter public native @Cast("char*") BytePointer pszKeyword();
        /** Reserved for future use. */
        public native @Cast("unsigned int") int reserved(int i); public native ConfigROM reserved(int i, int reserved);
        @MemberGetter public native @Cast("unsigned int*") IntPointer reserved();

        public ConfigROM() { super((Pointer)null); allocate(); }
        private native void allocate();
    }

    /** Camera information. */
    @Namespace("FlyCapture2") @NoOffset public static class CameraInfo extends Pointer {
        static { Loader.load(); }
        /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */
        public CameraInfo(Pointer p) { super(p); }
        /** Native array allocator. Access with {@link Pointer#position(long)}. */
        public CameraInfo(long size) { super((Pointer)null); allocateArray(size); }
        private native void allocateArray(long size);
        @Override public CameraInfo position(long position) {
            return (CameraInfo)super.position(position);
        }
    
        /** Device serial number. */
        public native @Cast("unsigned int") int serialNumber(); public native CameraInfo serialNumber(int serialNumber);
        /** Interface type. */
        public native @Cast("FlyCapture2::InterfaceType") int interfaceType(); public native CameraInfo interfaceType(int interfaceType);
        /** Driver type. */
        public native @Cast("FlyCapture2::DriverType") int driverType(); public native CameraInfo driverType(int driverType);
        /** Flag indicating if this is a color camera. */
        public native @Cast("bool") boolean isColorCamera(); public native CameraInfo isColorCamera(boolean isColorCamera);
        /** Device model name. */
        public native @Cast("char") byte modelName(int i); public native CameraInfo modelName(int i, byte modelName);
        @MemberGetter public native @Cast("char*") BytePointer modelName();
        /** Device vendor name. */
        public native @Cast("char") byte vendorName(int i); public native CameraInfo vendorName(int i, byte vendorName);
        @MemberGetter public native @Cast("char*") BytePointer vendorName();
        /** String detailing the sensor information. */
        public native @Cast("char") byte sensorInfo(int i); public native CameraInfo sensorInfo(int i, byte sensorInfo);
        @MemberGetter public native @Cast("char*") BytePointer sensorInfo();
        /** String providing the sensor resolution. */
        public native @Cast("char") byte sensorResolution(int i); public native CameraInfo sensorResolution(int i, byte sensorResolution);
        @MemberGetter public native @Cast("char*") BytePointer sensorResolution();
        /** Driver name of driver being used. */
        public native @Cast("char") byte driverName(int i); public native CameraInfo driverName(int i, byte driverName);
        @MemberGetter public native @Cast("char*") BytePointer driverName();
        /** Firmware version of camera. */
        public native @Cast("char") byte firmwareVersion(int i); public native CameraInfo firmwareVersion(int i, byte firmwareVersion);
        @MemberGetter public native @Cast("char*") BytePointer firmwareVersion();
        /** Firmware build time. */
        public native @Cast("char") byte firmwareBuildTime(int i); public native CameraInfo firmwareBuildTime(int i, byte firmwareBuildTime);
        @MemberGetter public native @Cast("char*") BytePointer firmwareBuildTime();
        /** Maximum bus speed. */
        public native @Cast("FlyCapture2::BusSpeed") int maximumBusSpeed(); public native CameraInfo maximumBusSpeed(int maximumBusSpeed);
        /** Bayer tile format. */
        public native @Cast("FlyCapture2::BayerTileFormat") int bayerTileFormat(); public native CameraInfo bayerTileFormat(int bayerTileFormat);
        /** Bus number, set to 0 for GigE and USB cameras **/
        public native @Cast("unsigned short") short busNumber(); public native CameraInfo busNumber(short busNumber);
        /** ieee1394 Node number, set to 0 for GigE and USB cameras **/
        public native @Cast("unsigned short") short nodeNumber(); public native CameraInfo nodeNumber(short nodeNumber);
        /** PCIe Bus Speed, set to PCIE_BUSSPEED_UNKNOWN for unsupported drivers **/
        public native @Cast("FlyCapture2::PCIeBusSpeed") int pcieBusSpeed(); public native CameraInfo pcieBusSpeed(int pcieBusSpeed);

        /** \name IIDC specific information */
        /*@{*/

        /** DCAM version. */
        public native @Cast("unsigned int") int iidcVer(); public native CameraInfo iidcVer(int iidcVer);
        /** Configuration ROM data. */
        public native @ByRef ConfigROM configROM(); public native CameraInfo configROM(ConfigROM configROM);

        /*@}*/

        /** \name GigE specific information */
        /*@{*/

        /** GigE Vision version. */
        public native @Cast("unsigned int") int gigEMajorVersion(); public native CameraInfo gigEMajorVersion(int gigEMajorVersion);
        /** GigE Vision minor version. */
        public native @Cast("unsigned int") int gigEMinorVersion(); public native CameraInfo gigEMinorVersion(int gigEMinorVersion);
        /** User defined name. */
        public native @Cast("char") byte userDefinedName(int i); public native CameraInfo userDefinedName(int i, byte userDefinedName);
        @MemberGetter public native @Cast("char*") BytePointer userDefinedName();
        /** XML URL 1. */
        public native @Cast("char") byte xmlURL1(int i); public native CameraInfo xmlURL1(int i, byte xmlURL1);
        @MemberGetter public native @Cast("char*") BytePointer xmlURL1();
        /** XML URL 2. */
        public native @Cast("char") byte xmlURL2(int i); public native CameraInfo xmlURL2(int i, byte xmlURL2);
        @MemberGetter public native @Cast("char*") BytePointer xmlURL2();
        /** MAC address */
        public native @ByRef MACAddress macAddress(); public native CameraInfo macAddress(MACAddress macAddress);
        /** IP address. */
        public native @ByRef IPAddress ipAddress(); public native CameraInfo ipAddress(IPAddress ipAddress);
        /** Subnet mask. */
        public native @ByRef IPAddress subnetMask(); public native CameraInfo subnetMask(IPAddress subnetMask);
        /** Default gateway. */
        public native @ByRef IPAddress defaultGateway(); public native CameraInfo defaultGateway(IPAddress defaultGateway);
        /** Status/Content of CCP register */
        public native @Cast("unsigned int") int ccpStatus(); public native CameraInfo ccpStatus(int ccpStatus);
        /** Local Application IP Address. */
        public native @Cast("unsigned int") int applicationIPAddress(); public native CameraInfo applicationIPAddress(int applicationIPAddress);
        /** Local Application port. */
        public native @Cast("unsigned int") int applicationPort(); public native CameraInfo applicationPort(int applicationPort);
        /*@}*/

        /** Reserved for future use. */
        public native @Cast("unsigned int") int reserved(int i); public native CameraInfo reserved(int i, int reserved);
        @MemberGetter public native @Cast("unsigned int*") IntPointer reserved();

        public CameraInfo() { super((Pointer)null); allocate(); }
        private native void allocate();
    }

    /** Properties of a single embedded image info property. */
    @Namespace("FlyCapture2") @NoOffset public static class EmbeddedImageInfoProperty extends Pointer {
        static { Loader.load(); }
        /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */
        public EmbeddedImageInfoProperty(Pointer p) { super(p); }
        /** Native array allocator. Access with {@link Pointer#position(long)}. */
        public EmbeddedImageInfoProperty(long size) { super((Pointer)null); allocateArray(size); }
        private native void allocateArray(long size);
        @Override public EmbeddedImageInfoProperty position(long position) {
            return (EmbeddedImageInfoProperty)super.position(position);
        }
    
        /** Whether this property is available. */
        public native @Cast("bool") boolean available(); public native EmbeddedImageInfoProperty available(boolean available);
        /** Whether this property is on or off. */
        public native @Cast("bool") boolean onOff(); public native EmbeddedImageInfoProperty onOff(boolean onOff);

        public EmbeddedImageInfoProperty() { super((Pointer)null); allocate(); }
        private native void allocate();
    }

    /** Properties of the possible embedded image information. */
    @Namespace("FlyCapture2") public static class EmbeddedImageInfo extends Pointer {
        static { Loader.load(); }
        /** Default native constructor. */
        public EmbeddedImageInfo() { super((Pointer)null); allocate(); }
        /** Native array allocator. Access with {@link Pointer#position(long)}. */
        public EmbeddedImageInfo(long size) { super((Pointer)null); allocateArray(size); }
        /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */
        public EmbeddedImageInfo(Pointer p) { super(p); }
        private native void allocate();
        private native void allocateArray(long size);
        @Override public EmbeddedImageInfo position(long position) {
            return (EmbeddedImageInfo)super.position(position);
        }
    
        public native @ByRef EmbeddedImageInfoProperty timestamp(); public native EmbeddedImageInfo timestamp(EmbeddedImageInfoProperty timestamp);
        public native @ByRef EmbeddedImageInfoProperty gain(); public native EmbeddedImageInfo gain(EmbeddedImageInfoProperty gain);
        public native @ByRef EmbeddedImageInfoProperty shutter(); public native EmbeddedImageInfo shutter(EmbeddedImageInfoProperty shutter);
        public native @ByRef EmbeddedImageInfoProperty brightness(); public native EmbeddedImageInfo brightness(EmbeddedImageInfoProperty brightness);
        public native @ByRef EmbeddedImageInfoProperty exposure(); public native EmbeddedImageInfo exposure(EmbeddedImageInfoProperty exposure);
        public native @ByRef EmbeddedImageInfoProperty whiteBalance(); public native EmbeddedImageInfo whiteBalance(EmbeddedImageInfoProperty whiteBalance);
        public native @ByRef EmbeddedImageInfoProperty frameCounter(); public native EmbeddedImageInfo frameCounter(EmbeddedImageInfoProperty frameCounter);
        public native @ByRef EmbeddedImageInfoProperty strobePattern(); public native EmbeddedImageInfo strobePattern(EmbeddedImageInfoProperty strobePattern);
        public native @ByRef EmbeddedImageInfoProperty GPIOPinState(); public native EmbeddedImageInfo GPIOPinState(EmbeddedImageInfoProperty GPIOPinState);
        public native @ByRef EmbeddedImageInfoProperty ROIPosition(); public native EmbeddedImageInfo ROIPosition(EmbeddedImageInfoProperty ROIPosition);
    }

    /** Metadata related to an image. */
    @Namespace("FlyCapture2") @NoOffset public static class ImageMetadata extends Pointer {
        static { Loader.load(); }
        /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */
        public ImageMetadata(Pointer p) { super(p); }
        /** Native array allocator. Access with {@link Pointer#position(long)}. */
        public ImageMetadata(long size) { super((Pointer)null); allocateArray(size); }
        private native void allocateArray(long size);
        @Override public ImageMetadata position(long position) {
            return (ImageMetadata)super.position(position);
        }
    
        /** Embedded timestamp. */
        public native @Cast("unsigned int") int embeddedTimeStamp(); public native ImageMetadata embeddedTimeStamp(int embeddedTimeStamp);
        /** Embedded gain. */
        public native @Cast("unsigned int") int embeddedGain(); public native ImageMetadata embeddedGain(int embeddedGain);
        /** Embedded shutter. */
        public native @Cast("unsigned int") int embeddedShutter(); public native ImageMetadata embeddedShutter(int embeddedShutter);
        /** Embedded brightness. */
        public native @Cast("unsigned int") int embeddedBrightness(); public native ImageMetadata embeddedBrightness(int embeddedBrightness);
        /** Embedded exposure. */
        public native @Cast("unsigned int") int embeddedExposure(); public native ImageMetadata embeddedExposure(int embeddedExposure);
        /** Embedded white balance. */
        public native @Cast("unsigned int") int embeddedWhiteBalance(); public native ImageMetadata embeddedWhiteBalance(int embeddedWhiteBalance);
        /** Embedded frame counter. */
        public native @Cast("unsigned int") int embeddedFrameCounter(); public native ImageMetadata embeddedFrameCounter(int embeddedFrameCounter);
        /** Embedded strobe pattern. */
        public native @Cast("unsigned int") int embeddedStrobePattern(); public native ImageMetadata embeddedStrobePattern(int embeddedStrobePattern);
        /** Embedded GPIO pin state. */
        public native @Cast("unsigned int") int embeddedGPIOPinState(); public native ImageMetadata embeddedGPIOPinState(int embeddedGPIOPinState);
        /** Embedded ROI position. */
        public native @Cast("unsigned int") int embeddedROIPosition(); public native ImageMetadata embeddedROIPosition(int embeddedROIPosition);

        /** Reserved for future use. */
        public native @Cast("unsigned int") int reserved(int i); public native ImageMetadata reserved(int i, int reserved);
        @MemberGetter public native @Cast("unsigned int*") IntPointer reserved();

        public ImageMetadata() { super((Pointer)null); allocate(); }
        private native void allocate();
    }

    /** Information about the camera's look up table. */
    @Namespace("FlyCapture2") @NoOffset public static class LUTData extends Pointer {
        static { Loader.load(); }
        /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */
        public LUTData(Pointer p) { super(p); }
        /** Native array allocator. Access with {@link Pointer#position(long)}. */
        public LUTData(long size) { super((Pointer)null); allocateArray(size); }
        private native void allocateArray(long size);
        @Override public LUTData position(long position) {
            return (LUTData)super.position(position);
        }
    
        /** Flag indicating if LUT is supported. */
        public native @Cast("bool") boolean supported(); public native LUTData supported(boolean supported);
        /** Flag indicating if LUT is enabled. */
        public native @Cast("bool") boolean enabled(); public native LUTData enabled(boolean enabled);
        /** The number of LUT banks available (Always 1 for PGR LUT). */
        public native @Cast("unsigned int") int numBanks(); public native LUTData numBanks(int numBanks);
        /** The number of LUT channels per bank available. */
        public native @Cast("unsigned int") int numChannels(); public native LUTData numChannels(int numChannels);
        /** The input bit depth of the LUT. */
        public native @Cast("unsigned int") int inputBitDepth(); public native LUTData inputBitDepth(int inputBitDepth);
        /** The output bit depth of the LUT. */
        public native @Cast("unsigned int") int outputBitDepth(); public native LUTData outputBitDepth(int outputBitDepth);
        /** The number of entries in the LUT. */
        public native @Cast("unsigned int") int numEntries(); public native LUTData numEntries(int numEntries);
        /** Reserved for future use. */
        public native @Cast("unsigned int") int reserved(int i); public native LUTData reserved(int i, int reserved);
        @MemberGetter public native @Cast("unsigned int*") IntPointer reserved();

        public LUTData() { super((Pointer)null); allocate(); }
        private native void allocate();
    }

    /** Camera diagnostic information. */
    @Namespace("FlyCapture2") @NoOffset public static class CameraStats extends Pointer {
        static { Loader.load(); }
        /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */
        public CameraStats(Pointer p) { super(p); }
        /** Native array allocator. Access with {@link Pointer#position(long)}. */
        public CameraStats(long size) { super((Pointer)null); allocateArray(size); }
        private native void allocateArray(long size);
        @Override public CameraStats position(long position) {
            return (CameraStats)super.position(position);
        }
    
        /* Number of dropped images in DROP_IMAGE mode */
        public native @Cast("unsigned int") int imageDropped(); public native CameraStats imageDropped(int imageDropped);
        /* Number of corrupt images, such as missing packet, zero packet */
        public native @Cast("unsigned int") int imageCorrupt(); public native CameraStats imageCorrupt(int imageCorrupt);
        /* Number of transmissions failed of camera */
        public native @Cast("unsigned int") int imageXmitFailed(); public native CameraStats imageXmitFailed(int imageXmitFailed);
        /* Number of images dropped in driver */
        public native @Cast("unsigned int") int imageDriverDropped(); public native CameraStats imageDriverDropped(int imageDriverDropped);
        /* Errors of register reading */
        public native @Cast("unsigned int") int regReadFailed(); public native CameraStats regReadFailed(int regReadFailed);
        /* Errors of register writing */
        public native @Cast("unsigned int") int regWriteFailed(); public native CameraStats regWriteFailed(int regWriteFailed);
        /* Port errors */
        public native @Cast("unsigned int") int portErrors(); public native CameraStats portErrors(int portErrors);
        /* The value of the camera power register.
         * false: Camera is powered down.
         * true: Camera is powered up.
         */
        public native @Cast("bool") boolean cameraPowerUp(); public native CameraStats cameraPowerUp(boolean cameraPowerUp);

        /* The voltage values of the various voltage registers
         * supported by the camera.
         */
        public native float cameraVoltages(int i); public native CameraStats cameraVoltages(int i, float cameraVoltages);
        @MemberGetter public native FloatPointer cameraVoltages();
        /** The number of voltage registers available.
         * 0: the values in cameraVoltages[] are invalid.
         */
        public native @Cast("unsigned int") int numVoltages(); public native CameraStats numVoltages(int numVoltages);

        /* The current values of the various current registers
         * supported by the camera.
         */
        public native float cameraCurrents(int i); public native CameraStats cameraCurrents(int i, float cameraCurrents);
        @MemberGetter public native FloatPointer cameraCurrents();
        /** The number of current registers available.
         * 0: the values in cameraCurrents[] are invalid.
         */
        public native @Cast("unsigned int") int numCurrents(); public native CameraStats numCurrents(int numCurrents);
        /* The temperature of the camera board-level components. The value is
         * in kelvins (0?C = 273.15K) and are in one-tenths (0.1) of a kelvin.
         */
        public native @Cast("unsigned int") int temperature(); public native CameraStats temperature(int temperature);
        /* Time in seconds since the camera was initialized. */
        public native @Cast("unsigned int") int timeSinceInitialization(); public native CameraStats timeSinceInitialization(int timeSinceInitialization);
        /* Time in seconds since the camera detected a bus reset. */
        public native @Cast("unsigned int") int timeSinceBusReset(); public native CameraStats timeSinceBusReset(int timeSinceBusReset);
        /* Time stamp */
        public native @ByRef TimeStamp timeStamp(); public native CameraStats timeStamp(TimeStamp timeStamp);
        /* Number of packets requested for resend */
        public native @Cast("unsigned int") int numResendPacketsRequested(); public native CameraStats numResendPacketsRequested(int numResendPacketsRequested);
        /* Number of packet-resend packets received */
        public native @Cast("unsigned int") int numResendPacketsReceived(); public native CameraStats numResendPacketsReceived(int numResendPacketsReceived);
        /** Reserved for future use. */
        public native @Cast("unsigned int") int reserved(int i); public native CameraStats reserved(int i, int reserved);
        @MemberGetter public native @Cast("unsigned int*") IntPointer reserved();

        public CameraStats() { super((Pointer)null); allocate(); }
        private native void allocate();
    }


    /**
     * \defgroup ImageSaveStructures Image saving structures.
     *
     * These structures define various parameters used for saving images.
     */

    /*@{*/

    /** Options for saving PNG images. */
    @Namespace("FlyCapture2") @NoOffset public static class PNGOption extends Pointer {
        static { Loader.load(); }
        /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */
        public PNGOption(Pointer p) { super(p); }
        /** Native array allocator. Access with {@link Pointer#position(long)}. */
        public PNGOption(long size) { super((Pointer)null); allocateArray(size); }
        private native void allocateArray(long size);
        @Override public PNGOption position(long position) {
            return (PNGOption)super.position(position);
        }
    
        /** Whether to save the PNG as interlaced. */
        public native @Cast("bool") boolean interlaced(); public native PNGOption interlaced(boolean interlaced);
        /** Compression level (0-9). 0 is no compression, 9 is best compression. */
        public native @Cast("unsigned int") int compressionLevel(); public native PNGOption compressionLevel(int compressionLevel);
        /** Reserved for future use. */
        public native @Cast("unsigned int") int reserved(int i); public native PNGOption reserved(int i, int reserved);
        @MemberGetter public native @Cast("unsigned int*") IntPointer reserved();

        public PNGOption() { super((Pointer)null); allocate(); }
        private native void allocate();
    }

    /** Options for saving PPM images. */
    @Namespace("FlyCapture2") @NoOffset public static class PPMOption extends Pointer {
        static { Loader.load(); }
        /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */
        public PPMOption(Pointer p) { super(p); }
        /** Native array allocator. Access with {@link Pointer#position(long)}. */
        public PPMOption(long size) { super((Pointer)null); allocateArray(size); }
        private native void allocateArray(long size);
        @Override public PPMOption position(long position) {
            return (PPMOption)super.position(position);
        }
    
        /** Whether to save the PPM as a binary file. */
        public native @Cast("bool") boolean binaryFile(); public native PPMOption binaryFile(boolean binaryFile);
        /** Reserved for future use. */
        public native @Cast("unsigned int") int reserved(int i); public native PPMOption reserved(int i, int reserved);
        @MemberGetter public native @Cast("unsigned int*") IntPointer reserved();

        public PPMOption() { super((Pointer)null); allocate(); }
        private native void allocate();
    }

    /** Options for saving PGM images. */
    @Namespace("FlyCapture2") @NoOffset public static class PGMOption extends Pointer {
        static { Loader.load(); }
        /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */
        public PGMOption(Pointer p) { super(p); }
        /** Native array allocator. Access with {@link Pointer#position(long)}. */
        public PGMOption(long size) { super((Pointer)null); allocateArray(size); }
        private native void allocateArray(long size);
        @Override public PGMOption position(long position) {
            return (PGMOption)super.position(position);
        }
    
        /** Whether to save the PPM as a binary file. */
        public native @Cast("bool") boolean binaryFile(); public native PGMOption binaryFile(boolean binaryFile);
        /** Reserved for future use. */
        public native @Cast("unsigned int") int reserved(int i); public native PGMOption reserved(int i, int reserved);
        @MemberGetter public native @Cast("unsigned int*") IntPointer reserved();

        public PGMOption() { super((Pointer)null); allocate(); }
        private native void allocate();
    }

    /** Options for saving TIFF images. */
    @Namespace("FlyCapture2") @NoOffset public static class TIFFOption extends Pointer {
        static { Loader.load(); }
        /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */
        public TIFFOption(Pointer p) { super(p); }
        /** Native array allocator. Access with {@link Pointer#position(long)}. */
        public TIFFOption(long size) { super((Pointer)null); allocateArray(size); }
        private native void allocateArray(long size);
        @Override public TIFFOption position(long position) {
            return (TIFFOption)super.position(position);
        }
    
        /** enum FlyCapture2::TIFFOption::CompressionMethod */
        public static final int
            /** Save without any compression. */
            NONE = 1,
            /** Save using PACKBITS compression. */
            PACKBITS = 2,
            /** Save using DEFLATE compression (ZLIB compression). */
            DEFLATE = 3,
            /** Save using ADOBE DEFLATE compression */
            ADOBE_DEFLATE = 4,
            /**
             * Save using CCITT Group 3 fax encoding. This is only valid for
             * 1-bit images only. Default to LZW for other bit depths.
             */
            CCITTFAX3 = 5,
            /**
             * Save using CCITT Group 4 fax encoding. This is only valid for
             * 1-bit images only. Default to LZW for other bit depths.
             */
            CCITTFAX4 = 6,
            /** Save using LZW compression. */
            LZW = 7,
            /**
             * Save using JPEG compression. This is only valid for 8-bit
             * greyscale and 24-bit only. Default to LZW for other bit depths.
             */
            JPEG = 8;

        /** Compression method to use for encoding TIFF images. */
        public native @Cast("FlyCapture2::TIFFOption::CompressionMethod") int compression(); public native TIFFOption compression(int compression);
        /** Reserved for future use. */
        public native @Cast("unsigned int") int reserved(int i); public native TIFFOption reserved(int i, int reserved);
        @MemberGetter public native @Cast("unsigned int*") IntPointer reserved();

        public TIFFOption() { super((Pointer)null); allocate(); }
        private native void allocate();
    }

    /** Options for saving JPEG image. */
    @Namespace("FlyCapture2") @NoOffset public static class JPEGOption extends Pointer {
        static { Loader.load(); }
        /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */
        public JPEGOption(Pointer p) { super(p); }
        /** Native array allocator. Access with {@link Pointer#position(long)}. */
        public JPEGOption(long size) { super((Pointer)null); allocateArray(size); }
        private native void allocateArray(long size);
        @Override public JPEGOption position(long position) {
            return (JPEGOption)super.position(position);
        }
    
        /** Whether to save as a progressive JPEG file. */
        public native @Cast("bool") boolean progressive(); public native JPEGOption progressive(boolean progressive);
        /**
         * JPEG image quality in range (0-100).
         * - 100 - Superb quality.
         * - 75  - Good quality.
         * - 50  - Normal quality.
         * - 10  - Poor quality.
         */
        public native @Cast("unsigned int") int quality(); public native JPEGOption quality(int quality);
        /** Reserved for future use. */
        public native @Cast("unsigned int") int reserved(int i); public native JPEGOption reserved(int i, int reserved);
        @MemberGetter public native @Cast("unsigned int*") IntPointer reserved();

        public JPEGOption() { super((Pointer)null); allocate(); }
        private native void allocate();
    }

    /** Options for saving JPEG2000 image. */
    @Namespace("FlyCapture2") @NoOffset public static class JPG2Option extends Pointer {
        static { Loader.load(); }
        /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */
        public JPG2Option(Pointer p) { super(p); }
        /** Native array allocator. Access with {@link Pointer#position(long)}. */
        public JPG2Option(long size) { super((Pointer)null); allocateArray(size); }
        private native void allocateArray(long size);
        @Override public JPG2Option position(long position) {
            return (JPG2Option)super.position(position);
        }
    
        /** JPEG saving quality in range (1-512). */
        public native @Cast("unsigned int") int quality(); public native JPG2Option quality(int quality);
        /** Reserved for future use. */
        public native @Cast("unsigned int") int reserved(int i); public native JPG2Option reserved(int i, int reserved);
        @MemberGetter public native @Cast("unsigned int*") IntPointer reserved();

        public JPG2Option() { super((Pointer)null); allocate(); }
        private native void allocate();
    }

    /** Options for saving Bitmap image. */
    @Namespace("FlyCapture2") @NoOffset public static class BMPOption extends Pointer {
        static { Loader.load(); }
        /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */
        public BMPOption(Pointer p) { super(p); }
        /** Native array allocator. Access with {@link Pointer#position(long)}. */
        public BMPOption(long size) { super((Pointer)null); allocateArray(size); }
        private native void allocateArray(long size);
        @Override public BMPOption position(long position) {
            return (BMPOption)super.position(position);
        }
    
        public native @Cast("bool") boolean indexedColor_8bit(); public native BMPOption indexedColor_8bit(boolean indexedColor_8bit);
        /** Reserved for future use. */
        public native @Cast("unsigned int") int reserved(int i); public native BMPOption reserved(int i, int reserved);
        @MemberGetter public native @Cast("unsigned int*") IntPointer reserved();

        public BMPOption() { super((Pointer)null); allocate(); }
        private native void allocate();
    }

    /* Callback function typedef: a function accepting pointer-to-void input as its sole
     * argument, and returns void (ie: nothing).
     */
    public static class CameraEventCallback extends FunctionPointer {
        static { Loader.load(); }
        /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */
        public    CameraEventCallback(Pointer p) { super(p); }
        protected CameraEventCallback() { allocate(); }
        private native void allocate();
        public native void call(Pointer data);
    }

    /** Options for enabling device event registration. */
    @Namespace("FlyCapture2") public static class EventOptions extends Pointer {
        static { Loader.load(); }
        /** Default native constructor. */
        public EventOptions() { super((Pointer)null); allocate(); }
        /** Native array allocator. Access with {@link Pointer#position(long)}. */
        public EventOptions(long size) { super((Pointer)null); allocateArray(size); }
        /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */
        public EventOptions(Pointer p) { super(p); }
        private native void allocate();
        private native void allocateArray(long size);
        @Override public EventOptions position(long position) {
            return (EventOptions)super.position(position);
        }
    
        /** Callback function pointer */
        public native CameraEventCallback EventCallbackFcn(); public native EventOptions EventCallbackFcn(CameraEventCallback EventCallbackFcn);

        /** Event name to register */
        @MemberGetter public native @Cast("const char*") BytePointer EventName();

        /** Pointer to callback data to be passed to the callback function */
        @MemberGetter public native @Const Pointer EventUserData();

        /** Size of the underlying struct passed as eventCallbackData for sanity checks */
        public native @Cast("size_t") long EventUserDataSize(); public native EventOptions EventUserDataSize(long EventUserDataSize);
    }


    /* Callback data passed to the callback function provided when using
     * RegisterEvent() or RegisterAllEvents().
     */
    @Namespace("FlyCapture2") public static class EventCallbackData extends Pointer {
        static { Loader.load(); }
        /** Default native constructor. */
        public EventCallbackData() { super((Pointer)null); allocate(); }
        /** Native array allocator. Access with {@link Pointer#position(long)}. */
        public EventCallbackData(long size) { super((Pointer)null); allocateArray(size); }
        /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */
        public EventCallbackData(Pointer p) { super(p); }
        private native void allocate();
        private native void allocateArray(long size);
        @Override public EventCallbackData position(long position) {
            return (EventCallbackData)super.position(position);
        }
    
        /** Pointer to the user-supplied data struct */
        public native Pointer EventUserData(); public native EventCallbackData EventUserData(Pointer EventUserData);

        /** Size of the user data data supplied to the RegisterEvent()
         * function.
         */
        public native @Cast("size_t") long EventUserDataSize(); public native EventCallbackData EventUserDataSize(long EventUserDataSize);

        /** The event name used to register the event. Provided so the user
         * knows which event triggered the callback.
         */
        @MemberGetter public native @Cast("const char*") BytePointer EventName();

        /** The device register which EventName maps to. Provides an alternate
         * means of indexing into different event types.
         */
        public native @Cast("long long unsigned") long EventID(); public native EventCallbackData EventID(long EventID);

        /** Timestamp indicated the time (as reported by the camera) at which
         * the camera exposure operation completed. This can be compared with
         * image stimestamps if there is a need to map event timestamps to
         * specific images, if applicable.
         */
        public native @Cast("long long unsigned") long EventTimestamp(); public native EventCallbackData EventTimestamp(long EventTimestamp);

        /** A pointer to additional data pertaining to the event which just
         * trigger the callback function. The data may be of difference sizes
         * or may not even be allocated, depending on the type of event which
         * triggered the callback.
         */
        public native Pointer EventData(); public native EventCallbackData EventData(Pointer EventData);

        /** The size of the structure pointed to by EventData. This value should
         * be checked, especially if there are events which can trigger variable-
         * length event data to be returned to the user when the callback function
         * is issued.
         */
        public native @Cast("size_t") long EventDataSize(); public native EventCallbackData EventDataSize(long EventDataSize);
    }
    /*@}*/

    /*@}*/


// #endif // FLIR_FC2_FLYCAPTURE2DEFS_H



// Parsed from 

//=============================================================================
// Copyright ? 2017 FLIR Integrated Imaging Solutions, Inc. All Rights Reserved.
//
// This software is the confidential and proprietary information of FLIR
// Integrated Imaging Solutions, Inc. ("Confidential Information"). You
// shall not disclose such Confidential Information and shall use it only in
// accordance with the terms of the license agreement you entered into
// with FLIR Integrated Imaging Solutions, Inc. (FLIR).
//
// FLIR MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF THE
// SOFTWARE, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
// PURPOSE, OR NON-INFRINGEMENT. FLIR SHALL NOT BE LIABLE FOR ANY DAMAGES
// SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING
// THIS SOFTWARE OR ITS DERIVATIVES.
//=============================================================================

//=============================================================================
// $Id: Error.h 316355 2017-02-20 23:02:28Z alin $
//=============================================================================

// #ifndef PGR_FC2_ERROR_H
// #define PGR_FC2_ERROR_H

// #include "FlyCapture2Platform.h"
// #include "FlyCapture2Defs.h"
// #include 
	@Namespace("FlyCapture2") @Opaque public static class ErrorImpl extends Pointer {
	    /** Empty constructor. Calls {@code super((Pointer)null)}. */
	    public ErrorImpl() { super((Pointer)null); }
	    /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */
	    public ErrorImpl(Pointer p) { super(p); }
	}

	/**
	 * The Error object represents an error that is returned from the library.
	 * Overloaded operators allow comparisons against other Error objects or
	 * the ErrorType enumeration.
	 */
	@Namespace("FlyCapture2") @NoOffset public static class Error extends Pointer {
	    static { Loader.load(); }
	    /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */
	    public Error(Pointer p) { super(p); }
	    /** Native array allocator. Access with {@link Pointer#position(long)}. */
	    public Error(long size) { super((Pointer)null); allocateArray(size); }
	    private native void allocateArray(long size);
	    @Override public Error position(long position) {
	        return (Error)super.position(position);
	    }
	

			/**
			 * Default constructor.
			 */
			public Error() { super((Pointer)null); allocate(); }
			private native void allocate();

			/**
			 * Copy constructor.
			 */
			public Error( @Const @ByRef Error error ) { super((Pointer)null); allocate(error); }
			private native void allocate( @Const @ByRef Error error );

			/**
			 * Default destructor.
			 */

			/**
			 * Assignment operator.
			 */
			public native @ByRef @Name("operator =") Error put( @Const @ByRef Error error );

			/**
			 * Equality operator.
			 */
			public native @Cast("bool") @Name("operator ==") boolean equals( @Const @ByRef Error error );

			/**
			 * Equality operator. This overloaded operator compares the
			 * ErrorType of the Error against the specified ErrorType.
			 */
			public native @Cast("bool") @Name("operator ==") boolean equals( @Cast("const FlyCapture2::ErrorType") int errorType );

			/**
			 * Inequality operator.
			 */
			public native @Cast("bool") @Name("operator !=") boolean notEquals( @Const @ByRef Error error );

			/**
			 * Inequality operator. This overloaded operator compares the
			 * ErrorType of the Error against the specified ErrorType.
			 */
			public native @Cast("bool") @Name("operator !=") boolean notEquals( @Cast("const FlyCapture2::ErrorType") int errorType );

			/**
			 * Retrieve the ErrorType of the error.
			 *
			 * @return The ErrorType of the error.
			 */
			public native @Cast("FlyCapture2::ErrorType") int GetType();

			/**
			 * Retrieve the top level description of the error that occurred.
			 *
			 * @return A string with the error description.
			 */
			public native @Cast("const char*") BytePointer GetDescription();

			/**
			 * Retrieve the line number where the error originated.
			 *
			 * @return The line number.
			 */
			public native @Cast("unsigned int") int GetLine();

			/**
			 * Retrieve the source filename where the error originated.
			 *
			 * @return A string with the file name.
			 */
			public native @Cast("const char*") BytePointer GetFilename();

			/**
			 * Get the error which caused this error.
			 *
			 * @return An error object representing the cause of this error.
			 */
			public native @ByVal Error GetCause();

			/**
			 * Retrieve the build date of the file where the error originated.
			 *
			 * @return A string with the build date and time.
			 */
			public native @Cast("const char*") BytePointer GetBuildDate();

			/**
			 * Retrieve the support information.
			 * It is not implemented in this release.
			 *
			 * @return A string containing support information.
			 */
			public native @Cast("const char*") BytePointer CollectSupportInformation();

			/**
			 * Print a formatted log trace to stderr.
			 */
			public native void PrintErrorTrace();
	}


// #endif // PGR_FC2_ERROR_H


// Parsed from 

//=============================================================================
// Copyright © 2017 FLIR Integrated Imaging Solutions, Inc. All Rights Reserved.
//
// This software is the confidential and proprietary information of FLIR
// Integrated Imaging Solutions, Inc. ("Confidential Information"). You
// shall not disclose such Confidential Information and shall use it only in
// accordance with the terms of the license agreement you entered into
// with FLIR Integrated Imaging Solutions, Inc. (FLIR).
//
// FLIR MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF THE
// SOFTWARE, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
// PURPOSE, OR NON-INFRINGEMENT. FLIR SHALL NOT BE LIABLE FOR ANY DAMAGES
// SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING
// THIS SOFTWARE OR ITS DERIVATIVES.
//=============================================================================

// #ifndef PGR_FC2_BUSMANAGER_H
// #define PGR_FC2_BUSMANAGER_H

// #include "FlyCapture2Platform.h"
// #include "FlyCapture2Defs.h"

    /**
     * Bus event callback function prototype. Defines the syntax of the
     * callback function that is passed into RegisterCallback() and
     * UnregisterCallback(). It is recommended that minimal handling be
     * performed in this callback as it will block internal processing
     * of bus events until it returns.
     */
    public static class BusEventCallback extends FunctionPointer {
        static { Loader.load(); }
        /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */
        public    BusEventCallback(Pointer p) { super(p); }
        protected BusEventCallback() { allocate(); }
        private native void allocate();
        public native void call( Pointer pParameter, @Cast("unsigned int") int serialNumber );
    }

    /**
     * Handle that is returned when registering a callback. It is required
     * when unregistering the callback.
     */
    @Namespace @Name("void") @Opaque public static class CallbackHandle extends Pointer {
        /** Empty constructor. Calls {@code super((Pointer)null)}. */
        public CallbackHandle() { super((Pointer)null); }
        /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */
        public CallbackHandle(Pointer p) { super(p); }
    }

    /**
     * The BusManager class provides the functionality for the user to get an
     * PGRGuid for a desired camera or device easily. Once the
     * camera or device token is found, it can then be used to connect to the
     * camera or device through the camera class or device class. In addition,
     * the BusManager class provides the ability to be notified when a camera
     * or device is added or removed or some event occurs on the PC.
     */
    @Namespace("FlyCapture2") @NoOffset public static class BusManager extends Pointer {
        static { Loader.load(); }
        /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */
        public BusManager(Pointer p) { super(p); }
        /** Native array allocator. Access with {@link Pointer#position(long)}. */
        public BusManager(long size) { super((Pointer)null); allocateArray(size); }
        private native void allocateArray(long size);
        @Override public BusManager position(long position) {
            return (BusManager)super.position(position);
        }
    

            /**
             * Default constructor.
             */
            public BusManager() { super((Pointer)null); allocate(); }
            private native void allocate();

            /**
             * Default destructor.
             */

            /**
             * Fire a bus reset. The actual bus reset is only fired for the
             * specified 1394 bus, but it will effectively cause a global bus
             * reset for the library.
             *
             * @param pGuid PGRGuid of the camera or the device to cause bus reset.
             *
             * @return An Error indicating the success or failure of the function.
             */
            public native @ByVal Error FireBusReset( PGRGuid pGuid);

            /**
             * Gets the number of cameras attached to the PC.
             *
             * @param pNumCameras The number of cameras attached.
             *
             * @return An Error indicating the success or failure of the function.
             */
            public native @ByVal Error GetNumOfCameras( @Cast("unsigned int*") IntPointer pNumCameras );
            public native @ByVal Error GetNumOfCameras( @Cast("unsigned int*") IntBuffer pNumCameras );
            public native @ByVal Error GetNumOfCameras( @Cast("unsigned int*") int[] pNumCameras );

            /**
             * Gets the PGRGuid for a camera with the specified IPv4 address.
             *
             * @param ipAddress IP address to get GUID for.
             * @param pGuid Unique PGRGuid for the camera.
             *
             * @return An Error indicating the success or failure of the function.
             */
            public native @ByVal Error GetCameraFromIPAddress(
                                @ByVal IPAddress ipAddress,
                                PGRGuid pGuid );

            /**
             * Gets the PGRGuid for a camera on the PC. It uniquely identifies
             * the camera specified by the index and is used to identify the camera
             * during a Camera::Connect() call.
             *
             * @param index Zero based index of camera.
             * @param pGuid Unique PGRGuid for the camera.
             *
             * @see GetCameraFromSerialNumber()
             *
             * @return An Error indicating the success or failure of the function.
             */
            public native @ByVal Error GetCameraFromIndex(
                                @Cast("unsigned int") int index,
                                PGRGuid pGuid );

            /**
             * Gets the PGRGuid for a camera on the PC. It uniquely identifies
             * the camera specified by the serial number and is used to identify the camera
             * during a Camera::Connect() call.
             *
             * @param serialNumber Serial number of camera.
             * @param pGuid Unique PGRGuid for the camera.
             *
             * @see GetCameraFromIndex()
             *
             * @return An Error indicating the success or failure of the function.
             */
            public native @ByVal Error GetCameraFromSerialNumber(
                                @Cast("unsigned int") int serialNumber,
                                PGRGuid pGuid );

            /**
             * Gets the serial number of the camera with the specified index.
             *
             * @param index Zero based index of desired camera.
             * @param pSerialNumber Serial number of camera.
             *
             * @return An Error indicating the success or failure of the function.
             */
            public native @ByVal Error GetCameraSerialNumberFromIndex(
                                @Cast("unsigned int") int index,
                                @Cast("unsigned int*") IntPointer pSerialNumber );
            public native @ByVal Error GetCameraSerialNumberFromIndex(
                                @Cast("unsigned int") int index,
                                @Cast("unsigned int*") IntBuffer pSerialNumber );
            public native @ByVal Error GetCameraSerialNumberFromIndex(
                                @Cast("unsigned int") int index,
                                @Cast("unsigned int*") int[] pSerialNumber );

            /**
             * Gets the interface type associated with a PGRGuid. This is useful
             * in situations where there is a need to enumerate all cameras
             * for a particular interface.
             *
             * @param pGuid The PGRGuid to get the interface for.
             * @param pInterfaceType The interface type of the PGRGuid.
             *
             * @return An Error indicating the success or failure of the function.
             */
            public native @ByVal Error GetInterfaceTypeFromGuid(
                                PGRGuid pGuid,
                                @Cast("FlyCapture2::InterfaceType*") IntPointer pInterfaceType );
            public native @ByVal Error GetInterfaceTypeFromGuid(
                                PGRGuid pGuid,
                                @Cast("FlyCapture2::InterfaceType*") IntBuffer pInterfaceType );
            public native @ByVal Error GetInterfaceTypeFromGuid(
                                PGRGuid pGuid,
                                @Cast("FlyCapture2::InterfaceType*") int[] pInterfaceType );

            /**
             * Gets the number of devices. This may include hubs, host controllers
             * and other hardware devices (including cameras).
             *
             * @param pNumDevices The number of devices found.
             *
             * @return An Error indicating the success or failure of the function.
             */
            public native @ByVal Error GetNumOfDevices( @Cast("unsigned int*") IntPointer pNumDevices );
            public native @ByVal Error GetNumOfDevices( @Cast("unsigned int*") IntBuffer pNumDevices );
            public native @ByVal Error GetNumOfDevices( @Cast("unsigned int*") int[] pNumDevices );

            /**
             * Gets the PGRGuid for a device. It uniquely identifies the device
             * specified by the index.
             *
             * @param index Zero based index of device.
             * @param pGuid Unique PGRGuid for the device.
             *
             * @see GetNumOfDevices()
             *
             * @return An Error indicating the success or failure of the function.
             */
            public native @ByVal Error GetDeviceFromIndex(
                                @Cast("unsigned int") int index,
                                PGRGuid pGuid );

            /**
             * Read a phy register on the specified device. The full address
             * to be read from is determined by the page, port and address.
             *
             * @param guid PGRGuid of the device to read from.
             * @param page Page to read from.
             * @param port Port to read from.
             * @param address Address to read from.
             * @param pValue Value read from the phy register.
             *
             * @return An Error indicating the success or failure of the function.
             */
            public native @ByVal Error ReadPhyRegister(
                                @ByVal PGRGuid guid,
                                @Cast("unsigned int") int page,
                                @Cast("unsigned int") int port,
                                @Cast("unsigned int") int address,
                                @Cast("unsigned int*") IntPointer pValue );
            public native @ByVal Error ReadPhyRegister(
                                @ByVal PGRGuid guid,
                                @Cast("unsigned int") int page,
                                @Cast("unsigned int") int port,
                                @Cast("unsigned int") int address,
                                @Cast("unsigned int*") IntBuffer pValue );
            public native @ByVal Error ReadPhyRegister(
                                @ByVal PGRGuid guid,
                                @Cast("unsigned int") int page,
                                @Cast("unsigned int") int port,
                                @Cast("unsigned int") int address,
                                @Cast("unsigned int*") int[] pValue );

            /**
             * Write a phy register on the specified device. The full address
             * to be written to is determined by the page, port and address.
             *
             * @param guid PGRGuid of the device to write to.
             * @param page Page to write to.
             * @param port Port to write to.
             * @param address Address to write to.
             * @param value Value to write to phy register.
             *
             * @return An Error indicating the success or failure of the function.
             */
            public native @ByVal Error WritePhyRegister(
                                @ByVal PGRGuid guid,
                                @Cast("unsigned int") int page,
                                @Cast("unsigned int") int port,
                                @Cast("unsigned int") int address,
                                @Cast("unsigned int") int value );

            /**
             * Read usb link info for the port that the specified device is connected to.
             *
             * @param guid PGRGuid of the device to read from.
             * @param pValue Value read from the card register.
             * 
             * Bit 15:0  = Link %Error Count. Default = 0. This field returns the number of link errors detected by the port.
             * Bit 19:16 = Rx Lane Count. Default = 0. This field that identifies the number of Receive Lanes negotiated by the port.
             * Bit 23:20 = Tx Lane Count. Default = 0. This field that identifies the number of Transmit Lanes negotiated by the port.
             * Bit 31:24 = Reserved.
             *
             * Refer to XHCI 1.1 section 5.4.10 for Port Link Info:
* eXtensible Host Controller interface for USB xHCI *
* * @return An Error indicating the success or failure of the function. */ public native @ByVal Error GetUsbLinkInfo( @ByVal PGRGuid guid, @Cast("unsigned int*") IntPointer pValue ); public native @ByVal Error GetUsbLinkInfo( @ByVal PGRGuid guid, @Cast("unsigned int*") IntBuffer pValue ); public native @ByVal Error GetUsbLinkInfo( @ByVal PGRGuid guid, @Cast("unsigned int*") int[] pValue ); /** * Read usb port status for the port that the specified device is connected to. * * @param guid PGRGuid of the device to read from. * @param pValue Value read from the card register. *
             * Bit 0 = Current Connect Status. Default = 0.
             *         1 = A device is connected to the port
             *         0 = A device is not connected.
             *         This value reflects the current state of the port, and may not correspond directly to the event that caused the Connect Status Change (CSC) bit to be set to 1.
             * Bit 1 = Port Enabled/Disabled. Default = 0. 1 = Enabled. 0 = Disabled.
             * Bit 2 = Reserved.
             * Bit 3 = Over-current Active. Default = 0.
             *         1 = This port currently has an over-current condition.
             *         0 = This port does not have an over-current condition.
             * Bit 4 = Port Reset. Default = 0.
             *         1 = Port Reset signaling is asserted.
             *         0 = Port is not in Reset.
             * Bit 8:5 = Port Link State. Default = RxDetect(5). This field is used to power manage the port and reflects its current link state.
             * Bit 9 = Port Power. Default = 1. This flag reflects a port's logical, power control state.
             *         0 = This port is in the powered-off state.
             *         1 = This port is not in the powered-off state.
             * Bit 13:10 = Port Speed. Default = 0. This field identifies the speed of the connected USB Device. This field is only relevant if a device is connected, in all other cases this field shall indicate Undefined Speed.
             *             0 : Undefined speed
             *             1-15 : Protocol Speed ID (refer to other sections)
             * Bit 15:14 = Port Indicator Control. Default = 0. 0 = Port indicators are off.
             *             1 = Amber. 2 = Green. 3 = Undefined.
             * Bit 16 = Port Link State Write Strobe. Default = 0.
             *          When this bit is set to 1 on a write reference to this register, this flag enables writes to the PLS field.
             * Bit 17 = Connect Status Change. Default = 0.
             *          1 = Change in current connect status. 0 = No change.
             * Bit 18 = Port Enabled/Disabled Change. Default = 0.
             *          1 = change in PED. 0 = No change.
             * Bit 19 = Warm Port Reset Change. Default = 0. This bit is set when Warm Reset processing on this port completes.
             *          0 = No change. 1 = Warm Reset complete.
             * Bit 20 = Over current change. Default = 0.
             *          This bit shall be set to a 1 when there is a 0 to 1 or 1 to 0 transition of Over-current Active.
             * Bit 21 = Port Reset Change. Default = 0. This flag is set to 1 due to a 1 to 0 transition of Port Reset.
             * Bit 22 = Port Link State Change. Default = 0. This flag is set to 1 due to PLS transitions (refer to document)
             * Bit 23 = Port Config %Error Change. Default = 0. This flag indicates that the port failed to configure its link partner.
             *          0 = No change. 1 = Port Config %Error detected.
             * Bit 24 = Cold Attach Status. Default = 0.
             *          1 = Far-end receiver terminations were detected in the disconnected state and the root hub port state machine was unable to advance to the enabled state.
             *          0 - This flag is 0 if PP is 0 or for USB2 protocol parts.
             * Bit 25 = Wake on Connect Enable. Default = 0. Writing this bit to a 1 enables to port to be sensitive to device connects as system wake up events.
             * Bit 26 = Wake on Disconnect Enable. Default = 0. Writing this bit to a 1 enables the port to be sensitive to device disconnects as system wake up events.
             * Bit 27 = Wake on Over-current Enable. Default = 0. Writing this bit to a 1 enables the port to be sensitive to over-current conditions as system wake up events.
             * Bit 29:28 = Reserved
             * Bit 30 = Device Removable. This flag indicates if this port has a removable device attached.
             *          1 = Device is non-removable. 0 = Device is removable.
             * Bit 31 = Warm Port Reset. Default = 0. This flag shall always return 0 when read. Refer to document for writing.
             *
             * Refer to XHCI 1.1 section 5.4.8 for Port Status:
* eXtensible Host Controller interface for USB xHCI *
* * @return An Error indicating the success or failure of the function. */ public native @ByVal Error GetUsbPortStatus( @ByVal PGRGuid guid, @Cast("unsigned int*") IntPointer pValue ); public native @ByVal Error GetUsbPortStatus( @ByVal PGRGuid guid, @Cast("unsigned int*") IntBuffer pValue ); public native @ByVal Error GetUsbPortStatus( @ByVal PGRGuid guid, @Cast("unsigned int*") int[] pValue ); /** * Gets the topology information for the PC. * * @param pNode TopologyNode object that will contain the topology * information. * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error GetTopology( TopologyNode pNode ); /** * Register a callback function that will be called when the * specified callback event occurs. * * @param busEventCallback Pointer to function that will receive the callback. * @param callbackType Type of callback to register for. * @param pParameter Callback parameter to be passed to callback. * @param pCallbackHandle Unique callback handle used for * unregistering callback. * * @see UnregisterCallback() * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error RegisterCallback( BusEventCallback busEventCallback, @Cast("FlyCapture2::BusCallbackType") int callbackType, Pointer pParameter, @ByPtrPtr CallbackHandle pCallbackHandle ); /** * Unregister a callback function. * * @param callbackHandle Unique callback handle. * * @see RegisterCallback() * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error UnregisterCallback( CallbackHandle callbackHandle ); /** * Force a rescan of the buses. This does not trigger a bus reset. * The camera objects will be invalidated only if the camera network * topology is changed (ie. a camera is disconnected or added) * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error RescanBus(); /** * Force the camera with the specific MAC address to the specified * IP address, subnet mask and default gateway. This is useful in * situations where GigE Vision cameras are using IP addresses * in a subnet different from the host's subnet. * * @param macAddress MAC address of the camera. * @param ipAddress IP address to set on the camera. * @param subnetMask Subnet mask to set on the camera. * @param defaultGateway Default gateway to set on the camera. * * @return An Error indicating the success or failure of the function. */ public static native @ByVal Error ForceIPAddressToCamera( @ByVal MACAddress macAddress, @ByVal IPAddress ipAddress, @ByVal IPAddress subnetMask, @ByVal IPAddress defaultGateway ); /** * Force all cameras on the network to be assigned sequential IP addresses * on the same subnet as the netowrk adapters that they are connected to. * This is useful in situations where GigE Vision cameras are using * IP addresses in a subnet different from the host's subnet. * * @return An Error indicating the success or failure of the function. */ public static native @ByVal Error ForceAllIPAddressesAutomatically(); /** * Force a camera on the network to be assigned an IP address * on the same subnet as the netowrk adapters that it is connected to. * This is useful in situations where GigE Vision cameras are using IP * addresses in a subnet different from the host's subnet. * * @return An Error indicating the success or failure of the function. */ public static native @ByVal Error ForceAllIPAddressesAutomatically(@Cast("unsigned int") int serialNumber); /** * Discover all cameras connected to the network even if they reside * on a different subnet. This is useful in situations where GigE Vision * cameras are using IP addresses in a subnet different from the host's * subnet. After discovering the camera, it is easy to use * ForceIPAddressToCamera() to set a different IP configuration. * * @param gigECameras Pointer to an array of CameraInfo structures. * @param arraySize Size of the array. Number of discovered cameras * is returned in the same value. * * @return An Error indicating the success or failure of the function. * If the error is PGRERROR_BUFFER_TOO_SMALL then arraySize will * contain the minimum size needed for gigECameras array. */ public static native @ByVal Error DiscoverGigECameras( CameraInfo gigECameras, @Cast("unsigned int*") IntPointer arraySize ); public static native @ByVal Error DiscoverGigECameras( CameraInfo gigECameras, @Cast("unsigned int*") IntBuffer arraySize ); public static native @ByVal Error DiscoverGigECameras( CameraInfo gigECameras, @Cast("unsigned int*") int[] arraySize ); /** * Query CCP status on camera with corresponding PGRGuid. This is * useful to determine if a GigE camera can be controlled. * * @param pGuid PGRGuid of the camera * @param pControlable Indicates whether camera is controllable * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error IsCameraControlable( PGRGuid pGuid, @Cast("bool*") BoolPointer pControlable ); public native @ByVal Error IsCameraControlable( PGRGuid pGuid, @Cast("bool*") boolean[] pControlable ); } // #endif //PGR_FC2_BUSMANAGER_H // Parsed from //============================================================================= // Copyright ? 2017 FLIR Integrated Imaging Solutions, Inc. All Rights Reserved. // // This software is the confidential and proprietary information of FLIR // Integrated Imaging Solutions, Inc. ("Confidential Information"). You // shall not disclose such Confidential Information and shall use it only in // accordance with the terms of the license agreement you entered into // with FLIR Integrated Imaging Solutions, Inc. (FLIR). // // FLIR MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF THE // SOFTWARE, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR // PURPOSE, OR NON-INFRINGEMENT. FLIR SHALL NOT BE LIABLE FOR ANY DAMAGES // SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING // THIS SOFTWARE OR ITS DERIVATIVES. //============================================================================= //============================================================================= // $Id: CameraBase.h 347612 2017-12-01 20:44:28Z wgallego $ //============================================================================= // #ifndef PGR_FC2_CAMERABASE_H_ // #define PGR_FC2_CAMERABASE_H_ // #include "FlyCapture2Platform.h" // #include "FlyCapture2Defs.h" /** * Image event callback function prototype. Defines the syntax of the * image callback function that is passed into StartCapture(). It is * possible for this function to be called simultaneously. Therefore, * users must make sure that code in the callback is thread safe. */ public static class ImageEventCallback extends FunctionPointer { static { Loader.load(); } /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */ public ImageEventCallback(Pointer p) { super(p); } protected ImageEventCallback() { allocate(); } private native void allocate(); public native void call( Image pImage, @Const Pointer pCallbackData ); } /** * The CameraBase class is an abstract base class that defines a general * interface to a camera. * * \nosubgrouping */ @Namespace("FlyCapture2") @NoOffset public static class CameraBase extends Pointer { static { Loader.load(); } /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */ public CameraBase(Pointer p) { super(p); } /** * Default constructor. */ /** * Default destructor. */ /** * \name Connection and Image Retrieval * * These functions deal with connections and image retrieval from * the camera. */ /*@{*/ /** * Connects the camera object to the camera specified by the GUID. * If the guid is omitted or set to NULL, the connection will be made * to the first camera detected on the PC (i.e. index = 0). * * @param pGuid The unique identifier for a specific camera on the PC. * * @see BusManager::GetCameraFromIndex() * @see BusManager::GetCameraFromSerialNumber() * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error Connect( PGRGuid pGuid/*=NULL*/ ); public native @ByVal Error Connect( ); /** * Disconnects the camera object from the camera. This allows another * physical camera specified by a GUID to be connected to the camera * object. * * @see Connect() * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error Disconnect(); /** * Checks if the camera object is connected to a physical camera * specified by a GUID. * * @see Connect() * @see Disconnect() * * @return Whether Connect() was called on the camera object. */ public native @Cast("bool") boolean IsConnected(); /** * Sets the callback data to be used on completion of image transfer. * To clear the current stored callback data, pass in NULL for both * arguments. * * @param callbackFn A function to be called when a new image is * received. * @param pCallbackData A pointer to data that can be passed to the * callback function. * * @see StartCapture() * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error SetCallback( ImageEventCallback callbackFn, @Const Pointer pCallbackData/*=NULL*/ ); public native @ByVal Error SetCallback( ImageEventCallback callbackFn ); /** * Starts isochronous image capture. It will use either the current * video mode or the most recently set video mode of the camera. * The optional callback function parameter is called on completion of * image transfer. * When a callback function is specified, the grab mode will determine how * images are delivered. * If the grab mode has not been set, or has been set to DROP_FRAMES * the default behavior is to requeue images for DMA if they have * not been delivered by the time the next image transfer completes. * If BUFFER_FRAMES is specified, the next image in the sequence will * be delivered. Note that for the BUFFER_FRAMES case, if delivery * does not keep up with the DMA process, images will be lost. * The default behavior is to perform DROP_FRAMES image delivery * Alternatively, the callback parameter can be set to NULL * and RetrieveBuffer() can be called as a blocking call to get * the image data. * * @param callbackFn A function to be called when a new image is * received. * @param pCallbackData A pointer to data that can be passed to the * callback function. * * @see RetrieveBuffer() * @see StartSyncCapture() * @see StopCapture() * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error StartCapture( ImageEventCallback callbackFn/*=NULL*/, @Const Pointer pCallbackData/*=NULL*/ ); public native @ByVal Error StartCapture( ); /** * Starts isochronous image capture on multiple cameras. On each frame, * the time stamps across the cameras are aligned which means the frames * are synchronized. Note that the cameras must be synchronized by * external means in order for this function to work. This means that * the cameras should either be on the same bus, hardware synchronized * (e.g. through triggering) or Multisync is running. * This function is only used with firewire cameras. * * @param numCameras Number of Camera objects in the ppCameras array. * @param ppCameras Array of pointers to Camera objects containing the * cameras to be started and synchronized. * @param pCallbackFns Array of callback functions for each camera. * @param pCallbackDataArray Array of callback data pointers. * * @see RetrieveBuffer() * @see StartCapture() * @see StopCapture() * * @return An Error indicating the success or failure of the function. */ /** * Retrieves the the next image object containing the next image. * If the grab mode has not been set, or has been set to DROP_FRAMES * the default behavior is to requeue images for DMA if they have * not been retrieved by the time the next image transfer completes. * If BUFFER_FRAMES is specified, the next image in the sequence will * be retrieved. Note that for the BUFFER_FRAMES case, if retrieval * does not keep up with the DMA process, images will be lost. * The default behavior is to perform DROP_FRAMES image retrieval. * * @param pImage Pointer to Image object to store image data. * * @see StartCapture() * @see StopCapture() * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error RetrieveBuffer( Image pImage ); /** * Stops isochronous image transfer and cleans up all associated * resources. * If an image callback function (specified in the StartCapture() call) * is currently executing, StopCapture() will not return until after * the callback has completed. * * @see StartCapture() * @see RetrieveBuffer() * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error StopCapture(); /** * Retrieves the next image event containing the next part of the image. * * @param pImage Pointer to Image object to store image data. * @param eventNumber The event number to wait for. * * @see StartCapture() * @see RetrieveBuffer() * @see StopCapture() * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error WaitForBufferEvent( Image pImage, @Cast("unsigned int") int eventNumber ); /** * Specify user allocated buffers to use as image data buffers. * To prevent image tearing, the size of each buffer should be equal to * ((unsigned int)(bufferSize + packetSize - 1)/packetSize) * packetSize. * The total size should be (size * numBuffers) or larger. * The packet Size that should be used differs between interfaces: * Firewire: Use the Format7 packet size. * Usb2: First round to Format7 packet size then round to 512 bytes. * Usb3: Use a packet size of 1024 bytes. * GigE: No need to do any rounding on GigE * * @param pMemBuffers Pointer to memory buffers to be written to. * @param size The size of each buffer (in bytes). * @param numBuffers Number of buffers in the array. * * @see StartCapture() * @see RetrieveBuffer() * @see StopCapture() * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error SetUserBuffers( @Cast("unsigned char*const") BytePointer pMemBuffers, int size, int numBuffers ); public native @ByVal Error SetUserBuffers( @Cast("unsigned char*const") ByteBuffer pMemBuffers, int size, int numBuffers ); public native @ByVal Error SetUserBuffers( @Cast("unsigned char*const") byte[] pMemBuffers, int size, int numBuffers ); /** * Get the configuration associated with the camera object. * * @param pConfig Pointer to the configuration structure to be filled. * * @see SetConfiguration() * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error GetConfiguration( FC2Config pConfig ); /** * Set the configuration associated with the camera object. * * @param pConfig Pointer to the configuration structure to be used. * * @see GetConfiguration() * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error SetConfiguration( @Const FC2Config pConfig ); /*@}*/ /** * \name Information and Properties * * These functions deal with information and properties can be * retrieved from the camera. */ /*@{*/ /** * Retrieves information from the camera such as serial number, model * name and other camera information. * * @param pCameraInfo Pointer to the camera information structure * to be filled. * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error GetCameraInfo( CameraInfo pCameraInfo ); /** * Retrieves information about the specified camera property. The * property type must be specified in the PropertyInfo structure * passed into the function in order for the function to succeed. * * @param pPropInfo Pointer to the PropertyInfo structure to be filled. * * @see GetProperty() * @see SetProperty() * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error GetPropertyInfo( PropertyInfo pPropInfo ); /** * Reads the settings for the specified property from the camera. The * property type must be specified in the Property structure passed * into the function in order for the function to succeed. If auto * is on, the integer and abs values returned may not be consistent * with each other. * * @param pProp Pointer to the Property structure to be filled. * * @see GetPropertyInfo() * @see SetProperty() * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error GetProperty( Property pProp ); /** * Writes the settings for the specified property to the camera. The * property type must be specified in the Property structure passed * into the function in order for the function to succeed. * The absControl flag controls whether the absolute or integer value * is written to the camera. Use GetPropertyInfo() to query which * options are available for a specific property. * * @param pProp Pointer to the Property structure to be used. * @param broadcast Whether the action should be broadcast. * * @see GetPropertyInfo() * @see GetProperty() * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error SetProperty( @Const Property pProp, @Cast("bool") boolean broadcast/*=false*/ ); public native @ByVal Error SetProperty( @Const Property pProp ); /*@}*/ /** * \name General Purpose Input / Output * * These functions deal with general GPIO pin control on the camera. */ /*@{*/ /** * Get the GPIO pin direction for the specified pin. This is not a * required call when using the trigger or strobe functions as * the pin direction is set automatically internally. * * @param pin Pin to get the direction for. * @param pDirection Direction of the pin. 0 for input, 1 for output. * * @see SetGPIOPinDirection() * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error GetGPIOPinDirection( @Cast("unsigned int") int pin, @Cast("unsigned int*") IntPointer pDirection); public native @ByVal Error GetGPIOPinDirection( @Cast("unsigned int") int pin, @Cast("unsigned int*") IntBuffer pDirection); public native @ByVal Error GetGPIOPinDirection( @Cast("unsigned int") int pin, @Cast("unsigned int*") int[] pDirection); /** * Set the GPIO pin direction for the specified pin. This is useful if * there is a need to set the pin into an input pin (i.e. to read the * voltage) off the pin without setting it as a trigger source. This * is not a required call when using the trigger or strobe functions as * the pin direction is set automatically internally. * * @param pin Pin to get the direction for. * @param direction Direction of the pin. 0 for input, 1 for output. * @param broadcast Whether the action should be broadcast. * * @see GetGPIOPinDirection() * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error SetGPIOPinDirection( @Cast("unsigned int") int pin, @Cast("unsigned int") int direction, @Cast("bool") boolean broadcast/*=false*/ ); public native @ByVal Error SetGPIOPinDirection( @Cast("unsigned int") int pin, @Cast("unsigned int") int direction ); /*@}*/ /** * \name Trigger * * These functions deal with trigger control on the camera. */ /*@{*/ /** * Retrieve trigger information from the camera. * * @param pTriggerModeInfo Structure to receive trigger information. * * @see GetTriggerMode() * @see SetTriggerMode() * @see GetTriggerDelayInfo() * @see GetTriggerDelay() * @see SetTriggerDelay() * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error GetTriggerModeInfo( TriggerModeInfo pTriggerModeInfo ); /** * Retrieve current trigger settings from the camera. * * @param pTriggerMode Structure to receive trigger mode settings. * * @see GetTriggerModeInfo() * @see SetTriggerMode() * @see GetTriggerDelayInfo() * @see GetTriggerDelay() * @see SetTriggerDelay() * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error GetTriggerMode( TriggerMode pTriggerMode ); /** * Set the specified trigger settings to the camera. * * @param pTriggerMode Structure providing trigger mode settings. * @param broadcast Whether the action should be broadcast. * * @see GetTriggerModeInfo() * @see GetTriggerMode() * @see GetTriggerDelayInfo() * @see GetTriggerDelay() * @see SetTriggerDelay() * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error SetTriggerMode( @Const TriggerMode pTriggerMode, @Cast("bool") boolean broadcast/*=false*/ ); public native @ByVal Error SetTriggerMode( @Const TriggerMode pTriggerMode ); /** * Fire the software trigger according to the DCAM specifications. * * @param broadcast Whether the action should be broadcast. * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error FireSoftwareTrigger( @Cast("bool") boolean broadcast/*=false*/ ); public native @ByVal Error FireSoftwareTrigger( ); /** * Retrieve trigger delay information from the camera. * * @param pTriggerDelayInfo Structure to receive trigger delay information. * * @see GetTriggerModeInfo() * @see GetTriggerMode() * @see SetTriggerMode() * @see GetTriggerDelay() * @see SetTriggerDelay() * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error GetTriggerDelayInfo( @Cast("FlyCapture2::TriggerDelayInfo*") PropertyInfo pTriggerDelayInfo ); /** * Retrieve current trigger delay settings from the camera. * * @param pTriggerDelay Structure to receive trigger delay settings. * * @see GetTriggerModeInfo() * @see GetTriggerMode() * @see SetTriggerMode() * @see GetTriggerDelayInfo() * @see SetTriggerDelay() * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error GetTriggerDelay( @Cast("FlyCapture2::TriggerDelay*") Property pTriggerDelay ); /** * Set the specified trigger delay settings to the camera. * * @param pTriggerDelay Structure providing trigger delay settings. * @param broadcast Whether the action should be broadcast. * * @see GetTriggerModeInfo() * @see GetTriggerMode() * @see SetTriggerMode() * @see GetTriggerDelayInfo() * @see GetTriggerDelay() * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error SetTriggerDelay( @Cast("const FlyCapture2::TriggerDelay*") Property pTriggerDelay, @Cast("bool") boolean broadcast/*=false*/ ); public native @ByVal Error SetTriggerDelay( @Cast("const FlyCapture2::TriggerDelay*") Property pTriggerDelay ); /*@}*/ /** * \name Strobe * * These functions deal with strobe control on the camera. */ /*@{*/ /** * Retrieve strobe information from the camera. * * @param pStrobeInfo Structure to receive strobe information. * * @see GetStrobe() * @see SetStrobe() * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error GetStrobeInfo( StrobeInfo pStrobeInfo ); /** * Retrieve current strobe settings from the camera. The strobe pin * must be specified in the structure before being passed in to * the function. * * @param pStrobeControl Structure to receive strobe settings. * * @see GetStrobeInfo() * @see SetStrobe() * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error GetStrobe( StrobeControl pStrobeControl ); /** * Set current strobe settings to the camera. The strobe pin * must be specified in the structure before being passed in to * the function. * * @param pStrobeControl Structure providing strobe settings. * @param broadcast Whether the action should be broadcast. * * @see GetStrobeInfo() * @see GetStrobe() * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error SetStrobe( @Const StrobeControl pStrobeControl, @Cast("bool") boolean broadcast/*=false*/ ); public native @ByVal Error SetStrobe( @Const StrobeControl pStrobeControl ); /*@}*/ /** * \name Look Up Table * * These functions deal with Look Up Table control on the camera. */ /*@{*/ /** * Query if LUT support is available on the camera. Note that some cameras * may report support for the LUT and return an inputBitDepth of 0. In these * cases use log2(numEntries) for the inputBitDepth. * * @param pData The LUT structure to be filled. * * @see EnableLUT() * @see GetLUTChannel() * @see SetLUTChannel() * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error GetLUTInfo( LUTData pData ); /** * Query the read/write status of a single LUT bank. * * @param bank The bank to query. * @param pReadSupported Whether reading from the bank is supported. * @param pWriteSupported Whether writing to the bank is supported. * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error GetLUTBankInfo( @Cast("unsigned int") int bank, @Cast("bool*") BoolPointer pReadSupported, @Cast("bool*") BoolPointer pWriteSupported ); public native @ByVal Error GetLUTBankInfo( @Cast("unsigned int") int bank, @Cast("bool*") boolean[] pReadSupported, @Cast("bool*") boolean[] pWriteSupported ); /** * Get the LUT bank that is currently being used. For cameras with * PGR LUT, the active bank is always 0. * * @param pActiveBank The currently active bank. * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error GetActiveLUTBank( @Cast("unsigned int*") IntPointer pActiveBank ); public native @ByVal Error GetActiveLUTBank( @Cast("unsigned int*") IntBuffer pActiveBank ); public native @ByVal Error GetActiveLUTBank( @Cast("unsigned int*") int[] pActiveBank ); /** * Set the LUT bank that will be used. * * @param activeBank The bank to be set as active. * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error SetActiveLUTBank( @Cast("unsigned int") int activeBank ); /** * Enable or disable LUT functionality on the camera. * * @param on Whether to enable or disable LUT. * * @see GetLUTInfo() * @see GetLUTChannel() * @see SetLUTChannel() * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error EnableLUT( @Cast("bool") boolean on ); /** * Get the LUT channel settings from the camera. * * @param bank Bank to retrieve. * @param channel Channel to retrieve. * @param sizeEntries Number of entries in LUT table to read. * @param pEntries Array to store LUT entries. * * @see GetLUTInfo() * @see EnableLUT() * @see SetLUTChannel() * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error GetLUTChannel( @Cast("unsigned int") int bank, @Cast("unsigned int") int channel, @Cast("unsigned int") int sizeEntries, @Cast("unsigned int*") IntPointer pEntries ); public native @ByVal Error GetLUTChannel( @Cast("unsigned int") int bank, @Cast("unsigned int") int channel, @Cast("unsigned int") int sizeEntries, @Cast("unsigned int*") IntBuffer pEntries ); public native @ByVal Error GetLUTChannel( @Cast("unsigned int") int bank, @Cast("unsigned int") int channel, @Cast("unsigned int") int sizeEntries, @Cast("unsigned int*") int[] pEntries ); /** * Set the LUT channel settings to the camera. * * @param bank Bank to set. * @param channel Channel to set. * @param sizeEntries Number of entries in LUT table to write. This must be the * same size as numEntries returned by GetLutInfo(). * @param pEntries Array containing LUT entries to write. * * @see GetLUTInfo() * @see EnableLUT() * @see GetLUTChannel() * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error SetLUTChannel( @Cast("unsigned int") int bank, @Cast("unsigned int") int channel, @Cast("unsigned int") int sizeEntries, @Cast("const unsigned int*") IntPointer pEntries ); public native @ByVal Error SetLUTChannel( @Cast("unsigned int") int bank, @Cast("unsigned int") int channel, @Cast("unsigned int") int sizeEntries, @Cast("const unsigned int*") IntBuffer pEntries ); public native @ByVal Error SetLUTChannel( @Cast("unsigned int") int bank, @Cast("unsigned int") int channel, @Cast("unsigned int") int sizeEntries, @Cast("const unsigned int*") int[] pEntries ); /*@}*/ /** * \name Memory Channels * * These functions deal with memory channel control on the camera. */ /*@{*/ /** * Retrieve the current memory channel from the camera. * * @param pCurrentChannel Current memory channel. * * @see SaveToMemoryChannel() * @see RestoreFromMemoryChannel() * @see GetMemoryChannelInfo() * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error GetMemoryChannel( @Cast("unsigned int*") IntPointer pCurrentChannel ); public native @ByVal Error GetMemoryChannel( @Cast("unsigned int*") IntBuffer pCurrentChannel ); public native @ByVal Error GetMemoryChannel( @Cast("unsigned int*") int[] pCurrentChannel ); /** * Save the current settings to the specfied current memory channel. * * @param channel Memory channel to save to. * * @see GetMemoryChannel() * @see RestoreFromMemoryChannel() * @see GetMemoryChannelInfo() * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error SaveToMemoryChannel( @Cast("unsigned int") int channel ); /** * Restore the specfied current memory channel. * * @param channel Memory channel to restore from. * * @see GetMemoryChannel() * @see SaveToMemoryChannel() * @see GetMemoryChannelInfo() * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error RestoreFromMemoryChannel( @Cast("unsigned int") int channel ); /** * Query the camera for memory channel support. If the number of * channels is 0, then memory channel support is not available. * * @param pNumChannels Number of memory channels supported. * * @see GetMemoryChannel() * @see SaveToMemoryChannel() * @see RestoreFromMemoryChannel() * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error GetMemoryChannelInfo( @Cast("unsigned int*") IntPointer pNumChannels ); public native @ByVal Error GetMemoryChannelInfo( @Cast("unsigned int*") IntBuffer pNumChannels ); public native @ByVal Error GetMemoryChannelInfo( @Cast("unsigned int*") int[] pNumChannels ); /*@}*/ /** * \name Embedded Image Information * * These functions deal with embedded image information control * on the camera. */ /*@{*/ /** * Get the current status of the embedded image information register, * as well as the availability of each embedded property. * * @param pInfo Structure to be filled. * * @see SetEmbeddedImageInfo() * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error GetEmbeddedImageInfo( EmbeddedImageInfo pInfo ); /** * Sets the on/off values of the embedded image information structure * to the camera. * * @param pInfo Structure to be used. * * @see GetEmbeddedImageInfo() * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error SetEmbeddedImageInfo( EmbeddedImageInfo pInfo ); /*@}*/ /** * \name Register Operation * * These functions deal with register operation on the camera. */ /*@{*/ /** * Write to the specified register on the camera. * * @param address DCAM address to be written to. * @param value The value to be written. * @param broadcast Whether the action should be broadcast. * * @see ReadRegister() * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error WriteRegister( @Cast("unsigned int") int address, @Cast("unsigned int") int value, @Cast("bool") boolean broadcast/*=false*/); public native @ByVal Error WriteRegister( @Cast("unsigned int") int address, @Cast("unsigned int") int value); /** * Read the specified register from the camera. * * @param address DCAM address to be read from. * @param pValue The value that is read. * * @see WriteRegister() * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error ReadRegister( @Cast("unsigned int") int address, @Cast("unsigned int*") IntPointer pValue ); public native @ByVal Error ReadRegister( @Cast("unsigned int") int address, @Cast("unsigned int*") IntBuffer pValue ); public native @ByVal Error ReadRegister( @Cast("unsigned int") int address, @Cast("unsigned int*") int[] pValue ); /** * Write to the specified register block on the camera. * * @param addressHigh Top 16 bits of the 48 bit absolute address to * write to. * @param addressLow Bottom 32 bits of the 48 bits absolute address to * write to. * @param pBuffer Array containing data to be written. * @param length Size of array, in quadlets. * * @see ReadRegisterBlock() * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error WriteRegisterBlock( @Cast("unsigned short") short addressHigh, @Cast("unsigned int") int addressLow, @Cast("const unsigned int*") IntPointer pBuffer, @Cast("unsigned int") int length ); public native @ByVal Error WriteRegisterBlock( @Cast("unsigned short") short addressHigh, @Cast("unsigned int") int addressLow, @Cast("const unsigned int*") IntBuffer pBuffer, @Cast("unsigned int") int length ); public native @ByVal Error WriteRegisterBlock( @Cast("unsigned short") short addressHigh, @Cast("unsigned int") int addressLow, @Cast("const unsigned int*") int[] pBuffer, @Cast("unsigned int") int length ); /** * Read from the specified register block on the camera. * * @param addressHigh Top 16 bits of the 48 bit absolute address to * read from. * @param addressLow Bottom 32 bits of the 48 bits absolute address to * read from. * @param pBuffer Array to store read data. * @param length Size of array, in quadlets. * * @see WriteRegisterBlock() * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error ReadRegisterBlock( @Cast("unsigned short") short addressHigh, @Cast("unsigned int") int addressLow, @Cast("unsigned int*") IntPointer pBuffer, @Cast("unsigned int") int length ); public native @ByVal Error ReadRegisterBlock( @Cast("unsigned short") short addressHigh, @Cast("unsigned int") int addressLow, @Cast("unsigned int*") IntBuffer pBuffer, @Cast("unsigned int") int length ); public native @ByVal Error ReadRegisterBlock( @Cast("unsigned short") short addressHigh, @Cast("unsigned int") int addressLow, @Cast("unsigned int*") int[] pBuffer, @Cast("unsigned int") int length ); /** * Returns a text representation of the register value. * * @param registerVal The register value to query. * * @return The text representation of the register. */ /** * Returns a Timestamp struct containing 1394 CYCLE_TIME information * * @param registerVal The register value to query. * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error GetCycleTime(TimeStamp timeStamp); /* * Returns the camera diagnostic infomation. * * @param pStats Pointer to the CameraStats structure. * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error GetStats( CameraStats pStats ); /* * Reset the camera diagnostic infomation. * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error ResetStats(); /* * Register the camera to issue a custom callback function call for a * specific device event. * * @param pOpts Pointer to the EventOptions structure which defines the * callback function to use, the event for which to register * the device, and a pointer to user data (optional) to be * passed to the callback function. * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error RegisterEvent( EventOptions pOpts ); /* * De-register an event previously registered with the camera. * * @param pOpts Pointer to the EventOptions structure which defines the * callback function to use, the event for which to register * the device, and a pointer to user data (optional) to be * passed to the callback function. The callback function and * user data elements of the EventOptions structure are ignored * in this call, and just the event name within the structure is * used with this function call. * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error DeregisterEvent( EventOptions pOpts ); /* * Register the camera to issue a custom callback function call for a * specific device event. * * @param pOpts Pointer to the EventOptions structure which defines the * callback function to use, the event for which to register * the device, and a pointer to user data (optional) to be * passed to the callback function. The event name element of * the structure is ignored with this function call. If a single * event has already been registered via RegisterEvent(), this * call will fail, as the user could accidentally change the * the internal callback function pointer for a queued event. * The user will need to de-register all registered events, * then call this function again. * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error RegisterAllEvents( EventOptions pOpts ); /* * De-register all events registered with the camera. * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error DeregisterAllEvents( ); } // #endif // PGR_FC2_CAMERABASE_H_ // Parsed from //============================================================================= // Copyright ? 2017 FLIR Integrated Imaging Solutions, Inc. All Rights Reserved. // // This software is the confidential and proprietary information of FLIR // Integrated Imaging Solutions, Inc. ("Confidential Information"). You // shall not disclose such Confidential Information and shall use it only in // accordance with the terms of the license agreement you entered into // with FLIR Integrated Imaging Solutions, Inc. (FLIR). // // FLIR MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF THE // SOFTWARE, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR // PURPOSE, OR NON-INFRINGEMENT. FLIR SHALL NOT BE LIABLE FOR ANY DAMAGES // SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING // THIS SOFTWARE OR ITS DERIVATIVES. //============================================================================= //============================================================================= // $Id: Camera.h 347612 2017-12-01 20:44:28Z wgallego $ //============================================================================= // #ifndef PGR_FC2_CAMERA_H_ // #define PGR_FC2_CAMERA_H_ // #include "CameraBase.h" /** * The Camera object represents a physical camera that uses the IIDC * register set. The object must first be connected to using Connect() * before any other operations can proceed. * * It is possible for more than 1 Camera object to connect to a single * physical camera. However, isochronous transmission to more than * 1 Camera object is not supported. * * \nosubgrouping */ @Namespace("FlyCapture2") public static class Camera extends CameraBase { static { Loader.load(); } /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */ public Camera(Pointer p) { super(p); } /** Native array allocator. Access with {@link Pointer#position(long)}. */ public Camera(long size) { super((Pointer)null); allocateArray(size); } private native void allocateArray(long size); @Override public Camera position(long position) { return (Camera)super.position(position); } /** * Default constructor. */ public Camera() { super((Pointer)null); allocate(); } private native void allocate(); /** * Default destructor. */ /** * \name DCAM Formats * * These functions deal with DCAM video mode and frame rate * on the camera. They are only used for firewire and usb2 cameras. */ /*@{*/ /** * Query the camera to determine if the specified video mode and * frame rate is supported. * * @param videoMode Video mode to check. * @param frameRate Frame rate to check. * @param pSupported Whether the video mode and frame rate is * supported. * * @see GetVideoModeAndFrameRate() * @see SetVideoModeAndFrameRate() * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error GetVideoModeAndFrameRateInfo( @Cast("FlyCapture2::VideoMode") int videoMode, @Cast("FlyCapture2::FrameRate") int frameRate, @Cast("bool*") BoolPointer pSupported); public native @ByVal Error GetVideoModeAndFrameRateInfo( @Cast("FlyCapture2::VideoMode") int videoMode, @Cast("FlyCapture2::FrameRate") int frameRate, @Cast("bool*") boolean[] pSupported); /** * Get the current video mode and frame rate from the camera. If * the camera is in Format7, the video mode will be VIDEOMODE_FORMAT7 * and the frame rate will be FRAMERATE_FORMAT7. * * @param pVideoMode Current video mode. * @param pFrameRate Current frame rate. * * @see GetVideoModeAndFrameRateInfo() * @see SetVideoModeAndFrameRate() * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error GetVideoModeAndFrameRate( @Cast("FlyCapture2::VideoMode*") IntPointer pVideoMode, @Cast("FlyCapture2::FrameRate*") IntPointer pFrameRate ); public native @ByVal Error GetVideoModeAndFrameRate( @Cast("FlyCapture2::VideoMode*") IntBuffer pVideoMode, @Cast("FlyCapture2::FrameRate*") IntBuffer pFrameRate ); public native @ByVal Error GetVideoModeAndFrameRate( @Cast("FlyCapture2::VideoMode*") int[] pVideoMode, @Cast("FlyCapture2::FrameRate*") int[] pFrameRate ); /** * Set the specified video mode and frame rate to the camera. It is * not possible to set the camera to VIDEOMODE_FORMAT7 or * FRAMERATE_FORMAT7. Use the Format7 functions to set the camera * into Format7. * * @param videoMode Video mode to set to camera. * @param frameRate Frame rate to set to camera. * * @see GetVideoModeAndFrameRateInfo() * @see GetVideoModeAndFrameRate() * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error SetVideoModeAndFrameRate( @Cast("FlyCapture2::VideoMode") int videoMode, @Cast("FlyCapture2::FrameRate") int frameRate ); /*@}*/ /** * \name Format7 * * These functions deal with Format7 custom image control on the camera. */ /*@{*/ /** * Retrieve the availability of Format7 custom image mode and the * camera capabilities for the specified Format7 mode. The mode must * be specified in the Format7Info structure in order for the * function to succeed. * * @param pInfo Structure to be filled with the capabilities of the * specified mode and the current state in the specified * mode. * @param pSupported Whether the specified mode is supported. * * @see ValidateFormat7Settings() * @see GetFormat7Configuration() * @see SetFormat7Configuration() * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error GetFormat7Info( Format7Info pInfo, @Cast("bool*") BoolPointer pSupported ); public native @ByVal Error GetFormat7Info( Format7Info pInfo, @Cast("bool*") boolean[] pSupported ); /** * Validates Format7ImageSettings structure and returns valid packet * size information if the image settings are valid. The current * image settings are cached while validation is taking place. The * cached settings are restored when validation is complete. * * @param pImageSettings Structure containing the image settings. * @param pSettingsAreValid Whether the settings are valid. * @param pPacketInfo Packet size information that can be used to * determine a valid packet size. * * @see GetFormat7Info() * @see GetFormat7Configuration() * @see SetFormat7Configuration() * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error ValidateFormat7Settings( @Const Format7ImageSettings pImageSettings, @Cast("bool*") BoolPointer pSettingsAreValid, Format7PacketInfo pPacketInfo ); public native @ByVal Error ValidateFormat7Settings( @Const Format7ImageSettings pImageSettings, @Cast("bool*") boolean[] pSettingsAreValid, Format7PacketInfo pPacketInfo ); /** * Get the current Format7 configuration from the camera. This call * will only succeed if the camera is already in Format7. * * @param pImageSettings Current image settings. * @param pPacketSize Current packet size. * @param pPercentage Current packet size as a percentage. * * @see GetFormat7Info() * @see ValidateFormat7Settings() * @see SetFormat7Configuration() * @see GetVideoModeAndFrameRate() * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error GetFormat7Configuration( Format7ImageSettings pImageSettings, @Cast("unsigned int*") IntPointer pPacketSize, FloatPointer pPercentage ); public native @ByVal Error GetFormat7Configuration( Format7ImageSettings pImageSettings, @Cast("unsigned int*") IntBuffer pPacketSize, FloatBuffer pPercentage ); public native @ByVal Error GetFormat7Configuration( Format7ImageSettings pImageSettings, @Cast("unsigned int*") int[] pPacketSize, float[] pPercentage ); /** * Set the current Format7 configuration to the camera. * * @param pImageSettings Image settings to be written to the camera. * @param packetSize Packet size to be written to the camera. * * @see GetFormat7Info() * @see ValidateFormat7Settings() * @see GetFormat7Configuration() * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error SetFormat7Configuration( @Const Format7ImageSettings pImageSettings, @Cast("unsigned int") int packetSize ); /** * Set the current Format7 configuration to the camera. * * @param pImageSettings Image settings to be written to the camera. * @param percentSpeed Percentage of packet size to be written to * the camera. * * @see GetFormat7Info() * @see ValidateFormat7Settings() * @see GetFormat7Configuration() * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error SetFormat7Configuration( @Const Format7ImageSettings pImageSettings, float percentSpeed ); /*@}*/ /** * The following functions are inherited from CameraBase. See * CameraBase.h for further information. */ public native @ByVal Error Connect( PGRGuid pGuid/*=NULL*/ ); public native @ByVal Error Connect( ); public native @ByVal Error Disconnect(); public native @Cast("bool") boolean IsConnected(); public native @ByVal Error SetCallback( ImageEventCallback callbackFn, @Const Pointer pCallbackData/*=NULL*/ ); public native @ByVal Error SetCallback( ImageEventCallback callbackFn ); public native @ByVal Error StartCapture( ImageEventCallback callbackFn/*=NULL*/, @Const Pointer pCallbackData/*=NULL*/ ); public native @ByVal Error StartCapture( ); public static native @ByVal Error StartSyncCapture( @Cast("unsigned int") int numCameras, @Cast("const FlyCapture2::Camera**") PointerPointer ppCameras, @Cast("FlyCapture2::ImageEventCallback*") @ByPtrPtr ImageEventCallback pCallbackFns/*=NULL*/, @Cast("const void**") PointerPointer pCallbackDataArray/*=NULL*/ ); public static native @ByVal Error StartSyncCapture( @Cast("unsigned int") int numCameras, @Const @ByPtrPtr Camera ppCameras ); public static native @ByVal Error StartSyncCapture( @Cast("unsigned int") int numCameras, @Const @ByPtrPtr Camera ppCameras, @Cast("FlyCapture2::ImageEventCallback*") @ByPtrPtr ImageEventCallback pCallbackFns/*=NULL*/, @Cast("const void**") @ByPtrPtr Pointer pCallbackDataArray/*=NULL*/ ); public native @ByVal Error RetrieveBuffer( Image pImage ); public native @ByVal Error StopCapture(); public native @ByVal Error WaitForBufferEvent( Image pImage, @Cast("unsigned int") int eventNumber ); public native @ByVal Error SetUserBuffers( @Cast("unsigned char*const") BytePointer pMemBuffers, int size, int numBuffers ); public native @ByVal Error SetUserBuffers( @Cast("unsigned char*const") ByteBuffer pMemBuffers, int size, int numBuffers ); public native @ByVal Error SetUserBuffers( @Cast("unsigned char*const") byte[] pMemBuffers, int size, int numBuffers ); public native @ByVal Error GetConfiguration( FC2Config pConfig ); public native @ByVal Error SetConfiguration( @Const FC2Config pConfig ); public native @ByVal Error GetCameraInfo( CameraInfo pCameraInfo ); public native @ByVal Error GetPropertyInfo( PropertyInfo pPropInfo ); public native @ByVal Error GetProperty( Property pProp ); public native @ByVal Error SetProperty( @Const Property pProp, @Cast("bool") boolean broadcast/*=false*/ ); public native @ByVal Error SetProperty( @Const Property pProp ); public native @ByVal Error GetGPIOPinDirection( @Cast("unsigned int") int pin, @Cast("unsigned int*") IntPointer pDirection); public native @ByVal Error GetGPIOPinDirection( @Cast("unsigned int") int pin, @Cast("unsigned int*") IntBuffer pDirection); public native @ByVal Error GetGPIOPinDirection( @Cast("unsigned int") int pin, @Cast("unsigned int*") int[] pDirection); public native @ByVal Error SetGPIOPinDirection( @Cast("unsigned int") int pin, @Cast("unsigned int") int direction, @Cast("bool") boolean broadcast/*=false*/ ); public native @ByVal Error SetGPIOPinDirection( @Cast("unsigned int") int pin, @Cast("unsigned int") int direction ); public native @ByVal Error GetTriggerModeInfo( TriggerModeInfo pTriggerModeInfo ); public native @ByVal Error GetTriggerMode( TriggerMode pTriggerMode ); public native @ByVal Error SetTriggerMode( @Const TriggerMode pTriggerMode, @Cast("bool") boolean broadcast/*=false*/ ); public native @ByVal Error SetTriggerMode( @Const TriggerMode pTriggerMode ); public native @ByVal Error FireSoftwareTrigger( @Cast("bool") boolean broadcast/*=false*/ ); public native @ByVal Error FireSoftwareTrigger( ); public native @ByVal Error GetTriggerDelayInfo( @Cast("FlyCapture2::TriggerDelayInfo*") PropertyInfo pTriggerDelayInfo ); public native @ByVal Error GetTriggerDelay( @Cast("FlyCapture2::TriggerDelay*") Property pTriggerDelay ); public native @ByVal Error SetTriggerDelay( @Cast("const FlyCapture2::TriggerDelay*") Property pTriggerDelay, @Cast("bool") boolean broadcast/*=false*/ ); public native @ByVal Error SetTriggerDelay( @Cast("const FlyCapture2::TriggerDelay*") Property pTriggerDelay ); public native @ByVal Error GetStrobeInfo( StrobeInfo pStrobeInfo ); public native @ByVal Error GetStrobe( StrobeControl pStrobeControl ); public native @ByVal Error SetStrobe( @Const StrobeControl pStrobeControl, @Cast("bool") boolean broadcast/*=false*/ ); public native @ByVal Error SetStrobe( @Const StrobeControl pStrobeControl ); public native @ByVal Error GetLUTInfo( LUTData pData ); public native @ByVal Error GetLUTBankInfo( @Cast("unsigned int") int bank, @Cast("bool*") BoolPointer pReadSupported, @Cast("bool*") BoolPointer pWriteSupported ); public native @ByVal Error GetLUTBankInfo( @Cast("unsigned int") int bank, @Cast("bool*") boolean[] pReadSupported, @Cast("bool*") boolean[] pWriteSupported ); public native @ByVal Error GetActiveLUTBank( @Cast("unsigned int*") IntPointer pActiveBank ); public native @ByVal Error GetActiveLUTBank( @Cast("unsigned int*") IntBuffer pActiveBank ); public native @ByVal Error GetActiveLUTBank( @Cast("unsigned int*") int[] pActiveBank ); public native @ByVal Error SetActiveLUTBank( @Cast("unsigned int") int activeBank ); public native @ByVal Error EnableLUT( @Cast("bool") boolean on ); public native @ByVal Error GetLUTChannel( @Cast("unsigned int") int bank, @Cast("unsigned int") int channel, @Cast("unsigned int") int sizeEntries, @Cast("unsigned int*") IntPointer pEntries ); public native @ByVal Error GetLUTChannel( @Cast("unsigned int") int bank, @Cast("unsigned int") int channel, @Cast("unsigned int") int sizeEntries, @Cast("unsigned int*") IntBuffer pEntries ); public native @ByVal Error GetLUTChannel( @Cast("unsigned int") int bank, @Cast("unsigned int") int channel, @Cast("unsigned int") int sizeEntries, @Cast("unsigned int*") int[] pEntries ); public native @ByVal Error SetLUTChannel( @Cast("unsigned int") int bank, @Cast("unsigned int") int channel, @Cast("unsigned int") int sizeEntries, @Cast("const unsigned int*") IntPointer pEntries ); public native @ByVal Error SetLUTChannel( @Cast("unsigned int") int bank, @Cast("unsigned int") int channel, @Cast("unsigned int") int sizeEntries, @Cast("const unsigned int*") IntBuffer pEntries ); public native @ByVal Error SetLUTChannel( @Cast("unsigned int") int bank, @Cast("unsigned int") int channel, @Cast("unsigned int") int sizeEntries, @Cast("const unsigned int*") int[] pEntries ); public native @ByVal Error GetMemoryChannel( @Cast("unsigned int*") IntPointer pCurrentChannel ); public native @ByVal Error GetMemoryChannel( @Cast("unsigned int*") IntBuffer pCurrentChannel ); public native @ByVal Error GetMemoryChannel( @Cast("unsigned int*") int[] pCurrentChannel ); public native @ByVal Error SaveToMemoryChannel( @Cast("unsigned int") int channel ); public native @ByVal Error RestoreFromMemoryChannel( @Cast("unsigned int") int channel ); public native @ByVal Error GetMemoryChannelInfo( @Cast("unsigned int*") IntPointer pNumChannels ); public native @ByVal Error GetMemoryChannelInfo( @Cast("unsigned int*") IntBuffer pNumChannels ); public native @ByVal Error GetMemoryChannelInfo( @Cast("unsigned int*") int[] pNumChannels ); public native @ByVal Error GetEmbeddedImageInfo( EmbeddedImageInfo pInfo ); public native @ByVal Error SetEmbeddedImageInfo( EmbeddedImageInfo pInfo ); public native @ByVal Error WriteRegister( @Cast("unsigned int") int address, @Cast("unsigned int") int value, @Cast("bool") boolean broadcast/*=false*/); public native @ByVal Error WriteRegister( @Cast("unsigned int") int address, @Cast("unsigned int") int value); public native @ByVal Error ReadRegister( @Cast("unsigned int") int address, @Cast("unsigned int*") IntPointer pValue ); public native @ByVal Error ReadRegister( @Cast("unsigned int") int address, @Cast("unsigned int*") IntBuffer pValue ); public native @ByVal Error ReadRegister( @Cast("unsigned int") int address, @Cast("unsigned int*") int[] pValue ); public native @ByVal Error WriteRegisterBlock( @Cast("unsigned short") short addressHigh, @Cast("unsigned int") int addressLow, @Cast("const unsigned int*") IntPointer pBuffer, @Cast("unsigned int") int length ); public native @ByVal Error WriteRegisterBlock( @Cast("unsigned short") short addressHigh, @Cast("unsigned int") int addressLow, @Cast("const unsigned int*") IntBuffer pBuffer, @Cast("unsigned int") int length ); public native @ByVal Error WriteRegisterBlock( @Cast("unsigned short") short addressHigh, @Cast("unsigned int") int addressLow, @Cast("const unsigned int*") int[] pBuffer, @Cast("unsigned int") int length ); public native @ByVal Error ReadRegisterBlock( @Cast("unsigned short") short addressHigh, @Cast("unsigned int") int addressLow, @Cast("unsigned int*") IntPointer pBuffer, @Cast("unsigned int") int length ); public native @ByVal Error ReadRegisterBlock( @Cast("unsigned short") short addressHigh, @Cast("unsigned int") int addressLow, @Cast("unsigned int*") IntBuffer pBuffer, @Cast("unsigned int") int length ); public native @ByVal Error ReadRegisterBlock( @Cast("unsigned short") short addressHigh, @Cast("unsigned int") int addressLow, @Cast("unsigned int*") int[] pBuffer, @Cast("unsigned int") int length ); public static native @Cast("const char*") BytePointer GetRegisterString( @Cast("unsigned int") int registerVal); public native @ByVal Error GetCycleTime(TimeStamp timeStamp); public native @ByVal Error GetStats( CameraStats pStats ); public native @ByVal Error ResetStats(); public native @ByVal Error RegisterEvent( EventOptions pOpts ); public native @ByVal Error DeregisterEvent( EventOptions pOpts ); public native @ByVal Error RegisterAllEvents( EventOptions pOpts ); public native @ByVal Error DeregisterAllEvents( ); } // #endif // PGR_FC2_CAMERA_H_ // Parsed from //============================================================================= // Copyright ? 2017 FLIR Integrated Imaging Solutions, Inc. All Rights Reserved. // // This software is the confidential and proprietary information of FLIR // Integrated Imaging Solutions, Inc. ("Confidential Information"). You // shall not disclose such Confidential Information and shall use it only in // accordance with the terms of the license agreement you entered into // with FLIR Integrated Imaging Solutions, Inc. (FLIR). // // FLIR MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF THE // SOFTWARE, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR // PURPOSE, OR NON-INFRINGEMENT. FLIR SHALL NOT BE LIABLE FOR ANY DAMAGES // SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING // THIS SOFTWARE OR ITS DERIVATIVES. //============================================================================= //============================================================================= // $Id: GigECamera.h 316355 2017-02-20 23:02:28Z alin $ //============================================================================= // #ifndef PGR_FC2_GIGECAMERA_H_ // #define PGR_FC2_GIGECAMERA_H_ // #include "CameraBase.h" /** * The GigECamera object represents a physical Gigabit Ethernet camera. * The object must first be connected to using Connect() before any * other operations can proceed. * * Please see Camera.h for basic functions that this class inherits from. * * \nosubgrouping */ @Namespace("FlyCapture2") public static class GigECamera extends CameraBase { static { Loader.load(); } /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */ public GigECamera(Pointer p) { super(p); } /** Native array allocator. Access with {@link Pointer#position(long)}. */ public GigECamera(long size) { super((Pointer)null); allocateArray(size); } private native void allocateArray(long size); @Override public GigECamera position(long position) { return (GigECamera)super.position(position); } /** * Default constructor. */ public GigECamera() { super((Pointer)null); allocate(); } private native void allocate(); /** * Default destructor. */ /** * \name GVCP Register Operation * * These functions deal with GVCP register operation on the camera. */ /*@{*/ /** * Write a GVCP register. * * @param address GVCP address to be written to. * @param value The value to be written. * @param broadcast Whether the action should be broadcast. * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error WriteGVCPRegister( @Cast("unsigned int") int address, @Cast("unsigned int") int value, @Cast("bool") boolean broadcast/*=false*/); public native @ByVal Error WriteGVCPRegister( @Cast("unsigned int") int address, @Cast("unsigned int") int value); /** * Read a GVCP register. * * @param address GVCP address to be read from. * @param pValue The value that is read. * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error ReadGVCPRegister( @Cast("unsigned int") int address, @Cast("unsigned int*") IntPointer pValue ); public native @ByVal Error ReadGVCPRegister( @Cast("unsigned int") int address, @Cast("unsigned int*") IntBuffer pValue ); public native @ByVal Error ReadGVCPRegister( @Cast("unsigned int") int address, @Cast("unsigned int*") int[] pValue ); /** * Write a GVCP register block. * * @param address GVCP address to be write to. * @param pBuffer Array containing data to be written. * @param length Size of array, in quadlets. * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error WriteGVCPRegisterBlock( @Cast("unsigned int") int address, @Cast("const unsigned int*") IntPointer pBuffer, @Cast("unsigned int") int length ); public native @ByVal Error WriteGVCPRegisterBlock( @Cast("unsigned int") int address, @Cast("const unsigned int*") IntBuffer pBuffer, @Cast("unsigned int") int length ); public native @ByVal Error WriteGVCPRegisterBlock( @Cast("unsigned int") int address, @Cast("const unsigned int*") int[] pBuffer, @Cast("unsigned int") int length ); /** * Read a GVCP register block. * * @param address GVCP address to be read from. * @param pBuffer Array for data to be read into. * @param length Size of array, in quadlets. * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error ReadGVCPRegisterBlock( @Cast("unsigned int") int address, @Cast("unsigned int*") IntPointer pBuffer, @Cast("unsigned int") int length ); public native @ByVal Error ReadGVCPRegisterBlock( @Cast("unsigned int") int address, @Cast("unsigned int*") IntBuffer pBuffer, @Cast("unsigned int") int length ); public native @ByVal Error ReadGVCPRegisterBlock( @Cast("unsigned int") int address, @Cast("unsigned int*") int[] pBuffer, @Cast("unsigned int") int length ); /** * Write a GVCP Memory block. * * @param address GVCP address to be write to. * @param pBuffer Array containing data to be written in increments. * @param length Size of array, in quadlets. * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error WriteGVCPMemory( @Cast("unsigned int") int address, @Cast("const unsigned char*") BytePointer pBuffer, @Cast("unsigned int") int length ); public native @ByVal Error WriteGVCPMemory( @Cast("unsigned int") int address, @Cast("const unsigned char*") ByteBuffer pBuffer, @Cast("unsigned int") int length ); public native @ByVal Error WriteGVCPMemory( @Cast("unsigned int") int address, @Cast("const unsigned char*") byte[] pBuffer, @Cast("unsigned int") int length ); /** * Read a GVCP memory block. * * @param address GVCP address to be read from. * @param pBuffer Array for data to be read into. * @param length Size of array, in quadlets. * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error ReadGVCPMemory( @Cast("unsigned int") int address, @Cast("unsigned char*") BytePointer pBuffer, @Cast("unsigned int") int length ); public native @ByVal Error ReadGVCPMemory( @Cast("unsigned int") int address, @Cast("unsigned char*") ByteBuffer pBuffer, @Cast("unsigned int") int length ); public native @ByVal Error ReadGVCPMemory( @Cast("unsigned int") int address, @Cast("unsigned char*") byte[] pBuffer, @Cast("unsigned int") int length ); /*@}*/ /** * \name GigE property manipulation * * These functions deal with GigE properties. */ /*@{*/ /** * Get the specified GigEProperty. The GigEPropertyType field must * be set in order for this function to succeed. * * @param pGigEProp The GigE property to get. * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error GetGigEProperty( GigEProperty pGigEProp ); /** * Set the specified GigEProperty. The GigEPropertyType field must * be set in order for this function to succeed. * * @param pGigEProp The GigE property to set. * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error SetGigEProperty( @Const GigEProperty pGigEProp ); /** * Discover the largest packet size that works for the network link * between the PC and the camera. This is useful in cases where * there may be multiple links between the PC and the camera and * there is a possiblity of a component not supporting the * recommended jumbo frame packet size of 9000. * * @param packetSize The maximum packet size supported by the link. * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error DiscoverGigEPacketSize( @Cast("unsigned int*") IntPointer packetSize ); public native @ByVal Error DiscoverGigEPacketSize( @Cast("unsigned int*") IntBuffer packetSize ); public native @ByVal Error DiscoverGigEPacketSize( @Cast("unsigned int*") int[] packetSize ); /*@}*/ /** * \name GigE image settings * * These functions deal with GigE image setting. */ /*@{*/ /** * Check if the particular imaging mode is supported by the camera. * * @param mode The mode to check. * @param isSupported Whether the mode is supported. * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error QueryGigEImagingMode( @Cast("FlyCapture2::Mode") int mode, @Cast("bool*") BoolPointer isSupported ); public native @ByVal Error QueryGigEImagingMode( @Cast("FlyCapture2::Mode") int mode, @Cast("bool*") boolean[] isSupported ); /** * Get the current imaging mode on the camera. * * @param mode Current imaging mode on the camera. * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error GetGigEImagingMode( @Cast("FlyCapture2::Mode*") IntPointer mode ); public native @ByVal Error GetGigEImagingMode( @Cast("FlyCapture2::Mode*") IntBuffer mode ); public native @ByVal Error GetGigEImagingMode( @Cast("FlyCapture2::Mode*") int[] mode ); /** * Set the current imaging mode to the camera. This should only be * done when the camera is not streaming images. * * @param mode Imaging mode to set to the camera. * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error SetGigEImagingMode( @Cast("FlyCapture2::Mode") int mode ); /** * Get information about the image settings possible on the camera. * * @param pInfo Image settings information. * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error GetGigEImageSettingsInfo( GigEImageSettingsInfo pInfo ); /** * Get the current image settings on the camera. * * @param pImageSettings Current image settings on camera. * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error GetGigEImageSettings( GigEImageSettings pImageSettings ); /** * Set the image settings specified to the camera. * * @param pImageSettings Image settings to set to camera. * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error SetGigEImageSettings( @Const GigEImageSettings pImageSettings ); /*@}*/ /** * \name GigE image binning settings * * These functions deal with GigE image binning settings. */ /*@{*/ /** * Get the current binning settings on the camera. * * @param horzBinnningValue Current horizontal binning value. * @param vertBinnningValue Current vertical binning value. * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error GetGigEImageBinningSettings( @Cast("unsigned int*") IntPointer horzBinnningValue, @Cast("unsigned int*") IntPointer vertBinnningValue ); public native @ByVal Error GetGigEImageBinningSettings( @Cast("unsigned int*") IntBuffer horzBinnningValue, @Cast("unsigned int*") IntBuffer vertBinnningValue ); public native @ByVal Error GetGigEImageBinningSettings( @Cast("unsigned int*") int[] horzBinnningValue, @Cast("unsigned int*") int[] vertBinnningValue ); /** * Set the specified binning values to the camera. It is recommended * that GetGigEImageSettingsInfo() be called after this function * succeeds to retrieve the new image settings information for * the new binning mode. * * @param horzBinnningValue Horizontal binning value. * @param vertBinnningValue Vertical binning value. * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error SetGigEImageBinningSettings( @Cast("unsigned int") int horzBinnningValue, @Cast("unsigned int") int vertBinnningValue ); /*@}*/ /** * \name GigE image stream configuration * * These functions deal with GigE image stream configuration. */ /*@{*/ /** * Get the number of stream channels present on the camera. * * @param numChannels Number of stream channels present. * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error GetNumStreamChannels( @Cast("unsigned int*") IntPointer numChannels ); public native @ByVal Error GetNumStreamChannels( @Cast("unsigned int*") IntBuffer numChannels ); public native @ByVal Error GetNumStreamChannels( @Cast("unsigned int*") int[] numChannels ); /** * Get the stream channel information for the specified channel. * * @param channel Channel number to use. * @param pChannel Stream channel information for the specified channel. * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error GetGigEStreamChannelInfo( @Cast("unsigned int") int channel, GigEStreamChannel pChannel ); /** * Set the stream channel information for the specified channel. * * Note that the source UDP port of the stream channel is read-only. * * @param channel Channel number to use. * @param pChannel Stream channel information to use for the specified channel. * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error SetGigEStreamChannelInfo( @Cast("unsigned int") int channel, GigEStreamChannel pChannel ); /** * Get the current gige config on the camera. * * @param pGigEConfig Current configuration on camera. * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error GetGigEConfig( GigEConfig pGigEConfig ); /** * Set the gige config specified to the camera. * * @param pGigEConfig configuration to set to camera. * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error SetGigEConfig( @Const GigEConfig pGigEConfig ); /*@}*/ /** * The following functions are inherited from CameraBase. See * CameraBase.h for further information. */ public native @ByVal Error Connect( PGRGuid pGuid/*=NULL*/ ); public native @ByVal Error Connect( ); public native @ByVal Error Disconnect(); public native @Cast("bool") boolean IsConnected(); public native @ByVal Error SetCallback( ImageEventCallback callbackFn, @Const Pointer pCallbackData/*=NULL*/ ); public native @ByVal Error SetCallback( ImageEventCallback callbackFn ); public native @ByVal Error StartCapture( ImageEventCallback callbackFn/*=NULL*/, @Const Pointer pCallbackData/*=NULL*/ ); public native @ByVal Error StartCapture( ); /** * StartSyncCapture() with GigE Cameras is not supported. * This function has been deprecated and will be removed * in a future version of FlyCapture. */ public static native @ByVal Error StartSyncCapture( @Cast("unsigned int") int numCameras, @Cast("const FlyCapture2::GigECamera**") PointerPointer ppCameras, @Cast("FlyCapture2::ImageEventCallback*") @ByPtrPtr ImageEventCallback pCallbackFns/*=NULL*/, @Cast("const void**") PointerPointer pCallbackDataArray/*=NULL*/ ); public static native @ByVal Error StartSyncCapture( @Cast("unsigned int") int numCameras, @Const @ByPtrPtr GigECamera ppCameras ); public static native @ByVal Error StartSyncCapture( @Cast("unsigned int") int numCameras, @Const @ByPtrPtr GigECamera ppCameras, @Cast("FlyCapture2::ImageEventCallback*") @ByPtrPtr ImageEventCallback pCallbackFns/*=NULL*/, @Cast("const void**") @ByPtrPtr Pointer pCallbackDataArray/*=NULL*/ ); public native @ByVal Error RetrieveBuffer( Image pImage ); public native @ByVal Error StopCapture(); public native @ByVal Error WaitForBufferEvent( Image pImage, @Cast("unsigned int") int eventNumber ); public native @ByVal Error SetUserBuffers( @Cast("unsigned char*const") BytePointer pMemBuffers, int size, int numBuffers ); public native @ByVal Error SetUserBuffers( @Cast("unsigned char*const") ByteBuffer pMemBuffers, int size, int numBuffers ); public native @ByVal Error SetUserBuffers( @Cast("unsigned char*const") byte[] pMemBuffers, int size, int numBuffers ); public native @ByVal Error GetConfiguration( FC2Config pConfig ); public native @ByVal Error SetConfiguration( @Const FC2Config pConfig ); public native @ByVal Error GetCameraInfo( CameraInfo pCameraInfo ); public native @ByVal Error GetPropertyInfo( PropertyInfo pPropInfo ); public native @ByVal Error GetProperty( Property pProp ); public native @ByVal Error SetProperty( @Const Property pProp, @Cast("bool") boolean broadcast/*=false*/ ); public native @ByVal Error SetProperty( @Const Property pProp ); public native @ByVal Error GetGPIOPinDirection( @Cast("unsigned int") int pin, @Cast("unsigned int*") IntPointer pDirection); public native @ByVal Error GetGPIOPinDirection( @Cast("unsigned int") int pin, @Cast("unsigned int*") IntBuffer pDirection); public native @ByVal Error GetGPIOPinDirection( @Cast("unsigned int") int pin, @Cast("unsigned int*") int[] pDirection); public native @ByVal Error SetGPIOPinDirection( @Cast("unsigned int") int pin, @Cast("unsigned int") int direction, @Cast("bool") boolean broadcast/*=false*/ ); public native @ByVal Error SetGPIOPinDirection( @Cast("unsigned int") int pin, @Cast("unsigned int") int direction ); public native @ByVal Error GetTriggerModeInfo( TriggerModeInfo pTriggerModeInfo ); public native @ByVal Error GetTriggerMode( TriggerMode pTriggerMode ); public native @ByVal Error SetTriggerMode( @Const TriggerMode pTriggerMode, @Cast("bool") boolean broadcast/*=false*/ ); public native @ByVal Error SetTriggerMode( @Const TriggerMode pTriggerMode ); public native @ByVal Error FireSoftwareTrigger( @Cast("bool") boolean broadcast/*=false*/ ); public native @ByVal Error FireSoftwareTrigger( ); public native @ByVal Error GetTriggerDelayInfo( @Cast("FlyCapture2::TriggerDelayInfo*") PropertyInfo pTriggerDelayInfo ); public native @ByVal Error GetTriggerDelay( @Cast("FlyCapture2::TriggerDelay*") Property pTriggerDelay ); public native @ByVal Error SetTriggerDelay( @Cast("const FlyCapture2::TriggerDelay*") Property pTriggerDelay, @Cast("bool") boolean broadcast/*=false*/ ); public native @ByVal Error SetTriggerDelay( @Cast("const FlyCapture2::TriggerDelay*") Property pTriggerDelay ); public native @ByVal Error GetStrobeInfo( StrobeInfo pStrobeInfo ); public native @ByVal Error GetStrobe( StrobeControl pStrobeControl ); public native @ByVal Error SetStrobe( @Const StrobeControl pStrobeControl, @Cast("bool") boolean broadcast/*=false*/ ); public native @ByVal Error SetStrobe( @Const StrobeControl pStrobeControl ); public native @ByVal Error GetLUTInfo( LUTData pData ); public native @ByVal Error GetLUTBankInfo( @Cast("unsigned int") int bank, @Cast("bool*") BoolPointer pReadSupported, @Cast("bool*") BoolPointer pWriteSupported ); public native @ByVal Error GetLUTBankInfo( @Cast("unsigned int") int bank, @Cast("bool*") boolean[] pReadSupported, @Cast("bool*") boolean[] pWriteSupported ); public native @ByVal Error GetActiveLUTBank( @Cast("unsigned int*") IntPointer pActiveBank ); public native @ByVal Error GetActiveLUTBank( @Cast("unsigned int*") IntBuffer pActiveBank ); public native @ByVal Error GetActiveLUTBank( @Cast("unsigned int*") int[] pActiveBank ); public native @ByVal Error SetActiveLUTBank( @Cast("unsigned int") int activeBank ); public native @ByVal Error EnableLUT( @Cast("bool") boolean on ); public native @ByVal Error GetLUTChannel( @Cast("unsigned int") int bank, @Cast("unsigned int") int channel, @Cast("unsigned int") int sizeEntries, @Cast("unsigned int*") IntPointer pEntries ); public native @ByVal Error GetLUTChannel( @Cast("unsigned int") int bank, @Cast("unsigned int") int channel, @Cast("unsigned int") int sizeEntries, @Cast("unsigned int*") IntBuffer pEntries ); public native @ByVal Error GetLUTChannel( @Cast("unsigned int") int bank, @Cast("unsigned int") int channel, @Cast("unsigned int") int sizeEntries, @Cast("unsigned int*") int[] pEntries ); public native @ByVal Error SetLUTChannel( @Cast("unsigned int") int bank, @Cast("unsigned int") int channel, @Cast("unsigned int") int sizeEntries, @Cast("const unsigned int*") IntPointer pEntries ); public native @ByVal Error SetLUTChannel( @Cast("unsigned int") int bank, @Cast("unsigned int") int channel, @Cast("unsigned int") int sizeEntries, @Cast("const unsigned int*") IntBuffer pEntries ); public native @ByVal Error SetLUTChannel( @Cast("unsigned int") int bank, @Cast("unsigned int") int channel, @Cast("unsigned int") int sizeEntries, @Cast("const unsigned int*") int[] pEntries ); public native @ByVal Error GetMemoryChannel( @Cast("unsigned int*") IntPointer pCurrentChannel ); public native @ByVal Error GetMemoryChannel( @Cast("unsigned int*") IntBuffer pCurrentChannel ); public native @ByVal Error GetMemoryChannel( @Cast("unsigned int*") int[] pCurrentChannel ); public native @ByVal Error SaveToMemoryChannel( @Cast("unsigned int") int channel ); public native @ByVal Error RestoreFromMemoryChannel( @Cast("unsigned int") int channel ); public native @ByVal Error GetMemoryChannelInfo( @Cast("unsigned int*") IntPointer pNumChannels ); public native @ByVal Error GetMemoryChannelInfo( @Cast("unsigned int*") IntBuffer pNumChannels ); public native @ByVal Error GetMemoryChannelInfo( @Cast("unsigned int*") int[] pNumChannels ); public native @ByVal Error GetEmbeddedImageInfo( EmbeddedImageInfo pInfo ); public native @ByVal Error SetEmbeddedImageInfo( EmbeddedImageInfo pInfo ); public native @ByVal Error WriteRegister( @Cast("unsigned int") int address, @Cast("unsigned int") int value, @Cast("bool") boolean broadcast/*=false*/); public native @ByVal Error WriteRegister( @Cast("unsigned int") int address, @Cast("unsigned int") int value); public native @ByVal Error ReadRegister( @Cast("unsigned int") int address, @Cast("unsigned int*") IntPointer pValue ); public native @ByVal Error ReadRegister( @Cast("unsigned int") int address, @Cast("unsigned int*") IntBuffer pValue ); public native @ByVal Error ReadRegister( @Cast("unsigned int") int address, @Cast("unsigned int*") int[] pValue ); public native @ByVal Error WriteRegisterBlock( @Cast("unsigned short") short addressHigh, @Cast("unsigned int") int addressLow, @Cast("const unsigned int*") IntPointer pBuffer, @Cast("unsigned int") int length ); public native @ByVal Error WriteRegisterBlock( @Cast("unsigned short") short addressHigh, @Cast("unsigned int") int addressLow, @Cast("const unsigned int*") IntBuffer pBuffer, @Cast("unsigned int") int length ); public native @ByVal Error WriteRegisterBlock( @Cast("unsigned short") short addressHigh, @Cast("unsigned int") int addressLow, @Cast("const unsigned int*") int[] pBuffer, @Cast("unsigned int") int length ); public native @ByVal Error ReadRegisterBlock( @Cast("unsigned short") short addressHigh, @Cast("unsigned int") int addressLow, @Cast("unsigned int*") IntPointer pBuffer, @Cast("unsigned int") int length ); public native @ByVal Error ReadRegisterBlock( @Cast("unsigned short") short addressHigh, @Cast("unsigned int") int addressLow, @Cast("unsigned int*") IntBuffer pBuffer, @Cast("unsigned int") int length ); public native @ByVal Error ReadRegisterBlock( @Cast("unsigned short") short addressHigh, @Cast("unsigned int") int addressLow, @Cast("unsigned int*") int[] pBuffer, @Cast("unsigned int") int length ); public static native @Cast("const char*") BytePointer GetRegisterString( @Cast("unsigned int") int registerVal); public native @ByVal Error GetCycleTime(TimeStamp timeStamp); public native @ByVal Error GetStats( CameraStats pStats ); public native @ByVal Error ResetStats(); public native @ByVal Error RegisterEvent( EventOptions pOpts ); public native @ByVal Error DeregisterEvent( EventOptions pOpts ); public native @ByVal Error RegisterAllEvents( EventOptions pOpts ); public native @ByVal Error DeregisterAllEvents( ); } // #endif // PGR_FC2_GIGECAMERA_H_ // Parsed from //============================================================================= // Copyright ? 2017 FLIR Integrated Imaging Solutions, Inc. All Rights Reserved. // // This software is the confidential and proprietary information of FLIR // Integrated Imaging Solutions, Inc. ("Confidential Information"). You // shall not disclose such Confidential Information and shall use it only in // accordance with the terms of the license agreement you entered into // with FLIR Integrated Imaging Solutions, Inc. (FLIR). // // FLIR MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF THE // SOFTWARE, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR // PURPOSE, OR NON-INFRINGEMENT. FLIR SHALL NOT BE LIABLE FOR ANY DAMAGES // SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING // THIS SOFTWARE OR ITS DERIVATIVES. //============================================================================= //============================================================================= // $Id: Image.h 316355 2017-02-20 23:02:28Z alin $ //============================================================================= // #ifndef PGR_FC2_IMAGE_H // #define PGR_FC2_IMAGE_H // #include "FlyCapture2Platform.h" // #include "FlyCapture2Defs.h" /** * The Image class is used to retrieve images from a camera, convert * between multiple pixel formats and save images to disk. Operations on * Image objects are not guaranteed to be thread safe. It is recommended * that operations on Image objects be protected by thread synchronization * constructs such as mutexes. */ @Namespace("FlyCapture2") @NoOffset public static class Image extends Pointer { static { Loader.load(); } /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */ public Image(Pointer p) { super(p); } /** Native array allocator. Access with {@link Pointer#position(long)}. */ public Image(long size) { super((Pointer)null); allocateArray(size); } private native void allocateArray(long size); @Override public Image position(long position) { return (Image)super.position(position); } /** * Set the default color processing algorithm. This method will be * used for any image with the DEFAULT algorithm set. The method used * is determined at the time of the Convert() call, therefore the most * recent execution of this function will take precedence. The default * setting is shared within the current process. * * @param defaultMethod The color processing algorithm to set. * * @see GetDefaultColorProcessing() * * @return An Error indicating the success or failure of the function. */ public static native @ByVal Error SetDefaultColorProcessing( @Cast("FlyCapture2::ColorProcessingAlgorithm") int defaultMethod ); /** * Get the default color processing algorithm. * * @see SetDefaultColorProcessing() * * @return The default color processing algorithm. */ public static native @Cast("FlyCapture2::ColorProcessingAlgorithm") int GetDefaultColorProcessing(); /** * Set the default output pixel format. This format will be used for any * call to Convert() that does not specify an output format. The format * used will be determined at the time of the Convert() call, therefore * the most recent execution of this function will take precedence. * The default is shared within the current process. * * @param format The output pixel format to set. * * @see GetDefaultOutputFormat() * * @return The default color processing algorithm. */ public static native @ByVal Error SetDefaultOutputFormat( @Cast("FlyCapture2::PixelFormat") int format ); /** * Get the default output pixel format. * * @see SetDefaultOutputFormat() * * @return The default pixel format. */ public static native @Cast("FlyCapture2::PixelFormat") int GetDefaultOutputFormat(); /** * Calculate the bits per pixel for the specified pixel format. * * @param format The pixel format. * * @return The bits per pixel. */ public static native @Cast("unsigned int") int DetermineBitsPerPixel( @Cast("FlyCapture2::PixelFormat") int format ); /** * Default constructor. */ public Image() { super((Pointer)null); allocate(); } private native void allocate(); /** * Construct an Image object with the specified arguments. * Ownership of the image buffer is not transferred to the Image object. * It is the user's responsibility to delete the buffer when it is * no longer in use. * * @param rows Rows in the image. * @param cols Columns in the image. * @param stride Stride of the image buffer. * @param pData Pointer to the image buffer. * @param dataSize Size of the image buffer. * @param format Pixel format. * @param bayerFormat Format of the Bayer tiled raw image. */ public Image( @Cast("unsigned int") int rows, @Cast("unsigned int") int cols, @Cast("unsigned int") int stride, @Cast("unsigned char*") BytePointer pData, @Cast("unsigned int") int dataSize, @Cast("FlyCapture2::PixelFormat") int format, @Cast("FlyCapture2::BayerTileFormat") int bayerFormat/*=FlyCapture2::NONE*/ ) { super((Pointer)null); allocate(rows, cols, stride, pData, dataSize, format, bayerFormat); } private native void allocate( @Cast("unsigned int") int rows, @Cast("unsigned int") int cols, @Cast("unsigned int") int stride, @Cast("unsigned char*") BytePointer pData, @Cast("unsigned int") int dataSize, @Cast("FlyCapture2::PixelFormat") int format, @Cast("FlyCapture2::BayerTileFormat") int bayerFormat/*=FlyCapture2::NONE*/ ); public Image( @Cast("unsigned int") int rows, @Cast("unsigned int") int cols, @Cast("unsigned int") int stride, @Cast("unsigned char*") BytePointer pData, @Cast("unsigned int") int dataSize, @Cast("FlyCapture2::PixelFormat") int format ) { super((Pointer)null); allocate(rows, cols, stride, pData, dataSize, format); } private native void allocate( @Cast("unsigned int") int rows, @Cast("unsigned int") int cols, @Cast("unsigned int") int stride, @Cast("unsigned char*") BytePointer pData, @Cast("unsigned int") int dataSize, @Cast("FlyCapture2::PixelFormat") int format ); public Image( @Cast("unsigned int") int rows, @Cast("unsigned int") int cols, @Cast("unsigned int") int stride, @Cast("unsigned char*") ByteBuffer pData, @Cast("unsigned int") int dataSize, @Cast("FlyCapture2::PixelFormat") int format, @Cast("FlyCapture2::BayerTileFormat") int bayerFormat/*=FlyCapture2::NONE*/ ) { super((Pointer)null); allocate(rows, cols, stride, pData, dataSize, format, bayerFormat); } private native void allocate( @Cast("unsigned int") int rows, @Cast("unsigned int") int cols, @Cast("unsigned int") int stride, @Cast("unsigned char*") ByteBuffer pData, @Cast("unsigned int") int dataSize, @Cast("FlyCapture2::PixelFormat") int format, @Cast("FlyCapture2::BayerTileFormat") int bayerFormat/*=FlyCapture2::NONE*/ ); public Image( @Cast("unsigned int") int rows, @Cast("unsigned int") int cols, @Cast("unsigned int") int stride, @Cast("unsigned char*") ByteBuffer pData, @Cast("unsigned int") int dataSize, @Cast("FlyCapture2::PixelFormat") int format ) { super((Pointer)null); allocate(rows, cols, stride, pData, dataSize, format); } private native void allocate( @Cast("unsigned int") int rows, @Cast("unsigned int") int cols, @Cast("unsigned int") int stride, @Cast("unsigned char*") ByteBuffer pData, @Cast("unsigned int") int dataSize, @Cast("FlyCapture2::PixelFormat") int format ); public Image( @Cast("unsigned int") int rows, @Cast("unsigned int") int cols, @Cast("unsigned int") int stride, @Cast("unsigned char*") byte[] pData, @Cast("unsigned int") int dataSize, @Cast("FlyCapture2::PixelFormat") int format, @Cast("FlyCapture2::BayerTileFormat") int bayerFormat/*=FlyCapture2::NONE*/ ) { super((Pointer)null); allocate(rows, cols, stride, pData, dataSize, format, bayerFormat); } private native void allocate( @Cast("unsigned int") int rows, @Cast("unsigned int") int cols, @Cast("unsigned int") int stride, @Cast("unsigned char*") byte[] pData, @Cast("unsigned int") int dataSize, @Cast("FlyCapture2::PixelFormat") int format, @Cast("FlyCapture2::BayerTileFormat") int bayerFormat/*=FlyCapture2::NONE*/ ); public Image( @Cast("unsigned int") int rows, @Cast("unsigned int") int cols, @Cast("unsigned int") int stride, @Cast("unsigned char*") byte[] pData, @Cast("unsigned int") int dataSize, @Cast("FlyCapture2::PixelFormat") int format ) { super((Pointer)null); allocate(rows, cols, stride, pData, dataSize, format); } private native void allocate( @Cast("unsigned int") int rows, @Cast("unsigned int") int cols, @Cast("unsigned int") int stride, @Cast("unsigned char*") byte[] pData, @Cast("unsigned int") int dataSize, @Cast("FlyCapture2::PixelFormat") int format ); /** * Construct an Image object with the specified arguments. * Ownership of the image buffer is not transferred to the Image object. * It is the user's responsibility to delete the buffer when it is * no longer in use. * * @param rows Rows in the image. * @param cols Columns in the image. * @param stride Stride of the image buffer. * @param pData Pointer to the image buffer. * @param dataSize Size of the image buffer. * @param receivedDataSize Actual size of data. * @param format Pixel format. * @param bayerFormat Format of the Bayer tiled raw image. */ public Image( @Cast("unsigned int") int rows, @Cast("unsigned int") int cols, @Cast("unsigned int") int stride, @Cast("unsigned char*") BytePointer pData, @Cast("unsigned int") int dataSize, @Cast("unsigned int") int receivedDataSize, @Cast("FlyCapture2::PixelFormat") int format, @Cast("FlyCapture2::BayerTileFormat") int bayerFormat/*=FlyCapture2::NONE*/ ) { super((Pointer)null); allocate(rows, cols, stride, pData, dataSize, receivedDataSize, format, bayerFormat); } private native void allocate( @Cast("unsigned int") int rows, @Cast("unsigned int") int cols, @Cast("unsigned int") int stride, @Cast("unsigned char*") BytePointer pData, @Cast("unsigned int") int dataSize, @Cast("unsigned int") int receivedDataSize, @Cast("FlyCapture2::PixelFormat") int format, @Cast("FlyCapture2::BayerTileFormat") int bayerFormat/*=FlyCapture2::NONE*/ ); public Image( @Cast("unsigned int") int rows, @Cast("unsigned int") int cols, @Cast("unsigned int") int stride, @Cast("unsigned char*") ByteBuffer pData, @Cast("unsigned int") int dataSize, @Cast("unsigned int") int receivedDataSize, @Cast("FlyCapture2::PixelFormat") int format, @Cast("FlyCapture2::BayerTileFormat") int bayerFormat/*=FlyCapture2::NONE*/ ) { super((Pointer)null); allocate(rows, cols, stride, pData, dataSize, receivedDataSize, format, bayerFormat); } private native void allocate( @Cast("unsigned int") int rows, @Cast("unsigned int") int cols, @Cast("unsigned int") int stride, @Cast("unsigned char*") ByteBuffer pData, @Cast("unsigned int") int dataSize, @Cast("unsigned int") int receivedDataSize, @Cast("FlyCapture2::PixelFormat") int format, @Cast("FlyCapture2::BayerTileFormat") int bayerFormat/*=FlyCapture2::NONE*/ ); public Image( @Cast("unsigned int") int rows, @Cast("unsigned int") int cols, @Cast("unsigned int") int stride, @Cast("unsigned char*") byte[] pData, @Cast("unsigned int") int dataSize, @Cast("unsigned int") int receivedDataSize, @Cast("FlyCapture2::PixelFormat") int format, @Cast("FlyCapture2::BayerTileFormat") int bayerFormat/*=FlyCapture2::NONE*/ ) { super((Pointer)null); allocate(rows, cols, stride, pData, dataSize, receivedDataSize, format, bayerFormat); } private native void allocate( @Cast("unsigned int") int rows, @Cast("unsigned int") int cols, @Cast("unsigned int") int stride, @Cast("unsigned char*") byte[] pData, @Cast("unsigned int") int dataSize, @Cast("unsigned int") int receivedDataSize, @Cast("FlyCapture2::PixelFormat") int format, @Cast("FlyCapture2::BayerTileFormat") int bayerFormat/*=FlyCapture2::NONE*/ ); /** * Construct an Image object with the specified arguments. * Ownership of the image buffer is not transferred to the Image object. * It is the user's responsibility to delete the buffer when it is * no longer in use. * * @param pData Pointer to the image buffer. * @param dataSize Size of the image buffer. */ public Image( @Cast("unsigned char*") BytePointer pData, @Cast("unsigned int") int dataSize) { super((Pointer)null); allocate(pData, dataSize); } private native void allocate( @Cast("unsigned char*") BytePointer pData, @Cast("unsigned int") int dataSize); public Image( @Cast("unsigned char*") ByteBuffer pData, @Cast("unsigned int") int dataSize) { super((Pointer)null); allocate(pData, dataSize); } private native void allocate( @Cast("unsigned char*") ByteBuffer pData, @Cast("unsigned int") int dataSize); public Image( @Cast("unsigned char*") byte[] pData, @Cast("unsigned int") int dataSize) { super((Pointer)null); allocate(pData, dataSize); } private native void allocate( @Cast("unsigned char*") byte[] pData, @Cast("unsigned int") int dataSize); /** * Construct an Image object with the specified arguments. * * @param rows Rows in the image. * @param cols Columns in the image. * @param format Pixel format. * @param bayerFormat Format of the Bayer tiled raw image. */ public Image( @Cast("unsigned int") int rows, @Cast("unsigned int") int cols, @Cast("FlyCapture2::PixelFormat") int format, @Cast("FlyCapture2::BayerTileFormat") int bayerFormat/*=FlyCapture2::NONE*/ ) { super((Pointer)null); allocate(rows, cols, format, bayerFormat); } private native void allocate( @Cast("unsigned int") int rows, @Cast("unsigned int") int cols, @Cast("FlyCapture2::PixelFormat") int format, @Cast("FlyCapture2::BayerTileFormat") int bayerFormat/*=FlyCapture2::NONE*/ ); public Image( @Cast("unsigned int") int rows, @Cast("unsigned int") int cols, @Cast("FlyCapture2::PixelFormat") int format ) { super((Pointer)null); allocate(rows, cols, format); } private native void allocate( @Cast("unsigned int") int rows, @Cast("unsigned int") int cols, @Cast("FlyCapture2::PixelFormat") int format ); /** * Copy constructor. Both images will point to the same image buffer * internally. */ public Image( @Const @ByRef Image image ) { super((Pointer)null); allocate(image); } private native void allocate( @Const @ByRef Image image ); /** * Default destructor. The internal image buffer will be released if * there are no other Image objects holding a reference to it. This * will also allow the buffer to be requeued internally. */ /** * Assignment operator. Both images will point to the same image buffer * internally. If the Image already has a buffer attached to it, it will * will be released. * * @param image The image to copy from. */ public native @ByRef @Name("operator =") Image put( @Const @ByRef Image image ); /** * Indexing operator. * * @param index The index of the byte to return. * * @return The address of the specified byte from the image data. */ public native @Cast("unsigned char*") @Name("operator []") BytePointer get( @Cast("unsigned int") int index ); /** * Indexing operator. * * @param row The row of the pixel to return. * @param col The column of the pixel to return. * * @return The address of the specified byte from the image data. */ public native @Cast("unsigned char*") @Name("operator ()") BytePointer apply( @Cast("unsigned int") int row, @Cast("unsigned int") int col ); /** * Perform a deep copy of the Image. After this operation, the image * contents and member variables will be the same. The Images will not * share a buffer. The Image's current buffer will not be released. * * @param pImage The Image to copy the data from. * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error DeepCopy( @Const Image pImage ); /** * Sets the dimensions of the image object. * * @param rows Number of rows to set. * @param cols Number of cols to set. * @param stride Stride to set. * @param pixelFormat Pixel format to set. * @param bayerFormat Bayer tile format to set. * * @see GetDimensions() * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error SetDimensions( @Cast("unsigned int") int rows, @Cast("unsigned int") int cols, @Cast("unsigned int") int stride, @Cast("FlyCapture2::PixelFormat") int pixelFormat, @Cast("FlyCapture2::BayerTileFormat") int bayerFormat ); /** * Set the data of the Image object. * Ownership of the image buffer is not transferred to the Image object. * It is the user's responsibility to delete the buffer when it is * no longer in use. * * @param pData Pointer to the image buffer. * @param dataSize Size of the image buffer. */ public native @ByVal Error SetData( @Cast("const unsigned char*") BytePointer pData, @Cast("unsigned int") int dataSize ); public native @ByVal Error SetData( @Cast("const unsigned char*") ByteBuffer pData, @Cast("unsigned int") int dataSize ); public native @ByVal Error SetData( @Cast("const unsigned char*") byte[] pData, @Cast("unsigned int") int dataSize ); /** * Set the block id of the Image object. * * @param blockId The blockId to assign to the image. */ public native @ByVal Error SetBlockId( @Cast("const unsigned int") int blockId); /** * get the block id of the Image object. * * @return The blockId assigned to the image. */ public native @Cast("unsigned int") int GetBlockId(); /** * Get the current pixel format. * * @return The current pixel format. */ public native @Cast("FlyCapture2::PixelFormat") int GetPixelFormat(); /** * Get the current color processing algorithm. * * @see SetColorProcessing() * * @return The current color processing algorithm. */ public native @Cast("FlyCapture2::ColorProcessingAlgorithm") int GetColorProcessing(); /** * Set the color processing algorithm. This should be set on the * input Image object. * * @param colorProc The color processing algorithm to use. * * @see GetColorProcessing() * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error SetColorProcessing( @Cast("FlyCapture2::ColorProcessingAlgorithm") int colorProc ); /** * Get the number of columns in the image. * * @return The number of columns. */ public native @Cast("unsigned int") int GetCols(); /** * Get the number of rows in the image. * * @return The number of rows. */ public native @Cast("unsigned int") int GetRows(); /** * Get the stride in the image. * * @return The stride (The number of bytes between rows of the image). */ public native @Cast("unsigned int") int GetStride(); /** * Get the bits per pixel of the image. * * @return The bits per pixel. */ public native @Cast("unsigned int") int GetBitsPerPixel(); /** * Get the Bayer tile format of the image. * * @return The Bayer tile format. */ public native @Cast("FlyCapture2::BayerTileFormat") int GetBayerTileFormat(); /** * Get the size of the buffer associated with the image, in bytes. * * @return The size of the buffer, in bytes. */ public native @Cast("unsigned int") int GetDataSize(); /** * Get the size of the compressed data, in bytes. A compressed image * will have a maximum size equal to GetDataSize(), but may actually * contain less data, depending on the compression level. * For uncompressed images, a value smaller than the data size may * indicate lost data. * * @return The size of the compressed data, in bytes. 0 when camera * not sending compressed data. */ public native @Cast("unsigned int") int GetReceivedDataSize(); /** * Get the image dimensions associated with the image. * * @param pRows Number of rows. * @param pCols Number of columns. * @param pStride The stride. * @param pPixelFormat Pixel format. * @param pBayerFormat Bayer tile format. */ public native void GetDimensions( @Cast("unsigned int*") IntPointer pRows, @Cast("unsigned int*") IntPointer pCols/*=NULL*/, @Cast("unsigned int*") IntPointer pStride/*=NULL*/, @Cast("FlyCapture2::PixelFormat*") IntPointer pPixelFormat/*=NULL*/, @Cast("FlyCapture2::BayerTileFormat*") IntPointer pBayerFormat/*=NULL*/ ); public native void GetDimensions( @Cast("unsigned int*") IntPointer pRows ); public native void GetDimensions( @Cast("unsigned int*") IntBuffer pRows, @Cast("unsigned int*") IntBuffer pCols/*=NULL*/, @Cast("unsigned int*") IntBuffer pStride/*=NULL*/, @Cast("FlyCapture2::PixelFormat*") IntBuffer pPixelFormat/*=NULL*/, @Cast("FlyCapture2::BayerTileFormat*") IntBuffer pBayerFormat/*=NULL*/ ); public native void GetDimensions( @Cast("unsigned int*") IntBuffer pRows ); public native void GetDimensions( @Cast("unsigned int*") int[] pRows, @Cast("unsigned int*") int[] pCols/*=NULL*/, @Cast("unsigned int*") int[] pStride/*=NULL*/, @Cast("FlyCapture2::PixelFormat*") int[] pPixelFormat/*=NULL*/, @Cast("FlyCapture2::BayerTileFormat*") int[] pBayerFormat/*=NULL*/ ); public native void GetDimensions( @Cast("unsigned int*") int[] pRows ); /** * Get a pointer to the data associated with the image. This function * is considered unsafe. The pointer returned could be invalidated if * the buffer is resized or released. The pointer may also be * invalidated if the Image object is passed to * Camera::RetrieveBuffer(). It is recommended that a Image::DeepCopy() * be performed if a seperate copy of the Image data is required * for further processing. * * @return A pointer to the image data. */ public native @Cast("unsigned char*") BytePointer GetData(); /** * Get the metadata associated with the image. This includes * embedded image information. * * @return Metadata associated with the image. */ public native @ByVal ImageMetadata GetMetadata(); /** * Calculate statistics associated with the image. In order to collect * statistics for a particular channel, the enabled flag for the * channel must be set to true. Statistics can only be collected for * images in Mono8, Mono16, RGB, RGBU, BGR and BGRU. * * @param pStatistics The ImageStatistics object to hold the statistics. * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error CalculateStatistics( ImageStatistics pStatistics ); /** * Get the timestamp data associated with the image. * * @return Timestamp data associated with the image. */ public native @ByVal TimeStamp GetTimeStamp(); /** * Save the image to the specified file name with the file format * specified. * * @param pFilename Filename to save image with. * @param format File format to save in. * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error Save( @Cast("const char*") BytePointer pFilename, @Cast("FlyCapture2::ImageFileFormat") int format/*=FlyCapture2::FROM_FILE_EXT*/ ); public native @ByVal Error Save( @Cast("const char*") BytePointer pFilename ); public native @ByVal Error Save( String pFilename, @Cast("FlyCapture2::ImageFileFormat") int format/*=FlyCapture2::FROM_FILE_EXT*/ ); public native @ByVal Error Save( String pFilename ); /** * Save the image to the specified file name with the options specified. * * @param pFilename Filename to save image with. * @param pOption Options to use while saving image. * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error Save( @Cast("const char*") BytePointer pFilename, PNGOption pOption ); public native @ByVal Error Save( String pFilename, PNGOption pOption ); /** * Save the image to the specified file name with the options specified. * * @param pFilename Filename to save image with. * @param pOption Options to use while saving image. * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error Save( @Cast("const char*") BytePointer pFilename, PPMOption pOption ); public native @ByVal Error Save( String pFilename, PPMOption pOption ); /** * Save the image to the specified file name with the options specified. * * @param pFilename Filename to save image with. * @param pOption Options to use while saving image. * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error Save( @Cast("const char*") BytePointer pFilename, PGMOption pOption ); public native @ByVal Error Save( String pFilename, PGMOption pOption ); /** * Save the image to the specified file name with the options specified. * * @param pFilename Filename to save image with. * @param pOption Options to use while saving image. * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error Save( @Cast("const char*") BytePointer pFilename, TIFFOption pOption ); public native @ByVal Error Save( String pFilename, TIFFOption pOption ); /** * Save the image to the specified file name with the options specified. * * @param pFilename Filename to save image with. * @param pOption Options to use while saving image. * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error Save( @Cast("const char*") BytePointer pFilename, JPEGOption pOption ); public native @ByVal Error Save( String pFilename, JPEGOption pOption ); /** * Save the image to the specified file name with the options specified. * * @param pFilename Filename to save image with. * @param pOption Options to use while saving image. * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error Save( @Cast("const char*") BytePointer pFilename, JPG2Option pOption ); public native @ByVal Error Save( String pFilename, JPG2Option pOption ); /** * Save the image to the specified file name with the options specified. * * @param pFilename Filename to save image with. * @param pOption Options to use while saving image. * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error Save( @Cast("const char*") BytePointer pFilename, BMPOption pOption ); public native @ByVal Error Save( String pFilename, BMPOption pOption ); /** * Converts the current image buffer to the specified output format and * stores the result in the specified image. The destination image * does not need to be configured in any way before the call is made. * * @param format Output format of the converted image. * @param pDestImage Destination image. * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error Convert( @Cast("FlyCapture2::PixelFormat") int format, Image pDestImage ); /** * Converts the current image buffer to the specified output format and * stores the result in the specified image. The destination image * does not need to be configured in anyway before the call is made. * * @param pDestImage Destination image. * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error Convert( Image pDestImage ); /** * Release the buffer associated with the Image. If no buffer is * associated, the function does nothing. * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error ReleaseBuffer(); } // #endif //PGR_FC2_IMAGE_H // Parsed from //============================================================================= // Copyright ? 2017 FLIR Integrated Imaging Solutions, Inc. All Rights Reserved. // // This software is the confidential and proprietary information of FLIR // Integrated Imaging Solutions, Inc. ("Confidential Information"). You // shall not disclose such Confidential Information and shall use it only in // accordance with the terms of the license agreement you entered into // with FLIR Integrated Imaging Solutions, Inc. (FLIR). // // FLIR MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF THE // SOFTWARE, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR // PURPOSE, OR NON-INFRINGEMENT. FLIR SHALL NOT BE LIABLE FOR ANY DAMAGES // SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING // THIS SOFTWARE OR ITS DERIVATIVES. //============================================================================= //============================================================================= // $Id: Utilities.h 316355 2017-02-20 23:02:28Z alin $ //============================================================================= // #ifndef PGR_FC2_UTILITIES_H_ // #define PGR_FC2_UTILITIES_H_ // #include "FlyCapture2Platform.h" // #include "FlyCapture2Defs.h" // #include /** Possible operating systems. */ /** enum FlyCapture2::OSType */ public static final int /** All Windows 32-bit variants. */ WINDOWS_X86 = 0, /** All Windows 64-bit variants. */ WINDOWS_X64 = 1, /** All Linux 32-bit variants. */ LINUX_X86 = 2, /** All Linux 32-bit variants. */ LINUX_X64 = 3, /** Mac OSX. */ MAC = 4, /** Unknown operating system. */ UNKNOWN_OS = 5, OSTYPE_FORCE_32BITS = FULL_32BIT_VALUE; /** Possible byte orders. */ /** enum FlyCapture2::ByteOrder */ public static final int BYTE_ORDER_LITTLE_ENDIAN = 0, BYTE_ORDER_BIG_ENDIAN = 1, BYTE_ORDER_FORCE_32BITS = FULL_32BIT_VALUE; /** Description of the system. */ @Namespace("FlyCapture2") public static class SystemInfo extends Pointer { static { Loader.load(); } /** Default native constructor. */ public SystemInfo() { super((Pointer)null); allocate(); } /** Native array allocator. Access with {@link Pointer#position(long)}. */ public SystemInfo(long size) { super((Pointer)null); allocateArray(size); } /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */ public SystemInfo(Pointer p) { super(p); } private native void allocate(); private native void allocateArray(long size); @Override public SystemInfo position(long position) { return (SystemInfo)super.position(position); } /** Operating system type as described by OSType. */ public native @Cast("FlyCapture2::OSType") int osType(); public native SystemInfo osType(int osType); /** Detailed description of the operating system. */ public native @Cast("char") byte osDescription(int i); public native SystemInfo osDescription(int i, byte osDescription); @MemberGetter public native @Cast("char*") BytePointer osDescription(); /** Byte order of the system. */ public native @Cast("FlyCapture2::ByteOrder") int byteOrder(); public native SystemInfo byteOrder(int byteOrder); /** Amount of memory available on the system. */ public native @Cast("size_t") long sysMemSize(); public native SystemInfo sysMemSize(long sysMemSize); /** Detailed description of the CPU. */ public native @Cast("char") byte cpuDescription(int i); public native SystemInfo cpuDescription(int i, byte cpuDescription); @MemberGetter public native @Cast("char*") BytePointer cpuDescription(); /** Number of cores on all CPUs on the system. */ public native @Cast("size_t") long numCpuCores(); public native SystemInfo numCpuCores(long numCpuCores); /** List of drivers used. */ public native @Cast("char") byte driverList(int i); public native SystemInfo driverList(int i, byte driverList); @MemberGetter public native @Cast("char*") BytePointer driverList(); /** List of libraries used. */ public native @Cast("char") byte libraryList(int i); public native SystemInfo libraryList(int i, byte libraryList); @MemberGetter public native @Cast("char*") BytePointer libraryList(); /** Detailed description of the GPU. */ public native @Cast("char") byte gpuDescription(int i); public native SystemInfo gpuDescription(int i, byte gpuDescription); @MemberGetter public native @Cast("char*") BytePointer gpuDescription(); /** Screen resolution width in pixels. */ public native @Cast("size_t") long screenWidth(); public native SystemInfo screenWidth(long screenWidth); /** Screen resolution height in pixels. */ public native @Cast("size_t") long screenHeight(); public native SystemInfo screenHeight(long screenHeight); /** Reserved for future use. */ public native @Cast("unsigned int") int reserved(int i); public native SystemInfo reserved(int i, int reserved); @MemberGetter public native @Cast("unsigned int*") IntPointer reserved(); } /** * Async command callback function prototype. Defines the syntax of the * async command function that is passed into LaunchCommandAsync(). */ public static class AsyncCommandCallback extends FunctionPointer { static { Loader.load(); } /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */ public AsyncCommandCallback(Pointer p) { super(p); } protected AsyncCommandCallback() { allocate(); } private native void allocate(); public native void call( @ByVal Error retError, Pointer pUserData ); } /** * The Utility class is generally used to query for general system * information such as operating system, available memory etc. * It can also be used to launch browsers, CHM viewers or terminal commands. */ @Namespace("FlyCapture2") public static class Utilities extends Pointer { static { Loader.load(); } /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */ public Utilities(Pointer p) { super(p); } /** * Check for driver compatibility for the given camera guid. * * @param guid Pointer to the guid of the device to check. * * @return PGR_NO_ERROR if the library is compatible with the currently * loaded driver, otherwise an error indicating the type of failure. */ public static native @ByVal Error CheckDriver(@Const PGRGuid guid); /** * Get the driver's name for a device * * @param guid Pointer to the guid of the device to check. * @param deviceName The device name will be returned in this string * * @return An Error indicating the success or failure of the function. */ public static native @ByVal Error GetDriverDeviceName(@Const PGRGuid guid, @StdString @ByRef BytePointer deviceName); /** * Get system information. * * @param pSystemInfo Structure to receive system information. * * @return An Error indicating the success or failure of the function. */ public static native @ByVal Error GetSystemInfo( SystemInfo pSystemInfo ); /** * Get library version. * * @param pVersion Structure to receive the library version. * * @return An Error indicating the success or failure of the function. */ public static native @ByVal Error GetLibraryVersion( FC2Version pVersion ); /** * Launch a URL in the system default browser. * * @param pAddress URL to open in browser. * * @return An Error indicating the success or failure of the function. */ public static native @ByVal Error LaunchBrowser( @Cast("const char*") BytePointer pAddress ); public static native @ByVal Error LaunchBrowser( String pAddress ); /** * Open a CHM file in the system default CHM viewer. * * @param pFileName Filename of CHM file to open. * * @return An Error indicating the success or failure of the function. */ public static native @ByVal Error LaunchHelp( @Cast("const char*") BytePointer pFileName ); public static native @ByVal Error LaunchHelp( String pFileName ); /** * Execute a command in the terminal. This is a blocking call that * will return when the command completes. * * @param pCommand Command to execute. * * @see LaunchCommandAsync() * * @return An Error indicating the success or failure of the function. */ public static native @ByVal Error LaunchCommand( @Cast("const char*") BytePointer pCommand ); public static native @ByVal Error LaunchCommand( String pCommand ); /** * Execute a command in the terminal. This is a non-blocking call that * will return immediately. The return value of the command can be * retrieved in the callback. * * @param pCommand Command to execute. * @param pCallback Callback to fire when command is complete. * @param pUserData Data pointer to pass to callback. * * @see LaunchCommand() * * @return An Error indicating the success or failure of the function. */ public static native @ByVal Error LaunchCommandAsync( @Cast("const char*") BytePointer pCommand, AsyncCommandCallback pCallback, Pointer pUserData ); public static native @ByVal Error LaunchCommandAsync( String pCommand, AsyncCommandCallback pCallback, Pointer pUserData ); } // #endif // PGR_FC2_UTILITIES_H_ // Parsed from //============================================================================= // Copyright ? 2017 FLIR Integrated Imaging Solutions, Inc. All Rights Reserved. // // This software is the confidential and proprietary information of FLIR // Integrated Imaging Solutions, Inc. ("Confidential Information"). You // shall not disclose such Confidential Information and shall use it only in // accordance with the terms of the license agreement you entered into // with FLIR Integrated Imaging Solutions, Inc. (FLIR). // // FLIR MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF THE // SOFTWARE, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR // PURPOSE, OR NON-INFRINGEMENT. FLIR SHALL NOT BE LIABLE FOR ANY DAMAGES // SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING // THIS SOFTWARE OR ITS DERIVATIVES. //============================================================================= //============================================================================= // $Id: TopologyNode.h 316355 2017-02-20 23:02:28Z alin $ //============================================================================= // #ifndef PGR_FC2_TOPOLOGYNODE_H // #define PGR_FC2_TOPOLOGYNODE_H // #include "FlyCapture2Platform.h" // #include "FlyCapture2Defs.h" /** * The TopologyNode class contains topology information that can be * used to generate a tree structure of all cameras and devices connected * to a computer. */ @Namespace("FlyCapture2") @NoOffset public static class TopologyNode extends Pointer { static { Loader.load(); } /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */ public TopologyNode(Pointer p) { super(p); } /** Native array allocator. Access with {@link Pointer#position(long)}. */ public TopologyNode(long size) { super((Pointer)null); allocateArray(size); } private native void allocateArray(long size); @Override public TopologyNode position(long position) { return (TopologyNode)super.position(position); } /** * Possible states of a port on a node. */ /** enum FlyCapture2::TopologyNode::PortType */ public static final int NOT_CONNECTED = 1, CONNECTED_TO_PARENT = 2, CONNECTED_TO_CHILD = 3; /** * Type of node. */ /** enum FlyCapture2::TopologyNode::NodeType */ public static final int COMPUTER = 0, BUS = 1, CAMERA = 2, NODE = 3; /** * Default constructor. */ public TopologyNode() { super((Pointer)null); allocate(); } private native void allocate(); /** * Constructor. * * @param guid The PGRGuid of the node (if applicable). * @param deviceId Device ID of the node. * @param nodeType Type of the node. * @param interfaceType Interface type of the node. */ public TopologyNode( @ByVal PGRGuid guid, int deviceId, @Cast("FlyCapture2::TopologyNode::NodeType") int nodeType, @Cast("FlyCapture2::InterfaceType") int interfaceType ) { super((Pointer)null); allocate(guid, deviceId, nodeType, interfaceType); } private native void allocate( @ByVal PGRGuid guid, int deviceId, @Cast("FlyCapture2::TopologyNode::NodeType") int nodeType, @Cast("FlyCapture2::InterfaceType") int interfaceType ); /** * Default destructor. */ /** * Copy constructor. */ public TopologyNode( @Const @ByRef TopologyNode other ) { super((Pointer)null); allocate(other); } private native void allocate( @Const @ByRef TopologyNode other ); /** * Assignment operator. * * @param other The TopologyNode to copy from. */ public native @ByRef @Name("operator =") TopologyNode put( @Const @ByRef TopologyNode other ); /** * Get the PGRGuid associated with the node. * * @return PGRGuid of the node. */ public native @ByVal PGRGuid GetGuid(); /** * Get the device ID associated with the node. * * @return Device ID of the node. */ public native int GetDeviceId(); /** * Get the node type associated with the node. * * @return Node type of the node. */ public native @Cast("FlyCapture2::TopologyNode::NodeType") int GetNodeType(); /** * Get the interface type associated with the node. * * @return Interface type of the node. */ public native @Cast("FlyCapture2::InterfaceType") int GetInterfaceType(); /** * Get the number of child nodes. * * @return Number of child nodes. */ public native @Cast("unsigned int") int GetNumChildren(); /** * Get child node located at the specified position. * * @param position Position of the node. * * @return TopologyNode at the specified position. */ public native @ByVal TopologyNode GetChild( @Cast("unsigned int") int position ); /** * Add the specified TopologyNode as a child of the node. * * @param childNode The TopologyNode to add. */ public native void AddChild( @ByVal TopologyNode childNode ); /** * Get the number of ports. * * @return Number of ports. */ public native @Cast("unsigned int") int GetNumPorts(); /** * Get type of port located at the specified position. * * @param position Position of the port. * * @return PortType at the specified position. */ public native @Cast("FlyCapture2::TopologyNode::PortType") int GetPortType( @Cast("unsigned int") int position ); /** * Add the specified PortType as a port of the node. * * @param childPort The port to add. */ public native void AddPortType( @Cast("FlyCapture2::TopologyNode::PortType") int childPort ); /** * Assign a PGRGuid and device ID to the node. * * @param guid PGRGuid to be assigned. * @param deviceId Device ID to be assigned. * * @return Whether the data was successfully set to the node. */ public native @Cast("bool") boolean AssignGuidToNode( @ByVal PGRGuid guid, int deviceId ); /** * Assign a PGRGuid, device ID and nodeType to the node. * * @param guid PGRGuid to be assigned. * @param deviceId Device ID to be assigned. * @param nodeType NodeType to be assigned * * @return Whether the data was successfully set to the node. */ public native @Cast("bool") boolean AssignGuidToNode(@ByVal PGRGuid guid, int deviceId, @Cast("FlyCapture2::TopologyNode::NodeType") int nodeType); } // #endif // Parsed from //============================================================================= // Copyright ? 2017 FLIR Integrated Imaging Solutions, Inc. All Rights Reserved. // // This software is the confidential and proprietary information of FLIR // Integrated Imaging Solutions, Inc. ("Confidential Information"). You // shall not disclose such Confidential Information and shall use it only in // accordance with the terms of the license agreement you entered into // with FLIR Integrated Imaging Solutions, Inc. (FLIR). // // FLIR MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF THE // SOFTWARE, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR // PURPOSE, OR NON-INFRINGEMENT. FLIR SHALL NOT BE LIABLE FOR ANY DAMAGES // SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING // THIS SOFTWARE OR ITS DERIVATIVES. //============================================================================= //============================================================================= // $Id: ImageStatistics.h 316355 2017-02-20 23:02:28Z alin $ //============================================================================= // #ifndef PGR_FC2_IMAGESTATISTICS_H // #define PGR_FC2_IMAGESTATISTICS_H // #include "FlyCapture2Platform.h" // #include "FlyCapture2Defs.h" /** * The ImageStatistics object represents image statistics for an image. */ @Namespace("FlyCapture2") @NoOffset public static class ImageStatistics extends Pointer { static { Loader.load(); } /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */ public ImageStatistics(Pointer p) { super(p); } /** Native array allocator. Access with {@link Pointer#position(long)}. */ public ImageStatistics(long size) { super((Pointer)null); allocateArray(size); } private native void allocateArray(long size); @Override public ImageStatistics position(long position) { return (ImageStatistics)super.position(position); } /** * Channels that allow statistics to be calculated. */ /** enum FlyCapture2::ImageStatistics::StatisticsChannel */ public static final int GREY = 0, RED = 1, GREEN = 2, BLUE = 3, HUE = 4, SATURATION = 5, LIGHTNESS = 6, NUM_STATISTICS_CHANNELS = 7; /** * Default constructor. */ public ImageStatistics() { super((Pointer)null); allocate(); } private native void allocate(); /** * Default destructor. */ /** * Copy constructor. */ public ImageStatistics( @Const @ByRef ImageStatistics other ) { super((Pointer)null); allocate(other); } private native void allocate( @Const @ByRef ImageStatistics other ); /** * Assignment operator. * * @param other The ImageStatistics object to copy from. */ public native @ByRef @Name("operator =") ImageStatistics put( @Const @ByRef ImageStatistics other ); /** * Enable all channels. * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error EnableAll(); /** * Disable all channels. * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error DisableAll(); /** * Enable only the grey channel. * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error EnableGreyOnly(); /** * Enable only the RGB channels. * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error EnableRGBOnly(); /** * Enable only the HSL channels. * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error EnableHSLOnly(); /** * Get the status of a statistics channel. * * @param channel The statistics channel. * @param pEnabled Whether the channel is enabled. * * @see SetChannelStatus() * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error GetChannelStatus( @Cast("FlyCapture2::ImageStatistics::StatisticsChannel") int channel, @Cast("bool*") BoolPointer pEnabled ); public native @ByVal Error GetChannelStatus( @Cast("FlyCapture2::ImageStatistics::StatisticsChannel") int channel, @Cast("bool*") boolean[] pEnabled ); /** * Set the status of a statistics channel. * * @param channel The statistics channel. * @param enabled Whether the channel should be enabled. * * @see GetChannelStatus() * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error SetChannelStatus( @Cast("FlyCapture2::ImageStatistics::StatisticsChannel") int channel, @Cast("bool") boolean enabled ); /** * Get the range of a statistics channel. The values returned * are the maximum possible values for any given pixel in the image. * This is generally 0-255 for 8 bit images, and 0-65535 for * 16 bit images. * * @param channel The statistics channel. * @param pMin The minimum possible value. * @param pMax The maximum possible value. * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error GetRange( @Cast("FlyCapture2::ImageStatistics::StatisticsChannel") int channel, @Cast("unsigned int*") IntPointer pMin, @Cast("unsigned int*") IntPointer pMax ); public native @ByVal Error GetRange( @Cast("FlyCapture2::ImageStatistics::StatisticsChannel") int channel, @Cast("unsigned int*") IntBuffer pMin, @Cast("unsigned int*") IntBuffer pMax ); public native @ByVal Error GetRange( @Cast("FlyCapture2::ImageStatistics::StatisticsChannel") int channel, @Cast("unsigned int*") int[] pMin, @Cast("unsigned int*") int[] pMax ); /** * Get the range of a statistics channel. The values returned * are the maximum values recorded for all pixels in the image. * * @param channel The statistics channel. * @param pPixelValueMin The minimum pixel value. * @param pPixelValueMax The maximum pixel value. * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error GetPixelValueRange( @Cast("FlyCapture2::ImageStatistics::StatisticsChannel") int channel, @Cast("unsigned int*") IntPointer pPixelValueMin, @Cast("unsigned int*") IntPointer pPixelValueMax ); public native @ByVal Error GetPixelValueRange( @Cast("FlyCapture2::ImageStatistics::StatisticsChannel") int channel, @Cast("unsigned int*") IntBuffer pPixelValueMin, @Cast("unsigned int*") IntBuffer pPixelValueMax ); public native @ByVal Error GetPixelValueRange( @Cast("FlyCapture2::ImageStatistics::StatisticsChannel") int channel, @Cast("unsigned int*") int[] pPixelValueMin, @Cast("unsigned int*") int[] pPixelValueMax ); /** * Get the number of unique pixel values in the image. * * @param channel The statistics channel. * @param pNumPixelValues The number of unique pixel values. * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error GetNumPixelValues( @Cast("FlyCapture2::ImageStatistics::StatisticsChannel") int channel, @Cast("unsigned int*") IntPointer pNumPixelValues ); public native @ByVal Error GetNumPixelValues( @Cast("FlyCapture2::ImageStatistics::StatisticsChannel") int channel, @Cast("unsigned int*") IntBuffer pNumPixelValues ); public native @ByVal Error GetNumPixelValues( @Cast("FlyCapture2::ImageStatistics::StatisticsChannel") int channel, @Cast("unsigned int*") int[] pNumPixelValues ); /** * Get the mean of the image. * * @param channel The statistics channel. * @param pPixelValueMean The mean of the image. * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error GetMean( @Cast("FlyCapture2::ImageStatistics::StatisticsChannel") int channel, FloatPointer pPixelValueMean ); public native @ByVal Error GetMean( @Cast("FlyCapture2::ImageStatistics::StatisticsChannel") int channel, FloatBuffer pPixelValueMean ); public native @ByVal Error GetMean( @Cast("FlyCapture2::ImageStatistics::StatisticsChannel") int channel, float[] pPixelValueMean ); /** * Get the histogram for the image. * * @param channel The statistics channel. * @param ppHistogram Pointer to an array containing the histogram. * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error GetHistogram( @Cast("FlyCapture2::ImageStatistics::StatisticsChannel") int channel, @Cast("int**") PointerPointer ppHistogram ); public native @ByVal Error GetHistogram( @Cast("FlyCapture2::ImageStatistics::StatisticsChannel") int channel, @ByPtrPtr IntPointer ppHistogram ); public native @ByVal Error GetHistogram( @Cast("FlyCapture2::ImageStatistics::StatisticsChannel") int channel, @ByPtrPtr IntBuffer ppHistogram ); public native @ByVal Error GetHistogram( @Cast("FlyCapture2::ImageStatistics::StatisticsChannel") int channel, @ByPtrPtr int[] ppHistogram ); /** * Get all statistics for the image. * * @param channel The statistics channel. * @param pRangeMin The minimum possible value. * @param pRangeMax The maximum possible value. * @param pPixelValueMin The minimum pixel value. * @param pPixelValueMax The maximum pixel value. * @param pNumPixelValues The number of unique pixel values. * @param pPixelValueMean The mean of the image. * @param ppHistogram Pointer to an array containing the histogram. * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error GetStatistics( @Cast("FlyCapture2::ImageStatistics::StatisticsChannel") int channel, @Cast("unsigned int*") IntPointer pRangeMin/*=NULL*/, @Cast("unsigned int*") IntPointer pRangeMax/*=NULL*/, @Cast("unsigned int*") IntPointer pPixelValueMin/*=NULL*/, @Cast("unsigned int*") IntPointer pPixelValueMax/*=NULL*/, @Cast("unsigned int*") IntPointer pNumPixelValues/*=NULL*/, FloatPointer pPixelValueMean/*=NULL*/, @Cast("int**") PointerPointer ppHistogram/*=NULL*/ ); public native @ByVal Error GetStatistics( @Cast("FlyCapture2::ImageStatistics::StatisticsChannel") int channel ); public native @ByVal Error GetStatistics( @Cast("FlyCapture2::ImageStatistics::StatisticsChannel") int channel, @Cast("unsigned int*") IntPointer pRangeMin/*=NULL*/, @Cast("unsigned int*") IntPointer pRangeMax/*=NULL*/, @Cast("unsigned int*") IntPointer pPixelValueMin/*=NULL*/, @Cast("unsigned int*") IntPointer pPixelValueMax/*=NULL*/, @Cast("unsigned int*") IntPointer pNumPixelValues/*=NULL*/, FloatPointer pPixelValueMean/*=NULL*/, @ByPtrPtr IntPointer ppHistogram/*=NULL*/ ); public native @ByVal Error GetStatistics( @Cast("FlyCapture2::ImageStatistics::StatisticsChannel") int channel, @Cast("unsigned int*") IntBuffer pRangeMin/*=NULL*/, @Cast("unsigned int*") IntBuffer pRangeMax/*=NULL*/, @Cast("unsigned int*") IntBuffer pPixelValueMin/*=NULL*/, @Cast("unsigned int*") IntBuffer pPixelValueMax/*=NULL*/, @Cast("unsigned int*") IntBuffer pNumPixelValues/*=NULL*/, FloatBuffer pPixelValueMean/*=NULL*/, @ByPtrPtr IntBuffer ppHistogram/*=NULL*/ ); public native @ByVal Error GetStatistics( @Cast("FlyCapture2::ImageStatistics::StatisticsChannel") int channel, @Cast("unsigned int*") int[] pRangeMin/*=NULL*/, @Cast("unsigned int*") int[] pRangeMax/*=NULL*/, @Cast("unsigned int*") int[] pPixelValueMin/*=NULL*/, @Cast("unsigned int*") int[] pPixelValueMax/*=NULL*/, @Cast("unsigned int*") int[] pNumPixelValues/*=NULL*/, float[] pPixelValueMean/*=NULL*/, @ByPtrPtr int[] ppHistogram/*=NULL*/ ); } // #endif // Parsed from //============================================================================= // Copyright (c) 2001-2018 FLIR Systems, Inc. All Rights Reserved. // // This software is the confidential and proprietary information of FLIR // Integrated Imaging Solutions, Inc. ("Confidential Information"). You // shall not disclose such Confidential Information and shall use it only in // accordance with the terms of the license agreement you entered into // with FLIR Integrated Imaging Solutions, Inc. (FLIR). // // FLIR MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF THE // SOFTWARE, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR // PURPOSE, OR NON-INFRINGEMENT. FLIR SHALL NOT BE LIABLE FOR ANY DAMAGES // SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING // THIS SOFTWARE OR ITS DERIVATIVES. //============================================================================= // #ifndef FLIR_FLYCAPTURE2VIDEODEFS_H // #define FLIR_FLYCAPTURE2VIDEODEFS_H // #include /** * \defgroup VideoSaveStructures Video saving structures. * * These structures define various parameters used for saving videos. */ /*@{*/ /** Options for saving MJPG files. */ @Namespace("FlyCapture2") @NoOffset public static class MJPGOption extends Pointer { static { Loader.load(); } /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */ public MJPGOption(Pointer p) { super(p); } /** Native array allocator. Access with {@link Pointer#position(long)}. */ public MJPGOption(long size) { super((Pointer)null); allocateArray(size); } private native void allocateArray(long size); @Override public MJPGOption position(long position) { return (MJPGOption)super.position(position); } /** Frame rate of the stream */ public native float frameRate(); public native MJPGOption frameRate(float frameRate); /** Image quality (1-100) */ public native @Cast("unsigned int") int quality(); public native MJPGOption quality(int quality); public native @Cast("unsigned int") int reserved(int i); public native MJPGOption reserved(int i, int reserved); @MemberGetter public native @Cast("unsigned int*") IntPointer reserved(); public MJPGOption() { super((Pointer)null); allocate(); } private native void allocate(); } /** Options for saving H264 files. */ @Namespace("FlyCapture2") @NoOffset public static class H264Option extends Pointer { static { Loader.load(); } /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */ public H264Option(Pointer p) { super(p); } /** Native array allocator. Access with {@link Pointer#position(long)}. */ public H264Option(long size) { super((Pointer)null); allocateArray(size); } private native void allocateArray(long size); @Override public H264Option position(long position) { return (H264Option)super.position(position); } /** Frame rate of the stream */ public native float frameRate(); public native H264Option frameRate(float frameRate); /** Width of source image */ public native @Cast("unsigned int") int width(); public native H264Option width(int width); /** Height of source image */ public native @Cast("unsigned int") int height(); public native H264Option height(int height); /** Bitrate to encode at */ public native @Cast("unsigned int") int bitrate(); public native H264Option bitrate(int bitrate); /** Reserved for future use */ public native @Cast("unsigned int") int reserved(int i); public native H264Option reserved(int i, int reserved); @MemberGetter public native @Cast("unsigned int*") IntPointer reserved(); public H264Option() { super((Pointer)null); allocate(); } private native void allocate(); } /** Options for saving AVI files. */ @Namespace("FlyCapture2") @NoOffset public static class AVIOption extends Pointer { static { Loader.load(); } /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */ public AVIOption(Pointer p) { super(p); } /** Native array allocator. Access with {@link Pointer#position(long)}. */ public AVIOption(long size) { super((Pointer)null); allocateArray(size); } private native void allocateArray(long size); @Override public AVIOption position(long position) { return (AVIOption)super.position(position); } /** Frame rate of the stream */ public native float frameRate(); public native AVIOption frameRate(float frameRate); /** Reserved for future use */ public native @Cast("unsigned int") int reserved(int i); public native AVIOption reserved(int i, int reserved); @MemberGetter public native @Cast("unsigned int*") IntPointer reserved(); public AVIOption() { super((Pointer)null); allocate(); } private native void allocate(); } /*@}*/ // #endif // FLIR_FLYCAPTURE2VIDEODEFS_H // Parsed from //============================================================================= // Copyright (c) 2001-2018 FLIR Systems, Inc. All Rights Reserved. // // This software is the confidential and proprietary information of FLIR // Integrated Imaging Solutions, Inc. ("Confidential Information"). You // shall not disclose such Confidential Information and shall use it only in // accordance with the terms of the license agreement you entered into // with FLIR Integrated Imaging Solutions, Inc. (FLIR). // // FLIR MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF THE // SOFTWARE, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR // PURPOSE, OR NON-INFRINGEMENT. FLIR SHALL NOT BE LIABLE FOR ANY DAMAGES // SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING // THIS SOFTWARE OR ITS DERIVATIVES. //============================================================================= // #ifndef FLIR_FLYCAPTURE2VIDEO_H // #define FLIR_FLYCAPTURE2VIDEO_H // #include "FlyCapture2Platform.h" // #include "FlyCapture2VideoDefs.h" /** * The FlyCapture2Video class provides the functionality for the user to record * images to an AVI file. */ @Namespace("FlyCapture2") @NoOffset public static class FlyCapture2Video extends Pointer { static { Loader.load(); } /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */ public FlyCapture2Video(Pointer p) { super(p); } /** Native array allocator. Access with {@link Pointer#position(long)}. */ public FlyCapture2Video(long size) { super((Pointer)null); allocateArray(size); } private native void allocateArray(long size); @Override public FlyCapture2Video position(long position) { return (FlyCapture2Video)super.position(position); } /** * Default constructor. */ public FlyCapture2Video() { super((Pointer)null); allocate(); } private native void allocate(); /** * Default destructor. */ /** * Open an AVI file in preparation for writing Images to disk. * The size of AVI files is limited to 2GB. The filenames are * automatically generated using the filename specified. * * @param pFileName The filename of the AVI file. * @param pOption Options to apply to the AVI file. * * @see SetMaximumFileSize() * @see Close() * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error Open( @Cast("const char*") BytePointer pFileName, AVIOption pOption); public native @ByVal Error Open( String pFileName, AVIOption pOption); /** * Open an MJPEG AVI file in preparation for writing Images to disk. * The size of AVI files is limited to 2GB. The filenames are * automatically generated using the filename specified. * * @param pFileName The filename of the AVI file. * @param pOption MJPEG options to apply to the AVI file. * * @see SetMaximumFileSize() * @see Close() * @see MJPGOption * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error Open( @Cast("const char*") BytePointer pFileName, MJPGOption pOption); public native @ByVal Error Open( String pFileName, MJPGOption pOption); /** * Open an H.264 video file in preparation for writing Images to disk. * If the file extension is not specified, MP4 will be used as the default * container. Consult ffmpeg documentation for a list of supported containers. * * @param pFileName The filename of the video file. * @param pOption H.264 options to apply to the video file. * * @see Close() * @see H264Option * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error Open( @Cast("const char*") BytePointer pFileName, H264Option pOption); public native @ByVal Error Open( String pFileName, H264Option pOption); /** * Append an image to the AVI/MP4 file. * * @param pImage The image to append. * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error Append(Image pImage); /** * Close the AVI/MP4 file. * * @see Open() * * @return An Error indicating the success or failure of the function. */ public native @ByVal Error Close(); /** * Set the maximum file size (in megabytes) of a AVI/MP4 file. A new AVI/MP4 file * is created automatically when file size limit is reached. Setting * a maximum size of 0 indicates no limit on file size. * * @param size The maximum AVI file size in MB. * * @see Append() * */ public native void SetMaximumFileSize(@Cast("unsigned int") int size); } // #endif // FLIR_FLYCAPTURE2VIDEO_H // Parsed from //============================================================================= // Copyright ? 2017 FLIR Integrated Imaging Solutions, Inc. All Rights Reserved. // // This software is the confidential and proprietary information of FLIR // Integrated Imaging Solutions, Inc. ("Confidential Information"). You // shall not disclose such Confidential Information and shall use it only in // accordance with the terms of the license agreement you entered into // with FLIR Integrated Imaging Solutions, Inc. (FLIR). // // FLIR MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF THE // SOFTWARE, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR // PURPOSE, OR NON-INFRINGEMENT. FLIR SHALL NOT BE LIABLE FOR ANY DAMAGES // SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING // THIS SOFTWARE OR ITS DERIVATIVES. //============================================================================= //============================================================================= // $Id: //============================================================================= // #ifndef MULTISYNCLIBRARYPLATFORM_H // #define MULTISYNCLIBRARYPLATFORM_H //============================================================================= // Platform-specific header file for MultiSunc Library. // // All the platform-specific code that is required by individual compilers // to produce the appropriate code for each platform. //============================================================================= // #if defined(_WIN32) || defined(_WIN64) // Windows 32-bit and 64-bit // #ifdef MULTISYNCLIBRARY_EXPORT // #define MULTISYNCLIBRARY_API __declspec( dllexport ) // #elif defined(MULTISYNCLIBRARY_STATIC) // #define MULTISYNCLIBRARY_API // #else // #define MULTISYNCLIBRARY_API __declspec( dllimport ) // #endif // #if _MSC_VER > 1000 // #pragma once // #endif // #elif defined(MAC_OSX) // Mac OSX // #else // Linux and all others // Using GCC 4 where hiding attributes is possible // #define MULTISYNCLIBRARY_API __attribute__ ((visibility ("default"))) // #define MULTISYNCLIBRARY_LOCAL __attribute__ ((visibility ("hidden"))) // #endif // #endif // MULTISYNCLIBRARYPLATFORM_H // Parsed from //============================================================================= // Copyright ? 2017 FLIR Integrated Imaging Solutions, Inc. All Rights Reserved. // // This software is the confidential and proprietary information of FLIR // Integrated Imaging Solutions, Inc. ("Confidential Information"). You // shall not disclose such Confidential Information and shall use it only in // accordance with the terms of the license agreement you entered into // with FLIR Integrated Imaging Solutions, Inc. (FLIR). // // FLIR MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF THE // SOFTWARE, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR // PURPOSE, OR NON-INFRINGEMENT. FLIR SHALL NOT BE LIABLE FOR ANY DAMAGES // SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING // THIS SOFTWARE OR ITS DERIVATIVES. //============================================================================= //============================================================================= // $Id: //============================================================================= // #ifndef MULTISYNCLIBRARYDEFS_H // #define MULTISYNCLIBRARYDEFS_H // #include //============================================================================= // Definitions file for MultiSync Library. // // Holds structures, enumerations and other global definitions that are used // across the entire MultiSync API. //============================================================================= /** enum MultiSyncLibrary::PGRSyncError */ public static final int PGRSyncError_OK = 0, PGRSyncError_FAILED = 1, PGRSyncError_ALREADY_STARTED = 2, PGRSyncError_ALREADY_STOPPED = 3, PGRSyncError_CAMERA_NOT_FOUND = 4, PGRSyncError_UNKNOWN_ERROR = 5; /** enum MultiSyncLibrary::PGRSyncMessage */ public static final int PGRSyncMessage_OK = 0, PGRSyncMessage_STARTED = 1, PGRSyncMessage_STOPPED = 2, PGRSyncMessage_SYNCING = 3, PGRSyncMessage_NOMASTER = 4, PGRSyncMessage_THREAD_ERROR = 5, PGRSyncMessage_DEVICE_ERROR = 6, PGRSyncMessage_NOT_ENOUGH_DEVICES = 7, PGRSyncMessage_BUS_RESET = 8, PGRSyncMessage_NOT_INITIALIZED = 9, PGRSyncMessage_UNKNOWN_ERROR = 10; @Namespace("MultiSyncLibrary") @NoOffset public static class SyncManager extends Pointer { static { Loader.load(); } /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */ public SyncManager(Pointer p) { super(p); } /** Native array allocator. Access with {@link Pointer#position(long)}. */ public SyncManager(long size) { super((Pointer)null); allocateArray(size); } private native void allocateArray(long size); @Override public SyncManager position(long position) { return (SyncManager)super.position(position); } public SyncManager() { super((Pointer)null); allocate(); } private native void allocate(); public native @Cast("MultiSyncLibrary::PGRSyncError") int Start(); public native @Cast("MultiSyncLibrary::PGRSyncError") int Stop(); public native @Cast("MultiSyncLibrary::PGRSyncError") int RescanMasterTimingBus(); public native @Cast("MultiSyncLibrary::PGRSyncMessage") int GetSyncStatus(); public native double GetTimeSinceSynced(); public native @Cast("bool") boolean IsTimingBusConnected(); public native @Cast("bool") boolean EnableCrossPCSynchronization(); public native @Cast("bool") boolean DisableCrossPCSynchronization(); public native @Cast("bool") boolean QueryCrossPCSynchronizationSetting(); } // #endif //MULTISYNCLIBRARYDEFS_H // Parsed from //============================================================================= // Copyright ? 2017 FLIR Integrated Imaging Solutions, Inc. All Rights Reserved. // // This software is the confidential and proprietary information of FLIR // Integrated Imaging Solutions, Inc. ("Confidential Information"). You // shall not disclose such Confidential Information and shall use it only in // accordance with the terms of the license agreement you entered into // with FLIR Integrated Imaging Solutions, Inc. (FLIR). // // FLIR MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF THE // SOFTWARE, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR // PURPOSE, OR NON-INFRINGEMENT. FLIR SHALL NOT BE LIABLE FOR ANY DAMAGES // SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING // THIS SOFTWARE OR ITS DERIVATIVES. //============================================================================= //============================================================================= // $Id: $ //============================================================================= // #ifndef MULTISYNCLIBRARY_H // #define MULTISYNCLIBRARY_H //============================================================================= // Global header file for MultiSync Library. // // By including this file, all required header files for full MultiSync Library // operation will be included automatically. It is recommended that this file // be used instead of manually including individual header files. //============================================================================= //============================================================================= // Platform-specific definitions //============================================================================= // #include "MultiSyncLibraryPlatform.h" //============================================================================= // Global definitions //============================================================================= // #include "MultiSyncLibraryDefs.h" // #endif // MULTISYNCLIBRARY_H }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy