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

📄 guidev_copyfromlcd.c

📁 MCB2300_ucgui_LCD320240.rar LPC2368的uc/gui的移植
💻 C
字号:
/*********************************************************************
*   			 SEGGER MICROCONTROLLER SYSTEME GmbH				 *
*   	 Solutions for real time microcontroller applications   	 *
**********************************************************************
*   																 *
*   	 (c) 1996 - 2004  SEGGER Microcontroller Systeme GmbH   	 *
*   																 *
*   	 Internet: www.segger.com    Support:  support@segger.com    *
*   																 *
**********************************************************************

***** emWin - Graphical user interface for embedded applications *****
emWin is protected by international copyright laws.   Knowledge of the
source code may not be used to write a similar product.  This file may
only be used in accordance with a license and should not be re-
distributed in any way. We appreciate your understanding and fairness.
----------------------------------------------------------------------
File		: GUIDEV_CopyFromLCD.c
Purpose 	: Implementation of memory devices
----------------------------------------------------------------------
*/

#include "GUI_Private.h"
#include "GUIDebug.h"

/* Memory device capabilities are compiled only if support for them is enabled. */ 
#if GUI_SUPPORT_MEMDEV

/*********************************************************************
*
*   	defines
*
**********************************************************************
*/

#define LCD_LIMIT(Var, Op, Limit) if (Var Op Limit) Var = Limit

/*********************************************************************
*
*   	public code
*
**********************************************************************
*/
/*********************************************************************
*
*   	GUI_MEMDEV_CopyFromLCD
*/
void GUI_MEMDEV_CopyFromLCD(GUI_MEMDEV_Handle hMem)
{
	/* Make sure memory handle is valid */
	if (!hMem)
	{
		hMem = GUI_Context.hDevData;
	}
	if (!hMem)
	{
		return;
	}
	{
		GUI_MEMDEV* pDevData = (GUI_MEMDEV *) GUI_ALLOC_h2p(hMem);  /* Convert to pointer */
		LCD_RECT r;
		int y;
		int XMax;
		GUI_USAGE* pUsage = 0;
		GUI_MEMDEV_Handle hMemOld = GUI_Context.hDevData;
		GUI_MEMDEV_Select(hMem);
		if (pDevData->hUsage)
		{
			pUsage = GUI_USAGE_H2P(pDevData->hUsage);
		}
		/* Get bounding rectangle */
		r.y0 = pDevData->y0;
		r.x0 = pDevData->x0;
		r.x1 = pDevData->x0 + pDevData->XSize - 1;
		r.y1 = pDevData->y0 + pDevData->YSize - 1;
		/* Make sure bounds are within LCD area so we can call driver directly */
		LCD_LIMIT(r.x0, < , 0);
		LCD_LIMIT(r.y0, < , 0);
		LCD_LIMIT(r.x1, > , LCD_GET_XSIZE() - 1);
		LCD_LIMIT(r.y1, > , LCD_GET_YSIZE() - 1);
		XMax = r.x1;
		for (y = r.y0; y <= r.y1; y++)
		{
			int x = r.x0;
			LCD_PIXELINDEX* pData = (LCD_PIXELINDEX *) GUI_MEMDEV__XY2PTR(x, y);
			if (pUsage)
			{
				GUI_USAGE_AddHLine(pUsage, x, y, r.x1 - r.x0 + 1);
			}
			for (; x <= XMax; x++)
			{
				*pData++ = LCD_L0_GetPixelIndex(x, y);
			}
		}
		GUI_MEMDEV_Select(hMemOld);
	}
}

#endif /* GUI_MEMDEV_SUPPORT */

/*************************** end of file ****************************/

⌨️ 快捷键说明

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