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

📄 search_etc_proc.c

📁 操作系统SunOS 4.1.3版本的源码
💻 C
字号:
#ifndef lintstatic	char sccsid[] = "@(#)search_etc_proc.c 1.1 92/07/30 SMI";#endif not lint/* * Copyright (c) 1989 by Sun Microsystems, Inc. */#include <sys/types.h>#include <sys/time.h>#include <suntool/sunview.h>#include <suntool/panel.h>#include <video.h>#include "sony_laser.h"#include "lasertool.h"extern Window video_window;extern Panel_item ntimes, start_frame, stop_frame, speed, trk_jmp;extern Panel_item error_return, address, search_etc_cycle;extern Window base_frame;extern FILE *device;extern int poll_state;extern char poll_ch;/* * When the go button is hit do whatever was selected */voidsearch_etc_proc(item, event)Panel_item item;Event *event;{	char string[80];	unsigned char *sframe, *eframe, *loop, *rate, *trak, rc;	register int value;	value = (int)panel_get(search_etc_cycle, PANEL_VALUE);	switch(value) {	case 0 : /* Search */		if(poll_state == POLL_PRINT) {			poll_state = POLL_OFF;			sframe = (unsigned char *)panel_get(start_frame,PANEL_VALUE); 			if(*sframe == NULL) {				sprintf(string,"Must specify start point for search\n");				panel_set(error_return, PANEL_LABEL_STRING, string, 0);			} else {				if(video_window)					window_set(video_window, VIDEO_LIVE, FALSE, 0);				if((rc = sony_search(device, sframe)) != COMPLETION) { 					sprintf(string,"Invalid search, 0x%x returned\n",rc);					panel_set(error_return, PANEL_LABEL_STRING, string, 0);				}				if(video_window)							window_set(video_window, VIDEO_LIVE, TRUE, 0);			}			poll_state = POLL_PRINT;		} else {			sprintf(string,"Please clear_all first\n");			panel_set(error_return, PANEL_LABEL_STRING, string, 0);		}		break;	case 1 : /* Repeat from current frame to eframe, ntimes */		sframe = (unsigned char *)panel_get(start_frame,PANEL_VALUE); 		loop = (unsigned char *)panel_get(ntimes,PANEL_VALUE); 		if(*sframe == NULL) {			sprintf(string,"Must specify stop point for repeat\n");			panel_set(error_return, PANEL_LABEL_STRING, string, 0);		} else if(*loop == NULL) {			sprintf(string,"Must specify a loop number for repeat\n");			panel_set(error_return, PANEL_LABEL_STRING, string, 0);		} else {			if(poll_state == POLL_PRINT) {				poll_state = POLL_OFF;				if((rc = sony_repeat(device, sframe, loop, 0)) == ACK) {					poll_state = POLL_SEARCH;					poll_ch = COMPLETION;				} else if(rc == CLV_DISK) {					sprintf(string,"Invalid repeat for CLV disk\n");					panel_set(error_return, PANEL_LABEL_STRING, string, 0);					poll_state = POLL_PRINT;					return;				} else {					sprintf(string,"Invalid repeat, 0x%x returned\n",rc);					panel_set(error_return, PANEL_LABEL_STRING, string, 0);					poll_state = POLL_PRINT;					return;				}					} else {				sprintf(string,"Please clear_all first\n");				panel_set(error_return, PANEL_LABEL_STRING, string, 0);			}		}		break;	case 2 : /* Replay frame sframe to eframe, ntimes */		sframe = (unsigned char *)panel_get(start_frame,PANEL_VALUE); 		eframe = (unsigned char *)panel_get(stop_frame,PANEL_VALUE); 		loop = (unsigned char *)panel_get(ntimes,PANEL_VALUE); 		if(*sframe == NULL) {			sprintf(string,"Must specify start point for replay\n");			panel_set(error_return, PANEL_LABEL_STRING, string, 0);		}else if(*eframe == NULL) {			sprintf(string,"Must specify end point for replay\n");			panel_set(error_return, PANEL_LABEL_STRING, string, 0);		} else if(*loop == NULL) {			sprintf(string,"Must specify a loop number for replay\n");			panel_set(error_return, PANEL_LABEL_STRING, string, 0);		} else {			if(poll_state == POLL_PRINT) {				poll_state = POLL_OFF;				if((rc = sony_replay_seq(device, sframe, eframe,loop,0))						== ACK) {					poll_state = POLL_SEARCH;					poll_ch = COMPLETION;				} else if(rc == CLV_DISK) {					sprintf(string,"Invalid replay for CLV disk\n");					panel_set(error_return, PANEL_LABEL_STRING, string, 0);					poll_state = POLL_PRINT;					return;				} else {					sprintf(string,"Invalid replay, 0x%x returned\n",rc);					panel_set(error_return, PANEL_LABEL_STRING, string, 0);					poll_state = POLL_PRINT;					return;				}			} else {				sprintf(string,"Please clear_all first\n");				panel_set(error_return, PANEL_LABEL_STRING, string, 0);			}		}		break;	case 3 : /* Repeat from sframe to eframe, ntimes at speed rate */		sframe = (unsigned char *)panel_get(start_frame,PANEL_VALUE); 		eframe = (unsigned char *)panel_get(stop_frame,PANEL_VALUE); 		loop = (unsigned char *)panel_get(ntimes,PANEL_VALUE); 		rate = (unsigned char *)panel_get(speed,PANEL_VALUE); 		if(*sframe == NULL) {			sprintf(string,"Must specify start point for rep_vspeed\n");			panel_set(error_return, PANEL_LABEL_STRING, string, 0);		}else if(*eframe == NULL) {			sprintf(string,"Must specify end point for rep_vspeed\n");			panel_set(error_return, PANEL_LABEL_STRING, string, 0);		} else if(*loop == NULL) {			sprintf(string,"Must specify a loop number for rep_vspeed\n");			panel_set(error_return, PANEL_LABEL_STRING, string, 0);		} else if(*rate == NULL) {			sprintf(string,"Must specify a rate for rep_vspeed\n");			panel_set(error_return, PANEL_LABEL_STRING, string, 0);		} else {			if(poll_state == POLL_PRINT) {				poll_state = POLL_OFF;				rc = sony_replay_vspeed(device, sframe, eframe, loop, rate, 0);				if(rc == CLV_DISK) {					sprintf(string,"replay vspeed : Invalid command for CLV disks\n");					panel_set(error_return, PANEL_LABEL_STRING, string, 0);					return;				} else if(rc == INVALID_SPEED) {					sprintf(string,"Rate must be in the range 1 to 255\n");					panel_set(error_return, PANEL_LABEL_STRING, string, 0);				} else if(rc != ACK) {					sprintf(string,"Invalid repvspeed, 0x%x returned\n",rc);					panel_set(error_return, PANEL_LABEL_STRING, string, 0);					return;				}				poll_state = POLL_SEARCH;				poll_ch = COMPLETION;			} else {				sprintf(string,"Please clear_all first\n");				panel_set(error_return, PANEL_LABEL_STRING, string, 0);			}		}		break;	case 4 : /* Set the mark frame to be sframe */		if(poll_state == POLL_PRINT) {			poll_state=POLL_OFF;				sframe = (unsigned char *)panel_get(start_frame,PANEL_VALUE); 			if(*sframe == NULL) {				sprintf(string,"Must specify start point for mark set\n");				panel_set(error_return, PANEL_LABEL_STRING, string, 0);			} else {				if((rc = sony_mark_set(device, sframe)) != ACK) {					sprintf(string,"Invalid mark set, 0x%x returned\n",rc);					panel_set(error_return, PANEL_LABEL_STRING, string, 0);				}			}			poll_state=POLL_PRINT;		} else {			sprintf(string,"Please clear_all first\n");			panel_set(error_return, PANEL_LABEL_STRING, string, 0);		}		break;	}	return;}

⌨️ 快捷键说明

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