59 lines
1.9 KiB
Java
59 lines
1.9 KiB
Java
package com.codigoparallevar.minicards;
|
|
|
|
import android.graphics.Canvas;
|
|
import android.graphics.Paint;
|
|
import android.graphics.Path;
|
|
import android.graphics.Rect;
|
|
import androidx.annotation.NonNull;
|
|
|
|
import com.codigoparallevar.minicards.types.functional.Tuple2;
|
|
|
|
public class ScrolledCanvas {
|
|
private final Canvas canvas;
|
|
private final int xOrig;
|
|
private final int yOrig;
|
|
|
|
public ScrolledCanvas(Canvas canvas, Tuple2<Integer, Integer> viewOrigin) {
|
|
this.canvas = canvas;
|
|
this.xOrig = viewOrigin.item1;
|
|
this.yOrig = viewOrigin.item2;
|
|
}
|
|
|
|
public void drawLine(float startX, float startY, float stopX, float stopY,
|
|
@NonNull Paint paint) {
|
|
canvas.drawLine(startX - xOrig, startY - yOrig,
|
|
stopX - xOrig, stopY - yOrig, paint);
|
|
}
|
|
|
|
public void drawRect(@NonNull Rect r, @NonNull Paint paint) {
|
|
canvas.drawRect(r.left - xOrig, r.top - yOrig,
|
|
r.right - xOrig, r.bottom - yOrig,
|
|
paint);
|
|
}
|
|
|
|
public void drawCircle(float cx, float cy, float radius, @NonNull Paint paint) {
|
|
canvas.drawCircle(cx - xOrig, cy - yOrig,
|
|
radius, paint);
|
|
}
|
|
|
|
public void drawPath(@NonNull Path path, @NonNull Paint paint) {
|
|
Path offsetPath = new Path(path);
|
|
offsetPath.offset(-xOrig, -yOrig);
|
|
canvas.drawPath(offsetPath, paint);
|
|
}
|
|
|
|
|
|
public void drawCenteredText(String text, int x, int y, Paint paint) {
|
|
paint.setTextAlign(Paint.Align.LEFT);
|
|
Rect r = new Rect();
|
|
|
|
paint.getTextBounds(text, 0, text.length(), r);
|
|
x = x + (int) (r.width() / 2f - r.left);
|
|
y = y + (int) (r.height() / 2f - r.bottom);
|
|
drawText(text, x, y, paint);
|
|
}
|
|
|
|
public void drawText(String text, int x, int y, Paint paint) {
|
|
canvas.drawText(text, x - xOrig, y - yOrig, paint);
|
|
}
|
|
} |