android: Convert InputOverlayDrawableButton to Kotlin
This commit is contained in:
		| @@ -1,139 +0,0 @@ | ||||
| /** | ||||
|  * Copyright 2013 Dolphin Emulator Project | ||||
|  * Licensed under GPLv2+ | ||||
|  * Refer to the license.txt file included. | ||||
|  */ | ||||
|  | ||||
| package org.yuzu.yuzu_emu.overlay; | ||||
|  | ||||
| import android.content.res.Resources; | ||||
| import android.graphics.Bitmap; | ||||
| import android.graphics.Canvas; | ||||
| import android.graphics.Rect; | ||||
| import android.graphics.drawable.BitmapDrawable; | ||||
| import android.view.MotionEvent; | ||||
|  | ||||
| import org.yuzu.yuzu_emu.NativeLibrary.ButtonState; | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * Custom {@link BitmapDrawable} that is capable | ||||
|  * of storing it's own ID. | ||||
|  */ | ||||
| public final class InputOverlayDrawableButton { | ||||
|     // The ID value what type of button this Drawable represents. | ||||
|     private int mButtonId; | ||||
|  | ||||
|     // The ID value what motion event is tracking | ||||
|     private int mTrackId; | ||||
|  | ||||
|     // The drawable position on the screen | ||||
|     private int mButtonPositionX, mButtonPositionY; | ||||
|     private int mWidth; | ||||
|     private int mHeight; | ||||
|     private BitmapDrawable mDefaultStateBitmap; | ||||
|     private BitmapDrawable mPressedStateBitmap; | ||||
|     private boolean mPressedState = false; | ||||
|  | ||||
|     /** | ||||
|      * Constructor | ||||
|      * | ||||
|      * @param res                {@link Resources} instance. | ||||
|      * @param defaultStateBitmap {@link Bitmap} to use with the default state Drawable. | ||||
|      * @param pressedStateBitmap {@link Bitmap} to use with the pressed state Drawable. | ||||
|      * @param buttonId           Identifier for this type of button. | ||||
|      */ | ||||
|     public InputOverlayDrawableButton(Resources res, Bitmap defaultStateBitmap, | ||||
|                                       Bitmap pressedStateBitmap, int buttonId) { | ||||
|         mDefaultStateBitmap = new BitmapDrawable(res, defaultStateBitmap); | ||||
|         mPressedStateBitmap = new BitmapDrawable(res, pressedStateBitmap); | ||||
|         mButtonId = buttonId; | ||||
|         mTrackId = -1; | ||||
|  | ||||
|         mWidth = mDefaultStateBitmap.getIntrinsicWidth(); | ||||
|         mHeight = mDefaultStateBitmap.getIntrinsicHeight(); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Updates button status based on the motion event. | ||||
|      * | ||||
|      * @return true if value was changed | ||||
|      */ | ||||
|     public boolean updateStatus(MotionEvent event) { | ||||
|         int pointerIndex = event.getActionIndex(); | ||||
|         int xPosition = (int) event.getX(pointerIndex); | ||||
|         int yPosition = (int) event.getY(pointerIndex); | ||||
|         int pointerId = event.getPointerId(pointerIndex); | ||||
|         int motion_event = event.getAction() & MotionEvent.ACTION_MASK; | ||||
|         boolean isActionDown = motion_event == MotionEvent.ACTION_DOWN || motion_event == MotionEvent.ACTION_POINTER_DOWN; | ||||
|         boolean isActionUp = motion_event == MotionEvent.ACTION_UP || motion_event == MotionEvent.ACTION_POINTER_UP; | ||||
|         boolean current_state = mPressedState; | ||||
|  | ||||
|         if (isActionDown) { | ||||
|             if (!getBounds().contains(xPosition, yPosition)) { | ||||
|                 return false; | ||||
|             } | ||||
|             mPressedState = true; | ||||
|             mTrackId = pointerId; | ||||
|             return true; | ||||
|         } | ||||
|  | ||||
|         if (isActionUp) { | ||||
|             if (mTrackId != pointerId) { | ||||
|                 return false; | ||||
|             } | ||||
|             mPressedState = false; | ||||
|             mTrackId = -1; | ||||
|             return true; | ||||
|         } | ||||
|  | ||||
|         return false; | ||||
|     } | ||||
|  | ||||
|     public void setPosition(int x, int y) { | ||||
|         mButtonPositionX = x; | ||||
|         mButtonPositionY = y; | ||||
|     } | ||||
|  | ||||
|     public void draw(Canvas canvas) { | ||||
|         getCurrentStateBitmapDrawable().draw(canvas); | ||||
|     } | ||||
|  | ||||
|     private BitmapDrawable getCurrentStateBitmapDrawable() { | ||||
|         return mPressedState ? mPressedStateBitmap : mDefaultStateBitmap; | ||||
|     } | ||||
|  | ||||
|     public void setBounds(int left, int top, int right, int bottom) { | ||||
|         mDefaultStateBitmap.setBounds(left, top, right, bottom); | ||||
|         mPressedStateBitmap.setBounds(left, top, right, bottom); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Gets this InputOverlayDrawableButton's button ID. | ||||
|      * | ||||
|      * @return this InputOverlayDrawableButton's button ID. | ||||
|      */ | ||||
|     public int getId() { | ||||
|         return mButtonId; | ||||
|     } | ||||
|  | ||||
|     public int getTrackId() { | ||||
|         return mTrackId; | ||||
|     } | ||||
|  | ||||
|     public int getStatus() { | ||||
|         return mPressedState ? ButtonState.PRESSED : ButtonState.RELEASED; | ||||
|     } | ||||
|  | ||||
|     private Rect getBounds() { | ||||
|         return mDefaultStateBitmap.getBounds(); | ||||
|     } | ||||
|  | ||||
|     public int getWidth() { | ||||
|         return mWidth; | ||||
|     } | ||||
|  | ||||
|     public int getHeight() { | ||||
|         return mHeight; | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,118 @@ | ||||
| /** | ||||
|  * Copyright 2013 Dolphin Emulator Project | ||||
|  * Licensed under GPLv2+ | ||||
|  * Refer to the license.txt file included. | ||||
|  */ | ||||
| package org.yuzu.yuzu_emu.overlay | ||||
|  | ||||
| import android.content.res.Resources | ||||
| import android.graphics.Bitmap | ||||
| import android.graphics.Canvas | ||||
| import android.graphics.Rect | ||||
| import android.graphics.drawable.BitmapDrawable | ||||
| import android.view.MotionEvent | ||||
| import org.yuzu.yuzu_emu.NativeLibrary.ButtonState | ||||
|  | ||||
| /** | ||||
|  * Custom [BitmapDrawable] that is capable | ||||
|  * of storing it's own ID. | ||||
|  * | ||||
|  * @param res                [Resources] instance. | ||||
|  * @param defaultStateBitmap [Bitmap] to use with the default state Drawable. | ||||
|  * @param pressedStateBitmap [Bitmap] to use with the pressed state Drawable. | ||||
|  * @param buttonId           Identifier for this type of button. | ||||
|  */ | ||||
| class InputOverlayDrawableButton( | ||||
|     res: Resources, | ||||
|     defaultStateBitmap: Bitmap, | ||||
|     pressedStateBitmap: Bitmap, | ||||
|     buttonId: Int | ||||
| ) { | ||||
|     /** | ||||
|      * Gets this InputOverlayDrawableButton's button ID. | ||||
|      * | ||||
|      * @return this InputOverlayDrawableButton's button ID. | ||||
|      */ | ||||
|     // The ID value what type of button this Drawable represents. | ||||
|     val id: Int | ||||
|  | ||||
|     // The ID value what motion event is tracking | ||||
|     var trackId: Int | ||||
|  | ||||
|     // The drawable position on the screen | ||||
|     private var buttonPositionX = 0 | ||||
|     private var buttonPositionY = 0 | ||||
|     val width: Int | ||||
|     val height: Int | ||||
|     private val defaultStateBitmap: BitmapDrawable | ||||
|     private val pressedStateBitmap: BitmapDrawable | ||||
|     private var pressedState = false | ||||
|  | ||||
|     init { | ||||
|         this.defaultStateBitmap = BitmapDrawable(res, defaultStateBitmap) | ||||
|         this.pressedStateBitmap = BitmapDrawable(res, pressedStateBitmap) | ||||
|         id = buttonId | ||||
|         trackId = -1 | ||||
|         width = this.defaultStateBitmap.intrinsicWidth | ||||
|         height = this.defaultStateBitmap.intrinsicHeight | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Updates button status based on the motion event. | ||||
|      * | ||||
|      * @return true if value was changed | ||||
|      */ | ||||
|     fun updateStatus(event: MotionEvent): Boolean { | ||||
|         val pointerIndex = event.actionIndex | ||||
|         val xPosition = event.getX(pointerIndex).toInt() | ||||
|         val yPosition = event.getY(pointerIndex).toInt() | ||||
|         val pointerId = event.getPointerId(pointerIndex) | ||||
|         val motionEvent = event.action and MotionEvent.ACTION_MASK | ||||
|         val isActionDown = | ||||
|             motionEvent == MotionEvent.ACTION_DOWN || motionEvent == MotionEvent.ACTION_POINTER_DOWN | ||||
|         val isActionUp = | ||||
|             motionEvent == MotionEvent.ACTION_UP || motionEvent == MotionEvent.ACTION_POINTER_UP | ||||
|  | ||||
|         if (isActionDown) { | ||||
|             if (!bounds.contains(xPosition, yPosition)) { | ||||
|                 return false | ||||
|             } | ||||
|             pressedState = true | ||||
|             trackId = pointerId | ||||
|             return true | ||||
|         } | ||||
|  | ||||
|         if (isActionUp) { | ||||
|             if (trackId != pointerId) { | ||||
|                 return false | ||||
|             } | ||||
|             pressedState = false | ||||
|             trackId = -1 | ||||
|             return true | ||||
|         } | ||||
|  | ||||
|         return false | ||||
|     } | ||||
|  | ||||
|     fun setPosition(x: Int, y: Int) { | ||||
|         buttonPositionX = x | ||||
|         buttonPositionY = y | ||||
|     } | ||||
|  | ||||
|     fun draw(canvas: Canvas?) { | ||||
|         currentStateBitmapDrawable.draw(canvas!!) | ||||
|     } | ||||
|  | ||||
|     private val currentStateBitmapDrawable: BitmapDrawable | ||||
|         get() = if (pressedState) pressedStateBitmap else defaultStateBitmap | ||||
|  | ||||
|     fun setBounds(left: Int, top: Int, right: Int, bottom: Int) { | ||||
|         defaultStateBitmap.setBounds(left, top, right, bottom) | ||||
|         pressedStateBitmap.setBounds(left, top, right, bottom) | ||||
|     } | ||||
|  | ||||
|     val status: Int | ||||
|         get() = if (pressedState) ButtonState.PRESSED else ButtonState.RELEASED | ||||
|     private val bounds: Rect | ||||
|         get() = defaultStateBitmap.bounds | ||||
| } | ||||
		Reference in New Issue
	
	Block a user
	 Charles Lombardo
					Charles Lombardo