fbpx
Wikipedia

Clutter (biblioteca)

Clutter es una biblioteca gráfica para la creación de interfaces de usuario aceleradas por hardware, escrito en C y de código abierto. Se basa en OpenGL (1.4+) o OpenGL ES (1.1 o 2.0) para la representación de gráficos, puede ser compilado en diferentes plataformas (X11, Wayland, Darwin y Win32) y tiene enlaces a varios lenguajes de programación (incluidos Mono, Perl, Python, Ruby, Vala y C++ ). También soporta la reproducción de contenidos multimedia usando GStreamer, y de procesamiento de gráficos en 2D usando Cairo.[2]

Clutter
Información general
Tipo de programa Biblioteca Gráfica en OpenGL
Desarrollador Intel Corporation
Lanzamiento inicial 22 de junio de 2006
Licencia LGPL
Estado actual En desarrollo
Idiomas inglés
Información técnica
Programado en C
Versiones
Última versión estable 1.8.0[1]​ 19 de septiembre de 2011 (9 años, 10 meses y 15 días)
Enlaces
Sitio web oficial
Repositorio de código

Clutter fue creado por OpenedHand Ltd, que ahora es parte de Intel y está licenciado bajo LGPL 2.1, Clutter es Software Libre y de Código Abierto.

Lenguajes de programación

Clutter está escrito en el C con un diseño basado en GObject. Existen enlaces para los siguientes lenguajes de programación:

Plataformas

Clutter se desarrolla en el sistema de ventanas X utilizando la extensión GLX.[3]​ También se busca facilitar su uso en sistemas empotrados, ya sea usando X o la memoria de video nativa. A partir de la versión 0.6, tiene soporte nativo para Mac OS X.[4]​ Una implementación nativa para Microsoft Windows es soportada desde la versión 0.8.[5]

Diseño

Clutter funciona como un escenario lleno de objetos ocultos e interactivos. Cada objeto en el escenario es (normalmente) una superficie 2D dentro de un espacio 3D.

En resumen, Clutter es un entorno de ventanas tras un backend de OpenGL, que es también responsable de crear el contenedor principal de la escena gráfica, este contenedor de nivel superior se conoce como stage (escenario). Los elementos en el escenario se llaman actors (actores).

En lugar de operar sobre matrices, así como OpenGL, Clutter interactúa con las propiedades de cada actor. Cada vez que se realizan estos cambios, Clutter se dará cuenta y hará los cambios a la escena en consecuencia.

Ejemplo

En este ejemplo se agregará un label(etiqueta) en el escenario.

ClutterActor *stage = clutter_stage_get_default (); 
Esta declaración recuperará el escenario por defecto, que contendrá todos los actores en la escena.
ClutterActor *label = clutter_text_new_with_text ("Sans 32px", "¡Hola, mundo!"); clutter_container_add_actor (CLUTTER_CONTAINER (stage), label); 
Estas declaraciones crearán una nueva etiqueta, con la fuente Sans 32 píxeles de alto, y con el texto "¡Hola, mundo!", y lo colocará en el escenario.
float x, y; x = (clutter_actor_get_width (stage) - clutter_actor_get_width (label)) / 2; y = (clutter_actor_get_height (stage) - clutter_actor_get_height (label)) / 2; clutter_actor_set_position (label, x, y); 
Estas declaraciones colocan una etiqueta en el centro del escenario, teniendo en cuenta los tamaños del escenario y la etiqueta.
clutter_actor_show (stage); 
Esta declaración muestra el escenario. Todos los actores en clutter son visibles a menos que se declaren explícitamente ocultos, a excepción de la escena, así mostrando la escena, automáticamente todos sus hijos se hacen visibles.

Animación

Clutter realiza animaciones implícitas en cada elemento del lienzo, mediante objetos especiales llamados behaviours(comportamientos): cada comportamiento se puede aplicar a múltiples actores y múltiples comportamientos pueden ser implementados en el mismo actor. Los comportamientos manejan animaciones implícitamente: el desarrollador especifica los estados inicial y final, el tiempo (o número de fotogramas) necesarios para completar la animación, la función de tiempo que se utiliza (lineal, de onda sinusoidal, exponencial, etc), y el comportamiento se hará cargo de la interpolación. Clutter proporciona una clase base genérica para que los desarrolladores implementen comportamientos personalizados, y varias clases simples con propiedades sencillas, como transparencia, posición en el eje Z (profundidad), posición, rotación, etc.

Desde Clutter 1.0, también es posible crear fácilmente y de una sola vez animaciones utilizando la clase ClutterAnimation y la función clutter_actor_animate(). La función clutter_actor_animate(), anima las propiedades de un actor, entre su estado actual y el estado final especificado.

Ejemplo

En este ejemplo se escalará el tamaño de la etiqueta en un factor de 2, en 2 segundos, utilizando una función de tiempo lineal y su comportamiento:

ClutterTimeline *timeline = clutter_timeline_new (2000); ClutterAlpha *alpha = clutter_alpha_new_full (timeline, CLUTTER_LINEAR); ClutterBehaviour *behaviour = clutter_behaviour_scale_new (alpha,     1.0, 1.0, /* Factor inicial de la escala */     2.0, 2.0 /* Factor final de la escala */ ); clutter_behaviour_apply (behaviour, label); 
Estas declaraciones crearán una línea de tiempo(timeline) con una duración de 2000 milisegundos; alpha, vincula la línea de tiempo mediante un modelo lineal; behaviour, escala a todos los agentes a los que se aplica (en este caso es alpha) entre el factor 1,0 y el factor 2,0 (tanto horizontal como verticalmente). Por último, se aplica behaviour a un actor.

El código equivalente que utiliza la API de animaciones implícita es:

clutter_actor_animate (label, /* el actor que se animará */  CLUTTER_LINEAR, /* modo */  2000,  /* duración de la animación */  "scale-x", 2.0, /* factor final de escalado horizontal */  "scale-y", 2.0, /* factor final de escalado vertical */  NULL); 
Esta declaración creara un implícitamente un objeto ClutterAnimation, que animará las propiedades GObject siempre entre su valor actual y el valor final especificado.

Construcción de interfaces

Clutter puede construir interfaces de usuario(GUI) usando un dialecto basado en JSON.[6]​ Los gráficos de la escena completa se definen utilizando los tipos en JSON y luego son construidos en tiempo de ejecución a través de la clase ClutterScript.

Ejemplo

Esta definición va a crear la ventana principal y colocar una etiqueta con el texto ¡Hola, mundo! dentro de él.

 { "id" : "main-stage", "type" : "ClutterStage", "color" : "white", "width" : 800, "height" : 600, "title" : "Script demo", "children" : [ { "id" : "hello-label", "type" : "ClutterText", "x" : 400, "y" : 300, "text" : "¡Hola, mundo!", "color" : "black", "font-name" : "Sans 48px" } ], "signals" : [ { "name" : "destroy", "handler" : "clutter_main_quit" } ] } 

La definición se pueden guardar en un archivo o como una cadena, y se carga con:

ClutterScript *script = clutter_script_new (); GError *error = NULL; clutter_script_load_from_data (script, description, -1, &error); if (error) { g_warning ("No se puede cargar la descripción de interfaz de usuario: %s", error->message); g_error_free (error); } else { GObject *stage; clutter_script_connect_signals (script, NULL); /* connect the signal handlers */ stage = clutter_script_get_object (script, "main-stage"); /* get the "main-stage" object */ clutter_actor_show (CLUTTER_ACTOR (stage)); } 

Integración con otras bibliotecas

Clutter puede ser integrado con otras bibliotecas y kits de herramientas, por ejemplo:

  • Aplicaciones GTK+ puede integrar una capa Clutter con un widget especial.
  • Clutter puede utilizar GStreamer para reproducir vídeos directamente en un actor.
  • Clutter puede utilizar Cairo para dibujar dentro de una textura.
  • Clutter puede incluir aplicaciones GTK+ directamente dentro de sí.
  • También es compatible con la biblioteca Qt.
  • Puede usarse la biblioteca de físicas Box2D.

Véase también

Referencias

  1. . Archivado desde el original el 23 de septiembre de 2011. Consultado el 20 de septiembre de 2011.  Parámetro desconocido |= ignorado (ayuda)
  2. http://www.clutter-project.org/docs/clutter/stable/ClutterCairoTexture.html el 15 de septiembre de 2009 en Wayback Machine. Clutter Referencia de la API: ClutterCairoTexture
  3. http://www.clutter-project.org/docs/clutter/stable/clutter-X11-Specific-Support.html el 14 de agosto de 2009 en Wayback Machine.
  4. http://blogs.gnome.org/tko/2008/05/26/three-steps-forward-one-giant-step-back/ La vida con clutter en OSX
  5. . Archivado desde el original el 5 de agosto de 2009. Consultado el 29 de julio de 2009. 
  6. http://www.clutter-project.org/docs/clutter/stable/ClutterScript.html el 4 de agosto de 2009 en Wayback Machine. ClutterScript.description Clutter Referencia de la API: ClutterScript

Enlaces externos

  • Página principal del proyecto Clutter
  •   Datos: Q653468

clutter, biblioteca, clutter, biblioteca, gráfica, para, creación, interfaces, usuario, aceleradas, hardware, escrito, código, abierto, basa, opengl, opengl, para, representación, gráficos, puede, compilado, diferentes, plataformas, wayland, darwin, win32, tie. Clutter es una biblioteca grafica para la creacion de interfaces de usuario aceleradas por hardware escrito en C y de codigo abierto Se basa en OpenGL 1 4 o OpenGL ES 1 1 o 2 0 para la representacion de graficos puede ser compilado en diferentes plataformas X11 Wayland Darwin y Win32 y tiene enlaces a varios lenguajes de programacion incluidos Mono Perl Python Ruby Vala y C Tambien soporta la reproduccion de contenidos multimedia usando GStreamer y de procesamiento de graficos en 2D usando Cairo 2 ClutterInformacion generalTipo de programaBiblioteca Grafica en OpenGLDesarrolladorIntel CorporationLanzamiento inicial22 de junio de 2006LicenciaLGPLEstado actualEn desarrolloIdiomasinglesInformacion tecnicaProgramado enCVersionesUltima version estable1 8 0 1 19 de septiembre de 2011 9 anos 10 meses y 15 dias EnlacesSitio web oficial Repositorio de codigo editar datos en Wikidata Clutter fue creado por OpenedHand Ltd que ahora es parte de Intel y esta licenciado bajo LGPL 2 1 Clutter es Software Libre y de Codigo Abierto Indice 1 Lenguajes de programacion 2 Plataformas 3 Diseno 3 1 Ejemplo 4 Animacion 4 1 Ejemplo 5 Construccion de interfaces 5 1 Ejemplo 6 Integracion con otras bibliotecas 7 Vease tambien 8 Referencias 9 Enlaces externosLenguajes de programacion EditarClutter esta escrito en el C con un diseno basado en GObject Existen enlaces para los siguientes lenguajes de programacion C cluttermm enlace roto disponible en Internet Archive vease el historial la primera version y la ultima C clutter sharp tambien conocido como Clutter enlace roto disponible en Internet Archive vease el historial la primera version y la ultima Java jClutter enlace roto disponible en Internet Archive vease el historial la primera version y la ultima JavaScript seed y GJS Perl clutter perl Python PyClutter enlace roto disponible en Internet Archive vease el historial la primera version y la ultima Ruby rbclutter Vala clutter vala Plataformas EditarClutter se desarrolla en el sistema de ventanas X utilizando la extension GLX 3 Tambien se busca facilitar su uso en sistemas empotrados ya sea usando X o la memoria de video nativa A partir de la version 0 6 tiene soporte nativo para Mac OS X 4 Una implementacion nativa para Microsoft Windows es soportada desde la version 0 8 5 Diseno EditarClutter funciona como un escenario lleno de objetos ocultos e interactivos Cada objeto en el escenario es normalmente una superficie 2D dentro de un espacio 3D En resumen Clutter es un entorno de ventanas tras un backend de OpenGL que es tambien responsable de crear el contenedor principal de la escena grafica este contenedor de nivel superior se conoce como stage escenario Los elementos en el escenario se llaman actors actores En lugar de operar sobre matrices asi como OpenGL Clutter interactua con las propiedades de cada actor Cada vez que se realizan estos cambios Clutter se dara cuenta y hara los cambios a la escena en consecuencia Ejemplo Editar En este ejemplo se agregara un label etiqueta en el escenario ClutterActor stage clutter stage get default Esta declaracion recuperara el escenario por defecto que contendra todos los actores en la escena ClutterActor label clutter text new with text Sans 32px Hola mundo clutter container add actor CLUTTER CONTAINER stage label Estas declaraciones crearan una nueva etiqueta con la fuente Sans 32 pixeles de alto y con el texto Hola mundo y lo colocara en el escenario float x y x clutter actor get width stage clutter actor get width label 2 y clutter actor get height stage clutter actor get height label 2 clutter actor set position label x y Estas declaraciones colocan una etiqueta en el centro del escenario teniendo en cuenta los tamanos del escenario y la etiqueta clutter actor show stage Esta declaracion muestra el escenario Todos los actores en clutter son visibles a menos que se declaren explicitamente ocultos a excepcion de la escena asi mostrando la escena automaticamente todos sus hijos se hacen visibles Animacion EditarClutter realiza animaciones implicitas en cada elemento del lienzo mediante objetos especiales llamados behaviours comportamientos cada comportamiento se puede aplicar a multiples actores y multiples comportamientos pueden ser implementados en el mismo actor Los comportamientos manejan animaciones implicitamente el desarrollador especifica los estados inicial y final el tiempo o numero de fotogramas necesarios para completar la animacion la funcion de tiempo que se utiliza lineal de onda sinusoidal exponencial etc y el comportamiento se hara cargo de la interpolacion Clutter proporciona una clase base generica para que los desarrolladores implementen comportamientos personalizados y varias clases simples con propiedades sencillas como transparencia posicion en el eje Z profundidad posicion rotacion etc Desde Clutter 1 0 tambien es posible crear facilmente y de una sola vez animaciones utilizando la clase ClutterAnimation y la funcion clutter actor animate La funcion clutter actor animate anima las propiedades de un actor entre su estado actual y el estado final especificado Ejemplo Editar En este ejemplo se escalara el tamano de la etiqueta en un factor de 2 en 2 segundos utilizando una funcion de tiempo lineal y su comportamiento ClutterTimeline timeline clutter timeline new 2000 ClutterAlpha alpha clutter alpha new full timeline CLUTTER LINEAR ClutterBehaviour behaviour clutter behaviour scale new alpha 1 0 1 0 Factor inicial de la escala 2 0 2 0 Factor final de la escala clutter behaviour apply behaviour label Estas declaraciones crearan una linea de tiempo timeline con una duracion de 2000 milisegundos alpha vincula la linea de tiempo mediante un modelo lineal behaviour escala a todos los agentes a los que se aplica en este caso es alpha entre el factor 1 0 y el factor 2 0 tanto horizontal como verticalmente Por ultimo se aplica behaviour a un actor El codigo equivalente que utiliza la API de animaciones implicita es clutter actor animate label el actor que se animara CLUTTER LINEAR modo 2000 duracion de la animacion scale x 2 0 factor final de escalado horizontal scale y 2 0 factor final de escalado vertical NULL Esta declaracion creara un implicitamente un objeto ClutterAnimation que animara las propiedades GObject siempre entre su valor actual y el valor final especificado Construccion de interfaces EditarClutter puede construir interfaces de usuario GUI usando un dialecto basado en JSON 6 Los graficos de la escena completa se definen utilizando los tipos en JSON y luego son construidos en tiempo de ejecucion a traves de la clase ClutterScript Ejemplo Editar Esta definicion va a crear la ventana principal y colocar una etiqueta con el texto Hola mundo dentro de el id main stage type ClutterStage color white width 800 height 600 title Script demo children id hello label type ClutterText x 400 y 300 text Hola mundo color black font name Sans 48px signals name destroy handler clutter main quit La definicion se pueden guardar en un archivo o como una cadena y se carga con ClutterScript script clutter script new GError error NULL clutter script load from data script description 1 amp error if error g warning No se puede cargar la descripcion de interfaz de usuario s error gt message g error free error else GObject stage clutter script connect signals script NULL connect the signal handlers stage clutter script get object script main stage get the main stage object clutter actor show CLUTTER ACTOR stage Integracion con otras bibliotecas EditarClutter puede ser integrado con otras bibliotecas y kits de herramientas por ejemplo Aplicaciones GTK puede integrar una capa Clutter con un widget especial Clutter puede utilizar GStreamer para reproducir videos directamente en un actor Clutter puede utilizar Cairo para dibujar dentro de una textura Clutter puede incluir aplicaciones GTK directamente dentro de si Tambien es compatible con la biblioteca Qt Puede usarse la biblioteca de fisicas Box2D Vease tambien Editar Portal Software Libre Contenido relacionado con Software Libre Core Animation Windows Presentation Foundation Qt GTK OpenGL MeeGo MutterReferencias Editar Clutter 1 8 0 stable release Archivado desde el original el 23 de septiembre de 2011 Consultado el 20 de septiembre de 2011 Parametro desconocido ignorado ayuda http www clutter project org docs clutter stable ClutterCairoTexture html Archivado el 15 de septiembre de 2009 en Wayback Machine Clutter Referencia de la API ClutterCairoTexture http www clutter project org docs clutter stable clutter X11 Specific Support html Archivado el 14 de agosto de 2009 en Wayback Machine http blogs gnome org tko 2008 05 26 three steps forward one giant step back La vida con clutter en OSX Copia archivada Archivado desde el original el 5 de agosto de 2009 Consultado el 29 de julio de 2009 http www clutter project org docs clutter stable ClutterScript html Archivado el 4 de agosto de 2009 en Wayback Machine ClutterScript description Clutter Referencia de la API ClutterScriptEnlaces externos EditarPagina principal del proyecto Clutter Blog oficial del proyecto Clutter Datos Q653468Obtenido de https es wikipedia org w index php title Clutter biblioteca amp oldid 125248887, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos