Package com.googlecode.klenwell.playndev.core

Source Code of com.googlecode.klenwell.playndev.core.GraphicsApi

package com.googlecode.klenwell.playndev.core;

import static playn.core.PlayN.graphics;

import java.util.LinkedList;

import org.jbox2d.common.Vec2;

import com.google.common.collect.Lists;

import playn.core.CanvasImage;
import playn.core.Color;
import playn.core.Font;
import playn.core.GroupLayer;
import playn.core.ImageLayer;
import playn.core.PlayN;
import playn.core.TextFormat;
import playn.core.TextLayout;

public class GraphicsApi {
   
    // log fields
    public static Integer logDisplayLength = 5;
    public static Integer logFontSize = 12;
    public static Vec2 logScreenPos = new Vec2(5,5);
    private static Font logFont = graphics().createFont("Courier", Font.Style.BOLD, logFontSize);
    private static LinkedList<String> logMessages = Lists.newLinkedList();
    private static Integer logCount = 0;
    private static Integer logColor = Color.rgb(255, 255, 255);
    private static Integer logOddColor = Color.rgb(64, 255, 64);
    private static TextFormat logFormat = new TextFormat().withFont(logFont).withTextColor(logColor);
    private static TextFormat logOddFormat = new TextFormat().withFont(logFont).withTextColor(logOddColor);
   

  public static int screenCenterX() {
    return (int) Math.round(graphics().width() / 2.0);
  }

  public static int screenCenterY() {
    return (int) Math.round(graphics().height() / 2.0);
  }

  public static int worldToScreenX(int x) {
    return screenCenterX() + x;
  }

  public static int worldToScreenY(int y) {
    return screenCenterY() - y;
  }
 
  public static void log(Object object) {
      String message = object.toString();
      PlayN.log().info(message);
      logMessages.addFirst(message);
  }
 
  public static void displayLog() {
      GroupLayer logLayer = graphics().createGroupLayer();
     
      // generate log message images
      int logSize = (logMessages.size() >= logDisplayLength) ? logDisplayLength : logMessages.size();
      logCount = 0;
     
      for (int n=0; n<logSize; n++) {
          logCount++;
          String message = logMessages.get(n);
          ImageLayer messageImage = generateLogMessageImageLayer(message);
          Number screenY = logScreenPos.y + (n * (logFontSize + 4));
          messageImage.transform().translate(logScreenPos.x, screenY.floatValue());
          logLayer.add(messageImage);
      }
     
      graphics().rootLayer().add(logLayer);
  }
 
 

    /*
   * Support Methods
   */
  private static ImageLayer generateLogMessageImageLayer(String message) {
      TextFormat logFormat_ = (logCount % 2 == 0) ? logFormat : logOddFormat;
     
      ImageLayer imageLayer = graphics().createImageLayer();
        TextLayout layout = graphics().layoutText(message, logFormat_);
        CanvasImage logImage = graphics().createImage(graphics().width(), logFontSize + 4);
        logImage.canvas().drawText(layout, 0, 0);
        imageLayer.setImage(logImage);
        return imageLayer;
    }
}
TOP

Related Classes of com.googlecode.klenwell.playndev.core.GraphicsApi

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.