This file is indexed.

/usr/share/gnudatalanguage/lib/write_png.pro is in libgnudatalanguage0 0.9.7-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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
;+
;
; NAME: WRITE_PNG
;
; PURPOSE: write a image from memory to a bitmap
;
; CATEGORY: Images (IO)
;
; CALLING SEQUENCE: 
;    WRITE_PNG, filename, image, red, green, blue, $
;               order=order, transparent=transparent, $
;               test=test, verbose=verbose, help=help, debug=debug
;
; KEYWORD PARAMETERS: 
;     ORDER      : 1 = top-bottom, 0 = bottom-top
;     VERBOSE    : Not Used
;     TRANSPARENT: 
;           
;
; OPTIONAL INPUTS: For pseudocolor only
;        red  : the Red colormap vector (for PseudoColor images)
;        green: the Green colormap vector (for PseudoColor images)
;        blue : the Blue colormap vector (for PseudoColor images)
;
; RESTRICTIONS:
;         Requires ImageMagick or GraphicsMagick (this is tested)
;
; PROCEDURE:
;         Use ImageMagick to write the data as requested
;
; EXAMPLE: 
;         See "image_test.pro" in testsuite/
;
; MODIFICATION HISTORY:
;  Written by: Christopher Lee 2004-05-28
;
;  JMG 08/30/06
;    Implement /ORDER keyword
;    Switch blue & red in TRANSPOSE statements
;    Implement greyscale PNG if BYTE input
;
;  Modifications by Alain Coulais 09-Aug-2012:
;  - now  /order should be active not only for 2D images !
;  - 2D images can be writen (but not the best way today :(
;  (help welcome, same problem than in WRITE_JPEG)
; 
;  Modifications by Alain Coulais 17-Jul-2013:
;  -correcting bug 553 (color mixing in 2D+RBG)
;  test case: next image must be red !!
;  WRITE_PNG,'test.png', DIST(256), INDGEN(256), INTARR(256), INTARR(256)
; 
;-
; LICENCE:
; Copyright (C) 2004, 2011, 2012: CL, JMG, AC
; This program is free software; you can redistribute it and/or modify  
; it under the terms of the GNU General Public License as published by  
; the Free Software Foundation; either version 2 of the License, or     
; (at your option) any later version.                                   
;
;-
;
pro WRITE_PNG, filename, image, red, green, blue, $
               order=order, transparent=transparent, $
               verbose=verbose, help=help, test=test, debug=debug
;
; this line allows to compile also in IDL ...
FORWARD_FUNCTION MAGICK_EXISTS, MAGICK_PING, MAGICK_READ
;
;if ~KEYWORD_SET(debug) then ON_ERROR, 2
;
if KEYWORD_SET(help) then begin
    print, 'pro WRITE_PNG, filename, image, red, green, blue, $'
    print, '               order=order, transparent=transparent, $'
    print, '               verbose=verbose, help=help, test=test, debug=debug'
    return
endif
;
; Do we have access to ImageMagick functionnalities ??
;
if (MAGICK_EXISTS() EQ 0) then begin
    MESSAGE, /continue, "GDL was compiled without ImageMagick support."
    MESSAGE, "You must have ImageMagick support to use this functionaly."
endif
;
rgb = 1
;
nb_dims=SIZE(image, /n_dimensions)
;
if (nb_dims LT 2) OR (nb_dims GT 3) then begin
   MESSAGE, "Image array must be (n,m) or (1-4,n,m)."
endif
;
im_size=SIZE(image,/dimensions)
;
; basic init, to be change for 3D case !
if (nb_dims EQ 2) then nb_channels=1  ;;(pure 2D image)
;
if (nb_dims EQ 3) then begin
   if (im_size[0] GT 4) then begin
      MESSAGE, "Image array must be (n,m) or (1-4,n,m)."
   endif
   nb_channels=im_size[0]
endif
;
sz = SIZE(image)
ty = sz[sz[0]+1]
;
if KEYWORD_SET(verbose) then begin
   print, 'The dimension of the image to be written is : ', im_size
   print, 'Channel deep is : ', nb_channels
endif
;
if (nb_channels eq 1) then begin
   ;; pseudocolor
   if (N_PARAMS() lt 5) then TVLCT, red, green, blue, /get
   ;; If BYTE image then use greyscale
   if ((ty eq 1) and (N_PARAMS() eq 2)) then begin
      red   = BINDGEN(256)
      green = BINDGEN(256)
      blue  = BINDGEN(256)
   endif
   ;;
   ;;colorvectors provided
   mid=MAGICK_CREATE(im_size[0],im_size[1])
   if (n_elements(transparent) gt 0) then begin
      alpha=image*0+255
      for i=0,n_elements(transparent)-1 do alpha[where(image eq transparent[i])]=0
      _image=TRANSPOSE([[[red[image]]],[[green[image]]],[[blue[image]]],[[alpha]]],[2,0,1])
      MAGICK_MATTE, mid
   endif else begin
      _image=TRANSPOSE([[[red[image]]],$
                        [[green[image]]],$
                        [[blue[image]]]],$
                       [2,0,1])
   endelse
   ;;
   MAGICK_WRITECOLORTABLE, mid, red, green, blue
   MAGICK_WRITE, mid, _image, rgb=rgb
   if (KEYWORD_SET(order)) then MAGICK_FLIP, mid
   MAGICK_WRITEFILE, mid, filename, "PNG"
   MAGICK_CLOSE, mid
   return
endif
;
; usual 3D case [3,N,M]
;
if(nb_channels EQ 3) then begin
   mid=MAGICK_CREATE(im_size[1],im_size[2])
   MAGICK_WRITE, mid, image, rgb=rgb
   if (KEYWORD_SET(order)) then MAGICK_FLIP, mid
   MAGICK_WRITEFILE, mid, filename,"PNG"
   MAGICK_CLOSE, mid
   return
endif
;
; transparent 3D case [2,N,M] or [4,N,M]
;
if (nb_channels EQ 4) then begin
   mid=MAGICK_CREATE(im_size[1],im_size[2])
   MAGICK_MATTE, mid
   MAGICK_WRITE, mid, image, rgb=rgb
   if (KEYWORD_SET(order)) then MAGICK_FLIP, mid
   MAGICK_WRITEFILE, mid, filename, "PNG"
   MAGICK_CLOSE, mid
   return
endif
if (nb_channels EQ 2) then begin
   mid=MAGICK_CREATE(im_size[1],im_size[2])
   MAGICK_MATTE, mid
   MAGICK_WRITE, mid, image
   if (KEYWORD_SET(order)) then MAGICK_FLIP, mid
   MAGICK_WRITEFILE, mid, filename, "PNG"
   MAGICK_CLOSE, mid
   return
endif
;
if KEYWORD_SET(test) OR KEYWORD_SET(debug) then STOP
;
end