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

📄 ui_slider.lst

📁 MP3 整个 SDK
💻 LST
📖 第 1 页 / 共 3 页
字号:
##############################################################################
#                                                                            #
# IAR Z80/64180 C-Compiler V4.04B/WIN                                        #
# Front End V4.20N                                       25/Dec/106  16:59:00 #
# Global Optimizer V1.05D                                                    #
#                                                                            #
#       Target option =  Z80                                                 #
#       Memory model  =  banked                                              #
#       Source file   =  d:\case_i_d90f\ap\common\ui_slider.c                #
#       List file     =  d:\case_i_d90f\ap\ap_amv\list\ui_slider.lst         #
#       Object file   =  d:\case_i_d90f\ap\ap_amv\obj\ui_slider.r01          #
#       ASM file      =  d:\case_i_d90f\ap\ap_amv\list\ui_slider.s01         #
#       Command line  =  -v0 -mb -OD:\case_i_d90f\ap\ap_amv\Obj\ -e -K -w    #
#                        -gA -s9 -RCODE -r0 -DNAPDEBUG -DAMV_JPG_TXT         #
#                        -LD:\case_i_d90f\ap\ap_amv\List\ -q -t8             #
#                        -AD:\case_i_d90f\ap\ap_amv\List\                    #
#                        -ND:\case_i_d90f\ap\ap_amv\List\ -X                 #
#                        -Id:\sdk_i_90f\inc\ -Id:\case_i_d90f\inc\           #
#                        D:\CASE_I_D90F\AP\COMMON\ui_slider.c                #
#                                                                            #
#                                             (c) Copyright IAR Systems 1996 #
##############################################################################

   \   0000                    NAME    ui_slider(17)
   \   0000                    RSEG    COM_CTRL(0)
   \   0000                    RSEG    CONST(0)
   \   0000                    EXTERN  ResShowMultiString
   \   0000                    EXTERN  ResShowPic
   \   0000                    EXTERN  SetPenColor
   \   0000                    EXTERN  SetTextOutMode
   \   0000                    EXTERN  ap_get_message
   \   0000                    EXTERN  ap_handle_hotkey
   \   0000                    EXTERN  file_name
   \   0000                    EXTERN  main_ResShowPic
   \   0000                    PUBLIC  slider_atoi4
   \   0000                    EXTERN  ui_auto_select
   \   0000                    PUBLIC  ui_slider
   \   0000                    EXTERN  ?CLZ80B_4_04_L00
   \   0000                    EXTERN  ?SS_DIV_L02
   \   0000                    EXTERN  ?SS_MOD_L02
   \   0000                    EXTERN  ?S_MUL_L02
   \   0000                    EXTERN  ?C_V_SWITCH_L06
   \   0000                    EXTERN  ?BANK_CALL_DIRECT_L08
   \   0000                    EXTERN  ?BANK_FAST_LEAVE_L08
   \   0000                    EXTERN  ?STRLEN_L11
   \   0000                    RSEG    COM_CTRL
   \   0000            slider_atoi4:
      1          /*
      2          *******************************************************************************
      3          *                ACTOS AP
      4          *        ap common lib, slider control file 
      5          *
      6          *        (c) Copyright, Actions Co,Ld.                             
      7          *             All Right Reserved                          
      8          *
      9          *  $Id: ui_slider.c,v 1.1.1.1 2006/05/22 03:23:59 selina Exp $
     10          *******************************************************************************
     11          */ 
     12          #pragma codeseg(COM_CTRL)
     13          
     14          #include "ap_common.h"
     15          
     16          //为了不用bank切换而使用 ResShowPic()
     17          extern res_entry_t res_entry;
     18          extern region_t res_region;
     19           
     20           
     21          void slider_atoi4(char *str, int count)
     22          {    
   \   0000  FDE5              PUSH    IY
   \   0002  DDE5              PUSH    IX
   \   0004  DD210000          LD      IX,0
   \   0008  DD39              ADD     IX,SP
   \   000A  C5                PUSH    BC
   \   000B  F5                PUSH    AF
   \   000C  F5                PUSH    AF
   \   000D  D5                PUSH    DE
   \   000E  FDE1              POP     IY
     23              int tmp, level;
     24              if(count < 0)
   \   0010  CB78              BIT     7,B
   \   0012  2812              JR      Z,?0003
   \   0014            ?0002:
     25              {
     26                  *str = '-';
   \   0014  FD36002D          LD      (IY+0),45
     27                  count = 0 - count;
   \   0018  A7                AND     A
   \   0019  210000            LD      HL,0
   \   001C  ED42              SBC     HL,BC
   \   001E  DD75FE            LD      (IX-2),L
   \   0021  DD74FF            LD      (IX-1),H
     28                  str++; 
   \   0024  FD23              INC     IY
   \   0026            ?0003:
     29              } 
     30              if(count >= 1000)level = 4;
   \   0026  01E883            LD      BC,33768
   \   0029  DD6EFE            LD      L,(IX-2)
   \   002C  DD66FF            LD      H,(IX-1)
   \   002F  3E80              LD      A,128
   \   0031  AC                XOR     H
   \   0032  67                LD      H,A
   \   0033  ED42              SBC     HL,BC
   \   0035  3806              JR      C,?0005
   \   0037            ?0004:
   \   0037  DD36FC04          LD      (IX-4),4
   \   003B  1830              JR      ?0083
   \   003D            ?0005:
     31              else if(count >= 100) level = 3;
   \   003D  016480            LD      BC,32868
   \   0040  DD6EFE            LD      L,(IX-2)
   \   0043  DD66FF            LD      H,(IX-1)
   \   0046  78                LD      A,B
   \   0047  AC                XOR     H
   \   0048  67                LD      H,A
   \   0049  ED42              SBC     HL,BC
   \   004B  3806              JR      C,?0008
   \   004D            ?0007:
   \   004D  DD36FC03          LD      (IX-4),3
   \   0051  181A              JR      ?0083
   \   0053            ?0008:
     32                  else if(count >= 10) level = 2;
   \   0053  010A80            LD      BC,32778
   \   0056  DD6EFE            LD      L,(IX-2)
   \   0059  DD66FF            LD      H,(IX-1)
   \   005C  78                LD      A,B
   \   005D  AC                XOR     H
   \   005E  67                LD      H,A
   \   005F  ED42              SBC     HL,BC
   \   0061  3806              JR      C,?0011
   \   0063            ?0010:
   \   0063  DD36FC02          LD      (IX-4),2
   \   0067  1804              JR      ?0083
   \   0069            ?0011:
     33                      else level = 1;
   \   0069  DD36FC01          LD      (IX-4),1
   \   006D            ?0083:
   \   006D  DD36FD00          LD      (IX-3),0
   \   0071            ?0012:
   \   0071            ?0009:
   \   0071            ?0006:
     34              if(level >= 4)
   \   0071  010480            LD      BC,32772
   \   0074  DD6EFC            LD      L,(IX-4)
   \   0077  DD66FD            LD      H,(IX-3)
   \   007A  78                LD      A,B
   \   007B  AC                XOR     H
   \   007C  67                LD      H,A
   \   007D  ED42              SBC     HL,BC
   \   007F  3812              JR      C,?0014
   \   0081            ?0013:
     35              {
     36                  tmp = (count / 1000) % 10;
   \   0081  01E803            LD      BC,1000
   \   0084  DD5EFE            LD      E,(IX-2)
   \   0087  DD56FF            LD      D,(IX-1)
   \   008A  CD0000            CALL    LWRD ?SS_DIV_L02
   \   008D  010A00            LD      BC,10
   \   0090  CDF100            CALL    LWRD ?0109
     37                  *str = tmp + '0';
     38                  str++;
   \   0093            ?0014:
     39              }
     40              if(level >= 3)
   \   0093  010380            LD      BC,32771
   \   0096  DD6EFC            LD      L,(IX-4)
   \   0099  DD66FD            LD      H,(IX-3)
   \   009C  78                LD      A,B
   \   009D  AC                XOR     H
   \   009E  67                LD      H,A
   \   009F  ED42              SBC     HL,BC
   \   00A1  3811              JR      C,?0016
   \   00A3            ?0015:
     41              {
     42                  tmp = (count / 100) % 10;
   \   00A3  016400            LD      BC,100
   \   00A6  DD5EFE            LD      E,(IX-2)
   \   00A9  DD56FF            LD      D,(IX-1)
   \   00AC  CD0000            CALL    LWRD ?SS_DIV_L02
   \   00AF  0E0A              LD      C,10
   \   00B1  CDF100            CALL    LWRD ?0109
     43                  *str = tmp + '0';
     44                  str++;
   \   00B4            ?0016:
     45              }
     46              if(level >= 2)
   \   00B4  010280            LD      BC,32770
   \   00B7  DD6EFC            LD      L,(IX-4)
   \   00BA  DD66FD            LD      H,(IX-3)
   \   00BD  78                LD      A,B
   \   00BE  AC                XOR     H
   \   00BF  67                LD      H,A
   \   00C0  ED42              SBC     HL,BC
   \   00C2  380F              JR      C,?0018
   \   00C4            ?0017:
     47              {
     48                  tmp = (count / 10) % 10;
   \   00C4  010A00            LD      BC,10
   \   00C7  DD5EFE            LD      E,(IX-2)
   \   00CA  DD56FF            LD      D,(IX-1)
   \   00CD  CD0000            CALL    LWRD ?SS_DIV_L02
   \   00D0  CDF100            CALL    LWRD ?0109
     49                  *str = tmp + '0';
     50                  str++;
   \   00D3            ?0018:
     51              }
     52              tmp = count % 10;
   \   00D3  010A00            LD      BC,10
   \   00D6  DD5EFE            LD      E,(IX-2)
   \   00D9  DD56FF            LD      D,(IX-1)
   \   00DC  CD0000            CALL    LWRD ?SS_MOD_L02
     53              *str = tmp + '0';
   \   00DF  7B                LD      A,E
   \   00E0  C630              ADD     A,48
   \   00E2  FD7700            LD      (IY+0),A
     54              *(str + 1) = '\0';
   \   00E5  FD7001            LD      (IY+1),B
     55          } 
   \   00E8  DDF9              LD      SP,IX
   \   00EA  DDE1              POP     IX
   \   00EC  FDE1              POP     IY
   \   00EE  C30000            JP      LWRD ?BANK_FAST_LEAVE_L08
   \   00F1            ?0109:
   \   00F1  CD0000            CALL    LWRD ?SS_MOD_L02
   \   00F4  7B                LD      A,E
   \   00F5  C630              ADD     A,48
   \   00F7  FD7700            LD      (IY+0),A
   \   00FA  FD23              INC     IY
   \   00FC  C9                RET
   \   00FD            ui_slider:
     56          
     57          
     58          /*
     59          ********************************************************************************
     60          * Description : 滑动杆控件
     61          *
     62          * Arguments   : slider, 滑动杆结构
     63                  callback, 滑动杆的回调函数,=NULL 表示没有回调函数
     64          *
     65          * Returns     : 结果消息, 或者0
     66          *
     67          * Notes       : 控件本身没有重画功能, 因为控件不能重画背景
     68          *
     69          ********************************************************************************
     70          */
     71          int ui_slider(slider_t *slider, const void (*callback)(int res_id))
     72          {
   \   00FD  C5                PUSH    BC
   \   00FE  FDE5              PUSH    IY
   \   0100  DDE5              PUSH    IX
   \   0102  DD210000          LD      IX,0
   \   0106  DD39              ADD     IX,SP
   \   0108  21F4FF            LD      HL,65524
   \   010B  39                ADD     HL,SP
   \   010C  F9                LD      SP,HL
   \   010D  D5                PUSH    DE
   \   010E  FDE1              POP     IY
     73              int start, end;        //x坐标
     74              char buf[10];    //注意可能含符号 <<-0000>>
     75          //    char *p;    //格式化buf时使用
     76              BYTE StrLength; 
     77              char key;
     78              BOOL need_draw=TRUE;
     79              BOOL value_changed=TRUE;    //值是否改变, 需要callback
     80           
     81              const region_t num_region={44, 16, 40, 16};    //数字区域
   \   0110  210600            LD      HL,6
   \   0113  39                ADD     HL,SP
   \   0114  EB                EX      DE,HL
   \   0115  210000            LD      HL,?0019
   \   0118  010400            LD      BC,4
   \   011B  EDB0              LDIR
     82              WORD value;    //to keep slider->value
     83              BYTE hold_state=0;    //按住状态,为了加快控件改变的速度
     84                          //0:normal; 1:holding up, 2:holding down
     85                  
     86              ASSERT(slider->value <= slider->max);
     87              ASSERT(slider->value >= slider->min);
     88              ASSERT(slider->step > 0);   
     89              SetTextOutMode(1);                                                                 
   \   011D  1E01              LD      E,1
   \   011F  CD0000            CALL    LWRD SetTextOutMode
     90              SetPenColor(Color_WHITE_def);
   \   0122  11FFFF            LD      DE,65535
   \   0125  CD0000            CALL    LWRD SetPenColor
   \   0128  DD36F701          LD      (IX-9),1
   \   012C  DD36F601          LD      (IX-10),1
   \   0130  DD36F500          LD      (IX-11),0
   \   0134            ?0021:
     91              //main_ResShowPic(SSBCK,0,0);
     92              
     93              //SetPenColor(Color_WHITE_def);       
     94              //SetTextOutMode(0); 
     95           
     96          
     97              while(1)
     98              {
     99                  if(need_draw)
   \   0134  AF                XOR     A
   \   0135  DDB6F7            OR      (IX-9)
   \   0138  CA7E02            JP      Z,?0024
   \   013B            ?0023:
    100                  {        
    101                            
    102          //            value = slider_pox_x_def + 2 +
    103          //                    (slider_width_def-2) * (slider->value - slider->min) / (slider->max - slider->min);
    104                      value = slider_pox_x_def +
    105                              (slider_width_def-8) * (slider->value - slider->min) / (slider->max - slider->min);
   \   013B  FD4E02            LD      C,(IY+2)
   \   013E  FD4603            LD      B,(IY+3)
   \   0141  FD6E06            LD      L,(IY+6)

⌨️ 快捷键说明

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