package com.xenoage.zong.core.music.clef;
import static com.xenoage.zong.core.music.Pitch.pi;
import lombok.AllArgsConstructor;
import lombok.Getter;
import com.xenoage.zong.core.music.Pitch;
/**
* Symbols for clefs.
*
* @author Andreas Wenger
*/
@AllArgsConstructor @Getter
public enum ClefSymbol {
/** G clef. */
G(pi('G', 0, 4), 3, 1, 0),
/** G clef quindicesima bassa. */
G15vb(pi('G', 0, 2), 3, 1, -2),
/** G clef ottava bassa. */
G8vb(pi('G', 0, 3), 3, 1, -1),
/** G clef ottava alta. */
G8va(pi('G', 0, 5), 3, 1, 1),
/** G clef quindicesima alta. */
G15va(pi('G', 0, 6), 3, 1, 2),
/** F clef. */
F(pi('F', 0, 3), 1, -1, 0),
/** F clef quindicesima bassa. */
F15vb(pi('F', 0, 1), 1, -1, -2),
/** F clef ottava bassa. */
F8vb(pi('F', 0, 2), 1, -1, -1),
/** F clef ottava alta. */
F8va(pi('F', 0, 4), 1, -1, 1),
/** F clef quindicesima alta. */
F15va(pi('F', 0, 5), 1, -1, 2),
/** C clef. */
C(pi('C', 0, 4), 2, 0, 0),
/** Tab clef. */
Tab(pi('B', 0, 4), 3, 1, 0),
/** Smaller tab clef. */
TabSmall(pi('B', 0, 4), 3, 1, 0),
/** Percussion clef, two filled rects. */
PercTwoRects(pi('B', 0, 4), 3, 1, 0),
/** Percussion clef, large empty rects. */
PercEmptyRect(pi('B', 0, 4), 3, 1, 0),
/** No clef symbol. */
None(pi('B', 0, 4), 3, 1, 0);
/** The pitch of the line position this type of clef sits on. */
public final Pitch pitch;
/** The minimum line position allowed for a sharp symbol of a key signature. */
public final int minSharpLp;
/** The minimum line position allowed for a flat symbol of a key signature. */
public final int minFlatLp;
/** The octave change implied by this clef.
* E.g. 0 means no change, 1 means 1 octave higher, -2 means two octaves lower. */
public final int octaveChange;
}