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

📄 button.txt

📁 STM32F103ZET6+UCOSII+UCGUI源码
💻 TXT
📖 第 1 页 / 共 2 页
字号:
                  BUTTON_SetState PROC
;;;420    */
;;;421    void BUTTON_SetState(BUTTON_Handle hObj, int State) {
000000  f7ffbffe          B.W      WIDGET_SetState
;;;422      WIDGET_SetState(hObj, State);
;;;423    }
;;;424    
                          ENDP


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

                  BUTTON_SetText PROC
;;;356    */
;;;357    void BUTTON_SetText(BUTTON_Handle hObj, const char* s) {
000000  b570              PUSH     {r4-r6,lr}
000002  0004              MOVS     r4,r0
000004  460d              MOV      r5,r1
;;;358      if (hObj) {
000006  d00d              BEQ      |L8.36|
;;;359        BUTTON_Obj* pObj;
;;;360        WM_LOCK();
;;;361        pObj = BUTTON_H2P(hObj);
000008  4620              MOV      r0,r4
00000a  f7fffffe          BL       GUI_ALLOC_h2p
;;;362        if (GUI__SetText(&pObj->hpText, s)) {
00000e  4629              MOV      r1,r5
000010  3048              ADDS     r0,r0,#0x48
000012  f7fffffe          BL       GUI__SetText
000016  2800              CMP      r0,#0
000018  d004              BEQ      |L8.36|
;;;363          BUTTON_Invalidate(hObj);
00001a  4620              MOV      r0,r4
00001c  e8bd4070          POP      {r4-r6,lr}
000020  f7ffbffe          B.W      WM_InvalidateWindow
                  |L8.36|
;;;364        }
;;;365        WM_UNLOCK();
;;;366      }
;;;367    }
000024  bd70              POP      {r4-r6,pc}
;;;368    
                          ENDP


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

                  BUTTON_SetTextColor PROC
