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

📄 appcamera.c

📁 中芯微camera 图像处理芯片演示
💻 C
字号:
/****************************************************************************
// appCamera.c
//appCamera
// Create by jsguo 2005.9.30
****************************************************************************/

#include "../inc/nucleus.h"

#include "../inc/winconfig.h"
#include "MMI.h"
#include "../inc/windows.h"
#include "../inc/High_Api.h"
#include "..\..\vc0528rdk\vim_high_api.h"

#include "../inc/nucleus.h"
#include "../inc/nu_sd.h"

#include "demoTest.h"

extern NU_SERIAL_PORT  port;   


int g_exitInitSign_camera;
char g_szInfoLeft[30];
char g_szInfoRight[30];
char g_szButtonLeft[30];
char g_szButtonRight[30];
const char g_resolutionIndex[2][100]=
	{"Sensor Output  1280x1024 ","Sensor Output  640x480 "};
extern SETTING_ITEM MMI_VideoSetting[];
extern char Cam_Resolution[][10];
extern UINT8 g_outindex;
extern UINT8 g_withframe;
LRESULT CALLBACK cameraproc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam);

InitMWindow initMyCamera;
CloseMWindow closeMyCamera;
ExitInitMWindow exitInitMyCamera;
int SetCameraStart(InitMWindow init,ExitInitMWindow exitInit,CloseMWindow close)
{
	memcpy(g_szInfoLeft,"←OUT INDEX→",sizeof("←OUT INDEX→"));
	memcpy(g_szInfoRight,"↑ ZOOM ↓",sizeof("↑ ZOOM ↓"));
	memcpy(g_szButtonLeft,"CAPTURE",sizeof("CAPTURE"));
	memcpy(g_szButtonRight,"CANCEL",sizeof("CANCEL"));

	initMyCamera=init;
	initMyCamera();
	exitInitMyCamera=exitInit;
	closeMyCamera=close;

	return 1;
}
int MMI_SetCameraInfo(char* szInfoLeft,char* szInfoRight,char* szButtonLeft,char* szButtonRight)
{
	if(szInfoLeft!=NULL)
	{
		memset(g_szInfoLeft,0,sizeof(g_szInfoLeft));
		strcpy(g_szInfoLeft,szInfoLeft);
	}
	if(szInfoRight!=NULL)
	{
		memset(g_szInfoRight,0,sizeof(g_szInfoRight));
		strcpy(g_szInfoRight,szInfoRight);
	}
	if(szButtonLeft!=NULL)
	{
		memset(g_szButtonLeft,0,sizeof(g_szButtonLeft));
		strcpy(g_szButtonLeft,szButtonLeft);
	}
	if(szButtonRight!=NULL)
	{
		memset(g_szButtonRight,0,sizeof(g_szButtonRight));
		strcpy(g_szButtonRight,szButtonRight);//sizeof(szButtonRight));
	}
	return 1;
}
int WINAPI MCameraMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
                   PSTR szCmdLine, int iCmdShow)
{
        static CHAR szAppName[]="cameraForm";
        HWND hwnd;
        MSG msg;
        WNDCLASS wndclass;

        wndclass.style          = CS_DBLCLKS | CS_HREDRAW | CS_VREDRAW;
        wndclass.lpfnWndProc    = (WNDPROC)cameraproc;
        wndclass.cbClsExtra     =0;
        wndclass.cbWndExtra     =0;
        wndclass.hInstance      =0;
        wndclass.hIcon          =0;
        wndclass.hCursor        =0;
        wndclass.hbrBackground  =(HBRUSH)GetStockObject(WHITE_BRUSH);

        wndclass.lpszMenuName   =NULL;
        wndclass.lpszClassName  = szAppName;

        RegisterClass(&wndclass);
        hwnd=CreateWindowEx(0L,
                          szAppName,
                          "camera",
                          WS_POPUP | WS_VISIBLE,//WS_OVERLAPPEDWINDOW
                          CW_USEDEFAULT,
                          CW_USEDEFAULT,
                          MAINFRAME_WIDTH_DEFAULT,
                          MAINFRAME_HEIGHT_DEFAULT,
                          NULL,
                          NULL,
                          NULL,
                          NULL);
               
        g_exitInitSign_camera  =1;
        ShowWindow(hwnd,iCmdShow);
        UpdateWindow(hwnd);
	

        while (GetMessage(&msg,NULL,0,0)) {
        	TranslateMessage(&msg);
        	DispatchMessage(&msg);
        }      
        return msg.wParam;
}


