Qt 6.x
The Qt SDK
Loading...
Searching...
No Matches
qcssparser.cpp File Reference
#include "qcssparser_p.h"
#include <QtCore/qmap.h>
#include <qdebug.h>
#include <qicon.h>
#include <qcolor.h>
#include <qfont.h>
#include <qfileinfo.h>
#include <qfontmetrics.h>
#include <qbrush.h>
#include <qimagereader.h>
#include <algorithm>
#include "qcssscanner.cpp"
+ Include dependency graph for qcssparser.cpp:

Go to the source code of this file.

Classes

struct  QCssKnownValue
 

Functions

static bool operator< (const QString &name, const QCssKnownValue &prop)
 
static bool operator< (const QCssKnownValue &prop, const QString &name)
 
static quint64 findKnownValue (const QString &name, const QCssKnownValue *start, int numValues)
 
static bool isInheritable (Property propertyId)
 
static int lengthValueFromData (const LengthData &data, const QFont &f)
 
static Qt::Alignment parseAlignment (const QCss::Value *values, int count)
 
static ColorData parseColorValue (QCss::Value v)
 
static QColor colorFromData (const ColorData &c, const QPalette &pal)
 
static BrushData parseBrushValue (const QCss::Value &v, const QPalette &pal)
 
static QBrush brushFromData (const BrushData &c, const QPalette &pal)
 
static BorderStyle parseStyleValue (const QCss::Value &v)
 
static void parseShorthandBackgroundProperty (const QList< QCss::Value > &values, BrushData *brush, QString *image, Repeat *repeat, Qt::Alignment *alignment, const QPalette &pal)
 
static bool setFontSizeFromValue (QCss::Value value, QFont *font, int *fontSizeAdjustment)
 
static bool setFontStyleFromValue (const QCss::Value &value, QFont *font)
 
static bool setFontKerningFromValue (const QCss::Value &value, QFont *font)
 
static bool setFontWeightFromValue (const QCss::Value &value, QFont *font)
 
static bool setFontFamilyFromValues (const QList< QCss::Value > &values, QFont *font, int start=0)
 
static void setTextDecorationFromValues (const QList< QCss::Value > &values, QFont *font)
 
static void setLetterSpacingFromValue (const QCss::Value &value, QFont *font)
 
static void setWordSpacingFromValue (const QCss::Value &value, QFont *font)
 
static void parseShorthandFontProperty (const QList< QCss::Value > &values, QFont *font, int *fontSizeAdjustment)
 
static void setFontVariantFromValue (const QCss::Value &value, QFont *font)
 
static void setTextTransformFromValue (const QCss::Value &value, QFont *font)
 
static bool intValueHelper (const QCss::Value &v, int *i, const char *unit)
 
static bool isHexDigit (const char c)
 
static void removeOptionalQuotes (QString *str)
 

Variables

static const QCssKnownValue properties [NumProperties - 1]
 
static const QCssKnownValue values [NumKnownValues - 1]
 
static const short indexOfId [NumKnownValues]
 
static const QCssKnownValue pseudos [NumPseudos - 1]
 
static const QCssKnownValue origins [NumKnownOrigins - 1]
 
static const QCssKnownValue repeats [NumKnownRepeats - 1]
 
static const QCssKnownValue tileModes [NumKnownTileModes - 1]
 
static const QCssKnownValue positions [NumKnownPositionModes - 1]
 
static const QCssKnownValue attachments [NumKnownAttachments - 1]
 
static const QCssKnownValue styleFeatures [NumKnownStyleFeatures - 1]
 

Function Documentation

◆ brushFromData()

static QBrush brushFromData ( const BrushData c,
const QPalette pal 
)
static

Definition at line 893 of file qcssparser.cpp.

References QPalette::color(), and QCss::BrushData::Role.

Referenced by QCss::ValueExtractor::extractBackground().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ colorFromData()

static QColor colorFromData ( const ColorData c,
const QPalette pal 
)
static

Definition at line 775 of file qcssparser.cpp.

References QPalette::color(), QCss::ColorData::Color, and QCss::ColorData::Role.

Referenced by parseBrushValue().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ findKnownValue()

static quint64 findKnownValue ( const QString name,
const QCssKnownValue start,
int  numValues 
)
static

◆ intValueHelper()

static bool intValueHelper ( const QCss::Value v,
int *  i,
const char *  unit 
)
static

Definition at line 1559 of file qcssparser.cpp.

References Qt::CaseInsensitive, i, QCss::Value::Length, ok, QLatin1StringView::size(), and str.

Referenced by QCss::Declaration::intValue(), and QCss::Declaration::sizeValue().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ isHexDigit()

