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

📄 ui_slider.s01

📁 MP3 整个 SDK
💻 S01
📖 第 1 页 / 共 2 页
字号:
	NAME	ui_slider(17)
	RSEG	COM_CTRL(0)
	RSEG	CONST(0)
	EXTERN	ResShowMultiString
	EXTERN	ResShowPic
	EXTERN	SetPenColor
	EXTERN	SetTextOutMode
	EXTERN	ap_get_message
	EXTERN	ap_handle_hotkey
	EXTERN	file_name
	EXTERN	main_ResShowPic
	PUBLIC	slider_atoi4
	EXTERN	ui_auto_select
	PUBLIC	ui_slider
	EXTERN	?CLZ80B_4_04_L00
	EXTERN	?SS_DIV_L02
	EXTERN	?SS_MOD_L02
	EXTERN	?S_MUL_L02
	EXTERN	?C_V_SWITCH_L06
	EXTERN	?BANK_CALL_DIRECT_L08
	EXTERN	?BANK_FAST_LEAVE_L08
	EXTERN	?STRLEN_L11
	RSEG	COM_CTRL
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.	{    
	PUSH	IY
	PUSH	IX
	LD	IX,0
	ADD	IX,SP
	PUSH	BC
	PUSH	AF
	PUSH	AF
	PUSH	DE
	POP	IY
; 23.	    int tmp, level;
; 24.	    if(count < 0)
	BIT	7,B
	JR	Z,?0003
?0002:
; 25.	    {
; 26.	        *str = '-';
	LD	(IY+0),45
; 27.	        count = 0 - count;
	AND	A
	LD	HL,0
	SBC	HL,BC
	LD	(IX-2),L
	LD	(IX-1),H
; 28.	        str++; 
	INC	IY
?0003:
; 29.	    } 
; 30.	    if(count >= 1000)level = 4;
	LD	BC,33768
	LD	L,(IX-2)
	LD	H,(IX-1)
	LD	A,128
	XOR	H
	LD	H,A
	SBC	HL,BC
	JR	C,?0005
?0004:
	LD	(IX-4),4
	JR	?0083
?0005:
; 31.	    else if(count >= 100) level = 3;
	LD	BC,32868
	LD	L,(IX-2)
	LD	H,(IX-1)
	LD	A,B
	XOR	H
	LD	H,A
	SBC	HL,BC
	JR	C,?0008
?0007:
	LD	(IX-4),3
	JR	?0083
?0008:
; 32.	        else if(count >= 10) level = 2;
	LD	BC,32778
	LD	L,(IX-2)
	LD	H,(IX-1)
	LD	A,B
	XOR	H
	LD	H,A
	SBC	HL,BC
	JR	C,?0011
?0010:
	LD	(IX-4),2
	JR	?0083
?0011:
; 33.	            else level = 1;
	LD	(IX-4),1
?0083:
	LD	(IX-3),0
?0012:
?0009:
?0006:
; 34.	    if(level >= 4)
	LD	BC,32772
	LD	L,(IX-4)
	LD	H,(IX-3)
	LD	A,B
	XOR	H
	LD	H,A
	SBC	HL,BC
	JR	C,?0014
?0013:
; 35.	    {
; 36.	        tmp = (count / 1000) % 10;
	LD	BC,1000
	LD	E,(IX-2)
	LD	D,(IX-1)
	CALL	LWRD ?SS_DIV_L02
	LD	BC,10
	CALL	LWRD ?0109
; 37.	        *str = tmp + '0';
; 38.	        str++;
?0014:
; 39.	    }
; 40.	    if(level >= 3)
	LD	BC,32771
	LD	L,(IX-4)
	LD	H,(IX-3)
	LD	A,B
	XOR	H
	LD	H,A
	SBC	HL,BC
	JR	C,?0016
?0015:
; 41.	    {
; 42.	        tmp = (count / 100) % 10;
	LD	BC,100
	LD	E,(IX-2)
	LD	D,(IX-1)
	CALL	LWRD ?SS_DIV_L02
	LD	C,10
	CALL	LWRD ?0109
; 43.	        *str = tmp + '0';
; 44.	        str++;
?0016:
; 45.	    }
; 46.	    if(level >= 2)
	LD	BC,32770
	LD	L,(IX-4)
	LD	H,(IX-3)
	LD	A,B
	XOR	H
	LD	H,A
	SBC	HL,BC
	JR	C,?0018
?0017:
; 47.	    {
; 48.	        tmp = (count / 10) % 10;
	LD	BC,10
	LD	E,(IX-2)
	LD	D,(IX-1)
	CALL	LWRD ?SS_DIV_L02
	CALL	LWRD ?0109
; 49.	        *str = tmp + '0';
; 50.	        str++;
?0018:
; 51.	    }
; 52.	    tmp = count % 10;
	LD	BC,10
	LD	E,(IX-2)
	LD	D,(IX-1)
	CALL	LWRD ?SS_MOD_L02
; 53.	    *str = tmp + '0';
	LD	A,E
	ADD	A,48
	LD	(IY+0),A
; 54.	    *(str + 1) = '\0';
	LD	(IY+1),B
; 55.	} 
	LD	SP,IX
	POP	IX
	POP	IY
	JP	LWRD ?BANK_FAST_LEAVE_L08
?0109:
	CALL	LWRD ?SS_MOD_L02
	LD	A,E
	ADD	A,48
	LD	(IY+0),A
	INC	IY
	RET
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.	{
	PUSH	BC
	PUSH	IY
	PUSH	IX
	LD	IX,0
	ADD	IX,SP
	LD	HL,65524
	ADD	HL,SP
	LD	SP,HL
	PUSH	DE
	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};    //数字区域
	LD	HL,6
	ADD	HL,SP
	EX	DE,HL
	LD	HL,?0019
	LD	BC,4
	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);                                                                 
	LD	E,1
	CALL	LWRD SetTextOutMode
