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

📄 widget.txt

📁 STM32F103ZET6+UCOSII+UCGUI源码
💻 TXT
📖 第 1 页 / 共 3 页
字号:
000004  460c              MOV      r4,r1                 ;120
000006  0700              LSLS     r0,r0,#28
000008  d50f              BPL      |L15.42|
;;;122        GUI_RECT Rect;
;;;123        WM_GetClientRect(&Rect);
00000a  4668              MOV      r0,sp
00000c  f7fffffe          BL       WM_GetClientRect
;;;124        pRect->x0 = Rect.y0;
000010  f8bd0002          LDRH     r0,[sp,#2]
000014  8020              STRH     r0,[r4,#0]
;;;125        pRect->x1 = Rect.y1;
000016  f8bd0006          LDRH     r0,[sp,#6]
00001a  80a0              STRH     r0,[r4,#4]
;;;126        pRect->y0 = Rect.x0;
00001c  f8bd0000          LDRH     r0,[sp,#0]
000020  8060              STRH     r0,[r4,#2]
;;;127        pRect->y1 = Rect.x1;
000022  f8bd0004          LDRH     r0,[sp,#4]
000026  80e0              STRH     r0,[r4,#6]
;;;128      } else {
;;;129        WM_GetClientRect(pRect);
;;;130      }
;;;131    }
000028  bd1c              POP      {r2-r4,pc}
                  |L15.42|
00002a  4620              MOV      r0,r4                 ;129
00002c  e8bd401c          POP      {r2-r4,lr}            ;129
000030  f7ffbffe          B.W      WM_GetClientRect
;;;132    
                          ENDP


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

                  WIDGET__GetInsideRect PROC
;;;148    */
;;;149    void WIDGET__GetInsideRect(WIDGET* pWidget, GUI_RECT* pRect) {
000000  b570              PUSH     {r4-r6,lr}
000002  4605              MOV      r5,r0
000004  460c              MOV      r4,r1
;;;150      WM__GetClientRectWin(&pWidget->Win, pRect);
000006  f7fffffe          BL       WM__GetClientRectWin
;;;151      GUI__ReduceRect(pRect, pRect, pWidget->pEffect->EffectSize);
00000a  6a28              LDR      r0,[r5,#0x20]
00000c  4621              MOV      r1,r4
00000e  6942              LDR      r2,[r0,#0x14]
000010  4620              MOV      r0,r4
000012  e8bd4070          POP      {r4-r6,lr}
000016  f7ffbffe          B.W      GUI__ReduceRect
;;;152    }
;;;153    
                          ENDP


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

                  WIDGET__GetWindowSizeX PROC
;;;187    */
;;;188    int WIDGET__GetWindowSizeX(WM_HWIN hWin) {
000000  b510              PUSH     {r4,lr}
000002  4604              MOV      r4,r0
;;;189      WIDGET* pWidget = WIDGET_H2P(hWin);
000004  f7fffffe          BL       GUI_ALLOC_h2p
;;;190      if (pWidget->State & WIDGET_STATE_VERTICAL) {
000008  8cc0              LDRH     r0,[r0,#0x26]
00000a  0700              LSLS     r0,r0,#28
;;;191        return WM_GetWindowSizeY(hWin);
00000c  4620              MOV      r0,r4
00000e  d503              BPL      |L17.24|
000010  e8bd4010          POP      {r4,lr}
000014  f7ffbffe          B.W      WM_GetWindowSizeY
                  |L17.24|
;;;192      } else {
;;;193        return WM_GetWindowSizeX(hWin);
000018  e8bd4010          POP      {r4,lr}
00001c  f7ffbffe          B.W      WM_GetWindowSizeX
;;;194      }
;;;195    }
;;;196    
                          ENDP


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

                  WIDGET__GetXSize PROC
;;;157    */
;;;158    int WIDGET__GetXSize(const WIDGET* pWidget) {
000000  8cc1              LDRH     r1,[r0,#0x26]
;;;159      int r;
;;;160      if (pWidget->State & WIDGET_STATE_VERTICAL) {
000002  0709              LSLS     r1,r1,#28
000004  d504              BPL      |L18.16|
;;;161        r = pWidget->Win.Rect.y1 - pWidget->Win.Rect.y0;
000006  f9b01006          LDRSH    r1,[r0,#6]
00000a  f9b00002          LDRSH    r0,[r0,#2]
00000e  e003              B        |L18.24|
                  |L18.16|
;;;162      } else {
;;;163        r = pWidget->Win.Rect.x1 - pWidget->Win.Rect.x0;
000010  f9b01004          LDRSH    r1,[r0,#4]
000014  f9b00000          LDRSH    r0,[r0,#0]
                  |L18.24|
000018  1a08              SUBS     r0,r1,r0
;;;164      }
;;;165      return r + 1;
00001a  1c40              ADDS     r0,r0,#1
;;;166    }
00001c  4770              BX       lr
;;;167    
                          ENDP


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

                  WIDGET__GetYSize PROC
;;;171    */
;;;172    int WIDGET__GetYSize(const WIDGET* pWidget) {
000000  8cc1              LDRH     r1,[r0,#0x26]
;;;173      int r;
;;;174      if (pWidget->State & WIDGET_STATE_VERTICAL) {
000002  0709              LSLS     r1,r1,#28
000004  d504              BPL      |L19.16|
;;;175        r = pWidget->Win.Rect.x1 - pWidget->Win.Rect.x0;
000006  f9b01004          LDRSH    r1,[r0,#4]
00000a  f9b00000          LDRSH    r0,[r0,#0]
00000e  e003              B        |L19.24|
                  |L19.16|
;;;176      } else {
;;;177        r = pWidget->Win.Rect.y1 - pWidget->Win.Rect.y0;
000010  f9b01006          LDRSH    r1,[r0,#6]
000014  f9b00002          LDRSH    r0,[r0,#2]
                  |L19.24|
000018  1a08              SUBS     r0,r1,r0
;;;178      }
;;;179      return r + 1;
00001a  1c40              ADDS     r0,r0,#1
;;;180    }
00001c  4770              BX       lr
;;;181    
                          ENDP


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

                  WIDGET__Init PROC
;;;274    */
;;;275    void WIDGET__Init(WIDGET* pWidget, int Id, U16 State) {
000000  4b02              LDR      r3,|L20.12|
;;;276      pWidget->pEffect       = _pEffectDefault;
000002  681b              LDR      r3,[r3,#0]  ; _pEffectDefault
;;;277      pWidget->State         = State;
000004  6203              STR      r3,[r0,#0x20]
000006  84c2              STRH     r2,[r0,#0x26]
;;;278      pWidget->Id            = Id;
000008  8481              STRH     r1,[r0,#0x24]
;;;279    }
00000a  4770              BX       lr
;;;280    
                          ENDP

                  |L20.12|
                          DCD      ||.data||

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

                  WIDGET__RotateRect90 PROC
;;;99     */
;;;100    void WIDGET__RotateRect90(WIDGET* pWidget, GUI_RECT* pDest, const GUI_RECT* pRect) {
000000  b570              PUSH     {r4-r6,lr}
;;;101      int x0, x1, XSize;
;;;102      x0 = pRect->x0;
;;;103      x1 = pRect->x1;
;;;104      XSize = pWidget->Win.Rect.x1 - pWidget->Win.Rect.x0;
000002  8885              LDRH     r5,[r0,#4]
000004  8800              LDRH     r0,[r0,#0]
;;;105      pDest->x0 = XSize - pRect->y1;
000006  88d6              LDRH     r6,[r2,#6]
000008  1a28              SUBS     r0,r5,r0              ;104
00000a  8813              LDRH     r3,[r2,#0]            ;102
00000c  8894              LDRH     r4,[r2,#4]            ;103
00000e  1b85              SUBS     r5,r0,r6
000010  800d              STRH     r5,[r1,#0]
;;;106      pDest->x1 = XSize - pRect->y0;
000012  8852              LDRH     r2,[r2,#2]
000014  1a80              SUBS     r0,r0,r2
000016  8088              STRH     r0,[r1,#4]
;;;107      pDest->y0 = x0;
000018  804b              STRH     r3,[r1,#2]
;;;108      pDest->y1 = x1;
00001a  80cc              STRH     r4,[r1,#6]
;;;109    
;;;110    }
00001c  bd70              POP      {r4-r6,pc}
;;;111    
                          ENDP


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

                  WIDGET__SetScrollState PROC
;;;352    */
;;;353    void WIDGET__SetScrollState(WM_HWIN hWin, const WM_SCROLL_STATE* pVState, const WM_SCROLL_STATE* pHState) {
000000  b570              PUSH     {r4-r6,lr}
000002  460e              MOV      r6,r1
000004  4605              MOV      r5,r0
000006  4614              MOV      r4,r2
;;;354      WM_HWIN hScroll;
;;;355      /* vertical scrollbar */
;;;356      hScroll = WM_GetDialogItem(hWin, GUI_ID_VSCROLL);
000008  21fe              MOVS     r1,#0xfe
00000a  f7fffffe          BL       WM_GetDialogItem
;;;357      WM_SetScrollState(hScroll, pVState);
00000e  4631              MOV      r1,r6
000010  f7fffffe          BL       WM_SetScrollState
;;;358      /* horizontal scrollbar */
;;;359      hScroll = WM_GetDialogItem(hWin, GUI_ID_HSCROLL);
000014  21ff              MOVS     r1,#0xff
000016  4628              MOV      r0,r5
000018  f7fffffe          BL       WM_GetDialogItem
;;;360      WM_SetScrollState(hScroll, pHState);
00001c  4621              MOV      r1,r4
00001e  e8bd4070          POP      {r4-r6,lr}
000022  f7ffbffe          B.W      WM_SetScrollState
;;;361    }
;;;362    
                          ENDP


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

                  _EffectRequiresRedraw PROC
;;;67     */
;;;68     static int _EffectRequiresRedraw(const WIDGET* pWidget, const GUI_RECT * pRect) {
000000  b57c              PUSH     {r2-r6,lr}
000002  460d              MOV      r5,r1
;;;69       int EffectSize = pWidget->pEffect->EffectSize;
000004  6a01              LDR      r1,[r0,#0x20]
;;;70       GUI_RECT InvalidRect;
;;;71       InvalidRect = pWidget->Win.InvalidRect;
000006  694c              LDR      r4,[r1,#0x14]
000008  e9d01202          LDRD     r1,r2,[r0,#8]
;;;72       WM__Client2Screen(&pWidget->Win, &InvalidRect);
00000c  e9cd1200          STRD     r1,r2,[sp,#0]
000010  4669              MOV      r1,sp
000012  f7fffffe          BL       WM__Client2Screen
;;;73       /* Check if there a part of the effect is inside the invalid rectangle */
;;;74       if ((pRect->x0 + EffectSize) > InvalidRect.x0) {
000016  f9b50000          LDRSH    r0,[r5,#0]
00001a  f9bd1000          LDRSH    r1,[sp,#0]
00001e  4420              ADD      r0,r0,r4
000020  4288              CMP      r0,r1
000022  dc14              BGT      |L23.78|
;;;75         return 1;               /* Overlap ... Drawing required */
;;;76       }
;;;77       if ((pRect->x1 - EffectSize) < InvalidRect.x1) {
000024  f9b50004          LDRSH    r0,[r5,#4]
000028  f9bd1004          LDRSH    r1,[sp,#4]
00002c  1b00              SUBS     r0,r0,r4
00002e  4288              CMP      r0,r1
000030  db0d              BLT      |L23.78|
;;;78         return 1;               /* Overlap ... Drawing required */
;;;79       }
;;;80       if ((pRect->y0 + EffectSize) > InvalidRect.y0) {
000032  f9b50002          LDRSH    r0,[r5,#2]
000036  f9bd1002          LDRSH    r1,[sp,#2]
00003a  4420              ADD      r0,r0,r4
00003c  4288              CMP      r0,r1
00003e  dc06              BGT      |L23.78|
;;;81         return 1;               /* Overlap ... Drawing required */
;;;82       }
;;;83       if ((pRect->y1 - EffectSize) < InvalidRect.y1) {
000040  f9b50006          LDRSH    r0,[r5,#6]
000044  f9bd1006          LDRSH    r1,[sp,#6]
000048  1b00              SUBS     r0,r0,r4
00004a  4288              CMP      r0,r1
00004c  da01              BGE      |L23.82|
                  |L23.78|
;;;84         return 1;               /* Overlap ... Drawing required */
00004e  2001              MOVS     r0,#1
;;;85       }
;;;86       return 0;                 /* No overlap ! */
;;;87     }
000050  bd7c              POP      {r2-r6,pc}
                  |L23.82|
000052  2000              MOVS     r0,#0                 ;86
000054  bd7c              POP      {r2-r6,pc}
;;;88     
                          ENDP


                          AREA ||.data||, DATA, ALIGN=2

                  _pEffectDefault
                          DCD      WIDGET_Effect_3D

⌨️ 快捷键说明

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