⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 guiaaline.txt

📁 STM32F103ZET6+UCOSII+UCGUI源码
💻 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 + -