0.3.0 #23
@ -5,6 +5,7 @@
|
||||
### Added
|
||||
|
||||
### Changed
|
||||
- Package changed to `space.kscience`
|
||||
|
||||
### Deprecated
|
||||
|
||||
|
@ -5,10 +5,10 @@ plugins {
|
||||
id("space.kscience.gradle.project")
|
||||
}
|
||||
|
||||
val kmathVersion: String by extra("0.4.0-RC2")
|
||||
val kmathVersion: String by extra("0.4.0")
|
||||
|
||||
allprojects {
|
||||
group = "center.sciprog"
|
||||
group = "space.kscience"
|
||||
version = "0.3.0-dev-2"
|
||||
|
||||
repositories {
|
||||
|
@ -14,9 +14,6 @@ import androidx.compose.ui.unit.dp
|
||||
import androidx.compose.ui.window.Window
|
||||
import androidx.compose.ui.window.application
|
||||
import center.sciprog.maps.compose.*
|
||||
import center.sciprog.maps.coordinates.GeodeticMapCoordinates
|
||||
import center.sciprog.maps.coordinates.Gmc
|
||||
import center.sciprog.maps.coordinates.kilometers
|
||||
import center.sciprog.maps.features.*
|
||||
import center.sciprog.maps.geojson.geoJson
|
||||
import io.ktor.client.HttpClient
|
||||
@ -32,6 +29,9 @@ import space.kscience.attributes.Attributes
|
||||
import space.kscience.kmath.geometry.Angle
|
||||
import space.kscience.kmath.geometry.degrees
|
||||
import space.kscience.kmath.geometry.radians
|
||||
import space.kscience.maps.coordinates.GeodeticMapCoordinates
|
||||
import space.kscience.maps.coordinates.Gmc
|
||||
import space.kscience.maps.coordinates.kilometers
|
||||
import java.nio.file.Path
|
||||
import kotlin.math.PI
|
||||
import kotlin.random.Random
|
||||
|
@ -1,10 +1,10 @@
|
||||
package center.sciprog.maps.compose
|
||||
package space.kscience.maps.compose
|
||||
|
||||
import center.sciprog.maps.coordinates.GeodeticMapCoordinates
|
||||
import center.sciprog.maps.coordinates.Gmc
|
||||
import center.sciprog.maps.features.Rectangle
|
||||
import space.kscience.kmath.geometry.Angle
|
||||
import space.kscience.kmath.geometry.abs
|
||||
import space.kscience.maps.coordinates.GeodeticMapCoordinates
|
||||
import space.kscience.maps.coordinates.Gmc
|
||||
|
||||
internal fun Angle.isBetween(a: Angle, b: Angle) = this in a..b || this in b..a
|
||||
|
@ -1,6 +1,6 @@
|
||||
@file:Suppress("DEPRECATION")
|
||||
|
||||
package center.sciprog.maps.compose
|
||||
package space.kscience.maps.compose
|
||||
|
||||
import kotlin.jvm.Synchronized
|
||||
|
@ -1,4 +1,4 @@
|
||||
package center.sciprog.maps.compose
|
||||
package space.kscience.maps.compose
|
||||
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.remember
|
||||
@ -6,12 +6,12 @@ import androidx.compose.ui.unit.Dp
|
||||
import androidx.compose.ui.unit.DpOffset
|
||||
import androidx.compose.ui.unit.DpRect
|
||||
import androidx.compose.ui.unit.dp
|
||||
import center.sciprog.maps.coordinates.Gmc
|
||||
import center.sciprog.maps.coordinates.MercatorProjection
|
||||
import center.sciprog.maps.coordinates.WebMercatorCoordinates
|
||||
import center.sciprog.maps.coordinates.WebMercatorProjection
|
||||
import center.sciprog.maps.features.*
|
||||
import space.kscience.kmath.geometry.radians
|
||||
import space.kscience.maps.coordinates.Gmc
|
||||
import space.kscience.maps.coordinates.MercatorProjection
|
||||
import space.kscience.maps.coordinates.WebMercatorCoordinates
|
||||
import space.kscience.maps.coordinates.WebMercatorProjection
|
||||
import kotlin.math.*
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
package center.sciprog.maps.compose
|
||||
package space.kscience.maps.compose
|
||||
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Deferred
|
@ -1,4 +1,4 @@
|
||||
package center.sciprog.maps.compose
|
||||
package space.kscience.maps.compose
|
||||
|
||||
import androidx.compose.foundation.layout.fillMaxSize
|
||||
import androidx.compose.runtime.Composable
|
||||
@ -11,13 +11,13 @@ import androidx.compose.ui.graphics.toComposeImageBitmap
|
||||
import androidx.compose.ui.unit.IntOffset
|
||||
import androidx.compose.ui.unit.IntSize
|
||||
import androidx.compose.ui.unit.dp
|
||||
import center.sciprog.maps.coordinates.Gmc
|
||||
import center.sciprog.maps.features.*
|
||||
import io.github.oshai.kotlinlogging.KotlinLogging
|
||||
import kotlinx.coroutines.CancellationException
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.supervisorScope
|
||||
import org.jetbrains.skia.Image
|
||||
import space.kscience.maps.coordinates.Gmc
|
||||
import kotlin.math.ceil
|
||||
import kotlin.math.pow
|
||||
|
@ -1,9 +1,9 @@
|
||||
package center.sciprog.maps.compose
|
||||
package space.kscience.maps.compose
|
||||
|
||||
import center.sciprog.maps.coordinates.GeodeticMapCoordinates
|
||||
import center.sciprog.maps.coordinates.Gmc
|
||||
import center.sciprog.maps.coordinates.WebMercatorProjection
|
||||
import center.sciprog.maps.features.ViewPoint
|
||||
import space.kscience.maps.coordinates.GeodeticMapCoordinates
|
||||
import space.kscience.maps.coordinates.Gmc
|
||||
import space.kscience.maps.coordinates.WebMercatorProjection
|
||||
|
||||
/**
|
||||
* Observable position on the map. Includes observation coordinate and [zoom] factor
|
@ -1,4 +1,4 @@
|
||||
package center.sciprog.maps.compose
|
||||
package space.kscience.maps.compose
|
||||
|
||||
import androidx.compose.ui.unit.DpOffset
|
||||
import androidx.compose.ui.unit.DpSize
|
||||
@ -9,6 +9,7 @@ import center.sciprog.maps.features.Rectangle
|
||||
import center.sciprog.maps.features.ViewPoint
|
||||
import space.kscience.kmath.geometry.Angle
|
||||
import space.kscience.kmath.geometry.radians
|
||||
import space.kscience.maps.coordinates.*
|
||||
import kotlin.math.abs
|
||||
import kotlin.math.floor
|
||||
import kotlin.math.pow
|
||||
@ -19,7 +20,8 @@ public object WebMercatorSpace : CoordinateSpace<Gmc> {
|
||||
private fun tileScale(zoom: Float): Float = 2f.pow(zoom - floor(zoom))
|
||||
|
||||
|
||||
override fun Rectangle(first: Gmc, second: Gmc): Rectangle<Gmc> = GmcRectangle(first, second)
|
||||
override fun Rectangle(first: Gmc, second: Gmc): Rectangle<Gmc> =
|
||||
space.kscience.maps.compose.GmcRectangle(first, second)
|
||||
|
||||
override fun Rectangle(center: Gmc, zoom: Float, size: DpSize): Rectangle<Gmc> {
|
||||
val scale = WebMercatorProjection.scaleFactor(zoom)
|
||||
@ -62,7 +64,10 @@ public object WebMercatorSpace : CoordinateSpace<Gmc> {
|
||||
val maxLat = maxOf { it.top }
|
||||
val minLong = minOf { it.left }
|
||||
val maxLong = maxOf { it.right }
|
||||
return GmcRectangle(Gmc.normalized(minLat, minLong), Gmc.normalized(maxLat, maxLong))
|
||||
return space.kscience.maps.compose.GmcRectangle(
|
||||
Gmc.normalized(minLat, minLong),
|
||||
Gmc.normalized(maxLat, maxLong)
|
||||
)
|
||||
}
|
||||
|
||||
override fun Collection<Gmc>.wrapPoints(): Rectangle<Gmc>? {
|
||||
@ -72,7 +77,10 @@ public object WebMercatorSpace : CoordinateSpace<Gmc> {
|
||||
val maxLat = maxOf { it.latitude }
|
||||
val minLong = minOf { it.longitude }
|
||||
val maxLong = maxOf { it.longitude }
|
||||
return GmcRectangle(Gmc.normalized(minLat, minLong), Gmc.normalized(maxLat, maxLong))
|
||||
return space.kscience.maps.compose.GmcRectangle(
|
||||
Gmc.normalized(minLat, minLong),
|
||||
Gmc.normalized(maxLat, maxLong)
|
||||
)
|
||||
}
|
||||
|
||||
override fun Gmc.offsetTo(b: Gmc, zoom: Float): DpOffset {
|
||||
@ -132,5 +140,5 @@ public fun CoordinateSpace<Gmc>.Rectangle(
|
||||
center.latitude + (height / 2),
|
||||
center.longitude + (width / 2)
|
||||
)
|
||||
return GmcRectangle(a, b)
|
||||
return space.kscience.maps.compose.GmcRectangle(a, b)
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
package center.sciprog.maps.compose
|
||||
package space.kscience.maps.compose
|
||||
|
||||
import androidx.compose.ui.graphics.Color
|
||||
import androidx.compose.ui.graphics.drawscope.DrawScope
|
||||
@ -10,6 +10,7 @@ import center.sciprog.maps.coordinates.*
|
||||
import center.sciprog.maps.features.*
|
||||
import org.jetbrains.skia.Font
|
||||
import space.kscience.kmath.geometry.Angle
|
||||
import space.kscience.maps.coordinates.*
|
||||
import kotlin.math.ceil
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
package center.sciprog.maps.compose
|
||||
package space.kscience.maps.compose
|
||||
|
||||
import io.github.oshai.kotlinlogging.KotlinLogging
|
||||
import io.ktor.client.HttpClient
|
@ -1,8 +1,7 @@
|
||||
package center.sciprog.maps.compose
|
||||
package space.kscience.maps.compose
|
||||
|
||||
import io.ktor.client.HttpClient
|
||||
import io.ktor.client.engine.cio.CIO
|
||||
import kotlinx.coroutines.ExperimentalCoroutinesApi
|
||||
import kotlinx.coroutines.supervisorScope
|
||||
import kotlinx.coroutines.test.runTest
|
||||
import org.junit.jupiter.api.Test
|
@ -1,4 +1,4 @@
|
||||
package center.sciprog.maps.coordinates
|
||||
package space.kscience.maps.coordinates
|
||||
|
||||
import kotlinx.serialization.Serializable
|
||||
import kotlin.jvm.JvmInline
|
@ -1,4 +1,4 @@
|
||||
package center.sciprog.maps.coordinates
|
||||
package space.kscience.maps.coordinates
|
||||
|
||||
import kotlinx.serialization.Serializable
|
||||
import space.kscience.kmath.geometry.*
|
@ -1,4 +1,4 @@
|
||||
package center.sciprog.maps.coordinates
|
||||
package space.kscience.maps.coordinates
|
||||
|
||||
import kotlinx.serialization.Serializable
|
||||
import space.kscience.kmath.geometry.*
|
@ -1,4 +1,4 @@
|
||||
package center.sciprog.maps.coordinates
|
||||
package space.kscience.maps.coordinates
|
||||
|
||||
import space.kscience.kmath.geometry.*
|
||||
import kotlin.math.*
|
||||
@ -64,8 +64,8 @@ public fun GeoEllipsoid.meridianCurve(
|
||||
}
|
||||
|
||||
return GmcCurve(
|
||||
forward = GmcPose(Gmc.normalized(fromLatitude, longitude), if (up) Angle.zero else Angle.pi),
|
||||
backward = GmcPose(Gmc.normalized(toLatitude, longitude), if (up) Angle.pi else Angle.zero),
|
||||
forward = GmcPose(GeodeticMapCoordinates.normalized(fromLatitude, longitude), if (up) Angle.zero else Angle.pi),
|
||||
backward = GmcPose(GeodeticMapCoordinates.normalized(toLatitude, longitude), if (up) Angle.pi else Angle.zero),
|
||||
distance = s
|
||||
)
|
||||
}
|
||||
@ -77,8 +77,8 @@ public fun GeoEllipsoid.parallelCurve(latitude: Angle, fromLongitude: Angle, toL
|
||||
require(latitude in (-Angle.piDiv2)..(Angle.piDiv2)) { "Latitude must be in (-90, 90) degrees range" }
|
||||
val right = toLongitude > fromLongitude
|
||||
return GmcCurve(
|
||||
forward = GmcPose(Gmc.normalized(latitude, fromLongitude), if (right) Angle.piDiv2 else -Angle.piDiv2),
|
||||
backward = GmcPose(Gmc.normalized(latitude, toLongitude), if (right) -Angle.piDiv2 else Angle.piDiv2),
|
||||
forward = GmcPose(GeodeticMapCoordinates.normalized(latitude, fromLongitude), if (right) Angle.piDiv2 else -Angle.piDiv2),
|
||||
backward = GmcPose(GeodeticMapCoordinates.normalized(latitude, toLongitude), if (right) -Angle.piDiv2 else Angle.piDiv2),
|
||||
distance = reducedRadius(latitude) * abs((fromLongitude - toLongitude).toRadians().value)
|
||||
)
|
||||
}
|
||||
@ -193,7 +193,7 @@ public fun GeoEllipsoid.curveInDirection(
|
||||
val L = lambda - (1 - C) * f * sinAlpha *
|
||||
(sigma.value + C * sinSigma * (cosSigmaM2 + C * cosSigma * (-1 + 2 * cos2SigmaM2)))
|
||||
|
||||
val endPoint = Gmc.normalized(phi2, start.longitude + L.radians)
|
||||
val endPoint = GeodeticMapCoordinates.normalized(phi2, start.longitude + L.radians)
|
||||
|
||||
// eq. 12
|
||||
|
@ -1,4 +1,4 @@
|
||||
package center.sciprog.maps.coordinates
|
||||
package space.kscience.maps.coordinates
|
||||
|
||||
import kotlinx.serialization.Serializable
|
||||
import space.kscience.kmath.geometry.Angle
|
@ -3,7 +3,7 @@
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package center.sciprog.maps.coordinates
|
||||
package space.kscience.maps.coordinates
|
||||
|
||||
import kotlinx.serialization.Serializable
|
||||
import space.kscience.kmath.geometry.*
|
@ -3,7 +3,7 @@
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package center.sciprog.maps.coordinates
|
||||
package space.kscience.maps.coordinates
|
||||
|
||||
import space.kscience.kmath.geometry.abs
|
||||
import kotlin.math.*
|
@ -1,4 +1,4 @@
|
||||
package center.sciprog.maps.coordinates
|
||||
package space.kscience.maps.coordinates
|
||||
|
||||
import space.kscience.kmath.geometry.radians
|
||||
import kotlin.test.Test
|
||||
@ -6,8 +6,8 @@ import kotlin.test.assertEquals
|
||||
|
||||
internal class DistanceTest {
|
||||
companion object {
|
||||
val moscow = Gmc.ofDegrees(55.76058287719673, 37.60358622841869)
|
||||
val spb = Gmc.ofDegrees(59.926686023580444, 30.36038109122013)
|
||||
val moscow = GeodeticMapCoordinates.ofDegrees(55.76058287719673, 37.60358622841869)
|
||||
val spb = GeodeticMapCoordinates.ofDegrees(59.926686023580444, 30.36038109122013)
|
||||
}
|
||||
|
||||
@Test
|
@ -1,4 +1,4 @@
|
||||
package center.sciprog.maps.coordinates
|
||||
package space.kscience.maps.coordinates
|
||||
|
||||
import kotlin.test.Test
|
||||
import kotlin.test.assertEquals
|
||||
@ -6,7 +6,7 @@ import kotlin.test.assertEquals
|
||||
class MercatorTest {
|
||||
@Test
|
||||
fun sphereForwardBackward(){
|
||||
val moscow = Gmc.ofDegrees(55.76058287719673, 37.60358622841869)
|
||||
val moscow = GeodeticMapCoordinates.ofDegrees(55.76058287719673, 37.60358622841869)
|
||||
val mercator = MapProjection.epsg3857.toProjection(moscow)
|
||||
//https://epsg.io/transform#s_srs=4326&t_srs=3857&x=37.6035862&y=55.7605829
|
||||
assertEquals(4186.0120709, mercator.x.kilometers, 1e-4)
|
||||
@ -18,7 +18,7 @@ class MercatorTest {
|
||||
|
||||
@Test
|
||||
fun ellipseForwardBackward(){
|
||||
val moscow = Gmc.ofDegrees(55.76058287719673, 37.60358622841869)
|
||||
val moscow = GeodeticMapCoordinates.ofDegrees(55.76058287719673, 37.60358622841869)
|
||||
val projection = MercatorProjection(ellipsoid = GeoEllipsoid.WGS84)
|
||||
val mercator = projection.toProjection(moscow)
|
||||
val backwards = projection.toGeodetic(mercator)
|
@ -1,6 +1,5 @@
|
||||
package center.sciprog.maps.compose
|
||||
package space.kscience.maps.compose
|
||||
|
||||
import androidx.compose.foundation.gestures.detectTapGestures
|
||||
import androidx.compose.foundation.gestures.drag
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.geometry.Offset
|
@ -1,4 +1,4 @@
|
||||
package center.sciprog.maps.compose
|
||||
package space.kscience.maps.compose
|
||||
|
||||
import androidx.compose.foundation.gestures.GestureCancellationException
|
||||
import androidx.compose.foundation.gestures.PressGestureScope
|
@ -1,4 +1,4 @@
|
||||
package center.sciprog.maps.features
|
||||
package space.kscience.maps.features
|
||||
|
||||
import androidx.compose.runtime.MutableState
|
||||
import androidx.compose.runtime.getValue
|
@ -1,4 +1,4 @@
|
||||
package center.sciprog.maps.features
|
||||
package space.kscience.maps.features
|
||||
|
||||
import androidx.compose.ui.unit.Dp
|
||||
import androidx.compose.ui.unit.DpOffset
|
@ -1,4 +1,4 @@
|
||||
package center.sciprog.maps.features
|
||||
package space.kscience.maps.features
|
||||
|
||||
import androidx.compose.ui.input.pointer.PointerEvent
|
||||
import androidx.compose.ui.input.pointer.isPrimaryPressed
|
@ -1,4 +1,4 @@
|
||||
package center.sciprog.maps.features
|
||||
package space.kscience.maps.features
|
||||
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.Stable
|
@ -1,4 +1,4 @@
|
||||
package center.sciprog.maps.features
|
||||
package space.kscience.maps.features
|
||||
|
||||
import androidx.compose.foundation.Canvas
|
||||
import androidx.compose.runtime.Composable
|
@ -1,4 +1,4 @@
|
||||
package center.sciprog.maps.features
|
||||
package space.kscience.maps.features
|
||||
|
||||
import androidx.compose.runtime.*
|
||||
import androidx.compose.runtime.snapshots.SnapshotStateMap
|
@ -1,4 +1,4 @@
|
||||
package center.sciprog.maps.features
|
||||
package space.kscience.maps.features
|
||||
|
||||
import androidx.compose.ui.input.pointer.PointerEvent
|
||||
import androidx.compose.ui.input.pointer.isPrimaryPressed
|
@ -1,4 +1,4 @@
|
||||
package center.sciprog.maps.features
|
||||
package space.kscience.maps.features
|
||||
|
||||
import androidx.compose.ui.unit.DpSize
|
||||
|
@ -1,4 +1,4 @@
|
||||
package center.sciprog.maps.features
|
||||
package space.kscience.maps.features
|
||||
|
||||
/**
|
||||
* @param T type of coordinates used for the view point
|
@ -1,4 +1,4 @@
|
||||
package center.sciprog.maps.features
|
||||
package space.kscience.maps.features
|
||||
|
||||
import space.kscience.attributes.Attributes
|
||||
import kotlin.jvm.JvmName
|
@ -1,4 +1,4 @@
|
||||
package center.sciprog.maps.features
|
||||
package space.kscience.maps.features
|
||||
|
||||
import androidx.compose.ui.geometry.Offset
|
||||
import androidx.compose.ui.geometry.Size
|
@ -1,4 +1,4 @@
|
||||
package center.sciprog.maps.features
|
||||
package space.kscience.maps.features
|
||||
|
||||
import androidx.compose.foundation.ExperimentalFoundationApi
|
||||
import androidx.compose.foundation.PointerMatcher
|
@ -1,4 +1,4 @@
|
||||
package center.sciprog.maps.geojson
|
||||
package space.kscience.maps.geojson
|
||||
|
||||
import center.sciprog.maps.geojson.GeoJson.Companion.PROPERTIES_KEY
|
||||
import center.sciprog.maps.geojson.GeoJson.Companion.TYPE_KEY
|
@ -1,9 +1,9 @@
|
||||
package center.sciprog.maps.geojson
|
||||
package space.kscience.maps.geojson
|
||||
|
||||
import center.sciprog.maps.coordinates.Gmc
|
||||
import center.sciprog.maps.coordinates.meters
|
||||
import center.sciprog.maps.geojson.GeoJsonGeometry.Companion.COORDINATES_KEY
|
||||
import kotlinx.serialization.json.*
|
||||
import space.kscience.maps.coordinates.Gmc
|
||||
import space.kscience.maps.coordinates.meters
|
||||
import kotlin.jvm.JvmInline
|
||||
|
||||
public sealed interface GeoJsonGeometry : GeoJson {
|
@ -1,4 +1,4 @@
|
||||
package center.sciprog.maps.geojson
|
||||
package space.kscience.maps.geojson
|
||||
|
||||
import kotlinx.serialization.json.JsonObject
|
||||
import kotlinx.serialization.serializer
|
@ -1,4 +1,4 @@
|
||||
package center.sciprog.maps.geojson
|
||||
package space.kscience.maps.geojson
|
||||
|
||||
import kotlinx.serialization.KSerializer
|
||||
import kotlinx.serialization.descriptors.SerialDescriptor
|
@ -1,12 +1,12 @@
|
||||
package center.sciprog.maps.geojson
|
||||
package space.kscience.maps.geojson
|
||||
|
||||
import androidx.compose.ui.graphics.Color
|
||||
import center.sciprog.maps.coordinates.Gmc
|
||||
import center.sciprog.maps.features.*
|
||||
import kotlinx.serialization.json.contentOrNull
|
||||
import kotlinx.serialization.json.intOrNull
|
||||
import kotlinx.serialization.json.jsonPrimitive
|
||||
import space.kscience.NameAttribute
|
||||
import space.kscience.maps.coordinates.Gmc
|
||||
|
||||
|
||||
/**
|
@ -1,11 +1,11 @@
|
||||
package center.sciprog.maps.geojson
|
||||
package space.kscience.maps.geojson
|
||||
|
||||
import center.sciprog.maps.coordinates.Gmc
|
||||
import center.sciprog.maps.features.Feature
|
||||
import center.sciprog.maps.features.FeatureGroup
|
||||
import center.sciprog.maps.features.FeatureRef
|
||||
import kotlinx.serialization.json.Json
|
||||
import kotlinx.serialization.json.jsonObject
|
||||
import space.kscience.maps.coordinates.Gmc
|
||||
import java.net.URL
|
||||
|
||||
/**
|
@ -1,4 +1,4 @@
|
||||
package center.sciprog.maps.scheme
|
||||
package space.kscience.maps.scheme
|
||||
|
||||
import androidx.compose.foundation.layout.fillMaxSize
|
||||
import androidx.compose.runtime.Composable
|
@ -1,4 +1,4 @@
|
||||
package center.sciprog.maps.scheme
|
||||
package space.kscience.maps.scheme
|
||||
|
||||
import androidx.compose.ui.unit.DpSize
|
||||
import androidx.compose.ui.unit.dp
|
@ -1,7 +1,6 @@
|
||||
package center.sciprog.maps.scheme
|
||||
package space.kscience.maps.scheme
|
||||
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.ui.unit.Dp
|
||||
import androidx.compose.ui.unit.DpOffset
|
||||
import androidx.compose.ui.unit.DpRect
|
@ -1,4 +1,4 @@
|
||||
package center.sciprog.maps.scheme
|
||||
package space.kscience.maps.scheme
|
||||
|
||||
import androidx.compose.ui.unit.DpOffset
|
||||
import androidx.compose.ui.unit.DpSize
|
@ -1,4 +1,4 @@
|
||||
package center.sciprog.maps.scheme
|
||||
package space.kscience.maps.scheme
|
||||
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.ui.graphics.Color
|
@ -1,4 +1,4 @@
|
||||
package center.sciprog.maps.svg
|
||||
package space.kscience.maps.svg
|
||||
|
||||
import androidx.compose.ui.geometry.Offset
|
||||
import androidx.compose.ui.geometry.Rect
|
@ -1,4 +1,4 @@
|
||||
package center.sciprog.maps.svg
|
||||
package space.kscience.maps.svg
|
||||
|
||||
import androidx.compose.ui.geometry.CornerRadius
|
||||
import androidx.compose.ui.geometry.Offset
|
@ -1,7 +1,6 @@
|
||||
package center.sciprog.maps.svg
|
||||
package space.kscience.maps.svg
|
||||
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.ui.geometry.Size
|
||||
import androidx.compose.ui.graphics.painter.Painter
|
||||
import androidx.compose.ui.unit.DpSize
|
||||
import androidx.compose.ui.unit.dp
|
@ -36,6 +36,7 @@ public class AttributesSerializer(
|
||||
override val content: Map<out Attribute<*>, Any?> = attributeMap
|
||||
override fun toString(): String = "Attributes(value=${content.entries})"
|
||||
override fun equals(other: Any?): Boolean = other is Attributes && Attributes.equals(this, other)
|
||||
override fun hashCode(): Int = content.hashCode()
|
||||
}
|
||||
}
|
||||
|
||||
@ -69,6 +70,3 @@ public abstract class SerializableAttribute<T>(
|
||||
}
|
||||
|
||||
public object NameAttribute : SerializableAttribute<String>("name", String.serializer())
|
||||
|
||||
public fun Attributes.Companion.equals(a1: Attributes, a2: Attributes): Boolean =
|
||||
a1.keys == a2.keys && a1.keys.all { a1[it] == a2[it] }
|
Loading…
Reference in New Issue
Block a user