// 消息循环函数
LRESULT CALLBACK cameraproc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
{      

	HDC hdc;
      	PAINTSTRUCT ps;
      	RECT rectDisplay,rectControl,rectButton,rectInfo;
	int keyvalue;
	HBRUSH hBrush;
	HBRUSH hSelectBrush;
	HBRUSH hControlBrush,hControlBrush1;
	char strtmpResolution[30];
       switch (iMsg) 
		{
        case WM_PAINT:
		hBrush = CreateSolidBrush(0xd4deee);
		hControlBrush = CreateSolidBrush(COLOR_SELECT);
		hControlBrush1=CreateSolidBrush(0xffffff);	//angela
		hSelectBrush = CreateSolidBrush(0xffff00);
		hdc=BeginPaint(hwnd,&ps);
		//draw 240*270
		rectDisplay.top = 4;
		rectDisplay.left = 4;
		rectDisplay.right = MAINFRAME_WIDTH_DEFAULT-3;
		rectDisplay.bottom = MAINFRAME_WIDTH_DEFAULT+30;
		FillRect(hdc,&rectDisplay,hSelectBrush);
		//draw 240*(270->320)
		rectControl.top = MAINFRAME_WIDTH_DEFAULT+30;
		rectControl.left = 0;
		rectControl.right = MAINFRAME_WIDTH_DEFAULT;
		rectControl.bottom = MAINFRAME_HEIGHT_DEFAULT;
		FillRect(hdc,&rectControl,hBrush);
		//Draw top information	angela added output information
		rectInfo.left = 4;
		rectInfo.right = MAINFRAME_WIDTH_DEFAULT-4;
		rectInfo.top = 4;
		rectInfo.bottom =16+4;
		FillRect(hdc,&rectInfo,hControlBrush1);
		DrawText(hdc,g_resolutionIndex[g_outindex],-1,&rectInfo,
                DT_SINGLELINE|DT_CENTER|DT_VCENTER);
		//Draw top information	angela added capture information
		rectInfo.left = 4;
		rectInfo.right = MAINFRAME_WIDTH_DEFAULT-4;
		rectInfo.top = 4+14;
		rectInfo.bottom =40;
		memset(strtmpResolution,0,30);
		strcat(strtmpResolution,MMI_VideoSetting[0].ItemName);
		strcat(strtmpResolution,Cam_Resolution[MMI_VideoSetting[0].Value]);
		FillRect(hdc,&rectInfo,hControlBrush1);
		DrawText(hdc,strtmpResolution,-1,&rectInfo,DT_SINGLELINE|DT_CENTER|DT_VCENTER);

		//Draw information bar
		rectInfo.left = 4;
		rectInfo.right = MAINFRAME_WIDTH_DEFAULT-4;
		rectInfo.top = MAINFRAME_WIDTH_DEFAULT+30+4;
		rectInfo.bottom =MAINFRAME_HEIGHT_DEFAULT-30;
		
		rectInfo.right = MAINFRAME_WIDTH_DEFAULT/2-1;
		FillRect(hdc,&rectInfo,hControlBrush);
		DrawText(hdc,g_szInfoLeft,-1,&rectInfo,
                DT_SINGLELINE|DT_CENTER|DT_VCENTER);
		rectInfo.left = MAINFRAME_WIDTH_DEFAULT/2+1;
		rectInfo.right = MAINFRAME_WIDTH_DEFAULT-4;
		FillRect(hdc,&rectInfo,hControlBrush);
		DrawText(hdc,g_szInfoRight,-1,&rectInfo,
                     DT_SINGLELINE|DT_CENTER|DT_VCENTER);
		
		// Draw Button and Text
		rectButton.left = 0;
		rectButton.right = MAINFRAME_WIDTH_DEFAULT-0;
		rectButton.top = MAINFRAME_HEIGHT_DEFAULT-30+2;
		rectButton.bottom = MAINFRAME_HEIGHT_DEFAULT;

		rectButton.right = MAINFRAME_WIDTH_DEFAULT/2-1;
		FillRect(hdc,&rectButton,hControlBrush);
		DrawText(hdc,g_szButtonLeft,-1,&rectButton,
                DT_SINGLELINE|DT_CENTER|DT_VCENTER);
		rectButton.left = MAINFRAME_WIDTH_DEFAULT/2+1;
		rectButton.right = MAINFRAME_WIDTH_DEFAULT-0;
		FillRect(hdc,&rectButton,hControlBrush);
		DrawText(hdc,g_szButtonRight,-1,&rectButton,
                     DT_SINGLELINE|DT_CENTER|DT_VCENTER);
		
		DeleteObject(hControlBrush);
		DeleteObject(hSelectBrush);
		DeleteObject(hBrush);
	      	EndPaint(hwnd,&ps);
		if(g_exitInitSign_camera)
		{
			exitInitMyCamera();
			g_exitInitSign_camera=0;
		}
             break;
        case WM_DESTROY:
                PostQuitMessage(0);
                break;
	case WM_KEYUP:
		keyvalue = wParam - 49;
		if((keyvalue == KEY_CANCEL)&&(!g_withframe))
		{
			
			PostMessage(hwnd,WM_CLOSE,0,0);
			if(closeMyCamera!=NULL)
				closeMyCamera();
			return 1;
		}
		switch(keyvalue) 
		{

			case KEY_UP:
				User_CameraUp();
				break;
			case KEY_DOWN:
				User_CameraDown();
				break;
			case KEY_LEFT:
				//User_CameraLeft();
				break;
			case KEY_RIGHT:
				//User_CameraRight();
				break;
			case KEY_MIDDLE:
				User_CameraMiddle(); 
				break;
			case KEY_OK:
				User_CameraOK();
				break;
			case KEY_CANCEL:
				USER_closeSavePicture();
				//User_InitCamera();		//preview with frame then to preview normal
				break;
			default:
				User_KeyValueEvent(keyvalue);
				break;
		}
		PostMessage(hwnd,WM_PAINT,0,0);		
        default:
                return DefWindowProc(hwnd,iMsg,wParam,lParam);
        }      
        return (0);
}

⌨️ 快捷键说明

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