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

📄 guidev_writealpha.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_WriteAlpha.C
Purpose 	: Implementation of memory devices
---------------------------END-OF-HEADER------------------------------
*/

#include <string.h>
#include "GUI_Private.h"
#include "GUIDebug.h"

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

/*********************************************************************
*
*   	Static routines
*
**********************************************************************
*/
/*********************************************************************
*
*   	_WriteAlphaToActiveAt
*/
static void _WriteAlphaToActiveAt(GUI_MEMDEV_Handle hMem, int Intens, int x, int y)
{
	/* Make sure the memory handle is valid */
	if (hMem)
	{
		GUI_MEMDEV * pDev = GUI_MEMDEV_H2P(hMem);
		GUI_USAGE_h hUsage = pDev->hUsage; 
		GUI_USAGE*  pUsage;
		int YSize = pDev->YSize;
		int yi;
		if (hUsage)
		{
			pUsage = GUI_USAGE_H2P(hUsage);
			for (yi = 0; yi < YSize; yi++)
			{
				int xOff = 0;
				int XSize;
				XSize = GUI_USAGE_GetNextDirty(pUsage, &xOff, yi);
				/* Draw the partial line which needs to be drawn */
				for (; XSize;)
				{
					U8* pData;
					pData = (U8 *) GUI_MEMDEV__XY2PTREx(pDev, xOff, yi);
					do
					{
						LCD_COLOR Color, BkColor;
						int xPos, yPos, Index;
						if (pDev->BitsPerPixel == 8)
						{
							Index = *pData++;
						}
						else
						{
							Index = *(U16 *) pData;
							pData += 2;
						}
						Color = LCD_Index2Color(Index);
						xPos = xOff + x;
						yPos = yi + y;
						BkColor = LCD_GetPixelColor(xPos, yPos);
						Color = LCD_MixColors256(Color, BkColor, Intens);
						Index = LCD_Color2Index(Color);
						LCD_SetPixelIndex(xPos, yPos, Index);
						xOff++;
					}
					while (--XSize);
					XSize = GUI_USAGE_GetNextDirty(pUsage, &xOff, yi);
				}
			}
		}
	}
}

/*********************************************************************
*
*   	Exported routines
*
**********************************************************************
*/
/*********************************************************************
*
*   	GUI_MEMDEV_WriteAlphaAt
*/
void GUI_MEMDEV_WriteAlphaAt(GUI_MEMDEV_Handle hMem, int Alpha, int x, int y)
{
	if (hMem)
	{
		GUI_MEMDEV* pDevData;
#if (GUI_WINSUPPORT)
		GUI_RECT r;
#endif
		GUI_LOCK();
		pDevData = (GUI_MEMDEV *) GUI_ALLOC_h2p(hMem);  /* Convert to pointer */
		if (x == GUI_POS_AUTO)
		{
			x = pDevData->x0;
			y = pDevData->y0;
		}
#if (GUI_WINSUPPORT)
		r.x1 = (r.x0 = x) + pDevData->XSize - 1;
		r.y1 = (r.y0 = y) + pDevData->YSize - 1;;
		WM_ITERATE_START(&r)
		{
			_WriteAlphaToActiveAt(hMem, Alpha, x, y);
		} WM_ITERATE_END();
#else
		_WriteAlphaToActiveAt(hMem, Alpha, x, y);
#endif
		GUI_UNLOCK();
	}
}

/*********************************************************************
*
*   	GUI_MEMDEV_WriteAlpha
*/
void GUI_MEMDEV_WriteAlpha(GUI_MEMDEV_Handle hMem, int Alpha)
{
	GUI_MEMDEV_WriteAlphaAt(hMem, Alpha, GUI_POS_AUTO, GUI_POS_AUTO);
}

#else

void GUIDEV_WriteAlpha_C(void)
{
}

#endif /* GUI_SUPPORT_MEMDEV */

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

⌨️ 快捷键说明

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