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

📄 guidev_auto.c

📁 uCOS/II下用的图形系统源码
💻 C
字号:
/***********************************************************************************************************                                                uC/GUI*                        Universal graphic software for embedded applications**                       (c) Copyright 2002, Micrium Inc., Weston, FL*                       (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH**              礐/GUI 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 redistributed*              in any way. We appreciate your understanding and fairness.*----------------------------------------------------------------------
File        : GUIAutoDev.c
Purpose     : Implementation of automatic banding memory devices
---------------------------END-OF-HEADER------------------------------
*/

#include "GUI_Protected.h"
#include "GUIDebug.h"

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

#if GUI_SUPPORT_MEMDEV

/******************************************************************
*
*              GUI_MEMDEV_CreateAuto
*
*******************************************************************
*/

int GUI_MEMDEV_CreateAuto(GUI_AUTODEV * pAutoDev) {
  pAutoDev->FirstCall = 1;
  return 0;
}

/******************************************************************
*
*              GUI_MEMDEV_DeleteAuto
*
*******************************************************************
*/

void GUI_MEMDEV_DeleteAuto(GUI_AUTODEV * pAutoDev) {
  GUI_USE_PARA(pAutoDev);
}

/******************************************************************
*
*              GUI_MEMDEV_DrawAuto
*
*******************************************************************
*/

int GUI_MEMDEV_DrawAuto(GUI_AUTODEV * pAutoDev, GUI_AUTODEV_INFO * pAutoDevInfo, GUI_CALLBACK_VOID_P * pfDraw, void * pData) {
  GUI_RECT rTemp;
  GUI_HMEM hMem = GUI_MEASDEV_Create();
  if (!hMem) {
    return 1;
  }
  GUI_MEASDEV_Select(hMem);
  /* Measure area to draw */
  if (pAutoDev->FirstCall) {
    /* Measure complete area */
    pAutoDevInfo->DrawFixed = 1;
    pfDraw(pData);
    GUI_MEASDEV_GetRect(hMem, &pAutoDev->rView);
    /* Measure variable area only */
    GUI_MEASDEV_ClearRect(hMem);
    pAutoDevInfo->DrawFixed = 0;
    pfDraw(pData);
    GUI_MEASDEV_GetRect(hMem, &pAutoDev->rPrev);
  } else {
    /* Measure variable area only */
    pfDraw(pData);
    GUI_MEASDEV_GetRect(hMem, &pAutoDev->rView);
    rTemp = pAutoDev->rView;
    GUI_MergeRect(&pAutoDev->rView, &pAutoDev->rView, &pAutoDev->rPrev);
    pAutoDev->rPrev = rTemp;
  }
  GUI_MEASDEV_Delete(hMem);



  /* Do the actual drawing */
  pAutoDevInfo->DrawFixed = 1;
  if (GUI_MEMDEV_Draw(&pAutoDev->rView, pfDraw, pData, 0, GUI_MEMDEV_NOTRANS)) {
    return 1;
  }
  pAutoDevInfo->DrawFixed = 0;
  pAutoDev->FirstCall = 0;
  return 0;
}

#else

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

#endif /* GUI_SUPPORT_MEMDEV */

⌨️ 快捷键说明

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