Project

General

Profile

« Previous | Next » 

Revision f793bd9d

Added by Leszek Koltunski over 4 years ago

Minor.

View differences:

src/main/java/org/distorted/examples/meshjoin/MeshJoinRenderer.java
20 20
package org.distorted.examples.meshjoin;
21 21

  
22 22
import android.graphics.Bitmap;
23
import android.graphics.BitmapFactory;
24 23
import android.graphics.Canvas;
25 24
import android.graphics.Paint;
26 25
import android.opengl.GLSurfaceView;
27 26

  
28
import org.distorted.examples.R;
29 27
import org.distorted.library.effect.MatrixEffect;
30 28
import org.distorted.library.effect.MatrixEffectMove;
31 29
import org.distorted.library.effect.MatrixEffectQuaternion;
......
45 43
import org.distorted.library.type.Static3D;
46 44
import org.distorted.library.type.Static4D;
47 45

  
48
import java.io.IOException;
49
import java.io.InputStream;
50

  
51 46
import javax.microedition.khronos.egl.EGLConfig;
52 47
import javax.microedition.khronos.opengles.GL10;
53 48

  
......
118 113
    
119 114
    public void onSurfaceCreated(GL10 glUnused, EGLConfig config) 
120 115
      {
121
      InputStream is = mView.getContext().getResources().openRawResource(R.raw.pyraminx);
122
      Bitmap bitmap;
123

  
124
      try
125
        {
126
        bitmap = BitmapFactory.decodeStream(is);
127
        }
128
      finally
129
        {
130
        try
131
          {
132
          is.close();
133
          }
134
        catch(IOException e) { }
135
        }
136

  
137 116
      if( mTexture==null ) mTexture = new DistortedTexture();
138
      mTexture.setTexture( createTetrahedronTexture(bitmap) );
117
      mTexture.setTexture( createTetrahedronTexture() );
139 118

  
140 119
      if( mMesh==null ) mMesh = createJoinedTetrahedron();
141 120

  
......
156 135

  
157 136
///////////////////////////////////////////////////////////////////////////////////////////////////
158 137

  
159
    private Bitmap createTetrahedronTexture(Bitmap input)
138
    private Bitmap createTetrahedronTexture()
160 139
      {
161 140
      final int[] FACE_COLORS = new int[] { 0xffffff00, 0xff00ff00, 0xff0000ff, 0xffff0000 };
162 141
      final int FACES=FACE_COLORS.length;
163
      int height = input.getHeight();
164

  
165
      Bitmap result = Bitmap.createBitmap(FACES*height,height, Bitmap.Config.ARGB_8888);
142
      int SIZE = 128;
143
      int STROKE = SIZE/20;
144
      int OFF = STROKE/2 -1;
145
      int OFF2 = (int)(0.577f*SIZE) + OFF;
146
      int HEIGHT = SIZE - OFF;
147
      int RADIUS = SIZE/12;
148
      int ARC1_H = (int)(0.31f*SIZE);
149
      float ARC1_W = SIZE*0.5f;
150
      float ARC2_W = 19.5f;
151
      float ARC2_H = 116.5f;
152
      float ARC3_W = 108.5f;
153

  
154
      Bitmap result = Bitmap.createBitmap(FACES*SIZE,SIZE, Bitmap.Config.ARGB_8888);
166 155
      Canvas canvas = new Canvas(result);
167 156
      Paint paint = new Paint();
168
      paint.setStyle(Paint.Style.FILL);
157
      paint.setAntiAlias(true);
158
      paint.setStrokeWidth(STROKE);
169 159

  
170 160
      for(int i=0; i<FACES; i++)
171 161
        {
172 162
        paint.setColor(FACE_COLORS[i]);
173
        canvas.drawRect(i*height,0,(i+1)*height,height,paint);
174
        canvas.drawBitmap(input,i*height,0,null);
163
        paint.setStyle(Paint.Style.FILL);
164

  
165
        canvas.drawRect(i*SIZE,0,(i+1)*SIZE,SIZE,paint);
166

  
167
        paint.setColor(0xff000000);
168
        paint.setStyle(Paint.Style.STROKE);
169

  
170
        canvas.drawLine(           i*SIZE, HEIGHT,  SIZE       +i*SIZE, HEIGHT, paint);
171
        canvas.drawLine(      OFF +i*SIZE,   SIZE,       OFF2  +i*SIZE,      0, paint);
172
        canvas.drawLine((SIZE-OFF)+i*SIZE,   SIZE, (SIZE-OFF2) +i*SIZE,      0, paint);
173

  
174
        canvas.drawArc( ARC1_W-RADIUS+i*SIZE, ARC1_H-RADIUS, ARC1_W+RADIUS+i*SIZE, ARC1_H+RADIUS, 225, 90, false, paint);
175
        canvas.drawArc( ARC2_W-RADIUS+i*SIZE, ARC2_H-RADIUS, ARC2_W+RADIUS+i*SIZE, ARC2_H+RADIUS, 105, 90, false, paint);
176
        canvas.drawArc( ARC3_W-RADIUS+i*SIZE, ARC2_H-RADIUS, ARC3_W+RADIUS+i*SIZE, ARC2_H+RADIUS, 345, 90, false, paint);
175 177
        }
176 178

  
177 179
      return result;

Also available in: Unified diff