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

📄 guicirc.txt

📁 STM32F103ZET6+UCOSII+UCGUI源码
💻 TXT
📖 第 1 页 / 共 2 页
字号:
00007e  1e64              SUBS     r4,r4,#1
                  |L4.128|
;;;127        }
;;;128        /* draw lines from inside (center) */
;;;129        LCD_HL_DrawHLine(x0-x,y0+i, x0+x);
000080  f8db0058          LDR      r0,[r11,#0x58]  ; GUI_Context
000084  eb060904          ADD      r9,r6,r4
000088  eba60a04          SUB      r10,r6,r4
00008c  6803              LDR      r3,[r0,#0]
00008e  1979              ADDS     r1,r7,r5
000090  464a              MOV      r2,r9
000092  4650              MOV      r0,r10
000094  4798              BLX      r3
;;;130        LCD_HL_DrawHLine(x0-x,y0-i, x0+x);
000096  f8db0058          LDR      r0,[r11,#0x58]  ; GUI_Context
00009a  1b79              SUBS     r1,r7,r5
00009c  6803              LDR      r3,[r0,#0]
00009e  464a              MOV      r2,r9
0000a0  4650              MOV      r0,r10
0000a2  4798              BLX      r3
0000a4  1c6d              ADDS     r5,r5,#1              ;119
                  |L4.166|
0000a6  4545              CMP      r5,r8                 ;119
0000a8  ddcc              BLE      |L4.68|
;;;131      }
;;;132    }
0000aa  e8bd8ff8          POP      {r3-r11,pc}
;;;133    
                          ENDP

0000ae  0000              DCW      0x0000
                  |L4.176|
                          DCD      GUI_Context

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

                  GL_FillEllipse PROC
;;;171    */
;;;172    void GL_FillEllipse(int x0, int y0, int rx, int ry) {
000000  e92d5ffc          PUSH     {r2-r12,lr}
000004  4607              MOV      r7,r0
;;;173      I32 OutConst, Sum, SumY;
;;;174      int x,y;
;;;175      U32 _rx = rx;
;;;176      U32 _ry = ry;
;;;177      OutConst = _rx*_rx*_ry*_ry  /* Constant as explaint above */
000006  fb02f002          MUL      r0,r2,r2
;;;178                +(_rx*_rx*_ry>>1); /* To compensate for rounding */
;;;179      x = rx;
;;;180      for (y=0; y<=ry; y++) {
00000a  2500              MOVS     r5,#0
00000c  4683              MOV      r11,r0                ;177
00000e  4689              MOV      r9,r1                 ;172
000010  4358              MULS     r0,r3,r0              ;177
000012  fb00f103          MUL      r1,r0,r3              ;177
000016  461e              MOV      r6,r3                 ;172
000018  4614              MOV      r4,r2                 ;179
;;;181        SumY =((I32)(rx*rx))*((I32)(y*y)); /* Does not change in loop */
;;;182        while (Sum = SumY + ((I32)(ry*ry))*((I32)(x*x)),
;;;183               (x>0) && (Sum>OutConst))
;;;184        {
;;;185          x--;
;;;186        }
;;;187        LCD_HL_DrawHLine(x0-x, y0+y, x0+x);
00001a  f8dfa058          LDR      r10,|L5.116|
00001e  eb010850          ADD      r8,r1,r0,LSR #1       ;177
000022  e023              B        |L5.108|
                  |L5.36|
000024  fb05f005          MUL      r0,r5,r5              ;181
000028  fb0bf200          MUL      r2,r11,r0             ;181
00002c  fb06f106          MUL      r1,r6,r6              ;182
000030  e000              B        |L5.52|
                  |L5.50|
000032  1e64              SUBS     r4,r4,#1              ;185
                  |L5.52|
000034  fb04f004          MUL      r0,r4,r4              ;182
000038  fb012000          MLA      r0,r1,r0,r2           ;182
00003c  2c00              CMP      r4,#0                 ;182
00003e  dd01              BLE      |L5.68|
000040  4540              CMP      r0,r8                 ;183
000042  dcf6              BGT      |L5.50|
                  |L5.68|
000044  193a              ADDS     r2,r7,r4
000046  1b38              SUBS     r0,r7,r4
000048  e9cd0200          STRD     r0,r2,[sp,#0]
00004c  f8da3058          LDR      r3,[r10,#0x58]  ; GUI_Context
000050  eb090105          ADD      r1,r9,r5
000054  681b              LDR      r3,[r3,#0]
000056  4798              BLX      r3
;;;188        if (y)
000058  b13d              CBZ      r5,|L5.106|
;;;189          LCD_HL_DrawHLine(x0-x, y0-y, x0+x);
00005a  f8da0058          LDR      r0,[r10,#0x58]  ; GUI_Context
00005e  eba90105          SUB      r1,r9,r5
000062  6803              LDR      r3,[r0,#0]
000064  e9dd0200          LDRD     r0,r2,[sp,#0]
000068  4798              BLX      r3
                  |L5.106|
00006a  1c6d              ADDS     r5,r5,#1              ;180
                  |L5.108|
00006c  42b5              CMP      r5,r6                 ;180
00006e  ddd9              BLE      |L5.36|
;;;190      }
;;;191    }
000070  e8bd9ffc          POP      {r2-r12,pc}
;;;192    
                          ENDP

                  |L5.116|
                          DCD      GUI_Context

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

                  GUI_DrawCircle PROC
;;;88     */
;;;89     void GUI_DrawCircle(int x0, int y0, int r) {
000000  b57c              PUSH     {r2-r6,lr}
000002  4614              MOV      r4,r2
;;;90       #if (GUI_WINSUPPORT)
;;;91         GUI_RECT Rect;
;;;92       #endif
;;;93       GUI_LOCK();
;;;94       #if (GUI_WINSUPPORT)
;;;95         WM_ADDORG(x0,y0);
000004  4a0f              LDR      r2,|L6.68|
000006  6c13              LDR      r3,[r2,#0x40]  ; GUI_Context
000008  181d              ADDS     r5,r3,r0
00000a  6c50              LDR      r0,[r2,#0x44]  ; GUI_Context
00000c  1846              ADDS     r6,r0,r1
;;;96         Rect.x0 = x0-r;
00000e  1b28              SUBS     r0,r5,r4
000010  f8ad0000          STRH     r0,[sp,#0]
;;;97         Rect.x1 = x0+r;
000014  1928              ADDS     r0,r5,r4
000016  f8ad0004          STRH     r0,[sp,#4]
;;;98         Rect.y0 = y0-r;
00001a  1b30              SUBS     r0,r6,r4
00001c  f8ad0002          STRH     r0,[sp,#2]
;;;99         Rect.y1 = y0+r;
000020  1930              ADDS     r0,r6,r4
000022  f8ad0006          STRH     r0,[sp,#6]
;;;100        WM_ITERATE_START(&Rect); {
000026  4668              MOV      r0,sp
000028  f7fffffe          BL       WM__InitIVRSearch
00002c  e006              B        |L6.60|
                  |L6.46|
;;;101      #endif
;;;102        GL_DrawCircle( x0, y0, r);
00002e  4622              MOV      r2,r4
000030  4631              MOV      r1,r6
000032  4628              MOV      r0,r5
000034  f7fffffe          BL       GL_DrawCircle
;;;103      #if (GUI_WINSUPPORT)
;;;104        } WM_ITERATE_END();
000038  f7fffffe          BL       WM__GetNextIVR
                  |L6.60|
00003c  2800              CMP      r0,#0
00003e  d1f6              BNE      |L6.46|
;;;105      #endif
;;;106      GUI_UNLOCK();
;;;107    }
000040  bd7c              POP      {r2-r6,pc}
;;;108    
                          ENDP

000042  0000              DCW      0x0000
                  |L6.68|
                          DCD      GUI_Context

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

                  GUI_DrawEllipse PROC
;;;252    */
;;;253    void GUI_DrawEllipse(int x0, int y0, int rx, int ry) {
000000  e92d41fc          PUSH     {r2-r8,lr}
000004  4616              MOV      r6,r2
;;;254      #if (GUI_WINSUPPORT)
;;;255        GUI_RECT r;
;;;256      #endif
;;;257      GUI_LOCK();
;;;258      #if (GUI_WINSUPPORT)
;;;259        WM_ADDORG(x0,y0);
000006  4a11              LDR      r2,|L7.76|
000008  461f              MOV      r7,r3                 ;253
00000a  6c13              LDR      r3,[r2,#0x40]  ; GUI_Context
00000c  181c              ADDS     r4,r3,r0
00000e  6c50              LDR      r0,[r2,#0x44]  ; GUI_Context
000010  1845              ADDS     r5,r0,r1
;;;260      /* Calc rectangle in order to avoid unnecessary drawing ops. */
;;;261        r.x0 = x0-rx; r.x1 = x0+rx; r.y0 = y0-ry; r.y1 = y0+ry;
000012  1ba0              SUBS     r0,r4,r6
000014  f8ad0000          STRH     r0,[sp,#0]
000018  19a0              ADDS     r0,r4,r6
00001a  f8ad0004          STRH     r0,[sp,#4]
00001e  1be8              SUBS     r0,r5,r7
000020  f8ad0002          STRH     r0,[sp,#2]
000024  19e8              ADDS     r0,r5,r7
000026  f8ad0006          STRH     r0,[sp,#6]
;;;262        WM_ITERATE_START(&r); {
00002a  4668              MOV      r0,sp
00002c  f7fffffe          BL       WM__InitIVRSearch
000030  e007              B        |L7.66|
                  |L7.50|
;;;263      #endif
;;;264      GL_DrawEllipse(x0, y0, rx, ry);
000032  463b              MOV      r3,r7
000034  4632              MOV      r2,r6
000036  4629              MOV      r1,r5
000038  4620              MOV      r0,r4
00003a  f7fffffe          BL       GL_DrawEllipse
;;;265      #if (GUI_WINSUPPORT)
;;;266        } WM_ITERATE_END();
00003e  f7fffffe          BL       WM__GetNextIVR
                  |L7.66|
000042  2800              CMP      r0,#0
000044  d1f5              BNE      |L7.50|
;;;267      #endif
;;;268      GUI_UNLOCK();
;;;269    }
000046  e8bd81fc          POP      {r2-r8,pc}
;;;270    
                          ENDP

00004a  0000              DCW      0x0000
                  |L7.76|
                          DCD      GUI_Context

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

                  GUI_FillCircle PROC
;;;137    */
;;;138    void GUI_FillCircle(int x0, int y0, int r) {
000000  b570              PUSH     {r4-r6,lr}
000002  4614              MOV      r4,r2
;;;139      GUI_LOCK();
;;;140      #if (GUI_WINSUPPORT)
;;;141        WM_ADDORG(x0,y0);
000004  4a09              LDR      r2,|L8.44|
000006  6c13              LDR      r3,[r2,#0x40]  ; GUI_Context
000008  181d              ADDS     r5,r3,r0
00000a  6c50              LDR      r0,[r2,#0x44]  ; GUI_Context
00000c  1846              ADDS     r6,r0,r1
;;;142        WM_ITERATE_START(NULL); {
00000e  2000              MOVS     r0,#0
000010  f7fffffe          BL       WM__InitIVRSearch
000014  e006              B        |L8.36|
                  |L8.22|
;;;143      #endif
;;;144      GL_FillCircle(x0,y0,r);
000016  4622              MOV      r2,r4
000018  4631              MOV      r1,r6
00001a  4628              MOV      r0,r5
00001c  f7fffffe          BL       GL_FillCircle
;;;145      #if (GUI_WINSUPPORT)
;;;146        } WM_ITERATE_END();
000020  f7fffffe          BL       WM__GetNextIVR
                  |L8.36|
000024  2800              CMP      r0,#0
000026  d1f6              BNE      |L8.22|
;;;147      #endif
;;;148      GUI_UNLOCK();
;;;149    }
000028  bd70              POP      {r4-r6,pc}
;;;150    
                          ENDP

00002a  0000              DCW      0x0000
                  |L8.44|
                          DCD      GUI_Context

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

                  GUI_FillEllipse PROC
;;;196    */
;;;197    void GUI_FillEllipse(int x0, int y0, int rx, int ry) {
000000  e92d41fc          PUSH     {r2-r8,lr}
000004  4616              MOV      r6,r2
;;;198      #if (GUI_WINSUPPORT)
;;;199        GUI_RECT r;
;;;200      #endif
;;;201      GUI_LOCK();
;;;202      #if (GUI_WINSUPPORT)
;;;203        WM_ADDORG(x0,y0);
000006  4a11              LDR      r2,|L9.76|
000008  461f              MOV      r7,r3                 ;197
00000a  6c13              LDR      r3,[r2,#0x40]  ; GUI_Context
00000c  181c              ADDS     r4,r3,r0
00000e  6c50              LDR      r0,[r2,#0x44]  ; GUI_Context
000010  1845              ADDS     r5,r0,r1
;;;204        /* Calc rectangle in order to avoid unnecessary drawing ops. */
;;;205        r.x0 = x0-rx; r.x1 = x0+rx; r.y0 = y0-ry; r.y1 = y0+ry;
000012  1ba0              SUBS     r0,r4,r6
000014  f8ad0000          STRH     r0,[sp,#0]
000018  19a0              ADDS     r0,r4,r6
00001a  f8ad0004          STRH     r0,[sp,#4]
00001e  1be8              SUBS     r0,r5,r7
000020  f8ad0002          STRH     r0,[sp,#2]
000024  19e8              ADDS     r0,r5,r7
000026  f8ad0006          STRH     r0,[sp,#6]
;;;206        WM_ITERATE_START(&r); {
00002a  4668              MOV      r0,sp
00002c  f7fffffe          BL       WM__InitIVRSearch
000030  e007              B        |L9.66|
                  |L9.50|
;;;207      #endif
;;;208      GL_FillEllipse (x0,y0, rx, ry);
000032  463b              MOV      r3,r7
000034  4632              MOV      r2,r6
000036  4629              MOV      r1,r5
000038  4620              MOV      r0,r4
00003a  f7fffffe          BL       GL_FillEllipse
;;;209      #if (GUI_WINSUPPORT)
;;;210        } WM_ITERATE_END();
00003e  f7fffffe          BL       WM__GetNextIVR
                  |L9.66|
000042  2800              CMP      r0,#0
000044  d1f5              BNE      |L9.50|
;;;211      #endif
;;;212      GUI_UNLOCK();
;;;213    }
000046  e8bd81fc          POP      {r2-r8,pc}
;;;214    
                          ENDP

00004a  0000              DCW      0x0000
                  |L9.76|
                          DCD      GUI_Context

⌨️ 快捷键说明

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