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

📄 view.c

📁 seismic software,very useful
💻 C
📖 第 1 页 / 共 3 页
字号:
		if  (panel > PickSize()) break;		frame = PickFrame (panel);		if (frame == NO_INDEX||		frame >= AxisSize(MapAxis(view->map[AXIS_DEEP]))) break;		iv = panel / view->nacross;		ih = panel % view->nacross;		MapSetFrame (view->map[AXIS_DEEP],frame);		RENDER_ATTR(0,0,1,0,DRAW_FRONT,0,1,0,0,view->showpicks);		RenderHorz (data,view->map[AXIS_ACROSS],			view->map[AXIS_DOWN],view->map[AXIS_DEEP],view->map[AXIS_4D],view->map[AXIS_5D],			ih=ih*(MapSize(view->map[AXIS_ACROSS])+GAP),			iv=iv*(MapSize(view->map[AXIS_DOWN])+GAP),			render,view->margins,_attr_);		if (MapSize(view->map[AXIS_ACROSS]) > 100) {			DrawText (ih,iv,TEXT_H0|TEXT_V0,AxisScript(ViewDataAxis(view,AXIS_DEEP),frame));			}		else	{			labelp = AxisScript(ViewDataAxis(view,AXIS_DEEP),frame);			while (*labelp != '=' && *labelp != '\0') labelp++;			if (*labelp == '=') labelp++;			else labelp = AxisScript(ViewDataAxis(view,AXIS_DEEP),frame);			DrawText (ih,iv,TEXT_H0|TEXT_V0,labelp);			}		}	MapSetFrame (view->map[AXIS_DEEP],save);	}/* cube extracts three panels */ViewDrawCube (view,mode)View view;int mode;	{	extern Data data;	extern Render render;	if (!view) return;	/* front */	RENDER_ATTR(0,0,mode==DRAW_ALL,0,(mode&DRAW_FRONT)*(mode&DRAW_IMAGE),(AXIS_LEFT|AXIS_BASE)*!MovieRun(),!MovieRun(),1,!MovieRun(),view->showpicks);	RenderHorz (data,view->map[AXIS_ACROSS],view->map[AXIS_DOWN],		view->map[AXIS_DEEP],view->map[AXIS_4D],view->map[AXIS_5D],		view->margins[MARGIN_LEFT],		view->margins[MARGIN_TOP]+MapSize(view->map[AXIS_DEEP])+GAP,		render,view->margins,_attr_);	/* side */	RENDER_ATTR(0,1,mode==DRAW_ALL,0,(mode&DRAW_SIDE)*(mode&DRAW_IMAGE),(AXIS_BASE)*!MovieRun(),!MovieRun(),1,!MovieRun(),view->showpicks);	RenderVert (data,view->map[AXIS_DEEP],view->map[AXIS_DOWN],		view->map[AXIS_ACROSS],view->map[AXIS_4D],view->map[AXIS_5D],		view->margins[MARGIN_LEFT]+MapSize(view->map[AXIS_ACROSS])+GAP+1,		MapSize(view->map[AXIS_DEEP])+view->margins[MARGIN_TOP]+GAP,		render,view->margins,_attr_);	/* top */	RENDER_ATTR(0,1,mode==DRAW_ALL,0,(mode&DRAW_TOP)*(mode&DRAW_IMAGE),(AXIS_LEFT)*!MovieRun(),!MovieRun(),1,!MovieRun(),view->showpicks);	RenderHorz (data,view->map[AXIS_ACROSS],view->map[AXIS_DEEP],		view->map[AXIS_DOWN],view->map[AXIS_4D],view->map[AXIS_5D],		view->margins[MARGIN_LEFT],		view->margins[MARGIN_TOP],		render,view->margins,_attr_);	}/* fence extracts three panels */ViewDrawFence (view,mode)View view;int mode;	{	extern Data data;	extern Render render;	if (!view) return;	RenderClear();	DrawClear();	/* front */	if (mode & DRAW_FRONT) {	RENDER_ATTR(0,0,mode==DRAW_ALL,1,mode&DRAW_FRONT,0,!MovieRun(),0,0,0);	RenderHorz (data,view->map[AXIS_ACROSS],view->map[AXIS_DOWN],		view->map[AXIS_DEEP],view->map[AXIS_4D],view->map[AXIS_5D],		view->margins[MARGIN_LEFT]+MapSize(view->map[AXIS_DEEP])-		MapInverse(view->map[AXIS_DEEP],		MapFrame(view->map[AXIS_DEEP])),		view->margins[MARGIN_TOP]+MapInverse(view->map[AXIS_DEEP],		MapFrame(view->map[AXIS_DEEP])),		render,view->margins,_attr_);		}	RENDER_ATTR(0,0,mode==DRAW_ALL,0,0,(AXIS_LEFT|AXIS_BASE),0,0,0,0);	RenderHorz (data,view->map[AXIS_ACROSS],view->map[AXIS_DOWN],		view->map[AXIS_DEEP],view->map[AXIS_4D],view->map[AXIS_5D],		view->margins[MARGIN_LEFT],		view->margins[MARGIN_TOP]+MapSize(view->map[AXIS_DEEP]),		render,view->margins,_attr_);	/* side */	if (mode & DRAW_SIDE) {	RENDER_ATTR(0,1,mode==DRAW_ALL,1,mode&DRAW_SIDE,0,!MovieRun(),0,0,0);	RenderVert (data,view->map[AXIS_DEEP],view->map[AXIS_DOWN],		view->map[AXIS_ACROSS],view->map[AXIS_4D],view->map[AXIS_5D],		view->margins[MARGIN_LEFT]+MapInverse(view->map[AXIS_ACROSS],		MapFrame(view->map[AXIS_ACROSS]))-1,		MapSize(view->map[AXIS_DEEP])+view->margins[MARGIN_TOP],		render,view->margins,_attr_);		}	RENDER_ATTR(0,1,mode==DRAW_ALL,0,0,(AXIS_BASE),0,0,0,0);	RenderVert (data,view->map[AXIS_DEEP],view->map[AXIS_DOWN],		view->map[AXIS_ACROSS],view->map[AXIS_4D],view->map[AXIS_5D],		view->margins[MARGIN_LEFT]+MapSize(view->map[AXIS_ACROSS])+GAP+1,		MapSize(view->map[AXIS_DEEP])+view->margins[MARGIN_TOP],		render,view->margins,_attr_);	/* top */	if (mode & DRAW_TOP) {	RENDER_ATTR(0,1,mode==DRAW_ALL,1,mode&DRAW_TOP,0,!MovieRun(),0,0,0);	RenderHorz (data,view->map[AXIS_ACROSS],view->map[AXIS_DEEP],		view->map[AXIS_DOWN],view->map[AXIS_4D],view->map[AXIS_5D],		view->margins[MARGIN_LEFT],		view->margins[MARGIN_TOP]+MapInverse(view->map[AXIS_DOWN],		MapFrame(view->map[AXIS_DOWN])),		render,view->margins,_attr_);		}	RENDER_ATTR(0,1,mode==DRAW_ALL,0,0,(AXIS_LEFT),0,0,0,0);	RenderHorz (data,view->map[AXIS_ACROSS],view->map[AXIS_DEEP],		view->map[AXIS_DOWN],view->map[AXIS_4D],view->map[AXIS_5D],		view->margins[MARGIN_LEFT],		view->margins[MARGIN_TOP],		render,view->margins,_attr_);	}/* plan view extracts three panels */ViewDrawPlan (view,mode)View view;int mode;	{	extern Data data;	extern Render render;	if (!view) return;	/* front */	RENDER_ATTR(0,0,mode==DRAW_ALL,0,(mode&DRAW_FRONT)*(mode&DRAW_IMAGE),(AXIS_LEFT|AXIS_BASE)*!MovieRun(),!MovieRun(),1,!MovieRun(),view->showpicks);	RenderHorz (data,view->map[AXIS_ACROSS],view->map[AXIS_DOWN],		view->map[AXIS_DEEP],view->map[AXIS_4D],view->map[AXIS_5D],		view->margins[MARGIN_LEFT],		MapSize(view->map[AXIS_DEEP])+view->margins[MARGIN_TOP]+GAP,		render,view->margins,_attr_);	/* side */	RENDER_ATTR(0,0,mode==DRAW_ALL,0,(mode&DRAW_SIDE)*(mode&DRAW_IMAGE),(AXIS_BASE)*!MovieRun(),!MovieRun(),1,!MovieRun(),view->showpicks);	RenderVert (data,view->map[AXIS_DEEP],view->map[AXIS_DOWN],		view->map[AXIS_ACROSS],view->map[AXIS_4D],view->map[AXIS_5D],		view->margins[MARGIN_LEFT]+MapSize(view->map[AXIS_ACROSS])+GAP+1,		MapSize(view->map[AXIS_DEEP])+view->margins[MARGIN_TOP]+GAP,		render,view->margins,_attr_);	/* top */	RENDER_ATTR(0,0,mode==DRAW_ALL,0,(mode&DRAW_TOP)*(mode&DRAW_IMAGE),(AXIS_LEFT)*!MovieRun(),!MovieRun(),1,!MovieRun(),view->showpicks);	RenderHorz (data,view->map[AXIS_ACROSS],view->map[AXIS_DEEP],		view->map[AXIS_DOWN],view->map[AXIS_4D],view->map[AXIS_5D],		view->margins[MARGIN_LEFT],		view->margins[MARGIN_TOP],		render,view->margins,_attr_);	}/* draw transparent cube */ViewDrawTransp (view)View view;	{	int iz,nz;	extern Data data;	extern Render render;	extern ViewDrawTranspCallback();	/* draw all axes */	RENDER_ATTR(0,0,DRAW_ALL,0,0,(AXIS_LEFT|AXIS_BASE),0,0,0,0);	RenderHorz (data,view->map[AXIS_ACROSS],view->map[AXIS_DOWN],		view->map[AXIS_DEEP],view->map[AXIS_4D],view->map[AXIS_5D],		view->margins[MARGIN_LEFT],		view->margins[MARGIN_TOP]+MapSize(view->map[AXIS_DEEP]),		render,view->margins,_attr_);	RENDER_ATTR(0,1,DRAW_ALL,0,0,(AXIS_BASE),0,0,0,0);	RenderVert (data,view->map[AXIS_DEEP],view->map[AXIS_DOWN],		view->map[AXIS_ACROSS],view->map[AXIS_4D],view->map[AXIS_5D],		view->margins[MARGIN_LEFT]+MapSize(view->map[AXIS_ACROSS])+1,		MapSize(view->map[AXIS_DEEP])+view->margins[MARGIN_TOP],		render,view->margins,_attr_);	RENDER_ATTR(0,1,DRAW_ALL,0,0,(AXIS_LEFT),0,0,0,0);	RenderHorz (data,view->map[AXIS_ACROSS],view->map[AXIS_DEEP],		view->map[AXIS_DOWN],view->map[AXIS_4D],view->map[AXIS_5D],		view->margins[MARGIN_LEFT],		view->margins[MARGIN_TOP],		render,view->margins,_attr_);	MapSaveFrame (ViewMovieMap(view));	switch (view->movie) {	case MOVIE_FRONT:		MapSetFrame1 (view->map[AXIS_DEEP],0);		break;	case MOVIE_SIDE:		MapSetFrame1 (view->map[AXIS_ACROSS],0);		break;	case MOVIE_TOP:		MapSetFrame1 (view->map[AXIS_DOWN],MapSize(view->map[AXIS_DOWN])-1);		break;		}	UITimer(1,ViewDrawTranspCallback);	DrawLine (view->margins[MARGIN_LEFT],		view->margins[MARGIN_TOP]+MapSize(view->map[AXIS_DEEP]),		view->margins[MARGIN_LEFT]+MapSize(view->map[AXIS_ACROSS]),		view->margins[MARGIN_TOP]+MapSize(view->map[AXIS_DEEP]),		DRAW);	DrawLine (view->margins[MARGIN_LEFT]+MapSize(view->map[AXIS_ACROSS])+		MapSize(view->map[AXIS_DEEP]),		view->margins[MARGIN_TOP],		view->margins[MARGIN_LEFT]+MapSize(view->map[AXIS_ACROSS]),		view->margins[MARGIN_TOP]+MapSize(view->map[AXIS_DEEP]),		DRAW);	DrawLine (view->margins[MARGIN_LEFT]+MapSize(view->map[AXIS_ACROSS]),		view->margins[MARGIN_TOP]+MapSize(view->map[AXIS_DOWN])+		MapSize(view->map[AXIS_DEEP]),		view->margins[MARGIN_LEFT]+MapSize(view->map[AXIS_ACROSS]),		view->margins[MARGIN_TOP]+MapSize(view->map[AXIS_DEEP]),		DRAW);	DrawLine (view->margins[MARGIN_LEFT]+MapSize(view->map[AXIS_DEEP]),		view->margins[MARGIN_TOP],		view->margins[MARGIN_LEFT]+MapSize(view->map[AXIS_DEEP])+		MapSize(view->map[AXIS_ACROSS]),		view->margins[MARGIN_TOP],		DRAW);	DrawLine (view->margins[MARGIN_LEFT]+MapSize(view->map[AXIS_ACROSS])+		MapSize(view->map[AXIS_DEEP]),		view->margins[MARGIN_TOP],		view->margins[MARGIN_LEFT]+MapSize(view->map[AXIS_DEEP])+		MapSize(view->map[AXIS_ACROSS]),		view->margins[MARGIN_TOP]+MapSize(view->map[AXIS_DOWN]),		DRAW);	}/* callback to animate transparent drawing */ViewDrawTranspCallback ()	{	extern View view;	extern Render render;	extern Data data;	extern ViewDrawTranspCallback();	int block;	switch (view->rate) {	case VIEW_RATE_ALL: block = 1; break;	case VIEW_RATE_TENTHS: block = 10; break;	case VIEW_RATE_EACH: block = 10000; break;		}	switch (view->movie) {	/* front */	case MOVIE_FRONT:		block = MapSize (view->map[AXIS_DEEP]) / block;		block = block > 0 ? block : 1;		MapSetFrame (view->map[AXIS_DEEP],		MapMap(view->map[AXIS_DEEP],MapFrame1(view->map[AXIS_DEEP])));		RENDER_ATTR(1,0,0,0,1,0,0,0,0,0);		RenderHorz (data,view->map[AXIS_ACROSS],			view->map[AXIS_DOWN],view->map[AXIS_DEEP],view->map[AXIS_4D],view->map[AXIS_5D],			view->margins[MARGIN_LEFT]+			MapSize(view->map[AXIS_DEEP])-			MapFrame1(view->map[AXIS_DEEP]),			view->margins[MARGIN_TOP] +			MapFrame1(view->map[AXIS_DEEP]),			render,view->margins,_attr_);		if (MapFrame1(view->map[AXIS_DEEP]) && (MapFrame1(view->map[AXIS_DEEP])%block) == 0) {			RenderDraw ();			}		if (MapFrame1(view->map[AXIS_DEEP]) < MapSize(view->map[AXIS_DEEP])-1) {			UITimer(1,ViewDrawTranspCallback);			}		else	{			RenderDraw ();			MapRestoreFrame (view->map[AXIS_DEEP]);			TymeEnd (MapSize (view->map[AXIS_DOWN]) *				MapSize (view->map[AXIS_ACROSS]) *				MapSize(view->map[AXIS_DEEP]));		DrawWatch(0);			}		MapSetFrame1 (view->map[AXIS_DEEP],MapFrame1(view->map[AXIS_DEEP])+1);		break;	/* side */	case MOVIE_SIDE:		block = MapSize (view->map[AXIS_ACROSS]) / block;		block = block > 0 ? block : 1;		MapSetFrame (view->map[AXIS_ACROSS],		MapMap(view->map[AXIS_ACROSS],MapFrame1(view->map[AXIS_ACROSS])));		RENDER_ATTR(1,1,0,0,1,0,0,0,0,0);		RenderVert (data,view->map[AXIS_DEEP],view->map[AXIS_DOWN],			view->map[AXIS_ACROSS],view->map[AXIS_4D],view->map[AXIS_5D],			view->margins[MARGIN_LEFT]+MapFrame1(view->map[AXIS_ACROSS]),			MapSize(view->map[AXIS_DEEP])+view->margins[MARGIN_TOP],			render,view->margins,_attr_);		if (MapFrame1(view->map[AXIS_ACROSS]) && MapFrame1(view->map[AXIS_ACROSS])%block == 0) RenderDraw ();		if (MapFrame1(view->map[AXIS_ACROSS]) < MapSize (view->map[AXIS_ACROSS])-1) {			UITimer(1,ViewDrawTranspCallback);			}		else	{			RenderDraw ();			MapRestoreFrame (view->map[AXIS_ACROSS]);			TymeEnd (MapSize (view->map[AXIS_DOWN]) *				MapSize (view->map[AXIS_ACROSS]) *				MapSize(view->map[AXIS_DEEP]));			DrawWatch(0);			}		MapSetFrame1 (view->map[AXIS_ACROSS],MapFrame1(view->map[AXIS_ACROSS])+1);		break;	/* top */	case MOVIE_TOP:		block = MapSize (view->map[AXIS_DOWN]) / block;		block = block > 0 ? block : 1;		MapSetFrame (view->map[AXIS_DOWN],		MapMap(view->map[AXIS_DOWN],MapFrame1(view->map[AXIS_DOWN])));		RENDER_ATTR(1,1,0,0,1,0,0,0,0,0);		RenderHorz (data,view->map[AXIS_ACROSS],			view->map[AXIS_DEEP],view->map[AXIS_DOWN],view->map[AXIS_4D],view->map[AXIS_5D],			view->margins[MARGIN_LEFT],			view->margins[MARGIN_TOP]+MapFrame1(view->map[AXIS_DOWN]),			render,view->margins,_attr_);		if (MapFrame1(view->map[AXIS_DOWN]) != MapSize(view->map[AXIS_DOWN])-1 && 			MapFrame1(view->map[AXIS_DOWN])%block == 0) {			RenderDraw ();			}		if (MapFrame1(view->map[AXIS_DOWN]) > 0) {			UITimer(1,ViewDrawTranspCallback);			}		else	{			RenderDraw ();			MapRestoreFrame (view->map[AXIS_DOWN]);			TymeEnd (MapSize (view->map[AXIS_DOWN]) *				MapSize (view->map[AXIS_ACROSS]) *				MapSize(view->map[AXIS_DEEP]));			DrawWatch (0);			}		MapSetFrame1 (view->map[AXIS_DOWN],MapFrame1(view->map[AXIS_DOWN])-1);		break;		}	}/* callback to draw entire view */ViewDrawAll ()	{	extern View view;	if (!view) return;	if (UIFirst()) MainFirst();	ColorbarDraw();	ViewDraw (view,DRAW_ALL);	if (view->style != VIEW_TRANSP) RenderDraw ();	}/* callback to draw only current movie frame panel plus crosslines */ViewDrawMovie ()	{	int h0, v0, nh, nv, mode=0;	extern View view;	extern ViewDrawMovie();	Map map;	if (!view) return;	map = ViewMovieMap (view);	MapNextFrame (map);	if (MovieCache()) mode = DrawPixmap(MapFrame(map));	mode = (1 - mode) * DRAW_IMAGE;	switch (view->movie) {	case MOVIE_TOP: ViewDraw (view,DRAW_TOP|mode); break;	case MOVIE_SIDE: ViewDraw (view,DRAW_SIDE|mode); break;	case MOVIE_FRONT: ViewDraw (view,DRAW_FRONT|mode); break;		}	if (mode) {		RenderDraw ();		if (MovieCache()) {			DrawSavePixmap (MapFrame(map));			}		}#ifdef XAW	if (MovieRun()) UITimer(MovieDelay()+1,ViewDrawMovie);#endif#ifdef XM	if (MovieRun()) UITimer(MovieDelay()*10+1,ViewDrawMovie);#endif	UIWakeup();	}/* set movie option */ViewSetMovie (movie)int movie;	{	extern View view;	Map map;	if (!view) return;	view->movie = movie;	map = ViewMovieMap (view);/*	PlaneFind (AxisDir(MapAxis(map)),NO_INDEX);*/	DrawFreePixmaps();	if (view->style == VIEW_TRANSP) ViewDraw (view,DRAW_ALL);	}/* initialize movie bounds */ViewMovieFullBounds ()	{	int imap;	extern View view;	MovieOff ();	for (imap=1; imap<VIEW_NAXIS; imap++) {		MapSetFrameBounds (view->map[imap],MapFirst(view->map[imap]),			MapLast(view->map[imap]));		MapSetDmovie (view->map[imap],1);		}	}/* one of 3d views? */View3D ()	{	extern View view;	switch (view->style) {	case VIEW_THREE:	case VIEW_CUBE:	case VIEW_FENCE:		return (1);		break;	default:		return (0);		break;		}	}/* OK to turn on movie */ViewMovieOK ()	{	extern View view;	switch (view->style) {	case VIEW_CUBE:	case VIEW_THREE:	case VIEW_FRONT:	case VIEW_SIDE:	case VIEW_TOP:		return (1);		break;	default:		return (0);		break;		}	}/* set view option */ViewSetStyle (style)int style;	{	extern View view;	int size;	if (!view) return;	if (style == view->style) return;	view->style = style;	/* shape defaults with view style */	/* set movie directions too */	switch (style) {	case VIEW_TRANSP:		view->shape = SHAPE_PIXEL;		view->movie = MOVIE_SIDE;		break;	case VIEW_FRONT:		view->movie = MOVIE_FRONT;		break;	case VIEW_SIDE:		view->movie = MOVIE_SIDE;		break;	case VIEW_TOP:		view->movie = MOVIE_TOP;		break;		}	/* movie status */	if (ViewMovieOK () == 0) MovieOff ();	ViewSize (view);	ViewDraw (view,DRAW_ALL);	RenderDraw ();	}/* set fence mode */ViewSetFence (mode)int mode;	{	extern View view;	if (!view) return;	view->fence = mode;	view->style = VIEW_FENCE;	DrawFreePixmaps ();	ViewDraw (view,DRAW_ALL);	RenderDraw ();	}

⌨️ 快捷键说明

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