Project splitting and deployment
This commit is contained in:
parent
7cfc76f2c7
commit
9f6386a8c2
2
.gitignore
vendored
2
.gitignore
vendored
@ -1,6 +1,6 @@
|
|||||||
build/
|
build/
|
||||||
.gradle/
|
.gradle/
|
||||||
.idea/
|
.idea/
|
||||||
*.iml
|
/*.iml
|
||||||
|
|
||||||
mapCache/
|
mapCache/
|
113
build.gradle.kts
113
build.gradle.kts
@ -1,58 +1,77 @@
|
|||||||
import org.jetbrains.compose.compose
|
|
||||||
import org.jetbrains.compose.desktop.application.dsl.TargetFormat
|
|
||||||
|
|
||||||
plugins {
|
plugins {
|
||||||
kotlin("multiplatform")
|
base
|
||||||
id("org.jetbrains.compose")
|
|
||||||
`maven-publish`
|
|
||||||
}
|
|
||||||
|
|
||||||
group = "center.sciptog"
|
|
||||||
version = "1.0-SNAPSHOT"
|
|
||||||
|
|
||||||
repositories {
|
|
||||||
google()
|
|
||||||
mavenCentral()
|
|
||||||
maven("https://maven.pkg.jetbrains.space/public/p/compose/dev")
|
|
||||||
}
|
}
|
||||||
|
|
||||||
val ktorVersion by extra("2.0.3")
|
val ktorVersion by extra("2.0.3")
|
||||||
|
|
||||||
kotlin {
|
subprojects {
|
||||||
jvm {
|
group = "center.sciprog"
|
||||||
compilations.all {
|
version = "0.1.0-SNAPSHOT"
|
||||||
kotlinOptions.jvmTarget = "11"
|
|
||||||
}
|
repositories {
|
||||||
withJava()
|
google()
|
||||||
|
mavenCentral()
|
||||||
|
maven("https://maven.pkg.jetbrains.space/public/p/compose/dev")
|
||||||
}
|
}
|
||||||
sourceSets {
|
|
||||||
commonMain{
|
plugins.withId("maven-publish") {
|
||||||
dependencies{
|
|
||||||
api(compose.runtime)
|
configure<PublishingExtension> {
|
||||||
api(compose.foundation)
|
val vcs = "https://github.com/mipt-npm/maps-kt"
|
||||||
api(compose.material)
|
|
||||||
api("io.ktor:ktor-client-core:$ktorVersion")
|
// Process each publication we have in this project
|
||||||
implementation("io.ktor:ktor-client-cio:$ktorVersion")
|
publications {
|
||||||
implementation("io.github.microutils:kotlin-logging:2.1.23")
|
withType<MavenPublication> {
|
||||||
|
pom {
|
||||||
|
name.set(project.name)
|
||||||
|
description.set(project.description)
|
||||||
|
url.set(vcs)
|
||||||
|
|
||||||
|
licenses {
|
||||||
|
license {
|
||||||
|
name.set("The Apache Software License, Version 2.0")
|
||||||
|
url.set("https://www.apache.org/licenses/LICENSE-2.0.txt")
|
||||||
|
distribution.set("repo")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
developers {
|
||||||
|
developer {
|
||||||
|
id.set("SPC")
|
||||||
|
name.set("Scientific programming centre")
|
||||||
|
organization.set("MIPT")
|
||||||
|
organizationUrl.set("https://sciprog.center/")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
scm {
|
||||||
|
url.set(vcs)
|
||||||
|
tag.set(project.version.toString())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
val spaceRepo = "https://maven.pkg.jetbrains.space/mipt-npm/p/sci/maven"
|
||||||
|
val spaceUser: String? = project.findProperty("publishing.space.user") as? String
|
||||||
|
val spaceToken: String? = project.findProperty("publishing.space.token") as? String
|
||||||
|
|
||||||
|
if (spaceUser != null && spaceToken != null) {
|
||||||
|
project.logger.info("Adding mipt-npm Space publishing to project [${project.name}]")
|
||||||
|
|
||||||
|
repositories.maven {
|
||||||
|
name = "space"
|
||||||
|
url = uri(spaceRepo)
|
||||||
|
|
||||||
|
credentials {
|
||||||
|
username = spaceUser
|
||||||
|
password = spaceToken
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
val jvmMain by getting {
|
|
||||||
dependencies {
|
|
||||||
implementation(compose.desktop.currentOs)
|
|
||||||
implementation("ch.qos.logback:logback-classic:1.2.11")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
val jvmTest by getting
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
compose.desktop {
|
|
||||||
application {
|
|
||||||
mainClass = "MainKt"
|
|
||||||
nativeDistributions {
|
|
||||||
targetFormats(TargetFormat.Dmg, TargetFormat.Msi, TargetFormat.Deb)
|
|
||||||
packageName = "maps-kt-compose"
|
|
||||||
packageVersion = "1.0.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
40
demo/build.gradle.kts
Normal file
40
demo/build.gradle.kts
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
import org.jetbrains.compose.compose
|
||||||
|
import org.jetbrains.compose.desktop.application.dsl.TargetFormat
|
||||||
|
|
||||||
|
plugins {
|
||||||
|
kotlin("multiplatform")
|
||||||
|
id("org.jetbrains.compose")
|
||||||
|
}
|
||||||
|
|
||||||
|
val ktorVersion: String by rootProject.extra
|
||||||
|
|
||||||
|
kotlin {
|
||||||
|
jvm {
|
||||||
|
compilations.all {
|
||||||
|
kotlinOptions.jvmTarget = "11"
|
||||||
|
}
|
||||||
|
withJava()
|
||||||
|
}
|
||||||
|
sourceSets {
|
||||||
|
val jvmMain by getting {
|
||||||
|
dependencies {
|
||||||
|
implementation(projects.mapsKtCompose)
|
||||||
|
implementation(compose.desktop.currentOs)
|
||||||
|
implementation("io.ktor:ktor-client-cio:$ktorVersion")
|
||||||
|
implementation("ch.qos.logback:logback-classic:1.2.11")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
val jvmTest by getting
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
compose.desktop {
|
||||||
|
application {
|
||||||
|
mainClass = "MainKt"
|
||||||
|
nativeDistributions {
|
||||||
|
targetFormats(TargetFormat.Dmg, TargetFormat.Msi, TargetFormat.Deb)
|
||||||
|
packageName = "maps-kt-compose"
|
||||||
|
packageVersion = "1.0.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,4 +1,5 @@
|
|||||||
kotlin.code.style=official
|
kotlin.code.style=official
|
||||||
kotlin.version=1.6.10
|
kotlin.version=1.6.10
|
||||||
|
compose.version=1.1.1
|
||||||
agp.version=4.2.2
|
agp.version=4.2.2
|
||||||
compose.version=1.1.1
|
android.useAndroidX=true
|
||||||
|
29
maps-kt-compose/build.gradle.kts
Normal file
29
maps-kt-compose/build.gradle.kts
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
import org.jetbrains.compose.compose
|
||||||
|
import org.jetbrains.compose.desktop.application.dsl.TargetFormat
|
||||||
|
|
||||||
|
plugins {
|
||||||
|
kotlin("multiplatform")
|
||||||
|
id("org.jetbrains.compose")
|
||||||
|
`maven-publish`
|
||||||
|
}
|
||||||
|
|
||||||
|
val ktorVersion: String by rootProject.extra
|
||||||
|
|
||||||
|
kotlin {
|
||||||
|
jvm {
|
||||||
|
compilations.all {
|
||||||
|
kotlinOptions.jvmTarget = "11"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
sourceSets {
|
||||||
|
commonMain{
|
||||||
|
dependencies{
|
||||||
|
api(projects.mapsKtCore)
|
||||||
|
api(compose.foundation)
|
||||||
|
api("io.ktor:ktor-client-core:$ktorVersion")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
val jvmMain by getting
|
||||||
|
val jvmTest by getting
|
||||||
|
}
|
||||||
|
}
|
@ -31,6 +31,17 @@ private fun Color.toPaint(): Paint = Paint().apply {
|
|||||||
|
|
||||||
private fun IntRange.intersect(other: IntRange) = max(first, other.first)..min(last, other.last)
|
private fun IntRange.intersect(other: IntRange) = max(first, other.first)..min(last, other.last)
|
||||||
|
|
||||||
|
internal fun MapViewPoint.move(deltaX: Double, deltaY: Double): MapViewPoint {
|
||||||
|
val newCoordinates = GeodeticMapCoordinates.ofRadians(
|
||||||
|
(focus.latitude + deltaY / scaleFactor).coerceIn(
|
||||||
|
-MercatorProjection.MAXIMUM_LATITUDE,
|
||||||
|
MercatorProjection.MAXIMUM_LATITUDE
|
||||||
|
),
|
||||||
|
focus.longitude + deltaX / scaleFactor
|
||||||
|
)
|
||||||
|
return MapViewPoint(newCoordinates, zoom)
|
||||||
|
}
|
||||||
|
|
||||||
private val logger = KotlinLogging.logger("MapView")
|
private val logger = KotlinLogging.logger("MapView")
|
||||||
|
|
||||||
/**
|
/**
|
26
maps-kt-core/build.gradle.kts
Normal file
26
maps-kt-core/build.gradle.kts
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
plugins {
|
||||||
|
kotlin("multiplatform")
|
||||||
|
`maven-publish`
|
||||||
|
}
|
||||||
|
|
||||||
|
val ktorVersion: String by rootProject.extra
|
||||||
|
|
||||||
|
kotlin {
|
||||||
|
jvm {
|
||||||
|
compilations.all {
|
||||||
|
kotlinOptions.jvmTarget = "11"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
js(IR){
|
||||||
|
browser()
|
||||||
|
}
|
||||||
|
sourceSets {
|
||||||
|
commonMain{
|
||||||
|
dependencies{
|
||||||
|
api("io.github.microutils:kotlin-logging:2.1.23")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
val jvmMain by getting
|
||||||
|
val jvmTest by getting
|
||||||
|
}
|
||||||
|
}
|
@ -1,14 +1,12 @@
|
|||||||
package centre.sciprog.maps
|
package centre.sciprog.maps
|
||||||
|
|
||||||
import androidx.compose.ui.unit.DpSize
|
|
||||||
import centre.sciprog.maps.compose.MapFeature
|
|
||||||
import kotlin.math.*
|
import kotlin.math.*
|
||||||
|
|
||||||
class GmcBox(val a: GeodeticMapCoordinates, val b: GeodeticMapCoordinates)
|
class GmcBox(val a: GeodeticMapCoordinates, val b: GeodeticMapCoordinates)
|
||||||
|
|
||||||
fun GmcBox(latitudes: ClosedFloatingPointRange<Double>, longitudes: ClosedFloatingPointRange<Double>) = GmcBox(
|
fun GmcBox(latitudes: ClosedFloatingPointRange<Double>, longitudes: ClosedFloatingPointRange<Double>) = GmcBox(
|
||||||
Gmc.ofRadians(latitudes.start, longitudes.start),
|
GeodeticMapCoordinates.ofRadians(latitudes.start, longitudes.start),
|
||||||
Gmc.ofRadians(latitudes.endInclusive, longitudes.endInclusive)
|
GeodeticMapCoordinates.ofRadians(latitudes.endInclusive, longitudes.endInclusive)
|
||||||
)
|
)
|
||||||
|
|
||||||
val GmcBox.center
|
val GmcBox.center
|
@ -1,7 +1,6 @@
|
|||||||
package centre.sciprog.maps
|
package centre.sciprog.maps
|
||||||
|
|
||||||
import kotlin.math.pow
|
import kotlin.math.pow
|
||||||
import kotlin.math.roundToInt
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Observable position on the map. Includes observation coordinate and [zoom] factor
|
* Observable position on the map. Includes observation coordinate and [zoom] factor
|
||||||
@ -13,20 +12,6 @@ data class MapViewPoint(
|
|||||||
val scaleFactor by lazy { WebMercatorProjection.scaleFactor(zoom) }
|
val scaleFactor by lazy { WebMercatorProjection.scaleFactor(zoom) }
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
internal fun MapViewPoint.move(deltaX: Double, deltaY: Double): MapViewPoint {
|
|
||||||
val newCoordinates = GeodeticMapCoordinates.ofRadians(
|
|
||||||
(focus.latitude + deltaY / scaleFactor).coerceIn(
|
|
||||||
-MercatorProjection.MAXIMUM_LATITUDE,
|
|
||||||
MercatorProjection.MAXIMUM_LATITUDE
|
|
||||||
),
|
|
||||||
focus.longitude + deltaX / scaleFactor
|
|
||||||
)
|
|
||||||
return MapViewPoint(newCoordinates, zoom)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun MapViewPoint.move(delta: GeodeticMapCoordinates): MapViewPoint {
|
fun MapViewPoint.move(delta: GeodeticMapCoordinates): MapViewPoint {
|
||||||
val newCoordinates = GeodeticMapCoordinates.ofRadians(
|
val newCoordinates = GeodeticMapCoordinates.ofRadians(
|
||||||
(focus.latitude + delta.latitude).coerceIn(
|
(focus.latitude + delta.latitude).coerceIn(
|
@ -1,4 +1,7 @@
|
|||||||
// Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
rootProject.name = "maps-kt"
|
||||||
|
|
||||||
|
enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS")
|
||||||
|
|
||||||
pluginManagement {
|
pluginManagement {
|
||||||
repositories {
|
repositories {
|
||||||
google()
|
google()
|
||||||
@ -9,9 +12,17 @@ pluginManagement {
|
|||||||
|
|
||||||
plugins {
|
plugins {
|
||||||
kotlin("multiplatform").version(extra["kotlin.version"] as String)
|
kotlin("multiplatform").version(extra["kotlin.version"] as String)
|
||||||
|
kotlin("android").version(extra["kotlin.version"] as String)
|
||||||
|
id("com.android.application").version(extra["agp.version"] as String)
|
||||||
|
id("com.android.library").version(extra["agp.version"] as String)
|
||||||
id("org.jetbrains.compose").version(extra["compose.version"] as String)
|
id("org.jetbrains.compose").version(extra["compose.version"] as String)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
rootProject.name = "maps-kt"
|
|
||||||
|
include(
|
||||||
|
":maps-kt-core",
|
||||||
|
":maps-kt-compose",
|
||||||
|
":demo"
|
||||||
|
)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user