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

📄 lcd_rotate180.txt

📁 STM32F103ZET6+UCOSII+UCGUI源码
💻 TXT
📖 第 1 页 / 共 2 页
字号:
;;;198      			pPixel += (Diff >> 3); x0 += (Diff >> 3) << 3; Diff &= 7;
00009a  f0250107          BIC      r1,r5,#7
00009e  eb0606e5          ADD      r6,r6,r5,ASR #3
0000a2  4408              ADD      r0,r0,r1
0000a4  f0050507          AND      r5,r5,#7
0000a8  9007              STR      r0,[sp,#0x1c]
                  |L2.170|
;;;199    				break;
;;;200    			}
;;;201        }
;;;202        if (xsize <= 0) {
0000aa  9809              LDR      r0,[sp,#0x24]
0000ac  2800              CMP      r0,#0
0000ae  dd15              BLE      |L2.220|
0000b0  e9dd8707          LDRD     r8,r7,[sp,#0x1c]
0000b4  2400              MOVS     r4,#0
0000b6  e00f              B        |L2.216|
                  |L2.184|
0000b8  f1bb0f01          CMP      r11,#1
0000bc  d109              BNE      |L2.210|
0000be  9b19              LDR      r3,[sp,#0x64]
0000c0  9a09              LDR      r2,[sp,#0x24]
0000c2  e9cd2300          STRD     r2,r3,[sp,#0]
0000c6  1b39              SUBS     r1,r7,r4
0000c8  462b              MOV      r3,r5
0000ca  4632              MOV      r2,r6
0000cc  4640              MOV      r0,r8
0000ce  f7fffffe          BL       _DrawBitLine1BPP
                  |L2.210|
0000d2  9817              LDR      r0,[sp,#0x5c]
0000d4  1c64              ADDS     r4,r4,#1
0000d6  4406              ADD      r6,r6,r0
                  |L2.216|
0000d8  4554              CMP      r4,r10
0000da  dbed              BLT      |L2.184|
                  |L2.220|
;;;203    		  return;
;;;204        }
;;;205        _DrawBitmap(x0, y0, xsize, ysize, BitsPerPixel, BytesPerLine, pPixel, Diff, pTrans);
;;;206      } else {
;;;207        /* Handle BITMAP with magnification */
;;;208        int x, y;
;;;209        int yi;
;;;210        int Shift = 8 - BitsPerPixel;
;;;211        for (y = y0, yi = 0; yi < ysize; yi++, y -= yMul, pPixel += BytesPerLine) {
;;;212          int yMax = y + yMul - 1;
;;;213          /* Draw if within clip area (Optimization ... "if" is not required !) */
;;;214          if ((yMax >= GUI_Context.ClipRect.y0) && (y <= GUI_Context.ClipRect.y1)) {
;;;215            int BitsLeft = 0;
;;;216            int xi;
;;;217            const U8 GUI_UNI_PTR * pDataLine = pPixel;
;;;218            for (x = x0, xi = 0; xi < xsize; xi++, x -= xMul) {
;;;219              U8  Index;
;;;220              if (!BitsLeft) {
;;;221                Data = *pDataLine++;
;;;222                BitsLeft =8;
;;;223              }
;;;224              Index = Data >> Shift;
;;;225              Data    <<= BitsPerPixel;
;;;226              BitsLeft -= BitsPerPixel;
;;;227              if (Index || ((GUI_Context.DrawMode & LCD_DRAWMODE_TRANS) == 0)) {
;;;228                LCD_PIXELINDEX OldColor = LCD_COLORINDEX;
;;;229                if (pTrans) {
;;;230                  LCD_COLORINDEX = *(pTrans + Index);
;;;231                } else {
;;;232                  LCD_COLORINDEX = Index;
;;;233                }
;;;234                LCD_FillRect(x - xMul + 1, y, x, yMax);
;;;235                LCD_COLORINDEX = OldColor;
;;;236              }
;;;237            }
;;;238          }
;;;239        }
;;;240      }
;;;241    }
0000dc  b00b              ADD      sp,sp,#0x2c
0000de  e8bd8ff0          POP      {r4-r11,pc}
                  |L2.226|
0000e2  f1cb0008          RSB      r0,r11,#8             ;210
0000e6  9002              STR      r0,[sp,#8]            ;211
0000e8  9808              LDR      r0,[sp,#0x20]         ;211
0000ea  9004              STR      r0,[sp,#0x10]         ;211
0000ec  2000              MOVS     r0,#0                 ;211
0000ee  9003              STR      r0,[sp,#0xc]          ;211
0000f0  e04c              B        |L2.396|
                  |L2.242|
0000f2  9915              LDR      r1,[sp,#0x54]         ;212
0000f4  9804              LDR      r0,[sp,#0x10]         ;212
0000f6  4408              ADD      r0,r0,r1              ;212
0000f8  1e40              SUBS     r0,r0,#1              ;212
0000fa  4926              LDR      r1,|L2.404|
0000fc  9001              STR      r0,[sp,#4]            ;214
0000fe  f9b12006          LDRSH    r2,[r1,#6]            ;214  ; GUI_Context
000102  4282              CMP      r2,r0                 ;214
000104  dc38              BGT      |L2.376|
000106  4608              MOV      r0,r1                 ;214
000108  f9b0000a          LDRSH    r0,[r0,#0xa]          ;214  ; GUI_Context
00010c  9904              LDR      r1,[sp,#0x10]         ;214
00010e  4288              CMP      r0,r1                 ;214
000110  db32              BLT      |L2.376|
000112  2400              MOVS     r4,#0                 ;215
000114  46b1              MOV      r9,r6                 ;217
000116  4627              MOV      r7,r4                 ;218
000118  f8dd801c          LDR      r8,[sp,#0x1c]         ;218
00011c  e029              B        |L2.370|
                  |L2.286|
00011e  b914              CBNZ     r4,|L2.294|
000120  f8195b01          LDRB     r5,[r9],#1            ;221
000124  2408              MOVS     r4,#8                 ;222
                  |L2.294|
000126  9902              LDR      r1,[sp,#8]            ;224
000128  eba4040b          SUB      r4,r4,r11             ;226
00012c  fa35f001          LSRS     r0,r5,r1              ;224
000130  fa05f50b          LSL      r5,r5,r11             ;225
000134  b2ed              UXTB     r5,r5                 ;225
000136  d103              BNE      |L2.320|
000138  4916              LDR      r1,|L2.404|
00013a  7b09              LDRB     r1,[r1,#0xc]          ;227  ; GUI_Context
00013c  0789              LSLS     r1,r1,#30             ;227
00013e  d414              BMI      |L2.362|
                  |L2.320|
000140  4914              LDR      r1,|L2.404|
000142  9a19              LDR      r2,[sp,#0x64]         ;228
000144  8849              LDRH     r1,[r1,#2]            ;228  ; GUI_Context
000146  9100              STR      r1,[sp,#0]            ;229
000148  b10a              CBZ      r2,|L2.334|
00014a  f8320010          LDRH     r0,[r2,r0,LSL #1]     ;230
                  |L2.334|
00014e  4911              LDR      r1,|L2.404|
000150  4642              MOV      r2,r8                 ;234
000152  8048              STRH     r0,[r1,#2]            ;232
000154  9914              LDR      r1,[sp,#0x50]         ;234
000156  9b01              LDR      r3,[sp,#4]            ;234
000158  eba80001          SUB      r0,r8,r1              ;234
00015c  1c40              ADDS     r0,r0,#1              ;234
00015e  9904              LDR      r1,[sp,#0x10]         ;234
000160  f7fffffe          BL       LCD_FillRect
000164  490b              LDR      r1,|L2.404|
000166  9800              LDR      r0,[sp,#0]            ;235
000168  8048              STRH     r0,[r1,#2]            ;235
                  |L2.362|
00016a  9914              LDR      r1,[sp,#0x50]         ;218
00016c  1c7f              ADDS     r7,r7,#1              ;218
00016e  eba80801          SUB      r8,r8,r1              ;218
                  |L2.370|
000172  9809              LDR      r0,[sp,#0x24]         ;218
000174  4287              CMP      r7,r0                 ;218
000176  dbd2              BLT      |L2.286|
                  |L2.376|
000178  9803              LDR      r0,[sp,#0xc]          ;211
00017a  9915              LDR      r1,[sp,#0x54]         ;211
00017c  1c40              ADDS     r0,r0,#1              ;211
00017e  9003              STR      r0,[sp,#0xc]          ;211
000180  9804              LDR      r0,[sp,#0x10]         ;211
000182  1a40              SUBS     r0,r0,r1              ;211
000184  9004              STR      r0,[sp,#0x10]         ;211
000186  9817              LDR      r0,[sp,#0x5c]         ;211
000188  4406              ADD      r6,r6,r0              ;211
00018a  9803              LDR      r0,[sp,#0xc]          ;211
                  |L2.396|
00018c  4550              CMP      r0,r10                ;211
00018e  dbb0              BLT      |L2.242|
000190  e7a4              B        |L2.220|
;;;242    
                          ENDP

000192  0000              DCW      0x0000
                  |L2.404|
                          DCD      GUI_Context

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

                  _Rect2TextRect PROC
;;;112    */
;;;113    static void _Rect2TextRect(GUI_RECT * pRect) {
000000  4770              BX       lr
;;;114      GUI_USE_PARA(pRect);
;;;115      /* nothing to do in case of rotating text by 180 degrees */
;;;116    }
;;;117    
                          ENDP


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

                  _TransformPoint180 PROC
;;;126    */
;;;127    static void _TransformPoint180(int * pXPos, int * pYPos) {
000000  e92d41fc          PUSH     {r2-r8,lr}
000004  460e              MOV      r6,r1
000006  4605              MOV      r5,r0
;;;128      GUI_RECT ClientRect = {0};
000008  2100              MOVS     r1,#0
00000a  4668              MOV      r0,sp
00000c  460a              MOV      r2,r1
00000e  c006              STM      r0!,{r1,r2}
;;;129      int xPos, yPos, xNumPixel, yNumPixel;
;;;130      /* Get the client rectangle */
;;;131      #if GUI_WINSUPPORT
;;;132        WM_GetWindowRect(&ClientRect);
000010  4668              MOV      r0,sp
000012  f7fffffe          BL       WM_GetWindowRect
;;;133      #else
;;;134        GUI_GetClientRect(&ClientRect);
;;;135      #endif
;;;136      xNumPixel = LCD_GetXSize() - 1;
000016  f7fffffe          BL       LCD_GetXSize
00001a  1e44              SUBS     r4,r0,#1
;;;137      yNumPixel = LCD_GetYSize() - 1;
00001c  f7fffffe          BL       LCD_GetYSize
;;;138      if (ClientRect.x1 > xNumPixel) {
000020  f9bd1004          LDRSH    r1,[sp,#4]
000024  1e40              SUBS     r0,r0,#1              ;137
000026  42a1              CMP      r1,r4
000028  dd01              BLE      |L4.46|
;;;139        ClientRect.x1 = xNumPixel;
00002a  f8ad4004          STRH     r4,[sp,#4]
                  |L4.46|
;;;140      }
;;;141      if (ClientRect.y1 > yNumPixel) {
00002e  f9bd1006          LDRSH    r1,[sp,#6]
000032  4281              CMP      r1,r0
000034  dd01              BLE      |L4.58|
;;;142        ClientRect.y1 = yNumPixel;
000036  f8ad0006          STRH     r0,[sp,#6]
                  |L4.58|
;;;143      }
;;;144      /* Save old positions */
;;;145      xPos = *pXPos;
;;;146      yPos = *pYPos;
;;;147      /* Handle rotation of text rectangle */
;;;148      *pXPos = ClientRect.x0 + GUI_RectDispString.x1 - (xPos - GUI_RectDispString.x0);
00003a  480c              LDR      r0,|L4.108|
00003c  6829              LDR      r1,[r5,#0]            ;146
00003e  f9bd3000          LDRSH    r3,[sp,#0]
000042  f9b07004          LDRSH    r7,[r0,#4]  ; GUI_RectDispString
000046  f9b04000          LDRSH    r4,[r0,#0]  ; GUI_RectDispString
00004a  443b              ADD      r3,r3,r7
00004c  1b09              SUBS     r1,r1,r4
00004e  1a59              SUBS     r1,r3,r1
000050  6832              LDR      r2,[r6,#0]
;;;149      *pYPos = ClientRect.y0 + GUI_RectDispString.y1 - (yPos - GUI_RectDispString.y0);
000052  6029              STR      r1,[r5,#0]
000054  f9b03006          LDRSH    r3,[r0,#6]  ; GUI_RectDispString
000058  f9bd1002          LDRSH    r1,[sp,#2]
00005c  f9b00002          LDRSH    r0,[r0,#2]  ; GUI_RectDispString
000060  4419              ADD      r1,r1,r3
000062  1a10              SUBS     r0,r2,r0
000064  1a08              SUBS     r0,r1,r0
;;;150    }
000066  6030              STR      r0,[r6,#0]
000068  e8bd81fc          POP      {r2-r8,pc}
;;;151    
                          ENDP

                  |L4.108|
                          DCD      GUI_RectDispString

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

                  LCD_APIList180
                          DCD      _DrawBitmap180
                          DCD      _Rect2TextRect

⌨️ 快捷键说明

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