package com.github.czyzby.lml.parser.impl.attribute.image; import com.badlogic.gdx.scenes.scene2d.ui.Image; import com.badlogic.gdx.utils.Scaling; import com.github.czyzby.kiwi.util.common.Exceptions; import com.github.czyzby.lml.parser.LmlParser; import com.github.czyzby.lml.parser.tag.LmlAttribute; import com.github.czyzby.lml.parser.tag.LmlTag; /** See {@link Image#setScaling(Scaling)}. Expects a string that matches {@link Scaling} enum constant (ideally - it * should be the same as enum constant name, but can be equal ignoring case). Mapped to "scaling", "imageScaling". * * @author MJ */ public class ScalingLmlAttribute implements LmlAttribute<Image> { @Override public Class<Image> getHandledType() { return Image.class; } @Override public void process(final LmlParser parser, final LmlTag tag, final Image actor, final String rawAttributeData) { actor.setScaling(parseScaling(parser, parser.parseString(rawAttributeData, actor))); } private static Scaling parseScaling(final LmlParser parser, final String parsedData) { try { final Scaling scaling = Scaling.valueOf(parsedData); if (scaling != null) { return scaling; } } catch (final Exception exception) { Exceptions.ignore(exception); // Somewhat expected. Invalid name. } for (final Scaling scaling : Scaling.values()) { if (parsedData.equalsIgnoreCase(scaling.name())) { return scaling; } } parser.throwErrorIfStrict("Unable to find Scaling enum constant with name: " + parsedData); return Scaling.stretch; } }