Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qcssparser_p.h
Go to the documentation of this file.
1// Copyright (C) 2016 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4#ifndef QCSSPARSER_P_H
5#define QCSSPARSER_P_H
6
7//
8// W A R N I N G
9// -------------
10//
11// This file is not part of the Qt API. It exists purely as an
12// implementation detail. This header file may change from version to
13// version without notice, or even be removed.
14//
15// We mean it.
16//
17
18#include <QtGui/private/qtguiglobal_p.h>
19#include <QtCore/QStringList>
20#include <QtCore/QList>
21#include <QtCore/QVariant>
22#include <QtCore/QSize>
23#include <QtCore/QMultiHash>
24#include <QtGui/QFont>
25#include <QtGui/QPalette>
26#include <QtCore/QSharedData>
27
28QT_BEGIN_NAMESPACE
29class QIcon;
31
32#ifndef QT_NO_CSSPARSER
33
34// VxWorks defines NONE as (-1) "for times when NULL won't do"
35#if defined(Q_OS_VXWORKS) && defined(NONE)
36# undef NONE
37#endif
38#if defined(Q_OS_INTEGRITY)
39# undef Value
40#endif
41// Hurd has #define TILDE 0x00080000 from <sys/ioctl.h>
42#if defined(TILDE)
43# undef TILDE
44#endif
45
46#define QT_CSS_DECLARE_TYPEINFO(Class, Type)
47 } /* namespace QCss */
48 Q_DECLARE_TYPEINFO(QCss:: Class, Type);
49 namespace QCss {
50
52
53namespace QCss
54{
55
178};
179
240
241 /* keep these in same order as QPalette::ColorRole */
266
272};
273
289
297
304
312
320
328
334
340
363QT_CSS_DECLARE_TYPEINFO(Value, Q_RELOCATABLE_TYPE)
364
365struct ColorData {
367 ColorData(const QColor &col) : color(col), role(QPalette::NoRole), type(Color) {}
368 ColorData(QPalette::ColorRole r) : role(r), type(Role) {}
371 enum { Invalid, Color, Role} type;
372};
373QT_CSS_DECLARE_TYPEINFO(ColorData, Q_RELOCATABLE_TYPE)
374
375struct BrushData {
377 BrushData(const QBrush &br) : brush(br), role(QPalette::NoRole), type(Brush) {}
378 BrushData(QPalette::ColorRole r) : role(r), type(Role) {}
382};
383QT_CSS_DECLARE_TYPEINFO(BrushData, Q_RELOCATABLE_TYPE)
384
391QT_CSS_DECLARE_TYPEINFO(BackgroundData, Q_RELOCATABLE_TYPE)
392
395 enum { None, Px, Ex, Em, Percent } unit;
396};
397QT_CSS_DECLARE_TYPEINFO(LengthData, Q_PRIMITIVE_TYPE)
398
404QT_CSS_DECLARE_TYPEINFO(BorderData, Q_RELOCATABLE_TYPE)
405
406// 1. StyleRule - x:hover, y:clicked > z:checked { prop1: value1; prop2: value2; }
407// 2. QList<Selector> - x:hover, y:clicked z:checked
408// 3. QList<BasicSelector> - y:clicked z:checked
409// 4. QList<Declaration> - { prop1: value1; prop2: value2; }
410// 5. Declaration - prop1: value1;
411
412struct Q_GUI_EXPORT Declaration
413{
425 inline Declaration() : d(new DeclarationData()) {}
426 inline bool isEmpty() const { return d->property.isEmpty() && d->propertyId == UnknownProperty; }
427
428 // helper functions
429 QColor colorValue(const QPalette & = QPalette()) const;
430 void colorValues(QColor *c, const QPalette & = QPalette()) const;
431 QBrush brushValue(const QPalette & = QPalette()) const;
432 void brushValues(QBrush *c, const QPalette & = QPalette()) const;
433
434 BorderStyle styleValue() const;
435 void styleValues(BorderStyle *s) const;
436
437 Origin originValue() const;
438 Repeat repeatValue() const;
439 Qt::Alignment alignmentValue() const;
442 int styleFeaturesValue() const;
443
444 bool intValue(int *i, const char *unit = nullptr) const;
445 bool realValue(qreal *r, const char *unit = nullptr) const;
446
447 QSize sizeValue() const;
448 QRect rectValue() const;
449 QString uriValue() const;
450 QIcon iconValue() const;
451
452 void borderImageValue(QString *image, int *cuts, TileMode *h, TileMode *v) const;
453 bool borderCollapseValue() const;
454
455 QList<qreal> dashArray() const;
456};
457QT_CSS_DECLARE_TYPEINFO(Declaration, Q_RELOCATABLE_TYPE)
458
459const quint64 PseudoClass_Unknown = Q_UINT64_C(0x0000000000000000);
460const quint64 PseudoClass_Enabled = Q_UINT64_C(0x0000000000000001);
461const quint64 PseudoClass_Disabled = Q_UINT64_C(0x0000000000000002);
462const quint64 PseudoClass_Pressed = Q_UINT64_C(0x0000000000000004);
463const quint64 PseudoClass_Focus = Q_UINT64_C(0x0000000000000008);
464const quint64 PseudoClass_Hover = Q_UINT64_C(0x0000000000000010);
465const quint64 PseudoClass_Checked = Q_UINT64_C(0x0000000000000020);
466const quint64 PseudoClass_Unchecked = Q_UINT64_C(0x0000000000000040);
467const quint64 PseudoClass_Indeterminate = Q_UINT64_C(0x0000000000000080);
468const quint64 PseudoClass_Unspecified = Q_UINT64_C(0x0000000000000100);
469const quint64 PseudoClass_Selected = Q_UINT64_C(0x0000000000000200);
470const quint64 PseudoClass_Horizontal = Q_UINT64_C(0x0000000000000400);
471const quint64 PseudoClass_Vertical = Q_UINT64_C(0x0000000000000800);
472const quint64 PseudoClass_Window = Q_UINT64_C(0x0000000000001000);
473const quint64 PseudoClass_Children = Q_UINT64_C(0x0000000000002000);
474const quint64 PseudoClass_Sibling = Q_UINT64_C(0x0000000000004000);
475const quint64 PseudoClass_Default = Q_UINT64_C(0x0000000000008000);
476const quint64 PseudoClass_First = Q_UINT64_C(0x0000000000010000);
477const quint64 PseudoClass_Last = Q_UINT64_C(0x0000000000020000);
478const quint64 PseudoClass_Middle = Q_UINT64_C(0x0000000000040000);
479const quint64 PseudoClass_OnlyOne = Q_UINT64_C(0x0000000000080000);
480const quint64 PseudoClass_PreviousSelected = Q_UINT64_C(0x0000000000100000);
481const quint64 PseudoClass_NextSelected = Q_UINT64_C(0x0000000000200000);
482const quint64 PseudoClass_Flat = Q_UINT64_C(0x0000000000400000);
483const quint64 PseudoClass_Left = Q_UINT64_C(0x0000000000800000);
484const quint64 PseudoClass_Right = Q_UINT64_C(0x0000000001000000);
485const quint64 PseudoClass_Top = Q_UINT64_C(0x0000000002000000);
486const quint64 PseudoClass_Bottom = Q_UINT64_C(0x0000000004000000);
487const quint64 PseudoClass_Exclusive = Q_UINT64_C(0x0000000008000000);
488const quint64 PseudoClass_NonExclusive = Q_UINT64_C(0x0000000010000000);
489const quint64 PseudoClass_Frameless = Q_UINT64_C(0x0000000020000000);
490const quint64 PseudoClass_ReadOnly = Q_UINT64_C(0x0000000040000000);
491const quint64 PseudoClass_Active = Q_UINT64_C(0x0000000080000000);
492const quint64 PseudoClass_Closable = Q_UINT64_C(0x0000000100000000);
493const quint64 PseudoClass_Movable = Q_UINT64_C(0x0000000200000000);
494const quint64 PseudoClass_Floatable = Q_UINT64_C(0x0000000400000000);
495const quint64 PseudoClass_Minimized = Q_UINT64_C(0x0000000800000000);
496const quint64 PseudoClass_Maximized = Q_UINT64_C(0x0000001000000000);
497const quint64 PseudoClass_On = Q_UINT64_C(0x0000002000000000);
498const quint64 PseudoClass_Off = Q_UINT64_C(0x0000004000000000);
499const quint64 PseudoClass_Editable = Q_UINT64_C(0x0000008000000000);
500const quint64 PseudoClass_Item = Q_UINT64_C(0x0000010000000000);
501const quint64 PseudoClass_Closed = Q_UINT64_C(0x0000020000000000);
502const quint64 PseudoClass_Open = Q_UINT64_C(0x0000040000000000);
503const quint64 PseudoClass_EditFocus = Q_UINT64_C(0x0000080000000000);
504const quint64 PseudoClass_Alternate = Q_UINT64_C(0x0000100000000000);
505// The Any specifier is never generated, but can be used as a wildcard in searches.
506const quint64 PseudoClass_Any = Q_UINT64_C(0x0000ffffffffffff);
507const int NumPseudos = 45;
508
517QT_CSS_DECLARE_TYPEINFO(Pseudo, Q_RELOCATABLE_TYPE)
518
536
557QT_CSS_DECLARE_TYPEINFO(BasicSelector, Q_RELOCATABLE_TYPE)
558
559struct Q_GUI_EXPORT Selector
560{
562 int specificity() const;
563 quint64 pseudoClass(quint64 *negated = nullptr) const;
564 QString pseudoElement() const;
565};
566QT_CSS_DECLARE_TYPEINFO(Selector, Q_RELOCATABLE_TYPE)
567
575QT_CSS_DECLARE_TYPEINFO(StyleRule, Q_RELOCATABLE_TYPE)
576
582QT_CSS_DECLARE_TYPEINFO(MediaRule, Q_RELOCATABLE_TYPE)
583
589QT_CSS_DECLARE_TYPEINFO(PageRule, Q_RELOCATABLE_TYPE)
590
603QT_CSS_DECLARE_TYPEINFO(AnimationRule, Q_RELOCATABLE_TYPE)
604
610QT_CSS_DECLARE_TYPEINFO(ImportRule, Q_RELOCATABLE_TYPE)
611
619
621{
623 QList<StyleRule> styleRules; // only contains rules that are not indexed
629 int depth; // applicable only for inline style sheets
632
633 Q_GUI_EXPORT void buildIndexes(Qt::CaseSensitivity nameCaseSensitivity = Qt::CaseSensitive);
634};
635QT_CSS_DECLARE_TYPEINFO(StyleSheet, Q_RELOCATABLE_TYPE)
636
637
638class Q_GUI_EXPORT StyleSelector
639{
640public:
642 virtual ~StyleSelector();
643
644 union NodePtr {
645 void *ptr;
646 int id;
647 };
648
651
652 virtual bool nodeNameEquals(NodePtr node, const QString& nodeName) const;
654 virtual bool hasAttributes(NodePtr node) const = 0;
655 virtual QStringList nodeIds(NodePtr node) const;
656 virtual QStringList nodeNames(NodePtr node) const = 0;
657 virtual bool isNullNode(NodePtr node) const = 0;
658 virtual NodePtr parentNode(NodePtr node) const = 0;
660 virtual NodePtr duplicateNode(NodePtr node) const = 0;
661 virtual void freeNode(NodePtr node) const = 0;
662
666private:
669 bool selectorMatches(const Selector &rule, NodePtr node) const;
671};
672
724
725struct Symbol
726{
727 inline Symbol() : token(NONE), start(0), len(-1) {}
730 int start, len;
731 Q_GUI_EXPORT QString lexem() const;
732};
733QT_CSS_DECLARE_TYPEINFO(Symbol, Q_RELOCATABLE_TYPE)
734
735class Q_GUI_EXPORT Scanner
736{
737public:
738 static QString preprocess(const QString &input, bool *hasEscapeSequences = nullptr);
739 static void scan(const QString &preprocessedInput, QList<Symbol> *symbols);
740};
741
742class Q_GUI_EXPORT Parser
743{
744public:
745 Parser();
746 explicit Parser(const QString &css, bool file = false);
747
748 void init(const QString &css, bool file = false);
751
764 bool parseClass(QString *name);
770 bool parseExpr(QList<Value> *values);
771 bool parseTerm(Value *value);
773 bool parseHexColor(QColor *col);
775
776 inline bool testRuleset() { return testSelector(); }
777 inline bool testSelector() { return testSimpleSelector(); }
778 inline bool parseNextSelector(Selector *sel) { if (!testSelector()) return recordError(); return parseSelector(sel); }
779 bool testSimpleSelector();
781 inline bool testElementName() { return test(IDENT) || test(STAR); }
782 inline bool testClass() { return test(DOT); }
783 inline bool testAttrib() { return test(LBRACKET); }
784 inline bool testPseudo() { return test(COLON); }
785 inline bool testMedium() { return test(IDENT); }
786 inline bool parseNextMedium(QStringList *media) { if (!testMedium()) return recordError(); return parseMedium(media); }
787 inline bool testPseudoPage() { return test(COLON); }
791 inline bool testAnimation() { return testTokenAndEndsWith(ATKEYWORD_SYM, QLatin1StringView("keyframes")); }
792 inline bool testCombinator() { return test(PLUS) || test(GREATER) || test(TILDE) || test(S); }
793 inline bool testProperty() { return test(IDENT); }
794 bool testTerm();
795 inline bool testExpr() { return testTerm(); }
797 {
798 if (!testExpr())
799 return recordError();
800 return parseExpr(values);
801 }
802 bool testPrio();
803 inline bool testHexColor() { return test(HASH); }
804 inline bool testFunction() { return test(FUNCTION); }
805 inline bool parseNextFunction(QString *name, QString *args) { if (!testFunction()) return recordError(); return parseFunction(name, args); }
806
807 inline bool lookupElementName() const { return lookup() == IDENT || lookup() == STAR; }
808
809 inline void skipSpace() { while (test(S)) {}; }
810
811 inline bool hasNext() const { return index < symbols.size(); }
812 inline TokenType next() { return symbols.at(index++).token; }
813 bool next(TokenType t);
814 bool test(TokenType t);
815 inline void prev() { index--; }
816 inline const Symbol &symbol() const { return symbols.at(index - 1); }
817 inline QString lexem() const { return symbol().lexem(); }
818 QString unquotedLexem() const;
821 inline TokenType lookup() const {
822 return (index - 1) < symbols.size() ? symbols.at(index - 1).token : NONE;
823 }
824
826
827 inline bool recordError() { errorIndex = index; return false; }
828
830 int index;
834};
835
836struct Q_GUI_EXPORT ValueExtractor
837{
839
840 bool extractFont(QFont *font, int *fontSizeAdjustment);
841 bool extractBackground(QBrush *, QString *, Repeat *, Qt::Alignment *, QCss::Origin *, QCss::Attachment *,
842 QCss::Origin *) const;
843 bool extractGeometry(int *w, int *h, int *minw, int *minh, int *maxw, int *maxh);
844 bool extractPosition(int *l, int *t, int *r, int *b, QCss::Origin *, Qt::Alignment *,
845 QCss::PositionMode *, Qt::Alignment *);
846 bool extractBox(int *margins, int *paddings, int *spacing = nullptr);
847 bool extractBorder(int *borders, QBrush *colors, BorderStyle *Styles, QSize *radii);
848 bool extractOutline(int *borders, QBrush *colors, BorderStyle *Styles, QSize *radii, int *offsets);
849 bool extractPalette(QBrush *foreground, QBrush *selectedForeground, QBrush *selectedBackground,
850 QBrush *alternateBackground, QBrush *placeHolderTextForeground,
851 QBrush *accent) const;
852 int extractStyleFeatures() const;
853 bool extractImage(QIcon *icon, Qt::Alignment *a, QSize *size) const;
854 bool extractIcon(QIcon *icon, QSize *size) const;
855
856 void lengthValues(const Declaration &decl, int *m);
857 QTextLength textLength(const Declaration &decl);
858
859private:
860 void extractFont();
861 void borderValue(const Declaration &decl, int *width, QCss::BorderStyle *style, QBrush *color);
862 LengthData lengthValue(const Value& v);
863 int lengthValue(const Declaration &decl);
864 QSize sizeValue(const Declaration &decl);
865 void sizeValues(const Declaration &decl, QSize *radii);
866
867 QList<Declaration> declarations;
868 QFont f;
869 int adjustment;
870 int fontExtracted;
871 QPalette pal;
872};
873
874} // namespace QCss
875
876QT_END_NAMESPACE
877
878QT_DECL_METATYPE_EXTERN_TAGGED(QCss::BackgroundData, QCss__BackgroundData, Q_GUI_EXPORT)
879QT_DECL_METATYPE_EXTERN_TAGGED(QCss::LengthData, QCss__LengthData, Q_GUI_EXPORT)
880QT_DECL_METATYPE_EXTERN_TAGGED(QCss::BorderData, QCss__BorderData, Q_GUI_EXPORT)
881
882#undef QT_CSS_DECLARE_TYPEINFO
883
884#endif // QT_NO_CSSPARSER
885
886#endif
\inmodule QtGui
Definition qbrush.h:469
\inmodule QtGui
Definition qbrush.h:417
\inmodule QtGui
Definition qbrush.h:435
const quint64 PseudoClass_Unknown
const quint64 PseudoClass_Floatable
const quint64 PseudoClass_Movable
@ BottomEdge
@ RightEdge
const int NumPseudos
const quint64 PseudoClass_Children
const quint64 PseudoClass_Disabled
const quint64 PseudoClass_Sibling
const quint64 PseudoClass_ReadOnly
const quint64 PseudoClass_Closed
const quint64 PseudoClass_Maximized
const quint64 PseudoClass_Default
@ Repeat_XY
@ Repeat_Unknown
@ Repeat_None
const quint64 PseudoClass_Bottom
const quint64 PseudoClass_EditFocus
const quint64 PseudoClass_Focus
const quint64 PseudoClass_Enabled
const quint64 PseudoClass_Editable
const quint64 PseudoClass_Vertical
const quint64 PseudoClass_Flat
const quint64 PseudoClass_NonExclusive
@ Origin_Padding
@ Origin_Content
@ Origin_Unknown
@ Origin_Margin
@ Origin_Border
@ ATKEYWORD_SYM
@ DASHMATCH
@ PERCENTAGE
@ BEGINSWITH
@ SEMICOLON
@ EXCLAMATION_SYM
const quint64 PseudoClass_Pressed
const quint64 PseudoClass_Item
const quint64 PseudoClass_Alternate
const quint64 PseudoClass_PreviousSelected
const quint64 PseudoClass_Closable
const quint64 PseudoClass_Horizontal
const quint64 PseudoClass_Off
const quint64 PseudoClass_Active
const quint64 PseudoClass_NextSelected
@ StyleFeature_BackgroundGradient
@ StyleFeature_BackgroundColor
@ StyleFeature_None
const quint64 PseudoClass_Open
const quint64 PseudoClass_Frameless
const quint64 PseudoClass_Checked
const quint64 PseudoClass_Any
const quint64 PseudoClass_Selected
@ Attachment_Fixed
@ Attachment_Scroll
@ Attachment_Unknown
const quint64 PseudoClass_Right
@ Value_Disc
@ Value_Bottom
@ Value_Wave
@ Value_UpperRoman
@ Value_Oblique
@ Value_Selected
@ Value_XXLarge
@ Value_Decimal
@ Value_PreWrap
@ Value_Link
@ Value_Active
@ Value_Button
@ Value_Left
@ Value_Circle
@ Value_Medium
@ Value_Midlight
@ Value_SvgMiterJoin
@ Value_Pre
@ Value_SquareCap
@ Value_Normal
@ Value_LineThrough
@ Value_DotDotDash
@ Value_Square
@ Value_Small
@ Value_Groove
@ Value_Transparent
@ Value_LowerAlpha
@ Value_Off
@ Value_Solid
@ Value_Disabled
@ Value_Light
@ Value_Super
@ Value_NoWrap
@ Value_LastColorRole
@ Value_Base
@ Value_Outset
@ Value_Accent
@ Value_Shadow
@ Value_Native
@ Value_ButtonText
@ Value_RoundJoin
@ Value_FirstColorRole
@ Value_LowerRoman
@ Value_Top
@ Value_None
@ Value_Highlight
@ Value_Bold
@ Value_ToolTipText
@ UnknownValue
@ Value_Dark
@ Value_Center
@ Value_Right
@ Value_Sub
@ Value_Text
@ Value_PreLine
@ Value_HighlightedText
@ Value_WindowText
@ Value_FlatCap
@ Value_Underline
@ Value_ToolTipBase
@ Value_DotDash
@ Value_Uppercase
@ Value_Auto
@ Value_Inset
@ Value_Large
@ Value_XLarge
@ Value_MiterJoin
@ Value_SmallCaps
@ Value_RoundCap
@ Value_Double
@ Value_AlternateBase
@ Value_BevelJoin
@ Value_Mid
@ Value_Overline
@ Value_Ridge
@ Value_UpperAlpha
@ Value_PlaceholderText
@ Value_Dashed
@ Value_BrightText
@ Value_Always
@ Value_LinkVisited
@ Value_Dotted
@ Value_Middle
@ Value_Window
@ Value_NoRole
@ Value_Lowercase
@ Value_Italic
@ BorderImage
@ BorderTopLeftRadius
@ BackgroundColor
@ Whitespace
@ OutlineTopLeftRadius
@ MarginLeft
@ QtAlternateBackground
@ QtStrokeMiterLimit
@ BorderTopColor
@ QtPlaceHolderTextColor
@ MarginRight
@ BorderBottomLeftRadius
@ QtStrokeDashArray
@ QtTableType
@ BorderBottom
@ Padding
@ QtStyleFeatures
@ BorderTopStyle
@ OutlineBottomRightRadius
@ FontKerning
@ BorderRightWidth
@ QtStrokeColor
@ PaddingRight
@ QtStrokeDashOffset
@ BackgroundOrigin
@ BorderBottomColor
@ UnknownProperty
@ MarginTop
@ TextUnderlineStyle
@ QtListIndent
@ PaddingLeft
@ PaddingTop
@ QtForeground
@ QtSpacing
@ BorderLeftColor
@ OutlineTopRightRadius
@ BorderRightColor
@ QtSelectionForeground
@ PaddingBottom
@ LetterSpacing
@ BorderBottomRightRadius
@ QtListNumberPrefix
@ OutlineWidth
@ PageBreakAfter
@ BorderRight
@ OutlineColor
@ OutlineBottomLeftRadius
@ FontWeight
@ QtBackgroundRole
@ QtForegroundTextureCacheKey
@ TextIndent
@ QtPosition
@ BorderColor
@ MarginBottom
@ MaximumWidth
@ QtUserState
@ OutlineStyle
@ BorderLeftWidth
@ BorderCollapse
@ QtBlockIndent
@ BackgroundPosition
@ WordSpacing
@ QtStrokeWidth
@ BackgroundImage
@ BorderRightStyle
@ FontStyle
@ TextTransform
@ FontFamily
@ FontVariant
@ BorderWidth
@ VerticalAlignment
@ LineHeight
@ QtParagraphType
@ QtSelectionBackground
@ BorderStyles
@ BorderLeft
@ TextDecoration
@ BorderTopRightRadius
@ ListStyleType
@ OutlineOffset
@ BorderRadius
@ ListStyle
@ QtStrokeLineJoin
@ BorderBottomWidth
@ Background
@ BorderTopWidth
@ OutlineRadius
@ MinimumWidth
@ BackgroundAttachment
@ TextAlignment
@ BackgroundClip
@ TextDecorationColor
@ QtListNumberSuffix
@ QtImageAlignment
@ BorderBottomStyle
@ BorderTop
@ FontSize
@ PageBreakBefore
@ QtLineHeightType
@ BackgroundRepeat
@ BorderLeftStyle
@ MinimumHeight
@ MaximumHeight
@ QtStrokeLineCap
const quint64 PseudoClass_Window
const quint64 PseudoClass_Minimized
@ TileMode_Unknown
@ TileMode_Repeat
@ TileMode_Round
@ TileMode_Stretch
StyleSheetOrigin
@ StyleSheetOrigin_UserAgent
@ StyleSheetOrigin_User
@ StyleSheetOrigin_Author
@ StyleSheetOrigin_Unspecified
@ StyleSheetOrigin_Inline
const quint64 PseudoClass_On
const quint64 PseudoClass_Unspecified
const quint64 PseudoClass_Unchecked
const quint64 PseudoClass_First
const quint64 PseudoClass_Indeterminate
const quint64 PseudoClass_Middle
@ PositionMode_Absolute
@ PositionMode_Relative
@ PositionMode_Unknown
@ PositionMode_Static
@ PositionMode_Fixed
const quint64 PseudoClass_Top
const quint64 PseudoClass_Hover
@ BorderStyle_Dotted
@ BorderStyle_Solid
@ BorderStyle_Double
@ BorderStyle_DotDash
@ BorderStyle_Ridge
@ BorderStyle_Unknown
@ BorderStyle_Dashed
@ BorderStyle_Outset
@ BorderStyle_Groove
@ BorderStyle_Native
@ BorderStyle_None
@ BorderStyle_DotDotDash
@ BorderStyle_Inset
const quint64 PseudoClass_Left
const quint64 PseudoClass_Last
const quint64 PseudoClass_OnlyOne
const quint64 PseudoClass_Exclusive
Combined button and popup list for selecting options.
static void setTextDecorationFromValues(const QList< QCss::Value > &values, QFont *font)
static bool operator<(const QString &name, const QCssKnownValue &prop)
static constexpr QCssKnownValue positions[]
static void removeOptionalQuotes(QString *str)
static constexpr QCssKnownValue repeats[]
static bool setFontFamilyFromValues(const QList< QCss::Value > &values, QFont *font, int start=0)
static bool setFontWeightFromValue(const QCss::Value &value, QFont *font)
static int lengthValueFromData(const LengthData &data, const QFont &f)
static bool operator<(const QCssKnownValue &prop, const QString &name)
#define CHECK_ARRAY_IS_SORTED(array)
static void setTextTransformFromValue(const QCss::Value &value, QFont *font)
static bool setFontSizeFromValue(QCss::Value value, QFont *font, int *fontSizeAdjustment)
static constexpr QCssKnownValue tileModes[]
static bool setFontStyleFromValue(const QCss::Value &value, QFont *font)
static ColorData parseColorValue(QCss::Value v)
static BorderStyle parseStyleValue(const QCss::Value &v)
static void setFontVariantFromValue(const QCss::Value &value, QFont *font)
static bool intValueHelper(const QCss::Value &v, int *i, const char *unit)
static Qt::Alignment parseAlignment(const QCss::Value *values, int count)
static constexpr QCssKnownValue styleFeatures[]
static constexpr QCssKnownValue properties[]
static void setLetterSpacingFromValue(const QCss::Value &value, QFont *font)
static BrushData parseBrushValue(const QCss::Value &v, const QPalette &pal)
static quint64 findKnownValue(const QString &name, const C &arr)
static bool isHexDigit(const char c)
static bool isInheritable(Property propertyId)
static constexpr uchar indexOfId[]
static constexpr QCssKnownValue pseudos[]
static bool setFontKerningFromValue(const QCss::Value &value, QFont *font)
static void parseShorthandBackgroundProperty(const QList< QCss::Value > &values, BrushData *brush, QString *image, Repeat *repeat, Qt::Alignment *alignment, const QPalette &pal)
static constexpr QCssKnownValue attachments[]
static void parseShorthandFontProperty(const QList< QCss::Value > &values, QFont *font, int *fontSizeAdjustment)
static QBrush brushFromData(const BrushData &c, const QPalette &pal)
static void setWordSpacingFromValue(const QCss::Value &value, QFont *font)
static constexpr QCssKnownValue values[]
static constexpr QCssKnownValue origins[]
static QColor colorFromData(const ColorData &c, const QPalette &pal)
#define QT_CSS_DECLARE_TYPEINFO(Class, Type)
constexpr bool operator()(const QCssKnownValue &lhs, const QCssKnownValue &rhs) const noexcept
const char name[28]
QList< AnimationRuleSet > ruleSets
ValueMatchType valueMatchCriterium
Qt::Alignment alignment
QList< Pseudo > pseudos
QList< AttributeSelector > attributeSelectors
BorderStyle style
BrushData(QPalette::ColorRole r)
BrushData(const QBrush &br)
QPalette::ColorRole role
ColorData(const QColor &col)
QPalette::ColorRole role
ColorData(QPalette::ColorRole r)
QStringList media
QStringList media
QList< StyleRule > styleRules
QList< Declaration > declarations
QString function
QList< Selector > selectors
QList< Declaration > declarations
QList< StyleRule > styleRules
QList< MediaRule > mediaRules
QList< AnimationRule > animationRules
Q_GUI_EXPORT void buildIndexes(Qt::CaseSensitivity nameCaseSensitivity=Qt::CaseSensitive)
QMultiHash< QString, StyleRule > idIndex
QMultiHash< QString, StyleRule > nameIndex
StyleSheetOrigin origin
QList< ImportRule > importRules
QList< PageRule > pageRules
TokenType token
bool extractIcon(QIcon *icon, QSize *size) const
bool extractPosition(int *l, int *t, int *r, int *b, QCss::Origin *, Qt::Alignment *, QCss::PositionMode *, Qt::Alignment *)
bool extractGeometry(int *w, int *h, int *minw, int *minh, int *maxw, int *maxh)
bool extractBox(int *margins, int *paddings, int *spacing=nullptr)
bool extractFont(QFont *font, int *fontSizeAdjustment)
void lengthValues(const Declaration &decl, int *m)
bool extractBorder(int *borders, QBrush *colors, BorderStyle *Styles, QSize *radii)
QTextLength textLength(const Declaration &decl)
bool extractOutline(int *borders, QBrush *colors, BorderStyle *Styles, QSize *radii, int *offsets)
bool extractBackground(QBrush *, QString *, Repeat *, Qt::Alignment *, QCss::Origin *, QCss::Attachment *, QCss::Origin *) const
int extractStyleFeatures() const
bool extractImage(QIcon *icon, Qt::Alignment *a, QSize *size) const
bool extractPalette(QBrush *foreground, QBrush *selectedForeground, QBrush *selectedBackground, QBrush *alternateBackground, QBrush *placeHolderTextForeground, QBrush *accent) const
QVariant variant