diff --git a/.github/workflows/Android-CI.yml b/.github/workflows/Android-CI.yml index 835dcada62..47e6324cab 100644 --- a/.github/workflows/Android-CI.yml +++ b/.github/workflows/Android-CI.yml @@ -61,14 +61,14 @@ jobs: uses: actions/upload-artifact@v5 if: ${{ always() }} with: - name: MPChart-Espresso-report-${{ matrix.api }}-${{ matrix.tag }}-${{ matrix.abi }}-${{ matrix.emulatorApi }} + name: Chart-Espresso-report-${{ matrix.api }}-${{ matrix.tag }}-${{ matrix.abi }}-${{ matrix.emulatorApi }} path: app/build/reports/androidTests/connected if-no-files-found: error - name: Archive screenshots if: ${{ always() }} uses: actions/upload-artifact@v5 with: - name: MPChart-Screenshots-${{ matrix.api }}-${{ matrix.tag }}-${{ matrix.abi }}-${{ matrix.emulatorApi }} + name: Chart-Screenshots-${{ matrix.api }}-${{ matrix.tag }}-${{ matrix.abi }}-${{ matrix.emulatorApi }} path: | app/build/outputs/connected_android_test_additional_output/debugAndroidTest/connected app/build/outputs/androidTest-results/connected @@ -86,7 +86,7 @@ jobs: if: ${{ always() }} uses: actions/upload-artifact@v5 with: - name: MPChart-Screenshots-diffs-${{ matrix.api }}-${{ matrix.tag }}-${{ matrix.abi }}-${{ matrix.emulatorApi }} + name: Chart-Screenshots-diffs-${{ matrix.api }}-${{ matrix.tag }}-${{ matrix.abi }}-${{ matrix.emulatorApi }} path: | screenshotDiffs - name: Show git status diff --git a/MPChartLib/proguard-lib.pro b/MPChartLib/proguard-lib.pro index 12070e28a3..398fad22b1 100644 --- a/MPChartLib/proguard-lib.pro +++ b/MPChartLib/proguard-lib.pro @@ -1,4 +1,4 @@ -# Whitelist MPAndroidChart +# Whitelist AndroidChart # Preserve all public classes and methods -keep class com.github.mikephil.charting.** { *; } diff --git a/MPChartLib/src/main/java/com/github/mikephil/charting/charts/Chart.java b/MPChartLib/src/main/java/com/github/mikephil/charting/charts/Chart.java index 45fce33334..84aff19046 100644 --- a/MPChartLib/src/main/java/com/github/mikephil/charting/charts/Chart.java +++ b/MPChartLib/src/main/java/com/github/mikephil/charting/charts/Chart.java @@ -64,7 +64,7 @@ @SuppressWarnings("unused") public abstract class Chart>> extends ViewGroup implements ChartInterface { - public static final String LOG_TAG = "MPAndroidChart"; + public static final String LOG_TAG = "AndroidChart"; /** * flag that indicates if logging is enabled or not @@ -1443,7 +1443,7 @@ public boolean saveToGallery(String fileName, String subFolderPath, String fileD * @return returns true if saving was successful, false if not */ public boolean saveToGallery(String fileName, int quality) { - return saveToGallery(fileName, "", "MPAndroidChart-Library Save", Bitmap.CompressFormat.PNG, quality); + return saveToGallery(fileName, "", "AndroidChart-Library Save", Bitmap.CompressFormat.PNG, quality); } /** @@ -1454,7 +1454,7 @@ public boolean saveToGallery(String fileName, int quality) { * @return returns true if saving was successful, false if not */ public boolean saveToGallery(String fileName) { - return saveToGallery(fileName, "", "MPAndroidChart-Library Save", Bitmap.CompressFormat.PNG, 40); + return saveToGallery(fileName, "", "AndroidChart-Library Save", Bitmap.CompressFormat.PNG, 40); } /** diff --git a/MPChartLib/src/main/java/com/github/mikephil/charting/data/BarLineScatterCandleBubbleDataSet.java b/MPChartLib/src/main/java/com/github/mikephil/charting/data/BarLineScatterCandleBubbleDataSet.java index 607c64ce68..fc8cc36e06 100644 --- a/MPChartLib/src/main/java/com/github/mikephil/charting/data/BarLineScatterCandleBubbleDataSet.java +++ b/MPChartLib/src/main/java/com/github/mikephil/charting/data/BarLineScatterCandleBubbleDataSet.java @@ -9,6 +9,8 @@ /** * Baseclass of all DataSets for Bar-, Line-, Scatter- and CandleStickChart. + * + * @author Philipp Jahoda */ public abstract class BarLineScatterCandleBubbleDataSet extends DataSet diff --git a/MPChartLib/src/main/java/com/github/mikephil/charting/data/CombinedData.java b/MPChartLib/src/main/java/com/github/mikephil/charting/data/CombinedData.java index 0b36aa3bef..9adddc70a4 100644 --- a/MPChartLib/src/main/java/com/github/mikephil/charting/data/CombinedData.java +++ b/MPChartLib/src/main/java/com/github/mikephil/charting/data/CombinedData.java @@ -252,21 +252,21 @@ public boolean removeDataSet(IBarLineScatterCandleBubbleDataSet @Deprecated @Override public boolean removeDataSet(int index) { - Log.e("MPAndroidChart", "removeDataSet(int index) not supported for CombinedData"); + Log.e("AndroidChart", "removeDataSet(int index) not supported for CombinedData"); return false; } @Deprecated @Override public boolean removeEntry(Entry e, int dataSetIndex) { - Log.e("MPAndroidChart", "removeEntry(...) not supported for CombinedData"); + Log.e("AndroidChart", "removeEntry(...) not supported for CombinedData"); return false; } @Deprecated @Override public boolean removeEntry(float xValue, int dataSetIndex) { - Log.e("MPAndroidChart", "removeEntry(...) not supported for CombinedData"); + Log.e("AndroidChart", "removeEntry(...) not supported for CombinedData"); return false; } } diff --git a/MPChartLib/src/main/java/com/github/mikephil/charting/data/PieData.java b/MPChartLib/src/main/java/com/github/mikephil/charting/data/PieData.java index 423ce19b16..234770c1b3 100644 --- a/MPChartLib/src/main/java/com/github/mikephil/charting/data/PieData.java +++ b/MPChartLib/src/main/java/com/github/mikephil/charting/data/PieData.java @@ -53,7 +53,7 @@ public List getDataSets() { List dataSets = super.getDataSets(); if (dataSets.size() < 1) { - Log.e("MPAndroidChart", + Log.e("AndroidChart", "Found multiple data sets while pie chart only allows one"); } diff --git a/MPChartLib/src/main/java/com/github/mikephil/charting/utils/FileUtils.java b/MPChartLib/src/main/java/com/github/mikephil/charting/utils/FileUtils.java index 5aff51ff84..429f92195d 100644 --- a/MPChartLib/src/main/java/com/github/mikephil/charting/utils/FileUtils.java +++ b/MPChartLib/src/main/java/com/github/mikephil/charting/utils/FileUtils.java @@ -26,7 +26,7 @@ */ public class FileUtils { - private static final String LOG = "MPChart-FileUtils"; + private static final String LOG = "Chart-FileUtils"; /** * Loads a an Array of Entries from a textfile from the sd-card. diff --git a/MPChartLib/src/main/java/com/github/mikephil/charting/utils/Utils.java b/MPChartLib/src/main/java/com/github/mikephil/charting/utils/Utils.java index 0f2296da45..9b1126942a 100644 --- a/MPChartLib/src/main/java/com/github/mikephil/charting/utils/Utils.java +++ b/MPChartLib/src/main/java/com/github/mikephil/charting/utils/Utils.java @@ -34,728 +34,732 @@ @SuppressWarnings("JavaDoc") public abstract class Utils { - private static DisplayMetrics mMetrics; - private static int mMinimumFlingVelocity = 50; - private static int mMaximumFlingVelocity = 8000; - public final static double DEG2RAD = (Math.PI / 180.0); - public final static float FDEG2RAD = ((float) Math.PI / 180.f); - - @SuppressWarnings("unused") - public final static double DOUBLE_EPSILON = Double.longBitsToDouble(1); - - @SuppressWarnings("unused") - public final static float FLOAT_EPSILON = Float.intBitsToFloat(1); - - /** - * initialize method, called inside the Chart.init() method. - */ - @SuppressWarnings("deprecation") - public static void init(Context context) { - - if (context == null) { - // noinspection deprecation - mMinimumFlingVelocity = ViewConfiguration.getMinimumFlingVelocity(); - // noinspection deprecation - mMaximumFlingVelocity = ViewConfiguration.getMaximumFlingVelocity(); - - Log.e("MPChartLib-Utils" - , "Utils.init(...) PROVIDED CONTEXT OBJECT IS NULL"); - - } else { - ViewConfiguration viewConfiguration = ViewConfiguration.get(context); - mMinimumFlingVelocity = viewConfiguration.getScaledMinimumFlingVelocity(); - mMaximumFlingVelocity = viewConfiguration.getScaledMaximumFlingVelocity(); - - Resources res = context.getResources(); - mMetrics = res.getDisplayMetrics(); - } - } - - /** - * initialize method, called inside the Chart.init() method. backwards - * compatibility - to not break existing code - * - * @param res - */ - @Deprecated - public static void init(Resources res) { - - mMetrics = res.getDisplayMetrics(); - - // noinspection deprecation - mMinimumFlingVelocity = ViewConfiguration.getMinimumFlingVelocity(); - // noinspection deprecation - mMaximumFlingVelocity = ViewConfiguration.getMaximumFlingVelocity(); - } - - /** - * This method converts dp unit to equivalent pixels, depending on device - * density. NEEDS UTILS TO BE INITIALIZED BEFORE USAGE. - * - * @param dp A value in dp (density independent pixels) unit. Which we need - * to convert into pixels - * @return A float value to represent px equivalent to dp depending on - * device density - */ - public static float convertDpToPixel(float dp) { - - if (mMetrics == null) { - - Log.e("MPChartLib-Utils", - "Utils NOT INITIALIZED. You need to call Utils.init(...) at least once before" + - " calling Utils.convertDpToPixel(...). Otherwise conversion does not " + - "take place."); - return dp; - } - - return dp * mMetrics.density; - } - - /** - * This method converts device specific pixels to density independent - * pixels. NEEDS UTILS TO BE INITIALIZED BEFORE USAGE. - * - * @param px A value in px (pixels) unit. Which we need to convert into db - * @return A float value to represent dp equivalent to px value - */ - public static float convertPixelsToDp(float px) { - - if (mMetrics == null) { - - Log.e("MPChartLib-Utils", - "Utils NOT INITIALIZED. You need to call Utils.init(...) at least once before" + - " calling Utils.convertPixelsToDp(...). Otherwise conversion does not" + - " take place."); - return px; - } - - return px / mMetrics.density; - } - - /** - * calculates the approximate width of a text, depending on a demo text - * avoid repeated calls (e.g. inside drawing methods) - * - * @param paint - * @param demoText - * @return - */ - public static int calcTextWidth(Paint paint, String demoText) { - return (int) paint.measureText(demoText); - } - - private static final Rect mCalcTextHeightRect = new Rect(); - /** - * calculates the approximate height of a text, depending on a demo text - * avoid repeated calls (e.g. inside drawing methods) - * - * @param paint - * @param demoText - * @return - */ - public static int calcTextHeight(Paint paint, String demoText) { - - Rect r = mCalcTextHeightRect; - r.set(0,0,0,0); - paint.getTextBounds(demoText, 0, demoText.length(), r); - return r.height(); - } - - private static final Paint.FontMetrics mFontMetrics = new Paint.FontMetrics(); - - public static float getLineHeight(Paint paint) { - return getLineHeight(paint, mFontMetrics); - } - - public static float getLineHeight(Paint paint, Paint.FontMetrics fontMetrics){ - paint.getFontMetrics(fontMetrics); - return fontMetrics.descent - fontMetrics.ascent; - } - - public static float getLineSpacing(Paint paint) { - return getLineSpacing(paint, mFontMetrics); - } - - public static float getLineSpacing(Paint paint, Paint.FontMetrics fontMetrics){ - paint.getFontMetrics(fontMetrics); - return fontMetrics.ascent - fontMetrics.top + fontMetrics.bottom; - } - - /** - * Returns a recyclable FSize instance. - * calculates the approximate size of a text, depending on a demo text - * avoid repeated calls (e.g. inside drawing methods) - * - * @param paint - * @param demoText - * @return A Recyclable FSize instance - */ - public static FSize calcTextSize(Paint paint, String demoText) { - - FSize result = FSize.getInstance(0,0); - calcTextSize(paint, demoText, result); - return result; - } - - private static final Rect mCalcTextSizeRect = new Rect(); - /** - * calculates the approximate size of a text, depending on a demo text - * avoid repeated calls (e.g. inside drawing methods) - * - * @param paint - * @param demoText - * @param outputFSize An output variable, modified by the function. - */ - public static void calcTextSize(Paint paint, String demoText, FSize outputFSize) { - - Rect r = mCalcTextSizeRect; - r.set(0,0,0,0); - paint.getTextBounds(demoText, 0, demoText.length(), r); - outputFSize.width = r.width(); - outputFSize.height = r.height(); - - } - - - /** - * Math.pow(...) is very expensive, so avoid calling it and create it - * yourself. - */ - private static final int[] POW_10 = { - 1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000 - }; - - private static final IValueFormatter mDefaultValueFormatter = generateDefaultValueFormatter(); - - private static IValueFormatter generateDefaultValueFormatter() { - return new DefaultValueFormatter(1); - } - - /// - returns: The default value formatter used for all chart components that needs a default - public static IValueFormatter getDefaultValueFormatter() - { - return mDefaultValueFormatter; - } - - /** - * Formats the given number to the given number of decimals, and returns the - * number as a string, maximum 35 characters. If thousands are separated, the separating - * character is a dot ("."). - * - * @param number - * @param digitCount - * @param separateThousands set this to true to separate thousands values - * @return - */ - public static String formatNumber(float number, int digitCount, boolean separateThousands) { - return formatNumber(number, digitCount, separateThousands, '.'); - } - - /** - * Formats the given number to the given number of decimals, and returns the - * number as a string, maximum 35 characters. - * - * @param number - * @param digitCount - * @param separateThousands set this to true to separate thousands values - * @param separateChar a caracter to be paced between the "thousands" - * @return - */ - public static String formatNumber(float number, int digitCount, boolean separateThousands, - char separateChar) { - - char[] out = new char[35]; - - boolean neg = false; - if (number == 0) { - return "0"; - } - - boolean zero = number < 1 && number > -1; - - if (number < 0) { - neg = true; - number = -number; - } - - if (digitCount > POW_10.length) { - digitCount = POW_10.length - 1; - } - - number *= POW_10[digitCount]; - long lval = Math.round(number); - int ind = out.length - 1; - int charCount = 0; - boolean decimalPointAdded = false; - - while (lval != 0 || charCount < (digitCount + 1)) { - int digit = (int) (lval % 10); - lval = lval / 10; - out[ind--] = (char) (digit + '0'); - charCount++; - - // add decimal point - if (charCount == digitCount) { - out[ind--] = ','; - charCount++; - decimalPointAdded = true; - - // add thousand separators - } else if (separateThousands && lval != 0 && charCount > digitCount) { - - if (decimalPointAdded) { - - if ((charCount - digitCount) % 4 == 0) { - out[ind--] = separateChar; - charCount++; - } - - } else { - - if ((charCount - digitCount) % 4 == 3) { - out[ind--] = separateChar; - charCount++; - } - } - } - } - - // if number around zero (between 1 and -1) - if (zero) { - out[ind--] = '0'; - charCount += 1; - } - - // if the number is negative - if (neg) { - out[ind--] = '-'; - charCount += 1; - } - - int start = out.length - charCount; - - // use this instead of "new String(...)" because of issue < Android 4.0 - return String.valueOf(out, start, out.length - start); - } - - /** - * rounds the given number to the next significant number - * - * @param number - * @return - */ - public static float roundToNextSignificant(double number) { - if (Double.isInfinite(number) || - Double.isNaN(number) || - number == 0.0) - return 0; - - final float d = (float) Math.ceil((float) Math.log10(number < 0 ? -number : number)); - final int pw = 1 - (int) d; - final float magnitude = (float) Math.pow(10, pw); - final long shifted = Math.round(number * magnitude); - return shifted / magnitude; - } - - /** - * Returns the appropriate number of decimals to be used for the provided - * number. - * - * @param number - * @return - */ - public static int getDecimals(float number) { - - float i = roundToNextSignificant(number); - - if (Float.isInfinite(i)) - return 0; - - return (int) Math.ceil(-Math.log10(i)) + 2; - } - - /** - * Converts the provided Integer List to an int array. - * - * @param integers - * @return - */ - public static int[] convertIntegers(List integers) { - - int[] ret = new int[integers.size()]; - - copyIntegers(integers, ret); - - return ret; - } - - public static void copyIntegers(List from, int[] to){ - int count = Math.min(to.length, from.size()); - for(int i = 0 ; i < count ; i++){ - to[i] = from.get(i); - } - } - - /** - * Converts the provided String List to a String array. - * - * @param strings - * @return - */ - public static String[] convertStrings(List strings) { - - String[] ret = new String[strings.size()]; - - for (int i = 0; i < ret.length; i++) { - ret[i] = strings.get(i); - } - - return ret; - } - - /** - * Replacement for the Math.nextUp(...) method that is only available in - * HONEYCOMB and higher. Dat's some seeeeek sheeet. - * - * @param d - * @return - */ - public static double nextUp(double d) { - if (d == Double.POSITIVE_INFINITY) - return d; - else { - d += 0.0d; - return Double.longBitsToDouble(Double.doubleToRawLongBits(d) + - ((d >= 0.0d) ? +1L : -1L)); - } - } - - /** - * Returns a recyclable MPPointF instance. - * Calculates the position around a center point, depending on the distance - * from the center, and the angle of the position around the center. - * - * @param center - * @param dist - * @param angle in degrees, converted to radians internally - * @return - */ - public static MPPointF getPosition(MPPointF center, float dist, float angle) { - - MPPointF p = MPPointF.getInstance(0,0); - getPosition(center, dist, angle, p); - return p; - } - - public static void getPosition(MPPointF center, float dist, float angle, MPPointF outputPoint){ - outputPoint.x = (float) (center.x + dist * Math.cos(Math.toRadians(angle))); - outputPoint.y = (float) (center.y + dist * Math.sin(Math.toRadians(angle))); - } - - public static void velocityTrackerPointerUpCleanUpIfNecessary(MotionEvent ev, - VelocityTracker tracker) { - - // Check the dot product of current velocities. - // If the pointer that left was opposing another velocity vector, clear. - tracker.computeCurrentVelocity(1000, mMaximumFlingVelocity); - final int upIndex = ev.getActionIndex(); - final int id1 = ev.getPointerId(upIndex); - final float x1 = tracker.getXVelocity(id1); - final float y1 = tracker.getYVelocity(id1); - for (int i = 0, count = ev.getPointerCount(); i < count; i++) { - if (i == upIndex) - continue; - - final int id2 = ev.getPointerId(i); - final float x = x1 * tracker.getXVelocity(id2); - final float y = y1 * tracker.getYVelocity(id2); - - final float dot = x + y; - if (dot < 0) { - tracker.clear(); - break; - } - } - } - - /** - * Original method view.postInvalidateOnAnimation() only supportd in API >= - * 16, This is a replica of the code from ViewCompat. - * - * @param view - */ - @SuppressLint("NewApi") - public static void postInvalidateOnAnimation(View view) { - view.postInvalidateOnAnimation(); - } - - public static int getMinimumFlingVelocity() { - return mMinimumFlingVelocity; - } - - public static int getMaximumFlingVelocity() { - return mMaximumFlingVelocity; - } - - /** - * returns an angle between 0.f < 360.f (not less than zero, less than 360) - */ - public static float getNormalizedAngle(float angle) { - while (angle < 0.f) - angle += 360.f; - - return angle % 360.f; - } - - private static final Rect mDrawableBoundsCache = new Rect(); - - public static void drawImage(Canvas canvas, - Drawable drawable, - int x, int y, - int width, int height) { - - MPPointF drawOffset = MPPointF.getInstance(); - drawOffset.x = x - (width / 2); - drawOffset.y = y - (height / 2); - - drawable.copyBounds(mDrawableBoundsCache); - drawable.setBounds( - mDrawableBoundsCache.left, - mDrawableBoundsCache.top, - mDrawableBoundsCache.left + width, - mDrawableBoundsCache.top + width); - - int saveId = canvas.save(); - // translate to the correct position and draw - canvas.translate(drawOffset.x, drawOffset.y); - drawable.draw(canvas); - canvas.restoreToCount(saveId); - } - - private static final Rect mDrawTextRectBuffer = new Rect(); - private static final Paint.FontMetrics mFontMetricsBuffer = new Paint.FontMetrics(); - - public static void drawXAxisValue(Canvas c, String text, float x, float y, - Paint paint, - MPPointF anchor, float angleDegrees) { - - float drawOffsetX = 0.f; - float drawOffsetY = 0.f; - - final float lineHeight = paint.getFontMetrics(mFontMetricsBuffer); - paint.getTextBounds(text, 0, text.length(), mDrawTextRectBuffer); - - // Android sometimes has pre-padding - drawOffsetX -= mDrawTextRectBuffer.left; - - // Android does not snap the bounds to line boundaries, - // and draws from bottom to top. - // And we want to normalize it. - drawOffsetY -= mFontMetricsBuffer.ascent; - - // To have a consistent point of reference, we always draw left-aligned - Paint.Align originalTextAlign = paint.getTextAlign(); - paint.setTextAlign(Paint.Align.LEFT); - - if (angleDegrees != 0.f) { - - // Move the text drawing rect in a way that it always rotates around its center - drawOffsetX -= mDrawTextRectBuffer.width() * 0.5f; - drawOffsetY -= lineHeight * 0.5f; - - float translateX = x; - float translateY = y; - - // Move the "outer" rect relative to the anchor, assuming its centered - if (anchor.x != 0.5f || anchor.y != 0.5f) { - final FSize rotatedSize = getSizeOfRotatedRectangleByDegrees( - mDrawTextRectBuffer.width(), - lineHeight, - angleDegrees); - - translateX -= rotatedSize.width * (anchor.x - 0.5f); - translateY -= rotatedSize.height * (anchor.y - 0.5f); - FSize.recycleInstance(rotatedSize); - } + private static DisplayMetrics mMetrics; + private static int mMinimumFlingVelocity = 50; + private static int mMaximumFlingVelocity = 8000; + public final static double DEG2RAD = (Math.PI / 180.0); + public final static float FDEG2RAD = ((float) Math.PI / 180.f); + + @SuppressWarnings("unused") + public final static double DOUBLE_EPSILON = Double.longBitsToDouble(1); + + @SuppressWarnings("unused") + public final static float FLOAT_EPSILON = Float.intBitsToFloat(1); + + /** + * initialize method, called inside the Chart.init() method. + */ + @SuppressWarnings("deprecation") + public static void init(Context context) { + + if (context == null) { + // noinspection deprecation + mMinimumFlingVelocity = ViewConfiguration.getMinimumFlingVelocity(); + // noinspection deprecation + mMaximumFlingVelocity = ViewConfiguration.getMaximumFlingVelocity(); + + Log.e("chartLib-Utils", "Utils.init(...) PROVIDED CONTEXT OBJECT IS NULL"); + + } else { + ViewConfiguration viewConfiguration = ViewConfiguration.get(context); + mMinimumFlingVelocity = viewConfiguration.getScaledMinimumFlingVelocity(); + mMaximumFlingVelocity = viewConfiguration.getScaledMaximumFlingVelocity(); + + Resources res = context.getResources(); + mMetrics = res.getDisplayMetrics(); + } + } + + /** + * initialize method, called inside the Chart.init() method. backwards + * compatibility - to not break existing code + * + * @param res + */ + @Deprecated + public static void init(Resources res) { + + mMetrics = res.getDisplayMetrics(); + + // noinspection deprecation + mMinimumFlingVelocity = ViewConfiguration.getMinimumFlingVelocity(); + // noinspection deprecation + mMaximumFlingVelocity = ViewConfiguration.getMaximumFlingVelocity(); + } + + /** + * This method converts dp unit to equivalent pixels, depending on device + * density. NEEDS UTILS TO BE INITIALIZED BEFORE USAGE. + * + * @param dp A value in dp (density independent pixels) unit. Which we need + * to convert into pixels + * @return A float value to represent px equivalent to dp depending on + * device density + */ + public static float convertDpToPixel(float dp) { + + if (mMetrics == null) { + + Log.e("chartLib-Utils", + "Utils NOT INITIALIZED. You need to call Utils.init(...) at least once before" + + " calling Utils.convertDpToPixel(...). Otherwise conversion does not " + + "take place."); + return dp; + } + + return dp * mMetrics.density; + } + + /** + * This method converts device specific pixels to density independent + * pixels. NEEDS UTILS TO BE INITIALIZED BEFORE USAGE. + * + * @param px A value in px (pixels) unit. Which we need to convert into db + * @return A float value to represent dp equivalent to px value + */ + public static float convertPixelsToDp(float px) { + + if (mMetrics == null) { + + Log.e("chartLib-Utils", + "Utils NOT INITIALIZED. You need to call Utils.init(...) at least once before" + + " calling Utils.convertPixelsToDp(...). Otherwise conversion does not" + + " take place."); + return px; + } + + return px / mMetrics.density; + } + + /** + * calculates the approximate width of a text, depending on a demo text + * avoid repeated calls (e.g. inside drawing methods) + * + * @param paint + * @param demoText + * @return + */ + public static int calcTextWidth(Paint paint, String demoText) { + return (int) paint.measureText(demoText); + } + + private static final Rect mCalcTextHeightRect = new Rect(); + + /** + * calculates the approximate height of a text, depending on a demo text + * avoid repeated calls (e.g. inside drawing methods) + * + * @param paint + * @param demoText + * @return + */ + public static int calcTextHeight(Paint paint, String demoText) { + + Rect r = mCalcTextHeightRect; + r.set(0, 0, 0, 0); + paint.getTextBounds(demoText, 0, demoText.length(), r); + return r.height(); + } + + private static final Paint.FontMetrics mFontMetrics = new Paint.FontMetrics(); + + public static float getLineHeight(Paint paint) { + return getLineHeight(paint, mFontMetrics); + } + + public static float getLineHeight(Paint paint, Paint.FontMetrics fontMetrics) { + paint.getFontMetrics(fontMetrics); + return fontMetrics.descent - fontMetrics.ascent; + } + + public static float getLineSpacing(Paint paint) { + return getLineSpacing(paint, mFontMetrics); + } + + public static float getLineSpacing(Paint paint, Paint.FontMetrics fontMetrics) { + paint.getFontMetrics(fontMetrics); + return fontMetrics.ascent - fontMetrics.top + fontMetrics.bottom; + } + + /** + * Returns a recyclable FSize instance. + * calculates the approximate size of a text, depending on a demo text + * avoid repeated calls (e.g. inside drawing methods) + * + * @param paint + * @param demoText + * @return A Recyclable FSize instance + */ + public static FSize calcTextSize(Paint paint, String demoText) { + + FSize result = FSize.getInstance(0, 0); + calcTextSize(paint, demoText, result); + return result; + } + + private static final Rect mCalcTextSizeRect = new Rect(); + + /** + * calculates the approximate size of a text, depending on a demo text + * avoid repeated calls (e.g. inside drawing methods) + * + * @param paint + * @param demoText + * @param outputFSize An output variable, modified by the function. + */ + public static void calcTextSize(Paint paint, String demoText, FSize outputFSize) { + + Rect r = mCalcTextSizeRect; + r.set(0, 0, 0, 0); + paint.getTextBounds(demoText, 0, demoText.length(), r); + outputFSize.width = r.width(); + outputFSize.height = r.height(); + + } + + + /** + * Math.pow(...) is very expensive, so avoid calling it and create it + * yourself. + */ + private static final int[] POW_10 = { + 1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000 + }; + + private static final IValueFormatter mDefaultValueFormatter = generateDefaultValueFormatter(); + + private static IValueFormatter generateDefaultValueFormatter() { + return new DefaultValueFormatter(1); + } + + /// - returns: The default value formatter used for all chart components that needs a default + public static IValueFormatter getDefaultValueFormatter() { + return mDefaultValueFormatter; + } + + /** + * Formats the given number to the given number of decimals, and returns the + * number as a string, maximum 35 characters. If thousands are separated, the separating + * character is a dot ("."). + * + * @param number + * @param digitCount + * @param separateThousands set this to true to separate thousands values + * @return + */ + public static String formatNumber(float number, int digitCount, boolean separateThousands) { + return formatNumber(number, digitCount, separateThousands, '.'); + } + + /** + * Formats the given number to the given number of decimals, and returns the + * number as a string, maximum 35 characters. + * + * @param number + * @param digitCount + * @param separateThousands set this to true to separate thousands values + * @param separateChar a caracter to be paced between the "thousands" + * @return + */ + public static String formatNumber(float number, int digitCount, boolean separateThousands, + char separateChar) { + + char[] out = new char[35]; + + boolean neg = false; + if (number == 0) { + return "0"; + } + + boolean zero = number < 1 && number > -1; + + if (number < 0) { + neg = true; + number = -number; + } + + if (digitCount > POW_10.length) { + digitCount = POW_10.length - 1; + } + + number *= POW_10[digitCount]; + long lval = Math.round(number); + int ind = out.length - 1; + int charCount = 0; + boolean decimalPointAdded = false; + + while (lval != 0 || charCount < (digitCount + 1)) { + int digit = (int) (lval % 10); + lval = lval / 10; + out[ind--] = (char) (digit + '0'); + charCount++; + + // add decimal point + if (charCount == digitCount) { + out[ind--] = ','; + charCount++; + decimalPointAdded = true; + + // add thousand separators + } else if (separateThousands && lval != 0 && charCount > digitCount) { + + if (decimalPointAdded) { + + if ((charCount - digitCount) % 4 == 0) { + out[ind--] = separateChar; + charCount++; + } + + } else { + + if ((charCount - digitCount) % 4 == 3) { + out[ind--] = separateChar; + charCount++; + } + } + } + } + + // if number around zero (between 1 and -1) + if (zero) { + out[ind--] = '0'; + charCount += 1; + } + + // if the number is negative + if (neg) { + out[ind--] = '-'; + charCount += 1; + } + + int start = out.length - charCount; + + // use this instead of "new String(...)" because of issue < Android 4.0 + return String.valueOf(out, start, out.length - start); + } + + /** + * rounds the given number to the next significant number + * + * @param number + * @return + */ + public static float roundToNextSignificant(double number) { + if (Double.isInfinite(number) || + Double.isNaN(number) || + number == 0.0) { + return 0; + } + + final float d = (float) Math.ceil((float) Math.log10(number < 0 ? -number : number)); + final int pw = 1 - (int) d; + final float magnitude = (float) Math.pow(10, pw); + final long shifted = Math.round(number * magnitude); + return shifted / magnitude; + } + + /** + * Returns the appropriate number of decimals to be used for the provided + * number. + * + * @param number + * @return + */ + public static int getDecimals(float number) { + + float i = roundToNextSignificant(number); + + if (Float.isInfinite(i)) { + return 0; + } + + return (int) Math.ceil(-Math.log10(i)) + 2; + } + + /** + * Converts the provided Integer List to an int array. + * + * @param integers + * @return + */ + public static int[] convertIntegers(List integers) { + + int[] ret = new int[integers.size()]; + + copyIntegers(integers, ret); + + return ret; + } + + public static void copyIntegers(List from, int[] to) { + int count = Math.min(to.length, from.size()); + for (int i = 0; i < count; i++) { + to[i] = from.get(i); + } + } + + /** + * Converts the provided String List to a String array. + * + * @param strings + * @return + */ + public static String[] convertStrings(List strings) { + + String[] ret = new String[strings.size()]; + + for (int i = 0; i < ret.length; i++) { + ret[i] = strings.get(i); + } + + return ret; + } + + /** + * Replacement for the Math.nextUp(...) method that is only available in + * HONEYCOMB and higher. Dat's some seeeeek sheeet. + * + * @param d + * @return + */ + public static double nextUp(double d) { + if (d == Double.POSITIVE_INFINITY) { + return d; + } else { + d += 0.0d; + return Double.longBitsToDouble(Double.doubleToRawLongBits(d) + + ((d >= 0.0d) ? +1L : -1L)); + } + } + + /** + * Returns a recyclable MPPointF instance. + * Calculates the position around a center point, depending on the distance + * from the center, and the angle of the position around the center. + * + * @param center + * @param dist + * @param angle in degrees, converted to radians internally + * @return + */ + public static MPPointF getPosition(MPPointF center, float dist, float angle) { + + MPPointF p = MPPointF.getInstance(0, 0); + getPosition(center, dist, angle, p); + return p; + } + + public static void getPosition(MPPointF center, float dist, float angle, MPPointF outputPoint) { + outputPoint.x = (float) (center.x + dist * Math.cos(Math.toRadians(angle))); + outputPoint.y = (float) (center.y + dist * Math.sin(Math.toRadians(angle))); + } + + public static void velocityTrackerPointerUpCleanUpIfNecessary(MotionEvent ev, + VelocityTracker tracker) { + + // Check the dot product of current velocities. + // If the pointer that left was opposing another velocity vector, clear. + tracker.computeCurrentVelocity(1000, mMaximumFlingVelocity); + final int upIndex = ev.getActionIndex(); + final int id1 = ev.getPointerId(upIndex); + final float x1 = tracker.getXVelocity(id1); + final float y1 = tracker.getYVelocity(id1); + for (int i = 0, count = ev.getPointerCount(); i < count; i++) { + if (i == upIndex) { + continue; + } + + final int id2 = ev.getPointerId(i); + final float x = x1 * tracker.getXVelocity(id2); + final float y = y1 * tracker.getYVelocity(id2); + + final float dot = x + y; + if (dot < 0) { + tracker.clear(); + break; + } + } + } + + /** + * Original method view.postInvalidateOnAnimation() only supportd in API >= + * 16, This is a replica of the code from ViewCompat. + * + * @param view + */ + @SuppressLint("NewApi") + public static void postInvalidateOnAnimation(View view) { + view.postInvalidateOnAnimation(); + } + + public static int getMinimumFlingVelocity() { + return mMinimumFlingVelocity; + } + + public static int getMaximumFlingVelocity() { + return mMaximumFlingVelocity; + } + + /** + * returns an angle between 0.f < 360.f (not less than zero, less than 360) + */ + public static float getNormalizedAngle(float angle) { + while (angle < 0.f) { + angle += 360.f; + } + + return angle % 360.f; + } + + private static final Rect mDrawableBoundsCache = new Rect(); + + public static void drawImage(Canvas canvas, + Drawable drawable, + int x, int y, + int width, int height) { + + MPPointF drawOffset = MPPointF.getInstance(); + drawOffset.x = x - (width / 2); + drawOffset.y = y - (height / 2); + + drawable.copyBounds(mDrawableBoundsCache); + drawable.setBounds( + mDrawableBoundsCache.left, + mDrawableBoundsCache.top, + mDrawableBoundsCache.left + width, + mDrawableBoundsCache.top + width); + + int saveId = canvas.save(); + // translate to the correct position and draw + canvas.translate(drawOffset.x, drawOffset.y); + drawable.draw(canvas); + canvas.restoreToCount(saveId); + } + + private static final Rect mDrawTextRectBuffer = new Rect(); + private static final Paint.FontMetrics mFontMetricsBuffer = new Paint.FontMetrics(); + + public static void drawXAxisValue(Canvas c, String text, float x, float y, + Paint paint, + MPPointF anchor, float angleDegrees) { + + float drawOffsetX = 0.f; + float drawOffsetY = 0.f; + + final float lineHeight = paint.getFontMetrics(mFontMetricsBuffer); + paint.getTextBounds(text, 0, text.length(), mDrawTextRectBuffer); + + // Android sometimes has pre-padding + drawOffsetX -= mDrawTextRectBuffer.left; + + // Android does not snap the bounds to line boundaries, + // and draws from bottom to top. + // And we want to normalize it. + drawOffsetY -= mFontMetricsBuffer.ascent; + + // To have a consistent point of reference, we always draw left-aligned + Paint.Align originalTextAlign = paint.getTextAlign(); + paint.setTextAlign(Paint.Align.LEFT); + + if (angleDegrees != 0.f) { + + // Move the text drawing rect in a way that it always rotates around its center + drawOffsetX -= mDrawTextRectBuffer.width() * 0.5f; + drawOffsetY -= lineHeight * 0.5f; + + float translateX = x; + float translateY = y; + + // Move the "outer" rect relative to the anchor, assuming its centered + if (anchor.x != 0.5f || anchor.y != 0.5f) { + final FSize rotatedSize = getSizeOfRotatedRectangleByDegrees( + mDrawTextRectBuffer.width(), + lineHeight, + angleDegrees); + + translateX -= rotatedSize.width * (anchor.x - 0.5f); + translateY -= rotatedSize.height * (anchor.y - 0.5f); + FSize.recycleInstance(rotatedSize); + } - c.save(); - c.translate(translateX, translateY); - c.rotate(angleDegrees); + c.save(); + c.translate(translateX, translateY); + c.rotate(angleDegrees); - c.drawText(text, drawOffsetX, drawOffsetY, paint); + c.drawText(text, drawOffsetX, drawOffsetY, paint); - c.restore(); - } else { - if (anchor.x != 0.f || anchor.y != 0.f) { + c.restore(); + } else { + if (anchor.x != 0.f || anchor.y != 0.f) { - drawOffsetX -= mDrawTextRectBuffer.width() * anchor.x; - drawOffsetY -= lineHeight * anchor.y; - } + drawOffsetX -= mDrawTextRectBuffer.width() * anchor.x; + drawOffsetY -= lineHeight * anchor.y; + } - drawOffsetX += x; - drawOffsetY += y; + drawOffsetX += x; + drawOffsetY += y; - c.drawText(text, drawOffsetX, drawOffsetY, paint); - } + c.drawText(text, drawOffsetX, drawOffsetY, paint); + } - paint.setTextAlign(originalTextAlign); - } + paint.setTextAlign(originalTextAlign); + } - public static void drawMultilineText(Canvas c, StaticLayout textLayout, - float x, float y, - TextPaint paint, - MPPointF anchor, float angleDegrees) { + public static void drawMultilineText(Canvas c, StaticLayout textLayout, + float x, float y, + TextPaint paint, + MPPointF anchor, float angleDegrees) { - float drawOffsetX = 0.f; - float drawOffsetY = 0.f; - float drawWidth; - float drawHeight; - - final float lineHeight = paint.getFontMetrics(mFontMetricsBuffer); - - drawWidth = textLayout.getWidth(); - drawHeight = textLayout.getLineCount() * lineHeight; - - // Android sometimes has pre-padding - drawOffsetX -= mDrawTextRectBuffer.left; - - // Android does not snap the bounds to line boundaries, - // and draws from bottom to top. - // And we want to normalize it. - drawOffsetY += drawHeight; - - // To have a consistent point of reference, we always draw left-aligned - Paint.Align originalTextAlign = paint.getTextAlign(); - paint.setTextAlign(Paint.Align.LEFT); - - if (angleDegrees != 0.f) { - - // Move the text drawing rect in a way that it always rotates around its center - drawOffsetX -= drawWidth * 0.5f; - drawOffsetY -= drawHeight * 0.5f; - - float translateX = x; - float translateY = y; - - // Move the "outer" rect relative to the anchor, assuming its centered - if (anchor.x != 0.5f || anchor.y != 0.5f) { - final FSize rotatedSize = getSizeOfRotatedRectangleByDegrees( - drawWidth, - drawHeight, - angleDegrees); - - translateX -= rotatedSize.width * (anchor.x - 0.5f); - translateY -= rotatedSize.height * (anchor.y - 0.5f); - FSize.recycleInstance(rotatedSize); - } - - c.save(); - c.translate(translateX, translateY); - c.rotate(angleDegrees); - - c.translate(drawOffsetX, drawOffsetY); - textLayout.draw(c); - - c.restore(); - } else { - if (anchor.x != 0.f || anchor.y != 0.f) { - - drawOffsetX -= drawWidth * anchor.x; - drawOffsetY -= drawHeight * anchor.y; - } - - drawOffsetX += x; - drawOffsetY += y; - - c.save(); - - c.translate(drawOffsetX, drawOffsetY); - textLayout.draw(c); - - c.restore(); - } - - paint.setTextAlign(originalTextAlign); - } - - public static void drawMultilineText(Canvas c, String text, - float x, float y, - TextPaint paint, - FSize constrainedToSize, - MPPointF anchor, float angleDegrees) { - - StaticLayout textLayout = new StaticLayout( - text, 0, text.length(), - paint, - (int) Math.max(Math.ceil(constrainedToSize.width), 1.f), - Layout.Alignment.ALIGN_NORMAL, 1.f, 0.f, false); - - - drawMultilineText(c, textLayout, x, y, paint, anchor, angleDegrees); - } - - /** - * Returns a recyclable FSize instance. - * Represents size of a rotated rectangle by degrees. - * - * @param rectangleSize - * @param degrees - * @return A Recyclable FSize instance - */ - public static FSize getSizeOfRotatedRectangleByDegrees(FSize rectangleSize, float degrees) { - final float radians = degrees * FDEG2RAD; - return getSizeOfRotatedRectangleByRadians(rectangleSize.width, rectangleSize.height, - radians); - } - - /** - * Returns a recyclable FSize instance. - * Represents size of a rotated rectangle by radians. - * - * @param rectangleSize - * @param radians - * @return A Recyclable FSize instance - */ - public static FSize getSizeOfRotatedRectangleByRadians(FSize rectangleSize, float radians) { - return getSizeOfRotatedRectangleByRadians(rectangleSize.width, rectangleSize.height, - radians); - } - - /** - * Returns a recyclable FSize instance. - * Represents size of a rotated rectangle by degrees. - * - * @param rectangleWidth - * @param rectangleHeight - * @param degrees - * @return A Recyclable FSize instance - */ - public static FSize getSizeOfRotatedRectangleByDegrees(float rectangleWidth, float - rectangleHeight, float degrees) { - final float radians = degrees * FDEG2RAD; - return getSizeOfRotatedRectangleByRadians(rectangleWidth, rectangleHeight, radians); - } - - /** - * Returns a recyclable FSize instance. - * Represents size of a rotated rectangle by radians. - * - * @param rectangleWidth - * @param rectangleHeight - * @param radians - * @return A Recyclable FSize instance - */ - public static FSize getSizeOfRotatedRectangleByRadians(float rectangleWidth, float - rectangleHeight, float radians) { - return FSize.getInstance( - Math.abs(rectangleWidth * (float) Math.cos(radians)) + Math.abs(rectangleHeight * - (float) Math.sin(radians)), - Math.abs(rectangleWidth * (float) Math.sin(radians)) + Math.abs(rectangleHeight * - (float) Math.cos(radians)) - ); - } - - public static int getSDKInt() { - return android.os.Build.VERSION.SDK_INT; - } + float drawOffsetX = 0.f; + float drawOffsetY = 0.f; + float drawWidth; + float drawHeight; + + final float lineHeight = paint.getFontMetrics(mFontMetricsBuffer); + + drawWidth = textLayout.getWidth(); + drawHeight = textLayout.getLineCount() * lineHeight; + + // Android sometimes has pre-padding + drawOffsetX -= mDrawTextRectBuffer.left; + + // Android does not snap the bounds to line boundaries, + // and draws from bottom to top. + // And we want to normalize it. + drawOffsetY += drawHeight; + + // To have a consistent point of reference, we always draw left-aligned + Paint.Align originalTextAlign = paint.getTextAlign(); + paint.setTextAlign(Paint.Align.LEFT); + + if (angleDegrees != 0.f) { + + // Move the text drawing rect in a way that it always rotates around its center + drawOffsetX -= drawWidth * 0.5f; + drawOffsetY -= drawHeight * 0.5f; + + float translateX = x; + float translateY = y; + + // Move the "outer" rect relative to the anchor, assuming its centered + if (anchor.x != 0.5f || anchor.y != 0.5f) { + final FSize rotatedSize = getSizeOfRotatedRectangleByDegrees( + drawWidth, + drawHeight, + angleDegrees); + + translateX -= rotatedSize.width * (anchor.x - 0.5f); + translateY -= rotatedSize.height * (anchor.y - 0.5f); + FSize.recycleInstance(rotatedSize); + } + + c.save(); + c.translate(translateX, translateY); + c.rotate(angleDegrees); + + c.translate(drawOffsetX, drawOffsetY); + textLayout.draw(c); + + c.restore(); + } else { + if (anchor.x != 0.f || anchor.y != 0.f) { + + drawOffsetX -= drawWidth * anchor.x; + drawOffsetY -= drawHeight * anchor.y; + } + + drawOffsetX += x; + drawOffsetY += y; + + c.save(); + + c.translate(drawOffsetX, drawOffsetY); + textLayout.draw(c); + + c.restore(); + } + + paint.setTextAlign(originalTextAlign); + } + + public static void drawMultilineText(Canvas c, String text, + float x, float y, + TextPaint paint, + FSize constrainedToSize, + MPPointF anchor, float angleDegrees) { + + StaticLayout textLayout = new StaticLayout( + text, 0, text.length(), + paint, + (int) Math.max(Math.ceil(constrainedToSize.width), 1.f), + Layout.Alignment.ALIGN_NORMAL, 1.f, 0.f, false); + + + drawMultilineText(c, textLayout, x, y, paint, anchor, angleDegrees); + } + + /** + * Returns a recyclable FSize instance. + * Represents size of a rotated rectangle by degrees. + * + * @param rectangleSize + * @param degrees + * @return A Recyclable FSize instance + */ + public static FSize getSizeOfRotatedRectangleByDegrees(FSize rectangleSize, float degrees) { + final float radians = degrees * FDEG2RAD; + return getSizeOfRotatedRectangleByRadians(rectangleSize.width, rectangleSize.height, + radians); + } + + /** + * Returns a recyclable FSize instance. + * Represents size of a rotated rectangle by radians. + * + * @param rectangleSize + * @param radians + * @return A Recyclable FSize instance + */ + public static FSize getSizeOfRotatedRectangleByRadians(FSize rectangleSize, float radians) { + return getSizeOfRotatedRectangleByRadians(rectangleSize.width, rectangleSize.height, + radians); + } + + /** + * Returns a recyclable FSize instance. + * Represents size of a rotated rectangle by degrees. + * + * @param rectangleWidth + * @param rectangleHeight + * @param degrees + * @return A Recyclable FSize instance + */ + public static FSize getSizeOfRotatedRectangleByDegrees(float rectangleWidth, float + rectangleHeight, float degrees) { + final float radians = degrees * FDEG2RAD; + return getSizeOfRotatedRectangleByRadians(rectangleWidth, rectangleHeight, radians); + } + + /** + * Returns a recyclable FSize instance. + * Represents size of a rotated rectangle by radians. + * + * @param rectangleWidth + * @param rectangleHeight + * @param radians + * @return A Recyclable FSize instance + */ + public static FSize getSizeOfRotatedRectangleByRadians(float rectangleWidth, float + rectangleHeight, float radians) { + return FSize.getInstance( + Math.abs(rectangleWidth * (float) Math.cos(radians)) + Math.abs(rectangleHeight * + (float) Math.sin(radians)), + Math.abs(rectangleWidth * (float) Math.sin(radians)) + Math.abs(rectangleHeight * + (float) Math.cos(radians)) + ); + } + + public static int getSDKInt() { + return android.os.Build.VERSION.SDK_INT; + } } diff --git a/README.md b/README.md index 2a7b0cfecb..6d7ed3a768 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -[![](https://jitpack.io/v/AppDevNext/MPAndroidChart.svg)](https://jitpack.io/#AppDevNext/MPAndroidChart) +[![](https://jitpack.io/v/AppDevNext/AndroidChart.svg)](https://jitpack.io/#AppDevNext/AndroidChart) [![PullRequest](https://github.com/AppDevNext/AndroidChart/actions/workflows/Android-CI.yml/badge.svg)](https://github.com/AppDevNext/AndroidChart/actions/workflows/Android-CI.yml) :zap: A powerful & easy to use chart library for Android :zap: diff --git a/app/src/main/java/info/appdev/chartexample/AnotherBarActivity.kt b/app/src/main/java/info/appdev/chartexample/AnotherBarActivity.kt index 0b655bcb48..52a88c8c62 100644 --- a/app/src/main/java/info/appdev/chartexample/AnotherBarActivity.kt +++ b/app/src/main/java/info/appdev/chartexample/AnotherBarActivity.kt @@ -11,6 +11,7 @@ import android.widget.SeekBar import android.widget.SeekBar.OnSeekBarChangeListener import android.widget.TextView import androidx.core.content.ContextCompat +import androidx.core.net.toUri import com.github.mikephil.charting.charts.BarChart import com.github.mikephil.charting.components.XAxis.XAxisPosition import com.github.mikephil.charting.data.BarData @@ -20,7 +21,6 @@ import com.github.mikephil.charting.interfaces.datasets.IBarDataSet import com.github.mikephil.charting.utils.ColorTemplate import info.appdev.chartexample.DataTools.Companion.getValues import info.appdev.chartexample.notimportant.DemoBase -import androidx.core.net.toUri class AnotherBarActivity : DemoBase(), OnSeekBarChangeListener { private var chart: BarChart? = null @@ -126,8 +126,7 @@ class AnotherBarActivity : DemoBase(), OnSeekBarChangeListener { when (item.itemId) { R.id.viewGithub -> { val i = Intent(Intent.ACTION_VIEW) - i.data = - "https://github.com/AppDevNext/AndroidChart/blob/master/app/src/main/java/com/xxmassdeveloper/mpchartexample/AnotherBarActivity.java".toUri() + i.data = "https://github.com/AppDevNext/AndroidChart/blob/master/app/src/main/java/info/appdev/chartexample/AnotherBarActivity.kt".toUri() startActivity(i) } diff --git a/app/src/main/java/info/appdev/chartexample/BarChartActivity.kt b/app/src/main/java/info/appdev/chartexample/BarChartActivity.kt index 4eac174546..b2dc828522 100644 --- a/app/src/main/java/info/appdev/chartexample/BarChartActivity.kt +++ b/app/src/main/java/info/appdev/chartexample/BarChartActivity.kt @@ -203,8 +203,7 @@ class BarChartActivity : DemoBase(), OnSeekBarChangeListener, OnChartValueSelect when (item.itemId) { R.id.viewGithub -> { val i = Intent(Intent.ACTION_VIEW) - i.data = - "https://github.com/AppDevNext/AndroidChart/blob/master/app/src/main/java/com/xxmassdeveloper/mpchartexample/BarChartActivity.java".toUri() + i.data = "https://github.com/AppDevNext/AndroidChart/blob/master/app/src/main/java/info/appdev/chartexample/BarChartActivity.kt".toUri() startActivity(i) } diff --git a/app/src/main/java/info/appdev/chartexample/BarChartActivityMultiDataset.kt b/app/src/main/java/info/appdev/chartexample/BarChartActivityMultiDataset.kt index d80cf58ec9..dadef0a6c9 100644 --- a/app/src/main/java/info/appdev/chartexample/BarChartActivityMultiDataset.kt +++ b/app/src/main/java/info/appdev/chartexample/BarChartActivityMultiDataset.kt @@ -13,6 +13,7 @@ import android.widget.SeekBar import android.widget.SeekBar.OnSeekBarChangeListener import android.widget.TextView import androidx.core.content.ContextCompat +import androidx.core.net.toUri import com.github.mikephil.charting.charts.BarChart import com.github.mikephil.charting.components.AxisBase import com.github.mikephil.charting.components.Legend @@ -28,7 +29,6 @@ import info.appdev.chartexample.DataTools.Companion.getValues import info.appdev.chartexample.custom.MyMarkerView import info.appdev.chartexample.notimportant.DemoBase import java.util.Locale -import androidx.core.net.toUri class BarChartActivityMultiDataset : DemoBase(), OnSeekBarChangeListener, OnChartValueSelectedListener { private var chart: BarChart? = null @@ -195,7 +195,7 @@ class BarChartActivityMultiDataset : DemoBase(), OnSeekBarChangeListener, OnChar R.id.viewGithub -> { val i = Intent(Intent.ACTION_VIEW) i.data = - "https://github.com/AppDevNext/AndroidChart/blob/master/app/src/main/java/com/xxmassdeveloper/mpchartexample/BarChartActivityMultiDataset.java".toUri() + "https://github.com/AppDevNext/AndroidChart/blob/master/app/src/main/java/info/appdev/chartexample/BarChartActivityMultiDataset.java".toUri() startActivity(i) } diff --git a/app/src/main/java/info/appdev/chartexample/BarChartActivitySinus.kt b/app/src/main/java/info/appdev/chartexample/BarChartActivitySinus.kt index b4ec554dd8..7c99deccb4 100644 --- a/app/src/main/java/info/appdev/chartexample/BarChartActivitySinus.kt +++ b/app/src/main/java/info/appdev/chartexample/BarChartActivitySinus.kt @@ -12,6 +12,7 @@ import android.widget.SeekBar import android.widget.SeekBar.OnSeekBarChangeListener import android.widget.TextView import androidx.core.content.ContextCompat +import androidx.core.net.toUri import com.github.mikephil.charting.charts.BarChart import com.github.mikephil.charting.components.Legend import com.github.mikephil.charting.components.Legend.LegendForm @@ -20,7 +21,6 @@ import com.github.mikephil.charting.data.BarDataSet import com.github.mikephil.charting.data.BarEntry import com.github.mikephil.charting.utils.FileUtils import info.appdev.chartexample.notimportant.DemoBase -import androidx.core.net.toUri class BarChartActivitySinus : DemoBase(), OnSeekBarChangeListener { private var chart: BarChart? = null @@ -140,8 +140,7 @@ class BarChartActivitySinus : DemoBase(), OnSeekBarChangeListener { when (item.itemId) { R.id.viewGithub -> { val i = Intent(Intent.ACTION_VIEW) - i.data = - "https://github.com/AppDevNext/AndroidChart/blob/master/app/src/main/java/com/xxmassdeveloper/mpchartexample/BarChartActivitySinus.java".toUri() + i.data = "https://github.com/AppDevNext/AndroidChart/blob/master/app/src/main/java/info/appdev/chartexample/BarChartActivitySinus.java".toUri() startActivity(i) } diff --git a/app/src/main/java/info/appdev/chartexample/BarChartPositiveNegative.kt b/app/src/main/java/info/appdev/chartexample/BarChartPositiveNegative.kt index 320302ae91..6a9c0ece73 100644 --- a/app/src/main/java/info/appdev/chartexample/BarChartPositiveNegative.kt +++ b/app/src/main/java/info/appdev/chartexample/BarChartPositiveNegative.kt @@ -6,6 +6,7 @@ import android.os.Bundle import android.view.Menu import android.view.MenuItem import android.view.WindowManager +import androidx.core.net.toUri import com.github.mikephil.charting.charts.BarChart import com.github.mikephil.charting.components.AxisBase import com.github.mikephil.charting.components.XAxis.XAxisPosition @@ -20,7 +21,6 @@ import info.appdev.chartexample.notimportant.DemoBase import java.text.DecimalFormat import kotlin.math.max import kotlin.math.min -import androidx.core.net.toUri class BarChartPositiveNegative : DemoBase() { private var chart: BarChart? = null @@ -161,7 +161,7 @@ class BarChartPositiveNegative : DemoBase() { R.id.viewGithub -> { val i = Intent(Intent.ACTION_VIEW) i.data = - "https://github.com/AppDevNext/AndroidChart/blob/master/app/src/main/java/com/xxmassdeveloper/mpchartexample/BarChartPositiveNegative.java".toUri() + "https://github.com/AppDevNext/AndroidChart/blob/master/app/src/main/java/info/appdev/chartexample/BarChartPositiveNegative.java".toUri() startActivity(i) } } diff --git a/app/src/main/java/info/appdev/chartexample/BubbleChartActivity.kt b/app/src/main/java/info/appdev/chartexample/BubbleChartActivity.kt index 2d2e9040ec..04e59177ff 100644 --- a/app/src/main/java/info/appdev/chartexample/BubbleChartActivity.kt +++ b/app/src/main/java/info/appdev/chartexample/BubbleChartActivity.kt @@ -13,6 +13,7 @@ import android.widget.SeekBar import android.widget.SeekBar.OnSeekBarChangeListener import android.widget.TextView import androidx.core.content.ContextCompat +import androidx.core.net.toUri import com.github.mikephil.charting.charts.BubbleChart import com.github.mikephil.charting.components.Legend import com.github.mikephil.charting.components.XAxis @@ -27,7 +28,6 @@ import com.github.mikephil.charting.utils.ColorTemplate import com.github.mikephil.charting.utils.MPPointF import info.appdev.chartexample.DataTools.Companion.getValues import info.appdev.chartexample.notimportant.DemoBase -import androidx.core.net.toUri class BubbleChartActivity : DemoBase(), OnSeekBarChangeListener, OnChartValueSelectedListener { private var chart: BubbleChart? = null @@ -168,8 +168,7 @@ class BubbleChartActivity : DemoBase(), OnSeekBarChangeListener, OnChartValueSel when (item.itemId) { R.id.viewGithub -> { val i = Intent(Intent.ACTION_VIEW) - i.data = - "https://github.com/AppDevNext/AndroidChart/blob/master/app/src/main/java/com/xxmassdeveloper/mpchartexample/BubbleChartActivity.java".toUri() + i.data = "https://github.com/AppDevNext/AndroidChart/blob/master/app/src/main/java/info/appdev/chartexample/BubbleChartActivity.kt".toUri() startActivity(i) } diff --git a/app/src/main/java/info/appdev/chartexample/CandleStickChartActivity.kt b/app/src/main/java/info/appdev/chartexample/CandleStickChartActivity.kt index 9f4564358d..a0220e5151 100644 --- a/app/src/main/java/info/appdev/chartexample/CandleStickChartActivity.kt +++ b/app/src/main/java/info/appdev/chartexample/CandleStickChartActivity.kt @@ -150,7 +150,7 @@ class CandleStickChartActivity : DemoBase(), OnSeekBarChangeListener { R.id.viewGithub -> { val i = Intent(Intent.ACTION_VIEW) i.data = - "https://github.com/AppDevNext/AndroidChart/blob/master/app/src/main/java/com/xxmassdeveloper/mpchartexample/CandleStickChartActivity.java".toUri() + "https://github.com/AppDevNext/AndroidChart/blob/master/app/src/main/java/info/appdev/chartexample/CandleStickChartActivity.kt".toUri() startActivity(i) } diff --git a/app/src/main/java/info/appdev/chartexample/CombinedChartActivity.kt b/app/src/main/java/info/appdev/chartexample/CombinedChartActivity.kt index 92fdb8e0a3..248799a1c7 100644 --- a/app/src/main/java/info/appdev/chartexample/CombinedChartActivity.kt +++ b/app/src/main/java/info/appdev/chartexample/CombinedChartActivity.kt @@ -239,7 +239,7 @@ class CombinedChartActivity : DemoBase() { R.id.viewGithub -> { val i = Intent(Intent.ACTION_VIEW) i.data = - "https://github.com/AppDevNext/AndroidChart/blob/master/app/src/main/java/com/xxmassdeveloper/mpchartexample/CombinedChartActivity.java".toUri() + "https://github.com/AppDevNext/AndroidChart/blob/master/app/src/main/java/info/appdev/chartexample/CombinedChartActivity.kt".toUri() startActivity(i) } diff --git a/app/src/main/java/info/appdev/chartexample/CubicLineChartActivity.kt b/app/src/main/java/info/appdev/chartexample/CubicLineChartActivity.kt index e8b6d6236c..8771f6de16 100644 --- a/app/src/main/java/info/appdev/chartexample/CubicLineChartActivity.kt +++ b/app/src/main/java/info/appdev/chartexample/CubicLineChartActivity.kt @@ -156,7 +156,7 @@ class CubicLineChartActivity : DemoBase(), OnSeekBarChangeListener { when (item.itemId) { R.id.viewGithub -> { val i = Intent(Intent.ACTION_VIEW) - i.setData(Uri.parse("https://github.com/AppDevNext/AndroidChart/blob/master/app/src/main/java/com/xxmassdeveloper/mpchartexample/CubicLineChartActivity.java")) + i.setData(Uri.parse("https://github.com/AppDevNext/AndroidChart/blob/master/app/src/main/java/info/appdev/chartexample/CubicLineChartActivity.kt")) startActivity(i) } diff --git a/app/src/main/java/info/appdev/chartexample/DynamicalAddingActivity.kt b/app/src/main/java/info/appdev/chartexample/DynamicalAddingActivity.kt index 44cdcbc343..6b1cb39635 100644 --- a/app/src/main/java/info/appdev/chartexample/DynamicalAddingActivity.kt +++ b/app/src/main/java/info/appdev/chartexample/DynamicalAddingActivity.kt @@ -180,7 +180,7 @@ class DynamicalAddingActivity : DemoBase(), OnChartValueSelectedListener { R.id.viewGithub -> { val i = Intent(Intent.ACTION_VIEW) i.data = - "https://github.com/AppDevNext/AndroidChart/blob/master/app/src/main/java/com/xxmassdeveloper/mpchartexample/DynamicalAddingActivity.java".toUri() + "https://github.com/AppDevNext/AndroidChart/blob/master/app/src/main/java/info/appdev/chartexample/DynamicalAddingActivity.kt".toUri() startActivity(i) } diff --git a/app/src/main/java/info/appdev/chartexample/FilledLineActivity.kt b/app/src/main/java/info/appdev/chartexample/FilledLineActivity.kt index 3f08334f23..55ea461aa7 100644 --- a/app/src/main/java/info/appdev/chartexample/FilledLineActivity.kt +++ b/app/src/main/java/info/appdev/chartexample/FilledLineActivity.kt @@ -167,7 +167,7 @@ class FilledLineActivity : DemoBase() { R.id.viewGithub -> { val i = Intent(Intent.ACTION_VIEW) i.data = - "https://github.com/AppDevNext/AndroidChart/blob/master/app/src/main/java/com/xxmassdeveloper/mpchartexample/FilledLineActivity.java".toUri() + "https://github.com/AppDevNext/AndroidChart/blob/master/app/src/main/java/info/appdev/chartexample/FilledLineActivity.kt".toUri() startActivity(i) } } diff --git a/app/src/main/java/info/appdev/chartexample/HalfPieChartActivity.kt b/app/src/main/java/info/appdev/chartexample/HalfPieChartActivity.kt index 119c73da6e..d2d5f984f8 100644 --- a/app/src/main/java/info/appdev/chartexample/HalfPieChartActivity.kt +++ b/app/src/main/java/info/appdev/chartexample/HalfPieChartActivity.kt @@ -147,7 +147,7 @@ class HalfPieChartActivity : DemoBase() { R.id.viewGithub -> { val i = Intent(Intent.ACTION_VIEW) i.data = - "https://github.com/AppDevNext/AndroidChart/blob/master/app/src/main/java/com/xxmassdeveloper/mpchartexample/HalfPieChartActivity.java".toUri() + "https://github.com/AppDevNext/AndroidChart/blob/master/app/src/main/java/info/appdev/chartexample/HalfPieChartActivity.kt".toUri() startActivity(i) } } diff --git a/app/src/main/java/info/appdev/chartexample/HorizontalBarChartActivity.kt b/app/src/main/java/info/appdev/chartexample/HorizontalBarChartActivity.kt index 2aa7cb2803..956d0cb943 100644 --- a/app/src/main/java/info/appdev/chartexample/HorizontalBarChartActivity.kt +++ b/app/src/main/java/info/appdev/chartexample/HorizontalBarChartActivity.kt @@ -163,7 +163,7 @@ class HorizontalBarChartActivity : DemoBase(), OnSeekBarChangeListener, OnChartV R.id.viewGithub -> { val i = Intent(Intent.ACTION_VIEW) i.data = - "https://github.com/AppDevNext/AndroidChart/blob/master/app/src/main/java/com/xxmassdeveloper/mpchartexample/HorizontalBarChartActivity.java".toUri() + "https://github.com/AppDevNext/AndroidChart/blob/master/app/src/main/java/info/appdev/chartexample/HorizontalBarChartActivity.kt".toUri() startActivity(i) } diff --git a/app/src/main/java/info/appdev/chartexample/HorizontalBarNegativeChartActivity.kt b/app/src/main/java/info/appdev/chartexample/HorizontalBarNegativeChartActivity.kt index d7484a788f..3ba29a88de 100644 --- a/app/src/main/java/info/appdev/chartexample/HorizontalBarNegativeChartActivity.kt +++ b/app/src/main/java/info/appdev/chartexample/HorizontalBarNegativeChartActivity.kt @@ -161,7 +161,7 @@ class HorizontalBarNegativeChartActivity : DemoBase(), OnSeekBarChangeListener, R.id.viewGithub -> { val i = Intent(Intent.ACTION_VIEW) i.data = - "https://github.com/AppDevNext/AndroidChart/blob/master/app/src/main/java/com/xxmassdeveloper/mpchartexample/HorizontalBarChartActivity.java".toUri() + "https://github.com/AppDevNext/AndroidChart/blob/master/app/src/main/java/info/appdev/chartexample/HorizontalBarChartActivity.kt".toUri() startActivity(i) } diff --git a/app/src/main/java/info/appdev/chartexample/InvertedLineChartActivity.kt b/app/src/main/java/info/appdev/chartexample/InvertedLineChartActivity.kt index cd3edd699c..2c4a43f08d 100644 --- a/app/src/main/java/info/appdev/chartexample/InvertedLineChartActivity.kt +++ b/app/src/main/java/info/appdev/chartexample/InvertedLineChartActivity.kt @@ -144,7 +144,7 @@ class InvertedLineChartActivity : DemoBase(), OnSeekBarChangeListener, OnChartVa when (item.itemId) { R.id.viewGithub -> { val i = Intent(Intent.ACTION_VIEW) - i.data = "https://github.com/AppDevNext/AndroidChart/blob/master/app/src/main/java/com/xxmassdeveloper/mpchartexample/InvertedLineChartActivity.java".toUri() + i.data = "https://github.com/AppDevNext/AndroidChart/blob/master/app/src/main/java/info/appdev/chartexample/InvertedLineChartActivity.kt".toUri() startActivity(i) } diff --git a/app/src/main/java/info/appdev/chartexample/LineChartActivity.kt b/app/src/main/java/info/appdev/chartexample/LineChartActivity.kt index 9323b79c21..dd75105df0 100644 --- a/app/src/main/java/info/appdev/chartexample/LineChartActivity.kt +++ b/app/src/main/java/info/appdev/chartexample/LineChartActivity.kt @@ -159,7 +159,7 @@ class LineChartActivity : DemoBase(), OnSeekBarChangeListener, OnChartValueSelec R.id.viewGithub -> { val i = Intent(Intent.ACTION_VIEW) i.data = - "https://github.com/AppDevNext/AndroidChart/blob/master/app/src/main/java/com/xxmassdeveloper/mpchartexample/LineChartActivity1.java".toUri() + "https://github.com/AppDevNext/AndroidChart/blob/master/app/src/main/java/info/appdev/chartexample/LineChartActivity1.java".toUri() startActivity(i) } diff --git a/app/src/main/java/info/appdev/chartexample/LineChartActivityColored.kt b/app/src/main/java/info/appdev/chartexample/LineChartActivityColored.kt index 121d801bec..1250288675 100644 --- a/app/src/main/java/info/appdev/chartexample/LineChartActivityColored.kt +++ b/app/src/main/java/info/appdev/chartexample/LineChartActivityColored.kt @@ -134,7 +134,7 @@ class LineChartActivityColored : DemoBase() { R.id.viewGithub -> { val i = Intent(Intent.ACTION_VIEW) i.data = - "https://github.com/AppDevNext/AndroidChart/blob/master/app/src/main/java/com/xxmassdeveloper/mpchartexample/LineChartActivityColored.java".toUri() + "https://github.com/AppDevNext/AndroidChart/blob/master/app/src/main/java/info/appdev/chartexample/LineChartActivityColored.java".toUri() startActivity(i) } } diff --git a/app/src/main/java/info/appdev/chartexample/LineChartDualAxisActivity.kt b/app/src/main/java/info/appdev/chartexample/LineChartDualAxisActivity.kt index 77440e35eb..41111290c5 100644 --- a/app/src/main/java/info/appdev/chartexample/LineChartDualAxisActivity.kt +++ b/app/src/main/java/info/appdev/chartexample/LineChartDualAxisActivity.kt @@ -228,7 +228,7 @@ class LineChartDualAxisActivity : DemoBase(), OnSeekBarChangeListener, OnChartVa R.id.viewGithub -> { val i = Intent(Intent.ACTION_VIEW) i.data = - "https://github.com/AppDevNext/AndroidChart/blob/master/app/src/main/java/com/xxmassdeveloper/mpchartexample/LineChartActivity2.java".toUri() + "https://github.com/AppDevNext/AndroidChart/blob/master/app/src/main/java/info/appdev/chartexample/LineChartActivity2.java".toUri() startActivity(i) } diff --git a/app/src/main/java/info/appdev/chartexample/LineChartTimeActivity.kt b/app/src/main/java/info/appdev/chartexample/LineChartTimeActivity.kt index dde4a095f0..e0c6b8b739 100644 --- a/app/src/main/java/info/appdev/chartexample/LineChartTimeActivity.kt +++ b/app/src/main/java/info/appdev/chartexample/LineChartTimeActivity.kt @@ -165,7 +165,7 @@ class LineChartTimeActivity : DemoBase(), OnSeekBarChangeListener { R.id.viewGithub -> { val i = Intent(Intent.ACTION_VIEW) i.data = - "https://github.com/AppDevNext/AndroidChart/blob/master/app/src/main/java/com/xxmassdeveloper/mpchartexample/LineChartTime.java".toUri() + "https://github.com/AppDevNext/AndroidChart/blob/master/app/src/main/java/info/appdev/chartexample/LineChartTime.java".toUri() startActivity(i) } diff --git a/app/src/main/java/info/appdev/chartexample/ListViewBarChartActivity.kt b/app/src/main/java/info/appdev/chartexample/ListViewBarChartActivity.kt index 3a7ee0722c..300b6106a1 100644 --- a/app/src/main/java/info/appdev/chartexample/ListViewBarChartActivity.kt +++ b/app/src/main/java/info/appdev/chartexample/ListViewBarChartActivity.kt @@ -149,7 +149,7 @@ class ListViewBarChartActivity : DemoBase() { if (item.itemId == R.id.viewGithub) { val i = Intent(Intent.ACTION_VIEW) i.data = - "https://github.com/AppDevNext/AndroidChart/blob/master/app/src/main/java/com/xxmassdeveloper/mpchartexample/ListViewBarChartActivity.java".toUri() + "https://github.com/AppDevNext/AndroidChart/blob/master/app/src/main/java/info/appdev/chartexample/ListViewBarChartActivity.kt".toUri() startActivity(i) } diff --git a/app/src/main/java/info/appdev/chartexample/ListViewMultiChartActivity.kt b/app/src/main/java/info/appdev/chartexample/ListViewMultiChartActivity.kt index 50ef73a9d7..e7460e2f5b 100644 --- a/app/src/main/java/info/appdev/chartexample/ListViewMultiChartActivity.kt +++ b/app/src/main/java/info/appdev/chartexample/ListViewMultiChartActivity.kt @@ -178,7 +178,7 @@ class ListViewMultiChartActivity : DemoBase() { R.id.viewGithub -> { val i = Intent(Intent.ACTION_VIEW) i.data = - "https://github.com/AppDevNext/AndroidChart/blob/master/app/src/main/java/com/xxmassdeveloper/mpchartexample/ListViewMultiChartActivity.java".toUri() + "https://github.com/AppDevNext/AndroidChart/blob/master/app/src/main/java/info/appdev/chartexample/ListViewMultiChartActivity.kt".toUri() startActivity(i) } } diff --git a/app/src/main/java/info/appdev/chartexample/MultiLineChartActivity.kt b/app/src/main/java/info/appdev/chartexample/MultiLineChartActivity.kt index 2a298705df..51a5be09f2 100644 --- a/app/src/main/java/info/appdev/chartexample/MultiLineChartActivity.kt +++ b/app/src/main/java/info/appdev/chartexample/MultiLineChartActivity.kt @@ -143,7 +143,7 @@ class MultiLineChartActivity : DemoBase(), OnSeekBarChangeListener, OnChartGestu R.id.viewGithub -> { val i = Intent(Intent.ACTION_VIEW) i.data = - "https://github.com/AppDevNext/AndroidChart/blob/master/app/src/main/java/com/xxmassdeveloper/mpchartexample/MultiLineChartActivity.java".toUri() + "https://github.com/AppDevNext/AndroidChart/blob/master/app/src/main/java/info/appdev/chartexample/MultiLineChartActivity.kt".toUri() startActivity(i) } diff --git a/app/src/main/java/info/appdev/chartexample/PerformanceLineChart.kt b/app/src/main/java/info/appdev/chartexample/PerformanceLineChart.kt index 4e6bba17bc..3bfb8a1144 100644 --- a/app/src/main/java/info/appdev/chartexample/PerformanceLineChart.kt +++ b/app/src/main/java/info/appdev/chartexample/PerformanceLineChart.kt @@ -103,7 +103,7 @@ class PerformanceLineChart : DemoBase(), OnSeekBarChangeListener { R.id.viewGithub -> { val i = Intent(Intent.ACTION_VIEW) i.data = - "https://github.com/AppDevNext/AndroidChart/blob/master/app/src/main/java/com/xxmassdeveloper/mpchartexample/PerformanceLineChart.java".toUri() + "https://github.com/AppDevNext/AndroidChart/blob/master/app/src/main/java/info/appdev/chartexample/PerformanceLineChart.java".toUri() startActivity(i) } } diff --git a/app/src/main/java/info/appdev/chartexample/PieChartActivity.kt b/app/src/main/java/info/appdev/chartexample/PieChartActivity.kt index 66fffea34b..43495fcf78 100644 --- a/app/src/main/java/info/appdev/chartexample/PieChartActivity.kt +++ b/app/src/main/java/info/appdev/chartexample/PieChartActivity.kt @@ -178,7 +178,7 @@ class PieChartActivity : DemoBase(), OnSeekBarChangeListener, OnChartValueSelect R.id.viewGithub -> { val i = Intent(Intent.ACTION_VIEW) i.data = - "https://github.com/AppDevNext/AndroidChart/blob/master/app/src/main/java/com/xxmassdeveloper/mpchartexample/PieChartActivity.java".toUri() + "https://github.com/AppDevNext/AndroidChart/blob/master/app/src/main/java/info/appdev/chartexample/PieChartActivity.kt".toUri() startActivity(i) } diff --git a/app/src/main/java/info/appdev/chartexample/PieChartRoundedActivity.kt b/app/src/main/java/info/appdev/chartexample/PieChartRoundedActivity.kt index 8ac82ab819..188b89aebe 100644 --- a/app/src/main/java/info/appdev/chartexample/PieChartRoundedActivity.kt +++ b/app/src/main/java/info/appdev/chartexample/PieChartRoundedActivity.kt @@ -18,6 +18,7 @@ import android.widget.SeekBar import android.widget.SeekBar.OnSeekBarChangeListener import android.widget.TextView import androidx.core.content.ContextCompat +import androidx.core.net.toUri import com.github.mikephil.charting.animation.Easing import com.github.mikephil.charting.charts.PieChart import com.github.mikephil.charting.components.Legend @@ -33,7 +34,6 @@ import com.github.mikephil.charting.utils.ColorTemplate import com.github.mikephil.charting.utils.MPPointF import info.appdev.chartexample.DataTools.Companion.getValues import info.appdev.chartexample.notimportant.DemoBase -import androidx.core.net.toUri class PieChartRoundedActivity : DemoBase(), OnSeekBarChangeListener, OnChartValueSelectedListener { private var chart: PieChart? = null @@ -183,8 +183,7 @@ class PieChartRoundedActivity : DemoBase(), OnSeekBarChangeListener, OnChartValu when (item.itemId) { R.id.viewGithub -> { val i = Intent(Intent.ACTION_VIEW) - i.data = - "https://github.com/AppDevNext/AndroidChart/blob/master/app/src/main/java/com/xxmassdeveloper/mpchartexample/PieChartActivity.java".toUri() + i.data = "https://github.com/AppDevNext/AndroidChart/blob/master/app/src/main/java/info/appdev/chartexample/PieChartActivity.kt".toUri() startActivity(i) } diff --git a/app/src/main/java/info/appdev/chartexample/PiePolylineChartActivity.kt b/app/src/main/java/info/appdev/chartexample/PiePolylineChartActivity.kt index 2fd34e3ecf..e798b7d314 100644 --- a/app/src/main/java/info/appdev/chartexample/PiePolylineChartActivity.kt +++ b/app/src/main/java/info/appdev/chartexample/PiePolylineChartActivity.kt @@ -18,6 +18,7 @@ import android.widget.SeekBar import android.widget.SeekBar.OnSeekBarChangeListener import android.widget.TextView import androidx.core.content.ContextCompat +import androidx.core.net.toUri import com.github.mikephil.charting.animation.Easing import com.github.mikephil.charting.charts.PieChart import com.github.mikephil.charting.components.Legend @@ -31,7 +32,6 @@ import com.github.mikephil.charting.listener.OnChartValueSelectedListener import com.github.mikephil.charting.utils.ColorTemplate import info.appdev.chartexample.DataTools.Companion.getValues import info.appdev.chartexample.notimportant.DemoBase -import androidx.core.net.toUri class PiePolylineChartActivity : DemoBase(), OnSeekBarChangeListener, OnChartValueSelectedListener { private var chart: PieChart? = null @@ -173,8 +173,7 @@ class PiePolylineChartActivity : DemoBase(), OnSeekBarChangeListener, OnChartVal when (item.itemId) { R.id.viewGithub -> { val i = Intent(Intent.ACTION_VIEW) - i.data = - "https://github.com/AppDevNext/AndroidChart/blob/master/app/src/main/java/com/xxmassdeveloper/mpchartexample/PiePolylineChartActivity.java".toUri() + i.data = "https://github.com/AppDevNext/AndroidChart/blob/master/app/src/main/java/info/appdev/chartexample/PiePolylineChartActivity.kt".toUri() startActivity(i) } @@ -263,12 +262,12 @@ class PiePolylineChartActivity : DemoBase(), OnSeekBarChangeListener, OnChartVal private fun generateCenterSpannableText(): SpannableString { val s = SpannableString("AndroidChart\ndeveloped by AppDevNext") - s.setSpan(RelativeSizeSpan(1.5f), 0, 14, 0) - s.setSpan(StyleSpan(Typeface.NORMAL), 14, s.length - 15, 0) - s.setSpan(ForegroundColorSpan(Color.GRAY), 14, s.length - 15, 0) - s.setSpan(RelativeSizeSpan(.65f), 14, s.length - 15, 0) - s.setSpan(StyleSpan(Typeface.ITALIC), s.length - 14, s.length, 0) - s.setSpan(ForegroundColorSpan(ColorTemplate.getHoloBlue()), s.length - 14, s.length, 0) + s.setSpan(RelativeSizeSpan(1.5f), 0, 12, 0) + s.setSpan(StyleSpan(Typeface.NORMAL), 12, s.length - 10, 0) + s.setSpan(ForegroundColorSpan(Color.GRAY), 12, s.length - 10, 0) + s.setSpan(RelativeSizeSpan(.65f), 12, s.length - 10, 0) + s.setSpan(StyleSpan(Typeface.ITALIC), s.length - 10, s.length, 0) + s.setSpan(ForegroundColorSpan(ColorTemplate.getHoloBlue()), s.length - 10, s.length, 0) return s } diff --git a/app/src/main/java/info/appdev/chartexample/RadarChartActivity.kt b/app/src/main/java/info/appdev/chartexample/RadarChartActivity.kt index 78b5fc180b..c13454d58e 100644 --- a/app/src/main/java/info/appdev/chartexample/RadarChartActivity.kt +++ b/app/src/main/java/info/appdev/chartexample/RadarChartActivity.kt @@ -9,6 +9,7 @@ import android.view.Menu import android.view.MenuItem import android.view.WindowManager import androidx.core.content.ContextCompat +import androidx.core.net.toUri import com.github.mikephil.charting.animation.Easing import com.github.mikephil.charting.charts.RadarChart import com.github.mikephil.charting.components.AxisBase @@ -22,7 +23,6 @@ import com.github.mikephil.charting.interfaces.datasets.IRadarDataSet import info.appdev.chartexample.DataTools.Companion.getValues import info.appdev.chartexample.custom.RadarMarkerView import info.appdev.chartexample.notimportant.DemoBase -import androidx.core.net.toUri class RadarChartActivity : DemoBase() { private var chart: RadarChart? = null @@ -158,8 +158,7 @@ class RadarChartActivity : DemoBase() { when (item.itemId) { R.id.viewGithub -> { val i = Intent(Intent.ACTION_VIEW) - i.data = - "https://github.com/AppDevNext/AndroidChart/blob/master/app/src/main/java/com/xxmassdeveloper/mpchartexample/RadarChartActivity.java".toUri() + i.data = "https://github.com/AppDevNext/AndroidChart/blob/master/app/src/main/java/info/appdev/chartexample/RadarChartActivity.kt".toUri() startActivity(i) } diff --git a/app/src/main/java/info/appdev/chartexample/RealtimeLineChartActivity.kt b/app/src/main/java/info/appdev/chartexample/RealtimeLineChartActivity.kt index 6ace5738a2..f264099690 100644 --- a/app/src/main/java/info/appdev/chartexample/RealtimeLineChartActivity.kt +++ b/app/src/main/java/info/appdev/chartexample/RealtimeLineChartActivity.kt @@ -11,6 +11,7 @@ import android.view.MenuItem import android.view.WindowManager import android.widget.Toast import androidx.core.content.ContextCompat +import androidx.core.net.toUri import com.github.mikephil.charting.charts.LineChart import com.github.mikephil.charting.components.Legend.LegendForm import com.github.mikephil.charting.components.YAxis.AxisDependency @@ -22,7 +23,6 @@ import com.github.mikephil.charting.listener.OnChartValueSelectedListener import com.github.mikephil.charting.utils.ColorTemplate import info.appdev.chartexample.DataTools.Companion.getValues import info.appdev.chartexample.notimportant.DemoBase -import androidx.core.net.toUri class RealtimeLineChartActivity : DemoBase(), OnChartValueSelectedListener { private var chart: LineChart? = null @@ -179,7 +179,7 @@ class RealtimeLineChartActivity : DemoBase(), OnChartValueSelectedListener { R.id.viewGithub -> { val i = Intent(Intent.ACTION_VIEW) i.data = - "https://github.com/AppDevNext/AndroidChart/blob/master/app/src/main/java/com/xxmassdeveloper/mpchartexample/RealtimeLineChartActivity.java".toUri() + "https://github.com/AppDevNext/AndroidChart/blob/master/app/src/main/java/info/appdev/chartexample/RealtimeLineChartActivity.kt".toUri() startActivity(i) } diff --git a/app/src/main/java/info/appdev/chartexample/ScatterChartActivity.kt b/app/src/main/java/info/appdev/chartexample/ScatterChartActivity.kt index 344333eefe..1ebd4500b2 100644 --- a/app/src/main/java/info/appdev/chartexample/ScatterChartActivity.kt +++ b/app/src/main/java/info/appdev/chartexample/ScatterChartActivity.kt @@ -12,6 +12,7 @@ import android.widget.SeekBar import android.widget.SeekBar.OnSeekBarChangeListener import android.widget.TextView import androidx.core.content.ContextCompat +import androidx.core.net.toUri import com.github.mikephil.charting.charts.ScatterChart import com.github.mikephil.charting.components.Legend import com.github.mikephil.charting.data.Entry @@ -24,7 +25,6 @@ import com.github.mikephil.charting.utils.ColorTemplate import info.appdev.chartexample.DataTools.Companion.getValues import info.appdev.chartexample.custom.CustomScatterShapeRenderer import info.appdev.chartexample.notimportant.DemoBase -import androidx.core.net.toUri class ScatterChartActivity : DemoBase(), OnSeekBarChangeListener, OnChartValueSelectedListener { private var chart: ScatterChart? = null @@ -152,8 +152,7 @@ class ScatterChartActivity : DemoBase(), OnSeekBarChangeListener, OnChartValueSe when (item.itemId) { R.id.viewGithub -> { val i = Intent(Intent.ACTION_VIEW) - i.data = - "https://github.com/AppDevNext/AndroidChart/blob/master/app/src/main/java/com/xxmassdeveloper/mpchartexample/ScatterChartActivity.java".toUri() + i.data = "https://github.com/AppDevNext/AndroidChart/blob/master/app/src/main/java/info/appdev/chartexample/ScatterChartActivity.kt".toUri() startActivity(i) } diff --git a/app/src/main/java/info/appdev/chartexample/ScrollViewActivity.kt b/app/src/main/java/info/appdev/chartexample/ScrollViewActivity.kt index 72e3ac4f42..0028166443 100644 --- a/app/src/main/java/info/appdev/chartexample/ScrollViewActivity.kt +++ b/app/src/main/java/info/appdev/chartexample/ScrollViewActivity.kt @@ -5,6 +5,7 @@ import android.os.Bundle import android.view.Menu import android.view.MenuItem import android.view.WindowManager +import androidx.core.net.toUri import com.github.mikephil.charting.charts.BarChart import com.github.mikephil.charting.components.XAxis.XAxisPosition import com.github.mikephil.charting.data.BarData @@ -13,7 +14,6 @@ import com.github.mikephil.charting.data.BarEntry import com.github.mikephil.charting.utils.ColorTemplate import info.appdev.chartexample.DataTools.Companion.getValues import info.appdev.chartexample.notimportant.DemoBase -import androidx.core.net.toUri class ScrollViewActivity : DemoBase() { private var chart: BarChart? = null @@ -79,8 +79,7 @@ class ScrollViewActivity : DemoBase() { when (item.itemId) { R.id.viewGithub -> { val i = Intent(Intent.ACTION_VIEW) - i.data = - "https://github.com/AppDevNext/AndroidChart/blob/master/app/src/main/java/com/xxmassdeveloper/mpchartexample/ScrollViewActivity.java".toUri() + i.data = "https://github.com/AppDevNext/AndroidChart/blob/master/app/src/main/java/info/appdev/chartexample/ScrollViewActivity.kt".toUri() startActivity(i) } } diff --git a/app/src/main/java/info/appdev/chartexample/StackedBarActivity.kt b/app/src/main/java/info/appdev/chartexample/StackedBarActivity.kt index b3d6bdb5e8..e19a6d1da8 100644 --- a/app/src/main/java/info/appdev/chartexample/StackedBarActivity.kt +++ b/app/src/main/java/info/appdev/chartexample/StackedBarActivity.kt @@ -13,6 +13,7 @@ import android.widget.SeekBar import android.widget.SeekBar.OnSeekBarChangeListener import android.widget.TextView import androidx.core.content.ContextCompat +import androidx.core.net.toUri import com.github.mikephil.charting.charts.BarChart import com.github.mikephil.charting.components.Legend import com.github.mikephil.charting.components.XAxis.XAxisPosition @@ -28,7 +29,6 @@ import info.appdev.chartexample.DataTools.Companion.getValues import info.appdev.chartexample.custom.MyAxisValueFormatter import info.appdev.chartexample.custom.MyValueFormatter import info.appdev.chartexample.notimportant.DemoBase -import androidx.core.net.toUri class StackedBarActivity : DemoBase(), OnSeekBarChangeListener, OnChartValueSelectedListener { private var chart: BarChart? = null @@ -158,8 +158,7 @@ class StackedBarActivity : DemoBase(), OnSeekBarChangeListener, OnChartValueSele when (item.itemId) { R.id.viewGithub -> { val i = Intent(Intent.ACTION_VIEW) - i.data = - "https://github.com/AppDevNext/AndroidChart/blob/master/app/src/main/java/com/xxmassdeveloper/mpchartexample/StackedBarActivity.java".toUri() + i.data = "https://github.com/AppDevNext/AndroidChart/blob/master/app/src/main/java/info/appdev/chartexample/StackedBarActivity.kt".toUri() startActivity(i) } diff --git a/app/src/main/java/info/appdev/chartexample/StackedBarActivityNegative.kt b/app/src/main/java/info/appdev/chartexample/StackedBarActivityNegative.kt index f1c4ca8460..9dab790ef2 100644 --- a/app/src/main/java/info/appdev/chartexample/StackedBarActivityNegative.kt +++ b/app/src/main/java/info/appdev/chartexample/StackedBarActivityNegative.kt @@ -10,6 +10,7 @@ import android.view.Menu import android.view.MenuItem import android.view.WindowManager import androidx.core.content.ContextCompat +import androidx.core.net.toUri import com.github.mikephil.charting.charts.HorizontalBarChart import com.github.mikephil.charting.components.AxisBase import com.github.mikephil.charting.components.Legend @@ -27,7 +28,6 @@ import com.github.mikephil.charting.utils.ViewPortHandler import info.appdev.chartexample.notimportant.DemoBase import java.text.DecimalFormat import kotlin.math.abs -import androidx.core.net.toUri class StackedBarActivityNegative : DemoBase(), OnChartValueSelectedListener { private var chart: HorizontalBarChart? = null @@ -131,7 +131,7 @@ class StackedBarActivityNegative : DemoBase(), OnChartValueSelectedListener { R.id.viewGithub -> { val i = Intent(Intent.ACTION_VIEW) i.data = - "https://github.com/AppDevNext/AndroidChart/blob/master/app/src/main/java/com/xxmassdeveloper/mpchartexample/StackedBarActivityNegative.java".toUri() + "https://github.com/AppDevNext/AndroidChart/blob/master/app/src/main/java/info/appdev/chartexample/StackedBarActivityNegative.java".toUri() startActivity(i) } diff --git a/app/src/main/java/info/appdev/chartexample/fragments/ViewPagerSimpleChartDemo.kt b/app/src/main/java/info/appdev/chartexample/fragments/ViewPagerSimpleChartDemo.kt index 9eee0655b2..00eeba977c 100644 --- a/app/src/main/java/info/appdev/chartexample/fragments/ViewPagerSimpleChartDemo.kt +++ b/app/src/main/java/info/appdev/chartexample/fragments/ViewPagerSimpleChartDemo.kt @@ -1,12 +1,16 @@ package info.appdev.chartexample.fragments import android.content.Intent -import android.net.Uri import android.os.Bundle -import android.view.* +import android.view.Gravity +import android.view.Menu +import android.view.MenuItem +import android.view.View +import android.view.WindowManager import android.widget.FrameLayout import android.widget.Toast import androidx.coordinatorlayout.widget.CoordinatorLayout +import androidx.core.net.toUri import androidx.fragment.app.Fragment import androidx.fragment.app.FragmentManager import androidx.fragment.app.FragmentPagerAdapter @@ -57,7 +61,8 @@ class ViewPagerSimpleChartDemo : DemoBase() { when (item.itemId) { R.id.viewGithub -> { val i = Intent(Intent.ACTION_VIEW) - i.data = Uri.parse("https://github.com/AppDevNext/AndroidChart/blob/master/app/src/main/java/com/xxmassdeveloper/mpchartexample/fragments/SimpleChartDemo.java") + i.data = + "https://github.com/AppDevNext/AndroidChart/blob/master/app/src/main/java/info/appdev/chartexample/fragments/SimpleChartDemo.java".toUri() startActivity(i) } } @@ -68,7 +73,7 @@ class ViewPagerSimpleChartDemo : DemoBase() { public override fun saveToGallery() = Unit private fun showSnackbar(text: String) { - val viewPos : View = findViewById(android.R.id.content) + val viewPos: View = findViewById(android.R.id.content) val snackbar = Snackbar.make(viewPos, text, Snackbar.LENGTH_SHORT) val view = snackbar.view when (val params = view.layoutParams) { @@ -78,12 +83,14 @@ class ViewPagerSimpleChartDemo : DemoBase() { view.layoutParams = paramsC snackbar.show() } + is FrameLayout.LayoutParams -> { val paramsC = view.layoutParams as FrameLayout.LayoutParams paramsC.gravity = Gravity.BOTTOM view.layoutParams = paramsC snackbar.show() } + else -> { Toast.makeText(this, text + " " + params.javaClass.simpleName, Toast.LENGTH_SHORT).show() } diff --git a/screenshotsToCompare9/PieTest_piePolyline.png b/screenshotsToCompare9/PieTest_piePolyline.png index 4782254a76..00ed232bec 100644 Binary files a/screenshotsToCompare9/PieTest_piePolyline.png and b/screenshotsToCompare9/PieTest_piePolyline.png differ diff --git a/screenshotsToCompare9/PieTest_piePolyline1-10.png b/screenshotsToCompare9/PieTest_piePolyline1-10.png index 0282858059..635198b48e 100644 Binary files a/screenshotsToCompare9/PieTest_piePolyline1-10.png and b/screenshotsToCompare9/PieTest_piePolyline1-10.png differ diff --git a/screenshotsToCompare9/PieTest_piePolyline1-20.png b/screenshotsToCompare9/PieTest_piePolyline1-20.png index d0db930aaf..4c1881789b 100644 Binary files a/screenshotsToCompare9/PieTest_piePolyline1-20.png and b/screenshotsToCompare9/PieTest_piePolyline1-20.png differ diff --git a/screenshotsToCompare9/PieTest_piePolyline1-30.png b/screenshotsToCompare9/PieTest_piePolyline1-30.png index 62aabe9b52..b3f05f179b 100644 Binary files a/screenshotsToCompare9/PieTest_piePolyline1-30.png and b/screenshotsToCompare9/PieTest_piePolyline1-30.png differ diff --git a/screenshotsToCompare9/PieTest_piePolyline1-40.png b/screenshotsToCompare9/PieTest_piePolyline1-40.png index b0eb52c4eb..babe779f9b 100644 Binary files a/screenshotsToCompare9/PieTest_piePolyline1-40.png and b/screenshotsToCompare9/PieTest_piePolyline1-40.png differ diff --git a/screenshotsToCompare9/PieTest_piePolyline1-50.png b/screenshotsToCompare9/PieTest_piePolyline1-50.png index 30248f2399..68408d5f9a 100644 Binary files a/screenshotsToCompare9/PieTest_piePolyline1-50.png and b/screenshotsToCompare9/PieTest_piePolyline1-50.png differ diff --git a/screenshotsToCompare9/PieTest_piePolyline2-100.png b/screenshotsToCompare9/PieTest_piePolyline2-100.png index 30248f2399..68408d5f9a 100644 Binary files a/screenshotsToCompare9/PieTest_piePolyline2-100.png and b/screenshotsToCompare9/PieTest_piePolyline2-100.png differ diff --git a/screenshotsToCompare9/PieTest_piePolyline2-150.png b/screenshotsToCompare9/PieTest_piePolyline2-150.png index 30248f2399..68408d5f9a 100644 Binary files a/screenshotsToCompare9/PieTest_piePolyline2-150.png and b/screenshotsToCompare9/PieTest_piePolyline2-150.png differ diff --git a/screenshotsToCompare9/PieTest_piePolyline2-200.png b/screenshotsToCompare9/PieTest_piePolyline2-200.png index 30248f2399..68408d5f9a 100644 Binary files a/screenshotsToCompare9/PieTest_piePolyline2-200.png and b/screenshotsToCompare9/PieTest_piePolyline2-200.png differ diff --git a/screenshotsToCompare9/PieTest_piePolyline2-50.png b/screenshotsToCompare9/PieTest_piePolyline2-50.png index 549d8bb571..a3c2936914 100644 Binary files a/screenshotsToCompare9/PieTest_piePolyline2-50.png and b/screenshotsToCompare9/PieTest_piePolyline2-50.png differ diff --git a/screenshotsToCompare9/StartTest_smokeTestStart-21-PiePolylineChartActivity-Value Lines-1SampleClick.png b/screenshotsToCompare9/StartTest_smokeTestStart-21-PiePolylineChartActivity-Value Lines-1SampleClick.png index 4782254a76..00ed232bec 100644 Binary files a/screenshotsToCompare9/StartTest_smokeTestStart-21-PiePolylineChartActivity-Value Lines-1SampleClick.png and b/screenshotsToCompare9/StartTest_smokeTestStart-21-PiePolylineChartActivity-Value Lines-1SampleClick.png differ diff --git a/screenshotsToCompare9/StartTest_smokeTestStart-21-PiePolylineChartActivity-Value Lines-2menu-click-17 Toggle Percent.png b/screenshotsToCompare9/StartTest_smokeTestStart-21-PiePolylineChartActivity-Value Lines-2menu-click-17 Toggle Percent.png index 9a1c6f8181..42b77c3eec 100644 Binary files a/screenshotsToCompare9/StartTest_smokeTestStart-21-PiePolylineChartActivity-Value Lines-2menu-click-17 Toggle Percent.png and b/screenshotsToCompare9/StartTest_smokeTestStart-21-PiePolylineChartActivity-Value Lines-2menu-click-17 Toggle Percent.png differ diff --git a/screenshotsToCompare9/StartTest_smokeTestStart-21-PiePolylineChartActivity-Value Lines-2menu-click-18 Toggle Minimum Angles.png b/screenshotsToCompare9/StartTest_smokeTestStart-21-PiePolylineChartActivity-Value Lines-2menu-click-18 Toggle Minimum Angles.png index 9a1c6f8181..42b77c3eec 100644 Binary files a/screenshotsToCompare9/StartTest_smokeTestStart-21-PiePolylineChartActivity-Value Lines-2menu-click-18 Toggle Minimum Angles.png and b/screenshotsToCompare9/StartTest_smokeTestStart-21-PiePolylineChartActivity-Value Lines-2menu-click-18 Toggle Minimum Angles.png differ diff --git a/screenshotsToCompare9/StartTest_smokeTestStart-21-PiePolylineChartActivity-Value Lines-2menu-click-19 Toggle Hole.png b/screenshotsToCompare9/StartTest_smokeTestStart-21-PiePolylineChartActivity-Value Lines-2menu-click-19 Toggle Hole.png index 3aba05822c..5df9d7c6c4 100644 Binary files a/screenshotsToCompare9/StartTest_smokeTestStart-21-PiePolylineChartActivity-Value Lines-2menu-click-19 Toggle Hole.png and b/screenshotsToCompare9/StartTest_smokeTestStart-21-PiePolylineChartActivity-Value Lines-2menu-click-19 Toggle Hole.png differ diff --git a/screenshotsToCompare9/StartTest_smokeTestStart-21-PiePolylineChartActivity-Value Lines-2menu-click-2 Toggle Y-Values.png b/screenshotsToCompare9/StartTest_smokeTestStart-21-PiePolylineChartActivity-Value Lines-2menu-click-2 Toggle Y-Values.png index c0968fef29..a84d6a9bc8 100644 Binary files a/screenshotsToCompare9/StartTest_smokeTestStart-21-PiePolylineChartActivity-Value Lines-2menu-click-2 Toggle Y-Values.png and b/screenshotsToCompare9/StartTest_smokeTestStart-21-PiePolylineChartActivity-Value Lines-2menu-click-2 Toggle Y-Values.png differ diff --git a/screenshotsToCompare9/StartTest_smokeTestStart-21-PiePolylineChartActivity-Value Lines-2menu-click-20 Toggle Curved Slices.png b/screenshotsToCompare9/StartTest_smokeTestStart-21-PiePolylineChartActivity-Value Lines-2menu-click-20 Toggle Curved Slices.png index 8ac2cb9cc5..cb655a51f5 100644 Binary files a/screenshotsToCompare9/StartTest_smokeTestStart-21-PiePolylineChartActivity-Value Lines-2menu-click-20 Toggle Curved Slices.png and b/screenshotsToCompare9/StartTest_smokeTestStart-21-PiePolylineChartActivity-Value Lines-2menu-click-20 Toggle Curved Slices.png differ diff --git a/screenshotsToCompare9/StartTest_smokeTestStart-21-PiePolylineChartActivity-Value Lines-2menu-click-23 Spin Animation.png b/screenshotsToCompare9/StartTest_smokeTestStart-21-PiePolylineChartActivity-Value Lines-2menu-click-23 Spin Animation.png index 8ac2cb9cc5..cb655a51f5 100644 Binary files a/screenshotsToCompare9/StartTest_smokeTestStart-21-PiePolylineChartActivity-Value Lines-2menu-click-23 Spin Animation.png and b/screenshotsToCompare9/StartTest_smokeTestStart-21-PiePolylineChartActivity-Value Lines-2menu-click-23 Spin Animation.png differ diff --git a/screenshotsToCompare9/StartTest_smokeTestStart-21-PiePolylineChartActivity-Value Lines-2menu-click-3 Toggle X-Values.png b/screenshotsToCompare9/StartTest_smokeTestStart-21-PiePolylineChartActivity-Value Lines-2menu-click-3 Toggle X-Values.png index 9a1c6f8181..42b77c3eec 100644 Binary files a/screenshotsToCompare9/StartTest_smokeTestStart-21-PiePolylineChartActivity-Value Lines-2menu-click-3 Toggle X-Values.png and b/screenshotsToCompare9/StartTest_smokeTestStart-21-PiePolylineChartActivity-Value Lines-2menu-click-3 Toggle X-Values.png differ diff --git a/screenshotsToCompare9/StartTest_smokeTestStart-21-PiePolylineChartActivity-Value Lines-2menu-click-4 Toggle Icons.png b/screenshotsToCompare9/StartTest_smokeTestStart-21-PiePolylineChartActivity-Value Lines-2menu-click-4 Toggle Icons.png index 9a1c6f8181..42b77c3eec 100644 Binary files a/screenshotsToCompare9/StartTest_smokeTestStart-21-PiePolylineChartActivity-Value Lines-2menu-click-4 Toggle Icons.png and b/screenshotsToCompare9/StartTest_smokeTestStart-21-PiePolylineChartActivity-Value Lines-2menu-click-4 Toggle Icons.png differ