
de.lessvoid.nifty.examples.helloworld.ScrollingPanel Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of nifty-examples Show documentation
Show all versions of nifty-examples Show documentation
Lots of Nifty example code! You can find the source for nearly all demos/tutorials in here.
package de.lessvoid.nifty.examples.helloworld;
import de.lessvoid.nifty.Nifty;
import de.lessvoid.nifty.effects.EffectImpl;
import de.lessvoid.nifty.effects.EffectProperties;
import de.lessvoid.nifty.effects.Falloff;
import de.lessvoid.nifty.elements.Element;
import de.lessvoid.nifty.render.NiftyImage;
import de.lessvoid.nifty.render.NiftyImageMode;
import de.lessvoid.nifty.render.NiftyRenderEngine;
import de.lessvoid.nifty.spi.time.TimeProvider;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
public class ScrollingPanel implements EffectImpl {
private TimeProvider timeProvider;
private long start;
private float xspeed;
private float yspeed;
@Nullable
private NiftyImage image;
private float xoff;
private float yoff;
@Override
public void activate(
@Nonnull final Nifty nifty,
@Nonnull final Element element,
@Nonnull final EffectProperties parameter) {
timeProvider = nifty.getTimeProvider();
start = timeProvider.getMsTime();
xspeed = Float.valueOf(parameter.getProperty("xspeed", "1000"));
yspeed = Float.valueOf(parameter.getProperty("yspeed", "1000"));
image = nifty.getRenderEngine().createImage(nifty.getCurrentScreen(), parameter.getProperty("filename"), false);
String imageMode = parameter.getProperty("imageMode", null);
if (imageMode != null) {
image.setImageMode(NiftyImageMode.valueOf(imageMode));
}
xoff = 0;
yoff = 0;
}
@Override
public void execute(
@Nonnull final Element element,
final float normalizedTime,
@Nullable final Falloff falloff,
@Nonnull final NiftyRenderEngine r) {
long now = timeProvider.getMsTime();
r.saveStates();
xoff = ((now - start) % xspeed / xspeed * image.getWidth()) % image.getWidth();
yoff = ((now - start) % yspeed / yspeed * image.getHeight()) % image.getHeight();
r.enableClip(element.getX(), element.getY(), element.getX() + element.getWidth(),
element.getY() + element.getHeight());
r.renderImage(
image,
element.getX() + (int) xoff - image.getWidth(),
element.getY() + (int) yoff - image.getHeight(),
element.getWidth() - (int) xoff + image.getWidth(),
element.getHeight() - (int) yoff + image.getHeight());
r.restoreStates();
}
@Override
public void deactivate() {
image.dispose();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy