LCOV - code coverage report
Current view: top level - src/engraving/rendering/single - singlelayout.h Coverage Total Hit
Test: filtered_coverage.info Lines: 0.0 % 3 0
Test Date: 2026-11-05 04:07:02

            Line data    Source code
       1              : /*
       2              :  * SPDX-License-Identifier: GPL-3.0-only
       3              :  * MuseScore-Studio-CLA-applies
       4              :  *
       5              :  * MuseScore Studio
       6              :  * Music Composition & Notation
       7              :  *
       8              :  * Copyright (C) 2023 MuseScore Limited and others
       9              :  *
      10              :  * This program is free software: you can redistribute it and/or modify
      11              :  * it under the terms of the GNU General Public License version 3 as
      12              :  * published by the Free Software Foundation.
      13              :  *
      14              :  * This program is distributed in the hope that it will be useful,
      15              :  * but WITHOUT ANY WARRANTY; without even the implied warranty of
      16              :  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      17              :  * GNU General Public License for more details.
      18              :  *
      19              :  * You should have received a copy of the GNU General Public License
      20              :  * along with this program.  If not, see <https://www.gnu.org/licenses/>.
      21              :  */
      22              : #ifndef MU_ENGRAVING_SINGLELAYOUT_H
      23              : #define MU_ENGRAVING_SINGLELAYOUT_H
      24              : 
      25              : #include <memory>
      26              : 
      27              : #include "dom/textbase.h"
      28              : 
      29              : namespace mu::engraving {
      30              : class MStyle;
      31              : class IEngravingFont;
      32              : class EngravingItem;
      33              : class Score;
      34              : 
      35              : class Accidental;
      36              : class ActionIcon;
      37              : class Ambitus;
      38              : class Arpeggio;
      39              : class Articulation;
      40              : 
      41              : class BagpipeEmbellishment;
      42              : class BarLine;
      43              : class Bend;
      44              : class Bracket;
      45              : class Breath;
      46              : 
      47              : class Capo;
      48              : class Chord;
      49              : class ChordLine;
      50              : class Clef;
      51              : 
      52              : class DummyParent;
      53              : class Dynamic;
      54              : 
      55              : class Expression;
      56              : 
      57              : class Fermata;
      58              : class Fingering;
      59              : class FretDiagram;
      60              : class FSymbol;
      61              : 
      62              : class Glissando;
      63              : class GlissandoSegment;
      64              : class GradualTempoChange;
      65              : class GradualTempoChangeSegment;
      66              : 
      67              : class Hairpin;
      68              : class HairpinSegment;
      69              : class HarpPedalDiagram;
      70              : 
      71              : class Image;
      72              : class InstrumentChange;
      73              : 
      74              : class Jump;
      75              : 
      76              : class KeySig;
      77              : 
      78              : class LayoutBreak;
      79              : class LetRing;
      80              : class LetRingSegment;
      81              : class SLine;
      82              : class LineSegment;
      83              : class Lyrics;
      84              : 
      85              : class Marker;
      86              : class MeasureNumber;
      87              : class MeasureRepeat;
      88              : 
      89              : class NoteHead;
      90              : class NoteLine;
      91              : 
      92              : class Ornament;
      93              : class Ottava;
      94              : class OttavaSegment;
      95              : 
      96              : class PalmMute;
      97              : class PalmMuteSegment;
      98              : class Pedal;
      99              : class PedalSegment;
     100              : class PlayCountText;
     101              : class PlayTechAnnotation;
     102              : 
     103              : class RehearsalMark;
     104              : 
     105              : class Slur;
     106              : class SoundFlag;
     107              : class Spacer;
     108              : class StaffText;
     109              : class StaveSharingLabel;
     110              : class StaffTypeChange;
     111              : class Sticking;
     112              : class StringTunings;
     113              : class Symbol;
     114              : class SystemText;
     115              : 
     116              : class TempoText;
     117              : class Text;
     118              : class TextLine;
     119              : class TextLineSegment;
     120              : class TextLineBaseSegment;
     121              : class TimeSig;
     122              : class TremoloSingleChord;
     123              : class TremoloTwoChord;
     124              : class TremoloBar;
     125              : class Trill;
     126              : class TrillSegment;
     127              : 
     128              : class Vibrato;
     129              : class VibratoSegment;
     130              : class Volta;
     131              : class VoltaSegment;
     132              : }
     133              : 
     134              : namespace mu::engraving::rendering::single {
     135              : class SingleLayout
     136              : {
     137              : public:
     138              :     SingleLayout() = default;
     139              : 
     140              :     static void layoutItem(engraving::EngravingItem* item);
     141              : 
     142              :     struct Context {
     143            0 :         Context(engraving::Score* s)
     144            0 :             : m_score(s) {}
     145              : 
     146              :         const engraving::MStyle& style() const;
     147              :         std::shared_ptr<engraving::IEngravingFont> engravingFont() const;
     148              :         engraving::DummyParent* dummyParent() const;
     149              : 
     150              :         //! NOTE Temporarily, do not use
     151            0 :         engraving::Score* dontUseScore() const { return m_score; }
     152              : 
     153              :     private:
     154              :         engraving::Score* m_score = nullptr;
     155              :     };
     156              : 
     157              :     static void layout(Accidental* item, const Context& ctx);
     158              :     static void layout(ActionIcon* item, const Context& ctx);
     159              :     static void layout(Ambitus* item, const Context& ctx);
     160              :     static void layout(Arpeggio* item, const Context& ctx);
     161              :     static void layout(ChordBracket* item, const Context& ctx);
     162              :     static void layout(Articulation* item, const Context& ctx);
     163              : 
     164              :     static void layout(BagpipeEmbellishment* item, const Context& ctx);
     165              :     static void layout(BarLine* item, const Context& ctx);
     166              :     static void layout(Bend* item, const Context& ctx);
     167              :     static void layout(Bracket* item, const Context& ctx);
     168              :     static void layout(Breath* item, const Context&);
     169              : 
     170              :     static void layout(Capo* item, const Context& ctx);
     171              :     static void layout(Chord* item, const Context& ctx);
     172              :     static void layout(ChordLine* item, const Context& ctx);
     173              :     static void layout(Clef* item, const Context& ctx);
     174              : 
     175              :     static void layout(Dynamic* item, const Context& ctx);
     176              : 
     177              :     static void layout(Expression* item, const Context& ctx);
     178              : 
     179              :     static void layout(Fermata* item, const Context& ctx);
     180              :     static void layout(Fingering* item, const Context& ctx);
     181              :     static void layout(FretDiagram* item, const Context& ctx);
     182              :     static void layout(FSymbol* item, const Context& ctx);
     183              : 
     184              :     static void layout(Glissando* item, const Context& ctx);
     185              :     static void layout(GradualTempoChange* item, const Context& ctx);
     186              :     static void layout(GuitarBend* item, const Context& ctx);
     187              : 
     188              :     static void layout(Hairpin* item, const Context& ctx);
     189              :     static void layout(HammerOnPullOff* item, const Context& ctx);
     190              :     static void layout(HammerOnPullOffSegment* item, const Context& ctx);
     191              :     static void layout(HarpPedalDiagram* item, const Context& ctx);
     192              : 
     193              :     static void layout(Image* item, const Context& ctx);
     194              :     static void layout(InstrumentChange* item, const Context& ctx);
     195              : 
     196              :     static void layout(Jump* item, const Context& ctx);
     197              : 
     198              :     static void layout(KeySig* item, const Context& ctx);
     199              : 
     200              :     static void layout(LayoutBreak* item, const Context& ctx);
     201              :     static void layout(LetRing* item, const Context& ctx);
     202              :     static void layout(Lyrics* item, const Context& ctx);
     203              : 
     204              :     static void layout(NoteHead* item, const Context& ctx);
     205              :     static void layout(NoteLine* item, const Context& ctx);
     206              : 
     207              :     static void layout(Marker* item, const Context& ctx);
     208              :     static void layout(MeasureNumber* item, const Context& ctx);
     209              :     static void layout(MeasureRepeat* item, const Context& ctx);
     210              : 
     211              :     static void layout(Ornament* item, const Context& ctx);
     212              :     static void layout(Ottava* item, const Context& ctx);
     213              : 
     214              :     static void layout(PalmMute* item, const Context& ctx);
     215              :     static void layout(Pedal* item, const Context& ctx);
     216              :     static void layout(PlayCountText* item, const Context& ctx);
     217              :     static void layout(PlayTechAnnotation* item, const Context& ctx);
     218              : 
     219              :     static void layout(RehearsalMark* item, const Context& ctx);
     220              : 
     221              :     static void layout(Slur* item, const Context& ctx);
     222              :     static void layout(SoundFlag* item, const Context& ctx);
     223              :     static void layout(Spacer* item, const Context&);
     224              :     static void layout(StaffText* item, const Context& ctx);
     225              :     static void layout(StaveSharingLabel* item, const Context& ctx);
     226              :     static void layout(StaffTypeChange* item, const Context& ctx);
     227              :     static void layout(Stem* item, const Context& ctx);
     228              :     static void layout(Sticking* item, const Context& ctx);
     229              :     static void layout(StringTunings* item, const Context& ctx);
     230              :     static void layout(Symbol* item, const Context& ctx);
     231              :     static void layout(SystemText* item, const Context& ctx);
     232              : 
     233              :     static void layout(Tapping* item, const Context& ctx);
     234              :     static void layout(TempoText* item, const Context& ctx);
     235              :     static void layout(TextLine* item, const Context& ctx);
     236              :     static void layout(TimeSig* item, const Context& ctx);
     237              :     static void layout(TremoloSingleChord* item, const Context& ctx);
     238              :     static void layout(TremoloTwoChord* item, const Context& ctx);
     239              :     static void layout(TremoloBar* item, const Context& ctx);
     240              :     static void layout(Trill* item, const Context& ctx);
     241              : 
     242              :     static void layout(Vibrato* item, const Context& ctx);
     243              :     static void layout(Volta* item, const Context& ctx);
     244              :     static void layout(WhammyBar* item, const Context& ctx);
     245              : 
     246              : private:
     247              :     static void layout(GlissandoSegment* item, const Context& ctx);
     248              :     static void layout(GradualTempoChangeSegment* item, const Context& ctx);
     249              :     static void layout(GuitarBendSegment* item, const Context& ctx);
     250              :     static void layout(HairpinSegment* item, const Context& ctx);
     251              :     static void layout(LetRingSegment* item, const Context& ctx);
     252              :     static void layout(OttavaSegment* item, const Context& ctx);
     253              :     static void layout(PalmMuteSegment* item, const Context& ctx);
     254              :     static void layout(PedalSegment* item, const Context& ctx);
     255              :     static void layout(TextLineSegment* item, const Context& ctx);
     256              :     static void layout(TrillSegment* item, const Context& ctx);
     257              :     static void layout(VibratoSegment* item, const Context& ctx);
     258              :     static void layout(VoltaSegment* item, const Context& ctx);
     259              :     static void layout(WhammyBarSegment* item, const Context& ctx);
     260              : 
     261              :     static void layout(Text* item, const Context& ctx);
     262              :     static void layoutTextBase(const TextBase* item, const Context& ctx, TextBase::LayoutData* ldata);
     263              :     static void layout1TextBase(const TextBase* item, const Context& ctx, TextBase::LayoutData* ldata);
     264              : 
     265              :     static void layoutLine(SLine* item, const Context& ctx);
     266              :     static void layoutLineSegment(LineSegment* item, const Context& ctx);
     267              :     static void layoutTextLineBaseSegment(TextLineBaseSegment* item, const Context& ctx);
     268              : 
     269              :     static void layoutGroupBracket(Bracket* item, const Context& ctx);
     270              : };
     271              : }
     272              : 
     273              : #endif // MU_ENGRAVING_SINGLELAYOUT_H
        

Generated by: LCOV version 2.0-1