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

📄 mappoly.c

📁 nucleus 文件系统,内核和彩色图形系统,在小系统上非常好用
💻 C
字号:
/*                 MapPoly.C               11/5/99     */
/* *************************************************** */

#define byte unsigned char
#define word unsigned short
#include <stdlib.h>

#include "metawndo.h"      /* master MetaWINDOW include file */

void Waiting(int a);

void mappoly( )
{
	void quit(void);
   int      ScrnXmax,ScrnYmax,x,y,z,dx,dy,dxx,dyy;
	rect    sR, srcR, dstR;
   point    p_pts[7];   /* The polygon point series */
   polyHead p_hdr;      /* the polygon header array */ 
	mwEvent waitEvent;
	segPts s_pts[6];

   ScreenRect(&sR);
   RasterOp(zREPz);
   ScrnXmax = sR.Xmax;
   ScrnYmax = sR.Ymax;

   /* set up the  polygon header array */
   p_hdr.polyBgn = 0;
   p_hdr.polyEnd = 6;
   p_hdr.polyRect= sR;

   dx = (ScrnXmax+1)/4; dy=(ScrnYmax+1)/4;
   dxx = dx/5;
   dyy = dy/6;

   PenColor(-1);
   BackColor(0);
   EraseRect(&sR);

   x=0;
   y=0;
   z=0;

	p_pts[z].X = x; 
	p_pts[z].Y = y;
	z++;

	p_pts[z].X = x+((dx-dxx)/2);
	p_pts[z].Y = y+(dy-dyy);
	z++;

	p_pts[z].X = x+(dx-dxx); 
	p_pts[z].Y = y;
	z++;

	p_pts[z].X = x+(dx-dxx);
	p_pts[z].Y = y+(dy-dyy);
	z++;


	p_pts[z].X = x+((dx-dxx)/2); 
	p_pts[z].Y = y;
	z++;

	p_pts[z].X = x;
	p_pts[z].Y = y+(dy-dyy);
	z++;

	p_pts[z].X = x; 
	p_pts[z].Y = y;

	FillPoly(1,&p_hdr,p_pts,9);
	MoveTo( p_pts[5].X,p_pts[5].Y + 10 );
	DrawString( "FillPoly" );

	srcR.Xmin = x;
	srcR.Ymin = y;
	srcR.Xmax = srcR.Xmin + (dx-dxx);
	srcR.Ymax = srcR.Ymin + (dy-dyy);
	dstR.Xmin = x + (dx << 1);
	dstR.Ymin = y;
	dstR.Xmax = dstR.Xmin + (dx << 1);
	dstR.Ymax = dstR.Ymin + (dy << 1);
	MapPoly(1, &p_hdr, p_pts, &srcR, &dstR);
	FillPoly(1,&p_hdr,p_pts,14);
	MoveTo( p_pts[5].X,p_pts[5].Y + 10 );
	DrawString( "MapPoly" );

	s_pts[0].sX1 = p_pts[0].X;
	s_pts[0].sY1 = p_pts[0].Y + (dy << 1);
	s_pts[0].sX2 = p_pts[1].X - dxx;
	s_pts[0].sY2 = p_pts[1].Y + (dy << 1);
	s_pts[0].sCap = 0;

	s_pts[1].sX1 = p_pts[1].X;
	s_pts[1].sY1 = p_pts[1].Y + (dy << 1);
	s_pts[1].sX2 = p_pts[2].X - dxx;
	s_pts[1].sY2 = p_pts[2].Y + (dy << 1);
	s_pts[1].sCap = 0;

	s_pts[2].sX1 = p_pts[2].X;
	s_pts[2].sY1 = p_pts[2].Y + (dy << 1) + dyy;
	s_pts[2].sX2 = p_pts[3].X;
	s_pts[2].sY2 = p_pts[3].Y + (dy << 1) - dyy;
	s_pts[2].sCap = 0;

	s_pts[3].sX1 = p_pts[3].X - dxx;
	s_pts[3].sY1 = p_pts[3].Y + (dy << 1);
	s_pts[3].sX2 = p_pts[4].X;
	s_pts[3].sY2 = p_pts[4].Y + (dy << 1);
	s_pts[3].sCap = 0;

	s_pts[4].sX1 = p_pts[4].X - dxx;
	s_pts[4].sY1 = p_pts[4].Y + (dy << 1);
	s_pts[4].sX2 = p_pts[5].X;
	s_pts[4].sY2 = p_pts[5].Y + (dy << 1);
	s_pts[4].sCap = 0;

	s_pts[5].sX1 = p_pts[5].X - dxx;
	s_pts[5].sY1 = p_pts[5].Y + (dy << 1) - dyy;
	s_pts[5].sX2 = p_pts[6].X - dxx;
	s_pts[5].sY2 = p_pts[6].Y + (dy << 1) + dyy;
	s_pts[5].sCap = 0;

	PolySegment(6, s_pts);
	MoveTo( s_pts[4].sX2,s_pts[4].sY2 + 10 );
	DrawString( "PolySegment" );

#ifndef CYCLE
	MoveTo( 0,sR.Ymax - 20 );
	DrawString( "Press 'x' to exit" );
	MoveTo( 0,sR.Ymax - 10 );
	DrawString( "any other key to continue" );
	  while(!KeyEvent(1, &waitEvent));
	  if((waitEvent.eventChar == 'x') || (waitEvent.eventChar == 'X')) quit();
#else
#ifdef _MNT_
	  KeyEvent(0, &waitEvent);
	  if((waitEvent.eventChar == 'x') || (waitEvent.eventChar == 'X')) quit();
#endif
   Waiting(150);
#endif
 
}


⌨️ 快捷键说明

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