Cette section est informative.
Cette section définit les modules de disposition de SMIL 2.0, qui sont composés d'un module BasicLayout et de trois modules avec des fonctionnalités supplémentaires qui sont basés sur le module BasicLayout : les modules AudioLayout, MultiWindowLayout et HierarchicalLayout. Les modules contiennent des éléments et des attributs permettant le positionnement d'éléments médias sur la surface de rendu visuel et le contrôle du volume audio. Étant donné que ces éléments et ces attributs sont définis dans des modules, les concepteurs d'autres langages balisés peuvent choisir d'inclure, ou non, cette fonctionnalité dans leurs langages. Par conséquent, les concepteurs de langage incorporant d'autres modules SMIL n'ont pas besoin d'inclure les modules de disposition si des fonctionnalités de disposition suffisantes sont déjà présentes.
Cette section est informative.
La fonctionnalité dans ce module est essentiellement identique à la fonctionnalité de disposition dans [SMIL10].
Comme SMIL 1.0, le module BasicLayout de SMIL 2.0 inclut un modèle de disposition pour organiser les éléments média dans des régions sur la surface de rendu visuel. L'élément layout est utilisé dans l'en-tête head du document pour déclarer un ensemble de régions sur lesquelles les éléments médias sont rendus. Les éléments médias déclarent dans quelles régions ils doivent être rendus avec l'attribut region.
Chaque région possède un ensemble de propriétés compatibles CSS2 comme top, left, height, width et backgroundColor. Ces propriétés peuvent être déclarées en utilisant une syntaxe définie par l'attribut type de l'élément layout. De cette façon, la disposition du média peut être décrite en utilisant soit la syntaxe de disposition de base de SMIL, soit la syntaxe CSS2 (remarquez qu'elles ne sont pas identiques fonctionnellement). D'autres types de disposition sont aussi possibles.
Par exemple, pour décrire une région avec une valeur id de "r" à la localisation 15,20 qui fait 100 pixels de large et 50 pixels de haut en utilisant le module BasicLayout de SMIL :
<layout> <region id="r" top="15px" left="20px" width="100px" height="50px"/> </layout>
Pour créer la même région en utilisant la syntaxe CSS2 :
<layout type="text/css">
[region="r"] { top: 15px; left: 20px; width: 100px; height:50px; }
</layout>
Pour afficher un élément média dans la région déclarée ci-dessus, il faut spécifier l'identifiant de la région comme étant l'attribut region de l'élément média :
<ref region="r" src="http://..." />
En outre, les implémentations peuvent choisir de permettre, en utilisant la syntaxe CSS, d'effectuer la disposition du média directement. Cela peut être fait en utilisant la syntaxe de sélection pour régler les propriétés de disposition sur les éléments médias. Par exemple, pour afficher tous les éléments vidéos et images dans un rectangle de même taille et à la même position que dans les exemples ci-dessus :
<layout type="text/css">
video, img { top:15px; left:20px; width:100px; height=50px; }
</layout>
Notez que plusieurs modèles de disposition peuvent être spécifiés au sein d'une structure de contrôle comme l'élément switch de SMIL, chacun avec un type différent. La première disposition avec un type géré par l'implémentation sera celle utilisée.
Cette section est normative.
Cette section définit les éléments et les attributs qui font la fonctionnalité du module BasicLayout de SMIL.
L'élément layout détermine comment les éléments, dans le corps du document, sont positionnés sur une surface de rendu abstraite (soit visuelle, soit acoustique).
L'élément layout doit apparaître avant qu'une quelconque disposition déclarée ne soit utilisée dans le document. S'il est présent, l'élément layout doit apparaître dans la section head du document. Si un document ne contient aucun élément layout, le positionnement des éléments du corps du document est dépendant de l'implémentation.
Il est recommandé que les profils incluant le module BasicLayout de SMIL 2.0 gèrent aussi le module BasicContentControl de SMIL 2.0. Un document peut alors gérer plusieurs dispositions alternatives en incluant plusieurs éléments layout au sein de l'élément switch de SMIL. Cela peut aussi être utilisé pour décrire la disposition du document en utilisant différents langages de disposition. La gestion des attributs de test du système dans le module BasicContentControl de SMIL donne une plus grande souplesse à l'auteur tout comme une meilleure accessibilité à l'utilisateur.
On peut assigner des valeurs de disposition par défaut à tous les éléments interprétables en sélectionnant l'élément de disposition vide <layout></layout>. Si le document n'inclut pas un élément layout, alors le positionnement des éléments médias est dépendant de l'implémentation.
Attributs de l'élément
Si l'attribut type de l'élément layout a la valeur "text/smil-basic-layout", il peut contenir les éléments suivants :
Les langages incorporant le module BasicLayout ont besoin de définir quels éléments additionnels sont autorisés comme enfants. Si l'attribut type de l'élément layout a une autre valeur, l'élément contient des données textuelles.
L'élément region contrôle la position, la taille et l'échelle des éléments de type objet média.
Dans le fragment en exemple suivant, la position d'un élément text est mise à une distance de 5 pixels du coin supérieur de la fenêtre de rendu :
<smil xmlns="http://www.w3.org/2001/SMIL20/"> <head> <layout> <root-layout width="320" height="480" /> <region id="a" top="5" /> </layout> </head> <body> <text region="a" src="text.html" dur="10s" /> </body> </smil>
La position d'un élément region, comme spécifié par ses attributs top, bottom, left et right, est toujours relative à la géométrie du parent, qui est définie par l'élément parent. Pour le module BasicLayout de SMIL, tous les éléments region doivent avoir comme parent immédiat un élément layout et la position de l'élément region est définie par rapport à la fenêtre racine déclarée dans l'élément frère root-layout. La taille intrinsèque d'un élément region est égale à la taille de la géométrie du parent.
Quand les dimensions de la région, comme spécifiées par les attributs width et height, sont déclarés de façon relative avec la notation "%", la taille d'un élément region est relative à la taille de la géométrie du parent. Les tailles déclarées avec des valeurs absolues en pixels conservent ces valeurs absolues.
Les conflits entre la taille de l'élément region et les attributs de position width, height, bottom, left, right et top sont résolus selon les règles de placement des éléments, comme détaillé plus bas. Les valeurs par défaut des attributs de position et de taille de l'élément region sont spécifiées comme étant auto. Cette valeur d'attribut a le même sens ici que dans [CSS2], quand aucune distinction ne survient entre éléments remplacés et non remplacés.
Un élément de placement est de ceux qui n'ont pas de taille ni de hauteur intrinsèques, mais une boîte englobante qui a une taille et une hauteur. Les éléments region du module BasicLayout de SMIL sont des éléments de placement. Les éléments de placements sont rognés à la boîte englobante.
L'équation déterminante pour la dimension horizontale est :
bbw (largeur de la boite englobante) = left + width + right
Étant donné que chacun de ces trois paramètres peut avoir soit une valeur "auto", soit une valeur définie non "auto", il y a alors 8 possibilités :
|
Valeurs d'attribut |
Résultat avant rognage à la boîte englobante |
||||
| left | width | right | left | width | right |
| auto | auto | auto | 0 | bbw | 0 |
| auto | auto | définie | 0 | bbw - right | right |
| auto | définie | auto | 0 | width | bbw - width |
| auto | définie | définie | bbw - right - width | width | right |
| définie | auto | auto | left | bbw - left | 0 |
| définie | auto | définie | left | bbw - right - left | right |
| définie | définie | auto | left | width | bbw - left - width |
| définie | définie | définie | left | width | bbw - left - width |
Les attributs verticaux height, bottom et top sont résolus de façon similaire. L'équation déterminante pour la dimension verticale est :
bbh (hauteur de la boîte englobante) = top + height + bottom
Etant donné que chacun de ces trois paramètres peut avoir soit une valeur "auto", soit une valeur définie non "auto", il y a alors 8 possibilités :
|
Valeurs d'attribut |
Résultat avant rognage à la boîte englobante |
||||
| top | height | bottom | top | height | bottom |
| auto | auto | auto | 0 | bbh | 0 |
| auto | auto | définie | 0 | bbh - bottom | bottom |
| auto | définie | auto | 0 | height | bbh - height |
| auto | définie | définie | bbh - bottom - height | height | bottom |
| définie | auto | auto | top | bbh - top | 0 |
| définie | auto | définie | top | bbh - bottom - top | bottom |
| définie | définie | auto | top | height | bbh - top - height |
| définie | définie | définie | top | height | bbh - top - height |
L'élément region peut avoir les attributs visuels suivants :
La valeur par défaut de fit est hidden.
Notez que l'attribut fit s'applique au média visuel une fois qu'il a une taille bi-dimensionnelle intrinsèque, comme les images et la vidéo. Il ne s'applique pas à un média visuel qui est rendu et adapté dans des situations variables, tel que l'affichage visuel de HTML, jusqu'à ce que ses dimensions spatiales bi-dimensionnelles aient été déterminées, comme après qu'une page HTML a été disposée avec une taille spécifique.
Un profil intégrant le module BasicLayout de SMIL 2.0 doit fournir un moyen de déclarer un identifiant XML sur les éléments region.
L'élément root-layout détermine la valeur des propriétés de disposition de l'élément racine, qui détermine la taille de la fenêtre dans laquelle la présentation SMIL est rendue.
Si plus d'un élément root-layout est analysé dans un seul élément layout, alors il s'agit d'une erreur, et le document ne devrait pas être affiché. Cela n'inclut pas les éléments root-layout sautés par l'agent utilisateur ( par exemple, parce que l'élément layout englobant a été sauté en raison d'un type non reconnu ou parce qu'un attribut de test a été évalué à faux).
La sémantique de l'élément root-layout est comme dans SMIL 1.0 : les attributs de l'élément root-layout déterminent la taille de la fenêtre de présentation principale, et les régions sœurs déclarées sont arrangées au sein de cette fenêtre principale. Si les attributs height ou width de l'élément root-layout ne sont pas spécifiés, la valeur de cet attribut est dépendante de l'implémentation.
L'élément root-layout peut avoir les attributs suivants :
Contenu de l'élément
L'élément root-layout est un élément vide.
Cet élément reconnaît la syntaxe de SMIL 1.0 où l'élément root-layout est un frère vide des éléments region de niveau supérieur.
L'attribut region est appliqué à un élément pour spécifier quelle région de rendu est assignée à l'élément. Cet attribut se rapporte à une région de rendu abstraite (soit visuelle, soit acoustique) définie au sein de la section de disposition du document. La région de rendu abstraite référencée est déterminée en appliquant les règles suivantes, dans l'ordre :
Si le processus ne sélectionne aucune surface de rendu définie dans la section de disposition, les valeurs des propriétés de formatage de cet élément sont définies selon les valeurs de disposition par défaut, qui sont décrites dans la section concernant les exigences d'intégration de ce module.
Le langage intégrant ce module doit spécifier quels éléments ont un attribut region et un héritage de cet attribut.
Le module BasicLayout SMIL 2.0 est compatible avec le modèle de rendu visuel défini dans CSS2, il réutilise les propriétés de formatage définies dans la spécification [CSS2] et introduit le nouvel attribut fit. Le lecteur doit être familier avec les concepts et les termes définis dans CSS2.
Les régions de disposition de SMIL 2.0 influencent la propagation des événements de l'interface utilisateur (comme un clic de souris ou une activation de lien) aux éléments visibles sous-jacents. Quand la localisation d'un événement correspond à l'arrière-plan d'une région plutôt qu'au média qui est affiché dans cette région, la couleur transparent de l'arrière-plan de la region permet aux événements de l'interface utilisateur de traverser jusqu'aux éléments plus bas dans l'ordre de la pile d'affichage. Réciproquement, les régions n'ayant pas de couleur d'arrière-plan transparent captureront les événements de l'interface utilisateur, ne permettant pas aux événements de traverser jusqu'aux éléments plus bas dans l'ordre de la pile d'affichage. Ce comportement se distingue de la capacité d'un profil de langage à faire usage des événements de l'interface utilisateur capturés par des éléments de la region.
Un profil intégrant le module BasicLayout de SMIL 2.0 doit définir les modèles de contenu pour l'élément layout si un quelconque élément au-delà de ceux spécifiés ici sont acceptés comme enfants.
Un profil intégrant le module BasicLayout de SMIL 2.0 doit fournir un moyen de déclarer un identifiant XML sur des éléments region si le profil prévoit de référencer des éléments region par des identifiants XML. Cette valeur est utilisée comme la valeur argument de l'attribut region. Ce n'est pas requis si le profil n'utilisera que la méthode regionName pour se référer à un élément region.
Un profil intégrant le module BasicLayout de SMIL 2.0 doit spécifier quels éléments ont un attribut region et un héritage de cet attribut.
Si elles ne sont pas définies autrement par le profil, les valeurs par défaut des attributs de de disposition listées dans les modules de disposition de SMIL 2.0 vont s'appliquer aux éléments présentés qui, en outre, ne spécifient pas de sémantique de disposition.
Un élément qui ne réfère pas à un élément region valide sera affiché dans la région par défaut. Si elle n'est pas spécifiée autrement par le profil, la région par défaut est définie comme remplissant et étant alignée au coin en haut à gauche de la fenêtre de présentation. Cette région par défaut prend des valeurs par défaut pour les autres attributs de region.
Voir le DTD complet pour les modules de disposition de SMIL.
Cette section est informative.
Cette section définit la fonctionnalité du module AudioLayout de SMIL 2.0. Ce niveau contient un attribut qui offre un contrôle du volume audio dans un espace de rendu.
Cette section est normative.
La fonctionnalité de ce module s'ajoute aux fonctionnalités du module BasicLayout, qui est une condition préalable nécessaire à l'inclusion du module AudioLayout.
Cette section est normative.
Le module AudioLayout de SMIL 2.0 gère le contrôle du volume des médias auditifs via une nouvelle propriété sur les éléments region : soundLevel. Un objet multimédia assigné à une région avec un attribut soundLevel explicite aura son audio interprété à l'intensité sonore relative donnée.
Cette section est normative.
Cette section définit les éléments et les attributs qui composent le module AudioLayout de SMIL 2.0.
L'élément region
défini dans le module BasicLayout
est augmenté de l'attribut soundLevel.
L'élément region peut avoir les attributs auditifs suivants :
Les valeurs valides sont des valeurs de pourcentage CSS2 vf non négatives. Les valeurs de pourcentage sont interprétées de façon relative au volume enregistré du média. Les pourcentages sont interprétés comme un ratio du signal de sortie sur celui d'entrée et il est défini en termes de dB :
changement en dB dans le niveau du signal = 20 log10(valeur-pourcentage / 100)
Un réglage de '0%' joue le média silencieusement. Une valeur de '100%' jouera le média à son volume enregistré (0 dB). De façon similaire, une valeur de '200%' jouera le média à peu près deux fois plus fort (6 dB) que son volume enregistré (sujet aux limitations matérielles). La valeur par défaut est '100%'. Le niveau sonore absolu du média perçu est sujet ensuite aux réglages du volume système, qui ne peuvent pas être contrôlés par cet attribut.
Cette section est informative.
Cette section définit la fonctionnalité du module MultiWindowLayout de SMIL 2.0. Ce niveau contient des éléments et des attributs subvenant aux besoins de la création et du contrôle de plusieurs fenêtres principales sur le système de rendu.
Cette section est normative.
La fonctionnalité de ce module s'ajoute à la fonctionnalité du module BasicLayout, qui est une condition préalable nécessaire pour l'inclusion du module MultiWindowLayout.
Cette section est normative.
Dans [[SMIL 10]] et dans le module BasicLayout de SMIL 2.0, chaque présentation est interprétée dans une seule fenêtre racine d'une taille/forme spécifique. La fenêtre racine contient toutes les régions utilisées pour gérer l'interprétation d'objets média spécifiques.
Cette spécification gère le concept de multiples fenêtres principales. Étant donné qu'il n'y a plus de fenêtre racine unique, nous utilisons le terme principal à la place. La répartition des régions en fenêtres principales individuelles permet un placement et un redimensionnement indépendants de chaque fenêtre principale, si cela est géré par le profil incluant et l'implémentation. Le placement initial des fenêtres principales sur le dispositif d'affichage et tout mécanisme de repositionnement de celles-ci dépendent de l'implémentation.
Une fenêtre principale est déclarée avec l'élément topLayout d'une façon similaire à la fenêtre root-layout de SMIL 1.0, à l'exception que de multiples instances de l'élément topLayout peuvent se produire au sein d'un seul élément de disposition :
<layout> <topLayout id="WinV" title="Video" width="320" height="240"/> <region id="pictures" title="pictures" height="100%" fit="meet"/> </topLayout> <topLayout id="WinC" title="Captions" width="320" height="60"> <region id="captions" title="caption text" top="90%" fit="meet"/> </topLayout> </layout>
Dans cet exemple, deux fenêtres principales sont définies ("WinV" et "WinC") et deux régions sont définies avec une région ("pictures") assignée à "WinV" et l'autre ("captions") à "WinC". Les définitions des fenêtres principales et des régions contenues utilisent une syntaxe hiérarchique, ce qui n'est pas le cas avec l'ancien élément root-layout.
Les fenêtres principales fonctionnent seulement comme des conteneurs de rendu, ce qui veut dire qu'elles ne portent aucune signification temporelle. En d'autres termes, aucune fenêtre ne définit de plan de montage chronologique ou une quelconque autre propriété de conteneur de temps. Il y a toujours un seul plan de montage chronologique maître pour les présentations SMIL, peu importe le nombre de fenêtres principales qui ont été crées. Ceci est important pour permettre la synchronisation entre les médias affichés dans différentes fenêtres principales.
L'affichage des fenêtres principales peut être contrôlé automatiquement par le lecteur, ou manuellement par l'utilisateur de l'application. Si une fenêtre est fermée (par l'utilisateur) pendant qu'un des éléments affichés dans cette fenêtre est actif, il n'y a aucun effet sur le plan de montage chronologique (éventuel) de ces éléments. Cependant, un lecteur peut choisir de ne pas décoder le contenu pour améliorer les performances. Les moyens fournis à l'utilisateur pour fermer les fenêtres principales sont dépendants de l'implémentation.
Pour la compatibilité avec SMIL 1.0, l'élément root-layout continuera à gérer la sémantique de disposition de SMIL 1.0. Le nouvel élément topLayout gérera l'extension de sémantique et la syntaxe imbriquée améliorée.
Notez aussi que toute région ne peut appartenir, au plus, qu'à une seule fenêtre principale (ou de niveau racine). Les régions non déclarées comme enfants d'un élément topLayout appartiennent à la fenêtre de root-layout. Si aucun élément root-layout n'a été déclaré, la région est assignée à une fenêtre additionnelle selon la sémantique du module BasicLayout.
Cette section est normative.
Cette section définit les éléments et les attributs qui composent le module MultiWindowLayout de SMIL 2.0.
L'élément topLayout détermine la taille de la fenêtre dans laquelle la présentation SMIL est interprétée, et il sert aussi comme fenêtre principale dans laquelle placer les éléments region enfants.
Plusieurs éléments topLayout peuvent apparaître dans un seul élément layout, déclarant chacun une fenêtre principale indépendante.
Chaque instance d'un élément topLayout détermine la taille d'une fenêtre de présentation principale séparée, et les régions descendantes sont arrangées dans cette fenêtre principale par rapport au système de coordonnées de cette fenêtre.
Ce module fournit aussi un contrôle sur les fenêtres topLayout quand elles s'ouvrent et se ferment dans une présentation. Notez que la cartographie précise des fenêtres topLayout sur l'environnement de l'hôte est dépendante de l'implémentation. Il est attendu des implémentations qu'elles feront « surgir » des fenêtres indépendantes sur le bureau si elles le peuvent, mais d'autres moyens de gérer de multiples topLayout, comme l'utilisation de cadres, sont autorisés. Quand elles ouvrent et ferment automatiquement des fenêtres, les applications doivent essayer de se conformer avec les directives WAI pour l'agent utilisateur [UAAG] et permettre à l'utilisateur de choisir d'être averti de l'ouverture et de la fermeture des fenêtres et de fournir un moyen pour désactiver leur ouverture et fermeture automatiques.
L'élément topLayout peut avoir les attributs suivants :
L'élément topLayout peut contenir n'importe que nombre d'éléments region, ou bien être vide.
Admettre plusieurs éléments topLayout dans un seul élément layout autorise la gestion de multiples fenêtres principales.
L'élément layout défini dans le module BasicLayout de SMIL est augmenté de l'élément topLayout, celui-ci est ajouté au modèle de contenu de l'élément layout si l'attribut type de l'élément layout a la valeur "text/smil-basic-layout". Dans ce cas, il peut contenir les éléments suivants :
Ce module comprend deux événements qui peuvent être inclus dans le profil du langage d'intégration.
Le profil de langage doit spécifier les noms déclaratifs pour relier ces événements, tout comme le comportement bouillonnant de ces événements.
Voir le DTD complet pour les modules de disposition de SMIL.
Cette section est informative.
Cette section définit la fonctionnalité du module HierarchicalLayout de SMIL2.0. Ce module contient des éléments et des attributs pour le positionnement avancé des éléments médias sur la surface de rendu visuelle et se construit sur le module BasicLayout de SMIL2.0.
Le module HierarchicalLayout de SMIL 2.0 prolonge le modèle de disposition de base pour l'organisation des éléments médias dans les régions de la surface de rendu visuelle en fournissant un plus grand contrôle et une plus grande flexibilité à l'auteur. Ces extensions sont importantes pour certaines classes de présentation multimédia dans lesquelles le contrôle de l'auteur sur les objets est critique.
Ce module :
- étend la définition de l'élément region pour permettre la spécification de régions hiérarchiques ;
- introduit un nouvel élément de disposition, regPoint, pour contrôler le placement relatif à une région associée ( la facilité de l'élément d'enregistrement) ;
- inclut des attributs supplémentaires, regPoint et regAlign, qui spécifient comment une présentation d'un objet média peut être alignée par rapport à l'ensemble des points d'enregistrement définis ( la facilité de l'élément d'enregistrement) ;
- fournit des attributs supplémentaires, top, bottom, left et right, qui spécifient le positionnement exact des objets dans une région ( la facilité appelée positionnement de sous-région) ;
- permet à un objet placé dans une sous-région de régler les éléments fit, z-index, et backgroundColor de la sous-région.
Cette section est normative.
La fonctionnalité de ce module s'ajoute à la fonctionnalité du module BasicLayout, qui est une condition préalable nécessaire pour l'inclusion du module HierarchicalLayout.
Cette section est normative.
Une nouvelle fonctionnalité de ce module est la gestion d'une disposition hiérarchique. Cela permet la déclaration de régions imbriquées dans d'autres régions, un peu comme les régions sont disposées dans la fenêtre principale déclarée par l'élément topLayout. Par exemple, ce qui suit déclare une fenêtre principale de 640 pixels par 480, les régions "left" (gauche) et "right" (droite) qui couvrent les côtés gauche et droit de la fenêtre respectivement, et une région hiérarchique "inset" (incrustation) qui est centrée au sein de la région "right".
<layout>
<topLayout width="640px" height="480px" /> errata-E03
<region id="left" top="0%" left="0%"
width="50%" height="100%" />
<region id="right" top="0%" left="50%"
width="50%" height="100%">
<region id="inset" top="25%" left="25%"
width="50%" height="50%" />
</region>
</topLayout>
</layout>
La disposition résultante ressemble à :
Par défaut, chaque région hiérarchique partage la valeur z-index (profondeur) de son parent. Les régions hiérarchiques peuvent aussi introduire leur propre valeur z-index locale. Dans ce cas, toutes les régions hiérarchiques avec un parent direct commun définissent des valeurs z-index locales au sein de la valeur z-index de leur parent. Par exemple, si une région parente a une valeur z-index de "4" et deux enfants hiérarchiques de ce parent définissent des z-indexes, respectivement de "1" et "2", alors chacun des deux est traité comme une sous-division du z-index parent de "4".
Si deux régions hiérarchiques avec la même valeur d'attribut z-index se chevauchent, les règles existantes pour le traitement du z-index (du module BasicLayout) sont appliquées. Notamment, la règle concernant la priorité de temps est maintenue, ce qui signifie, dans le cas d'un conflit de z-index, que le média visible dans le chevauchement sera déterminé par la région qui interprète le média qui a commencé le plus récemment. Si le média en conflit a commencé en même temps, alors la règle utilisant l'ordre textuel des éléments médias dans le document SMIL est appliquée.
Par exemple :
<layout> <root-layout width="640px" height="480px" /> <region id="whole" top="0px" left="0px" width="640px" height="480px" z-index="5"/> <region id="right" top="0px" left="320px" width="320px" height="480px" z-index="4"> <region id="inset" top="140px" left="80" width="160px" height="200px" z-index="6"/> <region id="inset2" top="140px" left="80" width="160px" height="200px" z-index="6"/> <region id="inset3" top="140px" left="80" width="160px" height="200px" z-index="7"/> </region> </layout> ... <par> <img id="A" region="whole" src="imageA.jpg" dur="10s"/> <img id="B" region="inset" src="imageB.jpg" dur="10s"/> </par> <par> <img id="D" region="inset2" src="imageD.jpg" begin="1s" dur="10s"/> <img id="C" region="inset" src="imageC.jpg" begin="0s" dur="10s"/> </par> <par> <img id="E" region="inset2" src="imageE.jpg" dur="10s"/> <img id="F" region="inset3" src="imageF.jpg" dur="10s"/> </par>
Là où une disposition hiérarchique offre une facilité pour définir un ensemble de régions avec un parent commun, il n'y a aucune facilité pour affiner le contrôle au sein d'une région pour dire où un objet média donné sera placé. Le module HierarchicalLayout de SMIL 2.0 résout ce problème en définissant un ensemble d'attributs qui, quand ils sont placés dans un objet utilisant l'attribut region, permet à cet objet média d'être déclaré avec une sous-région positionnée explicitement dans une région donnée. Ces attributs sont appelés collectivement des attributs de positionnement de sous-region. Une sous-région est un enfant de la région déclarée dans l'attribut region de l'élément média. La valeur de l'argument de positionnement de la sous-région suit les conventions des éléments de placement décrits dans la section sur les éléments region.
Par exemple, supposons qu'une région "d" soit définie :
<layout> ... <region id="d" ... /> ... </layout>
Le code suivant décrit le placement d'un objet dans une sous-région à un décalage particulier dans une région, en utilisant la syntaxe du module HierarchicalLayout de SMIL 2.0 :
<ref id="a" ... region="d" top="5%" left="3" />
Chaque attribut de placement définit une nouvelle région enfant temporaire pour l'objet média référencé. Dans ce cas, le point haut-gauche de cet objet média est affiché à 5% en partant du haut et à 3 pixels en partant de la gauche de la région "d", et elle s'étend jusqu'aux bords de droite et du bas de la région "d".
Toutes les autres opérations de placement, comme l'attribut fit, opèrent maintenant sur la sous-région. Par exemple, le fragment de document suivant décrit une région et une référence à un objet média qui font usage du positionnement de la sous-région :
<layout> ... <region id="d" ... fit ="fill" /> ... </layout> <body> ... <ref src="..." ... region="d" fit="hidden" top="5%" left="3" bottom="10%" right="15%" /> ... </body>
Dans cet exemple, les frontières effectives de la sous-région pour le placement de cet objet sont définies en déclarant les bords haut, bas, gauche et droite de cette région avec les valeurs affichées, et ensuite en remplissant la sous-région résultante avec l'image spécifiée comme indiqué par l'attribut fit. Si la taille de l'objet média étant affiché est plus petite que celle de la sous-région résultante, l'affichage sera similaire à :
L'utilisation du placement des sous-régions est voulu comme une alternative légère par rapport à la définition d'un grand nombre de régions à utilisation unique. Souvent, les dimensions utilisées pour la sous-région correspondront aux dimensions de l'objet média étant placé, mais dans tous les cas les valeurs de l'attribut fit gouverneront le rendu de l'objet dans la sous-région. Les autres attributs de l'élément média qui auraient été appliqués à une région référencée sont appliqués à la sous-région à la place. Notez que les valeurs par défaut pour les attributs de la sous-région sont toutes à "auto, ce qui fait que, par défaut, une sous-région est créée en ayant les mêmes taille et position que la région parente.
Les règles de gestion du rognage des objets au sein des régions en fonction des attributs des sous-régions, sont fournies en dessous.
Le module HierarchicalLayout de SMIL 2.0 inclut la capacité d'utiliser les attributs fit, z-index, et backgroundColor sur des objets affichés dans une sous-région dans le but de déclarer des comportements différents de ceux de l'élément region.
Un élément d'enregistrement est un élément, défini dans ce module, qui est utilisé pour définir un point dans une région et un algorithme d'alignement d'objet par défaut pour ce point. L'élément peut être utilisé dans un élément objet média, où il est associé à une région et un algorithme de surclassement d'alignement optionnel. Les valeurs de placement dans les éléments d'enregistrement peuvent être soit des pourcentages, soit des pixels.
L'utilisation des points d'enregistrement permet un placement relatif cohérent au travers des régions. Ainsi, les points d'enregistrement sont définis en dehors d'une quelconque région seule.
Par exemple, le code suivant décrit deux points d'enregistrement (avec des valeurs id "midPoint" et "topMargin"), l'un d'entre eux est défini comme emplacement relatif et l'autre à un emplacement fixe en pixels, en utilisant la syntaxe du module HierarchicalLayout de SMIL 2.0 :
<layout> <regPoint id="midPoint" top="50%" left="50%" regAlign="center" /> <regPoint id="topMargin" top="10" left="15" regAlign="topLeft" /> <region id="a" ... /> <region id="b" ... /> </layout>
Dans cet exemple, le point d'enregistrement avec la valeur id "midPoint" a un algorithme de placement par défaut qui centre l'objet média autour du point défini, alors que le point d'enregistrement avec la valeur id "topMargin" a un algorithme d'alignement par défaut qui place le point en haut à gauche de l'objet média au point d'enregistrement.
Des élément média variés peuvent être affichés dans les régions en utilisant les points d'alignement comme suit :
<ref region="a" src="rtsp://..." dur="2s" regPoint="midPoint" /> <ref region="b" src="http://..." dur="2s" regPoint="midPoint" regAlign="bottomRight"/> <ref region="a" src="http://..." dur="2s" regPoint="topMargin" /> <ref region="b" src="http://..." dur="2s" regPoint="topMargin" regAlign="center"/>
Dans le premier exemple, un objet média est centré au milieu de la région a. Dans le deuxième exemple, un objet média a son coin bas droit centré au milieu de la région b. De même, dans le troisième exemple, un objet média a son coin haut gauche placé au point 10,15 dans la région a, et dans le quatrième exemple, un objet est centré autour du point 10,15 dans la région b.
Les points d'enregistrement peuvent être utilisés pour coordonner le placement d'un ensemble d'objets médias qui ne partagent pas les mêmes tailles. (Par exemple, un ensemble d'images peut être aligné au centre d'une région). Ils peuvent aussi être utilisés pour coordonner l'affichage d'images autour d'un point particulier dans une région, comme dans :
<layout> <regPoint id="middle" top="50%" left="50%" regAlign="center" /> <region id="a" ... /> </layout> ... <seq> <ref region="a" src="rtsp://..." dur="2s" regPoint="middle" regAlign="bottomRight"/> <ref region="a" src="http://..." dur="2s" regPoint="middle" regAlign="bottomLeft"/> <ref region="a" src="http://..." dur="2s" regPoint="middle" regAlign="topLeft"/> <ref region="a" src="http://..." dur="2s" regPoint="middle" regAlign="topRight"/> </seq>
Dans cet exemple, quatre objets sont alignés dans le temps au milieu d'une région. Si un élément média s'étend en-dehors des limites d'une région, il sera rogné aux limites de cette région.
Notez que les points d'enregistrement sont globaux dans le contexte d'une disposition et ne sont pas liés à une région particulière, mais ils peuvent être réutilisés en travers des régions. Ainsi, les décalages basés sur des pixels doivent être utilisés avec précaution.
Par commodité pour l'auteur, le module HierarchicalLayout de SMIL fournit de nombreux points d'enregistrement de régions prédéfinis incluant topLeft, topMid, topRight, midLeft, center, midRight, bottomLeft, bottomMid et bottomRight.
Par exemple, les objets média peuvent être centrés dans n'importe quelle région comme ceci :
<ref ..." regPoint="center" regAlign="center" />
La valeur par défaut de regAlign pour une région est topLeft. Si l'attribut regAlign est utilisé sans un attribut regPoint, l'opération d'alignement est relative au point le plus haut à gauche de la région contenant cet objet, ainsi, le comportement est le même que si le regPoint était spécifié à topLeft.
Les règles de gestion du rognage des objets au sein des régions basés sur les attributs regPoint et regAlign sont définies ci-dessous.
Cette section est normative.
Cette section définit les éléments et les attributs qui composent le module HierarchicalLayout de SMIL 2.0.
Cet élément est défini comme dans le module BasicLayout avec les extensions présentées ici.
Pour pouvoir gérer la fonctionnalité du point d'enregistrement décrite ci-dessus, un nouvel élément est ajouté au modèle de contenu de l'élément layout.
Le module HierarchicalLayout de SMIL ne fournit aucun nouvel attribut à l'élément layout.
Contenu de l'élément
Si l'attribut type de l'élément layout a la valeur "text/smil-basic-layout", il peut contenir les éléments suivants :
Tous les éléments de contenu, excepté regPoint sont définis ci-dessus dans les modules BasicLayout et MultiWindowLayout. L'élément regPoint est décrit ci-dessous.
L'élément region contrôle la position, la taille et l'échelle des éléments objet média. Ce module étend la définition de l'élément region pour inclure la définition des régions hiérarchiques.
Le positionnement d'une région, comme spécifié par ses attributs top et left, est toujours relatif à la géométrie de son parent, qui est définie par l'élément parent. Pour le module HierarchicalLayout de SMIL 2.0, tous les éléments des régions hiérarchiques doivent avoir comme parent immédiat les éléments region ou topLayout. La position de la région hiérarchique est définie de façon relative à l'élément parent. La taille intrinsèque de la région est égale à la taille de la géométrie du parent.
Quand les tailles des régions, comme spécifié par les attributs width et height, sont déclarées de façon relative avec des "%", la taille de la région hiérarchique est relative à la taille de la région parent. Les tailles déclarées par des valeurs absolues en pixels sont des valeurs absolues même quand elles sont utilisées dans une région enfant.
Notez qu'une région (hiérarchique) peut être définie d'une telle façon qu'elle peut s'étendre au-delà des limites de son parent. Dans ce cas la région enfant doit être rognée aux frontières du parent.
Si un attribut z-index est défini sur la région hiérarchique, il est évalué comme un index local au sein de celui du parent.
Dans le modèle HierarchicalLayout, l'élément region n'a pas d'attributs additionnels au-delà de ceux fournis dans les autres modules de disposition qui sont inclus. Cependant, la sémantique de l'attribut z-index est étendue pour gérer les régions hiérarchiques.
Comme avec les régions non hiérarchiques simples, l'ordre d'empilement des régions hiérarchiques peut être affecté par une activation temporelle. Une région devient active soit quand le média commence à être interprété dans la région, soit quand une de ses régions enfants devient active. Si deux régions sœurs ont le même z-index, la région établie le plus récemment est devant l'autre région.
Contenu de l'élément
Le module HierarchicalLayout de SMIL étend le modèle de contenu de l'élément region pour inclure de façon optionnelle d'autres éléments region.
L'élément regPoint détermine les coordonnées (x, y) d'un point relatif au coin haut gauche d'une région pour l'alignement des éléments, dans le corps d'un document, dans les régions d'une surface de rendu visuelle. Un regPoint peut être défini en utilisant des valeurs absolues (pixels) ou relatives (pourcentage). La fonctionnalité de regPoint n'est pas définie et ne devrait pas être utilisée pour des médias n'ayant pas de taille intrinsèque.
Pour les besoins de la fonctionnalité de regPoint, les médias et les régions sont définis de façon rectangulaire, avec des côtés perpendiculaires, avec les côtés ordonnés dans le sens des aiguilles d'une montre : haut (top), droite (right), bas (bottom) et gauche (left). Le côté haut est le bord le plus proche du point ou du bord du système d'affichage considéré comme « en haut ».
L'élément regPoint peut seulement apparaître comme enfant immédiat d'un élément layout.
Si la fonctionnalité du point d'enregistrement est utilisée sur un objet média qui utilise aussi un positionnement de sous-région, le point d'enregistrement s'applique à la sous-région.
Si le point d'enregistrement ou la fonctionnalité d'alignement est utilisée sur un objet média, l'interaction entre la valeur de l'attribut regPoint, la valeur de l'attribut regAlign, et la valeur de l'attribut fit d'une région dans laquelle l'objet média est affichée est comme suit :