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

📄 stonemaker.java

📁 ErGo是一个很早的Java通用围棋服务器(IGS/NNGS)客户端程序。有全部源码和文档
💻 JAVA
字号:
package ergo.ui;

// $Id: StoneMaker.java,v 1.3 1999/08/15 01:40:29 sigue Exp $

/*
 *  Copyright (C) 1999  Carl L. Gay and Antranig M. Basman.
 *  See the file copyright.txt, distributed with this software,
 *  for further information.
 */

import ergo.server.*;
import ergo.util.*;
import ergo.logic.*;
import ergo.*;

import java.awt.*;
import java.awt.event.*;

/*
 * This class constructs a stone RawImage of the requisite type.
 * To convert to Image, use new Image(RawImage.mis()).
 */

class StoneMaker implements Styles {
  private static RawImage templarge = new RawImage();
  private static Circle circle = new Circle();
  /* Make a stone image - style parameter is now used;
     STYLE_BASIC = basic, STYLE_ANTIN = anti-aliased, STYLE_3D = 3d-stones.
     background Color is only used for non-basic stones.
   */
  public static RawImage makeStoneImage(int color, boolean transparent, int size, int style,
				      int backgroundcol, double adjustsize) {
    int alphavalue;
    if (transparent) alphavalue = 128;
    else alphavalue = 255;
    Color insidecolor;
    Color rimcolor;
    int rim = 8;
    switch (color) {
    case Move.WHITE:
      insidecolor = Color.white;
      rimcolor = Color.black;
      rim = 8;
      break;
    case Move.BLACK:
      insidecolor = Color.black;
      if (style == 1) rimcolor = new Color(220,220,220);
      else rimcolor = new Color(200,200,200);
      rim = 8;
      break;
    case Move.BOTH:		// reserved for future "gray blocking stones", scoring.
      insidecolor = Color.lightGray;
      rimcolor = Color.black;
      break;
    default:
      return null;
    }
    RawImage ret = null;
    switch (style) {
    case STONE_BASIC:
      ret = new RawImage(size, size);
      circle.fillcirc(ret, ImArith.getFullColor(insidecolor, alphavalue),
		      size-1);
      circle.emptycirc(ret, ImArith.getFullColor(rimcolor, alphavalue),
		       size-1);
      break;
    case STONE_ANTIN:
      int stoneDiameter = size*4 - 3;
      synchronized(templarge) {
	templarge.reinit(size*4, size*4).blank(backgroundcol);
	circle.fillcirc(templarge, ImArith.getFullColor(rimcolor, alphavalue),
			stoneDiameter);
	circle.fillcirc(templarge, ImArith.getFullColor(insidecolor, alphavalue),
			stoneDiameter-rim);
	ret = ImArith.antin(templarge, 4);
	templarge.reinit(1,1);	// Might save some memory.
      }
      break;
    case STONE_3D:
      ret = RayInnaBox.blackStone(size, (color == Move.BLACK? 0 : 1),
				  backgroundcol, alphavalue, adjustsize);
    }
    return ret;
  }

}

⌨️ 快捷键说明

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