📄 gui_sif_prop.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_sif_prop.o --depend=.\Obj\gui_sif_prop.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_SIF_Prop.c]
THUMB
AREA ||i._GUI_SIF_DispChar||, CODE, READONLY, ALIGN=2
_GUI_SIF_DispChar PROC
;;;76 */
;;;77 static void _GUI_SIF_DispChar(U16P c) {
000000 e92d47f0 PUSH {r4-r10,lr}
;;;78 const U8 * pCharInfo, * pData;
;;;79 pCharInfo = _GetpCharInfo(GUI_Context.pAFont, c);
000004 4c32 LDR r4,|L1.208|
000006 4601 MOV r1,r0 ;77
000008 b088 SUB sp,sp,#0x20 ;77
00000a 69a0 LDR r0,[r4,#0x18] ; GUI_Context
00000c f7fffffe BL _GetpCharInfo
;;;80 if (pCharInfo) {
000010 9007 STR r0,[sp,#0x1c]
000012 2800 CMP r0,#0
000014 d058 BEQ |L1.200|
;;;81 GUI_DRAWMODE DrawMode, OldDrawMode;
;;;82 GUI_SIF_CHARINFO CharInfo;
;;;83 CharInfo.XSize = GUI__Read16(&pCharInfo);
000016 a807 ADD r0,sp,#0x1c
000018 f7fffffe BL GUI__Read16
00001c f360050f BFI r5,r0,#0,#16
;;;84 CharInfo.XDist = GUI__Read16(&pCharInfo);
000020 a807 ADD r0,sp,#0x1c
000022 f7fffffe BL GUI__Read16
000026 f360451f BFI r5,r0,#16,#16
;;;85 CharInfo.BytesPerLine = GUI__Read16(&pCharInfo);
00002a a807 ADD r0,sp,#0x1c
00002c f7fffffe BL GUI__Read16
000030 f360070f BFI r7,r0,#0,#16
;;;86 GUI__Read16(&pCharInfo); /* Dummy */
000034 a807 ADD r0,sp,#0x1c
000036 f7fffffe BL GUI__Read16
;;;87 CharInfo.OffData = GUI__Read32(&pCharInfo);
00003a a807 ADD r0,sp,#0x1c
00003c f7fffffe BL GUI__Read32
;;;88 pData = (const U8 *)GUI_Context.pAFont->p.pFontData + CharInfo.OffData;
000040 69a1 LDR r1,[r4,#0x18] ; GUI_Context
;;;89 DrawMode = GUI_Context.TextMode;
000042 f9b4902a LDRSH r9,[r4,#0x2a] ; GUI_Context
000046 6989 LDR r1,[r1,#0x18] ;88
000048 180e ADDS r6,r1,r0 ;88
;;;90 OldDrawMode = LCD_SetDrawMode(DrawMode);
00004a 4648 MOV r0,r9
00004c f7fffffe BL LCD_SetDrawMode
000050 4682 MOV r10,r0
;;;91 LCD_DrawBitmap(GUI_Context.DispPosX, GUI_Context.DispPosY,
000052 b2b9 UXTH r1,r7
000054 2001 MOVS r0,#1
000056 aa02 ADD r2,sp,#8
000058 c243 STM r2!,{r0,r1,r6}
00005a 4623 MOV r3,r4
00005c 9305 STR r3,[sp,#0x14]
00005e 69a0 LDR r0,[r4,#0x18] ; GUI_Context
000060 7dc3 LDRB r3,[r0,#0x17]
000062 7d82 LDRB r2,[r0,#0x16]
000064 e9cd2300 STRD r2,r3,[sp,#0]
000068 7d03 LDRB r3,[r0,#0x14]
00006a b2aa UXTH r2,r5
00006c 4616 MOV r6,r2
00006e f9b41024 LDRSH r1,[r4,#0x24] ; GUI_Context
000072 f9b40022 LDRSH r0,[r4,#0x22] ; GUI_Context
000076 f7fffffe BL LCD_DrawBitmap
;;;92 CharInfo.XSize,
;;;93 GUI_Context.pAFont->YSize,
;;;94 GUI_Context.pAFont->XMag,
;;;95 GUI_Context.pAFont->YMag,
;;;96 1,
;;;97 CharInfo.BytesPerLine,
;;;98 pData,
;;;99 &LCD_BKCOLORINDEX);
;;;100 /* Fill empty pixel lines */
;;;101 if (GUI_Context.pAFont->YDist > GUI_Context.pAFont->YSize) {
00007a 69a0 LDR r0,[r4,#0x18] ; GUI_Context
00007c 7d41 LDRB r1,[r0,#0x15]
00007e 7d07 LDRB r7,[r0,#0x14]
000080 42b9 CMP r1,r7
000082 d91a BLS |L1.186|
;;;102 int YMag = GUI_Context.pAFont->YMag;
000084 7dc0 LDRB r0,[r0,#0x17]
;;;103 int YDist = GUI_Context.pAFont->YDist * YMag;
;;;104 int YSize = GUI_Context.pAFont->YSize * YMag;
000086 4347 MULS r7,r0,r7
000088 fb01f800 MUL r8,r1,r0 ;103
;;;105 if (DrawMode != LCD_DRAWMODE_TRANS) {
00008c f1b90f02 CMP r9,#2
000090 d013 BEQ |L1.186|
;;;106 LCD_COLOR OldColor = GUI_GetColor();
000092 f7fffffe BL GUI_GetColor
000096 4681 MOV r9,r0
;;;107 GUI_SetColor(GUI_GetBkColor());
000098 f7fffffe BL GUI_GetBkColor
00009c f7fffffe BL GUI_SetColor
;;;108 LCD_FillRect(GUI_Context.DispPosX,
0000a0 f9b41024 LDRSH r1,[r4,#0x24] ; GUI_Context
0000a4 f9b40022 LDRSH r0,[r4,#0x22] ; GUI_Context
0000a8 eb010308 ADD r3,r1,r8
0000ac 1982 ADDS r2,r0,r6
0000ae 4439 ADD r1,r1,r7
0000b0 f7fffffe BL LCD_FillRect
;;;109 GUI_Context.DispPosY + YSize,
;;;110 GUI_Context.DispPosX + CharInfo.XSize,
;;;111 GUI_Context.DispPosY + YDist);
;;;112 GUI_SetColor(OldColor);
0000b4 4648 MOV r0,r9
0000b6 f7fffffe BL GUI_SetColor
|L1.186|
;;;113 }
;;;114 }
;;;115 LCD_SetDrawMode(OldDrawMode); /* Restore draw mode */
0000ba 4650 MOV r0,r10
0000bc f7fffffe BL LCD_SetDrawMode
;;;116 GUI_Context.DispPosX += CharInfo.XDist;
0000c0 8c60 LDRH r0,[r4,#0x22] ; GUI_Context
0000c2 eb004015 ADD r0,r0,r5,LSR #16
0000c6 8460 STRH r0,[r4,#0x22]
|L1.200|
;;;117 }
;;;118 }
0000c8 b008 ADD sp,sp,#0x20
0000ca e8bd87f0 POP {r4-r10,pc}
;;;119
ENDP
0000ce 0000 DCW 0x0000
|L1.208|
DCD GUI_Context
AREA ||i._GUI_SIF_GetCharDistX||, CODE, READONLY, ALIGN=2
_GUI_SIF_GetCharDistX PROC
;;;123 */
;;;124 static int _GUI_SIF_GetCharDistX(U16P c) {
000000 b538 PUSH {r3-r5,lr}
000002 4601 MOV r1,r0
;;;125 const U8 * pCharInfo;
;;;126 U16 DistX = 0;
;;;127 pCharInfo = _GetpCharInfo(GUI_Context.pAFont, c); /* Get pointer to char info data */
000004 4807 LDR r0,|L2.36|
000006 2400 MOVS r4,#0 ;126
000008 6980 LDR r0,[r0,#0x18] ; GUI_Context
00000a f7fffffe BL _GetpCharInfo
;;;128 if (pCharInfo) {
00000e 9000 STR r0,[sp,#0]
000010 b128 CBZ r0,|L2.30|
;;;129 pCharInfo += 2 /* Skip XSize */;
000012 1c80 ADDS r0,r0,#2
;;;130 DistX = GUI__Read16(&pCharInfo);
000014 9000 STR r0,[sp,#0]
000016 4668 MOV r0,sp
000018 f7fffffe BL GUI__Read16
00001c 4604 MOV r4,r0
|L2.30|
;;;131 }
;;;132 return DistX;
00001e 4620 MOV r0,r4
;;;133 }
000020 bd38 POP {r3-r5,pc}
;;;134
ENDP
000022 0000 DCW 0x0000
|L2.36|
DCD GUI_Context
AREA ||i._GUI_SIF_GetFontInfo||, CODE, READONLY, ALIGN=1
_GUI_SIF_GetFontInfo PROC
;;;138 */
;;;139 static void _GUI_SIF_GetFontInfo(const GUI_FONT GUI_UNI_PTR * pFont, GUI_FONTINFO * pfi) {
000000 b538 PUSH {r3-r5,lr}
;;;140 const U8 * pData;
;;;141 pData = (const U8 *)pFont->p.pFontData + 4 /* Skip XSize and XDist */;
000002 6980 LDR r0,[r0,#0x18]
000004 460c MOV r4,r1 ;139
000006 1d00 ADDS r0,r0,#4
;;;142 pfi->Baseline = GUI__Read16(&pData);
000008 9000 STR r0,[sp,#0]
00000a 4668 MOV r0,sp
00000c f7fffffe BL GUI__Read16
000010 70a0 STRB r0,[r4,#2]
;;;143 pfi->LHeight = GUI__Read16(&pData);
000012 4668 MOV r0,sp
000014 f7fffffe BL GUI__Read16
000018 70e0 STRB r0,[r4,#3]
;;;144 pfi->CHeight = GUI__Read16(&pData);
00001a 4668 MOV r0,sp
00001c f7fffffe BL GUI__Read16
000020 7120 STRB r0,[r4,#4]
;;;145 pfi->Flags = GUI_FONTINFO_FLAG_PROP;
000022 2001 MOVS r0,#1
000024 8020 STRH r0,[r4,#0]
;;;146 }
000026 bd38 POP {r3-r5,pc}
;;;147
ENDP
AREA ||i._GUI_SIF_IsInFont||, CODE, READONLY, ALIGN=2
_GUI_SIF_IsInFont PROC
;;;151 */
;;;152 static char _GUI_SIF_IsInFont(const GUI_FONT GUI_UNI_PTR * pFont, U16 c) {
000000 b510 PUSH {r4,lr}
;;;153 const U8 * pCharInfo;
;;;154 GUI_USE_PARA(pFont);
;;;155 pCharInfo = _GetpCharInfo(GUI_Context.pAFont, c);
000002 4804 LDR r0,|L4.20|
000004 6980 LDR r0,[r0,#0x18] ; GUI_Context
000006 f7fffffe BL _GetpCharInfo
;;;156 return (pCharInfo) ? 1 : 0;
00000a 2800 CMP r0,#0
00000c d000 BEQ |L4.16|
00000e 2001 MOVS r0,#1
|L4.16|
;;;157 }
000010 bd10 POP {r4,pc}
;;;158
ENDP
000012 0000 DCW 0x0000
|L4.20|
DCD GUI_Context
AREA ||i._GetpCharInfo||, CODE, READONLY, ALIGN=1
_GetpCharInfo PROC
;;;44 */
;;;45 static const U8 * _GetpCharInfo(const GUI_FONT GUI_UNI_PTR * pFont, U16P c) {
000000 e92d41fc PUSH {r2-r8,lr}
000004 4604 MOV r4,r0
000006 6980 LDR r0,[r0,#0x18]
000008 460f MOV r7,r1
00000a 300e ADDS r0,r0,#0xe
00000c 9000 STR r0,[sp,#0]
00000e 4668 MOV r0,sp
000010 f7fffffe BL GUI__Read16
;;;46 const U8 * pCharArea, * pCharInfo;
;;;47 int NumCharAreas;
;;;48 NumCharAreas = _GetNumCharAreas(pFont); /* Get # of char areas */
;;;49 pCharArea = (const U8 *)pFont->p.pFontData
000014 69a1 LDR r1,[r4,#0x18]
000016 4605 MOV r5,r0 ;48
000018 3110 ADDS r1,r1,#0x10
;;;50 + sizeof(GUI_SI_FONT); /* Set char area pointer to first char area */
;;;51 pCharInfo = pCharArea
00001a eb010680 ADD r6,r1,r0,LSL #2
00001e 9101 STR r1,[sp,#4]
|L5.32|
;;;52 + sizeof(GUI_SIF_CHAR_AREA) * NumCharAreas; /* Set char info pointer to first character info */
;;;53 do {
;;;54 GUI_SIF_CHAR_AREA CharArea;
;;;55 CharArea.First = GUI__Read16(&pCharArea);
000020 a801 ADD r0,sp,#4
000022 f7fffffe BL GUI__Read16
000026 f360040f BFI r4,r0,#0,#16
;;;56 CharArea.Last = GUI__Read16(&pCharArea);
00002a a801 ADD r0,sp,#4
00002c f7fffffe BL GUI__Read16
000030 f360441f BFI r4,r0,#16,#16
000034 b2a0 UXTH r0,r4
;;;57 if ((c >= CharArea.First) && (c <= CharArea.Last)) {
000036 42b8 CMP r0,r7
000038 d80a BHI |L5.80|
00003a 0c21 LSRS r1,r4,#16
00003c 42b9 CMP r1,r7
00003e d307 BCC |L5.80|
000040 b2a0 UXTH r0,r4
;;;58 pCharInfo += sizeof(GUI_SIF_CHARINFO) * (c - CharArea.First);
000042 1a38 SUBS r0,r7,r0
000044 eb000040 ADD r0,r0,r0,LSL #1
000048 eb060080 ADD r0,r6,r0,LSL #2
|L5.76|
;;;59 return pCharInfo;
;;;60 }
;;;61 pCharInfo += sizeof(GUI_SIF_CHARINFO) * (CharArea.Last - CharArea.First + 1);
;;;62 } while(--NumCharAreas);
;;;63 return 0;
;;;64 }
00004c e8bd81fc POP {r2-r8,pc}
|L5.80|
000050 ebc04014 RSB r0,r0,r4,LSR #16 ;61
000054 eb000040 ADD r0,r0,r0,LSL #1 ;61
000058 eb060680 ADD r6,r6,r0,LSL #2 ;61
00005c 360c ADDS r6,r6,#0xc ;61
00005e 1e6d SUBS r5,r5,#1 ;62
000060 d1de BNE |L5.32|
000062 2000 MOVS r0,#0 ;63
000064 e7f2 B |L5.76|
;;;65
ENDP
AREA ||.constdata||, DATA, READONLY, ALIGN=2
GUI_SIF_APIList_Prop
DCD _GUI_SIF_DispChar
DCD _GUI_SIF_GetCharDistX
DCD _GUI_SIF_GetFontInfo
DCD _GUI_SIF_IsInFont
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -