LCOV - code coverage report
Current view: top level - src/engraving - iengravingfont.h Coverage Total Hit
Test: filtered_coverage.info Lines: 100.0 % 1 1
Test Date: 2026-11-05 04:07:02

            Line data    Source code
       1              : #ifndef MU_ENGRAVING_IENGRAVINGFONT_H
       2              : #define MU_ENGRAVING_IENGRAVINGFONT_H
       3              : 
       4              : #include <memory>
       5              : 
       6              : #include "global/types/string.h"
       7              : #include "draw/types/geometry.h"
       8              : 
       9              : #include "types/symid.h"
      10              : #include "style/styledef.h"
      11              : 
      12              : namespace muse::draw {
      13              : class Painter;
      14              : }
      15              : 
      16              : namespace mu::engraving {
      17              : class Shape;
      18              : class EngravingItem;
      19              : 
      20              : class IEngravingFont
      21              : {
      22              : public:
      23              : 
      24          122 :     virtual ~IEngravingFont() = default;
      25              : 
      26              :     virtual const std::string& name() const = 0;
      27              :     virtual const std::string& family() const = 0;
      28              : 
      29              :     // Misc
      30              :     virtual bool isValid(SymId id) const = 0;
      31              :     virtual char32_t symCode(SymId id) const = 0;
      32              :     virtual SymId fromCode(char32_t code) const = 0;
      33              :     virtual String toString(SymId id) const = 0;
      34              : 
      35              :     virtual std::unordered_map<Sid, PropertyValue> engravingDefaults() const = 0;
      36              : 
      37              :     // Metrics
      38              :     virtual double width(SymId id, double mag) const = 0;
      39              :     virtual double width(const SymIdList&, double mag) const = 0;
      40              :     virtual double height(SymId id, double mag) const = 0;
      41              :     virtual double advance(SymId id, double mag) const = 0;
      42              : 
      43              :     virtual RectF bbox(SymId id, double mag) const = 0;
      44              :     virtual RectF bbox(SymId id, const SizeF&) const = 0;
      45              :     virtual RectF bbox(const SymIdList& sl, double mag) const = 0;
      46              :     virtual RectF bbox(const SymIdList& s, const SizeF& mag) const = 0;
      47              :     virtual Shape shape(const SymIdList& s, double mag) const = 0;
      48              :     virtual Shape shape(const SymIdList& s, const SizeF& mag) const = 0;
      49              :     virtual Shape shapeWithCutouts(SymId id, double mag) = 0;
      50              :     virtual Shape shapeWithCutouts(SymId id, const SizeF& mag) = 0;
      51              : 
      52              :     virtual PointF smuflAnchor(SymId symId, SmuflAnchorId anchorId, double mag) const = 0;
      53              : 
      54              :     // Draw
      55              :     virtual void draw(SymId id, muse::draw::Painter* p, double mag, const PointF& pos, const double angle = 0) const = 0;
      56              :     virtual void draw(SymId id, muse::draw::Painter* p, const SizeF& mag, const PointF& pos, const double angle = 0) const = 0;
      57              :     virtual void draw(const SymIdList& ids, muse::draw::Painter* p, double mag, const PointF& pos, const double angle = 0) const = 0;
      58              :     virtual void draw(const SymIdList& ids, muse::draw::Painter* p, const SizeF& mag, const PointF& pos, const double angle = 0) const = 0;
      59              : };
      60              : 
      61              : using IEngravingFontPtr = std::shared_ptr<IEngravingFont>;
      62              : }
      63              : 
      64              : #endif // MU_ENGRAVING_IENGRAVINGFONT_H
        

Generated by: LCOV version 2.0-1