| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Previously, we performed normal selection from CSS sources, and then iterated
over all the properties in the populated computed style. If the properties were
unset or their values were not from either a UA stylesheet or user stylesheet
with !important set, then we asked the client program (e.g. NetSurf) if there
were any presentational hints for that node, for each such property.
In the worst case this triggered N_PROPERTIES * N_NODES calls back to the client
program, even for properties that can't be set via HTML attributes.
The new API asks the client to supply a list of all the presentational hints
that apply to the given node. For most nodes on modern documents, this is 0.
Any presentational hints are applied before selection from CSS sources.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
- Remove client allocation function.
- Change node_classes callback not to yield array ownership to libcss.
- Node bloom filters now built by, during selection libcss.
- Added selection callbacks to get and set data on document nodes.
Test suite, example, and documentation updated to match.
|
|
|
|
| |
length/data.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Now we pass a node bloom filter to css_get_style. That node bloom
filter is filled with the node's ancestor element, class, and id
names. Internally, libcss also generates a bloom filter for each
selector chain. If the selector chain's bloom filter is not a
subset of the node bloom filter, we know that the selector chain's
rule does not apply to the node. This avoids the slow selector
chain matching process.
Other smaller optimisations to move the ruling out of selector
chains for inapplicable media types and other reasons to before
we start comparing rules from different sources to find the next
rule. All this is now done in hash.c so select.c never sees the
trivially ruled out rules.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
Things missing: parser tests; the following descriptors: font-feature-settings, font-stretch, font-variant, unicode-range.
svn path=/trunk/libcss/; revision=13244
|
|
|
|
| |
svn path=/trunk/libcss/; revision=13134
|
|
|
|
| |
svn path=/trunk/libcss/; revision=13133
|
|
|
|
| |
svn path=/trunk/libcss/; revision=13132
|
|
|
|
|
|
| |
pre-insertion search.
svn path=/trunk/libcss/; revision=13131
|
|
|
|
|
|
| |
multi-detailed selectors
svn path=/trunk/libcss/; revision=13126
|
|
|
|
| |
svn path=/trunk/libcss/; revision=13120
|
|
|
|
| |
svn path=/trunk/libcss/; revision=13119
|
|
|
|
| |
svn path=/trunk/libcss/; revision=13118
|
|
|
|
| |
svn path=/trunk/libcss/; revision=12746
|
|
|
|
|
|
|
|
| |
elements at the earliest opportunity.
Avoids pointlessly iterating over count(unused-pseudo-element) * count(properties) properties.
svn path=/trunk/libcss/; revision=12744
|
|
|
|
| |
svn path=/trunk/libcss/; revision=12743
|
|
|
|
|
|
| |
Destroy interned strings from selection context destructor.
svn path=/trunk/libcss/; revision=12742
|
|
|
|
| |
svn path=/trunk/libcss/; revision=12007
|
|
|
|
| |
svn path=/trunk/libcss/; revision=11972
|
|
|
|
| |
svn path=/trunk/libcss/; revision=11572
|
|
|
|
|
|
|
|
| |
selectors.
Fix dumping of these selectors when debugging selector chains
svn path=/trunk/libcss/; revision=11569
|
|
|
|
| |
svn path=/trunk/libcss/; revision=11557
|
|
|
|
| |
svn path=/trunk/libcss/; revision=11492
|
|
|
|
|
|
| |
This helps prevent confusion if someone else wants a function called parse_background or similar
svn path=/trunk/libcss/; revision=11416
|
|
|
|
|
|
| |
r=jmb,kinnison,vince
svn path=/trunk/libcss/; revision=11408
|
|
|
|
| |
svn path=/trunk/libcss/; revision=11214
|
|
|
|
| |
svn path=/trunk/libcss/; revision=11211
|
|
|
|
|
|
| |
presentational hints must not be applied to pseudo elements.
svn path=/trunk/libcss/; revision=11181
|
|
|
|
|
|
| |
the pseudo element, and not the raw node as well.
svn path=/trunk/libcss/; revision=11177
|
|
|
|
|
|
|
|
|
|
|
| |
These prevent stylesheets being used in multiple contexts simultaneously.
Their values can be inferred from the context in which the stylesheet is used.
Replace use of ownerRule to backtrack in style selection with a (fixed-size)
stack of rules to process. This prevents crashes when a sheet that was
previously imported somewhere is reused as a top-level sheet.
svn path=/trunk/libcss/; revision=10581
|
|
|
|
|
|
| |
Ensure that hint is initialised before asking client to populate it (so as to guard against broken clients)
svn path=/trunk/libcss/; revision=10520
|
|
|
|
|
|
|
| |
TODO: update the tests to include a refcounting proof
svn path=/trunk/libcss/; revision=10162
|
|
|
|
|
|
|
|
|
| |
They are properties of the context in which the stylesheet is used.
Therefore, for top-level sheets, this information must be provided at selection
time. For child sheets, the origin is inherited from their parent and the
applicable media types are specified on the linking mechanism.
svn path=/trunk/libcss/; revision=9802
|
|
|
|
|
|
|
|
| |
Drop some dead code.
Avoid a potential NULL dereference.
Add missing "break" in initial substate of block context parser
svn path=/trunk/libcss/; revision=9678
|
|
|
|
| |
svn path=/trunk/libcss/; revision=9020
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
1) element selectors
2) universal selectors with class names
3) universal selectors with ids
4) universal selectors
Only bother looking for matching selectors in 2 & 3 if the node being selected for has class names or an id, respectively.
In theory, this should speed up style selection somewhat.
svn path=/trunk/libcss/; revision=8882
|
|
|
|
| |
svn path=/trunk/libcss/; revision=8667
|
|
|
|
|
|
|
|
| |
another selection handler callback for this.
Change selector hash to use an ASCII case-insensitive hash function.
svn path=/trunk/libcss/; revision=8602
|
|
|
|
|
|
|
| |
Firstly, the chains being processed are from a hashtable, so aren't guaranteed to apply to the element being selected.
Secondly, when processing combinators, we have a completely different node object to compare.
svn path=/trunk/libcss/; revision=8593
|