📄 stonemaker.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 + -