DemoCustom.cpp
上传用户:fjqzjn
上传日期:2008-01-21
资源大小:2764k
文件大小:5k
- /******************************************************************************
- ** Copyright (C) 2004. Intel Corporation. All Rights Reserved.
- **
- ** The source code contained or described herein and all documents related to the
- ** source code ("Material") are owned by Intel Corporation or its suppliers or
- ** licensors. Title to the Material remains with Intel Corporation or its suppliers
- ** and licensors. The Material contains trade secrets and proprietary and
- ** confidential information of Intel or its suppliers and licensors. The Material
- ** is protected by worldwide copyright and trade secret laws and treaty provisions.
- ** No part of the Material may be used, copied, reproduced, modified, published,
- ** uploaded, posted, transmitted, distributed, or disclosed in any way without
- ** Intel抯 prior express written permission.
- **
- ** No license under any patent, copyright, trade secret or other intellectual
- ** property right is granted to or conferred upon you by disclosure or delivery
- ** of the Materials, either expressly, by implication, inducement, estoppel or
- ** otherwise. Any license under such intellectual property rights must be express
- ** and approved by Intel in writing.
- ******************************************************************************/
- // DemoCustom.cpp: implementation of the CDemoCustom class.
- //
- //////////////////////////////////////////////////////////////////////
- #include "stdafx.h"
- #include "aygshell.h"
- #include "DispDemo1.h"
- #include "DemoCustom.h"
- #include <gx.h>
- #ifdef _DEBUG
- #undef THIS_FILE
- static char THIS_FILE[]=__FILE__;
- #define new DEBUG_NEW
- #endif
- //////////////////////////////////////////////////////////////////////
- // Construction/Destruction
- //////////////////////////////////////////////////////////////////////
- CDemoCustom::CDemoCustom(WORD wWidth, WORD wHeight)
- {
- RawFrameBufferInfo* pExternalOutput = m_DisplayConfig.CreateMarathonFrameBuffer(wWidth, wHeight);
- if (!pExternalOutput || !pExternalOutput->pFramePointer)
- {
- TRACE(L"nr************************ Unable to use extenral display at requested resolution *****************nr");
- return;
- }
- TRACE(L"nrDrawing white border and blue diagonal in %d x %d Frane Buffer nr",pExternalOutput->cxPixels, pExternalOutput->cyPixels);
- for (int y=0; y < pExternalOutput->cyPixels; y++)
- {
- for (int x=0; x < pExternalOutput->cxPixels; x++)
- {
- PWORD pPixel = (PWORD)((PBYTE)pExternalOutput->pFramePointer +
- (y * pExternalOutput->cyStride) +
- (x * pExternalOutput->cxStride));
- if ((x == 0) || //left
- (x == pExternalOutput->cxPixels-1) || // right
- (y == 0) || // top
- (y == pExternalOutput->cyPixels-1) // bottom
- )
- *pPixel = 0xFFFF; // WHITE
- else if (x == y) // diaginal
- *pPixel = 0x001F; // BLUE
- else
- *pPixel = 0x0; // BLACK
- }
- }
- RawFrameBufferInfo* pXScaleFB = m_DisplayConfig.GetXScaleFrameBuffer();
- TRACE(L"nrDrawing small white close box into system memory that XScale's frame buffer.nr");
- for (y=0; y < pXScaleFB->cyPixels; y++)
- {
- for (int x=0; x < pXScaleFB->cxPixels; x++)
- {
- PWORD pPixel = (PWORD)((PBYTE)pXScaleFB->pFramePointer +
- (y * pXScaleFB->cyStride) +
- (x * pXScaleFB->cxStride));
- if ((x < 32) && (y < 32))
- { // in close box area?
- if ((x == 0) || (x == 32-1) || (y == 0) || (y == 32-1) || (x == y) || ((32-1-x) == y))
- *pPixel = 0xFFFF;// WHITE
- else
- *pPixel = 0x0; // BLACK
- }
- else
- *pPixel = 0x001F; // BLUE
- }
- }
- // Create a window to recieve touch screen inputs
- m_hWnd = CreateWindow(L"Static", L"MyInputWindow", WS_VISIBLE,
- CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
- CW_USEDEFAULT, NULL, NULL, AfxGetInstanceHandle(), NULL);
- SHFullScreen(m_hWnd, SHFS_HIDETASKBAR | SHFS_HIDESIPBUTTON | SHFS_HIDESTARTICON);
- MoveWindow(m_hWnd, 0, 0, GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN), TRUE);
- SetCapture(m_hWnd);
- // now switch to display it
- m_DisplayConfig.SetInternalSource(DCFG_SOURCE_XSCALE);
- m_DisplayConfig.SetExternalSource(DCFG_SOURCE_MARATHON);
- MSG msg;
- while (GetMessage(&msg, m_hWnd, WM_MOUSEFIRST, WM_MOUSELAST))
- {
- TranslateMessage(&msg);
- DispatchMessage(&msg);
- WORD xPos = LOWORD(msg.lParam);
- WORD yPos = HIWORD(msg.lParam);
- TRACE(L"nrScreen Tap at %d x %dnr", xPos, yPos);
- if ((xPos < 32) && (yPos < 32)) // assuming Carbonado-like rotated display. Looking for click withing box in XScale buffer
- DestroyWindow(m_hWnd);
- }
- SHFullScreen(m_hWnd, SHFS_SHOWTASKBAR | SHFS_SHOWSIPBUTTON | SHFS_SHOWSTARTICON);
- }
- CDemoCustom::~CDemoCustom()
- {
- }