20#include <QTextCharFormat> 
   24  set = format.hasProperty( QTextFormat::TextVerticalAlignment );
 
   25  switch ( format.verticalAlignment() )
 
   27    case QTextCharFormat::AlignNormal:
 
   29    case QTextCharFormat::AlignSuperScript:
 
   31    case QTextCharFormat::AlignSubScript:
 
   35    case QTextCharFormat::AlignMiddle:
 
   36    case QTextCharFormat::AlignTop:
 
   37    case QTextCharFormat::AlignBottom:
 
   38    case QTextCharFormat::AlignBaseline:
 
 
   46  : mTextColor( format.hasProperty( QTextFormat::ForegroundBrush ) ? format.foreground().color() : QColor() )
 
   47  , mFontWeight( format.hasProperty( QTextFormat::FontWeight ) ? format.fontWeight() : -1 )
 
   48  , mStyleName( format.font().styleName() )
 
   50  , mFontPointSize( format.hasProperty( QTextFormat::FontPointSize ) ? format.fontPointSize() : - 1 )
 
   51  , mWordSpacing( format.hasProperty( QTextFormat::FontWordSpacing ) ? format.fontWordSpacing() : std::numeric_limits< double >::quiet_NaN() )
 
   55  , mBackgroundBrush( format.background() )
 
   56  , mBackgroundPath( format.background().style() == Qt::NoBrush ? format.stringProperty( QTextFormat::BackgroundImageUrl ) : QString() )
 
   60  if ( format.hasProperty( QTextFormat::FontFamily ) )
 
   62    mFontFamily = format.fontFamily();
 
   64  if ( mFontFamily.isEmpty() && format.hasProperty( QTextFormat::FontFamilies ) )
 
   66    const QStringList families = format.fontFamilies().toStringList();
 
   67    if ( !families.isEmpty() )
 
   68      mFontFamily = families.at( 0 );
 
   70  if ( format.isImageFormat() )
 
   72    const QTextImageFormat imageFormat = format.toImageFormat();
 
   73    mImagePath = imageFormat.name();
 
   74    mImageSize = QSizeF( imageFormat.width(), imageFormat.height() );
 
 
   80  if ( !mTextColor.isValid() && other.mTextColor.isValid() )
 
   81    mTextColor = other.mTextColor;
 
   82  if ( mFontPointSize == -1 && other.mFontPointSize != -1 )
 
   83    mFontPointSize = other.mFontPointSize;
 
   84  if ( mFontPercentageSize == -1 && other.mFontPercentageSize != -1 )
 
   85    mFontPercentageSize = other.mFontPercentageSize;
 
   86  if ( std::isnan( mWordSpacing ) )
 
   87    mWordSpacing = other.mWordSpacing;
 
   88  if ( mFontFamily.isEmpty() && !other.mFontFamily.isEmpty() )
 
   89    mFontFamily = other.mFontFamily;
 
   91    mStrikethrough = other.mStrikethrough;
 
   93    mUnderline = other.mUnderline;
 
   95    mOverline = other.mOverline;
 
   97    mItalic = other.mItalic;
 
   98  if ( mFontWeight == -1 && other.mFontWeight != -1 )
 
   99    mFontWeight = other.mFontWeight;
 
  100  if ( mStyleName.isEmpty() && ! other.mStyleName.isEmpty() )
 
  101    mStyleName = other.mStyleName;
 
  104    mVerticalAlign = other.mVerticalAlign;
 
  105    mHasVerticalAlignSet = 
true;
 
  107  if ( mBackgroundBrush.style() == Qt::NoBrush && mBackgroundPath.isEmpty() && other.mBackgroundBrush.style() != Qt::NoBrush )
 
  108    mBackgroundBrush = other.mBackgroundBrush;
 
  109  if ( mBackgroundBrush.style() == Qt::NoBrush  && mBackgroundPath.isEmpty() && !other.mBackgroundPath.isEmpty() )
 
  110    mBackgroundPath = other.mBackgroundPath;
 
 
  125  return mFontPointSize;
 
 
  130  mFontPointSize = size;
 
 
  135  return mFontPercentageSize;
 
 
  140  mFontPercentageSize = size;
 
 
  155  return mStrikethrough;
 
 
  160  mStrikethrough = strikethrough;
 
 
  206  if ( !mFontFamily.isEmpty() )
 
  209  if ( mFontPointSize != -1 )
 
  212  if ( mFontPercentageSize != -1 )
 
  213    font.setPixelSize( font.pixelSize() * mFontPercentageSize );
 
  218  if ( mFontWeight != - 1 )
 
  220#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) 
  221    font.setWeight( mFontWeight );
 
  223    if ( mFontWeight <= 150 )
 
  224      font.setWeight( QFont::Thin );
 
  225    else if ( mFontWeight <= 250 )
 
  226      font.setWeight( QFont::ExtraLight );
 
  227    else if ( mFontWeight <= 350 )
 
  228      font.setWeight( QFont::Light );
 
  229    else if ( mFontWeight <= 450 )
 
  230      font.setWeight( QFont::Normal );
 
  231    else if ( mFontWeight <= 550 )
 
  232      font.setWeight( QFont::Medium );
 
  233    else if ( mFontWeight <= 650 )
 
  234      font.setWeight( QFont::DemiBold );
 
  235    else if ( mFontWeight <= 750 )
 
  236      font.setWeight( QFont::Bold );
 
  237    else if ( mFontWeight <= 850 )
 
  238      font.setWeight( QFont::ExtraBold );
 
  240      font.setWeight( QFont::Black );
 
  245    font.setStyleName( mStyleName );
 
  255  if ( !std::isnan( mWordSpacing ) )
 
 
  263  return mBackgroundPath;
 
 
  268  mBackgroundPath = path;
 
 
  298  mWordSpacing = spacing;
 
 
  303  return mBackgroundBrush.style() != Qt::NoBrush || !mBackgroundPath.isEmpty();
 
 
  308  return mBackgroundBrush;
 
 
  313  mBackgroundBrush = brush;
 
 
