Package-level declarations

Types

Link copied to clipboard
Link copied to clipboard
@Stable
data class ArcFeature<T : Any>(val space: CoordinateSpace<T>, val oval: Rectangle<T>, val startAngle: Angle, val arcLength: Angle, val attributes: Attributes = Attributes.EMPTY) : DraggableFeature<T>
Link copied to clipboard
interface Area<T : Any>
Link copied to clipboard
@Stable
data class BitmapIconFeature<T : Any>(val space: CoordinateSpace<T>, val center: T, val size: DpSize, val image: ImageBitmap, val attributes: Attributes = Attributes.EMPTY) : MarkerFeature<T>

Fixed size bitmap icon

Link copied to clipboard
abstract class CanvasState<T : Any>(val viewConfig: ViewConfig<T>)

A state holder for current canvas size and view point. Allows transformation from coordinates to pixels and back

Link copied to clipboard
@Stable
data class CircleFeature<T : Any>(val space: CoordinateSpace<T>, val center: T, val radius: Dp = 5.dp, val attributes: Attributes = Attributes.EMPTY) : MarkerFeature<T>
Link copied to clipboard

Click radius for point-like and line objects

Link copied to clipboard
object ColorAttribute : Attribute<Color>
Link copied to clipboard
class ComposeFeatureDrawScope<T : Any>(drawScope: DrawScope, state: CanvasState<T>, painterCache: Map<PainterFeature<T>, Painter>, textMeasurer: TextMeasurer?) : FeatureDrawScope<T> , DrawScope

Default implementation of FeatureDrawScope to be used in Compose (both schemes and Maps)

Link copied to clipboard
interface CoordinateSpace<T : Any>

A context for map/scheme coordinates manipulation

Link copied to clipboard
interface DomainFeature<T : Any> : Feature<T>
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
fun interface DragHandle<T : Any>
Link copied to clipboard
fun interface DragListener<in T : Any>
Link copied to clipboard
data class DragResult<T : Any>(val result: ViewPoint<T>, val handleNext: Boolean = true)
Link copied to clipboard
data class DrawFeature<T : Any>(val space: CoordinateSpace<T>, val position: T, val attributes: Attributes = Attributes.EMPTY, val drawFeature: DrawScope.() -> Unit) : DraggableFeature<T>
Link copied to clipboard
interface Feature<T : Any>
Link copied to clipboard
interface FeatureBuilder<T : Any>
Link copied to clipboard
abstract class FeatureDrawScope<T : Any>(val state: CanvasState<T>) : DrawScope

An extension of DrawScope to include map-specific features

Link copied to clipboard

A group of other features

Link copied to clipboard
class FeatureRef<T : Any, out F : Feature<T>>

A reference to a feature inside a FeatureStore

Link copied to clipboard
@Stable
data class FeatureSelector<T : Any>(val space: CoordinateSpace<T>, val attributes: Attributes = Attributes.EMPTY, val selector: (zoom: Float) -> Feature<T>) : Feature<T>

A feature that decides what to show depending on the zoom value (it could change size of shape)

Link copied to clipboard
interface FeatureSet<T : Any>
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
@Stable
data class LineFeature<T : Any>(val space: CoordinateSpace<T>, val a: T, val b: T, val attributes: Attributes = Attributes.EMPTY) : DomainFeature<T> , LineSegmentFeature<T>
Link copied to clipboard
interface LineSegmentFeature<T : Any> : Feature<T>
Link copied to clipboard

A draggable marker feature. Other features could be bound to this one.

Link copied to clipboard
fun interface MouseListener<in T : Any>
Link copied to clipboard
data class MultiLineFeature<T : Any>(val space: CoordinateSpace<T>, val points: List<T>, val attributes: Attributes = Attributes.EMPTY) : DomainFeature<T> , LineSegmentFeature<T>
Link copied to clipboard
interface PainterFeature<T : Any> : Feature<T>
Link copied to clipboard
object PathEffectAttribute : Attribute<PathEffect>
Link copied to clipboard
@Stable
data class PathFeature<T : Any>(val space: CoordinateSpace<T>, val rectangle: Rectangle<T>, val path: Path, val brush: Brush, val style: DrawStyle = Fill, val targetRect: Rect = path.getBounds(), val attributes: Attributes = Attributes.EMPTY) : DraggableFeature<T>
Link copied to clipboard
data class PixelMapFeature<T : Any>(val space: CoordinateSpace<T>, val rectangle: Rectangle<T>, val pixelMap: Structure2D<Color?>, val attributes: Attributes = Attributes.EMPTY) : Feature<T>

A pixel map representation on the map/scheme. rectangle describes the boundary of the pixel map. pixelMap contained indexed color of pixels. Minimal indices correspond to bottom-left corner of the rectangle. Maximal indices - top-right.

Link copied to clipboard
@Stable
data class PointsFeature<T : Any>(val space: CoordinateSpace<T>, val points: List<T>, val attributes: Attributes = Attributes.EMPTY) : Feature<T>
Link copied to clipboard
@Stable
data class PolygonFeature<T : Any>(val space: CoordinateSpace<T>, val points: List<T>, val attributes: Attributes = Attributes.EMPTY) : DomainFeature<T>
Link copied to clipboard
interface Rectangle<T : Any> : Area<T>

A map coordinates rectangle. a and b represent opposing angles of the rectangle without specifying which ones.

Link copied to clipboard
@Stable
data class RectangleFeature<T : Any>(val space: CoordinateSpace<T>, val center: T, val size: DpSize = DpSize(5.dp, 5.dp), val attributes: Attributes = Attributes.EMPTY) : MarkerFeature<T>
Link copied to clipboard
data class ScalableImageFeature<T : Any>(val space: CoordinateSpace<T>, val rectangle: Rectangle<T>, val attributes: Attributes = Attributes.EMPTY, val painter: @Composable () -> Painter) : Feature<T> , PainterFeature<T>

An image that is bound to coordinates and is scaled (and possibly warped) together with them

Link copied to clipboard
Link copied to clipboard
data class TextFeature<T : Any>(val space: CoordinateSpace<T>, val position: T, val text: String, val attributes: Attributes = Attributes.EMPTY, val fontConfig: Font.() -> Unit) : DraggableFeature<T>
Link copied to clipboard
@Stable
data class VectorIconFeature<T : Any>(val space: CoordinateSpace<T>, val center: T, val size: DpSize, val image: ImageVector, val attributes: Attributes = Attributes.EMPTY) : MarkerFeature<T> , PainterFeature<T>

Fixed size vector icon

Link copied to clipboard
data class ViewConfig<T : Any>(val zoomSpeed: Float = 1f / 3f, val onClick: MouseListener<T>? = null, val dragHandle: DragHandle<T>? = null, val onViewChange: ViewPoint<T>.() -> Unit = {}, val onSelect: (Rectangle<T>) -> Unit = {}, val onCanvasSizeChange: (DpSize) -> Unit = {}, val zoomOnSelect: Boolean = true, val zoomOnDoubleClick: Boolean = true)
Link copied to clipboard
interface ViewPoint<out T : Any>
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard

Properties

Link copied to clipboard
Link copied to clipboard
val DpRect.bottomRight: DpOffset
Link copied to clipboard
val Feature<*>.color: Color?
Link copied to clipboard
Link copied to clipboard
val DpRect.topLeft: DpOffset
Link copied to clipboard
val Feature<*>.z: Float
Link copied to clipboard

Functions

Link copied to clipboard
fun <T : Any, F : Feature<T>> FeatureRef<T, F>.alpha(alpha: Float): FeatureRef<T, F>
Link copied to clipboard
fun <T : Any> FeatureBuilder<T>.arc(oval: Rectangle<T>, startAngle: Angle, arcLength: Angle, attributes: Attributes = Attributes.EMPTY, id: String? = null): FeatureRef<T, ArcFeature<T>>
Link copied to clipboard
fun <T : Any> FeatureBuilder<T>.circle(center: T, size: Dp = 5.dp, attributes: Attributes = Attributes.EMPTY, id: String? = null): FeatureRef<T, CircleFeature<T>>
Link copied to clipboard
fun <T : Any, F : Feature<T>> FeatureRef<T, F>.color(color: Color): FeatureRef<T, F>
Link copied to clipboard
Link copied to clipboard
fun <T : Any, F : DraggableFeature<T>> FeatureRef<T, F>.draggable(constraint: (T) -> T? = null, listener: PointerEvent.(from: ViewPoint<T>, to: ViewPoint<T>) -> Unit? = null): FeatureRef<T, F>

Add drag to this feature

Link copied to clipboard
Link copied to clipboard
@JvmName(name = "draggableMultiLineFromPoints")
fun <T : Any> FeatureBuilder<T>.draggableMultiLine(points: List<T>, id: String? = null): FeatureRef<T, MultiLineFeature<T>>
Link copied to clipboard
fun <T : Any> FeatureBuilder<T>.draw(position: T, attributes: Attributes = Attributes.EMPTY, id: String? = null, draw: DrawScope.() -> Unit): FeatureRef<T, DrawFeature<T>>
Link copied to clipboard
fun <T : Any> FeatureDrawScope<T>.drawFeature(feature: Feature<T>, baseAttributes: Attributes)
Link copied to clipboard
@Composable
fun <T : Any> FeatureCanvas(state: CanvasState<T>, featureFlow: StateFlow<Map<String, Feature<T>>>, modifier: Modifier = Modifier, sampleDuration: Duration = 20.milliseconds, draw: FeatureDrawScope<T>.() -> Unit = {})

Create a canvas with extended functionality (e.g., drawing text)

Link copied to clipboard
fun <T : Any> FeatureSet<T>.forEachUntil(block: FeatureSet<T>.(ref: FeatureRef<T, *>, feature: Feature<T>) -> Boolean)

Recursively search for feature until function returns true

Link copied to clipboard
inline fun <T : Any, A> FeatureSet<T>.forEachWithAttribute(key: Attribute<A>, block: FeatureSet<T>.(ref: FeatureRef<T, *>, feature: Feature<T>, attribute: A) -> Unit)

