Package com.ardor3d.util.stat.graph

Source Code of com.ardor3d.util.stat.graph.AbstractStatGrapher

/**
* Copyright (c) 2008-2012 Ardor Labs, Inc.
*
* This file is part of Ardor3D.
*
* Ardor3D is free software: you can redistribute it and/or modify it
* under the terms of its license which may be found in the accompanying
* LICENSE file or at <http://www.ardor3d.com/LICENSE>.
*/

package com.ardor3d.util.stat.graph;

import java.util.HashMap;
import java.util.TreeMap;

import com.ardor3d.image.Texture2D;
import com.ardor3d.math.ColorRGBA;
import com.ardor3d.renderer.ContextCapabilities;
import com.ardor3d.renderer.Renderer;
import com.ardor3d.renderer.TextureRenderer;
import com.ardor3d.renderer.TextureRendererFactory;
import com.ardor3d.util.stat.StatListener;
import com.ardor3d.util.stat.StatType;

/**
* Base class for graphers.
*/
public abstract class AbstractStatGrapher implements StatListener {

    protected TextureRenderer _textureRenderer;
    protected Texture2D _texture;
    protected int _gWidth, _gHeight;

    protected TreeMap<StatType, HashMap<String, Object>> _config = new TreeMap<StatType, HashMap<String, Object>>();

    protected boolean _enabled = true;

    /**
     * Must be constructed in the GL thread.
     *
     * @param factory
     */
    public AbstractStatGrapher(final int width, final int height, final Renderer renderer,
            final ContextCapabilities caps) {
        _gWidth = width;
        _gHeight = height;
        // prepare our TextureRenderer
        _textureRenderer = TextureRendererFactory.INSTANCE.createTextureRenderer(width, height, renderer, caps);

        if (_textureRenderer != null) {
            _textureRenderer.setBackgroundColor(new ColorRGBA(ColorRGBA.BLACK));
        }
    }

    // - set a texture for offscreen rendering
    public void setTexture(final Texture2D tex) {
        _textureRenderer.setupTexture(tex);
        _texture = tex;
    }

    public TextureRenderer getTextureRenderer() {
        return _textureRenderer;
    }

    public void clearConfig() {
        _config.clear();
    }

    public void clearConfig(final StatType type) {
        if (_config.get(type) != null) {
            _config.get(type).clear();
        }
    }

    public void clearConfig(final StatType type, final String key) {
        if (_config.get(type) != null) {
            _config.get(type).remove(key);
        }
    }

    public void addConfig(final StatType type, final HashMap<String, Object> configs) {
        _config.put(type, configs);
    }

    public void addConfig(final StatType type, final String key, final Object value) {
        HashMap<String, Object> vals = _config.get(type);
        if (vals == null) {
            vals = new HashMap<String, Object>();
            _config.put(type, vals);
        }
        vals.put(key, value);
    }

    protected ColorRGBA getColorConfig(final StatType type, final String configName, final ColorRGBA defaultVal) {
        final HashMap<String, Object> vals = _config.get(type);
        if (vals != null && vals.containsKey(configName)) {
            final Object val = vals.get(configName);
            if (val instanceof ColorRGBA) {
                return (ColorRGBA) val;
            }
        }
        return defaultVal;
    }

    protected String getStringConfig(final StatType type, final String configName, final String defaultVal) {
        final HashMap<String, Object> vals = _config.get(type);
        if (vals != null && vals.containsKey(configName)) {
            final Object val = vals.get(configName);
            if (val instanceof String) {
                return (String) val;
            }
        }
        return defaultVal;
    }

    protected short getShortConfig(final StatType type, final String configName, final short defaultVal) {
        final HashMap<String, Object> vals = _config.get(type);
        if (vals != null && vals.containsKey(configName)) {
            final Object val = vals.get(configName);
            if (val instanceof Number) {
                return ((Number) val).shortValue();
            }
        }
        return defaultVal;
    }

    protected int getIntConfig(final StatType type, final String configName, final int defaultVal) {
        final HashMap<String, Object> vals = _config.get(type);
        if (vals != null && vals.containsKey(configName)) {
            final Object val = vals.get(configName);
            if (val instanceof Number) {
                return ((Number) val).intValue();
            }
        }
        return defaultVal;
    }

    protected long getLongConfig(final StatType type, final String configName, final long defaultVal) {
        final HashMap<String, Object> vals = _config.get(type);
        if (vals != null && vals.containsKey(configName)) {
            final Object val = vals.get(configName);
            if (val instanceof Number) {
                return ((Number) val).longValue();
            }
        }
        return defaultVal;
    }

    protected float getFloatConfig(final StatType type, final String configName, final float defaultVal) {
        final HashMap<String, Object> vals = _config.get(type);
        if (vals != null && vals.containsKey(configName)) {
            final Object val = vals.get(configName);
            if (val instanceof Number) {
                return ((Number) val).floatValue();
            }
        }
        return defaultVal;
    }

    protected double getDoubleConfig(final StatType type, final String configName, final double defaultVal) {
        final HashMap<String, Object> vals = _config.get(type);
        if (vals != null && vals.containsKey(configName)) {
            final Object val = vals.get(configName);
            if (val instanceof Number) {
                return ((Number) val).doubleValue();
            }
        }
        return defaultVal;
    }

    protected boolean getBooleanConfig(final StatType type, final String configName, final boolean defaultVal) {
        final HashMap<String, Object> vals = _config.get(type);
        if (vals != null && vals.containsKey(configName)) {
            final Object val = vals.get(configName);
            if (val instanceof Boolean) {
                return (Boolean) val;
            }
        }
        return defaultVal;
    }

    public boolean hasConfig(final StatType type) {
        return _config.containsKey(type) && !_config.get(type).isEmpty();
    }

    public boolean isEnabled() {
        return _enabled;
    }

    public void setEnabled(final boolean enabled) {
        _enabled = enabled;
    }

    /**
     * Called when the graph needs to be reset back to the original display state. (iow, remove all points, lines, etc.)
     */
    public abstract void reset();
}
TOP

Related Classes of com.ardor3d.util.stat.graph.AbstractStatGrapher

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.