static bool isHexDigit ( const char  c)
inlinestatic

Definition at line 2205 of file qcssparser.cpp.

Referenced by QCss::Scanner::preprocess().

+ Here is the caller graph for this function:

◆ isInheritable()

static bool isInheritable ( Property  propertyId)
inlinestatic

Definition at line 348 of file qcssparser.cpp.

References QCss::Font, QCss::FontFamily, QCss::FontKerning, QCss::FontSize, QCss::FontStyle, QCss::FontVariant, QCss::FontWeight, QCss::LetterSpacing, QCss::LineHeight, QCss::ListStyle, QCss::ListStyleType, QCss::TextAlignment, QCss::TextIndent, QCss::TextTransform, QCss::Whitespace, and QCss::WordSpacing.

Referenced by QCss::Parser::parseProperty().

+ Here is the caller graph for this function:

◆ lengthValueFromData()

static int lengthValueFromData ( const LengthData data,
const QFont f 
)
static

Definition at line 401 of file qcssparser.cpp.

References QCss::LengthData::Em, QCss::LengthData::Ex, QFontMetrics::height(), qBound(), qRound(), and QFontMetrics::xHeight().

Referenced by QCss::ValueExtractor::lengthValues().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ operator<() [1/2]

static bool operator< ( const QCssKnownValue prop,
const QString name 
)
static

Definition at line 334 of file qcssparser.cpp.

References Qt::CaseInsensitive, QString::compare(), and QCssKnownValue::name.

+ Here is the call graph for this function:

◆ operator<() [2/2]

static bool operator< ( const QString name,
const QCssKnownValue prop 
)
static

Definition at line 329 of file qcssparser.cpp.

References Qt::CaseInsensitive, QString::compare(), and QCssKnownValue::name.

+ Here is the call graph for this function:

◆ parseAlignment()

static Qt::Alignment parseAlignment ( const QCss::Value values,
int  count 
)
static

Definition at line 661 of file qcssparser.cpp.

References Qt::AlignBottom, Qt::AlignCenter, Qt::AlignHCenter, Qt::AlignLeft, Qt::AlignRight, Qt::AlignTop, Qt::AlignVCenter, i, QCss::Value::KnownIdentifier, qMin(), QVariant::toInt(), QCss::Value_Bottom, QCss::Value_Center, QCss::Value_Left, QCss::Value_Right, QCss::Value_Top, and variant.

Referenced by QCss::Declaration::alignmentValue(), and parseShorthandBackgroundProperty().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ parseBrushValue()

static BrushData parseBrushValue ( const QCss::Value v,
const QPalette pal 
)
static

◆ parseColorValue()

static ColorData parseColorValue ( QCss::Value  v)
static

Definition at line 684 of file qcssparser.cpp.

References QString::at(), QList< T >::at(), Qt::CaseInsensitive, QCss::Value::Color, QString::compare(), findKnownValue(), QColor::fromHsl(), QColor::fromHsv(), QColor::fromRgb(), QCss::Value::Function, hasAlpha(), i, QCss::Value::Identifier, QCss::Value::KnownIdentifier, QCss::Value::Number, QCss::NumKnownValues, QCss::Value::Percentage, qMin(), qPrintable, qWarning, rgb, QString::size(), QList< T >::size(), QString::startsWith(), QCss::Value::String, Qt::transparent, QCss::ColorData::type, QCss::Value_FirstColorRole, QCss::Value_LastColorRole, and QCss::Value_Transparent.

Referenced by QCss::Declaration::colorValue(), QCss::Declaration::colorValues(), and parseBrushValue().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ parseShorthandBackgroundProperty()

static void parseShorthandBackgroundProperty ( const QList< QCss::Value > &  values,
BrushData brush,
QString image,
Repeat repeat,
Qt::Alignment *  alignment,
const QPalette pal 
)
static

Definition at line 987 of file qcssparser.cpp.

References Qt::AlignLeft, alignment, Qt::AlignTop, findKnownValue(), i, QCss::Value::KnownIdentifier, QCss::NumKnownRepeats, parseAlignment(), parseBrushValue(), QCss::Repeat_Unknown, QCss::Repeat_XY, repeats, Qt::transparent, QCss::Value::Uri, QCss::Value_None, and QCss::Value_Transparent.

Referenced by QCss::ValueExtractor::extractBackground().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ parseShorthandFontProperty()

static void parseShorthandFontProperty ( const QList< QCss::Value > &  values,
QFont font,
int *  fontSizeAdjustment 
)
static

Definition at line 1260 of file qcssparser.cpp.

References font, i, QFont::Normal, setFontFamilyFromValues(), setFontSizeFromValue(), setFontStyleFromValue(), setFontWeightFromValue(), QFont::setStyle(), QFont::setWeight(), and QFont::StyleNormal.

Referenced by QCss::ValueExtractor::extractFont().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ parseStyleValue()

◆ removeOptionalQuotes()

static void removeOptionalQuotes ( QString str)
inlinestatic

Definition at line 2380 of file qcssparser.cpp.

References QString::chop(), QString::remove(), QString::startsWith(), and str.

Referenced by QCss::Parser::parseImport(), QCss::Parser::parseTerm(), and QCss::Parser::testAndParseUri().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setFontFamilyFromValues()

static bool setFontFamilyFromValues ( const QList< QCss::Value > &  values,
QFont font,
int  start = 0 
)
static

parse the font family from the values (starting from index start) and set it the font The function returns true if a family was extracted.

Definition at line 1181 of file qcssparser.cpp.

References QString::clear(), font, i, QString::isEmpty(), QFont::setFamilies(), str, and QCss::Value::TermOperatorComma.

Referenced by QCss::ValueExtractor::extractFont(), and parseShorthandFontProperty().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setFontKerningFromValue()

static bool setFontKerningFromValue ( const QCss::Value value,
QFont font 
)
static

Definition at line 1146 of file qcssparser.cpp.

References false, font, QCss::Value::KnownIdentifier, QFont::setKerning(), QCss::Value_Auto, QCss::Value_None, and QCss::Value_Normal.

Referenced by QCss::ValueExtractor::extractFont().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setFontSizeFromValue()

static bool setFontSizeFromValue ( QCss::Value  value,
QFont font,
int *  fontSizeAdjustment 
)
static

Definition at line 1096 of file qcssparser.cpp.

References Qt::CaseInsensitive, QString::chop(), font, QCss::Value::KnownIdentifier, QCss::Value::Length, qBound(), QFont::setPixelSize(), QFont::setPointSizeF(), QCss::Value_Large, QCss::Value_Medium, QCss::Value_Small, QCss::Value_XLarge, and QCss::Value_XXLarge.

Referenced by QCss::ValueExtractor::extractFont(), and parseShorthandFontProperty().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setFontStyleFromValue()

static bool setFontStyleFromValue ( const QCss::Value value,
QFont font 
)
static

Definition at line 1133 of file qcssparser.cpp.

References false, font, QCss::Value::KnownIdentifier, QFont::setStyle(), QFont::StyleItalic, QFont::StyleNormal, QFont::StyleOblique, QCss::Value_Italic, QCss::Value_Normal, and QCss::Value_Oblique.

Referenced by QCss::ValueExtractor::extractFont(), and parseShorthandFontProperty().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setFontVariantFromValue()

static void setFontVariantFromValue ( const QCss::Value value,
QFont font 
)
static

Definition at line 1285 of file qcssparser.cpp.

References font, QCss::Value::KnownIdentifier, QFont::MixedCase, QFont::setCapitalization(), QFont::SmallCaps, QCss::Value_Normal, and QCss::Value_SmallCaps.

Referenced by QCss::ValueExtractor::extractFont().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setFontWeightFromValue()

static bool setFontWeightFromValue ( const QCss::Value value,
QFont font 
)
static

Definition at line 1159 of file qcssparser.cpp.

References QFont::Bold, font, QCss::Value::KnownIdentifier, QFont::Normal, QCss::Value::Number, qBound(), qRound(), QFont::setWeight(), QCss::Value_Bold, and QCss::Value_Normal.

Referenced by QCss::ValueExtractor::extractFont(), and parseShorthandFontProperty().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setLetterSpacingFromValue()

static void setLetterSpacingFromValue ( const QCss::Value value,
QFont font 
)
static

Definition at line 1229 of file qcssparser.cpp.

References QFont::AbsoluteSpacing, Qt::CaseInsensitive, font, ok, QFont::PercentageSpacing, and QFont::setLetterSpacing().

Referenced by QCss::ValueExtractor::extractFont().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setTextDecorationFromValues()

static void setTextDecorationFromValues ( const QList< QCss::Value > &  values,
QFont font 
)
static

Definition at line 1210 of file qcssparser.cpp.

References font, i, QCss::Value::KnownIdentifier, QFont::setOverline(), QFont::setStrikeOut(), QFont::setUnderline(), QCss::Value_LineThrough, QCss::Value_None, QCss::Value_Overline, and QCss::Value_Underline.

Referenced by QCss::ValueExtractor::extractFont().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setTextTransformFromValue()

static void setTextTransformFromValue ( const QCss::Value value,
QFont font 
)
static

Definition at line 1296 of file qcssparser.cpp.

References QFont::AllLowercase, QFont::AllUppercase, font, QCss::Value::KnownIdentifier, QFont::MixedCase, QFont::setCapitalization(), QCss::Value_Lowercase, QCss::Value_None, and QCss::Value_Uppercase.

Referenced by QCss::ValueExtractor::extractFont().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setWordSpacingFromValue()

static void setWordSpacingFromValue ( const QCss::Value value,
QFont font 
)
static

Definition at line 1247 of file qcssparser.cpp.

References Qt::CaseInsensitive, QString::chop(), font, ok, and QFont::setWordSpacing().

Referenced by QCss::ValueExtractor::extractFont().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

Variable Documentation

◆ attachments

const QCssKnownValue attachments[NumKnownAttachments - 1]
static
Initial value:
= {
{ "fixed", Attachment_Fixed },
{ "scroll", Attachment_Scroll }
}
@ Attachment_Fixed
@ Attachment_Scroll

Definition at line 318 of file qcssparser.cpp.

◆ indexOfId

const short indexOfId[NumKnownValues]
static
Initial value:
= { 0, 41, 48, 42, 49, 50, 55, 35, 26, 71, 72, 25, 43, 5, 64, 48,
29, 59, 60, 27, 52, 62, 6, 10, 39, 56, 19, 13, 17, 18, 20, 21, 51, 24, 46, 68, 37, 3, 2, 40, 63, 16,
11, 58, 14, 32, 65, 33, 66, 56, 67, 34, 70, 8, 28, 38, 12, 36, 61, 7, 9, 4, 69, 54, 22, 23, 30, 31,
1, 15, 0, 53, 45, 44 }

Definition at line 230 of file qcssparser.cpp.

Referenced by QWin32PrintEngine::setProperty(), and QCss::Value::toString().

◆ origins

const QCssKnownValue origins[NumKnownOrigins - 1]
static

◆ positions

const QCssKnownValue positions[NumKnownPositionModes - 1]
static
Initial value:
= {
{ "absolute", PositionMode_Absolute },
{ "fixed", PositionMode_Fixed },
{ "relative", PositionMode_Relative },
{ "static", PositionMode_Static }
}
@ PositionMode_Absolute
@ PositionMode_Relative
@ PositionMode_Static
@ PositionMode_Fixed

Definition at line 311 of file qcssparser.cpp.

Referenced by QAndroidStyle::AndroidGradientDrawable::AndroidGradientDrawable(), QFontEngine::addGlyphsToPath(), QFontEngineFT::addGlyphsToPath(), QWindowsFontEngine::addGlyphsToPath(), QWindowsFontEngineDirectWrite::addGlyphsToPath(), QCoreTextFontEngine::addGlyphsToPath(), QFontEngineFT::addOutlineToPath(), QFontEngineBox::addOutlineToPath(), QFontEngine::addOutlineToPath(), QGridLayoutRowData::calculateGeometries(), QSplitterPrivate::doMove(), QCoreTextFontEngine::draw(), QFontEngineBox::draw(), draw_text_item_win(), QPaintEnginePrivate::drawBoxTextItem(), QBlittable::drawCachedGlyphs(), QDirectFbBlitter::drawCachedGlyphs(), QRasterPaintEngine::drawCachedGlyphs(), QBlitterPaintEngine::drawCachedGlyphs(), QPainterPrivate::drawGlyphs(), QPaintEngine::drawTextItem(), QRasterPaintEngine::drawTextItem(), QOpenGL2PaintEngineEx::drawTextItem(), QPdfEnginePrivate::drawTextItem(), QT_BEGIN_NAMESPACE::generateMeshLevelsOfDetail(), QFontEngine::getGlyphPositions(), QTextLayout::glyphRuns(), glyphRunWithInfo(), QStaticTextPrivate::init(), SimulationEventCallback::onContact(), QTextureGlyphCache::populate(), QCss::Declaration::positionValue(), qt_draw_decoration_for_glyphs(), QAbstractPhysicsNode::registerContact(), QSSGLightmapUVGenerator::run(), QScroller::setSnapPositionsX(), QScroller::setSnapPositionsY(), QGridLayoutRowData::stealBox(), QSGDefaultGlyphNode::updateGeometry(), QSGDistanceFieldGlyphNode::updateGeometry(), and visibleGlyphRange().

◆ properties

const QCssKnownValue properties[NumProperties - 1]
static

Definition at line 38 of file qcssparser.cpp.

Referenced by org.qtproject.qt.android.bluetooth.QtBluetoothGattCharacteristic::QtBluetoothGattCharacteristic(), CPP::WriteInitialization::acceptLayout(), DatabaseInfo::acceptWidget(), QWindowsFontDatabase::addApplicationFont(), QWindowsDirectWriteFontDatabase::addApplicationFont(), QFreeTypeFontDatabase::addTTFile(), any_type_contains(), QFontDatabase::applicationFontFamilies(), QSSGCustomMaterialSystem::applyRhiShaderPropertyValues(), QPrinterPrivate::changeEngines(), QV4::Heap::cleanInternalClass(), QQuickAbstractAnimationPrivate::commence(), QWindowsDirect2DWindow::copyBackBuffer(), QXcbWindow::create(), createDeviceInfoFromBluez5Device(), QQmlComponent::createObject(), QQmlComponentPrivate::createWithProperties(), QLowEnergyControllerPrivateBluezDBus::discoverServiceDetails(), QWizardField::findProperty(), QmlIR::Object::firstProperty(), OrgFreedesktopDBusPropertiesAdaptor::GetAll(), QSSGQmlUtilities::PropertyMap::getDefaultValue(), QQmlComponentPrivate::ConstructionState::hasUnsetRequiredProperties(), QFontDatabasePrivate::ApplicationFont::isPopulated(), mergeGradleProperties(), QWinRTLowEnergyServiceHandler::obtainCharList(), QQuickStackViewPrivate::parseElements(), QMapboxCommon::parseGeoLocation(), QT_BEGIN_NAMESPACE::parsePlaceResult(), QCss::Parser::parseProperty(), QFontconfigDatabase::populateFontDatabase(), populateFromPattern(), QmlIR::Object::propertiesBegin(), QmlIR::Object::propertiesEnd(), QmlIR::Object::propertyCount(), propertyMap(), readGradleProperties(), QQuickAnimationController::reload(), AnchorsValidatorPass::run(), QWaylandQtTextInputMethod::sendInputMethodEvent(), QGstreamerCamera::setCamera(), QQmlContext::setContextProperties(), OrgBluezAdapter1Interface::SetDiscoveryFilter(), QQmlComponent::setInitialProperties(), QQmlComponentPrivate::setInitialProperties(), QQmlComponentPrivate::setInitialProperty(), QQuickLoader::setSource(), QJUnitTestLogger::startLogging(), QWindowsDirect2DBitmapPrivate::toImage(), QQmlPropertyCache::toMetaObjectBuilder(), QFontSubset::toTruetype(), ImeState::update(), QGstreamerVideoDevices::videoDevices(), QFontSubset::widthArray(), wrapInFunction(), QmlTypeRegistrar::write(), and QSSGQmlUtilities::writeNodeProperties().

◆ pseudos

const QCssKnownValue pseudos[NumPseudos - 1]
static

Definition at line 244 of file qcssparser.cpp.

Referenced by QCss::Parser::parsePseudo().

◆ repeats

const QCssKnownValue repeats[NumKnownRepeats - 1]
static
Initial value:
= {
{ "no-repeat", Repeat_None },
{ "repeat-x", Repeat_X },
{ "repeat-xy", Repeat_XY },
{ "repeat-y", Repeat_Y }
}
@ Repeat_XY
@ Repeat_None

Definition at line 298 of file qcssparser.cpp.

Referenced by QCss::ValueExtractor::extractBackground(), QV4::StringPrototype::method_repeat(), parseShorthandBackgroundProperty(), and QCss::Declaration::repeatValue().

◆ styleFeatures

const QCssKnownValue styleFeatures[NumKnownStyleFeatures - 1]
static
Initial value:
= {
{ "background-color", StyleFeature_BackgroundColor },
{ "background-gradient", StyleFeature_BackgroundGradient },
{ "none", StyleFeature_None }
}
@ StyleFeature_BackgroundGradient
@ StyleFeature_BackgroundColor
@ StyleFeature_None

Definition at line 323 of file qcssparser.cpp.

Referenced by QCss::Declaration::styleFeaturesValue().

◆ tileModes

const QCssKnownValue tileModes[NumKnownTileModes - 1]
static
Initial value:
= {
{ "repeat", TileMode_Repeat },
{ "round", TileMode_Round },
{ "stretch", TileMode_Stretch },
}
@ TileMode_Repeat
@ TileMode_Round
@ TileMode_Stretch

Definition at line 305 of file qcssparser.cpp.

Referenced by QCss::Declaration::borderImageValue().

◆ values

const QCssKnownValue values[NumKnownValues - 1]
static

Definition at line 153 of file qcssparser.cpp.