Skip to content

Commit

Permalink
more barcode types, split to modules
Browse files Browse the repository at this point in the history
  • Loading branch information
Zhirkevich Alexander Y authored and Zhirkevich Alexander Y committed Feb 29, 2024
1 parent 051dd57 commit d37a650
Show file tree
Hide file tree
Showing 45 changed files with 3,057 additions and 201 deletions.
1 change: 1 addition & 0 deletions example/desktopApp/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ kotlin {
api(compose.material)
api(compose.ui)
api(compose.materialIconsExtended)
implementation("com.google.zxing:core:3.5.3")
}
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,23 +1,29 @@
package io.github.alexzhirkevich.qrose.example.desktop

//import androidx.compose.runtime.remember
import androidx.compose.material.Text
import androidx.compose.ui.window.Window
import androidx.compose.ui.window.application
import androidx.compose.ui.window.rememberWindowState
import com.google.zxing.oned.UPCEWriter
import io.github.alexzhirkevich.shared.App
import java.time.Instant
import java.time.LocalDate
import java.time.format.DateTimeFormatter
import java.time.format.FormatStyle
import java.time.temporal.TemporalAccessor
import java.util.Date
import java.util.Locale

fun main() {
application {
val windowState = rememberWindowState()


Window(
onCloseRequest = ::exitApplication,
title = "QRose example",
state = windowState,
) {


App()
}
}
Expand Down
2 changes: 1 addition & 1 deletion example/shared/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ kotlin {
val commonMain by getting {
dependencies {
implementation(project(":qrose"))
// implementation("io.github.alexzhirkevich:qrose:1.0.0-beta02")
implementation(project(":qrose-oned"))
implementation(compose.ui)
implementation(compose.runtime)
implementation(compose.material3)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,24 @@

package io.github.alexzhirkevich.shared
import androidx.compose.foundation.Image
import androidx.compose.foundation.border
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.ExperimentalLayoutApi
import androidx.compose.foundation.layout.FlowRow
import androidx.compose.foundation.layout.fillMaxHeight
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.width
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
import androidx.compose.material3.DatePicker
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.Text
import androidx.compose.material3.TextField
import androidx.compose.material3.rememberDatePickerState
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
Expand All @@ -23,11 +34,15 @@ import androidx.compose.ui.graphics.painter.Painter
import androidx.compose.ui.unit.dp
import io.github.alexzhirkevich.qrose.QrData
import io.github.alexzhirkevich.qrose.email
import io.github.alexzhirkevich.qrose.oned.rememberCodabarPainter
import io.github.alexzhirkevich.qrose.oned.rememberCode128Painter
import io.github.alexzhirkevich.qrose.oned.rememberCode39Painter
import io.github.alexzhirkevich.qrose.oned.rememberCode93Painter
import io.github.alexzhirkevich.qrose.oned.rememberEAN13Painter
import io.github.alexzhirkevich.qrose.oned.rememberEAN8Painter
import io.github.alexzhirkevich.qrose.oned.rememberITFPainter
import io.github.alexzhirkevich.qrose.oned.rememberUPCAPainter
import io.github.alexzhirkevich.qrose.oned.rememberUPCEPainter
import io.github.alexzhirkevich.qrose.options.DelicateQRoseApi
import io.github.alexzhirkevich.qrose.options.QrBallShape
import io.github.alexzhirkevich.qrose.options.QrBrush
Expand All @@ -50,90 +65,53 @@ import qrose.example.shared.generated.resources.Res
import qrose.example.shared.generated.resources.jc
import qrose.example.shared.generated.resources.jcbg

@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun App() {
QrCode()
AllBarcodes()
}

@OptIn(ExperimentalLayoutApi::class)
@Composable
fun CodeEAN13() {
val painter = rememberEAN13Painter(
data = "9780201379624"
)

Image(
painter = painter,
contentDescription = null,
modifier = Modifier
.fillMaxWidth()
.fillMaxHeight(.3f)
)
}


@Composable
fun CodeEAN8(){
val painter = rememberEAN8Painter(
data = "1234567"
)

Image(
painter = painter,
contentDescription = null,
modifier = Modifier
.fillMaxWidth()
.fillMaxHeight(.3f)
)
}

@Composable
fun Code39(){
val painter = rememberCode39Painter(
data = "WIKIPEDIA"
)

Image(
painter = painter,
contentDescription = null,
modifier = Modifier
.fillMaxWidth()
.fillMaxHeight(.3f)
)
}

@Composable
fun Code93(){
val painter = rememberCode93Painter(
data = "TEST123"
)

Image(
painter = painter,
contentDescription = null,
modifier = Modifier
.fillMaxWidth()
.fillMaxHeight(.3f)
.padding(30.dp)
)
fun AllBarcodes() {
FlowRow(modifier = Modifier.fillMaxSize().verticalScroll(rememberScrollState())) {
OnedCode("ITF", rememberITFPainter("123456734512"))
OnedCode("UPC E", rememberUPCEPainter("02345673"))
OnedCode("UPC A", rememberUPCAPainter("123456789012"))
OnedCode("EAN 13", rememberEAN13Painter("9780201379624"))
OnedCode("EAN 8", rememberEAN8Painter("1234567"))
OnedCode("Code 39", rememberCode39Painter("TEST"))
OnedCode("Code 93", rememberCode93Painter("TEST"))
OnedCode("Code 128", rememberCode128Painter("test"))
OnedCode("Codabar", rememberCodabarPainter("A23342453D"))
OnedCode("QR", rememberQrCodePainter("https://github.com/alexzhirkevich/qrose"))
}
}


@Composable
fun Code128(){
val painter = rememberCode128Painter(
data = "test",
brush = Brush.horizontalGradient(0f to Color.Red, 1f to Color.Blue)
)

Image(
painter = painter,
contentDescription = null,
fun OnedCode(
name : String,
code : Painter
) {
Column(
horizontalAlignment = Alignment.CenterHorizontally,
modifier = Modifier
.size(350.dp)
.padding(50.dp)
.border(1.dp, Color.Black)
.padding(10.dp)
)
) {
Image(
painter = code,
contentDescription = null,
modifier = Modifier
.width(300.dp)
.height(100.dp)
)
Text(name)
}
}


@OptIn(ExperimentalResourceApi::class)
@Composable
fun QrCode(){
Expand Down
104 changes: 104 additions & 0 deletions qrose-core/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
@file:Suppress("DSL_SCOPE_VIOLATION")

plugins {
id("maven-publish")
id("signing")
}


kotlin {
sourceSets.commonMain.dependencies {
implementation(compose.ui)
}
}

//ext["signing.keyId"] = null
//ext["signing.password"] = null
//ext["signing.secretKeyRingFile"] = null
//ext["ossrhUsername"] = null
//ext["ossrhPassword"] = null

//extra.apply {
// val publishPropFile = rootProject.file("local.properties")
// if (publishPropFile.exists()) {
// Properties().apply {
// load(publishPropFile.inputStream())
// }.forEach { name, value ->
// if (name == "signing.secretKeyRingFile") {
// set(name.toString(), rootProject.file(value.toString()).absolutePath)
// } else {
// set(name.toString(), value)
// }
// }
// } else {
// ext["signing.keyId"] = System.getenv("SIGNING_KEY_ID")
// ext["signing.password"] = System.getenv("SIGNING_PASSWORD")
// ext["signing.secretKeyRingFile"] = System.getenv("SIGNING_SECRET_KEY_RING_FILE")
// ext["ossrhUsername"] = System.getenv("OSSRH_USERNAME")
// ext["ossrhPassword"]= System.getenv("OSSRH_PASSWORD")
// }
//}
//
//val javadocJar by tasks.registering(Jar::class) {
// archiveClassifier.set("javadoc")
//}
//// https://github.com/gradle/gradle/issues/26091
//val signingTasks = tasks.withType<Sign>()
//tasks.withType<AbstractPublishToMaven>().configureEach {
// dependsOn(signingTasks)
//}

//publishing {
// if (rootProject.file("local.properties").exists()) {
//
// repositories {
// maven {
// val releasesRepoUrl =
// "https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/"
// val snapshotsRepoUrl =
// "https://s01.oss.sonatype.org/content/repositories/snapshots/"
// url = if (version.toString().endsWith("SNAPSHOT")) {
// uri(snapshotsRepoUrl)
// } else {
// uri(releasesRepoUrl)
// }
// credentials {
// username = project.ext.get("ossrhUsername").toString()
// password = project.ext.get("ossrhPassword").toString()
// }
// }
// }
// }
//
// publications.withType<MavenPublication> {
// artifact(javadocJar)
// pom {
// name.set("QRose")
// description.set("Styled QR code generation library for Compose Multiplatform")
// url.set("https://github.com/alexzhirkevich/qrose")
//
// licenses {
// license {
// name.set("MIT")
// url.set("https://opensource.org/licenses/MIT")
// }
// }
// developers {
// developer {
// id.set("alexzhirkevich")
// name.set("Alexander Zhirkevich")
// email.set("[email protected]")
// }
// }
// scm {
// url.set("https://github.com/alexzhirkevich/qrose")
// connection.set("scm:git:git://github.com/alexzhirkevich/qrose.git")
// developerConnection.set("scm:git:git://github.com/alexzhirkevich/qrose.git")
// }
// }
// }
//}

//signing {
// sign(publishing.publications)
//}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package io.github.alexzhirkevich.qrose

import android.graphics.Bitmap
import androidx.compose.ui.graphics.ImageBitmap
import androidx.compose.ui.graphics.asAndroidBitmap
import java.io.ByteArrayOutputStream

actual typealias ImageFormat = Bitmap.CompressFormat

actual fun ImageBitmap.toByteArray(
format: ImageFormat
): ByteArray {

return ByteArrayOutputStream().use {
asAndroidBitmap().compress(format, 100, it)
it.toByteArray()
}
}
Loading

0 comments on commit d37a650

Please sign in to comment.