@@ -3,6 +3,7 @@ module fortplot_zlib_core
3
3
! ! Ported from STB image libraries for self-contained PNG support
4
4
use , intrinsic :: iso_fortran_env, only: int8, int32
5
5
use iso_c_binding, only: c_ptr, c_loc, c_f_pointer, c_associated
6
+ use fortplot_debug_utils, only: is_debug_enabled, log_debug_message
6
7
implicit none
7
8
8
9
private
@@ -42,8 +43,6 @@ module fortplot_zlib_core
42
43
7 , 7 , 8 , 8 , 9 , 9 , 10 , 10 , &
43
44
11 , 11 , 12 , 12 , 13 , 13 ]
44
45
45
- logical , save :: zlib_debug_initialized = .false.
46
- logical , save :: zlib_debug_enabled_state = .false.
47
46
48
47
! CRC32 lookup table (standard polynomial 0xEDB88320)
49
48
integer (int32), parameter :: crc_table(0 :255 ) = [ &
@@ -146,19 +145,19 @@ subroutine zlib_compress_into(input_data, input_len, output_data, output_len)
146
145
logical :: debug_active
147
146
character (len= 160 ) :: debug_message
148
147
149
- debug_active = is_zlib_debug_enabled( )
148
+ debug_active = is_debug_enabled( ' FORTPLOT_ZLIB_DEBUG ' )
150
149
if (debug_active) then
151
150
write (debug_message, ' (a,i0)' ) ' zlib_compress_into begin, input_len=' , &
152
151
input_len
153
- call log_zlib_debug( debug_message)
152
+ call log_debug_message( ' fortplot:zlib ' , debug_message)
154
153
end if
155
154
156
155
call deflate_compress(input_data, input_len, compressed_block, compressed_block_len)
157
156
158
157
if (debug_active) then
159
158
write (debug_message, ' (a,i0)' ) ' deflate returned compressed_block_len=' , &
160
159
compressed_block_len
161
- call log_zlib_debug( debug_message)
160
+ call log_debug_message( ' fortplot:zlib ' , debug_message)
162
161
end if
163
162
164
163
output_len = 2 + compressed_block_len + 4
@@ -186,7 +185,7 @@ subroutine zlib_compress_into(input_data, input_len, output_data, output_len)
186
185
187
186
if (debug_active) then
188
187
write (debug_message, ' (a,i0)' ) ' zlib total output_len=' , output_len
189
- call log_zlib_debug( debug_message)
188
+ call log_debug_message( ' fortplot:zlib ' , debug_message)
190
189
end if
191
190
end subroutine zlib_compress_into
192
191
@@ -983,72 +982,5 @@ function bit_reverse(value, num_bits) result(reversed_value)
983
982
end do
984
983
end function bit_reverse
985
984
986
- pure function to_lower_char (ch ) result(lower)
987
- ! ! Lower-case conversion for ASCII characters
988
- character (len= 1 ), intent (in ) :: ch
989
- character (len= 1 ) :: lower
990
- integer :: code
991
-
992
- lower = ch
993
- code = iachar (ch)
994
- if (code >= iachar (' A' ) .and. code <= iachar (' Z' )) then
995
- lower = achar (code + 32 )
996
- end if
997
- end function to_lower_char
998
-
999
- logical function parse_debug_env (value )
1000
- ! ! Interpret an environment variable as boolean
1001
- character (len=* ), intent (in ) :: value
1002
- character (len= :), allocatable :: trimmed
1003
- integer :: i
1004
-
1005
- trimmed = trim (adjustl (value))
1006
-
1007
- if (len (trimmed) == 0 ) then
1008
- parse_debug_env = .true.
1009
- return
1010
- end if
1011
-
1012
- do i = 1 , len (trimmed)
1013
- trimmed(i:i) = to_lower_char(trimmed(i:i))
1014
- end do
1015
-
1016
- select case (trimmed)
1017
- case (' 0' , ' false' , ' off' , ' no' )
1018
- parse_debug_env = .false.
1019
- case default
1020
- parse_debug_env = .true.
1021
- end select
1022
- end function parse_debug_env
1023
-
1024
- subroutine ensure_zlib_debug ()
1025
- ! ! Lazy initialization for instrumentation flag
1026
- character (len= 32 ) :: env_value
1027
- integer :: status
1028
-
1029
- if (zlib_debug_initialized) return
1030
-
1031
- call get_environment_variable(' FORTPLOT_ZLIB_DEBUG' , env_value, status= status)
1032
- if (status == 0 ) then
1033
- zlib_debug_enabled_state = parse_debug_env(env_value)
1034
- else
1035
- zlib_debug_enabled_state = .false.
1036
- end if
1037
- zlib_debug_initialized = .true.
1038
- end subroutine ensure_zlib_debug
1039
-
1040
- logical function is_zlib_debug_enabled ()
1041
- ! ! Query instrumentation flag
1042
- call ensure_zlib_debug()
1043
- is_zlib_debug_enabled = zlib_debug_enabled_state
1044
- end function is_zlib_debug_enabled
1045
-
1046
- subroutine log_zlib_debug (message )
1047
- ! ! Emit debug message when instrumentation enabled
1048
- character (len=* ), intent (in ) :: message
1049
- if (is_zlib_debug_enabled()) then
1050
- print ' (a)' , ' [fortplot:zlib] ' // trim (message)
1051
- end if
1052
- end subroutine log_zlib_debug
1053
985
1054
986
end module fortplot_zlib_core
0 commit comments