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

📄 gui_drawbitmapex.txt

📁 STM32F103ZET6+UCOSII+UCGUI源码
💻 TXT
📖 第 1 页 / 共 2 页
字号:
00014e  491a              LDR      r1,|L1.440|
000150  6c89              LDR      r1,[r1,#0x48]  ; GUI_Context
000152  6809              LDR      r1,[r1,#0]
000154  4788              BLX      r1
000156  f7fffffe          BL       LCD_SetColorIndex
                  |L1.346|
;;;91                     }
;;;92                     IndexPrev = Index;
00015a  f8cdb028          STR      r11,[sp,#0x28]
                  |L1.350|
00015e  f44f707a          MOV      r0,#0x3e8             ;46
                  |L1.354|
;;;93                   }
;;;94                   do {
;;;95                     x++;
000162  1c6d              ADDS     r5,r5,#1
;;;96                     xiMag -= 1000;
000164  f5a4747a          SUB      r4,r4,#0x3e8
;;;97                   } while (xiMag >= 1000);
000168  4284              CMP      r4,r0
00016a  dafa              BGE      |L1.354|
                  |L1.364|
00016c  f1080001          ADD      r0,r8,#1              ;66
                  |L1.368|
000170  9908              LDR      r1,[sp,#0x20]         ;66
000172  4680              MOV      r8,r0                 ;66
000174  4288              CMP      r0,r1                 ;66
000176  dba3              BLT      |L1.192|
;;;98                 }
;;;99               }
;;;100              /* Clear cache */
;;;101              if (Cached) {
000178  f1ba0f00          CMP      r10,#0
00017c  d007              BEQ      |L1.398|
;;;102                LCD_DrawHLine(x0 + xStart, y, x0 + x - 1);
00017e  eb090205          ADD      r2,r9,r5
000182  1e52              SUBS     r2,r2,#1
000184  eb090006          ADD      r0,r9,r6
000188  4639              MOV      r1,r7
00018a  f7fffffe          BL       LCD_DrawHLine
                  |L1.398|
;;;103              }
;;;104            }
;;;105            y += yStep;
00018e  9801              LDR      r0,[sp,#4]
000190  4407              ADD      r7,r7,r0
;;;106          } while ((yMag < 0) ? (y > yEnd) : (y < yEnd));
000192  981a              LDR      r0,[sp,#0x68]
000194  2800              CMP      r0,#0
000196  9803              LDR      r0,[sp,#0xc]
000198  da02              BGE      |L1.416|
00019a  4287              CMP      r7,r0
00019c  dc83              BGT      |L1.166|
00019e  e001              B        |L1.420|
                  |L1.416|
0001a0  4287              CMP      r7,r0
0001a2  db80              BLT      |L1.166|
                  |L1.420|
0001a4  9809              LDR      r0,[sp,#0x24]         ;55
0001a6  1c40              ADDS     r0,r0,#1              ;55
                  |L1.424|
0001a8  9907              LDR      r1,[sp,#0x1c]         ;55
0001aa  9009              STR      r0,[sp,#0x24]         ;55
0001ac  4288              CMP      r0,r1                 ;55
0001ae  f6ffaf69          BLT      |L1.132|
;;;107        }
;;;108      }
;;;109    }
0001b2  b00f              ADD      sp,sp,#0x3c
0001b4  e8bd8ff0          POP      {r4-r11,pc}
;;;110    
                          ENDP

                  |L1.440|
                          DCD      GUI_Context

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

                  GUI_DrawBitmapEx PROC
;;;120    */
;;;121    void GUI_DrawBitmapEx(const GUI_BITMAP GUI_UNI_PTR * pBitmap, int x0, int y0,
000000  e92d4ff0          PUSH     {r4-r11,lr}
;;;122                          int xCenter, int yCenter, int xMag, int yMag) {
000004  b087              SUB      sp,sp,#0x1c
;;;123      GUI_COLOR OldColor;
;;;124      #if (GUI_WINSUPPORT)
;;;125        GUI_RECT r;
;;;126      #endif
;;;127      GUI_LOCK();
;;;128      OldColor = GUI_GetColor();
000006  e9dda710          LDRD     r10,r7,[sp,#0x40]
00000a  4606              MOV      r6,r0                 ;122
00000c  460c              MOV      r4,r1                 ;122
00000e  4615              MOV      r5,r2                 ;122
000010  4699              MOV      r9,r3                 ;122
000012  f8dd8048          LDR      r8,[sp,#0x48]
000016  f7fffffe          BL       GUI_GetColor
;;;129      #if (GUI_WINSUPPORT)
;;;130        WM_ADDORG(x0, y0);
00001a  9006              STR      r0,[sp,#0x18]
00001c  4838              LDR      r0,|L2.256|
;;;131        if (xMag >= 0) {
;;;132          r.x0 = x0 + GUI__DivideRound32(((I32)(-xCenter) * (I32)(xMag)), 1000);
00001e  f44f7b7a          MOV      r11,#0x3e8
000022  6c01              LDR      r1,[r0,#0x40]         ;130  ; GUI_Context
000024  6c40              LDR      r0,[r0,#0x44]         ;130  ; GUI_Context
000026  440c              ADD      r4,r4,r1              ;130
000028  4405              ADD      r5,r5,r0              ;130
00002a  f1c90000          RSB      r0,r9,#0
00002e  4378              MULS     r0,r7,r0
000030  2f00              CMP      r7,#0                 ;131
000032  4659              MOV      r1,r11
000034  db10              BLT      |L2.88|
000036  f7fffffe          BL       GUI__DivideRound32
00003a  4420              ADD      r0,r0,r4
00003c  f8ad0010          STRH     r0,[sp,#0x10]
;;;133          r.x1 = x0 + GUI__DivideRound32(((I32)(pBitmap->XSize - xCenter - 1) * (I32)(xMag)), 1000);
000040  8831              LDRH     r1,[r6,#0]
000042  eba10009          SUB      r0,r1,r9
000046  1e40              SUBS     r0,r0,#1
000048  4378              MULS     r0,r7,r0
00004a  4659              MOV      r1,r11
00004c  f7fffffe          BL       GUI__DivideRound32
000050  4420              ADD      r0,r0,r4
000052  f8ad0014          STRH     r0,[sp,#0x14]
000056  e00f              B        |L2.120|
                  |L2.88|
;;;134        } else {
;;;135          r.x1 = x0 + GUI__DivideRound32(((I32)(-xCenter) * (I32)(xMag)), 1000);
000058  f7fffffe          BL       GUI__DivideRound32
00005c  4420              ADD      r0,r0,r4
00005e  f8ad0014          STRH     r0,[sp,#0x14]
;;;136          r.x0 = x0 + GUI__DivideRound32(((I32)(pBitmap->XSize - xCenter - 1) * (I32)(xMag)), 1000);
000062  8831              LDRH     r1,[r6,#0]
000064  eba10009          SUB      r0,r1,r9
000068  1e40              SUBS     r0,r0,#1
00006a  4378              MULS     r0,r7,r0
00006c  4659              MOV      r1,r11
00006e  f7fffffe          BL       GUI__DivideRound32
000072  4420              ADD      r0,r0,r4
000074  f8ad0010          STRH     r0,[sp,#0x10]
                  |L2.120|
;;;137        }
;;;138        if (yMag >= 0) {
;;;139          r.y0 = y0 + GUI__DivideRound32(((I32)(-yCenter) * (I32)(yMag)), 1000);
000078  f1ca0000          RSB      r0,r10,#0
00007c  fb00f008          MUL      r0,r0,r8
000080  f1b80f00          CMP      r8,#0                 ;138
000084  4659              MOV      r1,r11
000086  db11              BLT      |L2.172|
000088  f7fffffe          BL       GUI__DivideRound32
00008c  4428              ADD      r0,r0,r5
00008e  f8ad0012          STRH     r0,[sp,#0x12]
;;;140          r.y1 = y0 + GUI__DivideRound32(((I32)(pBitmap->YSize - yCenter - 1) * (I32)(yMag)), 1000);
000092  8871              LDRH     r1,[r6,#2]
000094  eba1000a          SUB      r0,r1,r10
000098  1e40              SUBS     r0,r0,#1
00009a  fb00f008          MUL      r0,r0,r8
00009e  4659              MOV      r1,r11
0000a0  f7fffffe          BL       GUI__DivideRound32
0000a4  4428              ADD      r0,r0,r5
0000a6  f8ad0016          STRH     r0,[sp,#0x16]
0000aa  e010              B        |L2.206|
                  |L2.172|
;;;141        } else {
;;;142          r.y1 = y0 + GUI__DivideRound32(((I32)(-yCenter) * (I32)(yMag)), 1000);
0000ac  f7fffffe          BL       GUI__DivideRound32
0000b0  4428              ADD      r0,r0,r5
0000b2  f8ad0016          STRH     r0,[sp,#0x16]
;;;143          r.y0 = y0 + GUI__DivideRound32(((I32)(pBitmap->YSize - yCenter - 1) * (I32)(yMag)), 1000);
0000b6  8871              LDRH     r1,[r6,#2]
0000b8  eba1000a          SUB      r0,r1,r10
0000bc  1e40              SUBS     r0,r0,#1
0000be  fb00f008          MUL      r0,r0,r8
0000c2  4659              MOV      r1,r11
0000c4  f7fffffe          BL       GUI__DivideRound32
0000c8  4428              ADD      r0,r0,r5
0000ca  f8ad0012          STRH     r0,[sp,#0x12]
                  |L2.206|
;;;144        }
;;;145        WM_ITERATE_START(&r) {
0000ce  a804              ADD      r0,sp,#0x10
0000d0  f7fffffe          BL       WM__InitIVRSearch
0000d4  e00b              B        |L2.238|
                  |L2.214|
;;;146      #endif
;;;147      GL_DrawBitmapEx(pBitmap, x0, y0, xCenter, yCenter, xMag, yMag);
0000d6  e9cda700          STRD     r10,r7,[sp,#0]
0000da  464b              MOV      r3,r9
0000dc  462a              MOV      r2,r5
0000de  4621              MOV      r1,r4
0000e0  4630              MOV      r0,r6
0000e2  f8cd8008          STR      r8,[sp,#8]
0000e6  f7fffffe          BL       GL_DrawBitmapEx
;;;148      #if (GUI_WINSUPPORT)
;;;149        } WM_ITERATE_END();
0000ea  f7fffffe          BL       WM__GetNextIVR
                  |L2.238|
0000ee  2800              CMP      r0,#0
0000f0  d1f1              BNE      |L2.214|
;;;150      #endif
;;;151      GUI_SetColor(OldColor);
0000f2  9806              LDR      r0,[sp,#0x18]
0000f4  f7fffffe          BL       GUI_SetColor
;;;152      GUI_UNLOCK();
;;;153    }
0000f8  b007              ADD      sp,sp,#0x1c
0000fa  e8bd8ff0          POP      {r4-r11,pc}
;;;154    
                          ENDP

0000fe  0000              DCW      0x0000
                  |L2.256|
                          DCD      GUI_Context

⌨️ 快捷键说明

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