diff --git a/SPD-classes/src/main/java/com/watabou/gltextures/Atlas.java b/SPD-classes/src/main/java/com/watabou/gltextures/Atlas.java index e6486ad9e..b6a0f38a2 100644 --- a/SPD-classes/src/main/java/com/watabou/gltextures/Atlas.java +++ b/SPD-classes/src/main/java/com/watabou/gltextures/Atlas.java @@ -21,9 +21,9 @@ package com.watabou.gltextures; -import java.util.HashMap; +import com.watabou.utils.RectF; -import android.graphics.RectF; +import java.util.HashMap; public class Atlas { diff --git a/SPD-classes/src/main/java/com/watabou/gltextures/SmartTexture.java b/SPD-classes/src/main/java/com/watabou/gltextures/SmartTexture.java index 260c3f001..5d36f170e 100644 --- a/SPD-classes/src/main/java/com/watabou/gltextures/SmartTexture.java +++ b/SPD-classes/src/main/java/com/watabou/gltextures/SmartTexture.java @@ -22,9 +22,9 @@ package com.watabou.gltextures; import android.graphics.Bitmap; -import android.graphics.RectF; import com.watabou.glwrap.Texture; +import com.watabou.utils.RectF; public class SmartTexture extends Texture { diff --git a/SPD-classes/src/main/java/com/watabou/noosa/BitmapText.java b/SPD-classes/src/main/java/com/watabou/noosa/BitmapText.java index 5078a5259..09baa14f9 100644 --- a/SPD-classes/src/main/java/com/watabou/noosa/BitmapText.java +++ b/SPD-classes/src/main/java/com/watabou/noosa/BitmapText.java @@ -21,16 +21,16 @@ package com.watabou.noosa; -import java.nio.FloatBuffer; +import android.graphics.Bitmap; import com.watabou.gltextures.SmartTexture; import com.watabou.gltextures.TextureCache; import com.watabou.glwrap.Matrix; import com.watabou.glwrap.Quad; import com.watabou.glwrap.Vertexbuffer; +import com.watabou.utils.RectF; -import android.graphics.Bitmap; -import android.graphics.RectF; +import java.nio.FloatBuffer; public class BitmapText extends Visual { diff --git a/SPD-classes/src/main/java/com/watabou/noosa/BitmapTextMultiline.java b/SPD-classes/src/main/java/com/watabou/noosa/BitmapTextMultiline.java index d935a8fab..f997931b9 100644 --- a/SPD-classes/src/main/java/com/watabou/noosa/BitmapTextMultiline.java +++ b/SPD-classes/src/main/java/com/watabou/noosa/BitmapTextMultiline.java @@ -21,13 +21,12 @@ package com.watabou.noosa; -import java.util.ArrayList; -import java.util.regex.Pattern; - -import android.graphics.RectF; - import com.watabou.glwrap.Quad; import com.watabou.utils.PointF; +import com.watabou.utils.RectF; + +import java.util.ArrayList; +import java.util.regex.Pattern; public class BitmapTextMultiline extends BitmapText { diff --git a/SPD-classes/src/main/java/com/watabou/noosa/Image.java b/SPD-classes/src/main/java/com/watabou/noosa/Image.java index e6cb0e9bf..b0e9d48c1 100644 --- a/SPD-classes/src/main/java/com/watabou/noosa/Image.java +++ b/SPD-classes/src/main/java/com/watabou/noosa/Image.java @@ -21,14 +21,13 @@ package com.watabou.noosa; -import java.nio.FloatBuffer; - -import android.graphics.RectF; - -import com.watabou.gltextures.TextureCache; import com.watabou.gltextures.SmartTexture; +import com.watabou.gltextures.TextureCache; import com.watabou.glwrap.Quad; import com.watabou.glwrap.Vertexbuffer; +import com.watabou.utils.RectF; + +import java.nio.FloatBuffer; public class Image extends Visual { diff --git a/SPD-classes/src/main/java/com/watabou/noosa/MovieClip.java b/SPD-classes/src/main/java/com/watabou/noosa/MovieClip.java index c44fe37a3..ddb3dfb2f 100644 --- a/SPD-classes/src/main/java/com/watabou/noosa/MovieClip.java +++ b/SPD-classes/src/main/java/com/watabou/noosa/MovieClip.java @@ -21,7 +21,7 @@ package com.watabou.noosa; -import android.graphics.RectF; +import com.watabou.utils.RectF; public class MovieClip extends Image { diff --git a/SPD-classes/src/main/java/com/watabou/noosa/NinePatch.java b/SPD-classes/src/main/java/com/watabou/noosa/NinePatch.java index 44c46e9d2..afaa1382c 100644 --- a/SPD-classes/src/main/java/com/watabou/noosa/NinePatch.java +++ b/SPD-classes/src/main/java/com/watabou/noosa/NinePatch.java @@ -21,14 +21,13 @@ package com.watabou.noosa; -import java.nio.FloatBuffer; - import com.watabou.gltextures.SmartTexture; import com.watabou.gltextures.TextureCache; import com.watabou.glwrap.Quad; import com.watabou.glwrap.Vertexbuffer; +import com.watabou.utils.RectF; -import android.graphics.RectF; +import java.nio.FloatBuffer; public class NinePatch extends Visual { diff --git a/SPD-classes/src/main/java/com/watabou/noosa/RenderedText.java b/SPD-classes/src/main/java/com/watabou/noosa/RenderedText.java index 21eec2f0f..dcf872d78 100644 --- a/SPD-classes/src/main/java/com/watabou/noosa/RenderedText.java +++ b/SPD-classes/src/main/java/com/watabou/noosa/RenderedText.java @@ -24,11 +24,12 @@ package com.watabou.noosa; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Paint; -import android.graphics.RectF; import android.graphics.Typeface; + import com.watabou.gltextures.SmartTexture; import com.watabou.glwrap.Matrix; import com.watabou.glwrap.Texture; +import com.watabou.utils.RectF; import java.util.HashSet; import java.util.Iterator; diff --git a/SPD-classes/src/main/java/com/watabou/noosa/SkinnedBlock.java b/SPD-classes/src/main/java/com/watabou/noosa/SkinnedBlock.java index d307c5a84..f0a3f4fac 100644 --- a/SPD-classes/src/main/java/com/watabou/noosa/SkinnedBlock.java +++ b/SPD-classes/src/main/java/com/watabou/noosa/SkinnedBlock.java @@ -22,8 +22,7 @@ package com.watabou.noosa; import com.watabou.glwrap.Texture; - -import android.graphics.RectF; +import com.watabou.utils.RectF; public class SkinnedBlock extends Image { diff --git a/SPD-classes/src/main/java/com/watabou/noosa/TextureFilm.java b/SPD-classes/src/main/java/com/watabou/noosa/TextureFilm.java index e01798181..6ef896f7c 100644 --- a/SPD-classes/src/main/java/com/watabou/noosa/TextureFilm.java +++ b/SPD-classes/src/main/java/com/watabou/noosa/TextureFilm.java @@ -21,12 +21,11 @@ package com.watabou.noosa; -import java.util.HashMap; - import com.watabou.gltextures.SmartTexture; import com.watabou.gltextures.TextureCache; +import com.watabou.utils.RectF; -import android.graphics.RectF; +import java.util.HashMap; public class TextureFilm { @@ -90,7 +89,7 @@ public class TextureFilm { for (int i=0; i < rows; i++) { for (int j=0; j < cols; j++) { RectF rect = new RectF( j * uw, i * vh, (j+1) * uw, (i+1) * vh ); - rect.offset( patch.left, patch.top ); + rect.shift( patch.left, patch.top ); add( i * cols + j, rect ); } } diff --git a/SPD-classes/src/main/java/com/watabou/noosa/Tilemap.java b/SPD-classes/src/main/java/com/watabou/noosa/Tilemap.java index 35e36689d..d28844e33 100644 --- a/SPD-classes/src/main/java/com/watabou/noosa/Tilemap.java +++ b/SPD-classes/src/main/java/com/watabou/noosa/Tilemap.java @@ -21,13 +21,12 @@ package com.watabou.noosa; -import android.graphics.RectF; - import com.watabou.gltextures.SmartTexture; import com.watabou.gltextures.TextureCache; import com.watabou.glwrap.Quad; import com.watabou.glwrap.Vertexbuffer; import com.watabou.utils.Rect; +import com.watabou.utils.RectF; import java.nio.FloatBuffer; import java.util.Arrays; diff --git a/SPD-classes/src/main/java/com/watabou/noosa/particles/BitmaskEmitter.java b/SPD-classes/src/main/java/com/watabou/noosa/particles/BitmaskEmitter.java index b59134125..910415559 100644 --- a/SPD-classes/src/main/java/com/watabou/noosa/particles/BitmaskEmitter.java +++ b/SPD-classes/src/main/java/com/watabou/noosa/particles/BitmaskEmitter.java @@ -21,12 +21,10 @@ package com.watabou.noosa.particles; -import android.graphics.RectF; - import com.watabou.gltextures.SmartTexture; import com.watabou.noosa.Image; -import com.watabou.noosa.particles.Emitter; import com.watabou.utils.Random; +import com.watabou.utils.RectF; public class BitmaskEmitter extends Emitter { diff --git a/SPD-classes/src/main/java/com/watabou/utils/RectF.java b/SPD-classes/src/main/java/com/watabou/utils/RectF.java new file mode 100644 index 000000000..3fcfcd8a5 --- /dev/null +++ b/SPD-classes/src/main/java/com/watabou/utils/RectF.java @@ -0,0 +1,147 @@ +/* + * Pixel Dungeon + * Copyright (C) 2012-2015 Oleg Dolya + * + * Shattered Pixel Dungeon + * Copyright (C) 2014-2017 Evan Debenham + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see + */ + +package com.watabou.utils; + +public class RectF { + + public float left; + public float top; + public float right; + public float bottom; + + public RectF() { + this( 0, 0, 0, 0 ); + } + + public RectF( RectF rect ) { + this( rect.left, rect.top, rect.right, rect.bottom ); + } + + public RectF( Rect rect ) { + this( rect.left, rect.top, rect.right, rect.bottom ); + } + + public RectF( float left, float top, float right, float bottom ) { + this.left = left; + this.top = top; + this.right = right; + this.bottom = bottom; + } + + public float width() { + return right - left; + } + + public float height() { + return bottom - top; + } + + public float square() { + return width() * height(); + } + + public RectF set( float left, float top, float right, float bottom ) { + this.left = left; + this.top = top; + this.right = right; + this.bottom = bottom; + return this; + } + + public RectF set( Rect rect ) { + return set( rect.left, rect.top, rect.right, rect.bottom ); + } + + public RectF setPos( float x, float y ) { + return set( x, y, x + (right - left), y + (bottom - top)); + } + + public RectF shift( float x, float y ) { + return set( left+x, top+y, right+x, bottom+y ); + } + + public RectF resize( float w, float h ){ + return set( left, top, left+w, top+h); + } + + public boolean isEmpty() { + return right <= left || bottom <= top; + } + + public RectF setEmpty() { + left = right = top = bottom = 0; + return this; + } + + public RectF intersect( RectF other ) { + RectF result = new RectF(); + result.left = Math.max( left, other.left ); + result.right = Math.min( right, other.right ); + result.top = Math.max( top, other.top ); + result.bottom = Math.min( bottom, other.bottom ); + return result; + } + + public RectF union( RectF other ){ + RectF result = new RectF(); + result.left = Math.min( left, other.left ); + result.right = Math.max( right, other.right ); + result.top = Math.min( top, other.top ); + result.bottom = Math.max( bottom, other.bottom ); + return result; + } + + public RectF union( float x, float y ) { + if (isEmpty()) { + return set( x, y, x + 1, y + 1 ); + } else { + if (x < left) { + left = x; + } else if (x >= right) { + right = x + 1; + } + if (y < top) { + top = y; + } else if (y >= bottom) { + bottom = y + 1; + } + return this; + } + } + + public RectF union( Point p ) { + return union( p.x, p.y ); + } + + public boolean inside( Point p ) { + return p.x >= left && p.x < right && p.y >= top && p.y < bottom; + } + + public RectF shrink( float d ) { + return new RectF( left + d, top + d, right - d, bottom - d ); + } + + public RectF shrink() { + return shrink( 1 ); + } + +} diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/effects/Fireball.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/effects/Fireball.java index 594d39cff..dd9dbd096 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/effects/Fireball.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/effects/Fireball.java @@ -21,8 +21,6 @@ package com.shatteredpixel.shatteredpixeldungeon.effects; -import android.graphics.RectF; - import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.watabou.glwrap.Blending; import com.watabou.glwrap.Texture; @@ -34,6 +32,7 @@ import com.watabou.noosa.particles.PixelParticle; import com.watabou.noosa.ui.Component; import com.watabou.utils.ColorMath; import com.watabou.utils.Random; +import com.watabou.utils.RectF; public class Fireball extends Component { diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/HeroSprite.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/HeroSprite.java index 1130c2cae..9505cdbc6 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/HeroSprite.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/HeroSprite.java @@ -21,8 +21,6 @@ package com.shatteredpixel.shatteredpixeldungeon.sprites; -import android.graphics.RectF; - import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; @@ -34,6 +32,7 @@ import com.watabou.noosa.Image; import com.watabou.noosa.TextureFilm; import com.watabou.utils.Callback; import com.watabou.utils.PointF; +import com.watabou.utils.RectF; public class HeroSprite extends CharSprite { @@ -160,7 +159,7 @@ public class HeroSprite extends CharSprite { RectF patch = tiers().get( armorTier ); Image avatar = new Image( cl.spritesheet() ); RectF frame = avatar.texture.uvRect( 1, 0, FRAME_WIDTH, FRAME_HEIGHT ); - frame.offset( patch.left, patch.top ); + frame.shift( patch.left, patch.top ); avatar.frame( frame ); return avatar; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/tiles/TerrainFeaturesTilemap.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/tiles/TerrainFeaturesTilemap.java index d3e2cc2d6..16d7ed9a0 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/tiles/TerrainFeaturesTilemap.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/tiles/TerrainFeaturesTilemap.java @@ -21,8 +21,6 @@ package com.shatteredpixel.shatteredpixeldungeon.tiles; -import android.graphics.RectF; - import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain; @@ -31,6 +29,7 @@ import com.shatteredpixel.shatteredpixeldungeon.plants.Plant; import com.watabou.noosa.Image; import com.watabou.noosa.tweeners.ScaleTweener; import com.watabou.utils.PointF; +import com.watabou.utils.RectF; import com.watabou.utils.SparseArray; //TODO add in a proper set of vfx for plants growing/withering, grass burning, discovering traps diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/KeyDisplay.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/KeyDisplay.java index 7a51f713c..1eb87270b 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/KeyDisplay.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/KeyDisplay.java @@ -21,8 +21,6 @@ package com.shatteredpixel.shatteredpixeldungeon.ui; -import android.graphics.RectF; - import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.items.keys.CrystalKey; @@ -37,6 +35,7 @@ import com.watabou.glwrap.Quad; import com.watabou.glwrap.Vertexbuffer; import com.watabou.noosa.NoosaScript; import com.watabou.noosa.Visual; +import com.watabou.utils.RectF; import java.nio.FloatBuffer; import java.util.LinkedHashMap; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndBag.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndBag.java index 945a6566b..204d073b8 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndBag.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndBag.java @@ -21,8 +21,6 @@ package com.shatteredpixel.shatteredpixeldungeon.windows; -import android.graphics.RectF; - import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.SPDSettings; @@ -61,6 +59,7 @@ import com.watabou.noosa.ColorBlock; import com.watabou.noosa.Image; import com.watabou.noosa.RenderedText; import com.watabou.noosa.audio.Sample; +import com.watabou.utils.RectF; public class WndBag extends WndTabbed {