Skip to content

Commit

Permalink
width fill, animate fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
m1ga committed Nov 16, 2022
1 parent 81646ea commit ac215b4
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 28 deletions.
4 changes: 1 addition & 3 deletions android/src/ti/lines/LineProxy.java
Original file line number Diff line number Diff line change
Expand Up @@ -52,8 +52,6 @@ public LineProxy() {
@Override
public TiUIView createView(Activity activity) {
view = new LineView(this);
view.getLayoutParams().autoFillsHeight = true;
view.getLayoutParams().autoFillsWidth = true;
updateView();
return view;
}
Expand All @@ -68,7 +66,7 @@ private void updateView() {
view.setLineColor(lineColor);
view.setLineWidth(lineWidth);
view.startAt = startAt;
view.maxValue = maxValue;
view.origMaxValue = maxValue;
view.showXAis = showXAxis;
view.showYAis = showYAxis;
view.yLines = yLines;
Expand Down
63 changes: 38 additions & 25 deletions android/src/ti/lines/LineView.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,18 +22,15 @@
import java.util.HashMap;

class LineView extends TiUIView {

private int viewHeight;
private final Paint paintLine = new Paint(Paint.ANTI_ALIAS_FLAG);
private final Paint paintBackground = new Paint(Paint.ANTI_ALIAS_FLAG);
private final Paint paintAxis = new Paint(Paint.ANTI_ALIAS_FLAG);
private final Paint paintYLines = new Paint(Paint.ANTI_ALIAS_FLAG);
private TiDimension dimensionHeight;
public PaintView tiPaintView;
public int startAt = 0;
public int viewWidth;
public int startPosition;
public int maxValue = -1;
public double startPosition;
public float maxValue = -1;
public float origMaxValue = -1;
public int yLines = 0;
public int xLines = 0;
public int fillColorTop = Color.WHITE;
Expand All @@ -44,22 +41,34 @@ class LineView extends TiUIView {
public boolean fillSpace = false;
public int strokeType = TiLinesModule.STROKE_NORMAL;
public int lineType = TiLinesModule.TYPE_CURVED;
public int paddingLeft = 0;
public int paddingRight = 0;
public int paddingTop = 0;
public int paddingBottom = 0;
private Object[] pointsArray;
private final TiDimension dimensionHeight;
private int originalViewHeight;
private int originalViewWidth;
private int viewHeight;
private int viewWidth;
private PointF[] points;
private PointF[] pointsCon1;
private PointF[] pointsCon2;
private Path pathArray = new Path();
private Path pathFillArray = new Path();
private Path pathAxis = new Path();
private Path pathXYLines = new Path();
private int pathHeight = 0;
public int paddingLeft = 0;
public int paddingRight = 0;
public int paddingTop = 0;
public int paddingBottom = 0;
private float pathHeight = 0;

public LineView(TiViewProxy proxy) {
super(proxy);
tiPaintView = new PaintView(proxy.getActivity());
TiDimension dimensionWidth = new TiDimension(TiConvert.toString(proxy.getWidth()), TiDimension.TYPE_WIDTH);
originalViewWidth = dimensionWidth.getAsPixels(getOuterView());
dimensionHeight = new TiDimension(TiConvert.toString(proxy.getHeight()), TiDimension.TYPE_HEIGHT);
originalViewHeight = dimensionHeight.getAsPixels(getOuterView());
startPosition = (dimensionHeight.getAsPixels(getOuterView()) * 0.5);

setNativeView(tiPaintView);
}

Expand All @@ -72,17 +81,16 @@ public void setLineWidth(int value) {
}

public void setPoints(Object[] pointObject) {
TiDimension dimensionWidth = new TiDimension(TiConvert.toString(proxy.getWidth()), TiDimension.TYPE_WIDTH);
dimensionHeight = new TiDimension(TiConvert.toString(proxy.getHeight()), TiDimension.TYPE_HEIGHT);
viewWidth = dimensionWidth.getAsPixels(getOuterView()) - paddingLeft - paddingRight;
viewHeight = dimensionHeight.getAsPixels(getOuterView()) - paddingTop - paddingBottom;
startPosition = (int) (dimensionHeight.getAsPixels(getOuterView()) * 0.5);

clear();
maxValue = origMaxValue;
viewWidth = originalViewWidth - paddingLeft - paddingRight;
viewHeight = originalViewHeight - paddingTop - paddingBottom;
pointsArray = pointObject;
points = new PointF[pointObject.length];
pointsCon1 = new PointF[pointObject.length];
pointsCon2 = new PointF[pointObject.length];

int localMax = 0;
float localMax = 0;

for (int i = 0; i < points.length; i++) {
points[i] = new PointF();
Expand All @@ -104,7 +112,7 @@ public void setPoints(Object[] pointObject) {
}

if (startAt == TiLinesModule.START_CENTER) {
startPosition = (int) (dimensionHeight.getAsPixels(getOuterView()) * 0.5);
startPosition = dimensionHeight.getAsPixels(getOuterView()) * 0.5;
localMax /= 0.5;
maxValue /= 0.5;
} else if (startAt == TiLinesModule.START_BOTTOM) {
Expand All @@ -122,7 +130,8 @@ public void setPoints(Object[] pointObject) {
}

float stepX = (viewWidth / (points.length - 1));
int baseX = paddingLeft;

float baseX = paddingLeft;
int pos = 0;
pathFillArray.moveTo(paddingLeft, viewHeight + paddingBottom);

Expand All @@ -135,7 +144,7 @@ public void setPoints(Object[] pointObject) {
if (yScale) {
hPoint = (viewHeight / maxValue) * hPoint;
}
points[pos].set(baseX, -hPoint + startPosition - paddingBottom);
points[pos].set(baseX, (float) (-hPoint + startPosition - paddingBottom));
baseX += stepX;
} else {
// normal lines with coordinates
Expand All @@ -149,7 +158,6 @@ public void setPoints(Object[] pointObject) {
}
pos++;
}

// set bezier points
for (int i = 1; i < points.length; i++) {
pointsCon1[i].set((points[i].x + points[i - 1].x) / 2, points[i - 1].y);
Expand Down Expand Up @@ -192,12 +200,12 @@ private void drawAxis(boolean drawX, boolean drawY) {

if (yLines > 0) {
// dashed horizontal lines
int steps = (viewHeight / yLines);
float steps = (viewHeight / yLines);
if (yScale) {
steps = (viewHeight / maxValue) * yLines;
}

int yPos = viewHeight - steps + paddingBottom;
float yPos = viewHeight - steps + paddingBottom;

while (yPos > paddingTop) {
pathXYLines.moveTo(paddingLeft, yPos);
Expand All @@ -209,7 +217,7 @@ private void drawAxis(boolean drawX, boolean drawY) {
if (xLines > 0) {
// dashed vertical lines
float steps = (viewWidth / (points.length - 1)) * xLines;
int xPos = paddingLeft;
float xPos = paddingLeft;
while (xPos <= viewWidth) {
pathXYLines.moveTo(xPos, paddingTop);
pathXYLines.lineTo(xPos, viewHeight + paddingBottom);
Expand Down Expand Up @@ -259,6 +267,11 @@ public PaintView(Context c) {
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);

if ((originalViewWidth == 0 && (proxy.getWidth().equals("fill") || proxy.getWidth().equals("size"))) || originalViewWidth != w) {
originalViewWidth = w;
setPoints(pointsArray);
}
}


Expand Down

0 comments on commit ac215b4

Please sign in to comment.