Any current contents is lost.
The write file commands uses any dict keys it knows.
Any unknown dict keys are ignored.
## C interface
Two new stub table functions are added:
Tcl_Obj * Tk_PhotoGetMetadata(Tk_PhotoHandle handle)
void Tk_PhotoSetMetadata(Tk_PhotoHandle handle, Tcl_Obj *metadata)
This works well for image read. The function "Tk_PhotoSetMetadata" is called within the image read function.
................................................................................
static int CommonWriteGIF(Tcl_Interp *interp,
const char *fileName,
WriteBytesFunc *writeProc,
Tcl_Obj *format,
Tk_PhotoImageBlock *blockPtr);
In consequence, the write function should be extended by the metadata object pointer.
# ImplementationThe current implementation is only a sketch in my brain.I hope, that an image handler can set the options after reading and a binary extension of the image handlers is not necessary.Nevertheless, I don't know jet.Any help and comments are appreciated.I am realy a novice here.Implementation may start soon with the tag tip-529-image-metadata.# Rejected alternatives
# Copyright
This document has been placed in the public domain.

Any current contents is lost.
The write file commands uses any dict keys it knows.
Any unknown dict keys are ignored.
## C interface
The current C interface for drivers and other programs is not sufficient to support the metadata dict.A new extensible interface is envisaged with: * a pair of functions to get or set all options of the image. * a new driver interface to basically only pass the command. * and a compatibility layer to the current driver interfaceThere are currently functions to access the raster data (Tk_PhotoGetImage, Tk_PhotoPutBlock).The other properties (-file, -data, -format, -gamma) are not exposed.A new interface may also be used for other image formats like svg where the image data consists of the rastered image, the image data and metadata.In this case, an image save operation might even not use the raster data but only metadata and image data.### image property get and set functionsTwo new stub table functions are added: Tcl_Obj * Tk_PhotoGetOption(Tk_PhotoHandle handle, char *OptionName) void Tk_PhotoSetOption(Tk_PhotoHandle handle, char *OptionName, Tcl_Obj *optionValue)### Revised image driver commandsThe new command interface only passes the image handle. Any required data may be accquired by the get/set functions. Also, access to the raster data is done by the raster access functions.The current registration function is Tk_CreatePhotoImageFormat()...# ImplementationThe current implementation is only a sketch in my brain.I hope, that an image handler can set the options after reading and a binary extension of the image handlers is not necessary.Nevertheless, I don't know jet.Any help and comments are appreciated.I am realy a novice here.Implementation may start soon with the tag tip-529-image-metadata.# Rejected alternatives## C interface: only use metadata dict get and set functions
Two new stub table functions are added:
Tcl_Obj * Tk_PhotoGetMetadata(Tk_PhotoHandle handle)
void Tk_PhotoSetMetadata(Tk_PhotoHandle handle, Tcl_Obj *metadata)
This works well for image read. The function "Tk_PhotoSetMetadata" is called within the image read function.
................................................................................
static int CommonWriteGIF(Tcl_Interp *interp,
const char *fileName,
WriteBytesFunc *writeProc,
Tcl_Obj *format,
Tk_PhotoImageBlock *blockPtr);
In consequence, the write function should be extended by the metadata object pointer.
# Copyright
This document has been placed in the public domain.