Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
Loading...
Searching...
No Matches
qcssparser.cpp File Reference

(20521c31634b81543af68dc3166f9804c804f911)

#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 <qtextformat.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 926 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 803 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 1594 of file qcssparser.cpp.

References Qt::CaseInsensitive, i, QCss::Value::Length, ok, and str.

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

+ Here is the caller graph for this function:

◆ isHexDigit()

static bool isHexDigit ( const char c)
inlinestatic

Definition at line 2269 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 365 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 420 of file qcssparser.cpp.

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

Referenced by QCss::ValueExtractor::lengthValues(), and QCss::ValueExtractor::textLength().

+ 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 351 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 346 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 689 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 712 of file qcssparser.cpp.

References QString::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(), QString::startsWith(), QCss::Value::String, Qt::transparent, 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 1022 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 1295 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 2444 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 1216 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 1181 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 1131 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 1168 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 1320 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 1194 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 1264 of file qcssparser.cpp.

References QFont::AbsoluteSpacing, Qt::CaseInsensitive, QString::chop(), 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 1245 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 1331 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 1282 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 335 of file qcssparser.cpp.

◆ indexOfId

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

Definition at line 247 of file qcssparser.cpp.

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

◆ origins

◆ 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 328 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(), QPhysicsWorld::Q_REVISION(), qt_draw_decoration_for_glyphs(), QAbstractPhysicsNode::registerContact(), QPhysicsWorld::registerContact(), QSSGLightmapUVGenerator::run(), QScroller::setSnapPositionsX(), QScroller::setSnapPositionsY(), QGridLayoutRowData::stealBox(), QSGCurveGlyphNode::updateGeometry(), QSGDefaultGlyphNode::updateGeometry(), QSGDistanceFieldGlyphNode::updateGeometry(), visibleGlyphRange(), and QSvgVisitorImpl::visitTextNode().

◆ properties

const QCssKnownValue properties[NumProperties - 1]
static

Definition at line 40 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(), operator<<(), 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 261 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 315 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 340 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 322 of file qcssparser.cpp.

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

◆ values

const QCssKnownValue values[NumKnownValues - 1]
static

Definition at line 163 of file qcssparser.cpp.