package com.jediterm.terminal.emulator.charset;
import org.jetbrains.annotations.NotNull;
/**
* Denotes how a graphic set is designated.
*/
public class GraphicSet
{
private final int myIndex; // 0..3
private CharacterSet myDesignation;
public GraphicSet( int index )
{
if ( index < 0 || index > 3 )
{
throw new IllegalArgumentException( "Invalid index!" );
}
myIndex = index;
// The default mapping, based on XTerm...
myDesignation = CharacterSet.valueOf( ( index == 1 ) ? '0' : 'B' );
}
/**
* @return the designation of this graphic set.
*/
public CharacterSet getDesignation()
{
return myDesignation;
}
/**
* @return the index of this graphics set.
*/
public int getIndex()
{
return myIndex;
}
/**
* Maps a given character index to a concrete character.
*
* @param original
* the original character to map;
* @param index
* the index of the character to map.
* @return the mapped character, or the given original if no mapping could
* be made.
*/
public int map( char original, int index )
{
int result = myDesignation.map( index );
if ( result < 0 )
{
// No mapping, simply return the given original one...
result = original;
}
return result;
}
/**
* Sets the designation of this graphic set.
*/
public void setDesignation(@NotNull CharacterSet designation )
{
myDesignation = designation;
}
}