/** Returns a registered sprite. If no sprite is found but a region exists with the name, a sprite is created from the region * and stored in the skin. If the region is an {@link AtlasRegion} then an {@link AtlasSprite} is used if the region has been * whitespace stripped or packed rotated 90 degrees. */ public Sprite getSprite (String name) { Sprite sprite = optional(name, Sprite.class); if (sprite != null) return sprite; try { TextureRegion textureRegion = getRegion(name); if (textureRegion instanceof AtlasRegion) { AtlasRegion region = (AtlasRegion)textureRegion; if (region.rotate || region.packedWidth != region.originalWidth || region.packedHeight != region.originalHeight) sprite = new AtlasSprite(region); } if (sprite == null) sprite = new Sprite(textureRegion); add(name, sprite, Sprite.class); return sprite; } catch (GdxRuntimeException ex) { throw new GdxRuntimeException("No NinePatch, TextureRegion, or Texture registered with name: " + name); } }
@Override public void flip (boolean x, boolean y) { // Flip texture. if (region.rotate) super.flip(y, x); else super.flip(x, y); float oldOriginX = getOriginX(); float oldOriginY = getOriginY(); float oldOffsetX = region.offsetX; float oldOffsetY = region.offsetY; float widthRatio = getWidthRatio(); float heightRatio = getHeightRatio(); region.offsetX = originalOffsetX; region.offsetY = originalOffsetY; region.flip(x, y); // Updates x and y offsets. originalOffsetX = region.offsetX; originalOffsetY = region.offsetY; region.offsetX *= widthRatio; region.offsetY *= heightRatio; // Update position and origin with new offsets. translate(region.offsetX - oldOffsetX, region.offsetY - oldOffsetY); setOrigin(oldOriginX, oldOriginY); }
@Override public void rotate90 (boolean clockwise) { // Rotate texture. super.rotate90(clockwise); float oldOriginX = getOriginX(); float oldOriginY = getOriginY(); float oldOffsetX = region.offsetX; float oldOffsetY = region.offsetY; float widthRatio = getWidthRatio(); float heightRatio = getHeightRatio(); if (clockwise) { region.offsetX = oldOffsetY; region.offsetY = region.originalHeight * heightRatio - oldOffsetX - region.packedWidth * widthRatio; } else { region.offsetX = region.originalWidth * widthRatio - oldOffsetY - region.packedHeight * heightRatio; region.offsetY = oldOffsetX; } // Update position and origin with new offsets. translate(region.offsetX - oldOffsetX, region.offsetY - oldOffsetY); setOrigin(oldOriginX, oldOriginY); }
/** Creates a new drawable that renders the same as this drawable tinted the specified color. */ public Drawable tint (Color tint) { Sprite sprite; if (region instanceof AtlasRegion) sprite = new AtlasSprite((AtlasRegion)region); else sprite = new Sprite(region); sprite.setColor(tint); sprite.setSize(getMinWidth(), getMinHeight()); SpriteDrawable drawable = new SpriteDrawable(sprite); drawable.setLeftWidth(getLeftWidth()); drawable.setRightWidth(getRightWidth()); drawable.setTopHeight(getTopHeight()); drawable.setBottomHeight(getBottomHeight()); return drawable; } }
public AtlasSprite (AtlasRegion region) { this.region = new AtlasRegion(region); originalOffsetX = region.offsetX; originalOffsetY = region.offsetY; setRegion(region); setOrigin(region.originalWidth / 2f, region.originalHeight / 2f); int width = region.getRegionWidth(); int height = region.getRegionHeight(); if (region.rotate) { super.rotate90(true); super.setBounds(region.offsetX, region.offsetY, height, width); } else super.setBounds(region.offsetX, region.offsetY, width, height); setColor(1, 1, 1, 1); }
/** Creates a new drawable that renders the same as this drawable tinted the specified color. */ public SpriteDrawable tint (Color tint) { Sprite newSprite; if (sprite instanceof AtlasSprite) newSprite = new AtlasSprite((AtlasSprite)sprite); else newSprite = new Sprite(sprite); newSprite.setColor(tint); newSprite.setSize(getMinWidth(), getMinHeight()); SpriteDrawable drawable = new SpriteDrawable(newSprite); drawable.setLeftWidth(getLeftWidth()); drawable.setRightWidth(getRightWidth()); drawable.setTopHeight(getTopHeight()); drawable.setBottomHeight(getBottomHeight()); return drawable; } }
public AtlasSprite (AtlasSprite sprite) { region = sprite.region; this.originalOffsetX = sprite.originalOffsetX; this.originalOffsetY = sprite.originalOffsetY; set(sprite); }
private Sprite newSprite (AtlasRegion region) { if (region.packedWidth == region.originalWidth && region.packedHeight == region.originalHeight) { if (region.rotate) { Sprite sprite = new Sprite(region); sprite.setBounds(0, 0, region.getRegionHeight(), region.getRegionWidth()); sprite.rotate90(true); return sprite; } return new Sprite(region); } return new AtlasSprite(region); }
@Override public void flip (boolean x, boolean y) { // Flip texture. if (region.rotate) super.flip(y, x); else super.flip(x, y); float oldOriginX = getOriginX(); float oldOriginY = getOriginY(); float oldOffsetX = region.offsetX; float oldOffsetY = region.offsetY; float widthRatio = getWidthRatio(); float heightRatio = getHeightRatio(); region.offsetX = originalOffsetX; region.offsetY = originalOffsetY; region.flip(x, y); // Updates x and y offsets. originalOffsetX = region.offsetX; originalOffsetY = region.offsetY; region.offsetX *= widthRatio; region.offsetY *= heightRatio; // Update position and origin with new offsets. translate(region.offsetX - oldOffsetX, region.offsetY - oldOffsetY); setOrigin(oldOriginX, oldOriginY); }
@Override public void flip (boolean x, boolean y) { // Flip texture. if (region.rotate) super.flip(y, x); else super.flip(x, y); float oldOriginX = getOriginX(); float oldOriginY = getOriginY(); float oldOffsetX = region.offsetX; float oldOffsetY = region.offsetY; float widthRatio = getWidthRatio(); float heightRatio = getHeightRatio(); region.offsetX = originalOffsetX; region.offsetY = originalOffsetY; region.flip(x, y); // Updates x and y offsets. originalOffsetX = region.offsetX; originalOffsetY = region.offsetY; region.offsetX *= widthRatio; region.offsetY *= heightRatio; // Update position and origin with new offsets. translate(region.offsetX - oldOffsetX, region.offsetY - oldOffsetY); setOrigin(oldOriginX, oldOriginY); }
/** Returns a registered sprite. If no sprite is found but a region exists with the name, a sprite is created from the region * and stored in the skin. If the region is an {@link AtlasRegion} then an {@link AtlasSprite} is used if the region has been * whitespace stripped or packed rotated 90 degrees. */ public Sprite getSprite (String name) { Sprite sprite = optional(name, Sprite.class); if (sprite != null) return sprite; try { TextureRegion textureRegion = getRegion(name); if (textureRegion instanceof AtlasRegion) { AtlasRegion region = (AtlasRegion)textureRegion; if (region.rotate || region.packedWidth != region.originalWidth || region.packedHeight != region.originalHeight) sprite = new AtlasSprite(region); } if (sprite == null) sprite = new Sprite(textureRegion); add(name, sprite, Sprite.class); return sprite; } catch (GdxRuntimeException ex) { throw new GdxRuntimeException("No NinePatch, TextureRegion, or Texture registered with name: " + name); } }
/** Returns a registered sprite. If no sprite is found but a region exists with the name, a sprite is created from the region * and stored in the skin. If the region is an {@link AtlasRegion} then an {@link AtlasSprite} is used if the region has been * whitespace stripped or packed rotated 90 degrees. */ public Sprite getSprite (String name) { Sprite sprite = optional(name, Sprite.class); if (sprite != null) return sprite; try { TextureRegion textureRegion = getRegion(name); if (textureRegion instanceof AtlasRegion) { AtlasRegion region = (AtlasRegion)textureRegion; if (region.rotate || region.packedWidth != region.originalWidth || region.packedHeight != region.originalHeight) sprite = new AtlasSprite(region); } if (sprite == null) sprite = new Sprite(textureRegion); add(name, sprite, Sprite.class); return sprite; } catch (GdxRuntimeException ex) { throw new GdxRuntimeException("No NinePatch, TextureRegion, or Texture registered with name: " + name); } }
@Override public void rotate90 (boolean clockwise) { // Rotate texture. super.rotate90(clockwise); float oldOriginX = getOriginX(); float oldOriginY = getOriginY(); float oldOffsetX = region.offsetX; float oldOffsetY = region.offsetY; float widthRatio = getWidthRatio(); float heightRatio = getHeightRatio(); if (clockwise) { region.offsetX = oldOffsetY; region.offsetY = region.originalHeight * heightRatio - oldOffsetX - region.packedWidth * widthRatio; } else { region.offsetX = region.originalWidth * widthRatio - oldOffsetY - region.packedHeight * heightRatio; region.offsetY = oldOffsetX; } // Update position and origin with new offsets. translate(region.offsetX - oldOffsetX, region.offsetY - oldOffsetY); setOrigin(oldOriginX, oldOriginY); }
@Override public void rotate90 (boolean clockwise) { // Rotate texture. super.rotate90(clockwise); float oldOriginX = getOriginX(); float oldOriginY = getOriginY(); float oldOffsetX = region.offsetX; float oldOffsetY = region.offsetY; float widthRatio = getWidthRatio(); float heightRatio = getHeightRatio(); if (clockwise) { region.offsetX = oldOffsetY; region.offsetY = region.originalHeight * heightRatio - oldOffsetX - region.packedWidth * widthRatio; } else { region.offsetX = region.originalWidth * widthRatio - oldOffsetY - region.packedHeight * heightRatio; region.offsetY = oldOffsetX; } // Update position and origin with new offsets. translate(region.offsetX - oldOffsetX, region.offsetY - oldOffsetY); setOrigin(oldOriginX, oldOriginY); }
/** Creates a new drawable that renders the same as this drawable tinted the specified color. */ public Drawable tint (Color tint) { Sprite sprite; if (region instanceof AtlasRegion) sprite = new AtlasSprite((AtlasRegion)region); else sprite = new Sprite(region); sprite.setColor(tint); sprite.setSize(getMinWidth(), getMinHeight()); SpriteDrawable drawable = new SpriteDrawable(sprite); drawable.setLeftWidth(getLeftWidth()); drawable.setRightWidth(getRightWidth()); drawable.setTopHeight(getTopHeight()); drawable.setBottomHeight(getBottomHeight()); return drawable; } }
/** Creates a new drawable that renders the same as this drawable tinted the specified color. */ public SpriteDrawable tint (Color tint) { Sprite newSprite; if (sprite instanceof AtlasSprite) newSprite = new AtlasSprite((AtlasSprite)sprite); else newSprite = new Sprite(sprite); newSprite.setColor(tint); newSprite.setSize(getMinWidth(), getMinHeight()); SpriteDrawable drawable = new SpriteDrawable(newSprite); drawable.setLeftWidth(getLeftWidth()); drawable.setRightWidth(getRightWidth()); drawable.setTopHeight(getTopHeight()); drawable.setBottomHeight(getBottomHeight()); return drawable; } }
/** Creates a new drawable that renders the same as this drawable tinted the specified color. */ public SpriteDrawable tint (Color tint) { Sprite newSprite; if (sprite instanceof AtlasSprite) newSprite = new AtlasSprite((AtlasSprite)sprite); else newSprite = new Sprite(sprite); newSprite.setColor(tint); newSprite.setSize(getMinWidth(), getMinHeight()); SpriteDrawable drawable = new SpriteDrawable(newSprite); drawable.setLeftWidth(getLeftWidth()); drawable.setRightWidth(getRightWidth()); drawable.setTopHeight(getTopHeight()); drawable.setBottomHeight(getBottomHeight()); return drawable; } }
/** Creates a new drawable that renders the same as this drawable tinted the specified color. */ public Drawable tint (Color tint) { Sprite sprite; if (region instanceof AtlasRegion) sprite = new AtlasSprite((AtlasRegion)region); else sprite = new Sprite(region); sprite.setColor(tint); sprite.setSize(getMinWidth(), getMinHeight()); SpriteDrawable drawable = new SpriteDrawable(sprite); drawable.setLeftWidth(getLeftWidth()); drawable.setRightWidth(getRightWidth()); drawable.setTopHeight(getTopHeight()); drawable.setBottomHeight(getBottomHeight()); return drawable; } }
public AtlasSprite (AtlasRegion region) { this.region = new AtlasRegion(region); originalOffsetX = region.offsetX; originalOffsetY = region.offsetY; setRegion(region); setOrigin(region.originalWidth / 2f, region.originalHeight / 2f); int width = region.getRegionWidth(); int height = region.getRegionHeight(); if (region.rotate) { super.rotate90(true); super.setBounds(region.offsetX, region.offsetY, height, width); } else super.setBounds(region.offsetX, region.offsetY, width, height); setColor(1, 1, 1, 1); }