#include static int PhotoTrans(clientdata, interp, argc, argv) ClientData clientdata; Tcl_Interp *interp; int argc; char **argv; { Tk_PhotoHandle si,di; XColor *col; int r,g,b; Tk_PhotoImageBlock src,dst; int i,j; if (argc!=4) { Tcl_AppendResult(interp, "usage: ", argv[0], " destImage srcImage transColour", (char *) NULL); return TCL_ERROR; } si = Tk_FindPhoto(argv[2]); di = Tk_FindPhoto(argv[1]); if (si == NULL || di == NULL) { Tcl_AppendResult(interp, "both source and destination images " "must exist", (char *) NULL); return TCL_ERROR; } col = Tk_GetColor(interp, Tk_MainWindow(interp), argv[3]); if (col == NULL) { Tcl_AppendResult(interp, "unable to parse colour", (char *) NULL); return TCL_ERROR; } r=col->red>>8; g=col->green>>8; b=col->blue>>8; Tk_FreeColor(col); Tk_PhotoBlank(di); Tk_PhotoGetImage(si, &src); dst.width = 1; dst.height = 1; dst.pitch = src.pitch; dst.pixelSize = src.pixelSize; dst.offset[0] = src.offset[0]; dst.offset[1] = src.offset[1]; dst.offset[2] = src.offset[2]; #define readsrc(x,y,f) \ (src.pixelPtr[(x)*src.pixelSize + (y)*src.pitch + src.offset[(f)]]) for (i=0; i