Github User Fetcher 1.0.0
C Application with Server and GUI
Loading...
Searching...
No Matches
gskenums.h
Go to the documentation of this file.
1/* GSK - The GTK Scene Kit
2 * Copyright 2016 Endless
3 *
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2 of the License, or (at your option) any later version.
8 *
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
13 *
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library. If not, see <http://www.gnu.org/licenses/>.
16 */
17
18#pragma once
19
20#if !defined (__GSK_H_INSIDE__) && !defined (GTK_COMPILATION)
21#error "Only <gsk/gsk.h> can be included directly."
22#endif
23
24/**
25 * GskRenderNodeType:
26 * @GSK_NOT_A_RENDER_NODE: Error type. No node will ever have this type.
27 * @GSK_CONTAINER_NODE: A node containing a stack of children
28 * @GSK_CAIRO_NODE: A node drawing a `cairo_surface_t`
29 * @GSK_COLOR_NODE: A node drawing a single color rectangle
30 * @GSK_LINEAR_GRADIENT_NODE: A node drawing a linear gradient
31 * @GSK_REPEATING_LINEAR_GRADIENT_NODE: A node drawing a repeating linear gradient
32 * @GSK_RADIAL_GRADIENT_NODE: A node drawing a radial gradient
33 * @GSK_REPEATING_RADIAL_GRADIENT_NODE: A node drawing a repeating radial gradient
34 * @GSK_CONIC_GRADIENT_NODE: A node drawing a conic gradient
35 * @GSK_BORDER_NODE: A node stroking a border around an area
36 * @GSK_TEXTURE_NODE: A node drawing a `GdkTexture`
37 * @GSK_INSET_SHADOW_NODE: A node drawing an inset shadow
38 * @GSK_OUTSET_SHADOW_NODE: A node drawing an outset shadow
39 * @GSK_TRANSFORM_NODE: A node that renders its child after applying a matrix transform
40 * @GSK_OPACITY_NODE: A node that changes the opacity of its child
41 * @GSK_COLOR_MATRIX_NODE: A node that applies a color matrix to every pixel
42 * @GSK_REPEAT_NODE: A node that repeats the child's contents
43 * @GSK_CLIP_NODE: A node that clips its child to a rectangular area
44 * @GSK_ROUNDED_CLIP_NODE: A node that clips its child to a rounded rectangle
45 * @GSK_SHADOW_NODE: A node that draws a shadow below its child
46 * @GSK_BLEND_NODE: A node that blends two children together
47 * @GSK_CROSS_FADE_NODE: A node that cross-fades between two children
48 * @GSK_TEXT_NODE: A node containing a glyph string
49 * @GSK_BLUR_NODE: A node that applies a blur
50 * @GSK_DEBUG_NODE: Debug information that does not affect the rendering
51 * @GSK_GL_SHADER_NODE: A node that uses OpenGL fragment shaders to render
52 *
53 * The type of a node determines what the node is rendering.
54 */
55
56/**
57 * GSK_TEXTURE_SCALE_NODE:
58 *
59 * A node drawing a `GdkTexture` scaled and filtered.
60 *
61 * Since: 4.10
62 */
63
64/**
65 * GSK_MASK_NODE:
66 *
67 * A node that masks one child with another.
68 *
69 * Since: 4.10
70 */
71
72/**
73 * GSK_STROKE_NODE:
74 *
75 * A node that strokes a path.
76 *
77 * Since: 4.14
78 */
79
80/**
81 * GSK_FILL_NODE:
82 *
83 * A node that fills a path.
84 *
85 * Since: 4.14
86 */
87
88/**
89 * GSK_SUBSURFACE_NODE:
90 *
91 * A node that possibly redirects part of the scene graph to a subsurface.
92 *
93 * Since: 4.14
94 */
95
129
130/**
131 * GskScalingFilter:
132 * @GSK_SCALING_FILTER_LINEAR: linear interpolation filter
133 * @GSK_SCALING_FILTER_NEAREST: nearest neighbor interpolation filter
134 * @GSK_SCALING_FILTER_TRILINEAR: linear interpolation along each axis,
135 * plus mipmap generation, with linear interpolation along the mipmap
136 * levels
137 *
138 * The filters used when scaling texture data.
139 *
140 * The actual implementation of each filter is deferred to the
141 * rendering pipeline.
142 */
148
149/**
150 * GskBlendMode:
151 * @GSK_BLEND_MODE_DEFAULT: The default blend mode, which specifies no blending
152 * @GSK_BLEND_MODE_MULTIPLY: The source color is multiplied by the destination
153 * and replaces the destination
154 * @GSK_BLEND_MODE_SCREEN: Multiplies the complements of the destination and source
155 * color values, then complements the result.
156 * @GSK_BLEND_MODE_OVERLAY: Multiplies or screens the colors, depending on the
157 * destination color value. This is the inverse of hard-list
158 * @GSK_BLEND_MODE_DARKEN: Selects the darker of the destination and source colors
159 * @GSK_BLEND_MODE_LIGHTEN: Selects the lighter of the destination and source colors
160 * @GSK_BLEND_MODE_COLOR_DODGE: Brightens the destination color to reflect the source color
161 * @GSK_BLEND_MODE_COLOR_BURN: Darkens the destination color to reflect the source color
162 * @GSK_BLEND_MODE_HARD_LIGHT: Multiplies or screens the colors, depending on the source color value
163 * @GSK_BLEND_MODE_SOFT_LIGHT: Darkens or lightens the colors, depending on the source color value
164 * @GSK_BLEND_MODE_DIFFERENCE: Subtracts the darker of the two constituent colors from the lighter color
165 * @GSK_BLEND_MODE_EXCLUSION: Produces an effect similar to that of the difference mode but lower in contrast
166 * @GSK_BLEND_MODE_COLOR: Creates a color with the hue and saturation of the source color and the luminosity of the destination color
167 * @GSK_BLEND_MODE_HUE: Creates a color with the hue of the source color and the saturation and luminosity of the destination color
168 * @GSK_BLEND_MODE_SATURATION: Creates a color with the saturation of the source color and the hue and luminosity of the destination color
169 * @GSK_BLEND_MODE_LUMINOSITY: Creates a color with the luminosity of the source color and the hue and saturation of the destination color
170 *
171 * The blend modes available for render nodes.
172 *
173 * The implementation of each blend mode is deferred to the
174 * rendering pipeline.
175 *
176 * See <https://www.w3.org/TR/compositing-1/#blending> for more information
177 * on blending and blend modes.
178 */
198
199/**
200 * GskCorner:
201 * @GSK_CORNER_TOP_LEFT: The top left corner
202 * @GSK_CORNER_TOP_RIGHT: The top right corner
203 * @GSK_CORNER_BOTTOM_RIGHT: The bottom right corner
204 * @GSK_CORNER_BOTTOM_LEFT: The bottom left corner
205 *
206 * The corner indices used by `GskRoundedRect`.
207 */
214
215/**
216 * GskFillRule:
217 * @GSK_FILL_RULE_WINDING: If the path crosses the ray from
218 * left-to-right, counts +1. If the path crosses the ray
219 * from right to left, counts -1. (Left and right are determined
220 * from the perspective of looking along the ray from the starting
221 * point.) If the total count is non-zero, the point will be filled.
222 * @GSK_FILL_RULE_EVEN_ODD: Counts the total number of
223 * intersections, without regard to the orientation of the contour. If
224 * the total number of intersections is odd, the point will be
225 * filled.
226 *
227 * `GskFillRule` is used to select how paths are filled.
228 *
229 * Whether or not a point is included in the fill is determined by taking
230 * a ray from that point to infinity and looking at intersections with the
231 * path. The ray can be in any direction, as long as it doesn't pass through
232 * the end point of a segment or have a tricky intersection such as
233 * intersecting tangent to the path.
234 *
235 * (Note that filling is not actually implemented in this way. This
236 * is just a description of the rule that is applied.)
237 *
238 * New entries may be added in future versions.
239 *
240 * Since: 4.14
241 */
246
247/**
248 * GskLineCap:
249 * @GSK_LINE_CAP_BUTT: Start and stop the line exactly at the start
250 * and end point
251 * @GSK_LINE_CAP_ROUND: Use a round ending, the center of the circle
252 * is the start or end point
253 * @GSK_LINE_CAP_SQUARE: use squared ending, the center of the square
254 * is the start or end point
255 *
256 * Specifies how to render the start and end points of contours or
257 * dashes when stroking.
258 *
259 * The default line cap style is `GSK_LINE_CAP_BUTT`.
260 *
261 * New entries may be added in future versions.
262 *
263 * <figure>
264 * <picture>
265 * <source srcset="caps-dark.png" media="(prefers-color-scheme: dark)">
266 * <img alt="Line Cap Styles" src="caps-light.png">
267 * </picture>
268 * <figcaption>GSK_LINE_CAP_BUTT, GSK_LINE_CAP_ROUND, GSK_LINE_CAP_SQUARE</figcaption>
269 * </figure>
270 *
271 * Since: 4.14
272 */
278
279/**
280 * GskLineJoin:
281 * @GSK_LINE_JOIN_MITER: Use a sharp angled corner
282 * @GSK_LINE_JOIN_ROUND: Use a round join, the center of the circle is
283 * the join point
284 * @GSK_LINE_JOIN_BEVEL: use a cut-off join, the join is cut off at half
285 * the line width from the joint point
286 *
287 * Specifies how to render the junction of two lines when stroking.
288 *
289 * The default line join style is `GSK_LINE_JOIN_MITER`.
290 *
291 * New entries may be added in future versions.
292 *
293 * <figure>
294 * <picture>
295 * <source srcset="join-dark.png" media="(prefers-color-scheme: dark)">
296 * <img alt="Line Join Styles" src="join-light.png">
297 * </picture>
298 * <figcaption>GSK_LINE_JOINT_MITER, GSK_LINE_JOINT_ROUND, GSK_LINE_JOIN_BEVEL</figcaption>
299 * </figure>
300 *
301 * Since: 4.14
302 */
308
309/**
310 * GskPathOperation:
311 * @GSK_PATH_MOVE: A move-to operation, with 1 point describing the target point.
312 * @GSK_PATH_CLOSE: A close operation ending the current contour with a line back
313 * to the starting point. Two points describe the start and end of the line.
314 * @GSK_PATH_LINE: A line-to operation, with 2 points describing the start and
315 * end point of a straight line.
316 * @GSK_PATH_QUAD: A curve-to operation describing a quadratic Bézier curve
317 * with 3 points describing the start point, the control point and the end
318 * point of the curve.
319 * @GSK_PATH_CUBIC: A curve-to operation describing a cubic Bézier curve with 4
320 * points describing the start point, the two control points and the end point
321 * of the curve.
322 * @GSK_PATH_CONIC: A rational quadratic Bézier curve with 3 points describing
323 * the start point, control point and end point of the curve. A weight for the
324 * curve will be passed, too.
325 *
326 * Path operations are used to describe the segments of a `GskPath`.
327 *
328 * More values may be added in the future.
329 *
330 * Since: 4.14
331 */
340
341/**
342 * GskPathDirection:
343 * @GSK_PATH_FROM_START: The tangent in path direction of the incoming side
344 * of the path
345 * @GSK_PATH_TO_START: The tangent against path direction of the incoming side
346 * of the path
347 * @GSK_PATH_TO_END: The tangent in path direction of the outgoing side
348 * of the path
349 * @GSK_PATH_FROM_END: The tangent against path direction of the outgoing
350 * side of the path
351 *
352 * The values of the `GskPathDirection` enum are used to pick one
353 * of the four tangents at a given point on the path.
354 *
355 * Note that the directions for @GSK_PATH_FROM_START/@GSK_PATH_TO_END and
356 * @GSK_PATH_TO_START/@GSK_PATH_FROM_END will coincide for smooth points.
357 * Only sharp turns will exhibit four different directions.
358 *
359 * <picture>
360 * <source srcset="directions-dark.png" media="(prefers-color-scheme: dark)">
361 * <img alt="Path Tangents" src="directions-light.png">
362 * </picture>
363 *
364 * Since: 4.14
365 */
372
373/**
374 * GskSerializationError:
375 * @GSK_SERIALIZATION_UNSUPPORTED_FORMAT: The format can not be identified
376 * @GSK_SERIALIZATION_UNSUPPORTED_VERSION: The version of the data is not
377 * understood
378 * @GSK_SERIALIZATION_INVALID_DATA: The given data may not exist in
379 * a proper serialization
380 *
381 * Errors that can happen during (de)serialization.
382 */
388
389/**
390 * GskTransformCategory:
391 * @GSK_TRANSFORM_CATEGORY_UNKNOWN: The category of the matrix has not been
392 * determined.
393 * @GSK_TRANSFORM_CATEGORY_ANY: Analyzing the matrix concluded that it does
394 * not fit in any other category.
395 * @GSK_TRANSFORM_CATEGORY_3D: The matrix is a 3D matrix. This means that
396 * the w column (the last column) has the values (0, 0, 0, 1).
397 * @GSK_TRANSFORM_CATEGORY_2D: The matrix is a 2D matrix. This is equivalent
398 * to graphene_matrix_is_2d() returning %TRUE. In particular, this
399 * means that Cairo can deal with the matrix.
400 * @GSK_TRANSFORM_CATEGORY_2D_AFFINE: The matrix is a combination of 2D scale
401 * and 2D translation operations. In particular, this means that any
402 * rectangle can be transformed exactly using this matrix.
403 * @GSK_TRANSFORM_CATEGORY_2D_TRANSLATE: The matrix is a 2D translation.
404 * @GSK_TRANSFORM_CATEGORY_IDENTITY: The matrix is the identity matrix.
405 *
406 * The categories of matrices relevant for GSK and GTK.
407 *
408 * Note that any category includes matrices of all later categories.
409 * So if you want to for example check if a matrix is a 2D matrix,
410 * `category >= GSK_TRANSFORM_CATEGORY_2D` is the way to do this.
411 *
412 * Also keep in mind that rounding errors may cause matrices to not
413 * conform to their categories. Otherwise, matrix operations done via
414 * multiplication will not worsen categories. So for the matrix
415 * multiplication `C = A * B`, `category(C) = MIN (category(A), category(B))`.
416 */
427
428/**
429 * GskGLUniformType:
430 * @GSK_GL_UNIFORM_TYPE_NONE: No type, used for uninitialized or unspecified values.
431 * @GSK_GL_UNIFORM_TYPE_FLOAT: A float uniform
432 * @GSK_GL_UNIFORM_TYPE_INT: A GLSL int / gint32 uniform
433 * @GSK_GL_UNIFORM_TYPE_UINT: A GLSL uint / guint32 uniform
434 * @GSK_GL_UNIFORM_TYPE_BOOL: A GLSL bool / gboolean uniform
435 * @GSK_GL_UNIFORM_TYPE_VEC2: A GLSL vec2 / graphene_vec2_t uniform
436 * @GSK_GL_UNIFORM_TYPE_VEC3: A GLSL vec3 / graphene_vec3_t uniform
437 * @GSK_GL_UNIFORM_TYPE_VEC4: A GLSL vec4 / graphene_vec4_t uniform
438 *
439 * This defines the types of the uniforms that `GskGLShaders`
440 * declare.
441 *
442 * It defines both what the type is called in the GLSL shader
443 * code, and what the corresponding C type is on the Gtk side.
444 */
456
457/**
458 * GskMaskMode:
459 * @GSK_MASK_MODE_ALPHA: Use the alpha channel of the mask
460 * @GSK_MASK_MODE_INVERTED_ALPHA: Use the inverted alpha channel of the mask
461 * @GSK_MASK_MODE_LUMINANCE: Use the luminance of the mask,
462 * multiplied by mask alpha
463 * @GSK_MASK_MODE_INVERTED_LUMINANCE: Use the inverted luminance of the mask,
464 * multiplied by mask alpha
465 *
466 * The mask modes available for mask nodes.
467 *
468 * Since: 4.10
469 */
GskPathOperation
Definition gskenums.h:332
@ GSK_PATH_CONIC
Definition gskenums.h:338
@ GSK_PATH_LINE
Definition gskenums.h:335
@ GSK_PATH_QUAD
Definition gskenums.h:336
@ GSK_PATH_CLOSE
Definition gskenums.h:334
@ GSK_PATH_CUBIC
Definition gskenums.h:337
@ GSK_PATH_MOVE
Definition gskenums.h:333
GskSerializationError
Definition gskenums.h:383
@ GSK_SERIALIZATION_UNSUPPORTED_FORMAT
Definition gskenums.h:384
@ GSK_SERIALIZATION_UNSUPPORTED_VERSION
Definition gskenums.h:385
@ GSK_SERIALIZATION_INVALID_DATA
Definition gskenums.h:386
GskPathDirection
Definition gskenums.h:366
@ GSK_PATH_TO_START
Definition gskenums.h:368
@ GSK_PATH_FROM_END
Definition gskenums.h:370
@ GSK_PATH_TO_END
Definition gskenums.h:369
@ GSK_PATH_FROM_START
Definition gskenums.h:367
GskLineJoin
Definition gskenums.h:303
@ GSK_LINE_JOIN_MITER
Definition gskenums.h:304
@ GSK_LINE_JOIN_ROUND
Definition gskenums.h:305
@ GSK_LINE_JOIN_BEVEL
Definition gskenums.h:306
GskTransformCategory
Definition gskenums.h:418
@ GSK_TRANSFORM_CATEGORY_2D
Definition gskenums.h:422
@ GSK_TRANSFORM_CATEGORY_2D_AFFINE
Definition gskenums.h:423
@ GSK_TRANSFORM_CATEGORY_UNKNOWN
Definition gskenums.h:419
@ GSK_TRANSFORM_CATEGORY_3D
Definition gskenums.h:421
@ GSK_TRANSFORM_CATEGORY_IDENTITY
Definition gskenums.h:425
@ GSK_TRANSFORM_CATEGORY_2D_TRANSLATE
Definition gskenums.h:424
@ GSK_TRANSFORM_CATEGORY_ANY
Definition gskenums.h:420
GskCorner
Definition gskenums.h:208
@ GSK_CORNER_BOTTOM_RIGHT
Definition gskenums.h:211
@ GSK_CORNER_TOP_LEFT
Definition gskenums.h:209
@ GSK_CORNER_TOP_RIGHT
Definition gskenums.h:210
@ GSK_CORNER_BOTTOM_LEFT
Definition gskenums.h:212
GskRenderNodeType
Definition gskenums.h:96
@ GSK_BLUR_NODE
Definition gskenums.h:120
@ GSK_FILL_NODE
Definition gskenums.h:125
@ GSK_ROUNDED_CLIP_NODE
Definition gskenums.h:115
@ GSK_NOT_A_RENDER_NODE
Definition gskenums.h:97
@ GSK_TEXTURE_SCALE_NODE
Definition gskenums.h:123
@ GSK_RADIAL_GRADIENT_NODE
Definition gskenums.h:103
@ GSK_CROSS_FADE_NODE
Definition gskenums.h:118
@ GSK_OUTSET_SHADOW_NODE
Definition gskenums.h:109
@ GSK_REPEATING_LINEAR_GRADIENT_NODE
Definition gskenums.h:102
@ GSK_DEBUG_NODE
Definition gskenums.h:121
@ GSK_COLOR_NODE
Definition gskenums.h:100
@ GSK_MASK_NODE
Definition gskenums.h:124
@ GSK_CONTAINER_NODE
Definition gskenums.h:98
@ GSK_REPEATING_RADIAL_GRADIENT_NODE
Definition gskenums.h:104
@ GSK_OPACITY_NODE
Definition gskenums.h:111
@ GSK_SHADOW_NODE
Definition gskenums.h:116
@ GSK_TEXTURE_NODE
Definition gskenums.h:107
@ GSK_GL_SHADER_NODE
Definition gskenums.h:122
@ GSK_REPEAT_NODE
Definition gskenums.h:113
@ GSK_SUBSURFACE_NODE
Definition gskenums.h:127
@ GSK_TRANSFORM_NODE
Definition gskenums.h:110
@ GSK_COLOR_MATRIX_NODE
Definition gskenums.h:112
@ GSK_BORDER_NODE
Definition gskenums.h:106
@ GSK_CLIP_NODE
Definition gskenums.h:114
@ GSK_TEXT_NODE
Definition gskenums.h:119
@ GSK_INSET_SHADOW_NODE
Definition gskenums.h:108
@ GSK_CAIRO_NODE
Definition gskenums.h:99
@ GSK_STROKE_NODE
Definition gskenums.h:126
@ GSK_CONIC_GRADIENT_NODE
Definition gskenums.h:105
@ GSK_BLEND_NODE
Definition gskenums.h:117
@ GSK_LINEAR_GRADIENT_NODE
Definition gskenums.h:101
GskLineCap
Definition gskenums.h:273
@ GSK_LINE_CAP_ROUND
Definition gskenums.h:275
@ GSK_LINE_CAP_SQUARE
Definition gskenums.h:276
@ GSK_LINE_CAP_BUTT
Definition gskenums.h:274
GskMaskMode
Definition gskenums.h:471
@ GSK_MASK_MODE_INVERTED_ALPHA
Definition gskenums.h:473
@ GSK_MASK_MODE_LUMINANCE
Definition gskenums.h:474
@ GSK_MASK_MODE_ALPHA
Definition gskenums.h:472
@ GSK_MASK_MODE_INVERTED_LUMINANCE
Definition gskenums.h:475
GskFillRule
Definition gskenums.h:242
@ GSK_FILL_RULE_WINDING
Definition gskenums.h:243
@ GSK_FILL_RULE_EVEN_ODD
Definition gskenums.h:244
GskScalingFilter
Definition gskenums.h:143
@ GSK_SCALING_FILTER_TRILINEAR
Definition gskenums.h:146
@ GSK_SCALING_FILTER_NEAREST
Definition gskenums.h:145
@ GSK_SCALING_FILTER_LINEAR
Definition gskenums.h:144
GskGLUniformType
Definition gskenums.h:446
@ GSK_GL_UNIFORM_TYPE_INT
Definition gskenums.h:449
@ GSK_GL_UNIFORM_TYPE_NONE
Definition gskenums.h:447
@ GSK_GL_UNIFORM_TYPE_FLOAT
Definition gskenums.h:448
@ GSK_GL_UNIFORM_TYPE_VEC2
Definition gskenums.h:452
@ GSK_GL_UNIFORM_TYPE_BOOL
Definition gskenums.h:451
@ GSK_GL_UNIFORM_TYPE_VEC3
Definition gskenums.h:453
@ GSK_GL_UNIFORM_TYPE_VEC4
Definition gskenums.h:454
@ GSK_GL_UNIFORM_TYPE_UINT
Definition gskenums.h:450
GskBlendMode
Definition gskenums.h:179
@ GSK_BLEND_MODE_SATURATION
Definition gskenums.h:195
@ GSK_BLEND_MODE_DARKEN
Definition gskenums.h:185
@ GSK_BLEND_MODE_SCREEN
Definition gskenums.h:183
@ GSK_BLEND_MODE_MULTIPLY
Definition gskenums.h:182
@ GSK_BLEND_MODE_COLOR_DODGE
Definition gskenums.h:187
@ GSK_BLEND_MODE_COLOR_BURN
Definition gskenums.h:188
@ GSK_BLEND_MODE_DEFAULT
Definition gskenums.h:180
@ GSK_BLEND_MODE_EXCLUSION
Definition gskenums.h:192
@ GSK_BLEND_MODE_OVERLAY
Definition gskenums.h:184
@ GSK_BLEND_MODE_LIGHTEN
Definition gskenums.h:186
@ GSK_BLEND_MODE_DIFFERENCE
Definition gskenums.h:191
@ GSK_BLEND_MODE_HUE
Definition gskenums.h:194
@ GSK_BLEND_MODE_COLOR
Definition gskenums.h:193
@ GSK_BLEND_MODE_HARD_LIGHT
Definition gskenums.h:189
@ GSK_BLEND_MODE_LUMINOSITY
Definition gskenums.h:196
@ GSK_BLEND_MODE_SOFT_LIGHT
Definition gskenums.h:190