⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 camerawindow.h

📁 Microsoft WinCE 6.0 BSP FINAL release source code for use with the i.MX27ADS TO2 WCE600_FINAL_MX27_S
💻 H
字号:
/*
 * Copyright (C) 2004-2005, MOTOROLA, INC. All Rights Reserved
 * THIS SOURCE CODE IS CONFIDENTIAL AND PROPRIETARY AND MAY NOT
 * BE USED OR DISTRIBUTED WITHOUT THE WRITTEN PERMISSION OF
 * MOTOROLA, INC.
 *
 *  Copyright (C) 2004-2006, Freescale Semiconductor, Inc. All Rights Reserved.
 *  THIS SOURCE CODE, AND ITS USE AND DISTRIBUTION, IS SUBJECT TO THE TERMS
 *  AND CONDITIONS OF THE APPLICABLE LICENSE AGREEMENT
 *
 *  File:            APPS/CAMAPP/CCameraWindow.h
 *  Purpose:        This header defines a class that encapsulates the window(s) needed
 *                 for the camera application. 
 *  Notes:
 *
 */

#ifndef _SUPPORT_APPS_CAMERAWINDOWS_H
#define _SUPPORT_APPS_CAMERAWINDOWS_H

/*********************************************************************
 INCLUDE FILES  
*********************************************************************/
#include <windows.h>

#include "camera.h"
#include "resource.h"
#include "PicBrowserDlg.h"
/*********************************************************************
 MACRO DEFINITIONS 
*********************************************************************/
#define CAMAPP_DEBUG_MSG                0
#define CAMAPP_ERROR_MSG                1

#define CAMAPP_CAPTURE_HOTKEY_ID        0x150
#define CAMAPP_VIEW_HOTKEY_ID           0x151
#define CAMAPP_ROTATE_HOTKEY_ID         0x152

#define CamApp_BTN_ID_CAPTURE              0x01
#define CamApp_BTN_ID_VIEW                  0x02
#define CamApp_BTN_ID_ROTATE            0x03
#define CamApp_TEXT_ID_FrameRate        0x04
#define CamApp_STATIC_ID_PREVIEW        0x20

#define BUTTON_CAPTURE             0
#define BUTTON_VIEW                  1
#define BUTTON_ROTATE             2

#define SKIN_SIZE     3        //the button number

// This defines the ID of the timer for frame rate
#define CAMAPP_TIMER   100

// This defines the number of milliseconds between timer events
#define CAMAPP_TIMEOUT      3000

/*********************************************************************
 GLOBAL DEFINITIONS  
*********************************************************************/

/*********************************************************************
 GLOBAL OR STATIC VARIABLES  
*********************************************************************/

/*********************************************************************
 ENUMERATIONS AND STRUCTURES 
*********************************************************************/
// Copy the following enumerate from cameradriver.h
// zero based index of stream
enum
{
    CAPTURE = 0,
    STILL,
    PREVIEW
};

//Zero based index of range.Copy this for align with standard API.
enum
{
    FRAMERATE_1000000 = 0,
    FRAMERATE_909000,
    FRAMERATE_833000,
    FRAMERATE_769000,
    FRAMERATE_714000,
    FRAMERATE_666000,
    FRAMERATE_625000,
    FRAMERATE_588000,
    FRAMERATE_556000,
    FRAMERATE_526000,
    FRAMERATE_500000,
    FRAMERATE_476000,
    FRAMERATE_455000,
    FRAMERATE_435000,
    FRAMERATE_417000,
    FRAMERATE_400000,
    FRAMERATE_385000,
    FRAMERATE_370000,
    FRAMERATE_357000,
    FRAMERATE_345000,
    FRAMERATE_333000
};

enum EButtonState { ENABLED, ONCAPTURE, DISABLED };
enum ECamResolution {VGA, CIF, QVGA, QCIF, QQVGA};

typedef struct _button_info
{
    LPCTSTR pCaptNormal;
    LPCTSTR pCaptCapture;
    EButtonState eState;
    HMENU hID;
    HWND hWnd;
    UINT x;
    UINT y; 
    UINT nWidth;
    UINT nHeight;
} button_info_t;

typedef struct csiCaptureDisplay {
    UINT16 xOffset;
    UINT16 yOffset;
    UINT16 screenWidth;
    UINT16 screenHeight;
    UINT16 imageWidth;
    UINT16 imageHeight;
} csiCaptureDisplay_t, * pCsiCaptureDisplay_t;


/*********************************************************************
 FUNCTION PROTOTYPES
*********************************************************************/

