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 + -
显示快捷键?