Package-level declarations

Types

Link copied to clipboard
data class BarChartData(val chartData: List<BarData>, val xAxisData: AxisData = AxisData.Builder().build(), val yAxisData: AxisData = AxisData.Builder().build(), val backgroundColor: Color = Color.White, val horizontalExtraSpace: Dp = 0.dp, val barStyle: BarStyle = BarStyle(), val paddingEnd: Dp = 10.dp, val paddingTop: Dp = 0.dp, val tapPadding: Dp = 10.dp, val showYAxis: Boolean = true, val showXAxis: Boolean = true, val accessibilityConfig: AccessibilityConfig = AccessibilityConfig(), val barChartType: BarChartType = BarChartType.VERTICAL, val drawBar: (DrawScope, BarData, Offset, Float, BarChartType, BarStyle) -> Unit = { drawScope, barChartData, drawOffset, height, barChartType, barStyle -> //default implementation drawBarGraph(drawScope, barChartData, drawOffset, height, barChartType, barStyle) })

BarGraph data class params used in drawing bar graph.

Link copied to clipboard

To specify barchart type

Link copied to clipboard
data class BarData(val point: Point, val color: Color = Color.Red, val label: String = "", val gradientColorList: List<Color> = listOf(Color.Red, Color.Blue), val dataCategoryOptions: DataCategoryOptions = DataCategoryOptions(), val description: String = if (dataCategoryOptions.isDataCategoryInYAxis) "Value of bar $label is value ${ String.format( "%.2f", point.x ) }" else "Value of bar $label is value ${String.format("%.2f", point.y)}")

Data class for individual bar.

Link copied to clipboard
data class BarPlotData(val plotType: PlotType = PlotType.Bar, val groupBarList: List<GroupBar>, val groupingSize: Int = groupBarList.firstOrNull()?.barList?.size ?: 1, val barColorPaletteList: List<Color> = listOf(), val barStyle: BarStyle = BarStyle()) : PlotData

BarPlotData is a data class that holds bar graph related data and styling components

Link copied to clipboard
data class BarStyle(val barWidth: Dp = 30.dp, val cornerRadius: Dp = 4.dp, val paddingBetweenBars: Dp = 15.dp, val isGradientEnabled: Boolean = false, val barBlendMode: BlendMode = DrawScope.DefaultBlendMode, val barDrawStyle: DrawStyle = Fill, val selectionHighlightData: SelectionHighlightData? = SelectionHighlightData())

BarStyle data class adds styling related to each bar in the bar graph

Link copied to clipboard
data class GroupBar(val label: String, val barList: List<BarData>)

Data class for individual group bar.

Link copied to clipboard
data class GroupBarChartData(val barPlotData: BarPlotData, val xAxisData: AxisData = AxisData.Builder().build(), val yAxisData: AxisData = AxisData.Builder().build(), val backgroundColor: Color = Color.White, val horizontalExtraSpace: Dp = 10.dp, val paddingEnd: Dp = 10.dp, val paddingTop: Dp = 0.dp, val showYAxis: Boolean = true, val showXAxis: Boolean = true, val tapPadding: Dp = 10.dp, val groupSeparatorConfig: GroupSeparatorConfig = GroupSeparatorConfig(), val accessibilityConfig: AccessibilityConfig = AccessibilityConfig(), val paddingBetweenStackedBars: Dp = 0.dp, val drawBar: (DrawScope, GroupBarChartData, BarStyle, Offset, Float, Int) -> Unit = { drawScope, barChartData, barStyle, drawOffset, height, barIndex -> //default implementation drawGroupBarGraph( drawScope, barChartData, barStyle, drawOffset, height, barPlotData.barColorPaletteList[barIndex], barIndex ) })

GroupBarGraph data class params used in drawing bar graph.

Link copied to clipboard
data class GroupSeparatorConfig(val separatorWidth: Dp = 1.dp, val separatorColor: Color = Color.Gray, val showSeparator: Boolean = true, val separatorBlendMode: BlendMode = DrawScope.DefaultBlendMode)

GroupSeparatorConfig data class params used in config groupSeparator.

Link copied to clipboard
data class SelectionHighlightData(val highlightTextOffset: Dp = 15.dp, val highlightTextSize: TextUnit = 12.sp, val highlightTextColor: Color = Color.Black, val highlightTextBackgroundColor: Color = Color.Yellow, val highlightTextBackgroundAlpha: Float = 0.7f, val highlightTextTypeface: Typeface = Typeface.DEFAULT, val highlightBarCornerRadius: Dp = 2.dp, val highlightBarColor: Color = Color.Black, val highlightBarStrokeWidth: Dp = 2.dp, val highlightPopUpCornerRadius: CornerRadius = CornerRadius(5f), val backgroundColorFilter: ColorFilter? = null, val backgroundBlendMode: BlendMode = DrawScope.DefaultBlendMode, val backgroundStyle: DrawStyle = Fill, val highlightLabelAlignment: Paint.Align = Paint.Align.CENTER, val isHighlightBarRequired: Boolean = true, val isHighlightFullBar: Boolean = false, val popUpLabel: (Float, Float) -> String = { x, y -> val xLabel = "x : ${x.toInt()} " val yLabel = "y : ${String.format("%.2f", y)}" "$xLabel $yLabel" }, val drawPopUp: DrawScope.(Offset, BarData, Float, Float, BarChartType) -> Unit = { selectedOffset, identifiedPoint, centerPointOfBar, selectedXAxisWidth, barChartType -> val highlightTextPaint = TextPaint().apply { textSize = highlightTextSize.toPx() color = highlightTextColor.toArgb() textAlign = highlightLabelAlignment typeface = highlightTextTypeface } val label = popUpLabel(identifiedPoint.point.x, identifiedPoint.point.y) drawContext.canvas.nativeCanvas.apply { val x = if (barChartType == BarChartType.VERTICAL) centerPointOfBar else selectedXAxisWidth + highlightTextOffset.toPx() val y = if (barChartType == BarChartType.VERTICAL) selectedOffset.y else centerPointOfBar val background = getTextBackgroundRect( x, y, label, highlightTextPaint ) drawRoundRect( color = highlightTextBackgroundColor, topLeft = Offset( background.left.toFloat(), if (barChartType == BarChartType.VERTICAL) background.top.toFloat() - highlightTextOffset.toPx() else (y - background.height() / 2) ), size = Size(background.width().toFloat(), background.height().toFloat()), alpha = highlightTextBackgroundAlpha, cornerRadius = highlightPopUpCornerRadius, colorFilter = backgroundColorFilter, blendMode = backgroundBlendMode, style = backgroundStyle ) val drawTextX = if (barChartType == BarChartType.VERTICAL) centerPointOfBar else selectedXAxisWidth + highlightTextOffset.toPx() val drawTextY = if (barChartType == BarChartType.VERTICAL) selectedOffset.y - highlightTextOffset.toPx() else (y + background.height() / 2) - (highlightTextPaint.fontMetrics.descent) drawText( label, drawTextX, drawTextY, highlightTextPaint ) } }, val drawHighlightBar: DrawScope.(Float, Float, Float, Float, BarChartType) -> Unit = { x, y, width, height, barChartType -> val rectWidth = if (barChartType == BarChartType.VERTICAL) width else height val rectHeight = if (barChartType == BarChartType.VERTICAL) height else width drawRoundRect( color = highlightBarColor, topLeft = Offset(x, y), size = Size(rectWidth, rectHeight), cornerRadius = CornerRadius( highlightBarCornerRadius.toPx(), highlightBarCornerRadius.toPx() ), style = Stroke(width = highlightBarStrokeWidth.toPx()) ) }, val groupBarPopUpLabel: (String, Float) -> String = { name, value -> val xLabel = "Name : $name " val yLabel = "Value : ${String.format("%.2f", value)}" "$xLabel $yLabel" }, val drawGroupBarPopUp: DrawScope.(Offset, BarData, Float) -> Unit = { selectedOffset, identifiedPoint, centerPointOfBar -> val highlightTextPaint = TextPaint().apply { textSize = highlightTextSize.toPx() color = highlightTextColor.toArgb() textAlign = highlightLabelAlignment typeface = highlightTextTypeface } val xLabel = "${identifiedPoint.point.x.toInt()}" val label = groupBarPopUpLabel(xLabel, identifiedPoint.point.y) drawContext.canvas.nativeCanvas.apply { val background = getTextBackgroundRect( centerPointOfBar, selectedOffset.y, label, highlightTextPaint ) drawRoundRect( color = highlightTextBackgroundColor, topLeft = Offset( background.left.toFloat(), background.top.toFloat() - highlightTextOffset.toPx() ), size = Size(background.width().toFloat(), background.height().toFloat()), alpha = highlightTextBackgroundAlpha, cornerRadius = highlightPopUpCornerRadius, colorFilter = backgroundColorFilter, blendMode = backgroundBlendMode, style = backgroundStyle ) drawText( label, centerPointOfBar, selectedOffset.y - highlightTextOffset.toPx(), highlightTextPaint ) } }, val barChartType: BarChartType = BarChartType.VERTICAL)

Used to customise the highlighted text and the bar

Functions

Link copied to clipboard
fun drawBarGraph(drawScope: DrawScope, barData: BarData, drawOffset: Offset, height: Float, barChartType: BarChartType, barStyle: BarStyle)

Used to draw the individual bars

Link copied to clipboard
fun drawGroupBarGraph(drawScope: DrawScope, barGraphData: GroupBarChartData, barStyle: BarStyle, drawOffset: Offset, height: Float, barColor: Color, barIndex: Int)

Used to draw the individual barUsed round rec as a default shape