📄 gui_dispstringinrectex.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_dispstringinrectex.o --depend=.\Obj\gui_dispstringinrectex.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_DispStringInRectEx.c]
THUMB
AREA ||i.GUI_DispStringInRectEx||, CODE, READONLY, ALIGN=2
GUI_DispStringInRectEx PROC
;;;66 */
;;;67 void GUI_DispStringInRectEx(const char GUI_UNI_PTR *s, GUI_RECT* pRect, int TextAlign, int MaxLen, const GUI_ROTATION * pLCD_Api) {
000000 e92d47ff PUSH {r0-r10,lr}
;;;68 const GUI_ROTATION * pLCD_ApiOld;
;;;69 if (pLCD_Api == GUI_ROTATE_0) {
000004 9e0c LDR r6,[sp,#0x30]
000006 4607 MOV r7,r0 ;67
000008 460d MOV r5,r1 ;67
00000a 4690 MOV r8,r2 ;67
00000c 4699 MOV r9,r3 ;67
00000e b946 CBNZ r6,|L1.34|
;;;70 /* Do nothing else but calling GUI_DispStringInRectMax if pLCD_Api == GUI_ROTATE_0 */
;;;71 GUI_DispStringInRectMax(s, pRect, TextAlign, MaxLen);
000010 464b MOV r3,r9
000012 4642 MOV r2,r8
000014 4629 MOV r1,r5
000016 4638 MOV r0,r7
000018 b004 ADD sp,sp,#0x10
00001a e8bd47f0 POP {r4-r10,lr}
00001e f7ffbffe B.W GUI_DispStringInRectMax
|L1.34|
;;;72 } else {
;;;73 #if (!GUI_WINSUPPORT)
;;;74 GUI_RECT Rect_Old;
;;;75 #else
;;;76 const GUI_RECT * pOldClipRect = NULL;
000022 2400 MOVS r4,#0
;;;77 #endif
;;;78 GUI_RECT rClip, rText = {0};
000024 4668 MOV r0,sp
000026 4621 MOV r1,r4
000028 4622 MOV r2,r4
00002a c006 STM r0!,{r1,r2}
;;;79 GUI_LOCK();
;;;80 /* Set the clip rectangle */
;;;81 if (pRect) {
00002c b1b5 CBZ r5,|L1.92|
;;;82 rText = *pRect;
00002e 2208 MOVS r2,#8
000030 4629 MOV r1,r5
000032 4668 MOV r0,sp
000034 f7fffffe BL __aeabi_memcpy
;;;83 GUI_RectDispString = rText;
000038 2208 MOVS r2,#8
00003a 4669 MOV r1,sp
00003c 4812 LDR r0,|L1.136|
00003e f7fffffe BL __aeabi_memcpy
;;;84 #if (GUI_WINSUPPORT)
;;;85 pOldClipRect = WM_SetUserClipRect(pRect);
000042 4628 MOV r0,r5
000044 f7fffffe BL WM_SetUserClipRect
000048 0004 MOVS r4,r0
;;;86 if (pOldClipRect) {
00004a d007 BEQ |L1.92|
;;;87 GUI__IntersectRects(&rClip, pRect, pOldClipRect);
00004c 4622 MOV r2,r4
00004e 4629 MOV r1,r5
000050 a802 ADD r0,sp,#8
000052 f7fffffe BL GUI__IntersectRects
;;;88 WM_SetUserClipRect(&rClip);
000056 a802 ADD r0,sp,#8
000058 f7fffffe BL WM_SetUserClipRect
|L1.92|
;;;89 }
;;;90 #else
;;;91 Rect_Old = GUI_Context.ClipRect;
;;;92 GUI__IntersectRects(&rClip, pRect, &Rect_Old);
;;;93 LCD_SetClipRectEx(&rClip);
;;;94 #endif
;;;95 }
;;;96 pLCD_ApiOld = _SetRotation(pLCD_Api); /* Set the new function pointer for rotating text */
00005c 4630 MOV r0,r6
00005e f7fffffe BL _SetRotation
000062 4605 MOV r5,r0
;;;97 pLCD_Api->pfRect2TextRect(&rText); /* Calculate the text rectangle */
000064 6871 LDR r1,[r6,#4]
000066 4668 MOV r0,sp
000068 4788 BLX r1
;;;98 GUI__DispStringInRect(s, &rText, TextAlign, MaxLen); /* Display the string */
00006a 464b MOV r3,r9
00006c 4642 MOV r2,r8
00006e 4669 MOV r1,sp
000070 4638 MOV r0,r7
000072 f7fffffe BL GUI__DispStringInRect
;;;99 /* Restore old clipping rectangle */
;;;100 #if (GUI_WINSUPPORT)
;;;101 WM_SetUserClipRect(pOldClipRect);
000076 4620 MOV r0,r4
000078 f7fffffe BL WM_SetUserClipRect
;;;102 #else
;;;103 LCD_SetClipRectEx(&Rect_Old);
;;;104 #endif
;;;105 _SetRotation(pLCD_ApiOld);
00007c 4628 MOV r0,r5
00007e f7fffffe BL _SetRotation
;;;106 GUI_UNLOCK();
;;;107 }
;;;108 }
000082 e8bd87ff POP {r0-r10,pc}
;;;109
ENDP
000086 0000 DCW 0x0000
|L1.136|
DCD ||.data||
AREA ||i._SetRotation||, CODE, READONLY, ALIGN=2
_SetRotation PROC
;;;42 */
;;;43 static const GUI_ROTATION * _SetRotation(const GUI_ROTATION* pLCD_Api) {
000000 b510 PUSH {r4,lr}
;;;44 const GUI_ROTATION * pLCD_ApiOld;
;;;45 GUI_LOCK();
;;;46 pLCD_ApiOld = GUI_pLCD_APIList;
000002 4c06 LDR r4,|L2.28|
;;;47 if (pLCD_Api) {
;;;48 GUI_Context.pClipRect_HL = NULL; /* Do not perform high level clipping in rotated mode */
000004 4a06 LDR r2,|L2.32|
000006 6821 LDR r1,[r4,#0] ;47 ; GUI_pLCD_APIList
000008 b108 CBZ r0,|L2.14|
00000a 2300 MOVS r3,#0
00000c e001 B |L2.18|
|L2.14|
;;;49 } else {
;;;50 GUI_Context.pClipRect_HL = &GUI_Context.ClipRect;
00000e 4b04 LDR r3,|L2.32|
000010 1d1b ADDS r3,r3,#4
|L2.18|
;;;51 }
;;;52 GUI_pLCD_APIList = pLCD_Api;
000012 6113 STR r3,[r2,#0x10] ; GUI_Context
;;;53 GUI_UNLOCK();
;;;54 return pLCD_ApiOld;
000014 6020 STR r0,[r4,#0] ; GUI_pLCD_APIList
000016 4608 MOV r0,r1
;;;55 }
000018 bd10 POP {r4,pc}
;;;56
ENDP
00001a 0000 DCW 0x0000
|L2.28|
DCD GUI_pLCD_APIList
|L2.32|
DCD GUI_Context
AREA ||.data||, DATA, ALIGN=1
GUI_RectDispString
% 8
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -