From 348d762cf4c7c2e34ace21a0b5c636f1c285a7e9 Mon Sep 17 00:00:00 2001 From: Carlos Ballesteros Velasco Date: Wed, 8 Jul 2020 15:48:27 +0200 Subject: [PATCH] Feature/dsl.marker (#253) * Annotate View with KorDslMarker from KorMA. Proper put the right receiver on fill/stroke callbacks * Remove ViewsDslMarker, since all the receivers extends View that already have the KorDslMarker * Fixed explicit this inside View inheritors. Shouldn't be an issue on most userland code since people is probably not creating custom views * Bump korim version too --- gradle.properties | 3 ++- korge/build.gradle.kts | 2 ++ .../com/soywiz/korge/animate/Animate.kt | 4 ++-- .../com/soywiz/korge/input/MouseEvents.kt | 23 +++++++++++-------- .../korge/particle/ParticleEmitterView.kt | 2 +- .../com/soywiz/korge/tiled/TiledMapView.kt | 4 ++-- .../kotlin/com/soywiz/korge/ui/IconButton.kt | 4 ++-- .../kotlin/com/soywiz/korge/ui/TextButton.kt | 4 ++-- .../kotlin/com/soywiz/korge/ui/UIButton.kt | 4 ++-- .../kotlin/com/soywiz/korge/ui/UICheckBox.kt | 4 ++-- .../kotlin/com/soywiz/korge/ui/UIComboBox.kt | 10 ++++---- .../com/soywiz/korge/ui/UIProgressBar.kt | 4 ++-- .../kotlin/com/soywiz/korge/ui/UIScrollBar.kt | 4 ++-- .../com/soywiz/korge/ui/UIScrollableArea.kt | 12 +++++----- .../kotlin/com/soywiz/korge/ui/UIText.kt | 4 ++-- .../kotlin/com/soywiz/korge/view/Camera.kt | 2 +- .../kotlin/com/soywiz/korge/view/Circle.kt | 2 +- .../com/soywiz/korge/view/ClipContainer.kt | 4 ++-- .../kotlin/com/soywiz/korge/view/Container.kt | 4 ++-- .../kotlin/com/soywiz/korge/view/Ellipse.kt | 2 +- .../soywiz/korge/view/FixedSizeContainer.kt | 6 ++--- .../kotlin/com/soywiz/korge/view/Graphics.kt | 18 +++++++-------- .../kotlin/com/soywiz/korge/view/Image.kt | 4 ++-- .../kotlin/com/soywiz/korge/view/NinePatch.kt | 2 +- .../com/soywiz/korge/view/NinePatchEx.kt | 4 ++-- .../kotlin/com/soywiz/korge/view/RoundRect.kt | 6 ++--- .../kotlin/com/soywiz/korge/view/ScaleView.kt | 2 +- .../kotlin/com/soywiz/korge/view/SolidRect.kt | 6 ++--- .../kotlin/com/soywiz/korge/view/Sprite.kt | 6 ++--- .../kotlin/com/soywiz/korge/view/Text.kt | 2 +- .../kotlin/com/soywiz/korge/view/View.kt | 6 ++--- .../korge/view/effect/BlurEffectView.kt | 2 +- .../view/effect/ColorMatrixEffectView.kt | 2 +- .../korge/view/effect/Convolute3EffectView.kt | 2 +- .../soywiz/korge/view/effect/EffectView.kt | 2 +- .../view/effect/SwizzleColorsEffectView.kt | 2 +- .../korge/view/effect/WaveEffectView.kt | 2 +- .../com/soywiz/korge/view/tiles/TileMap.kt | 4 ++-- .../com/soywiz/korge/view/ViewHitTestTest.kt | 9 ++++---- 39 files changed, 97 insertions(+), 92 deletions(-) diff --git a/gradle.properties b/gradle.properties index bed2eddf15..416ec08837 100644 --- a/gradle.properties +++ b/gradle.properties @@ -8,7 +8,8 @@ version=1.13.9-SNAPSHOT klockVersion=1.11.13 korgwVersion=1.12.24 korauVersion=1.11.10 -korimVersion=1.12.28 +korimVersion=1.12.29 +kormaVersion=1.11.20 kryptoVersion=1.11.1 kloggerVersion=1.10.1 korinjectVersion=1.10.2 diff --git a/korge/build.gradle.kts b/korge/build.gradle.kts index ce073c28bb..b18a9efc66 100644 --- a/korge/build.gradle.kts +++ b/korge/build.gradle.kts @@ -17,6 +17,7 @@ korlibs { val klockVersion: String by project val korauVersion: String by project val korimVersion: String by project +val kormaVersion: String by project val korgwVersion: String by project val kryptoVersion: String by project val korinjectVersion: String by project @@ -25,6 +26,7 @@ val kloggerVersion: String by project dependencies { add("commonMainApi", "com.soywiz.korlibs.klock:klock:$klockVersion") add("commonMainApi", "com.soywiz.korlibs.korau:korau:$korauVersion") + add("commonMainApi", "com.soywiz.korlibs.korma:korma:$kormaVersion") add("commonMainApi", "com.soywiz.korlibs.korim:korim:$korimVersion") add("commonMainApi", "com.soywiz.korlibs.korgw:korgw:$korgwVersion") add("commonMainApi", "com.soywiz.korlibs.krypto:krypto:$kryptoVersion") diff --git a/korge/src/commonMain/kotlin/com/soywiz/korge/animate/Animate.kt b/korge/src/commonMain/kotlin/com/soywiz/korge/animate/Animate.kt index 0f28efbd23..d8267b1da9 100644 --- a/korge/src/commonMain/kotlin/com/soywiz/korge/animate/Animate.kt +++ b/korge/src/commonMain/kotlin/com/soywiz/korge/animate/Animate.kt @@ -186,8 +186,8 @@ class AnEmptyView(override val library: AnLibrary, override val symbol: AnSymbol class AnTextField(override val library: AnLibrary, override val symbol: AnTextFieldSymbol) : Container(), AnElement, IText, IHtml { private val textField = Text("", 16.0).apply { - textBounds.copyFrom(symbol.bounds) - html = symbol.initialHtml + textBounds.copyFrom(this@AnTextField.symbol.bounds) + html = this@AnTextField.symbol.initialHtml relayout() } diff --git a/korge/src/commonMain/kotlin/com/soywiz/korge/input/MouseEvents.kt b/korge/src/commonMain/kotlin/com/soywiz/korge/input/MouseEvents.kt index e266270276..c7f76da3e1 100644 --- a/korge/src/commonMain/kotlin/com/soywiz/korge/input/MouseEvents.kt +++ b/korge/src/commonMain/kotlin/com/soywiz/korge/input/MouseEvents.kt @@ -370,15 +370,18 @@ internal inline fun T?.doMouseEvent(prop: KProperty1 prop.get(mouse).add { launchImmediately(mouse.coroutineContext) { handler(it) } } } return this } - -inline fun T.onClick(noinline handler: suspend (MouseEvents) -> Unit) = doMouseEvent(MouseEvents::click, handler) -inline fun T.onOver(noinline handler: suspend (MouseEvents) -> Unit) = doMouseEvent(MouseEvents::over, handler) -inline fun T.onOut(noinline handler: suspend (MouseEvents) -> Unit) = doMouseEvent(MouseEvents::out, handler) -inline fun T.onDown(noinline handler: suspend (MouseEvents) -> Unit) = doMouseEvent(MouseEvents::down, handler) -inline fun T.onDownFromOutside(noinline handler: suspend (MouseEvents) -> Unit) = doMouseEvent(MouseEvents::downFromOutside, handler) -inline fun T.onUp(noinline handler: suspend (MouseEvents) -> Unit) = doMouseEvent(MouseEvents::up, handler) -inline fun T.onUpOutside(noinline handler: suspend (MouseEvents) -> Unit) = doMouseEvent(MouseEvents::upOutside, handler) -inline fun T.onUpAnywhere(noinline handler: suspend (MouseEvents) -> Unit) = doMouseEvent(MouseEvents::upAnywhere, handler) -inline fun T.onMove(noinline handler: suspend (MouseEvents) -> Unit) = doMouseEvent(MouseEvents::move, handler) +@DslMarker +@Target(AnnotationTarget.CLASS, AnnotationTarget.TYPE) +annotation class EventsDslMarker + +inline fun T.onClick(noinline handler: @EventsDslMarker suspend (MouseEvents) -> Unit) = doMouseEvent(MouseEvents::click, handler) +inline fun T.onOver(noinline handler: @EventsDslMarker suspend (MouseEvents) -> Unit) = doMouseEvent(MouseEvents::over, handler) +inline fun T.onOut(noinline handler: @EventsDslMarker suspend (MouseEvents) -> Unit) = doMouseEvent(MouseEvents::out, handler) +inline fun T.onDown(noinline handler: @EventsDslMarker suspend (MouseEvents) -> Unit) = doMouseEvent(MouseEvents::down, handler) +inline fun T.onDownFromOutside(noinline handler: @EventsDslMarker suspend (MouseEvents) -> Unit) = doMouseEvent(MouseEvents::downFromOutside, handler) +inline fun T.onUp(noinline handler: @EventsDslMarker suspend (MouseEvents) -> Unit) = doMouseEvent(MouseEvents::up, handler) +inline fun T.onUpOutside(noinline handler: @EventsDslMarker suspend (MouseEvents) -> Unit) = doMouseEvent(MouseEvents::upOutside, handler) +inline fun T.onUpAnywhere(noinline handler: @EventsDslMarker suspend (MouseEvents) -> Unit) = doMouseEvent(MouseEvents::upAnywhere, handler) +inline fun T.onMove(noinline handler: @EventsDslMarker suspend (MouseEvents) -> Unit) = doMouseEvent(MouseEvents::move, handler) fun ViewsScope.installMouseDebugExtensionOnce() = MouseEvents.installDebugExtensionOnce(views) diff --git a/korge/src/commonMain/kotlin/com/soywiz/korge/particle/ParticleEmitterView.kt b/korge/src/commonMain/kotlin/com/soywiz/korge/particle/ParticleEmitterView.kt index f4972d4b9b..2d7c995e32 100644 --- a/korge/src/commonMain/kotlin/com/soywiz/korge/particle/ParticleEmitterView.kt +++ b/korge/src/commonMain/kotlin/com/soywiz/korge/particle/ParticleEmitterView.kt @@ -9,7 +9,7 @@ import com.soywiz.korma.geom.* inline fun Container.particleEmitter( emitter: ParticleEmitter, emitterPos: IPoint = IPoint(), - callback: @ViewsDslMarker ParticleEmitterView.() -> Unit = {} + callback: ParticleEmitterView.() -> Unit = {} ) = ParticleEmitterView(emitter, emitterPos).addTo(this, callback) class ParticleEmitterView(val emitter: ParticleEmitter, emitterPos: IPoint = IPoint()) : View() { diff --git a/korge/src/commonMain/kotlin/com/soywiz/korge/tiled/TiledMapView.kt b/korge/src/commonMain/kotlin/com/soywiz/korge/tiled/TiledMapView.kt index c9c1b73024..2b81c3c689 100644 --- a/korge/src/commonMain/kotlin/com/soywiz/korge/tiled/TiledMapView.kt +++ b/korge/src/commonMain/kotlin/com/soywiz/korge/tiled/TiledMapView.kt @@ -7,7 +7,7 @@ import com.soywiz.korim.bitmap.* import com.soywiz.korim.color.* import com.soywiz.korma.geom.* -inline fun Container.tiledMapView(tiledMap: TiledMap, showShapes: Boolean = true, callback: @ViewsDslMarker TiledMapView.() -> Unit = {}) = +inline fun Container.tiledMapView(tiledMap: TiledMap, showShapes: Boolean = true, callback: TiledMapView.() -> Unit = {}) = TiledMapView(tiledMap, showShapes).addTo(this, callback) class TiledMapView(val tiledMap: TiledMap, showShapes: Boolean = true) : Container() { @@ -34,7 +34,7 @@ class TiledMapView(val tiledMap: TiledMap, showShapes: Boolean = true) : Contain } is TiledMap.Layer.Objects.Rect -> { if (gid != null) { - val tileTex = tiledMap.tileset[gid] ?: Bitmaps.transparent + val tileTex = this@TiledMapView.tiledMap.tileset[gid] ?: Bitmaps.transparent //println("tileTex[gid=$gid]: $tileTex!") shouldShow = true image(tileTex) diff --git a/korge/src/commonMain/kotlin/com/soywiz/korge/ui/IconButton.kt b/korge/src/commonMain/kotlin/com/soywiz/korge/ui/IconButton.kt index 3278f3ffe3..bb82cc69cd 100644 --- a/korge/src/commonMain/kotlin/com/soywiz/korge/ui/IconButton.kt +++ b/korge/src/commonMain/kotlin/com/soywiz/korge/ui/IconButton.kt @@ -8,7 +8,7 @@ inline fun Container.iconButton( height: Number, skin: UISkin = defaultUISkin, iconSkin: IconSkin = defaultCheckSkin, - block: @ViewsDslMarker UIButton.() -> Unit = {} + block: UIButton.() -> Unit = {} ): IconButton = iconButton(width.toDouble(), height.toDouble(), skin, iconSkin, block) inline fun Container.iconButton( @@ -16,7 +16,7 @@ inline fun Container.iconButton( height: Double = 64.0, skin: UISkin = defaultUISkin, iconSkin: IconSkin = defaultCheckSkin, - block: @ViewsDslMarker UIButton.() -> Unit = {} + block: UIButton.() -> Unit = {} ): IconButton = IconButton(width, height, skin, iconSkin).addTo(this).apply(block) open class IconButton( diff --git a/korge/src/commonMain/kotlin/com/soywiz/korge/ui/TextButton.kt b/korge/src/commonMain/kotlin/com/soywiz/korge/ui/TextButton.kt index e0f10f083d..57ce4e0181 100644 --- a/korge/src/commonMain/kotlin/com/soywiz/korge/ui/TextButton.kt +++ b/korge/src/commonMain/kotlin/com/soywiz/korge/ui/TextButton.kt @@ -12,7 +12,7 @@ inline fun Container.textButton( text: String = "Button", skin: UISkin = defaultUISkin, textFont: Html.FontFace = defaultUIFont, - block: @ViewsDslMarker TextButton.() -> Unit = {} + block: TextButton.() -> Unit = {} ): TextButton = textButton(width.toDouble(), height.toDouble(), text, skin, textFont, block) inline fun Container.textButton( @@ -21,7 +21,7 @@ inline fun Container.textButton( text: String = "Button", skin: UISkin = defaultUISkin, textFont: Html.FontFace = defaultUIFont, - block: @ViewsDslMarker TextButton.() -> Unit = {} + block: TextButton.() -> Unit = {} ): TextButton = TextButton(width, height, text, skin, textFont).addTo(this).apply(block) open class TextButton( diff --git a/korge/src/commonMain/kotlin/com/soywiz/korge/ui/UIButton.kt b/korge/src/commonMain/kotlin/com/soywiz/korge/ui/UIButton.kt index ab72e9bfff..c758be5e2e 100644 --- a/korge/src/commonMain/kotlin/com/soywiz/korge/ui/UIButton.kt +++ b/korge/src/commonMain/kotlin/com/soywiz/korge/ui/UIButton.kt @@ -8,14 +8,14 @@ inline fun Container.uiButton( width: Number, height: Number, skin: UISkin = defaultUISkin, - block: @ViewsDslMarker UIButton.() -> Unit = {} + block: UIButton.() -> Unit = {} ): UIButton = uiButton(width.toDouble(), height.toDouble(), skin, block) inline fun Container.uiButton( width: Double = 128.0, height: Double = 64.0, skin: UISkin = defaultUISkin, - block: @ViewsDslMarker UIButton.() -> Unit = {} + block: UIButton.() -> Unit = {} ): UIButton = UIButton(width, height, skin).addTo(this).apply(block) open class UIButton( diff --git a/korge/src/commonMain/kotlin/com/soywiz/korge/ui/UICheckBox.kt b/korge/src/commonMain/kotlin/com/soywiz/korge/ui/UICheckBox.kt index 4e904c480b..26229cec45 100644 --- a/korge/src/commonMain/kotlin/com/soywiz/korge/ui/UICheckBox.kt +++ b/korge/src/commonMain/kotlin/com/soywiz/korge/ui/UICheckBox.kt @@ -16,7 +16,7 @@ inline fun Container.uiCheckBox( textFont: Html.FontFace = defaultUIFont, skin: UISkin = defaultUISkin, checkIcon: IconSkin = defaultCheckSkin, - block: @ViewsDslMarker UICheckBox.() -> Unit = {} + block: UICheckBox.() -> Unit = {} ): UICheckBox = uiCheckBox(width.toDouble(), height.toDouble(), checked, text, textFont, skin, checkIcon, block) inline fun Container.uiCheckBox( @@ -27,7 +27,7 @@ inline fun Container.uiCheckBox( textFont: Html.FontFace = defaultUIFont, skin: UISkin = defaultUISkin, checkIcon: IconSkin = defaultCheckSkin, - block: @ViewsDslMarker UICheckBox.() -> Unit = {} + block: UICheckBox.() -> Unit = {} ): UICheckBox = UICheckBox(width, height, checked, text, textFont, skin, checkIcon).addTo(this).apply(block) open class UICheckBox( diff --git a/korge/src/commonMain/kotlin/com/soywiz/korge/ui/UIComboBox.kt b/korge/src/commonMain/kotlin/com/soywiz/korge/ui/UIComboBox.kt index be4a719037..09778b3f29 100644 --- a/korge/src/commonMain/kotlin/com/soywiz/korge/ui/UIComboBox.kt +++ b/korge/src/commonMain/kotlin/com/soywiz/korge/ui/UIComboBox.kt @@ -13,7 +13,7 @@ inline fun Container.uiComboBox( items: List, verticalScroll: Boolean = true, skin: ComboBoxSkin = defaultComboBoxSkin, - block: @ViewsDslMarker UIComboBox.() -> Unit = {} + block: UIComboBox.() -> Unit = {} ) = uiComboBox(width.toDouble(), height.toDouble(), selectedIndex, items, verticalScroll, skin, block) inline fun Container.uiComboBox( @@ -23,7 +23,7 @@ inline fun Container.uiComboBox( items: List, verticalScroll: Boolean = true, skin: ComboBoxSkin = defaultComboBoxSkin, - block: @ViewsDslMarker UIComboBox.() -> Unit = {} + block: UIComboBox.() -> Unit = {} ) = UIComboBox(width, height, selectedIndex, items, verticalScroll, skin).addTo(this).apply(block) open class UIComboBox( @@ -90,10 +90,10 @@ open class UIComboBox( itemsView.container.removeChildren() for ((index, item) in items.withIndex()) { itemsView.container.textButton(width - 32, itemHeight, item.toString(), skin.itemSkin, skin.textFont) { - position(0, index * itemHeight) + position(0, index * this@UIComboBox.itemHeight) onClick { - showItems = false - selectedIndex = index + this@UIComboBox.showItems = false + this@UIComboBox.selectedIndex = index } } } diff --git a/korge/src/commonMain/kotlin/com/soywiz/korge/ui/UIProgressBar.kt b/korge/src/commonMain/kotlin/com/soywiz/korge/ui/UIProgressBar.kt index 7c5f40f1d5..ef4c7bbfca 100644 --- a/korge/src/commonMain/kotlin/com/soywiz/korge/ui/UIProgressBar.kt +++ b/korge/src/commonMain/kotlin/com/soywiz/korge/ui/UIProgressBar.kt @@ -6,7 +6,7 @@ import com.soywiz.korge.view.* inline fun Container.uiProgressBar( width: Number, height: Number, current: Number, maximum: Number, skin: UISkin = defaultUISkin, - block: @ViewsDslMarker UIProgressBar.() -> Unit = {} + block: UIProgressBar.() -> Unit = {} ): UIProgressBar = uiProgressBar(width.toDouble(), height.toDouble(), current.toDouble(), maximum.toDouble(), skin, block) inline fun Container.uiProgressBar( @@ -15,7 +15,7 @@ inline fun Container.uiProgressBar( current: Double = 0.0, maximum: Double = 1.0, skin: UISkin = defaultUISkin, - block: @ViewsDslMarker UIProgressBar.() -> Unit = {} + block: UIProgressBar.() -> Unit = {} ): UIProgressBar = UIProgressBar(width, height, current, maximum, skin).addTo(this).apply(block) open class UIProgressBar( diff --git a/korge/src/commonMain/kotlin/com/soywiz/korge/ui/UIScrollBar.kt b/korge/src/commonMain/kotlin/com/soywiz/korge/ui/UIScrollBar.kt index 864ca71b20..da40e102b1 100644 --- a/korge/src/commonMain/kotlin/com/soywiz/korge/ui/UIScrollBar.kt +++ b/korge/src/commonMain/kotlin/com/soywiz/korge/ui/UIScrollBar.kt @@ -13,7 +13,7 @@ inline fun Container.uiScrollBar( width: Number, height: Number, current: Number, pageSize: Number, totalSize: Number, buttonSize: Number, stepSize: Number, direction: Direction = if (width.toDouble() > height.toDouble()) Direction.Horizontal else Direction.Vertical, skin: ScrollBarSkin = if (direction == Direction.Horizontal) defaultHorScrollBarSkin else defaultVerScrollBarSkin, - block: @ViewsDslMarker UIScrollBar.() -> Unit = {} + block: UIScrollBar.() -> Unit = {} ): UIScrollBar = uiScrollBar(width.toDouble(), height.toDouble(), current.toDouble(), pageSize.toDouble(), totalSize.toDouble(), buttonSize.toDouble(), stepSize.toDouble(), direction, skin, block) @@ -27,7 +27,7 @@ inline fun Container.uiScrollBar( stepSize: Double = pageSize / 10.0, direction: Direction = Direction.auto(width, height), skin: ScrollBarSkin = if (direction == Direction.Horizontal) defaultHorScrollBarSkin else defaultVerScrollBarSkin, - block: @ViewsDslMarker UIScrollBar.() -> Unit = {} + block: UIScrollBar.() -> Unit = {} ): UIScrollBar = UIScrollBar(width, height, current, pageSize, totalSize, buttonSize, stepSize, direction, skin).addTo(this).apply(block) open class UIScrollBar( diff --git a/korge/src/commonMain/kotlin/com/soywiz/korge/ui/UIScrollableArea.kt b/korge/src/commonMain/kotlin/com/soywiz/korge/ui/UIScrollableArea.kt index 30f490c237..c59b8952fb 100644 --- a/korge/src/commonMain/kotlin/com/soywiz/korge/ui/UIScrollableArea.kt +++ b/korge/src/commonMain/kotlin/com/soywiz/korge/ui/UIScrollableArea.kt @@ -13,8 +13,8 @@ inline fun Container.uiScrollableArea( horizontalScroll: Boolean = true, horSkin: ScrollBarSkin = defaultHorScrollBarSkin, verSkin: ScrollBarSkin = defaultVerScrollBarSkin, - config: @ViewsDslMarker UIScrollableArea.() -> Unit = {}, - block: @ViewsDslMarker Container.() -> Unit = {} + config: UIScrollableArea.() -> Unit = {}, + block: Container.() -> Unit = {} ): UIScrollableArea = uiScrollableArea( width.toDouble(), height.toDouble(), contentWidth.toDouble(), contentHeight.toDouble(), buttonSize.toDouble(), verticalScroll, horizontalScroll, horSkin, verSkin, config, block @@ -30,8 +30,8 @@ inline fun Container.uiScrollableArea( horizontalScroll: Boolean = true, horSkin: ScrollBarSkin = defaultHorScrollBarSkin, verSkin: ScrollBarSkin = defaultVerScrollBarSkin, - config: @ViewsDslMarker UIScrollableArea.() -> Unit = {}, - block: @ViewsDslMarker Container.() -> Unit = {} + config: UIScrollableArea.() -> Unit = {}, + block: Container.() -> Unit = {} ): UIScrollableArea = UIScrollableArea(width, height, contentWidth, contentHeight, buttonSize, verticalScroll, horizontalScroll, horSkin, verSkin) .addTo(this).apply(config).also { block(it.container) } @@ -65,8 +65,8 @@ open class UIScrollableArea( val clipContainer = clipContainer(viewportWidth, viewportHeight) val container = clipContainer.fixedSizeContainer(contentWidth, contentHeight) - val horScrollBar = uiScrollBar(width, buttonSize, skin = horSkin) { onChange { onMoved() } } - val verScrollBar = uiScrollBar(buttonSize, height, skin = verSkin) { onChange { onMoved() } } + val horScrollBar = uiScrollBar(width, buttonSize, skin = horSkin) { onChange { this@UIScrollableArea.onMoved() } } + val verScrollBar = uiScrollBar(buttonSize, height, skin = verSkin) { onChange { this@UIScrollableArea.onMoved() } } init { calculateSizes() diff --git a/korge/src/commonMain/kotlin/com/soywiz/korge/ui/UIText.kt b/korge/src/commonMain/kotlin/com/soywiz/korge/ui/UIText.kt index f62911d052..73fca1141a 100644 --- a/korge/src/commonMain/kotlin/com/soywiz/korge/ui/UIText.kt +++ b/korge/src/commonMain/kotlin/com/soywiz/korge/ui/UIText.kt @@ -9,7 +9,7 @@ import com.soywiz.korma.geom.* inline fun Container.uiText( text: String, width: Number, height: Number, skin: TextSkin = defaultTextSkin, - block: @ViewsDslMarker UIText.() -> Unit = {} + block: UIText.() -> Unit = {} ): UIText = uiText(text, width.toDouble(), height.toDouble(), skin, block) inline fun Container.uiText( @@ -17,7 +17,7 @@ inline fun Container.uiText( width: Double = 128.0, height: Double = 64.0, skin: TextSkin = defaultTextSkin, - block: @ViewsDslMarker UIText.() -> Unit = {} + block: UIText.() -> Unit = {} ): UIText = UIText(text, width, height, skin).addTo(this).apply(block) class UIText( diff --git a/korge/src/commonMain/kotlin/com/soywiz/korge/view/Camera.kt b/korge/src/commonMain/kotlin/com/soywiz/korge/view/Camera.kt index 30b06ee587..18382f3e0b 100644 --- a/korge/src/commonMain/kotlin/com/soywiz/korge/view/Camera.kt +++ b/korge/src/commonMain/kotlin/com/soywiz/korge/view/Camera.kt @@ -8,7 +8,7 @@ import com.soywiz.korma.interpolation.* /** * Creates a new [Camera] and attaches to [this] [Container]. The [callback] argument is called with the [Camera] injected as this to be able to configure the camera. */ -inline fun Container.camera(callback: @ViewsDslMarker Camera.() -> Unit = {}): Camera = Camera().addTo(this, callback) +inline fun Container.camera(callback: Camera.() -> Unit = {}): Camera = Camera().addTo(this, callback) /** * A [Camera] is a [Container] that allows to center its position using [setTo] and [tweenTo] methods. diff --git a/korge/src/commonMain/kotlin/com/soywiz/korge/view/Circle.kt b/korge/src/commonMain/kotlin/com/soywiz/korge/view/Circle.kt index 965b54ea41..c6ca4b1298 100644 --- a/korge/src/commonMain/kotlin/com/soywiz/korge/view/Circle.kt +++ b/korge/src/commonMain/kotlin/com/soywiz/korge/view/Circle.kt @@ -44,7 +44,7 @@ open class Circle( private fun updateGraphics() { clear() fill(Colors.WHITE) { - circle(radius, radius, radius) + circle(this@Circle.radius, this@Circle.radius, this@Circle.radius) } } } diff --git a/korge/src/commonMain/kotlin/com/soywiz/korge/view/ClipContainer.kt b/korge/src/commonMain/kotlin/com/soywiz/korge/view/ClipContainer.kt index c11eb119c1..7160c659de 100644 --- a/korge/src/commonMain/kotlin/com/soywiz/korge/view/ClipContainer.kt +++ b/korge/src/commonMain/kotlin/com/soywiz/korge/view/ClipContainer.kt @@ -1,10 +1,10 @@ package com.soywiz.korge.view @Deprecated("Kotlin/Native boxes inline+Number") -inline fun Container.clipContainer(width: Number, height: Number, callback: @ViewsDslMarker ClipContainer.() -> Unit = {}) = +inline fun Container.clipContainer(width: Number, height: Number, callback: ClipContainer.() -> Unit = {}) = clipContainer(width.toDouble(), height.toDouble(), callback) -inline fun Container.clipContainer(width: Double, height: Double, callback: @ViewsDslMarker ClipContainer.() -> Unit = {}) = +inline fun Container.clipContainer(width: Double, height: Double, callback: ClipContainer.() -> Unit = {}) = ClipContainer(width, height).addTo(this, callback) open class ClipContainer( diff --git a/korge/src/commonMain/kotlin/com/soywiz/korge/view/Container.kt b/korge/src/commonMain/kotlin/com/soywiz/korge/view/Container.kt index 9eeed8db55..c89d06d1d6 100644 --- a/korge/src/commonMain/kotlin/com/soywiz/korge/view/Container.kt +++ b/korge/src/commonMain/kotlin/com/soywiz/korge/view/Container.kt @@ -7,7 +7,7 @@ import com.soywiz.korge.render.* import com.soywiz.korma.geom.* /** Creates a new [Container], allowing to configure with [callback], and attaches the newly created container to the receiver this [Container] */ -inline fun Container.container(callback: @ViewsDslMarker Container.() -> Unit = {}) = +inline fun Container.container(callback: Container.() -> Unit = {}) = Container().addTo(this, callback) // For Flash compatibility @@ -232,5 +232,5 @@ operator fun View?.plusAssign(view: View?) { if (view != null) container?.addChild(view) } -inline fun T.addTo(instance: Container, callback: @ViewsDslMarker T.() -> Unit = {}) = +inline fun T.addTo(instance: Container, callback: T.() -> Unit = {}) = this.addTo(instance).apply(callback) diff --git a/korge/src/commonMain/kotlin/com/soywiz/korge/view/Ellipse.kt b/korge/src/commonMain/kotlin/com/soywiz/korge/view/Ellipse.kt index a4d45f3e31..1b920e12bb 100644 --- a/korge/src/commonMain/kotlin/com/soywiz/korge/view/Ellipse.kt +++ b/korge/src/commonMain/kotlin/com/soywiz/korge/view/Ellipse.kt @@ -48,7 +48,7 @@ open class Ellipse( clear() fill(Colors.WHITE) { //ellipse(radiusX, radiusY, radiusX, radiusY) - ellipse(0.0, 0.0, radiusX, radiusY) + ellipse(0.0, 0.0, this@Ellipse.radiusX, this@Ellipse.radiusY) } } } diff --git a/korge/src/commonMain/kotlin/com/soywiz/korge/view/FixedSizeContainer.kt b/korge/src/commonMain/kotlin/com/soywiz/korge/view/FixedSizeContainer.kt index 3c54642c1b..47703afef1 100644 --- a/korge/src/commonMain/kotlin/com/soywiz/korge/view/FixedSizeContainer.kt +++ b/korge/src/commonMain/kotlin/com/soywiz/korge/view/FixedSizeContainer.kt @@ -4,14 +4,14 @@ import com.soywiz.korge.render.* import com.soywiz.korio.util.* import com.soywiz.korma.geom.* -inline fun Container.fixedSizeContainer(width: Double, height: Double, clip: Boolean = false, callback: @ViewsDslMarker FixedSizeContainer.() -> Unit = {}) = +inline fun Container.fixedSizeContainer(width: Double, height: Double, clip: Boolean = false, callback: FixedSizeContainer.() -> Unit = {}) = FixedSizeContainer(width, height, clip).addTo(this, callback) -inline fun Container.fixedSizeContainer(width: Int, height: Int, clip: Boolean = false, callback: @ViewsDslMarker FixedSizeContainer.() -> Unit = {}) = +inline fun Container.fixedSizeContainer(width: Int, height: Int, clip: Boolean = false, callback: FixedSizeContainer.() -> Unit = {}) = FixedSizeContainer(width.toDouble(), height.toDouble(), clip).addTo(this, callback) @Deprecated("Kotlin/Native boxes inline+Number") -inline fun Container.fixedSizeContainer(width: Number, height: Number, clip: Boolean = false, callback: @ViewsDslMarker FixedSizeContainer.() -> Unit = {}) = +inline fun Container.fixedSizeContainer(width: Number, height: Number, clip: Boolean = false, callback: FixedSizeContainer.() -> Unit = {}) = fixedSizeContainer(width.toDouble(), height.toDouble(), clip, callback) diff --git a/korge/src/commonMain/kotlin/com/soywiz/korge/view/Graphics.kt b/korge/src/commonMain/kotlin/com/soywiz/korge/view/Graphics.kt index 60466c4ca8..bebce7ebb5 100644 --- a/korge/src/commonMain/kotlin/com/soywiz/korge/view/Graphics.kt +++ b/korge/src/commonMain/kotlin/com/soywiz/korge/view/Graphics.kt @@ -86,11 +86,11 @@ open class Graphics @JvmOverloads constructor( override fun moveTo(x: Double, y: Double) { currentPath.moveTo(x, y) } override fun quadTo(cx: Double, cy: Double, ax: Double, ay: Double) { currentPath.quadTo(cx, cy, ax, ay) } - inline fun fill(color: RGBA, alpha: Double = 1.0, callback: () -> Unit) = fill(toColorFill(color, alpha), callback) + inline fun fill(color: RGBA, alpha: Double = 1.0, callback: VectorBuilder.() -> Unit) = fill(toColorFill(color, alpha), callback) @Deprecated("Kotlin/Native boxes inline+Number") - inline fun fill(color: RGBA, alpha: Number, callback: () -> Unit) = fill(color, alpha.toDouble(), callback) + inline fun fill(color: RGBA, alpha: Number, callback: VectorBuilder.() -> Unit) = fill(color, alpha.toDouble(), callback) - inline fun fill(paint: Paint, callback: () -> Unit) { + inline fun fill(paint: Paint, callback: VectorBuilder.() -> Unit) { beginFill(paint) try { callback() @@ -100,7 +100,7 @@ open class Graphics @JvmOverloads constructor( } inline fun stroke( - color: RGBA, info: Context2d.StrokeInfo, callback: () -> Unit + color: RGBA, info: Context2d.StrokeInfo, callback: VectorBuilder.() -> Unit ) = stroke( ColorPaint(color), info, callback @@ -109,7 +109,7 @@ open class Graphics @JvmOverloads constructor( inline fun stroke( paint: Paint, info: Context2d.StrokeInfo, - callback: () -> Unit + callback: VectorBuilder.() -> Unit ) { beginStroke(paint, info) try { @@ -123,7 +123,7 @@ open class Graphics @JvmOverloads constructor( fill: Paint, stroke: Paint, strokeInfo: Context2d.StrokeInfo, - callback: () -> Unit + callback: VectorBuilder.() -> Unit ) { beginFillStroke(fill, stroke, strokeInfo) try { @@ -251,9 +251,9 @@ open class Graphics @JvmOverloads constructor( (bounds.height * renderedAtScaleY).toInt().coerceAtLeast(1) ) image.context2d { - scale(renderedAtScaleX, renderedAtScaleY) - translate(-bounds.x, -bounds.y) - compoundShape.draw(this) + scale(this@Graphics.renderedAtScaleX, this@Graphics.renderedAtScaleY) + translate(-this@Graphics.bounds.x, -this@Graphics.bounds.y) + this@Graphics.compoundShape.draw(this) } this.bitmap = image.slice() } diff --git a/korge/src/commonMain/kotlin/com/soywiz/korge/view/Image.kt b/korge/src/commonMain/kotlin/com/soywiz/korge/view/Image.kt index 33ec72c272..d45366cab5 100644 --- a/korge/src/commonMain/kotlin/com/soywiz/korge/view/Image.kt +++ b/korge/src/commonMain/kotlin/com/soywiz/korge/view/Image.kt @@ -4,11 +4,11 @@ import com.soywiz.korim.bitmap.* import com.soywiz.korma.geom.vector.* inline fun Container.image( - texture: BmpSlice, anchorX: Double = 0.0, anchorY: Double = 0.0, callback: @ViewsDslMarker Image.() -> Unit = {} + texture: BmpSlice, anchorX: Double = 0.0, anchorY: Double = 0.0, callback: Image.() -> Unit = {} ): Image = Image(texture, anchorX, anchorY).addTo(this, callback) inline fun Container.image( - texture: Bitmap, anchorX: Double = 0.0, anchorY: Double = 0.0, callback: @ViewsDslMarker Image.() -> Unit = {} + texture: Bitmap, anchorX: Double = 0.0, anchorY: Double = 0.0, callback: Image.() -> Unit = {} ): Image = Image(texture, anchorX, anchorY).addTo(this, callback) //typealias Sprite = Image diff --git a/korge/src/commonMain/kotlin/com/soywiz/korge/view/NinePatch.kt b/korge/src/commonMain/kotlin/com/soywiz/korge/view/NinePatch.kt index 9803b9db10..942f79d34c 100644 --- a/korge/src/commonMain/kotlin/com/soywiz/korge/view/NinePatch.kt +++ b/korge/src/commonMain/kotlin/com/soywiz/korge/view/NinePatch.kt @@ -7,7 +7,7 @@ import kotlin.math.* inline fun Container.ninePatch( tex: BmpSlice, width: Double, height: Double, left: Double, top: Double, right: Double, bottom: Double, - callback: @ViewsDslMarker NinePatch.() -> Unit = {} + callback: NinePatch.() -> Unit = {} ) = NinePatch(tex, width, height, left, top, right, bottom).addTo(this, callback) class NinePatch( diff --git a/korge/src/commonMain/kotlin/com/soywiz/korge/view/NinePatchEx.kt b/korge/src/commonMain/kotlin/com/soywiz/korge/view/NinePatchEx.kt index 0e768a51fe..e7af4c0add 100644 --- a/korge/src/commonMain/kotlin/com/soywiz/korge/view/NinePatchEx.kt +++ b/korge/src/commonMain/kotlin/com/soywiz/korge/view/NinePatchEx.kt @@ -6,12 +6,12 @@ import com.soywiz.korim.bitmap.* import com.soywiz.korma.geom.* inline fun Container.ninePatch( - tex: NinePatchEx.Tex, width: Double, height: Double, callback: @ViewsDslMarker NinePatchEx.() -> Unit + tex: NinePatchEx.Tex, width: Double, height: Double, callback: NinePatchEx.() -> Unit ) = NinePatchEx(tex, width, height).addTo(this, callback) inline fun Container.ninePatch( ninePatch: NinePatchBitmap32, width: Double = ninePatch.dwidth, height: Double = ninePatch.dheight, - callback: @ViewsDslMarker NinePatchEx.() -> Unit + callback: NinePatchEx.() -> Unit ) = NinePatchEx(ninePatch, width, height).addTo(this, callback) class NinePatchEx( diff --git a/korge/src/commonMain/kotlin/com/soywiz/korge/view/RoundRect.kt b/korge/src/commonMain/kotlin/com/soywiz/korge/view/RoundRect.kt index 6bb4bcacdb..2ec3502512 100644 --- a/korge/src/commonMain/kotlin/com/soywiz/korge/view/RoundRect.kt +++ b/korge/src/commonMain/kotlin/com/soywiz/korge/view/RoundRect.kt @@ -16,7 +16,7 @@ inline fun Container.roundRect( ry: Number = rx, color: RGBA = Colors.WHITE, autoScaling: Boolean = true, - callback: @ViewsDslMarker RoundRect.() -> Unit = {} + callback: RoundRect.() -> Unit = {} ) = roundRect(width.toDouble(), height.toDouble(), rx.toDouble(), ry.toDouble(), color, autoScaling, callback) inline fun Container.roundRect( @@ -26,7 +26,7 @@ inline fun Container.roundRect( ry: Double = rx, color: RGBA = Colors.WHITE, autoScaling: Boolean = true, - callback: @ViewsDslMarker RoundRect.() -> Unit = {} + callback: RoundRect.() -> Unit = {} ) = RoundRect(width, height, rx, ry, color, autoScaling).addTo(this, callback) /** @@ -63,7 +63,7 @@ class RoundRect( private fun updateGraphics() { clear() fill(Colors.WHITE) { - roundRect(0, 0, width, height, rx, ry) + roundRect(0.0, 0.0, this@RoundRect.width, this@RoundRect.height, this@RoundRect.rx, this@RoundRect.ry) } } } diff --git a/korge/src/commonMain/kotlin/com/soywiz/korge/view/ScaleView.kt b/korge/src/commonMain/kotlin/com/soywiz/korge/view/ScaleView.kt index d03d1b5f37..4ebb6cd044 100644 --- a/korge/src/commonMain/kotlin/com/soywiz/korge/view/ScaleView.kt +++ b/korge/src/commonMain/kotlin/com/soywiz/korge/view/ScaleView.kt @@ -4,7 +4,7 @@ import com.soywiz.korge.render.* inline fun Container.scaleView( width: Int, height: Int, scale: Double = 2.0, filtering: Boolean = false, - callback: @ViewsDslMarker Container.() -> Unit = {} + callback: Container.() -> Unit = {} ) = ScaleView(width, height, scale, filtering).addTo(this, callback) class ScaleView(width: Int, height: Int, scale: Double = 2.0, var filtering: Boolean = false) : diff --git a/korge/src/commonMain/kotlin/com/soywiz/korge/view/SolidRect.kt b/korge/src/commonMain/kotlin/com/soywiz/korge/view/SolidRect.kt index f1fc7d499b..151a2c2de6 100644 --- a/korge/src/commonMain/kotlin/com/soywiz/korge/view/SolidRect.kt +++ b/korge/src/commonMain/kotlin/com/soywiz/korge/view/SolidRect.kt @@ -4,13 +4,13 @@ import com.soywiz.korim.color.* /** Creates a new [SolidRect] of size [width]x[height] and color [color] and allows you to configure it via [callback]. Once created, it is added to this receiver [Container]. */ @Deprecated("Kotlin/Native boxes inline+Number") -inline fun Container.solidRect(width: Number, height: Number, color: RGBA, callback: @ViewsDslMarker SolidRect.() -> Unit = {}) +inline fun Container.solidRect(width: Number, height: Number, color: RGBA, callback: SolidRect.() -> Unit = {}) = solidRect(width.toDouble(), height.toDouble(), color, callback) -inline fun Container.solidRect(width: Double, height: Double, color: RGBA, callback: @ViewsDslMarker SolidRect.() -> Unit = {}) +inline fun Container.solidRect(width: Double, height: Double, color: RGBA, callback: SolidRect.() -> Unit = {}) = SolidRect(width, height, color).addTo(this, callback) -inline fun Container.solidRect(width: Int, height: Int, color: RGBA, callback: @ViewsDslMarker SolidRect.() -> Unit = {}) +inline fun Container.solidRect(width: Int, height: Int, color: RGBA, callback: SolidRect.() -> Unit = {}) = SolidRect(width.toDouble(), height.toDouble(), color).addTo(this, callback) /** diff --git a/korge/src/commonMain/kotlin/com/soywiz/korge/view/Sprite.kt b/korge/src/commonMain/kotlin/com/soywiz/korge/view/Sprite.kt index 80c73f1873..b5746980d1 100644 --- a/korge/src/commonMain/kotlin/com/soywiz/korge/view/Sprite.kt +++ b/korge/src/commonMain/kotlin/com/soywiz/korge/view/Sprite.kt @@ -7,15 +7,15 @@ import com.soywiz.korio.async.Signal import com.soywiz.korma.geom.vector.VectorPath inline fun Container.sprite( - initialAnimation: SpriteAnimation, anchorX: Double = 0.0, anchorY: Double = 0.0, callback: @ViewsDslMarker Sprite.() -> Unit = {} + initialAnimation: SpriteAnimation, anchorX: Double = 0.0, anchorY: Double = 0.0, callback: Sprite.() -> Unit = {} ): Sprite = Sprite(initialAnimation, anchorX, anchorY).addTo(this, callback) inline fun Container.sprite( - texture: BmpSlice = Bitmaps.white, anchorX: Double = 0.0, anchorY: Double = 0.0, callback: @ViewsDslMarker Sprite.() -> Unit = {} + texture: BmpSlice = Bitmaps.white, anchorX: Double = 0.0, anchorY: Double = 0.0, callback: Sprite.() -> Unit = {} ): Sprite = Sprite(texture, anchorX, anchorY).addTo(this, callback) inline fun Container.sprite( - texture: Bitmap, anchorX: Double = 0.0, anchorY: Double = 0.0, callback: @ViewsDslMarker Sprite.() -> Unit = {} + texture: Bitmap, anchorX: Double = 0.0, anchorY: Double = 0.0, callback: Sprite.() -> Unit = {} ): Sprite = Sprite(texture, anchorX, anchorY).addTo(this, callback) /** diff --git a/korge/src/commonMain/kotlin/com/soywiz/korge/view/Text.kt b/korge/src/commonMain/kotlin/com/soywiz/korge/view/Text.kt index c8a1e173f9..d637f15a75 100644 --- a/korge/src/commonMain/kotlin/com/soywiz/korge/view/Text.kt +++ b/korge/src/commonMain/kotlin/com/soywiz/korge/view/Text.kt @@ -14,7 +14,7 @@ inline fun Container.text( textSize: Double = 16.0, color: RGBA = Colors.WHITE, font: BitmapFont = Fonts.defaultFont, - callback: @ViewsDslMarker Text.() -> Unit = {} + callback: Text.() -> Unit = {} ) = Text(text, textSize = textSize, color = color, font = font).addTo(this, callback) class Text : View(), IText, IHtml { diff --git a/korge/src/commonMain/kotlin/com/soywiz/korge/view/View.kt b/korge/src/commonMain/kotlin/com/soywiz/korge/view/View.kt index 9320f11dbc..f33fa5e506 100644 --- a/korge/src/commonMain/kotlin/com/soywiz/korge/view/View.kt +++ b/korge/src/commonMain/kotlin/com/soywiz/korge/view/View.kt @@ -16,6 +16,7 @@ import com.soywiz.korim.vector.* import com.soywiz.korio.lang.* import com.soywiz.korio.util.* import com.soywiz.korio.util.encoding.* +import com.soywiz.korma.annotations.* import com.soywiz.korma.geom.* import com.soywiz.korma.geom.shape.* import com.soywiz.korma.geom.vector.* @@ -24,10 +25,6 @@ import kotlin.math.* import kotlin.native.concurrent.* import kotlin.reflect.* -@DslMarker -@Target(AnnotationTarget.CLASS, AnnotationTarget.TYPE) -annotation class ViewsDslMarker - @Deprecated("", replaceWith = ReplaceWith("View")) typealias DisplayObject = View @@ -58,6 +55,7 @@ typealias DisplayObject = View * For views with [Updatable] components, [View] include a [speed] property where 1 is 1x and 2 is 2x the speed. */ @OptIn(KorgeInternal::class) +@KorDslMarker abstract class View internal constructor( /** Indicates if this class is a container or not. This is only overrided by Container. This check is performed like this, to avoid type checks. That might be an expensive operation in some targets. */ val isContainer: Boolean diff --git a/korge/src/commonMain/kotlin/com/soywiz/korge/view/effect/BlurEffectView.kt b/korge/src/commonMain/kotlin/com/soywiz/korge/view/effect/BlurEffectView.kt index a9869d8a3d..b8b4bc7df2 100644 --- a/korge/src/commonMain/kotlin/com/soywiz/korge/view/effect/BlurEffectView.kt +++ b/korge/src/commonMain/kotlin/com/soywiz/korge/view/effect/BlurEffectView.kt @@ -79,6 +79,6 @@ class BlurEffectView(initialRadius: Double = 10.0) : EffectView() { @Deprecated("Use View.filter instead") inline fun Container.blurEffectView( radius: Double = 10.0, - callback: @ViewsDslMarker BlurEffectView.() -> Unit = {} + callback: BlurEffectView.() -> Unit = {} ) = BlurEffectView(radius).addTo(this, callback) diff --git a/korge/src/commonMain/kotlin/com/soywiz/korge/view/effect/ColorMatrixEffectView.kt b/korge/src/commonMain/kotlin/com/soywiz/korge/view/effect/ColorMatrixEffectView.kt index 2eca565ac3..7ca9a03a1a 100644 --- a/korge/src/commonMain/kotlin/com/soywiz/korge/view/effect/ColorMatrixEffectView.kt +++ b/korge/src/commonMain/kotlin/com/soywiz/korge/view/effect/ColorMatrixEffectView.kt @@ -30,6 +30,6 @@ class ColorMatrixEffectView(colorMatrix: Matrix3D) : EffectView() { @Deprecated("Use View.filter instead") inline fun Container.colorMatrixEffectView( matrix: Matrix3D = Matrix3D(), - callback: @ViewsDslMarker ColorMatrixEffectView.() -> Unit = {} + callback: ColorMatrixEffectView.() -> Unit = {} ) = ColorMatrixEffectView(matrix).addTo(this, callback) diff --git a/korge/src/commonMain/kotlin/com/soywiz/korge/view/effect/Convolute3EffectView.kt b/korge/src/commonMain/kotlin/com/soywiz/korge/view/effect/Convolute3EffectView.kt index e0117414b6..9097626d57 100644 --- a/korge/src/commonMain/kotlin/com/soywiz/korge/view/effect/Convolute3EffectView.kt +++ b/korge/src/commonMain/kotlin/com/soywiz/korge/view/effect/Convolute3EffectView.kt @@ -41,6 +41,6 @@ class Convolute3EffectView(val kernel: Matrix3D) : EffectView() { @Deprecated("Use View.filter instead") inline fun Container.convolute3EffectView( kernel: Matrix3D = Matrix3D(), - callback: @ViewsDslMarker Convolute3EffectView.() -> Unit = {} + callback: Convolute3EffectView.() -> Unit = {} ) = Convolute3EffectView(kernel).addTo(this, callback) diff --git a/korge/src/commonMain/kotlin/com/soywiz/korge/view/effect/EffectView.kt b/korge/src/commonMain/kotlin/com/soywiz/korge/view/effect/EffectView.kt index c85e8f1c0c..4fc766a395 100644 --- a/korge/src/commonMain/kotlin/com/soywiz/korge/view/effect/EffectView.kt +++ b/korge/src/commonMain/kotlin/com/soywiz/korge/view/effect/EffectView.kt @@ -114,5 +114,5 @@ open class EffectView : Container() { @KorgeDeprecated @Deprecated("Use View.filter instead") -inline fun Container.effectView(callback: @ViewsDslMarker EffectView.() -> Unit = {}) = +inline fun Container.effectView(callback: EffectView.() -> Unit = {}) = EffectView().addTo(this, callback) diff --git a/korge/src/commonMain/kotlin/com/soywiz/korge/view/effect/SwizzleColorsEffectView.kt b/korge/src/commonMain/kotlin/com/soywiz/korge/view/effect/SwizzleColorsEffectView.kt index 399fb6b314..8160e1ba9d 100644 --- a/korge/src/commonMain/kotlin/com/soywiz/korge/view/effect/SwizzleColorsEffectView.kt +++ b/korge/src/commonMain/kotlin/com/soywiz/korge/view/effect/SwizzleColorsEffectView.kt @@ -22,5 +22,5 @@ class SwizzleColorsEffectView(initialSwizzle: String = "rgba") : EffectView() { @KorgeDeprecated @Deprecated("Use View.filter instead") -inline fun Container.swizzleColorsEffectView(swizzle: String = "rgba", callback: @ViewsDslMarker SwizzleColorsEffectView.() -> Unit = {}) = +inline fun Container.swizzleColorsEffectView(swizzle: String = "rgba", callback: SwizzleColorsEffectView.() -> Unit = {}) = SwizzleColorsEffectView(swizzle).addTo(this, callback) diff --git a/korge/src/commonMain/kotlin/com/soywiz/korge/view/effect/WaveEffectView.kt b/korge/src/commonMain/kotlin/com/soywiz/korge/view/effect/WaveEffectView.kt index 813efb1531..7c41535163 100644 --- a/korge/src/commonMain/kotlin/com/soywiz/korge/view/effect/WaveEffectView.kt +++ b/korge/src/commonMain/kotlin/com/soywiz/korge/view/effect/WaveEffectView.kt @@ -49,5 +49,5 @@ class WaveEffectView : EffectView() { @KorgeDeprecated @Deprecated("Use View.filter instead") -inline fun Container.waveEffectView(callback: @ViewsDslMarker WaveEffectView.() -> Unit = {}) = +inline fun Container.waveEffectView(callback: WaveEffectView.() -> Unit = {}) = WaveEffectView().addTo(this, callback) diff --git a/korge/src/commonMain/kotlin/com/soywiz/korge/view/tiles/TileMap.kt b/korge/src/commonMain/kotlin/com/soywiz/korge/view/tiles/TileMap.kt index a24f63f757..b4be22091c 100644 --- a/korge/src/commonMain/kotlin/com/soywiz/korge/view/tiles/TileMap.kt +++ b/korge/src/commonMain/kotlin/com/soywiz/korge/view/tiles/TileMap.kt @@ -13,10 +13,10 @@ import com.soywiz.korim.color.* import com.soywiz.korma.geom.* import kotlin.math.* -inline fun Container.tileMap(map: IntArray2, tileset: TileSet, repeatX: TileMap.Repeat = TileMap.Repeat.NONE, repeatY: TileMap.Repeat = repeatX, callback: @ViewsDslMarker TileMap.() -> Unit = {}) = +inline fun Container.tileMap(map: IntArray2, tileset: TileSet, repeatX: TileMap.Repeat = TileMap.Repeat.NONE, repeatY: TileMap.Repeat = repeatX, callback: TileMap.() -> Unit = {}) = TileMap(map, tileset).repeat(repeatX, repeatY).addTo(this, callback) -inline fun Container.tileMap(map: Bitmap32, tileset: TileSet, repeatX: TileMap.Repeat = TileMap.Repeat.NONE, repeatY: TileMap.Repeat = repeatX, callback: @ViewsDslMarker TileMap.() -> Unit = {}) = +inline fun Container.tileMap(map: Bitmap32, tileset: TileSet, repeatX: TileMap.Repeat = TileMap.Repeat.NONE, repeatY: TileMap.Repeat = repeatX, callback: TileMap.() -> Unit = {}) = TileMap(map.toIntArray2(), tileset).repeat(repeatX, repeatY).addTo(this, callback) @OptIn(KorgeInternal::class) diff --git a/korge/src/commonTest/kotlin/com/soywiz/korge/view/ViewHitTestTest.kt b/korge/src/commonTest/kotlin/com/soywiz/korge/view/ViewHitTestTest.kt index 32532752d6..4cbf99ee34 100644 --- a/korge/src/commonTest/kotlin/com/soywiz/korge/view/ViewHitTestTest.kt +++ b/korge/src/commonTest/kotlin/com/soywiz/korge/view/ViewHitTestTest.kt @@ -68,12 +68,13 @@ class Polygon( } private fun updateGraphics() { + val polygon = this clear() fill(Colors.WHITE) { - for (n in 0 until sides) { - val angle = ((360.degrees * n) / sides) - 90.degrees - val x = radius * angle.cosine - val y = radius * angle.sine + for (n in 0 until polygon.sides) { + val angle = ((360.degrees * n) / polygon.sides) - 90.degrees + val x = polygon.radius * angle.cosine + val y = polygon.radius * angle.sine //println("$x, $y") if (n == 0) { moveTo(x, y)