Java tutorial
/* * Copyright (C) 2013 Steelkiwi Development, Julia Zudikova * * 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.steelkiwi.patheditor.gdx; import com.badlogic.gdx.graphics.Color; import com.badlogic.gdx.graphics.Pixmap; import com.badlogic.gdx.graphics.Pixmap.Format; import com.badlogic.gdx.graphics.Texture; import com.badlogic.gdx.graphics.g2d.Sprite; import com.badlogic.gdx.graphics.g2d.SpriteBatch; import com.badlogic.gdx.graphics.glutils.ShapeRenderer; import com.badlogic.gdx.graphics.glutils.ShapeRenderer.ShapeType; import com.badlogic.gdx.math.Matrix4; public class BGDrawer { private ShapeRenderer renderer; private Texture overlay; private Sprite l, r, t, b; private float overlayBGAlpha = 0.7f; public BGDrawer() { renderer = new ShapeRenderer(); Pixmap p = new Pixmap(4, 4, Format.RGBA4444); p.setColor(0.698f, 0.698f, 0.698f, 1f); p.fill(); overlay = new Texture(p); p.dispose(); t = new Sprite(overlay); b = new Sprite(overlay); l = new Sprite(overlay); r = new Sprite(overlay); } public void presentFakeBG(int scrW, int scrH, Matrix4 cameraCombined) { renderer.setProjectionMatrix(cameraCombined); renderer.begin(ShapeType.FilledRectangle); renderer.setColor(Color.BLACK); renderer.filledRect(0, 0, scrW, scrH); renderer.end(); renderer.begin(ShapeType.Rectangle); renderer.setColor(Color.YELLOW); renderer.rect(0, 0, scrW, scrH); renderer.end(); } public void presentOverlayBG(int scrW, int scrH, int camX, int camY, int camW, int camH, SpriteBatch batch) { batch.begin(); t.setSize(camW, (int) (camY + camH / 2 - scrH)); t.setPosition((int) (camX - camW / 2), scrH); t.draw(batch, overlayBGAlpha); b.setSize(camW, (int) (-camY + camH / 2)); b.setPosition((int) (camX - camW / 2), (int) (camY - camH / 2)); b.draw(batch, overlayBGAlpha); l.setSize((int) (-camX + camW / 2), scrH); l.setPosition((int) (camX - camW / 2), 0); l.draw(batch, overlayBGAlpha); r.setSize((int) (camX + camW / 2 - scrW), scrH); r.setPosition(scrW, 0); r.draw(batch, overlayBGAlpha); batch.end(); } public void setOverlayBGAlpha(float overlayBGAlpha) { this.overlayBGAlpha = overlayBGAlpha; } public void dispose() { if (renderer != null) { renderer.dispose(); renderer = null; } if (overlay != null) { overlay.dispose(); overlay = null; } l = null; r = null; t = null; b = null; } }