public List<TextureAtlasSprite> getAllSprites() { List<Slot> allSlots = Lists.newArrayList(); for (Slot slot : slots) { slot.getAllStitchSlots(allSlots); } List<TextureAtlasSprite> sprites = Lists.newArrayList(); for (Slot slot : allSlots) { sprites.add(slot.getStitchHolder().getAtlasSprite()); } return sprites; }
private Slot expandAndAllocateSlot(Holder holder) { int smallestDimension = Math.min(holder.getWidth(), holder.getHeight()); if (holder.getWidth() > holder.getHeight()) { holder.rotate(); currentHeight = holder.getHeight(); currentWidth = holder.getWidth(); if (currentHeight < holder.getHeight()) { currentHeight = holder.getHeight(); newSlot = new Slot(currentWidth, 0, holder.getWidth(), currentHeight); currentWidth += holder.getWidth(); } else { if (currentWidth < holder.getWidth()) { currentWidth = holder.getWidth(); newSlot = new Slot(0, currentHeight, currentWidth, holder.getHeight()); currentHeight += holder.getHeight();
private Slot allocateSlot(Holder holder) { TextureAtlasSprite sprite = holder.getAtlasSprite(); boolean notSquare = sprite.getIconWidth() != sprite.getIconHeight(); for (Slot stitchSlot : slots) { Slot slot = stitchSlot.addSlot(holder); if (slot != null) { return slot; } if (notSquare) { holder.rotate(); slot = stitchSlot.addSlot(holder); if (slot != null) { return slot; } holder.rotate(); } } return expandAndAllocateSlot(holder); }
public void addSprite(TextureAtlasSprite sprite) { Holder holder = new Holder(sprite, mipmapLevels); if (maxSpriteSize > 0) { holder.setNewDimension(maxSpriteSize); } Slot slot = allocateSlot(holder); if (slot == null) { throw new StitcherException(null, String.format("Unable to fit %s (size %dx%d)", sprite.getIconName(), sprite.getIconWidth(), sprite.getIconHeight())); } sprite.initSprite(BASE_WIDTH, BASE_HEIGHT, slot.getOriginX(), slot.getOriginY(), holder.isRotated()); }