📄 guicirc.txt
字号:
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 + -