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

📄 progbar.txt

📁 STM32F103ZET6+UCOSII+UCGUI源码
💻 TXT
📖 第 1 页 / 共 3 页
字号:
000034  2100              MOVS     r1,#0
000036  9001              STR      r0,[sp,#4]
000038  7001              STRB     r1,[r0,#0]
                  |L11.58|
;;;172    	}
;;;173      return (const char*)pText;
00003a  4620              MOV      r0,r4
;;;174    }
00003c  bd1c              POP      {r2-r4,pc}
;;;175    
                          ENDP


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

                  _GetTextRect PROC
;;;179    */
;;;180    static void _GetTextRect(const PROGBAR_Obj* pObj, GUI_RECT* pRect, const char* pText) {
000000  e92d41f0          PUSH     {r4-r8,lr}
000004  4605              MOV      r5,r0
000006  460c              MOV      r4,r1
000008  4610              MOV      r0,r2
;;;181      int xSize      = pObj->Widget.Win.Rect.x1 - pObj->Widget.Win.Rect.x0 + 1;
00000a  f9b51004          LDRSH    r1,[r5,#4]
00000e  f9b52000          LDRSH    r2,[r5,#0]
000012  1a8f              SUBS     r7,r1,r2
;;;182      int ySize      = pObj->Widget.Win.Rect.y1 - pObj->Widget.Win.Rect.y0 + 1;
000014  f9b51006          LDRSH    r1,[r5,#6]
000018  f9b52002          LDRSH    r2,[r5,#2]
00001c  1c7f              ADDS     r7,r7,#1              ;181
00001e  1a89              SUBS     r1,r1,r2
000020  f1010801          ADD      r8,r1,#1
;;;183      int TextWidth  = GUI_GetStringDistX(pText);
000024  f7fffffe          BL       GUI_GetStringDistX
000028  4606              MOV      r6,r0
;;;184      int TextHeight = GUI_GetFontSizeY();
00002a  f7fffffe          BL       GUI_GetFontSizeY
;;;185      int EffectSize = pObj->Widget.pEffect->EffectSize;
00002e  6a29              LDR      r1,[r5,#0x20]
;;;186      switch (pObj->TextAlign & GUI_TA_HORIZONTAL) {
000030  f8b52046          LDRH     r2,[r5,#0x46]
000034  6949              LDR      r1,[r1,#0x14]         ;185
000036  f0020203          AND      r2,r2,#3
00003a  2a01              CMP      r2,#1
00003c  d006              BEQ      |L12.76|
00003e  2a02              CMP      r2,#2
000040  d107              BNE      |L12.82|
;;;187      case GUI_TA_CENTER:
;;;188        pRect->x0 = (xSize - TextWidth) / 2;
000042  1bb9              SUBS     r1,r7,r6
000044  eb0171d1          ADD      r1,r1,r1,LSR #31
000048  1049              ASRS     r1,r1,#1
;;;189    		break;
00004a  e002              B        |L12.82|
                  |L12.76|
;;;190      case GUI_TA_RIGHT:
;;;191        pRect->x0 = xSize - TextWidth - 1 - EffectSize;
00004c  1bba              SUBS     r2,r7,r6
00004e  1a51              SUBS     r1,r2,r1
000050  1e49              SUBS     r1,r1,#1
                  |L12.82|
000052  8021              STRH     r1,[r4,#0]            ;188
;;;192    		break;
;;;193      default:
;;;194        pRect->x0 = EffectSize;
;;;195    	}
;;;196      pRect->y0  = (ySize - TextHeight) / 2;
000054  eba80100          SUB      r1,r8,r0
000058  eb0171d1          ADD      r1,r1,r1,LSR #31
00005c  104a              ASRS     r2,r1,#1
00005e  8062              STRH     r2,[r4,#2]
;;;197      pRect->x0 += pObj->XOff;
000060  8821              LDRH     r1,[r4,#0]
000062  f8353f42          LDRH     r3,[r5,#0x42]!
;;;198      pRect->y0 += pObj->YOff;
;;;199      pRect->x1  = pRect->x0 + TextWidth  - 1;
000066  1e76              SUBS     r6,r6,#1
000068  4419              ADD      r1,r1,r3              ;197
00006a  8021              STRH     r1,[r4,#0]            ;197
00006c  886b              LDRH     r3,[r5,#2]            ;198
00006e  4431              ADD      r1,r1,r6
000070  441a              ADD      r2,r2,r3              ;198
000072  8062              STRH     r2,[r4,#2]            ;198
;;;200      pRect->y1  = pRect->y0 + TextHeight - 1;
000074  1e40              SUBS     r0,r0,#1
000076  80a1              STRH     r1,[r4,#4]            ;199
000078  4410              ADD      r0,r0,r2
00007a  80e0              STRH     r0,[r4,#6]
;;;201    }
00007c  e8bd81f0          POP      {r4-r8,pc}
;;;202    
                          ENDP


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

                  _PROGBAR_Callback PROC
;;;248    */
;;;249    static void _PROGBAR_Callback(WM_MESSAGE*pMsg) {
000000  b570              PUSH     {r4-r6,lr}
;;;250      PROGBAR_Handle hObj = (PROGBAR_Handle)pMsg->hWin;
000002  f9b05004          LDRSH    r5,[r0,#4]
000006  4604              MOV      r4,r0                 ;249
;;;251      /* Let widget handle the standard messages */
;;;252      if (WIDGET_HandleActive(hObj, pMsg) == 0) {
000008  4601              MOV      r1,r0
00000a  4628              MOV      r0,r5
00000c  f7fffffe          BL       WIDGET_HandleActive
000010  2800              CMP      r0,#0
000012  d014              BEQ      |L13.62|
;;;253        return;
;;;254      }
;;;255      switch (pMsg->MsgId) {
000014  6820              LDR      r0,[r4,#0]
000016  280b              CMP      r0,#0xb
000018  d006              BEQ      |L13.40|
00001a  280f              CMP      r0,#0xf
00001c  d10a              BNE      |L13.52|
;;;256      case WM_PAINT:
;;;257        _Paint(hObj);
00001e  4628              MOV      r0,r5
000020  e8bd4070          POP      {r4-r6,lr}
000024  f7ffbffe          B.W      _Paint
                  |L13.40|
000028  4628              MOV      r0,r5
00002a  f7fffffe          BL       GUI_ALLOC_h2p
00002e  3040              ADDS     r0,r0,#0x40
000030  f7fffffe          BL       GUI_ALLOC_FreePtr
                  |L13.52|
;;;258        return;
;;;259      case WM_DELETE:
;;;260        _Delete(hObj);
;;;261        break;
;;;262      }
;;;263      WM_DefaultProc(pMsg);
000034  4620              MOV      r0,r4
000036  e8bd4070          POP      {r4-r6,lr}
00003a  f7ffbffe          B.W      WM_DefaultProc
                  |L13.62|
;;;264    }
00003e  bd70              POP      {r4-r6,pc}
;;;265    
                          ENDP


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

                  _Paint PROC
;;;206    */
;;;207    static void _Paint(PROGBAR_Handle hObj) {
000000  b5f0              PUSH     {r4-r7,lr}
000002  b08b              SUB      sp,sp,#0x2c
;;;208      PROGBAR_Obj* pObj;
;;;209      GUI_RECT r, rInside, rClient, rText;
;;;210      const char* pText;
;;;211      char ac[5];
;;;212      int tm, xPos;
;;;213      pObj = PROGBAR_H2P(hObj);
000004  f7fffffe          BL       GUI_ALLOC_h2p
000008  4604              MOV      r4,r0
;;;214      WM_GetClientRect(&rClient);
00000a  a805              ADD      r0,sp,#0x14
00000c  f7fffffe          BL       WM_GetClientRect
;;;215      GUI__ReduceRect(&rInside, &rClient, pObj->Widget.pEffect->EffectSize);
000010  6a20              LDR      r0,[r4,#0x20]
000012  a905              ADD      r1,sp,#0x14
000014  6942              LDR      r2,[r0,#0x14]
000016  a807              ADD      r0,sp,#0x1c
000018  f7fffffe          BL       GUI__ReduceRect
;;;216      xPos  = _Value2X(pObj, pObj->v);
00001c  4620              MOV      r0,r4
00001e  6aa1              LDR      r1,[r4,#0x28]
000020  f7fffffe          BL       _Value2X
000024  4605              MOV      r5,r0
;;;217      pText = _GetText(pObj, ac);
000026  a901              ADD      r1,sp,#4
000028  4620              MOV      r0,r4
00002a  f7fffffe          BL       _GetText
00002e  4606              MOV      r6,r0
;;;218      GUI_SetFont(pObj->pFont);
000030  6ae0              LDR      r0,[r4,#0x2c]
000032  f7fffffe          BL       GUI_SetFont
;;;219      _GetTextRect(pObj, &rText, pText);
000036  4632              MOV      r2,r6
000038  a903              ADD      r1,sp,#0xc
00003a  4620              MOV      r0,r4
00003c  f7fffffe          BL       _GetTextRect
;;;220      tm = GUI_SetTextMode(GUI_TM_TRANS);
000040  2002              MOVS     r0,#2
000042  f7fffffe          BL       GUI_SetTextMode
000046  4607              MOV      r7,r0
;;;221      /* Draw left bar */
;;;222      r    = rInside;
000048  e9dd0107          LDRD     r0,r1,[sp,#0x1c]
;;;223      r.x1 = xPos - 1;
00004c  e9cd0109          STRD     r0,r1,[sp,#0x24]
000050  1e68              SUBS     r0,r5,#1
000052  f8ad0028          STRH     r0,[sp,#0x28]
;;;224      WM_SetUserClipArea(&r);
000056  a809              ADD      r0,sp,#0x24
000058  f7fffffe          BL       WM_SetUserClipRect
;;;225      _DrawPart(pObj, 0, rText.x0, rText.y0, pText);
00005c  9600              STR      r6,[sp,#0]
00005e  f9bd300e          LDRSH    r3,[sp,#0xe]
000062  f9bd200c          LDRSH    r2,[sp,#0xc]
000066  2100              MOVS     r1,#0
000068  4620              MOV      r0,r4
00006a  f7fffffe          BL       _DrawPart
;;;226      /* Draw right bar */
;;;227      r    = rInside;
00006e  e9dd0107          LDRD     r0,r1,[sp,#0x1c]
;;;228      r.x0 = xPos;
000072  e9cd0109          STRD     r0,r1,[sp,#0x24]
000076  f8ad5024          STRH     r5,[sp,#0x24]
;;;229      WM_SetUserClipArea(&r);
00007a  a809              ADD      r0,sp,#0x24
00007c  f7fffffe          BL       WM_SetUserClipRect
;;;230      _DrawPart(pObj, 1, rText.x0, rText.y0, pText);
000080  9600              STR      r6,[sp,#0]
000082  f9bd300e          LDRSH    r3,[sp,#0xe]
000086  f9bd200c          LDRSH    r2,[sp,#0xc]
00008a  2101              MOVS     r1,#1
00008c  4620              MOV      r0,r4
00008e  f7fffffe          BL       _DrawPart
;;;231      WM_SetUserClipArea(NULL);
000092  2000              MOVS     r0,#0
000094  f7fffffe          BL       WM_SetUserClipRect
;;;232      GUI_SetTextMode(tm);
000098  4638              MOV      r0,r7
00009a  f7fffffe          BL       GUI_SetTextMode
;;;233      WIDGET__EFFECT_DrawDownRect(&pObj->Widget, &rClient);
00009e  a905              ADD      r1,sp,#0x14
0000a0  4620              MOV      r0,r4
0000a2  f7fffffe          BL       WIDGET__EFFECT_DrawDownRect
;;;234    }
0000a6  b00b              ADD      sp,sp,#0x2c
0000a8  bdf0              POP      {r4-r7,pc}
;;;235    
                          ENDP


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

                  _Value2X PROC
;;;131    */
;;;132    static int _Value2X(const PROGBAR_Obj* pObj, int v) {
000000  b530              PUSH     {r4,r5,lr}
;;;133      int EffectSize = pObj->Widget.pEffect->EffectSize;
;;;134      int xSize = pObj->Widget.Win.Rect.x1 - pObj->Widget.Win.Rect.x0 + 1;
000002  f9b04004          LDRSH    r4,[r0,#4]
000006  f9b05000          LDRSH    r5,[r0,#0]
00000a  6a02              LDR      r2,[r0,#0x20]         ;133
00000c  1b64              SUBS     r4,r4,r5
;;;135      int Min   = pObj->Min;
00000e  6953              LDR      r3,[r2,#0x14]
;;;136      int Max   = pObj->Max;
000010  e9d02012          LDRD     r2,r0,[r0,#0x48]
000014  1c64              ADDS     r4,r4,#1              ;134
;;;137      if (v < Min) {
000016  4291              CMP      r1,r2
000018  da00              BGE      |L15.28|
;;;138    	  v = Min;
00001a  4611              MOV      r1,r2
                  |L15.28|
;;;139      }
;;;140      if (v > Max) {
00001c  4281              CMP      r1,r0
00001e  dd00              BLE      |L15.34|
;;;141    	  v = Max;
000020  4601              MOV      r1,r0
                  |L15.34|
;;;142      }
;;;143      return EffectSize + ((xSize - 2 * EffectSize) * (I32)(v - Min)) / (Max - Min);
000022  425d              RSBS     r5,r3,#0
000024  eb040445          ADD      r4,r4,r5,LSL #1
000028  1a89              SUBS     r1,r1,r2
00002a  434c              MULS     r4,r1,r4
00002c  1a80              SUBS     r0,r0,r2
00002e  fb94f0f0          SDIV     r0,r4,r0
000032  4418              ADD      r0,r0,r3
;;;144    }
000034  bd30              POP      {r4,r5,pc}
;;;145    
                          ENDP

⌨️ 快捷键说明

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