示例#1
0
int main()
{
    time_t time_now ;
    int win ;
    char d0[8],d1[8],d2[8],d3[8], t0[16] ;

    gsetinitialattributes(ENABLE,DOCK_APPLICATION) ;
    win = gopen(56,56) ;
    layer(win,0,1) ;
    while(1){
	time(&time_now) ;
	sscanf(ctime(&time_now),"%s %s %s %s %s\n",d0,d1,d2,t0,d3) ;
	gclr(win) ;
	newrgbcolor(win,0xff,0xff,0xff) ;
	drawstr(win,4,1, 8 ,0,"%s %s %s",d0,d1,d2) ;
	drawstr(win,4,46, 10 ,0,"%s",t0) ;
	gputimage(win,0,10,Ppmimage,PPM_WIDTH,PPM_HEIGHT,0) ;
	newrgbcolor(win,0x40,0x40,0x40) ;
	moveto(win,0,0) ;
	lineto(win,0,55) ;
	lineto(win,55,55) ;
	newrgbcolor(win,0xe7,0xe7,0xe7) ;
	lineto(win,55,0) ;
	lineto(win,0,0) ;
	copylayer(win,1,0) ;
	msleep(200) ;
    }
    gcloseall() ;
    return(0) ;
}
示例#2
0
/*背景の関数*/
void background(void){
  newrgbcolor(win, 35, 71, 148); 
  fillrect(win, 0, 650, 800, 150);
  
  newrgbcolor(win, 188, 118, 60);  
  fillrect(win, 0, 0, 800, 650);
}
示例#3
0
static void remake_tree(int win, double order, double rt, double ra,
			double rnd, int bgcolor_r, int bgcolor_g,
			int bgcolor_b)
{
  Cdbl z2 = 0 + 0.9 * L / (1 - pow(rt, order + 1)) * I;
  Cdbl z1 = 0;
  int i;
  /* 背景色専用レイヤ */
  layer(win, 0, 2);
  for (i = 0; i < L; i++) {
    newrgbcolor(win, bgcolor_r + 128.0 * i / L,
		bgcolor_g + 128.0 * i / L, bgcolor_b + 128.0 * i / L);
    drawline(win, -L / 2, i, L / 2 - 1, i);
  }
  /* treeのマスク専用レイヤ */
  layer(win, 0, 4);
  gsetbgcolor(win, "#ffffff");
  gclr(win);
  newcolor(win, "#000000");
  btree(win, z1, z2, order, rt, ra, rnd);
  /* treeの専用レイヤ */
  layer(win, 0, 3);
  gsetbgcolor(win, "#003300");
  gclr(win);
  newgcfunction(win, GXandInverted);
  gputarea(win, -L / 2, 0, win, 4, -L / 2, 0, L / 2 - 1, L - 1);
  newgcfunction(win, GXcopy);
  newcolor(win, "white");
  drawstr(win, L / 2 - 180, 4, 14, 0, "Background Color: "
	  "#%02x%02x%02x", bgcolor_r, bgcolor_g, bgcolor_b);
}
示例#4
0
static void draw(int win, float snowx[], float snowy[], int nsnow)
{
  int i;
  float *snowx_p;
  float *snowy_p;

  /* 1番は背景専用レイヤ */
  layer(win, 0, 1);
  /* 背景色レイヤをコピー */
  copylayer(win, 2, 1);

  /* 遠くの雪 */
  newrgbcolor(win, 0x0bf, 0x0bf, 0x0bf);
  snowx_p = snowx;
  snowy_p = snowy;
  for (i = 0; i < nsnow / 2; i++) {
    snowx_p[i] += (2.0 * (drand48() - 0.5)) * 0.5;
    snowy_p[i] -= (2.5 + drand48()) * 0.5;
    if (snowy_p[i] <= 0.0)
      snowy_p[i] = L;
  }
  drawpts(win, snowx_p, snowy_p, nsnow / 2);

  /* 木(マスクつき)をコピー */
  newgcfunction(win, GXand);
  gputarea(win, -L / 2, 0, win, 4, -L / 2, 0, L / 2 - 1, L - 1);
  newgcfunction(win, GXor);
  gputarea(win, -L / 2, 0, win, 3, -L / 2, 0, L / 2 - 1, L - 1);
  newgcfunction(win, GXcopy);

  /* 近くの雪 */
  newrgbcolor(win, 0x0ff, 0x0ff, 0x0ff);
  snowx_p = snowx + nsnow / 2;
  snowy_p = snowy + nsnow / 2;
  for (i = 0; i < nsnow / 2; i++) {
    snowx_p[i] += 2.0 * (drand48() - 0.5);
    snowy_p[i] -= 2.5 + drand48();
    if (snowy_p[i] <= 0.0)
      snowy_p[i] = L;
  }
  drawpts(win, snowx_p, snowy_p, nsnow / 2);

  copylayer(win, 1, 0);
}
示例#5
0
/*木の幹を描く関数*/
void branch(void){
  float x1[5], x2[4],  x4[4], x6[4], x8[4];//x座標の配列
  float y1[5], y2[4],  y4[4], y6[4], y8[4];//y座標の配列
  
  
  /*主幹を描く*/
  newrgbcolor(win, 107, 74, 43);
  x1[0]=800.0;    y1[0]=435.0;
  x1[1]=611.0;    y1[1]=637.0;
  x1[2]=408.0;    y1[2]=787.0;
  x1[3]=616.0;    y1[3]=657.0;
  x1[4]=800.0;    y1[4]=464.0;
  
  fillpoly(win, x1, y1, 5, 0);

  /*葉っぱと幹のつなぎ(メイン部分)*/
  x2[0]=430.0;    y2[0]=769.0;
  x2[1]=423.0;    y2[1]=761.0;
  x2[2]=426.0;    y2[2]=761.0;
  x2[3]=436.0;    y2[3]=764.0;
  
  fillpoly(win, x2, y2, 4, 0);

  /*葉っぱのつなぎ(右上部分)*/
  x4[0]=586.0;    y4[0]=672.0;/*左下*/
  x4[1]=614.0;    y4[1]=672.0;/*右下*/
  x4[2]=616.0;    y4[2]=676.0;/*右上*/
  x4[3]=582.0;    y4[3]=675.0;/*左上*/
  
  fillpoly(win, x4, y4, 4, 0);

  /*葉っぱのつなぎ部分(右下部分)*/
  x6[0]=652.0;    y6[0]=617.0;//左上
  x6[1]=648.0;    y6[1]=588.0;//左下
  x6[2]=654.0;    y6[2]=589.0;//右下
  x6[3]=656.0;    y6[3]=613.0;//右上
  
  fillpoly(win, x6, y6, 4, 0);
  
  /*枝だけの部分*/
  x8[0]=725.0;    y8[0]=535.0;
  x8[1]=738.0;    y8[1]=553.0;
  x8[2]=743.0;    y8[2]=548.0;
  x8[3]=730.0;    y8[3]=534.0;
  
  fillpoly(win, x8, y8, 3, 0);
}
示例#6
0
文件: rod_ctrl.c 项目: cyamauch/eggx
void draw(void *_prms)
{
  param_set *p = (param_set *) _prms;
  double x, y ; 
  double rad ;
  char tstr[20];

  rad = p->r[0];

  y = L*cos(rad)*SC; 
  x = L*sin(rad)*SC;
  gclr(*p->win);
  sprintf(tstr, "t = %.4f", *p->t);
  newrgbcolor(*p->win, 204,153, 0);
  fillrect(*p->win, -WD/2, -MG, WD, 18);
  newpen(*p->win, 1);
  moveto(*p->win, -x, 0);
  lineto(*p->win, x, 2*y);
  drawstr(*p->win, -WD/2+MG, HT-2*MG, 14, 0, tstr);
  copylayer(*p->win, 1, 0);
}
示例#7
0
文件: roche.c 项目: cyamauch/eggx
int main()
{
    int i,j,key,sl=0,wl=1 ;
    int shape_i = 11, shape_j = 4 ;
    float f=MRATIO_F ;
    float x,y,zx,zy,z,ph,ms_w,ms_h ;
    float zran=(ZMAX-ZMIN) ;
    float zcen=(ZMAX+ZMIN)/2.0 ;
    color_prms cl = {
	EGGX_COLOR_BEGIN,			/* カラーパターン */
	CP_CONTRAST | CP_BRIGHTNESS | CP_GAMMA,	/* フラグ */
	1.0,					/* コントラスト */
	0.0,					/* ブライトネス*/
	1.0,					/* γ */
    } ;
    int win ;
    int cl_r,cl_g,cl_b ;

    win=gopen(WINWIDTH,WINHEIGHT) ;	/* ウィンドゥのタイトル */
    /* 座標系を変更する */
    coordinate(win, 0,0, XMIN,YMIN, 
	       WINWIDTH/(XMAX-XMIN), WINHEIGHT/(YMAX-YMIN)) ;
    layer(win,sl,wl) ;

    puts("【キーボードでの操作方法】") ;
    puts("'PageUp','PageDown'  … 質量比変更") ;
    puts("'c','C'              … カラーパターン") ;
    puts("'↑','↓','←','→'  … カラー調整") ;
    puts("'[',']'              … コントラスト") ;
    puts("'{','}'              … ブライトネス") ;
    puts("'<','>'              … γ補正") ;
    puts("'s'                  … 画像を保存") ;
    puts("'q','Esc'            … 終了") ;

    ms_w=(float)(XMAX-XMIN)/XSAMPLES ;	/* メッシュ1個分のサイズ */
    ms_h=(float)(YMAX-YMIN)/YSAMPLES ;

    do{
	/* ウィンドゥのタイトル */
	winname(win,"ロッシュワールド('s'キーで画像save) f=%g zcen=%g zran=%g",
		f,zcen,zran) ;
	for( i=0 ; i<XSAMPLES ; i++ ){	/* ポテンシャルを色で表現 */
	    x=XMIN+ms_w*i ;
	    for( j=0 ; j<YSAMPLES ; j++ ){
		y=YMIN+ms_h*j ;
		ph=get_phi(x+ms_w/2.0,y+ms_w/2.0,f) ;
		generatecolor(&cl,zcen-zran/2,zcen+zran/2,ph,
			      &cl_r,&cl_g,&cl_b) ;
		newrgbcolor(win,cl_r,cl_g,cl_b) ;
		fillrect(win,x,y,ms_w*1.5,ms_h*1.5) ;
	    }
	}
	newpen(win,1) ;
	for( i=0 ; i<XSAMPLES ; i++ ){	/* テスト粒子に働く力を矢印で表現 */
	    x=XMIN+ms_w*(i+0.5) ;
	    for( j=0 ; j<YSAMPLES ; j++ ){
		y=YMIN+ms_h*(j+0.5) ;
		zx=get_fx(x,y,f) ;
		zy=get_fy(x,y,f) ;
		zx *= VXSCALE ;
		zy *= VYSCALE ;
		z=sqrt(zx*zx+zy*zy) ;
		if( z <= VCARMAX ){
		    drawarrow(win,x-zx,y-zy,x+zx,y+zy,0.3,0.2,
			      shape_i*10+shape_j) ;
		}
	    }
	}
	sl ^= 1 ;				/* XORをとってレイヤを切替 */
	wl ^= 1 ;
	layer( win,sl,wl ) ;
	key=ggetch() ;				/* キー入力があるまで待つ */
	if( key == 0x002 ) f += 0.1 ;		/* PageUp */
	else if( key == 0x006 ) f -= 0.1 ;	/* PageDown */
	else if( key == 0x01e ) zcen += 0.1 ;	/* ↑ */
	else if( key == 0x01f ) zcen -= 0.1 ;	/* ↓ */
	else if( key == 0x01c ) zran += 0.1 ;	/* → */
	else if( key == 0x01d ) zran -= 0.1 ;	/* ← */
	else if( key == 'i' ) {
	    shape_i += 1 ;
	    if ( 12 < shape_i ) shape_i = 10 ;
	}
	else if( key == 'j' ) {
	    shape_j += 1 ;
	    if ( 7 < shape_j ) shape_j = 1 ;
	}
	else if( key == 'c' ){			/* 'c','C'キーでカラーパターン変更 */
	    cl.colormode++ ;
	    if( EGGX_COLOR_BEGIN+EGGX_COLOR_NUM <= cl.colormode )
		cl.colormode=EGGX_COLOR_BEGIN ;
	}
	else if( key == 'C' ){
	    cl.colormode-- ;
	    if( cl.colormode < EGGX_COLOR_BEGIN )
		cl.colormode=EGGX_COLOR_BEGIN+EGGX_COLOR_NUM-1 ;
	}
	else if( key == '[' ){			/* '[',']'でコントラスト変更 */
	    cl.contrast += 0.05 ;
	    if( 1 < cl.contrast ) cl.contrast = 1 ;
	}
	else if( key == ']' ){
	    cl.contrast -= 0.05 ;
	    if( cl.contrast < 0 ) cl.contrast = 0 ;
	}
	else if( key == '{' ){			/* '{','}'でブライトネス変更 */
	    cl.brightness += 0.05 ;
	    if( 1 < cl.brightness ) cl.brightness = 1 ;
	}
	else if( key == '}' ){
	    cl.brightness -= 0.05 ;
	    if( cl.brightness < 0 ) cl.brightness = 0 ;
	}
	else if( key == '<' ){			/* '<','>'でγ変更 */
	    cl.gamma += 0.025 ;
	}
	else if( key == '>' ){
	    cl.gamma -= 0.025 ;
	    if( cl.gamma <= 0 ) cl.gamma = 0.025 ;
	}
	else if( key == 's' ){			/* 's'キーで保存 */
#ifdef USE_NETPBM
	    saveimg( win,sl,XMIN,YMIN,XMAX,YMAX,
		     "pnmtops -noturn -dpi 72 -equalpixels -psfilter -flate -ascii85",256,
		     "roche_f=%g.eps",f) ;
	    printf("画像を保存: filename='roche_f=%g.eps'\n",f) ;
#else
#ifdef USE_IMAGEMAGICK
	    saveimg( win,sl,XMIN,YMIN,XMAX,YMAX,"convert",256,
		     "roche_f=%g.png",f) ;
	    printf("画像を保存: filename='roche_f=%g.png'\n",f) ;
#else
	    saveimg( win,sl,XMIN,YMIN,XMAX,YMAX,"",256,
		     "roche_f=%g.ppm",f) ;
	    printf("画像を保存: filename='roche_f=%g.ppm'\n",f) ;
#endif
#endif
	}
	if( f < 0 ) f=0 ;
	if( zran < 0 ) zran=0.1 ;
    } while( key != 0x01b && key != 'q' ) ;	/* ESCキーか 'q'キーで終了 */

    gcloseall() ;
    return(0) ;
}