package musicxmltestsuite.tests.base;
import static com.xenoage.utils.collections.CollectionUtils.alist;
import static com.xenoage.utils.color.ColorUtils.getColor;
import static com.xenoage.utils.font.FontStyle.Bold;
import static com.xenoage.utils.font.FontStyle.fontStyle;
import static com.xenoage.utils.kernel.Tuple2.t;
import static com.xenoage.utils.math.Fraction.fr;
import static com.xenoage.zong.core.position.MP.atBeat;
import java.util.List;
import lombok.AllArgsConstructor;
import lombok.Data;
import com.xenoage.utils.color.Color;
import com.xenoage.utils.font.FontStyle;
import com.xenoage.utils.kernel.Tuple2;
import com.xenoage.zong.core.music.format.Placement;
import com.xenoage.zong.core.position.MP;
public interface Base32b
extends Base {
@Override default String getFileName() {
return "32b-Articulations-Texts.xml";
}
@Data @AllArgsConstructor public class Text {
String text;
float size;
FontStyle style;
Color color;
Placement placement;
}
List<Tuple2<MP, Text>> expectedTexts = getExpectedTexts();
static List<Tuple2<MP, Text>> getExpectedTexts() {
List<Tuple2<MP, Text>> ret = alist();
int small = 2;
int medium = 3;
int large = 4;
//font sizes are arbitrary, but large must be bigger than medium and so on
ret.add(t(atBeat(0, 0, 0, fr(0, 8)),
new Text("Normal, Medium", medium, FontStyle.normal, Color.black, Placement.Above)));
ret.add(t(atBeat(0, 0, 0, fr(1, 1)), //TODO: wrong duration in MusicXML file, must be 48
//bug reported: https://code.google.com/p/lilypond/issues/detail?id=4172
new Text("Bold, Medium", medium, fontStyle(Bold), Color.black, Placement.Below)));
ret.add(t(atBeat(0, 1, 0, fr(0, 4)),
new Text("Normal, Large", large, FontStyle.normal, Color.black, Placement.Above)));
ret.add(t(atBeat(0, 1, 0, fr(4, 4)),
new Text("Bold, Large", large, fontStyle(Bold), Color.black, Placement.Below)));
ret.add(t(atBeat(0, 2, 0, fr(0, 4)),
new Text("Normal, Small", small, FontStyle.normal, Color.black, Placement.Above)));
ret.add(t(atBeat(0, 2, 0, fr(4, 4)),
new Text("Bold, Small", small, fontStyle(Bold), Color.black, Placement.Below)));
ret.add(t(atBeat(0, 2, 0, fr(4, 4)),
new Text("Normal, Small, Colored, Below", small, FontStyle.normal, getColor("#FF8000"), Placement.Below)));
return ret;
}
}