diff options
author | jan.nijtmans <nijtmans@users.sourceforge.net> | 2021-12-08 11:48:59 (GMT) |
---|---|---|
committer | jan.nijtmans <nijtmans@users.sourceforge.net> | 2021-12-08 11:48:59 (GMT) |
commit | e6de00f4823760bf7cf727e016403825af69e1ae (patch) | |
tree | f11fd5a5fe31dc7e8316eca6a811acbc669b8d27 /generic/tkImgPhoto.c | |
parent | 913c69580dcdb692f84f8d4235a4c73b3c026c39 (diff) | |
parent | 98ca1fc00fa7d5b8ab24e8630ac36d932fa79776 (diff) | |
download | tk-e6de00f4823760bf7cf727e016403825af69e1ae.zip tk-e6de00f4823760bf7cf727e016403825af69e1ae.tar.gz tk-e6de00f4823760bf7cf727e016403825af69e1ae.tar.bz2 |
Merge 8.6
Diffstat (limited to 'generic/tkImgPhoto.c')
-rw-r--r-- | generic/tkImgPhoto.c | 28 |
1 files changed, 17 insertions, 11 deletions
diff --git a/generic/tkImgPhoto.c b/generic/tkImgPhoto.c index e18af43..7f3f228 100644 --- a/generic/tkImgPhoto.c +++ b/generic/tkImgPhoto.c @@ -712,15 +712,19 @@ ImgPhotoCmd( * Copy the image data over using Tk_PhotoPutZoomedBlock. */ - block.pixelPtr += options.fromX * block.pixelSize - + options.fromY * block.pitch; - block.width = options.fromX2 - options.fromX; - block.height = options.fromY2 - options.fromY; - result = Tk_PhotoPutZoomedBlock(interp, (Tk_PhotoHandle) modelPtr, - &block, options.toX, options.toY, options.toX2 - options.toX, - options.toY2 - options.toY, options.zoomX, options.zoomY, - options.subsampleX, options.subsampleY, - options.compositingRule); + if (block.pixelPtr) { + block.pixelPtr += options.fromX * block.pixelSize + + options.fromY * block.pitch; + block.width = options.fromX2 - options.fromX; + block.height = options.fromY2 - options.fromY; + result = Tk_PhotoPutZoomedBlock(interp, (Tk_PhotoHandle) modelPtr, + &block, options.toX, options.toY, options.toX2 - options.toX, + options.toY2 - options.toY, options.zoomX, options.zoomY, + options.subsampleX, options.subsampleY, + options.compositingRule); + } else { + result = TCL_OK; + } /* * Set the destination image size if the -shrink option was specified. @@ -741,8 +745,10 @@ ImgPhotoCmd( return TCL_ERROR; } } - Tk_ImageChanged(modelPtr->tkModel, 0, 0, 0, 0, - modelPtr->width, modelPtr->height); + if (block.pixelPtr || (options.options & OPT_SHRINK)) { + Tk_ImageChanged(modelPtr->tkModel, 0, 0, 0, 0, + modelPtr->width, modelPtr->height); + } if (options.background) { Tk_FreeColor(options.background); } |