📄 gui_drawgraph.txt
字号:
; generated by ARM C/C++ Compiler with , RVCT4.0 [Build 524] for uVision
; commandline ArmCC [--split_sections --debug -c --asm --interleave -o.\Obj\gui_drawgraph.o --depend=.\Obj\gui_drawgraph.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\Core\GUI_DrawGraph.c]
THUMB
AREA ||i.GUI_DrawGraph||, CODE, READONLY, ALIGN=2
GUI_DrawGraph PROC
;;;81 */
;;;82 void GUI_DrawGraph(I16 *pay, int NumPoints, int x0, int y0) {
000000 e92d41f0 PUSH {r4-r8,lr}
000004 4606 MOV r6,r0
;;;83 GUI_LOCK();
;;;84 #if (GUI_WINSUPPORT)
;;;85 WM_ADDORG(x0,y0);
000006 480b LDR r0,|L1.52|
000008 460f MOV r7,r1 ;82
00000a 6c01 LDR r1,[r0,#0x40] ; GUI_Context
00000c 6c40 LDR r0,[r0,#0x44] ; GUI_Context
00000e 188c ADDS r4,r1,r2
000010 18c5 ADDS r5,r0,r3
;;;86 WM_ITERATE_START(NULL); {
000012 2000 MOVS r0,#0
000014 f7fffffe BL WM__InitIVRSearch
000018 e007 B |L1.42|
|L1.26|
;;;87 #endif
;;;88 _DrawGraph(pay, NumPoints, x0, y0);
00001a 462b MOV r3,r5
00001c 4622 MOV r2,r4
00001e 4639 MOV r1,r7
000020 4630 MOV r0,r6
000022 f7fffffe BL _DrawGraph
;;;89 #if (GUI_WINSUPPORT)
;;;90 } WM_ITERATE_END();
000026 f7fffffe BL WM__GetNextIVR
|L1.42|
00002a 2800 CMP r0,#0
00002c d1f5 BNE |L1.26|
;;;91 #endif
;;;92 GUI_UNLOCK();
;;;93 }
00002e e8bd81f0 POP {r4-r8,pc}
;;;94
ENDP
000032 0000 DCW 0x0000
|L1.52|
DCD GUI_Context
AREA ||i._DrawGraph||, CODE, READONLY, ALIGN=2
_DrawGraph PROC
;;;32 */
;;;33 static void _DrawGraph(I16 *pay, int NumPoints, int xOff, int yOff) {
000000 e92d5fff PUSH {r0-r12,lr}
;;;34 int i;
;;;35 int y0, y1;
;;;36 int yClip0, yClip1;
;;;37 /* Perform high level clipping in x */
;;;38 yClip0 = GUI_Context.pClipRect_HL->y0;
000004 4826 LDR r0,|L2.160|
000006 460f MOV r7,r1 ;33
000008 6900 LDR r0,[r0,#0x10] ; GUI_Context
00000a 4616 MOV r6,r2 ;33
;;;39 yClip1 = GUI_Context.pClipRect_HL->y1;
00000c f9b09006 LDRSH r9,[r0,#6]
000010 f9b08002 LDRSH r8,[r0,#2] ;38
;;;40 i=0;
000014 2400 MOVS r4,#0
;;;41 if (GUI_Context.pClipRect_HL) {
000016 b160 CBZ r0,|L2.50|
;;;42 if (xOff < GUI_Context.pClipRect_HL->x0)
000018 f9b01000 LDRSH r1,[r0,#0]
00001c 42b1 CMP r1,r6
00001e dd00 BLE |L2.34|
;;;43 i = GUI_Context.pClipRect_HL->x0 - xOff;
000020 1b8c SUBS r4,r1,r6
|L2.34|
;;;44 if (xOff+NumPoints-1 > GUI_Context.pClipRect_HL->x1)
000022 19f1 ADDS r1,r6,r7
000024 f9b00004 LDRSH r0,[r0,#4]
000028 1e49 SUBS r1,r1,#1
00002a 4281 CMP r1,r0
00002c dd01 BLE |L2.50|
;;;45 NumPoints = GUI_Context.pClipRect_HL->x1 - xOff + 1;
00002e 1b87 SUBS r7,r0,r6
000030 1c7f ADDS r7,r7,#1
|L2.50|
;;;46 }
;;;47 /* Start drawing if there is something left to do after x-clipping */
;;;48 if (i < NumPoints) {
000032 42bc CMP r4,r7
000034 da31 BGE |L2.154|
;;;49 y0 = *(pay + i++) + yOff;
000036 9800 LDR r0,[sp,#0]
000038 f9301014 LDRSH r1,[r0,r4,LSL #1]
00003c 9803 LDR r0,[sp,#0xc]
00003e 4401 ADD r1,r1,r0
;;;50 /* Iterate */
;;;51 for (; i < NumPoints; i++) {
000040 e028 B |L2.148|
|L2.66|
;;;52 /* Perform high level clipping in y */
;;;53 y1 = *(pay + i) + yOff;
000042 9800 LDR r0,[sp,#0]
000044 9a03 LDR r2,[sp,#0xc]
000046 f9300014 LDRSH r0,[r0,r4,LSL #1]
00004a 1885 ADDS r5,r0,r2
;;;54 if ((y0 >= yClip0) || (y1 >= yClip0)) {
00004c 4541 CMP r1,r8
00004e da01 BGE |L2.84|
000050 4545 CMP r5,r8
000052 db1e BLT |L2.146|
|L2.84|
;;;55 if ((y0 <= yClip1) || (y1 <= yClip1)) {
000054 4549 CMP r1,r9
000056 dd01 BLE |L2.92|
000058 454d CMP r5,r9
00005a dc1a BGT |L2.146|
|L2.92|
;;;56 int y01;
;;;57 y01 = (y1 + y0) / 2;
00005c 1868 ADDS r0,r5,r1
00005e eb0070d0 ADD r0,r0,r0,LSR #31
000062 ea4f0b60 ASR r11,r0,#1
;;;58 if (y0 <= y1) {
;;;59 LCD_DrawVLine(i + xOff - 1, y0, y01);
000066 eb040006 ADD r0,r4,r6
00006a 4682 MOV r10,r0
00006c 42a9 CMP r1,r5 ;58
00006e f1a00001 SUB r0,r0,#1
000072 dc05 BGT |L2.128|
000074 465a MOV r2,r11
000076 f7fffffe BL LCD_DrawVLine
;;;60 LCD_DrawVLine(i + xOff, y01, y1);
00007a 462a MOV r2,r5
00007c 4659 MOV r1,r11
00007e e005 B |L2.140|
|L2.128|
;;;61 } else {
;;;62 LCD_DrawVLine(i + xOff - 1, y01, y0);
000080 460a MOV r2,r1
000082 4659 MOV r1,r11
000084 f7fffffe BL LCD_DrawVLine
;;;63 LCD_DrawVLine(i + xOff, y1, y01);
000088 465a MOV r2,r11
00008a 4629 MOV r1,r5
|L2.140|
00008c 4650 MOV r0,r10
00008e f7fffffe BL LCD_DrawVLine
|L2.146|
;;;64 }
;;;65 }
;;;66 }
;;;67 y0 = y1;
000092 4629 MOV r1,r5
|L2.148|
000094 1c64 ADDS r4,r4,#1 ;49
000096 42bc CMP r4,r7 ;51
000098 dbd3 BLT |L2.66|
|L2.154|
;;;68 }
;;;69 }
;;;70 }
00009a e8bd9fff POP {r0-r12,pc}
;;;71
ENDP
00009e 0000 DCW 0x0000
|L2.160|
DCD GUI_Context
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -