package com.xenoage.zong.renderer.stamping; import com.xenoage.zong.musiclayout.stampings.FlagsStamping; import com.xenoage.zong.musiclayout.stampings.FlagsStamping.FlagsDirection; import com.xenoage.zong.musiclayout.stampings.Stamping; import com.xenoage.zong.renderer.RendererArgs; import com.xenoage.zong.renderer.canvas.Canvas; import com.xenoage.zong.symbols.Symbol; import com.xenoage.zong.symbols.common.CommonSymbol; import static com.xenoage.utils.kernel.Range.range; import static com.xenoage.zong.core.music.format.SP.sp; /** * Renderer for a {@link FlagsStamping}. * * @author Andreas Wenger */ public class FlagsRenderer extends StampingRenderer { /** * Draws the given {@link FlagsStamping} on the given {@link Canvas}, * using the given {@link RendererArgs}. */ @Override public void draw(Stamping stamping, Canvas canvas, RendererArgs args) { FlagsStamping s = (FlagsStamping) stamping; Symbol symbol = args.symbolPool.getSymbol(CommonSymbol.NoteFlag); boolean flagsMirrored = (s.flagsDirection == FlagsDirection.Up); float flagsDistance = FlagsStamping.getFlagsDistance(s.flagsDirection, s.scaling); //draw all flags for (int i : range(s.flagsCount)) { StaffSymbolRenderer.drawWith(symbol, null, sp(s.position.xMm, s.position.lp + //TODO: flag position is not correct yet flagsDistance * 0.2f /* move a little bit into the stem */+ i * 2 * flagsDistance), s.scaling, s.parentStaff, flagsMirrored, canvas, args); } } }