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

📄 lcd_rotatecw.txt

📁 STM32F103ZET6+UCOSII+UCGUI源码
💻 TXT
📖 第 1 页 / 共 2 页
字号:
                  |L2.176|
;;;208        }
;;;209        if (xsize <= 0) {
0000b0  980b              LDR      r0,[sp,#0x2c]
0000b2  2800              CMP      r0,#0
0000b4  dd16              BLE      |L2.228|
0000b6  e9dd7909          LDRD     r7,r9,[sp,#0x24]
;;;210    		  return;
;;;211        }
;;;212        _DrawBitmap(x0, y0, xsize, ysize, BitsPerPixel, BytesPerLine, pPixel, Diff, pTrans);
0000ba  4646              MOV      r6,r8
0000bc  2400              MOVS     r4,#0
0000be  e00f              B        |L2.224|
                  |L2.192|
0000c0  f1ba0f01          CMP      r10,#1
0000c4  d109              BNE      |L2.218|
0000c6  9b1b              LDR      r3,[sp,#0x6c]
0000c8  9a0b              LDR      r2,[sp,#0x2c]
0000ca  e9cd2300          STRD     r2,r3,[sp,#0]
0000ce  1b38              SUBS     r0,r7,r4
0000d0  462b              MOV      r3,r5
0000d2  4632              MOV      r2,r6
0000d4  4649              MOV      r1,r9
0000d6  f7fffffe          BL       _DrawBitLine1BPP
                  |L2.218|
0000da  9819              LDR      r0,[sp,#0x64]
0000dc  1c64              ADDS     r4,r4,#1
0000de  4406              ADD      r6,r6,r0
                  |L2.224|
0000e0  455c              CMP      r4,r11
0000e2  dbed              BLT      |L2.192|
                  |L2.228|
;;;213      } else {
;;;214        /* Handle BITMAP with magnification */
;;;215        int x, y, xi, yi;
;;;216        int Shift = 8 - BitsPerPixel;
;;;217        for (x = x0, xi = 0; xi < ysize; xi++, x -= yMul, pPixel += BytesPerLine) {
;;;218          int xMax = x - yMul + 1;
;;;219          if ((xMax >= GUI_Context.ClipRect.x0) && (x <= GUI_Context.ClipRect.x1)) {
;;;220            int BitsLeft = 0;
;;;221            const U8 GUI_UNI_PTR * pDataLine = pPixel;
;;;222            for (y = y0, yi = 0; yi < xsize; yi++, y += xMul) {
;;;223              U8  Index;
;;;224              if (!BitsLeft) {
;;;225                Data = *pDataLine++;
;;;226                BitsLeft =8;
;;;227              }
;;;228              Index = Data >> Shift;
;;;229              Data    <<= BitsPerPixel;
;;;230              BitsLeft -= BitsPerPixel;
;;;231              if (Index || ((GUI_Context.DrawMode & LCD_DRAWMODE_TRANS) == 0)) {
;;;232                LCD_PIXELINDEX OldColor = LCD_COLORINDEX;
;;;233                if (pTrans) {
;;;234                  LCD_COLORINDEX = *(pTrans + Index);
;;;235                } else {
;;;236                  LCD_COLORINDEX = Index;
;;;237                }
;;;238                LCD_FillRect(xMax, y, x, y + xMul - 1);
;;;239                LCD_COLORINDEX = OldColor;
;;;240              }
;;;241            }
;;;242          }
;;;243        }
;;;244      }
;;;245    }
0000e4  b00d              ADD      sp,sp,#0x34
0000e6  e8bd8ff0          POP      {r4-r11,pc}
                  |L2.234|
0000ea  f1ca0008          RSB      r0,r10,#8             ;216
0000ee  9003              STR      r0,[sp,#0xc]          ;217
0000f0  9809              LDR      r0,[sp,#0x24]         ;217
0000f2  9005              STR      r0,[sp,#0x14]         ;217
0000f4  2000              MOVS     r0,#0                 ;217
0000f6  9004              STR      r0,[sp,#0x10]         ;217
0000f8  e04a              B        |L2.400|
                  |L2.250|
0000fa  9917              LDR      r1,[sp,#0x5c]         ;218
0000fc  9805              LDR      r0,[sp,#0x14]         ;218
0000fe  4a26              LDR      r2,|L2.408|
000100  1a40              SUBS     r0,r0,r1              ;218
000102  9008              STR      r0,[sp,#0x20]         ;218
000104  1c40              ADDS     r0,r0,#1              ;218
000106  9002              STR      r0,[sp,#8]            ;219
000108  f9b21004          LDRSH    r1,[r2,#4]            ;219  ; GUI_Context
00010c  4281              CMP      r1,r0                 ;219
00010e  dc37              BGT      |L2.384|
000110  4610              MOV      r0,r2                 ;219
000112  f9b00008          LDRSH    r0,[r0,#8]            ;219  ; GUI_Context
000116  9905              LDR      r1,[sp,#0x14]         ;219
000118  4288              CMP      r0,r1                 ;219
00011a  db31              BLT      |L2.384|
00011c  2400              MOVS     r4,#0                 ;220
00011e  4647              MOV      r7,r8                 ;221
000120  4626              MOV      r6,r4                 ;222
000122  f8dd9028          LDR      r9,[sp,#0x28]         ;222
000126  e028              B        |L2.378|
                  |L2.296|
000128  b914              CBNZ     r4,|L2.304|
00012a  f8175b01          LDRB     r5,[r7],#1            ;225
00012e  2408              MOVS     r4,#8                 ;226
                  |L2.304|
000130  9903              LDR      r1,[sp,#0xc]          ;228
000132  eba4040a          SUB      r4,r4,r10             ;230
000136  fa35f001          LSRS     r0,r5,r1              ;228
00013a  fa05f50a          LSL      r5,r5,r10             ;229
00013e  b2ed              UXTB     r5,r5                 ;229
000140  d103              BNE      |L2.330|
000142  4915              LDR      r1,|L2.408|
000144  7b09              LDRB     r1,[r1,#0xc]          ;231  ; GUI_Context
000146  0789              LSLS     r1,r1,#30             ;231
000148  d414              BMI      |L2.372|
                  |L2.330|
00014a  4913              LDR      r1,|L2.408|
00014c  9a1b              LDR      r2,[sp,#0x6c]         ;232
00014e  8849              LDRH     r1,[r1,#2]            ;232  ; GUI_Context
000150  9101              STR      r1,[sp,#4]            ;233
000152  b10a              CBZ      r2,|L2.344|
000154  f8320010          LDRH     r0,[r2,r0,LSL #1]     ;234
                  |L2.344|
000158  490f              LDR      r1,|L2.408|
00015a  8048              STRH     r0,[r1,#2]            ;236
00015c  9916              LDR      r1,[sp,#0x58]         ;238
00015e  9a05              LDR      r2,[sp,#0x14]         ;238
000160  eb090301          ADD      r3,r9,r1              ;238
000164  1e5b              SUBS     r3,r3,#1              ;238
000166  4649              MOV      r1,r9                 ;238
000168  9802              LDR      r0,[sp,#8]            ;238
00016a  f7fffffe          BL       LCD_FillRect
00016e  490a              LDR      r1,|L2.408|
000170  9801              LDR      r0,[sp,#4]            ;239
000172  8048              STRH     r0,[r1,#2]            ;239
                  |L2.372|
000174  9916              LDR      r1,[sp,#0x58]         ;222
000176  1c76              ADDS     r6,r6,#1              ;222
000178  4489              ADD      r9,r9,r1              ;222
                  |L2.378|
00017a  980b              LDR      r0,[sp,#0x2c]         ;222
00017c  4286              CMP      r6,r0                 ;222
00017e  dbd3              BLT      |L2.296|
                  |L2.384|
000180  9804              LDR      r0,[sp,#0x10]         ;217
000182  1c40              ADDS     r0,r0,#1              ;217
000184  9004              STR      r0,[sp,#0x10]         ;217
000186  9808              LDR      r0,[sp,#0x20]         ;217
000188  9005              STR      r0,[sp,#0x14]         ;217
00018a  9919              LDR      r1,[sp,#0x64]         ;217
00018c  9804              LDR      r0,[sp,#0x10]         ;217
00018e  4488              ADD      r8,r8,r1              ;217
                  |L2.400|
000190  4558              CMP      r0,r11                ;217
000192  dbb2              BLT      |L2.250|
000194  e7a6              B        |L2.228|
;;;246    
                          ENDP

000196  0000              DCW      0x0000
                  |L2.408|
                          DCD      GUI_Context

                          AREA ||i._Rect2TextRect||, CODE, READONLY, ALIGN=1

                  _Rect2TextRect PROC
;;;113    */
;;;114    static void _Rect2TextRect(GUI_RECT * pRect) {
000000  b510              PUSH     {r4,lr}
;;;115      int x1, y1;
;;;116      x1 = pRect->x1;
;;;117      y1 = pRect->y1;
000002  88c3              LDRH     r3,[r0,#6]
;;;118      pRect->x1 = pRect->x0 + (y1 - pRect->y0);
000004  8842              LDRH     r2,[r0,#2]
000006  8801              LDRH     r1,[r0,#0]
000008  1a9b              SUBS     r3,r3,r2
00000a  8884              LDRH     r4,[r0,#4]            ;116
00000c  440b              ADD      r3,r3,r1
;;;119      pRect->y1 = pRect->y0 + (x1 - pRect->x0);
00000e  1a61              SUBS     r1,r4,r1
000010  8083              STRH     r3,[r0,#4]            ;118
000012  4411              ADD      r1,r1,r2
000014  80c1              STRH     r1,[r0,#6]
;;;120    }
000016  bd10              POP      {r4,pc}
;;;121    
                          ENDP


                          AREA ||i._TransformPointCW||, CODE, READONLY, ALIGN=2

                  _TransformPointCW PROC
;;;130    */
;;;131    static void _TransformPointCW(int * pXPos, int * pYPos) {
000000  b57c              PUSH     {r2-r6,lr}
000002  460d              MOV      r5,r1
000004  4604              MOV      r4,r0
;;;132      GUI_RECT ClientRect = {0};
000006  2100              MOVS     r1,#0
000008  4668              MOV      r0,sp
00000a  460a              MOV      r2,r1
00000c  c006              STM      r0!,{r1,r2}
;;;133      int xPos, yPos, xNumPixel, yNumPixel;
;;;134      /* Get the client rectangle */
;;;135      #if GUI_WINSUPPORT
;;;136        WM_GetWindowRect(&ClientRect);
00000e  4668              MOV      r0,sp
000010  f7fffffe          BL       WM_GetWindowRect
;;;137      #else
;;;138        GUI_GetClientRect(&ClientRect);
;;;139      #endif
;;;140      xNumPixel = LCD_GetXSize() - 1;
000014  f7fffffe          BL       LCD_GetXSize
000018  1e46              SUBS     r6,r0,#1
;;;141      yNumPixel = LCD_GetYSize() - 1;
00001a  f7fffffe          BL       LCD_GetYSize
;;;142      if (ClientRect.x1 > xNumPixel) {
00001e  f9bd2004          LDRSH    r2,[sp,#4]
000022  1e41              SUBS     r1,r0,#1              ;141
000024  42b2              CMP      r2,r6
000026  dd01              BLE      |L4.44|
;;;143        ClientRect.x1 = xNumPixel;
000028  f8ad6004          STRH     r6,[sp,#4]
                  |L4.44|
;;;144      }
;;;145      if (ClientRect.y1 > yNumPixel) {
00002c  f9bd0006          LDRSH    r0,[sp,#6]
000030  4288              CMP      r0,r1
000032  dd01              BLE      |L4.56|
;;;146        ClientRect.y1 = yNumPixel;
000034  f8ad1006          STRH     r1,[sp,#6]
                  |L4.56|
;;;147      }
;;;148      /* Save old positions */
;;;149      xPos = *pXPos;
;;;150      yPos = *pYPos;
;;;151      /* Rotate and add window origin */
;;;152      *pXPos = ClientRect.x0 - yPos;
000038  f9bd2000          LDRSH    r2,[sp,#0]
00003c  6829              LDR      r1,[r5,#0]
00003e  6820              LDR      r0,[r4,#0]            ;150
000040  1a51              SUBS     r1,r2,r1
;;;153      *pYPos = ClientRect.y0 + xPos;
000042  6021              STR      r1,[r4,#0]
000044  f9bd1002          LDRSH    r1,[sp,#2]
000048  4408              ADD      r0,r0,r1
;;;154      /* Handle rotation of text rectangle */
;;;155      *pXPos = *pXPos + GUI_RectDispString.x1 + GUI_RectDispString.y0;
00004a  6028              STR      r0,[r5,#0]
00004c  4808              LDR      r0,|L4.112|
00004e  6821              LDR      r1,[r4,#0]
000050  f9b03004          LDRSH    r3,[r0,#4]  ; GUI_RectDispString
000054  f9b02002          LDRSH    r2,[r0,#2]  ; GUI_RectDispString
000058  4419              ADD      r1,r1,r3
00005a  4411              ADD      r1,r1,r2
;;;156      *pYPos = *pYPos + GUI_RectDispString.y0 - GUI_RectDispString.x0;
00005c  6021              STR      r1,[r4,#0]
00005e  f9b02002          LDRSH    r2,[r0,#2]  ; GUI_RectDispString
000062  6829              LDR      r1,[r5,#0]
000064  f9b00000          LDRSH    r0,[r0,#0]  ; GUI_RectDispString
000068  4411              ADD      r1,r1,r2
00006a  1a08              SUBS     r0,r1,r0
;;;157    }
00006c  6028              STR      r0,[r5,#0]
00006e  bd7c              POP      {r2-r6,pc}
;;;158    
                          ENDP

                  |L4.112|
                          DCD      GUI_RectDispString

                          AREA ||.data||, DATA, ALIGN=2

                  LCD_APIListCW
                          DCD      _DrawBitmapCW
                          DCD      _Rect2TextRect

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -