/*
VARNA is a tool for the automated drawing, visualization and annotation of the secondary structure of RNA, designed as a companion software for web servers and databases.
Copyright (C) 2008 Kevin Darty, Alain Denise and Yann Ponty.
electronic mail : Yann.Ponty@lri.fr
paper mail : LRI, bat 490 University Paris-Sud 91405 Orsay Cedex France
This file is part of VARNA version 3.1.
VARNA version 3.1 is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License
as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
VARNA version 3.1 is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with VARNA version 3.1.
If not, see http://www.gnu.org/licenses.
*/
package fr.orsay.lri.varna.models;
import java.awt.Color;
import java.awt.Font;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import fr.orsay.lri.varna.models.rna.ModeleColorMap;
public class VARNAConfig implements Serializable, Cloneable {
/**
*
*/
private static final long serialVersionUID = 2853916694420964233L;
/**
*
*/
public static final int MAJOR_VERSION = 3;
public static final int MINOR_VERSION = 8;
public static String getFullName()
{
return "VARNA "+MAJOR_VERSION+"."+MINOR_VERSION;
}
/**
* Enum types and internal classes
*/
public enum BP_STYLE implements Serializable {
BP_STYLE_LW, BP_STYLE_SIMPLE, BP_STYLE_RNAVIZ, BP_STYLE_NONE;
public String toString() {
switch (this) {
case BP_STYLE_LW:
return "Leontis/Westhof";
case BP_STYLE_SIMPLE:
return "Simple (Straight line)";
case BP_STYLE_RNAVIZ:
return "RNAViz (Single dot)";
case BP_STYLE_NONE:
return "None";
}
return super.toString();
}
};
/**
* Default values for config options
*/
public static final double MAX_ZOOM = 60;
public static final double MIN_ZOOM = 0.5;
public static final double DEFAULT_ZOOM = 1;
public static final double MAX_AMOUNT = 2;
public static final double MIN_AMOUNT = 1.01;
public static final double DEFAULT_AMOUNT = 1.2;
public static final double DEFAULT_BP_THICKNESS = 1.0;
public static final double DEFAULT_DIST_NUMBERS = 3.0;
public static final int DEFAULT_PERIOD = 10;
public static final Color DEFAULT_TITLE_COLOR = Color.black;
public static final Color DEFAULT_BACKBONE_COLOR = Color.DARK_GRAY.brighter();
public static final Color DEFAULT_BOND_COLOR = Color.blue;
public static final Color DEFAULT_SPECIAL_BASE_COLOR = Color.green.brighter();
public static final Color DEFAULT_DASH_BASE_COLOR = Color.yellow.brighter();
public static final double DEFAULT_BASE_OUTLINE_THICKNESS = 1.5;
public static final Color BASE_OUTLINE_COLOR_DEFAULT = Color.DARK_GRAY.brighter();
public static final Color BASE_INNER_COLOR_DEFAULT = new Color(242, 242,242);
public static final Color BASE_NUMBER_COLOR_DEFAULT = Color.DARK_GRAY;
public static final Color BASE_NAME_COLOR_DEFAULT = Color.black;
public static final Color DEFAULT_HOVER_COLOR = new Color(230, 230,230);;
public static final Color DEFAULT_BACKGROUND_COLOR = Color.WHITE;
public static final Font DEFAULT_TITLE_FONT = new Font("SansSerif", Font.BOLD,18);
public static final Font DEFAULT_BASE_FONT = new Font("SansSerif", Font.PLAIN, 18);
public static final Font DEFAULT_NUMBERS_FONT = new Font("SansSerif",
Font.BOLD, 18);
public static final BP_STYLE DEFAULT_BP_STYLE = BP_STYLE.BP_STYLE_LW;
public static final ModeleColorMap DEFAULT_COLOR_MAP = ModeleColorMap.defaultColorMap();
public static final Color DEFAULT_COLOR_MAP_OUTLINE = Color.gray;
public static final double DEFAULT_BP_INCREMENT = 0.65;
public static double DEFAULT_COLOR_MAP_WIDTH = 80;
public static double DEFAULT_COLOR_MAP_HEIGHT = 30;
public static double DEFAULT_COLOR_MAP_X_OFFSET = 40;
public static double DEFAULT_COLOR_MAP_Y_OFFSET = 0;
public static int DEFAULT_COLOR_MAP_STRIPE_WIDTH = 3;
public static int DEFAULT_COLOR_MAP_FONT_SIZE = 20;
public static Color DEFAULT_COLOR_MAP_FONT_COLOR = Color.gray.darker();
/**
* Various options.
*/
public double _colorMapHeight = DEFAULT_COLOR_MAP_HEIGHT;
public double _colorMapWidth = DEFAULT_COLOR_MAP_WIDTH;
public double _colorMapXOffset = DEFAULT_COLOR_MAP_X_OFFSET;
public double _colorMapYOffset = DEFAULT_COLOR_MAP_Y_OFFSET;
public BP_STYLE _mainBPStyle = DEFAULT_BP_STYLE;
public double _zoom = DEFAULT_ZOOM;
public double _zoomAmount = DEFAULT_AMOUNT;
public double _bpThickness = 1.0;
public double _baseThickness = DEFAULT_BASE_OUTLINE_THICKNESS;
public Color _backboneColor = DEFAULT_BACKBONE_COLOR;
public boolean _drawBackbone = true;
public Color _hoverColor = DEFAULT_HOVER_COLOR;
public Color _backgroundColor = DEFAULT_BACKGROUND_COLOR;
public boolean _drawBackground = false;
public Color _bondColor = DEFAULT_BOND_COLOR;
public Color _titleColor = DEFAULT_TITLE_COLOR;
public Color _specialBasesColor = DEFAULT_SPECIAL_BASE_COLOR;
public Color _dashBasesColor = DEFAULT_DASH_BASE_COLOR;
public Font _titleFont = DEFAULT_TITLE_FONT;
public Font _numbersFont = DEFAULT_NUMBERS_FONT;
public Font _fontBasesGeneral = DEFAULT_BASE_FONT;
public String _title = "";
public int _numPeriod = DEFAULT_PERIOD;
public boolean _drawOutlineBase = true;
public boolean _fillBase = true;
public boolean _autoFit = true;
public boolean _autoCenter = true;
public boolean _modifiable = true;
public boolean _errorsOn = false;
public boolean _colorSpecialBases = false;
public boolean _colorDashBases = false;
public boolean _useBaseColorsForBPs = false;
public boolean _drawnNonCanonicalBP = true;
public boolean _drawnNonPlanarBP = true;
public boolean _showWarnings = false;
public boolean _comparisonMode = false;
public boolean _flatExteriorLoop = false;
// Relative distance between the center of a base and its number, expressed as a multiple of base radius
public double _distNumbers = DEFAULT_DIST_NUMBERS;
public ModeleColorMap _cm = DEFAULT_COLOR_MAP;
public String _colorMapCaption = "";
public boolean _drawColorMap = false;
public VARNAConfig clone ()
{
try
{
ByteArrayOutputStream out = new ByteArrayOutputStream ();
ObjectOutputStream oout = new ObjectOutputStream (out);
oout.writeObject (this);
ObjectInputStream in = new ObjectInputStream (
new ByteArrayInputStream (out.toByteArray ()));
return (VARNAConfig)in.readObject ();
}
catch (Exception e)
{
throw new RuntimeException ("cannot clone class [" +
this.getClass ().getName () + "] via serialization: " +
e.toString ());
}
}
}