summaryrefslogtreecommitdiff
path: root/gsk/gskrendernode.h
Commit message (Collapse)AuthorAgeFilesLines
* rendernodes: Add gsk_text_node_new_with_boundsTimm Bäder2018-03-041-0/+7
| | | | | | 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.
* The big versioning cleanupMatthias Clasen2018-02-061-87/+87
| | | | | | | 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.
* gsk: Remove gsk_render_node_set_scaling_filters()Benjamin Otte2017-12-031-5/+0
| | | | | | 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.
* Partially revert GskTexture → GdkTexture renameEmmanuele Bassi2017-11-041-2/+2
| | | | | Excessive use of sed when moving GskTexture to GDK; the GskTextureNode should still live under the GSK namespace.
* GskTexture => GdkTextureBenjamin Otte2017-11-041-2/+2
| | | | We want this thing to replace GdkPixbuf, so it has to live in GDK.
* gsk: Make text nodes more compactMatthias Clasen2017-10-271-2/+4
| | | | | | | 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.
* Remove unnecessary constEmmanuele Bassi2017-10-231-1/+1
| | | | | | We return a scalar value, so we don't need it to be constant. https://bugzilla.gnome.org/show_bug.cgi?id=789351
* Tweak transform node apisMatthias Clasen2017-10-201-2/+2
| | | | | | Rename the getter to follow the peek naming scheme. Update all callers.
* gsk: Tweak text node apisMatthias Clasen2017-10-201-4/+4
| | | | | | Rename getters to follow the peek naming pattern. Update all callers.
* gsk: Tweak cairo node apisMatthias Clasen2017-10-201-4/+1
| | | | | | | | 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.
* Make render node getter publicMatthias Clasen2017-10-201-45/+146
| | | | Keeping these private does not really buy us anything.
* gsk: Move gsk_cairo_node_new_for_surface into public APIUmang Jain2017-10-081-0/+3
| | | | https://bugzilla.gnome.org/show_bug.cgi?id=788534
* gsk: remove gsk_blend_node_get_blend_mode from public apiMatthias Clasen2017-09-281-3/+0
| | | | | We don't have any other such getters in the public api at this point, so leave this one out as well.
* More work on text nodesMatthias Clasen2017-09-101-4/+2
| | | | | | | | | | | | | | | | | 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.
* gsk: Add a blur nodeMatthias Clasen2017-09-041-0/+4
| | | | | For now, this has just a fallback implementation using the typical box filter approximation.
* Add a render node for textMatthias Clasen2017-09-011-0/+9
| | | | | This is just a wrapper around a PangoGlyphString + PangoFont. Basically, the arguments that are passed to pango_renderer_draw_glyphs.
* GskRenderNode: Fix set_scaling_filters function nameTimm Bäder2017-04-261-1/+1
| | | | The implementation sed _filters while the prototype used _filter.
* GskRenderNode: add missing prototypeTimm Bäder2017-04-261-0/+3
|
* GSK: Fix a bunch of warnings from the GIR scannerDaniel Boles2017-03-271-1/+1
| | | | arising from conflicting argument names, missing annotations, etc.
* gsk: Add GskRepeatNodeBenjamin Otte2017-01-011-0/+5
| | | | | | | Also add gtk_snapshot_push_repeat() and use that to draw backgrounds. With that change, CSS background snapshots are created without Cairo nodes.
* gsk: Add GskColorMatrixNodeBenjamin Otte2016-12-311-0/+5
| | | | | | | | 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.
* gsk: Add docs and error handling to serialization APIBenjamin Otte2016-12-231-2/+8
|
* gsk: Add gsk_render_node_write_to_file()Benjamin Otte2016-12-231-0/+4
| | | | | For when you're in a debugger and need to have a closer look at this node...
* gsk: Export gsk_render_node_get_bounds()Benjamin Otte2016-12-231-0/+3
| | | | I'll need it in tests/testsuite soon.
* gsk: Add gsk_render_node_serialize/deserialize()Benjamin Otte2016-12-231-0/+6
| | | | | | | 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.
* gsk: Remove spread member from GskShadowBenjamin Otte2016-12-231-1/+0
| | | | | | | | 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.
* gsk: Add GskOutsetShadowNodeBenjamin Otte2016-12-201-0/+7
|
* gsk: Add GskInsetShadowNodeBenjamin Otte2016-12-201-0/+8
| | | | | 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.
* gsk: Add GskShadowNodeBenjamin Otte2016-12-201-0/+15
| | | | | | | ... 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!
* gsk: Add GskBorderNodeBenjamin Otte2016-12-201-0/+5
| | | | | | | | 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.
* gsk: Add cross-fade nodeBenjamin Otte2016-12-201-0/+5
| | | | And implement stack crossfades with it.
* gsk: Implement linear gradient render nodesBenjamin Otte2016-12-201-0/+20
|
* gsk: Add blend nodesBenjamin Otte2016-12-201-2/+3
| | | | Implement blend mode support in GTK background compositing with it.
* gsk: Add support for rounded clip rectanglesBenjamin Otte2016-12-201-0/+7
| | | | Also add support to GtkSnapshot, so people can push rounded clips.
* gsk: Add gsk_clip_node_new()Benjamin Otte2016-12-201-0/+6
| | | | | The node is a simple clipping node: It does a rectangular clip of its contents.
* gsk: Replace gsk_render_node_set_opacity()Benjamin Otte2016-12-201-2/+4
| | | | | | | ... with gsk_opacity_node_new(). Also implement support for opacity in gtk_widget_snapshot() using this new node.
* gsk: Add gsk_color_node_new()Benjamin Otte2016-12-201-0/+4
|
* gsk: Add gsk_render_node_draw()Benjamin Otte2016-12-201-0/+3
| | | | | Draws a node to a given cairo_t. This is mostly intended for fallback usage.
* snapshot: Change how gtk_snapshot_push/pop worksBenjamin Otte2016-12-201-7/+5
| | | | | | | | | | | | | | 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).
* gsk: gsk_render_node_set_transform() => GskTransformNodeBenjamin Otte2016-12-201-1/+4
| | | | | | | | | | 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.
* gsK: Move children handling to GskContainerNodeBenjamin Otte2016-12-201-12/+5
|
* gsk: Remove GskRenderNode::parentBenjamin Otte2016-12-201-6/+0
| | | | ... and all related APIs.
* gsk: Remove gsk_render_node_set_bounds()Benjamin Otte2016-12-201-3/+0
| | | | | | | 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
* gsk: Remove gsk_render_node_set_opaque()Benjamin Otte2016-12-201-5/+0
| | | | | | | 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.
* gsk: Add gsk_container_node_new()Benjamin Otte2016-12-201-0/+3
| | | | | It replaces gsk_renderer_create_render_node() which was doing the eact same thing, only taking an unused extra argument.
* gsk: Remove unneeded children modifiersBenjamin Otte2016-12-201-24/+0
| | | | | | | 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.
* gsk: Add gsk_cairo_node_new()Benjamin Otte2016-12-201-3/+6
| | | | | Split off Cairo drawn content nodes and require you to allocate them using this new function.
* gsk: Add gsk_texture_node_new()Benjamin Otte2016-12-201-3/+5
| | | | Start the transition into the different node types.
* gsk: Add GskRenderNodeTypeBenjamin Otte2016-12-201-0/+3
| | | | For now, this is unused.
* gsk: Make GskRenderNode a boxed typeBenjamin Otte2016-12-201-3/+1
|