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

📄 terminal.lst

📁 Keil C下通过的UCGUI,UCGUI的移植源代码
💻 LST
字号:
C51 COMPILER V8.05a   TERMINAL                                                             04/11/2008 14:19:39 PAGE 1   


C51 COMPILER V8.05a, COMPILATION OF MODULE TERMINAL
OBJECT MODULE PLACED IN Terminal.obj
COMPILER INVOKED BY: D:\Program Files\keil\C51\BIN\C51.EXE gui\Widget\Terminal.c LARGE BROWSE MDU_F120 DEBUG OBJECTEXTEN
                    -D PRINT(.\Terminal.lst) OBJECT(Terminal.obj)

line level    source

   1          /*
   2          *********************************************************************************************************
   3          *                                                uC/GUI
   4          *                        Universal graphic software for embedded applications
   5          *
   6          *                       (c) Copyright 2002, Micrium Inc., Weston, FL
   7          *                       (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
   8          *
   9          *              礐/GUI is protected by international copyright laws. Knowledge of the
  10          *              source code may not be used to write a similar product. This file may
  11          *              only be used in accordance with a license and should not be redistributed
  12          *              in any way. We appreciate your understanding and fairness.
  13          *
  14          ----------------------------------------------------------------------
  15          File        : TEMPLATE.c
  16          Purpose     : Template for new emWin GSC widgets
  17          ----------------------------------------------------------------------
  18          Version-Date---Author-Explanation
  19          ----------------------------------------------------------------------
  20          0.0     yymmdd RS     Start of development
  21          ----------------------------------------------------------------------
  22          Known problems or limitations with current version
  23          ----------------------------------------------------------------------
  24          None.
  25          ----------------------------------------------------------------------
  26          Open issues
  27          ----------------------------------------------------------------------
  28          None
  29          ---------------------------END-OF-HEADER------------------------------
  30          */
  31          
  32          
  33          #include <stdlib.h>
  34          #include <string.h>
  35          
  36          #include "gui\Core\GUI.h"
  37          #if GUI_WINSUPPORT
              
              #include "TERMINAL.h"
              #include "gui\Core\GUIDebug.h"
              
              
              /*********************************************************************
              *
              *              Private config defaults
              *
              **********************************************************************
              */
              /* None */
              
              
              /*********************************************************************
              *
              *                 Object definition
C51 COMPILER V8.05a   TERMINAL                                                             04/11/2008 14:19:39 PAGE 2   

              *
              **********************************************************************
              
              */
              typedef struct {
                WM_Obj WMObj;
                WM_HMEM hpText;
                I16 MaxLen;
                const GUI_FONT* pFont;
                int Flags;
                #if GUI_DEBUG_LEVEL >1
                  int DebugId;
                #endif  
              } TERMINAL_Obj;
              
              /*********************************************************************
              *
              *              Static data
              *
              **********************************************************************
              */
              
              /* None */
              
              /*********************************************************************
              *
              *                 Macros for internal use
              *
              **********************************************************************
              */
              
              #define TERMINAL_H2P(h) ((TERMINAL_Obj*)WM_HMEM2Ptr(h))
              #define Invalidate(h) WM_InvalidateWindow(h)
              
              #if GUI_DEBUG_LEVEL >1
                #define OBJECT_ID 0x5565   /* Magic numer, should be unique if possible */
                #define ASSERT_IS_VALID_PTR(p) GUI_DEBUG_ERROROUT_IF(p->DebugId != OBJECT_ID, "EDIT.C: Wrong handle type
             - or Object not init'ed")
                #define INIT_ID(p)   p->DebugId = OBJECT_ID
                #define DEINIT_ID(p) p->DebugId = 0
              #else
                #define ASSERT_IS_VALID_PTR(p)
                #define INIT_ID(p)
                #define DEINIT_ID(p)
              #endif
              
              /*********************************************************************
              *
              *                 Static routines
              *
              **********************************************************************
              */
              
              static void Paint(TERMINAL_Obj* pObj/*, GUI_RECT*pRect*/) {
                char*s = (char*) WM_HMEM2Ptr(pObj->hpText);
                GUI_RECT rClient;
                GUI_DEBUG_LOG("TERMINAL: Paint(..)\n");
                GUI_GetClientRect(&rClient);
              /* Draw background */
                GUI_SetBkColor (GUI_WHITE/*pObj->aBkColor[0]*/);
                GUI_SetColor   (GUI_BLACK /*pObj->aTextColor[0]*/);
                GUI_Clear();
C51 COMPILER V8.05a   TERMINAL                                                             04/11/2008 14:19:39 PAGE 3   

              /* Draw the text */  
                {
                  GUI_RECT rText = rClient;
                  rText.x0 +=3;
              //    GUI_SetFont    (pObj->pFont);
                  GUI_DispStringInRect(s, &rText, GUI_TA_LEFT);
                }
              }
              
              static void Delete(TERMINAL_Obj* pObj) {
                if (pObj->hpText) {
                  GUI_ALLOC_Free(pObj->hpText);
                  pObj->hpText = 0;
                  GUI_DEBUG_LOG("TERMINAL: Delete: Deleting attached string\n");
                }
              }
              
              
              static WM_RESULT _TERMINAL_Callback (/*const*/ WM_MESSAGE*pMsg) {
                TERMINAL_Handle hObj = pMsg->hWin;
                TERMINAL_Obj* pObj = TERMINAL_H2P(hObj);
                switch (pMsg->MsgId) {
                case WM_PAINT:
                  GUI_DEBUG_LOG("BUTTON: _Callback(WM_PAINT)\n");
                  Paint(pObj/*, (GUI_RECT*)pMsg->Data.p*/);
                  return;
                case WM_DELETE:
                  GUI_DEBUG_LOG("EDIT: _Callback(WM_DELETE)\n");
                  Delete(pObj);
                  break;       /* No return here ... WM_DefaultProc needs to be called */
                }
                WM_DefaultProc(pMsg);
              }
              
              
              /*********************************************************************
              *
              *           Exported routines:  Create
              *
              **********************************************************************
              */
              
              /* Note: the parameters to a create function may vary.
                       Some widgets may have multiple create functions */
              
              
              TERMINAL_Handle TERMINAL_CreateAsChild( int x0, int y0, int xsize, int ysize, WM_HWIN hWinParent, int MaxL
             -en, int Flags) {
                TERMINAL_Handle hObj = WM_CreateWindowAsChild(x0, y0, xsize, ysize, hWinParent, 
                                     Flags, _TERMINAL_Callback,
                                     sizeof(TERMINAL_Obj)-sizeof(WM_Obj));
                if (hObj) {
                  TERMINAL_Obj* pObj = TERMINAL_H2P(hObj);
                  pObj->hpText = WM_ALLOC(MaxLen+1);
                  /* init member variables */
                  if (pObj->hpText ==0) {
                    GUI_DEBUG_ERROROUT("TERMINAL_Create failed to alloc buffer");
                    TERMINAL_Delete(hObj);
                    hObj =0;
                  }
                  pObj->MaxLen = MaxLen;
                } else {
C51 COMPILER V8.05a   TERMINAL                                                             04/11/2008 14:19:39 PAGE 4   

                  GUI_DEBUG_ERROROUT_IF(hObj==0, "TERMINAL_Create failed")
                }
                return hObj;
              }
              
              TERMINAL_Handle TERMINAL_Create(int x0, int y0, int xsize, int ysize, int MaxLen, int Flags) {
                return TERMINAL_CreateAsChild(x0, y0, xsize, ysize, 0/* hWinParent */,  MaxLen, Flags);
              }
              
              TERMINAL_Handle TERMINAL_CreateIndirect(const GUI_WIDGET_CREATE_INFO* pCreateInfo, WM_HWIN hWinParent, int
             - x0, int y0, WM_CALLBACK* cb) {
                TERMINAL_Handle  hThis;
                GUI_USE_PARA(cb);
                hThis = TERMINAL_CreateAsChild(pCreateInfo->x0 + x0, pCreateInfo->y0 + y0, pCreateInfo->xSize, pCreateIn
             -fo->ySize,
                                               hWinParent, pCreateInfo->Id, pCreateInfo->Flags);
                return hThis;
              }
              
              
              /*********************************************************************
              *
              *        Exported routines:  Various methods
              *
              **********************************************************************
              */
              void TERMINAL_SetFont(TERMINAL_Handle hObj, const GUI_FONT* pfont) {
                TERMINAL_Obj* pObj = TERMINAL_H2P(hObj);
                pObj->pFont = pfont;
                Invalidate(hObj);
              }
              
              void TERMINAL_Add(TERMINAL_Handle hObj, const char* sAdd) {
                if (!sAdd) {
                  GUI_DEBUG_WARN("TERMINAL_Add: NULL pointer passed");
                  return;
                }
                if (hObj) {
                  TERMINAL_Obj* pObj = TERMINAL_H2P(hObj);
                  char* sBuffer = (char*) WM_HMEM2Ptr(pObj->hpText);
                  int AddLen = strlen(sAdd);
                  int NewLen = AddLen+strlen(sBuffer);
                  if (AddLen > pObj->MaxLen) {
                    GUI_DEBUG_WARN("TERMINAL_Add: String longer than buffer !");
                    return;
                  }
                  /* Make space in buffer if necessary */
                  if (NewLen > pObj->MaxLen) {
                    *sBuffer =0;
                  }
                  sBuffer+= strlen(sBuffer); 
                  memcpy(sBuffer, sAdd, AddLen);
                  *(sBuffer+AddLen) = 0;
                  Invalidate(hObj);
                }
              }
              
              void TERMINAL_GetText(TERMINAL_Handle hObj, char* sDest, int MaxLen) {
                TERMINAL_Obj* pObj = TERMINAL_H2P(hObj);
                if (pObj) {
                  char * sSource = (char*) WM_HMEM2Ptr(pObj->hpText);
                  int Len = strlen(sSource);
C51 COMPILER V8.05a   TERMINAL                                                             04/11/2008 14:19:39 PAGE 5   

                  if (Len > (MaxLen - 1))
                    Len = MaxLen - 1;
                  memcpy((void *)sDest, (const void *)sSource, Len);
                  *(sDest+Len) = 0;
                }
              }
              
              #else
 245          
 246          void WIDGET_Terminal(void) {} /* avoid empty object files */
 247          
 248          #endif   /* if GUI_WINSUPPORT */
 249          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =      1    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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