LogScale.java

/*
 * Created on 2005/07/28
 * Copyright (C) 2005 Koga Laboratory. All rights reserved.
 *
 */
package org.mklab.tool.graph.gnuplot.decoration;

/**
 * 対数スケールを表すクラスです。
 * 
 * @author koga
 * @version $Revision: 1.8 $, 2005/07/28
 */
public class LogScale implements GnuplotComponent {

  /** 全て線形スケール */
  public static final int LOG_SCALE_NO = 0;
  /** x軸はログスケール */
  public static final int LOG_SCALE_X = 1;
  /** y軸はログスケール */
  public static final int LOG_SCALE_Y = 2;
  /** z軸はログスケール */
  public static final int LOG_SCALE_Z = 3;
  /** x軸とy軸はログスケール */
  public static final int LOG_SCALE_XY = 4;
  /** x軸とz軸はログスケール */
  public static final int LOG_SCALE_XZ = 5;
  /** y軸とz軸はログスケール */
  public static final int LOG_SCALE_YZ = 6;
  /** x軸、y軸、z軸はログスケール */
  public static final int LOG_SCALE_XYZ = 7;

  /** ログスケール */
  private int scale = LOG_SCALE_NO;

  /**
   * コンストラクター
   */
  public LogScale() {
    //
  }

  /**
   * ログスケールを設定します。
   * 
   * @param scale ログスケール
   */
  public void setScale(int scale) {
    this.scale = scale;
  }
  
  /**
   * ログスケールを返します。
   * 
   * @return ログスケール
   */
  public int getScale() {
    return this.scale;
  }

  /**
   * ログスケール設定コマンド文字列を返します。
   * 
   * @return ログスケール設定コマンド文字列
   */
  @SuppressWarnings("nls")
  public String getCommand() {
    String logScaleCommand;
    switch (this.scale) {
      case LOG_SCALE_NO:
        logScaleCommand = "unset logscale xyz";
        break;
      case LOG_SCALE_X:
        logScaleCommand = "set logscale x; unset logscale yz";
        break;
      case LOG_SCALE_Y:
        logScaleCommand = "set logscale y; unset logscale xz";
        break;
      case LOG_SCALE_Z:
        logScaleCommand = "set logscale z; unset logscale xy";
        break;
      case LOG_SCALE_XY:
        logScaleCommand = "set logscale xy; unset logscale z";
        break;
      case LOG_SCALE_XZ:
        logScaleCommand = "set logscale xz; unset logscale y";
        break;
      case LOG_SCALE_YZ:
        logScaleCommand = "set logscale yz; unset logscale x";
        break;
      case LOG_SCALE_XYZ:
        logScaleCommand = "set logscale xyz";
        break;
      default:
        throw new RuntimeException("Incorrect log mode");

    }
    return logScaleCommand;
  }

}