| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
An alternative GskTextNode constructor that does no text measuring. That
way, we can measure the text before and check if the node will be
outside of the current clip anyway.
|
|
|
|
|
|
|
| |
Remove all the old 2.x and 3.x version annotations.
GTK+ 4 is a new start, and from the perspective of a
GTK+ 4 developer all these APIs have been around since
the beginning.
|
|
|
|
|
|
| |
This is a leftover from the very early rendernode that we forgot to delete.
This can be seen by the fact that it is settable on an immutable object.
|
|
|
|
|
| |
Excessive use of sed when moving GskTexture to GDK; the GskTextureNode
should still live under the GSK namespace.
|
|
|
|
| |
We want this thing to replace GdkPixbuf, so it has to live in GDK.
|
|
|
|
|
|
|
| |
The copy of the PangoGlyphString we do here was showing up
in some profiles. To avoid it, allocate the PangoGlyphInfo array
as part of the node itself. Update all callers to deal with
the slight api change required for this.
|
|
|
|
|
|
| |
We return a scalar value, so we don't need it to be constant.
https://bugzilla.gnome.org/show_bug.cgi?id=789351
|
|
|
|
|
|
| |
Rename the getter to follow the peek naming scheme.
Update all callers.
|
|
|
|
|
|
| |
Rename getters to follow the peek naming pattern.
Update all callers.
|
|
|
|
|
|
|
|
| |
Rename the surface getter to peek, following other render
node getters, and make the surface-based constructor private,
since it is not something we want to encourage.
Update all callers.
|
|
|
|
| |
Keeping these private does not really buy us anything.
|
|
|
|
| |
https://bugzilla.gnome.org/show_bug.cgi?id=788534
|
|
|
|
|
| |
We don't have any other such getters in the public api at
this point, so leave this one out as well.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This commit takes several steps towards rendering text
like we want to.
The creation of the cairo surface and texture is moved
to the backend (in GskVulkanRenderer). We add a mask
shader that is used in the next text pipeline to use
the texture as a mask, like cairo_mask_surface does.
There is a separate color text pipeline that uses the
already existing blend shaders to use the texture as
a source, like cairo_paint does.
The text node api is simplified to have just a single
offset, which determines the left end of the text baseline,
like all our other text drawing APIs.
|
|
|
|
|
| |
For now, this has just a fallback implementation using
the typical box filter approximation.
|
|
|
|
|
| |
This is just a wrapper around a PangoGlyphString + PangoFont.
Basically, the arguments that are passed to pango_renderer_draw_glyphs.
|
|
|
|
| |
The implementation sed _filters while the prototype used _filter.
|
| |
|
|
|
|
| |
arising from conflicting argument names, missing annotations, etc.
|
|
|
|
|
|
|
| |
Also add gtk_snapshot_push_repeat() and use that to draw backgrounds.
With that change, CSS background snapshots are created without Cairo
nodes.
|
|
|
|
|
|
|
|
| |
This node essentially implements the feColorMatrix SVG filter. I got the
idea yesterday after looking at the opacity implementation.
It can be used for opacity (not sure if we want to) and to implement a
bunch of the CSS filters.
|
| |
|
|
|
|
|
| |
For when you're in a debugger and need to have a closer look at this
node...
|
|
|
|
| |
I'll need it in tests/testsuite soon.
|
|
|
|
|
|
|
| |
This does a conversion to/from GBytes and is intended for writing tests.
It's really crude but it works.
And that probably means Alex will (ab)use it for broadway.
|
|
|
|
|
|
|
|
| |
I had originally thought I'd use GskShadow for box-shadow, but didn't in
the end.
So now it's only used for text-shadow and icon-shadow, and those don't
have a spread.
|
| |
|
|
|
|
|
| |
And again lots of shadow code gets copied to GSK. But we're now almost
at a stage where widget-factory does not use cairo nodes anymore.
|
|
|
|
|
|
|
| |
... and make the icon rendering code use it.
This requires moving even more shadow renering code into GSK, but so be
it. At least the "shadows not implemented" warning is now gone!
|
|
|
|
|
|
|
|
| |
The node draws a solid CSS border, which can be used to cover everything
but dashed and dotted borders (double, groove, inset, ...).
For different border styles, we overlay multiple nodes and set their
colors to transparent for sides with non-matching styles.
|
|
|
|
| |
And implement stack crossfades with it.
|
| |
|
|
|
|
| |
Implement blend mode support in GTK background compositing with it.
|
|
|
|
| |
Also add support to GtkSnapshot, so people can push rounded clips.
|
|
|
|
|
| |
The node is a simple clipping node: It does a rectangular clip of its
contents.
|
|
|
|
|
|
|
| |
... with gsk_opacity_node_new().
Also implement support for opacity in gtk_widget_snapshot() using this
new node.
|
| |
|
|
|
|
|
| |
Draws a node to a given cairo_t. This is mostly intended for fallback
usage.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Instead of appending a container node and adding the nodes to it as they
come in, we now collect the nodes until gtk_snapshot_pop() is called and
then hand them out in a container node.
The caller of gtk_snapshot_push() is then responsible for doing whatever
he wants with the created node.
Another addigion is the keep_coordinates flag to gtk_snapshot_push()
which allows callers to keep the current offset and clip region or
discard it. Discarding is useful when doing transforms, keeping it is
useful when inserting effect nodes (like the ones I'm about to add).
|
|
|
|
|
|
|
|
|
|
| |
Instead of having a setter for the transform, have a GskTransformNode.
Most of the oprations that GTK does do not require a transform, so it
doesn't make sense to have it as a primary attribute.
Also, changing the transform requires updating the uniforms of the GL
renderer, so we're happy if we can avoid that.
|
| |
|
|
|
|
| |
... and all related APIs.
|
|
|
|
|
|
|
| |
gsk_render_node_get_bounds() still exists and is computed via vfunc
call:
- containers dynamically compute the bounds from their children
- surface and texture nodes get bounds passed on construction
|
|
|
|
|
|
|
| |
If we ever feel, we need this function again, we can readd it later.
But nobody is using it other than for overriding opactiy. And you can
just override opacity directly if you care.
|
|
|
|
|
| |
It replaces gsk_renderer_create_render_node() which was doing the eact
same thing, only taking an unused extra argument.
|
|
|
|
|
|
|
| |
Creating render nodes is fire-and-forget, so all one should do is create
a container, append, append, append and then send it off to the
renderer. So there's no need to replace, insert between or anything
else.
|
|
|
|
|
| |
Split off Cairo drawn content nodes and require you to allocate them
using this new function.
|
|
|
|
| |
Start the transition into the different node types.
|
|
|
|
| |
For now, this is unused.
|
| |
|