home *** CD-ROM | disk | FTP | other *** search
- import java.awt.*;
- import java.util.Hashtable;
- import java.io.*;
- import java.net.*;
-
- public class escherpaint extends java.applet.Applet {
- generic_paint paint;
- int size=2;
- int linex[],liney[];
- public boolean cut[];
- int l=0;
- int sym;
- boolean keydown=false;
- boolean clear=false;
- int last=0;
-
- public void init() {
-
- resize(300,300);
-
- linex = new int[5000];
- liney = new int[5000];
- cut =new boolean[5000];
- paint = new generic_paint(100,100);
- sym=0;
-
- requestFocus();
-
- }
- public void end(){
- }
- public void stop(){
- }
- public void update(Graphics g) {
- escher(g);
- }
- public void paint(Graphics g) {
- escher(g);
- }
- public void escher(Graphics g){
-
- if(clear){
- g.setColor(java.awt.Color.lightGray);
- g.fillRect(0,0,size().width,size().height);
- clear=false;
- }
- g.setColor(java.awt.Color.black);
- g.draw3DRect(0, 0, size().width-1, size().height-1,true);
-
- int x0=0,x1=0,y0=0,y1=0;
- int sodd=0,todd=0;
- int X0,X1,Y0,Y1;
-
- for (int i=last;i<l-1;i++){
-
- if(!cut[i]){
-
-
- for (int s=1;s<8;s++){
- for (int t=1;t<8;t++){
- sodd = s%2;
- todd = t%2;
- if(sodd==0 && todd==0){
- x0=linex[i];
- y0=liney[i];
- x1=linex[i+1];
- y1=liney[i+1];
- } else if(sodd==0 && todd==1){
- if(sym==0){
- x0=linex[i];
- y0=liney[i];
- x1=linex[i+1];
- y1=liney[i+1];
- } else if(sym==1){
- x0=100-linex[i];
- y0=liney[i];
- x1=100-linex[i+1];
- y1=liney[i+1];
- } else if(sym==2){
- x0=100-liney[i];
- y0=linex[i];
- x1=100-liney[i+1];
- y1=linex[i+1];
- } else if(sym==3){
- x0=100-linex[i];
- y0=liney[i];
- x1=100-linex[i+1];
- y1=liney[i+1];
- }
- } else if(sodd==1 && todd==0){
- if(sym==0){
- x0=linex[i];
- y0=liney[i];
- x1=linex[i+1];
- y1=liney[i+1];
- } else if(sym==1){
- x0=linex[i];
- y0=liney[i];
- x1=linex[i+1];
- y1=liney[i+1];
- } else if(sym==2){
- x0=liney[i];
- y0=100-linex[i];
- x1=liney[i+1];
- y1=100-linex[i+1];
- } else if(sym==3){
- x0=linex[i];
- y0=100-liney[i];
- x1=linex[i+1];
- y1=100-liney[i+1];
- }
- } else if(sodd==1 && todd==1){
- if(sym==0){
- x0=linex[i];
- y0=liney[i];
- x1=linex[i+1];
- y1=liney[i+1];
- } else if(sym==1){
- x0=100-linex[i];
- y0=liney[i];
- x1=100-linex[i+1];
- y1=liney[i+1];
- } else if(sym==2){
- x0=100-linex[i];
- y0=100-liney[i];
- x1=100-linex[i+1];
- y1=100-liney[i+1];
- } else if(sym==3){
- x0=100-linex[i];
- y0=100-liney[i];
- x1=100-linex[i+1];
- y1=100-liney[i+1];
- }
- }
- X0=x0+(s-4)*100;
- X1=x1+(s-4)*100;
- Y0=y0+(t-4)*100;
- Y1=y1+(t-4)*100;
- g.drawLine(X0,Y0,X1,Y1);
- g.drawLine(X0+1,Y0,X1+1,Y1);
- g.drawLine(X0,Y0+1,X1,Y1+1);
- g.drawLine(X0+1,Y0+1,X1+1,Y1+1);
- paint.drawLine(X0,Y0,X1,Y1);
- paint.drawLine(X0+1,Y0,X1+1,Y1);
- paint.drawLine(X0,Y0+1,X1,Y1+1);
- paint.drawLine(X0+1,Y0+1,X1+1,Y1+1);
- }}
- }
- }
- }
-
- public void sendImage(){
- try {
-
- URL url = new URL("http://www.neuro.sfc.keio.ac.jp/aly/hotjava/upload/whiteup.cgi?sym="+sym+"&size=100&image="+paint.string());
- getAppletContext().showDocument(url);
- clear();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
-
- public boolean mouseDown(java.awt.Event evt, int x, int y) {
-
- linex[l]=x;
- liney[l]=y;
- cut[l]=false;
- int dx=0,dy=0;
- boolean change=false;
- l++;
-
- if(l>1){
- if((liney[l-2]-liney[l-1])>80){
- dy=100; change=true;
- } else if((liney[l-1]-liney[l-2])>80){
- dy=-100; change=true;
- }
- if((linex[l-2]-linex[l-1])>80){
- dx=100; change=true;
- } else if((linex[l-1]-linex[l-2])>80){
- dx=-100; change=true;
- }
- }
- if(change){
- linex[l-1]=x+dx;
- liney[l-1]=y+dy;
- cut[l-1]=true;
-
- linex[l]=x;
- liney[l]=y;
- cut[l]=false;
- l++;
- }
- repaint();
- return true;
- }
- public boolean mouseDrag(java.awt.Event evt, int x, int y) {
- return mouseDown(evt, x,y);
- }
- public boolean mouseExit(java.awt.Event evt){
- paint.cut();
- last=l;
- return true;
- }
- public boolean mouseUp(java.awt.Event evt, int x,int y){
- cut[l-1]=true;
- paint.cut();
- last=l;
- return true;
- }
- public boolean keyDown(java.awt.Event evt, int key){
- char c=(char)key;
- if(c=='4'){
- sym=0;
- flush();
- } else if(c=='1'){
- sym=1;
- flush();
- } else if(c=='2'){
- sym=2;
- flush();
- } else if(c=='3'){
- sym=3;
- flush();
- } else if(c=='s'){
- sendImage();
- } else if(c=='r'){
- flush();
- } else if(c=='c'){
- clear();
- }
- keydown=true;
- repaint();
- return true;
- }
- public void flush (){
- paint.clear();
- clear=true;
- last=0;
- }
- public void clear (){
- flush();
- l=0;
- }
- }
-