Ajouts ====== - sdl2fb : Nouveau pilote pour SDL 2.0 (fenêtre unique; frame-buffer). - sdl2gl : Nouveau pilote pour SDL 2.0 (fenêtre unique; mode OpenGL). - sdl2mw : Nouveau pilote pour SDL 2.0 (multi-fenêtre; mode OpenGL). - glx : Ajout de la prise en charge des méthodes d'entrée X. Merci sr20det ! - AG_Button : Nouvelle option AG_BUTTON_CROP (recadrer la surface de l'étiquette au contenu). Utile pour condenser ou supprimer les espacements typographiques afin que des glyphes individuels (par exemple "Formes géométriques") puissent s'aligner précisément. - AG_Color : Ajout de macros de compression/décompression pour valeurs 4/12/24/48 bits. - AG_Driver : Nouvelle opération : setMouseAutoCapture (activer, désactiver ou réinitialiser la capture automatique de la souris lorsque le bouton est enfoncé). - AG_DriverSw : Nouvelle option clampOnResize (limiter les fenêtres Agar actives à la nouvelle tailles d'affichage). - AG_Error : Nouvelle fonction AG_Debug2() (affiche un message de débogage lorsque le niveau est >= 2). - AG_FontBf : Nouveau moteur de police bitmap pour notre format de police .agbf. - AG_Menu : Raccourcis clavier implémentés. Ajouté les options AG_MENU_NO_BOOL_MSG et AG_MENU_FAST_BOOL_MSG. - AG_Menu : Amélioration des performances du moteur de rendu AG_MenuView grâce aux étiquettes opaques dépendantes de l'état (incorporant les icônes), donc le mélange alpha n'est plus requis par draw(). Amélioration de l'apparence de AG_MenuView. - AG_Object : Nouveaux identifiants de classe numériques et macros *_ISA() correspondantes. - AG_Object : Nouvelle fonction AG_ObjectFreeChildrenOfType(). - AG_Radio : Nouvelle option HOMOGENOUS pour diviser l'espace de manière égale entre les éléments. Merci Stephen ! - AG_StyleSheet : Nouveaux sélecteurs CSS E > F. Les widgets enfants sont maintenant adressable par leur nom d'instance (par exemple, AG_Combo > "trigger") ou nom de classe (par exemple, AG_Combo > AG_Button). - AG_StyleSheet : Nouveaux sélecteurs CSS conditionnels "width", "height" et "zoom". Les widgets peuvent être stylisés en fonction de leur géométrie actuelle ou de leur niveau de zoom. - AG_Surface : Nouveau champ Lpadding (rembourrage de début de ligne de balayage). Permet rapidement recadrage des lignes à partir de la gauche. - AG_Surface : Il est désormais possible d'incrémenter le pointeur de pixels pour effectuer un recadrage rapide à partir du haut. Nouveau pointeur pixelsBase. - AG_Surface : Ajout de palettes standard pour les modes 1/2/4/8 bits. Les surfaces Indexées sont maintenant toujours initialisées avec une palette standard par défaut. - AG_Surface : Ajout de la prise en charge des surfaces de 40 et 48 bpp. - AG_Surface : Nouvelles tables de blitter optimisées. - AG_Surface : Nouvelle fonction AG_PixelFormatMaximum() pour retourner la valeur maximale possible pour un pixel en un format donné. - AG_Surface : Nouvelle fonction AG_SurfaceBlend8() pour mélanger une AG_Color à une surface 1/2/4/8-bpp en utilisant la méthode de l'approximation la plus proche. - AG_Surface : 4 nouveaux guides de 16-bit à usage général. Les guides sont utiles pour la typographie, le graphisme et d'autres applications. - AG_Surface : Le bit AG_SURFACE_TRACE peut désormais être utilisé pour déboguer les opérations de surface tel que les transferts d'image (blits), les copies et conversions et le mappage aux ressources de widgets (nécessite --enable-debug-surfaces). - AG_Text : La liste des tailles de police standard est étendue à 32 tailles au total. Ajout des tailles fractionnaires pour toutes les tailles entre 7,0 et 13,0. - AG_Text : Le moteur de texte opère désormais des ajustements des sous-pixels spécifiques à chaque taille standard et style. Le tableau couvre maintenant plus de 150 polices populaires. Ces ajustements permettent à différentes polices de s'aligner avec une précision au pixel près. - AG_Text : Ajout des métriques OS/2 et des informations de plage Unicode à la structure AG_Font. - AG_Text : Utilise les métriques OS/2 typoAscender et typoDescender lorsque elles sont disponible. - AG_Text : Nouvelles macros AGSI_IS_*(c) pour tester si un caractère se trouve dans une plage Unicode donnée. - AG_Text : Nouvelles macros AG_FONT_HAS_*() pour tester la couverture Unicode d'une police de caractères. - AG_Text : Nouvelle structure AG_UnicodeRange et une table complète de plages Unicode agUnicodeRanges[]. - AG_Text : Nouvelle table agUnicodeRangeFromOS2[] pour mapper les bits de couverture Unicode OS/2 à un index dans la table agUnicodeRanges[]. - AG_Text : Nouvelles fonctions AG_FontGetStandardSize() et AG_FontGetStandardSizeIndex() pour trouver la taille de point standard le plus proche d'une taille de police donnée. - AG_Text : La surface renvoyée par AG_TextRender() inclut désormais de l'information sur l'ascension effective utilisé par le moteur de texte dans le Guide de Surface 0. - AG_Text : Nouvelle fonction AG_TextRenderRTL() pour le rendu du texte de droite à gauche. - AG_Text : Nouvelle fonction AG_FetchFontFromList() pour charger la première police disponible dans une liste séparée par des virgules. - AG_Text : Nouvelles fonctions AG_FontGetStyleName() et AG_FontGetStyleByName() pour effectuer la conversion entre une représentation numérique et représentation texte d'un style de police (y compris le Style, le Poids et la Variante de Largeur). - AG_Text : Nouvelle fonction AG_FontGetFamilyStyles(). Renvoie un tableau de styles numériques de police décrivant chaque variante de style, de poids et de largeur disponibles dans une famille de polices donnée. - AG_Text : Nouvelle fonction AG_TextRenderCropped(). Recadre la surface au contenu du texte rendu. Cette opération laisse les pixels recadrés (tout transparents) en mémoire. Utile pour condenser ou supprimer les espacements typographiques afin que les glyphes (par exemple "Formes géométriques") puissent être alignés avec précision à l'intérieur de contrôles de widgets. - AG_Textbox / AG_Editable : Nouvelle fonctionnalité Annuler / Rétablir. - AG_Textbox / AG_Editable : Permettre à AG_Textbox (et tout autre widget conteneur) la gestion du découpage afin que le texte puisse déborder du AG_Editable mais tout en demeurant à l'intérieur de la zone de rembourrage du widget conteneur. - AG_Editable : Nouvelle option NO_CLIPPING pour autoriser le débordement au-delà de la zone allouée du widget (pour les widgets conteneurs qui implémentent leur propre découpage). - AG_Tlist : Afficher des lignes pour exprimer la relation entre les éléments de l'arbre. - AG_Tlist : Nouvelle fonction AG_TlistScrollToSelection(). - AG_Tlist : Nouvelle option AG_TLIST_EXPAND_NODES. Attribuer initialement l'état Expansé aux noeuds d'affichage (éléments avec enfants). - AG_Tlist : Nouvelle option AG_TLIST_NO_SCALE_ICON. Désactiver la mise à l'échelle des icônes lorsque la largeur de l'icône dépasse la largeur standard. - AG_Tlist : Nouvelle option AG_TLIST_FIXED_HEIGHT. Ne pas réinitialiser la hauteur des éléments en réponse à un événement "font-changed". - AG_Tlist : Nouvelles options AG_TLIST_NO_LINES et AG_TLIST_NO_BGLINES. Désactiver les lignes reliant les noeuds ou les lignes d'arrière-plan. - AG_Tlist : Nouvel indicateur d'élément AG_TLIST_ITEM_DISABLED. Permet de désactiver des éléments individuellement (empêche la sélection et l'affichage à l'état "désactivé".. - AG_Tlist : Améliorations de la navigation au clavier. Les touches DROITE/GAUCHE peuvent Développer/Réduire les éléments de noeud. - AG_Event : Nouvelle macro AG_EVENT_DUMP pour produire un listing des arguments argv[] sur la console. - AG_Widget : Nouvelle option AG_WIDGET_DISABLE_ON_ATTACH et fonctions AG_PushDisabledState() / AG_PopDisabledState(). Met automatiquement les widgets enfants nouvellements attachées en mode DISABLED (sans déclencher l'événement "widget-disabled"). - AG_Widget : Nouvel événement "padding-changed" émit par le compilateur de pour signaler un changement au niveau du rembourrage. - MAP : De nouveaux objets cartographiques dynamiques avec MAP_Object. Ces objets coexistent avec les éléments de carte statiques et sont intégrés aux éléments sérialisés de la carte. Les noeuds font référence aux instances d'objets dynamiques par le biais d'une structure intermédiaire (MAP_Location). Celle-ci ajoute des bits d'option, la coordonnée z, hauteur, l'index de couche et des pointeurs vers les éléments voisins immédiats). Plusieurs noeuds peuvent faire référence à un MAP_Object donné. - MAP : Nouvel outil d'insertion d'objet cartographique (InsertObj). - MAP : Nouvelles fonctions MAP_DuplicateLocation(), MAP_NodeDelLocation() et MAP_NodeDelLocationAtIndex(). - MAP : Ajout des attributs de hauteur (h) et de coordonnée z (z) à MAP_Item. Introduction des nouvelles classes MAP_Item. - MAP : Ajout de l'annulation/rétablissement et du tampon d'historique à l'éditeur de carte. Nouvelle fonction MAP_ClearHistory(). - MAP : Ajout de tests de validité à MAP_Node et MAP_Item. - MAP : Ajout d'une bibliothèque persistante à l'éditeur de carte. Le pointeur pLibs de MAP peut être utilisé pour spécifier un autre AG_Object comme racine VFS pour cette bibliothèque. De même, pMaps peut être utilisé pour spécifier une autre racine VFS pour les cartes en mémoire. - agartest : Nouvelle surface de module test/benchmark pour tester les conversions et les opérations pixel/surface entre différentes surfaces de différents modes et formats. - agartest : Nouvelle option de ligne de commande -D (activer le débogage). - agartest : Nouveau programme d'installation install-agartest.exe pour Windows. - Les copies de l'OFL sont désormais fournis sous forme de fichiers séparés (OFL11.txt et LICENCE.ofl). - Une copie des définitions Makefile.config (généré par configure) est désormais installée sous ${DATADIR}/agar.mk. - Une copie de configure.lua (généré par configure) est désormais installée sous ${DATADIR}/agar.lua. - Nouvelle option de compilation DEBUG_MOUSE (débogage des événements de souris). - Nouveaux fichiers de syntaxe Vim (sous le répertoire syntax/). Ces fichiers de syntaxe incluent des définitions pour tous les types et constantes d'Agar. - Nouvelles polices bitmap : Agar Minimal et Agar Ideograms. Supprimé ======== - AG_Surface : Suppression de l'argument fn de la famille de fonctions AG_SurfaceBlend*(). Des arithmétiques de mélange alternatives peuvent être implémentées plus efficacement par des fonctions distinctes. - AG_Object : Dépréciation de AG_ObjectPage{In,Out}() et des flags d'option inutilisés AG_OBJECT_FLOATING_VARS, AG_OBJECT_NON_PERSISTENT, AG_OBJECT_RESIDENT, AG_OBJECT_REOPEN_ONLOAD, AG_OBJECT_REMAIN_DATA et AG_OBJECT_CHLD_AUTOSAVE. - AG_Text : Dépréciation de AG_UnusedFont() et suppression du compteur de références de AG_Font. Modifié ======= - Ctrl + Molette de la souris peut maintenant être utilisé pour changer le niveau de zoom sur un fenêtre. - Mise à jour du système de construction. Les scripts de configuration BSDBuild sont plus petits et n'émet plus de définitions inutiles comme foo_cflags.h pour les bibliothèques dépendantes. Ces définitions sont toujours disponibles à partir de ${DATADIR}/agar.mk. - N'installe plus les en-têtes des bibliothèques désactivées de la compilation (par --disable-foo). - AG_Color : Gestion du format rgb16() dans AG_ColorFromString(). - AG_Combo : Les fenêtres d'expansion sont maintenant détachables et redimensionnables. - AG_Combo : Les widgets enfant sont maintenant adressables en tant que "input" et "trigger". - AG_FontSelector : L'onglet "Métriques" affiche plus d'informations sur la plage Unicode et d'autres métriques. - AG_FontSelector : La fonction de prévisualisation inclut du texte dans différents scripts. Il est maintenant aussi possible de spécifier une fonction de prévisualisation définie par l'utilisateur. - AG_Object : Amélioration de l'efficacité du test de validité Objet grâce à une signature pseudo-aléatoire générée à l'initialisation. Il est maintenant possible d'effectuer des tests de validité et d'adhésion de classe en dehors de la version de débogage. - AG_Object : Les macros d'accès aux arguments d'événement de la forme AG_CONST_FOO_PTR() sont maintenant définis comme AG_cFOO_PTR(). - AG_Object : Dans AG_ObjectGenName(), convertir le préfixe (nom de la classe) en minuscule dans son intégralité. - AG_Object : Avec l'option AG_OBJECT_NAME_ONATTACH, ne pas générer de nom si l'objet est déjà nommé. - AG_Printf : Lors du formatage en virgule flottante, gérer l'infini positif et infini négatif. - AG_Surface : Remplacement de PixelsPerByte par PixelsPerByteShift pour permettre une arithmétique plus efficace lors de la manipulation de surfaces < 8-bpp. - AG_Surface : Dans AG_SurfaceCopy(), utiliser une copie de bloc pour les copies entre formats 8-bpp compatibles. - AG_Surface : Dans AG_SurfaceCopy(), ajouter un cas optimisé pour les sources surfaces en <= 8-bpp. - AG_Surface : Dans AG_SurfaceCopy(), ajouter un cas optimisé pour les surfaces source en niveaux de gris. - AG_Tlist : Amélioration de l'apparence et des corrections au niveau de la typographie. Amélioration des performances du moteur de rendu. Grâce à l'utilisation de surfaces opaques (dépendantes de l'état du widget), la fonction draw() n'a plus besoin d'effectuer de mélange alpha. - AG_Tlist : Applique désormais l'attribut "padding" à chaque élément de la liste. - AG_Tlist : AG_TlistSetCompareFn() retourne maintenant un pointeur vers la précédente fonction de comparaison. - AG_Tlist : La fonction de comparaison de AG_TlistSort() est maintenant ANSI-compatible. Celle-ci ignore désormais les séquences ANSI SGR ainsi que les caractères Unicode qui se situent à l'intérieur d'une plage idéogrammatique. - AG_UCombo : Les fenêtres d'expansion sont maintenant détachables et redimensionnables. - AG_UCombo : Le bouton est maintenant addressable en tant que "trigger". - AG_Widget : Dans AG_WidgetSensitive(), utiliser le pointeur de fenêtre pour éviter une traversée inutile des objets parents. - AG_Widget : Empêcher l'émission d'evénements "widget-shown" redondants ou d'événements "widget-hidden" si AG_WidgetShow() et AG_WidgetHide() sont appelées multiples fois. - MAP : Amélioration des performances en mode multithread. Découplage de l'allocation mémoire des noeuds du verrou MAP. Supprimé quelques opérations de verrouillage redondantes. Supprimé le verrou dans MAP_NodeCopy(). - MAP : Remplacement de MAP_NodeRemoveAll() par MAP_NodeClear(). Nouveau chemin rapide pour optimiser la suppression des noeuds où l'index de couche est -1 (toutes). - MAP : MAP_NodeSwapLayers() nécessite maintenant le verrouillage de la carte par l'appelant. Corrigé ======= - Définir GL_SILENCE_DEPRECATION sous MacOS. Merci Gaétan Brouilles! - Correction d'un test obsolète pour Cygwin. Merci Wally! - Correction d'un problème de compilation avec core/dir.c sous NetBSD. - Correction d'un problème de compilation avec core/inline_byteswap.h et core/cpuinfo.c sur powerpc64. Merci Mark Linimon! - Correction des avertissements de conversion double <-> long dans math/m_sparse*. - wgl : Correction d'un bug dans la gestion du curseur. Lors de l'affichage initial d'une fenêtre, effectuer une allocation de taille *après* avoir initialisé les curseurs afin que les zones initiales de changement de curseur sont correctement établies. - install-sdk.exe installe maintenant les fichiers inclus dans include\x86 ou inclure\x64. - AG_Console : Ramasse (garbage-collect) les textures générées plus efficacement. - AG_HSVPal : Corrige une non-mise à jour de la couleur lors d'un changement de liaison "agcolor". - AG_Menu : Lorsqu'un AG_MenuView est détaché, invalider immédiatement les pointeurs "view" de son AG_MenuItem. - AG_Menu : Correction des erreurs de style. Honorer l'état #disabled. - AG_Numerical : Corrigé des erreurs de style. Utiliser AG_BUTTON_CROP pour aligner les flèches. Les boutons sont maintenant adressables par le moteur de style. Merci Kristof! - AG_Surface : Correction du chargement des fichiers PNG au format 16bpc (la surface n'était pas initialisée avec les masques 64-bit corrects). Corrige une erreur dans la traduction de l'attribut colorkey lors du chargement d'un PNG dans un format Indexé. - AG_Surface : Corrige la conversion entre le format Indexé / Niveaux de Gris et les autre modes. - AG_Surface : Corrige la conversion entre les formats 64-bpp et tous les autres modes. - AG_Surface : Honorer le rembourrage dans AG_SurfaceFromPixelsRGB() et AG_SurfaceFromPixelsRGBA(). - AG_Surface : AG_MapPixelIndexed() utilise désormais la méthode par distance euclidienne. - AG_Table : Correction d'un off-by-one qui provoquait un non-changement de curseur dans la zone de redimensionnement des colonnes de la table. - AG_Text : AG_SetDefaultFont() prend maintenant effet immédiatement. - AG_Textbox, AG_Editable et AG_Console : Correction de la fonction défilement horizontal (Maj + molette de la souris). - AG_Titlebar : Utiliser AG_BUTTON_CROP pour aligner les étiquettes des boutons de la fenêtre avec précision. - AG_Widget : Corrige une non-livraison des événements si le bouton de la souris demeure enfoncé lorsque les widgets sont cachés et réaffichés par la suite (comme le cas des widgets sous un Notebook). Merci Wally! - AG_Widget : Émet désormais un événement "widget-hidden" lors d'un détachement d'un widget attaché à une fenêtre visible. - AG_Widget : Dans AG_WidgetSizeAlloc(), définir correctement le flag UNDERSIZE au retour dans le cas où size_allocate() est hérité d'une classe parente. - AG_Window : Correction d'une fuite mémoire en mode mono-fenêtre (le curseur de redimensionnement). - AG_Window : Correction d'une erreur visuelle d'un pixel avec le côté gauche des contrôles de redimensionnement de fenêtre en mode mono- fenêtre. - MAP : Ajout d'opérations de verrouillage dans MAP_AddCamera(), MAP_PushLayer() et MAP_PopLayer(). Correction de fuites de mémoire. - MAP : Correction d'un crash lors de la poussée de nouvelles couches dans l'Éditeur.