📄 toolitem.java
字号:
//Something that you can click on and select as a drawing tool//Something that controls an AsciiDrawPanel (sets its color)//This is similar to the paletteItem class.////// Each item has a certain pre-defined size.// This carries an ICON which is just a description of where// the pixels of the item's picture should be drawn.// When selected, all white space is yellow.//
package joeh.asciidraw;import java.awt.*;import java.applet.*;import java.util.*;public class toolItem extends Panel { boolean isSelected = false; int kind; ICON icon; AsciiDrawPanel adp; public toolItem(ICON icn, int k, AsciiDrawPanel whatToControl) { adp = whatToControl; kind = k; icon = icn; } public int getKind () { return kind; } public void deselect() { isSelected = false; this.repaint(); } private void drawNormalBox(Graphics gg){ //DRAW A YELLOW BACKGROUND int w = this.size().width; int h = this.size().height; gg.setColor(Color.white); gg.fillRect(0,0,w,h); } private void drawSelectionBox(Graphics gg){ //DRAW A WHITE BACKGROUND int w = this.size().width; int h = this.size().height; gg.setColor(Color.yellow); gg.fillRect(0,0,w,h); } public void select() { isSelected = true; adp.setTool(kind); //set it in the draw window adp.setToolSelection(this); //Graphics g = this.getGraphics(); //drawSelectionBox(g); this.repaint(); } public void paint(Graphics g) { int w = this.size().width; int h = this.size().height; if (isSelected) drawSelectionBox(g); else drawNormalBox(g); icon.drawMe(g, Color.blue, 2, 2); //2 is the border ne } public Dimension minimumSize() { //The size of an ICON return preferredSize(); } public Dimension preferredSize() { return new Dimension(30, 30); }public boolean handleEvent(Event evt) { switch(evt.id) { case Event.MOUSE_DOWN: { select(); adp.requestFocus(); //give the focus back to the panel so that //it can be typed to without first having to click the mouse there. return true; } } return true; } }class ICON extends Object {//How to draw an icon is hardcoded. We just choose based on kind.// Why and how::// Well, in the AsciiDraw.java file where it outputs the data// to ascii there is a flag to control the output of the// java code used below. In other words, I used ascii draw// to draw the icons, then I outputted the java code, stuck it in here// and re-compiled. Cool eh.int myKind;Image selectedImage;Image unselectedImage;boolean firstSel = true;boolean firstUn = true; public ICON(int kind) { myKind = kind; } public void drawMe(Graphics g, Color c, int x, int y) { g.setColor(c); //loop through data structure to draw self if (myKind == ToolType.PENCIL) drawPENCIL(g); else if (myKind == ToolType.FILL) drawFILL(g); else if (myKind == ToolType.BRUSH) drawBRUSH(g); }//Here (these drawXXXXX routines) is one of two places where this program helped make itself!private void drawPENCIL(Graphics g) {// Generated by AsciiDraw// (c) 1996, Joe Heitzeberg.// If you want some picture to be used in a Java// program, but you don't want to code it up,// just draw it with AsciiDraw and output the code!// Because it is hard-coded, it is fast...g.setColor(new Color(-8650628));g.fillRect(11, 2, 1, 1); g.setColor(new Color(-5111630));g.fillRect(12, 2, 2, 1); g.setColor(new Color(-65281));g.fillRect(14, 2, 4, 1); g.setColor(new Color(-8650628));g.fillRect(11, 3, 1, 1); g.setColor(new Color(-5111630));g.fillRect(12, 3, 2, 1); g.setColor(new Color(-65281));g.fillRect(14, 3, 4, 1); g.setColor(new Color(-8650628));g.fillRect(11, 4, 1, 1); g.setColor(new Color(-5111630));g.fillRect(12, 4, 2, 1); g.setColor(new Color(-65281));g.fillRect(14, 4, 4, 1); g.setColor(new Color(-12698050));g.fillRect(11, 5, 1, 1); g.setColor(new Color(-10921639));g.fillRect(12, 5, 1, 1); g.setColor(new Color(-8355712));g.fillRect(13, 5, 1, 1); g.setColor(new Color(-10921639));g.fillRect(14, 5, 1, 1); g.setColor(new Color(-12698050));g.fillRect(15, 5, 1, 1); g.setColor(new Color(-8355712));g.fillRect(16, 5, 2, 1); g.setColor(new Color(-12698050));g.fillRect(11, 6, 1, 1); g.setColor(new Color(-10921639));g.fillRect(12, 6, 1, 1); g.setColor(new Color(-8355712));g.fillRect(13, 6, 1, 1); g.setColor(new Color(-10921639));g.fillRect(14, 6, 1, 1); g.setColor(new Color(-12698050));g.fillRect(15, 6, 1, 1); g.setColor(new Color(-8355712));g.fillRect(16, 6, 2, 1); g.setColor(new Color(-12698050));g.fillRect(11, 7, 1, 1); g.setColor(new Color(-10921639));g.fillRect(12, 7, 1, 1); g.setColor(new Color(-8355712));g.fillRect(13, 7, 1, 1); g.setColor(new Color(-10921639));g.fillRect(14, 7, 1, 1); g.setColor(new Color(-12698050));g.fillRect(15, 7, 1, 1); g.setColor(new Color(-8355712));g.fillRect(16, 7, 2, 1); g.setColor(new Color(-8625664));g.fillRect(11, 8, 2, 1); g.setColor(new Color(-5075968));g.fillRect(13, 8, 3, 1); g.setColor(new Color(-14336));g.fillRect(16, 8, 2, 1); g.setColor(new Color(-8625664));g.fillRect(11, 9, 2, 1); g.setColor(new Color(-5075968));g.fillRect(13, 9, 3, 1); g.setColor(new Color(-14336));g.fillRect(16, 9, 2, 1); g.setColor(new Color(-8625664));g.fillRect(11, 10, 2, 1); g.setColor(new Color(-5075968));g.fillRect(13, 10, 3, 1); g.setColor(new Color(-14336));g.fillRect(16, 10, 2, 1); g.setColor(new Color(-8625664));g.fillRect(11, 11, 2, 1); g.setColor(new Color(-5075968));g.fillRect(13, 11, 3, 1); g.setColor(new Color(-14336));g.fillRect(16, 11, 2, 1); g.setColor(new Color(-8625664));g.fillRect(11, 12, 2, 1); g.setColor(new Color(-5075968));g.fillRect(13, 12, 3, 1); g.setColor(new Color(-14336));g.fillRect(16, 12, 2, 1); g.setColor(new Color(-8625664));g.fillRect(11, 13, 2, 1); g.setColor(new Color(-5075968));g.fillRect(13, 13, 3, 1); g.setColor(new Color(-14336));g.fillRect(16, 13, 2, 1); g.setColor(new Color(-8625664));g.fillRect(11, 14, 2, 1); g.setColor(new Color(-5075968));g.fillRect(13, 14, 3, 1); g.setColor(new Color(-14336));g.fillRect(16, 14, 2, 1); g.setColor(new Color(-8625664));g.fillRect(11, 15, 2, 1); g.setColor(new Color(-5075968));g.fillRect(13, 15, 3, 1); g.setColor(new Color(-14336));g.fillRect(16, 15, 2, 1); g.setColor(new Color(-8625664));g.fillRect(11, 16, 2, 1); g.setColor(new Color(-5075968));g.fillRect(13, 16, 3, 1); g.setColor(new Color(-14336));g.fillRect(16, 16, 2, 1); g.setColor(new Color(-8625664));g.fillRect(11, 17, 2, 1); g.setColor(new Color(-5075968));g.fillRect(13, 17, 3, 1); g.setColor(new Color(-14336));g.fillRect(16, 17, 2, 1); g.setColor(new Color(-8625664));g.fillRect(11, 18, 2, 1); g.setColor(new Color(-5075968));g.fillRect(13, 18, 3, 1); g.setColor(new Color(-14336));g.fillRect(16, 18, 2, 1); g.setColor(new Color(-8625664));g.fillRect(11, 19, 2, 1); g.setColor(new Color(-5075968));g.fillRect(13, 19, 3, 1); g.setColor(new Color(-14336));g.fillRect(16, 19, 2, 1); g.setColor(new Color(-8625664));g.fillRect(11, 20, 2, 1); g.setColor(new Color(-5075968));g.fillRect(13, 20, 3, 1); g.setColor(new Color(-14336));g.fillRect(16, 20, 2, 1); g.setColor(new Color(-8625664));g.fillRect(12, 21, 1, 1); g.setColor(new Color(-5075968));g.fillRect(13, 21, 3, 1); g.setColor(new Color(-14336));g.fillRect(16, 21, 1, 1); g.setColor(new Color(-8355712));g.fillRect(12, 22, 1, 1); g.setColor(new Color(-12698050));g.fillRect(13, 22, 1, 1); g.setColor(new Color(-5075968));g.fillRect(14, 22, 1, 1); g.setColor(new Color(-12698050));g.fillRect(15, 22, 1, 1); g.setColor(new Color(-8355712));g.fillRect(16, 22, 1, 1); g.fillRect(12, 23, 1, 1); g.setColor(new Color(-12698050));g.fillRect(13, 23, 1, 1); g.setColor(new Color(-16777216));g.fillRect(14, 23, 1, 1); g.setColor(new Color(-12698050));g.fillRect(15, 23, 1, 1); g.setColor(new Color(-8355712));g.fillRect(16, 23, 1, 1); g.fillRect(12, 24, 1, 1); g.setColor(new Color(-12698050));g.fillRect(13, 24, 1, 1); g.setColor(new Color(-16777216));g.fillRect(14, 24, 1, 1); g.setColor(new Color(-12698050));g.fillRect(15, 24, 1, 1); g.setColor(new Color(-8355712));g.fillRect(16, 24, 1, 1); g.setColor(new Color(-12698050));g.fillRect(13, 25, 1, 1); g.setColor(new Color(-16777216));g.fillRect(14, 25, 1, 1); g.setColor(new Color(-12698050));g.fillRect(15, 25, 1, 1); g.setColor(new Color(-16777216));g.fillRect(14, 26, 1, 1); //End of AsciiDraw generated code section.}private void drawFILL(Graphics g) {// Generated by AsciiDraw// (c) 1996, Joe Heitzeberg.// If you want some picture to be used in a Java// program, but you don't want to code it up,// just draw it with AsciiDraw and output the code!// Because it is hard-coded, it is fast, compact and// can be used over firewalls!g.setColor(new Color(-16777216));g.fillRect(12, 0, 4, 1); g.fillRect(11, 1, 1, 1); g.fillRect(15, 1, 1, 1); g.fillRect(11, 2, 1, 1); g.fillRect(15, 2, 1, 1); g.fillRect(11, 3, 1, 1); g.fillRect(15, 3, 1, 1); g.fillRect(11, 4, 1, 1); g.fillRect(14, 4, 3, 1); g.fillRect(11, 5, 1, 1); g.fillRect(13, 5, 1, 1); g.setColor(new Color(-8355712));g.fillRect(14, 5, 1, 1);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -