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

📄 gui2dlib.txt

📁 STM32F103ZET6+UCOSII+UCGUI源码
💻 TXT
📖 第 1 页 / 共 3 页
字号:
;;;489      GUI_LOCK();
;;;490      #if (GUI_WINSUPPORT)
;;;491        WM_ADDORG(x,y);
000002  4c0d              LDR      r4,|L10.56|
000004  6c22              LDR      r2,[r4,#0x40]  ; GUI_Context
000006  1815              ADDS     r5,r2,r0
000008  6c60              LDR      r0,[r4,#0x44]  ; GUI_Context
00000a  1846              ADDS     r6,r0,r1
;;;492        WM_ITERATE_START(NULL); {
00000c  2000              MOVS     r0,#0
00000e  f7fffffe          BL       WM__InitIVRSearch
000012  e009              B        |L10.40|
                  |L10.20|
000014  f9b41028          LDRSH    r1,[r4,#0x28]  ; GUI_Context
000018  f9b40026          LDRSH    r0,[r4,#0x26]  ; GUI_Context
00001c  4633              MOV      r3,r6
00001e  462a              MOV      r2,r5
000020  f7fffffe          BL       GL_DrawLine
;;;493      #endif
;;;494      GL_DrawLineToNM(x,y);
;;;495      #if (GUI_WINSUPPORT)
;;;496        } WM_ITERATE_END();
000024  f7fffffe          BL       WM__GetNextIVR
                  |L10.40|
000028  2800              CMP      r0,#0
00002a  d1f3              BNE      |L10.20|
;;;497      #endif
;;;498      GL_MoveTo(x,y);
00002c  4631              MOV      r1,r6
00002e  4628              MOV      r0,r5
000030  e8bd4070          POP      {r4-r6,lr}
000034  f7ffbffe          B.W      GL_MoveTo
;;;499      GUI_UNLOCK();
;;;500    }
;;;501    
                          ENDP

                  |L10.56|
                          DCD      GUI_Context

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

                  GUI_DrawPoint PROC
;;;675    */
;;;676    void GUI_DrawPoint(int x, int y) {
000000  b570              PUSH     {r4-r6,lr}
;;;677      GUI_LOCK();
;;;678      #if (GUI_WINSUPPORT)
;;;679        WM_ADDORG(x, y);
000002  4a09              LDR      r2,|L11.40|
000004  6c13              LDR      r3,[r2,#0x40]  ; GUI_Context
000006  181c              ADDS     r4,r3,r0
000008  6c50              LDR      r0,[r2,#0x44]  ; GUI_Context
00000a  1845              ADDS     r5,r0,r1
;;;680        WM_ITERATE_START(NULL); {
00000c  2000              MOVS     r0,#0
00000e  f7fffffe          BL       WM__InitIVRSearch
000012  e005              B        |L11.32|
                  |L11.20|
;;;681      #endif
;;;682      GL_DrawPoint(x, y);
000014  4629              MOV      r1,r5
000016  4620              MOV      r0,r4
000018  f7fffffe          BL       GL_DrawPoint
;;;683      #if (GUI_WINSUPPORT)
;;;684        } WM_ITERATE_END();
00001c  f7fffffe          BL       WM__GetNextIVR
                  |L11.32|
000020  2800              CMP      r0,#0
000022  d1f7              BNE      |L11.20|
;;;685      #endif
;;;686      GUI_UNLOCK();
;;;687    }
000024  bd70              POP      {r4-r6,pc}
;;;688    
                          ENDP

000026  0000              DCW      0x0000
                  |L11.40|
                          DCD      GUI_Context

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

                  GUI_DrawPolygon PROC
;;;420    */
;;;421    void GUI_DrawPolygon(const GUI_POINT* pPoints, int NumPoints, int x0, int y0) {
000000  e92d41f0          PUSH     {r4-r8,lr}
000004  4606              MOV      r6,r0
;;;422      GUI_LOCK();
;;;423      #if (GUI_WINSUPPORT)
;;;424        WM_ADDORG(x0,y0);
000006  480b              LDR      r0,|L12.52|
000008  460f              MOV      r7,r1                 ;421
00000a  6c01              LDR      r1,[r0,#0x40]  ; GUI_Context
00000c  6c40              LDR      r0,[r0,#0x44]  ; GUI_Context
00000e  188c              ADDS     r4,r1,r2
000010  18c5              ADDS     r5,r0,r3
;;;425        WM_ITERATE_START(NULL); {
000012  2000              MOVS     r0,#0
000014  f7fffffe          BL       WM__InitIVRSearch
000018  e007              B        |L12.42|
                  |L12.26|
;;;426      #endif
;;;427      GL_DrawPolygon (pPoints, NumPoints, x0, y0);
00001a  462b              MOV      r3,r5
00001c  4622              MOV      r2,r4
00001e  4639              MOV      r1,r7
000020  4630              MOV      r0,r6
000022  f7fffffe          BL       GL_DrawPolygon
;;;428      #if (GUI_WINSUPPORT)
;;;429        } WM_ITERATE_END();
000026  f7fffffe          BL       WM__GetNextIVR
                  |L12.42|
00002a  2800              CMP      r0,#0
00002c  d1f5              BNE      |L12.26|
;;;430      #endif
;;;431      GUI_UNLOCK();
;;;432    }
00002e  e8bd81f0          POP      {r4-r8,pc}
;;;433    
                          ENDP

000032  0000              DCW      0x0000
                  |L12.52|
                          DCD      GUI_Context

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

                  GUI_DrawRect PROC
;;;555    */
;;;556    void GUI_DrawRect(int x0, int y0, int x1, int y1) {
000000  e92d41fc          PUSH     {r2-r8,lr}
;;;557      #if (GUI_WINSUPPORT)
;;;558        int Off;
;;;559        GUI_RECT r;
;;;560      #endif
;;;561      GUI_LOCK();
;;;562      #if (GUI_WINSUPPORT)
;;;563        Off = GUI_Context.PenSize -1;
000004  4c1c              LDR      r4,|L13.120|
;;;564        WM_ADDORG(x0,y0);
000006  6c25              LDR      r5,[r4,#0x40]  ; GUI_Context
000008  f894c014          LDRB     r12,[r4,#0x14]        ;563  ; GUI_Context
00000c  182e              ADDS     r6,r5,r0
00000e  6c60              LDR      r0,[r4,#0x44]  ; GUI_Context
;;;565        WM_ADDORG(x1,y1);
000010  18af              ADDS     r7,r5,r2
000012  f1ac0c01          SUB      r12,r12,#1            ;563
000016  1844              ADDS     r4,r0,r1              ;564
000018  18c5              ADDS     r5,r0,r3
;;;566        r.x0 = x0 - Off;
00001a  eba6000c          SUB      r0,r6,r12
00001e  f8ad0000          STRH     r0,[sp,#0]
;;;567        r.x1 = x1 + Off;
000022  eb07000c          ADD      r0,r7,r12
000026  f8ad0004          STRH     r0,[sp,#4]
;;;568        r.y0 = y0 - Off;
00002a  eba4000c          SUB      r0,r4,r12
00002e  f8ad0002          STRH     r0,[sp,#2]
;;;569        r.y1 = y1 + Off;
000032  eb05000c          ADD      r0,r5,r12
000036  f8ad0006          STRH     r0,[sp,#6]
;;;570        WM_ITERATE_START(&r); {
00003a  4668              MOV      r0,sp
00003c  f7fffffe          BL       WM__InitIVRSearch
000040  e015              B        |L13.110|
                  |L13.66|
000042  463a              MOV      r2,r7
000044  4621              MOV      r1,r4
000046  4630              MOV      r0,r6
000048  f7fffffe          BL       LCD_DrawHLine
00004c  463a              MOV      r2,r7
00004e  4629              MOV      r1,r5
000050  4630              MOV      r0,r6
000052  f7fffffe          BL       LCD_DrawHLine
000056  1e6a              SUBS     r2,r5,#1
000058  1c61              ADDS     r1,r4,#1
00005a  4630              MOV      r0,r6
00005c  f7fffffe          BL       LCD_DrawVLine
000060  1e6a              SUBS     r2,r5,#1
000062  1c61              ADDS     r1,r4,#1
000064  4638              MOV      r0,r7
000066  f7fffffe          BL       LCD_DrawVLine
;;;571      #endif
;;;572      _DrawRect(x0, y0, x1, y1);
;;;573      #if (GUI_WINSUPPORT)
;;;574        } WM_ITERATE_END();
00006a  f7fffffe          BL       WM__GetNextIVR
                  |L13.110|
00006e  2800              CMP      r0,#0
000070  d1e7              BNE      |L13.66|
;;;575      #endif
;;;576      GUI_UNLOCK();
;;;577    }
000072  e8bd81fc          POP      {r2-r8,pc}
;;;578    
                          ENDP

000076  0000              DCW      0x0000
                  |L13.120|
                          DCD      GUI_Context

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

                  GUI_MoveRel PROC
;;;505    */
;;;506    void GUI_MoveRel(int dx, int dy) { /*tbd: GL_LinePos. */
000000  4a03              LDR      r2,|L14.16|
;;;507      GUI_LOCK();
;;;508      GUI_Context.DrawPosX += dx;
000002  8cd3              LDRH     r3,[r2,#0x26]  ; GUI_Context
000004  4418              ADD      r0,r0,r3
000006  84d0              STRH     r0,[r2,#0x26]
;;;509      GUI_Context.DrawPosY += dy;
000008  8d10              LDRH     r0,[r2,#0x28]  ; GUI_Context
00000a  4408              ADD      r0,r0,r1
00000c  8510              STRH     r0,[r2,#0x28]
;;;510      GUI_UNLOCK();
;;;511    }
00000e  4770              BX       lr
;;;512    
                          ENDP

                  |L14.16|
                          DCD      GUI_Context

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

                  GUI_MoveTo PROC
;;;525    */
;;;526    void GUI_MoveTo(int x, int y) {
000000  4a03              LDR      r2,|L15.16|
;;;527      GUI_LOCK();
;;;528      #if (GUI_WINSUPPORT)
;;;529        WM_ADDORG(x,y);
000002  6c13              LDR      r3,[r2,#0x40]  ; GUI_Context
000004  6c52              LDR      r2,[r2,#0x44]  ; GUI_Context
000006  4418              ADD      r0,r0,r3
000008  4411              ADD      r1,r1,r2
;;;530      #endif
;;;531      GL_MoveTo(x,y);
00000a  f7ffbffe          B.W      GL_MoveTo
;;;532      GUI_UNLOCK();
;;;533    }
;;;534    
                          ENDP

00000e  0000              DCW      0x0000
                  |L15.16|
                          DCD      GUI_Context

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

                  GUI_cos PROC
;;;146    */
;;;147    int GUI_cos(int angle) {
000000  f5006080          ADD      r0,r0,#0x400
;;;148      return GUI_sin(angle+GUI_90DEG);
000004  f7ffbffe          B.W      GUI_sin
;;;149    }
;;;150    
                          ENDP


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

                  GUI_sin PROC
;;;105    */
;;;106    int GUI_sin(int angle) {
000000  b510              PUSH     {r4,lr}
;;;107      char IsNeg =0;
000002  2200              MOVS     r2,#0
;;;108      int i;
;;;109    	U16 Faktor;
;;;110      U32 t;
;;;111      angle &= ((1<<12)-1);  /* reduce to 0-360 degrees */
000004  f3c0000b          UBFX     r0,r0,#0,#12
;;;112      if (angle> 2* GUI_90DEG) {
000008  f5b06f00          CMP      r0,#0x800
00000c  dd02              BLE      |L17.20|
;;;113        angle -= 2* GUI_90DEG;
00000e  f5a06000          SUB      r0,r0,#0x800
;;;114        IsNeg =1;
000012  2201              MOVS     r2,#1
                  |L17.20|
;;;115      }
;;;116      if (angle> GUI_90DEG) {  /* between 90-180 */
000014  f5b06f80          CMP      r0,#0x400
000018  dd01              BLE      |L17.30|
;;;117        angle = 2*GUI_90DEG-angle;   /* use sine symetry */
00001a  f5c06000          RSB      r0,r0,#0x800
                  |L17.30|
;;;118      }
;;;119      /* Now angle is reduced to 0

⌨️ 快捷键说明

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