diff --git a/composeqrcode/src/main/java/com/lightspark/composeqr/QrCodeView.kt b/composeqrcode/src/main/java/com/lightspark/composeqr/QrCodeView.kt index db59079..1167077 100644 --- a/composeqrcode/src/main/java/com/lightspark/composeqr/QrCodeView.kt +++ b/composeqrcode/src/main/java/com/lightspark/composeqr/QrCodeView.kt @@ -36,7 +36,7 @@ fun QrCodeView( modifier: Modifier = Modifier, colors: QrCodeColors = QrCodeColors.default(), dotShape: DotShape = DotShape.Square, - encoder: QrEncoder = QrEncoder(), + encoder: QrEncoder = ZxingQrEncoder(), overlayContent: (@Composable () -> Unit)? = null, ) { Box(modifier = modifier, contentAlignment = Alignment.Center) { @@ -70,9 +70,9 @@ fun QrCodeView( modifier: Modifier = Modifier, colors: QrCodeColors = QrCodeColors.default(), dotShape: DotShape = DotShape.Square, - encoder: QrEncoder = QrEncoder() + encoder: QrEncoder = ZxingQrEncoder() ) { - val encodedData = remember(data, encoder) { encoder(data) } + val encodedData = remember(data, encoder) { encoder.encode(data) } Canvas(modifier = modifier.background(colors.background)) { encodedData?.let { matrix -> diff --git a/composeqrcode/src/main/java/com/lightspark/composeqr/QrEncoder.kt b/composeqrcode/src/main/java/com/lightspark/composeqr/QrEncoder.kt index f0e10d8..01ff346 100644 --- a/composeqrcode/src/main/java/com/lightspark/composeqr/QrEncoder.kt +++ b/composeqrcode/src/main/java/com/lightspark/composeqr/QrEncoder.kt @@ -6,10 +6,18 @@ import com.google.zxing.qrcode.encoder.ByteMatrix import com.google.zxing.qrcode.encoder.Encoder /** - * Encodes a string into a QR code ByteMatrix. This is just a small wrapper around the ZXing library with sane defaults. + * Encodes a string into a QR code ByteMatrix. The default implementation, `ZxingQrEncoder` just + * wraps the ZXing library with sane defaults. */ -class QrEncoder { - operator fun invoke(qrData: String): ByteMatrix? { +interface QrEncoder { + fun encode(qrData: String): ByteMatrix? +} + +/** + * This is just a small wrapper around the ZXing library with sane defaults. + */ +class ZxingQrEncoder : QrEncoder { + override fun encode(qrData: String): ByteMatrix? { return Encoder.encode( qrData, ErrorCorrectionLevel.H,