Valid HTML 4.01!

Thèse previousnext

Chapitre IV : Kaomi

1. Kaomi, une boîte à outils

Lors de la présentation de l'environnement idéal, nous avons vu (Chapitre III section 2.2.2) qu'il existait une dépendance entre le langage de présentation et le formalisme d'édition proposé par l'environnement. Cependant au cours du chapitre III nous avons identifié un noyau commun, que nous avons appelé formalisme d'édition de l'environnement auteur, ainsi que l'ensemble des fonctions d'édition qui s'y rattachent. Il nous a donc semblé naturel de réaliser une boîte à outils pour factoriser le coeur de l'édition de documents multimédias (structures de données, fonction d'édition) et ainsi nous permettre d'expérimenter plus facilement plusieurs environnements auteur construits sur des formats de sauvegarde différents.
Une des difficultés se situe dans la conception de l'architecture de cette boîte à outils car de celle-ci dépend la facilité avec laquelle nous serons capable de créer des environnements auteur. De plus, étant développée dans un contexte de recherche cette boîte à outils doit être facilement modifiable et extensible pour servir de support à différentes expérimentations.
Nous allons dans un premier temps décrire l'architecture générale d'un environnement auteur construit avec Kaomi (section 2). Nous présenterons ensuite le principe de Kaomi et les différents services offerts par celle-ci (section 3) avant de présenter comment ces services seront utilisés lors de la réalisation d'un environnement auteur (section 4). Une fois que nous aurons présenté le principe général de Kaomi et de son utilisation nous nous intéresserons plus particulièrement à son implémentation (section 5 à 9) avant de présenter les différents environnements auteur réalisés (chapitre VI).

2. Architecture générale

Dans la Figure IV-1, on peut visualiser l'organisation globale de l'architecture d'un environnement auteur réalisé avec Kaomi. Kaomi a été écrite en Java, et utilise un certain nombre de bibliothèques écrites en C (Ansi) telles que certains résolveurs de contraintes ou en Java (JMF, Swing). L'utilisation du langage Java a permis une structuration du code grâce à l'approche objet, et une portabilité des environnements auteur écrits grâce à la machine virtuelle Java.

Structure General
Figure IV-1 : Structure générale d'une application utilisant Kaomi

Le concepteur d'environnement auteur qui utilise la boîte à outils profite donc de sa portabilité pour créer des environnements auteur multi plates-formes.

3. Principes de Kaomi

La boîte à outils Kaomi fournit un ensemble de services pour le concepteur d'environnement auteur de documents multimédias. Ces services sont de plusieurs niveaux (Figure IV-2) :
Architecture Generale de Kaomi
Figure IV-2 : Structures et services fournis par Kaomi

3.1 Service de chargement/ sauvegarde

L'hypothèse faite dans Kaomi est que les fichiers source des environnements auteur construits seront décrits sous une forme textuelle respectant la syntaxe XML. Ce choix est motivé par le fait qu'XML est le standard le plus adapté pour la définition de documents et qu'aujourd'hui la plupart des formats de documents multimédias non propriétaires utilisent cette syntaxe.
Le service de chargement de Kaomi se base donc sur la structure XML du fichier source pour fournir un ensemble de services, comme les analyses lexicale et syntaxique. Ces services sont construits au-dessus du parseur Xerces d'Apache[Apache-Xerces00] et permettent de vérifier qu'un fichier est conforme à la syntaxe de balises d'XML (on dit alors que le document est bien formé) et qu'il respecte la grammaire (DTD) du langage qu'il utilise (on dit alors que le document est valide).
Kaomi offre différentes fonctionnalités pour permettre au programmeur d'inclure un ensemble d'actions, pour notamment construire ses propres structures de données au cours de ces analyses.
Le service de chargement permet par exemple au développeur d'un environnement auteur d'inclure un ensemble de fonctions spécifiques lors du traitement d'un élément XML.
Le service de sauvegarde permet de sauvegarder à la fois les informations liées au format de sauvegarde mais aussi celles spécifiques de l'environnement auteur via le mécanisme d'espace de noms fourni par XML.

3.2 Services d'édition

Kaomi fournit un ensemble de services d'édition pour tous les environnements construits à partir de cette boîte à outils. Ces services d'édition sont basés sur une structure de données appelée format pivot de Kaomi qui sera présentée dans la section 6. Ces services sont : Lors de la modification du document, Kaomi maintient la cohérence du document. Kaomi ne permettra pas au document d'entrer dans un état incohérent. Si la modification de l'auteur est incohérente, elle est annulée par le système, dans le cas contraire le système formate une nouvelle solution pour prendre en compte la modification et présenter le document.

Dans chacun de ces cas, la boîte à outils calcule de manière efficace la (ou les) nouvelle(s) solution(s).

Kaomi fournit aussi un ensemble de services pour aider les auteurs quel que soit le langage dans lequel ils spécifient leur document. Ces services sont :

L'ensemble des mécanismes pour la détection de cohérence et le formatage sera présenté dans le chapitre V.

3.3 Service de gestion de vues

Kaomi fournit un ensemble de vues qui est basé sur celui de l'environnement idéal (Chapitre III section 2.3). De manière à faciliter la coopération entre les différentes vues, Kaomi fournit aussi un gestionnaire de vues qui s'occupera de cette coopération. Ce gestionnaire sera présenté dans la section 9.

Les différentes vues fournies par Kaomi sont :

L'ensemble de ces vues, ainsi que leurs mécanismes de construction et de synchronisation, seront présentés dans la section 9. La vue vidéo structurée qui est l'objet d'une thèse en cours sera, elle présentée dans le chapitre VI.

4. Utilisation de Kaomi

4.1 Principe d'utilisation de Kaomi

Kaomi n'est pas seulement une boîte à outils classique qui fournit un ensemble de services utilisables par le concepteur d'un environnement auteur. En effet, Kaomi n'est pas seulement une boîte noire fournissant un ensemble de services, mais elle est plus proche d'un logiciel extensible et adaptable à plusieurs niveaux grâce à une approche objet. Le concepteur peut ainsi intégrer de nouveaux services ou de nouvelles vues. Dans cette perspective, nous avons prévu une utilisation à plusieurs niveaux (Figure IV-3). Ces niveaux vont de l'interface graphique perceptible par l'auteur, au coeur de la boîte à outils et de ses structures de données :
Architecture Generale
Figure IV-3 : Principe d'utilisation de Kaomi

Ces différents services reposent sur une structure de données appelée format pivot de Kaomi (section 6). Il existe là aussi deux manières d'étendre cette structure de document, la première est d'ajouter des attributs spécifiques sur les noeuds du document, la deuxième est d'étendre les noeuds du document avec de nouvelles fonctionnalités (fonction d'édition, de manipulation) ou de modifier celles existantes.

4.2 Les environnements réalisés avec Kaomi

Aujourd'hui la boîte à outils Kaomi est utilisée dans des outils auteur représentatifs des différents formalismes de spécification de documents multimédias. Nous allons donner ici une liste de ces outils auteur, nous présenterons plus précisément leur implémentation dans le chapitre VI après la présentation complète de Kaomi dans les chapitres IV et V.

Les outils auteur de documents multimédias réalisés avec Kaomi :

Ces outils auteur couvrent deux formalismes de spécification que nous avons présentés dans le chapitre II.

Nous illustrerons, au cours de ce chapitre, les différents aspects liés à l'utilisation de Kaomi au travers de ces différents outils auteur.

5 Implémentation de Kaomi

Maintenant que nous avons vu les différents services de Kaomi, nous allons nous intéresser à sa conception et plus particulièrement au mode de programmation qui a permis une telle extensibilité. Nous présenterons, dans la section 5.1, les mécanismes de base nécessaires à l'implémentation de Kaomi. Dans la section 5.2, nous présenterons l'architecture de cette boîte à outils. Nous présenterons ensuite plus particulièrement le format pivot de Kaomi sur lequel repose en partie les fonctionnalités d'édition (section 6), et plus précisément celles liées à la dimension temporelle (section 7). Dans les sections 8 et 9, nous décrirons plus complètement les services d'édition fournis ainsi que les différentes vues offertes par Kaomi. Enfin, nous ferons une comparaison avec d'autres formats de documents et d'autres services d'édition fournis par des boîtes à outils d'édition (section 10).

5.1 Description des mécanismes de base de Kaomi

L'utilisation de Kaomi repose en partie sur l'utilisation de services fournis par le langage Java. Dans la boîte à outils nous utilisons principalement trois fonctionnalités de Java pour l'extension :

5.1.1 Programmation objet et héritage

L'héritage est un des mécanismes que nous utilisons pour étendre les fonctionnalités de la boîte à outils. Le développeur d'une application au-dessus de la boîte à outils peut facilement étendre une classe, en créant une sous-classe, et en écrivant les différentes fonctionnalités qu'il désire. Ce type d'extension est favorisé et simplifié par l'utilisation des mécanismes de ressources et d'interfaçage qui permettent par exemple, au programmeur de rajouter facilement un accès pour l'auteur vers une nouvelle fonction, au travers d'un menu de l'environnement.

5.1.2 Présentation du mécanisme d'interface Java

Le mécanisme d'interfaçage de Java, que l'on peut rapprocher de ceux offerts par ADA, C++, se distingue de ces derniers par l'aspect dynamique de la résolution des dépendances, aspect dynamique que l'on retrouve dans des langages comme Guide [Balter94].

Une interface Java est un fichier dans lequel on décrit les prototypes d'un ensemble de fonctions.

Deux utilisations des interfaces sont possibles :

Ce mécanisme permet de faire abstraction, au moment de l'écriture d'une classe, des classes manipulées au travers d'une interface. Ce mécanisme permet aussi de partager facilement un service entre plusieurs classes.

C'est cette utilisation que nous allons présenter plus précisément.

Dans Kaomi nous avons défini une interface Tree. Cette interface décrit un ensemble de fonctions nécessaires pour manipuler des arbres (voir Figure IV-4).
 

public interface Tree {
Tree getParent() ;
Tree[] GetChildren() ;
boolean isLeaf();
boolean isNode();
}
Figure IV-4 : Exemple d'interface, l'interface Tree

La classe VueHiérarchique manipule des objets de type Tree et les affiche sous une forme arborescente.

La classe Document de Kaomi implémente l'interface Tree. Les classes qui héritent de la classe document (DocumentVueHiérarchique et DocumentVueTemporelle) implémentent donc cette classe.

Ces deux classes peuvent donc être visualisées dans la vue hiérarchique.

La classe DocumentVueTemporelle implémente en plus de l'interface Tree l'interface InterfaceDocumentVueTemporelle ce qui lui permet d'être aussi visualisée dans la vue temporelle.

Dans la Figure IV-5 on peut voir la représentation de ce mécanisme.

Heritage et interface
Figure IV-5 : Exemple d'utilisation du mécanisme d'interface de Kaomi

5.1.3 Le système des ressources de Java

Le système de ressources est basé sur deux éléments : Dans Kaomi, nous utilisons ce principe pour toutes les données que nous chargeons dynamiquement. Par exemple, ce mécanisme est utilisé pour construire les menus de l'application. Dans la Figure IV-6 on peut voir une partie de la description du menu Insert. Le concepteur décrit que ce menu est composé de trois éléments : Image, Vidéo, Texte. Pour chacun de ces éléments il décrit le label qui lui est associé, ainsi que l'action qui sera appelée lorsque l'auteur sélectionnera ce menu.
 
//ElémentGraphique.NomDeLaVue.Actions = listes des actions possibles 
Menu.executionView.Insert = Image Video Texte

// label associé à l'action insert image dans la vue d'exécution
Menu.executionView.Insert. Image.label = Image

//commande associée à l'action insert image dans la vue d'exécution
Menu.executionView.Insert. Image.action =Insert Image

Figure IV-6 : Exemple de ressources : les menus

Une autre utilisation des ressources est la mise à jour de la liste des classes fournissant un service. Par exemple dans le cas du module contrainte, nous avons un ensemble de résolveurs à disposition, le fichier de ressources permet de modifier la liste des résolveurs disponibles sans modifier le code de l'application.

Dans l'exemple de la Figure IV-7, on indique au système qu'il existe actuellement trois classes disponibles qui implémentent l'interface solver.

Le système pourra ainsi choisir dynamiquement en fonction de critères la classe qu'il désire utiliser. Ce mécanisme sera décrit dans le chapitre V.
 
 
 

//liste des résolveurs 
Solver = PC2 cassowary jSolver

//classes implémentant les résolveurs
Solver.PC2 = FR.inria.opera.kaomi.solver.PC2
Solver.cassowary = EDU.washington.solver.cassowary
Solver.jSolver = JP.jSolver

Figure IV-7 : Exemple de ressources : les résolveurs

Le mécanisme de ressource est aussi utilisé pour configurer l'environnement de l'auteur et ses préférences (taille des fenêtres, fenêtres ouvertes par défaut,).

5.2 Structure de classes

Nous allons maintenant nous intéresser plus particulièrement à l'organisation de cette boîte à outils. Nous allons décrire les principales classes de Kaomi, classes dont nous pouvons voir l'organisation sur la Figure IV-8.

Cette structure a pour objectif de permettre la réalisation de l'environnement auteur idéal. Dans ce but, nous avons défini un ensemble de classes permettant d'offrir une gestion des services communs (KaomiManager), de gérer l'édition simultanée de plusieurs documents (DocumentManager) et d'éditer un document au travers d'un ensemble de vues (ViewManager,WindowsManager, ReferenceDocument).

Structure Classe dans Kaomi
Figure IV-8 : Structure des classes de Kaomi

Kaomi : la classe Kaomi gère le contexte de l'application. Par contexte, on désigne, les préférences utilisateur ou l'accès aux différentes ressources.

Les services :

La classe KaomiManager permet de gérer un ensemble de documents et l'accès aux services partagés, parmi ceux-ci :

Cette structuration a pour but de favoriser l'extension des différents services. Par exemple, les services de formatage ne sont pas intégrés avec le document. Cela permet de ne pas faire dépendre le formatage du document d'un résolveur précis. Nous verrons de manière plus précise comment se passe le formatage dans le chapitre V.

L'édition synchrone dans plusieurs vues :

La classe DocumentManager gère un document lors d'un processus d'édition et de visualisation. Cette classe gère donc le fait qu'un document est visualisé dans un ensemble de vues, et initialise la mise en place des différents mécanismes de synchronisation entre les différents éléments qu'elles contiennent. C'est cette classe qui permet de maintenir la cohérence entre la structure de données de document de référence et les copies de document présentes dans les différentes vues.

Un document manager contient :

Mécanisme de vues :

Ce mécanisme repose sur la classe ViewManager qui contient les classes:

Dans la Figure IV-9, nous présentons le mécanisme général de création des vues. Ce mécanisme sera décrit précisément dans la section 9.

A la lecture du document source la structure de données qui servira de format pivot à Kaomi sera construite (ReferenceDocument). Les différentes vues et leurs documents étendus seront construits par transformation (filtrage, ajout d'informations complémentaires) du document de référence. Cette transformation est réalisée de manière automatique par Kaomi. Cependant, elle est spécialisable pour chaque environnement auteur construit avec Kaomi.

Construction simple des vues
Figure IV-9 : Mécanisme de création des vues

La classe ReferenceDocument ainsi que les classes documents dans les vues héritent d'une classe Document. Nous présenterons plus complètement cette classe dans la section 6.

6 Le format Pivot de Kaomi

Un des objectifs de Kaomi est de fournir un environnement auteur pour de nombreux langages multimédias du fait du nombre croissant de langages (voir Chapitre II). De manière à éviter l'écriture d'une structure pour chaque format, il a fallu concevoir des classes qui offraient un formalisme suffisamment général pour permettre à une grande famille de langages de s'intégrer dedans. Un des autres intérêts d'avoir une structure de données commune pour plusieurs langages est de permettre la mise en commun d'un ensemble de services d'édition.

L'objectif de ce format pivot est donc triple. Il doit permettre l'édition, la présentation du document, mais aussi faciliter la création des structures de document dans les différentes vues.

Dans ce but nous avons défini une structure de document hiérarchique composée de trois entités :

Nous allons maintenant présenter ces trois entités.

6.1 Les médias dans Kaomi

Dans Kaomi, les différents éléments de base que l'on peut utiliser dans un document sont les médias image, vidéo, texte, son, HTML, Applet.

Kaomi utilise les JMF pour accéder et présenter les médias : image (JPEG, GIF), vidéo (AVI, MPEG, MOV) et audio (MP3, WAV).

Par rapport aux services fournis pas les JMF, nous avons ajouté deux médias de base de plus : les objets HTML et les Applets. Cette intégration a été facilitée dans le cas de HTML par l'utilisation de la bibliothèque (graphique) intégrée dans Java (Swing) et dans le cas des Applets par l'utilisation de Java qui nous fournit intrinsèquement une machine virtuelle pour les Applets.

Un ensemble d'interfaces décrit les attributs pour chaque type de média. Cet ensemble peut être étendu pour intégrer de nouveaux médias. Cette structure est basée sur le modèle proposé par Sabry dans le cadre du gestionnaire de présentation de documents multimédias [Sabry98].

6.2 Les éléments multimédias de Kaomi

Un objectif de la structure de données est de permettre la définition de fonctions d'édition simples (ajouter un fils, supprimer un fils, ajouter un attribut, mettre à jour un attribut (voir section 3.2)) et la définition d'une aide pour l'écriture des services de chargement et de sauvegarde.

Dans cette perspective, la structure de données pour représenter les documents multimédias est basée essentiellement sur un élément multimédia qui contient les informations temporelles, spatiales, de navigation (hyperliens), le type ainsi que les informations concernant les médias (objets son, image ).

Dans la Figure IV-10, on peut voir une représentation graphique de cette structure de données. Les attributs de navigation, de type et ceux spécifiques au langage sont stockés comme attributs de l'élément multimédia.

Ces éléments sont les feuilles de la hiérarchie du document. Ils permettent de faire abstraction au cours des différentes opérations d'édition du type du média manipulé. Par exemple, cela permettra de faciliter la création de la palette d'attributs du fait que les attributs associés aux médias seront homogènes.

Cette structure permet aussi d'être indépendant du média, l'auteur peut ainsi changer le média associé à un élément multimédia, sans avoir à changer les synchronisations avec les autres objets multimédias. De plus, un même média peut être utilisé par plusieurs éléments multimédias.

Frank Duluc [Duluc00b] a proposé et validé le même niveau d'abstraction dans un contexte de gestion d'un fond documentaire multimédia.

Objet Media
Figure IV-10 : Format pivot de Kaomi
Cet élément multimédia s'intègre dans une structure de document plus complète. Nous allons maintenant présenter cette structure.

6.3 La structure de document de Kaomi

Il existe aujourd'hui plusieurs modèles pour représenter des documents structurés. Le modèle le plus connu est DOM (Document Object Model [DOM98], [DOM2-00]) que nous allons présenter maintenant car il sert de base à notre structure de document. Il existe des extensions de DOM plus particulièrement adaptées au monde du document multimédia comme SMIL-DOM par exemple [SMIL-DOM00] que nous présenterons ensuite.

DOM : est une interface faite pour créer et manipuler des documents structurés. L'intérêt d'une telle structure est de fournir une interface qui peut être largement utilisée pour différents types d'environnement et d'application. DOM est issu de DHTML, mais il est beaucoup plus général que ce dernier qui ne fait référence qu'à HTML. Pour définir une telle structure, l'interface de DOM décrit une hiérarchie de noeuds. Cette hiérarchie est composée d'une entité document et de noeuds. L'entité document, racine de l'arbre, est une entité qui représente le document et un ensemble d'informations attachées à un document (titre, fichier, auteur, date de création, ). Les noeuds sont décorés par des informations, certaines sont prédéfinies d'autres non. Cela permet par exemple à toutes les applications de stocker leurs données dans la structure.

L'interface DOM fournit aussi un ensemble de méthodes permettant de manipuler cette structure.

L'intérêt d'utiliser une structure comme DOM est de s'appuyer sur une structure de données standardisée et donc d'un ensemble de fonctions générales définies pour sur cette structure.

SMIL-DOM : est une spécialisation de DOM pour les documents SMIL. Cette interface, en plus de spécialiser certains attributs sur les noeuds (attributs spécifiques à SMIL), fournit aussi un ensemble de méthodes plus spécialisées pour le cadre des documents multimédias (méthodes map ou play par exemple). La fonction map permet d'afficher le document à un instant précis de la présentation sans déclencher leur exécution.

Cependant cette interface répond aux besoins des systèmes de présentation de documents multimédias, mais est peu adaptée à un processus d'édition. Cette interface ne contient pas par exemple, les méthodes addOpérateur, changeOpérateur utiles lors de l'édition de la structure temporelle d'un document SMIL.

Structure de document dans Kaomi :

La structure de document dans Kaomi respecte l'interface DOM (structure et méthode) et se compose essentiellement de quatre parties :

Structure document Kaomi
Figure IV-11 : Structure d'un document dans Kaomi

Les structures temporelle et spatiale sont constituées d'objets composites (Ct, Cs) et d'objets basiques (Bt, Bs). Les objets composites permettent de regrouper un ensemble d'objets, les objets basiques sont les feuilles de la structure et sont liés aux objets multimédias. Nous allons présenter de manière plus précise la structure temporelle dans la section 7.

La dimension spatiale ne sera pas décrite. En effet, même si les paradigmes d'édition offerts finalement à l'auteur diffèrent (édition directe dans la vue de présentation), les structures de données et les mécanismes mis en oeuvre sont très proches de ceux utilisés pour la dimension temporelle.

7 Le modèle temporel de Kaomi

L'objectif du modèle temporel de Kaomi est de permettre de représenter un large éventail de formalismes de documents multimédias (absolu, relationnel, événementiel). Ce modèle temporel repose essentiellement sur des éléments basiques (Bt) composés de 3 attributs (Début, Fin, Durée) et d'éléments composites composés de cinq types d'informations attachés à chaque composite temporel Ct (Figure IV-12) :
Operateurs et relations temporelles
Figure IV-12 : Informations temporelles associées à un composite

Nous maintenons une redondance entre les informations. Nous gardons les relations dans la structure du fait que lors du processus d'édition nous avons besoin de maintenir le lien entre la relation spécifiée par l'auteur et les rélems. En effet, lorsque l'auteur supprimera une relation, nous aurons besoin de supprimer les rélems générés par cette relation.

Nous allons maintenant détailler ces informations temporelles et voir comment les relations temporelles mises entre les objets modifient les attributs temporels du document et permettent la construction du graphe.

7.1 Les propriétés temporelles

Les attributs temporels permettent de modéliser les propriétés temporelles d'un élément multimédia. Ces attributs sont début, fin et durée. Ces attributs ne sont pas définis par une valeur mais par un intervalle de valeurs et une valeur préférée. Chaque attribut est donc défini par trois paramètres : [borne inférieure, valeur préférée, borne supérieure].

Chaque paramètre peut avoir une valeur initiale et une valeur formatée. La valeur initiale est celle qui est donnée par l'auteur ou celle qui a été mise par défaut par le système auteur. La valeur formatée est celle qui a été calculée par le système en fonction du contexte de l'élément temporel, c'est-à-dire en fonction des relations qui sont dans le document et qui peuvent modifier sa durée. Par exemple, si on a deux objets A et B, avec initialement pour intervalle de durées [1,3,4] et [2,5,9], et si l'auteur met une relation d'égalité entre les deux objets alors les valeurs formatées des deux objets seront dans ce cas : [2,3,4] et [2,3,4] car le système enlève automatiquement les valeurs qui n'appartiennent à aucune solution. Les techniques utilisées seront présentées dans le chapitre V.

7.2 Opérateurs, relations et événements dans Kaomi

Dans le modèle temporel de Kaomi, on peut associer à la fois une sémantique d'arbre d'opérateurs, de relations et d'événements à la structure temporelle.

Un opérateur est une relation qui lie tous les fils d'un noeud composite. Par exemple, si on associe l'opérateur pendant à un composite temporel, tous les fils devront se jouer pendant le père, le père sera une boîte englobante temporelle de ses fils. D'autres opérateurs fréquemment utilisés sont les opérateurs séquence et parallèle (cf. SMIL). Les opérateurs seront traduits en relations entre les éléments multimédias.

Les relations temporelles sont placées entre les fils d'un noeud composite, elles peuvent être unaires ou binaires. Les relations permettent de définir le comportement temporel des objets. Ces relations peuvent compléter l'opérateur associé au composite temporel. Les relations temporelles sont stockées sur les noeuds composites. Dans Kaomi, le modèle de relation est extensible et modifiable, c'est-à-dire qu'il n'y a pas un ensemble prédéfini de relations. Les relations sont définies de manière abstraite, et sont complétées par des informations sur leur sémantique exprimées en rélems. C'est ce mécanisme que nous présenterons dans la section (7.2.2).

Les événements dont les actions modifient le comportement ou la présentation d'éléments frères de l'objet ayant déclenché l'événement seront eux aussi traduits en rélems. Ce mécanisme sera présenté dans la section 7.2.3

Le mécanisme général de traduction des opérateurs, des relations et des événements sera illustré dans la section 7.2.4.

7.2.1 Les relations élémentaires de Kaomi

Les rélems sont les entités de base du modèle temporel de Kaomi. Ils représentent les informations temporelles élémentaires. C'est une extension des relations d'instants déduites des relations d'intervalles d'Allen car elles contiennent en plus des relations sur la durée des objets.

Un rélem est essentiellement composé de trois informations : un ou deux attributs temporels, une opération et un paramètre. Kaomi permet de définir deux types de rélems : les rélems unaires et les rélems binaires selon qu'ils portent sur un ou deux attributs temporels.

Rélem unaire, il est défini par trois attributs :

Dans l'exemple de la Figure IV-13, on peut voir trois rélems unaires. Le premier a pour effet d'avancer la fin de l'objet temporel A de 12 secondes, la deuxième retarde le début de l'objet temporel B de 5 secondes. Le troisième exemple est un événement qui sera déclenché à la fin de l'objet A. Les événements seront décrits de manière plus précise dans la section 7.2.3.
 
Instant temporel
Opération
Paramètre
Fin (Objet Temporel A)
D
-12s
Début (Objet Temporel B)
D
5s
Fin(Objet Temporel A)
Event
événement
Figure IV-13 : Exemples de rélems unaires

Rélem binaire, il est défini par trois attributs :

Dans la Figure IV-14, on peut voir trois exemples de rélems binaires. Le premier indique que les deux objets temporels A et B ont la même durée. Le deuxième indique que la Fin de l'objet temporel A est 12s après le Début de l'objet temporel B. Enfin, le troisième exemple indique que lorsque l'objet temporel A se terminera, alors le système arrêtera l'objet temporel B.
Attribut temporel
Attribut temporel
Opération
Paramètre
Durée(Objet Temporel A)
Durée (Objet Temporel B
=
 
Fin (Objet Temporel A)
Début (Objet Temporel B)
>
12
Fin (Objet Temporel A)
Fin (Objet Temporel B)
Þ
 
Figure IV-14 : Exemples de rélems binaires
7.2.2 Spécification des opérateurs et des relations dans Kaomi

Le concepteur de l'environnement auteur définit une liste de relations qui lui semblent nécessaire pour l'auteur en définissant pour chaque relation la liste des relations élémentaires (rélems) qui décrit la sémantique de cette relation. Cependant, si l'auteur lui même souhaite agrandir cette liste il peut le faire de la même manière que le concepteur de l'environnement.

Pour cela, nous avons utilisé le système des ressources fourni par le langage Java (voir section 5.1.3) ainsi Kaomi fournit un fichier de ressources qui décrit la sémantique des relations et qui permet de mettre à jour les informations dans les structures de données de Kaomi.

Dans la Figure IV-15, on peut voir un exemple de ressource qui décrit la relation equals. La sémantique des relations s'exprime en terme de rélems.

#Sémantique de la relation equals 

#nombre de rélems engendrés par la relation
equals.nbRélem = 3

#nombre de paramètres de la relation
equals.param=2

# Dur(A) = dur (B)
equals.1.attribut1 = DURATION
equals.1.attribut2 = DURATION
equals.1.RélemRelation=EQUALS
 

# Begin(A) = Begin(B)
equals.2.attribut1 = BEGIN
equals.2.attribut2 = BEGIN
equals.2.RélemRelation=EQUALS

# End(A) = End(B)
equals.3.attribut1 = END
equals.3.attribut2 = END
equals.3.RélemRelation=EQUALS

Figure IV-15 : Ressource décrivant une relation

La description des opérateurs repose sur le même principe de ressource. Le concepteur de l'environnement auteur décrit la sémantique des opérateurs en terme de relations. L'utilisation des relations permet de rendre la description des opérateurs plus simple. La sémantique d'un opérateur peut être définie selon le type de l'élément inséré.

Dans la Figure IV-16, on peut voir un exemple de ressource décrivant l'opérateur Inside.
 

# Sémantique de l'opérateur inside

# Sémantique de l'opérateur pour un élément multimédia de type délai
inside.delay.number=1

#L'objet n'a pas de relation avec son père s'il est de type délai
inside.1.delay.relation=null

# Sémantique de l'opérateur pour un élément multimédia de type média 
inside.media.number=1

#L'objet a une relation inside avec son père 
inside.1.media.relation=inside_by
inside.1.media.first_object=father
inside.1.media.second_object=current

Figure IV-16 : Sémantique d'un opérateur

7.2.3 Les événements de Kaomi

Généralités :

Nous avons vu dans le chapitre II (section 3.2) que de nombreux modèles de documents utilisent des événements. Nous avons choisi de garder dans la structure interne de Kaomi la même approche que ces modèles et les événements s'expriment sous une forme proche de règles : condition /action.

Dans le modèle temporel de Kaomi, les événements sont stockés sur les noeuds composites de la structure temporelle. De manière à favoriser la localité des informations, les événements sont stockés sur le premier élément temporel qui contient dans sa descendance tous les objets intervenant dans la spécification de l'événement. Dans le cas extrême, cela peut être la racine du document.

Dans la mesure du possible, les événement sont automatiquement traduits en rélems.

Définition :

Un événement de façon générale peut être défini par six attributs :

  1. Source de l'événement : permet de connaître l'origine de l'émission de l'événement. Cet attribut peut prendre les valeurs :
  1. Destination de l'événement : cet attribut peut prendre trois valeurs:
  1. Nombre d'occurrences : cet attribut peut prendre deux types de valeur : un entier qui indique le nombre de fois où l'événement se produit dans le cas où celui-ci serait prédictible, ou alors infini dans le cas contraire. Par exemple, lorsque l'utilisateur clique sur un bouton pause/resume l'événement associé peut être déclenché un nombre infini de fois ; par contre, dans le cas du bouton quitter l'application, celui-ci ne peut intervenir qu'une fois.
  2. Date des occurrences : une liste de dates correspondant aux différentes occurrences quand celles-ci sont prédictibles, une liste de variables dans le cas contraire.
  3. Une condition: une expression booléenne qui permet de tester un ensemble d'attributs sur des objets du document, ou des paramètres de l'application.
  4. Une liste d'actions : la liste des actions à effectuer sur la destination de l'événement lorsque la source émet l'événement et que la condition est évaluée à vrai.
Exemple de traduction :

Pour montrer que cette structure de données est suffisamment générale on va s'intéresser à la traduction des événements MHML dans notre formalisme.

Par exemple :

Evénement MMHL :

Link L1 indique à quel groupe est associé l'événement.
Type_Event = E1
Nom_Condition = {C1,C2, C3) où Ci est une expression booléenne.
Action = {A1, A2, A3}

Dans notre formalisme :

Source = E1
Destination = L1
NbOccurrences = infini
Dates d'occurrences = {t1, t2, , tn} avec n infini, et ti une variable.
Conditions = C1 & C2 & C3
Actions = {A1, A2, A3}

Traduction en rélems :

La traduction des événements en rélems se décompose en deux cas :

événement E1 = { Source = Média1
Destination = Média2
NbOccurrences = 1
Dates d'occurrences = {14}
Conditions = Fin(Média2)
Actions = Démarrer(Média1) }

sera traduit par le rélem suivant : Fin(A) Þ Début(B). La traduction de l'événement dans ces rélems permettra de profiter des services de manipulation dans la vue temporelle et d'appliquer des mécanismes de formatage sur les objets A et B.

Notons par exemple que dans le cas du langage MHML où tous les comportement s'expriment sous forme événementielle, on arrive à isoler un certain nombre de comportements non événementiels. Nous verrons lors de la présentation de MHML-Editeur (Chapitre VI) ces différents cas ainsi qu'une expérience menée pour généraliser ces travaux au cadre des événements imprédictifs.

7.2.4 Traduction des relations en relations élémentaires

Nous allons maintenant nous intéresser au processus général de traduction des relations en rélems lors de la création d'un document par un auteur.

Kaomi utilise le nom de la relation mise par l'auteur pour construire automatiquement les rélems à partir des fichiers de ressources. L'exemple de la Figure IV-17 illustre ce processus.

Dans un premier temps, l'auteur va créer deux objets A et B. Lors de cette création, l'application initialise les attributs temporels des deux objets. Ensuite l'auteur insert les deux objets dans un objet composite scène défini préalablement. Nous avons associé l'opérateur inside à cet objet scène. Les deux objets sont donc en relation inside avec leur père. Le système utilise la ressource qui décrit l'opérateur inside pour mettre la relation adaptée, et ensuite la ressource qui décrit la relation pour mettre les rélems correspondants. Dans l'exemple, l'utilisateur met ensuite une relation equals entre les deux objets, relation qui sera traduite en rélems par le même mécanisme.

Semantique operateurs et relations
Figure IV-17 : Mécanisme de mise à jour des rélems

7.3 Construction des graphes temporels

Une des utilisations des rélems est la construction des graphes.

Un graphe est composé d'arcs qui représentent les objets (leur durée) et de noeuds qui représentent les instants (de début ou de fin) des objets.

Nous allons dans un premier temps présenter le mécanisme de base pour la création des graphes temporels (section 7.3.1) avant de présenter les trois difficultés rencontrées lors de cette création :

7.3.1 Mécanisme de base

L'édition d'un document se fait par ajout/retrait d'objets et de relations, d'opérateurs ou d'événements. Ces différentes informations, comme nous l'avons introduit précédemment seront traduites en rélems. Par conséquent la construction du graphe se fait lors de l'ajout ou du retrait d'une information temporelle. Le graphe est construit automatiquement lors de la construction des noeuds temporels et de l'insertion de relations.

À chaque création d'objet composite, on crée un nouveau graphe. À chaque création d'objet temporel élémentaire ou de composite, on crée un arc dans le graphe de son père. Le noeud de début de l'arc représente l'instant de début de l'objet, le noeud de fin représente l'instant de fin de l'objet temporel.

À chaque rélem créé, on réalise une opération dans le graphe (Figure IV-18). Par exemple, lors de l'insertion d'un rélem qui entraîne l'égalité de deux instants, la fusion des deux noeuds temporels représentant ces deux instants est effectuée.

Rélem
Opérations
t1 = t2
Fusion de noeuds 
t1< t2
Insertion d'un délai entre deux noeuds
t1> t2
Insertion d'un délai entre deux noeuds
Figure IV-18 : Liens rélem / opération dans le graphe
Les rélems Event, et ceux qui définissent des relations sur les durées ne sont pas traduisibles en termes de graphe. Les services reposant sur le graphe (gestionnaire de présentation par exemple) pourront accéder à ces informations via les tables de rélems.

Dans la Figure IV-19, on peut voir la construction de ce graphe lors de l'insertion de deux relations différentes. Tout d'abord, lors de la création d'un objet, le système construit un arc et deux noeuds qui représentent l'objet nouvellement créé. L'auteur insère ensuite une relation equals, qui a pour effet de fusionner les noeuds représentant les instants de début et de fin des objets. L'auteur insère finalement une relation before, dans ce cas le système insère un délai entre les deux objets.

Construction Graphe temporel
Figure IV-19 : Construction du graphe temporel
L'exemple de la Figure IV-20 est plus complet. Dans la partie gauche, on visualise la liste des relations, et dans la partie droite on visualise le graphe résultant de cette spécification.
Graphe Temporel
Figure IV-20 : Graphe temporel résultant d'une spécification

7.3.2 Construction du graphe avec les rélems de causalité

L'insertion des rélems de causalité a posé quelques problèmes lors de la construction du graphe.

En effet, prenons l'exemple du rélem Fin(A)Þ Fin(B) signifiant que la fin de l'objet A entraîne la fin de l'objet B indépendamment de la valeur prévue initialement pour B.

La première solution qui pourrait être choisie pour représenter ces deux objets dans le graphe serait de fusionner les noeuds de fin, comme pour le rélem "=". Cette représentation simple pourrait être satisfaisante pour la machine de présentation. Elle poserait néanmoins un problème aux formateurs se basant sur le graphe. En effet, statiquement ces deux objets n'ont pas la même durée, ils ne peuvent donc pas être représentés par des arcs ayant les mêmes instants de début et de fin. La solution que nous avons choisie et de définir deux arcs pour les objets étant interrompus dynamiquement. Un arc représente la valeur effective prise lors de la présentation, et un arc représente la valeur prévue statiquement. De manière à assurer la cohérence du graphe, nous introduisons un délai entre les fins prévues et les fins réelles des objets interrompus.
 

Rélem
Opérations
t1 Þ t2
Insertion de deux arcs fictifs : 
  • un arc qui représente la durée prévue de l'objet auquel appartient t2
  • un délai qui relie la fin (ou le début) prévue (sans interruption) avec la fin (ou le début) réelle de l'objet
L'arc initial représente maintenant la durée réelle de l'objet.
t1 Üt2
Insertion de deux arcs fictifs : 
  • un arc qui représente la durée prévue de l'objet auquel appartient t1
  • un délai qui relie la fin (ou le début) prévue (sans interruption) avec la fin (ou le début) réelle de l'objet
L'arc initial représente maintenant la durée réelle de l'objet.

Figure IV-21 : Liens rélem / opération dans le graphe

Dans le cas particulier où deux instants ont les deux relations Þ et Ü , alors le système doit assurer qu'un des deux délais introduits ait une durée nulle. Ceci afin de conserver la sémantique de la relation.

Dans la Figure IV-22 nous pouvons voir un exemple de construction de graphe avec des relations causales. L'auteur initialement crée trois objets A, B et C. Il insert ensuite une relation parmin entre les objets A et B. Dans la figure, nous avons détaillé la construction du graphe pour les quatre causalités engendrées par la relation parmin. L'auteur insert ensuite une relation meet entre les objets A et C. Notons que cette nouvelle relation sera insérée à la suite de l'arc représentant la durée réelle de A.

Graphe temporel avec des parmin
Figure IV-22 : Construction de graphe avec les relations causales

7.3.3 Retrait de rélem

Lors du retrait d'une relation, d'un événement ou de la modification d'un opérateur, le système doit supprimer des rélems. Cela se fait facilement du fait que nous gardons la liste des rélems créés par chaque relation, opérateur ou événement.

Lors du retrait d'un rélem le graphe doit être mis à jour. Cette opération est plus complexe, car lors du retrait d'un rélem, il faut être capable de défusionner les noeuds et d'étendre les intervalles de valeurs des durées des objets.

Le choix que nous avons fait est de réinitialiser tous les arcs du composite avec leurs durées initiales.

On peut noter de plus que l'introduction des relations causales, comme le parmin, pose quelques problèmes à l'édition. Prenons le scénario suivant :

Il faut donc faire attention lors du retrait des relations causales car le document peut être incohérent. Il est à noter que le retrait d'une relation non causale ne peut jamais mettre le document dans un état incohérent. C'est une des propriétés intéressantes des CSP (voir chapitre V section 3.3).

7.3.4 Construction de graphes hiérarchiques

La dernière difficulté dans la construction des graphes est liée à l'introduction des graphes hiérarchiques pour modéliser la présence de composite dans la structure temporelle.

L'introduction de la hiérarchie a été réalisée de la manière suivante :

Les graphes ainsi obtenus ont la propriété de n'avoir qu'un noeud de début et qu'un noeud de fin. De plus, tous les arcs sont reliés à l'arc représentant l'élément composite.

La création des arcs d'insertion nécessite, lors du formatage et de l'analyse, l'existence d'un mécanisme qui vérifie qu'au moins un des arcs d'insertion sortant du premier noeud du graphe et qu'un des arcs d'insertion entrant du dernier noeud du graphe aient une durée de 0. Ceci afin de conserver le fait que chaque noeud du graphe peut être assimilé à un instant temporel. Et donc, que les instants de début et de fin d'un graphe correspondent aux instants de début du premier objet temporel et de fin du dernier objet temporel du graphe.

Dans la Figure IV-23 nous pouvons voir un exemple de graphes hiérarchiques. Le composite C qui est un élément composite est donc représenté dans deux graphes.

Construction Hierarchie de graphe
Figure IV-23 : Construction de graphes hiérarchiques

7.4 Bilan du modèle de document de Kaomi

Le modèle de document proposé dans Kaomi couvre les besoins énoncés dans le chapitre III pour réaliser un environnement idéal. En effet, le modèle d'édition proposé permet principalement de : Ce modèle cherche aussi à couvrir une famille large de langages multimédias source. Dans ce but, cette structure se base essentiellement sur la notion de relations élémentaires. Nous validerons ce modèle de document dans l'implémentation d'environnement auteur pour les langages SMIL, Madeus et MHML.

8 Fonctions et services d'édition fournis par Kaomi

Kaomi est une boîte à outils qui vise à construire des environnements auteur. Ces environnements bien qu'ayant des formalismes différents peuvent fournir un ensemble de services communs ou reposant sur les mêmes opérations de base. Kaomi va, dans ce but, fournir un ensemble d'opérations d'édition le plus générique et le plus extensible possible. Nous allons présenter ce principe dans cette section.

Une opération d'édition est une opération de l'auteur qui entraîne la modification d'un ou plusieurs attributs sur un objet du document ou encore une modification de sa structure.

Ainsi, toute opération d'édition peut se ramener à une ou plusieurs opérations élémentaires qui peuvent être :

Ces opérations d'édition que nous allons définir reposent sur l'édition du format pivot que nous venons de présenter. Ce sont donc des opérations d'édition qui s'effectuent pour l'auteur au travers du formalisme d'édition de l'environnement auteur qui est une extension de celui du langage de sauvegarde.

Chaque opération d'édition impliquera une vérification de cohérence du document. De ce fait, les mécanismes vérifiant la cohérence devront être très performants. Les techniques mises en oeuvre pour cela seront présentées dans le chapitre V.

8.1 La création d'objets

Dans Kaomi, le concepteur d'application a à sa disposition un ensemble de méthodes qui permettent de créer des médias ou des groupes. Ces méthodes se basent sur l'objet sélectionné pour insérer le nouvel objet dans la hiérarchie. Si l'objet sélectionné est un groupe, l'objet est inséré dans le groupe, sinon l'objet est inséré dans le groupe contenant l'objet sélectionné. Dans le cas où il n'y a pas d'objet sélectionné, l'objet est inséré à la racine du document.

8.2 L'édition d'attributs dans Kaomi

Les opérations de modification d'un attribut dans Kaomi peuvent se faire de deux manières : Dans l'exemple de la Figure IV-24, on peut voir un exemple d'opération d'édition. L'auteur par une opération via la palette d'attributs a modifié un attribut temporel. Lors de cette modification le système doit assurer la cohérence du système et propager les nouvelles informations aux différentes vues.

Objet Media edition
Figure IV-24 : Edition d'un attribut temporel dans Kaomi

Certaines propriétés de cohérence sont indépendantes du langage comme la cohérence qualitative. Les mécanismes de vérification de celles-ci sont offerts de manière générique par Kaomi (voir Chapitre V). Cependant d'autres propriétés sont dépendantes des langages comme dans le langage SMIL où deux objets présents temporellement au même instant ne peuvent partager la même région spatiale. De telles vérifications doivent être prises en charge par le concepteur de l'environnement auteur.

8.3 Edition de relations

Le deuxième type d'opération d'édition que peut effectuer l'auteur est l'édition de relations. Chaque langage a son ensemble de relations avec sa sémantique qui lui est propre. L'outil auteur propose donc une palette de relations, relations qui sont à la fois dépendantes du langage et du système auteur (chapitre III section 2.2.2).

Dans le cas du langage Madeus-97, l'auteur aura à sa disposition dans la palette temporelle les différentes relations du langage ainsi que par exemple les 4 relations supplémentaires présentées dans l'environnement idéal pour faciliter l'édition.

Le mécanisme de construction de cette palette est similaire à celui de la palette d'attributs, c'est-à-dire qu'il est basé sur un mécanisme de ressources. L'auteur peut ainsi sélectionner des objets dans une vue et insérer une relation entre eux.

L'édition des événements et des opérateurs fonctionne sur le même principe.

8.4 La création de groupe

Kaomi fournit un ensemble de fonctions permettant de créer et détruire des groupes. Ces fonctions permettent notamment à l'auteur d'éditer la structure temporelle et spatiale de son document.

La création de groupe peut se réaliser simplement. L'auteur sélectionne un objet composite et clique sur un menu ou une icône permettant de créer un nouveau groupe. L'environnement auteur insert alors un nouveau groupe à l'intérieur de l'élément composite sélectionné. L'auteur pourra ensuite insérer de nouveaux éléments dans ce composite. Aussi simplement la destruction d'un groupe ne contenant plus d'objets se fait par sélection de l'élément à supprimer puis par appel de la fonction détruire par l'intermédiaire d'un menu ou d'une icône.

Cependant, en cours d'édition l'auteur attend des fonctions de plus haut niveau. Par exemple, il peut avoir envie de sélectionner un ensemble d'objets pour les grouper. Se pose alors pour le concepteur de l'outil auteur la question de la sémantique de cette opération. En effet, cette opération soulève de nombreuses questions :

De nombreuses solutions sont possibles. Nous avons fait un choix de comportement qui est, bien entendu, restrictif. Il serait souhaitable de pouvoir définir la politique prise lors de cette opération pour chaque environnement auteur par un mécanisme de ressource.

Le choix pris par défaut est le suivant :

Dans l'exemple de la Figure IV-25, l'auteur a sélectionné un ensemble de quatre objets (C,E,G,H). Il a ensuite demandé de grouper ces quatre objets. L'environnement auteur réalise donc cette opération. Cela se traduit par : la destruction des relations (Rel(A, B), Rel(D, E), Rel(F, G)), la création d'un nouvel élément composite (Nouveau composite), la conservation de l'opérateur du premier objet sélectionné (Inside) et la conservation de la relation Rel(G, H) qui liait deux objets sélectionnés.

Gestion Groupe
Figure IV-25 : Exemple de création de groupe

9 Vues et synchronisation

Comme nous avons pu le dire précédemment, Kaomi fournit un ensemble de vues, conformes à celles qui sont spécifiées dans la section 2.3. Nous allons, dans un premier temps, présenter le mécanisme d'édition avec une vue (section 9.1) ainsi que le principe général de construction d'une vue (section 9.2) avant de présenter les principales vues de Kaomi : Les différentes fonctions des vues seront illustrées avec leur mise en oeuvre dans les environnements auteur réalisés avec Kaomi (SMIL-Editeur, Madeus-Editeur, ) dans le chapitre VI.

9.1 Mise à jour des vues

Nous avons présenté dans la section 5.2 le processus général de construction d'une vue ainsi que la synchronisation entre les différentes vues avec le document de référence. Ces mécanismes reposent essentiellement sur trois points : Ces mécanismes sont implémentés à la fois dans les différentes classes de base qui définissent les attributs, mais aussi dans la classe Document. Les classes referenceDocument et extendedDocument héritent de cette classe Document, et profitent de ce fait de ces mécanismes.

Dans la Figure IV-26, nous étendons le schéma présenté dans la Figure IV-9 pour préciser comment se déroule le processus d'édition.

Initialement, lors de l'ouverture d'un document, le gestionnaire de fichier construit le document de référence. Une fois cette entité construite, les différentes vues désirées sont ouvertes. Lors de cette ouverture le gestionnaire de vues, grâce au mécanisme de synchronisation fourni par les classes document met en place la synchronisation entre les différentes vues et le document de référence.

Par la suite, toute opération de l'auteur se fait au travers d'une vue. Cette opération sera directement effectuée sur le document de référence. Celui-ci vérifiera la cohérence de l'opération et formatera ensuite le document pour prendre en compte l'opération d'édition réalisée. Les structures de document étendu seront ensuite informées que le document de référence a été modifié. Si la modification se limite aux attributs, les différentes vues étendues seront directement mises à jour, dans le cas d'une modification de structure, elles seront informées de cette modification.

Bien entendu, une vue peut se désynchroniser du document de référence. Dans ce cas, l'auteur aura le choix au moment de la resynchronisation soit d'appliquer toutes les modifications dans le document de référence, soit de reconstruire sa vue à partir du document de référence.

Construction des vues
Figure IV-26 : Mécanisme d'édition dans les vues

9.2 Mécanisme de création d'une vue

Il existe dans Kaomi un ensemble de vues prédéfinies. Lors de la réalisation d'un environnement auteur il se peut que le concepteur ait besoin de créer une nouvelle vue ou d'étendre une vue existante. Ces deux mécanismes d'extension ont été prévus dans Kaomi.

La création d'une vue est facilitée par la présence du gestionnaire de vues et par le fait que toute vue ne communique jamais directement avec une autre vue. Tout communication passe par le gestionnaire de vues.

De même toutes les opérations d'édition passent par le document de référence et sont répercutées sur les documents étendus par un mécanisme de synchronisation directe des structures de données.

9.3 La vuede présentation

La vue de présentation (Figure IV-27) est celle qui implémente les services de présentation du document, et qui fournit des services tels que joue / stop / pause / reprend. Cette vue permet aussi d'éditer le document. Elle permet par exemple de modifier les attributs spatiaux des objets par des manipulations directes.

Dans la Figure IV-27, on peut voir les trois zones graphiques qui composent la vue d'exécution :

Vue execution
Figure IV-27 : Vue de présentation offerte par Kaomi dans SMIL-Editeur

La vue de présentation se distingue des autres vues par la présence d'un gestionnaire d'exécution ([Layaïda97], [Sabri99]), qui permet de jouer le document. Le gestionnaire de présentation se base sur une structure de graphe (voir section 7.3) et utilise les médiateurs (players) fournis dans Kaomi pour présenter les différents médias, un fichier de ressource permet de lier le type du média au médiateur utilisé pour le jouer. Les médiateurs sont des classes qui permettent de visualiser des médias dans une vue, ils sont utilisés dans la vue de présentation, la vue temporelle, et la vue vidéo structurée. Ces médiateurs sont construits en utilisant les JMF. L'extension du gestionnaire de présentation pour l'intégration de nouveaux médias est facilitée du fait que le gestionnaire de présentation fait abstraction du média qu'il manipule grâce à la définition d'interface et au mécanisme d'héritage [Sabry99].

Lors de la création de la structure de document étendue dans la vue de présentation, Kaomi associe à chaque élément temporel élémentaire un médiateur qui gérera la présentation de cet élément en utilisant les informations de présentation du médiaElement associé au noeud temporel.

A chaque élément composite sera associé un gestionnaire de présentation qui utilisera le graphe temporel pour présenter les fils de l'élément composite.

Les gestionnaires de présentation héritent de la classe médiateur, ce qui permet de traiter de manière transparente l'exécution d'objets élémentaires et d'objets composites dans le gestionnaire de présentation.

La vue de présentation utilise des gestionnaires spatiaux pour maintenir les relations lors des manipulations de l'auteur.

9.4 La vue hiérarchique

La vue hiérarchique (Figure IV-28) permet de visualiser les structures hiérarchiques (temporelle et spatiale) du document. Cette vue peut aussi servir à visualiser d'autres structures comme celle de la vidéo. Cette vue fournit les services classiques d'une vue hiérarchique, comme l'ouverture et la fermeture de noeuds, l'insertion et l'ajout de noeud,...
Vue Hierarchique
Figure IV-28 : Vue hiérarchique
Lors de la création de cette vue seules les informations hiérarchiques sont copiées. Certains attributs peuvent être copiés en plus si l'auteur désire par exemple filtrer l'affichage des noeuds selon la valeur d'un attribut.

9.5 La vue résumé

La vue résumé (Figure IV-29) visualise les instants clés de la présentation, on peut rapprocher cette vue des vues qui présentent les images clés dans les systèmes de gestion de vidéo. Ces instants clés peuvent être soit calculés automatiquement par le système soit définis par l'auteur. La capture des différents instants clés se fait à la demande de l'auteur dans la vue de présentation. Les différents instants clés sont stockés sous forme d'images qui seront utilisées lors de l'ouverture de la vue de résumé. Dans le cas où le système calcule les instants clés, il peut, par exemple, soit faire une coupe de la présentation toute les 10 secondes, soit calculer les instants de début et de fin des objets, et réaliser une coupe à chaque instant où un objet commence ou se termine. Cette vue permet d'avoir une vision plus globale de l'exécution du document par rapport à la vue de présentation, car on visualise temporellement plusieurs vues spatiales du document. Vue resume
Figure IV-29 : Vue résumé
Cette vue se distingue des autres dans le sens qu'elle utilise explicitement d'autres vues. Lors de l'ouverture d'une vue résumé, celle-ci construit une structure de données de référence à partir des différentes images du résumé. De ce fait, cette vue peut utiliser plusieurs présentations pour le jeu d'images dont elle dispose, pour cela il lui suffit de placer des relations spatiales et temporelles entre les différentes images. Le résumé est donc construit comme un document multimédia. Une fois cette structure de données construite, elle demande l'ouverture d'une vue de présentation utilisant sa structure de données comme document de référence.
Ainsi, l'auteur ne voit jamais réellement de fenêtre résumé, il ne manipule en fait qu'une fenêtre de présentation.

9.6 La vue attributs

La vue attributs (Figure IV-30) permet à l'auteur de modifier les attributs de l'objet sélectionné. Cette vue, qui évolue en fonction du type d'objet manipulé, permet de définir tous les attributs de l'objet. C'est une palette qui est construite de manière générique à partir d'un fichier de ressources (voir section 5.1.3), elle est donc facilement adaptable pour chaque format de document.

Dans cette vue, les attributs sont regroupés par familles, ces familles sont indépendantes de la structure de données, c'est-à-dire que, par exemple dans une même famille, on peut retrouver des attributs temporels mais aussi des attributs liés à la présentation de l'objet, c'est le cas par exemple de l'attribut Fill en SMIL.

Vue attributs
Figure IV-30 : Visualisation des attributs d'un objet

9.7 La vue temporelle

La vue temporelle (Figure IV-31) implémente les services décrits dans la section 3.2.1 du chapitre III. Elle permet de représenter plusieurs informations : attributs, relations, espace de solutions.

Cette visualisation se fait selon deux modes définis ci-dessous :

Statique :

Vue temporelle
Figure IV-31 : Vue temporelle

Opérationnel :

Vue rapport Execution
Figure IV-32 : Vue temporelle présentant un rapport d'exécution dans Madeus-Editeur

Nous allons maintenant décrire le mécanisme de construction de la vue temporelle.

A la création d'une vue temporelle, seule la structure temporelle du document de référence est copiée. La vue temporelle utilise le mécanisme des médiateurs de la vue de présentation pour afficher une représentation graphique des noeuds temporels dans la vue de présentation. De ce fait, la vue temporelle crée une structure spatiale (attributs spatiaux sur chaque élément) qui servira aux médiateurs pour afficher les noeuds temporels dans la vue temporelle.

Dans le cadre des objets composites la vue temporelle crée un nouveau médiateur qui a deux représentations graphiques permettant ainsi à la vue temporelle d'ouvrir/fermer les noeuds composites.

La vue temporelle utilisera un gestionnaire de placement pour calculer le placement des objets dans la vue et pour répercuter les modifications de l'auteur (Chapitre V section 7).

La création de la vue rapport d'exécution a été réalisée de manière à minimiser le temps de création de cette vue. Pour cela nous importons un rapport d'exécution dans la vue temporelle. Le rapport d'exécution n'est qu'une exécution particulière du document. De ce fait, il contient juste les durées réelles des objets et l'explication de leur fin (fin normale, interruption par un autre objet,..). La vue temporelle doit donc juste mettre à jour la durée des objets et utiliser les informations complémentaires pour aider l'auteur dans la compréhension de l'exécution.

9.8 Bilan des vues

Le mécanisme de création des vues ainsi que l'implémentation d'une classe vue a permis de faciliter la création de nouvelles vues. En effet, cette classe a permis de mettre en commun tous les mécanismes de synchronisation entre les vues ainsi qu'avec le document de référence.

Les différentes vues que nous avons présentées permettent d'offrir à l'auteur une visualisation des différentes informations contenues dans son document, et les vues de navigation lui permettent de se déplacer facilement dans l'espace de solutions défini par son document. Ces différentes vues permettent de répondre aux attentes et besoins des auteurs définis dans le chapitre II (section 2.2).

En particulier, les différents besoins de visualisation et d'édition par manipulation directe des dimensions spatiale et temporelle sont satisfaits (Chapitre III section 3).

L'édition est facilitée du fait que l'auteur a à sa disposition un ensemble de vues, de ce fait, il peut utiliser la vue la plus adaptée à son opération d'édition. Notons qu'une des difficultés pour l'auteur peut être le passage entre les différentes vues. Ce passage est facilité dans Kaomi grâce à la synchronisation des vues. Cette synchronisation se fait à la fois sur les objets sélectionnés mais aussi sur l'instant de présentation (vue temporelle/vue d'exécution).

10 Apport de Kaomi par rapport aux autres boîtes à outils

Il existe aujourd'hui de nombreuses boîtes à outils dans le domaine du multimédia et des documents. On peut classer les boîtes à outils en cinq catégories : Kaomi est une boîte à outils permettant de concevoir des environnements auteur extensibles puisque les environnements auteur peuvent être étendus par le mécanisme de ressources.

11 Conclusion

Au cours de ce chapitre nous nous sommes attachés à mettre en oeuvre une boîte à outils qui permet de construire les environnements idéaux spécifiés dans le chapitre III. Nous avons présenté Kaomi, une boîte à outils qui permet de satisfaire les différents besoins des auteurs, que ce soit au niveau visualisation, qu'au niveau facilité d'édition.

Dans les chapitres suivants, nous allons nous intéresser à l'implémentation des différents services d'aide (Chapitre V) et puis à l'utilisation de Kaomi pour la création d'environnements auteur de documents multimédias.