Linux ip-172-26-7-228 5.4.0-1103-aws #111~18.04.1-Ubuntu SMP Tue May 23 20:04:10 UTC 2023 x86_64
Apache
: 172.26.7.228 | : 3.17.166.233
Cant Read [ /etc/named.conf ]
5.6.40-24+ubuntu18.04.1+deb.sury.org+1
www-data
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
HASH IDENTIFIER
README
+ Create Folder
+ Create File
/
home /
ubuntu /
ImageMagick-7.0.10-22 /
MagickCore /
[ HOME SHELL ]
Name
Size
Permission
Action
.deps
[ DIR ]
drwxrwxr-x
.libs
[ DIR ]
drwxrwxr-x
.dirstamp
0
B
-rw-rw-r--
ImageMagick-7.Q16HDRI.pc
867
B
-rw-rw-r--
ImageMagick.pc
867
B
-rw-rw-r--
ImageMagick.pc.in
575
B
-rw-rw-r--
MagickCore-7.Q16HDRI.pc
916
B
-rw-rw-r--
MagickCore-config
1.5
KB
-rwxrwxr-x
MagickCore-config.1
1.85
KB
-rw-rw-r--
MagickCore-config.in
1.57
KB
-rw-rw-r--
MagickCore.h
4.94
KB
-rw-rw-r--
MagickCore.pc
916
B
-rw-rw-r--
MagickCore.pc.in
688
B
-rw-rw-r--
Makefile.am
14.76
KB
-rw-rw-r--
accelerate-kernels-private.h
102.16
KB
-rw-rw-r--
accelerate-private.h
2.63
KB
-rw-rw-r--
accelerate.c
169.72
KB
-rw-rw-r--
animate-private.h
1.23
KB
-rw-rw-r--
animate.c
103.29
KB
-rw-rw-r--
animate.h
979
B
-rw-rw-r--
annotate-private.h
1022
B
-rw-rw-r--
annotate.c
71.69
KB
-rw-rw-r--
annotate.h
1.26
KB
-rw-rw-r--
artifact.c
18.74
KB
-rw-rw-r--
artifact.h
1.35
KB
-rw-rw-r--
attribute.c
69.33
KB
-rw-rw-r--
attribute.h
1.78
KB
-rw-rw-r--
blob-private.h
4.07
KB
-rw-rw-r--
blob.c
207.68
KB
-rw-rw-r--
blob.h
3.29
KB
-rw-rw-r--
cache-private.h
6.63
KB
-rw-rw-r--
cache-view.c
44.83
KB
-rw-rw-r--
cache-view.h
3.63
KB
-rw-rw-r--
cache.c
211.11
KB
-rw-rw-r--
cache.h
2.5
KB
-rw-rw-r--
channel.c
41.69
KB
-rw-rw-r--
channel.h
1.28
KB
-rw-rw-r--
cipher.c
40.58
KB
-rw-rw-r--
cipher.h
1.11
KB
-rw-rw-r--
client.c
7.37
KB
-rw-rw-r--
client.h
1.03
KB
-rw-rw-r--
coder-private.h
1005
B
-rw-rw-r--
coder.c
20.03
KB
-rw-rw-r--
coder.h
1.28
KB
-rw-rw-r--
color-private.h
2.28
KB
-rw-rw-r--
color.c
105.5
KB
-rw-rw-r--
color.h
2.22
KB
-rw-rw-r--
colormap-private.h
1.8
KB
-rw-rw-r--
colormap.c
13.3
KB
-rw-rw-r--
colormap.h
1.05
KB
-rw-rw-r--
colorspace-private.h
4.23
KB
-rw-rw-r--
colorspace.c
99.03
KB
-rw-rw-r--
colorspace.h
2.35
KB
-rw-rw-r--
compare.c
72.32
KB
-rw-rw-r--
compare.h
1.86
KB
-rw-rw-r--
composite-private.h
5.5
KB
-rw-rw-r--
composite.c
81.18
KB
-rw-rw-r--
composite.h
2.85
KB
-rw-rw-r--
compress.c
39.93
KB
-rw-rw-r--
compress.h
2.15
KB
-rw-rw-r--
configure-private.h
1019
B
-rw-rw-r--
configure.c
44.68
KB
-rw-rw-r--
configure.h
1.65
KB
-rw-rw-r--
constitute-private.h
890
B
-rw-rw-r--
constitute.c
50.54
KB
-rw-rw-r--
constitute.h
1.45
KB
-rw-rw-r--
decorate.c
31.1
KB
-rw-rw-r--
decorate.h
1.34
KB
-rw-rw-r--
delegate-private.h
2.16
KB
-rw-rw-r--
delegate.c
83.77
KB
-rw-rw-r--
delegate.h
1.98
KB
-rw-rw-r--
deprecate.c
13.45
KB
-rw-rw-r--
deprecate.h
1.21
KB
-rw-rw-r--
display-private.h
1.24
KB
-rw-rw-r--
display.c
515.56
KB
-rw-rw-r--
display.h
1.05
KB
-rw-rw-r--
distort.c
134.29
KB
-rw-rw-r--
distort.h
2.65
KB
-rw-rw-r--
distribute-cache-private.h
2.24
KB
-rw-rw-r--
distribute-cache.c
49.1
KB
-rw-rw-r--
distribute-cache.h
997
B
-rw-rw-r--
draw-private.h
2.1
KB
-rw-rw-r--
draw.c
245.29
KB
-rw-rw-r--
draw.h
5.55
KB
-rw-rw-r--
effect.c
125.86
KB
-rw-rw-r--
effect.h
2.85
KB
-rw-rw-r--
enhance.c
137.51
KB
-rw-rw-r--
enhance.h
2.32
KB
-rw-rw-r--
exception-private.h
3.18
KB
-rw-rw-r--
exception.c
44.49
KB
-rw-rw-r--
exception.h
4.35
KB
-rw-rw-r--
feature.c
83.79
KB
-rw-rw-r--
feature.h
1.7
KB
-rw-rw-r--
fourier.c
49.36
KB
-rw-rw-r--
fourier.h
1.38
KB
-rw-rw-r--
fx-private.h
1.21
KB
-rw-rw-r--
fx.c
87.87
KB
-rw-rw-r--
fx.h
956
B
-rw-rw-r--
gem-private.h
6.28
KB
-rw-rw-r--
gem.c
53.31
KB
-rw-rw-r--
gem.h
1.15
KB
-rw-rw-r--
geometry.c
55.44
KB
-rw-rw-r--
geometry.h
3.98
KB
-rw-rw-r--
histogram.c
39.72
KB
-rw-rw-r--
histogram.h
1.35
KB
-rw-rw-r--
identify.c
57.07
KB
-rw-rw-r--
identify.h
971
B
-rw-rw-r--
image-private.h
2.89
KB
-rw-rw-r--
image-view.c
42.98
KB
-rw-rw-r--
image-view.h
2.72
KB
-rw-rw-r--
image.c
142.86
KB
-rw-rw-r--
image.h
13.87
KB
-rw-rw-r--
layer.c
75.49
KB
-rw-rw-r--
layer.h
2
KB
-rw-rw-r--
libMagickCore-7.Q16HDRI.la
1.32
KB
-rw-rw-r--
libMagickCore.map
46
B
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-acc...
374
B
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-acc...
6.25
KB
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-ani...
365
B
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-ani...
245.7
KB
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-ann...
368
B
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-ann...
225.34
KB
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-art...
368
B
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-art...
57.34
KB
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-att...
371
B
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-att...
198.58
KB
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-blo...
356
B
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-blo...
559.89
KB
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-cac...
374
B
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-cac...
130.77
KB
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-cac...
359
B
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-cac...
575.03
KB
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-cha...
365
B
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-cha...
132.27
KB
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-cip...
362
B
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-cip...
99.63
KB
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-cli...
362
B
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-cli...
11.99
KB
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-cod...
359
B
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-cod...
48.66
KB
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-col...
359
B
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-col...
187.05
KB
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-col...
368
B
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-col...
64.29
KB
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-col...
374
B
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-col...
416.23
KB
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-com...
365
B
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-com...
244.2
KB
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-com...
371
B
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-com...
205.62
KB
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-com...
368
B
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-com...
116.91
KB
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-con...
371
B
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-con...
92.49
KB
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-con...
374
B
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-con...
134.21
KB
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-dec...
368
B
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-dec...
140.39
KB
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-del...
368
B
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-del...
181.88
KB
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-dep...
371
B
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-dep...
40.1
KB
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-dis...
365
B
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-dis...
1001.06
KB
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-dis...
365
B
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-dis...
257.94
KB
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-dis...
392
B
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-dis...
138.98
KB
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-dra...
356
B
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-dra...
629.21
KB
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-eff...
362
B
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-eff...
359.09
KB
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-enh...
365
B
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-enh...
435.72
KB
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-exc...
371
B
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-exc...
79.98
KB
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-fea...
365
B
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-fea...
231.75
KB
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-fou...
365
B
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-fou...
147.25
KB
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-fx....
350
B
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-fx....
285.02
KB
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-gem...
353
B
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-gem...
222.46
KB
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-geo...
368
B
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-geo...
111.41
KB
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-his...
371
B
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-his...
103.51
KB
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-ide...
368
B
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-ide...
183.14
KB
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-ima...
374
B
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-ima...
103.35
KB
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-ima...
359
B
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-ima...
311.29
KB
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-lay...
359
B
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-lay...
140.62
KB
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-lin...
377
B
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-lin...
41.23
KB
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-lis...
356
B
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-lis...
137.44
KB
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-loc...
362
B
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-loc...
93.1
KB
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-log...
353
B
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-log...
109.05
KB
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-mag...
359
B
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-mag...
54.52
KB
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-mag...
362
B
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-mag...
123.44
KB
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-mat...
362
B
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-mat...
90.06
KB
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-mem...
362
B
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-mem...
64.4
KB
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-mim...
356
B
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-mim...
69.73
KB
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-mod...
362
B
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-mod...
46.27
KB
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-mon...
365
B
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-mon...
37.7
KB
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-mon...
365
B
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-mon...
102.55
KB
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-mor...
374
B
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-mor...
249.84
KB
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-ope...
362
B
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-ope...
14.32
KB
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-opt...
362
B
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-opt...
238.09
KB
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-pai...
359
B
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-pai...
158.05
KB
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-pix...
359
B
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-pix...
1.12
MB
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-pol...
362
B
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-pol...
84.46
KB
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-pre...
368
B
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-pre...
50.55
KB
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-pro...
365
B
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-pro...
178.05
KB
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-pro...
368
B
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-pro...
375.58
KB
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-qua...
368
B
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-qua...
308.11
KB
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-qua...
386
B
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-qua...
886.72
KB
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-qua...
386
B
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-qua...
690.47
KB
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-qua...
365
B
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-qua...
93.22
KB
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-ran...
362
B
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-ran...
71.95
KB
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-reg...
368
B
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-reg...
58.8
KB
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-res...
368
B
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-res...
101.68
KB
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-res...
362
B
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-res...
484.14
KB
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-res...
368
B
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-res...
130.89
KB
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-seg...
365
B
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-seg...
137.09
KB
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-sem...
371
B
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-sem...
27.5
KB
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-she...
359
B
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-she...
209.97
KB
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-sig...
371
B
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-sig...
77.59
KB
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-spl...
374
B
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-spl...
71.54
KB
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-sta...
362
B
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-sta...
42.69
KB
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-sta...
371
B
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-sta...
361.96
KB
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-str...
362
B
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-str...
389.89
KB
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-str...
362
B
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-str...
145.78
KB
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-thr...
362
B
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-thr...
9.66
KB
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-thr...
371
B
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-thr...
223.15
KB
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-tim...
359
B
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-tim...
38.76
KB
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-tok...
359
B
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-tok...
220.66
KB
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-tra...
371
B
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-tra...
228.2
KB
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-typ...
356
B
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-typ...
88.52
KB
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-uti...
365
B
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-uti...
121.42
KB
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-ver...
365
B
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-ver...
27.84
KB
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-vis...
362
B
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-vis...
161.29
KB
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-vis...
386
B
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-vis...
490.88
KB
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-wid...
362
B
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-wid...
450.54
KB
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-xml...
368
B
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-xml...
166.75
KB
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-xwi...
365
B
-rw-rw-r--
libMagickCore_7_Q16HDRI_la-xwi...
641.91
KB
-rw-rw-r--
linked-list.c
33.55
KB
-rw-rw-r--
linked-list.h
1.92
KB
-rw-rw-r--
list.c
52.79
KB
-rw-rw-r--
list.h
2.3
KB
-rw-rw-r--
locale-private.h
1.35
KB
-rw-rw-r--
locale.c
58.89
KB
-rw-rw-r--
locale_.h
2.2
KB
-rw-rw-r--
log-private.h
1
KB
-rw-rw-r--
log.c
56.53
KB
-rw-rw-r--
log.h
2.73
KB
-rw-rw-r--
magic-private.h
999
B
-rw-rw-r--
magic.c
27.52
KB
-rw-rw-r--
magic.h
1.32
KB
-rw-rw-r--
magick-baseconfig.h
44.5
KB
-rw-rw-r--
magick-config.h
8.75
KB
-rw-rw-r--
magick-private.h
1.04
KB
-rw-rw-r--
magick-type.h
5.78
KB
-rw-rw-r--
magick.c
66.91
KB
-rw-rw-r--
magick.h
4.18
KB
-rw-rw-r--
matrix-private.h
1.1
KB
-rw-rw-r--
matrix.c
38.14
KB
-rw-rw-r--
matrix.h
1.53
KB
-rw-rw-r--
memory-private.h
1.49
KB
-rw-rw-r--
memory.c
51.43
KB
-rw-rw-r--
memory_.h
3.24
KB
-rw-rw-r--
method-attribute.h
4.03
KB
-rw-rw-r--
methods-private.h
0
B
-rw-rw-r--
methods.h
79.51
KB
-rw-rw-r--
mime-private.h
1.07
KB
-rw-rw-r--
mime.c
35.56
KB
-rw-rw-r--
mime.h
1.38
KB
-rw-rw-r--
module-private.h
1.05
KB
-rw-rw-r--
module.c
56.79
KB
-rw-rw-r--
module.h
1.99
KB
-rw-rw-r--
monitor-private.h
1023
B
-rw-rw-r--
monitor.c
10.83
KB
-rw-rw-r--
monitor.h
1.56
KB
-rw-rw-r--
montage.c
32.5
KB
-rw-rw-r--
montage.h
1.78
KB
-rw-rw-r--
morphology-private.h
1.17
KB
-rw-rw-r--
morphology.c
177.3
KB
-rw-rw-r--
morphology.h
4.45
KB
-rw-rw-r--
mutex.h
3.03
KB
-rw-rw-r--
nt-base-private.h
3.26
KB
-rw-rw-r--
nt-base.c
90.09
KB
-rw-rw-r--
nt-base.h
8.03
KB
-rw-rw-r--
nt-feature.c
13.72
KB
-rw-rw-r--
nt-feature.h
1.11
KB
-rw-rw-r--
opencl-private.h
14.79
KB
-rw-rw-r--
opencl.c
104.16
KB
-rw-rw-r--
opencl.h
1.98
KB
-rw-rw-r--
option-private.h
872
B
-rw-rw-r--
option.c
168.81
KB
-rw-rw-r--
option.h
6.26
KB
-rw-rw-r--
paint.c
42.91
KB
-rw-rw-r--
paint.h
1.62
KB
-rw-rw-r--
pixel-accessor.h
28.36
KB
-rw-rw-r--
pixel-private.h
869
B
-rw-rw-r--
pixel.c
202.86
KB
-rw-rw-r--
pixel.h
7.18
KB
-rw-rw-r--
policy-private.h
1.22
KB
-rw-rw-r--
policy.c
41.97
KB
-rw-rw-r--
policy.h
1.88
KB
-rw-rw-r--
prepress.c
6.08
KB
-rw-rw-r--
prepress.h
939
B
-rw-rw-r--
profile-private.h
984
B
-rw-rw-r--
profile.c
85.4
KB
-rw-rw-r--
profile.h
1.64
KB
-rw-rw-r--
property.c
148.71
KB
-rw-rw-r--
property.h
1.66
KB
-rw-rw-r--
quantize.c
133.36
KB
-rw-rw-r--
quantize.h
2.05
KB
-rw-rw-r--
quantum-export.c
124.46
KB
-rw-rw-r--
quantum-import.c
145.28
KB
-rw-rw-r--
quantum-private.h
19.37
KB
-rw-rw-r--
quantum.c
38.9
KB
-rw-rw-r--
quantum.h
5.1
KB
-rw-rw-r--
random-private.h
2.16
KB
-rw-rw-r--
random.c
33.01
KB
-rw-rw-r--
random_.h
1.49
KB
-rw-rw-r--
registry-private.h
1014
B
-rw-rw-r--
registry.c
18.63
KB
-rw-rw-r--
registry.h
1.41
KB
-rw-rw-r--
resample-private.h
2.21
KB
-rw-rw-r--
resample.c
56.74
KB
-rw-rw-r--
resample.h
2.72
KB
-rw-rw-r--
resize-private.h
2.02
KB
-rw-rw-r--
resize.c
149.98
KB
-rw-rw-r--
resize.h
1.71
KB
-rw-rw-r--
resource-private.h
1.11
KB
-rw-rw-r--
resource.c
47.74
KB
-rw-rw-r--
resource_.h
1.69
KB
-rw-rw-r--
segment.c
60.41
KB
-rw-rw-r--
segment.h
1.09
KB
-rw-rw-r--
semaphore-private.h
1009
B
-rw-rw-r--
semaphore.c
16.58
KB
-rw-rw-r--
semaphore.h
1.15
KB
-rw-rw-r--
shear.c
56.66
KB
-rw-rw-r--
shear.h
1.11
KB
-rw-rw-r--
signature-private.h
1.5
KB
-rw-rw-r--
signature.c
28.84
KB
-rw-rw-r--
signature.h
947
B
-rw-rw-r--
splay-tree.c
54.92
KB
-rw-rw-r--
splay-tree.h
1.98
KB
-rw-rw-r--
static.c
13.23
KB
-rw-rw-r--
static.h
10.11
KB
-rw-rw-r--
statistic.c
91.04
KB
-rw-rw-r--
statistic.h
4.25
KB
-rw-rw-r--
stream-private.h
1.04
KB
-rw-rw-r--
stream.c
97.33
KB
-rw-rw-r--
stream.h
1.57
KB
-rw-rw-r--
string-private.h
3.17
KB
-rw-rw-r--
string.c
90.27
KB
-rw-rw-r--
string_.h
3.61
KB
-rw-rw-r--
studio.h
9.23
KB
-rw-rw-r--
thread-private.h
3.87
KB
-rw-rw-r--
thread.c
9.62
KB
-rw-rw-r--
thread_.h
1.59
KB
-rw-rw-r--
threshold.c
81.92
KB
-rw-rw-r--
threshold.h
2.01
KB
-rw-rw-r--
timer-private.h
1.53
KB
-rw-rw-r--
timer.c
21.71
KB
-rw-rw-r--
timer.h
1.57
KB
-rw-rw-r--
token-private.h
4.27
KB
-rw-rw-r--
token.c
30.01
KB
-rw-rw-r--
token.h
1.48
KB
-rw-rw-r--
transform-private.h
997
B
-rw-rw-r--
transform.c
78.58
KB
-rw-rw-r--
transform.h
1.76
KB
-rw-rw-r--
type-private.h
1000
B
-rw-rw-r--
type.c
44.45
KB
-rw-rw-r--
type.h
1.94
KB
-rw-rw-r--
utility-private.h
7.37
KB
-rw-rw-r--
utility.c
60.19
KB
-rw-rw-r--
utility.h
1.62
KB
-rw-rw-r--
version-private.h
984
B
-rw-rw-r--
version.c
22.62
KB
-rw-rw-r--
version.h
3.02
KB
-rw-rw-r--
version.h.in
3.29
KB
-rw-rw-r--
vision.c
49.74
KB
-rw-rw-r--
vision.h
1.22
KB
-rw-rw-r--
visual-effects.c
122.12
KB
-rw-rw-r--
visual-effects.h
2.81
KB
-rw-rw-r--
widget-private.h
2.59
KB
-rw-rw-r--
widget.c
320.79
KB
-rw-rw-r--
widget.h
852
B
-rw-rw-r--
xml-tree-private.h
1.62
KB
-rw-rw-r--
xml-tree.c
93.09
KB
-rw-rw-r--
xml-tree.h
1.46
KB
-rw-rw-r--
xwindow-private.h
11.19
KB
-rw-rw-r--
xwindow.c
338.16
KB
-rw-rw-r--
xwindow.h
1.11
KB
-rw-rw-r--
Delete
Unzip
Zip
${this.title}
Close
Code Editor : list.c
/* %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % % % % % L IIIII SSSSS TTTTT % % L I SS T % % L I SSS T % % L I SS T % % LLLLL IIIII SSSSS T % % % % % % MagickCore Image List Methods % % % % Software Design % % Cristy % % December 2002 % % % % % % Copyright 1999-2020 ImageMagick Studio LLC, a non-profit organization % % dedicated to making software imaging solutions freely available. % % % % You may not use this file except in compliance with the License. You may % % obtain a copy of the License at % % % % https://imagemagick.org/script/license.php % % % % Unless required by applicable law or agreed to in writing, software % % distributed under the License is distributed on an "AS IS" BASIS, % % WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. % % See the License for the specific language governing permissions and % % limitations under the License. % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % */ /* Include declarations. */ #include "MagickCore/studio.h" #include "MagickCore/artifact.h" #include "MagickCore/blob.h" #include "MagickCore/blob-private.h" #include "MagickCore/exception.h" #include "MagickCore/exception-private.h" #include "MagickCore/image-private.h" #include "MagickCore/list.h" #include "MagickCore/memory_.h" #include "MagickCore/string_.h" #include "MagickCore/string-private.h" /* %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % % % % % A p p e n d I m a g e T o L i s t % % % % % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % AppendImageToList() appends the second image list to the end of the first % list. The given image list pointer is left unchanged, unless it was empty. % % The format of the AppendImageToList method is: % % AppendImageToList(Image *images,const Image *image) % % A description of each parameter follows: % % o images: the image list to be appended to. % % o image: the appended image or image list. % */ MagickExport void AppendImageToList(Image **images,const Image *append) { register Image *p, *q; assert(images != (Image **) NULL); if (append == (Image *) NULL) return; assert(append->signature == MagickCoreSignature); if (append->debug != MagickFalse) (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",append->filename); if ((*images) == (Image *) NULL) { *images=(Image *) append; return; } assert((*images)->signature == MagickCoreSignature); p=GetLastImageInList(*images); q=GetFirstImageInList(append); p->next=q; q->previous=p; } /* %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % % % % % C l o n e I m a g e L i s t % % % % % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % CloneImageList() returns a duplicate of the image list. % % The format of the CloneImageList method is: % % Image *CloneImageList(const Image *images,ExceptionInfo *exception) % % A description of each parameter follows: % % o images: the image list. % % o exception: return any errors or warnings in this structure. % */ MagickExport Image *CloneImageList(const Image *images,ExceptionInfo *exception) { Image *clone, *image; register Image *p; if (images == (Image *) NULL) return((Image *) NULL); assert(images->signature == MagickCoreSignature); while (images->previous != (Image *) NULL) { assert(images != images->previous); images=images->previous; } image=(Image *) NULL; for (p=(Image *) NULL; images != (Image *) NULL; images=images->next) { assert(images != images->next); clone=CloneImage(images,0,0,MagickTrue,exception); if (clone == (Image *) NULL) { if (image != (Image *) NULL) image=DestroyImageList(image); return((Image *) NULL); } if (image == (Image *) NULL) { image=clone; p=image; continue; } p->next=clone; clone->previous=p; p=p->next; } return(image); } /* %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % % % % % C l o n e I m a g e s % % % % % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % CloneImages() clones one or more images from an image sequence, using a % comma separated list of image numbers or ranges. % % The numbers start at 0 for the first image in the list, while negative % numbers refer to images starting counting from the end of the range. Images % may be referred to multiple times to clone them multiple times. Images % referred beyond the available number of images in list are ignored. % % Images referenced may be reversed, and results in a clone of those images % also being made with a reversed order. % % The format of the CloneImages method is: % % Image *CloneImages(const Image *images,const char *scenes, % ExceptionInfo *exception) % % A description of each parameter follows: % % o images: the image sequence. % % o scenes: This character string specifies which scenes to clone % (e.g. 1,3-5,7-3,2). % % o exception: return any errors or warnings in this structure. % */ MagickExport Image *CloneImages(const Image *images,const char *scenes, ExceptionInfo *exception) { char *p; const char *artifact; const Image *next; Image *clone_images, *image; register ssize_t i; size_t length; ssize_t first, last, step; assert(images != (const Image *) NULL); assert(images->signature == MagickCoreSignature); assert(scenes != (char *) NULL); if (images->debug != MagickFalse) (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",images->filename); assert(exception != (ExceptionInfo *) NULL); assert(exception->signature == MagickCoreSignature); clone_images=NewImageList(); images=GetFirstImageInList(images); artifact=GetImageArtifact(images,"frames:step"); length=GetImageListLength(images); for (p=(char *) scenes; *p != '\0';) { MagickBooleanType match; while ((isspace((int) ((unsigned char) *p)) != 0) || (*p == ',')) p++; first=(ssize_t) strtol(p,&p,10); if (first < 0) first+=(ssize_t) length; else if (first > (ssize_t) length) first=(ssize_t) length; last=first; while (isspace((int) ((unsigned char) *p)) != 0) p++; if (*p == '-') { last=(ssize_t) strtol(p+1,&p,10); if (last < 0) last+=(ssize_t) length; else if (last > (ssize_t) length) last=(ssize_t) length; } match=MagickFalse; step=1; if (artifact != (const char *) NULL) { step=(ssize_t) StringToDouble(artifact,(char **) NULL); if (step == 0) step=1; } step=(ssize_t) (first > last ? -step : step); for ( ; (first > -(last+step)) && (first < (last+step)); first+=step) { i=0; for (next=images; next != (Image *) NULL; next=GetNextImageInList(next)) { if (i == (ssize_t) first) { image=CloneImage(next,0,0,MagickTrue,exception); if (image == (Image *) NULL) break; AppendImageToList(&clone_images,image); match=MagickTrue; } i++; } if (match == MagickFalse) (void) ThrowMagickException(exception,GetMagickModule(),OptionError, "InvalidImageIndex","`%s'",images->filename); } } return(GetFirstImageInList(clone_images)); } /* %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % % % % % D e l e t e I m a g e F r o m L i s t % % % % % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % DeleteImageFromList() deletes an image from the list. List pointer % is moved to the next image, if one is present. See RemoveImageFromList(). % % The format of the DeleteImageFromList method is: % % DeleteImageFromList(Image **images) % % A description of each parameter follows: % % o images: the image list. % */ MagickExport void DeleteImageFromList(Image **images) { Image *image; image=RemoveImageFromList(images); if (image != (Image *) NULL) (void) DestroyImage(image); } /* %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % % % % % D e l e t e I m a g e s % % % % % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % DeleteImages() deletes one or more images from an image sequence, using a % comma separated list of image numbers or ranges. % % The numbers start at 0 for the first image, while negative numbers refer to % images starting counting from the end of the range. Images may be referred to % multiple times without problems. Image referred beyond the available number % of images in list are ignored. % % If the referenced images are in the reverse order, that range will be % completely ignored, unlike CloneImages(). % % The format of the DeleteImages method is: % % DeleteImages(Image **images,const char *scenes,ExceptionInfo *exception) % % A description of each parameter follows: % % o images: the image sequence. % % o scenes: This character string specifies which scenes to delete % (e.g. 1,3-5,-2-6,2). % % o exception: return any errors or warnings in this structure. % */ MagickExport void DeleteImages(Image **images,const char *scenes, ExceptionInfo *exception) { char *p; Image *image; long first, last; MagickBooleanType *delete_list; register ssize_t i; size_t length; assert(images != (Image **) NULL); assert((*images)->signature == MagickCoreSignature); assert(scenes != (char *) NULL); if ((*images)->debug != MagickFalse) (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s", (*images)->filename); assert(exception != (ExceptionInfo *) NULL); assert(exception->signature == MagickCoreSignature); *images=GetFirstImageInList(*images); length=GetImageListLength(*images); delete_list=(MagickBooleanType *) AcquireQuantumMemory(length, sizeof(*delete_list)); if (delete_list == (MagickBooleanType *) NULL) { (void) ThrowMagickException(exception,GetMagickModule(), ResourceLimitError,"MemoryAllocationFailed","`%s'",(*images)->filename); return; } image=(*images); for (i=0; i < (ssize_t) length; i++) delete_list[i]=MagickFalse; /* Note which images will be deleted, avoid duplicates. */ for (p=(char *) scenes; *p != '\0';) { while ((isspace((int) ((unsigned char) *p)) != 0) || (*p == ',')) p++; first=strtol(p,&p,10); if (first < 0) first+=(long) length; last=first; while (isspace((int) ((unsigned char) *p)) != 0) p++; if (*p == '-') { last=strtol(p+1,&p,10); if (last < 0) last+=(long) length; } if (first > last) continue; for (i=(ssize_t) first; i <= (ssize_t) last; i++) if ((i >= 0) && (i < (ssize_t) length)) delete_list[i]=MagickTrue; } /* Delete images marked for deletion, once only. */ image=(*images); for (i=0; i < (ssize_t) length; i++) { *images=image; image=GetNextImageInList(image); if (delete_list[i] != MagickFalse) DeleteImageFromList(images); } (void) RelinquishMagickMemory(delete_list); *images=GetFirstImageInList(*images); } /* %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % % % % % D e s t r o y I m a g e L i s t % % % % % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % DestroyImageList() destroys an image list. % % The format of the DestroyImageList method is: % % Image *DestroyImageList(Image *image) % % A description of each parameter follows: % % o image: the image sequence. % */ MagickExport Image *DestroyImageList(Image *images) { if (images == (Image *) NULL) return((Image *) NULL); assert(images->signature == MagickCoreSignature); if (images->debug != MagickFalse) (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",images->filename); while (images != (Image *) NULL) DeleteImageFromList(&images); return((Image *) NULL); } /* %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % % % % % D u p l i c a t e I m a g e s % % % % % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % DuplicateImages() duplicates one or more images from an image sequence, % using a count and a comma separated list of image numbers or ranges. % % The numbers start at 0 for the first image, while negative numbers refer to % images starting counting from the end of the range. Images may be referred to % multiple times without problems. Image referred beyond the available number % of images in list are ignored. % % The format of the DuplicateImages method is: % % Image *DuplicateImages(Image *images,const size_t number_duplicates, % const char *scenes,ExceptionInfo *exception) % % A description of each parameter follows: % % o images: the image sequence. % % o number_duplicates: duplicate the image sequence this number of times. % % o scenes: This character string specifies which scenes to duplicate (e.g. % 1,3-5,-2-6,2). % % o exception: return any errors or warnings in this structure. % */ MagickExport Image *DuplicateImages(Image *images, const size_t number_duplicates,const char *scenes,ExceptionInfo *exception) { Image *clone_images, *duplicate_images; register ssize_t i; /* Duplicate images. */ assert(images != (Image *) NULL); assert(images->signature == MagickCoreSignature); assert(scenes != (char *) NULL); if (images->debug != MagickFalse) (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",images->filename); assert(exception != (ExceptionInfo *) NULL); assert(exception->signature == MagickCoreSignature); duplicate_images=NewImageList(); for (i=0; i < (ssize_t) number_duplicates; i++) { clone_images=CloneImages(images,scenes,exception); AppendImageToList(&duplicate_images,clone_images); } return(duplicate_images); } /* %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % % % % % G e t F i r s t I m a g e I n L i s t % % % % % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % GetFirstImageInList() returns a pointer to the first image in the list. % % The format of the GetFirstImageInList method is: % % Image *GetFirstImageInList(const Image *images) % % A description of each parameter follows: % % o images: the image list. % */ MagickExport Image *GetFirstImageInList(const Image *images) { register const Image *p; if (images == (Image *) NULL) return((Image *) NULL); assert(images->signature == MagickCoreSignature); for (p=images; p->previous != (Image *) NULL; p=p->previous) ; return((Image *) p); } /* %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % % % % % G e t I m a g e F r o m L i s t % % % % % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % GetImageFromList() returns an image at the specified index from the image % list. Starting with 0 as the first image in the list. % % A negative offset will return the image from the end of the list, such that % an index of -1 is the last image. % % If no such image exists at the specified offset a NULL image pointer is % returned. This will only happen if index is less that the negative of % the list length, or larger than list length -1. EG: ( -N to N-1 ) % % The format of the GetImageFromList method is: % % Image *GetImageFromList(const Image *images,const ssize_t index) % % A description of each parameter follows: % % o images: the image list. % % o index: the position within the list. % */ MagickExport Image *GetImageFromList(const Image *images,const ssize_t index) { register const Image *p; register ssize_t i; if (images == (Image *) NULL) return((Image *) NULL); assert(images->signature == MagickCoreSignature); if (images->debug != MagickFalse) (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",images->filename); if (index < 0) { p=GetLastImageInList(images); for (i=(-1); p != (Image *) NULL; p=p->previous) if (i-- == index) break; } else { p=GetFirstImageInList(images); for (i=0; p != (Image *) NULL; p=p->next) if (i++ == index) break; } return((Image *) p); } /* %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % % % % % G e t I m a g e I n d e x I n L i s t % % % % % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % GetImageIndexInList() returns the offset in the list of the specified image. % % The format of the GetImageIndexInList method is: % % ssize_t GetImageIndexInList(const Image *images) % % A description of each parameter follows: % % o images: the image list. % */ MagickExport ssize_t GetImageIndexInList(const Image *images) { register ssize_t i; if (images == (const Image *) NULL) return(-1); assert(images->signature == MagickCoreSignature); for (i=0; images->previous != (Image *) NULL; i++) { assert(images != images->previous); images=images->previous; } return(i); } /* %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % % % % % G e t I m a g e L i s t L e n g t h % % % % % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % GetImageListLength() returns the length of the list (the number of images in % the list). % % The format of the GetImageListLength method is: % % size_t GetImageListLength(const Image *images) % % A description of each parameter follows: % % o images: the image list. % */ MagickExport size_t GetImageListLength(const Image *images) { register ssize_t i; if (images == (Image *) NULL) return(0); assert(images->signature == MagickCoreSignature); if (images->debug != MagickFalse) (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",images->filename); images=GetLastImageInList(images); for (i=0; images != (Image *) NULL; images=images->previous) { assert(images != images->previous); i++; } return((size_t) i); } /* %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % % % % % G e t L a s t I m a g e I n L i s t % % % % % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % GetLastImageInList() returns a pointer to the last image in the list. % % The format of the GetLastImageInList method is: % % Image *GetLastImageInList(const Image *images) % % A description of each parameter follows: % % o images: the image list. % */ MagickExport Image *GetLastImageInList(const Image *images) { register const Image *p; if (images == (Image *) NULL) return((Image *) NULL); assert(images->signature == MagickCoreSignature); for (p=images; p->next != (Image *) NULL; p=p->next) ; return((Image *) p); } /* %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % % % % % G e t N e x t I m a g e I n L i s t % % % % % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % GetNextImageInList() returns the next image in the list. % % The format of the GetNextImageInList method is: % % Image *GetNextImageInList(const Image *images) % % A description of each parameter follows: % % o images: the image list. % */ MagickExport Image *GetNextImageInList(const Image *images) { if (images == (Image *) NULL) return((Image *) NULL); assert(images->signature == MagickCoreSignature); if (images->debug != MagickFalse) (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",images->filename); return(images->next); } /* %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % % % % % G e t P r e v i o u s I m a g e I n L i s t % % % % % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % GetPreviousImageInList() returns the previous image in the list. % % The format of the GetPreviousImageInList method is: % % Image *GetPreviousImageInList(const Image *images) % % A description of each parameter follows: % % o images: the image list. % */ MagickExport Image *GetPreviousImageInList(const Image *images) { if (images == (Image *) NULL) return((Image *) NULL); assert(images->signature == MagickCoreSignature); return(images->previous); } /* %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % % % I m a g e L i s t T o A r r a y % % % % % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % ImageListToArray() is a convenience method that converts an image list to % a sequential array, with a NULL image pointer at the end of the array. % % The images remain part of the original image list, with the array providing % an alternative means of indexing the image array. % % group = ImageListToArray(images, exception); % while (i = 0; group[i] != (Image *) NULL; i++) % printf("%s\n", group[i]->filename); % printf("%d images\n", i); % group = RelinquishMagickMemory(group); % % The format of the ImageListToArray method is: % % Image **ImageListToArray(const Image *images,ExceptionInfo *exception) % % A description of each parameter follows: % % o image: the image list. % % o exception: return any errors or warnings in this structure. % */ MagickExport Image **ImageListToArray(const Image *images, ExceptionInfo *exception) { Image **group; register ssize_t i; if (images == (Image *) NULL) return((Image **) NULL); assert(images->signature == MagickCoreSignature); if (images->debug != MagickFalse) (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",images->filename); group=(Image **) AcquireQuantumMemory((size_t) GetImageListLength(images)+1UL, sizeof(*group)); if (group == (Image **) NULL) { (void) ThrowMagickException(exception,GetMagickModule(), ResourceLimitError,"MemoryAllocationFailed","`%s'",images->filename); return((Image **) NULL); } images=GetFirstImageInList(images); for (i=0; images != (Image *) NULL; images=images->next) { assert(images != images->next); group[i++]=(Image *) images; } group[i]=(Image *) NULL; return(group); } /* %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % % % % % I n s e r t I m a g e I n L i s t % % % % % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % InsertImageInList() insert the given image or image list, into the first % image list, immediately AFTER the image pointed to. The given image list % pointer is left unchanged unless previously empty. % % The format of the InsertImageInList method is: % % InsertImageInList(Image **images,Image *insert) % % A description of each parameter follows: % % o images: the image list to insert into. % % o insert: the image list to insert. % */ MagickExport void InsertImageInList(Image **images,Image *insert) { Image *split; assert(images != (Image **) NULL); assert(insert != (Image *) NULL); assert(insert->signature == MagickCoreSignature); if (insert->debug != MagickFalse) (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",insert->filename); if ((*images) == (Image *) NULL) return; assert((*images)->signature == MagickCoreSignature); split=SplitImageList(*images); AppendImageToList(images,insert); AppendImageToList(images,split); } /* %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % % % % % N e w I m a g e L i s t % % % % % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % NewImageList() creates an empty image list. % % The format of the NewImageList method is: % % Image *NewImageList(void) % */ MagickExport Image *NewImageList(void) { return((Image *) NULL); } /* %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % % % % % P r e p e n d I m a g e T o L i s t % % % % % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % PrependImageToList() prepends the image to the beginning of the list. % % The format of the PrependImageToList method is: % % PrependImageToList(Image *images,Image *image) % % A description of each parameter follows: % % o images: the image list. % % o image: the image. % */ MagickExport void PrependImageToList(Image **images,Image *prepend) { if (*images == (Image *) NULL) { *images=prepend; return; } AppendImageToList(&prepend,*images); } /* %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % % % % % R e m o v e I m a g e F r o m L i s t % % % % % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % RemoveImageFromList() removes and returns the image pointed to. % % The given image list pointer is set to point to the next image in list % if it exists, otherwise it is set to the previous image, or NULL if list % was emptied. % % The format of the RemoveImageFromList method is: % % Image *RemoveImageFromList(Image **images) % % A description of each parameter follows: % % o images: the image list. % */ MagickExport Image *RemoveImageFromList(Image **images) { register Image *p; assert(images != (Image **) NULL); if ((*images) == (Image *) NULL) return((Image *) NULL); assert((*images)->signature == MagickCoreSignature); if ((*images)->debug != MagickFalse) (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s", (*images)->filename); p=(*images); if ((p->previous == (Image *) NULL) && (p->next == (Image *) NULL)) *images=(Image *) NULL; else { if (p->previous != (Image *) NULL) { p->previous->next=p->next; *images=p->previous; } if (p->next != (Image *) NULL) { p->next->previous=p->previous; *images=p->next; } p->previous=(Image *) NULL; p->next=(Image *) NULL; } return(p); } /* %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % % % % % R e m o v e F i r s t I m a g e F r o m L i s t % % % % % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % RemoveFirstImageFromList() removes and returns the first image in the list. % % If the given image list pointer pointed to the removed first image, it is % set to the new first image of list, or NULL if list was emptied, otherwise % it is left as is. % % The format of the RemoveFirstImageFromList method is: % % Image *RemoveFirstImageFromList(Image **images) % % A description of each parameter follows: % % o images: the image list. % */ MagickExport Image *RemoveFirstImageFromList(Image **images) { Image *image; assert(images != (Image **) NULL); if ((*images) == (Image *) NULL) return((Image *) NULL); assert((*images)->signature == MagickCoreSignature); if ((*images)->debug != MagickFalse) (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s", (*images)->filename); image=(*images); while (image->previous != (Image *) NULL) image=image->previous; if (image == *images) *images=(*images)->next; if (image->next != (Image *) NULL) { image->next->previous=(Image *) NULL; image->next=(Image *) NULL; } return(image); } /* %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % % % % % R e m o v e L a s t I m a g e F r o m L i s t % % % % % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % RemoveLastImageFromList() removes and returns the last image from the list. % % If the given image list pointer pointed to the removed last image, it is % set to the new last image of list, or NULL if list was emptied, otherwise % it is left as is. % % The format of the RemoveLastImageFromList method is: % % Image *RemoveLastImageFromList(Image **images) % % A description of each parameter follows: % % o images: the image list. % */ MagickExport Image *RemoveLastImageFromList(Image **images) { Image *image; assert(images != (Image **) NULL); if ((*images) == (Image *) NULL) return((Image *) NULL); assert((*images)->signature == MagickCoreSignature); if ((*images)->debug != MagickFalse) (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s", (*images)->filename); image=(*images); while (image->next != (Image *) NULL) image=image->next; if (image == *images) *images=(*images)->previous; if (image->previous != (Image *) NULL) { image->previous->next=(Image *) NULL; image->previous=(Image *) NULL; } return(image); } /* %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % % % % % R e p l a c e I m a g e I n L i s t % % % % % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % ReplaceImageInList() replaces an image in the list with the given image, or % list of images. Old image is destroyed. % % The images list pointer is set to point to the first image of the inserted % list of images. % % The format of the ReplaceImageInList method is: % % ReplaceImageInList(Image **images,Image *replace) % % A description of each parameter follows: % % o images: the list and pointer to image to replace % % o replace: the image or image list replacing the original % */ MagickExport void ReplaceImageInList(Image **images,Image *replace) { assert(images != (Image **) NULL); assert(replace != (Image *) NULL); assert(replace->signature == MagickCoreSignature); if (replace->debug != MagickFalse) (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",replace->filename); if ((*images) == (Image *) NULL) return; assert((*images)->signature == MagickCoreSignature); /* link next pointer */ replace=GetLastImageInList(replace); replace->next=(*images)->next; if (replace->next != (Image *) NULL) replace->next->previous=replace; /* link previous pointer - set images position to first replacement image */ replace=GetFirstImageInList(replace); replace->previous=(*images)->previous; if (replace->previous != (Image *) NULL) replace->previous->next=replace; /* destroy the replaced image that was in images */ (void) DestroyImage(*images); (*images)=replace; } /* %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % % % % % R e p l a c e I m a g e I n L i s t R e t u r n L a s t % % % % % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % ReplaceImageInListReturnLast() is exactly as ReplaceImageInList() except % the images pointer is set to the last image in the list of replacement % images. % % This allows you to simply use GetNextImageInList() to go to the image % that follows the just replaced image, even if a list of replacement images % was inserted. % % The format of the ReplaceImageInList method is: % % ReplaceImageInListReturnLast(Image **images,Image *replace) % % A description of each parameter follows: % % o images: the list and pointer to image to replace % % o replace: the image or image list replacing the original % */ MagickExport void ReplaceImageInListReturnLast(Image **images,Image *replace) { assert(images != (Image **) NULL); assert(replace != (Image *) NULL); assert(replace->signature == MagickCoreSignature); if (replace->debug != MagickFalse) (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",replace->filename); if ((*images) == (Image *) NULL) return; assert((*images)->signature == MagickCoreSignature); /* link previous pointer */ replace=GetFirstImageInList(replace); replace->previous=(*images)->previous; if (replace->previous != (Image *) NULL) replace->previous->next=replace; /* link next pointer - set images position to last replacement image */ replace=GetLastImageInList(replace); replace->next=(*images)->next; if (replace->next != (Image *) NULL) replace->next->previous=replace; /* destroy the replaced image that was in images */ (void) DestroyImage(*images); (*images)=replace; } /* %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % % % % % R e v e r s e I m a g e L i s t % % % % % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % ReverseImageList() reverses the order of an image list. % The list pointer is reset to that start of the re-ordered list. % % The format of the ReverseImageList method is: % % void ReverseImageList(Image **images) % % A description of each parameter follows: % % o images: the image list. % */ MagickExport void ReverseImageList(Image **images) { Image *next; register Image *p; assert(images != (Image **) NULL); if ((*images) == (Image *) NULL) return; assert((*images)->signature == MagickCoreSignature); if ((*images)->debug != MagickFalse) (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s", (*images)->filename); for (p=(*images); p->next != (Image *) NULL; p=p->next) ; *images=p; for ( ; p != (Image *) NULL; p=p->next) { next=p->next; p->next=p->previous; p->previous=next; } } /* %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % % % % % S p l i c e I m a g e I n t o L i s t % % % % % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % SpliceImageIntoList() removes 'length' images from the list and replaces % them with the specified splice. Removed images are returned. % % The format of the SpliceImageIntoList method is: % % SpliceImageIntoList(Image **images,const size_t, % const Image *splice) % % A description of each parameter follows: % % o images: the image list. % % o length: the length of the image list to remove. % % o splice: Replace the removed image list with this list. % */ MagickExport Image *SpliceImageIntoList(Image **images, const size_t length,const Image *splice) { Image *image, *split; register size_t i; assert(images != (Image **) NULL); assert(splice != (Image *) NULL); assert(splice->signature == MagickCoreSignature); if ((*images) == (Image *) NULL) return((Image *) NULL); assert((*images)->signature == MagickCoreSignature); if ((*images)->debug != MagickFalse) (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s", (*images)->filename); split=SplitImageList(*images); AppendImageToList(images,splice); image=(Image *) NULL; for (i=0; (i < length) && (split != (Image *) NULL); i++) AppendImageToList(&image,RemoveImageFromList(&split)); AppendImageToList(images,split); return(image); } /* %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % % % % % S p l i t I m a g e L i s t % % % % % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % SplitImageList() splits an image into two lists, after given image % The list that was split off is returned, which may be empty. % % The format of the SplitImageList method is: % % Image *SplitImageList(Image *images) % % A description of each parameter follows: % % o images: the image list. % */ MagickExport Image *SplitImageList(Image *images) { if ((images == (Image *) NULL) || (images->next == (Image *) NULL)) return((Image *) NULL); images=images->next; images->previous->next=(Image *) NULL; images->previous=(Image *) NULL; return(images); } /* %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % % % % + S y n c I m a g e L i s t % % % % % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % SyncImageList() synchronizes the scene numbers in an image list. % % The format of the SyncImageList method is: % % void SyncImageList(Image *images) % % A description of each parameter follows: % % o images: the image list. % */ MagickExport void SyncImageList(Image *images) { register Image *p, *q; if (images == (Image *) NULL) return; assert(images->signature == MagickCoreSignature); for (p=images; p != (Image *) NULL; p=p->next) { for (q=p->next; q != (Image *) NULL; q=q->next) if (p->scene == q->scene) break; if (q != (Image *) NULL) break; } if (p == (Image *) NULL) return; for (p=images->next; p != (Image *) NULL; p=p->next) p->scene=p->previous->scene+1; } /* %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % % % % + S y n c N e x t I m a g e I n L i s t % % % % % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % SyncNextImageInList() returns the next image in the list after the blob % referenced is synchronized with the current image. % % The format of the SyncNextImageInList method is: % % Image *SyncNextImageInList(const Image *images) % % A description of each parameter follows: % % o images: the image list. % */ MagickExport Image *SyncNextImageInList(const Image *images) { if (images == (Image *) NULL) return((Image *) NULL); assert(images->signature == MagickCoreSignature); if (images->next == (Image *) NULL) return((Image *) NULL); if (images->blob != images->next->blob) { DestroyBlob(images->next); images->next->blob=ReferenceBlob(images->blob); } if (images->next->compression == UndefinedCompression) images->next->compression=images->compression; if (images->next->endian == UndefinedEndian) images->next->endian=images->endian; return(images->next); }
Close