Implémentation de IWICMetadataBlockWriter
IWICMetadataBlockWriter
La classe d’encodage au niveau de la trame implémente cette interface pour exposer tous les blocs de métadonnées et demander le writer de métadonnées approprié pour chaque bloc. Si votre format d’image prend en charge les métadonnées globales, en dehors de tout Frame individuel, vous devez également implémenter cette interface sur la classe de codeur au niveau du conteneur. Pour une présentation plus détaillée des gestionnaires de métadonnées, reportez-vous à la section du IWICMetadataBlockReader dans la section sur l’implémentation d’un décodeur de WIC-Enabled.
interface IWICMetadataBlockWriter : IWICMetadataBlockReader
{
// All methods required
HRESULT InitializeFromBlockReader ( IWICMetadataBlockReader *pIMDBlockReader );
HRESULT GetWriterByIndex ( UINT nIndex, IWICMetadataWriter **ppIMetadataWriter );
HRESULT AddWriter (IWICMetadataWriter *pIMetadataWriter );
HRESULT SetWriterByIndex ( UINT nIndex, IWICMetadataWriter *pIMetadataWriter );
HRESULT RemoveWriterByIndex ( UINT nIndex );
}
InitializeFromBlockReader
InitializeFromBlockReader utilise un IWICMetadataBlockReader pour initialiser le writer de bloc. Vous pouvez récupérer le IWICMetadataBlockReader à partir du décodeur qui a décodé l’image.
UINT blockCount = 0;
IWICMetadataReader* pMetadataReader = NULL;
IWICMetadataWriter** ppMetadataWriter = NULL;
HRESULT hr;
hr = m_pBlockReader->GetCount(&blockCount);
ppMetadataWriter = IWICMetadataWriter*[blockCount];
for (UINT x=0; x < blockCount; x++)
{
hr = m_pBlockReader->GetReaderByIndex(&pMetadataReader);
hr = m_pComponentFactory->CreateMetadataWriterFromReader(
pMetadataReader, NULL, &ppMetadataWriter[x]);
}
Étant donné que l’initialisation du IWICMetadataBlockWriter avec un IWICMetadataBlockReader instancie un writer de métadonnées pour chaque lecteur de métadonnées exposé par l’objet IWICMetadataBlockReader , l’application n’a pas besoin de demander explicitement un writer pour chaque bloc de métadonnées.
GetWriterByIndex
GetWriterByIndex retourne l’objet IWICMetadataWriter pour le nième bloc de métadonnées, où n est la valeur passée dans le paramètre nIndex . Si aucun enregistreur de métadonnées inscrit ne peut gérer le type de métadonnées dans le bloc nième, la fabrique de composants retourne le gestionnaire de métadonnées inconnu, qui traite le bloc de métadonnées comme un objet BLOB (Binary Large Object). Il le sérialise comme un flux binaire sans tenter de l’analyser.
AddWriter
AddWriter permet à un appelant d’ajouter un nouveau générateur de métadonnées. Cela est obligatoire si une application souhaite ajouter des métadonnées d’un format différent de celui des blocs de métadonnées existants. Par exemple, une application peut souhaiter ajouter des métadonnées XMP. S’il n’existe aucun bloc de métadonnées XMP existant, l’application doit instancier un enregistreur de métadonnées XMP et utiliser la méthode AddWriter pour l’inclure dans la collection de Writers de métadonnées.
SetWriterByIndex
SetWriterByIndex est utilisé pour ajouter un enregistreur de métadonnées à un index spécifique dans la collection. Si un enregistreur de métadonnées existe actuellement à cet index, le nouveau doit le remplacer.
RemoveWriterByIndex
RemoveWriterByIndex est utilisé pour supprimer un enregistreur de métadonnées de la collection.