package com.example.focus.circularPB;
import android.graphics.Bitmap;
import android.util.Log;
public class CircularProgressBar {
private int centerX;
private int centerY;
private int radius;
private int inner_radius;
private Bitmap bitmap;
public CircularProgressBar(Bitmap bitmap, int centerX, int centerY, int radius, int inner_radius) {
super();
this.centerX = centerX;
this.centerY = centerY;
this.radius = radius;
this.inner_radius = inner_radius;
this.bitmap = bitmap;
}
public Bitmap getBitmap() {
return bitmap;
}
public void setBitmap(Bitmap bitmap) {
this.bitmap = bitmap;
}
public DecartPoint toBitmapPoint(int x, int y) {
if (centerX > 0 && centerY > 0)
return new DecartPoint(x + centerX, y + centerY);
else if (centerX > 0)
return new DecartPoint(x + centerX, y);
else if (centerY > 0)
return new DecartPoint(x, y + centerY);
return null;
}
public DecartPoint toBitmapPoint(DecartPoint p) {
int x = p.getX();
int y = p.getY();
DecartPoint point = new DecartPoint(x, y);
if (centerX > 0 && centerY > 0) {
point.setX(x + centerX);
point.setY(y + centerY);
} else if (centerX > 0)
point.setX(x + centerX);
else if (centerY > 0)
point.setY(y + centerY);
return point;
}
public DecartPoint toBitmapPoint(DecartPoint p, int startX, int startY) {
int x = p.getX();
int y = p.getY();
DecartPoint point = new DecartPoint(x, y);
if (centerX > 0 && centerY > 0) {
point.setX(x + centerX);
point.setY(y + centerY);
} else if (centerX > 0)
point.setX(x + centerX);
else if (centerY > 0)
point.setY(y + centerY);
return point;
}
public DecartPoint fromBitmapPoint(int x, int y) {
if (x > 0)
x = x - centerX;
if (y > 0)
y = y - centerY;
return new DecartPoint(x, y);
}
public void disappearSector(int startAngle, int endAngle, int opacity) {
if (startAngle > endAngle) {
int temp = startAngle;
startAngle = endAngle;
endAngle = temp;
}
Sector sector = new Sector((double) radius, (double) inner_radius, startAngle, endAngle, centerX, centerY);
// PolarPoint cur;
DecartPoint cur;
DecartPoint topLeft = sector.getTopLeft();
DecartPoint bottomRight = sector.getBottomRight();
int width = topLeft.getWidth(bottomRight);
int height = topLeft.getHeight(bottomRight);
int[] pixels = new int[width * height];
DecartPoint p = toBitmapPoint(topLeft);
bitmap.getPixels(pixels, 0, width, toBitmapPoint(topLeft).getX(), toBitmapPoint(topLeft).getY(), width, height);
ArrayBitmap arr = new ArrayBitmap(pixels, topLeft, bottomRight);
// Works !!!
// for (int i = 0; i < width; i++)
// for (int j = 0; j < height; j++) {
// int color = arr.getPixel(i, j);
// if (color != 0) {
// int opaque = (color & 0xFF000000);
// if (opaque != 0) {
// arr.setPixel(i, j, color & 0x00FFFFFF);
// }
// }
// }
Iterable<DecartPoint> list = sector.getPixels();
for (DecartPoint point : list) {
try {
int color = arr.getPixel(point);
if (color != 0) {
int opaque = (color & 0xFF000000);
if (opaque != 0) {
arr.setPixel(point, color & 0x00FFFFFF);
}
}
} catch (IllegalArgumentException ex) {
Log.e("Error", ex.getMessage());
}
}
bitmap.setPixels(arr.getPixels(), 0, width, toBitmapPoint(topLeft).getX(), toBitmapPoint(topLeft).getY(), width, height);
}
}