📄 guiaaline.txt
字号:
; generated by ARM C/C++ Compiler with , RVCT4.0 [Build 524] for uVision
; commandline ArmCC [--split_sections --debug -c --asm --interleave -o.\Obj\guiaaline.o --depend=.\Obj\guiaaline.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\GUIAALine.c]
THUMB
AREA ||i.GUI_AA_DrawLine||, CODE, READONLY, ALIGN=1
GUI_AA_DrawLine PROC
;;;89 */
;;;90 void GUI_AA_DrawLine(int x0, int y0, int x1, int y1) {
000000 e92d41f0 PUSH {r4-r8,lr}
000004 4604 MOV r4,r0
000006 460d MOV r5,r1
000008 4616 MOV r6,r2
00000a 461f MOV r7,r3
;;;91 GUI_LOCK();
;;;92 #if (GUI_WINSUPPORT)
;;;93 WM_ADDORG_AA(x0,y0);
00000c f7fffffe BL WM__GetOrgX_AA
000010 4404 ADD r4,r4,r0
000012 f7fffffe BL WM__GetOrgY_AA
000016 4405 ADD r5,r5,r0
;;;94 WM_ADDORG_AA(x1,y1);
000018 f7fffffe BL WM__GetOrgX_AA
00001c 4406 ADD r6,r6,r0
00001e f7fffffe BL WM__GetOrgY_AA
000022 4407 ADD r7,r7,r0
;;;95 WM_ITERATE_START(NULL); {
000024 2000 MOVS r0,#0
000026 f7fffffe BL WM__InitIVRSearch
00002a e007 B |L1.60|
|L1.44|
;;;96 #endif
;;;97 _AA_DrawLine(x0, y0, x1, y1);
00002c 463b MOV r3,r7
00002e 4632 MOV r2,r6
000030 4629 MOV r1,r5
000032 4620 MOV r0,r4
000034 f7fffffe BL _AA_DrawLine
;;;98 #if (GUI_WINSUPPORT)
;;;99 } WM_ITERATE_END();
000038 f7fffffe BL WM__GetNextIVR
|L1.60|
00003c 2800 CMP r0,#0
00003e d1f5 BNE |L1.44|
;;;100 #endif
;;;101 GUI_UNLOCK();
;;;102 }
000040 e8bd81f0 POP {r4-r8,pc}
;;;103
ENDP
AREA ||i._AA_DrawLine||, CODE, READONLY, ALIGN=2
_AA_DrawLine PROC
;;;34 */
;;;35 static void _AA_DrawLine(int x0, int y0, int x1, int y1) {
000000 e92d5ff0 PUSH {r4-r12,lr}
000004 4604 MOV r4,r0
000006 460f MOV r7,r1
000008 4615 MOV r5,r2
00000a 469a MOV r10,r3
;;;36 int xMin, xMax;
;;;37 U8 PenSizeOld = GUI_GetPenSize();
00000c f7fffffe BL GUI_GetPenSize
;;;38 U8 PenSizeHR = PenSizeOld * GUI_Context.AA_Factor;
000010 f8df90a0 LDR r9,|L2.180|
000014 4606 MOV r6,r0 ;37
000016 f899105c LDRB r1,[r9,#0x5c] ; GUI_Context
00001a 4341 MULS r1,r0,r1
00001c f00108ff AND r8,r1,#0xff
;;;39 U8 OldPenShape = GUI_SetPenShape(GUI_PS_FLAT);
000020 2001 MOVS r0,#1
000022 f7fffffe BL GUI_SetPenShape
000026 4683 MOV r11,r0
;;;40 /* Calculate left and right borders for AA module */
;;;41 if (x0 < x1) {
000028 42ac CMP r4,r5
00002a da02 BGE |L2.50|
;;;42 xMin = x0;
00002c 4621 MOV r1,r4
;;;43 xMax = x1;
00002e 4628 MOV r0,r5
000030 e001 B |L2.54|
|L2.50|
;;;44 } else {
;;;45 xMin = x1;
000032 4629 MOV r1,r5
;;;46 xMax = x0;
000034 4620 MOV r0,r4
|L2.54|
;;;47 }
;;;48 if (GUI_Context.AA_HiResEnable) {
000036 f899205d LDRB r2,[r9,#0x5d] ; GUI_Context
00003a b152 CBZ r2,|L2.82|
;;;49 xMin -= PenSizeHR;
00003c eba10208 SUB r2,r1,r8
;;;50 xMax += PenSizeHR;
000040 eb000108 ADD r1,r0,r8
;;;51 xMin /= GUI_Context.AA_Factor;
000044 f899005c LDRB r0,[r9,#0x5c] ; GUI_Context
;;;52 xMax /= GUI_Context.AA_Factor;
000048 fb91f1f0 SDIV r1,r1,r0
00004c fb92f2f0 SDIV r2,r2,r0 ;51
000050 e008 B |L2.100|
|L2.82|
;;;53 } else {
;;;54 xMin -= PenSizeOld;
000052 1b8a SUBS r2,r1,r6
;;;55 xMax += PenSizeOld;
000054 1981 ADDS r1,r0,r6
;;;56 x0 *= GUI_Context.AA_Factor;
000056 f899005c LDRB r0,[r9,#0x5c] ; GUI_Context
;;;57 x1 *= GUI_Context.AA_Factor;
00005a 4345 MULS r5,r0,r5
;;;58 y0 *= GUI_Context.AA_Factor;
00005c 4347 MULS r7,r0,r7
00005e 4344 MULS r4,r0,r4 ;56
;;;59 y1 *= GUI_Context.AA_Factor;
000060 fb0afa00 MUL r10,r10,r0
|L2.100|
;;;60 }
;;;61 /* Do the actual drawing */
;;;62 GUI_AA_Init(xMin, xMax);
000064 4610 MOV r0,r2
000066 f7fffffe BL GUI_AA_Init
;;;63 GUI_SetPenSize(PenSizeHR);
00006a 4640 MOV r0,r8
00006c f7fffffe BL GUI_SetPenSize
;;;64 GL_DrawLine(x0 , y0 , x1 , y1 );
000070 4653 MOV r3,r10
000072 462a MOV r2,r5
000074 4639 MOV r1,r7
000076 4620 MOV r0,r4
000078 f7fffffe BL GL_DrawLine
;;;65 GUI_AA_Exit();
00007c f7fffffe BL GUI_AA_Exit
;;;66 /* Draw end points (can be optimized away in future, TBD*/
;;;67 switch (OldPenShape) {
000080 f1bb0f00 CMP r11,#0
000084 d10e BNE |L2.164|
;;;68 case GUI_PS_ROUND:
;;;69 {
;;;70 int r = GUI_Context.AA_Factor * PenSizeOld / 2;
000086 f899005c LDRB r0,[r9,#0x5c] ; GUI_Context
;;;71 GL_FillCircleAA_HiRes(x0 , y0 , r);
00008a 4639 MOV r1,r7
00008c 4370 MULS r0,r6,r0 ;70
00008e ea4f0850 LSR r8,r0,#1 ;70
000092 4642 MOV r2,r8
000094 4620 MOV r0,r4
000096 f7fffffe BL GL_FillCircleAA_HiRes
;;;72 GL_FillCircleAA_HiRes(x1 , y1 , r);
00009a 4642 MOV r2,r8
00009c 4651 MOV r1,r10
00009e 4628 MOV r0,r5
0000a0 f7fffffe BL GL_FillCircleAA_HiRes
|L2.164|
;;;73 }
;;;74 break;
;;;75 }
;;;76 GUI_SetPenSize(PenSizeOld);
0000a4 4630 MOV r0,r6
0000a6 f7fffffe BL GUI_SetPenSize
;;;77 GUI_SetPenShape(OldPenShape);
0000aa 4658 MOV r0,r11
0000ac e8bd5ff0 POP {r4-r12,lr}
0000b0 f7ffbffe B.W GUI_SetPenShape
;;;78 }
;;;79
ENDP
|L2.180|
DCD GUI_Context
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -