/******************************************************************************* * Copyright 2012 bmanuel * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. ******************************************************************************/ package com.bitfire.postprocessing.effects; import com.badlogic.gdx.graphics.Texture; import com.badlogic.gdx.graphics.glutils.FrameBuffer; import com.bitfire.postprocessing.PostProcessorEffect; import com.bitfire.postprocessing.filters.Vignetting; public final class Vignette extends PostProcessorEffect { private Vignetting vignetting; private boolean controlSaturation; private float oneOnW, oneOnH; public Vignette (int viewportWidth, int viewportHeight, boolean controlSaturation) { this.controlSaturation = controlSaturation; oneOnW = 1f / (float)viewportWidth; oneOnH = 1f / (float)viewportHeight; vignetting = new Vignetting(controlSaturation); } @Override public void dispose () { vignetting.dispose(); } public boolean doesSaturationControl () { return controlSaturation; } public void setIntensity (float intensity) { vignetting.setIntensity(intensity); } public void setCoords (float x, float y) { vignetting.setCoords(x, y); } public void setX (float x) { vignetting.setX(x); } public void setY (float y) { vignetting.setY(y); } public void setSaturation (float saturation) { vignetting.setSaturation(saturation); } public void setSaturationMul (float saturationMul) { vignetting.setSaturationMul(saturationMul); } public void setLutTexture (Texture texture) { vignetting.setLut(texture); } public void setLutIntensity (float value) { vignetting.setLutIntensity(value); } public void setLutIndexVal (int index, int value) { vignetting.setLutIndexVal(index, value); } public void setLutIndexOffset (float value) { vignetting.setLutIndexOffset(value); } /** Specify the center, in screen coordinates. */ public void setCenter (float x, float y) { vignetting.setCenter(x * oneOnW, 1f - y * oneOnH); } public float getIntensity () { return vignetting.getIntensity(); } public float getLutIntensity () { return vignetting.getLutIntensity(); } public int getLutIndexVal (int index) { return vignetting.getLutIndexVal(index); } public Texture getLut () { return vignetting.getLut(); } public float getCenterX () { return vignetting.getCenterX(); } public float getCenterY () { return vignetting.getCenterY(); } public float getCoordsX () { return vignetting.getX(); } public float getCoordsY () { return vignetting.getY(); } public float getSaturation () { return vignetting.getSaturation(); } public float getSaturationMul () { return vignetting.getSaturationMul(); } public boolean isGradientMappingEnabled () { return vignetting.isGradientMappingEnabled(); } @Override public void rebind () { vignetting.rebind(); } @Override public void render (FrameBuffer src, FrameBuffer dest) { restoreViewport(dest); vignetting.setInput(src).setOutput(dest).render(); }; }