gaanim 0.17.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (84) hide show
  1. gaanim/__init__.py +428 -0
  2. gaanim/_docs/apendices/glosario.typ +153 -0
  3. gaanim/_docs/apendices/novedades.typ +3926 -0
  4. gaanim/_docs/apendices/solucion-de-problemas.typ +134 -0
  5. gaanim/_docs/ejemplos/index.typ +14 -0
  6. gaanim/_docs/ejemplos/temas.typ +17 -0
  7. gaanim/_docs/empezar/como-piensa-gaanim.typ +304 -0
  8. gaanim/_docs/empezar/instalacion.typ +250 -0
  9. gaanim/_docs/empezar/playground.typ +279 -0
  10. gaanim/_docs/empezar/primera-animacion.typ +173 -0
  11. gaanim/_docs/guias/camara-y-3d.typ +972 -0
  12. gaanim/_docs/guias/capturas-y-comparacion.typ +165 -0
  13. gaanim/_docs/guias/compartir.typ +613 -0
  14. gaanim/_docs/guias/efectos.typ +280 -0
  15. gaanim/_docs/guias/ensayar-y-grabar.typ +290 -0
  16. gaanim/_docs/guias/layout.typ +498 -0
  17. gaanim/_docs/guias/movimiento.typ +476 -0
  18. gaanim/_docs/guias/personajes.typ +122 -0
  19. gaanim/_docs/guias/presentaciones.typ +628 -0
  20. gaanim/_docs/guias/proyectos.typ +394 -0
  21. gaanim/_docs/guias/reactividad.typ +319 -0
  22. gaanim/_docs/guias/tipografia-cinetica.typ +265 -0
  23. gaanim/_docs/guias/transiciones.typ +294 -0
  24. gaanim/_docs/home.typ +190 -0
  25. gaanim/_docs/index.typ +75 -0
  26. gaanim/_docs/publico/anatomia.typ +250 -0
  27. gaanim/_docs/publico/estilos.typ +438 -0
  28. gaanim/_docs/publico/index.typ +94 -0
  29. gaanim/_docs/publico/preguntas.typ +125 -0
  30. gaanim/_docs/publico/presentar.typ +182 -0
  31. gaanim/_docs/publico/primera-encuesta.typ +128 -0
  32. gaanim/_docs/publico/zonas-vivas.typ +171 -0
  33. gaanim/_docs/redirects.typ +58 -0
  34. gaanim/_docs/referencia/animations.typ +3273 -0
  35. gaanim/_docs/referencia/assets.typ +246 -0
  36. gaanim/_docs/referencia/audio.typ +699 -0
  37. gaanim/_docs/referencia/cli.typ +908 -0
  38. gaanim/_docs/referencia/diapositivas.typ +258 -0
  39. gaanim/_docs/referencia/drawable.typ +1613 -0
  40. gaanim/_docs/referencia/gaanim-toml.typ +214 -0
  41. gaanim/_docs/referencia/geometria.typ +1709 -0
  42. gaanim/_docs/referencia/index.typ +77 -0
  43. gaanim/_docs/referencia/layout.typ +662 -0
  44. gaanim/_docs/referencia/matrices.typ +278 -0
  45. gaanim/_docs/referencia/mecanica.typ +408 -0
  46. gaanim/_docs/referencia/medios.typ +454 -0
  47. gaanim/_docs/referencia/publico.typ +470 -0
  48. gaanim/_docs/referencia/scene.typ +2274 -0
  49. gaanim/_docs/referencia/text.typ +911 -0
  50. gaanim/_docs/referencia/themes.typ +1265 -0
  51. gaanim/_docs/referencia/visualization.typ +1395 -0
  52. gaanim/_docs/tutorial/01-antes-de-empezar.typ +111 -0
  53. gaanim/_docs/tutorial/02-primera-escena.typ +148 -0
  54. gaanim/_docs/tutorial/03-objetos-estilo.typ +142 -0
  55. gaanim/_docs/tutorial/04-animar-tiempo.typ +150 -0
  56. gaanim/_docs/tutorial/05-componer-explicar.typ +154 -0
  57. gaanim/_docs/tutorial/06-reactividad.typ +167 -0
  58. gaanim/_docs/tutorial/07-circulo-al-seno.typ +235 -0
  59. gaanim/_docs/tutorial/08-terminar-proyecto.typ +154 -0
  60. gaanim/_docs/tutorial/circulo_al_seno.py +87 -0
  61. gaanim/_type_aliases.py +146 -0
  62. gaanim/animation_types.py +49 -0
  63. gaanim/audio_viz.py +248 -0
  64. gaanim/colors.py +361 -0
  65. gaanim/colors.pyi +37 -0
  66. gaanim/gaanim_core.pyi +13257 -0
  67. gaanim/live.py +1394 -0
  68. gaanim/matrix.py +605 -0
  69. gaanim/matrix.pyi +144 -0
  70. gaanim/pointer.py +229 -0
  71. gaanim/pointer.pyi +49 -0
  72. gaanim/py.typed +0 -0
  73. gaanim/questions.py +245 -0
  74. gaanim/sections.py +777 -0
  75. gaanim/sections.pyi +303 -0
  76. gaanim/templates.py +177 -0
  77. gaanim/templates.pyi +89 -0
  78. gaanim/timeline.py +248 -0
  79. gaanim/timeline.pyi +59 -0
  80. gaanim-0.17.0.dist-info/METADATA +63 -0
  81. gaanim-0.17.0.dist-info/RECORD +84 -0
  82. gaanim-0.17.0.dist-info/WHEEL +4 -0
  83. gaanim-0.17.0.dist-info/extra_metadata/LICENSE-APACHE +176 -0
  84. gaanim-0.17.0.dist-info/extra_metadata/LICENSE-MIT +21 -0
gaanim/__init__.py ADDED
@@ -0,0 +1,428 @@
1
+ """Gaanim — GPU-accelerated vector animation engine."""
2
+
3
+ import sys
4
+ import warnings
5
+
6
+ if f"{__name__}.gaanim_core" not in sys.modules:
7
+ raise RuntimeError(
8
+ "The `gaanim` wheel only provides authoring helpers and type information. "
9
+ "Run animation scripts with `gaanim <script.py>` or open them in the Gaanim editor."
10
+ )
11
+
12
+ # The stub declares type aliases such as Paint on gaanim_core, but the native
13
+ # module only defines classes: give it the aliases before anything imports them.
14
+ from . import _type_aliases
15
+
16
+ _type_aliases.install(sys.modules[f"{__name__}.gaanim_core"])
17
+
18
+ from . import colors
19
+ from .gaanim_core import (
20
+ Anchor,
21
+ AnchorPoint,
22
+ PointRef,
23
+ Direction,
24
+ Box,
25
+ BoxStyle,
26
+ Zone,
27
+ ZoneSet,
28
+ Zones,
29
+ LayoutExpression,
30
+ LayoutConstraint,
31
+ ConstraintSet,
32
+ LayoutOwnershipError,
33
+ BLACK,
34
+ BLUE,
35
+ CORAL,
36
+ CYAN,
37
+ GOLD,
38
+ GRAY,
39
+ GREEN,
40
+ NAVY,
41
+ ORANGE,
42
+ PINK,
43
+ PURPLE,
44
+ RED,
45
+ TEAL,
46
+ WHITE,
47
+ YELLOW,
48
+ Anim,
49
+ Easing,
50
+ EasingCurve,
51
+ Audio,
52
+ AudioData,
53
+ AudioTempo,
54
+ Voiceover,
55
+ Composition,
56
+ Schedule,
57
+ ScheduleEntry,
58
+ parallel,
59
+ sequence,
60
+ stagger,
61
+ quantity,
62
+ distribute,
63
+ label,
64
+ magic_move,
65
+ Color,
66
+ ColorMap,
67
+ Palette,
68
+ Brush,
69
+ Background,
70
+ ColorLike,
71
+ ColorMapLike,
72
+ PaletteLike,
73
+ Paint,
74
+ BackgroundLike,
75
+ Distribution,
76
+ Emitter,
77
+ PostProcess,
78
+ Camera,
79
+ CameraState,
80
+ CameraConstraint,
81
+ SceneStop,
82
+ Bounds,
83
+ SceneMarker,
84
+ Theme,
85
+ Style,
86
+ StrokeStyle,
87
+ AxesStyle,
88
+ Drawable,
89
+ Image,
90
+ Video,
91
+ VideoSegment,
92
+ Lottie,
93
+ Dimension,
94
+ AngleDimension,
95
+ ForceVector,
96
+ Support,
97
+ SurroundingRect,
98
+ ParallaxLayer,
99
+ Material3D,
100
+ Primitive3D,
101
+ Axonometric,
102
+ Text,
103
+ TextAnchor,
104
+ TextPart,
105
+ TextParts,
106
+ TextStyle,
107
+ TextFlow,
108
+ TextSelection,
109
+ TextSelectionAnimation,
110
+ TextQuery,
111
+ TextAnimator,
112
+ TextAnimatorAnimation,
113
+ PathModifiers,
114
+ Annotations,
115
+ PathModifier,
116
+ PathModifierAnimation,
117
+ part,
118
+ parts,
119
+ Transition,
120
+ Overlay,
121
+ Updater,
122
+ Falloff,
123
+ FalloffColor,
124
+ Axis,
125
+ Scale,
126
+ Field,
127
+ Value,
128
+ Guide,
129
+ ChartSpec,
130
+ Chart,
131
+ Parameter,
132
+ Poll,
133
+ Leaderboard,
134
+ Audience,
135
+ Teams,
136
+ Condition,
137
+ Character,
138
+ LiveZone,
139
+ Readout,
140
+ Variable,
141
+ RollingNumber,
142
+ ProgressRing,
143
+ BarRace,
144
+ BarRaceAnimation,
145
+ Computed,
146
+ Random,
147
+ TimeInput,
148
+ computed,
149
+ deg,
150
+ CoordinateRef,
151
+ CoordinateSpace,
152
+ CoordinateSpace3D,
153
+ VectorField,
154
+ ArrowVectorField,
155
+ StreamLines,
156
+ FlowParticles,
157
+ Cartesian2D,
158
+ Cartesian3D,
159
+ NumberLine,
160
+ PolarSpace,
161
+ DataTable,
162
+ DataSource,
163
+ Geometry,
164
+ Typography,
165
+ LayoutBuilder,
166
+ MediaLibrary,
167
+ UI,
168
+ Visualization,
169
+ SlideKit,
170
+ Mechanics,
171
+ Fx,
172
+ AssetManager,
173
+ Scene,
174
+ Segment,
175
+ )
176
+
177
+ # Keep the semantic complex-space name available even when an embedding host
178
+ # has an older abi3 module already loaded in-process.
179
+ ComplexSpace = CoordinateSpace
180
+ from .sections import (
181
+ Agenda,
182
+ NavigationEntry,
183
+ NavigationState,
184
+ ProgressRail,
185
+ Section,
186
+ SectionLike,
187
+ SectionProgress,
188
+ SectionStep,
189
+ SectionTarget,
190
+ SegmentCamera,
191
+ )
192
+ from .templates import (
193
+ comparison,
194
+ credits,
195
+ component,
196
+ Component,
197
+ lecture,
198
+ lower_third,
199
+ minimal,
200
+ title_slide,
201
+ vertical_short,
202
+ )
203
+ from .animation_types import AnimationChannel, CustomAnimationValues, Playable, ScalarSource
204
+ from .questions import Question, QuestionError, load_questions
205
+ from .pointer import Pointer, PointerAnimator
206
+ from .timeline import Timeline, TimelineEvent
207
+ from .matrix import (
208
+ Matrix,
209
+ MatrixAlgebraError,
210
+ MatrixDerivation,
211
+ MatrixEntry,
212
+ MatrixSelection,
213
+ MatrixSelectionAnimation,
214
+ MatrixStep,
215
+ )
216
+
217
+
218
+ def Canvas(*args, **kwargs):
219
+ """Deprecated compatibility constructor; use :class:`Scene` instead."""
220
+ warnings.warn(
221
+ "Canvas is deprecated as the animation facade; use Scene instead. "
222
+ "Use scene.canvas for viewport configuration.",
223
+ DeprecationWarning,
224
+ stacklevel=2,
225
+ )
226
+ return Scene(*args, **kwargs)
227
+
228
+
229
+ __all__ = [
230
+ "Section",
231
+ "SectionStep",
232
+ "SectionProgress",
233
+ "SectionLike",
234
+ "SectionTarget",
235
+ "SegmentCamera",
236
+ "Agenda",
237
+ "NavigationEntry",
238
+ "NavigationState",
239
+ "ProgressRail",
240
+ "AnimationChannel",
241
+ "CustomAnimationValues",
242
+ "Playable",
243
+ "ScalarSource",
244
+ "Scene",
245
+ "Geometry",
246
+ "Typography",
247
+ "LayoutBuilder",
248
+ "MediaLibrary",
249
+ "UI",
250
+ "Visualization",
251
+ "SlideKit",
252
+ "Mechanics",
253
+ "Fx",
254
+ "AssetManager",
255
+ "Segment",
256
+ "Canvas",
257
+ "Composition",
258
+ "Schedule",
259
+ "ScheduleEntry",
260
+ "parallel",
261
+ "sequence",
262
+ "stagger",
263
+ "quantity",
264
+ "distribute",
265
+ "label",
266
+ "magic_move",
267
+ "Matrix",
268
+ "Pointer",
269
+ "PointerAnimator",
270
+
271
+ "Timeline",
272
+ "TimelineEvent",
273
+ "MatrixEntry",
274
+ "MatrixSelection",
275
+ "MatrixSelectionAnimation",
276
+ "MatrixStep",
277
+ "MatrixDerivation",
278
+ "MatrixAlgebraError",
279
+ "Drawable",
280
+ "Image",
281
+ "Video",
282
+ "VideoSegment",
283
+ "Lottie",
284
+ "Dimension",
285
+ "AngleDimension",
286
+ "ForceVector",
287
+ "Support",
288
+ "SurroundingRect",
289
+ "ParallaxLayer",
290
+ "Material3D",
291
+ "Primitive3D",
292
+ "Axonometric",
293
+ "Text",
294
+ "TextAnchor",
295
+ "TextPart",
296
+ "TextParts",
297
+ "TextStyle",
298
+ "TextFlow",
299
+ "TextSelection",
300
+ "TextSelectionAnimation",
301
+ "TextAnimator",
302
+ "TextAnimatorAnimation",
303
+ "PathModifiers",
304
+ "Annotations",
305
+ "PathModifier",
306
+ "PathModifierAnimation",
307
+ "TextQuery",
308
+ "part",
309
+ "parts",
310
+ "Anim",
311
+ "Easing",
312
+ "EasingCurve",
313
+ "Audio",
314
+ "AudioData",
315
+ "AudioTempo",
316
+ "Voiceover",
317
+ "Transition",
318
+ "Overlay",
319
+ "Color",
320
+ "ColorMap",
321
+ "Palette",
322
+ "Brush",
323
+ "Background",
324
+ "ColorLike",
325
+ "ColorMapLike",
326
+ "PaletteLike",
327
+ "Paint",
328
+ "BackgroundLike",
329
+ "Distribution",
330
+ "Emitter",
331
+ "PostProcess",
332
+ "Camera",
333
+ "CameraState",
334
+ "CameraConstraint",
335
+ "SceneStop",
336
+ "Bounds",
337
+ "SceneMarker",
338
+ "Theme",
339
+ "Style",
340
+ "StrokeStyle",
341
+ "AxesStyle",
342
+ "colors",
343
+ "Anchor",
344
+ "AnchorPoint",
345
+ "PointRef",
346
+ "Direction",
347
+ "Box",
348
+ "BoxStyle",
349
+ "Zone",
350
+ "ZoneSet",
351
+ "Zones",
352
+ "LayoutExpression",
353
+ "LayoutConstraint",
354
+ "ConstraintSet",
355
+ "LayoutOwnershipError",
356
+ "component",
357
+ "Component",
358
+ "title_slide",
359
+ "lecture",
360
+ "comparison",
361
+ "vertical_short",
362
+ "minimal",
363
+ "lower_third",
364
+ "credits",
365
+ "Question",
366
+ "QuestionError",
367
+ "load_questions",
368
+ "Updater",
369
+ "Falloff",
370
+ "FalloffColor",
371
+ "Axis",
372
+ "Scale",
373
+ "Field",
374
+ "Value",
375
+ "Guide",
376
+ "ChartSpec",
377
+ "Chart",
378
+ "Parameter",
379
+ "Poll",
380
+ "Leaderboard",
381
+ "Audience",
382
+ "Teams",
383
+ "Condition",
384
+ "Character",
385
+ "LiveZone",
386
+ "Readout",
387
+ "Variable",
388
+ "RollingNumber",
389
+ "ProgressRing",
390
+ "BarRace",
391
+ "BarRaceAnimation",
392
+ "Computed",
393
+ "Random",
394
+ "TimeInput",
395
+ "computed",
396
+ "deg",
397
+ "CoordinateRef",
398
+ "CoordinateSpace",
399
+ "CoordinateSpace3D",
400
+ "VectorField",
401
+ "ArrowVectorField",
402
+ "StreamLines",
403
+ "FlowParticles",
404
+ "Cartesian2D",
405
+ "Cartesian3D",
406
+ "ComplexSpace",
407
+ "NumberLine",
408
+ "PolarSpace",
409
+ "DataTable",
410
+ "DataSource",
411
+ "GOLD",
412
+ "CORAL",
413
+ "BLUE",
414
+ "WHITE",
415
+ "BLACK",
416
+ "RED",
417
+ "GREEN",
418
+ "YELLOW",
419
+ "ORANGE",
420
+ "PURPLE",
421
+ "PINK",
422
+ "GRAY",
423
+ "CYAN",
424
+ "NAVY",
425
+ "TEAL",
426
+ ]
427
+
428
+ __version__ = "0.17.0"
@@ -0,0 +1,153 @@
1
+ #import "../../components/section.typ": docs-chapter
2
+
3
+ #show: docs-chapter.with(
4
+ title: "Glosario",
5
+ description: "Los términos que usa esta documentación y el nombre que tienen en la API",
6
+ route: "/apendices/glosario/",
7
+ )
8
+
9
+ Esta documentación explica en español y conserva en inglés los nombres de la
10
+ API. Aquí tienes cada término con el identificador que le corresponde en el
11
+ código.
12
+
13
+ / Ancla (`Anchor`, `anchor_point`): uno de los nueve puntos de referencia de
14
+ la caja de un objeto (`Anchor.CENTER`, `Anchor.TOP_LEFT`…). Sirve para
15
+ colocar objetos (`move_to(x, y, anchor=...)`) y, con
16
+ `objeto.anchor_point(...)`, como extremo que acompaña al objeto cuando se
17
+ mueve.
18
+
19
+ / Animación (`Anim`): la descripción de un cambio en el tiempo, como
20
+ `circle.animate.move_to(2, 0)` con `.duration(1.0)`. No hace nada hasta que la
21
+ pasas a `scene.play([...])`.
22
+
23
+ / `.animate`: propiedad de solo lectura de cada handle que ofrece los mismos
24
+ métodos que los cambios inmediatos, pero devuelve animaciones.
25
+
26
+ / Área segura (`within="safe"`): el fotograma menos el margen de la escena
27
+ (`Scene(margin=...)`). Layout la usa para no pegar el contenido a los bordes.
28
+
29
+ / Binding (vínculo): relación por la que una propiedad copia la de otro
30
+ objeto, como `bind_x_from`, `bind_rotation_from` o `follow`. Ver
31
+ #link("/guias/reactividad/")[Reactividad].
32
+
33
+ / Capacidad: cada grupo de fábricas de una escena: `scene.geometry`,
34
+ `scene.text`, `scene.layout`, `scene.media`, `scene.viz`, `scene.slides`,
35
+ `scene.mechanics`, `scene.assets`, `scene.canvas` y `scene.camera`.
36
+
37
+ / Captura (`scene.snapshots`): imagen exacta de un instante de la escena, que
38
+ `gaanim --diff` compara con una versión aprobada. Ver
39
+ #link("/guias/capturas-y-comparacion/")[Capturas y comparación visual].
40
+
41
+ / Composición (`Composition`): grupo de animaciones ordenadas con
42
+ `parallel`, `sequence` o `stagger`, que se reproduce como una unidad.
43
+
44
+ / Corte: cambio inmediato, sin duración, que un método aplicado fuera de
45
+ `.animate` registra en el cursor actual (por ejemplo `circle.fill(RED)`
46
+ después de un `play`). Es reversible: al volver atrás en la línea de tiempo,
47
+ el objeto recupera su estado anterior.
48
+
49
+ / Cursor (`scene.cursor`): el instante de la línea de tiempo en el que se
50
+ añade lo siguiente que escribes. Avanza con cada `scene.play` y
51
+ `scene.wait`.
52
+
53
+ / Drawable: cualquier objeto visible de la escena (una figura, un texto, una
54
+ imagen, un gráfico, un layout). En español decimos también *objeto*.
55
+
56
+ / Easing (`Easing`): la curva que reparte el progreso de una animación en el
57
+ tiempo: `Easing.LINEAR`, `Easing.SMOOTH`, `Easing.spring(...)`… Se aplica
58
+ con `.easing(...)`.
59
+
60
+ / Escena (`Scene`): el documento que describes en Python. Contiene los
61
+ objetos, la línea de tiempo, el tema y la cámara, y termina con
62
+ `scene.render()`.
63
+
64
+ / Exportar (`gaanim export`): renderizar la escena a un archivo de video,
65
+ imagen animada o secuencia PNG. Ver
66
+ #link("/guias/proyectos/")[Proyectos y exportación].
67
+
68
+ / Fábrica: método que crea un drawable y devuelve su handle, como
69
+ `scene.geometry.circle(1)` o `scene.text("Hola")`.
70
+
71
+ / Fragmento: parte de un texto seleccionada por su contenido, como
72
+ `text["energía"]`, para colorearla o animarla por separado. Si el texto
73
+ tiene una parte con ese nombre, se usa la parte.
74
+
75
+ / Handle: el valor de Python que devuelve una fábrica y con el que manipulas
76
+ el objeto: `circle = scene.geometry.circle(1)`. Sus métodos son encadenables:
77
+ `circle.fill(BLUE).move_to(2, 0)`.
78
+
79
+ / Layout: sistema que coloca objetos en filas, columnas, rejillas y capas sin
80
+ coordenadas manuales (`scene.layout`). Ver #link("/guias/layout/")[Layout].
81
+
82
+ / Línea de tiempo: la secuencia de todo lo que ocurre en la escena, con su
83
+ instante exacto. Gaanim puede saltar a cualquier punto de ella y mostrar lo
84
+ mismo que al reproducir.
85
+
86
+ / Manifiesto (`gaanim.toml`): archivo que define un proyecto: nombre, tipo,
87
+ script de entrada y carpetas de recursos y exportación.
88
+
89
+ / Marcador (`scene.marker`): nombre de un instante de la línea de tiempo.
90
+ El editor lo muestra en la barra de reproducción y `gaanim export --from/--to`
91
+ lo acepta en lugar de segundos.
92
+
93
+ / Parada (`scene.stop`): punto donde el modo presentación espera a que
94
+ avances. La vista previa, las capturas y la exportación no se detienen en
95
+ ella. En la vista del presentador cada parada es un *paso*.
96
+
97
+ / Parámetro (`Parameter`, `scene.viz.parameter`): valor numérico invisible y
98
+ animable del que pueden depender otros objetos.
99
+
100
+ / Parte (`part`): fragmento de un texto o una ecuación con nombre propio,
101
+ como `part("masa", "m")`, que puedes seleccionar con `text["masa"]` y que
102
+ las transformaciones emparejan por nombre.
103
+
104
+ / Presenter View (vista del presentador): ventana con la diapositiva actual,
105
+ la siguiente, las notas y el tiempo, que se abre con `gaanim --present`. Ver
106
+ #link("/guias/presentaciones/")[Presentaciones].
107
+
108
+ / Proyecto: carpeta con un `gaanim.toml`, un script de entrada, recursos y
109
+ exportaciones. Se crea con `gaanim init video` o `gaanim init slides`.
110
+
111
+ / Punto de referencia (`PointRef`): punto lógico, sin dibujo, que otros
112
+ objetos pueden seguir o usar como extremo; lo crean `polar_point`,
113
+ `point_ref`, `offset_point` y `point_between`.
114
+
115
+ / Reactivo: se dice del objeto o valor que se recalcula a partir de otros en
116
+ cada fotograma, como una `tracking_line` o un `computed`.
117
+
118
+ / Recarga en caliente: la vista previa vuelve a ejecutar el script al guardar
119
+ y conserva lo que no cambió.
120
+
121
+ / Rol de texto (`role=`): estilo con nombre que el tema define para un texto:
122
+ `"title"`, `"subtitle"`, `"body"`, `"caption"`…
123
+
124
+ / Segmento (`scene.segment`): tramo con nombre de la línea de tiempo. En una
125
+ presentación, cada segmento es una diapositiva; entre segmentos puede haber
126
+ una transición.
127
+
128
+ / Stagger (`stagger`): composición que arranca varias animaciones con un
129
+ desfase entre ellas, por orden o por distancia a un origen.
130
+
131
+ / Tema (`theme=`, `Theme`): conjunto de colores, tipografías y estilos de
132
+ texto que la escena aplica por defecto, como `"presentation"` o
133
+ `"technical"`.
134
+
135
+ / Transición (`Transition`): el paso visual de un segmento al siguiente,
136
+ como `Transition.cross_fade(0.4)` o `Transition.wipe(...)`.
137
+
138
+ / Unidades lógicas: la medida de toda la escena. El fotograma mide 16 × 9
139
+ unidades con el origen en el centro; los píxeles solo se eligen al
140
+ previsualizar o exportar.
141
+
142
+ / Updater (`Updater`, `add_updater`): comportamiento continuo añadido a un
143
+ objeto, como `Updater.rotate(1.5)` o `Updater.wiggle(...)`. Ver
144
+ #link("/guias/reactividad/")[Reactividad].
145
+
146
+ / Valor calculado (`computed`): número derivado de parámetros, variables o
147
+ del tiempo mediante una función de Python pura con entradas explícitas.
148
+
149
+ / Versión aprobada (*baseline*): el conjunto de capturas aceptadas contra el
150
+ que `gaanim --diff` compara. Se actualiza con `--bless`.
151
+
152
+ / Vista previa: la ventana que abre `gaanim archivo.py` o `gaanim proyecto`,
153
+ con reproducción, saltos y recarga en caliente.