guidev_clear.c

来自「ucGUI3.90a没有MemDev这是从3.24向上移植的」· C语言 代码 · 共 83 行

C
83
字号
/*! @file GUIDEV_Clear.c
 *  Implementation of memory devices, add. module 
 *
 *  @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 "GUI_Protected.h"
#include "GUIDebug.h"
#include <string.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

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

//! 将存储设备的所有内容标志为“未改变的”。
//! @param hMem 存储设备的句柄
//! @note 使用GUI_MEMDEV_CopyToLCD 的下一步绘图操作是, 只有在GUI_MEMDEV_Clear 和
//!       GUI_MEMDEV_CopyToLCD 之间有字节改变的情况才进行写操作。
void GUI_MEMDEV_Clear(GUI_MEMDEV_Handle hMem)
{
    if (!hMem)
    {
        if ((hMem = GUI_Context.hDevData) == 0)
        {
            return ;// 设备数据指针为NULL
        }
    }


    // 大括号用于建立下面的局部变量
    {
        GUI_MEMDEV *pDev = GUI_MEMDEV_H2P(hMem);// 得到句柄指向的实际内存指针
        GUI_USAGE_h hUsage = pDev->hUsage;

        if (hUsage)
        {
            GUI_USAGE *pUsage = GUI_USAGE_H2P(hUsage);
            GUI_USAGE_Clear(pUsage);// avoid compile warning
        } 
        /* else 
        {
            GUI_Clear();
        }*/
    }

}

#else

void GUIDEV_Clear(void) 
{
    // avoid empty object files
} 

#endif /* GUI_MEMDEV_SUPPORT */

⌨️ 快捷键说明

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