/usr/share/gnudatalanguage/coyote/cgimageinfodescribevalues.pro is in gdl-coyote 2016.11.13-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 | ;========================================================================
; :Author: Matt Savoie <savoie@nsidc.org>
;
; Created 05/18/2011
;
;******************************************************************************************;
; Copyright (c) 2011, by Fanning Software Consulting, Inc. ;
; All rights reserved. ;
; ;
; Redistribution and use in source and binary forms, with or without ;
; modification, are permitted provided that the following conditions are met: ;
; ;
; * Redistributions of source code must retain the above copyright ;
; notice, this list of conditions and the following disclaimer. ;
; * Redistributions in binary form must reproduce the above copyright ;
; notice, this list of conditions and the following disclaimer in the ;
; documentation and/or other materials provided with the distribution. ;
; * Neither the name of Fanning Software Consulting, Inc. nor the names of its ;
; contributors may be used to endorse or promote products derived from this ;
; software without specific prior written permission. ;
; ;
; THIS SOFTWARE IS PROVIDED BY FANNING SOFTWARE CONSULTING, INC. ''AS IS'' AND ANY ;
; EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES ;
; OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT ;
; SHALL FANNING SOFTWARE CONSULTING, INC. BE LIABLE FOR ANY DIRECT, INDIRECT, ;
; INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED ;
; TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; ;
; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ;
; ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ;
; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS ;
; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ;
;******************************************************************************************;
;========================================================================*/
;
; Display information about an image at a given location
;
; :Params:
; image: in, required, type=image
; A 2D or 3D image array
; id: in, required, type=string
; Prefix to display when showing information about the image.
; xpixel: in, required, type=int
; The X location on the image to fetch information from
; ypixel: in, required, type=int
; The y location on the image to fetch information from
;
;
pro cgDescribeThisImgValues, image, id, xpixel, ypixel
COMPILE_OPT idl2, logical_predicate
dims = Size( image, /Dimensions )
trueIndex = Where( dims EQ 3 )
;; I guess a legit dimension could be three, too, but I
;; don't know what to do in that case.
IF N_Elements( trueIndex ) GT 1 THEN $
Message, 'Dude. This is one strange image! Returning.'
IF trueIndex[ 0 ] EQ -1 THEN BEGIN
value = image[ xpixel, ypixel ]
IF Size( value, /TNAME ) EQ 'BYTE' THEN value = Fix( value )
Print, id +' (' + StrTrim( xpixel, 2 ) + ',' + StrTrim( ypixel, 2 ) + ') is ', StrTrim( value, 2 )
ENDIF ELSE BEGIN
;; 3D image processing here.
CASE trueindex[ 0 ] OF
0: rgb = image[ *, xpixel, ypixel ]
1: rgb = image[ xpixel, *, ypixel ]
2: rgb = image[ xpixel, ypixel, * ]
ENDCASE
IF Size( rgb, /TNAME ) EQ 'BYTE' THEN rgb = Fix( rgb )
value = '[' + StrTrim( rgb[ 0 ], 2 ) + ', ' + StrTrim( rgb[ 1 ], 2 ) + ', ' + StrTrim( rgb[ 2 ], 2 ) + ']'
Print, id + ' (' + StrTrim( xpixel, 2 ) + ',' + StrTrim( ypixel, 2 ) + ') is ' + value
ENDELSE
end
;+
; Provide information about the selected xy-pixel from an image, or a hash of
; images.
;
; :Params:
; iimage: in, required, type=image
; A 2D or 3D image array
; xpixel: in, required, type=int
; The X location on the image to fetch information from
; ypixel: in, required, type=int
; The y location on the image to fetch information from
; hsh: in, optional, type=HASH
; If a valid HASH, it should contain key/Image (string/array) pairs that
; will be described.
;
;-
pro cgImageInfoDescribeValues, iimage, xpixel, ypixel, hsh
compile_opt idl2, logical_predicate
;; If you've got a hash of images, display the information for those.
IF obj_valid( hsh ) && obj_isa( hsh, 'HASH' ) THEN BEGIN
keys = hsh -> keys( )
FOR k = 0, n_elements( keys ) - 1 DO BEGIN
image = hsh[ keys[ k ] ]
cgDescribeThisImgValues, image, keys[ k ], xpixel, ypixel
ENDFOR
ENDIF ELSE BEGIN
;; This was just a plain image input so use it.
cgDescribeThisImgValues, iimage, 'Value at ', xpixel, ypixel
ENDELSE
END
|