Process all features with a given attribute from the one with highest z to lowest

Link copied to clipboard
inline fun <T : Any, A> FeatureSet<T>.forEachWithAttributeUntil(key: Attribute<A>, block: FeatureSet<T>.(ref: FeatureRef<T, *>, feature: Feature<T>, attribute: A) -> Boolean)
Link copied to clipboard
inline fun <T : Any, F : Feature<T>> FeatureSet<T>.forEachWithType(crossinline block: FeatureSet<T>.(ref: FeatureRef<T, F>, feature: F) -> Unit)
Link copied to clipboard
fun <T : Any> FeatureBuilder<T>.icon(position: T, image: ImageVector, size: DpSize = DpSize(image.defaultWidth, image.defaultHeight), attributes: Attributes = Attributes.EMPTY, id: String? = null): FeatureRef<T, VectorIconFeature<T>>
Link copied to clipboard
fun <T : Any> FeatureBuilder<T>.line(aCoordinates: T, bCoordinates: T, attributes: Attributes = Attributes.EMPTY, id: String? = null): FeatureRef<T, LineFeature<T>>
Link copied to clipboard
fun <T : Any, F : Feature<T>, V> FeatureRef<T, F>.modifyAttribute(key: Attribute<V>, value: V): FeatureRef<T, F>
Link copied to clipboard
fun <T : Any, F : Feature<T>> FeatureRef<T, F>.modifyAttributes(modification: AttributesBuilder<F>.() -> Unit): FeatureRef<T, F>
Link copied to clipboard
fun <T : Any> FeatureBuilder<T>.multiLine(points: List<T>, attributes: Attributes = Attributes.EMPTY, id: String? = null): FeatureRef<T, MultiLineFeature<T>>
Link copied to clipboard
fun <T : Any, F : DomainFeature<T>> FeatureRef<T, F>.onClick(onClick: PointerEvent.(click: ViewPoint<T>) -> Unit): FeatureRef<T, F>
fun <T : Any, F : DomainFeature<T>> FeatureRef<T, F>.onClick(pointerMatcher: PointerMatcher, keyboardModifiers: PointerKeyboardModifiers.() -> Boolean = { true }, onClick: PointerEvent.(click: ViewPoint<T>) -> Unit): FeatureRef<T, F>
Link copied to clipboard
fun <T : Any, F : DraggableFeature<T>> FeatureRef<T, F>.onDrag(listener: PointerEvent.(from: ViewPoint<T>, to: ViewPoint<T>) -> Unit): FeatureRef<T, F>
Link copied to clipboard
fun <T : Any, F : DomainFeature<T>> FeatureRef<T, F>.onHover(onClick: PointerEvent.(move: ViewPoint<T>) -> Unit): FeatureRef<T, F>
Link copied to clipboard
Link copied to clipboard
fun <T : Any> FeatureStore<T>.pixelMap(rectangle: Rectangle<T>, pixelMap: Structure2D<Color?>, attributes: Attributes = Attributes.EMPTY, id: String? = null): FeatureRef<T, PixelMapFeature<T>>
Link copied to clipboard
@Composable
fun <T : Any> FeatureSet<T>.pointerCache(): Map<PainterFeature<T>, Painter>
Link copied to clipboard
fun <T : Any> FeatureBuilder<T>.points(points: List<T>, attributes: Attributes = Attributes.EMPTY, id: String? = null): FeatureRef<T, PointsFeature<T>>
Link copied to clipboard
Link copied to clipboard
fun <T : Any> FeatureBuilder<T>.polygon(points: List<T>, attributes: Attributes = Attributes.EMPTY, id: String? = null): FeatureRef<T, PolygonFeature<T>>
Link copied to clipboard
fun <T : Any> CoordinateSpace<T>.Rectangle(viewPoint: ViewPoint<T>, size: DpSize): Rectangle<T>
Link copied to clipboard
fun <T : Any> FeatureBuilder<T>.rectangle(centerCoordinates: T, size: DpSize = DpSize(5.dp, 5.dp), attributes: Attributes = Attributes.EMPTY, id: String? = null): FeatureRef<T, RectangleFeature<T>>
Link copied to clipboard
fun <T : Any, F : Feature<T>> FeatureRef<T, F>.resolve(): F
Link copied to clipboard
fun <T : Any> FeatureBuilder<T>.scalableImage(box: Rectangle<T>, attributes: Attributes = Attributes.EMPTY, id: String? = null, painter: @Composable () -> Painter): FeatureRef<T, ScalableImageFeature<T>>
Link copied to clipboard
Link copied to clipboard
inline fun <T> Structure2D(rows: Int, columns: Int, initializer: (IntArray) -> T): Structure2D<T>
Link copied to clipboard
fun <T : Any> FeatureBuilder<T>.text(position: T, text: String, font: Font.() -> Unit = { size = 16f }, attributes: Attributes = Attributes.EMPTY, id: String? = null): FeatureRef<T, TextFeature<T>>
Link copied to clipboard
fun Uuid.toIndex(): String
Link copied to clipboard

Create a pretty tree-like representation of this feature group

Link copied to clipboard