www.pudn.com > uCGUI3.24-MemDev-for-3.90a.rar > GUIDEV_SetOrg.c


/*! @file GUIDEV_SetOrg.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  
 *  @see 
 */ 
#include "GUI_Protected.h" 
#include "GUIDebug.h" 
#include  
 
#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 上的原点。 
//! @param hMem 存储设备的句柄 
//! @param x0 水平坐标(左上角像素) 
//! @param y0 垂直坐标(左上角像素) 
//! @note 这个函数在同一个器件用于不同的屏幕区域或存储设备的内容被拷贝 
//!       到不同区域时非常有用。修改存储设备的原点比删除然后重建它更有效。 
void GUI_MEMDEV_SetOrg(GUI_MEMDEV_Handle hMem, int x0, int y0) 
{ 
    /* Make sure memory handle is valid */ 
    if (!hMem) 
    { 
        if ((hMem = GUI_Context.hDevData) == 0) 
        { 
            return ; 
        } 
    } 
 
    GUI_LOCK(); 
    { 
        GUI_MEMDEV *pDev = GUI_MEMDEV_H2P(hMem); /* Convert to pointer */ 
 
        pDev->y0 = y0; 
        pDev->x0 = x0; 
        LCD_SetClipRectMax(); 
 
        /* Move usage along */ 
        if (pDev->hUsage) 
        { 
            GUI_USAGE *pUsage = GUI_USAGE_H2P(pDev->hUsage); 
 
            if (((pUsage->XSize = pDev->XSize) != 0) && ((pUsage->YSize = pDev->YSize) != 0)) 
            { 
                pUsage->x0 = x0; 
                pUsage->y0 = y0; 
            } 
        } 
    } 
    GUI_UNLOCK(); 
} 
 
#else 
 
void GUIDEV_SetOrg(void)  
{ 
    /* avoid empty object files */ 
}  
 
#endif /* GUI_MEMDEV_SUPPORT */