Index: tip/529.md ================================================================== --- tip/529.md +++ tip/529.md @@ -83,10 +83,57 @@ 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 interface + +There 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 functions + +Two 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 commands + +The 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() + +... + + +# Implementation + +The 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) @@ -100,24 +147,9 @@ WriteBytesFunc *writeProc, Tcl_Obj *format, Tk_PhotoImageBlock *blockPtr); In consequence, the write function should be extended by the metadata object pointer. - -# Implementation - -The 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.