; 90.	    SetPenColor(Color_WHITE_def);
	LD	DE,65535
	CALL	LWRD SetPenColor
	LD	(IX-9),1
	LD	(IX-10),1
	LD	(IX-11),0
?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)
	XOR	A
	OR	(IX-9)
	JP	Z,?0024
?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);
	LD	C,(IY+2)
	LD	B,(IY+3)
	LD	L,(IY+6)
	LD	H,(IY+7)
	SBC	HL,BC
	LD	C,L
	LD	B,H
	LD	DE,120
	CALL	LWRD ?S_MUL_L02
	LD	C,(IY+2)
	LD	B,(IY+3)
	LD	L,(IY+4)
	LD	H,(IY+5)
	AND	A
	SBC	HL,BC
	LD	C,L
	LD	B,H
	CALL	LWRD ?SS_DIV_L02
	LD	HL,45
	ADD	HL,DE
	LD	(IX-8),L
; 106.	               
; 107.	            slider_atoi4 (file_name,slider->value);
	LD	C,(IY+6)
	LD	B,(IY+7)
	LD	DE,file_name
	LD	A,BYTE3 slider_atoi4
	LD	HL,LWRD slider_atoi4
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 108.	            StrLength=(BYTE)strlen(file_name);
	LD	HL,file_name
	CALL	LWRD ?STRLEN_L11
	LD	(IX-2),L
; 109.	 
; 110.	            ResShowPic(SSBCK,0,0);
	LD	C,0
	PUSH	BC
	LD	DE,221
	LD	A,BYTE3 ResShowPic
	LD	HL,LWRD ResShowPic
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	POP	AF
; 111.	            ResShowMultiString(slider->title, slider->string_id, menuhead_s_pos_x_def, menuhead_s_pos_y_def);
	LD	C,148
	PUSH	BC
	LD	C,22
	PUSH	BC
	LD	C,(IY+10)
	LD	E,(IY+0)
	LD	D,(IY+1)
	LD	A,BYTE3 ResShowMultiString
	LD	HL,LWRD ResShowMultiString
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	POP	AF
	POP	AF
; 112.	                                                   
; 113.	            // 画滑动杆
; 114.	            main_ResShowPic(SSLIDER,slider_pox_x_def,slider_pox_y_def);
	LD	C,55
	PUSH	BC
	LD	C,45
	LD	DE,222
	CALL	LWRD ?0110
	POP	AF
; 115.	            // 画滑动游标                                  
; 116.	            main_ResShowPic(SLIDPTR, value, slider_cursor_y_def); 
	LD	C,55
	PUSH	BC
	LD	C,(IX-8)
	LD	DE,220
	CALL	LWRD ?0110
	POP	AF
; 117.	                                   
; 118.	            // 显示当前值                        
; 119.	            if(StrLength==1)
	LD	B,(IX-2)
	DEC	B
	JR	NZ,?0026
?0025:
; 120.	                main_ResShowPic(FMNUM0+file_name[0]-0x30,98,80);
	LD	C,80
	PUSH	BC
	LD	C,98
	LD	DE,(file_name)
	JP	LWRD ?0091
	LD	HL,9
	JP	LWRD ?0094
	EX	DE,HL
	JP	LWRD ?0108
	LD	HL,LWRD main_ResShowPic
	JP	LWRD ?0104
	POP	AF
	JP	LWRD ?0033
?0026:
; 121.	            else if(StrLength==2)
	LD	B,(IX-2)
	DEC	B
	DEC	B
	JR	NZ,?0029
?0028:
; 122.	            {
; 123.	                if(file_name[0]=='-')
	LD	A,(file_name)
	CP	45
	JR	NZ,?0031
?0030:
; 124.	                {
; 125.	                    main_ResShowPic(MENUNEG,90,83); 
	LD	C,83
	PUSH	BC
	LD	C,90
	LD	DE,107
	CALL	LWRD ?0110
	POP	AF
; 126.	                    main_ResShowPic(FMNUM0+file_name[1]-0x30,108,80);    
	LD	C,80
	PUSH	BC
	LD	C,108
	JR	?0090
	LD	D,0
	JR	?0102
	JR	?0094
	EX	DE,HL
	JR	?0108
	LD	HL,LWRD main_ResShowPic
	JR	?0104
	POP	AF
; 127.	                } 
; 128.	                else
	JR	?0033
?0031:
; 129.	                {
; 130.	                    main_ResShowPic(FMNUM0+file_name[0]-0x30,83,80);
	LD	C,80
	PUSH	BC
	LD	C,83
	LD	DE,(file_name)
	LD	D,B
	CALL	LWRD ?0111
	POP	AF
; 131.	                    main_ResShowPic(FMNUM0+file_name[1]-0x30,106,80);  
	LD	C,80
	PUSH	BC
	LD	C,106
?0090:
	LD	DE,(file_name+1)
	JR	?0091
	JR	?0102
	JR	?0094
	EX	DE,HL
	JR	?0108
	LD	HL,LWRD main_ResShowPic
	JR	?0104
	POP	AF
?0032:
; 132.	                }  
; 133.	            }      
; 134.	            else 
	JR	?0033
?0029:
; 135.	            {
; 136.	                main_ResShowPic(FMNUM0+file_name[0]-0x30,75,80);
	LD	C,80
	PUSH	BC
	LD	C,75
	LD	DE,(file_name)
	CALL	LWRD ?0112

⌨️ 快捷键说明

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