guiaapoly.txt
来自「STM32F103ZET6+UCOSII+UCGUI源码」· 文本 代码 · 共 206 行
TXT
206 行
; generated by ARM C/C++ Compiler with , RVCT4.0 [Build 524] for uVision
; commandline ArmCC [--split_sections --debug -c --asm --interleave -o.\Obj\guiaapoly.o --depend=.\Obj\guiaapoly.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\GUIAAPoly.c]
THUMB
AREA ||i.GUI_AA_FillPolygon||, CODE, READONLY, ALIGN=2
GUI_AA_FillPolygon PROC
;;;87 */
;;;88 void GUI_AA_FillPolygon(/*const*/ GUI_POINT* pPoints, int NumPoints, int x0, int y0) {
000000 e92d47f0 PUSH {r4-r10,lr}
000004 4680 MOV r8,r0
000006 4689 MOV r9,r1
000008 4615 MOV r5,r2
00000a 461c MOV r4,r3
;;;89 GUI_LOCK();
;;;90 #if (GUI_WINSUPPORT)
;;;91 WM_ADDORG_AA(x0,y0);
00000c f7fffffe BL WM__GetOrgX_AA
000010 1946 ADDS r6,r0,r5
000012 f7fffffe BL WM__GetOrgY_AA
000016 1907 ADDS r7,r0,r4
;;;92 WM_ITERATE_START(NULL); {
000018 2000 MOVS r0,#0
00001a f7fffffe BL WM__InitIVRSearch
00001e 2800 CMP r0,#0
000020 d00f BEQ |L1.66|
;;;93 #endif
;;;94 /* Variables in MEMDEV module (with memory devices only) */
;;;95 #if GUI_SUPPORT_MEMDEV
;;;96 if (GUI_Context.pDeviceAPI->pfFillPolygonAA)
000022 4d09 LDR r5,|L1.72|
|L1.36|
;;;97 GUI_Context.pDeviceAPI->pfFillPolygonAA(pPoints, NumPoints, x0, y0);
000024 463b MOV r3,r7
000026 6ca8 LDR r0,[r5,#0x48] ;96 ; GUI_Context
000028 4632 MOV r2,r6
00002a 6b44 LDR r4,[r0,#0x34]
00002c 4649 MOV r1,r9
00002e 4640 MOV r0,r8
000030 b10c CBZ r4,|L1.54|
000032 47a0 BLX r4
000034 e001 B |L1.58|
|L1.54|
;;;98 else
;;;99 #endif
;;;100 _FillPolygonAA (pPoints, NumPoints, x0, y0);
000036 f7fffffe BL _FillPolygonAA
|L1.58|
;;;101 #if (GUI_WINSUPPORT)
;;;102 } WM_ITERATE_END();
00003a f7fffffe BL WM__GetNextIVR
00003e 2800 CMP r0,#0
000040 d1f0 BNE |L1.36|
|L1.66|
;;;103 #endif
;;;104 GUI_UNLOCK();
;;;105 }
000042 e8bd87f0 POP {r4-r10,pc}
;;;106
ENDP
000046 0000 DCW 0x0000
|L1.72|
DCD GUI_Context
AREA ||i._FillPolygonAA||, CODE, READONLY, ALIGN=2
_FillPolygonAA PROC
;;;37 */
;;;38 static void _FillPolygonAA(GUI_POINT* paPoint, int NumPoints, int x, int y) {
000000 e92d47f0 PUSH {r4-r10,lr}
;;;39 int i;
;;;40 int Stat;
;;;41 int x0,x1;
;;;42 int PosFactor = GUI_Context.AA_HiResEnable ? 1 : GUI_Context.AA_Factor;
000004 f8dfe0d4 LDR lr,|L2.220|
000008 460d MOV r5,r1 ;38
00000a 4604 MOV r4,r0 ;38
00000c f89ec05d LDRB r12,[lr,#0x5d] ; GUI_Context
000010 4671 MOV r1,lr
000012 2001 MOVS r0,#1
000014 f891705c LDRB r7,[r1,#0x5c]
000018 4616 MOV r6,r2 ;38
00001a 469a MOV r10,r3 ;38
00001c f1bc0f00 CMP r12,#0
000020 d100 BNE |L2.36|
000022 4638 MOV r0,r7
|L2.36|
;;;43 /* Calc horizontal limits and init GUI_AA */
;;;44 x0 = x1 = paPoint[0].x;
000024 f9b42000 LDRSH r2,[r4,#0]
000028 4680 MOV r8,r0 ;42
;;;45 for (i=1; i< NumPoints; i++) {
00002a 2101 MOVS r1,#1
00002c 4613 MOV r3,r2 ;44
00002e e008 B |L2.66|
|L2.48|
;;;46 int x = paPoint[i].x;
000030 f9340021 LDRSH r0,[r4,r1,LSL #2]
;;;47 if (x<x0)
000034 4290 CMP r0,r2
000036 da00 BGE |L2.58|
;;;48 x0 = x;
000038 4602 MOV r2,r0
|L2.58|
;;;49 if (x>x1)
00003a 4298 CMP r0,r3
00003c dd00 BLE |L2.64|
;;;50 x1 = x;
00003e 4603 MOV r3,r0
|L2.64|
000040 1c49 ADDS r1,r1,#1 ;45
|L2.66|
000042 42a9 CMP r1,r5 ;45
000044 dbf4 BLT |L2.48|
;;;51 }
;;;52 if (!GUI_Context.AA_HiResEnable) {
000046 46f1 MOV r9,lr
000048 f1bc0f00 CMP r12,#0
00004c d102 BNE |L2.84|
;;;53 Stat = GUI_AA_Init(x0+x,x1+x);
00004e 1999 ADDS r1,r3,r6
000050 1990 ADDS r0,r2,r6
000052 e005 B |L2.96|
|L2.84|
;;;54 } else {
;;;55 Stat = GUI_AA_Init((x0+x)/GUI_Context.AA_Factor,(x1+x)/GUI_Context.AA_Factor);
000054 1998 ADDS r0,r3,r6
000056 fb90f1f7 SDIV r1,r0,r7
00005a 1990 ADDS r0,r2,r6
00005c fb90f0f7 SDIV r0,r0,r7
|L2.96|
000060 f7fffffe BL GUI_AA_Init
;;;56 }
;;;57 if (Stat ==0) {
000064 bbb0 CBNZ r0,|L2.212|
;;;58 /* Modify pointlist */
;;;59 if (!GUI_Context.AA_HiResEnable) {
000066 f899005d LDRB r0,[r9,#0x5d] ; GUI_Context
00006a 464f MOV r7,r9
00006c b988 CBNZ r0,|L2.146|
00006e e00e B |L2.142|
|L2.112|
;;;60 for (i=0; i< NumPoints; i++) {
;;;61 paPoint[i].x *= GUI_Context.AA_Factor;
000070 f8342020 LDRH r2,[r4,r0,LSL #2]
000074 f897305c LDRB r3,[r7,#0x5c] ; GUI_Context
;;;62 paPoint[i].y *= GUI_Context.AA_Factor;
000078 eb040180 ADD r1,r4,r0,LSL #2
00007c 435a MULS r2,r3,r2 ;61
00007e f8242020 STRH r2,[r4,r0,LSL #2] ;61
000082 884a LDRH r2,[r1,#2]
000084 f897305c LDRB r3,[r7,#0x5c] ; GUI_Context
000088 1c40 ADDS r0,r0,#1 ;60
00008a 435a MULS r2,r3,r2
00008c 804a STRH r2,[r1,#2]
|L2.142|
00008e 42a8 CMP r0,r5 ;60
000090 dbee BLT |L2.112|
|L2.146|
;;;63 }
;;;64 }
;;;65 GL_FillPolygon(paPoint, NumPoints, x * PosFactor, y * PosFactor);
000092 fb0af308 MUL r3,r10,r8
000096 fb06f208 MUL r2,r6,r8
00009a 4629 MOV r1,r5
00009c 4620 MOV r0,r4
00009e f7fffffe BL GL_FillPolygon
;;;66 /* Restore pointlist */
;;;67 if (!GUI_Context.AA_HiResEnable) {
0000a2 f897005d LDRB r0,[r7,#0x5d] ; GUI_Context
0000a6 463a MOV r2,r7
0000a8 b9a0 CBNZ r0,|L2.212|
0000aa e011 B |L2.208|
|L2.172|
;;;68 for (i=0; i< NumPoints; i++) {
;;;69 paPoint[i].x /= GUI_Context.AA_Factor;
0000ac f9341020 LDRSH r1,[r4,r0,LSL #2]
0000b0 f892305c LDRB r3,[r2,#0x5c] ; GUI_Context
0000b4 fb91f1f3 SDIV r1,r1,r3
0000b8 f8241020 STRH r1,[r4,r0,LSL #2]
;;;70 paPoint[i].y /= GUI_Context.AA_Factor;
0000bc eb040180 ADD r1,r4,r0,LSL #2
0000c0 f9b13002 LDRSH r3,[r1,#2]
0000c4 f892605c LDRB r6,[r2,#0x5c] ; GUI_Context
0000c8 1c40 ADDS r0,r0,#1 ;68
0000ca fb93f3f6 SDIV r3,r3,r6
0000ce 804b STRH r3,[r1,#2]
|L2.208|
0000d0 42a8 CMP r0,r5 ;68
0000d2 dbeb BLT |L2.172|
|L2.212|
;;;71 }
;;;72 }
;;;73 /* Cleanup */
;;;74 }
;;;75 GUI_AA_Exit();
0000d4 e8bd47f0 POP {r4-r10,lr}
0000d8 f7ffbffe B.W GUI_AA_Exit
;;;76 }
;;;77
ENDP
|L2.220|
DCD GUI_Context
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?