Supporting files to build Motic Device Adapter
authornico <nico@2c67d6c2-4361-4cd7-bd83-1149b1926c9b>
Wed, 18 Jan 2012 05:24:34 +0000 (05:24 +0000)
committernico <nico@2c67d6c2-4361-4cd7-bd83-1149b1926c9b>
Wed, 18 Jan 2012 05:24:34 +0000 (05:24 +0000)
git-svn-id: https://valelab.ucsf.edu/svn/3rdpartypublic@104 2c67d6c2-4361-4cd7-bd83-1149b1926c9b

Motic/MoticImageDevicesProxy.h [new file with mode: 0644]
Motic/x86/MoticImageDevicesProxy.dll [new file with mode: 0644]
Motic/x86/MoticImageDevicesProxy.h [new file with mode: 0644]
Motic/x86/MoticImageDevicesProxy.lib [new file with mode: 0644]

diff --git a/Motic/MoticImageDevicesProxy.h b/Motic/MoticImageDevicesProxy.h
new file mode 100644 (file)
index 0000000..dd7740b
--- /dev/null
@@ -0,0 +1,507 @@
+/**\r
+ * @file MoticImageDeviceProxy.h\r
+ *\r
+ * @brief MoticImageDevice³ÉÏñÉ豸ģ¿é´úÀí½Ó¿ÚÊÇÒ»¸öCÓïÑÔ¶¯Ì¬¿â(dll)\r
+ *        the proxy of Motic Capture module(MoticImageDevice) is a C dynamic library(dll). \r
+ *        Óû§¿Éͨ¹ý¸Ã´úÀí¶¯Ì¬¿â£¬´ò¿ª³ÉÏñÄ£¿éÒÔÖ±½Ó»ñȡͼÏñ¼¯³Éµ½ËûÃǵÄÓ¦ÓóÌÐòÖУ¬²¢¼ä½Ó²éÑ°Óë²Ù×÷MoticÉ豸\r
+ *        The developer, who want to integrate the motic device's image into his application, can use this dll query and operate the Motic device indirectly\r
+ *        ¸Ã¶¯Ì¬¿âΪµÚÈý·½Èí¼þÓëMoticµÄ³ÉÏñÄ£¿é£¨MoticImageDevice)½¨Á¢Á¬½Ó£¬Ê¹µÚÈý·½Èí¼þºÜÈÝÒ׵ؼ¯³ÉmoticÉ豸\r
+ *        this dynamic library create a bridge between the 3rd party application and Motic capture module(MoticImageDevice), allow the 3rd party application use Motic's Camera easily.\r
+ *\r
+ * @code\r
+ * void Open()\r
+ * {\r
+ *    if(MIDP_Open(false) == 0)//´ò¿ª£¬Open Proxy\r
+ *    {\r
+ *      int count = MIDP_GetCameraCount();//²éÑ°É豸Êý£¬query camera count\r
+ *      for(int i = 0; i < count; i++)\r
+ *      {\r
+ *        AddCameraName(MIDP_GetCameraName(i));//±£´æÉ豸Ãû£¬store the name of camera\r
+ *      }    \r
+ *      SetCurCameraIndex(MIDP_GetCurCameraIndex());//Ñ¡Ôñµ±Ç°´ò¿ªµÄÉ豸£¬select current open camera\r
+ *      count = MIDP_GetResolutionCount(); //²éÑ°·Ö±æÂʸöÊý£¬query the count of resolution\r
+ *      for (int i = 0; i < count; i++)\r
+ *      {\r
+ *        CString strFmt;\r
+ *        long w, h;\r
+ *        MIDP_GetResolution(i, &w, &h);//²éÑ°·Ö±æÂÊ£¬query the resolution\r
+ *        strFmt.Format(_T("%dX%d"), w, h);\r
+ *        AddCurrentResolution(strFmt);//±£´æ·Ö±æÂÊ£¬store the resolution\r
+ *      }\r
+ *     SetCurResolutionIndex(MIDP_GetCurResolutionIndex()); //Ñ¡Ôñµ±Ç°·Ö±æÂÊ£¬select current resolution  \r
+ *    }\r
+ * }\r
+ *\r
+ * void GetFrame()\r
+ * {\r
+ *   long w, h, bits, channels;\r
+ *   MIDP_GetFormat(&w, &h, &bits, &channels);\r
+ *   int sz = w*h*bits*channels/8;\r
+ *   //extend unsigned char* m_pBuffer; int m_iSize;\r
+ *   if(m_pBuffer== NULL || sz > m_iSize)\r
+ *   {\r
+ *     m_iSize = sz;\r
+ *     if(m_pBuffer)\r
+ *     {\r
+ *       delete[] m_pBuffer;\r
+ *       m_pBuffer = 0;\r
+ *     }\r
+ *     m_pBuffer = new unsigned char[m_iSize];\r
+ *   }\r
+ *   if(MIDP_GetFrame(m_pBuffer, w, h) == 0)\r
+ *   {\r
+ *     ShowImage(m_pBuffer, w, h);\r
+ *   }\r
+ * }\r
+ * \r
+ * void Show(bool bShow)\r
+ * {\r
+ *   if(bShow) \r
+ *     MIDP_Show(1);\r
+ *   else\r
+ *     MIDP_Show(0);\r
+ * }\r
+ *\r
+ * @endcode\r
+ *\r
+ * @Author: Chendemin@motic.com\r
+ *\r
+ * @Date:2011-9-19\r
+ *\r
+ */\r
+#pragma once\r
+/**\r
+ * @brief ´ò¿ªMotic Image Devices Ä£¿é\r
+ *        Open Motic Image Devices Modules\r
+ *\r
+ * @param bShow ³õʼ»¯ºóÊÇ·ñÏÔʾMoticImageDevices½çÃ棬bShow:0²»ÏÔʾ,ÆäËûÏÔʾ\r
+ *              display or hide the MoticImageDevices window after open, 0, hide, otherwise display \r
+ *\r
+ * @return     0 ³É¹¦; ·ñÔòʧ°Ü\r
+ *             0 succeed, otherwise failed.\r
+ *\r
+*/\r
+long MIDP_Open(long bShow);\r
+\r
+/**\r
+ * @brief ¡¡¹Ø±ÕMoticImageDevices£¬Í˳ö½ø³ÌÇ°Ðèµ÷Óùرՠ¡¡\r
+ *          Close MoticImageDevices, need to be invoked before exit process\r
+ *\r
+ *\r
+ * @return     0 ³É¹¦; ·ñÔòʧ°Ü\r
+ *             0 succeed, otherwise failed.\r
+ *\r
+*/\r
+long MIDP_Close();\r
+\r
+/**\r
+ * @brief ÔÝÍ£ÔËÐÐ,ͨ¹ýMIDP_Resume¼ÌÐø\r
+ *        pause, invoke MIDP_Resume to continue.\r
+ *\r
+ * @return     0 ³É¹¦; ·ñÔòʧ°Ü\r
+ *             0 succeed, otherwise failed.\r
+ *\r
+ * @see MIDP_Resume\r
+ *\r
+*/\r
+long MIDP_Pause();\r
+\r
+/**\r
+ * @brief ¼ÌÐøÔËÐУ¬µ±µ÷ÓÃMIDP_PauseÔÝÍ£ºó¿Éµ÷Óø÷½·¨¼ÌÐø\r
+ *        resume from pause \r
+\r
+ *\r
+ * @return     0 ³É¹¦; ·ñÔòʧ°Ü\r
+ *             0 succeed, otherwise failed.\r
+ *\r
+ * @see MIDP_Pause\r
+ *\r
+*/\r
+long MIDP_Resume();\r
+\r
+/**\r
+ * @brief ÏÔʾ»òÒþ²Ø½çÃæ\r
+ *        show/hide window\r
+ *\r
+ * @Param bShow:0 Òþ²Ø½çÃæ,¡¡1,ÏÔʾÉϴμÇÒäµÄ´°¿Ú£¬2,½öÏÔʾ¿ØÖÆÃæ°å£¬3£¬ÏÔʾÊÓƵÓë¿ØÖÆÃæ°å\r
+ *¡¡¡¡¡¡¡¡¡¡¡¡¡¡0 hide the window, 1 show window, 2 show control Panel, 3 show live image and Control Panel\r
+ *\r
+ * @return     0 ³É¹¦; ·ñÔòʧ°Ü\r
+ *             0 succeed, otherwise failed.\r
+*/\r
+long MIDP_Show(long bShow);\r
+\r
+/**\r
+ * @brief »ñÈ¡µ±Ç°Í¼ÏñµÄ¸ñʽ\r
+ *        Query image format\r
+ *\r
+ * @param w         Í¼Ïñ¿í¶È\r
+ *                  image width\r
+ *        h         Í¼Ïñ¸ß¶È\r
+ *                  image height\r
+ *        bits      É«²ÊλÉһ°ãÊÇ8£¬¸ßλÉîΪ16£©\r
+ *                  color depth(8 bits normal image, 16bits for high depth image)\r
+ *        channels  ÑÕɫͨµÀ£¨Ò»°ãÊÇRGBÈý¸öͨµÀ£¬µ¥É«Îª1¸öͨµÀ£©\r
+ *                  color channels(normally, we use RGB format, which has 3 channels, homochrome image only has 1 channel)\r
+ * @return     0 ³É¹¦; ·ñÔòʧ°Ü\r
+ *             0 succeed, otherwise failed.\r
+ */\r
+long MIDP_GetFormat(long*w, long*h, long* bits, long*channels);\r
+\r
+/**\r
+ * @brief »ñȡһ֡ͼÏñÊý¾Ý\r
+ *        get one frame of image\r
+ *\r
+ * @param buffer »º³åÇøÖ¸Õ룬±ØÐë×ã¹»ÈÝÄɽ«È¡µÃµÄͼÏñÊý¾Ý¡£\r
+ *               The frame buffer, must be big enough for containing the image data.\r
+ *        w      Í¼Ïñ¿í¶È \r
+ * ¡¡¡¡¡¡¡¡¡¡¡¡¡¡width\r
+ *        h      Í¼Ïñ¸ß¶È\r
+ *               height \r
+ *\r
+ * @return     0 ³É¹¦; ·ñÔòʧ°Ü\r
+ *             0 succeed, otherwise failed.\r
+ *\r
+ * @see   MIDP_GetFormat\r
+ */\r
+long MIDP_GetFrame(unsigned char* buffer, long w, long h);\r
+\r
+/**\r
+ * @brief »ñÈ¡É豸Êý\r
+ *        Query the number of cameras \r
+ *\r
+ * @return É豸Êý\r
+ *          the number of cameras\r
+ *\r
+ */\r
+long  MIDP_GetCameraCount();\r
+\r
+/**\r
+ * @brief »ñÈ¡µ±Ç°´ò¿ªÉ豸µÄË÷Òý£¬¿Éͨ¹ýMIDP_GetCameraName»ñµÃÃû³Æ\r
+ *        query the index of opened camera. can obtain device's name by invoke MIDP_GetCameraName \r
+ *\r
+ * @return µ±Ç°´ò¿ªµÄÉ豸Ë÷Òý\r
+ *         the index of opened camera.\r
+ *\r
+ * @see MIDP_GetCameraName\r
+ */\r
+long  MIDP_GetCurCameraIndex();\r
+\r
+/**\r
+ * @brief ¸ù¾ÝË÷Òý»ñÈ¡É豸Ãû³Æ\r
+ *        query the device's name \r
+ * \r
+ * @Return É豸Ãû³Æ,UINCODE×Ö·û\r
+ *         device's UINCODE name\r
+*/\r
+long MIDP_GetCameraName( long idx, wchar_t*name, int len );\r
+\r
+/**\r
+ * @brief Ñ¡ÔñÇл»É豸£¬Çл»É豸ºóÒªÖØлñÈ¡·Ö±æÂÊÓëͼÏñ¸ñʽ²ÎÊý\r
+ *        select to open camera by index, after invoke this function, all the resolutions and formats of image need to be Query again\r
+ * @param idx É豸Ë÷Òý\r
+ *            index of camera\r
+ *\r
+ * @return     0 ³É¹¦; ·ñÔòʧ°Ü\r
+ *             0 succeed, otherwise failed.\r
+ *\r
+ * @see MIDP_GetCameraCount \r
+ */\r
+long  MIDP_SelectCamera(long idx);\r
+\r
+/**\r
+ * @brief »ñÈ¡µ±Ç°´ò¿ªÉ豸µÄ·Ö±æÂʸöÊý\r
+ *        get the number of resolutions\r
+ * \r
+ * @return     ·Ö±æÂʸöÊý\r
+ *             the count of resolutions\r
+ */\r
+long  MIDP_GetResolutionCount();\r
+\r
+/**\r
+ * @brief »ñÈ¡µ±Ç°ÏÔʾµÄ·Ö±æÂÊË÷Òý£¬¿Éͨ¹ýMIDP_GetResolution»ñȡʵ¼Ê·Ö±æÂÊ\r
+ *        get the index of current resolution, please invoke MIDP_GetResolution to query the resolution.\r
+ *\r
+ * @Return µ±Ç°·Ö±æÂÊË÷Òý\r
+ *          the index of current resolution\r
+ * @see MIDP_GetResolution\r
+*/\r
+long  MIDP_GetCurResolutionIndex();\r
+\r
+/**\r
+ * @brief ¸ù¾ÝË÷Òý»ñÈ¡·Ö±æÂÊ\r
+ *        query the resolution by index\r
+ * @param idx ·Ö±æÂÊË÷Òý\r
+ *            the index of resolution\r
+ *        w   ÓÃÓÚ»ñÈ¡·Ö±æÂÊ¿í¶ÈµÄÕûÊýÖ¸Õë\r
+ *            the point to the long to receive the with of resolution\r
+ *        h   ÓÃÓÚ»ñÈ¡·Ö±æÂʸ߶ȵÄÕûÊýÖ¸Õë\r
+ *            the point to the long to receive the height of resolution\r
+ *\r
+ * @return     0 ³É¹¦; ·ñÔòʧ°Ü\r
+ *             0 succeed, otherwise failed.\r
+ */\r
+long MIDP_GetResolution(long idx, long*w, long*h);\r
+\r
+/**\r
+ * @brief ¸ù¾Ý·Ö±æÂÊ´óСÀ´Ñ¡Ôñ·Ö±æÂÊ£¬±ØÐëΪMIDP_GetResolution·µ»Ø·Ö±æÂÊÖ®Ò»\r
+ *        select the resolution by size, the w,h must be one of values query from MIDP_GetResolution\r
+ * \r
+ * @param w   ·Ö±æÂÊ¿í¶È\r
+ *            the with of resolution\r
+ *        h   ·Ö±æÂʸ߶È\r
+ *            the height of resolution\r
+ *\r
+ * @return     0 ³É¹¦; ·ñÔòʧ°Ü\r
+ *             0 succeed, otherwise failed.\r
+ *\r
+ * @see  MIDP_GetResolution\r
+ */\r
+long  MIDP_SelectResolution(long w, long h);\r
+\r
+/**\r
+ * @brief ¸ù¾Ý·Ö±æÂÊË÷ÒýÀ´Ñ¡Ôñ·Ö±æÂÊ\r
+ *        select the resolution by index\r
+ *\r
+ * @param idx  ·Ö±æÂÊË÷Òý±ØÐëΪ0£¨º¬£©µ½MIDP_GetResolutionCount·µ»ØÖµ£¨²»º¬)Ö®¼äµÄÖµ.\r
+ *              the index of resolution must be one of integrate vaule between 0 and the value return by MIDP_GetResolutionCount\r
+ *\r
+ * @return     0 ³É¹¦; ·ñÔòʧ°Ü\r
+ *             0 succeed, otherwise failed.\r
+ *\r
+ * @see MIDP_GetResolutionCount\r
+ */\r
+long  MIDP_SelectResByIndex(long idx);\r
+\r
+/**\r
+ * @brief ÅÄÕÕ£¬½«µ±Ç°Ö¡±£´æΪͼƬ£¬Ö§³ÖBMP,JPG,PNGÈýÖÖ¸ñʽ\r
+ *        Capture, save current image to file, support 3 format:.bmp, .jpg, .png.\r
+ *\r
+ * @param name, ±£´æͼƬµÄÎļþÃû£¬×¢ÒâÀ©Õ¹ÃûÖ»ÄÜΪ".bmp", ".jpg", ".png"ÈýÖÖÖ®Ò»¡£¶ÔÓ¦ÈýÖÖͼÏñ¸ñʽ¡£\r
+ *¡¡¡¡¡¡¡¡¡¡¡¡¡¡file name. The extension must be one of 3 format types: ".bmp", ".jpg" or ".png" \r
+ *\r
+ * @return     0 ³É¹¦; ·ñÔòʧ°Ü\r
+ *             0 succeed, otherwise failed.\r
+ */\r
+long MIDP_Capture(wchar_t*name);\r
+\r
+/**\r
+ * @brief É趨×Ô¶¯Æع⣬\r
+ *        Auto Exposure setting\r
+ * @param bAuto ÊÇ·ñ´ò¿ª×Ô¶¯Æع⣬true´ò¿ª£¬false¹Ø±Õ\r
+ *              Activate/deactivate Auto Exposure, true activate auto exposure, false deactivate auto exposure\r
+ *\r
+ * @return     0 ³É¹¦; ·ñÔòʧ°Ü\r
+ *             0 succeed, otherwise failed.\r
+ */\r
+long MIDP_AutoExposure(bool bAuto);\r
+\r
+/**\r
+ * @brief ²éÑ°ÆعâÖµ·¶Î§\r
+ *        query the range of exposure value\r
+ *\r
+ * @param  min ×îСÆعâÖµ\r
+ *             the minimum exposure value\r
+ *         max ×î´óÆعâÖµ\r
+ *             the maximum exposure value\r
+ * @return     0 ³É¹¦; ·ñÔòʧ°Ü\r
+ *             0 succeed, otherwise failed.\r
+ */\r
+long MIDP_GetExposureValueRange(long* min, long* max);\r
+\r
+/**\r
+ * @brief É趨ÆعâÖµ\r
+ *        set exposure value\r
+ *\r
+ * @param  v  ÆعâÖµ£¬±ØÐëÔÚMIDP_GetExposureValueRange·µ»ØÖµ·¶Î§ÄÚ\r
+ *            exposure value, must be one of value within the range return by MIDP_GetExposureValueRange\r
+ *\r
+ * @return     0 ³É¹¦; ·ñÔòʧ°Ü\r
+ *             0 succeed, otherwise failed.\r
+ *\r
+ * @see    MIDP_GetExposureValueRange   \r
+ */\r
+long MIDP_SetExposureValue(long v);\r
+\r
+/**\r
+ * @brief »ñÈ¡ÆعâÖµ\r
+ *        get exposure value\r
+ *\r
+ * @param  v  ·µ»ØµÄµ±Ç°ÆعâÖµ\r
+ *            current exposure value return.\r
+ *\r
+ * @return     0 ³É¹¦; ·ñÔòʧ°Ü\r
+ *             0 succeed, otherwise failed.\r
+ *\r
+ * @see    MIDP_GetExposureValueRange   \r
+ */\r
+long MIDP_GetExposureValue(long* v);\r
+\r
+/**\r
+ * @brief »ñÈ¡ÔöÒ淶Χ£¬Èç¹ûÓ²¼þÖ§³Ö£¬Õâ¸ö·¶Î§¾ÍÊÇÓ²¼þµÄÔöÒ棬·ñÔòΪÈí¼þÔöÒæ\r
+ *        Query the range of gain, this gain come from hardware if device support gain adjustment, otherwise, it is software gain\r
+ *\r
+ * @param  min ×îСÔöÒ棬\r
+ *             minimum gain\r
+ *         max ×î´óÔöÒæ\r
+ *             maximum gain\r
+ *\r
+ * @return     0 ³É¹¦; ·ñÔòʧ°Ü\r
+ *             0 succeed, otherwise failed.\r
+ *\r
+ */\r
+long MIDP_GetGainRange(float* min, float*max);\r
+\r
+/**\r
+ * @brief ÉèÖÃÔöÒ棬ĬÈÏֵΪ1.0\r
+ *        set Gain, default value is 1.0\r
+ *\r
+ * @param  g ÔöÒæÖµ£¬±ØÐëΪMIDP_GetGainRange·µ»ØµÄ·¶Î§Ö®¼äµÄÖµ£¬\r
+ *           gain, gain value must be in the range query from MIDP_GetGainRange \r
+ *\r
+ * @return 0 ³É¹¦; ·ñÔòʧ°Ü\r
+ *         0 succeed, otherwise failed.\r
+ *\r
+ * @see    MIDP_GetGainRange\r
+ */\r
+long MIDP_SetGain(float g);\r
+\r
+/**\r
+ * @brief »ñÈ¡RGBÔöÒ淶Χ£¬RGBΪÈí¼þÔöÒæ\r
+ *        Query the range of software gain\r
+ *\r
+ * @param  min ×îСÔöÒ棬\r
+ *             minimum gain\r
+ *         max ×î´óÔöÒæ\r
+ *             maximum gain\r
+ *\r
+ * @return     0 ³É¹¦; ·ñÔòʧ°Ü\r
+ *             0 succeed, otherwise failed.\r
+ *\r
+ */\r
+long MIDP_GetRGBGainRange(float*min, float*max);\r
+\r
+/**\r
+ * @brief ÉèÖÃRGBÈí¼þÔöÒæ, Ä¬ÈÏֵΪ1.0\r
+ *        set RGB software Gain,default value is 1.0\r
+ *\r
+ * @param  r ºìÉ«ÔöÒæÖµ£¬±ØÐëΪMIDP_GetRGBGainRang·µ»ØµÄ·¶Î§Ö®¼äµÄÖµ£¬\r
+ *           gain of red channel, the value must be within the range query from MIDP_GetRGBGainRange\r
+ *         g ÂÌÉ«ÔöÒæÖµ£¬±ØÐëΪMIDP_GetRGBGainRang·µ»ØµÄ·¶Î§Ö®¼äµÄÖµ£¬    \r
+ *           gain of green channel, the value must be within the range query from MIDP_GetRGBGainRange\r
+ *         b À¶É«ÔöÒæÖµ£¬±ØÐëΪMIDP_GetRGBGainRang·µ»ØµÄ·¶Î§Ö®¼äµÄÖµ£¬\r
+ *           gain of blue channel, the value must be within the range query from MIDP_GetRGBGainRange\r
+ *\r
+ * @return 0 ³É¹¦; ·ñÔòʧ°Ü\r
+ *         0 succeed, otherwise failed.\r
+ *\r
+ * @see    MIDP_GetRGBGainRange\r
+ */\r
+long MIDP_SetRGBGain(float r, float g, float b);\r
+\r
+/**\r
+ * @brief É趨ÁÁ¶ÈÆ«ÒÆ, Ä¬ÈÏֵΪ0\r
+ *        set offset of brightness, default value is 0\r
+ *\r
+ * @param  b ÁÁ¶ÈÆ«ÒÆÖµ£¬·¶Î§Îª-255~255,ĬÈÏΪ0£¬\r
+ *           offset value of brightness, range:-255~255, default value: 0\r
+ *\r
+ * @return 0 ³É¹¦; ·ñÔòʧ°Ü\r
+ *         0 succeed, otherwise failed.\r
+ *\r
+ */\r
+long MIDP_SetBrightness(long b);\r
+\r
+/**\r
+ * @brief É趨RGB¸÷ÑÕÉ«µÄÁÁ¶ÈÆ«ÒÆ, Ä¬ÈÏֵΪ0\r
+ *        set offset of RGB brightness, default value is 0\r
+ *\r
+ * @param  r ºìÉ«ÁÁ¶ÈÆ«ÒÆÖµ£¬·¶Î§Îª-255~255,ĬÈÏΪ0£¬\r
+ *           offset value of Red brightness, range:-255~255, default value: 0\r
+ *         g ÂÌÉ«ÁÁ¶ÈÆ«ÒÆÖµ£¬·¶Î§Îª-255~255,ĬÈÏΪ0£¬\r
+ *           offset value of Green brightness, range:-255~255, default value: 0\r
+ *         b À¶É«ÁÁ¶ÈÆ«ÒÆÖµ£¬·¶Î§Îª-255~255,ĬÈÏΪ0£¬\r
+ *           offset value of Blue brightness, range:-255~255, default value: 0\r
+ *\r
+ * @return 0 ³É¹¦; ·ñÔòʧ°Ü\r
+ *         0 succeed, otherwise failed.\r
+ *\r
+ */\r
+long MIDP_SetRGBBrightness(long r, long g, long b);\r
+\r
+/**\r
+ * @brief É趨٤ÂíÖµ\r
+ *        set gamma\r
+ *\r
+ * @param  g Ù¤ÂíÖµ£¬·¶Î§Îª0.1~10,ĬÈÏΪ1.0£¬\r
+ *           gamma value, range: 0.1-10,default value is 1.0\r
+ *         o ÏñËØÆ«ÒÆ£¬ËüΪֱ·½Í¼ÔöÇ¿ÏÂÏÞÖµ£¬·¶Î§Îª0~255,ĬÈÏΪ0\r
+ *           offset of pixel, it is the lower limit value of histogram enhance, range: 0~255, default: 0\r
+ *\r
+ * @return 0 ³É¹¦; ·ñÔòʧ°Ü\r
+ *         0 succeed, otherwise failed.\r
+ *\r
+ */\r
+long MIDP_SetGamma(float g, long o);\r
+\r
+/**\r
+ * @brief »ùÓÚµ±Ç°µÄͼÏñ¼ÆËã²¢Ó¦Óð×ƽºâ£¬Ò»°ãÇé¿öϵ±Ç°Í¼ÏñΪ±³¾°Ê±µ÷Óøú¯Êý¡£\r
+          Õû¸öϵͳÈç¹û»·¾³²»±äÖ»Òªµ÷ÓÃÒ»´Î¸Ãº¯Êý£¬°×ƽºâ¾Í»á¼ÇÒäÔÚϵͳÖУ¬Ï´ÎÖ»Òªµ÷ÓÃMIDP_ActivateWhiteBalance\r
+ *        calculate the factors of whitebalance base on current image. normally, invoke this function once only \r
+ *        when current image is background image, and these factors will be record in system, you can open white balance simply invoke MIDP_ActivateWhiteBalance next time\r
+ *\r
+ * @return 0 ³É¹¦; ·ñÔòʧ°Ü\r
+ *         0 succeed, otherwise failed.\r
+ *\r
+ * @see MIDP_ActivateWhiteBalance\r
+ */\r
+long MIDP_DoWhiteBalance();\r
+\r
+/**\r
+ * @brief Ó¦Óð×ƽºâ£¬µ÷Óøú¯ÊýÔÚMIDP_DoWhiteBalanceÖ®ºó£¬Ò»°ãÔÚͬÑùµÄ»·¾³Ï°×ƽºâµÄ²ÎÊý²»»á¸Ä±ä,Ëü»á±£ÁôÔÚϵͳÖÐ\r
+ *¡¡¡¡¡¡¡¡Ï´ÎÔÙ´ò¿ª³ÌÐòÖ»Òª¼òµ¥µØµ÷Óøú¯Êý¾Í¿ÉÒÔÓ¦ÓÃ֮ǰ¼ÇÒäµÄ°×ƽºâ\r
+ *        Activate white balance, the whitebalance factors, which are generated after call MIDP_DoWhiteBalance last time,will remain in you system.\r
+ *        You can simply invoke this function to activate white balance when you open the software next time. \r
+ *\r
+ * @return 0 ³É¹¦; ·ñÔòʧ°Ü\r
+ *         0 succeed, otherwise failed.\r
+ *\r
+ * @see MIDP_DoWhiteBalance\r
+ */\r
+long MIDP_ActivateWhiteBalance();\r
+\r
+/**\r
+ * @brief É趨ɫ²ÊУÕý²ÎÊý\r
+ *        set Color Correction\r
+ *\r
+ * @param  val É«²ÊУÕý²ÎÊýÖµ£¬·¶Î§-10~10,ĬÈÏֵΪ0,Õý·½Ïò¿ÉÒÔÔöÇ¿É«²Ê£¬¸ºÖµ¼õÈõÉ«²Ê\r
+ *             value of color correction, range: -10-10, default: 0, \r
+ *\r
+ * @return 0 ³É¹¦; ·ñÔòʧ°Ü\r
+ *         0 succeed, otherwise failed.\r
+ *\r
+ */\r
+long MIDP_SetColorCorrection(long val);\r
+\r
+\r
+/**\r
+ * @brief »ñȡһ֡ͼÏñÊý¾ÝµÄÖ¸¶¨ÇøÓò\r
+ *\r
+ * @param buffer »º³åÇøÖ¸Õ룬±ØÐë×ã¹»ÈÝÄɽ«È¡µÃµÄͼÏñÊý¾Ý¡£\r
+ *        x      Í¼ÏñµÄˮƽÆðʼλÖà\r
+ *        y      Í¼ÏñµÄ´¹Ö±ÆðʼλÖÃ\r
+ *        w      Í¼ÏñµÄ¿í¶È\r
+ *        h      Í¼ÏñµÄ¸ß¶È\r
+ *        stride »º³åÇøµÄÐÐ×Ö½ÚÊý\r
+ *        flip   ÊÇ·ñÐ뷭תͼÏñ\r
+ *\r
+ * @return     0 ³É¹¦; ·ñÔòʧ°Ü\r
+ *             0 succeed, otherwise failed.\r
+ *\r
+ * @see   MIDP_GetFormatEx\r
+ */\r
+long MIDP_GetFrameEx(unsigned char* buffer, long x, long y, long w, long h, long stride, bool flip);\r
+/**\r
+ * @undocumented\r
+ */\r
+double MIDP_EvaluateFocusDegree24bits(unsigned char* buffer, long width, long height);
\ No newline at end of file
diff --git a/Motic/x86/MoticImageDevicesProxy.dll b/Motic/x86/MoticImageDevicesProxy.dll
new file mode 100644 (file)
index 0000000..fbe4712
Binary files /dev/null and b/Motic/x86/MoticImageDevicesProxy.dll differ
diff --git a/Motic/x86/MoticImageDevicesProxy.h b/Motic/x86/MoticImageDevicesProxy.h
new file mode 100644 (file)
index 0000000..dd7740b
--- /dev/null
@@ -0,0 +1,507 @@
+/**\r
+ * @file MoticImageDeviceProxy.h\r
+ *\r
+ * @brief MoticImageDevice³ÉÏñÉ豸ģ¿é´úÀí½Ó¿ÚÊÇÒ»¸öCÓïÑÔ¶¯Ì¬¿â(dll)\r
+ *        the proxy of Motic Capture module(MoticImageDevice) is a C dynamic library(dll). \r
+ *        Óû§¿Éͨ¹ý¸Ã´úÀí¶¯Ì¬¿â£¬´ò¿ª³ÉÏñÄ£¿éÒÔÖ±½Ó»ñȡͼÏñ¼¯³Éµ½ËûÃǵÄÓ¦ÓóÌÐòÖУ¬²¢¼ä½Ó²éÑ°Óë²Ù×÷MoticÉ豸\r
+ *        The developer, who want to integrate the motic device's image into his application, can use this dll query and operate the Motic device indirectly\r
+ *        ¸Ã¶¯Ì¬¿âΪµÚÈý·½Èí¼þÓëMoticµÄ³ÉÏñÄ£¿é£¨MoticImageDevice)½¨Á¢Á¬½Ó£¬Ê¹µÚÈý·½Èí¼þºÜÈÝÒ׵ؼ¯³ÉmoticÉ豸\r
+ *        this dynamic library create a bridge between the 3rd party application and Motic capture module(MoticImageDevice), allow the 3rd party application use Motic's Camera easily.\r
+ *\r
+ * @code\r
+ * void Open()\r
+ * {\r
+ *    if(MIDP_Open(false) == 0)//´ò¿ª£¬Open Proxy\r
+ *    {\r
+ *      int count = MIDP_GetCameraCount();//²éÑ°É豸Êý£¬query camera count\r
+ *      for(int i = 0; i < count; i++)\r
+ *      {\r
+ *        AddCameraName(MIDP_GetCameraName(i));//±£´æÉ豸Ãû£¬store the name of camera\r
+ *      }    \r
+ *      SetCurCameraIndex(MIDP_GetCurCameraIndex());//Ñ¡Ôñµ±Ç°´ò¿ªµÄÉ豸£¬select current open camera\r
+ *      count = MIDP_GetResolutionCount(); //²éÑ°·Ö±æÂʸöÊý£¬query the count of resolution\r
+ *      for (int i = 0; i < count; i++)\r
+ *      {\r
+ *        CString strFmt;\r
+ *        long w, h;\r
+ *        MIDP_GetResolution(i, &w, &h);//²éÑ°·Ö±æÂÊ£¬query the resolution\r
+ *        strFmt.Format(_T("%dX%d"), w, h);\r
+ *        AddCurrentResolution(strFmt);//±£´æ·Ö±æÂÊ£¬store the resolution\r
+ *      }\r
+ *     SetCurResolutionIndex(MIDP_GetCurResolutionIndex()); //Ñ¡Ôñµ±Ç°·Ö±æÂÊ£¬select current resolution  \r
+ *    }\r
+ * }\r
+ *\r
+ * void GetFrame()\r
+ * {\r
+ *   long w, h, bits, channels;\r
+ *   MIDP_GetFormat(&w, &h, &bits, &channels);\r
+ *   int sz = w*h*bits*channels/8;\r
+ *   //extend unsigned char* m_pBuffer; int m_iSize;\r
+ *   if(m_pBuffer== NULL || sz > m_iSize)\r
+ *   {\r
+ *     m_iSize = sz;\r
+ *     if(m_pBuffer)\r
+ *     {\r
+ *       delete[] m_pBuffer;\r
+ *       m_pBuffer = 0;\r
+ *     }\r
+ *     m_pBuffer = new unsigned char[m_iSize];\r
+ *   }\r
+ *   if(MIDP_GetFrame(m_pBuffer, w, h) == 0)\r
+ *   {\r
+ *     ShowImage(m_pBuffer, w, h);\r
+ *   }\r
+ * }\r
+ * \r
+ * void Show(bool bShow)\r
+ * {\r
+ *   if(bShow) \r
+ *     MIDP_Show(1);\r
+ *   else\r
+ *     MIDP_Show(0);\r
+ * }\r
+ *\r
+ * @endcode\r
+ *\r
+ * @Author: Chendemin@motic.com\r
+ *\r
+ * @Date:2011-9-19\r
+ *\r
+ */\r
+#pragma once\r
+/**\r
+ * @brief ´ò¿ªMotic Image Devices Ä£¿é\r
+ *        Open Motic Image Devices Modules\r
+ *\r
+ * @param bShow ³õʼ»¯ºóÊÇ·ñÏÔʾMoticImageDevices½çÃ棬bShow:0²»ÏÔʾ,ÆäËûÏÔʾ\r
+ *              display or hide the MoticImageDevices window after open, 0, hide, otherwise display \r
+ *\r
+ * @return     0 ³É¹¦; ·ñÔòʧ°Ü\r
+ *             0 succeed, otherwise failed.\r
+ *\r
+*/\r
+long MIDP_Open(long bShow);\r
+\r
+/**\r
+ * @brief ¡¡¹Ø±ÕMoticImageDevices£¬Í˳ö½ø³ÌÇ°Ðèµ÷Óùرՠ¡¡\r
+ *          Close MoticImageDevices, need to be invoked before exit process\r
+ *\r
+ *\r
+ * @return     0 ³É¹¦; ·ñÔòʧ°Ü\r
+ *             0 succeed, otherwise failed.\r
+ *\r
+*/\r
+long MIDP_Close();\r
+\r
+/**\r
+ * @brief ÔÝÍ£ÔËÐÐ,ͨ¹ýMIDP_Resume¼ÌÐø\r
+ *        pause, invoke MIDP_Resume to continue.\r
+ *\r
+ * @return     0 ³É¹¦; ·ñÔòʧ°Ü\r
+ *             0 succeed, otherwise failed.\r
+ *\r
+ * @see MIDP_Resume\r
+ *\r
+*/\r
+long MIDP_Pause();\r
+\r
+/**\r
+ * @brief ¼ÌÐøÔËÐУ¬µ±µ÷ÓÃMIDP_PauseÔÝÍ£ºó¿Éµ÷Óø÷½·¨¼ÌÐø\r
+ *        resume from pause \r
+\r
+ *\r
+ * @return     0 ³É¹¦; ·ñÔòʧ°Ü\r
+ *             0 succeed, otherwise failed.\r
+ *\r
+ * @see MIDP_Pause\r
+ *\r
+*/\r
+long MIDP_Resume();\r
+\r
+/**\r
+ * @brief ÏÔʾ»òÒþ²Ø½çÃæ\r
+ *        show/hide window\r
+ *\r
+ * @Param bShow:0 Òþ²Ø½çÃæ,¡¡1,ÏÔʾÉϴμÇÒäµÄ´°¿Ú£¬2,½öÏÔʾ¿ØÖÆÃæ°å£¬3£¬ÏÔʾÊÓƵÓë¿ØÖÆÃæ°å\r
+ *¡¡¡¡¡¡¡¡¡¡¡¡¡¡0 hide the window, 1 show window, 2 show control Panel, 3 show live image and Control Panel\r
+ *\r
+ * @return     0 ³É¹¦; ·ñÔòʧ°Ü\r
+ *             0 succeed, otherwise failed.\r
+*/\r
+long MIDP_Show(long bShow);\r
+\r
+/**\r
+ * @brief »ñÈ¡µ±Ç°Í¼ÏñµÄ¸ñʽ\r
+ *        Query image format\r
+ *\r
+ * @param w         Í¼Ïñ¿í¶È\r
+ *                  image width\r
+ *        h         Í¼Ïñ¸ß¶È\r
+ *                  image height\r
+ *        bits      É«²ÊλÉһ°ãÊÇ8£¬¸ßλÉîΪ16£©\r
+ *                  color depth(8 bits normal image, 16bits for high depth image)\r
+ *        channels  ÑÕɫͨµÀ£¨Ò»°ãÊÇRGBÈý¸öͨµÀ£¬µ¥É«Îª1¸öͨµÀ£©\r
+ *                  color channels(normally, we use RGB format, which has 3 channels, homochrome image only has 1 channel)\r
+ * @return     0 ³É¹¦; ·ñÔòʧ°Ü\r
+ *             0 succeed, otherwise failed.\r
+ */\r
+long MIDP_GetFormat(long*w, long*h, long* bits, long*channels);\r
+\r
+/**\r
+ * @brief »ñȡһ֡ͼÏñÊý¾Ý\r
+ *        get one frame of image\r
+ *\r
+ * @param buffer »º³åÇøÖ¸Õ룬±ØÐë×ã¹»ÈÝÄɽ«È¡µÃµÄͼÏñÊý¾Ý¡£\r
+ *               The frame buffer, must be big enough for containing the image data.\r
+ *        w      Í¼Ïñ¿í¶È \r
+ * ¡¡¡¡¡¡¡¡¡¡¡¡¡¡width\r
+ *        h      Í¼Ïñ¸ß¶È\r
+ *               height \r
+ *\r
+ * @return     0 ³É¹¦; ·ñÔòʧ°Ü\r
+ *             0 succeed, otherwise failed.\r
+ *\r
+ * @see   MIDP_GetFormat\r
+ */\r
+long MIDP_GetFrame(unsigned char* buffer, long w, long h);\r
+\r
+/**\r
+ * @brief »ñÈ¡É豸Êý\r
+ *        Query the number of cameras \r
+ *\r
+ * @return É豸Êý\r
+ *          the number of cameras\r
+ *\r
+ */\r
+long  MIDP_GetCameraCount();\r
+\r
+/**\r
+ * @brief »ñÈ¡µ±Ç°´ò¿ªÉ豸µÄË÷Òý£¬¿Éͨ¹ýMIDP_GetCameraName»ñµÃÃû³Æ\r
+ *        query the index of opened camera. can obtain device's name by invoke MIDP_GetCameraName \r
+ *\r
+ * @return µ±Ç°´ò¿ªµÄÉ豸Ë÷Òý\r
+ *         the index of opened camera.\r
+ *\r
+ * @see MIDP_GetCameraName\r
+ */\r
+long  MIDP_GetCurCameraIndex();\r
+\r
+/**\r
+ * @brief ¸ù¾ÝË÷Òý»ñÈ¡É豸Ãû³Æ\r
+ *        query the device's name \r
+ * \r
+ * @Return É豸Ãû³Æ,UINCODE×Ö·û\r
+ *         device's UINCODE name\r
+*/\r
+long MIDP_GetCameraName( long idx, wchar_t*name, int len );\r
+\r
+/**\r
+ * @brief Ñ¡ÔñÇл»É豸£¬Çл»É豸ºóÒªÖØлñÈ¡·Ö±æÂÊÓëͼÏñ¸ñʽ²ÎÊý\r
+ *        select to open camera by index, after invoke this function, all the resolutions and formats of image need to be Query again\r
+ * @param idx É豸Ë÷Òý\r
+ *            index of camera\r
+ *\r
+ * @return     0 ³É¹¦; ·ñÔòʧ°Ü\r
+ *             0 succeed, otherwise failed.\r
+ *\r
+ * @see MIDP_GetCameraCount \r
+ */\r
+long  MIDP_SelectCamera(long idx);\r
+\r
+/**\r
+ * @brief »ñÈ¡µ±Ç°´ò¿ªÉ豸µÄ·Ö±æÂʸöÊý\r
+ *        get the number of resolutions\r
+ * \r
+ * @return     ·Ö±æÂʸöÊý\r
+ *             the count of resolutions\r
+ */\r
+long  MIDP_GetResolutionCount();\r
+\r
+/**\r
+ * @brief »ñÈ¡µ±Ç°ÏÔʾµÄ·Ö±æÂÊË÷Òý£¬¿Éͨ¹ýMIDP_GetResolution»ñȡʵ¼Ê·Ö±æÂÊ\r
+ *        get the index of current resolution, please invoke MIDP_GetResolution to query the resolution.\r
+ *\r
+ * @Return µ±Ç°·Ö±æÂÊË÷Òý\r
+ *          the index of current resolution\r
+ * @see MIDP_GetResolution\r
+*/\r
+long  MIDP_GetCurResolutionIndex();\r
+\r
+/**\r
+ * @brief ¸ù¾ÝË÷Òý»ñÈ¡·Ö±æÂÊ\r
+ *        query the resolution by index\r
+ * @param idx ·Ö±æÂÊË÷Òý\r
+ *            the index of resolution\r
+ *        w   ÓÃÓÚ»ñÈ¡·Ö±æÂÊ¿í¶ÈµÄÕûÊýÖ¸Õë\r
+ *            the point to the long to receive the with of resolution\r
+ *        h   ÓÃÓÚ»ñÈ¡·Ö±æÂʸ߶ȵÄÕûÊýÖ¸Õë\r
+ *            the point to the long to receive the height of resolution\r
+ *\r
+ * @return     0 ³É¹¦; ·ñÔòʧ°Ü\r
+ *             0 succeed, otherwise failed.\r
+ */\r
+long MIDP_GetResolution(long idx, long*w, long*h);\r
+\r
+/**\r
+ * @brief ¸ù¾Ý·Ö±æÂÊ´óСÀ´Ñ¡Ôñ·Ö±æÂÊ£¬±ØÐëΪMIDP_GetResolution·µ»Ø·Ö±æÂÊÖ®Ò»\r
+ *        select the resolution by size, the w,h must be one of values query from MIDP_GetResolution\r
+ * \r
+ * @param w   ·Ö±æÂÊ¿í¶È\r
+ *            the with of resolution\r
+ *        h   ·Ö±æÂʸ߶È\r
+ *            the height of resolution\r
+ *\r
+ * @return     0 ³É¹¦; ·ñÔòʧ°Ü\r
+ *             0 succeed, otherwise failed.\r
+ *\r
+ * @see  MIDP_GetResolution\r
+ */\r
+long  MIDP_SelectResolution(long w, long h);\r
+\r
+/**\r
+ * @brief ¸ù¾Ý·Ö±æÂÊË÷ÒýÀ´Ñ¡Ôñ·Ö±æÂÊ\r
+ *        select the resolution by index\r
+ *\r
+ * @param idx  ·Ö±æÂÊË÷Òý±ØÐëΪ0£¨º¬£©µ½MIDP_GetResolutionCount·µ»ØÖµ£¨²»º¬)Ö®¼äµÄÖµ.\r
+ *              the index of resolution must be one of integrate vaule between 0 and the value return by MIDP_GetResolutionCount\r
+ *\r
+ * @return     0 ³É¹¦; ·ñÔòʧ°Ü\r
+ *             0 succeed, otherwise failed.\r
+ *\r
+ * @see MIDP_GetResolutionCount\r
+ */\r
+long  MIDP_SelectResByIndex(long idx);\r
+\r
+/**\r
+ * @brief ÅÄÕÕ£¬½«µ±Ç°Ö¡±£´æΪͼƬ£¬Ö§³ÖBMP,JPG,PNGÈýÖÖ¸ñʽ\r
+ *        Capture, save current image to file, support 3 format:.bmp, .jpg, .png.\r
+ *\r
+ * @param name, ±£´æͼƬµÄÎļþÃû£¬×¢ÒâÀ©Õ¹ÃûÖ»ÄÜΪ".bmp", ".jpg", ".png"ÈýÖÖÖ®Ò»¡£¶ÔÓ¦ÈýÖÖͼÏñ¸ñʽ¡£\r
+ *¡¡¡¡¡¡¡¡¡¡¡¡¡¡file name. The extension must be one of 3 format types: ".bmp", ".jpg" or ".png" \r
+ *\r
+ * @return     0 ³É¹¦; ·ñÔòʧ°Ü\r
+ *             0 succeed, otherwise failed.\r
+ */\r
+long MIDP_Capture(wchar_t*name);\r
+\r
+/**\r
+ * @brief É趨×Ô¶¯Æع⣬\r
+ *        Auto Exposure setting\r
+ * @param bAuto ÊÇ·ñ´ò¿ª×Ô¶¯Æع⣬true´ò¿ª£¬false¹Ø±Õ\r
+ *              Activate/deactivate Auto Exposure, true activate auto exposure, false deactivate auto exposure\r
+ *\r
+ * @return     0 ³É¹¦; ·ñÔòʧ°Ü\r
+ *             0 succeed, otherwise failed.\r
+ */\r
+long MIDP_AutoExposure(bool bAuto);\r
+\r
+/**\r
+ * @brief ²éÑ°ÆعâÖµ·¶Î§\r
+ *        query the range of exposure value\r
+ *\r
+ * @param  min ×îСÆعâÖµ\r
+ *             the minimum exposure value\r
+ *         max ×î´óÆعâÖµ\r
+ *             the maximum exposure value\r
+ * @return     0 ³É¹¦; ·ñÔòʧ°Ü\r
+ *             0 succeed, otherwise failed.\r
+ */\r
+long MIDP_GetExposureValueRange(long* min, long* max);\r
+\r
+/**\r
+ * @brief É趨ÆعâÖµ\r
+ *        set exposure value\r
+ *\r
+ * @param  v  ÆعâÖµ£¬±ØÐëÔÚMIDP_GetExposureValueRange·µ»ØÖµ·¶Î§ÄÚ\r
+ *            exposure value, must be one of value within the range return by MIDP_GetExposureValueRange\r
+ *\r
+ * @return     0 ³É¹¦; ·ñÔòʧ°Ü\r
+ *             0 succeed, otherwise failed.\r
+ *\r
+ * @see    MIDP_GetExposureValueRange   \r
+ */\r
+long MIDP_SetExposureValue(long v);\r
+\r
+/**\r
+ * @brief »ñÈ¡ÆعâÖµ\r
+ *        get exposure value\r
+ *\r
+ * @param  v  ·µ»ØµÄµ±Ç°ÆعâÖµ\r
+ *            current exposure value return.\r
+ *\r
+ * @return     0 ³É¹¦; ·ñÔòʧ°Ü\r
+ *             0 succeed, otherwise failed.\r
+ *\r
+ * @see    MIDP_GetExposureValueRange   \r
+ */\r
+long MIDP_GetExposureValue(long* v);\r
+\r
+/**\r
+ * @brief »ñÈ¡ÔöÒ淶Χ£¬Èç¹ûÓ²¼þÖ§³Ö£¬Õâ¸ö·¶Î§¾ÍÊÇÓ²¼þµÄÔöÒ棬·ñÔòΪÈí¼þÔöÒæ\r
+ *        Query the range of gain, this gain come from hardware if device support gain adjustment, otherwise, it is software gain\r
+ *\r
+ * @param  min ×îСÔöÒ棬\r
+ *             minimum gain\r
+ *         max ×î´óÔöÒæ\r
+ *             maximum gain\r
+ *\r
+ * @return     0 ³É¹¦; ·ñÔòʧ°Ü\r
+ *             0 succeed, otherwise failed.\r
+ *\r
+ */\r
+long MIDP_GetGainRange(float* min, float*max);\r
+\r
+/**\r
+ * @brief ÉèÖÃÔöÒ棬ĬÈÏֵΪ1.0\r
+ *        set Gain, default value is 1.0\r
+ *\r
+ * @param  g ÔöÒæÖµ£¬±ØÐëΪMIDP_GetGainRange·µ»ØµÄ·¶Î§Ö®¼äµÄÖµ£¬\r
+ *           gain, gain value must be in the range query from MIDP_GetGainRange \r
+ *\r
+ * @return 0 ³É¹¦; ·ñÔòʧ°Ü\r
+ *         0 succeed, otherwise failed.\r
+ *\r
+ * @see    MIDP_GetGainRange\r
+ */\r
+long MIDP_SetGain(float g);\r
+\r
+/**\r
+ * @brief »ñÈ¡RGBÔöÒ淶Χ£¬RGBΪÈí¼þÔöÒæ\r
+ *        Query the range of software gain\r
+ *\r
+ * @param  min ×îСÔöÒ棬\r
+ *             minimum gain\r
+ *         max ×î´óÔöÒæ\r
+ *             maximum gain\r
+ *\r
+ * @return     0 ³É¹¦; ·ñÔòʧ°Ü\r
+ *             0 succeed, otherwise failed.\r
+ *\r
+ */\r
+long MIDP_GetRGBGainRange(float*min, float*max);\r
+\r
+/**\r
+ * @brief ÉèÖÃRGBÈí¼þÔöÒæ, Ä¬ÈÏֵΪ1.0\r
+ *        set RGB software Gain,default value is 1.0\r
+ *\r
+ * @param  r ºìÉ«ÔöÒæÖµ£¬±ØÐëΪMIDP_GetRGBGainRang·µ»ØµÄ·¶Î§Ö®¼äµÄÖµ£¬\r
+ *           gain of red channel, the value must be within the range query from MIDP_GetRGBGainRange\r
+ *         g ÂÌÉ«ÔöÒæÖµ£¬±ØÐëΪMIDP_GetRGBGainRang·µ»ØµÄ·¶Î§Ö®¼äµÄÖµ£¬    \r
+ *           gain of green channel, the value must be within the range query from MIDP_GetRGBGainRange\r
+ *         b À¶É«ÔöÒæÖµ£¬±ØÐëΪMIDP_GetRGBGainRang·µ»ØµÄ·¶Î§Ö®¼äµÄÖµ£¬\r
+ *           gain of blue channel, the value must be within the range query from MIDP_GetRGBGainRange\r
+ *\r
+ * @return 0 ³É¹¦; ·ñÔòʧ°Ü\r
+ *         0 succeed, otherwise failed.\r
+ *\r
+ * @see    MIDP_GetRGBGainRange\r
+ */\r
+long MIDP_SetRGBGain(float r, float g, float b);\r
+\r
+/**\r
+ * @brief É趨ÁÁ¶ÈÆ«ÒÆ, Ä¬ÈÏֵΪ0\r
+ *        set offset of brightness, default value is 0\r
+ *\r
+ * @param  b ÁÁ¶ÈÆ«ÒÆÖµ£¬·¶Î§Îª-255~255,ĬÈÏΪ0£¬\r
+ *           offset value of brightness, range:-255~255, default value: 0\r
+ *\r
+ * @return 0 ³É¹¦; ·ñÔòʧ°Ü\r
+ *         0 succeed, otherwise failed.\r
+ *\r
+ */\r
+long MIDP_SetBrightness(long b);\r
+\r
+/**\r
+ * @brief É趨RGB¸÷ÑÕÉ«µÄÁÁ¶ÈÆ«ÒÆ, Ä¬ÈÏֵΪ0\r
+ *        set offset of RGB brightness, default value is 0\r
+ *\r
+ * @param  r ºìÉ«ÁÁ¶ÈÆ«ÒÆÖµ£¬·¶Î§Îª-255~255,ĬÈÏΪ0£¬\r
+ *           offset value of Red brightness, range:-255~255, default value: 0\r
+ *         g ÂÌÉ«ÁÁ¶ÈÆ«ÒÆÖµ£¬·¶Î§Îª-255~255,ĬÈÏΪ0£¬\r
+ *           offset value of Green brightness, range:-255~255, default value: 0\r
+ *         b À¶É«ÁÁ¶ÈÆ«ÒÆÖµ£¬·¶Î§Îª-255~255,ĬÈÏΪ0£¬\r
+ *           offset value of Blue brightness, range:-255~255, default value: 0\r
+ *\r
+ * @return 0 ³É¹¦; ·ñÔòʧ°Ü\r
+ *         0 succeed, otherwise failed.\r
+ *\r
+ */\r
+long MIDP_SetRGBBrightness(long r, long g, long b);\r
+\r
+/**\r
+ * @brief É趨٤ÂíÖµ\r
+ *        set gamma\r
+ *\r
+ * @param  g Ù¤ÂíÖµ£¬·¶Î§Îª0.1~10,ĬÈÏΪ1.0£¬\r
+ *           gamma value, range: 0.1-10,default value is 1.0\r
+ *         o ÏñËØÆ«ÒÆ£¬ËüΪֱ·½Í¼ÔöÇ¿ÏÂÏÞÖµ£¬·¶Î§Îª0~255,ĬÈÏΪ0\r
+ *           offset of pixel, it is the lower limit value of histogram enhance, range: 0~255, default: 0\r
+ *\r
+ * @return 0 ³É¹¦; ·ñÔòʧ°Ü\r
+ *         0 succeed, otherwise failed.\r
+ *\r
+ */\r
+long MIDP_SetGamma(float g, long o);\r
+\r
+/**\r
+ * @brief »ùÓÚµ±Ç°µÄͼÏñ¼ÆËã²¢Ó¦Óð×ƽºâ£¬Ò»°ãÇé¿öϵ±Ç°Í¼ÏñΪ±³¾°Ê±µ÷Óøú¯Êý¡£\r
+          Õû¸öϵͳÈç¹û»·¾³²»±äÖ»Òªµ÷ÓÃÒ»´Î¸Ãº¯Êý£¬°×ƽºâ¾Í»á¼ÇÒäÔÚϵͳÖУ¬Ï´ÎÖ»Òªµ÷ÓÃMIDP_ActivateWhiteBalance\r
+ *        calculate the factors of whitebalance base on current image. normally, invoke this function once only \r
+ *        when current image is background image, and these factors will be record in system, you can open white balance simply invoke MIDP_ActivateWhiteBalance next time\r
+ *\r
+ * @return 0 ³É¹¦; ·ñÔòʧ°Ü\r
+ *         0 succeed, otherwise failed.\r
+ *\r
+ * @see MIDP_ActivateWhiteBalance\r
+ */\r
+long MIDP_DoWhiteBalance();\r
+\r
+/**\r
+ * @brief Ó¦Óð×ƽºâ£¬µ÷Óøú¯ÊýÔÚMIDP_DoWhiteBalanceÖ®ºó£¬Ò»°ãÔÚͬÑùµÄ»·¾³Ï°×ƽºâµÄ²ÎÊý²»»á¸Ä±ä,Ëü»á±£ÁôÔÚϵͳÖÐ\r
+ *¡¡¡¡¡¡¡¡Ï´ÎÔÙ´ò¿ª³ÌÐòÖ»Òª¼òµ¥µØµ÷Óøú¯Êý¾Í¿ÉÒÔÓ¦ÓÃ֮ǰ¼ÇÒäµÄ°×ƽºâ\r
+ *        Activate white balance, the whitebalance factors, which are generated after call MIDP_DoWhiteBalance last time,will remain in you system.\r
+ *        You can simply invoke this function to activate white balance when you open the software next time. \r
+ *\r
+ * @return 0 ³É¹¦; ·ñÔòʧ°Ü\r
+ *         0 succeed, otherwise failed.\r
+ *\r
+ * @see MIDP_DoWhiteBalance\r
+ */\r
+long MIDP_ActivateWhiteBalance();\r
+\r
+/**\r
+ * @brief É趨ɫ²ÊУÕý²ÎÊý\r
+ *        set Color Correction\r
+ *\r
+ * @param  val É«²ÊУÕý²ÎÊýÖµ£¬·¶Î§-10~10,ĬÈÏֵΪ0,Õý·½Ïò¿ÉÒÔÔöÇ¿É«²Ê£¬¸ºÖµ¼õÈõÉ«²Ê\r
+ *             value of color correction, range: -10-10, default: 0, \r
+ *\r
+ * @return 0 ³É¹¦; ·ñÔòʧ°Ü\r
+ *         0 succeed, otherwise failed.\r
+ *\r
+ */\r
+long MIDP_SetColorCorrection(long val);\r
+\r
+\r
+/**\r
+ * @brief »ñȡһ֡ͼÏñÊý¾ÝµÄÖ¸¶¨ÇøÓò\r
+ *\r
+ * @param buffer »º³åÇøÖ¸Õ룬±ØÐë×ã¹»ÈÝÄɽ«È¡µÃµÄͼÏñÊý¾Ý¡£\r
+ *        x      Í¼ÏñµÄˮƽÆðʼλÖà\r
+ *        y      Í¼ÏñµÄ´¹Ö±ÆðʼλÖÃ\r
+ *        w      Í¼ÏñµÄ¿í¶È\r
+ *        h      Í¼ÏñµÄ¸ß¶È\r
+ *        stride »º³åÇøµÄÐÐ×Ö½ÚÊý\r
+ *        flip   ÊÇ·ñÐ뷭תͼÏñ\r
+ *\r
+ * @return     0 ³É¹¦; ·ñÔòʧ°Ü\r
+ *             0 succeed, otherwise failed.\r
+ *\r
+ * @see   MIDP_GetFormatEx\r
+ */\r
+long MIDP_GetFrameEx(unsigned char* buffer, long x, long y, long w, long h, long stride, bool flip);\r
+/**\r
+ * @undocumented\r
+ */\r
+double MIDP_EvaluateFocusDegree24bits(unsigned char* buffer, long width, long height);
\ No newline at end of file
diff --git a/Motic/x86/MoticImageDevicesProxy.lib b/Motic/x86/MoticImageDevicesProxy.lib
new file mode 100644 (file)
index 0000000..ba2ab90
Binary files /dev/null and b/Motic/x86/MoticImageDevicesProxy.lib differ