;;;404    */
;;;405    void BUTTON_SetTextColor(BUTTON_Handle hObj,unsigned int Index, GUI_COLOR Color) {
000000  b570              PUSH     {r4-r6,lr}
000002  0004              MOVS     r4,r0
000004  460d              MOV      r5,r1
000006  4616              MOV      r6,r2
;;;406      if (hObj && (Index <= 2)) {
000008  d00c              BEQ      |L9.36|
00000a  2d02              CMP      r5,#2
00000c  d80a              BHI      |L9.36|
;;;407        BUTTON_Obj* pObj;
;;;408        WM_LOCK();
;;;409        pObj = BUTTON_H2P(hObj);
00000e  4620              MOV      r0,r4
000010  f7fffffe          BL       GUI_ALLOC_h2p
;;;410        BUTTON_ASSERT_IS_VALID_PTR(pObj);
;;;411        pObj->Props.aTextColor[Index] = Color;
000014  eb000085          ADD      r0,r0,r5,LSL #2
;;;412        BUTTON_Invalidate(hObj);
000018  6346              STR      r6,[r0,#0x34]
00001a  4620              MOV      r0,r4
00001c  e8bd4070          POP      {r4-r6,lr}
000020  f7ffbffe          B.W      WM_InvalidateWindow
                  |L9.36|
;;;413        WM_UNLOCK();
;;;414      }
;;;415    }
000024  bd70              POP      {r4-r6,pc}
;;;416    
                          ENDP


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

                  _ButtonReleased PROC
;;;202    */
;;;203    static void _ButtonReleased(BUTTON_Handle hObj, BUTTON_Obj* pObj, int Notification) {
000000  b570              PUSH     {r4-r6,lr}
000002  460c              MOV      r4,r1
000004  4606              MOV      r6,r0
000006  4615              MOV      r5,r2
;;;204      WIDGET_AndState(hObj, BUTTON_STATE_PRESSED);
000008  f44f7180          MOV      r1,#0x100
00000c  f7fffffe          BL       WIDGET_AndState
;;;205      if (pObj->Widget.Win.Status & WM_SF_ISVIS) {
000010  8ba0              LDRH     r0,[r4,#0x1c]
000012  0780              LSLS     r0,r0,#30
000014  d503              BPL      |L10.30|
;;;206        WM_NotifyParent(hObj, Notification);
000016  4629              MOV      r1,r5
000018  4630              MOV      r0,r6
00001a  f7fffffe          BL       WM_NotifyParent
                  |L10.30|
;;;207      }
;;;208      if (Notification == WM_NOTIFICATION_RELEASED) {
00001e  2d02              CMP      r5,#2
000020  d105              BNE      |L10.46|
;;;209        GUI_DEBUG_LOG("BUTTON: Hit\n");
;;;210        GUI_StoreKey(pObj->Widget.Id);
000022  f9b40024          LDRSH    r0,[r4,#0x24]
000026  e8bd4070          POP      {r4-r6,lr}
00002a  f7ffbffe          B.W      GUI_StoreKey
                  |L10.46|
;;;211      }
;;;212    }
00002e  bd70              POP      {r4-r6,pc}
;;;213    
                          ENDP


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

                  _Paint PROC
;;;109    */
;;;110    static void _Paint(BUTTON_Obj* pObj, BUTTON_Handle hObj) {
000000  e92d43f0          PUSH     {r4-r9,lr}
000004  4604              MOV      r4,r0
;;;111      const char* s = NULL;
;;;112      unsigned int Index;
;;;113      int State, PressedState, ColorIndex;
;;;114      GUI_RECT rClient, rInside;
;;;115      State = pObj->Widget.State;
000006  8ce6              LDRH     r6,[r4,#0x26]
000008  b087              SUB      sp,sp,#0x1c           ;110
00000a  4608              MOV      r0,r1                 ;110
00000c  f04f0900          MOV      r9,#0                 ;111
;;;116      PressedState = (State & BUTTON_STATE_PRESSED) ? 1 : 0;
000010  f3c62500          UBFX     r5,r6,#8,#1
;;;117      ColorIndex   = (WM__IsEnabled(hObj)) ? PressedState : 2;
000014  f7fffffe          BL       WM__IsEnabled
000018  b108              CBZ      r0,|L11.30|
00001a  462f              MOV      r7,r5
00001c  e000              B        |L11.32|
                  |L11.30|
00001e  2702              MOVS     r7,#2
                  |L11.32|
;;;118      GUI_SetFont(pObj->Props.pFont);
000020  6c20              LDR      r0,[r4,#0x40]
000022  f7fffffe          BL       GUI_SetFont
;;;119      GUI_DEBUG_LOG("BUTTON: Paint(..)\n");
;;;120      if (pObj->hpText) {
000026  f9b40048          LDRSH    r0,[r4,#0x48]
00002a  b110              CBZ      r0,|L11.50|
;;;121        s = (const char*) GUI_ALLOC_h2p(pObj->hpText);
00002c  f7fffffe          BL       GUI_ALLOC_h2p
000030  4681              MOV      r9,r0
                  |L11.50|
;;;122      }
;;;123      GUI_GetClientRect(&rClient);
000032  a805              ADD      r0,sp,#0x14
000034  f7fffffe          BL       GUI_GetClientRect
;;;124      /* Start drawing */
;;;125      rInside = rClient;
000038  e9dd0105          LDRD     r0,r1,[sp,#0x14]
;;;126    /* Draw the 3D effect (if configured) */
;;;127      #if BUTTON_USE_3D
;;;128      {
;;;129        int EffectSize;
;;;130        if ((PressedState) == 0) {
00003c  e9cd0103          STRD     r0,r1,[sp,#0xc]
000040  b92d              CBNZ     r5,|L11.78|
;;;131          pObj->Widget.pEffect->pfDrawUp();  /* _WIDGET_EFFECT_3D_DrawUp(); */
000042  6a20              LDR      r0,[r4,#0x20]
000044  6800              LDR      r0,[r0,#0]
000046  4780              BLX      r0
;;;132          EffectSize = pObj->Widget.pEffect->EffectSize;
000048  6a20              LDR      r0,[r4,#0x20]
00004a  6942              LDR      r2,[r0,#0x14]
00004c  e00d              B        |L11.106|
                  |L11.78|
;;;133        } else {
;;;134          LCD_SetColor(0x000000);
00004e  2000              MOVS     r0,#0
000050  f7fffffe          BL       LCD_SetColor
;;;135          GUI_DrawRect(rClient.y0, rClient.x0, rClient.x1, rClient.y1);
000054  f9bd301a          LDRSH    r3,[sp,#0x1a]
000058  f9bd2018          LDRSH    r2,[sp,#0x18]
00005c  f9bd1014          LDRSH    r1,[sp,#0x14]
000060  f9bd0016          LDRSH    r0,[sp,#0x16]
000064  f7fffffe          BL       GUI_DrawRect
;;;136          EffectSize = 1;
000068  2201              MOVS     r2,#1
                  |L11.106|
;;;137        }
;;;138        GUI__ReduceRect(&rInside, &rInside, EffectSize); 
00006a  a903              ADD      r1,sp,#0xc
00006c  a803              ADD      r0,sp,#0xc
00006e  f7fffffe          BL       GUI__ReduceRect
;;;139      }
;;;140      #endif
;;;141      /* Draw background */
;;;142      LCD_SetBkColor (pObj->Props.aBkColor[ColorIndex]);
000072  eb040087          ADD      r0,r4,r7,LSL #2
000076  4680              MOV      r8,r0
000078  6a80              LDR      r0,[r0,#0x28]
00007a  f7fffffe          BL       LCD_SetBkColor
;;;143      LCD_SetColor   (pObj->Props.aTextColor[ColorIndex]);
00007e  f8d80034          LDR      r0,[r8,#0x34]
000082  f7fffffe          BL       LCD_SetColor
;;;144      WM_SetUserClipRect(&rInside);
000086  a803              ADD      r0,sp,#0xc
000088  f7fffffe          BL       WM_SetUserClipRect
;;;145      GUI_Clear();
00008c  f7fffffe          BL       GUI_Clear
;;;146      /* Draw bitmap.
;;;147         If we have only one, we will use it.
;;;148         If we have to we will use the second one (Index 1) for the pressed state
;;;149      */
;;;150      if (ColorIndex < 2) {
000090  2f02              CMP      r7,#2
000092  da06              BGE      |L11.162|
;;;151        Index = (pObj->ahDrawObj[BUTTON_BI_PRESSED] && PressedState) ? BUTTON_BI_PRESSED : BUTTON_BI_UNPRESSED;
000094  f8b4104c          LDRH     r1,[r4,#0x4c]
000098  2000              MOVS     r0,#0
00009a  b131              CBZ      r1,|L11.170|
00009c  b12d              CBZ      r5,|L11.170|
00009e  2001              MOVS     r0,#1
0000a0  e003              B        |L11.170|
                  |L11.162|
;;;152      } else {
;;;153        Index = pObj->ahDrawObj[BUTTON_BI_DISABLED] ? BUTTON_BI_DISABLED : BUTTON_BI_UNPRESSED;
0000a2  f8b4004e          LDRH     r0,[r4,#0x4e]
0000a6  b100              CBZ      r0,|L11.170|
0000a8  2002              MOVS     r0,#2
                  |L11.170|
;;;154      }
;;;155      GUI_DRAW__Draw(pObj->ahDrawObj[Index], 0, 0);
0000aa  eb040040          ADD      r0,r4,r0,LSL #1
0000ae  2200              MOVS     r2,#0
0000b0  f9b0004a          LDRSH    r0,[r0,#0x4a]
0000b4  4611              MOV      r1,r2
0000b6  f7fffffe          BL       GUI_DRAW__Draw
;;;156    /* Draw the actual button (background and text) */  
;;;157      {
;;;158        GUI_RECT r;
;;;159        r = rInside;
0000ba  e9dd0103          LDRD     r0,r1,[sp,#0xc]
;;;160        #if BUTTON_USE_3D
;;;161          if (PressedState) {
0000be  e9cd0101          STRD     r0,r1,[sp,#4]
0000c2  b125              CBZ      r5,|L11.206|
;;;162            GUI_MoveRect(&r, BUTTON_3D_MOVE_X,BUTTON_3D_MOVE_Y);
0000c4  2201              MOVS     r2,#1
0000c6  4611              MOV      r1,r2
0000c8  a801              ADD      r0,sp,#4
0000ca  f7fffffe          BL       GUI_MoveRect
                  |L11.206|
;;;163          }
;;;164        #endif
;;;165        GUI_SetTextMode(GUI_TM_TRANS);
0000ce  2002              MOVS     r0,#2
0000d0  f7fffffe          BL       GUI_SetTextMode
;;;166        GUI_DispStringInRect(s, &r, pObj->Props.Align);
0000d4  f9b42044          LDRSH    r2,[r4,#0x44]
0000d8  a901              ADD      r1,sp,#4
0000da  4648              MOV      r0,r9
0000dc  f7fffffe          BL       GUI_DispStringInRect
;;;167      }
;;;168      /* Draw focus */
;;;169      if (State & BUTTON_STATE_FOCUS) {
0000e0  07f0              LSLS     r0,r6,#31
0000e2  d006              BEQ      |L11.242|
;;;170        LCD_SetColor(GUI_BLACK);
0000e4  2000              MOVS     r0,#0
0000e6  f7fffffe          BL       LCD_SetColor
;;;171        GUI_DrawFocusRect(&rClient, 2);
0000ea  2102              MOVS     r1,#2
0000ec  a805              ADD      r0,sp,#0x14
0000ee  f7fffffe          BL       GUI_DrawFocusRect
                  |L11.242|
;;;172      }
;;;173      WM_SetUserClipRect(NULL);
0000f2  2000              MOVS     r0,#0
0000f4  f7fffffe          BL       WM_SetUserClipRect
;;;174    }
0000f8  b007              ADD      sp,sp,#0x1c
0000fa  e8bd83f0          POP      {r4-r9,pc}
;;;175    
                          ENDP


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

                  BUTTON__DefaultProps
                          DCD      0x00aaaaaa
                          DCD      0x00ffffff
                          DCD      0x00d3d3d3
                          DCD      0x00000000
                          DCD      0x00000000
                          DCD      0x00404040
                          DCD      GUI_Font13_1
00001c  000e              DCW      0x000e
00001e  0000              DCB      0x00,0x00

⌨️ 快捷键说明

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