📄 guiaacircle.txt
字号:
; generated by ARM C/C++ Compiler with , RVCT4.0 [Build 524] for uVision
; commandline ArmCC [--split_sections --debug -c --asm --interleave -o.\Obj\guiaacircle.o --depend=.\Obj\guiaacircle.d --device=DARMSTM --apcs=interwork -O3 -I..\..\include -I..\..\..\FWLib\library\inc -I..\..\..\USBLib\library\inc -I..\..\Config -I..\..\GUI\Core -I..\..\GUI\Font -I..\..\GUI\ConvertColor -I..\..\GUI\AntiAlias -I..\..\GUI\ConvertMono -I..\..\GUI\JPEG -I..\..\GUI\MemDev -I..\..\GUI\MultiLayer -I..\..\GUI\Widget -I..\..\GUI\WM -IC:\Keil\ARM\INC\ST\STM32F10x ..\..\GUI\AntiAlias\GUIAACircle.c]
THUMB
AREA ||i.FillCircle||, CODE, READONLY, ALIGN=2
FillCircle PROC
;;;41 */
;;;42 static void FillCircle(int x0, int y0, int r) {
000000 e92d5ff0 PUSH {r4-r12,lr}
000004 4607 MOV r7,r0
000006 468b MOV r11,r1
;;;43 int i, x;
;;;44 int sqmax = r*r+r/2;
000008 fb02f002 MUL r0,r2,r2
00000c eb0271d2 ADD r1,r2,r2,LSR #31
000010 eb000861 ADD r8,r0,r1,ASR #1
;;;45 int yMin, yMax;
;;;46 /* First step : find uppermost and lowermost coordinates */
;;;47 yMin = y0 - r;
;;;48 yMax = y0 + r;
;;;49 /* Use Clipping rect to reduce calculation (if possible) */
;;;50 if (GUI_Context.pClipRect_HL) {
000014 4824 LDR r0,|L1.168|
000016 4616 MOV r6,r2 ;42
000018 6900 LDR r0,[r0,#0x10] ; GUI_Context
00001a ebab0902 SUB r9,r11,r2 ;47
00001e eb0b0a02 ADD r10,r11,r2 ;48
000022 b148 CBZ r0,|L1.56|
;;;51 if (yMax > GUI_Context.pClipRect_HL->y1)
000024 f9b01006 LDRSH r1,[r0,#6]
000028 4551 CMP r1,r10
00002a da00 BGE |L1.46|
;;;52 yMax = GUI_Context.pClipRect_HL->y1;
00002c 468a MOV r10,r1
|L1.46|
;;;53 if (yMin < GUI_Context.pClipRect_HL->y0)
00002e f9b00002 LDRSH r0,[r0,#2]
000032 4548 CMP r0,r9
000034 dd00 BLE |L1.56|
;;;54 yMin = GUI_Context.pClipRect_HL->y0;
000036 4681 MOV r9,r0
|L1.56|
;;;55 }
;;;56 /* Draw top half */
;;;57 for (i=0, x=r; i<r; i++) {
000038 2500 MOVS r5,#0
00003a 4634 MOV r4,r6
00003c e015 B |L1.106|
;;;58 int y = y0-i;
00003e bf00 NOP
|L1.64|
000040 ebab0105 SUB r1,r11,r5
;;;59 if ((y >= yMin) && (y <= yMax)) {
000044 4549 CMP r1,r9
000046 db0f BLT |L1.104|
000048 4551 CMP r1,r10
00004a dc0d BGT |L1.104|
;;;60 /* calc proper x-value */
;;;61 while ((i*i+x*x) >sqmax)
00004c fb05f005 MUL r0,r5,r5
;;;62 --x;
000050 e000 B |L1.84|
|L1.82|
000052 1e64 SUBS r4,r4,#1
|L1.84|
000054 fb040204 MLA r2,r4,r4,r0 ;61
000058 4542 CMP r2,r8 ;61
00005a dcfa BGT |L1.82|
;;;63 LCD_HL_DrawHLine (x0-x, y, x0+x);
00005c 4b12 LDR r3,|L1.168|
00005e 193a ADDS r2,r7,r4
000060 6d9b LDR r3,[r3,#0x58] ; GUI_Context
000062 1b38 SUBS r0,r7,r4
000064 681b LDR r3,[r3,#0]
000066 4798 BLX r3
|L1.104|
000068 1c6d ADDS r5,r5,#1 ;57
|L1.106|
00006a 42b5 CMP r5,r6 ;57
00006c dbe8 BLT |L1.64|
;;;64 }
;;;65 }
;;;66 /* Draw bottom half */
;;;67 for (i=0, x=r; i<r; i++) {
00006e 2500 MOVS r5,#0
000070 4634 MOV r4,r6
000072 e014 B |L1.158|
|L1.116|
;;;68 int y = y0 + i;
000074 eb0b0105 ADD r1,r11,r5
;;;69 if ((y >= yMin) && (y <= yMax)) {
000078 4549 CMP r1,r9
00007a db0f BLT |L1.156|
00007c 4551 CMP r1,r10
00007e dc0d BGT |L1.156|
000080 fb05f005 MUL r0,r5,r5 ;61
;;;70 /* calc proper x-value */
;;;71 while ((i*i+x*x) >sqmax)
;;;72 --x;
000084 e000 B |L1.136|
|L1.134|
000086 1e64 SUBS r4,r4,#1
|L1.136|
000088 fb040204 MLA r2,r4,r4,r0 ;71
00008c 4542 CMP r2,r8 ;71
00008e dcfa BGT |L1.134|
;;;73 LCD_HL_DrawHLine (x0-x, y, x0+x);
000090 4b05 LDR r3,|L1.168|
000092 193a ADDS r2,r7,r4
000094 6d9b LDR r3,[r3,#0x58] ; GUI_Context
000096 1b38 SUBS r0,r7,r4
000098 681b LDR r3,[r3,#0]
00009a 4798 BLX r3
|L1.156|
00009c 1c6d ADDS r5,r5,#1 ;67
|L1.158|
00009e 42b5 CMP r5,r6 ;67
0000a0 dbe8 BLT |L1.116|
;;;74 }
;;;75 }
;;;76 }
0000a2 e8bd9ff0 POP {r4-r12,pc}
;;;77
ENDP
0000a6 0000 DCW 0x0000
|L1.168|
DCD GUI_Context
AREA ||i.GL_FillCircleAA_HiRes||, CODE, READONLY, ALIGN=1
GL_FillCircleAA_HiRes PROC
;;;87 */
;;;88 void GL_FillCircleAA_HiRes(int x0, int y0, int r) {
000000 b570 PUSH {r4-r6,lr}
000002 460e MOV r6,r1
000004 4604 MOV r4,r0
;;;89 /* Init AA Subsystem, pass horizontal limits */
;;;90 GUI_AA_Init_HiRes(x0-r, x0+r);
000006 1881 ADDS r1,r0,r2
000008 4615 MOV r5,r2 ;88
00000a 1a80 SUBS r0,r0,r2
00000c f7fffffe BL GUI_AA_Init_HiRes
;;;91 /* Do the actual drawing */
;;;92 FillCircle(x0, y0, r);
000010 462a MOV r2,r5
000012 4631 MOV r1,r6
000014 4620 MOV r0,r4
000016 f7fffffe BL FillCircle
;;;93 /* Cleanup */
;;;94 GUI_AA_Exit();
00001a e8bd4070 POP {r4-r6,lr}
00001e f7ffbffe B.W GUI_AA_Exit
;;;95 }
;;;96
ENDP
AREA ||i.GUI_AA_FillCircle||, CODE, READONLY, ALIGN=2
GUI_AA_FillCircle PROC
;;;100 */
;;;101 void GUI_AA_FillCircle(int x0, int y0, int r) {
000000 b57c PUSH {r2-r6,lr}
000002 4605 MOV r5,r0
000004 460e MOV r6,r1
000006 4614 MOV r4,r2
;;;102 #if (GUI_WINSUPPORT)
;;;103 GUI_RECT Rect;
;;;104 #endif
;;;105 GUI_LOCK();
;;;106 #if (GUI_WINSUPPORT)
;;;107 WM_ADDORG_AA(x0,y0);
000008 f7fffffe BL WM__GetOrgX_AA
00000c 4405 ADD r5,r5,r0
00000e f7fffffe BL WM__GetOrgY_AA
000012 4406 ADD r6,r6,r0
;;;108 #endif
;;;109 if (!GUI_Context.AA_HiResEnable) {
000014 4815 LDR r0,|L3.108|
000016 f890105d LDRB r1,[r0,#0x5d] ; GUI_Context
00001a b921 CBNZ r1,|L3.38|
;;;110 x0 *= GUI_Context.AA_Factor;
00001c f890005c LDRB r0,[r0,#0x5c] ; GUI_Context
;;;111 y0 *= GUI_Context.AA_Factor;
000020 4346 MULS r6,r0,r6
;;;112 r *= GUI_Context.AA_Factor;
000022 4344 MULS r4,r0,r4
000024 4345 MULS r5,r0,r5 ;110
|L3.38|
;;;113 }
;;;114 #if (GUI_WINSUPPORT)
;;;115 Rect.x0 = GUI_AA_HiRes2Pixel(x0 - r);
000026 1b28 SUBS r0,r5,r4
000028 f7fffffe BL GUI_AA_HiRes2Pixel
00002c f8ad0000 STRH r0,[sp,#0]
;;;116 Rect.x1 = GUI_AA_HiRes2Pixel(x0 + r);
000030 1928 ADDS r0,r5,r4
000032 f7fffffe BL GUI_AA_HiRes2Pixel
000036 f8ad0004 STRH r0,[sp,#4]
;;;117 Rect.y0 = GUI_AA_HiRes2Pixel(y0 - r);
00003a 1b30 SUBS r0,r6,r4
00003c f7fffffe BL GUI_AA_HiRes2Pixel
000040 f8ad0002 STRH r0,[sp,#2]
;;;118 Rect.y1 = GUI_AA_HiRes2Pixel(y0 + r);
000044 1930 ADDS r0,r6,r4
000046 f7fffffe BL GUI_AA_HiRes2Pixel
00004a f8ad0006 STRH r0,[sp,#6]
;;;119 WM_ITERATE_START(&Rect); {
00004e 4668 MOV r0,sp
000050 f7fffffe BL WM__InitIVRSearch
000054 e006 B |L3.100|
|L3.86|
;;;120 #endif
;;;121 GL_FillCircleAA_HiRes(x0, y0, r);
000056 4622 MOV r2,r4
000058 4631 MOV r1,r6
00005a 4628 MOV r0,r5
00005c f7fffffe BL GL_FillCircleAA_HiRes
;;;122 #if (GUI_WINSUPPORT)
;;;123 } WM_ITERATE_END();
000060 f7fffffe BL WM__GetNextIVR
|L3.100|
000064 2800 CMP r0,#0
000066 d1f6 BNE |L3.86|
;;;124 #endif
;;;125 GUI_UNLOCK();
;;;126 }
000068 bd7c POP {r2-r6,pc}
;;;127
ENDP
00006a 0000 DCW 0x0000
|L3.108|
DCD GUI_Context
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -