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

📄 dropdown.txt

📁 STM32F103ZET6+UCOSII+UCGUI源码
💻 TXT
📖 第 1 页 / 共 4 页
字号:
; generated by ARM C/C++ Compiler with , RVCT4.0 [Build 524] for uVision
; commandline ArmCC [--split_sections --debug -c --asm --interleave -o.\Obj\dropdown.o --depend=.\Obj\dropdown.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\DROPDOWN.c]
                          THUMB

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

                  DROPDOWN_AddKey PROC
;;;464    */
;;;465    void DROPDOWN_AddKey(DROPDOWN_Handle hObj, int Key) {
000000  e92d41f0          PUSH     {r4-r8,lr}
000004  0006              MOVS     r6,r0
;;;466      if (hObj) {
000006  d02c              BEQ      |L1.98|
;;;467        WM_LOCK();
;;;468        switch (Key) {
000008  2911              CMP      r1,#0x11
00000a  d006              BEQ      |L1.26|
00000c  2913              CMP      r1,#0x13
00000e  d109              BNE      |L1.36|
;;;469          case GUI_KEY_DOWN:
;;;470            DROPDOWN_IncSel(hObj);
000010  4630              MOV      r0,r6
000012  e8bd41f0          POP      {r4-r8,lr}
000016  f7ffbffe          B.W      DROPDOWN_IncSel
                  |L1.26|
;;;471            break;
;;;472          case GUI_KEY_UP:
;;;473            DROPDOWN_DecSel(hObj);
00001a  4630              MOV      r0,r6
00001c  e8bd41f0          POP      {r4-r8,lr}
000020  f7ffbffe          B.W      DROPDOWN_DecSel
                  |L1.36|
;;;474            break;
;;;475          default:
;;;476            _SelectByKey(hObj, Key);
000024  460c              MOV      r4,r1
000026  4630              MOV      r0,r6
000028  f7fffffe          BL       GUI_ALLOC_h2p
00002c  4607              MOV      r7,r0
00002e  4620              MOV      r0,r4
000030  f7fffffe          BL       _Tolower
000034  4605              MOV      r5,r0
000036  2400              MOVS     r4,#0
000038  e010              B        |L1.92|
                  |L1.58|
00003a  4621              MOV      r1,r4
00003c  4638              MOV      r0,r7
00003e  f7fffffe          BL       _GetpItem
000042  7800              LDRB     r0,[r0,#0]
000044  f7fffffe          BL       _Tolower
000048  b2c0              UXTB     r0,r0
00004a  42a8              CMP      r0,r5
00004c  d105              BNE      |L1.90|
00004e  4621              MOV      r1,r4
000050  4630              MOV      r0,r6
000052  e8bd41f0          POP      {r4-r8,lr}
000056  f7ffbffe          B.W      DROPDOWN_SetSel
                  |L1.90|
00005a  1c64              ADDS     r4,r4,#1
                  |L1.92|
00005c  8df8              LDRH     r0,[r7,#0x2e]
00005e  42a0              CMP      r0,r4
000060  dceb              BGT      |L1.58|
                  |L1.98|
;;;477            break;
;;;478        }
;;;479        WM_UNLOCK();
;;;480      }
;;;481    }
000062  e8bd81f0          POP      {r4-r8,pc}
;;;482    
                          ENDP


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

                  DROPDOWN_AddString PROC
;;;486    */
;;;487    void DROPDOWN_AddString(DROPDOWN_Handle hObj, const char* s) {
000000  b570              PUSH     {r4-r6,lr}
000002  0004              MOVS     r4,r0
000004  460d              MOV      r5,r1
;;;488      DROPDOWN_Obj* pObj;
;;;489      if (hObj && s) {
000006  d013              BEQ      |L2.48|
000008  2d00              CMP      r5,#0
00000a  d011              BEQ      |L2.48|
;;;490        WM_LOCK();
;;;491        pObj = DROPDOWN_H2P(hObj);
00000c  4620              MOV      r0,r4
00000e  f7fffffe          BL       GUI_ALLOC_h2p
000012  4606              MOV      r6,r0
;;;492        GUI_ARRAY_AddItem(&pObj->Handles, s, strlen(s) + 1);
000014  4628              MOV      r0,r5
000016  f7fffffe          BL       strlen
00001a  1c42              ADDS     r2,r0,#1
00001c  4629              MOV      r1,r5
00001e  f106002e          ADD      r0,r6,#0x2e
000022  f7fffffe          BL       GUI_ARRAY_AddItem
;;;493        DROPDOWN_Invalidate(hObj);
000026  4620              MOV      r0,r4
000028  e8bd4070          POP      {r4-r6,lr}
00002c  f7ffbffe          B.W      WM_InvalidateWindow
                  |L2.48|
;;;494        WM_UNLOCK();
;;;495      }
;;;496    }
000030  bd70              POP      {r4-r6,pc}
;;;497    
                          ENDP


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

                  DROPDOWN_Collapse PROC
;;;392    */
;;;393    void DROPDOWN_Collapse(DROPDOWN_Handle hObj) {
000000  b510              PUSH     {r4,lr}
;;;394      DROPDOWN_Obj* pObj;
;;;395      if (hObj) {
000002  2800              CMP      r0,#0
000004  d00b              BEQ      |L3.30|
;;;396        WM_LOCK();
;;;397        pObj = DROPDOWN_H2P(hObj);
000006  f7fffffe          BL       GUI_ALLOC_h2p
00000a  4604              MOV      r4,r0
;;;398        if (pObj->hListWin) {
00000c  f9b00060          LDRSH    r0,[r0,#0x60]
000010  2800              CMP      r0,#0
000012  d004              BEQ      |L3.30|
;;;399          WM_DeleteWindow(pObj->hListWin);
000014  f7fffffe          BL       WM_DeleteWindow
;;;400          pObj->hListWin = 0;
000018  2000              MOVS     r0,#0
00001a  f8a40060          STRH     r0,[r4,#0x60]
                  |L3.30|
;;;401        }
;;;402        WM_UNLOCK();
;;;403      }
;;;404    }
00001e  bd10              POP      {r4,pc}
;;;405    
                          ENDP


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

                  DROPDOWN_CreateEx PROC
;;;356    */
;;;357    DROPDOWN_Handle DROPDOWN_CreateEx(int x0, int y0, int xsize, int ysize, WM_HWIN hParent,
000000  e92d41ff          PUSH     {r0-r8,lr}
;;;358                                      int WinFlags, int ExFlags, int Id)
;;;359    {
000004  4606              MOV      r6,r0
000006  460f              MOV      r7,r1
;;;360      DROPDOWN_Handle hObj;
;;;361      hObj = WM_CreateWindowAsChild(x0, y0, xsize, -1, hParent, WinFlags, _DROPDOWN_Callback,
000008  a80a              ADD      r0,sp,#0x28
00000a  e8900123          LDM      r0,{r0,r1,r5,r8}
00000e  4694              MOV      r12,r2                ;359
000010  461c              MOV      r4,r3                 ;359
000012  2348              MOVS     r3,#0x48
000014  4a14              LDR      r2,|L4.104|
000016  b289              UXTH     r1,r1
000018  e88d000f          STM      sp,{r0-r3}
00001c  f04f33ff          MOV      r3,#0xffffffff
000020  4662              MOV      r2,r12
000022  4639              MOV      r1,r7
000024  4630              MOV      r0,r6
000026  f7fffffe          BL       WM_CreateWindowAsChild
00002a  0007              MOVS     r7,r0
;;;362                                    sizeof(DROPDOWN_Obj) - sizeof(WM_Obj));
;;;363      if (hObj) {
00002c  d017              BEQ      |L4.94|
;;;364        DROPDOWN_Obj* pObj;
;;;365        WM_LOCK();
;;;366        pObj = DROPDOWN_H2P(hObj);
00002e  4638              MOV      r0,r7
000030  f7fffffe          BL       GUI_ALLOC_h2p
000034  4606              MOV      r6,r0
;;;367        /* Init sub-classes */
;;;368        GUI_ARRAY_CREATE(&pObj->Handles);
;;;369        /* init widget specific variables */
;;;370        WIDGET__Init(&pObj->Widget, Id, WIDGET_STATE_FOCUSSABLE);
000036  2210              MOVS     r2,#0x10
000038  4641              MOV      r1,r8
00003a  f7fffffe          BL       WIDGET__Init
;;;371        pObj->Flags          = ExFlags;
00003e  f8865062          STRB     r5,[r6,#0x62]
;;;372        pObj->Props          = DROPDOWN__DefaultProps;
000042  2220              MOVS     r2,#0x20
000044  4909              LDR      r1,|L4.108|
000046  f1060040          ADD      r0,r6,#0x40
00004a  f7fffffe          BL       __aeabi_memcpy4
;;;373        pObj->ScrollbarWidth = 0;
00004e  2100              MOVS     r1,#0
000050  f8861066          STRB     r1,[r6,#0x66]
;;;374        INIT_ID(pObj);
;;;375        pObj->ySizeEx = ysize;
000054  8574              STRH     r4,[r6,#0x2a]
;;;376        DROPDOWN__AdjustHeight(hObj, pObj);
000056  4631              MOV      r1,r6
000058  4638              MOV      r0,r7
00005a  f7fffffe          BL       DROPDOWN__AdjustHeight
                  |L4.94|
;;;377        WM_UNLOCK();
;;;378      }
;;;379      return hObj;
00005e  4638              MOV      r0,r7
;;;380    }
000060  b004              ADD      sp,sp,#0x10
000062  e8bd81f0          POP      {r4-r8,pc}
;;;381    
                          ENDP

000066  0000              DCW      0x0000
                  |L4.104|
                          DCD      _DROPDOWN_Callback
                  |L4.108|
                          DCD      ||.data||

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

                  DROPDOWN_DecSel PROC
;;;620    */
;;;621    void DROPDOWN_DecSel(DROPDOWN_Handle hObj) {
000000  b510              PUSH     {r4,lr}
000002  4604              MOV      r4,r0
;;;622      int Sel = DROPDOWN_GetSel(hObj);
000004  f7fffffe          BL       DROPDOWN_GetSel
;;;623      if (Sel)
000008  b100              CBZ      r0,|L5.12|
;;;624    	  Sel--;
00000a  1e40              SUBS     r0,r0,#1
                  |L5.12|
;;;625      DROPDOWN_SetSel(hObj, Sel);
00000c  4601              MOV      r1,r0
00000e  4620              MOV      r0,r4
000010  e8bd4010          POP      {r4,lr}
000014  f7ffbffe          B.W      DROPDOWN_SetSel
;;;626    }
;;;627    
                          ENDP


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

                  DROPDOWN_Expand PROC
;;;409    */
;;;410    void DROPDOWN_Expand(DROPDOWN_Handle hObj) {
000000  e92d43f0          PUSH     {r4-r9,lr}
000004  b085              SUB      sp,sp,#0x14
000006  ea5f0800          MOVS     r8,r0
;;;411      int xSize, ySize, i, NumItems;
;;;412      WM_HWIN hLst;
;;;413      GUI_RECT r;
;;;414      WM_HWIN hParent;
;;;415      WM_Obj* pParent;
;;;416      DROPDOWN_Obj* pObj;
;;;417      if (hObj) {
00000a  d07e              BEQ      |L6.266|
;;;418        WM_LOCK();
;;;419        pObj = DROPDOWN_H2P(hObj);
00000c  4640              MOV      r0,r8
00000e  f7fffffe          BL       GUI_ALLOC_h2p
000012  4604              MOV      r4,r0
;;;420        if  (pObj->hListWin == 0) {
000014  f8b00060          LDRH     r0,[r0,#0x60]
000018  2800              CMP      r0,#0
00001a  d176              BNE      |L6.266|
;;;421          hParent = WM_GetParent(hObj);
00001c  4640              MOV      r0,r8
00001e  f7fffffe          BL       WM_GetParent
;;;422          pParent = WM_H2P(hParent);
000022  f7fffffe          BL       GUI_ALLOC_h2p
000026  4606              MOV      r6,r0
;;;423          xSize = WM__GetWindowSizeX(&pObj->Widget.Win);
000028  4620              MOV      r0,r4
00002a  f7fffffe          BL       WM__GetWindowSizeX
00002e  4681              MOV      r9,r0
;;;424          ySize = pObj->ySizeEx;
000030  f9b4502a          LDRSH    r5,[r4,#0x2a]
;;;425          NumItems = _GetNumItems(pObj);
000034  8de7              LDRH     r7,[r4,#0x2e]
;;;426          /* Get coordinates of window in client coordiantes of parent */
;;;427          r = pObj->Widget.Win.Rect;
000036  e9d40100          LDRD     r0,r1,[r4,#0]
;;;428          GUI_MoveRect(&r, -pParent->Rect.x0, -pParent->Rect.y0);
00003a  e9cd0103          STRD     r0,r1,[sp,#0xc]
00003e  f9b60002          LDRSH    r0,[r6,#2]
000042  4242              RSBS     r2,r0,#0
000044  f9b60000          LDRSH    r0,[r6,#0]
000048  4241              RSBS     r1,r0,#0
00004a  a803              ADD      r0,sp,#0xc
00004c  f7fffffe          BL       GUI_MoveRect
;;;429          if (pObj->Flags & DROPDOWN_CF_UP) {
000050  f8940062          LDRB     r0,[r4,#0x62]
000054  0780              LSLS     r0,r0,#30
000056  d503              BPL      |L6.96|

⌨️ 快捷键说明

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