/*********************************************************************
 CLASS DEFINITIONS
*********************************************************************/
typedef class CCameraWindow:public JpegFile
{
    public:
        // Constructor/Destructor
        CCameraWindow(HWND hWnd, HINSTANCE hInstance);
        ~CCameraWindow();
        
        BOOL Init();
        BOOL Fini();
		
        BOOL ChangeResolution(ECamResolution dResolution);
        BOOL ChangeResolution(DWORD pinId, ECamResolution dResolution);
        BOOL DialogMessage(LPMSG pMsg);
        void OnPaint(HDC hdc, RECT *prc);
        BOOL OnCommand(WORD wID, LPARAM lParam);
        BOOL ApplyZoomLevel(DWORD dwZoomLevel);

        BOOL PinStart(DWORD pinId);
        BOOL PinStop(DWORD pinId);
        BOOL PinPause(DWORD pinId);
        BOOL CapturePinStart();
        BOOL CapturePinStop();
        BOOL CapturePinPause();
        BOOL StillPinStart();
        BOOL StillPinStop();
        BOOL StillPinPause();
        BOOL PreviewPinStart();
        BOOL PreviewPinStop();
        BOOL PreviewPinPause();

        BOOL ChangeFrameRate(UINT uFRate);
        BOOL OnRotation(BOOL bRotation);
        BOOL OnFlipping(BOOL bVertical, BOOL bFlippingOn);
        void PicBrowserDlgClosed();
        BOOL OnTimer(UINT uID);
        BOOL RevertPreviewThread();
        BOOL PausePreviewThread();
        
        HINSTANCE           m_hInstance;
        HANDLE              m_hCameraDll;
        HWND                m_hWnd;
        HWND            m_hWndCB;
        HWND            m_hWndSC;
        HWND            m_hWndBrowser;
        HWND            m_hFrameRateText;
        
        DWORD             m_dwZoomLevel;
        CRITICAL_SECTION  m_csPreview;
        CRITICAL_SECTION  m_csCapture;
        CRITICAL_SECTION  m_csStill;
        CRITICAL_SECTION  m_csCamera;
		
        HANDLE m_hPreviewPinDll;
        HANDLE m_hStillPinDll;
        HANDLE m_hCapturePinDll;
		
        HANDLE m_hPreviewMsgQ;
        HANDLE m_hStillMsgQ;
        HANDLE m_hCaptureMsgQ;

        BOOL m_bPreviewRunning;
        BOOL m_bPreviewStopped;
        BOOL m_bCamAppThreadTerminate;

        PCS_STREAM_DESCRIPTOR m_pPreviewStreamDesc;
        PCS_STREAM_DESCRIPTOR m_pStillStreamDesc;
        PCS_STREAM_DESCRIPTOR m_pCaptureStreamDesc;

        csiCaptureDisplay_t m_DisplayInfo;
        CS_DATAFORMAT_VIDEOINFOHEADER m_PreviewDataFormat;
        CS_DATAFORMAT_VIDEOINFOHEADER m_StillDataFormat;
        CS_DATAFORMAT_VIDEOINFOHEADER m_CaptureDataFormat;

        DWORD  m_dFrameRate;
        double m_dActualRate;
        BOOL m_bRotation;        // TRUE = landscape, FALSE = Portrait;
        BOOL m_bVertFlip;
        BOOL m_bHorizFlip;

        ECamResolution m_dwResolution;

        INT m_iPanelWidth;
        INT m_iPanelHeight;
        INT m_iPanelBpp;

        PCSMULTIPLE_ITEM m_pPreviewDataRanges, m_pCaptureDataRanges, m_pStillDataRanges;
        UINT32 m_iNumCaptureDataRanges, m_iNumStillDataRanges, m_iNumPreviewDataRanges;

    private:
        button_info_t            m_binfo[SKIN_SIZE];
        UINT                     m_uiTimer;

        HANDLE m_hPreviewThread;
        HANDLE m_hCameraDevice;
        WORD *m_pStillPinBuff;

        WCHAR m_DefaultFileNamePath[JPEG_FILE_NAME_MAX];

        void UpdateButtons();
        void ReadPinDataRanges(UINT32 pinId);
        BOOL GetDataFormat(UINT32 pinId, ECamResolution res, PCS_DATARANGE_VIDEO pDataRangeMatched);

        BOOL LoadCamDriver();     
        BOOL OnOptions();
        BOOL OnSave();
        UINT GetFileName();
        void SaveJPG(BOOL color);
        void SaveBMP();
        BOOL OnPicBrowser();
        BOOL OnHelp();

}CAMERAWINDOW, *PCAMERAWINDOW;

extern CAMERAWINDOW *g_pCameraWindow;

/*********************************************************************
 END OF FILE
*********************************************************************/

#endif //_SUPPORT_APPS_CAMERAWINDOWS_H

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -