MCPcopy Create free account
hub / github.com/CoderLine/alphaTab / _paintTupletHelper

Function _paintTupletHelper

packages/alphatab/src/rendering/LineBarRenderer.ts:220–448  ·  view source on GitHub ↗
(
        cx: number,
        cy: number,
        canvas: ICanvas,
        h: TupletGroup,
        beatElement: BeatSubElement,
        bracketsAsArcs: boolean
    )

Source from the content-addressed store, hash-verified

218 }
219
220 private _paintTupletHelper(
221 cx: number,
222 cy: number,
223 canvas: ICanvas,
224 h: TupletGroup,
225 beatElement: BeatSubElement,
226 bracketsAsArcs: boolean
227 ): void {
228 const res = this.resources;
229 const oldAlign: TextAlign = canvas.textAlign;
230 const oldBaseLine = canvas.textBaseline;
231 canvas.color = h.voice.index === 0 ? this.resources.mainGlyphColor : this.resources.secondaryGlyphColor;
232 canvas.textAlign = TextAlign.Center;
233 canvas.textBaseline = TextBaseline.Middle;
234 let s: MusicFontSymbol[];
235 const num: number = h.beats[0].tupletNumerator;
236 const den: number = h.beats[0].tupletDenominator;
237 // list as in Guitar Pro 7. for certain tuplets only the numerator is shown
238 if (num === 2 && den === 3) {
239 s = [MusicFontSymbol.Tuplet2];
240 } else if (num === 3 && den === 2) {
241 s = [MusicFontSymbol.Tuplet3];
242 } else if (num === 4 && den === 6) {
243 s = [MusicFontSymbol.Tuplet4];
244 } else if (num === 5 && den === 4) {
245 s = [MusicFontSymbol.Tuplet5];
246 } else if (num === 6 && den === 4) {
247 s = [MusicFontSymbol.Tuplet6];
248 } else if (num === 7 && den === 4) {
249 s = [MusicFontSymbol.Tuplet7];
250 } else if (num === 9 && den === 8) {
251 s = [MusicFontSymbol.Tuplet9];
252 } else if (num === 10 && den === 8) {
253 s = [MusicFontSymbol.Tuplet1, MusicFontSymbol.Tuplet0];
254 } else if (num === 11 && den === 8) {
255 s = [MusicFontSymbol.Tuplet1, MusicFontSymbol.Tuplet1];
256 } else if (num === 12 && den === 8) {
257 s = [MusicFontSymbol.Tuplet1, MusicFontSymbol.Tuplet2];
258 } else if (num === 13 && den === 8) {
259 s = [MusicFontSymbol.Tuplet1, MusicFontSymbol.Tuplet3];
260 } else {
261 s = [];
262 const zero = MusicFontSymbol.Tuplet0 as number;
263 if (num > 10) {
264 const tens = Math.floor(num / 10);
265 s.push((zero + tens) as MusicFontSymbol);
266 s.push((zero + (num - 10 * tens)) as MusicFontSymbol);
267 } else {
268 s.push((zero + num) as MusicFontSymbol);
269 }
270
271 s.push(MusicFontSymbol.TupletColon);
272
273 if (den > 10) {
274 const tens = Math.floor(den / 10);
275 s.push((zero + tens) as MusicFontSymbol);
276 s.push((zero + (den - 10 * tens)) as MusicFontSymbol);
277 } else {

Callers

nothing calls this directly

Calls 15

floorMethod · 0.80
beatMethod · 0.80
minMethod · 0.80
maxMethod · 0.80
fillMusicFontSymbolsMethod · 0.65
getMethod · 0.65
beginPathMethod · 0.65
moveToMethod · 0.65
quadraticCurveToMethod · 0.65

Tested by

no test coverage detected