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

📄 listview.txt

📁 STM32F103ZET6+UCOSII+UCGUI源码
💻 TXT
📖 第 1 页 / 共 5 页
字号:
000154  b108              CBZ      r0,|L12.346|
000156  f7fffffe          BL       GUI_ALLOC_Free
                  |L12.346|
00015a  1c64              ADDS     r4,r4,#1
                  |L12.348|
00015c  42bc              CMP      r4,r7
00015e  dbf3              BLT      |L12.328|
000160  4648              MOV      r0,r9
000162  f7fffffe          BL       GUI_ARRAY_Delete
000166  1c76              ADDS     r6,r6,#1
                  |L12.360|
000168  4546              CMP      r6,r8
00016a  dbe6              BLT      |L12.314|
00016c  4650              MOV      r0,r10
00016e  f7fffffe          BL       GUI_ARRAY_Delete
000172  4658              MOV      r0,r11
000174  f7fffffe          BL       GUI_ARRAY_Delete
                  |L12.376|
000178  4628              MOV      r0,r5                 ;567
00017a  f7fffffe          BL       WM_DefaultProc
00017e  e77c              B        |L12.122|
;;;569    
                          ENDP


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

                  _NotifyOwner PROC
;;;336    */
;;;337    static void _NotifyOwner(WM_HWIN hObj, int Notification) {
000000  b53e              PUSH     {r1-r5,lr}
000002  460d              MOV      r5,r1
;;;338      WM_MESSAGE Msg = {0};
000004  2100              MOVS     r1,#0
000006  4604              MOV      r4,r0                 ;337
000008  4668              MOV      r0,sp
00000a  460a              MOV      r2,r1
00000c  460b              MOV      r3,r1
00000e  c00e              STM      r0!,{r1-r3}
;;;339      WM_HWIN hOwner;
;;;340      LISTVIEW_Obj* pObj    = LISTVIEW_H2P(hObj);
000010  4620              MOV      r0,r4
000012  f7fffffe          BL       GUI_ALLOC_h2p
;;;341      hOwner = pObj->hOwner ? pObj->hOwner : WM_GetParent(hObj);
000016  f9b00080          LDRSH    r0,[r0,#0x80]
00001a  b910              CBNZ     r0,|L13.34|
00001c  4620              MOV      r0,r4
00001e  f7fffffe          BL       WM_GetParent
                  |L13.34|
;;;342      Msg.MsgId   = WM_NOTIFY_PARENT;
000022  2126              MOVS     r1,#0x26
;;;343      Msg.Data.v  = Notification;
;;;344      Msg.hWin    = hObj;
000024  9100              STR      r1,[sp,#0]
000026  9502              STR      r5,[sp,#8]
000028  f8ad4004          STRH     r4,[sp,#4]
;;;345      WM_SendMessage(hOwner, &Msg);
00002c  4669              MOV      r1,sp
00002e  f7fffffe          BL       WM_SendMessage
;;;346    }
000032  bd3e              POP      {r1-r5,pc}
;;;347    
                          ENDP


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

                  _Paint PROC
;;;147    */
;;;148    static void _Paint(LISTVIEW_Handle hObj, LISTVIEW_Obj* pObj, WM_MESSAGE* pMsg) {
000000  e92d4ff0          PUSH     {r4-r11,lr}
000004  4680              MOV      r8,r0
000006  b08f              SUB      sp,sp,#0x3c
000008  460c              MOV      r4,r1
00000a  4617              MOV      r7,r2
;;;149      const GUI_ARRAY* pRow;
;;;150      GUI_RECT ClipRect, Rect;
;;;151      int NumRows, NumVisRows, NumColumns;
;;;152      int LBorder, RBorder, EffectSize;
;;;153      int xPos, yPos, Width, RowDistY;
;;;154      int Align, i, j, EndRow;
;;;155      /* Init some values */
;;;156      NumColumns = HEADER_GetNumItems(pObj->hHeader);
00000c  f9b10028          LDRSH    r0,[r1,#0x28]
000010  f7fffffe          BL       HEADER_GetNumItems
;;;157      NumRows    = GUI_ARRAY_GetNumItems(&pObj->RowArray);
000014  9006              STR      r0,[sp,#0x18]
000016  f104002a          ADD      r0,r4,#0x2a
00001a  900e              STR      r0,[sp,#0x38]
00001c  f7fffffe          BL       GUI_ARRAY_GetNumItems
000020  4606              MOV      r6,r0
;;;158      NumVisRows = _GetNumVisibleRows(hObj, pObj);
000022  4621              MOV      r1,r4
000024  4640              MOV      r0,r8
000026  f7fffffe          BL       _GetNumVisibleRows
;;;159      RowDistY   = LISTVIEW__GetRowDistY(pObj);
00002a  9007              STR      r0,[sp,#0x1c]
00002c  4620              MOV      r0,r4
00002e  f7fffffe          BL       LISTVIEW__GetRowDistY
;;;160      LBorder    = pObj->LBorder;
000032  9002              STR      r0,[sp,#8]
000034  6e20              LDR      r0,[r4,#0x60]
;;;161      RBorder    = pObj->RBorder;
000036  9005              STR      r0,[sp,#0x14]
000038  6e60              LDR      r0,[r4,#0x64]
;;;162      EffectSize = pObj->Widget.pEffect->EffectSize;
00003a  9004              STR      r0,[sp,#0x10]
00003c  6a20              LDR      r0,[r4,#0x20]
00003e  6941              LDR      r1,[r0,#0x14]
;;;163      yPos       = HEADER_GetHeight(pObj->hHeader) + EffectSize;
000040  9103              STR      r1,[sp,#0xc]
000042  f9b40028          LDRSH    r0,[r4,#0x28]
000046  f7fffffe          BL       HEADER_GetHeight
00004a  9903              LDR      r1,[sp,#0xc]
00004c  1845              ADDS     r5,r0,r1
;;;164      EndRow     = pObj->ScrollStateV.v + (((NumVisRows + 1) > NumRows) ? NumRows : NumVisRows + 1);
00004e  9807              LDR      r0,[sp,#0x1c]
000050  6ee1              LDR      r1,[r4,#0x6c]
000052  1c40              ADDS     r0,r0,#1
000054  42b0              CMP      r0,r6
000056  dc01              BGT      |L14.92|
000058  9e07              LDR      r6,[sp,#0x1c]
00005a  1c76              ADDS     r6,r6,#1
                  |L14.92|
00005c  1988              ADDS     r0,r1,r6
;;;165      /* Calculate clipping rectangle */
;;;166      ClipRect = *(const GUI_RECT*)pMsg->Data.p;
00005e  9001              STR      r0,[sp,#4]
000060  2208              MOVS     r2,#8
000062  a80a              ADD      r0,sp,#0x28
000064  68b9              LDR      r1,[r7,#8]
000066  f7fffffe          BL       __aeabi_memcpy
;;;167      GUI_MoveRect(&ClipRect, -pObj->Widget.Win.Rect.x0, -pObj->Widget.Win.Rect.y0);
00006a  f9b40002          LDRSH    r0,[r4,#2]
00006e  4242              RSBS     r2,r0,#0
000070  f9b40000          LDRSH    r0,[r4,#0]
000074  4241              RSBS     r1,r0,#0
000076  a80a              ADD      r0,sp,#0x28
000078  f7fffffe          BL       GUI_MoveRect
;;;168      WM_GetInsideRectExScrollbar(hObj, &Rect);
00007c  a908              ADD      r1,sp,#0x20
00007e  4640              MOV      r0,r8
000080  f7fffffe          BL       WM_GetInsideRectExScrollbar
;;;169      GUI__IntersectRect(&ClipRect, &Rect);
000084  a908              ADD      r1,sp,#0x20
000086  a80a              ADD      r0,sp,#0x28
000088  f7fffffe          BL       GUI__IntersectRect
;;;170      /* Set drawing color, font and text mode */
;;;171      LCD_SetColor(pObj->Props.aTextColor[0]);
00008c  6c20              LDR      r0,[r4,#0x40]
00008e  f7fffffe          BL       LCD_SetColor
;;;172      GUI_SetFont(pObj->Props.pFont);
000092  6d20              LDR      r0,[r4,#0x50]
000094  f7fffffe          BL       GUI_SetFont
;;;173      GUI_SetTextMode(GUI_TM_TRANS);
000098  2002              MOVS     r0,#2
00009a  f7fffffe          BL       GUI_SetTextMode
;;;174      /* Do the drawing */
;;;175      for (i = pObj->ScrollStateV.v; i < EndRow; i++) {
00009e  6ee0              LDR      r0,[r4,#0x6c]
0000a0  e09f              B        |L14.482|
                  |L14.162|
;;;176        pRow = (const GUI_ARRAY*)GUI_ARRAY_GetpItem(&pObj->RowArray, i);
0000a2  4641              MOV      r1,r8
0000a4  980e              LDR      r0,[sp,#0x38]
0000a6  f7fffffe          BL       GUI_ARRAY_GetpItem
;;;177        if (pRow) {
0000aa  900c              STR      r0,[sp,#0x30]
0000ac  2800              CMP      r0,#0
0000ae  d07e              BEQ      |L14.430|
;;;178          Rect.y0 = yPos;
0000b0  b228              SXTH     r0,r5
;;;179          /* Break when all other rows are outside the drawing area */
;;;180          if (Rect.y0 > ClipRect.y1) {
0000b2  f9bd102e          LDRSH    r1,[sp,#0x2e]
0000b6  f8ad0022          STRH     r0,[sp,#0x22]         ;178
0000ba  4288              CMP      r0,r1
0000bc  dc78              BGT      |L14.432|
;;;181            break;
;;;182          }
;;;183          Rect.y1 = yPos + RowDistY - 1;
0000be  9802              LDR      r0,[sp,#8]
;;;184          /* Make sure that we draw only when row is in drawing area */
;;;185          if (Rect.y1 >= ClipRect.y0) {
0000c0  f9bd102a          LDRSH    r1,[sp,#0x2a]
0000c4  4428              ADD      r0,r0,r5              ;183
0000c6  900d              STR      r0,[sp,#0x34]         ;183
0000c8  1e40              SUBS     r0,r0,#1              ;183
0000ca  b200              SXTH     r0,r0                 ;183
0000cc  f8ad0026          STRH     r0,[sp,#0x26]         ;183
0000d0  4288              CMP      r0,r1
0000d2  db6e              BLT      |L14.434|
;;;186            int ColorIndex;
;;;187            /* Set background color */
;;;188            if (i == pObj->Sel) {
0000d4  6d61              LDR      r1,[r4,#0x54]
0000d6  4541              CMP      r1,r8
0000d8  d105              BNE      |L14.230|
;;;189              ColorIndex = (pObj->Widget.State & WIDGET_STATE_FOCUS) ? 2 : 1;
0000da  8ce0              LDRH     r0,[r4,#0x26]
0000dc  2602              MOVS     r6,#2
0000de  07c0              LSLS     r0,r0,#31
0000e0  d102              BNE      |L14.232|
0000e2  2601              MOVS     r6,#1
0000e4  e000              B        |L14.232|
                  |L14.230|
;;;190            } else {
;;;191              ColorIndex = 0;
0000e6  2600              MOVS     r6,#0
                  |L14.232|
;;;192            }
;;;193            LCD_SetBkColor(pObj->Props.aBkColor[ColorIndex]);
0000e8  eb040086          ADD      r0,r4,r6,LSL #2
0000ec  4681              MOV      r9,r0
0000ee  6b40              LDR      r0,[r0,#0x34]
0000f0  f7fffffe          BL       LCD_SetBkColor
;;;194            /* Iterate over all columns */
;;;195            if (pObj->ShowGrid) {
0000f4  6da0              LDR      r0,[r4,#0x58]
0000f6  b120              CBZ      r0,|L14.258|
;;;196              Rect.y1--;
0000f8  f8bd0026          LDRH     r0,[sp,#0x26]
0000fc  1e40              SUBS     r0,r0,#1
0000fe  f8ad0026          STRH     r0,[sp,#0x26]
                  |L14.258|
;;;197            }
;;;198            xPos = EffectSize - pObj->ScrollStateH.v;
000102  6fa0              LDR      r0,[r4,#0x78]
000104  9903              LDR      r1,[sp,#0xc]
;;;199            for (j = 0; j < NumColumns; j++) {
000106  2700              MOVS     r7,#0
000108  1a0d              SUBS     r5,r1,r0              ;198
00010a  e059              B        |L14.448|
                  |L14.268|
;;;200              Width   = HEADER_GetItemWidth(pObj->hHeader, j);
00010c  f9b40028          LDRSH    r0,[r4,#0x28]
000110  4639              MOV      r1,r7
000112  f7fffffe          BL       HEADER_GetItemWidth
000116  4601              MOV      r1,r0
;;;201              Rect.x0 = xPos;
000118  b228              SXTH     r0,r5
;;;202              /* Break when all other columns are outside the drawing area */
;;;203              if (Rect.x0 > ClipRect.x1) {
00011a  f9bd202c          LDRSH    r2,[sp,#0x2c]
00011e  f8ad0020          STRH     r0,[sp,#0x20]         ;201
000122  4290              CMP      r0,r2
000124  dc4f              BGT      |L14.454|
;;;204                break;
;;;205              }
;;;206              Rect.x1 = xPos + Width - 1;
000126  1868              ADDS     r0,r5,r1
000128  4682              MOV      r10,r0
00012a  1e40              SUBS     r0,r0,#1
00012c  b200              SXTH     r0,r0
;;;207              /* Make sure that we draw only when column is in drawing area */
;;;208              if (Rect.x1 >= ClipRect.x0) {
00012e  f9bd1028          LDRSH    r1,[sp,#0x28]
000132  f8ad0024          STRH     r0,[sp,#0x24]         ;206
000136  4288              CMP      r0,r1
000138  db40              BLT      |L14.444|
;;;209                LISTVIEW_ITEM * pItem;
;;;210                pItem = (LISTVIEW_ITEM *)GUI_ARRAY_GetpItem(pRow, j);
00013a  4639              MOV      r1,r7
00013c  980c              LDR      r0,[sp,#0x30]
00013e  f7fffffe          BL       GUI_ARRAY_GetpItem
000142  4605              MOV      r5,r0
;;;211                if (pItem->hItemInfo) {
000144  f9b00000          LDRSH    r0,[r0,#0]
000148  b150              CBZ      r0,|L14.352|
;;;212                  LISTVIEW_ITEM_INFO * pItemInfo;
;;;213                  pItemInfo = (LISTVIEW_ITEM_INFO *)GUI_ALLOC_h2p(pItem->hItemInfo);
00014a  f7fffffe          BL       GUI_ALLOC_h2p
00014e  4683              MOV      r11,r0
;;;214                  LCD_SetBkColor(pItemInfo->aBkColor[ColorIndex]);
000150  f8500026          LDR      r0,[r0,r6,LSL #2]
000154  f7fffffe          BL       LCD_SetBkColor
;;;215                  LCD_SetColor(pItemInfo->aTextColor[ColorIndex]);
000158  eb0b0086          ADD      r0,r11,r6,LSL #2
00015c  68c0              LDR      r0,[r0,#0xc]
;;;216                } else {
00015e  e001              B        |L14.356|
                  |L14.352|
;;;217                  LCD_SetColor(pObj->Props.aTextColor[ColorIndex]);
000160  f8d90040          LDR      r0,[r9,#0x40]

⌨️ 快捷键说明

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