| 
									
										
										
										
											2025-06-27 00:32:57 +08:00
										 |  |  |  | #include "mywin_pic.h"
 | 
					
						
							|  |  |  |  | #include "string.h"
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-07-05 19:47:28 +08:00
										 |  |  |  | //<2F><><EFBFBD><EFBFBD>ͼƬ<CDBC><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С
 | 
					
						
							| 
									
										
										
										
											2025-06-27 00:32:57 +08:00
										 |  |  |  | #define WIN_PICBUFF_NAME_MAXLEN 100
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-07-05 19:47:28 +08:00
										 |  |  |  | //<2F><><EFBFBD><EFBFBD>ͼƬ<CDBC><C6AC><EFBFBD><EFBFBD><EFBFBD>صĸ<D8B5><C4B8><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2025-06-27 00:32:57 +08:00
										 |  |  |  | #define PICBUFF_NUM 30
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | typedef struct | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	WIN_PicStruct pic; | 
					
						
							|  |  |  |  | 	char name[WIN_PICBUFF_NAME_MAXLEN]; | 
					
						
							|  |  |  |  | } _pic_data; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | typedef struct | 
					
						
							|  |  |  |  | { | 
					
						
							| 
									
										
										
										
											2025-07-05 19:47:28 +08:00
										 |  |  |  | 	u32 buff_size;			//<2F>ܴ<EFBFBD>С
 | 
					
						
							|  |  |  |  | 	u32 buff_used;			//ʹ<><CAB9><EFBFBD>˶<EFBFBD><CBB6><EFBFBD>
 | 
					
						
							|  |  |  |  | //	u32 buff_tail;			//β<><CEB2>
 | 
					
						
							| 
									
										
										
										
											2025-06-27 00:32:57 +08:00
										 |  |  |  | 	_pic_data *pic_data; | 
					
						
							|  |  |  |  | }WIN_PicBuffStruct; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | static WIN_PicBuffStruct *g_pic_buff; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-07-05 19:47:28 +08:00
										 |  |  |  | //<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2025-06-27 00:32:57 +08:00
										 |  |  |  | WIN_PicBuffStruct *WIN_CreatPicBuff (u32 size) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	WIN_PicBuffStruct *ret=mycalloc( sizeof (WIN_PicBuffStruct)); | 
					
						
							|  |  |  |  | 	if (ret==0) return ret; | 
					
						
							|  |  |  |  | 	 | 
					
						
							|  |  |  |  | 	ret->pic_data=mymalloc_exm (sizeof(_pic_data)*size); | 
					
						
							|  |  |  |  | 	if (ret->pic_data==0) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		myfree(ret); | 
					
						
							|  |  |  |  | 		ret=0; | 
					
						
							|  |  |  |  | 		return ret; | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | 	mymemset(ret->pic_data,0,sizeof(_pic_data)*size); | 
					
						
							|  |  |  |  | 	ret->buff_size=size; | 
					
						
							|  |  |  |  | 	return ret; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-07-05 19:47:28 +08:00
										 |  |  |  | //ɾ<><C9BE>һ<EFBFBD><D2BB>ͼƬ<CDBC><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2025-06-27 00:32:57 +08:00
										 |  |  |  | void WIN_DeletePicBuff (WIN_PicBuffStruct *pb) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	if (pb) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		for (int i=0;i<pb->buff_used;i++) | 
					
						
							|  |  |  |  | 		{ | 
					
						
							|  |  |  |  | 			_pic_data *pic_data=&pb->pic_data[i]; | 
					
						
							|  |  |  |  | 			if (pic_data->pic.data) myfree(pic_data->pic.data); | 
					
						
							|  |  |  |  | 		} | 
					
						
							|  |  |  |  | 		myfree(pb->pic_data); | 
					
						
							|  |  |  |  | 		myfree(pb); | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | _pic_data *WIN_PicUsed(WIN_PicBuffStruct *pb,int index) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	_pic_data *pic_data=0; | 
					
						
							|  |  |  |  | 	pic_data=&pb->pic_data[index]; | 
					
						
							|  |  |  |  | 	if(index!=0) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		_pic_data *pic_temp=mymalloc(sizeof(_pic_data)); | 
					
						
							|  |  |  |  | 		_pic_data *pic_first=&pb->pic_data[index-1]; | 
					
						
							|  |  |  |  | 		mymemcpy(pic_temp,pic_data,sizeof(_pic_data)); | 
					
						
							|  |  |  |  | 		mymemcpy(pic_data,pic_first,sizeof(_pic_data)); | 
					
						
							|  |  |  |  | 		mymemcpy(pic_first,pic_temp,sizeof(_pic_data)); | 
					
						
							|  |  |  |  | 		myfree(pic_temp); | 
					
						
							|  |  |  |  | 		pic_data=pic_first; | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | 	return pic_data; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-07-05 19:47:28 +08:00
										 |  |  |  | //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>ͼƬ<CDBC><C6AC><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2025-06-27 00:32:57 +08:00
										 |  |  |  | WIN_PicStruct *WIN_SearchPicData (WIN_PicBuffStruct *pb,const char *name) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	WIN_PicStruct *ret=0; | 
					
						
							|  |  |  |  | 	if (pb) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		for (int i=0;i<pb->buff_used;i++) | 
					
						
							|  |  |  |  | 		{ | 
					
						
							|  |  |  |  | 			int index=i; | 
					
						
							|  |  |  |  | 			_pic_data *pic_data=0; | 
					
						
							|  |  |  |  | 			pic_data=&pb->pic_data[index]; | 
					
						
							|  |  |  |  | 			if (strcmp(pic_data->name,name)==0) | 
					
						
							|  |  |  |  | 			{ | 
					
						
							| 
									
										
										
										
											2025-07-05 19:47:28 +08:00
										 |  |  |  | 				//ʹ<><CAB9><EFBFBD><EFBFBD>һ<EFBFBD>Σ<EFBFBD><CEA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ
 | 
					
						
							| 
									
										
										
										
											2025-06-27 00:32:57 +08:00
										 |  |  |  | 				pic_data=WIN_PicUsed(pb,index); | 
					
						
							|  |  |  |  | 				 | 
					
						
							|  |  |  |  | 				ret=&pic_data->pic; | 
					
						
							|  |  |  |  | 				break; | 
					
						
							|  |  |  |  | 			} | 
					
						
							|  |  |  |  | 		} | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | 	return ret; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-07-05 19:47:28 +08:00
										 |  |  |  | // <20><>index<65><78>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7>Ŀռ<C4BF>
 | 
					
						
							| 
									
										
										
										
											2025-06-27 00:32:57 +08:00
										 |  |  |  | int WIN_InsertPic(WIN_PicBuffStruct *pb, _pic_data *data,int index) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |     if(pb==0) return 0; | 
					
						
							|  |  |  |  | 	if(index>pb->buff_used) return 0; | 
					
						
							|  |  |  |  |     int num=pb->buff_used-index; | 
					
						
							|  |  |  |  |     _pic_data *pic_data=&pb->pic_data[index]; | 
					
						
							|  |  |  |  |      | 
					
						
							| 
									
										
										
										
											2025-07-05 19:47:28 +08:00
										 |  |  |  |     // index֮<78><D6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2025-06-27 00:32:57 +08:00
										 |  |  |  |     if(pb->buff_used>=pb->buff_size) | 
					
						
							|  |  |  |  |     { | 
					
						
							| 
									
										
										
										
											2025-07-05 19:47:28 +08:00
										 |  |  |  |         // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>
 | 
					
						
							| 
									
										
										
										
											2025-06-27 00:32:57 +08:00
										 |  |  |  |         _pic_data *end=&pb->pic_data[pb->buff_used-1];				 | 
					
						
							|  |  |  |  |         myfree(end->pic.data); | 
					
						
							|  |  |  |  |         printf("%s:del pic,%s\r\n",__func__,end->name); | 
					
						
							|  |  |  |  |         mymemset(end->name,0,WIN_PICBUFF_NAME_MAXLEN); | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |     else | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |         pb->buff_used++; | 
					
						
							|  |  |  |  |     } | 
					
						
							| 
									
										
										
										
											2025-07-05 19:47:28 +08:00
										 |  |  |  |     // ֱ<><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2025-06-27 00:32:57 +08:00
										 |  |  |  |     for(int i=num;i>0;i--) | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |         _pic_data *end=&pic_data[i]; | 
					
						
							|  |  |  |  |         _pic_data *first=&pic_data[i-1]; | 
					
						
							|  |  |  |  | 		mymemcpy(end,first,sizeof(_pic_data)); | 
					
						
							|  |  |  |  |     } | 
					
						
							| 
									
										
										
										
											2025-07-05 19:47:28 +08:00
										 |  |  |  |     // <20><><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD><C2B5>ַ<EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2025-06-27 00:32:57 +08:00
										 |  |  |  |     mymemcpy(pic_data,data,sizeof(_pic_data)); | 
					
						
							|  |  |  |  |     printf("%s:add pic,%s\r\n",__func__,pic_data->name); | 
					
						
							|  |  |  |  |     return 1; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-07-05 19:47:28 +08:00
										 |  |  |  | //<2F><><EFBFBD><EFBFBD>ͼƬ<CDBC><C6AC><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2025-06-27 00:32:57 +08:00
										 |  |  |  | int WIN_AddPicData (WIN_PicBuffStruct *pb,WIN_PicStruct *pic,const char *name) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	if (pb) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		_pic_data *pic_data=mymalloc(sizeof(_pic_data)); | 
					
						
							|  |  |  |  | 		int len=strlen(name); | 
					
						
							|  |  |  |  | 		if(len+1>WIN_PICBUFF_NAME_MAXLEN) | 
					
						
							|  |  |  |  | 		{ | 
					
						
							|  |  |  |  | 			printf("%s:err,pic name to long\r\n",__func__); | 
					
						
							|  |  |  |  | 		} | 
					
						
							|  |  |  |  | 		mymemcpy(pic_data->name,(void *)name,len+1); | 
					
						
							|  |  |  |  | 		mymemcpy(&pic_data->pic,pic,sizeof(WIN_PicStruct)); | 
					
						
							|  |  |  |  |         if(WIN_InsertPic(pb,pic_data,pb->buff_used/2)==0) | 
					
						
							|  |  |  |  |             printf("%s:insert pic err \r\n",__func__); | 
					
						
							|  |  |  |  |         myfree(pic_data); | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | 	return 0; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-07-05 19:47:28 +08:00
										 |  |  |  | //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƻ<EFBFBD>ȡͼƬ
 | 
					
						
							| 
									
										
										
										
											2025-06-27 00:32:57 +08:00
										 |  |  |  | WIN_PicStruct *WIN_GetPic(const char *name) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |     if(name==0) return 0; | 
					
						
							|  |  |  |  | 	WIN_PicStruct *ret=0; | 
					
						
							|  |  |  |  | 	if(g_pic_buff==0) g_pic_buff=WIN_CreatPicBuff(PICBUFF_NUM); | 
					
						
							|  |  |  |  | 	ret=WIN_SearchPicData(g_pic_buff,name); | 
					
						
							|  |  |  |  | 	if (ret==0) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		WIN_PicStruct pic={0}; | 
					
						
							|  |  |  |  | 		if(WIN_DecodeImg(&pic,name)==0) | 
					
						
							|  |  |  |  | 		{ | 
					
						
							|  |  |  |  | 			WIN_AddPicData(g_pic_buff,&pic,name); | 
					
						
							|  |  |  |  | 		} | 
					
						
							|  |  |  |  | 		ret=WIN_SearchPicData(g_pic_buff,name); | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | 	return ret; | 
					
						
							|  |  |  |  | 	 | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-07-05 19:47:28 +08:00
										 |  |  |  | //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƻ<EFBFBD>ȡͼƬ,ȥ<><C8A5>ͼƬ<CDBC><C6AC><EFBFBD><CDB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
 | 
					
						
							| 
									
										
										
										
											2025-06-27 00:32:57 +08:00
										 |  |  |  | WIN_PicStruct *WIN_GetPicNoAlpha(const char *name) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	WIN_PicStruct *ret=0; | 
					
						
							|  |  |  |  | 	if(g_pic_buff==0) g_pic_buff=WIN_CreatPicBuff(PICBUFF_NUM); | 
					
						
							|  |  |  |  | 	ret=WIN_SearchPicData(g_pic_buff,name); | 
					
						
							|  |  |  |  | 	if (ret==0) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		WIN_PicStruct pic={0}; | 
					
						
							|  |  |  |  | 		if(WIN_DecodeImg(&pic,name)==0) | 
					
						
							|  |  |  |  | 		{ | 
					
						
							|  |  |  |  | 			if(pic.format==PIC_FORMAT_ARGB8888) | 
					
						
							|  |  |  |  | 			{ | 
					
						
							|  |  |  |  | 				u32 *data=(u32 *)pic.data; | 
					
						
							|  |  |  |  | 				pic.data=mymalloc_exm(pic.xsize*pic.ysize*2); | 
					
						
							|  |  |  |  | 				for(int i=0;i<pic.xsize*pic.ysize;i++) | 
					
						
							|  |  |  |  | 					pic.data[i]=COLOR888TO565(data[i]); | 
					
						
							|  |  |  |  | 				pic.format=PIC_FORMAT_RGB565; | 
					
						
							|  |  |  |  | 				myfree(data); | 
					
						
							|  |  |  |  | 			} | 
					
						
							|  |  |  |  | 			WIN_AddPicData(g_pic_buff,&pic,name); | 
					
						
							|  |  |  |  | 		} | 
					
						
							|  |  |  |  | 		ret=WIN_SearchPicData(g_pic_buff,name); | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | 	return ret; | 
					
						
							|  |  |  |  | 	 | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-07-05 19:47:28 +08:00
										 |  |  |  | //<2F>ж<EFBFBD>pic<69>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>pic<69><63>
 | 
					
						
							| 
									
										
										
										
											2025-06-27 00:32:57 +08:00
										 |  |  |  | int WIN_PicInsidePic(WIN_PicStruct *base,WIN_PicStruct *child) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	int ret=0; | 
					
						
							|  |  |  |  | 	if(base&&child&&base->data&&child->data&&base->xsize&&base->ysize&&child->xsize&&child->ysize) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		if(base->format==child->format) | 
					
						
							|  |  |  |  | 		{ | 
					
						
							|  |  |  |  | 			int base_size=base->xsize*base->ysize; | 
					
						
							|  |  |  |  | 			int child_size=child->xsize*child->ysize; | 
					
						
							|  |  |  |  | 			if(base->format==PIC_FORMAT_ARGB8888) | 
					
						
							|  |  |  |  | 			{ | 
					
						
							|  |  |  |  | 				base_size*=2; | 
					
						
							|  |  |  |  | 				child_size*=2; | 
					
						
							|  |  |  |  | 			} | 
					
						
							|  |  |  |  | 			if((child->data>=base->data)&&(child->data+child_size<=base->data+base_size)) | 
					
						
							|  |  |  |  | 			{ | 
					
						
							|  |  |  |  | 				ret=1; | 
					
						
							|  |  |  |  | 			} | 
					
						
							|  |  |  |  | 		} | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | 	return ret; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-07-05 19:47:28 +08:00
										 |  |  |  | //ͼ<><CDBC><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2025-06-27 00:32:57 +08:00
										 |  |  |  | int WIN_GetPicLive(WIN_PicStruct *pic) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	int ret=0; | 
					
						
							|  |  |  |  | 	WIN_PicBuffStruct *pb=g_pic_buff; | 
					
						
							|  |  |  |  | 	if (pb&&pic&&pic->data) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		for (int i=0;i<pb->buff_used;i++) | 
					
						
							|  |  |  |  | 		{ | 
					
						
							|  |  |  |  | 			int index=i; | 
					
						
							|  |  |  |  | 			_pic_data *pic_data=0; | 
					
						
							|  |  |  |  | 			pic_data=&pb->pic_data[index]; | 
					
						
							|  |  |  |  | 			if (WIN_PicInsidePic(&pic_data->pic,pic)) | 
					
						
							|  |  |  |  | 			{ | 
					
						
							|  |  |  |  | 				 | 
					
						
							|  |  |  |  | 				ret=1; | 
					
						
							|  |  |  |  | 				break; | 
					
						
							|  |  |  |  | 			} | 
					
						
							|  |  |  |  | 		} | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | 	return ret; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-07-05 19:47:28 +08:00
										 |  |  |  | //<2F><>ȫ<EFBFBD>ػ<EFBFBD><D8BB><EFBFBD>pic,<2C><><EFBFBD><EFBFBD>0<EFBFBD><30>û<EFBFBD><C3BB>picͼ<63><CDBC>
 | 
					
						
							| 
									
										
										
										
											2025-06-27 00:32:57 +08:00
										 |  |  |  | int WIN_DrawPic(WIN_PicStruct *pic,int x,int y,int xsize,int ysize) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	if(pic&&WIN_GetPicLive(pic)) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		if(pic->format==PIC_FORMAT_ARGB8888) | 
					
						
							|  |  |  |  | 		{ | 
					
						
							|  |  |  |  | 			WIN_FillRectAlpha (x,y,xsize,ysize,pic->data,0,0,pic->xsize,pic->ysize); | 
					
						
							|  |  |  |  | 		} | 
					
						
							|  |  |  |  | 		else | 
					
						
							|  |  |  |  | 		{ | 
					
						
							|  |  |  |  | 			WIN_FillRect (x,y,xsize,ysize,pic->data,0,0,pic->xsize,pic->ysize); | 
					
						
							|  |  |  |  | 		} | 
					
						
							|  |  |  |  | 		return 1; | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | 	return 0; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 |