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

📄 gui_fillpolygon.txt

📁 STM32F103ZET6+UCOSII+UCGUI源码
💻 TXT
📖 第 1 页 / 共 2 页
字号:
00012e  e009              B        |L1.324|
                  |L1.304|
000130  4610              MOV      r0,r2
000132  42a2              CMP      r2,r4
000134  dc1a              BGT      |L1.364|
000136  461a              MOV      r2,r3
000138  42a3              CMP      r3,r4
00013a  db17              BLT      |L1.364|
00013c  f9bec000          LDRSH    r12,[lr,#0]
000140  f9b11000          LDRSH    r1,[r1,#0]
                  |L1.324|
000144  1a23              SUBS     r3,r4,r0
000146  eba1010c          SUB      r1,r1,r12
00014a  4359              MULS     r1,r3,r1
00014c  2900              CMP      r1,#0
00014e  eba20300          SUB      r3,r2,r0
000152  dd02              BLE      |L1.346|
000154  eb010163          ADD      r1,r1,r3,ASR #1
000158  e002              B        |L1.352|
                  |L1.346|
00015a  eba10163          SUB      r1,r1,r3,ASR #1
00015e  1c49              ADDS     r1,r1,#1
                  |L1.352|
000160  1a10              SUBS     r0,r2,r0
000162  fb91f0f0          SDIV     r0,r1,r0
000166  4460              ADD      r0,r0,r12
                  |L1.360|
;;;247              int xIntersect;
;;;248              if (_CheckYInterSect(y, &xIntersect, paPoint + i, paPoint + i1)) {
;;;249                _Add(xIntersect);
000168  f7fffffe          BL       _Add
                  |L1.364|
00016c  1c6d              ADDS     r5,r5,#1              ;231
                  |L1.366|
00016e  454d              CMP      r5,r9                 ;231
000170  f6ffaf7e          BLT      |L1.112|
;;;250              }
;;;251            }
;;;252          }
;;;253        }
;;;254        _Flush(xOff, y + yOff);
000174  eb04000a          ADD      r0,r4,r10
000178  9000              STR      r0,[sp,#0]
00017a  2000              MOVS     r0,#0
00017c  4680              MOV      r8,r0
00017e  4605              MOV      r5,r0
000180  e011              B        |L1.422|
                  |L1.386|
000182  4910              LDR      r1,|L1.452|
000184  f1b80f00          CMP      r8,#0
000188  f931b015          LDRSH    r11,[r1,r5,LSL #1]
00018c  d007              BEQ      |L1.414|
00018e  490b              LDR      r1,|L1.444|
000190  eb07020b          ADD      r2,r7,r11
000194  6d89              LDR      r1,[r1,#0x58]  ; GUI_Context
000196  4438              ADD      r0,r0,r7
000198  680b              LDR      r3,[r1,#0]
00019a  9900              LDR      r1,[sp,#0]
00019c  4798              BLX      r3
                  |L1.414|
00019e  f0880801          EOR      r8,r8,#1
0001a2  4658              MOV      r0,r11
0001a4  1c6d              ADDS     r5,r5,#1
                  |L1.422|
0001a6  4906              LDR      r1,|L1.448|
0001a8  6809              LDR      r1,[r1,#0]  ; GL_FP_Cnt
0001aa  428d              CMP      r5,r1
0001ac  dbe9              BLT      |L1.386|
0001ae  1c64              ADDS     r4,r4,#1              ;228
                  |L1.432|
0001b0  9801              LDR      r0,[sp,#4]            ;228
0001b2  4284              CMP      r4,r0                 ;228
0001b4  f77faf54          BLE      |L1.96|
;;;255      }  
;;;256    }
0001b8  e8bd8ffe          POP      {r1-r11,pc}
;;;257    
                          ENDP

                  |L1.444|
                          DCD      GUI_Context
                  |L1.448|
                          DCD      ||.data||
                  |L1.452|
                          DCD      ||.bss||

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

                  GUI_FillPolygon PROC
;;;261    */
;;;262    void GUI_FillPolygon(const GUI_POINT* pPoints, int NumPoints, int x0, int y0) {
000000  e92d41f0          PUSH     {r4-r8,lr}
000004  4606              MOV      r6,r0
;;;263      GUI_LOCK();
;;;264      #if (GUI_WINSUPPORT)
;;;265        WM_ADDORG(x0, y0);
000006  480b              LDR      r0,|L2.52|
000008  460f              MOV      r7,r1                 ;262
00000a  6c01              LDR      r1,[r0,#0x40]  ; GUI_Context
00000c  6c40              LDR      r0,[r0,#0x44]  ; GUI_Context
00000e  188c              ADDS     r4,r1,r2
000010  18c5              ADDS     r5,r0,r3
;;;266        WM_ITERATE_START(NULL); {
000012  2000              MOVS     r0,#0
000014  f7fffffe          BL       WM__InitIVRSearch
000018  e007              B        |L2.42|
                  |L2.26|
;;;267      #endif
;;;268      GL_FillPolygon (pPoints, NumPoints, x0, y0);
00001a  462b              MOV      r3,r5
00001c  4622              MOV      r2,r4
00001e  4639              MOV      r1,r7
000020  4630              MOV      r0,r6
000022  f7fffffe          BL       GL_FillPolygon
;;;269      #if (GUI_WINSUPPORT)
;;;270        } WM_ITERATE_END();
000026  f7fffffe          BL       WM__GetNextIVR
                  |L2.42|
00002a  2800              CMP      r0,#0
00002c  d1f5              BNE      |L2.26|
;;;271      #endif
;;;272      GUI_UNLOCK();
;;;273    }
00002e  e8bd81f0          POP      {r4-r8,pc}
;;;274    
                          ENDP

000032  0000              DCW      0x0000
                  |L2.52|
                          DCD      GUI_Context

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

                  _Add PROC
;;;115    */
;;;116    static void _Add(int x) {
000000  b530              PUSH     {r4,r5,lr}
;;;117      if (GL_FP_Cnt < GUI_FP_MAXCOUNT) {
000002  4d0b              LDR      r5,|L3.48|
000004  682b              LDR      r3,[r5,#0]  ; GL_FP_Cnt
000006  2b0c              CMP      r3,#0xc
000008  da10              BGE      |L3.44|
;;;118        int i;
;;;119        /* Move all entries to the right (bigger x-value) */
;;;120        for (i=GL_FP_Cnt; i ; i--) {
;;;121          if (_aX[i-1] < x)
00000a  4c0a              LDR      r4,|L3.52|
00000c  0019              MOVS     r1,r3                 ;117
00000e  d009              BEQ      |L3.36|
                  |L3.16|
000010  eb040241          ADD      r2,r4,r1,LSL #1
000014  f9322c02          LDRSH    r2,[r2,#-2]
000018  4282              CMP      r2,r0
00001a  db03              BLT      |L3.36|
;;;122            break;
;;;123          _aX[i] = _aX[i-1];
00001c  f8242011          STRH     r2,[r4,r1,LSL #1]
000020  1e49              SUBS     r1,r1,#1              ;120
000022  d1f5              BNE      |L3.16|
                  |L3.36|
;;;124        }
;;;125        /* Insert new entry */
;;;126        _aX[i]    = x;
000024  f8240011          STRH     r0,[r4,r1,LSL #1]
;;;127        GL_FP_Cnt++;
000028  1c5b              ADDS     r3,r3,#1
;;;128      }
00002a  602b              STR      r3,[r5,#0]  ; GL_FP_Cnt
                  |L3.44|
;;;129    }
00002c  bd30              POP      {r4,r5,pc}
;;;130    
                          ENDP

00002e  0000              DCW      0x0000
                  |L3.48|
                          DCD      ||.data||
                  |L3.52|
                          DCD      ||.bss||

                          AREA ||.bss||, DATA, NOINIT, ALIGN=1

                  _aX
                          %        24

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

                  GL_FP_Cnt
                          DCD      0x00000000

⌨️ 快捷键说明

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