/* * ****************************************************************************** * * Copyright 2015 See AUTHORS file. * * * * 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.uwsoft.editor.view.ui.widget.actors.basic; import com.badlogic.gdx.graphics.Color; import com.badlogic.gdx.math.Rectangle; import com.badlogic.gdx.scenes.scene2d.Group; import com.badlogic.gdx.scenes.scene2d.ui.Image; import com.uwsoft.editor.Overlap2DFacade; import com.uwsoft.editor.proxy.EditorTextureManager; import com.uwsoft.editor.proxy.ProjectManager; public class PixelRect extends Group { private final Overlap2DFacade facade; private final ProjectManager projectManager; private PixelLine[] lines = new PixelLine[4]; private Image fill; public PixelRect() { this(0, 0); } public PixelRect(float width, float height) { facade = Overlap2DFacade.getInstance(); projectManager = facade.retrieveProxy(ProjectManager.NAME); EditorTextureManager tm = facade.retrieveProxy(EditorTextureManager.NAME); lines[0] = new PixelLine(tm, 0, 0, width, 0); lines[1] = new PixelLine(tm, 0, 0, 0, height); lines[2] = new PixelLine(tm, width, 0, width, height); lines[3] = new PixelLine(tm, 0, height, width, height); fill = new Image(tm.getEditorAsset("pixel")); fill.setColor(new Color(0, 0, 0, 0)); addActor(fill); addActor(lines[0]); addActor(lines[1]); addActor(lines[2]); addActor(lines[3]); super.setWidth(width); super.setHeight(height); setOrigin(getWidth() / 2, getHeight() / 2); fill.setScaleX(getWidth()); fill.setScaleY(getHeight()); } public void setBorderColor(Color clr) { lines[0].setColor(clr); lines[1].setColor(clr); lines[2].setColor(clr); lines[3].setColor(clr); } public void setFillColor(Color clr) { fill.setColor(clr); } @Override public void setWidth(float width) { super.setWidth(width); lines[0].setPosition(0, 0, width, 0); lines[2].setPosition(width, 0, width, getHeight()); lines[3].setPosition(0, getHeight(), width, getHeight()); fill.setScaleX(getWidth()); } @Override public void setHeight(float height) { super.setHeight(height); lines[1].setPosition(0, 0, 0, height); lines[2].setPosition(getWidth(), 0, getWidth(), height); lines[3].setPosition(0, height, getWidth(), height); fill.setScaleY(getHeight()); } public void setOpacity(float opacity) { Color clr = getColor(); clr.a = opacity; setColor(clr); } public Rectangle getRect() { float x = getX(); float y = getY(); float width = getWidth(); float height = getHeight(); if (width < 0) { width = -width; x = x - width; } if (height < 0) { height = -height; y = y - height; } Rectangle r = new Rectangle(x, y, width, height); return r; } public void setThickness(float thickness) { lines[0].setThickness(thickness); lines[1].setThickness(thickness); lines[2].setThickness(thickness); lines[3].setThickness(thickness); } }