📄 guidev_writealpha.txt
字号:
; generated by ARM C/C++ Compiler with , RVCT4.0 [Build 524] for uVision
; commandline ArmCC [--split_sections --debug -c --asm --interleave -o.\Obj\guidev_writealpha.o --depend=.\Obj\guidev_writealpha.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\MemDev\GUIDEV_WriteAlpha.c]
THUMB
AREA ||i.GUI_MEMDEV_WriteAlpha||, CODE, READONLY, ALIGN=2
GUI_MEMDEV_WriteAlpha PROC
;;;121 */
;;;122 void GUI_MEMDEV_WriteAlpha(GUI_MEMDEV_Handle hMem, int Alpha) {
000000 4a01 LDR r2,|L1.8|
;;;123 GUI_MEMDEV_WriteAlphaAt(hMem, Alpha, GUI_POS_AUTO, GUI_POS_AUTO);
000002 4613 MOV r3,r2
000004 f7ffbffe B.W GUI_MEMDEV_WriteAlphaAt
;;;124 }
;;;125
ENDP
|L1.8|
DCD 0xfffff001
AREA ||i.GUI_MEMDEV_WriteAlphaAt||, CODE, READONLY, ALIGN=1
GUI_MEMDEV_WriteAlphaAt PROC
;;;92 */
;;;93 void GUI_MEMDEV_WriteAlphaAt(GUI_MEMDEV_Handle hMem, int Alpha, int x, int y) {
000000 e92d41fc PUSH {r2-r8,lr}
000004 0006 MOVS r6,r0
000006 460f MOV r7,r1
000008 4614 MOV r4,r2
00000a 461d MOV r5,r3
;;;94 if (hMem) {
00000c d026 BEQ |L2.92|
;;;95 GUI_MEMDEV* pDevData;
;;;96 #if (GUI_WINSUPPORT)
;;;97 GUI_RECT r;
;;;98 #endif
;;;99 GUI_LOCK();
;;;100 pDevData = (GUI_MEMDEV*) GUI_ALLOC_h2p(hMem); /* Convert to pointer */
00000e 4630 MOV r0,r6
000010 f7fffffe BL GUI_ALLOC_h2p
;;;101 if (x == GUI_POS_AUTO) {
000014 f64071ff MOV r1,#0xfff
000018 1909 ADDS r1,r1,r4
00001a d103 BNE |L2.36|
;;;102 x = pDevData->x0;
00001c f9b04000 LDRSH r4,[r0,#0]
;;;103 y = pDevData->y0;
000020 f9b05002 LDRSH r5,[r0,#2]
|L2.36|
;;;104 }
;;;105 #if (GUI_WINSUPPORT)
;;;106 r.x1 = (r.x0 = x) + pDevData->XSize-1;
000024 8881 LDRH r1,[r0,#4]
000026 1e62 SUBS r2,r4,#1
000028 4411 ADD r1,r1,r2
00002a f8ad4000 STRH r4,[sp,#0]
00002e f8ad1004 STRH r1,[sp,#4]
;;;107 r.y1 = (r.y0 = y) + pDevData->YSize-1;;
000032 88c1 LDRH r1,[r0,#6]
000034 1e68 SUBS r0,r5,#1
000036 4408 ADD r0,r0,r1
000038 f8ad0006 STRH r0,[sp,#6]
00003c f8ad5002 STRH r5,[sp,#2]
;;;108 WM_ITERATE_START(&r) {
000040 4668 MOV r0,sp
000042 f7fffffe BL WM__InitIVRSearch
000046 e007 B |L2.88|
|L2.72|
;;;109 _WriteAlphaToActiveAt(hMem, Alpha, x,y);
000048 462b MOV r3,r5
00004a 4622 MOV r2,r4
00004c 4639 MOV r1,r7
00004e 4630 MOV r0,r6
000050 f7fffffe BL _WriteAlphaToActiveAt
;;;110 } WM_ITERATE_END();
000054 f7fffffe BL WM__GetNextIVR
|L2.88|
000058 2800 CMP r0,#0
00005a d1f5 BNE |L2.72|
|L2.92|
;;;111 #else
;;;112 _WriteAlphaToActiveAt(hMem, Alpha, x,y);
;;;113 #endif
;;;114 GUI_UNLOCK();
;;;115 }
;;;116 }
00005c e8bd81fc POP {r2-r8,pc}
;;;117
ENDP
AREA ||i._WriteAlphaToActiveAt||, CODE, READONLY, ALIGN=2
_WriteAlphaToActiveAt PROC
;;;39 */
;;;40 static void _WriteAlphaToActiveAt(GUI_MEMDEV_Handle hMem, int Intens, int x, int y) {
000000 e92d4fff PUSH {r0-r11,lr}
000004 b083 SUB sp,sp,#0xc
;;;41 /* Make sure the memory handle is valid */
;;;42 if (hMem) {
000006 2800 CMP r0,#0
000008 d04c BEQ |L3.164|
;;;43 GUI_MEMDEV * pDev = GUI_MEMDEV_H2P(hMem);
00000a f7fffffe BL GUI_ALLOC_h2p
00000e 4681 MOV r9,r0
;;;44 GUI_USAGE_h hUsage = pDev->hUsage;
000010 f9b00018 LDRSH r0,[r0,#0x18]
;;;45 GUI_USAGE* pUsage;
;;;46 int YSize = pDev->YSize;
000014 f9b91006 LDRSH r1,[r9,#6]
;;;47 int yi;
;;;48 if (hUsage) {
000018 9102 STR r1,[sp,#8]
00001a 2800 CMP r0,#0
00001c d042 BEQ |L3.164|
;;;49 pUsage = GUI_USAGE_H2P(hUsage);
00001e f7fffffe BL GUI_ALLOC_h2p
000022 4682 MOV r10,r0
;;;50 for (yi = 0; yi < YSize; yi++) {
000024 2600 MOVS r6,#0
000026 e03a B |L3.158|
|L3.40|
;;;51 int xOff = 0;
000028 2000 MOVS r0,#0
;;;52 int XSize;
;;;53 XSize = GUI_USAGE_GetNextDirty(pUsage, &xOff, yi);
;;;54 /* Draw the partial line which needs to be drawn */
;;;55 for (; XSize; ) {
00002a 9001 STR r0,[sp,#4]
00002c e02d B |L3.138|
|L3.46|
;;;56 U8* pData;
;;;57 pData = (U8*)GUI_MEMDEV__XY2PTREx(pDev, xOff, yi);
00002e 4632 MOV r2,r6
000030 4648 MOV r0,r9
000032 9901 LDR r1,[sp,#4]
000034 f7fffffe BL GUI_MEMDEV__XY2PTREx
000038 4604 MOV r4,r0
;;;58 do {
;;;59 LCD_COLOR Color, BkColor;
;;;60 int xPos, yPos, Index;
;;;61 if (pDev->BitsPerPixel == 8) {
;;;62 Index = *pData++;
;;;63 } else {
;;;64 Index = *(U16*)pData;
;;;65 pData += 2;
;;;66 }
;;;67 Color = LCD_Index2Color(Index);
;;;68 xPos = xOff + x;
;;;69 yPos = yi +y;
00003a 9806 LDR r0,[sp,#0x18]
00003c eb160700 ADDS.W r7,r6,r0
|L3.64|
000040 f8d90010 LDR r0,[r9,#0x10] ;61
000044 2808 CMP r0,#8 ;61
000046 d102 BNE |L3.78|
000048 f8140b01 LDRB r0,[r4],#1 ;62
00004c e001 B |L3.82|
|L3.78|
00004e f8340b02 LDRH r0,[r4],#2 ;64
|L3.82|
000052 f7fffffe BL LCD_Index2Color
000056 4683 MOV r11,r0 ;67
000058 9905 LDR r1,[sp,#0x14] ;68
00005a 9801 LDR r0,[sp,#4] ;68
00005c eb000801 ADD r8,r0,r1 ;68
;;;70 BkColor = LCD_GetPixelColor(xPos, yPos);
000060 4639 MOV r1,r7
000062 4640 MOV r0,r8
000064 f7fffffe BL LCD_GetPixelColor
000068 4601 MOV r1,r0
;;;71 Color = LCD_MixColors256(Color, BkColor, Intens);
00006a 4658 MOV r0,r11
00006c 9a04 LDR r2,[sp,#0x10]
00006e f7fffffe BL LCD_MixColors256
;;;72 Index = LCD_Color2Index(Color);
000072 f7fffffe BL LCD_Color2Index
000076 4602 MOV r2,r0
;;;73 LCD_SetPixelIndex(xPos, yPos, Index);
000078 4639 MOV r1,r7
00007a 4640 MOV r0,r8
00007c f7fffffe BL LCD_SetPixelIndex
;;;74 xOff++;
000080 9801 LDR r0,[sp,#4]
000082 1c40 ADDS r0,r0,#1
;;;75 } while (--XSize);
000084 9001 STR r0,[sp,#4]
000086 1e6d SUBS r5,r5,#1
000088 d1da BNE |L3.64|
|L3.138|
;;;76 XSize = GUI_USAGE_GetNextDirty(pUsage, &xOff, yi);
00008a f8da0008 LDR r0,[r10,#8]
00008e 4632 MOV r2,r6
000090 6943 LDR r3,[r0,#0x14]
000092 a901 ADD r1,sp,#4
000094 4650 MOV r0,r10
000096 4798 BLX r3
000098 0005 MOVS r5,r0
00009a d1c8 BNE |L3.46|
00009c 1c76 ADDS r6,r6,#1 ;50
|L3.158|
00009e 9802 LDR r0,[sp,#8] ;50
0000a0 4286 CMP r6,r0 ;50
0000a2 dbc1 BLT |L3.40|
|L3.164|
;;;77 }
;;;78 }
;;;79 }
;;;80 }
;;;81 }
0000a4 b007 ADD sp,sp,#0x1c
0000a6 e8bd8ff0 POP {r4-r11,pc}
;;;82
ENDP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -