Skip to content

Commit

Permalink
update text style implementation
Browse files Browse the repository at this point in the history
  • Loading branch information
wschweer committed Aug 1, 2018
1 parent e767cab commit 10ebbb9
Show file tree
Hide file tree
Showing 101 changed files with 4,838 additions and 4,045 deletions.
2 changes: 1 addition & 1 deletion libmscore/CMakeLists.txt
Expand Up @@ -52,7 +52,7 @@ add_library (
score.cpp segment.cpp select.cpp shadownote.cpp slur.cpp tie.cpp slurtie.cpp
spacer.cpp spanner.cpp staff.cpp staffstate.cpp
stafftextbase.cpp stafftext.cpp systemtext.cpp stafftype.cpp stem.cpp style.cpp symbol.cpp
sym.cpp system.cpp stringdata.cpp tempotext.cpp text.cpp textedit.cpp
sym.cpp system.cpp stringdata.cpp tempotext.cpp text.cpp textbase.cpp textedit.cpp
textframe.cpp textline.cpp textlinebase.cpp timesig.cpp
tremolobar.cpp tremolo.cpp trill.cpp tuplet.cpp
utils.cpp velo.cpp volta.cpp xmlreader.cpp xmlwriter.cpp mscore.cpp
Expand Down
8 changes: 6 additions & 2 deletions libmscore/beam.cpp
Expand Up @@ -35,6 +35,10 @@

namespace Ms {

static const ElementStyle beamStyle {
{ Sid::beamNoSlope, Pid::BEAM_NO_SLOPE },
};

//---------------------------------------------------------
// BeamFragment
// position of primary beam
Expand All @@ -54,7 +58,7 @@ struct BeamFragment {
Beam::Beam(Score* s)
: Element(s)
{
initSubStyle(SubStyleId::BEAM);
initElementStyle(&beamStyle);
_direction = Direction::AUTO;
_up = true;
_distribute = false;
Expand Down Expand Up @@ -2379,7 +2383,7 @@ bool Beam::setProperty(Pid propertyId, const QVariant& v)
QVariant Beam::propertyDefault(Pid id) const
{
switch (id) {
case Pid::SUB_STYLE: return int(SubStyleId::BEAM);
// case Pid::SUB_STYLE: return int(Tid::BEAM);
case Pid::STEM_DIRECTION: return QVariant::fromValue<Direction>(Direction::AUTO);
case Pid::DISTRIBUTE: return false;
case Pid::GROW_LEFT: return 1.0;
Expand Down
11 changes: 10 additions & 1 deletion libmscore/bend.cpp
Expand Up @@ -30,14 +30,23 @@ static const char* label[] = {
"2 1/4", "2 1/2", "2 3/4", "3"
};

static const ElementStyle bendStyle {
{ Sid::bendFontFace, Pid::FONT_FACE },
{ Sid::bendFontSize, Pid::FONT_SIZE },
{ Sid::bendFontBold, Pid::FONT_BOLD },
{ Sid::bendFontItalic, Pid::FONT_ITALIC },
{ Sid::bendFontUnderline, Pid::FONT_UNDERLINE },
{ Sid::bendLineWidth, Pid::LINE_WIDTH },
};

//---------------------------------------------------------
// Bend
//---------------------------------------------------------

Bend::Bend(Score* s)
: Element(s, ElementFlag::MOVABLE)
{
initSubStyle(SubStyleId::BEND);
initElementStyle(&bendStyle);
}

//---------------------------------------------------------
Expand Down
18 changes: 11 additions & 7 deletions libmscore/box.cpp
Expand Up @@ -30,6 +30,14 @@

namespace Ms {

static const ElementStyle boxStyle {
{ Sid::systemFrameDistance, Pid::TOP_GAP },
{ Sid::frameSystemDistance, Pid::BOTTOM_GAP },
};

static const ElementStyle hBoxStyle {
};

//---------------------------------------------------------
// Box
//---------------------------------------------------------
Expand Down Expand Up @@ -401,8 +409,6 @@ bool Box::setProperty(Pid propertyId, const QVariant& v)
QVariant Box::propertyDefault(Pid id) const
{
switch(id) {
case Pid::SUB_STYLE:
return int(SubStyleId::BOX);
case Pid::BOX_HEIGHT:
case Pid::BOX_WIDTH:
return Spatium(0.0);
Expand Down Expand Up @@ -447,7 +453,7 @@ void Box::copyValues(Box* origin)
HBox::HBox(Score* score)
: Box(score)
{
initSubStyle(SubStyleId::BOX);
initElementStyle(&hBoxStyle);
setBoxWidth(Spatium(5.0));
}

Expand Down Expand Up @@ -558,7 +564,7 @@ Element* Box::drop(EditData& data)

case ElementType::STAFF_TEXT:
{
Text* text = new Text(SubStyleId::FRAME, score());
Text* text = new Text(score(), Tid::FRAME);
text->setParent(this);
text->setXmlText(toStaffText(e)->xmlText());
score()->undoAddElement(text);
Expand Down Expand Up @@ -676,8 +682,6 @@ bool HBox::setProperty(Pid propertyId, const QVariant& v)
QVariant HBox::propertyDefault(Pid id) const
{
switch(id) {
case Pid::SUB_STYLE:
return int(SubStyleId::BOX);
case Pid::CREATE_SYSTEM_HEADER:
return true;
default:
Expand All @@ -692,7 +696,7 @@ QVariant HBox::propertyDefault(Pid id) const
VBox::VBox(Score* score)
: Box(score)
{
initSubStyle(SubStyleId::BOX);
initElementStyle(&boxStyle);
setBoxHeight(Spatium(10.0));
setLineBreak(true);
}
Expand Down
4 changes: 2 additions & 2 deletions libmscore/chordrest.cpp
Expand Up @@ -549,11 +549,11 @@ Element* ChordRest::drop(EditData& data)
{
TextBase* t = toTextBase(e);
#if 0
SubStyleId st = t->subStyleId(); { SubStyleId::EMPTY };
Tid st = t->subStyleId(); { Tid::EMPTY };
// for palette items, we want to use current score text style settings
// except where the source element had explicitly overridden these via text properties
// palette text style will be relative to baseStyle, so rebase this to score
if (st >= SubStyleId::DEFAULT && fromPalette)
if (st >= Tid::DEFAULT && fromPalette)
t->textStyle().restyle(MScore::baseStyle()->textStyle(st), score()->textStyle(st));
#endif
if (e->isRehearsalMark() && fromPalette)
Expand Down
30 changes: 22 additions & 8 deletions libmscore/dynamic.cpp
Expand Up @@ -75,14 +75,27 @@ static Dyn dynList[] = {
{ 0, true, "n", "<sym>dynamicNiente</sym>" }
};

//---------------------------------------------------------
// dynamicsStyle
//---------------------------------------------------------

static const ElementStyle dynamicsStyle {
{ Sid::dynamicsFontFace, Pid::FONT_FACE },
{ Sid::dynamicsFontSize, Pid::FONT_SIZE },
{ Sid::dynamicsFontBold, Pid::FONT_BOLD },
{ Sid::dynamicsFontItalic, Pid::FONT_ITALIC },
{ Sid::dynamicsFontUnderline, Pid::FONT_UNDERLINE },
{ Sid::dynamicsAlign, Pid::ALIGN },
};

//---------------------------------------------------------
// Dynamic
//---------------------------------------------------------

Dynamic::Dynamic(Score* s)
: TextBase(s, ElementFlag::MOVABLE | ElementFlag::ON_STAFF)
: TextBase(s, Tid::DYNAMICS, ElementFlag::MOVABLE | ElementFlag::ON_STAFF)
{
initSubStyle(SubStyleId::DYNAMICS);
initElementStyle(&dynamicsStyle);
_velocity = -1;
_dynRange = Range::PART;
_dynamicType = Type::OTHER;
Expand Down Expand Up @@ -138,8 +151,6 @@ void Dynamic::read(XmlReader& e)
else if (!TextBase::readProperties(e))
e.unknown();
}
if (subStyleId() == SubStyleId::DEFAULT)
initSubStyle(SubStyleId::DYNAMICS);
}

//---------------------------------------------------------
Expand Down Expand Up @@ -323,9 +334,12 @@ void Dynamic::undoSetDynRange(Range v)
QVariant Dynamic::getProperty(Pid propertyId) const
{
switch (propertyId) {
case Pid::DYNAMIC_RANGE: return int(_dynRange);
case Pid::VELOCITY: return velocity();
case Pid::SUBTYPE: return int(_dynamicType);
case Pid::DYNAMIC_RANGE:
return int(_dynRange);
case Pid::VELOCITY:
return velocity();
case Pid::SUBTYPE:
return int(_dynamicType);
default:
return TextBase::getProperty(propertyId);
}
Expand Down Expand Up @@ -364,7 +378,7 @@ QVariant Dynamic::propertyDefault(Pid id) const
{
switch(id) {
case Pid::SUB_STYLE:
return int(SubStyleId::DYNAMICS);
return int(Tid::DYNAMICS);
case Pid::DYNAMIC_RANGE:
return int(Range::PART);
case Pid::VELOCITY:
Expand Down
2 changes: 1 addition & 1 deletion libmscore/edit.cpp
Expand Up @@ -3916,7 +3916,7 @@ void Score::undoAddElement(Element* element)
if (et == ElementType::TEXT) {
#if 0 // TODO-ws
Text* t = toText(element);
if (t->subStyle() == SubStyle::INSTRUMENT_EXCERPT)
if (t->subStyle() == ElementStyle::INSTRUMENT_EXCERPT)
links = 0;
#endif
}
Expand Down
8 changes: 4 additions & 4 deletions libmscore/element.cpp
Expand Up @@ -1037,8 +1037,8 @@ bool Element::setProperty(Pid propertyId, const QVariant& v)
setSystemFlag(v.toBool());
break;
default:
// qFatal("<%s> unknown <%s>(%d), data <%s>", name(), propertyName(propertyId), int(propertyId), qPrintable(v.toString()));
qDebug("%s unknown <%s>(%d), data <%s>", name(), propertyName(propertyId), int(propertyId), qPrintable(v.toString()));
// qFatal("<%s> unknown <%s>(%d), data <%s>", name(), propertyQmlName(propertyId), int(propertyId), qPrintable(v.toString()));
qDebug("%s unknown <%s>(%d), data <%s>", name(), propertyQmlName(propertyId), int(propertyId), qPrintable(v.toString()));
return false;
}
triggerLayout();
Expand Down Expand Up @@ -1525,8 +1525,8 @@ bool Element::prevGrip(EditData& ed) const

bool Element::isUserModified() const
{
for (const StyledProperty* spp = styledProperties(); spp->sid != Sid::NOSTYLE; ++spp) {
Pid pid = spp->pid;
for (const StyledProperty& spp : *styledProperties()) {
Pid pid = spp.pid;
QVariant val = getProperty(pid);
QVariant defaultValue = propertyDefault(pid);

Expand Down
3 changes: 1 addition & 2 deletions libmscore/element.h
Expand Up @@ -34,7 +34,6 @@ class XmlReader;
class XmlWriter;
enum class SymId;
enum class Pid;
enum class SubStyleId;

//---------------------------------------------------------
// Grip
Expand Down Expand Up @@ -375,7 +374,7 @@ class Element : public ScoreElement {
static Ms::Element* create(Ms::ElementType type, Score*);
static Element* name2Element(const QStringRef&, Score*);

virtual bool systemFlag() const { return flag(ElementFlag::SYSTEM); }
bool systemFlag() const { return flag(ElementFlag::SYSTEM); }
void setSystemFlag(bool v) const { setFlag(ElementFlag::SYSTEM, v); }

bool header() const { return flag(ElementFlag::HEADER); }
Expand Down
10 changes: 9 additions & 1 deletion libmscore/excerpt.cpp
Expand Up @@ -45,6 +45,14 @@

namespace Ms {

static const ElementStyle partInstrumentStyle {
{ Sid::partInstrumentFontFace, Pid::FONT_FACE },
{ Sid::partInstrumentFontSize, Pid::FONT_SIZE },
{ Sid::partInstrumentFontBold, Pid::FONT_BOLD },
{ Sid::partInstrumentFontItalic, Pid::FONT_ITALIC },
{ Sid::partInstrumentFontUnderline, Pid::FONT_UNDERLINE },
};

//---------------------------------------------------------
// ~Excerpt
//---------------------------------------------------------
Expand Down Expand Up @@ -207,7 +215,7 @@ void Excerpt::createExcerpt(Excerpt* excerpt)
titleFramePart->copyValues(titleFrameScore);
QString partLabel = excerpt->title(); // parts.front()->longName();
if (!partLabel.isEmpty()) {
Text* txt = new Text(SubStyleId::INSTRUMENT_EXCERPT, score);
Text* txt = new Text(score, Tid::INSTRUMENT_EXCERPT);
txt->setPlainText(partLabel);
txt->setTrack(0);
measure->add(txt);
Expand Down
25 changes: 17 additions & 8 deletions libmscore/figuredbass.cpp
Expand Up @@ -27,6 +27,14 @@

namespace Ms {

static const std::vector<StyledProperty> figuredBassTextStyle {
{ Sid::figuredBassFontFace, Pid::FONT_FACE },
{ Sid::figuredBassFontSize, Pid::FONT_SIZE },
{ Sid::figuredBassFontBold, Pid::FONT_BOLD },
{ Sid::figuredBassFontItalic, Pid::FONT_ITALIC },
{ Sid::figuredBassFontUnderline, Pid::FONT_UNDERLINE },
};

static constexpr qreal FB_CONTLINE_HEIGHT = 0.875; // the % of font EM to raise the cont. line at
// (0 = top of font; 1 = bottom of font)
static constexpr qreal FB_CONTLINE_LEFT_PADDING = 0.1875; // (3/16sp) the blank space at the left of a cont. line (in sp)
Expand Down Expand Up @@ -958,7 +966,7 @@ bool FiguredBassItem::startsWithParenthesis() const
FiguredBass::FiguredBass(Score* s)
: TextBase(s, ElementFlag::MOVABLE | ElementFlag::ON_STAFF)
{
initSubStyle(SubStyleId::FIGURED_BASS);
initElementStyle(&figuredBassTextStyle);
setOnNote(true);
#if 0 // TODO
TextStyle st(
Expand All @@ -971,7 +979,7 @@ FiguredBass::FiguredBass(Score* s)
QPointF(0, score()->styleD(Sid::figuredBassYOffset)),
OffsetType::SPATIUM);
st.setSizeIsSpatiumDependent(true);
setSubStyle(st);
setElementStyle(st);
#endif
setTicks(0);
items.clear();
Expand Down Expand Up @@ -1078,8 +1086,9 @@ void FiguredBass::layout()
#endif
// if in edit mode or if style has been changed,
// do nothing else, keeping default laying out and formatting
// if (editMode() || items.size() < 1 || subStyle() != SubStyle::FIGURED_BASS) {
if (items.size() < 1 || subStyleId() != SubStyleId::FIGURED_BASS) {
// if (editMode() || items.size() < 1 || subStyle() != ElementStyle::FIGURED_BASS) {
// if (items.size() < 1 || tid() != Tid::FIGURED_BASS) {
if (items.size() < 1) {
TextBase::layout();
return;
}
Expand Down Expand Up @@ -1204,10 +1213,10 @@ void FiguredBass::draw(QPainter* painter) const
}
}
// if in edit mode or with custom style, use standard text drawing
// if (editMode() || subStyle() != SubStyle::FIGURED_BASS)
if (subStyleId() != SubStyleId::FIGURED_BASS)
TextBase::draw(painter);
else
// if (editMode() || subStyle() != ElementStyle::FIGURED_BASS)
// if (tid() != Tid::FIGURED_BASS)
// TextBase::draw(painter);
// else
{ // not edit mode:
if (items.size() < 1) // if not parseable into f.b. items
TextBase::draw(painter); // draw as standard text
Expand Down
27 changes: 21 additions & 6 deletions libmscore/fingering.cpp
Expand Up @@ -22,20 +22,35 @@

namespace Ms {

static const ElementStyle fingeringStyle {
{ Sid::fingeringFontFace, Pid::FONT_FACE },
{ Sid::fingeringFontSize, Pid::FONT_SIZE },
{ Sid::fingeringFontBold, Pid::FONT_BOLD },
{ Sid::fingeringFontItalic, Pid::FONT_ITALIC },
{ Sid::fingeringFontUnderline, Pid::FONT_UNDERLINE },
{ Sid::fingeringAlign, Pid::ALIGN },
{ Sid::fingeringFrameType, Pid::FRAME_TYPE },
{ Sid::fingeringFramePadding, Pid::FRAME_PADDING },
{ Sid::fingeringFrameWidth, Pid::FRAME_WIDTH },
{ Sid::fingeringFrameRound, Pid::FRAME_ROUND },
{ Sid::fingeringFrameFgColor, Pid::FRAME_FG_COLOR },
{ Sid::fingeringFrameBgColor, Pid::FRAME_BG_COLOR },
{ Sid::fingeringOffset, Pid::OFFSET },
};

//---------------------------------------------------------
// Fingering
// Element(Score* = 0, ElementFlags = ElementFlag::NOTHING);
//---------------------------------------------------------

Fingering::Fingering(SubStyleId ssid, Score* s, ElementFlags ef)
: TextBase(s, ef)
Fingering::Fingering(Score* s, Tid tid, ElementFlags ef)
: TextBase(s, tid, ef)
{
initSubStyle(ssid);
initElementStyle(&fingeringStyle);
}

Fingering::Fingering(Score* s, ElementFlags ef)
: Fingering(SubStyleId::FINGERING, s, ef)
: Fingering(s, Tid::FINGERING, ef)
{
}

Expand Down Expand Up @@ -116,7 +131,7 @@ void Fingering::draw(QPainter* painter) const
QString Fingering::accessibleInfo() const
{
QString rez = Element::accessibleInfo();
if (subStyleId() == SubStyleId::STRING_NUMBER)
if (tid() == Tid::STRING_NUMBER)
rez += " " + QObject::tr("String number");
return QString("%1: %2").arg(rez).arg(plainText());
}
Expand All @@ -129,7 +144,7 @@ QVariant Fingering::propertyDefault(Pid id) const
{
switch (id) {
case Pid::SUB_STYLE:
return int(SubStyleId::FINGERING);
return int(Tid::FINGERING);
default:
return TextBase::propertyDefault(id);
}
Expand Down
2 changes: 1 addition & 1 deletion libmscore/fingering.h
Expand Up @@ -24,7 +24,7 @@ namespace Ms {
class Fingering final : public TextBase {

public:
Fingering(SubStyleId ssid, Score* s, ElementFlags ef = ElementFlag::HAS_TAG);
Fingering(Score*, Tid tid, ElementFlags ef = ElementFlag::HAS_TAG);
Fingering(Score* s, ElementFlags ef = ElementFlag::HAS_TAG);

virtual Fingering* clone() const override { return new Fingering(*this); }
Expand Down

0 comments on commit 10ebbb9

Please sign in to comment.