MuseScore  3.4
Music composition and notation
sym.h
Go to the documentation of this file.
1 //=============================================================================
2 // MuseScore
3 // Music Composition & Notation
4 //
5 // Copyright (C) 2002-2011 Werner Schweer
6 //
7 // This program is free software; you can redistribute it and/or modify
8 // it under the terms of the GNU General Public License version 2
9 // as published by the Free Software Foundation and appearing in
10 // the file LICENCE.GPL
11 //=============================================================================
12 
13 #ifndef __SYM_H__
14 #define __SYM_H__
15 
16 #include "config.h"
17 
18 #include "ft2build.h"
19 #include FT_FREETYPE_H
20 
21 namespace Ms {
22 
23 enum class Sid;
24 
25 //---------------------------------------------------------
26 // SymId
27 // must be in sync with symNames
28 //---------------------------------------------------------
29 
30 enum class SymId {
31 
32  // SMuFL standard symbol ID's
33 
34  noSym,
253  accdnCombDot,
270  accdnPull,
271  accdnPush,
537  arpeggiatoUp,
543  arrowBlackUp,
551  arrowOpenUp,
559  arrowWhiteUp,
628  barlineFinal,
629  barlineHeavy,
632  barlineShort,
634  barlineTick,
651  brace,
652  bracket,
654  bracketTop,
655  brassBend,
668  brassFlip,
683  brassPlop,
684  brassScoop,
685  brassSmear,
691  bridgeClef,
692  buzzRoll,
693  cClef,
694  cClef8vb,
696  cClefArrowUp,
697  cClefChange,
700  cClefSquare,
701  caesura,
703  caesuraShort,
704  caesuraThick,
710  chantCaesura,
711  chantCclef,
736  chantEpisema,
737  chantFclef,
749  chantPunctum,
762  chantStaff,
771  chantVirgula,
772  clef15,
773  clef8,
775  coda,
776  codaSquare,
802  csymMinor,
805  curlewSign,
806  daCapo,
807  dalSegno,
833  dynamicFF,
834  dynamicFFF,
835  dynamicFFFF,
836  dynamicFFFFF,
838  dynamicForte,
845  dynamicMF,
846  dynamicMP,
848  dynamicMezzo,
851  dynamicPF,
852  dynamicPP,
853  dynamicPPP,
854  dynamicPPPP,
855  dynamicPPPPP,
857  dynamicPiano,
868  dynamicZ,
878  elecAudioIn,
880  elecAudioOut,
882  elecCamera,
883  elecDataIn,
884  elecDataOut,
885  elecDisc,
886  elecDownload,
887  elecEject,
890  elecHeadset,
891  elecLineIn,
892  elecLineOut,
893  elecLoop,
901  elecMIDIIn,
902  elecMIDIOut,
907  elecMonitor,
908  elecMute,
909  elecPause,
910  elecPlay,
913  elecReplay,
914  elecRewind,
915  elecShuffle,
918  elecStop,
919  elecTape,
920  elecUSB,
921  elecUnmute,
922  elecUpload,
924  elecVideoIn,
925  elecVideoOut,
934  fClef,
935  fClef15ma,
936  fClef15mb,
937  fClef8va,
938  fClef8vb,
940  fClefArrowUp,
941  fClefChange,
943  fClefTurned,
944  fermataAbove,
945  fermataBelow,
958  figbass0,
959  figbass1,
960  figbass2,
962  figbass3,
963  figbass4,
965  figbass5,
969  figbass6,
972  figbass7,
976  figbass8,
977  figbass9,
985  figbassFlat,
989  figbassPlus,
990  figbassSharp,
991  fingering0,
992  fingering1,
993  fingering2,
994  fingering3,
995  fingering4,
996  fingering5,
1012  flag1024thUp,
1013  flag128thDown,
1014  flag128thUp,
1015  flag16thDown,
1016  flag16thUp,
1017  flag256thDown,
1018  flag256thUp,
1019  flag32ndDown,
1020  flag32ndUp,
1021  flag512thDown,
1022  flag512thUp,
1023  flag64thDown,
1024  flag64thUp,
1025  flag8thDown,
1026  flag8thUp,
1038  fretboardO,
1039  fretboardX,
1044  functionDD,
1047  functionEight,
1049  functionFive,
1050  functionFour,
1063  functionMinus,
1067  functionNine,
1068  functionOne,
1073  functionPlus,
1077  functionRing,
1082  functionSeven,
1083  functionSix,
1087  functionThree,
1088  functionTwo,
1091  functionZero,
1092  gClef,
1093  gClef15ma,
1094  gClef15mb,
1095  gClef8va,
1096  gClef8vb,
1097  gClef8vbCClef,
1098  gClef8vbOld,
1101  gClefArrowUp,
1102  gClefChange,
1105  gClefReversed,
1106  gClefTurned,
1107  glissandoDown,
1108  glissandoUp,
1118  guitarFadeIn,
1119  guitarFadeOut,
1120  guitarGolpe,
1125  guitarShake,
1126  guitarString0,
1127  guitarString1,
1128  guitarString2,
1129  guitarString3,
1130  guitarString4,
1131  guitarString5,
1132  guitarString6,
1133  guitarString7,
1134  guitarString8,
1135  guitarString9,
1137  guitarStrumUp,
1147  handbellsGyro,
1161  harpMetalRod,
1187  harpTuningKey,
1232  kievanCClef,
1244  kodalyHandDo,
1245  kodalyHandFa,
1246  kodalyHandLa,
1247  kodalyHandMi,
1248  kodalyHandRe,
1249  kodalyHandSo,
1250  kodalyHandTi,
1252  legerLine,
1254  legerLineWide,
1353  lyricsElision,
1365  medRenNatural,
1386  mensuralCclef,
1415  mensuralFclef,
1417  mensuralGclef,
1520  metNote16thUp,
1524  metNote32ndUp,
1528  metNote64thUp,
1530  metNote8thUp,
1534  metNoteHalfUp,
1537  metNoteWhole,
1540  miscDoNotCopy,
1544  note1024thUp,
1545  note128thDown,
1546  note128thUp,
1547  note16thDown,
1548  note16thUp,
1549  note256thDown,
1550  note256thUp,
1551  note32ndDown,
1552  note32ndUp,
1553  note512thDown,
1554  note512thUp,
1555  note64thDown,
1556  note64thUp,
1557  note8thDown,
1558  note8thUp,
1559  noteABlack,
1561  noteAFlatHalf,
1563  noteAHalf,
1567  noteAWhole,
1568  noteBBlack,
1570  noteBFlatHalf,
1572  noteBHalf,
1576  noteBWhole,
1577  noteCBlack,
1579  noteCFlatHalf,
1581  noteCHalf,
1585  noteCWhole,
1586  noteDBlack,
1588  noteDFlatHalf,
1590  noteDHalf,
1594  noteDWhole,
1595  noteDoBlack,
1596  noteDoHalf,
1597  noteDoWhole,
1600  noteEBlack,
1602  noteEFlatHalf,
1604  noteEHalf,
1608  noteEWhole,
1610  noteEmptyHalf,
1612  noteFBlack,
1614  noteFFlatHalf,
1616  noteFHalf,
1620  noteFWhole,
1621  noteFaBlack,
1622  noteFaHalf,
1623  noteFaWhole,
1624  noteGBlack,
1626  noteGFlatHalf,
1628  noteGHalf,
1632  noteGWhole,
1633  noteHBlack,
1634  noteHHalf,
1638  noteHWhole,
1639  noteHalfDown,
1640  noteHalfUp,
1641  noteLaBlack,
1642  noteLaHalf,
1643  noteLaWhole,
1644  noteMiBlack,
1645  noteMiHalf,
1646  noteMiWhole,
1648  noteQuarterUp,
1649  noteReBlack,
1650  noteReHalf,
1651  noteReWhole,
1694  noteSiBlack,
1695  noteSiHalf,
1696  noteSiWhole,
1697  noteSoBlack,
1698  noteSoHalf,
1699  noteSoWhole,
1700  noteTiBlack,
1701  noteTiHalf,
1702  noteTiWhole,
1703  noteWhole,
1704  noteheadBlack,
1770  noteheadHalf,
1785  noteheadNull,
1853  noteheadWhole,
1858  noteheadXHalf,
1866  octaveBassa,
1867  octaveLoco,
1879  ornamentComma,
1883  ornamentHaydn,
1950  ornamentTrill,
1951  ornamentTurn,
1960  ottava,
1961  ottavaAlta,
1962  ottavaBassa,
1963  ottavaBassaBa,
1964  ottavaBassaVb,
1966  pictAgogo,
1968  pictAnvil,
1971  pictBassDrum,
1973  pictBeaterBow,
1974  pictBeaterBox,
2074  pictBell,
2076  pictBellPlate,
2077  pictBellTree,
2080  pictBongos,
2081  pictBrakeDrum,
2082  pictCabasa,
2083  pictCannon,
2084  pictCarHorn,
2085  pictCastanets,
2087  pictCelesta,
2088  pictCencerro,
2089  pictCenter1,
2090  pictCenter2,
2091  pictCenter3,
2093  pictChimes,
2096  pictClaves,
2097  pictCoins,
2098  pictConga,
2099  pictCowBell,
2101  pictCrotales,
2102  pictCrushStem,
2103  pictCuica,
2105  pictDamp1,
2106  pictDamp2,
2107  pictDamp3,
2108  pictDamp4,
2110  pictDrumStick,
2111  pictDuckCall,
2113  pictEmptyTrap,
2115  pictFlexatone,
2118  pictGlassHarp,
2121  pictGlsp,
2124  pictGong,
2126  pictGuiro,
2130  pictGumHardUp,
2138  pictGumSoftUp,
2139  pictHalfOpen1,
2140  pictHalfOpen2,
2141  pictHandbell,
2142  pictHiHat,
2144  pictJawHarp,
2148  pictLionsRoar,
2150  pictLogDrum,
2152  pictMar,
2154  pictMaraca,
2155  pictMaracas,
2156  pictMegaphone,
2161  pictOnRim,
2162  pictOpen,
2166  pictQuijada,
2167  pictRainstick,
2168  pictRatchet,
2169  pictRecoReco,
2171  pictRim1,
2172  pictRim2,
2173  pictRim3,
2182  pictSiren,
2183  pictSistrum,
2188  pictSlitDrum,
2189  pictSnareDrum,
2193  pictStickShot,
2194  pictSuperball,
2196  pictSwishStem,
2197  pictTabla,
2198  pictTamTam,
2202  pictTenorDrum,
2204  pictTimbales,
2205  pictTimpani,
2206  pictTomTom,
2210  pictTriangle,
2211  pictTubaphone,
2216  pictVib,
2219  pictVibraslap,
2221  pictWhip,
2225  pictWoodBlock,
2234  pictXyl,
2235  pictXylBass,
2237  pictXylTenor,
2239  pictXylTrough,
2241  pluckedDamp,
2250  quindicesima,
2254  repeat1Bar,
2255  repeat2Bars,
2256  repeat4Bars,
2257  repeatDot,
2258  repeatDots,
2259  repeatLeft,
2260  repeatRight,
2262  rest1024th,
2263  rest128th,
2264  rest16th,
2265  rest256th,
2266  rest32nd,
2267  rest512th,
2268  rest64th,
2269  rest8th,
2272  restHBar,
2273  restHBarLeft,
2275  restHBarRight,
2276  restHalf,
2278  restLonga,
2279  restMaxima,
2280  restQuarter,
2282  restQuarterZ,
2283  restWhole,
2285  reversedBrace,
2289  schaefferClef,
2293  segno,
2294  segnoSerpent1,
2295  segnoSerpent2,
2298  smnFlat,
2299  smnFlatWhite,
2304  smnNatural,
2305  smnSharp,
2306  smnSharpDown,
2307  smnSharpWhite,
2310  staff1Line,
2313  staff2Lines,
2316  staff3Lines,
2319  staff4Lines,
2322  staff5Lines,
2325  staff6Lines,
2347  stem,
2350  stemBuzzRoll,
2351  stemDamp,
2357  stemRimShot,
2361  stemSwished,
2380  stringsMuteOn,
2388  stringsUpBow,
2391  systemDivider,
2407  textTie,
2414  timeSig0,
2417  timeSig1,
2420  timeSig2,
2423  timeSig3,
2426  timeSig4,
2429  timeSig5,
2432  timeSig6,
2435  timeSig7,
2438  timeSig8,
2441  timeSig9,
2450  timeSigComma,
2451  timeSigCommon,
2454  timeSigCut2,
2455  timeSigCut3,
2459  timeSigEquals,
2466  timeSigMinus,
2473  timeSigPlus,
2475  timeSigSlash,
2476  timeSigX,
2477  tremolo1,
2478  tremolo2,
2479  tremolo3,
2480  tremolo4,
2481  tremolo5,
2493  tuplet0,
2494  tuplet1,
2495  tuplet2,
2496  tuplet3,
2497  tuplet4,
2498  tuplet5,
2499  tuplet6,
2500  tuplet7,
2501  tuplet8,
2502  tuplet9,
2503  tupletColon,
2508  ventiduesima,
2545  wiggleRandom1,
2546  wiggleRandom2,
2547  wiggleRandom3,
2548  wiggleRandom4,
2555  wiggleTrill,
2566  wiggleVibrato,
2602  wiggleWavy,
2616  windOpenHole,
2621  windRimOnly,
2626  windTrillKey,
2629 
2630 // EXTENSIONS
2631 // SMuFL stylistic alternates which we need to access directly
2632 
2633  noteheadDoubleWholeAlt, // double whole with double side bars
2634  fourStringTabClefSerif, // TAB clef in script style
2635  sixStringTabClefSerif, // TAB clef in script style
2636  cClefFrench,
2638  fClefFrench,
2640  braceSmall,
2641  braceLarge,
2642  braceLarger,
2643 
2644 // MuseScore local symbols, precomposed symbols to mimic some emmentaler glyphs
2645 
2650 // ornamentDownPrall,
2654 
2655 // additional symbols
2656 
2657  noteLongaUp,
2658  noteLongaDown,
2661  space,
2662 
2663 // END OF TABLE
2664 
2665  lastSym
2666  };
2667 
2668 //---------------------------------------------------------
2669 // Sym
2670 //---------------------------------------------------------
2671 
2672 class Sym {
2673  protected:
2674  int _code = -1;
2675  FT_UInt _index;
2676  QRectF _bbox;
2677  qreal _advance;
2678 
2679  QPointF _stemDownNW;
2680  QPointF _stemUpSE;
2681  QPointF _cutOutNE;
2682  QPointF _cutOutNW;
2683  QPointF _cutOutSE;
2684  QPointF _cutOutSW;
2685  std::vector<SymId> _ids; // not empty if this is a compound symbol
2686 
2687  public:
2688  Sym() { }
2689 
2690  bool isValid() const { return _code != -1; }
2691 
2692  void setSymList(const std::vector<SymId>& sl) { _ids = sl; }
2693  const std::vector<SymId>& symList() const { return _ids; }
2694 
2695  FT_UInt index() const { return _index; }
2696  void setIndex(FT_UInt i) { _index = i; }
2697 
2698  int code() const { return _code; }
2699  void setCode(int val) { _code = val; }
2700 
2701  QRectF bbox() const { return _bbox; }
2702  void setBbox(QRectF val) { _bbox = val; }
2703 
2704  qreal advance() const { return _advance; }
2705  void setAdvance(qreal val) { _advance = val; }
2706 
2707  QPointF stemDownNW() const { return _stemDownNW; }
2708  void setStemDownNW(const QPointF& r) { _stemDownNW = r; }
2709  QPointF stemUpSE() const { return _stemUpSE; }
2710  void setStemUpSE(const QPointF& r) { _stemUpSE = r; }
2711  QPointF cutOutNE() const { return _cutOutNE; }
2712  void setCutOutNE(const QPointF& r) { _cutOutNE = r; }
2713  QPointF cutOutNW() const { return _cutOutNW; }
2714  void setCutOutNW(const QPointF& r) { _cutOutNW = r; }
2715  QPointF cutOutSE() const { return _cutOutSE; }
2716  void setCutOutSE(const QPointF& r) { _cutOutSE = r; }
2717  QPointF cutOutSW() const { return _cutOutSW; }
2718  void setCutOutSW(const QPointF& r) { _cutOutSW = r; }
2719 
2720  static SymId name2id(const QString& s) { return lnhash.value(s, SymId::noSym); } // return noSym if not found
2721  static SymId oldName2id(const QString s) { return lonhash.value(s, SymId::noSym);}
2722  static const char* id2name(SymId id);
2723 
2724  static QString id2userName(SymId id) { return qApp->translate("symUserNames", symUserNames[int(id)]); }
2725  static SymId userName2id(const QString& s);
2726 
2727  static const std::array<const char*, int (SymId::lastSym)+1> symNames;
2728  static const std::array<const char*, int(SymId::lastSym)+1> symUserNames;
2729  static const QVector<SymId> commonScoreSymbols;
2730 
2731  static QHash<QString, SymId> lnhash;
2732  static QHash<QString, SymId> lonhash;
2733  friend class ScoreFont;
2734  };
2735 
2736 //---------------------------------------------------------
2737 // GlyphKey
2738 //---------------------------------------------------------
2739 
2740 struct GlyphKey {
2741  FT_Face face;
2743  qreal magX;
2744  qreal magY;
2745  qreal worldScale;
2746  QColor color;
2747 
2748  public:
2749  GlyphKey(FT_Face _f, SymId _id, float mx, float my, float s, QColor c)
2750  : face(_f), id(_id), magX(mx), magY(my), worldScale(s), color(c) {}
2751  bool operator==(const GlyphKey&) const;
2752  };
2753 
2754 struct GlyphPixmap {
2755  QPixmap pm;
2756  QPointF offset;
2757  };
2758 
2759 inline uint qHash(const GlyphKey& k)
2760  {
2761  return (int(k.id) << 16) + (int(k.magX * 100) << 8) + k.magY * 100;
2762  }
2763 
2764 //---------------------------------------------------------
2765 // ScoreFont
2766 //---------------------------------------------------------
2767 
2768 class ScoreFont {
2769  FT_Face face = 0;
2770  QVector<Sym> _symbols;
2771  QString _name;
2772  QString _family;
2773  QString _fontPath;
2774  QString _filename;
2775  QByteArray fontImage;
2776  QCache<GlyphKey, GlyphPixmap>* cache { 0 };
2777  std::list<std::pair<Sid, QVariant>> _engravingDefaults;
2778  double _textEnclosureThickness = 0;
2779  mutable QFont* font { 0 };
2780 
2781  static QVector<ScoreFont> _scoreFonts;
2782  static std::array<uint, size_t(SymId::lastSym)+1> _mainSymCodeTable;
2783  void load();
2784  void computeMetrics(Sym* sym, int code);
2785 
2786  public:
2788  ScoreFont(const ScoreFont&);
2789  ScoreFont(const char* n, const char* f, const char* p, const char* fn)
2790  : _name(n), _family(f), _fontPath(p), _filename(fn) {
2791  _symbols = QVector<Sym>(int(SymId::lastSym) + 1);
2792  }
2793  ~ScoreFont();
2794 
2795  const QString& name() const { return _name; }
2796  const QString& family() const { return _family; }
2797  std::list<std::pair<Sid, QVariant>> engravingDefaults() { return _engravingDefaults; }
2798  double textEnclosureThickness() { return _textEnclosureThickness; }
2799 
2800  QString fontPath() const { return _fontPath; }
2801 
2802  static ScoreFont* fontFactory(QString);
2803  static ScoreFont* fallbackFont();
2804  static const char* fallbackTextFont();
2805  static const QVector<ScoreFont>& scoreFonts() { return _scoreFonts; }
2806  static QJsonObject initGlyphNamesJson();
2807 
2808  QString toString(SymId) const;
2809  QPixmap sym2pixmap(SymId, qreal) { return QPixmap(); } // TODOxxxx
2810 
2811  void draw(SymId id, QPainter*, const QSizeF& mag, const QPointF& pos, qreal scale) const;
2812  void draw(SymId id, QPainter*, qreal mag, const QPointF& pos, qreal scale) const;
2813  void draw(SymId id, QPainter*, qreal mag, const QPointF& pos) const;
2814  void draw(SymId id, QPainter*, const QSizeF& mag, const QPointF& pos) const;
2815  void draw(SymId id, QPainter*, qreal mag, const QPointF& pos, int n) const;
2816  void draw(const std::vector<SymId>&, QPainter*, qreal mag, const QPointF& pos) const;
2817  void draw(const std::vector<SymId>&, QPainter*, const QSizeF& mag, const QPointF& pos) const;
2818  void draw(const std::vector<SymId>&, QPainter*, qreal mag, const QPointF& pos, qreal scale) const;
2819  void draw(const std::vector<SymId>&, QPainter*, const QSizeF& mag, const QPointF& pos, qreal scale) const;
2820 
2821  qreal height(SymId id, qreal mag) const { return bbox(id, mag).height(); }
2822  qreal width(SymId id, qreal mag) const { return bbox(id, mag).width(); }
2823  qreal advance(SymId id, qreal mag) const;
2824  qreal width(const std::vector<SymId>&, qreal mag) const;
2825 
2826  const QRectF bbox(SymId id, const QSizeF&) const;
2827  const QRectF bbox(SymId id, qreal mag) const;
2828  const QRectF bbox(const std::vector<SymId>& s, const QSizeF& mag) const;
2829  const QRectF bbox(const std::vector<SymId>& s, qreal mag) const;
2830  QPointF stemDownNW(SymId id, qreal mag) const;
2831  QPointF stemUpSE(SymId id, qreal mag) const;
2832  QPointF cutOutNE(SymId id, qreal mag) const;
2833  QPointF cutOutNW(SymId id, qreal mag) const;
2834  QPointF cutOutSE(SymId id, qreal mag) const;
2835  QPointF cutOutSW(SymId id, qreal mag) const;
2836 
2837  bool isValid(SymId id) const { return sym(id).isValid(); }
2838  bool useFallbackFont(SymId id) const;
2839 
2840  const Sym& sym(SymId id) const { return _symbols[int(id)]; }
2841 
2842  friend void initScoreFonts();
2843  };
2844 
2845 extern void initScoreFonts();
2846 
2847 } // namespace Ms
2848 
2849 Q_DECLARE_METATYPE(Ms::SymId);
2850 #endif
2851 
static SymId name2id(const QString &s)
Definition: sym.h:2720
QPointF _cutOutSW
Definition: sym.h:2684
FT_UInt _index
Definition: sym.h:2675
void setBbox(QRectF val)
Definition: sym.h:2702
qreal height(SymId id, qreal mag) const
Definition: sym.h:2821
int code() const
Definition: sym.h:2698
QRectF bbox() const
Definition: sym.h:2701
FT_UInt index() const
Definition: sym.h:2695
QPointF cutOutNW() const
Definition: sym.h:2713
void setCutOutSW(const QPointF &r)
Definition: sym.h:2718
static std::array< uint, size_t(SymId::lastSym)+1 > _mainSymCodeTable
Definition: sym.h:2782
std::list< std::pair< Sid, QVariant > > _engravingDefaults
Definition: sym.h:2777
SymId id
Definition: sym.h:2742
const QString & family() const
Definition: sym.h:2796
std::vector< SymId > _ids
Definition: sym.h:2685
qreal magY
Definition: sym.h:2744
static QVector< ScoreFont > _scoreFonts
Definition: sym.h:2781
SymId
Definition: sym.h:30
QPointF _cutOutSE
Definition: sym.h:2683
QPointF _cutOutNE
Definition: sym.h:2681
static QString id2userName(SymId id)
Definition: sym.h:2724
QString _filename
Definition: sym.h:2774
QString _name
Definition: sym.h:2771
QPointF offset
Definition: sym.h:2756
qreal magX
Definition: sym.h:2743
const char * toString(Direction val)
Definition: mscore.cpp:176
qreal _advance
Definition: sym.h:2677
QString _family
Definition: sym.h:2772
void setSymList(const std::vector< SymId > &sl)
Definition: sym.h:2692
qreal worldScale
Definition: sym.h:2745
Sym()
Definition: sym.h:2688
void setCutOutNW(const QPointF &r)
Definition: sym.h:2714
void setCutOutNE(const QPointF &r)
Definition: sym.h:2712
QRectF _bbox
Definition: sym.h:2676
void setCode(int val)
Definition: sym.h:2699
static QHash< QString, SymId > lonhash
Definition: sym.h:2732
QPointF cutOutSE() const
Definition: sym.h:2715
const std::vector< SymId > & symList() const
Definition: sym.h:2693
qreal width(SymId id, qreal mag) const
Definition: sym.h:2822
QString fontPath() const
Definition: sym.h:2800
Definition: sym.h:2768
Definition: sym.h:2672
void setStemDownNW(const QPointF &r)
Definition: sym.h:2708
bool isValid() const
Definition: sym.h:2690
QByteArray fontImage
Definition: sym.h:2775
double textEnclosureThickness()
Definition: sym.h:2798
QString _fontPath
Definition: sym.h:2773
static SymId oldName2id(const QString s)
Definition: sym.h:2721
static const QVector< SymId > commonScoreSymbols
Definition: sym.h:2729
QPointF cutOutSW() const
Definition: sym.h:2717
FT_Face face
Definition: sym.h:2741
Definition: aeolus.cpp:26
void setCutOutSE(const QPointF &r)
Definition: sym.h:2716
std::list< std::pair< Sid, QVariant > > engravingDefaults()
Definition: sym.h:2797
QPointF stemUpSE() const
Definition: sym.h:2709
Sid
Definition: style.h:33
QVector< Sym > _symbols
Definition: sym.h:2770
QPointF _stemDownNW
Definition: sym.h:2679
const QString & name() const
Definition: sym.h:2795
static const std::array< const char *, int(SymId::lastSym)+1 > symNames
Definition: sym.h:2727
void setAdvance(qreal val)
Definition: sym.h:2705
void setIndex(FT_UInt i)
Definition: sym.h:2696
Definition: sym.h:2754
QPointF stemDownNW() const
Definition: sym.h:2707
static const QVector< ScoreFont > & scoreFonts()
Definition: sym.h:2805
void initScoreFonts()
Definition: sym.cpp:5836
QPointF _stemUpSE
Definition: sym.h:2680
static QHash< QString, SymId > lnhash
Definition: sym.h:2731
QColor color
Definition: sym.h:2746
const Sym & sym(SymId id) const
Definition: sym.h:2840
ScoreFont(const char *n, const char *f, const char *p, const char *fn)
Definition: sym.h:2789
bool isValid(SymId id) const
Definition: sym.h:2837
ScoreFont()
Definition: sym.h:2787
QPixmap pm
Definition: sym.h:2755
QPointF _cutOutNW
Definition: sym.h:2682
qreal advance() const
Definition: sym.h:2704
static const std::array< const char *, int(SymId::lastSym)+1 > symUserNames
Definition: sym.h:2728
Definition: sym.h:2740
uint qHash(const GlyphKey &k)
Definition: sym.h:2759
QPixmap sym2pixmap(SymId, qreal)
Definition: sym.h:2809
QPointF cutOutNE() const
Definition: sym.h:2711
GlyphKey(FT_Face _f, SymId _id, float mx, float my, float s, QColor c)
Definition: sym.h:2749
void setStemUpSE(const QPointF &r)
Definition: sym.h:2710