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

📄 widget.txt

📁 STM32F103ZET6+UCOSII+UCGUI源码
💻 TXT
📖 第 1 页 / 共 3 页
字号:
; generated by ARM C/C++ Compiler with , RVCT4.0 [Build 524] for uVision
; commandline ArmCC [--split_sections --debug -c --asm --interleave -o.\Obj\widget.o --depend=.\Obj\widget.d --device=DARMSTM --apcs=interwork -O3 -I..\..\include -I..\..\..\FWLib\library\inc -I..\..\..\USBLib\library\inc -I..\..\Config -I..\..\GUI\Core -I..\..\GUI\Font -I..\..\GUI\ConvertColor -I..\..\GUI\AntiAlias -I..\..\GUI\ConvertMono -I..\..\GUI\JPEG -I..\..\GUI\MemDev -I..\..\GUI\MultiLayer -I..\..\GUI\Widget -I..\..\GUI\WM -IC:\Keil\ARM\INC\ST\STM32F10x ..\..\GUI\Widget\WIDGET.c]
                          THUMB

                          AREA ||i.WIDGET_AndState||, CODE, READONLY, ALIGN=1

                  WIDGET_AndState PROC
;;;255    */
;;;256    void WIDGET_AndState(WM_HWIN hObj, int Mask) {
000000  b570              PUSH     {r4-r6,lr}
000002  0004              MOVS     r4,r0
000004  460d              MOV      r5,r1
;;;257      U16 StateNew;
;;;258      if (hObj) {
000006  d00d              BEQ      |L1.36|
;;;259        WIDGET* pWidget;
;;;260        WM_LOCK();
;;;261        pWidget = WIDGET_H2P(hObj);
000008  4620              MOV      r0,r4
00000a  f7fffffe          BL       GUI_ALLOC_h2p
;;;262        StateNew = pWidget->State & (~Mask);
00000e  8cc2              LDRH     r2,[r0,#0x26]
000010  ea220105          BIC      r1,r2,r5
;;;263        if (pWidget->State != StateNew) {
000014  428a              CMP      r2,r1
000016  d005              BEQ      |L1.36|
;;;264          pWidget->State = StateNew;
000018  84c1              STRH     r1,[r0,#0x26]
;;;265          WM_Invalidate(hObj);
00001a  4620              MOV      r0,r4
00001c  e8bd4070          POP      {r4-r6,lr}
000020  f7ffbffe          B.W      WM_InvalidateWindow
                  |L1.36|
;;;266        }
;;;267        WM_UNLOCK();
;;;268      }
;;;269    }
000024  bd70              POP      {r4-r6,pc}
;;;270    
                          ENDP


                          AREA ||i.WIDGET_GetDefaultEffect||, CODE, READONLY, ALIGN=2

                  WIDGET_GetDefaultEffect PROC
;;;463    */
;;;464    const WIDGET_EFFECT*  WIDGET_GetDefaultEffect(void) {
000000  4801              LDR      r0,|L2.8|
;;;465      return _pEffectDefault;
000002  6800              LDR      r0,[r0,#0]  ; _pEffectDefault
;;;466    }
000004  4770              BX       lr
;;;467    
                          ENDP

000006  0000              DCW      0x0000
                  |L2.8|
                          DCD      ||.data||

                          AREA ||i.WIDGET_GetState||, CODE, READONLY, ALIGN=1

                  WIDGET_GetState PROC
;;;215    */
;;;216    int WIDGET_GetState(WM_HWIN hObj) {
000000  b510              PUSH     {r4,lr}
000002  0001              MOVS     r1,r0
;;;217      int Ret = 0;
000004  f04f0000          MOV      r0,#0
;;;218      WIDGET * pWidget;
;;;219      if (hObj) {
000008  d003              BEQ      |L3.18|
;;;220        WM_LOCK();
;;;221        pWidget = WIDGET_H2P(hObj);
00000a  4608              MOV      r0,r1
00000c  f7fffffe          BL       GUI_ALLOC_h2p
;;;222        Ret = pWidget->State;
000010  8cc0              LDRH     r0,[r0,#0x26]
                  |L3.18|
;;;223        WM_UNLOCK();
;;;224      }
;;;225      return Ret;
;;;226    }
000012  bd10              POP      {r4,pc}
;;;227    
                          ENDP


                          AREA ||i.WIDGET_HandleActive||, CODE, READONLY, ALIGN=1

                  WIDGET_HandleActive PROC
;;;285    */
;;;286    int WIDGET_HandleActive(WM_HWIN hObj, WM_MESSAGE* pMsg) {
000000  b538              PUSH     {r3-r5,lr}
000002  4605              MOV      r5,r0
000004  460c              MOV      r4,r1
;;;287      int Diff, Notification;
;;;288      WIDGET* pWidget = WIDGET_H2P(hObj);
000006  f7fffffe          BL       GUI_ALLOC_h2p
;;;289      switch (pMsg->MsgId) {
00000a  6821              LDR      r1,[r4,#0]
00000c  2916              CMP      r1,#0x16
00000e  d038              BEQ      |L4.130|
000010  dc0a              BGT      |L4.40|
000012  290d              CMP      r1,#0xd
000014  d02c              BEQ      |L4.112|
000016  2911              CMP      r1,#0x11
000018  d020              BEQ      |L4.92|
00001a  2914              CMP      r1,#0x14
00001c  d04f              BEQ      |L4.190|
00001e  2915              CMP      r1,#0x15
000020  d153              BNE      |L4.202|
;;;290      case WM_WIDGET_SET_EFFECT:
;;;291        Diff = pWidget->pEffect->EffectSize;
;;;292        pWidget->pEffect = (const WIDGET_EFFECT*)pMsg->Data.p;
;;;293        Diff -= pWidget->pEffect->EffectSize;
;;;294        _UpdateChildPostions(hObj, Diff);
;;;295        WM_InvalidateWindow(hObj);
;;;296        return 0;                        /* Message handled -> Return */
;;;297      case WM_GET_ID:
;;;298        pMsg->Data.v = pWidget->Id;
000022  f9b00024          LDRSH    r0,[r0,#0x24]
;;;299        return 0;                        /* Message handled -> Return */
000026  e044              B        |L4.178|
                  |L4.40|
000028  291f              CMP      r1,#0x1f              ;289
00002a  d02d              BEQ      |L4.136|
00002c  2920              CMP      r1,#0x20              ;289
00002e  d042              BEQ      |L4.182|
000030  f5b17f40          CMP      r1,#0x300             ;289
000034  d149              BNE      |L4.202|
000036  6a01              LDR      r1,[r0,#0x20]         ;291
000038  694a              LDR      r2,[r1,#0x14]         ;292
00003a  68a1              LDR      r1,[r4,#8]            ;292
00003c  6201              STR      r1,[r0,#0x20]         ;293
00003e  6948              LDR      r0,[r1,#0x14]         ;293
000040  1a14              SUBS     r4,r2,r0              ;293
000042  4628              MOV      r0,r5                 ;293
000044  f7fffffe          BL       GUI_ALLOC_h2p
000048  4261              RSBS     r1,r4,#0              ;293
00004a  4623              MOV      r3,r4                 ;293
00004c  460a              MOV      r2,r1                 ;293
00004e  9400              STR      r4,[sp,#0]            ;293
000050  f7fffffe          BL       WM__UpdateChildPositions
000054  4628              MOV      r0,r5                 ;295
000056  f7fffffe          BL       WM_InvalidateWindow
00005a  e033              B        |L4.196|
                  |L4.92|
;;;300      case WM_PID_STATE_CHANGED:
;;;301        if (pWidget->State & WIDGET_STATE_FOCUSSABLE) {
00005c  8cc0              LDRH     r0,[r0,#0x26]
00005e  06c0              LSLS     r0,r0,#27
000060  d533              BPL      |L4.202|
;;;302          const WM_PID_STATE_CHANGED_INFO * pInfo = (const WM_PID_STATE_CHANGED_INFO*)pMsg->Data.p;
;;;303          if (pInfo->State) {
000062  68a0              LDR      r0,[r4,#8]
000064  7a00              LDRB     r0,[r0,#8]
000066  b378              CBZ      r0,|L4.200|
;;;304            WM_SetFocus(hObj);
000068  4628              MOV      r0,r5
00006a  f7fffffe          BL       WM_SetFocus
00006e  e02c              B        |L4.202|
                  |L4.112|
;;;305          }
;;;306        }
;;;307        break;
;;;308      case WM_TOUCH_CHILD:
;;;309        /* A descendent (child) has been touched or released.
;;;310           If it has been touched, we need to get to top.
;;;311         */
;;;312        {
;;;313          const WM_MESSAGE * pMsgOrg;
;;;314          const GUI_PID_STATE * pState;
;;;315          pMsgOrg = (const WM_MESSAGE*)pMsg->Data.p;      /* The original touch message */
;;;316          pState = (const GUI_PID_STATE*)pMsgOrg->Data.p;
000070  68a0              LDR      r0,[r4,#8]
000072  6880              LDR      r0,[r0,#8]
;;;317          if (pState) {          /* Message may not have a valid pointer (moved out) ! */
000074  b340              CBZ      r0,|L4.200|
;;;318            if (pState->Pressed) {
000076  7a00              LDRB     r0,[r0,#8]
000078  b330              CBZ      r0,|L4.200|
;;;319              WM_BringToTop(hObj);
00007a  4628              MOV      r0,r5
00007c  f7fffffe          BL       WM_BringToTop
;;;320              return 0;                    /* Message handled -> Return */
000080  e020              B        |L4.196|
                  |L4.130|
;;;321            }
;;;322          }
;;;323        }
;;;324        break;
;;;325      case WM_SET_ID:
;;;326        pWidget->Id = pMsg->Data.v;
000082  68a1              LDR      r1,[r4,#8]
000084  8481              STRH     r1,[r0,#0x24]
;;;327        return 0;                        /* Message handled -> Return */
000086  e01d              B        |L4.196|
                  |L4.136|
;;;328      case WM_SET_FOCUS:
;;;329        if (pMsg->Data.v == 1) {
000088  68a1              LDR      r1,[r4,#8]
;;;330          WIDGET_SetState(hObj, pWidget->State |  WIDGET_STATE_FOCUS);
00008a  8cc0              LDRH     r0,[r0,#0x26]
00008c  2901              CMP      r1,#1                 ;329
00008e  d106              BNE      |L4.158|
000090  f0400101          ORR      r1,r0,#1
000094  4628              MOV      r0,r5
000096  f7fffffe          BL       WIDGET_SetState
;;;331          Notification = WM_NOTIFICATION_GOT_FOCUS;
00009a  2108              MOVS     r1,#8
00009c  e005              B        |L4.170|
                  |L4.158|
;;;332        } else {
;;;333          WIDGET_SetState(hObj, pWidget->State & ~WIDGET_STATE_FOCUS);
00009e  f0200101          BIC      r1,r0,#1
0000a2  4628              MOV      r0,r5
0000a4  f7fffffe          BL       WIDGET_SetState
;;;334          Notification = WM_NOTIFICATION_LOST_FOCUS;
0000a8  2109              MOVS     r1,#9
                  |L4.170|
;;;335        }
;;;336        WM_NotifyParent(hObj, Notification);
0000aa  4628              MOV      r0,r5
0000ac  f7fffffe          BL       WM_NotifyParent
;;;337        pMsg->Data.v = 0;   /* Focus change accepted */
0000b0  2000              MOVS     r0,#0
                  |L4.178|
0000b2  60a0              STR      r0,[r4,#8]            ;298
0000b4  e006              B        |L4.196|
                  |L4.182|
;;;338        return 0;
;;;339      case WM_GET_ACCEPT_FOCUS:
;;;340        pMsg->Data.v = (pWidget->State & WIDGET_STATE_FOCUSSABLE) ? 1 : 0;               /* Can handle focus */
0000b6  8cc0              LDRH     r0,[r0,#0x26]
0000b8  f3c01000          UBFX     r0,r0,#4,#1
;;;341        return 0;                         /* Message handled */
0000bc  e7f9              B        |L4.178|
                  |L4.190|
;;;342      case WM_GET_INSIDE_RECT:
;;;343        WIDGET__GetInsideRect(pWidget, (GUI_RECT*)pMsg->Data.p);
0000be  68a1              LDR      r1,[r4,#8]
0000c0  f7fffffe          BL       WIDGET__GetInsideRect
                  |L4.196|
;;;344        return 0;                         /* Message handled */
0000c4  2000              MOVS     r0,#0
                  |L4.198|
;;;345      }
;;;346      return 1;                           /* Message NOT handled */
;;;347    }
0000c6  bd38              POP      {r3-r5,pc}
                  |L4.200|
0000c8  e7ff              B        |L4.202|
                  |L4.202|
0000ca  2001              MOVS     r0,#1                 ;346
0000cc  e7fb              B        |L4.198|
;;;348    
                          ENDP


                          AREA ||i.WIDGET_OrState||, CODE, READONLY, ALIGN=1

                  WIDGET_OrState PROC
;;;231    */
;;;232    void WIDGET_OrState(WM_HWIN hObj, int State) {
000000  b570              PUSH     {r4-r6,lr}
000002  0005              MOVS     r5,r0
000004  460c              MOV      r4,r1
;;;233      if (hObj) {
000006  d00d              BEQ      |L5.36|
;;;234        WIDGET* pWidget;
;;;235        WM_LOCK();
;;;236        pWidget = WIDGET_H2P(hObj);
000008  4628              MOV      r0,r5
00000a  f7fffffe          BL       GUI_ALLOC_h2p
;;;237        if (State != (pWidget->State & State)) {
00000e  8cc1              LDRH     r1,[r0,#0x26]
000010  ea340201          BICS     r2,r4,r1
000014  d006              BEQ      |L5.36|
;;;238          pWidget->State |= State;
000016  4321              ORRS     r1,r1,r4
000018  84c1              STRH     r1,[r0,#0x26]
;;;239          WM_Invalidate(hObj);
00001a  4628              MOV      r0,r5
00001c  e8bd4070          POP      {r4-r6,lr}
000020  f7ffbffe          B.W      WM_InvalidateWindow
                  |L5.36|
;;;240        }
;;;241        WM_UNLOCK();
;;;242      }
;;;243    }
000024  bd70              POP      {r4-r6,pc}
;;;244    
                          ENDP


                          AREA ||i.WIDGET_SetDefaultEffect||, CODE, READONLY, ALIGN=2

⌨️ 快捷键说明

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