blob: 2bda724b77a52f4264adb3ec434b9af7aa11a54a [file] [log] [blame]
package org.skia.androidkitdemo1;
import android.app.Activity;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import org.skia.androidkit.Canvas;
import org.skia.androidkit.Paint;
import org.skia.androidkit.RuntimeShaderBuilder;
import org.skia.androidkit.Surface;
import org.skia.androidkit.Text;
import org.skia.androidkit.util.SurfaceRenderer;
import java.io.InputStream;
class TextRenderer extends SurfaceRenderer {
Surface mSurface;
Text mText;
Paint foreground;
private static final String sksl =
"uniform half u_time; " +
"uniform half u_w; " +
"uniform half u_h; " +
"float f(vec3 p) { " +
" p.z -= u_time * 10.; " +
" float a = p.z * .1; " +
" p.xy *= mat2(cos(a), sin(a), -sin(a), cos(a)); " +
" return .1 - length(cos(p.xy) + sin(p.yz)); " +
"} " +
"half4 main(vec2 fragcoord) { " +
" vec3 d = .5 - fragcoord.xy1 / u_h; " +
" vec3 p=vec3(0); " +
" for (int i = 0; i < 32; i++) p += f(p) * d; " +
" return ((sin(p) + vec3(2, 5, 9)) / length(p)).xyz1;" +
"}";
private RuntimeShaderBuilder builder;
private float W;
private float H;
@Override
protected void onSurfaceInitialized(Surface surface) {
mSurface = surface;
W = surface.getWidth();
H = surface.getHeight();
mText = new Text("Hello World!");
foreground = new Paint().setColor(0, 1, 0, 1);
builder = new RuntimeShaderBuilder(sksl);
}
@Override
protected void onRenderFrame(Canvas canvas, long ms) {
canvas.drawColor(1, 1, 1, 1);
builder.setUniform("u_time", ms / 1000.0f)
.setUniform("u_w", W)
.setUniform("u_h", H);
foreground.setShader(builder.makeShader());
mText.renderText(canvas, foreground, 0, 200);
}
}
public class TextActivity extends Activity {
static {
System.loadLibrary("androidkit");
}
Surface mSurface;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_animation);
TextRenderer renderer = new TextRenderer();
SurfaceView sv = findViewById(R.id.surfaceView);
sv.getHolder().addCallback(renderer);
}
}