TextCharacterVerticalAlignment
Text vertical alignment for characters.
 
@ Normal
Adjacent characters are positioned in the standard way for text in the writing system in use.
 
@ SubScript
Characters are placed below the base line for normal text.
 
@ SuperScript
Characters are placed above the base line for normal text.
 
@ Points
Points (e.g., for font sizes)
 
static void setFontFamily(QFont &font, const QString &family)
Sets the family for a font object.
 
Contains information about the context of a rendering operation.
 
double convertToPainterUnits(double size, Qgis::RenderUnit unit, const QgsMapUnitScale &scale=QgsMapUnitScale(), Qgis::RenderSubcomponentProperty property=Qgis::RenderSubcomponentProperty::Generic) const
Converts a size from the specified units to painter units (pixels).
 
Stores information relating to individual character formatting.
 
void setFamily(const QString &family)
Sets the font family name.
 
void overrideWith(const QgsTextCharacterFormat &other)
Override all the default/unset properties of the current character format with the settings from anot...
 
void updateFontForFormat(QFont &font, const QgsRenderContext &context, double scaleFactor=1.0) const
Updates the specified font in place, applying character formatting options which are applicable on a ...
 
void setFontWeight(int fontWeight)
Sets the font weight.
 
void setImageSize(const QSizeF &size)
Sets the image size, if the format applies to a document image fragment.
 
QSizeF imageSize() const
Returns the image size, if the format applies to a document image fragment.
 
QColor textColor() const
Returns the character's text color, or an invalid color if no color override is set and the default f...
 
BooleanValue italic() const
Returns whether the format has italic enabled.
 
QString backgroundImagePath() const
Returns the path for the image to be used for rendering the background of the fragment.
 
QBrush backgroundBrush() const
Returns the brush used for rendering the background of the fragment.
 
QString imagePath() const
Returns the path to the image to render, if the format applies to a document image fragment.
 
QgsTextCharacterFormat()=default
 
void setStrikeOut(BooleanValue enabled)
Sets whether the format has strikethrough enabled.
 
void setBackgroundImagePath(const QString &path)
Sets the path for the image to be used for rendering the background of the fragment.
 
void setOverline(BooleanValue enabled)
Sets whether the format has overline enabled.
 
void setBackgroundBrush(const QBrush &brush)
Sets the brush used for rendering the background of the fragment.
 
BooleanValue
Status values for boolean format properties.
 
@ SetTrue
Property is set and true.
 
@ NotSet
Property is not set.
 
void setImagePath(const QString &path)
Sets the path to the image to render, if the format applies to a document image fragment.
 
int fontWeight() const
Returns the font weight, or -1 if the font weight is not set and should be inherited.
 
bool hasVerticalAlignmentSet() const
Returns true if the format has an explicit vertical alignment set.
 
BooleanValue strikeOut() const
Returns whether the format has strikethrough enabled.
 
double wordSpacing() const
Returns the font word spacing, in points, or NaN if word spacing is not set and should be inherited.
 
double fontPointSize() const
Returns the font point size, or -1 if the font size is not set and should be inherited.
 
QString family() const
Returns the font family name, or an empty string if the family is not set and should be inherited.
 
BooleanValue underline() const
Returns whether the format has underline enabled.
 
void setWordSpacing(double spacing)
Sets the font word spacing, in points, or NaN if word spacing is not set and should be inherited.
 
void setTextColor(const QColor &textColor)
Sets the character's text color.
 
void setUnderline(BooleanValue enabled)
Sets whether the format has underline enabled.
 
void setItalic(BooleanValue enabled)
Sets whether the format has italic enabled.
 
bool hasBackground() const
Returns true if the fragment has a background set.
 
BooleanValue overline() const
Returns whether the format has overline enabled.
 
void setFontPointSize(double size)
Sets the font point size.
 
void setFontPercentageSize(double size)
Sets the font percentage size (as fraction of inherited font size).
 
double fontPercentageSize() const
Returns the font percentage size (as fraction of inherited font size), or -1 if the font size percent...
 
#define BUILTIN_UNREACHABLE
 
Qgis::TextCharacterVerticalAlignment convertTextCharFormatVAlign(const QTextCharFormat &format, bool &set)