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

📄 guidev_cmpwithlcd.c

📁 ucGUI3.90a没有MemDev这是从3.24向上移植的
💻 C
字号:
/*! @file GUIDEV_CmpWithLCD.c
 *  Implementation of Checking for memory devices 
 *
 *  @author hiber modified
 *  @author Copyleft (C) 1981-2006, All Rights Givenup
 *  @date 04/18/2006
 *  @version 
 *
 *  @note 
 *  @attention 
 *  @warning 
 *  @bug
 *
 *  @todo
 *  @example <file-name>
 *  @see
 */
#include <string.h>
#include "GUI_Private.h"
#include "GUIDebug.h"

#if GUI_SUPPORT_MEMDEV

extern void * _GUI_ALLOC_h2p_Lock(GUI_HMEM hMem);
#define GUI_ALLOC_H2P(h)          _GUI_ALLOC_h2p_Lock(h)
#define GUI_ALLOC_FREE(handle)    GUI_ALLOC_Free(handle)
#define GUI_ALLOC_LOCK(handle)    _GUI_ALLOC_h2p_Lock(handle)
#define GUI_ALLOC_UNLOCK(handle)

#ifdef GUI_USAGE_H2P
    #undef GUI_USAGE_H2P
    #define GUI_USAGE_H2P(h) ((GUI_USAGE*)_GUI_ALLOC_h2p_Lock(h)) 
#endif

#ifdef GUI_MEMDEV_H2P
    #undef GUI_MEMDEV_H2P
    #define GUI_MEMDEV_H2P _GUI_ALLOC_h2p_Lock
#endif

//////////////////////////////////////////////////////////////////////////

//! 将存储设备数据和LCD的数据进行比较
int GUI_MEMDEV_CompareWithLCD(GUI_MEMDEV_Handle hMem, int *px, int *py, int *pExp, int *pAct)
{
    /* Make sure memory handle is valid */
    if (!hMem)
    {
        hMem = GUI_Context.hDevData;
    }

    if (!hMem)
    {
        return 1;
    }


    // 大括号...
    {
        GUI_MEMDEV *pDevData = (GUI_MEMDEV*)GUI_ALLOC_LOCK(hMem); /* Convert to pointer */
        int y = pDevData->y0;
        int x0 = pDevData->x0;
        int XMax = pDevData->XSize + x0;
        int YMax = pDevData->YSize + y;
        int Max;
        int MagX = LCD_GetXMag();
        int MagY = LCD_GetYMag();

        /* Calculate limits */
        if (y < 0)
        {
            y = 0;
        }

        if (x0 < 0)
        {
            x0 = 0;
        }

        Max = LCD_GET_YSIZE();
        if (YMax > Max)
        {
            YMax = Max;
        }

        Max = LCD_GET_XSIZE();
        if (XMax > Max)
        {
            XMax = Max;
        }

        for (; y < YMax; y++)
        {
            int x = x0;
            LCD_PIXELINDEX *pData = (LCD_PIXELINDEX *)GUI_MEMDEV__XY2PTR(x, y);

            for (x = x0; x < XMax; x++)
            {
                int Exp =  *pData++;
                int Act = LCD_L0_GetPixelIndex(x *MagX, y *MagY);

                if (Act != Exp)
                {
                    *px = x;
                    *py = y;
                    *pAct = Act;
                    *pExp = Exp;

                    return 1;
                }
            }
        }
    }


    GUI_ALLOC_UNLOCK(hMem);
    return 0;
}

void GUIDEV_CmpWithLCD(void) 
{
    // do nothing...
}

#else

void GUIDEV_CmpWithLCD(void) 
{
    /* avoid empty object files */
} 

#endif /* GUI_SUPPORT_MEMDEV */

⌨️ 快捷键说明

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