diff --git a/README b/README deleted file mode 100644 index 217cb47..0000000 --- a/README +++ /dev/null @@ -1,108 +0,0 @@ - ====================================================================== - SPLAT!: A Terrestrial RF Path and Terrain Analysis Tool for Unix/Linux - ====================================================================== - - -Requirements -============ -SPLAT! requires the libbzip2-1.0.1 (or later) compression library and -header files for successful compilation. bzip2/libbzip2 is available -at: http://www.bzip2.org/ - -SPLAT! also requires the zlib general purpose compression library. -Any recent version included with your Linux distribution should work -fine. Note, however, that zlib version 1.1.3 contains a security -vulnerability that has been fixed in version 1.1.4. The latest -version of zlib may be found at: http://www.gzip.org/zlib/ -If you should decide to build zlib, it is important to invoke: - - ./configure -s - -to build zlib as a shared library. - -If you wish to plot terrain and elevation profiles through SPLAT!, -you will need gnuplot. The latest version of gnuplot is available -at: http://www.gnuplot.info/ if you don't already have it. - -You will also need an application for viewing large PPM graphics -files generated by SPLAT!. XV, ImageMagick, XPaint, and The GIMP -all perform this task well. - -It goes without saying that a C++ compiler (gcc/g++) and math libraries -are also needed to build SPLAT! SPLAT! is fully compatible with the -latest versions of the GCC compiler. - - -Installation Instructions -========================= -Unpack the tar.gz file in a source code directory (such as /usr/src -under Slackware) as 'root': - - cd /usr/src - tar xvfz splat-1.4.1.tar.gz - -This action will generate a subdirectory named splat-1.4.1. - -Next, cd into the directory: - - cd splat-1.4.1 - -Invoke the configure script to build SPLAT! and related utilities: - - ./configure - -If you are 'root', SPLAT! and its related man page and utilities will -be installed after the compilation process is complete. If not, you -will be prompted to su to 'root' and invoke the install script manually: - - su root - Password: - ./install all - exit - -Before running SPLAT!, carefully read the documentation located under -the splat-1.4.1/docs directory for information on the use of the program. -Some sample data files are located under the splat-1.4.1/sample_data -directory. - -REMEMBER: Topography data must be downloaded and SPLAT Data Files must -be generated using the included srtm2sdf, postdownload, or usgs2sdf -utilities before using SPLAT! Instructions for doing so are included -in the documentation. - -It is a good practice to create a working directory for SPLAT! use -under your home directory: - - mkdir $HOME/splat-work - -Then: - cd $HOME/splat-work - -before invoking SPLAT! - -In this manner, all associated SPLAT! working files can be kept in a -common directory. - -It is important to realize that when analyzing regional coverage -areas of transmitters, repeaters, or cell sites, SPLAT! Data Files -need to be available for the entire region surrounding the site(s) -being analyzed. SPLAT! Data Files can be placed under your SPLAT! -working directory, or under a separate directory specified in your -$HOME/.splat_path file so SPLAT! can easily find them. - -Please read the README file under the utils directory for information -on the utilities included with SPLAT!. - -Please read the documentation under the splat-1.4.1/docs directory, -or consult the program's man page for more information and examples -of SPLAT! use. - -The latest announcements and information regarding SPLAT! software -can be found on the SPLAT! Web Site: - - http://www.qsl.net/kd2bd/splat.html - --- -John A. Magliacane, KD2BD -May 2011 - diff --git a/README.md b/README.md index 66d7764..81df107 100644 --- a/README.md +++ b/README.md @@ -12,11 +12,9 @@ card in the hopes of even more speed improvements. In preparation for this, itwo made fully C99-compliant, as all the current implementations of OpenCL drivers require that. (Later versions of OpenCL allow C++, but none of the common GPU drivers support that). -## Getting Started +## Building -Build instructions are in the file README. - -For this version, you must have either gcc or clang installed, and it must be a version that supports at least C++11 . +For this version, you must have CMake and either gcc or clang installed, and it must be a version that supports at least C++11 . You also need several utility libraries: * libbzip2 @@ -29,23 +27,28 @@ and gnuplot for generating graphs. You can generally get these via system packages. For instance: -Centos 7: +### Centos 7: + +`yum install cmake bzip2-devel zlib-devel libpng-devel libjpeg-turbo-devel gnuplot` + +### Debian (Buster) and Ubuntu (18.04 LTS): -`yum install bzip2-devel zlib-devel libpng-devel libjpeg-turbo-devel gnuplot` +`apt-get install cmake libbz2-dev zlib1g-dev libjpeg-dev libpng-dev gnuplot` -Debian (Buster) and Ubuntu (18.04 LTS): +### OSX (High Sierra): -`apt-get install libbz2-dev zlib1g-dev libjpeg-dev libpng-dev gnuplot` +#### Homebrew -OSX (High Sierra): +`brew install cmake jpeg libpng gnuplot` -`brew install jpeg libpng gnuplot` +#### MacPorts +`port install cmake jpeg libpng gnuplot` -## Example Build on Ubuntu 18.04 LTS +### Example Build on Ubuntu 18.04 LTS As an example, a build on Ubuntu 18.04 LTS might look like this: ``` -sudo apt install git +sudo apt install git cmake git clone https://github.com/hoche/splat.git sudo apt install libbz2-dev zlib1g-dev libjpeg-dev libpng-dev gnuplot cd splat/build @@ -53,6 +56,49 @@ cmake .. make ``` +### Microsoft Windows +See [README_VisualStudio.md](README_VisualStudio.md) + +## Installation +After building, run + + make install + +## Running + +Topography data must be downloaded and SPLAT Data Files must +be generated using the included `srtm2sdf`, `postdownload`, or `usgs2sdf` +utilities before using SPLAT! Instructions for doing so are included +in the documentation. + +It is a good practice to create a working directory for SPLAT! use +under your home directory: + + mkdir $HOME/splat-work + +Then: + + cd $HOME/splat-work + +before invoking SPLAT! + +In this manner, all associated SPLAT! working files can be kept in a +common directory. + +It is important to realize that when analyzing regional coverage +areas of transmitters, repeaters, or cell sites, SPLAT! Data Files +need to be available for the entire region surrounding the site(s) +being analyzed. SPLAT! Data Files can be placed under your SPLAT! +working directory, or under a separate directory specified in your +`$HOME/.splat_path` file so SPLAT! can easily find them. + +Please read the README file under the utils directory for information +on the utilities included with SPLAT!. + +Please read the documentation under `docs` directory, +or consult the program's man page for more information and examples +of SPLAT! use. + ## Changes * Build system @@ -123,3 +169,7 @@ The build system has been converted to CMake. * More code cleanup. * Split this into multiple files and c++ify things. * Reformat tabs to four spaces. + +## Acknowledgements +This project and code is based on the original SPLAT! version 1.4.2 by John A. Magliacane, KD2BD: +http://www.qsl.net/kd2bd/splat.html diff --git a/README2 b/README2 deleted file mode 120000 index e3dbb14..0000000 --- a/README2 +++ /dev/null @@ -1 +0,0 @@ -utils/README \ No newline at end of file diff --git a/README_VisualStudio.md b/README_VisualStudio.md index 16c656a..2d75047 100644 --- a/README_VisualStudio.md +++ b/README_VisualStudio.md @@ -9,8 +9,17 @@ The Community Edition will work fine. ## Compiling SPLAT! for Windows, the TL;DR version: - Checkout files from git. Open the sln. Choose "Build->Solution". Run Splat.exe with - the same options you'd use with unix. + 1) Checkout files from git. + 2) Generate the Visual Studio Project using CMake + 3) Open the sln. Choose "Build->Solution". + 4) Run Splat.exe with the same options you'd use with unix. + +## Compiling SPLAT! for Windows, the 2017 version: +Visual Studio 2017 and above have support for CMake built in: +1) Checkout files from git. +2) Choose File -> Open Folder and open the root `splat` directory +3) Right-click on the root level `CMakeLists.txt` and choose build +4) Run Splat.exe with the same options you'd use with unix. ## Details * This creates a Win32 Console Application. No fancy windows here! diff --git a/README_utils.md b/README_utils.md new file mode 120000 index 0000000..18d0278 --- /dev/null +++ b/README_utils.md @@ -0,0 +1 @@ +utils/README.md \ No newline at end of file diff --git a/docs/english/man/docmaker b/docs/english/man/docmaker deleted file mode 100755 index 3891f0b..0000000 --- a/docs/english/man/docmaker +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/bash -# This script builds the man page, pdf, and postscript -# and text documentation from the groff source "splat.man". -echo -n "Creating postscript file... " -groff -e -T ps -man splat.man > ../postscript/splat.ps -echo -echo -n "Creating man page... " -groff -e -T ascii -man splat.man > splat.1 -echo -echo -n "Creating text file... " -ul -t dumb splat.1 > ../text/splat.txt -echo -echo -n "Creating pdf file... " -ps2pdf ../postscript/splat.ps ../pdf/splat.pdf -echo -echo "Done!" diff --git a/docs/english/man/splat.1 b/docs/english/man/splat.1 deleted file mode 100644 index e3ff750..0000000 --- a/docs/english/man/splat.1 +++ /dev/null @@ -1,1248 +0,0 @@ -SPLAT!(1) KD2BD Software SPLAT!(1) - - - -NNAAMMEE - splat An RF SSignal PPropagation, LLoss, AAnd TTerrain analysis tool - -SSYYNNOOPPSSIISS - splat - [-t _t_r_a_n_s_m_i_t_t_e_r___s_i_t_e_._q_t_h] - [-r _r_e_c_e_i_v_e_r___s_i_t_e_._q_t_h] - [-c _r_x _a_n_t_e_n_n_a _h_e_i_g_h_t _f_o_r _L_O_S _c_o_v_e_r_a_g_e _a_n_a_l_y_s_i_s _(_f_e_e_t_/_m_e_t_e_r_s_) _(_f_l_o_a_t_)] - [-L _r_x _a_n_t_e_n_n_a _h_e_i_g_h_t _f_o_r _I_T_M _c_o_v_e_r_a_g_e _a_n_a_l_y_s_i_s _(_f_e_e_t_/_m_e_t_e_r_s_) _(_f_l_o_a_t_)] - [-p _t_e_r_r_a_i_n___p_r_o_f_i_l_e_._e_x_t] - [-e _e_l_e_v_a_t_i_o_n___p_r_o_f_i_l_e_._e_x_t] - [-h _h_e_i_g_h_t___p_r_o_f_i_l_e_._e_x_t] - [-H _n_o_r_m_a_l_i_z_e_d___h_e_i_g_h_t___p_r_o_f_i_l_e_._e_x_t] - [-l _I_T_M___p_r_o_f_i_l_e_._e_x_t] - [-o _t_o_p_o_g_r_a_p_h_i_c___m_a_p___f_i_l_e_n_a_m_e_._p_p_m] - [-b _c_a_r_t_o_g_r_a_p_h_i_c___b_o_u_n_d_a_r_y___f_i_l_e_n_a_m_e_._d_a_t] - [-s _s_i_t_e_/_c_i_t_y___d_a_t_a_b_a_s_e_._d_a_t] - [-d _s_d_f___d_i_r_e_c_t_o_r_y___p_a_t_h] - [-m _e_a_r_t_h _r_a_d_i_u_s _m_u_l_t_i_p_l_i_e_r _(_f_l_o_a_t_)] - [-f _f_r_e_q_u_e_n_c_y _(_M_H_z_) _f_o_r _F_r_e_s_n_e_l _z_o_n_e _c_a_l_c_u_l_a_t_i_o_n_s _(_f_l_o_a_t_)] - [-R _m_a_x_i_m_u_m _c_o_v_e_r_a_g_e _r_a_d_i_u_s _(_m_i_l_e_s_/_k_i_l_o_m_e_t_e_r_s_) _(_f_l_o_a_t_)] - [-dB _t_h_r_e_s_h_o_l_d _b_e_y_o_n_d _w_h_i_c_h _c_o_n_t_o_u_r_s _w_i_l_l _n_o_t _b_e _d_i_s_p_l_a_y_e_d] - [-gc _g_r_o_u_n_d _c_l_u_t_t_e_r _h_e_i_g_h_t _(_f_e_e_t_/_m_e_t_e_r_s_) _(_f_l_o_a_t_)] - [-fz _F_r_e_s_n_e_l _z_o_n_e _c_l_e_a_r_a_n_c_e _p_e_r_c_e_n_t_a_g_e _(_d_e_f_a_u_l_t _= _6_0_)] - [-ano _a_l_p_h_a_n_u_m_e_r_i_c _o_u_t_p_u_t _f_i_l_e _n_a_m_e] - [-ani _a_l_p_h_a_n_u_m_e_r_i_c _i_n_p_u_t _f_i_l_e _n_a_m_e] - [-udt _u_s_e_r___d_e_f_i_n_e_d___t_e_r_r_a_i_n___f_i_l_e_._d_a_t] - [-log _l_o_g_f_i_l_e_._e_x_t] - [-n] - [-N] - [-nf] - [-sc] - [-dbm] - [-ngs] - [-geo] - [-kml] - [-gpsav] - [-metric] - [-olditm] - -DDEESSCCRRIIPPTTIIOONN - SSPPLLAATT!! is a powerful terrestrial RF propagation and terrain analysis - tool for the spectrum between 20 MHz and 20 GHz. SSPPLLAATT!! is free soft- - ware, and is designed for operation on Unix and Linux-based worksta- - tions. Redistribution and/or modification is permitted under the terms - of the GNU General Public License, Version 2, as published by the Free - Software Foundation. Adoption of SSPPLLAATT!! source code in proprietary or - closed-source applications is a violation of this license and is - ssttrriiccttllyy forbidden. - - SSPPLLAATT!! is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY, without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - -IINNTTRROODDUUCCTTIIOONN - Applications of SSPPLLAATT!! include the visualization, design, and link bud- - get analysis of wireless Wide Area Networks (WANs), commercial and ama- - teur radio communication systems above 20 MHz, microwave links, fre- - quency coordination and interference studies, and the prediction of - analog and digital terrestrial radio and television contour regions. - - SSPPLLAATT!! provides RF site engineering data such as great circle distances - and bearings between sites, antenna elevation angles (uptilt), depres- - sion angles (downtilt), antenna height above mean sea level, antenna - height above average terrain, bearings, distances, and elevations to - known obstructions, Irregular Terrain Model path attenuation, and re- - ceived signal strength. In addition, the minimum antenna height re- - quirements needed to clear terrain, the first Fresnel zone, and any - user-definable percentage of the first Fresnel zone are also provided. - - SSPPLLAATT!! produces reports, graphs, and high resolution topographic maps - that depict line-of-sight paths, and regional path loss and signal - strength contours through which expected coverage areas of transmitters - and repeater systems can be obtained. When performing line-of-sight - and Irregular Terrain Model analyses in situations where multiple - transmitter or repeater sites are employed, SSPPLLAATT!! determines individ- - ual and mutual areas of coverage within the network specified. - -IINNPPUUTT FFIILLEESS - SSPPLLAATT!! is a command-line driven application and reads input data - through a number of data files. Some files are mandatory for success- - ful execution of the program, while others are optional. Mandatory - files include digital elevation topography models in the form of SPLAT - Data Files (SDF files), site location files (QTH files), and Irregular - Terrain Model parameter files (LRP files). Optional files include city - location files, cartographic boundary files, user-defined terrain - files, path loss input files, antenna radiation pattern files, and - color definition files. - -SSPPLLAATT DDAATTAA FFIILLEESS - SSPPLLAATT!! imports topographic data in the form of SPLAT Data Files (SDFs). - These files may be generated from a number of information sources. In - the United States, SPLAT Data Files can be generated through U.S. Geo- - logical Survey Digital Elevation Models (DEMs) using the ppoossttddoowwnnllooaadd - and uussggss22ssddff utilities included with SSPPLLAATT!!. USGS Digital Elevation - Models compatible with these utilities may be downloaded from: - - _h_t_t_p_:_/_/_e_d_c_f_t_p_._c_r_._u_s_g_s_._g_o_v_/_p_u_b_/_d_a_t_a_/_D_E_M_/_2_5_0_/. - - Significantly better resolution and accuracy can be obtained through - the use of SRTM Version 2 digital elevation models, especially when - supplemented by USGS-derived SDF data. These one-degree by one-degree - models are the product of the Space Shuttle STS-99 Radar Topography - Mission, and are available for most populated regions of the Earth. - SPLAT Data Files may be generated from 3 arc-second SRTM-3 data using - the included ssrrttmm22ssddff utility. SRTM-3 Version 2.1 data may be obtained - through anonymous FTP from: - - _h_t_t_p_:_/_/_d_d_s_._c_r_._u_s_g_s_._g_o_v_/_s_r_t_m_/_v_e_r_s_i_o_n_2___1_/_S_R_T_M_3_/ - - Note that SRTM filenames refer to the latitude and longitude of the - southwest corner of the topographic dataset contained within the file. - Therefore, the region of interest must lie north and east of the lati- - tude and longitude provided in the SRTM filename. - - Even greater resolution and accuracy can be obtained by using 1 arc- - second SRTM-1 Version 2.1 topography data. This data is available for - the United States and its territories and possessions, and may be down- - loaded from: - - _h_t_t_p_:_/_/_d_d_s_._c_r_._u_s_g_s_._g_o_v_/_s_r_t_m_/_v_e_r_s_i_o_n_2___1_/_S_R_T_M_1_/ - - High resolution SDF files for use with SSPPLLAATT!! HHDD may be generated from - data in this format using the ssrrttmm22ssddff--hhdd utility. - - Despite the higher accuracy that SRTM data has to offer, some voids in - the data sets exist. When voids are detected, the ssrrttmm22ssddff and - ssrrttmm22ssddff--hhdd utilities replace them with corresponding data found in - uussggss22ssddff generated SDF files. If USGS-derived SDF data is not avail- - able, voids are handled through adjacent pixel averaging, or direct re- - placement. - - SPLAT Data Files contain integer value topographic elevations in meters - referenced to mean sea level for 1-degree by 1-degree regions of the - Earth. SDF files can be read by SSPPLLAATT!! in either standard format - (_._s_d_f) as generated directly by the uussggss22ssddff, ssrrttmm22ssddff, and ssrrttmm22ssddff--hhdd - utilities, or in bzip2 compressed format (_._s_d_f_._b_z_2). Since uncom- - pressed files can be read slightly faster than files that have been - compressed, SSPPLLAATT!! searches for needed SDF data in uncompressed format - first. If uncompressed data cannot be located, SSPPLLAATT!! then searches - for data in bzip2 compressed format. If no compressed SDF files can be - found for the region requested, SSPPLLAATT!! assumes the region is over wa- - ter, and will assign an elevation of sea-level to these areas. - - This feature of SSPPLLAATT!! makes it possible to perform path analysis not - only over land, but also between coastal areas not represented by Digi- - tal Elevation Model data. However, this behavior of SSPPLLAATT!! under- - scores the importance of having all the SDF files required for the re- - gion being analyzed if meaningful results are to be expected. - -SSIITTEE LLOOCCAATTIIOONN ((QQTTHH)) FFIILLEESS - SSPPLLAATT!! imports site location information of transmitter and receiver - sites analyzed by the program from ASCII files having a _._q_t_h extension. - QTH files contain the site's name, the site's latitude (positive if - North of the equator, negative if South), the site's longitude (in de- - grees West, 0 to 360 degrees, or degrees East 0 to -360 degrees), and - the site's antenna height above ground level (AGL), each separated by a - single line-feed character. The antenna height is assumed to be speci- - fied in feet unless followed by the letter _m or the word _m_e_t_e_r_s in ei- - ther upper or lower case. Latitude and longitude information may be - expressed in either decimal format (74.6864) or degree, minute, second - (DMS) format (74 41 11.0). - - For example, a site location file describing television station WNJT- - DT, Trenton, NJ (_w_n_j_t_-_d_t_._q_t_h) might read as follows: - - - WNJT-DT - 40.2828 - 74.6864 - 990.00 - - Each transmitter and receiver site analyzed by SSPPLLAATT!! must be repre- - sented by its own site location (QTH) file. - -IIRRRREEGGUULLAARR TTEERRRRAAIINN MMOODDEELL PPAARRAAMMEETTEERR ((LLRRPP)) FFIILLEESS - Irregular Terrain Model Parameter data files are required for SSPPLLAATT!! - to determine RF path loss, field strength, or received signal power - level in either point-to-point or area prediction mode. Irregular Ter- - rain Model parameter data is read from files having the same base name - as the transmitter site QTH file, but with a _._l_r_p extension. SSPPLLAATT!! - LRP files share the following format (_w_n_j_t_-_d_t_._l_r_p): - - - 15.000 ; Earth Dielectric Constant (Relative permittivity) - 0.005 ; Earth Conductivity (Siemens per meter) - 301.000 ; Atmospheric Bending Constant (N-units) - 647.000 ; Frequency in MHz (20 MHz to 20 GHz) - 5 ; Radio Climate (5 = Continental Temperate) - 0 ; Polarization (0 = Horizontal, 1 = Vertical) - 0.50 ; Fraction of situations (50% of locations) - 0.90 ; Fraction of time (90% of the time) - 46000.0 ; Effective Radiated Power (ERP) in Watts (optional) - - If an LRP file corresponding to the tx_site QTH file cannot be found, - SSPPLLAATT!! scans the current working directory for the file "splat.lrp". - If this file cannot be found, then default parameters will be assigned - by SSPPLLAATT!! and a corresponding "splat.lrp" file containing these default - parameters will be written to the current working directory. The gen- - erated "splat.lrp" file can then be edited by the user as needed. - - Typical Earth dielectric constants and conductivity values are as fol- - lows: - - - Dielectric Constant Conductivity - Salt water : 80 5.000 - Good ground : 25 0.020 - Fresh water : 80 0.010 - Marshy land : 12 0.007 - Farmland, forest : 15 0.005 - Average ground : 15 0.005 - Mountain, sand : 13 0.002 - City : 5 0.001 - Poor ground : 4 0.001 - - - Radio climate codes used by SSPPLLAATT!! are as follows: - - 1: Equatorial (Congo) - 2: Continental Subtropical (Sudan) - 3: Maritime Subtropical (West coast of Africa) - 4: Desert (Sahara) - 5: Continental Temperate - 6: Maritime Temperate, over land (UK and west coasts of US & - EU) - 7: Maritime Temperate, over sea - - - The Continental Temperate climate is common to large land masses in the - temperate zone, such as the United States. For paths shorter than 100 - km, there is little difference between Continental and Maritime Temper- - ate climates. - - The seventh and eighth parameters in the _._l_r_p file correspond to the - statistical analysis provided by the ITM model. In this example, - SSPPLLAATT!! will return the maximum path loss occurring in 50% of situations - (fraction of situations, or Location Variability) 90% of the time - (fraction of time, or Time Variability). This is often denoted as - F(50,90) in Longley-Rice studies. In the United States, an F(50,90) - criteria is typically used for digital television (8-level VSB modula- - tion), while F(50,50) is used for analog (VSB-AM+NTSC) broadcasts. - - For further information on ITM propagation model parameters, please re- - fer to: _h_t_t_p_:_/_/_w_w_w_._i_t_s_._b_l_d_r_d_o_c_._g_o_v_/_r_e_s_o_u_r_c_e_s_/_r_a_d_i_o_-_p_r_o_p_a_g_a_t_i_o_n_-_s_o_f_t_- - _w_a_r_e_/_i_t_m_/_i_t_m_._a_s_p_x and _h_t_t_p_:_/_/_w_w_w_._s_o_f_t_w_r_i_g_h_t_._c_o_m_/_f_a_q_/_e_n_g_i_n_e_e_r_- - _i_n_g_/_p_r_o_p___l_o_n_g_l_e_y___r_i_c_e_._h_t_m_l - - The last parameter in the _._l_r_p file corresponds to the transmitter's - Effective Radiated Power (ERP), and is optional. If it is included in - the _._l_r_p file, then SSPPLLAATT!! will compute received signal strength levels - and field strength level contours when performing ITM studies. If the - parameter is omitted, path loss is computed instead. The ERP provided - in the _._l_r_p file can be overridden by using SSPPLLAATT!!'s _-_e_r_p command-line - switch. If the _._l_r_p file contains an ERP parameter and the generation - of path loss rather than field strength contours is desired, the ERP - can be assigned to zero using the _-_e_r_p switch without having to edit - the _._l_r_p file to accomplish the same result. - -CCIITTYY LLOOCCAATTIIOONN FFIILLEESS - The names and locations of cities, tower sites, or other points of in- - terest may be imported and plotted on topographic maps generated by - SSPPLLAATT!!. SSPPLLAATT!! imports the names of cities and locations from ASCII - files containing the location of interest's name, latitude, and longi- - tude. Each field is separated by a comma. Each record is separated by - a single line feed character. As was the case with the _._q_t_h files, - latitude and longitude information may be entered in either decimal or - degree, minute, second (DMS) format. - - For example (_c_i_t_i_e_s_._d_a_t): - - Teaneck, 40.891973, 74.014506 - Tenafly, 40.919212, 73.955892 - Teterboro, 40.859511, 74.058908 - Tinton Falls, 40.279966, 74.093924 - Toms River, 39.977777, 74.183580 - Totowa, 40.906160, 74.223310 - Trenton, 40.219922, 74.754665 - - A total of five separate city data files may be imported at a time, and - there is no limit to the size of these files. SSPPLLAATT!! reads city data - on a "first come/first served" basis, and plots only those locations - whose annotations do not conflict with annotations of locations read - earlier in the current city data file, or in previous files. This be- - havior minimizes clutter in SSPPLLAATT!! generated topographic maps, but also - mandates that important locations be placed toward the beginning of the - first city data file, and locations less important be positioned fur- - ther down the list or in subsequent data files. - - City data files may be generated manually using any text editor, im- - ported from other sources, or derived from data available from the U.S. - Census Bureau using the cciittyyddeeccooddeerr utility included with SSPPLLAATT!!. Such - data is available free of charge via the Internet at: _h_t_t_p_:_/_/_w_e_b_._a_r_- - _c_h_i_v_e_._o_r_g_/_w_e_b_/_2_0_1_3_0_3_3_1_1_7_2_8_0_0_/_h_t_t_p_:_/_/_w_w_w_._c_e_n_- - _s_u_s_._g_o_v_/_g_e_o_/_w_w_w_/_c_o_b_/_c_s_2_0_0_0_._h_t_m_l. Select the "ARC/INFO Ungenerate - (ASCII) format" near the bottom. - -CCAARRTTOOGGRRAAPPHHIICC BBOOUUNNDDAARRYY DDAATTAA FFIILLEESS - Cartographic boundary data may also be imported to plot the boundaries - of cities, counties, or states on topographic maps generated by SSPPLLAATT!!. - Such data must be of the form of ARC/INFO Ungenerate (ASCII Format) - Metadata Cartographic Boundary Files, and are available from the U.S. - Census Bureau via the Internet at: _h_t_t_p_:_/_/_w_e_b_._a_r_- - _c_h_i_v_e_._o_r_g_/_w_e_b_/_2_0_1_3_0_3_3_1_1_4_4_9_3_4_/_h_t_t_p_:_/_/_w_w_w_._c_e_n_- - _s_u_s_._g_o_v_/_g_e_o_/_w_w_w_/_c_o_b_/_c_o_2_0_0_0_._h_t_m_l and _h_t_t_p_:_/_/_w_e_b_._a_r_- - _c_h_i_v_e_._o_r_g_/_w_e_b_/_2_0_1_3_0_5_0_7_0_7_5_6_5_8_/_h_t_t_p_:_/_/_w_w_w_._c_e_n_- - _s_u_s_._g_o_v_/_g_e_o_/_w_w_w_/_c_o_b_/_p_l_2_0_0_0_._h_t_m_l. A total of five separate cartographic - boundary files may be imported at a time. It is not necessary to im- - port state boundaries if county boundaries have already been imported. - -PPRROOGGRRAAMM OOPPEERRAATTIIOONN - SSPPLLAATT!! is invoked via the command-line using a series of switches and - arguments. Since SSPPLLAATT!! is a CPU and memory intensive application, - this type of interface minimizes overhead and lends itself well to - scripted (batch) operations. SSPPLLAATT!!'s CPU and memory scheduling prior- - ity may be modified through the use of the Unix nniiccee command. - - The number and type of switches passed to SSPPLLAATT!! determine its mode of - operation and method of output data generation. Nearly all of SSPPLLAATT!!'s - switches may be cascaded in any order on the command line when invoking - the program. Simply typing splat on the command line will return a - summary of SSPPLLAATT!!'s command line options: - - --==[ SPLAT! v1.4.2 Available Options... ]==-- - -t txsite(s).qth (max of 4 with -c, max of 30 with -L) - -r rxsite.qth - -c plot LOS coverage of TX(s) with RX antenna at X feet/meters AGL - -L plot path loss map of TX based on an RX at X feet/meters AGL - -s filename(s) of city/site file(s) to import (5 max) - -b filename(s) of cartographic boundary file(s) to import (5 max) - -p filename of terrain profile graph to plot - -e filename of terrain elevation graph to plot - -h filename of terrain height graph to plot - -H filename of normalized terrain height graph to plot - -l filename of path loss graph to plot - -o filename of topographic map to generate (.ppm) - -u filename of user-defined terrain file to import - -d sdf file directory path (overrides path in ~/.splat_path file) - -m earth radius multiplier - -n do not plot LOS paths in .ppm maps - -N do not produce unnecessary site or obstruction reports - -f frequency for Fresnel zone calculation (MHz) - -R modify default range for -c or -L (miles/kilometers) - -sc display smooth rather than quantized contour levels - -db threshold beyond which contours will not be displayed - -nf do not plot Fresnel zones in height plots - -fz Fresnel zone clearance percentage (default = 60) - -gc ground clutter height (feet/meters) - -ngs display greyscale topography as white in .ppm files - -erp override ERP in .lrp file (Watts) - -ano name of alphanumeric output file - -ani name of alphanumeric input file - -udt name of user defined terrain input file - -kml generate Google Earth (.kml) compatible output - -geo generate an Xastir .geo georeference file (with .ppm output) - -dbm plot signal power level contours rather than field strength - -log copy command line string to this output file - -gpsav preserve gnuplot temporary working files after SPLAT! execution - -metric employ metric rather than imperial units for all user I/O - -olditm invoke older ITM propagation model rather than the newer ITWOM - The command-line options for splat and splat-hd are identical. The - -log command line switch causes all invoked command line options to be - logged to a file of your choosing (_l_o_g_f_i_l_e_._t_x_t): - - splat -t tx_site -r rx_site -s nj_cities -o topo_map -log logfile.txt - - SSPPLLAATT!! operates in two distinct modes: _p_o_i_n_t_-_t_o_-_p_o_i_n_t _m_o_d_e, and _a_r_e_a - _p_r_e_d_i_c_t_i_o_n _m_o_d_e. Either a line-of-sight (LOS) or Irregular Terrain - (ITM) propagation model may be invoked by the user. True Earth, four- - thirds Earth, or any other user-defined Earth radius may be specified - when performing line-of-sight analysis. - -PPOOIINNTT--TTOO--PPOOIINNTT AANNAALLYYSSIISS - SSPPLLAATT!! may be used to perform line-of-sight terrain analysis between - two specified site locations. For example: - - splat -t tx_site.qth -r rx_site.qth - - invokes a line-of-sight terrain analysis between the transmitter speci- - fied in _t_x___s_i_t_e_._q_t_h and receiver specified in _r_x___s_i_t_e_._q_t_h using a True - Earth radius model, and writes a SSPPLLAATT!! Path Analysis Report to the - current working directory. The report contains details of the trans- - mitter and receiver sites, and identifies the location of any obstruc- - tions detected along the line-of-sight path. If an obstruction can be - cleared by raising the receive antenna to a greater altitude, SSPPLLAATT!! - will indicate the minimum antenna height required for a line-of-sight - path to exist between the transmitter and receiver locations specified. - Note that imperial units (miles, feet) are specified unless the _-_m_e_t_r_i_c - switch is added to SSPPLLAATT!!'s command line options: - - splat -t tx_site.qth -r rx_site.qth -metric - - If the antenna must be raised a significant amount, this determination - may take a few moments. Note that the results provided are the _m_i_n_i_m_u_m - necessary for a line-of-sight path to exist, and in the case of this - simple example, do not take Fresnel zone clearance requirements into - consideration. - - _q_t_h extensions are assumed by SSPPLLAATT!! for QTH files, and are optional - when specifying -t and -r arguments on the command-line. SSPPLLAATT!! auto- - matically reads all SPLAT Data Files necessary to conduct the terrain - analysis between the sites specified. SSPPLLAATT!! searches for the re- - quired SDF files in the current working directory first. If the needed - files are not found, SSPPLLAATT!! then searches in the path specified by the - _-_d command-line switch: - - splat -t tx_site -r rx_site -d /cdrom/sdf/ - - An external directory path may be specified by placing a ".splat_path" - file under the user's home directory. This file must contain the full - directory path of last resort to all the SDF files. The path in the - _$_H_O_M_E_/_._s_p_l_a_t___p_a_t_h file must be of the form of a single line of ASCII - text: - - /opt/splat/sdf/ - - and can be generated using any text editor. - - A graph of the terrain profile between the receiver and transmitter lo- - cations as a function of distance from the receiver can be generated by - adding the _-_p switch: - - splat -t tx_site -r rx_site -p terrain_profile.png - - SSPPLLAATT!! invokes ggnnuupplloott when generating graphs. The filename extension - specified to SSPPLLAATT!! determines the format of the graph produced. _._p_n_g - will produce a 640x480 color PNG graphic file, while _._p_s or _._p_o_s_t_s_c_r_i_p_t - will produce postscript output. Output in formats such as GIF, Adobe - Illustrator, AutoCAD dxf, LaTeX, and many others are available. Please - consult ggnnuupplloott, and ggnnuupplloott's documentation for details on all the - supported output formats. - - A graph of elevations subtended by the terrain between the receiver and - transmitter as a function of distance from the receiver can be gener- - ated by using the _-_e switch: - - splat -t tx_site -r rx_site -e elevation_profile.png - - The graph produced using this switch illustrates the elevation and de- - pression angles resulting from the terrain between the receiver's loca- - tion and the transmitter site from the perspective of the receiver's - location. A second trace is plotted between the left side of the graph - (receiver's location) and the location of the transmitting antenna on - the right. This trace illustrates the elevation angle required for a - line-of-sight path to exist between the receiver and transmitter loca- - tions. If the trace intersects the elevation profile at any point on - the graph, then this is an indication that a line-of-sight path does - not exist under the conditions given, and the obstructions can be - clearly identified on the graph at the point(s) of intersection. - - A graph illustrating terrain height referenced to a line-of-sight path - between the transmitter and receiver may be generated using the _-_h - switch: - - splat -t tx_site -r rx_site -h height_profile.png - - A terrain height plot normalized to the transmitter and receiver an- - tenna heights can be obtained using the _-_H switch: - - splat -t tx_site -r rx_site -H normalized_height_profile.png - - A contour of the Earth's curvature is also plotted in this mode. - - The first Fresnel Zone, and 60% of the first Fresnel Zone can be added - to height profile graphs by adding the _-_f switch, and specifying a fre- - quency (in MHz) at which the Fresnel Zone should be modeled: - - splat -t tx_site -r rx_site -f 439.250 -H normalized_height_profile.png - - Fresnel Zone clearances other 60% can be specified using the _-_f_z switch - as follows: - - splat -t tx_site -r rx_site -f 439.250 -fz 75 -H height_profile2.png - - A graph showing ITM path loss may be plotted using the _-_l switch: - - splat -t tx_site -r rx_site -l path_loss_profile.png - - As before, adding the _-_m_e_t_r_i_c switch forces the graphs to be plotted - using metric units of measure. The _-_g_p_s_a_v switch instructs SSPPLLAATT!! to - preserve (rather than delete) the ggnnuupplloott working files generated dur- - ing SSPPLLAATT!! execution, allowing the user to edit these files and re-run - ggnnuupplloott if desired. - - When performing a point-to-point analysis, a SSPPLLAATT!! Path Analysis Re- - port is generated in the form of a text file with a _._t_x_t filename ex- - tension. The report contains bearings and distances between the trans- - mitter and receiver, as well as the free-space and ITM path loss for - the path being analyzed. The mode of propagation for the path is given - as _L_i_n_e_-_o_f_-_S_i_g_h_t, _S_i_n_g_l_e _H_o_r_i_z_o_n, _D_o_u_b_l_e _H_o_r_i_z_o_n, _D_i_f_f_r_a_c_t_i_o_n _D_o_m_i_n_a_n_t, - or _T_r_o_p_o_s_c_a_t_t_e_r _D_o_m_i_n_a_n_t. Additionally, if the receiver is located at - the peak of a single obstruction or at the peak of a second obstruc- - tion, SSPPLLAATT!! will report _R_X _a_t _P_e_a_k _T_e_r_r_a_i_n _A_l_o_n_g _P_a_t_h when operating - under the ITWOM propagation model. - - Distances and locations to known obstructions along the path between - transmitter and receiver are also provided. If the transmitter's ef- - fective radiated power is specified in the transmitter's corresponding - _._l_r_p file, then predicted signal strength and antenna voltage at the - receiving location is also provided in the Path Analysis Report. - - To determine the signal-to-noise (SNR) ratio at remote location where - random Johnson (thermal) noise is the primary limiting factor in recep- - tion: - - _S_N_R=_T-_N_J-_L+_G-_N_F - - where TT is the ERP of the transmitter in dBW in the direction of the - receiver, NNJJ is Johnson Noise in dBW (-136 dBW for a 6 MHz television - channel), LL is the path loss provided by SSPPLLAATT!! in dB (as a _p_o_s_i_t_i_v_e - number), GG is the receive antenna gain in dB over isotropic, and NNFF is - the receiver noise figure in dB. - - TT may be computed as follows: - - _T=_T_I+_G_T - - where TTII is actual amount of RF power delivered to the transmitting an- - tenna in dBW, GGTT is the transmitting antenna gain (over isotropic) in - the direction of the receiver (or the horizon if the receiver is over - the horizon). - - To compute how much more signal is available over the minimum to neces- - sary to achieve a specific signal-to-noise ratio: - - _S_i_g_n_a_l__M_a_r_g_i_n=_S_N_R-_S - - where SS is the minimum required SNR ratio (15.5 dB for ATSC (8-level - VSB) DTV, 42 dB for analog NTSC television). - - A topographic map may be generated by SSPPLLAATT!! to visualize the path be- - tween the transmitter and receiver sites from yet another perspective. - Topographic maps generated by SSPPLLAATT!! display elevations using a loga- - rithmic grayscale, with higher elevations represented through brighter - shades of gray. The dynamic range of the image is scaled between the - highest and lowest elevations present in the map. The only exception - to this is sea-level, which is represented using the color blue. - - Topographic output is invoked using the _-_o switch: - - splat -t tx_site -r rx_site -o topo_map.ppm - - The _._p_p_m extension on the output filename is assumed by SSPPLLAATT!!, and is - optional. - - In this example, _t_o_p_o___m_a_p_._p_p_m will illustrate the locations of the - transmitter and receiver sites specified. In addition, the great cir- - cle path between the two sites will be drawn over locations for which - an unobstructed path exists to the transmitter at a receiving antenna - height equal to that of the receiver site (specified in _r_x___s_i_t_e_._q_t_h). - - It may desirable to populate the topographic map with names and loca- - tions of cities, tower sites, or other important locations. A city - file may be passed to SSPPLLAATT!! using the _-_s switch: - - splat -t tx_site -r rx_site -s cities.dat -o topo_map - - Up to five separate city files may be passed to SSPPLLAATT!! at a time fol- - lowing the _-_s switch. - - County and state boundaries may be added to the map by specifying up to - five U.S. Census Bureau cartographic boundary files using the _-_b - switch: - - splat -t tx_site -r rx_site -b co34_d00.dat -o topo_map - - In situations where multiple transmitter sites are in use, as many as - four site locations may be passed to SSPPLLAATT!! at a time for analysis: - - splat -t tx_site1 tx_site2 tx_site3 tx_site4 -r rx_site -p profile.png - - In this example, four separate terrain profiles and obstruction reports - will be generated by SSPPLLAATT!!. A single topographic map can be specified - using the _-_o switch, and line-of-sight paths between each transmitter - and the receiver site indicated will be produced on the map, each in - its own color. The path between the first transmitter specified to the - receiver will be in green, the path between the second transmitter and - the receiver will be in cyan, the path between the third transmitter - and the receiver will be in violet, and the path between the fourth - transmitter and the receiver will be in sienna. - - SSPPLLAATT!! generated topographic maps are 24-bit TrueColor Portable PixMap - (PPM) images. They may be viewed, edited, or converted to other - graphic formats by popular image viewing applications such as xxvv, TThhee - GGIIMMPP, IImmaaggeeMMaaggiicckk, and XXPPaaiinntt. PNG format is highly recommended for - lossless compressed storage of SSPPLLAATT!! generated topographic output - files. IImmaaggeeMMaaggiicckk's command-line utility easily converts SSPPLLAATT!!'s PPM - files to PNG format: - - convert splat_map.ppm splat_map.png - - Another excellent PPM to PNG command-line utility is available at: - _h_t_t_p_:_/_/_w_w_w_._l_i_b_p_n_g_._o_r_g_/_p_u_b_/_p_n_g_/_b_o_o_k_/_s_o_u_r_c_e_s_._h_t_m_l. As a last resort, PPM - files may be compressed using the bzip2 utility, and read directly by - TThhee GGIIMMPP in this format. - - The _-_n_g_s option assigns all terrain to the color white, and can be used - when it is desirable to generate a map that is devoid of terrain: - - splat -t tx_site -r rx_site -b co34_d00.dat -ngs -o white_map - - The resulting .ppm image file can be converted to .png format with a - transparent background using IImmaaggeeMMaaggiicckk's ccoonnvveerrtt utility: - - convert -transparent "#FFFFFF" white_map.ppm transparent_map.png - -RREEGGIIOONNAALL CCOOVVEERRAAGGEE AANNAALLYYSSIISS - SSPPLLAATT!! can analyze a transmitter or repeater site, or network of sites, - and predict the regional coverage for each site specified. In this - mode, SSPPLLAATT!! can generate a topographic map displaying the geometric - line-of-sight coverage area of the sites based on the location of each - site and the height of receive antenna wishing to communicate with the - site in question. A regional analysis may be performed by SSPPLLAATT!! using - the _-_c switch as follows: - - splat -t tx_site -c 30.0 -s cities.dat -b co34_d00.dat -o tx_coverage - - In this example, SSPPLLAATT!! generates a topographic map called _t_x___c_o_v_e_r_- - _a_g_e_._p_p_m that illustrates the predicted line-of-sight regional coverage - of _t_x___s_i_t_e to receiving locations having antennas 30.0 feet above - ground level (AGL). If the _-_m_e_t_r_i_c switch is used, the argument fol- - lowing the _-_c switch is interpreted as being in meters rather than in - feet. The contents of _c_i_t_i_e_s_._d_a_t are plotted on the map, as are the - cartographic boundaries contained in the file _c_o_3_4___d_0_0_._d_a_t. - - When plotting line-of-sight paths and areas of regional coverage, - SSPPLLAATT!! by default does not account for the effects of atmospheric bend- - ing. However, this behavior may be modified by using the Earth radius - multiplier (_-_m) switch: - - splat -t wnjt-dt -c 30.0 -m 1.333 -s cities.dat -b counties.dat -o - map.ppm - - An earth radius multiplier of 1.333 instructs SSPPLLAATT!! to use the "four- - thirds earth" model for line-of-sight propagation analysis. Any appro- - priate earth radius multiplier may be selected by the user. - - When performing a regional analysis, SSPPLLAATT!! generates a site report for - each station analyzed. SSPPLLAATT!! site reports contain details of the - site's geographic location, its height above mean sea level, the an- - tenna's height above mean sea level, the antenna's height above average - terrain, and the height of the average terrain calculated toward the - bearings of 0, 45, 90, 135, 180, 225, 270, and 315 degrees azimuth. - -DDEETTEERRMMIINNIINNGG MMUULLTTIIPPLLEE RREEGGIIOONNSS OOFF LLOOSS CCOOVVEERRAAGGEE - SSPPLLAATT!! can also display line-of-sight coverage areas for as many as - four separate transmitter sites on a common topographic map. For exam- - ple: - - splat -t site1 site2 site3 site4 -c 10.0 -metric -o network.ppm - - plots the regional line-of-sight coverage of site1, site2, site3, and - site4 based on a receive antenna located 10.0 meters above ground - level. A topographic map is then written to the file _n_e_t_w_o_r_k_._p_p_m. The - line-of-sight coverage area of the transmitters are plotted as follows - in the colors indicated (along with their corresponding RGB values in - decimal): - - site1: Green (0,255,0) - site2: Cyan (0,255,255) - site3: Medium Violet (147,112,219) - site4: Sienna 1 (255,130,71) - site1 + site2: Yellow (255,255,0) - site1 + site3: Pink (255,192,203) - site1 + site4: Green Yellow (173,255,47) - site2 + site3: Orange (255,165,0) - site2 + site4: Dark Sea Green 1 (193,255,193) - site3 + site4: Dark Turquoise (0,206,209) - site1 + site2 + site3: Dark Green (0,100,0) - site1 + site2 + site4: Blanched Almond (255,235,205) - site1 + site3 + site4: Medium Spring Green (0,250,154) - site2 + site3 + site4: Tan (210,180,140) - site1 + site2 + site3 + site4: Gold2 (238,201,0) - - If separate _._q_t_h files are generated, each representing a common site - location but a different antenna height, a single topographic map il- - lustrating the regional coverage from as many as four separate loca- - tions on a single tower may be generated by SSPPLLAATT!!. - -PPAATTHH LLOOSSSS AANNAALLYYSSIISS - If the _-_c switch is replaced by a _-_L switch, an ITM path loss map, a - field strength map, or a received power map for the transmitter site(s) - specified may be generated. The type of analysis generated depends on - the presence or absence of an _-_e_r_p switch followed by a positive valued - argument (or equivalent ERP entry in the appropriate _._l_r_p file), or the - presence or absence of the _-_d_B_m switch. The following example would - generate an ITM path loss map: - - splat -t wnjt -L 30.0 -s cities.dat -b co34_d00.dat -o path_loss_map - - In this mode, SSPPLLAATT!! generates a multi-color map illustrating expected - signal levels in areas surrounding the transmitter site. A legend at - the bottom of the map correlates each color with a specific path loss - range in decibels. - - The _-_d_b switch allows a threshold to be set beyond which contours will - not be plotted on the map. For example, if a path loss beyond -140 dB - is irrelevant to the survey being conducted, SSPPLLAATT!!'s path loss plot - can be constrained to the region bounded by the 140 dB attenuation con- - tour as follows: - - splat -t wnjt-dt -L 30.0 -s cities.dat -b co34_d00.dat -db 140 -o - plot.ppm - - The path loss contour threshold may be expressed as either a positive - or negative quantity. - - The path loss analysis range may be modified to a user-specific dis- - tance using the _-_R switch. The argument must be given in miles (or - kilometers if the _-_m_e_t_r_i_c switch is used). If a range wider than the - generated topographic map is specified, SSPPLLAATT!! will perform ITM path - loss calculations between all four corners of the area prediction map. - - The colors used to illustrate contour regions in SSPPLLAATT!! generated cov- - erage maps may be tailored by the user by creating or modifying - SSPPLLAATT!!'s color definition files. SSPPLLAATT!! color definition files have - the same base name as the transmitter's _._q_t_h file, but carry _._l_c_f, - _._s_c_f, and _._d_c_f extensions. If the necessary file does not exist in the - current working when SSPPLLAATT!! is run, a file containing default color - definition parameters that is suitable for manual editing by the user - is written into the current directory. - - When a regional ITM analysis is performed and the transmitter's ERP is - not specified or is zero, a _._l_c_f path loss color definition file corre- - sponding to the transmitter site (_._q_t_h) is read by SSPPLLAATT!! from the cur- - rent working directory. If a _._l_c_f file corresponding to the transmit- - ter site is not found, then a default file suitable for manual editing - by the user is automatically generated by SSPPLLAATT!!. - - A path loss color definition file possesses the following structure - (_w_n_j_t_-_d_t_._l_c_f): - - ; SPLAT! Auto-generated Path-Loss Color Definition ("wnjt-dt.lcf") - File - ; - ; Format for the parameters held in this file is as follows: - ; - ; dB: red, green, blue - ; - ; ...where "dB" is the path loss (in dB) and - ; "red", "green", and "blue" are the corresponding RGB color - ; definitions ranging from 0 to 255 for the region specified. - ; - ; The following parameters may be edited and/or expanded - ; for future runs of SPLAT! A total of 32 contour regions - ; may be defined in this file. - ; - ; - 80: 255, 0, 0 - 90: 255, 128, 0 - 100: 255, 165, 0 - 110: 255, 206, 0 - 120: 255, 255, 0 - 130: 184, 255, 0 - 140: 0, 255, 0 - 150: 0, 208, 0 - 160: 0, 196, 196 - 170: 0, 148, 255 - 180: 80, 80, 255 - 190: 0, 38, 255 - 200: 142, 63, 255 - 210: 196, 54, 255 - 220: 255, 0, 255 - 230: 255, 194, 204 - - - If the path loss is less than 80 dB, the color Red (RGB = 255, 0, 0) is - assigned to the region. If the path loss is greater than or equal to - 80 dB, but less than 90 db, then Dark Orange (255, 128, 0) is assigned - to the region. Orange (255, 165, 0) is assigned to regions having a - path loss greater than or equal to 90 dB, but less than 100 dB, and so - on. Greyscale terrain is displayed beyond the 230 dB path loss con- - tour. Adding the _-_s_c switch will smooth the transitions between the - specified quantized contour levels. - -FFIIEELLDD SSTTRREENNGGTTHH AANNAALLYYSSIISS - If the transmitter's effective radiated power (ERP) is specified in the - transmitter's _._l_r_p file, or expressed on the command-line using the - _-_e_r_p switch, field strength contours referenced to decibels over one - microvolt per meter (dBuV/m) rather than path loss are produced: - - splat -t wnjt-dt -L 30.0 -erp 46000 -db 30 -o plot.ppm - - The _-_d_b switch can be used in this mode as before to limit the extent - to which field strength contours are plotted. When plotting field - strength contours, however, the argument given is interpreted as being - expressed in dBuV/m. - - SSPPLLAATT!! field strength color definition files share a very similar - structure to _._l_c_f files used for plotting path loss: - - ; SPLAT! Auto-generated Signal Color Definition ("wnjt-dt.scf") File - ; - ; Format for the parameters held in this file is as follows: - ; - ; dBuV/m: red, green, blue - ; - ; ...where "dBuV/m" is the signal strength (in dBuV/m) and - ; "red", "green", and "blue" are the corresponding RGB color - ; definitions ranging from 0 to 255 for the region specified. - ; - ; The following parameters may be edited and/or expanded - ; for future runs of SPLAT! A total of 32 contour regions - ; may be defined in this file. - ; - ; - 128: 255, 0, 0 - 118: 255, 165, 0 - 108: 255, 206, 0 - 98: 255, 255, 0 - 88: 184, 255, 0 - 78: 0, 255, 0 - 68: 0, 208, 0 - 58: 0, 196, 196 - 48: 0, 148, 255 - 38: 80, 80, 255 - 28: 0, 38, 255 - 18: 142, 63, 255 - 8: 140, 0, 128 - - - If the signal strength is greater than or equal to 128 dB over 1 micro- - volt per meter (dBuV/m), the color Red (255, 0, 0) is displayed for the - region. If the signal strength is greater than or equal to 118 dBuV/m, - but less than 128 dBuV/m, then the color Orange (255, 165, 0) is dis- - played, and so on. Greyscale terrain is displayed for regions with - signal strengths less than 8 dBuV/m. - - Signal strength contours for some common VHF and UHF broadcasting ser- - vices in the United States are as follows: - - - - Analog Television Broadcasting - ------------------------------ - Channels 2-6: City Grade: >= 74 dBuV/m - Grade A: >= 68 dBuV/m - Grade B: >= 47 dBuV/m - -------------------------------------------- - Channels 7-13: City Grade: >= 77 dBuV/m - Grade A: >= 71 dBuV/m - Grade B: >= 56 dBuV/m - -------------------------------------------- - Channels 14-69: Indoor Grade: >= 94 dBuV/m - City Grade: >= 80 dBuV/m - Grade A: >= 74 dBuV/m - Grade B: >= 64 dBuV/m - Digital Television Broadcasting - ------------------------------- - Channels 2-6: City Grade: >= 35 dBuV/m - Service Threshold: >= 28 dBuV/m - -------------------------------------------- - Channels 7-13: City Grade: >= 43 dBuV/m - Service Threshold: >= 36 dBuV/m - -------------------------------------------- - Channels 14-69: City Grade: >= 48 dBuV/m - Service Threshold: >= 41 dBuV/m - NOAA Weather Radio (162.400 - 162.550 MHz) - ------------------------------------------ - Reliable: >= 18 dBuV/m - Not reliable: < 18 dBuV/m - Unlikely to receive: < 0 dBuV/m - FM Radio Broadcasting (88.1 - 107.9 MHz) - ---------------------------------------- - Analog Service Contour: 60 dBuV/m - Digital Service Contour: 65 dBuV/m - -RREECCEEIIVVEEDD PPOOWWEERR LLEEVVEELL AANNAALLYYSSIISS - If the transmitter's effective radiated power (ERP) is specified in the - transmitter's _._l_r_p file, or expressed on the command-line using the - _-_e_r_p switch, and the _-_d_b_m switch is invoked, received power level con- - tours referenced to decibels over one milliwatt (dBm) are produced: - - splat -t wnjt-dt -L 30.0 -erp 46000 -dbm -db -100 -o plot.ppm - - The _-_d_b switch can be used to limit the extent to which received power - level contours are plotted. When plotting power level contours, the - argument given is interpreted as being expressed in dBm. - - SSPPLLAATT!! received power level color definition files share a very similar - structure to the color definition files described earlier, except that - the power levels in dBm may be either positive or negative, and are - limited to a range between +40 dBm and -200 dBm: - - ; SPLAT! Auto-generated DBM Signal Level Color Definition ("wnjt- - dt.dcf") File - ; - ; Format for the parameters held in this file is as follows: - ; - ; dBm: red, green, blue - ; - ; ...where "dBm" is the received signal power level between +40 dBm - ; and -200 dBm, and "red", "green", and "blue" are the corresponding - ; RGB color definitions ranging from 0 to 255 for the region speci- - fied. - ; - ; The following parameters may be edited and/or expanded - ; for future runs of SPLAT! A total of 32 contour regions - ; may be defined in this file. - ; - ; - +0: 255, 0, 0 - -10: 255, 128, 0 - -20: 255, 165, 0 - -30: 255, 206, 0 - -40: 255, 255, 0 - -50: 184, 255, 0 - -60: 0, 255, 0 - -70: 0, 208, 0 - -80: 0, 196, 196 - -90: 0, 148, 255 - -100: 80, 80, 255 - -110: 0, 38, 255 - -120: 142, 63, 255 - -130: 196, 54, 255 - -140: 255, 0, 255 - -150: 255, 194, 204 - -AANNTTEENNNNAA RRAADDIIAATTIIOONN PPAATTTTEERRNN PPAARRAAMMEETTEERRSS - Normalized field voltage patterns for a transmitting antenna's horizon- - tal and vertical planes are imported automatically into SSPPLLAATT!! when a - path loss, field strength, or received power level coverage analysis is - performed. Antenna pattern data is read from a pair of files having - the same base name as the transmitter and LRP files, but with _._a_z and - _._e_l extensions for azimuth and elevation pattern files, respectively. - Specifications regarding pattern rotation (if any) and mechanical beam - tilt and tilt direction (if any) are also contained within SSPPLLAATT!! an- - tenna pattern files. - - For example, the first few lines of a SSPPLLAATT!! azimuth pattern file might - appear as follows (_k_v_e_a_._a_z): - - 183.0 - 0 0.8950590 - 1 0.8966406 - 2 0.8981447 - 3 0.8995795 - 4 0.9009535 - 5 0.9022749 - 6 0.9035517 - 7 0.9047923 - 8 0.9060051 - - The first line of the _._a_z file specifies the amount of azimuthal pat- - tern rotation (measured clockwise in degrees from True North) to be ap- - plied by SSPPLLAATT!! to the data contained in the _._a_z file. This is fol- - lowed by azimuth headings (0 to 360 degrees) and their associated nor- - malized field patterns (0.000 to 1.000) separated by whitespace. - - The structure of SSPPLLAATT!! elevation pattern files is slightly different. - The first line of the _._e_l file specifies the amount of mechanical beam - tilt applied to the antenna. Note that a _d_o_w_n_w_a_r_d _t_i_l_t (below the - horizon) is expressed as a _p_o_s_i_t_i_v_e _a_n_g_l_e, while an _u_p_w_a_r_d _t_i_l_t (above - the horizon) is expressed as a _n_e_g_a_t_i_v_e _a_n_g_l_e. This data is followed - by the azimuthal direction of the tilt, separated by whitespace. - - The remainder of the file consists of elevation angles and their corre- - sponding normalized voltage radiation pattern (0.000 to 1.000) values - separated by whitespace. Elevation angles must be specified over a - -10.0 to +90.0 degree range. As was the convention with mechanical - beamtilt, _n_e_g_a_t_i_v_e _e_l_e_v_a_t_i_o_n _a_n_g_l_e_s are used to represent elevations - _a_b_o_v_e _t_h_e _h_o_r_i_z_o_n, while _p_o_s_i_t_i_v_e _a_n_g_l_e_s represents elevations _b_e_l_o_w - _t_h_e _h_o_r_i_z_o_n. - - For example, the first few lines a SSPPLLAATT!! elevation pattern file might - appear as follows (_k_v_e_a_._e_l): - - 1.1 130.0 - -10.0 0.172 - -9.5 0.109 - -9.0 0.115 - -8.5 0.155 - -8.0 0.157 - -7.5 0.104 - -7.0 0.029 - -6.5 0.109 - -6.0 0.185 - - In this example, the antenna is mechanically tilted downward 1.1 de- - grees towards an azimuth of 130.0 degrees. - - For best results, the resolution of azimuth pattern data should be - specified to the nearest degree azimuth, and elevation pattern data - resolution should be specified to the nearest 0.01 degrees. If the - pattern data specified does not reach this level of resolution, SSPPLLAATT!! - will interpolate the values provided to determine the data at the re- - quired resolution, although this may result in a loss in accuracy. - -EEXXPPOORRTTIINNGG AANNDD IIMMPPOORRTTIINNGG RREEGGIIOONNAALL CCOONNTTOOUURR DDAATTAA - Performing a regional coverage analysis based on an ITM path analysis - can be a very time consuming process, especially if the analysis is - performed repeatedly to discover what effects changes to a transmit- - ter's antenna radiation pattern make to the predicted coverage area. - - This process can be expedited by exporting the contour data produced by - SSPPLLAATT!! to an alphanumeric output _(_._a_n_o_) file. The data contained in - this file can then be modified to incorporate antenna pattern effects, - and imported back into SSPPLLAATT!! to quickly produce a revised contour map. - Depending on the way in which SSPPLLAATT!! is invoked, alphanumeric output - files can describe regional path loss, signal strength, or received - signal power levels. - - For example, an alphanumeric output file containing path loss informa- - tion can be generated by SSPPLLAATT!! for a receive site 30 feet above ground - level over a 50 mile radius surrounding a transmitter site to a maximum - path loss of 140 dB (assuming ERP is not specified in the transmitter's - _._l_r_p file) using the following syntax: - - splat -t kvea -L 30.0 -R 50.0 -db 140 -ano pathloss.dat - - If ERP is specified in the _._l_r_p file or on the command line through the - _-_e_r_p switch, the alphanumeric output file will instead contain pre- - dicted field values in dBuV/m. If the _-_d_B_m command line switch is - used, then the alphanumeric output file will contain receive signal - power levels in dBm. - - SSPPLLAATT!! alphanumeric output files can exceed many hundreds of megabytes - in size. They contain information relating to the boundaries of the - region they describe followed by latitudes (degrees North), longitudes - (degrees West), azimuths (referenced to True North), elevations (to the - first obstruction), followed by either path loss (in dB), received - field strength (in dBuV/m), or received signal power level (in dBm) - wwiitthhoouutt rreeggaarrdd ttoo tthhee ttrraannssmmiittttiinngg aanntteennnnaa''ss rraaddiiaattiioonn ppaatttteerrnn. - - The first few lines of a SSPPLLAATT!! alphanumeric output file could take on - the following appearance (_p_a_t_h_l_o_s_s_._d_a_t): - - 119, 117 ; max_west, min_west - 35, 34 ; max_north, min_north - 34.2265424, 118.0631096, 48.199, -32.747, 67.70 - 34.2270358, 118.0624421, 48.199, -19.161, 73.72 - 34.2275292, 118.0617747, 48.199, -13.714, 77.24 - 34.2280226, 118.0611072, 48.199, -10.508, 79.74 - 34.2290094, 118.0597723, 48.199, -11.806, 83.26 * - 34.2295028, 118.0591048, 48.199, -11.806, 135.47 * - 34.2299962, 118.0584373, 48.199, -15.358, 137.06 * - 34.2304896, 118.0577698, 48.199, -15.358, 149.87 * - 34.2314763, 118.0564348, 48.199, -15.358, 154.16 * - 34.2319697, 118.0557673, 48.199, -11.806, 153.42 * - 34.2324631, 118.0550997, 48.199, -11.806, 137.63 * - 34.2329564, 118.0544322, 48.199, -11.806, 139.23 * - 34.2339432, 118.0530971, 48.199, -11.806, 139.75 * - 34.2344365, 118.0524295, 48.199, -11.806, 151.01 * - 34.2349299, 118.0517620, 48.199, -11.806, 147.71 * - 34.2354232, 118.0510944, 48.199, -15.358, 159.49 * - 34.2364099, 118.0497592, 48.199, -15.358, 151.67 * - - Comments can be placed in the file if they are preceeded by a semi- - colon. The vviimm text editor has proven capable of editing files of this - size. - - Note as was the case in the antenna pattern files, negative elevation - angles refer to upward tilt (above the horizon), while positive angles - refer to downward tilt (below the horizon). These angles refer to the - elevation to the receiving antenna at the height above ground level - specified using the _-_L switch _i_f the path between transmitter and re- - ceiver is unobstructed. If the path between the transmitter and re- - ceiver is obstructed, an asterisk (*) is placed on the end of the line, - and the elevation angle returned by SSPPLLAATT!! refers the elevation angle - to the first obstruction rather than the geographic location specified - on the line. This is done in response to the fact that the ITM model - considers the energy reaching a distant point over an obstructed path - to be the result of the energy scattered over the top of the first ob- - struction along the path. Since energy cannot reach the obstructed lo- - cation directly, the actual elevation angle to the destination over - such a path becomes irrelevant. - - When modifying SSPPLLAATT!! path loss files to reflect antenna pattern data, - _o_n_l_y _t_h_e _l_a_s_t _n_u_m_e_r_i_c _c_o_l_u_m_n should be amended to reflect the antenna's - normalized gain at the azimuth and elevation angles specified in the - file. Programs and scripts capable of performing this task are left as - an exercise for the user. - - Modified alphanumeric output files can be imported back into SSPPLLAATT!! - for generating revised coverage maps provided that the ERP and -dBm op- - tions are used as they were when the alphanumeric output file was orig- - inally generated: - - splat -t kvea -ani pathloss.dat -s city.dat -b county.dat -o map.ppm - - Note that alphanumeric output files generated by splat cannot be used - with splat-hd, or vice-versa due to the resolution incompatibility be- - tween the two versions of the program. Also, each of the three types - of alphanumeric output files are incompatible with one another, so a - file containing path loss data cannot be imported into SSPPLLAATT!! to pro- - duce signal strength or received power level contours, etc. - -UUSSEERR--DDEEFFIINNEEDD TTEERRRRAAIINN IINNPPUUTT FFIILLEESS - A user-defined terrain file is a user-generated text file containing - latitudes, longitudes, and heights above ground level of specific ter- - rain features believed to be of importance to the SSPPLLAATT!! analysis being - conducted, but noticeably absent from the SDF files being used. A - user-defined terrain file is imported into a SSPPLLAATT!! analysis using the - _-_u_d_t switch: - - splat -t tx_site -r rx_site -udt udt_file.txt -o map.ppm - - A user-defined terrain file has the following appearance and structure: - - 40.32180556, 74.1325, 100.0 meters - 40.321805, 74.1315, 300.0 - 40.3218055, 74.1305, 100.0 meters - - Terrain height is interpreted as being described in feet above ground - level unless followed by the word _m_e_t_e_r_s, and is added _o_n _t_o_p _o_f the - terrain specified in the SDF data for the locations specified. Be - aware that each user-defined terrain feature specified will be inter- - preted as being 3-arc seconds in both latitude and longitude in splat - and 1 arc-second in latitude and longitude in splat-hd. Features de- - scribed in the user-defined terrain file that overlap previously de- - fined features in the file are ignored by SSPPLLAATT!! to avoid ambiguity. - -GGRROOUUNNDD CCLLUUTTTTEERR - The height of ground clutter can be specified using the _-_g_c switch: - - splat -t wnjt-dt -r kd2bd -gc 30.0 -H wnjt-dt_path.png - - The _-_g_c switch as the effect of raising the overall terrain by the - specified amount in feet (or meters if the _-_m_e_t_r_i_c switch is invoked), - except over areas at sea-level and at the transmitting and receiving - antenna locations. - -SSIIMMPPLLEE TTOOPPOOGGRRAAPPHHIICC MMAAPP GGEENNEERRAATTIIOONN - In certain situations it may be desirable to generate a topographic map - of a region without plotting coverage areas, line-of-sight paths, or - generating obstruction reports. There are several ways of doing this. - If one wishes to generate a topographic map illustrating the location - of a transmitter and receiver site along with a brief text report de- - scribing the locations and distances between the sites, the _-_n switch - should be invoked as follows: - - splat -t tx_site -r rx_site -n -o topo_map.ppm - - If no text report is desired, then the _-_N switch is used: - - splat -t tx_site -r rx_site -N -o topo_map.ppm - - If a topographic map centered about a single site out to a minimum - specified radius is desired instead, a command similar to the following - can be used: - - splat -t tx_site -R 50.0 -s NJ_Cities -b NJ_Counties -o topo_map.ppm - - where -R specifies the minimum radius of the map in miles (or kilome- - ters if the _-_m_e_t_r_i_c switch is used). Note that the tx_site name and - location are not displayed in this example. If display of this infor- - mation is desired, simply create a SSPPLLAATT!! city file (_-_s option) and ap- - pend it to the list of command-line options illustrated above. - - If the _-_o switch and output filename are omitted in these operations, - topographic output is written to a file named _t_x___s_i_t_e_._p_p_m in the cur- - rent working directory by default. - -GGEEOORREEFFEERREENNCCEE FFIILLEE GGEENNEERRAATTIIOONN - Topographic, coverage (_-_c), and path loss contour (_-_L) maps generated - by SSPPLLAATT!! may be imported into XXaassttiirr (X Amateur Station Tracking and - Information Reporting) software by generating a georeference file using - SSPPLLAATT!!'s _-_g_e_o switch: - - splat -t kd2bd -R 50.0 -s NJ_Cities -b NJ_Counties -geo -o map.ppm - - The georeference file generated will have the same base name as the _-_o - file specified, but have a _._g_e_o extension, and permit proper interpre- - tation and display of SSPPLLAATT!!'s .ppm graphics in XXaassttiirr software. - -GGOOOOGGLLEE MMAAPP KKMMLL FFIILLEE GGEENNEERRAATTIIOONN - Keyhole Markup Language files compatible with GGooooggllee EEaarrtthh may be gen- - erated by SSPPLLAATT!! when performing point-to-point or regional coverage - analyses by invoking the _-_k_m_l switch: - - splat -t wnjt-dt -r kd2bd -kml - - The KML file generated will have the same filename structure as a Path - Analysis Report for the transmitter and receiver site names given, ex- - cept it will carry a _._k_m_l extension. - - Once loaded into GGooooggllee EEaarrtthh (File --> Open), the KML file will anno- - tate the map display with the names of the transmitter and receiver - site locations. The viewpoint of the image will be from the position - of the transmitter site looking towards the location of the receiver. - The point-to-point path between the sites will be displayed as a white - line while the RF line-of-sight path will be displayed in green. - GGooooggllee EEaarrtthh's navigation tools allow the user to "fly" around the - path, identify landmarks, roads, and other featured content. - - When performing regional coverage analysis, the _._k_m_l file generated by - SSPPLLAATT!! will permit path loss or signal strength contours to be layered - on top of GGooooggllee EEaarrtthh's display along with a corresponding color key - in the upper left-hand corner. The generated _._k_m_l file will have the - same basename as that of the _._p_p_m file normally generated. - -DDEETTEERRMMIINNAATTIIOONN OOFF AANNTTEENNNNAA HHEEIIGGHHTT AABBOOVVEE AAVVEERRAAGGEE TTEERRRRAAIINN - SSPPLLAATT!! determines antenna height above average terrain (HAAT) according - to the procedure defined by Federal Communications Commission Part - 73.313(d). According to this definition, terrain elevations along - eight radials between 2 and 10 miles (3 and 16 kilometers) from the - site being analyzed are sampled and averaged for each 45 degrees of az- - imuth starting with True North. If one or more radials lie entirely - over water or over land outside the United States (areas for which no - USGS topography data is available), then those radials are omitted from - the calculation of average terrain. - - Note that SRTM-3 elevation data, unlike older USGS data, extends beyond - the borders of the United States. Therefore, HAAT results may not be - in full compliance with FCC Part 73.313(d) in areas along the borders - of the United States if the SDF files used by SSPPLLAATT!! are SRTM-derived. - - When performing point-to-point terrain analysis, SSPPLLAATT!! determines the - antenna height above average terrain only if enough topographic data - has already been loaded by the program to perform the point-to-point - analysis. In most cases, this will be true, unless the site in ques- - tion does not lie within 10 miles of the boundary of the topography - data in memory. - - When performing area prediction analysis, enough topography data is - normally loaded by SSPPLLAATT!! to perform average terrain calculations. Un- - der such conditions, SSPPLLAATT!! will provide the antenna height above aver- - age terrain as well as the average terrain above mean sea level for az- - imuths of 0, 45, 90, 135, 180, 225, 270, and 315 degrees, and include - such information in the generated site report. If one or more of the - eight radials surveyed fall over water, or over regions for which no - SDF data is available, SSPPLLAATT!! reports _N_o _T_e_r_r_a_i_n for the radial paths - affected. - -AADDDDIITTIIOONNAALL IINNFFOORRMMAATTIIOONN - The latest news and information regarding SSPPLLAATT!! software is available - through the official SSPPLLAATT!! software web page located at: - _h_t_t_p_:_/_/_w_w_w_._q_s_l_._n_e_t_/_k_d_2_b_d_/_s_p_l_a_t_._h_t_m_l. - -AAUUTTHHOORRSS - John A. Magliacane, KD2BD <_k_d_2_b_d_@_a_m_s_a_t_._o_r_g> - Creator, Lead Developer - - Doug McDonald <_m_c_d_o_n_a_l_d_@_s_c_s_._u_i_u_c_._e_d_u> - Original Longley-Rice ITM Model integration - - Ron Bentley <_r_o_n_b_e_n_t_l_e_y_@_e_m_b_a_r_q_m_a_i_l_._c_o_m> - Fresnel Zone plotting and clearance determination - - - - -KD2BD Software 27 June 2014 SPLAT!(1) diff --git a/docs/english/pdf/splat.pdf b/docs/english/pdf/splat.pdf deleted file mode 100644 index 849cb50..0000000 Binary files a/docs/english/pdf/splat.pdf and /dev/null differ diff --git a/docs/english/postscript/splat.ps b/docs/english/postscript/splat.ps deleted file mode 100644 index f128cab..0000000 Binary files a/docs/english/postscript/splat.ps and /dev/null differ diff --git a/docs/english/text/.splat.txt.swp b/docs/english/text/.splat.txt.swp deleted file mode 100644 index 30b3bc9..0000000 Binary files a/docs/english/text/.splat.txt.swp and /dev/null differ diff --git a/docs/english/text/splat.txt b/docs/english/text/splat.txt deleted file mode 100644 index 96338db..0000000 --- a/docs/english/text/splat.txt +++ /dev/null @@ -1,1248 +0,0 @@ -SPLAT!(1) KD2BD Software SPLAT!(1) - - - -NAME - splat An RF Signal Propagation, Loss, And Terrain analysis tool - -SYNOPSIS - splat - [-t transmitter_site.qth] - [-r receiver_site.qth] - [-c rx antenna height for LOS coverage analysis (feet/meters) (float)] - [-L rx antenna height for ITM coverage analysis (feet/meters) (float)] - [-p terrain_profile.ext] - [-e elevation_profile.ext] - [-h height_profile.ext] - [-H normalized_height_profile.ext] - [-l ITM_profile.ext] - [-o topographic_map_filename.ppm] - [-b cartographic_boundary_filename.dat] - [-s site/city_database.dat] - [-d sdf_directory_path] - [-m earth radius multiplier (float)] - [-f frequency (MHz) for Fresnel zone calculations (float)] - [-R maximum coverage radius (miles/kilometers) (float)] - [-dB threshold beyond which contours will not be displayed] - [-gc ground clutter height (feet/meters) (float)] - [-fz Fresnel zone clearance percentage (default = 60)] - [-ano alphanumeric output file name] - [-ani alphanumeric input file name] - [-udt user_defined_terrain_file.dat] - [-log logfile.ext] - [-n] - [-N] - [-nf] - [-sc] - [-dbm] - [-ngs] - [-geo] - [-kml] - [-gpsav] - [-metric] - [-olditm] - -DESCRIPTION - SPLAT! is a powerful terrestrial RF propagation and terrain analysis - tool for the spectrum between 20 MHz and 20 GHz. SPLAT! is free soft- - ware, and is designed for operation on Unix and Linux-based worksta- - tions. Redistribution and/or modification is permitted under the terms - of the GNU General Public License, Version 2, as published by the Free - Software Foundation. Adoption of SPLAT! source code in proprietary or - closed-source applications is a violation of this license and is - strictly forbidden. - - SPLAT! is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY, without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - -INTRODUCTION - Applications of SPLAT! include the visualization, design, and link bud- - get analysis of wireless Wide Area Networks (WANs), commercial and ama- - teur radio communication systems above 20 MHz, microwave links, fre- - quency coordination and interference studies, and the prediction of - analog and digital terrestrial radio and television contour regions. - - SPLAT! provides RF site engineering data such as great circle distances - and bearings between sites, antenna elevation angles (uptilt), depres- - sion angles (downtilt), antenna height above mean sea level, antenna - height above average terrain, bearings, distances, and elevations to - known obstructions, Irregular Terrain Model path attenuation, and re- - ceived signal strength. In addition, the minimum antenna height re- - quirements needed to clear terrain, the first Fresnel zone, and any - user-definable percentage of the first Fresnel zone are also provided. - - SPLAT! produces reports, graphs, and high resolution topographic maps - that depict line-of-sight paths, and regional path loss and signal - strength contours through which expected coverage areas of transmitters - and repeater systems can be obtained. When performing line-of-sight - and Irregular Terrain Model analyses in situations where multiple - transmitter or repeater sites are employed, SPLAT! determines individ- - ual and mutual areas of coverage within the network specified. - -INPUT FILES - SPLAT! is a command-line driven application and reads input data - through a number of data files. Some files are mandatory for success- - ful execution of the program, while others are optional. Mandatory - files include digital elevation topography models in the form of SPLAT - Data Files (SDF files), site location files (QTH files), and Irregular - Terrain Model parameter files (LRP files). Optional files include city - location files, cartographic boundary files, user-defined terrain - files, path loss input files, antenna radiation pattern files, and - color definition files. - -SPLAT DATA FILES - SPLAT! imports topographic data in the form of SPLAT Data Files (SDFs). - These files may be generated from a number of information sources. In - the United States, SPLAT Data Files can be generated through U.S. Geo- - logical Survey Digital Elevation Models (DEMs) using the postdownload - and usgs2sdf utilities included with SPLAT!. USGS Digital Elevation - Models compatible with these utilities may be downloaded from: - - http://edcftp.cr.usgs.gov/pub/data/DEM/250/. - - Significantly better resolution and accuracy can be obtained through - the use of SRTM Version 2 digital elevation models, especially when - supplemented by USGS-derived SDF data. These one-degree by one-degree - models are the product of the Space Shuttle STS-99 Radar Topography - Mission, and are available for most populated regions of the Earth. - SPLAT Data Files may be generated from 3 arc-second SRTM-3 data using - the included srtm2sdf utility. SRTM-3 Version 2.1 data may be obtained - through anonymous FTP from: - - http://dds.cr.usgs.gov/srtm/version2_1/SRTM3/ - - Note that SRTM filenames refer to the latitude and longitude of the - southwest corner of the topographic dataset contained within the file. - Therefore, the region of interest must lie north and east of the lati- - tude and longitude provided in the SRTM filename. - - Even greater resolution and accuracy can be obtained by using 1 arc- - second SRTM-1 Version 2.1 topography data. This data is available for - the United States and its territories and possessions, and may be down- - loaded from: - - http://dds.cr.usgs.gov/srtm/version2_1/SRTM1/ - - High resolution SDF files for use with SPLAT! HD may be generated from - data in this format using the srtm2sdf-hd utility. - - Despite the higher accuracy that SRTM data has to offer, some voids in - the data sets exist. When voids are detected, the srtm2sdf and - srtm2sdf-hd utilities replace them with corresponding data found in - usgs2sdf generated SDF files. If USGS-derived SDF data is not avail- - able, voids are handled through adjacent pixel averaging, or direct re- - placement. - - SPLAT Data Files contain integer value topographic elevations in meters - referenced to mean sea level for 1-degree by 1-degree regions of the - Earth. SDF files can be read by SPLAT! in either standard format - (.sdf) as generated directly by the usgs2sdf, srtm2sdf, and srtm2sdf-hd - utilities, or in bzip2 compressed format (.sdf.bz2). Since uncom- - pressed files can be read slightly faster than files that have been - compressed, SPLAT! searches for needed SDF data in uncompressed format - first. If uncompressed data cannot be located, SPLAT! then searches - for data in bzip2 compressed format. If no compressed SDF files can be - found for the region requested, SPLAT! assumes the region is over wa- - ter, and will assign an elevation of sea-level to these areas. - - This feature of SPLAT! makes it possible to perform path analysis not - only over land, but also between coastal areas not represented by Digi- - tal Elevation Model data. However, this behavior of SPLAT! under- - scores the importance of having all the SDF files required for the re- - gion being analyzed if meaningful results are to be expected. - -SITE LOCATION (QTH) FILES - SPLAT! imports site location information of transmitter and receiver - sites analyzed by the program from ASCII files having a .qth extension. - QTH files contain the site's name, the site's latitude (positive if - North of the equator, negative if South), the site's longitude (in de- - grees West, 0 to 360 degrees, or degrees East 0 to -360 degrees), and - the site's antenna height above ground level (AGL), each separated by a - single line-feed character. The antenna height is assumed to be speci- - fied in feet unless followed by the letter m or the word meters in ei- - ther upper or lower case. Latitude and longitude information may be - expressed in either decimal format (74.6864) or degree, minute, second - (DMS) format (74 41 11.0). - - For example, a site location file describing television station WNJT- - DT, Trenton, NJ (wnjt-dt.qth) might read as follows: - - - WNJT-DT - 40.2828 - 74.6864 - 990.00 - - Each transmitter and receiver site analyzed by SPLAT! must be repre- - sented by its own site location (QTH) file. - -IRREGULAR TERRAIN MODEL PARAMETER (LRP) FILES - Irregular Terrain Model Parameter data files are required for SPLAT! - to determine RF path loss, field strength, or received signal power - level in either point-to-point or area prediction mode. Irregular Ter- - rain Model parameter data is read from files having the same base name - as the transmitter site QTH file, but with a .lrp extension. SPLAT! - LRP files share the following format (wnjt-dt.lrp): - - - 15.000 ; Earth Dielectric Constant (Relative permittivity) - 0.005 ; Earth Conductivity (Siemens per meter) - 301.000 ; Atmospheric Bending Constant (N-units) - 647.000 ; Frequency in MHz (20 MHz to 20 GHz) - 5 ; Radio Climate (5 = Continental Temperate) - 0 ; Polarization (0 = Horizontal, 1 = Vertical) - 0.50 ; Fraction of situations (50% of locations) - 0.90 ; Fraction of time (90% of the time) - 46000.0 ; Effective Radiated Power (ERP) in Watts (optional) - - If an LRP file corresponding to the tx_site QTH file cannot be found, - SPLAT! scans the current working directory for the file "splat.lrp". - If this file cannot be found, then default parameters will be assigned - by SPLAT! and a corresponding "splat.lrp" file containing these default - parameters will be written to the current working directory. The gen- - erated "splat.lrp" file can then be edited by the user as needed. - - Typical Earth dielectric constants and conductivity values are as fol- - lows: - - - Dielectric Constant Conductivity - Salt water : 80 5.000 - Good ground : 25 0.020 - Fresh water : 80 0.010 - Marshy land : 12 0.007 - Farmland, forest : 15 0.005 - Average ground : 15 0.005 - Mountain, sand : 13 0.002 - City : 5 0.001 - Poor ground : 4 0.001 - - - Radio climate codes used by SPLAT! are as follows: - - 1: Equatorial (Congo) - 2: Continental Subtropical (Sudan) - 3: Maritime Subtropical (West coast of Africa) - 4: Desert (Sahara) - 5: Continental Temperate - 6: Maritime Temperate, over land (UK and west coasts of US & - EU) - 7: Maritime Temperate, over sea - - - The Continental Temperate climate is common to large land masses in the - temperate zone, such as the United States. For paths shorter than 100 - km, there is little difference between Continental and Maritime Temper- - ate climates. - - The seventh and eighth parameters in the .lrp file correspond to the - statistical analysis provided by the ITM model. In this example, - SPLAT! will return the maximum path loss occurring in 50% of situations - (fraction of situations, or Location Variability) 90% of the time - (fraction of time, or Time Variability). This is often denoted as - F(50,90) in Longley-Rice studies. In the United States, an F(50,90) - criteria is typically used for digital television (8-level VSB modula- - tion), while F(50,50) is used for analog (VSB-AM+NTSC) broadcasts. - - For further information on ITM propagation model parameters, please re- - fer to: http://www.its.bldrdoc.gov/resources/radio-propagation-soft- - ware/itm/itm.aspx and http://www.softwright.com/faq/engineer- - ing/prop_longley_rice.html - - The last parameter in the .lrp file corresponds to the transmitter's - Effective Radiated Power (ERP), and is optional. If it is included in - the .lrp file, then SPLAT! will compute received signal strength levels - and field strength level contours when performing ITM studies. If the - parameter is omitted, path loss is computed instead. The ERP provided - in the .lrp file can be overridden by using SPLAT!'s -erp command-line - switch. If the .lrp file contains an ERP parameter and the generation - of path loss rather than field strength contours is desired, the ERP - can be assigned to zero using the -erp switch without having to edit - the .lrp file to accomplish the same result. - -CITY LOCATION FILES - The names and locations of cities, tower sites, or other points of in- - terest may be imported and plotted on topographic maps generated by - SPLAT!. SPLAT! imports the names of cities and locations from ASCII - files containing the location of interest's name, latitude, and longi- - tude. Each field is separated by a comma. Each record is separated by - a single line feed character. As was the case with the .qth files, - latitude and longitude information may be entered in either decimal or - degree, minute, second (DMS) format. - - For example (cities.dat): - - Teaneck, 40.891973, 74.014506 - Tenafly, 40.919212, 73.955892 - Teterboro, 40.859511, 74.058908 - Tinton Falls, 40.279966, 74.093924 - Toms River, 39.977777, 74.183580 - Totowa, 40.906160, 74.223310 - Trenton, 40.219922, 74.754665 - - A total of five separate city data files may be imported at a time, and - there is no limit to the size of these files. SPLAT! reads city data - on a "first come/first served" basis, and plots only those locations - whose annotations do not conflict with annotations of locations read - earlier in the current city data file, or in previous files. This be- - havior minimizes clutter in SPLAT! generated topographic maps, but also - mandates that important locations be placed toward the beginning of the - first city data file, and locations less important be positioned fur- - ther down the list or in subsequent data files. - - City data files may be generated manually using any text editor, im- - ported from other sources, or derived from data available from the U.S. - Census Bureau using the citydecoder utility included with SPLAT!. Such - data is available free of charge via the Internet at: http://web.ar- - chive.org/web/20130331172800/http://www.cen- - sus.gov/geo/www/cob/cs2000.html. Select the "ARC/INFO Ungenerate - (ASCII) format" near the bottom. - -CARTOGRAPHIC BOUNDARY DATA FILES - Cartographic boundary data may also be imported to plot the boundaries - of cities, counties, or states on topographic maps generated by SPLAT!. - Such data must be of the form of ARC/INFO Ungenerate (ASCII Format) - Metadata Cartographic Boundary Files, and are available from the U.S. - Census Bureau via the Internet at: http://web.ar- - chive.org/web/20130331144934/http://www.cen- - sus.gov/geo/www/cob/co2000.html and http://web.ar- - chive.org/web/20130507075658/http://www.cen- - sus.gov/geo/www/cob/pl2000.html. A total of five separate cartographic - boundary files may be imported at a time. It is not necessary to im- - port state boundaries if county boundaries have already been imported. - -PROGRAM OPERATION - SPLAT! is invoked via the command-line using a series of switches and - arguments. Since SPLAT! is a CPU and memory intensive application, - this type of interface minimizes overhead and lends itself well to - scripted (batch) operations. SPLAT!'s CPU and memory scheduling prior- - ity may be modified through the use of the Unix nice command. - - The number and type of switches passed to SPLAT! determine its mode of - operation and method of output data generation. Nearly all of SPLAT!'s - switches may be cascaded in any order on the command line when invoking - the program. Simply typing splat on the command line will return a - summary of SPLAT!'s command line options: - - --==[ SPLAT! v1.4.2 Available Options... ]==-- - -t txsite(s).qth (max of 4 with -c, max of 30 with -L) - -r rxsite.qth - -c plot LOS coverage of TX(s) with RX antenna at X feet/meters AGL - -L plot path loss map of TX based on an RX at X feet/meters AGL - -s filename(s) of city/site file(s) to import (5 max) - -b filename(s) of cartographic boundary file(s) to import (5 max) - -p filename of terrain profile graph to plot - -e filename of terrain elevation graph to plot - -h filename of terrain height graph to plot - -H filename of normalized terrain height graph to plot - -l filename of path loss graph to plot - -o filename of topographic map to generate (.ppm) - -u filename of user-defined terrain file to import - -d sdf file directory path (overrides path in ~/.splat_path file) - -m earth radius multiplier - -n do not plot LOS paths in .ppm maps - -N do not produce unnecessary site or obstruction reports - -f frequency for Fresnel zone calculation (MHz) - -R modify default range for -c or -L (miles/kilometers) - -sc display smooth rather than quantized contour levels - -db threshold beyond which contours will not be displayed - -nf do not plot Fresnel zones in height plots - -fz Fresnel zone clearance percentage (default = 60) - -gc ground clutter height (feet/meters) - -ngs display greyscale topography as white in .ppm files - -erp override ERP in .lrp file (Watts) - -ano name of alphanumeric output file - -ani name of alphanumeric input file - -udt name of user defined terrain input file - -kml generate Google Earth (.kml) compatible output - -geo generate an Xastir .geo georeference file (with .ppm output) - -dbm plot signal power level contours rather than field strength - -log copy command line string to this output file - -gpsav preserve gnuplot temporary working files after SPLAT! execution - -metric employ metric rather than imperial units for all user I/O - -olditm invoke older ITM propagation model rather than the newer ITWOM - The command-line options for splat and splat-hd are identical. The - -log command line switch causes all invoked command line options to be - logged to a file of your choosing (logfile.txt): - - splat -t tx_site -r rx_site -s nj_cities -o topo_map -log logfile.txt - - SPLAT! operates in two distinct modes: point-to-point mode, and area - prediction mode. Either a line-of-sight (LOS) or Irregular Terrain - (ITM) propagation model may be invoked by the user. True Earth, four- - thirds Earth, or any other user-defined Earth radius may be specified - when performing line-of-sight analysis. - -POINT-TO-POINT ANALYSIS - SPLAT! may be used to perform line-of-sight terrain analysis between - two specified site locations. For example: - - splat -t tx_site.qth -r rx_site.qth - - invokes a line-of-sight terrain analysis between the transmitter speci- - fied in tx_site.qth and receiver specified in rx_site.qth using a True - Earth radius model, and writes a SPLAT! Path Analysis Report to the - current working directory. The report contains details of the trans- - mitter and receiver sites, and identifies the location of any obstruc- - tions detected along the line-of-sight path. If an obstruction can be - cleared by raising the receive antenna to a greater altitude, SPLAT! - will indicate the minimum antenna height required for a line-of-sight - path to exist between the transmitter and receiver locations specified. - Note that imperial units (miles, feet) are specified unless the -metric - switch is added to SPLAT!'s command line options: - - splat -t tx_site.qth -r rx_site.qth -metric - - If the antenna must be raised a significant amount, this determination - may take a few moments. Note that the results provided are the minimum - necessary for a line-of-sight path to exist, and in the case of this - simple example, do not take Fresnel zone clearance requirements into - consideration. - - qth extensions are assumed by SPLAT! for QTH files, and are optional - when specifying -t and -r arguments on the command-line. SPLAT! auto- - matically reads all SPLAT Data Files necessary to conduct the terrain - analysis between the sites specified. SPLAT! searches for the re- - quired SDF files in the current working directory first. If the needed - files are not found, SPLAT! then searches in the path specified by the - -d command-line switch: - - splat -t tx_site -r rx_site -d /cdrom/sdf/ - - An external directory path may be specified by placing a ".splat_path" - file under the user's home directory. This file must contain the full - directory path of last resort to all the SDF files. The path in the - $HOME/.splat_path file must be of the form of a single line of ASCII - text: - - /opt/splat/sdf/ - - and can be generated using any text editor. - - A graph of the terrain profile between the receiver and transmitter lo- - cations as a function of distance from the receiver can be generated by - adding the -p switch: - - splat -t tx_site -r rx_site -p terrain_profile.png - - SPLAT! invokes gnuplot when generating graphs. The filename extension - specified to SPLAT! determines the format of the graph produced. .png - will produce a 640x480 color PNG graphic file, while .ps or .postscript - will produce postscript output. Output in formats such as GIF, Adobe - Illustrator, AutoCAD dxf, LaTeX, and many others are available. Please - consult gnuplot, and gnuplot's documentation for details on all the - supported output formats. - - A graph of elevations subtended by the terrain between the receiver and - transmitter as a function of distance from the receiver can be gener- - ated by using the -e switch: - - splat -t tx_site -r rx_site -e elevation_profile.png - - The graph produced using this switch illustrates the elevation and de- - pression angles resulting from the terrain between the receiver's loca- - tion and the transmitter site from the perspective of the receiver's - location. A second trace is plotted between the left side of the graph - (receiver's location) and the location of the transmitting antenna on - the right. This trace illustrates the elevation angle required for a - line-of-sight path to exist between the receiver and transmitter loca- - tions. If the trace intersects the elevation profile at any point on - the graph, then this is an indication that a line-of-sight path does - not exist under the conditions given, and the obstructions can be - clearly identified on the graph at the point(s) of intersection. - - A graph illustrating terrain height referenced to a line-of-sight path - between the transmitter and receiver may be generated using the -h - switch: - - splat -t tx_site -r rx_site -h height_profile.png - - A terrain height plot normalized to the transmitter and receiver an- - tenna heights can be obtained using the -H switch: - - splat -t tx_site -r rx_site -H normalized_height_profile.png - - A contour of the Earth's curvature is also plotted in this mode. - - The first Fresnel Zone, and 60% of the first Fresnel Zone can be added - to height profile graphs by adding the -f switch, and specifying a fre- - quency (in MHz) at which the Fresnel Zone should be modeled: - - splat -t tx_site -r rx_site -f 439.250 -H normalized_height_profile.png - - Fresnel Zone clearances other 60% can be specified using the -fz switch - as follows: - - splat -t tx_site -r rx_site -f 439.250 -fz 75 -H height_profile2.png - - A graph showing ITM path loss may be plotted using the -l switch: - - splat -t tx_site -r rx_site -l path_loss_profile.png - - As before, adding the -metric switch forces the graphs to be plotted - using metric units of measure. The -gpsav switch instructs SPLAT! to - preserve (rather than delete) the gnuplot working files generated dur- - ing SPLAT! execution, allowing the user to edit these files and re-run - gnuplot if desired. - - When performing a point-to-point analysis, a SPLAT! Path Analysis Re- - port is generated in the form of a text file with a .txt filename ex- - tension. The report contains bearings and distances between the trans- - mitter and receiver, as well as the free-space and ITM path loss for - the path being analyzed. The mode of propagation for the path is given - as Line-of-Sight, Single Horizon, Double Horizon, Diffraction Dominant, - or Troposcatter Dominant. Additionally, if the receiver is located at - the peak of a single obstruction or at the peak of a second obstruc- - tion, SPLAT! will report RX at Peak Terrain Along Path when operating - under the ITWOM propagation model. - - Distances and locations to known obstructions along the path between - transmitter and receiver are also provided. If the transmitter's ef- - fective radiated power is specified in the transmitter's corresponding - .lrp file, then predicted signal strength and antenna voltage at the - receiving location is also provided in the Path Analysis Report. - - To determine the signal-to-noise (SNR) ratio at remote location where - random Johnson (thermal) noise is the primary limiting factor in recep- - tion: - - SNR=T-NJ-L+G-NF - - where T is the ERP of the transmitter in dBW in the direction of the - receiver, NJ is Johnson Noise in dBW (-136 dBW for a 6 MHz television - channel), L is the path loss provided by SPLAT! in dB (as a positive - number), G is the receive antenna gain in dB over isotropic, and NF is - the receiver noise figure in dB. - - T may be computed as follows: - - T=TI+GT - - where TI is actual amount of RF power delivered to the transmitting an- - tenna in dBW, GT is the transmitting antenna gain (over isotropic) in - the direction of the receiver (or the horizon if the receiver is over - the horizon). - - To compute how much more signal is available over the minimum to neces- - sary to achieve a specific signal-to-noise ratio: - - Signal_Margin=SNR-S - - where S is the minimum required SNR ratio (15.5 dB for ATSC (8-level - VSB) DTV, 42 dB for analog NTSC television). - - A topographic map may be generated by SPLAT! to visualize the path be- - tween the transmitter and receiver sites from yet another perspective. - Topographic maps generated by SPLAT! display elevations using a loga- - rithmic grayscale, with higher elevations represented through brighter - shades of gray. The dynamic range of the image is scaled between the - highest and lowest elevations present in the map. The only exception - to this is sea-level, which is represented using the color blue. - - Topographic output is invoked using the -o switch: - - splat -t tx_site -r rx_site -o topo_map.ppm - - The .ppm extension on the output filename is assumed by SPLAT!, and is - optional. - - In this example, topo_map.ppm will illustrate the locations of the - transmitter and receiver sites specified. In addition, the great cir- - cle path between the two sites will be drawn over locations for which - an unobstructed path exists to the transmitter at a receiving antenna - height equal to that of the receiver site (specified in rx_site.qth). - - It may desirable to populate the topographic map with names and loca- - tions of cities, tower sites, or other important locations. A city - file may be passed to SPLAT! using the -s switch: - - splat -t tx_site -r rx_site -s cities.dat -o topo_map - - Up to five separate city files may be passed to SPLAT! at a time fol- - lowing the -s switch. - - County and state boundaries may be added to the map by specifying up to - five U.S. Census Bureau cartographic boundary files using the -b - switch: - - splat -t tx_site -r rx_site -b co34_d00.dat -o topo_map - - In situations where multiple transmitter sites are in use, as many as - four site locations may be passed to SPLAT! at a time for analysis: - - splat -t tx_site1 tx_site2 tx_site3 tx_site4 -r rx_site -p profile.png - - In this example, four separate terrain profiles and obstruction reports - will be generated by SPLAT!. A single topographic map can be specified - using the -o switch, and line-of-sight paths between each transmitter - and the receiver site indicated will be produced on the map, each in - its own color. The path between the first transmitter specified to the - receiver will be in green, the path between the second transmitter and - the receiver will be in cyan, the path between the third transmitter - and the receiver will be in violet, and the path between the fourth - transmitter and the receiver will be in sienna. - - SPLAT! generated topographic maps are 24-bit TrueColor Portable PixMap - (PPM) images. They may be viewed, edited, or converted to other - graphic formats by popular image viewing applications such as xv, The - GIMP, ImageMagick, and XPaint. PNG format is highly recommended for - lossless compressed storage of SPLAT! generated topographic output - files. ImageMagick's command-line utility easily converts SPLAT!'s PPM - files to PNG format: - - convert splat_map.ppm splat_map.png - - Another excellent PPM to PNG command-line utility is available at: - http://www.libpng.org/pub/png/book/sources.html. As a last resort, PPM - files may be compressed using the bzip2 utility, and read directly by - The GIMP in this format. - - The -ngs option assigns all terrain to the color white, and can be used - when it is desirable to generate a map that is devoid of terrain: - - splat -t tx_site -r rx_site -b co34_d00.dat -ngs -o white_map - - The resulting .ppm image file can be converted to .png format with a - transparent background using ImageMagick's convert utility: - - convert -transparent "#FFFFFF" white_map.ppm transparent_map.png - -REGIONAL COVERAGE ANALYSIS - SPLAT! can analyze a transmitter or repeater site, or network of sites, - and predict the regional coverage for each site specified. In this - mode, SPLAT! can generate a topographic map displaying the geometric - line-of-sight coverage area of the sites based on the location of each - site and the height of receive antenna wishing to communicate with the - site in question. A regional analysis may be performed by SPLAT! using - the -c switch as follows: - - splat -t tx_site -c 30.0 -s cities.dat -b co34_d00.dat -o tx_coverage - - In this example, SPLAT! generates a topographic map called tx_cover- - age.ppm that illustrates the predicted line-of-sight regional coverage - of tx_site to receiving locations having antennas 30.0 feet above - ground level (AGL). If the -metric switch is used, the argument fol- - lowing the -c switch is interpreted as being in meters rather than in - feet. The contents of cities.dat are plotted on the map, as are the - cartographic boundaries contained in the file co34_d00.dat. - - When plotting line-of-sight paths and areas of regional coverage, - SPLAT! by default does not account for the effects of atmospheric bend- - ing. However, this behavior may be modified by using the Earth radius - multiplier (-m) switch: - - splat -t wnjt-dt -c 30.0 -m 1.333 -s cities.dat -b counties.dat -o - map.ppm - - An earth radius multiplier of 1.333 instructs SPLAT! to use the "four- - thirds earth" model for line-of-sight propagation analysis. Any appro- - priate earth radius multiplier may be selected by the user. - - When performing a regional analysis, SPLAT! generates a site report for - each station analyzed. SPLAT! site reports contain details of the - site's geographic location, its height above mean sea level, the an- - tenna's height above mean sea level, the antenna's height above average - terrain, and the height of the average terrain calculated toward the - bearings of 0, 45, 90, 135, 180, 225, 270, and 315 degrees azimuth. - -DETERMINING MULTIPLE REGIONS OF LOS COVERAGE - SPLAT! can also display line-of-sight coverage areas for as many as - four separate transmitter sites on a common topographic map. For exam- - ple: - - splat -t site1 site2 site3 site4 -c 10.0 -metric -o network.ppm - - plots the regional line-of-sight coverage of site1, site2, site3, and - site4 based on a receive antenna located 10.0 meters above ground - level. A topographic map is then written to the file network.ppm. The - line-of-sight coverage area of the transmitters are plotted as follows - in the colors indicated (along with their corresponding RGB values in - decimal): - - site1: Green (0,255,0) - site2: Cyan (0,255,255) - site3: Medium Violet (147,112,219) - site4: Sienna 1 (255,130,71) - site1 + site2: Yellow (255,255,0) - site1 + site3: Pink (255,192,203) - site1 + site4: Green Yellow (173,255,47) - site2 + site3: Orange (255,165,0) - site2 + site4: Dark Sea Green 1 (193,255,193) - site3 + site4: Dark Turquoise (0,206,209) - site1 + site2 + site3: Dark Green (0,100,0) - site1 + site2 + site4: Blanched Almond (255,235,205) - site1 + site3 + site4: Medium Spring Green (0,250,154) - site2 + site3 + site4: Tan (210,180,140) - site1 + site2 + site3 + site4: Gold2 (238,201,0) - - If separate .qth files are generated, each representing a common site - location but a different antenna height, a single topographic map il- - lustrating the regional coverage from as many as four separate loca- - tions on a single tower may be generated by SPLAT!. - -PATH LOSS ANALYSIS - If the -c switch is replaced by a -L switch, an ITM path loss map, a - field strength map, or a received power map for the transmitter site(s) - specified may be generated. The type of analysis generated depends on - the presence or absence of an -erp switch followed by a positive valued - argument (or equivalent ERP entry in the appropriate .lrp file), or the - presence or absence of the -dBm switch. The following example would - generate an ITM path loss map: - - splat -t wnjt -L 30.0 -s cities.dat -b co34_d00.dat -o path_loss_map - - In this mode, SPLAT! generates a multi-color map illustrating expected - signal levels in areas surrounding the transmitter site. A legend at - the bottom of the map correlates each color with a specific path loss - range in decibels. - - The -db switch allows a threshold to be set beyond which contours will - not be plotted on the map. For example, if a path loss beyond -140 dB - is irrelevant to the survey being conducted, SPLAT!'s path loss plot - can be constrained to the region bounded by the 140 dB attenuation con- - tour as follows: - - splat -t wnjt-dt -L 30.0 -s cities.dat -b co34_d00.dat -db 140 -o - plot.ppm - - The path loss contour threshold may be expressed as either a positive - or negative quantity. - - The path loss analysis range may be modified to a user-specific dis- - tance using the -R switch. The argument must be given in miles (or - kilometers if the -metric switch is used). If a range wider than the - generated topographic map is specified, SPLAT! will perform ITM path - loss calculations between all four corners of the area prediction map. - - The colors used to illustrate contour regions in SPLAT! generated cov- - erage maps may be tailored by the user by creating or modifying - SPLAT!'s color definition files. SPLAT! color definition files have - the same base name as the transmitter's .qth file, but carry .lcf, - .scf, and .dcf extensions. If the necessary file does not exist in the - current working when SPLAT! is run, a file containing default color - definition parameters that is suitable for manual editing by the user - is written into the current directory. - - When a regional ITM analysis is performed and the transmitter's ERP is - not specified or is zero, a .lcf path loss color definition file corre- - sponding to the transmitter site (.qth) is read by SPLAT! from the cur- - rent working directory. If a .lcf file corresponding to the transmit- - ter site is not found, then a default file suitable for manual editing - by the user is automatically generated by SPLAT!. - - A path loss color definition file possesses the following structure - (wnjt-dt.lcf): - - ; SPLAT! Auto-generated Path-Loss Color Definition ("wnjt-dt.lcf") - File - ; - ; Format for the parameters held in this file is as follows: - ; - ; dB: red, green, blue - ; - ; ...where "dB" is the path loss (in dB) and - ; "red", "green", and "blue" are the corresponding RGB color - ; definitions ranging from 0 to 255 for the region specified. - ; - ; The following parameters may be edited and/or expanded - ; for future runs of SPLAT! A total of 32 contour regions - ; may be defined in this file. - ; - ; - 80: 255, 0, 0 - 90: 255, 128, 0 - 100: 255, 165, 0 - 110: 255, 206, 0 - 120: 255, 255, 0 - 130: 184, 255, 0 - 140: 0, 255, 0 - 150: 0, 208, 0 - 160: 0, 196, 196 - 170: 0, 148, 255 - 180: 80, 80, 255 - 190: 0, 38, 255 - 200: 142, 63, 255 - 210: 196, 54, 255 - 220: 255, 0, 255 - 230: 255, 194, 204 - - - If the path loss is less than 80 dB, the color Red (RGB = 255, 0, 0) is - assigned to the region. If the path loss is greater than or equal to - 80 dB, but less than 90 db, then Dark Orange (255, 128, 0) is assigned - to the region. Orange (255, 165, 0) is assigned to regions having a - path loss greater than or equal to 90 dB, but less than 100 dB, and so - on. Greyscale terrain is displayed beyond the 230 dB path loss con- - tour. Adding the -sc switch will smooth the transitions between the - specified quantized contour levels. - -FIELD STRENGTH ANALYSIS - If the transmitter's effective radiated power (ERP) is specified in the - transmitter's .lrp file, or expressed on the command-line using the - -erp switch, field strength contours referenced to decibels over one - microvolt per meter (dBuV/m) rather than path loss are produced: - - splat -t wnjt-dt -L 30.0 -erp 46000 -db 30 -o plot.ppm - - The -db switch can be used in this mode as before to limit the extent - to which field strength contours are plotted. When plotting field - strength contours, however, the argument given is interpreted as being - expressed in dBuV/m. - - SPLAT! field strength color definition files share a very similar - structure to .lcf files used for plotting path loss: - - ; SPLAT! Auto-generated Signal Color Definition ("wnjt-dt.scf") File - ; - ; Format for the parameters held in this file is as follows: - ; - ; dBuV/m: red, green, blue - ; - ; ...where "dBuV/m" is the signal strength (in dBuV/m) and - ; "red", "green", and "blue" are the corresponding RGB color - ; definitions ranging from 0 to 255 for the region specified. - ; - ; The following parameters may be edited and/or expanded - ; for future runs of SPLAT! A total of 32 contour regions - ; may be defined in this file. - ; - ; - 128: 255, 0, 0 - 118: 255, 165, 0 - 108: 255, 206, 0 - 98: 255, 255, 0 - 88: 184, 255, 0 - 78: 0, 255, 0 - 68: 0, 208, 0 - 58: 0, 196, 196 - 48: 0, 148, 255 - 38: 80, 80, 255 - 28: 0, 38, 255 - 18: 142, 63, 255 - 8: 140, 0, 128 - - - If the signal strength is greater than or equal to 128 dB over 1 micro- - volt per meter (dBuV/m), the color Red (255, 0, 0) is displayed for the - region. If the signal strength is greater than or equal to 118 dBuV/m, - but less than 128 dBuV/m, then the color Orange (255, 165, 0) is dis- - played, and so on. Greyscale terrain is displayed for regions with - signal strengths less than 8 dBuV/m. - - Signal strength contours for some common VHF and UHF broadcasting ser- - vices in the United States are as follows: - - - - Analog Television Broadcasting - ------------------------------ - Channels 2-6: City Grade: >= 74 dBuV/m - Grade A: >= 68 dBuV/m - Grade B: >= 47 dBuV/m - -------------------------------------------- - Channels 7-13: City Grade: >= 77 dBuV/m - Grade A: >= 71 dBuV/m - Grade B: >= 56 dBuV/m - -------------------------------------------- - Channels 14-69: Indoor Grade: >= 94 dBuV/m - City Grade: >= 80 dBuV/m - Grade A: >= 74 dBuV/m - Grade B: >= 64 dBuV/m - Digital Television Broadcasting - ------------------------------- - Channels 2-6: City Grade: >= 35 dBuV/m - Service Threshold: >= 28 dBuV/m - -------------------------------------------- - Channels 7-13: City Grade: >= 43 dBuV/m - Service Threshold: >= 36 dBuV/m - -------------------------------------------- - Channels 14-69: City Grade: >= 48 dBuV/m - Service Threshold: >= 41 dBuV/m - NOAA Weather Radio (162.400 - 162.550 MHz) - ------------------------------------------ - Reliable: >= 18 dBuV/m - Not reliable: < 18 dBuV/m - Unlikely to receive: < 0 dBuV/m - FM Radio Broadcasting (88.1 - 107.9 MHz) - ---------------------------------------- - Analog Service Contour: 60 dBuV/m - Digital Service Contour: 65 dBuV/m - -RECEIVED POWER LEVEL ANALYSIS - If the transmitter's effective radiated power (ERP) is specified in the - transmitter's .lrp file, or expressed on the command-line using the - -erp switch, and the -dbm switch is invoked, received power level con- - tours referenced to decibels over one milliwatt (dBm) are produced: - - splat -t wnjt-dt -L 30.0 -erp 46000 -dbm -db -100 -o plot.ppm - - The -db switch can be used to limit the extent to which received power - level contours are plotted. When plotting power level contours, the - argument given is interpreted as being expressed in dBm. - - SPLAT! received power level color definition files share a very similar - structure to the color definition files described earlier, except that - the power levels in dBm may be either positive or negative, and are - limited to a range between +40 dBm and -200 dBm: - - ; SPLAT! Auto-generated DBM Signal Level Color Definition ("wnjt- - dt.dcf") File - ; - ; Format for the parameters held in this file is as follows: - ; - ; dBm: red, green, blue - ; - ; ...where "dBm" is the received signal power level between +40 dBm - ; and -200 dBm, and "red", "green", and "blue" are the corresponding - ; RGB color definitions ranging from 0 to 255 for the region speci- - fied. - ; - ; The following parameters may be edited and/or expanded - ; for future runs of SPLAT! A total of 32 contour regions - ; may be defined in this file. - ; - ; - +0: 255, 0, 0 - -10: 255, 128, 0 - -20: 255, 165, 0 - -30: 255, 206, 0 - -40: 255, 255, 0 - -50: 184, 255, 0 - -60: 0, 255, 0 - -70: 0, 208, 0 - -80: 0, 196, 196 - -90: 0, 148, 255 - -100: 80, 80, 255 - -110: 0, 38, 255 - -120: 142, 63, 255 - -130: 196, 54, 255 - -140: 255, 0, 255 - -150: 255, 194, 204 - -ANTENNA RADIATION PATTERN PARAMETERS - Normalized field voltage patterns for a transmitting antenna's horizon- - tal and vertical planes are imported automatically into SPLAT! when a - path loss, field strength, or received power level coverage analysis is - performed. Antenna pattern data is read from a pair of files having - the same base name as the transmitter and LRP files, but with .az and - .el extensions for azimuth and elevation pattern files, respectively. - Specifications regarding pattern rotation (if any) and mechanical beam - tilt and tilt direction (if any) are also contained within SPLAT! an- - tenna pattern files. - - For example, the first few lines of a SPLAT! azimuth pattern file might - appear as follows (kvea.az): - - 183.0 - 0 0.8950590 - 1 0.8966406 - 2 0.8981447 - 3 0.8995795 - 4 0.9009535 - 5 0.9022749 - 6 0.9035517 - 7 0.9047923 - 8 0.9060051 - - The first line of the .az file specifies the amount of azimuthal pat- - tern rotation (measured clockwise in degrees from True North) to be ap- - plied by SPLAT! to the data contained in the .az file. This is fol- - lowed by azimuth headings (0 to 360 degrees) and their associated nor- - malized field patterns (0.000 to 1.000) separated by whitespace. - - The structure of SPLAT! elevation pattern files is slightly different. - The first line of the .el file specifies the amount of mechanical beam - tilt applied to the antenna. Note that a downward tilt (below the - horizon) is expressed as a positive angle, while an upward tilt (above - the horizon) is expressed as a negative angle. This data is followed - by the azimuthal direction of the tilt, separated by whitespace. - - The remainder of the file consists of elevation angles and their corre- - sponding normalized voltage radiation pattern (0.000 to 1.000) values - separated by whitespace. Elevation angles must be specified over a - -10.0 to +90.0 degree range. As was the convention with mechanical - beamtilt, negative elevation angles are used to represent elevations - above the horizon, while positive angles represents elevations below - the horizon. - - For example, the first few lines a SPLAT! elevation pattern file might - appear as follows (kvea.el): - - 1.1 130.0 - -10.0 0.172 - -9.5 0.109 - -9.0 0.115 - -8.5 0.155 - -8.0 0.157 - -7.5 0.104 - -7.0 0.029 - -6.5 0.109 - -6.0 0.185 - - In this example, the antenna is mechanically tilted downward 1.1 de- - grees towards an azimuth of 130.0 degrees. - - For best results, the resolution of azimuth pattern data should be - specified to the nearest degree azimuth, and elevation pattern data - resolution should be specified to the nearest 0.01 degrees. If the - pattern data specified does not reach this level of resolution, SPLAT! - will interpolate the values provided to determine the data at the re- - quired resolution, although this may result in a loss in accuracy. - -EXPORTING AND IMPORTING REGIONAL CONTOUR DATA - Performing a regional coverage analysis based on an ITM path analysis - can be a very time consuming process, especially if the analysis is - performed repeatedly to discover what effects changes to a transmit- - ter's antenna radiation pattern make to the predicted coverage area. - - This process can be expedited by exporting the contour data produced by - SPLAT! to an alphanumeric output (.ano) file. The data contained in - this file can then be modified to incorporate antenna pattern effects, - and imported back into SPLAT! to quickly produce a revised contour map. - Depending on the way in which SPLAT! is invoked, alphanumeric output - files can describe regional path loss, signal strength, or received - signal power levels. - - For example, an alphanumeric output file containing path loss informa- - tion can be generated by SPLAT! for a receive site 30 feet above ground - level over a 50 mile radius surrounding a transmitter site to a maximum - path loss of 140 dB (assuming ERP is not specified in the transmitter's - .lrp file) using the following syntax: - - splat -t kvea -L 30.0 -R 50.0 -db 140 -ano pathloss.dat - - If ERP is specified in the .lrp file or on the command line through the - -erp switch, the alphanumeric output file will instead contain pre- - dicted field values in dBuV/m. If the -dBm command line switch is - used, then the alphanumeric output file will contain receive signal - power levels in dBm. - - SPLAT! alphanumeric output files can exceed many hundreds of megabytes - in size. They contain information relating to the boundaries of the - region they describe followed by latitudes (degrees North), longitudes - (degrees West), azimuths (referenced to True North), elevations (to the - first obstruction), followed by either path loss (in dB), received - field strength (in dBuV/m), or received signal power level (in dBm) - without regard to the transmitting antenna's radiation pattern. - - The first few lines of a SPLAT! alphanumeric output file could take on - the following appearance (pathloss.dat): - - 119, 117 ; max_west, min_west - 35, 34 ; max_north, min_north - 34.2265424, 118.0631096, 48.199, -32.747, 67.70 - 34.2270358, 118.0624421, 48.199, -19.161, 73.72 - 34.2275292, 118.0617747, 48.199, -13.714, 77.24 - 34.2280226, 118.0611072, 48.199, -10.508, 79.74 - 34.2290094, 118.0597723, 48.199, -11.806, 83.26 * - 34.2295028, 118.0591048, 48.199, -11.806, 135.47 * - 34.2299962, 118.0584373, 48.199, -15.358, 137.06 * - 34.2304896, 118.0577698, 48.199, -15.358, 149.87 * - 34.2314763, 118.0564348, 48.199, -15.358, 154.16 * - 34.2319697, 118.0557673, 48.199, -11.806, 153.42 * - 34.2324631, 118.0550997, 48.199, -11.806, 137.63 * - 34.2329564, 118.0544322, 48.199, -11.806, 139.23 * - 34.2339432, 118.0530971, 48.199, -11.806, 139.75 * - 34.2344365, 118.0524295, 48.199, -11.806, 151.01 * - 34.2349299, 118.0517620, 48.199, -11.806, 147.71 * - 34.2354232, 118.0510944, 48.199, -15.358, 159.49 * - 34.2364099, 118.0497592, 48.199, -15.358, 151.67 * - - Comments can be placed in the file if they are preceeded by a semi- - colon. The vim text editor has proven capable of editing files of this - size. - - Note as was the case in the antenna pattern files, negative elevation - angles refer to upward tilt (above the horizon), while positive angles - refer to downward tilt (below the horizon). These angles refer to the - elevation to the receiving antenna at the height above ground level - specified using the -L switch if the path between transmitter and re- - ceiver is unobstructed. If the path between the transmitter and re- - ceiver is obstructed, an asterisk (*) is placed on the end of the line, - and the elevation angle returned by SPLAT! refers the elevation angle - to the first obstruction rather than the geographic location specified - on the line. This is done in response to the fact that the ITM model - considers the energy reaching a distant point over an obstructed path - to be the result of the energy scattered over the top of the first ob- - struction along the path. Since energy cannot reach the obstructed lo- - cation directly, the actual elevation angle to the destination over - such a path becomes irrelevant. - - When modifying SPLAT! path loss files to reflect antenna pattern data, - only the last numeric column should be amended to reflect the antenna's - normalized gain at the azimuth and elevation angles specified in the - file. Programs and scripts capable of performing this task are left as - an exercise for the user. - - Modified alphanumeric output files can be imported back into SPLAT! - for generating revised coverage maps provided that the ERP and -dBm op- - tions are used as they were when the alphanumeric output file was orig- - inally generated: - - splat -t kvea -ani pathloss.dat -s city.dat -b county.dat -o map.ppm - - Note that alphanumeric output files generated by splat cannot be used - with splat-hd, or vice-versa due to the resolution incompatibility be- - tween the two versions of the program. Also, each of the three types - of alphanumeric output files are incompatible with one another, so a - file containing path loss data cannot be imported into SPLAT! to pro- - duce signal strength or received power level contours, etc. - -USER-DEFINED TERRAIN INPUT FILES - A user-defined terrain file is a user-generated text file containing - latitudes, longitudes, and heights above ground level of specific ter- - rain features believed to be of importance to the SPLAT! analysis being - conducted, but noticeably absent from the SDF files being used. A - user-defined terrain file is imported into a SPLAT! analysis using the - -udt switch: - - splat -t tx_site -r rx_site -udt udt_file.txt -o map.ppm - - A user-defined terrain file has the following appearance and structure: - - 40.32180556, 74.1325, 100.0 meters - 40.321805, 74.1315, 300.0 - 40.3218055, 74.1305, 100.0 meters - - Terrain height is interpreted as being described in feet above ground - level unless followed by the word meters, and is added on top of the - terrain specified in the SDF data for the locations specified. Be - aware that each user-defined terrain feature specified will be inter- - preted as being 3-arc seconds in both latitude and longitude in splat - and 1 arc-second in latitude and longitude in splat-hd. Features de- - scribed in the user-defined terrain file that overlap previously de- - fined features in the file are ignored by SPLAT! to avoid ambiguity. - -GROUND CLUTTER - The height of ground clutter can be specified using the -gc switch: - - splat -t wnjt-dt -r kd2bd -gc 30.0 -H wnjt-dt_path.png - - The -gc switch as the effect of raising the overall terrain by the - specified amount in feet (or meters if the -metric switch is invoked), - except over areas at sea-level and at the transmitting and receiving - antenna locations. - -SIMPLE TOPOGRAPHIC MAP GENERATION - In certain situations it may be desirable to generate a topographic map - of a region without plotting coverage areas, line-of-sight paths, or - generating obstruction reports. There are several ways of doing this. - If one wishes to generate a topographic map illustrating the location - of a transmitter and receiver site along with a brief text report de- - scribing the locations and distances between the sites, the -n switch - should be invoked as follows: - - splat -t tx_site -r rx_site -n -o topo_map.ppm - - If no text report is desired, then the -N switch is used: - - splat -t tx_site -r rx_site -N -o topo_map.ppm - - If a topographic map centered about a single site out to a minimum - specified radius is desired instead, a command similar to the following - can be used: - - splat -t tx_site -R 50.0 -s NJ_Cities -b NJ_Counties -o topo_map.ppm - - where -R specifies the minimum radius of the map in miles (or kilome- - ters if the -metric switch is used). Note that the tx_site name and - location are not displayed in this example. If display of this infor- - mation is desired, simply create a SPLAT! city file (-s option) and ap- - pend it to the list of command-line options illustrated above. - - If the -o switch and output filename are omitted in these operations, - topographic output is written to a file named tx_site.ppm in the cur- - rent working directory by default. - -GEOREFERENCE FILE GENERATION - Topographic, coverage (-c), and path loss contour (-L) maps generated - by SPLAT! may be imported into Xastir (X Amateur Station Tracking and - Information Reporting) software by generating a georeference file using - SPLAT!'s -geo switch: - - splat -t kd2bd -R 50.0 -s NJ_Cities -b NJ_Counties -geo -o map.ppm - - The georeference file generated will have the same base name as the -o - file specified, but have a .geo extension, and permit proper interpre- - tation and display of SPLAT!'s .ppm graphics in Xastir software. - -GOOGLE MAP KML FILE GENERATION - Keyhole Markup Language files compatible with Google Earth may be gen- - erated by SPLAT! when performing point-to-point or regional coverage - analyses by invoking the -kml switch: - - splat -t wnjt-dt -r kd2bd -kml - - The KML file generated will have the same filename structure as a Path - Analysis Report for the transmitter and receiver site names given, ex- - cept it will carry a .kml extension. - - Once loaded into Google Earth (File --> Open), the KML file will anno- - tate the map display with the names of the transmitter and receiver - site locations. The viewpoint of the image will be from the position - of the transmitter site looking towards the location of the receiver. - The point-to-point path between the sites will be displayed as a white - line while the RF line-of-sight path will be displayed in green. - Google Earth's navigation tools allow the user to "fly" around the - path, identify landmarks, roads, and other featured content. - - When performing regional coverage analysis, the .kml file generated by - SPLAT! will permit path loss or signal strength contours to be layered - on top of Google Earth's display along with a corresponding color key - in the upper left-hand corner. The generated .kml file will have the - same basename as that of the .ppm file normally generated. - -DETERMINATION OF ANTENNA HEIGHT ABOVE AVERAGE TERRAIN - SPLAT! determines antenna height above average terrain (HAAT) according - to the procedure defined by Federal Communications Commission Part - 73.313(d). According to this definition, terrain elevations along - eight radials between 2 and 10 miles (3 and 16 kilometers) from the - site being analyzed are sampled and averaged for each 45 degrees of az- - imuth starting with True North. If one or more radials lie entirely - over water or over land outside the United States (areas for which no - USGS topography data is available), then those radials are omitted from - the calculation of average terrain. - - Note that SRTM-3 elevation data, unlike older USGS data, extends beyond - the borders of the United States. Therefore, HAAT results may not be - in full compliance with FCC Part 73.313(d) in areas along the borders - of the United States if the SDF files used by SPLAT! are SRTM-derived. - - When performing point-to-point terrain analysis, SPLAT! determines the - antenna height above average terrain only if enough topographic data - has already been loaded by the program to perform the point-to-point - analysis. In most cases, this will be true, unless the site in ques- - tion does not lie within 10 miles of the boundary of the topography - data in memory. - - When performing area prediction analysis, enough topography data is - normally loaded by SPLAT! to perform average terrain calculations. Un- - der such conditions, SPLAT! will provide the antenna height above aver- - age terrain as well as the average terrain above mean sea level for az- - imuths of 0, 45, 90, 135, 180, 225, 270, and 315 degrees, and include - such information in the generated site report. If one or more of the - eight radials surveyed fall over water, or over regions for which no - SDF data is available, SPLAT! reports No Terrain for the radial paths - affected. - -ADDITIONAL INFORMATION - The latest news and information regarding SPLAT! software is available - through the official SPLAT! software web page located at: - http://www.qsl.net/kd2bd/splat.html. - -AUTHORS - John A. Magliacane, KD2BD - Creator, Lead Developer - - Doug McDonald - Original Longley-Rice ITM Model integration - - Ron Bentley - Fresnel Zone plotting and clearance determination - - - - -KD2BD Software 27 June 2014 SPLAT!(1) diff --git a/docs/spanish/man/docmaker b/docs/spanish/man/docmaker deleted file mode 100644 index 3891f0b..0000000 --- a/docs/spanish/man/docmaker +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/bash -# This script builds the man page, pdf, and postscript -# and text documentation from the groff source "splat.man". -echo -n "Creating postscript file... " -groff -e -T ps -man splat.man > ../postscript/splat.ps -echo -echo -n "Creating man page... " -groff -e -T ascii -man splat.man > splat.1 -echo -echo -n "Creating text file... " -ul -t dumb splat.1 > ../text/splat.txt -echo -echo -n "Creating pdf file... " -ps2pdf ../postscript/splat.ps ../pdf/splat.pdf -echo -echo "Done!" diff --git a/docs/spanish/man/splat.1 b/docs/spanish/man/splat.1 deleted file mode 100644 index 70e4eee..0000000 --- a/docs/spanish/man/splat.1 +++ /dev/null @@ -1,1360 +0,0 @@ -SPLAT!(1) KD2BD Software SPLAT!(1) - - - -NNAAMMEE - splat es una herramienta para el anlisis de Propagacin de Seales RF, - Prdidas , y Caractersticas del Terreno (SSignal PPropagation, LLoss, AAnd - TTerrain analysis tool SSPPLLAATT!!) - -SSIINNOOPPSSIISS - splat - [-t _s_i_t_i_o___t_r_a_n_s_m_i_s_o_r_._q_t_h] - [-r _s_i_t_i_o___r_e_c_e_p_t_o_r_._q_t_h] - [-c _r_x _a_l_t_u_r_a _d_e _l_a _a_n_t_e_n_a _p_a_r_a _e_l _a_n_l_i_s_i_s _d_e _c_o_b_e_r_t_u_r_a _L_O_S _(_p_i_e_s_/_m_e_t_- - _r_o_s_) _(_f_l_o_t_a_n_t_e_)] - [-L _r_x _a_l_t_u_r_a _d_e _l_a _a_n_t_e_n_a _p_a_r_a _e_l _a_n_l_i_s_i_s _d_e _c_o_b_e_r_t_u_r_a _I_T_M _(_p_i_e_s_/_m_e_t_- - _r_o_s_) _(_f_l_o_t_a_n_t_e_)] - [-p _p_e_r_f_i_l___t_e_r_r_e_n_o_._e_x_t] - [-e _p_e_r_f_i_l___e_l_e_v_a_c_i_o_n_._e_x_t] - [-h _p_e_r_f_i_l___a_l_t_u_r_a_._e_x_t] - [-H _p_e_r_f_i_l___a_l_t_u_r_a___n_o_r_m_a_l_i_z_a_d_a_._e_x_t] - [-l _p_e_r_f_i_l___I_T_M_._e_x_t] - [-o _n_o_m_b_r_e___a_r_c_h_i_v_o___m_a_p_a___t_o_p_o_g_r_f_i_c_o_._p_p_m] - [-b _a_r_c_h_i_v_o___l_m_i_t_e_s___c_a_r_t_o_g_r_f_i_c_o_s_._d_a_t] - [-s _b_a_s_e___d_a_t_o_s___s_i_t_i_o_s_/_c_i_u_d_a_d_e_s_._d_a_t] - [-d _r_u_t_a___d_i_r_e_c_t_o_r_i_o___s_d_f] - [-m _r_a_d_i_o _m_u_l_t_i_p_l_i_c_a_d_o_r _t_i_e_r_r_a _(_f_l_o_t_a_n_t_e_)] - [-f _f_r_e_q_u_e_n_c_i_a _(_M_H_z_) _p_a_r_a _c_l_c_u_l_o_s _d_e _l_a _z_o_n_a _d_e _F_r_e_s_n_e_l _(_f_l_o_t_a_n_t_e_)] - [-R _m_x_i_m_o _r_a_d_i_o _d_e _c_o_b_e_r_t_u_r_a _(_m_i_l_l_a_s_/_k_i_l_m_e_t_r_o_s_) _(_f_l_o_t_a_n_t_e_)] - [-dB _U_m_b_r_a_l _b_a_j_o _e_l _c_u_a_l _n_o _s_e _p_r_e_s_e_n_t_a_r_n _l_o_s _c_o_n_t_o_r_n_o_s] - [-gc _A_l_t_u_r_a _d_e_l _c_l_u_t_t_e_r _d_e_l _t_e_r_r_e_n_o _(_p_i_e_s_/_m_e_t_r_o_s_) _(_f_l_o_t_a_n_t_e_)] - [-fz _p_o_r_c_e_n_t_a_j_e _d_e_s_p_e_j_a_d_o _d_e _l_a _z_o_n_a _d_e _F_r_e_s_n_e_l _(_d_e_f_a_u_l_t _= _6_0_%_)] - [-ano _n_o_m_b_r_e _a_r_c_h_i_v_o _s_a_l_i_d_a _a_l_f_a_n_u_m_r_i_c_a] - [-ani _n_o_m_b_r_e _a_r_c_h_i_v_o _e_n_t_r_a_d_a _a_l_f_a_n_u_m_r_i_c_a] - [-udt _a_r_c_h_i_v_o___t_e_r_r_e_n_o___d_e_f_i_n_i_d_o___p_o_r___e_l___u_s_u_a_r_i_o_._d_a_t] - [-log _l_o_g_f_i_l_e_._e_x_t] - [-n] - [-N] - [-nf] - [-sc] - [-dbm] - [-ngs] - [-geo] - [-kml] - [-gpsav] - [-metric] - [-olditm] - -DDEESSCCRRIIPPCCIINN - SSPPLLAATT!! es una poderosa herramienta para el anlisis de terreno y - propagacin RF que cubre el espectro entre 20 Megahertz y 20 Gigahertz. - SSPPLLAATT!! es Software Libre y est diseado para operar en escritorios Unix - y basados en Linux. La redistribucin y/o modificacin est permitida bajo - los trminos de la licencia pblica general GNU segn lo publicado por la - Fundacin de Software Libre, versin 2. La adopcin del cdigo fuente de - SSPPLLAATT!! en aplicaciones propietarias o de fuente-cerrada es una violacin - de esta licencia, y est eessttrriiccttaammeennttee prohibida. - - SSPPLLAATT!! es distribuido con la esperanza de que sea til, pero SIN NINGUNA - GARANTA, an la garanta implcita de COMERCIALIZACIN o de la APLICACIN - PARA UN PROPSITO PARTICULAR. Vea la licencia GNU para ms detalles. - -IINNTTRROODDUUCCCCIINN - Las aplicaciones de SSPPLLAATT!! incluyen la visualizacin, diseo, y anlisis - de enlaces de redes inalmbricas WAN, sistemas de radio comunicaciones - comerciales y aficionados sobre los 20 megahertz, enlaces microonda, - estudios de interferencia y coordinacin de frecuencias, y determinacin - del contorno de cobertura de las regiones de radio y televisin ter- - restres anlogas y digitales. - - SSPPLLAATT!! provee datos RF de ingeniera del sitio, tales como distancia del - arco terrestre y azimut entre sitios, ngulos de elevacin (uptilt) y - depresin (downtilt) de la antena, altura de la antena sobre nivel del - mar, altura de la antena sobre el promedio del terreno, azimut, distan- - cias y elevaciones para determinar obstrucciones, atenuaciones de - trayectoria del Modelo Terreno Irregular, e intensidad de la seal - recibida. Adicionalmente, la altura mnima de las antenas requerida para - superar las obstrucciones del terreno, la primera zona de Fresnel, y - cualquier porcentaje definido por el usuario para la primera zona de - Fresnel. - - SSPPLLAATT!! produce reportes, grficos, y mapas topogrficos de alta resolu- - cin que presentan trayectorias de lnea-de-vista, prdidas por trayecto- - ria regionales y contornos de intensidad de seal a travs de los cuales - se puede determinar el rea de cobertura esperada de sistemas trans- - misores o repetidoras. Cuando se emplean mltiples sitios de trans- - misores o repetidores, al realizar anlisis de lnea de vista y anlisis - del Modelo de Terreno Irregular, SSPPLLAATT!! puede determinar las reas de - cobertura individuales y mutuas dentro de la red especificada. - - -FFIICCHHEERROOSS DDEE EENNTTRRAADDAA - SSPPLLAATT!! es una aplicacin manejada por lnea de comandos o terminal de - textos (shell), y lee los datos de entrada a travs de un nmero de - ficheros de datos. Algunos archivos son obligatorios para la ejecucin - apropiada del programa, mientras que otros son opcionales. Los archivos - obligatorios incluyen los modelos topogrficos de elevacin digital en la - forma de archivos de datos de SPLAT (archivos SDF), archivos de local- - izacin del sitio (archivos QTH), y archivos de parmetros para el Modelo - de Terreno Irregular (archivos LRP). Los archivos opcionales incluyen - archivos de localizacin de ciudades/sitios, archivos de lmites cartogr- - ficos, archivos de terreno definidos por el usuario, archivos de - entrada de prdidas por trayectoria, archivos de patrones de radiacin de - antenas, y archivos de definicin de color. - -FFIICCHHEERROOSS DDEE DDAATTOOSS SSPPLLAATT - SSPPLLAATT!! importa los datos topogrficos desde los ficheros de datos SPLAT - (SDFs). Estos archivos se pueden generar desde varias fuentes de infor- - macin. En los Estados Unidos, los ficheros de datos SPLAT se pueden - generar a travs de la U.S. Geological Survey Digital Elevation Models - (DEMs) usando la herramienta ppoossttddoowwnnllooaadd y uussggss22ssddff incluidas con - SSPPLLAATT!!. Los modelos de elevacin digital USGS compatibles con esta util- - idad pueden ser descargados de: - - _h_t_t_p_:_/_/_e_d_c_f_t_p_._c_r_._u_s_g_s_._g_o_v_/_p_u_b_/_d_a_t_a_/_D_E_M_/_2_5_0_/. - - Una resolucin significativamente mejor se puede obtener con el uso de - los modelos digitales de elevacin SRTM versin 2, especialmente cuando - son complementados por datos USGS-derivados de SDF. Estos modelos de - un-grado por un-grado son el resultado de la misin topogrfica del radar - espacial Shuttle STS-99, y estn disponibles para la mayora de las - regiones pobladas de la tierra. Los ficheros de datos SPLAT pueden ser - generados desde los archivos de datos SRTM-3 3 arco-segundo usando la - utilidad incluida ssrrttmm22ssddff. Los archivo SRTM-3 versin 2.1 se pueden - obtener a travs de FTP annimo desde: - - _h_t_t_p_:_/_/_d_d_s_._c_r_._u_s_g_s_._g_o_v_/_s_r_t_m_/_v_e_r_s_i_o_n_2___1_/_S_R_T_M_3_/ - - Observe que el nombre de los archivos SRTM se refieren a la latitud y - longitud de la esquina suroeste del conjunto de datos topogrficos con- - tenidos dentro del archivo. Por lo tanto, la regin de inters debe estar - al norte y al este de la latitud y longitud proporcionada por el nombre - del archivo SRTM. - - Incluso se puede obtener una mayor resolucin y exactitud usando los - datos topogrficos SRTM-1 Versin 2.1. Estos datos estn disponibles para - los Estados Unidos y sus territorios y posesiones, y pueden ser descar- - gados desde: - - _h_t_t_p_:_/_/_d_d_s_._c_r_._u_s_g_s_._g_o_v_/_s_r_t_m_/_v_e_r_s_i_o_n_2___1_/_S_R_T_M_1_/ - - Los archivos SDF de alta resolucin para ser usados con SSPPLLAATT!! HHDD pueden - ser generados desde los datos en este formato usando la herramienta - ssrrttmm22ssddff--hhdd. - - A pesar de la exactitud ms alta que los datos SRTM ofrecen, existen - algunos vacos en los conjuntos de datos. Cuando se detectan estos - vacos, las herramientas ssrrttmm22ssddff y ssrrttmm22ssddff--hhdd los substituyen por los - datos encontrados en los archivos SDF existentes generados con la - utilidad uussggss22ssddff). Si los datos SDF, USGS-derivados no estn - disponibles, los vacos se reemplazan con el promedio de los pxeles ady- - acentes, o reemplazo directo. - - Los ficheros de datos de SPLAT contienen valores enteros de las eleva- - ciones topogrficas en metros referenciados al nivel del mar para - regiones de la tierra de 1-grado por 1-grado con una resolucin de - 3-arco segundos. Los archivos SDF pueden ser ledos por SSPPLLAATT!! ya sea en - el formato estndar (_._s_d_f) as como en los generados directamente por las - herramientas uussggss22ssddff, ssrrttmm22ssddff, y ssrrttmm22ssddff--hhdd, o en el formato com- - primido bzip2 (_._s_d_f_._b_z_2). Puesto que los archivos sin comprimir se - pueden procesar ligeramente ms rpido que los archivos comprimidos, - SSPPLLAATT!! busca los datos SDF necesarios en formato sin comprimir primero. - Si los datos sin comprimir no pueden ser localizados, SSPPLLAATT!! entonces - busca los datos en formato comprimido bzip2. Si tampoco se pueden - encontrar los archivos SDF comprimidos para la regin solicitada, SSPPLLAATT!! - asume que la regin es el ocano, y asignar una elevacin del nivel del - mar a estas reas. - - Esta caracterstica de SSPPLLAATT!! permite realizar el anlisis de trayecto- - rias no solamente sobre la tierra, sino tambin entre las reas costeras - no representadas por los datos del Modelo de Elevacin Digital. Sin - embargo, este comportamiento de SSPPLLAATT!! resalta la importancia de tener - todos los archivos SDF requeridos para la regin a ser analizada, para - as obtener resultados significativos. - -AARRCCHHIIVVOOSS DDEE LLOOCCAALLIIZZAACCIINN DDEELL SSIITTIIOO ((QQTTHH)) - SSPPLLAATT!! SPLAT! importa la informacin de la localizacin de los sitios - del transmisor y del receptor analizados por el programa de los - archivos ASCII que tienen una extensin _._q_t_h. Los archivos QTH contienen - el nombre del sitio, la latitud del sitio (positiva al norte del - ecuador, negativa al sur), la longitud del sitio (en grados oeste W de - 0 a 360 grados), y; La altura de la antena del sitio sobre el nivel del - suelo (AGL), cada uno separado por un caracter de salto-de-lnea. La - altura de la antena se asume a ser especificada en pies a menos que sea - seguida por la letra _m o de la palabra _m_e_t_e_r_s en maysculas o minscu- - las. La informacin de la latitud y de la longitud se puede expresar en - formato decimal (74.6889) o en formato grados, minutos, segundos (DMS) - (74 41 20.0). - - Por ejemplo, un archivo de localizacin de sitio que describe la estacin - de televisin WNJT-DT, Trenton, NJ (_w_n_j_t_-_d_t_._q_t_h) se puede leer como - sigue: - - - WNJT-DT - 40.2828 - 74.6864 - 990.00 - - - Cada sitio de transmisor y receptor analizado por SSPPLLAATT!! debe ser rep- - resentado por su propio archivo de la localizacin de sitio (QTH). - -AARRCCHHIIVVOOSS DDEE PPAARRMMEETTRROOSS MMOODDEELLOO TTEERRRREENNOO IIRRRREEGGUULLAARR ((LLRRPP)) - Los archivos de datos de parmetros Modelo Terreno Irregular son - requeridos por SSPPLLAATT!! para determinar las prdidas por trayectoria RF, - intensidad de campo, o nivel de la potencia de la seal recibida ya sea - en el modo punto-a-punto o prediccin de rea. Los datos de parmetros - para el Modelo Terreno Irregular se leen desde el archivo que tiene el - mismo nombre base del archivo QTH del sitio del transmisor, pero con - extensin _._l_r_p. Los Archivos SSPPLLAATT!! LRP comparten el siguiente formato - (_w_n_j_t_-_d_t_._l_r_p): - - - 15.000 ; Earth Dielectric Constant (Relative permittivity) - 0.005 ; Earth Conductivity (Siemens per meter) - 301.000 ; Atmospheric Bending Constant (N-units) - 647.000 ; Frequency in MHz (20 MHz to 20 GHz) - 5 ; Radio Climate (5 = Continental Temperate) - 0 ; Polarization (0 = Horizontal, 1 = Vertical) - 0.50 ; Fraction of situations (50% of locations) - 0.90 ; Fraction of time (90% of the time) - 46000.0 ; Potencia Efectiva Radiada (ERP) in Watts (optional) - - Si un archivo LRP correspondiente al archivo QTH del sitio de trans- - misin no puede ser encontrado, SSPPLLAATT!! explorar el directorio de trabajo - actual buscando el archivo "splat.lrp". Si este archivo tampoco puede - ser encontrado, entonces los parmetros por defecto enumerados arriba - sern asignados por SSPPLLAATT!! y se generar el archivo correspondiente - "splat.lrp" que contendr estos parmetros y por defecto ser escrito en - el directorio actual de trabajo. El archivo "splat.lrp" generado puede - ser editado de acuerdo a las necesidades del usuario. - - Las constantes dielctricas tpicas de la tierra y sus valores de conduc- - tividad son los siguientes: - Dielectric Constant Conductivity - Salt water : 80 5.000 - Good ground : 25 0.020 - Fresh water : 80 0.010 - Marshy land : 12 0.007 - Farmland, forest : 15 0.005 - Average ground : 15 0.005 - Mountain, sand : 13 0.002 - City : 5 0.001 - Poor ground : 4 0.001 - - Los cdigos de Clima de Radio usados por SSPPLLAATT!! son los siguientes: - - 1: Equatorial (Congo) - 2: Continental Subtropical (Sudan) - 3: Maritime Subtropical (West coast of Africa) - 4: Desert (Sahara) - 5: Continental Temperate - 6: Maritime Temperate, over land (UK and west coasts of US & - EU) - 7: Maritime Temperate, over sea - - - El clima templado continental es comn a las grandes masas de la tierra - en la zona templada, tal como los Estados Unidos. Para trayectorias - inferiores a 100 kilmetros, es poca la diferencia entre los climas tem- - plados continentales y martimos. - - Los parmetros sptimo y octavo en el archivo _._l_r_p corresponden al anli- - sis estadstico proporcionado por el modelo ITM. En este ejemplo, SSPPLLAATT!! - devolver la mxima prdida de trayectoria que ocurre el 50% de las situa- - ciones (fraccin de situaciones, o Variabilidad de Locaciones) el 90% - del tiempo (fraccin de tiempo, o Variabilidad Tiempo). Esto es a menudo - denotado como F(50,90) en los estudios Longley_Rice. En los Estados - Unidos un criterio F(50,90) es tpicamente usado para televisin digital - (8-level VSB modulation), mientras que F(50,50) es usado para radiodi- - fusin analgica (VSB-AM+NTSC). - - Para mayor informacin sobre los parmetros del modelo de propagacin ITM, - puede referirse a: _h_t_t_p_:_/_/_w_w_w_._i_t_s_._b_l_d_r_d_o_c_._g_o_v_/_r_e_s_o_u_r_c_e_s_/_r_a_d_i_o_-_p_r_o_p_a_g_a_- - _t_i_o_n_-_s_o_f_t_w_a_r_e_/_i_t_m_/_i_t_m_._a_s_p_x y _h_t_t_p_:_/_/_w_w_w_._s_o_f_t_w_r_i_g_h_t_._c_o_m_/_f_a_q_/_e_n_g_i_n_e_e_r_- - _i_n_g_/_p_r_o_p___l_o_n_g_l_e_y___r_i_c_e_._h_t_m_l - - El parmetro final en el archivo _._l_r_p corresponde a la potencia efectiva - radiada (ERP), y es opcional. Si esta es incluida en el archivo _._l_r_p, - entonces SSPPLLAATT!! computar los niveles de intensidad de seal recibida y - los contornos de niveles de intensidad de campo cuando se realicen los - estudios ITM. Si el parmetro es omitido, se computan en su lugar las - prdidas por trayectoria. El ERP provisto en el archivo _._l_r_p puede ser - invalidado usando la opcin SSPPLLAATT!! de lnea-de-comando _-_e_r_p. Si el - archivo _._l_r_p contiene un parmetro ERP y en lugar de generar los con- - tornos de intensidad de campo se desea generar los contornos de prdida - por trayectoria, el valor ERP puede ser asignado a cero usando la opcin - _-_e_r_p sin tener que editar el archivo _._l_r_p para obtener el mismo resul- - tado. - -AARRCCHHIIVVOOSS DDEE LLOOCCAALLIIZZAACCIINN DDEE CCIIUUDDAADDEESS - Los nombres y las localizaciones de ciudades, sitios de la torre, u - otros puntos de inters se pueden importar y trazar en los mapas topogr- - ficos generados por SSPPLLAATT!!. SSPPLLAATT!! importa los nombres de ciudades y - localizaciones de los archivos ASCII que contienen el nombre, latitud y - longitud de la localizacin de inters. Cada campo es separado por una - coma. Cada expediente es separado por un caracter de salto-de-lnea. Al - igual que con los archivos _._q_t_h, la informacin de la latitud y la lon- - gitud se puede ingresar en formato decimal o en formato de grados, - minutos, segundos (DMS). - - Por ejemplo (_c_i_t_i_e_s_._d_a_t): - - Teaneck, 40.891973, 74.014506 - Tenafly, 40.919212, 73.955892 - Teterboro, 40.859511, 74.058908 - Tinton Falls, 40.279966, 74.093924 - Toms River, 39.977777, 74.183580 - Totowa, 40.906160, 74.223310 - Trenton, 40.219922, 74.754665 - - Un total de cinco ficheros de datos separados de ciudades se pueden - importar a la vez, y no hay lmite al tamao de estos archivos. SSPPLLAATT!! - lee datos de las ciudades en base a "primero ingresada primero - servida", y traza solamente las localizaciones cuyas anotaciones no - estn en conflicto con anotaciones de las localizaciones ledas anterior- - mente en el archivo actual de datos de ciudades, o en archivo previos. - Este comportamiento en SSPPLLAATT!! reduce al mnimo el desorden al generar - los mapas topogrficos, pero tambin determina que por mandato las local- - izaciones importantes estn puestas al principio del primer fichero de - datos de ciudades, y las localizaciones de menor importancia sean colo- - cadas a continuacin en la lista o en los ficheros de datos subse- - cuentes. - - Los ficheros de datos de las ciudades se pueden generar manualmente - usando cualquier editor de textos, importar de otras fuentes, o derivar - de los datos disponibles de la oficina de censo de los Estados Unidos, - usando la herramienta cciittyyddeeccooddeerr incluida con SSPPLLAATT!!. Estos datos - estn disponibles gratuitamente va Internet en: _h_t_t_p_:_/_/_w_e_b_._a_r_- - _c_h_i_v_e_._o_r_g_/_w_e_b_/_2_0_1_3_0_3_3_1_1_7_2_8_0_0_/_h_t_t_p_:_/_/_w_w_w_._c_e_n_- - _s_u_s_._g_o_v_/_g_e_o_/_w_w_w_/_c_o_b_/_b_d_y___f_i_l_e_s_._h_t_m_l, y deben estar en formato ASCII. - -AARRCCHHIIVVOOSS DDEE DDAATTOOSS DDEE LLIIMMIITTEESS CCAARRTTOOGGRRFFIICCOOSS - Los datos cartogrficos de lmites se pueden tambin importar para trazar - los lmites de las ciudades, condados, o estados en los mapas topogrfi- - cos generados por SSPPLLAATT!!. Estos datos deben estar en el formato de - metadatos de archivos cartogrficos de lmites ARC/INFO Ungenerate (for- - mato ASCII), y estn disponibles para los E.E.U.U..en la Oficina de Cen- - sos va Internet en: _h_t_t_p_:_/_/_w_e_b_._a_r_- - _c_h_i_v_e_._o_r_g_/_w_e_b_/_2_0_1_3_0_3_3_1_1_4_4_9_3_4_/_h_t_t_p_:_/_/_w_w_w_._c_e_n_- - _s_u_s_._g_o_v_/_g_e_o_/_w_w_w_/_c_o_b_/_c_o_2_0_0_0_._h_t_m_l_#_a_s_c_i_i y _h_t_t_p_:_/_/_w_e_b_._a_r_- - _c_h_i_v_e_._o_r_g_/_w_e_b_/_2_0_1_3_0_5_0_7_0_7_5_6_5_8_/_h_t_t_p_:_/_/_w_w_w_._c_e_n_- - _s_u_s_._g_o_v_/_g_e_o_/_w_w_w_/_c_o_b_/_p_l_2_0_0_0_._h_t_m_l_#_a_s_c_i_i. Un total de cinco archivos car- - togrficos separados de lmites se puede importar a la vez. No es nece- - sario importar lmites de estado si ya se han importado los lmites del - condado. - -OOPPEERRAACCIINN DDEELL PPRROOGGRRAAMMAA - SSPPLLAATT!! Debido a que SSPPLLAATT!! hace un uso intensivo del CPU y la memoria, - se invoca va lnea de comandos usando una serie de opciones y argumen- - tos, este tipo de interfaz reduce al mnimo gastos indirectos y se - presta a operaciones escriptadas (batch). El uso de CPU y prioridad de - memoria por SSPPLLAATT!! se pueden modificar con el uso del comando nniiccee de - Unix. - - El nmero y el tipo de opciones pasados a SSPPLLAATT!! determinan su modo de - operacin y el mtodo de generacin de los datos de salida. Casi todas - las opciones de SSPPLLAATT!! se pueden llamar en cascada en cualquier orden - al invocar el programa desde la lnea de comandos. Simplemente tipee - splat en la consola de comandos, esto retornar un resumen de las - opciones de lnea de comando de SSPPLLAATT!!: - - --==[ SPLAT! v1.4.2 Available Options... ]==-- - -t txsite(s).qth (sitio de transmisin, max 4 con -c, max 30 con - -L) - -r rxsite.qth (sitio de recepcin) - -c grafica rea(s) de cobertura de Tx(s) con antena Rx a X - pies/mts SNT - -L grafica mapa de prdida por trayectoria del TX y antena RX a X - pies/mts SNT - -s nombres de archivos(s) de ciudades/sitios para importar - (mximo 5) - -b nombres de archivos(s) de lmites cartogrficos para importar - (mximo 5) - -p nombre de archivo para graficar el perfil del terreno - -e nombre de archivo para graficar la elevacin del terreno - -h nombre de archivo para graficar la altura del terreno - -H nombre de archivo para graficar la altura normalizada del - terreno - -l nombre de archivo para graficar prdidas por trayectoria - -o nombre de archivo para generar el mapa topogrfico (.ppm) - -u nombre del archivo del terreno definido-por-el-usuario a - importar - -d ruta al directorio que contiene los archivos sdf (en lugar de - ~/.splat_path) - -m multiplicador del radio de la tierra - -n no grafica las rutas de LDV in mapas .ppm - -N no produce reportes innecesarios del sitio o reportes de - obstruccin - -f frecuencia para el clculo de la zona de Fresnel (MHz) - -R modifica el rango por defecto para -c o -L (millas/kilmetros) - -sc presenta niveles de contornos suavizados en lugar de cuanti- - zados - -db Umbral bajo el cual los contornos no sern presentados - -nf no grafica la zona de Fresnel en los grficos de altura - -fz porcentaje de despeje de la zona de Fresnel (default = 60) - -gc Altura del clutter del terreno (pies/metros) - -ngs presenta la topografa de escala de grises como blanco en - archivos .ppm - -erp valor ERP en lugar del declarado en el archivo .lrp (Watts) - -ano nombre archivo salida alfanumrica - -ani nombre archivo entrada alfanumrica - -udt nombre del archivo de entrada de terreno definido-por-el- - usuario - -kml genera un archivo compatible Google Earth .kml (para - enlaces punto-punto) - -geo genera un archivo Xastir de georeferencia .geo (con salida - .ppm) - -dbm dibuja contornos de nivel de potencia de seal en lugar de - intensidad de campo - -log copia las cadenas de salida de la lnea de comandos a este - archivo de salida - -gpsav preserva los archivos temporales gnuplot despus de ejecu- - tar SPLAT! - -metric emplea unidades mtricas para todas las I/O del usuario - -olditm invoca el viejo modelo de propagacin ITM en lugar del nuevo - ITWOM - Las opciones de lnea-de-comando para splat y splat-hd son idnticas. - - La opcin de lnea de comandos -log causa que todas las opciones de las - lneas de comando llamadas sean direccionadas a un archivo de su eleccin - (_l_o_g_f_i_l_e_._t_x_t): - - splat -t tx_site -r rx_site -s nj_cities -o topo_map -log logfile.txt - - SSPPLLAATT!! opera en dos modos distintos: _m_o_d_o _p_u_n_t_o_-_a_-_p_u_n_t_o, y _m_o_d_o _d_e - _p_r_e_d_i_c_c_i_n _d_e_l _r_e_a _d_e _c_o_b_e_r_t_u_r_a, y puede ser invocado por el usuario - usando el modo de lnea de vista (LOS) o el modelo de propagacin Ter- - reno Irregular (ITM). El radio de tierra verdadera, cuatro-tercios, o - cualquier otro definido-por-el-usuario pueden ser especificados al - realizar los anlisis de lnea-de-vista. - -AANNLLIISSIISS PPUUNNTTOO--AA--PPUUNNTTOO - SSPPLLAATT!! puede ser utilizado para determinar si existe lnea de vista - entre dos localizaciones especificadas realizando para ello el anlisis - del perfil del terreno. Por ejemplo: - - splat -t tx_site.qth -r rx_site.qth - - invoca un anlisis del perfil del terreno entre el transmisor especifi- - cado en _t_x___s_i_t_e_._q_t_h y el receptor especificado en _r_x___s_i_t_e_._q_t_h, y - escribe un Reporte de Obstrucciones SSPPLLAATT!! al directorio de trabajo - actual. El reporte contiene los detalles de los sitios del transmisor y - del receptor, e identifica la localizacin de cualquier obstruccin - detectada a lo largo de la trayectoria de lnea-de-vista. Si una - obstruccin puede ser despejada levantando la antena de recepcin a una - mayor altura, SSPPLLAATT!! indicar la altura mnima de la antena requerida - para que exista lnea-de-vista entre las localizaciones del transmisor y - el receptor especificadas. Observe que las unidades imperiales (millas, - pies) se usan por defecto, a menos que se use la opcin _-_m_e_t_r_i_c en la - orden SSPPLLAATT!! de lnea de comandos. - - splat -t tx_site.qth -r rx_site.qth -metric - - Si la antena se debe levantar una cantidad significativa, esta determi- - nacin puede tomar una cierta cantidad de tiempo. Observe que los resul- - tados proporcionados son el _m_n_i_m_o necesario para que exista una trayec- - toria de la lnea-de-vista, y en el caso de este simple ejemplo, no con- - sidera los requisitos de la zona de Fresnel. - - Las extensiones _q_t_h son asumidas por SPLAT! para los archivos QTH, y - son opcionales cuando se especifican los argumentos -t y -r en la lnea - de comandos. SSPPLLAATT!! lee automticamente todos los ficheros de datos de - SPLAT necesarios para el anlisis del terreno entre los sitios especifi- - cados. SSPPLLAATT!! busca primero los archivos SDF necesarios en el direc- - torio de trabajo actual. Si estos archivos no se encuentran, SSPPLLAATT!! - entonces busca en la ruta especificada por la opcin _-_d: - - splat -t tx_site -r rx_site -d /cdrom/sdf/ - - Una ruta a un directorio externo se puede especificar creando el - archivo ".splat_path" en el directorio de trabajo del usuario. Este - archivo _$_H_O_M_E_/_._s_p_l_a_t___p_a_t_h debe contener una sola lnea de texto ASCII en - la que indique la ruta completa del directorio que contiene todos los - archivos SDF. - - /opt/splat/sdf/ - - Y puede ser generado usando cualquier editor de texto. - - Adicionando la opcin _-_p se puede generar un grfico que muestre el per- - fil del terreno en funcin de la distancia, partiendo desde el receptor, - entre las localizaciones del transmisor y receptor: - - splat -t tx_site -r rx_site -p terrain_profile.png - - Cuando genera los grficos SPLAT! invoca al programa ggnnuupplloott. La - extensin del nombre del archivo especificado a SSPPLLAATT!! determina el for- - mato del grfico a ser producido _._p_n_g generar un archivo de grfico PNG a - color con una resolucin de 640x480, mientras que _._p_s o _._p_o_s_t_s_c_r_i_p_t - generarn archivos de salida postscritp. La salida en formatos como GIF, - Adobe Illustrator, AutoCAD dxf, LaTex, y muchos otros estn disponibles. - Por favor consulte ggnnuupplloott, y la documentacin de ggnnuupplloott para detalles - de todos los formatos de salida soportados. - - En el lado del receptor usando la opcin _-_e se puede generar un grfico - de elevaciones en funcin de la distancia determinado por el ngulo de - inclinacin debido al terreno entre el receptor y el transmisor: - - splat -t tx_site -r rx_site -e elevation_profile.png - - El grfico producido usando esta opcin ilustra los ngulos de elevacin y - depresin resultado del terreno entre la localizacin del receptor y el - sitio del transmisor desde la perspectiva del receptor. Un segundo - trazo es dibujado entre el lado izquierdo del grfico (localizacin del - receptor) y la localizacin de la antena que transmite a la derecha. - Este trazo ilustra el ngulo de elevacin requerido para que exista una - trayectoria de lnea-de-vista entre el receptor y transmisor. Si la - traza interseca el perfil de elevacin en cualquier punto del grfico, - entonces esto es una indicacin que bajo las condiciones dadas no existe - una trayectoria de lnea-de-vista, y las obstrucciones se pueden identi- - ficar claramente en el grfico en los puntos de interseccin. - - Usando la opcin _-_h se puede generar un grfico que ilustre la altura - del terreno referenciado a la trayectoria de lnea-de-vista entre el - transmisor y el receptor: - - splat -t tx_site -r rx_site -h height_profile.png - - Con la opcin _-_H se puede obtener La altura del terreno normalizada a - las alturas de las antenas del transmisor y receptor: - - splat -t tx_site -r rx_site -H normalized_height_profile.png - - El contorno de curvatura de la Tierra tambin se grafica en este modo. - - La primera Zona de Fresnel, y el 60% de la primera Zona de Fresnel - pueden ser adicionadas al grfico de perfiles de altura con la opcin _-_f, - especificando la frecuencia (MHz) a la cual la Zona de Fresnel ser mod- - elada: - - splat -t tx_site -r rx_site -f 439.250 -H normalized_height_profile.png - - Zonas de despeje de la zona de Fresnel distintas al 60% se pueden - especificar usando la opcin _-_f_z como sigue: - - splat -t tx_site -r rx_site -f 439.250 -fz 75 -H height_profile2.png - - Un grfico que muestre las prdidas de trayectoria ITM se puede dibujar - usando la opcin _-_l: - - splat -t tx_site -r rx_site -l path_loss_profile.png - - Como antes, al adicionar la opcin _-_m_e_t_r_i_c se forza al grfico a usar - unidades de medida mtrica. La opcin _-_g_p_s_a_v instruye a SSPPLLAATT!! para - preservar (en lugar de borrar) los archivos temporales de trabajo ggnnuu-- - pplloott generados durante la ejecucin de SSPPLLAATT!!, permitindole al usuario - editar esos archivos y re-ejecutar ggnnuupplloott si lo desea. - - Al realizar un anlisis punto-a-punto, se genera un reporte SSPPLLAATT!! de - anlisis de trayectoria en la forma de un archivo de texto con una - extensin _._t_x_t. El reporte contiene el azimut y la distancia entre el - transmisor y receptor, lo mismo para cuando se analizan las perdidas - por espacio-libre y trayectoria ITM. El modo de propagacin para la - trayectoria est dado como _L_n_e_a_-_d_e_-_V_i_s_t_a, _H_o_r_i_z_o_n_t_e _S_i_m_p_l_e, _H_o_r_i_z_o_n_t_e - _D_o_b_l_e, _D_i_f_r_a_c_c_i_n _d_o_m_i_n_a_n_t_e, o _T_r_o_p_o_s_c_a_t_t_e_r _d_o_m_i_n_a_n_t_e. Adicionalmente, - si el receptor est localizado en el pico de una obstruccin simple o en - el pico de una segunda obstruccin, SSPPLLAATT!! reportar al _R_X _e_n _e_l _P_i_c_o _d_e_l - _T_e_r_r_e_n_o _a _l_o _L_a_r_g_o _d_e _l_a _T_r_a_y_e_c_t_o_r_i_a cuando opera bajo el modelo de - propagacin ITWOM. - - Tambin se proveen datos de distancia y localizaciones para identificar - las obstrucciones a lo largo de la trayectoria entre el transmisor y el - receptor. Si se especifica la potencia efectiva radiada del transmisor - en el archivo _._l_r_p del transmisor correspondiente, entonces en el - reporte de anlisis de trayectoria tambin se provee la prediccin de - intensidad de seal y voltaje de antena en la localizacin de recepcin. - - Para determinar la relacin seal-a-ruido (SNR) en el sitio remoto donde - el ruido (trmico) aleatorio de Johnson es el el factor limitante pri- - mario en la recepcin: - - _S_N_R=_T-_N_J-_L+_G-_N_F - - donde TT es la potencia ERP del transmisor en dBW en la direccin del - receptor, NNJJ es el ruido de Johnson en dBW (-136 dBW para un canal de - TV de 6 MHz), LL son las prdidas por trayectoria provistas por SSPPLLAATT!! en - dB (como un nmero _p_o_s_i_t_i_v_o), GG es la ganancia de la antena receptora en - dB referenciada a un radiador isotrpico, y NNFF es la figura de ruido en - el receptor en dB. - - TT puede ser computado como sigue: - - _T=_T_I+_G_T - - donde TTII es la cantidad actual de potencia RF entregada a la antena - transmisora en dBW, GGTT es la ganancia de la antena transmisora (refer- - enciada a una isotrpica) en la direccin del receptor (o al horizonte si - el receptor est sobre el horizonte). - - Para calcular cuanta mas seal est disponible sobre el mnimo necesario - para conseguir una relacin seal-a-ruido especfica: - - _S_i_g_n_a_l__M_a_r_g_i_n=_S_N_R-_S - - donde SS es la mnima relacin SNR deseada (15.5 dB para ATSC (8-level - VSB) DTV, 42 dB para televisin analgica NTSC). - - SSPPLLAATT!! puede generar Un mapa topogrfico para visualizar la trayectoria - entre el transmisor y el receptor desde otra perspectiva. Los mapas - topogrficos generados por SSPPLLAATT!! presentan las elevaciones usando - escala de grises logartmica, con las elevaciones ms altas representadas - a travs de capas ms brillantes de gris. El rango dinmico de la imagen - es escalada entre las elevaciones ms altas y ms bajas presentes en el - mapa. La nica excepcin de esto es al nivel del mar, el cual se repre- - senta usando el color azul. - - La salida topogrfica se puede especificar usando la opcin _-_o: - - splat -t tx_site -r rx_site -o topo_map.ppm - - La extensin _._p_p_m del archivo de salida es asumida por SSPPLLAATT!!, y es - opcional. - - En este ejemplo, _t_o_p_o___m_a_p_._p_p_m ilustrar las localizaciones de los sitios - especificados del transmisor y del receptor. Adems, la trayectoria - entre los dos sitios ser dibujada sobre las localizaciones para las - cuales existe una trayectoria sin obstculo hacia el transmisor con una - altura de la antena de recepcin igual a la del sitio del receptor - (especificado en _r_x___s_i_t_e_._q_t_h). - - Puede ser deseable poblar el mapa topogrfico con nombres y localiza- - ciones de ciudades, sitios de torres, o de otras localizaciones impor- - tantes. Para ello se puede pasar a SSPPLLAATT!! un archivo de ciudades - usando la opcin _-_s: - - splat -t tx_site -r rx_site -s cities.dat -o topo_map - - Hasta cinco archivos separados se pueden pasar a la vez a SSPPLLAATT!! luego - de la opcin _-_s. - - Los lmites de estados y ciudades se pueden adicionar al mapa especifi- - cando hasta cinco archivos de lmites cartogrficos de Censo Bureu de los - U.S. usando la opcin _-_b: - - splat -t tx_site -r rx_site -b co34_d00.dat -o topo_map - - En situaciones donde mltiples sitios de transmisores estn en uso, se - puede pasar a SSPPLLAATT!! hasta cuatro localizaciones simultneas para su - anlisis: - - splat -t tx_site1 tx_site2 tx_site3 tx_site4 -r rx_site -p profile.png - - En este ejemplo, SSPPLLAATT!! genera cuatro reportes separados de obstruccin - y de perfiles de terreno. Un mapa topogrfico simple se puede especi- - ficar al usar la opcin _-_o, las trayectorias de lnea de vista entre cada - transmisor y el sitio indicado del receptor se graficar en el mapa, - cada uno con su propio color. La trayectoria entre el primer transmisor - especificado al receptor ser verde, la trayectoria entre el segundo - transmisor y el receptor ser cyan, la trayectoria entre el tercer - transmisor y el receptor ser violeta, y la trayectoria entre el cuarto - transmisor y el receptor ser siena. - - Los mapas topogrficos generados por SPLAT! son imgenes TrueColor PixMap - Portables de 24-bit (PPM) y pueden ser vistos, corregidos, o conver- - tidos a otros formatos grficos usando programas populares de imgenes - tales como xxvv, TThhee GGIIMMPP, IImmaaggeeMMaaggiicckk, and XXPPaaiinntt. El formato PNG es - altamente recomendado para el almacenamiento comprimido sin prdidas de - los archivos topogrficos de salida generados por SPLAT!. La utilidad - de lnea de comandos IImmaaggeeMMaaggiicckk's convierte fcilmente los archivos - grficos SPLAT! PPM al formato PNG: - - convert splat_map.ppm splat_map.png - - Otra utilidad de de lnea de comandos excelente para convertir archivos - PPM a PNG es wpng, y est disponible en: - _h_t_t_p_:_/_/_w_w_w_._l_i_b_p_n_g_._o_r_g_/_p_u_b_/_p_n_g_/_b_o_o_k_/_s_o_u_r_c_e_s_._h_t_m_l. Como recurso adi- - cional, los archivos PPM pueden ser comprimidos usando la utilidad - bzip2, y ser ledos directamente en este formato por TThhee GGIIMMPP. - - La opcin _-_n_g_s asigna a todo el terreno el color blanco, y se puede usar - cuando se quiera generar mapas desprovistos de terreno - - splat -t tx_site -r rx_site -b co34_d00.dat -ngs -o white_map - - El archivo de imagen .ppm resultante puede ser convertido al formato - .png con un fondo transparente usando la utilidad ccoonnvveerrtt de IImmaaggeeMMaagg-- - iicckk's. - - convert -transparent "#FFFFFF" white_map.ppm transparent_map.png - -DDEETTEERRMMIINNAANNDDOO LLAA CCOOBBEERRTTUURRAA RREEGGIIOONNAALL - SSPPLLAATT!! puede analizar un sitio de transmisor repetidora, redes de - sitios, y predecir la cobertura regional para cada sitio especificado. - En este modo SSPPLLAATT!! puede generar un mapa topogrfico presentando la - lnea-de-vista geomtrica del rea de cobertura de los sitios, basados en - la localizacin de cada sitio y la altura de la antena receptora que se - desea comunicar con el sitio en cuestin. SSPPLLAATT!! puede realizar un - anlisis regional usando la opcin _-_c como sigue: - - splat -t tx_site -c 30.0 -s cities.dat -b co34_d00.dat -o tx_coverage - - En este ejemplo, SPLAT! genera un mapa topogrfico llamado _t_x___c_o_v_e_r_- - _a_g_e_._p_p_m que ilustra la prediccin de cobertura regional de lnea-de-vista - del _t_x___s_i_t_e a las estaciones receptoras que tienen una antena de 30 - pies de altura sobre el nivel del terreno (AGL). Si se usa la opcin - _-_m_e_t_r_i_c, el argumento que sigue a la opcin _-_c se interpreta en metros, - en lugar de pies. El contenido de cities.dat se dibuja sobre el mapa, - como tambin los lmites cartogrficos contenidos en el archivo - _c_o_3_4___d_0_0_._d_a_t. - - Cuando se grafica las trayectorias de lnea-de-vista y las reas de - cobertura regional, SSPPLLAATT!! por defecto no considera los efectos de la - flexin atmosfrica. Sin embargo esta caracterstica se puede modificar - usando el multiplicador de radio de la tierra con la opcin (_-_m): - - splat -t wnjt-dt -c 30.0 -m 1.333 -s cities.dat -b counties.dat -o - map.ppm - - Un radio multiplicador de 1.333 instruye a SSPPLLAATT!! a usar el modelo de - "cuatro-tercios" para el anlisis de propagacin de lnea de vista. El - usuario puede seleccionar cualquier multiplicador apropiado del radio - de la tierra. - - Cuando realiza un anlisis regional, SSPPLLAATT!! genera un reporte para cada - estacin analizada. Los reportes de sitio SSPPLLAATT!! contienen detalles de - la localizacin geogrfica del sitio, su altura sobre el nivel del mar, - la altura de la antena sobre el promedio del terreno, y la altura del - promedio del terreno calculada en las direcciones de los azimut de 0, - 45, 90, 135, 180, 225, 270, y 315 grados. - -DDEETTEERRMMIINNAANNDDOO MMLLTTIIPPLLEESS RREEGGIIOONNEESS DDEE CCOOBBEERRTTUURRAA DDEE LLDDVV - SSPPLLAATT!! tambin puede presentar reas de cobertura de lnea-de-vista hasta - para cuatro sitios de transmisores separados sobre un mapa topogrfico - comn. Por ejemplo: - - splat -t site1 site2 site3 site4 -c 10.0 -metric -o network.ppm - - Graficar las coberturas regionales de lnea de vista del site1 site2 - site3 y site4 basado en una antena receptora localizada a 10.0 metros - sobre el nivel del terreno. Entonces se escribe al archivo _n_e_t_w_o_r_k_._p_p_m - el mapa topogrfico. El rea de cobertura de lnea-de-vista del trans- - misor es graficada en los colores indicados (junto con sus valores RGB - correspondientes en decimal): - - site1: Green (0,255,0) - site2: Cyan (0,255,255) - site3: Medium Violet (147,112,219) - site4: Sienna 1 (255,130,71) - site1 + site2: Yellow (255,255,0) - site1 + site3: Pink (255,192,203) - site1 + site4: Green Yellow (173,255,47) - site2 + site3: Orange (255,165,0) - site2 + site4: Dark Sea Green 1 (193,255,193) - site3 + site4: Dark Turquoise (0,206,209) - site1 + site2 + site3: Dark Green (0,100,0) - site1 + site2 + site4: Blanched Almond (255,235,205) - site1 + site3 + site4: Medium Spring Green (0,250,154) - site2 + site3 + site4: Tan (210,180,140) - site1 + site2 + site3 + site4: Gold2 (238,201,0) - - Si se generan archivos _._q_t_h separados, cada uno representando una - localizacin de un sitio comn, pero con diferentes alturas de antena, - SSPPLLAATT!! puede generar un mapa topogrfico sencillo que ilustra la cober- - tura regional desde las estaciones (hasta cuatro) separadas por la - altura en un nica torre. - -AANNLLIISSIISS DDEE PPRRDDIIDDAASS PPOORR TTRRAAYYEECCTTOORRIIAA - Si la opcin _-_c se reemplaza por la opcin _-_L, se puede generar un mapa - de prdidas de trayectorias ITM: - - splat -t wnjt -L 30.0 -s cities.dat -b co34_d00.dat -o path_loss_map - - En este modo, SSPPLLAATT!! genera un mapa multicolor que ilustra los niveles - de seal esperados (prdidas por trayectoria) en las reas alrededor del - transmisor. Una leyenda en la parte inferior del mapa relaciona cada - color con sus respectivas prdidas por trayectoria especficas en deci- - beles. - - La opcin _-_d_b permite un umbral a ser configurado como lmite bajo el - cual los contornos no se graficarn en el mapa. Por ejemplo, si las - prdidas por trayectoria por debajo de -140 dB son irrelevantes para el - estudio que se est realizando, el grfico de prdidas por trayectoria - puede ser limitado a la regin delimitada por el contorno de atenuacin - de 140 dB como sigue: - - splat -t wnjt-dt -L 30.0 -s cities.dat -b co34_d00.dat -db 140 -o - plot.ppm - - El umbral del contorno de prdidas por trayectoria puede ser expresado - como una cantidad positiva o negativa. - - El rango de anlisis de prdidas por trayectoria se puede modificar a una - distancia especificada-por-el-usuario con la opcin _-_R. El argumento - debe ser dado en millas ( kilmetros si se usa la opcin _-_m_e_t_r_i_c). Si se - especifica un rango mayor que el mapa topogrfico generado, SSPPLLAATT!! - realizar los clculos de perdidas de trayectoria ITM entre todas las - cuatro esquinas del rea del mapa de prediccin. - - Los colores usados para ilustrar las regiones de contorno en los mapas - SSPPLLAATT!! de cobertura generados se pueden modificar al crear o modificar - los archivos de definicin de color SSPPLLAATT!!'s. Los archivos de definicin - de color tienen el mismo nombre base que los archivos de los trans- - misores _._q_t_h, pero llevan extensiones _._l_c_f, _._s_c_f, y _._d_c_f. Si en el - directorio de trabajo actual no existen los archivos necesarios, cuando - SSPPLLAATT!! se est ejecutando, se crea en este directorio un archivo que - contiene los parmetros por defecto de definicin de color que luego - puede ser editado manualmente por el usuario. - - Cuando se realiza un anlisis regional ITM y el ERP del transmisor no - se ha especificado es cero, un archivo de definicin de color de prdi- - das por trayectoria _._l_c_f correspondiente al sitio del transmisor (_._q_t_h) - es ledo por SSPPLLAATT!! desde el directorio de trabajo actual. Si el archivo - _._l_c_f correspondiente al sitio del transmisor no se encuentra, entonces - SSPPLLAATT!! generar automticamente un archivo por defecto para edicin manual - del usuario. - - Un archivo de definicin de color de prdidas por trayectoria posee la - siguiente estructura: (_w_n_j_t_-_d_t_._l_c_f): - ; SPLAT! Auto-generated Path-Loss Color Definition ("wnjt-dt.lcf") - File - ; - ; Format for the parameters held in this file is as follows: - ; - ; dB: red, green, blue - ; - ; ...where "dB" is the path loss (in dB) and - ; "red", "green", and "blue" are the corresponding RGB color - ; definitions ranging from 0 to 255 for the region specified. - ; - ; The following parameters may be edited and/or expanded - ; for future runs of SPLAT! A total of 32 contour regions - ; may be defined in this file. - ; - ; - 80: 255, 0, 0 - 90: 255, 128, 0 - 100: 255, 165, 0 - 110: 255, 206, 0 - 120: 255, 255, 0 - 130: 184, 255, 0 - 140: 0, 255, 0 - 150: 0, 208, 0 - 160: 0, 196, 196 - 170: 0, 148, 255 - 180: 80, 80, 255 - 190: 0, 38, 255 - 200: 142, 63, 255 - 210: 196, 54, 255 - 220: 255, 0, 255 - 230: 255, 194, 204 - - Si la prdida por trayectoria es menor que 80 dB, el color Rojo (RGB= - 255, 0, 0) se asigna a la regin. Si la prdida por trayectoria es mayor - o igual a 80 dB, pero menor que 90 dB, entonces el color Naranja Oscuro - (255, 128, 0) se asigna a la regin. El color Naranja (255, 165, 0) se - asigna a regiones que tienen una prdida por trayectoria mayor o igual a - 90 dB, pero menor que 100 dB, y as en adelante. El terreno en escala de - grises se presenta por debajo del contorno de prdidas por trayectoria - de 230 dB. Si se usa la opcin _-_s_c se suavizar las transiciones entre - los niveles de contornos cuantizados. - -AANNLLIISSIISS DDEE IINNTTEENNSSIIDDAADD DDEE CCAAMMPPOO - Si se especifica la potencia efectiva radiada (ERP) del transmisor en - el archivo del transmisor _._l_r_p, o se expresa en la lnea de comandos - usando la opcin _-_e_r_p, en lugar de las prdidas por trayectoria, se - graficarn los contornos de intensidad de campo referenciados a deci- - beles sobre un microvoltio por metro (dBuV/m): - - splat -t wnjt-dt -L 30.0 -erp 46000 -db 30 -o plot.ppm - - La opcin _-_d_b puede ser usada como antes en este modo para limitar la - medicin a la cual el contorno de intensidad de campo se dibujar. - cuando se dibuja el contorno de intensidad de campo, sin embargo, el - argumento dado es interpretado a ser expresado en dBuV/m. - - El archivo SSPPLLAATT!! de definicin de color de intensidad de campo comparte - una estructura muy similar a los archivos _._l_c_f usados para graficar la - prdidas por trayectoria. - - ; SPLAT! Auto-generated Signal Color Definition ("wnjt-dt.scf") File - ; - ; Format for the parameters held in this file is as follows: - ; - ; dBuV/m: red, green, blue - ; - ; ...where "dBuV/m" is the signal strength (in dBuV/m) and - ; "red", "green", and "blue" are the corresponding RGB color - ; definitions ranging from 0 to 255 for the region specified. - ; - ; The following parameters may be edited and/or expanded - ; for future runs of SPLAT! A total of 32 contour regions - ; may be defined in this file. - ; - ; - 128: 255, 0, 0 - 118: 255, 165, 0 - 108: 255, 206, 0 - 98: 255, 255, 0 - 88: 184, 255, 0 - 78: 0, 255, 0 - 68: 0, 208, 0 - 58: 0, 196, 196 - 48: 0, 148, 255 - 38: 80, 80, 255 - 28: 0, 38, 255 - 18: 142, 63, 255 - 8: 140, 0, 128 - - Si la intensidad de seal es mayor o igual a 128 dB sobre 1 microvoltio - por metro (dBuV/m), se presenta el color Rojo (255, 0, 0) para la - regin. Si la intensidad de seal es mayor o igual a 118 dBuV/m, pero - menor que 128 dBuV/m, entonces se presenta el color naranja (255, 165, - 0) y as en adelante. El terreno en escala de grises es presentado para - regiones con intensidad de seal menores que 8 dBuV/m. - - Los contornos de intensidad de seal para algunos servicios de radiodi- - fusin comunes en VHF y UHF en los Estados Unidos son los siguientes: - - - Analog Television Broadcasting - ------------------------------ - Channels 2-6: City Grade: >= 74 dBuV/m - Grade A: >= 68 dBuV/m - Grade B: >= 47 dBuV/m - -------------------------------------------- - Channels 7-13: City Grade: >= 77 dBuV/m - Grade A: >= 71 dBuV/m - Grade B: >= 56 dBuV/m - -------------------------------------------- - Channels 14-69: Indoor Grade: >= 94 dBuV/m - City Grade: >= 80 dBuV/m - Grade A: >= 74 dBuV/m - Grade B: >= 64 dBuV/m - Digital Television Broadcasting - ------------------------------- - Channels 2-6: City Grade: >= 35 dBuV/m - Service Threshold: >= 28 dBuV/m - -------------------------------------------- - Channels 7-13: City Grade: >= 43 dBuV/m - Service Threshold: >= 36 dBuV/m - -------------------------------------------- - Channels 14-69: City Grade: >= 48 dBuV/m - Service Threshold: >= 41 dBuV/m - NOAA Weather Radio (162.400 - 162.550 MHz) - ------------------------------------------ - Reliable: >= 18 dBuV/m - Not reliable: < 18 dBuV/m - Unlikely to receive: < 0 dBuV/m - FM Radio Broadcasting (88.1 - 107.9 MHz) - ---------------------------------------- - Analog Service Contour: 60 dBuV/m - Digital Service Contour: 65 dBuV/m - - -AANNAALLIISSIISS DDEELL NNIIVVEELL DDEE PPOOTTEENNCCIIAA RREECCIIBBIIDDOO - Si en el archivo _._l_r_p se especifica la potencia efectiva radiada (ERP), - o se la expresa con la opcin _-_e_r_p a travs de la lnea de comandos, junto - con la opcin _-_d_b_m, los contornos de nivel de potencia recibida se ref- - erencia a decibeles sobre un milivatio (dBm): - - splat -t wnjt-dt -L 30.0 -erp 46000 -dbm -db -100 -o plot.ppm - - Para limitar la medicin a la cual se grafican los contornos del nivel - de potencia recibida, se puede usar la opcin _-_d_b. Cuando se grafican - contornos de nivel de potencia, el argumento dado es interpretado a ser - expresado en dbm. - - Los archivos SSPPLLAATT!! de definicin de color del nivel de potencia - recibidos comparten una estructura muy similar a la estructura de los - archivos de definicin de color descritos previamente, excepto que los - niveles de potencia en dbm pueden ser positivos o negativos, y estn - limitados a un rango entre +40 dBm y -200 dBm: - - ; SPLAT! Auto-generated DBM Signal Level Color Definition ("wnjt- - dt.dcf") File - ; - ; Format for the parameters held in this file is as follows: - ; - ; dBm: red, green, blue - ; - ; ...where "dBm" is the received signal power level between +40 dBm - ; and -200 dBm, and "red", "green", and "blue" are the corresponding - ; RGB color definitions ranging from 0 to 255 for the region speci- - fied. - ; - ; The following parameters may be edited and/or expanded - ; for future runs of SPLAT! A total of 32 contour regions - ; may be defined in this file. - ; - ; - +0: 255, 0, 0 - -10: 255, 128, 0 - -20: 255, 165, 0 - -30: 255, 206, 0 - -40: 255, 255, 0 - -50: 184, 255, 0 - -60: 0, 255, 0 - -70: 0, 208, 0 - -80: 0, 196, 196 - -90: 0, 148, 255 - -100: 80, 80, 255 - -110: 0, 38, 255 - -120: 142, 63, 255 - -130: 196, 54, 255 - -140: 255, 0, 255 - -150: 255, 194, 204 - -PPAARRMMEETTRROOSS PPAARRAA PPAATTRROONNEESS DDEE RRAADDIIAACCIINN DDEE AANNTTEENNAASS - Los patrones de voltaje de campo normalizado para planos verticales y - horizontales de antenas transmisoras se pueden importar automticamente - dentro de SSPPLLAATT!! cuando se realizan los anlisis de prdidas por trayec- - toria, intensidad de campo, intensidad de campo o nivel de potencia - recibida. - - Los datos de los patrones de antena se leen de un par de archivos que - tienen el mismo nombre base que el transmisor y los archivos LRP, pero - con extensiones _._a_z y _._e_l, para los patrones de azimut y elevacin - respectivamente. Las especificaciones acerca de la rotacin del patrn - (si existe) e inclinacin mecnica y direccin de la inclinacin (si - existe) tambin se definen dentro de los archivos de patrones de - radiacin de las antenas. - - Por ejemplo las primeras pocas lneas de un archivo de patrn de azimut - SSPPLLAATT!! podran aparecer como sigue (_k_v_e_a_._a_z): - - 183.0 - 0 0.8950590 - 1 0.8966406 - 2 0.8981447 - 3 0.8995795 - 4 0.9009535 - 5 0.9022749 - 6 0.9035517 - 7 0.9047923 - 8 0.9060051 - - La primera lnea de el archivo _._a_z especifica la cantidad de rotacin del - patrn de azimut (medido en grados desde el norte verdadero en sentido - horario) a ser aplicado por SSPPLLAATT!! a los datos contenidos en el archivo - _._a_z. Esto es seguido por el correspondiente azimut (0 a 360 grados) y - su asociado patrn de campo normalizado (0.000 a 1.000) separado por un - espacio en blanco. - - La estructura del archivo del patrn de elevacin SSPPLLAATT!! es ligeramente - diferente. La primera lnea del archivo _._e_l especifica la cantidad de - elevacin mecnica aplicada a la antena. Note que una _e_l_e_v_a_c_i_n _h_a_c_i_a - _a_b_a_j_o (bajo el horizonte) es expresada como un _n_g_u_l_o _p_o_s_i_t_i_v_o, mientras - que _h_a_c_i_a _a_r_r_i_b_a (sobre el horizonte) es expresada como un _n_g_u_l_o _n_e_g_a_- - _t_i_v_o. Estos datos son seguidos por la direccin del azimut de la ele- - vacin, separado por un espacio en blanco. - - El remanente del archivo consiste en los valores de los ngulos de ele- - vacin y su correspondiente patrn de radiacin de voltaje normalizado - (0.000 a 1.000) separados por un espacio en blanco. Los ngulos de ele- - vacin deben ser especificados sobre un rango de -10 a +90 grados. Igual - que la notacin en la elevacin mecnica, _n_g_u_l_o_s _d_e _e_l_e_v_a_c_i_n _n_e_g_a_t_i_v_a son - usados para representar elevaciones _s_o_b_r_e _e_l _h_o_r_i_z_o_n_t_e, mientras que - los _n_g_u_l_o_s _p_o_s_i_t_i_v_o_s representan elevaciones _b_a_j_o _e_l _h_o_r_i_z_o_n_t_e. - - Por ejemplo las primeras pocas lneas de un archivo patrn de elevacin - SSPPLLAATT!! podra aparecer como sigue (_k_v_e_a_._e_l): - - 1.1 130.0 - -10.0 0.172 - -9.5 0.109 - -9.0 0.115 - -8.5 0.155 - -8.0 0.157 - -7.5 0.104 - -7.0 0.029 - -6.5 0.109 - -6.0 0.185 - - En este ejemplo, la antena es mecnicamente inclinada hacia abajo 1.1 - grados hacia un azimut de 130 grados. - - Para mejores resultados, la resolucin de los datos de patrones de - radiacin debera ser especificados lo mas cerca posibles a los grados - azimut, y la resolucin de datos del patrn de elevacin deberan ser - especificados lo mas cerca posible a 0.01 grados. Si los datos del - patrn especificado no alcanzan este nivel de resolucin, SSPPLLAATT!! interpo- - lar los valores provistos para determinar los datos en la resolucin - requerida, aunque esto puede resultar en una prdida en exactitud. - -EEXXPPOORRTTAANNDDOO EE IIMMPPOORRTTAANNDDOO DDAATTOOSS DDEE CCOONNTTOORRNNOO RREEGGIIOONNAALL - Realizar un anlisis de cobertura regional basado en un anlisis de - trayectoria ITM puede ser un proceso que consuma mucho tiempo, espe- - cialmente si los anlisis son repetidos varias veces para descubrir - cuales son los efectos que los cambios a los patrones de radiacin de - las antenas hacen a la prediccin del rea de cobertura. - - Este proceso puede ser apresurado al exportar los datos del contorno - producidos por SSPPLLAATT!! a un archivo de salida alfanumrico _(_._a_n_o_). Los - datos contenidos en este archivo se pueden modificar externamente para - incorporar efectos de patrones de antena, y entonces se los puede - importar nuevamente dentro de SSPPLLAATT!! para rpidamente producir un mapa - de contorno revisado. Dependiendo de la forma en la cual SSPPLLAATT!! es lla- - mado, los archivos de salida alfanumrica pueden describir prdidas de - trayectoria regional, intensidad de campo, o niveles de potencia de - seal recibida. - - Por ejemplo un archivo de salida alfanumrico que contenga informacin de - prdidas por trayectoria se puede generar por SSPPLLAATT!! para un sitio de - recepcin a 30 pies sobre el nivel del terreno, con un radio de 50 mil- - las alrededor del sitio de transmisin para prdidas por trayectoria - mximas de 140 dB (asumiendo que en el archivo del transmisor _._l_r_p no se - ha especificado la ERP) usando la siguiente sintaxis: - - splat -t kvea -L 30.0 -R 50.0 -db 140 -ano pathloss.dat - - Si la ERP se especifica en el archivo _._l_r_p o a travs de la opcin _-_e_r_p - de la lnea de comandos, el archivo de salida alfanumrica en su lugar - contendr los valores de prediccin de campo en dBuV/m. Si se usa la - opcin de lnea de comando _-_d_B_m, entonces el archivo de salida alfanum- - rica contendr niveles de potencia de seal recibida en dBm. - - Los archivos de salida alfanumrico SSPPLLAATT!! pueden exceder muchos cientos - de megabytes de tamao. Contienen la informacin referentes a los lmites - de la regin que describen seguido por latitudes (grados norte), longi- - tudes (grados oeste), azimut (referenciados al norte verdadero), eleva- - ciones(a la primera obstruccin), seguidos ya sea por prdidas por - trayectoria(en dB), intensidad de campo recibida (en dBuV/m), o nivel - de potencia de seal recibida (en dBm) ssiinn ccoonnssiiddeerraarr eell ppaattrrnn ddee - rraaddiiaacciinn ddee llaa aanntteennaa. - - Las primeras pocas lneas de un archivo de salida alfanumrica SSPPLLAATT!! - podra tener la siguiente apariencia (_p_a_t_h_l_o_s_s_._d_a_t): - - 119, 117 ; max_west, min_west - 35, 34 ; max_north, min_north - 34.2265424, 118.0631096, 48.199, -32.747, 67.70 - 34.2270358, 118.0624421, 48.199, -19.161, 73.72 - 34.2275292, 118.0617747, 48.199, -13.714, 77.24 - 34.2280226, 118.0611072, 48.199, -10.508, 79.74 - 34.2290094, 118.0597723, 48.199, -11.806, 83.26 * - 34.2295028, 118.0591048, 48.199, -11.806, 135.47 * - 34.2299962, 118.0584373, 48.199, -15.358, 137.06 * - 34.2304896, 118.0577698, 48.199, -15.358, 149.87 * - 34.2314763, 118.0564348, 48.199, -15.358, 154.16 * - 34.2319697, 118.0557673, 48.199, -11.806, 153.42 * - 34.2324631, 118.0550997, 48.199, -11.806, 137.63 * - 34.2329564, 118.0544322, 48.199, -11.806, 139.23 * - 34.2339432, 118.0530971, 48.199, -11.806, 139.75 * - 34.2344365, 118.0524295, 48.199, -11.806, 151.01 * - 34.2349299, 118.0517620, 48.199, -11.806, 147.71 * - 34.2354232, 118.0510944, 48.199, -15.358, 159.49 * - 34.2364099, 118.0497592, 48.199, -15.358, 151.67 * - - En este archivo se pueden poner comentarios precedidos por punto y - coma, el editor de texto vviimm ha probado ser capaz de editar archivos de - este tamao. - - Note que al igual que el caso de los archivos de patrones de antena, - ngulos de elevacin negativos se refieren a inclinaciones hacia arriba - (sobre el horizonte), mientras que ngulos positivos se refieren a - inclinaciones hacia abajo (bajo el horizonte). Esos ngulos se refieren - a la elevacin para la antena receptora en la altura sobre el nivel del - terreno especificada usando la opcin _-_L si la trayectoria entre el - transmisor y el receptor no tiene obstrucciones. Si la trayectoria - entre el transmisor y el receptor est obstruida, se coloca un asterisco - (*) al final de la lnea, y el ngulo de elevacin retornado por SSPPLLAATT!! - se refiere al ngulo de elevacin a la primera obstruccin en lugar de la - localizacin geogrfica especificada en la lnea. Esto se hace con- - siderando que el modelo ITM considera la energa que alcanza un punto - distante sobre una trayectoria obstruida como un derivado de la energa - dispersada de la punta de la primera obstruccin a lo largo de la - trayectoria. Puesto que la energa no puede alcanzar directamente la - localizacin obstruida, el actual ngulo de elevacin a ese punto es - irrelevante. - - Cuando se modifican los archivos SSPPLLAATT!! de prdidas por trayectoria para - reflejar datos de patrones de antena, _s_o_l_o _l_a _l_t_i_m_a _c_o_l_u_m_n_a _n_u_m_r_i_c_a - debera ser enmendada para reflejar la ganancia de antena normalizada en - los ngulos de elevacin y azimut especificados en el archivo. Programas - y scripts capaces de realizar esta operacin quedan como tarea al - usuario. - - Los archivos de salida alfanumricos modificados pueden ser importados - nuevamente a SSPPLLAATT!! para generar mapas de cobertura revisados con- - siderando la ERP y -dBm de la misma manera que cuando el archivo de - salida alfanumrico fue generado originalmente. - - splat -t kvea -ani pathloss.dat -s city.dat -b county.dat -o map.ppm - - Observe que los archivos de salida alfanumricos generados a travs de - ssppllaatt no pueden ser usados con ssppllaatt--hhdd, o vice-versa debido a la - incompatibilidad de resoluciones entre las dos versiones del programa. - Tambin cada uno de los tres formatos de salida de los archivos alfanum- - ricos son incompatibles entre ellos, tal que un archivo que contenga - datos de prdidas por trayectoria, no puede ser importado dentro de - SSPPLLAATT!! para producir contornos de nivel de intensidad de seal o de - niveles de potencia recibida, etc. - -AARRCCHHIIVVOOSS DDEE EENNTTRRAADDAA DDEE TTEERRRREENNOO DDEEFFIINNIIDDOOSS PPOORR EELL UUSSUUAARRIIOO - Un archivo de terreno definido por el usuario es un archivo de texto - generado-por-el-usuario que contiene latitudes, longitudes, y alturas - sobre el nivel de la tierra de caractersticas de terreno especfica que - se cree son de importancia para el anlisis que SSPPLLAATT!! est desarrol- - lando, pero perceptiblemente ausentes de los archivos SDF que estn - siendo usados. Un archivo de terreno definido-por-el-usuario es impor- - tado dentro de un anlisis de SSPPLLAATT!! usando la opcin _-_u_d_t: - - splat -t tx_site -r rx_site -udt udt_file.txt -o map.ppm - - Un archivo de terreno definido-por-el-usuario tiene la siguiente apari- - encia y estructura: - - 40.32180556, 74.1325, 100.0 meters - 40.321805, 74.1315, 300.0 - 40.3218055, 74.1305, 100.0 meters - - La altura del terreno es interpretada en pies sobre el nivel del suelo - a menos que sea seguido por la palabra meters, y es adicionado en la - parte superior de el terreno especificado en los datos SDF para la - localizacin especificada. Debe saber que las caractersticas especifi- - cadas en los archivos de terreno especificados-por-el-usuario sern - interpretados en SSPPLLAATT!!, como 3-arco segundos en latitud y longitud y - como como 1-arco segundos en latitud y longitud en splat-hd. Las carac- - tersticas descritas en el archivo de terreno definido-por-el-usuario - que traslapen las caractersticas previamente definidas en el archivo - son ignoradas por SSPPLLAATT!! para evitar ambigedades. - -CCLLUUTTTTEERR DDEELL TTEERRRREENNOO - **Wikipedia:Ruido provocado por los ecos o reflexiones, en elementos - ajenos al sistema (montaas, superficie del mar, etc.) - - La altura del clutter de la tierra puede ser especificado usando la - opcin _-_g_c: - - splat -t wnjt-dt -r kd2bd -gc 30.0 -H wnjt-dt_path.png - - La opcin _-_g_c tiene el efecto de aumentar el nivel general del terreno - en la cantidad de pies especificada (o metros si se usa la opcin _-_m_e_t_- - _r_i_c), excepto sobre reas al nivel del mar y en las localizaciones de - las antenas transmisora y receptora. - -GGEENNEERRAACCIINN DDEE MMAAPPAASS TTOOPPOOGGRRFFIICCOOSS SSIIMMPPLLEESS - En ciertas ocasiones puede ser deseable generar un mapa topogrfico de - una regin sin graficar reas de cobertura, trayectorias de lnea-de- - vista, o generar reportes de obstrucciones. Existen varias maneras de - hacer esto. Si se desea generar un mapa topogrfico ilustrando la - localizacin de un sitio del transmisor y receptor con un breve reporte - de texto describiendo las localizaciones y distancias entre los sitios, - entonces, entonces se debe invocar la opcin _-_n como sigue: - - splat -t tx_site -r rx_site -n -o topo_map.ppm - - Si no se desea un reporte de texto, entonces debe usar la opcin _-_N: - - splat -t tx_site -r rx_site -N -o topo_map.ppm - - Si se desea un mapa topogrfico centrado cerca de un sitio para un radio - mnimo especificado, se puede utilizar un comando similar al siguiente: - - splat -t tx_site -R 50.0 -s NJ_Cities -b NJ_Counties -o topo_map.ppm - - donde -R especifica el mnimo radio de el mapa en millas ( kilmetros si - se usa la opcin _-_m_e_t_r_i_c). Note que el nombre del sitio_tx y la local- - izacin no son presentadas en este ejemplo. Si se desea presentar esta - informacin, simplemente cree un archivo de ciudades SSPPLLAATT!! con la - opcin (_-_s) y adicinele a las opciones de la lnea-de-comandos ilustradas - arriba. - - Si la opcin _-_o y el archivo de salida son omitidos en esa operacin, la - salida topogrfica es escrita a un archivo por defecto llamado - _t_x___s_i_t_e_._p_p_m en el directorio de trabajo actual. - -GGEENNEERRAACCIINN DDEE AARRCCHHIIVVOOSS DDEE GGEEOORREEFFEERREENNCCIIAA - Los mapas topogrficos, de cobertura (_-_c), y contornos de prdidas por - trayectoria (_-_L) generados por SSPPLLAATT!! se pueden importar dentro del - programa XXaassttiirr (X Amateur Station Tracking and Information Report- - ing), al generar un archivo de georeferencia usando la opcin SSPPLLAATT!! - _-_g_e_o: - - splat -t kd2bd -R 50.0 -s NJ_Cities -b NJ_Counties -geo -o map.ppm - - El archivo de georeferencia creado tendr el mismo nombre base que el - archivo _-_o especificado, pero con extensin _._g_e_o, y permite la apropi- - ada interpretacin y presentacin de los grficos .ppm SSPPLLAATT!! en el pro- - grama XXaassttiirr. - -GGEENNEERRAACCIIOONN DDEE AARRCCHHIIVVOOSS KKMMLL GGOOOOGGLLEE MMAAPP - Cuando se realizan anlisis punto-a-punto, al invocar la opcin _-_k_m_l - SSPPLLAATT!! puede generar archivos Keyhole Markup Language compatibles con - GGooooggllee EEaarrtthh: - - splat -t wnjt-dt -r kd2bd -kml - - El archivo KML generado tendr la misma estructura que el nombre del - Reporte de Obstrucciones para los sitios del transmisor y receptor - dados, excepto que tendr una extensin _._k_m_l. - - Una vez cargado dentro del GGooooggllee EEaarrtthh (Archivo --> Abrir), el archivo - KLM exhibir las localizaciones de los sitios de transmisin y recepcin - en el mapa. Los puntos de vista de la imagen sern desde la posicin del - sitio de transmisin mirando hacia la localizacin del receptor. La - trayectoria punto-a-punto entre los sitios ser presentada como una lnea - blanca, mientras que la trayectoria de lnea-de-vista RF ser presentada - en verde. Las herramientas de navegacin de GGooooggllee EEaarrtthh le permiten al - usuario "volar" alrededor de la trayectoria, identificando seales, - caminos, y otras caractersticas contenidas. - - Cuando se realiza el anlisis de cobertura regional, el archivo intensi- - dad de seal o de prdidas por trayectoria sobre mapas GGooooggllee EEaarrtthh como - capas con su color correspondiente relacionado en la esquina superior - izquierda. - - El archivo _._k_m_l generado tendr el mismo nombre base como el del archivo - _._p_p_m normalmente generado. - -DDEETTEERRMMIINNAACCIINN DDEE LLAA AALLTTUURRAA DDEE LLAA AANNTTEENNAA SSOOBBRREE EELL PPRROOMMEEDDIIOO DDEELL TTEERRRREENNOO - SSPPLLAATT!! determina la altura de la antena sobre el promedio del terreno - (HAAT) de acuerdo al procedimiento definido por la Comisin Federal de - Comunicaciones. Parte 73.313(d). De acuerdo a esta definicin, la ele- - vacin del terreno a lo largo de ocho radiales entre 2 y 16 millas (3 y - 16 Kilmetros) desde el sitio que est siendo analizado es muestreado y - promediado para los azimut cada 45 grados comenzando con el norte ver- - dadero. Si uno o mas radiales caen enteramente sobre el mar o sobre el - continente fuera de los Estados Unidos (reas para las cuales no existen - disponibles datos topogrficos USGS), entonces esos radiales son omiti- - dos de los clculos del promedio del terreno. Si parte de los radiales - se extienden sobre el mar o fuera de los Estados Unidos, entonces solo - la parte de esos radiales que caen sobre la tierra de los Estados - Unidos son usados en la determinacin del promedio del terreno. - - Note que los datos de elevaciones SRTM-3, a diferencia de los antiguos - datos USGS, se extienden ms all de las fronteras de los Estados Unidos. - Por esta razn, los resultados HAAT, no estarn en fiel cumplimiento con - la FCC parte 73.313(d) en reas a lo largo de la frontera de los Estados - Unidos si los archivos SDF usados por SSPPLLAATT!! son derivados-SRTM. - - Cuando se realiza anlisis punto-a-punto del terreno, SSPPLLAATT!! determina - la altura de la antena sobre el promedio del terreno solo si han sido - cargados por el programa suficientes datos topogrficos para realizar el - anlisis punto-a-punto. En la mayora de los casos, esto ser verdadero, a - menos que el sitio en cuestin no est dentro de 10 millas de la frontera - de los datos topogrficos cargados en memoria. - - Cuando se realiza el anlisis de prediccin de rea, normalmente son car- - gados por SSPPLLAATT!! suficientes datos topogrficos para realizar los clcu- - los del promedio del terreno. Bajo esas condiciones, SSPPLLAATT!! proveer la - altura de la antena sobre el promedio del terreno, como tambin el - promedio del terreno sobre el nivel del mar para los azimut de 0, 45, - 90, 135, 180, 225, 270, y 315 grados, e incluir dicha informacin en el - reporte de sitio generado. Si uno o ms de los ocho radiales caen sobre - el mar o sobre regiones para las cuales no existen datos SDF - disponibles, SSPPLLAATT!! reportar sin terreno la trayectoria de los radiales - afectados. - -IINNFFOORRMMAACCIINN AADDIICCIIOONNAALL - Las ltimas noticias e informacin respecto al programa SSPPLLAATT!! est - disponible a travs de la pgina web oficial localizada en: - _h_t_t_p_:_/_/_w_w_w_._q_s_l_._n_e_t_/_k_d_2_b_d_/_s_p_l_a_t_._h_t_m_l. - -AAUUTTOORREESS - John A. Magliacane, KD2BD <_k_d_2_b_d_@_a_m_s_a_t_._o_r_g> - Creator, Lead Developer - - Doug McDonald <_m_c_d_o_n_a_l_d_@_s_c_s_._u_i_u_c_._e_d_u> - Original Longley-Rice ITM Model integration - - Ron Bentley <_r_o_n_b_e_n_t_l_e_y_@_e_a_r_t_h_l_i_n_k_._n_e_t> - Fresnel Zone plotting and clearance determination - - - - -KD2BD Software 25 de julio de 2014 SPLAT!(1) diff --git a/docs/spanish/pdf/splat.pdf b/docs/spanish/pdf/splat.pdf deleted file mode 100644 index 4677093..0000000 Binary files a/docs/spanish/pdf/splat.pdf and /dev/null differ diff --git a/docs/spanish/postscript/splat.ps b/docs/spanish/postscript/splat.ps deleted file mode 100644 index 2fa7d63..0000000 Binary files a/docs/spanish/postscript/splat.ps and /dev/null differ diff --git a/docs/spanish/text/splat.txt b/docs/spanish/text/splat.txt deleted file mode 100644 index c566959..0000000 --- a/docs/spanish/text/splat.txt +++ /dev/null @@ -1,1360 +0,0 @@ -SPLAT!(1) KD2BD Software SPLAT!(1) - - - -NAME - splat es una herramienta para el anlisis de Propagacin de Seales RF, - Prdidas , y Caractersticas del Terreno (Signal Propagation, Loss, And - Terrain analysis tool SPLAT!) - -SINOPSIS - splat - [-t sitio_transmisor.qth] - [-r sitio_receptor.qth] - [-c rx altura de la antena para el anlisis de cobertura LOS (pies/met- - ros) (flotante)] - [-L rx altura de la antena para el anlisis de cobertura ITM (pies/met- - ros) (flotante)] - [-p perfil_terreno.ext] - [-e perfil_elevacion.ext] - [-h perfil_altura.ext] - [-H perfil_altura_normalizada.ext] - [-l perfil_ITM.ext] - [-o nombre_archivo_mapa_topogrfico.ppm] - [-b archivo_lmites_cartogrficos.dat] - [-s base_datos_sitios/ciudades.dat] - [-d ruta_directorio_sdf] - [-m radio multiplicador tierra (flotante)] - [-f frequencia (MHz) para clculos de la zona de Fresnel (flotante)] - [-R mximo radio de cobertura (millas/kilmetros) (flotante)] - [-dB Umbral bajo el cual no se presentarn los contornos] - [-gc Altura del clutter del terreno (pies/metros) (flotante)] - [-fz porcentaje despejado de la zona de Fresnel (default = 60%)] - [-ano nombre archivo salida alfanumrica] - [-ani nombre archivo entrada alfanumrica] - [-udt archivo_terreno_definido_por_el_usuario.dat] - [-log logfile.ext] - [-n] - [-N] - [-nf] - [-sc] - [-dbm] - [-ngs] - [-geo] - [-kml] - [-gpsav] - [-metric] - [-olditm] - -DESCRIPCIN - SPLAT! es una poderosa herramienta para el anlisis de terreno y - propagacin RF que cubre el espectro entre 20 Megahertz y 20 Gigahertz. - SPLAT! es Software Libre y est diseado para operar en escritorios Unix - y basados en Linux. La redistribucin y/o modificacin est permitida bajo - los trminos de la licencia pblica general GNU segn lo publicado por la - Fundacin de Software Libre, versin 2. La adopcin del cdigo fuente de - SPLAT! en aplicaciones propietarias o de fuente-cerrada es una violacin - de esta licencia, y est estrictamente prohibida. - - SPLAT! es distribuido con la esperanza de que sea til, pero SIN NINGUNA - GARANTA, an la garanta implcita de COMERCIALIZACIN o de la APLICACIN - PARA UN PROPSITO PARTICULAR. Vea la licencia GNU para ms detalles. - -INTRODUCCIN - Las aplicaciones de SPLAT! incluyen la visualizacin, diseo, y anlisis - de enlaces de redes inalmbricas WAN, sistemas de radio comunicaciones - comerciales y aficionados sobre los 20 megahertz, enlaces microonda, - estudios de interferencia y coordinacin de frecuencias, y determinacin - del contorno de cobertura de las regiones de radio y televisin ter- - restres anlogas y digitales. - - SPLAT! provee datos RF de ingeniera del sitio, tales como distancia del - arco terrestre y azimut entre sitios, ngulos de elevacin (uptilt) y - depresin (downtilt) de la antena, altura de la antena sobre nivel del - mar, altura de la antena sobre el promedio del terreno, azimut, distan- - cias y elevaciones para determinar obstrucciones, atenuaciones de - trayectoria del Modelo Terreno Irregular, e intensidad de la seal - recibida. Adicionalmente, la altura mnima de las antenas requerida para - superar las obstrucciones del terreno, la primera zona de Fresnel, y - cualquier porcentaje definido por el usuario para la primera zona de - Fresnel. - - SPLAT! produce reportes, grficos, y mapas topogrficos de alta resolu- - cin que presentan trayectorias de lnea-de-vista, prdidas por trayecto- - ria regionales y contornos de intensidad de seal a travs de los cuales - se puede determinar el rea de cobertura esperada de sistemas trans- - misores o repetidoras. Cuando se emplean mltiples sitios de trans- - misores o repetidores, al realizar anlisis de lnea de vista y anlisis - del Modelo de Terreno Irregular, SPLAT! puede determinar las reas de - cobertura individuales y mutuas dentro de la red especificada. - - -FICHEROS DE ENTRADA - SPLAT! es una aplicacin manejada por lnea de comandos o terminal de - textos (shell), y lee los datos de entrada a travs de un nmero de - ficheros de datos. Algunos archivos son obligatorios para la ejecucin - apropiada del programa, mientras que otros son opcionales. Los archivos - obligatorios incluyen los modelos topogrficos de elevacin digital en la - forma de archivos de datos de SPLAT (archivos SDF), archivos de local- - izacin del sitio (archivos QTH), y archivos de parmetros para el Modelo - de Terreno Irregular (archivos LRP). Los archivos opcionales incluyen - archivos de localizacin de ciudades/sitios, archivos de lmites cartogr- - ficos, archivos de terreno definidos por el usuario, archivos de - entrada de prdidas por trayectoria, archivos de patrones de radiacin de - antenas, y archivos de definicin de color. - -FICHEROS DE DATOS SPLAT - SPLAT! importa los datos topogrficos desde los ficheros de datos SPLAT - (SDFs). Estos archivos se pueden generar desde varias fuentes de infor- - macin. En los Estados Unidos, los ficheros de datos SPLAT se pueden - generar a travs de la U.S. Geological Survey Digital Elevation Models - (DEMs) usando la herramienta postdownload y usgs2sdf incluidas con - SPLAT!. Los modelos de elevacin digital USGS compatibles con esta util- - idad pueden ser descargados de: - - http://edcftp.cr.usgs.gov/pub/data/DEM/250/. - - Una resolucin significativamente mejor se puede obtener con el uso de - los modelos digitales de elevacin SRTM versin 2, especialmente cuando - son complementados por datos USGS-derivados de SDF. Estos modelos de - un-grado por un-grado son el resultado de la misin topogrfica del radar - espacial Shuttle STS-99, y estn disponibles para la mayora de las - regiones pobladas de la tierra. Los ficheros de datos SPLAT pueden ser - generados desde los archivos de datos SRTM-3 3 arco-segundo usando la - utilidad incluida srtm2sdf. Los archivo SRTM-3 versin 2.1 se pueden - obtener a travs de FTP annimo desde: - - http://dds.cr.usgs.gov/srtm/version2_1/SRTM3/ - - Observe que el nombre de los archivos SRTM se refieren a la latitud y - longitud de la esquina suroeste del conjunto de datos topogrficos con- - tenidos dentro del archivo. Por lo tanto, la regin de inters debe estar - al norte y al este de la latitud y longitud proporcionada por el nombre - del archivo SRTM. - - Incluso se puede obtener una mayor resolucin y exactitud usando los - datos topogrficos SRTM-1 Versin 2.1. Estos datos estn disponibles para - los Estados Unidos y sus territorios y posesiones, y pueden ser descar- - gados desde: - - http://dds.cr.usgs.gov/srtm/version2_1/SRTM1/ - - Los archivos SDF de alta resolucin para ser usados con SPLAT! HD pueden - ser generados desde los datos en este formato usando la herramienta - srtm2sdf-hd. - - A pesar de la exactitud ms alta que los datos SRTM ofrecen, existen - algunos vacos en los conjuntos de datos. Cuando se detectan estos - vacos, las herramientas srtm2sdf y srtm2sdf-hd los substituyen por los - datos encontrados en los archivos SDF existentes generados con la - utilidad usgs2sdf). Si los datos SDF, USGS-derivados no estn - disponibles, los vacos se reemplazan con el promedio de los pxeles ady- - acentes, o reemplazo directo. - - Los ficheros de datos de SPLAT contienen valores enteros de las eleva- - ciones topogrficas en metros referenciados al nivel del mar para - regiones de la tierra de 1-grado por 1-grado con una resolucin de - 3-arco segundos. Los archivos SDF pueden ser ledos por SPLAT! ya sea en - el formato estndar (.sdf) as como en los generados directamente por las - herramientas usgs2sdf, srtm2sdf, y srtm2sdf-hd, o en el formato com- - primido bzip2 (.sdf.bz2). Puesto que los archivos sin comprimir se - pueden procesar ligeramente ms rpido que los archivos comprimidos, - SPLAT! busca los datos SDF necesarios en formato sin comprimir primero. - Si los datos sin comprimir no pueden ser localizados, SPLAT! entonces - busca los datos en formato comprimido bzip2. Si tampoco se pueden - encontrar los archivos SDF comprimidos para la regin solicitada, SPLAT! - asume que la regin es el ocano, y asignar una elevacin del nivel del - mar a estas reas. - - Esta caracterstica de SPLAT! permite realizar el anlisis de trayecto- - rias no solamente sobre la tierra, sino tambin entre las reas costeras - no representadas por los datos del Modelo de Elevacin Digital. Sin - embargo, este comportamiento de SPLAT! resalta la importancia de tener - todos los archivos SDF requeridos para la regin a ser analizada, para - as obtener resultados significativos. - -ARCHIVOS DE LOCALIZACIN DEL SITIO (QTH) - SPLAT! SPLAT! importa la informacin de la localizacin de los sitios - del transmisor y del receptor analizados por el programa de los - archivos ASCII que tienen una extensin .qth. Los archivos QTH contienen - el nombre del sitio, la latitud del sitio (positiva al norte del - ecuador, negativa al sur), la longitud del sitio (en grados oeste W de - 0 a 360 grados), y; La altura de la antena del sitio sobre el nivel del - suelo (AGL), cada uno separado por un caracter de salto-de-lnea. La - altura de la antena se asume a ser especificada en pies a menos que sea - seguida por la letra m o de la palabra meters en maysculas o minscu- - las. La informacin de la latitud y de la longitud se puede expresar en - formato decimal (74.6889) o en formato grados, minutos, segundos (DMS) - (74 41 20.0). - - Por ejemplo, un archivo de localizacin de sitio que describe la estacin - de televisin WNJT-DT, Trenton, NJ (wnjt-dt.qth) se puede leer como - sigue: - - - WNJT-DT - 40.2828 - 74.6864 - 990.00 - - - Cada sitio de transmisor y receptor analizado por SPLAT! debe ser rep- - resentado por su propio archivo de la localizacin de sitio (QTH). - -ARCHIVOS DE PARMETROS MODELO TERRENO IRREGULAR (LRP) - Los archivos de datos de parmetros Modelo Terreno Irregular son - requeridos por SPLAT! para determinar las prdidas por trayectoria RF, - intensidad de campo, o nivel de la potencia de la seal recibida ya sea - en el modo punto-a-punto o prediccin de rea. Los datos de parmetros - para el Modelo Terreno Irregular se leen desde el archivo que tiene el - mismo nombre base del archivo QTH del sitio del transmisor, pero con - extensin .lrp. Los Archivos SPLAT! LRP comparten el siguiente formato - (wnjt-dt.lrp): - - - 15.000 ; Earth Dielectric Constant (Relative permittivity) - 0.005 ; Earth Conductivity (Siemens per meter) - 301.000 ; Atmospheric Bending Constant (N-units) - 647.000 ; Frequency in MHz (20 MHz to 20 GHz) - 5 ; Radio Climate (5 = Continental Temperate) - 0 ; Polarization (0 = Horizontal, 1 = Vertical) - 0.50 ; Fraction of situations (50% of locations) - 0.90 ; Fraction of time (90% of the time) - 46000.0 ; Potencia Efectiva Radiada (ERP) in Watts (optional) - - Si un archivo LRP correspondiente al archivo QTH del sitio de trans- - misin no puede ser encontrado, SPLAT! explorar el directorio de trabajo - actual buscando el archivo "splat.lrp". Si este archivo tampoco puede - ser encontrado, entonces los parmetros por defecto enumerados arriba - sern asignados por SPLAT! y se generar el archivo correspondiente - "splat.lrp" que contendr estos parmetros y por defecto ser escrito en - el directorio actual de trabajo. El archivo "splat.lrp" generado puede - ser editado de acuerdo a las necesidades del usuario. - - Las constantes dielctricas tpicas de la tierra y sus valores de conduc- - tividad son los siguientes: - Dielectric Constant Conductivity - Salt water : 80 5.000 - Good ground : 25 0.020 - Fresh water : 80 0.010 - Marshy land : 12 0.007 - Farmland, forest : 15 0.005 - Average ground : 15 0.005 - Mountain, sand : 13 0.002 - City : 5 0.001 - Poor ground : 4 0.001 - - Los cdigos de Clima de Radio usados por SPLAT! son los siguientes: - - 1: Equatorial (Congo) - 2: Continental Subtropical (Sudan) - 3: Maritime Subtropical (West coast of Africa) - 4: Desert (Sahara) - 5: Continental Temperate - 6: Maritime Temperate, over land (UK and west coasts of US & - EU) - 7: Maritime Temperate, over sea - - - El clima templado continental es comn a las grandes masas de la tierra - en la zona templada, tal como los Estados Unidos. Para trayectorias - inferiores a 100 kilmetros, es poca la diferencia entre los climas tem- - plados continentales y martimos. - - Los parmetros sptimo y octavo en el archivo .lrp corresponden al anli- - sis estadstico proporcionado por el modelo ITM. En este ejemplo, SPLAT! - devolver la mxima prdida de trayectoria que ocurre el 50% de las situa- - ciones (fraccin de situaciones, o Variabilidad de Locaciones) el 90% - del tiempo (fraccin de tiempo, o Variabilidad Tiempo). Esto es a menudo - denotado como F(50,90) en los estudios Longley_Rice. En los Estados - Unidos un criterio F(50,90) es tpicamente usado para televisin digital - (8-level VSB modulation), mientras que F(50,50) es usado para radiodi- - fusin analgica (VSB-AM+NTSC). - - Para mayor informacin sobre los parmetros del modelo de propagacin ITM, - puede referirse a: http://www.its.bldrdoc.gov/resources/radio-propaga- - tion-software/itm/itm.aspx y http://www.softwright.com/faq/engineer- - ing/prop_longley_rice.html - - El parmetro final en el archivo .lrp corresponde a la potencia efectiva - radiada (ERP), y es opcional. Si esta es incluida en el archivo .lrp, - entonces SPLAT! computar los niveles de intensidad de seal recibida y - los contornos de niveles de intensidad de campo cuando se realicen los - estudios ITM. Si el parmetro es omitido, se computan en su lugar las - prdidas por trayectoria. El ERP provisto en el archivo .lrp puede ser - invalidado usando la opcin SPLAT! de lnea-de-comando -erp. Si el - archivo .lrp contiene un parmetro ERP y en lugar de generar los con- - tornos de intensidad de campo se desea generar los contornos de prdida - por trayectoria, el valor ERP puede ser asignado a cero usando la opcin - -erp sin tener que editar el archivo .lrp para obtener el mismo resul- - tado. - -ARCHIVOS DE LOCALIZACIN DE CIUDADES - Los nombres y las localizaciones de ciudades, sitios de la torre, u - otros puntos de inters se pueden importar y trazar en los mapas topogr- - ficos generados por SPLAT!. SPLAT! importa los nombres de ciudades y - localizaciones de los archivos ASCII que contienen el nombre, latitud y - longitud de la localizacin de inters. Cada campo es separado por una - coma. Cada expediente es separado por un caracter de salto-de-lnea. Al - igual que con los archivos .qth, la informacin de la latitud y la lon- - gitud se puede ingresar en formato decimal o en formato de grados, - minutos, segundos (DMS). - - Por ejemplo (cities.dat): - - Teaneck, 40.891973, 74.014506 - Tenafly, 40.919212, 73.955892 - Teterboro, 40.859511, 74.058908 - Tinton Falls, 40.279966, 74.093924 - Toms River, 39.977777, 74.183580 - Totowa, 40.906160, 74.223310 - Trenton, 40.219922, 74.754665 - - Un total de cinco ficheros de datos separados de ciudades se pueden - importar a la vez, y no hay lmite al tamao de estos archivos. SPLAT! - lee datos de las ciudades en base a "primero ingresada primero - servida", y traza solamente las localizaciones cuyas anotaciones no - estn en conflicto con anotaciones de las localizaciones ledas anterior- - mente en el archivo actual de datos de ciudades, o en archivo previos. - Este comportamiento en SPLAT! reduce al mnimo el desorden al generar - los mapas topogrficos, pero tambin determina que por mandato las local- - izaciones importantes estn puestas al principio del primer fichero de - datos de ciudades, y las localizaciones de menor importancia sean colo- - cadas a continuacin en la lista o en los ficheros de datos subse- - cuentes. - - Los ficheros de datos de las ciudades se pueden generar manualmente - usando cualquier editor de textos, importar de otras fuentes, o derivar - de los datos disponibles de la oficina de censo de los Estados Unidos, - usando la herramienta citydecoder incluida con SPLAT!. Estos datos - estn disponibles gratuitamente va Internet en: http://web.ar- - chive.org/web/20130331172800/http://www.cen- - sus.gov/geo/www/cob/bdy_files.html, y deben estar en formato ASCII. - -ARCHIVOS DE DATOS DE LIMITES CARTOGRFICOS - Los datos cartogrficos de lmites se pueden tambin importar para trazar - los lmites de las ciudades, condados, o estados en los mapas topogrfi- - cos generados por SPLAT!. Estos datos deben estar en el formato de - metadatos de archivos cartogrficos de lmites ARC/INFO Ungenerate (for- - mato ASCII), y estn disponibles para los E.E.U.U..en la Oficina de Cen- - sos va Internet en: http://web.ar- - chive.org/web/20130331144934/http://www.cen- - sus.gov/geo/www/cob/co2000.html#ascii y http://web.ar- - chive.org/web/20130507075658/http://www.cen- - sus.gov/geo/www/cob/pl2000.html#ascii. Un total de cinco archivos car- - togrficos separados de lmites se puede importar a la vez. No es nece- - sario importar lmites de estado si ya se han importado los lmites del - condado. - -OPERACIN DEL PROGRAMA - SPLAT! Debido a que SPLAT! hace un uso intensivo del CPU y la memoria, - se invoca va lnea de comandos usando una serie de opciones y argumen- - tos, este tipo de interfaz reduce al mnimo gastos indirectos y se - presta a operaciones escriptadas (batch). El uso de CPU y prioridad de - memoria por SPLAT! se pueden modificar con el uso del comando nice de - Unix. - - El nmero y el tipo de opciones pasados a SPLAT! determinan su modo de - operacin y el mtodo de generacin de los datos de salida. Casi todas - las opciones de SPLAT! se pueden llamar en cascada en cualquier orden - al invocar el programa desde la lnea de comandos. Simplemente tipee - splat en la consola de comandos, esto retornar un resumen de las - opciones de lnea de comando de SPLAT!: - - --==[ SPLAT! v1.4.2 Available Options... ]==-- - -t txsite(s).qth (sitio de transmisin, max 4 con -c, max 30 con - -L) - -r rxsite.qth (sitio de recepcin) - -c grafica rea(s) de cobertura de Tx(s) con antena Rx a X - pies/mts SNT - -L grafica mapa de prdida por trayectoria del TX y antena RX a X - pies/mts SNT - -s nombres de archivos(s) de ciudades/sitios para importar - (mximo 5) - -b nombres de archivos(s) de lmites cartogrficos para importar - (mximo 5) - -p nombre de archivo para graficar el perfil del terreno - -e nombre de archivo para graficar la elevacin del terreno - -h nombre de archivo para graficar la altura del terreno - -H nombre de archivo para graficar la altura normalizada del - terreno - -l nombre de archivo para graficar prdidas por trayectoria - -o nombre de archivo para generar el mapa topogrfico (.ppm) - -u nombre del archivo del terreno definido-por-el-usuario a - importar - -d ruta al directorio que contiene los archivos sdf (en lugar de - ~/.splat_path) - -m multiplicador del radio de la tierra - -n no grafica las rutas de LDV in mapas .ppm - -N no produce reportes innecesarios del sitio o reportes de - obstruccin - -f frecuencia para el clculo de la zona de Fresnel (MHz) - -R modifica el rango por defecto para -c o -L (millas/kilmetros) - -sc presenta niveles de contornos suavizados en lugar de cuanti- - zados - -db Umbral bajo el cual los contornos no sern presentados - -nf no grafica la zona de Fresnel en los grficos de altura - -fz porcentaje de despeje de la zona de Fresnel (default = 60) - -gc Altura del clutter del terreno (pies/metros) - -ngs presenta la topografa de escala de grises como blanco en - archivos .ppm - -erp valor ERP en lugar del declarado en el archivo .lrp (Watts) - -ano nombre archivo salida alfanumrica - -ani nombre archivo entrada alfanumrica - -udt nombre del archivo de entrada de terreno definido-por-el- - usuario - -kml genera un archivo compatible Google Earth .kml (para - enlaces punto-punto) - -geo genera un archivo Xastir de georeferencia .geo (con salida - .ppm) - -dbm dibuja contornos de nivel de potencia de seal en lugar de - intensidad de campo - -log copia las cadenas de salida de la lnea de comandos a este - archivo de salida - -gpsav preserva los archivos temporales gnuplot despus de ejecu- - tar SPLAT! - -metric emplea unidades mtricas para todas las I/O del usuario - -olditm invoca el viejo modelo de propagacin ITM en lugar del nuevo - ITWOM - Las opciones de lnea-de-comando para splat y splat-hd son idnticas. - - La opcin de lnea de comandos -log causa que todas las opciones de las - lneas de comando llamadas sean direccionadas a un archivo de su eleccin - (logfile.txt): - - splat -t tx_site -r rx_site -s nj_cities -o topo_map -log logfile.txt - - SPLAT! opera en dos modos distintos: modo punto-a-punto, y modo de - prediccin del rea de cobertura, y puede ser invocado por el usuario - usando el modo de lnea de vista (LOS) o el modelo de propagacin Ter- - reno Irregular (ITM). El radio de tierra verdadera, cuatro-tercios, o - cualquier otro definido-por-el-usuario pueden ser especificados al - realizar los anlisis de lnea-de-vista. - -ANLISIS PUNTO-A-PUNTO - SPLAT! puede ser utilizado para determinar si existe lnea de vista - entre dos localizaciones especificadas realizando para ello el anlisis - del perfil del terreno. Por ejemplo: - - splat -t tx_site.qth -r rx_site.qth - - invoca un anlisis del perfil del terreno entre el transmisor especifi- - cado en tx_site.qth y el receptor especificado en rx_site.qth, y - escribe un Reporte de Obstrucciones SPLAT! al directorio de trabajo - actual. El reporte contiene los detalles de los sitios del transmisor y - del receptor, e identifica la localizacin de cualquier obstruccin - detectada a lo largo de la trayectoria de lnea-de-vista. Si una - obstruccin puede ser despejada levantando la antena de recepcin a una - mayor altura, SPLAT! indicar la altura mnima de la antena requerida - para que exista lnea-de-vista entre las localizaciones del transmisor y - el receptor especificadas. Observe que las unidades imperiales (millas, - pies) se usan por defecto, a menos que se use la opcin -metric en la - orden SPLAT! de lnea de comandos. - - splat -t tx_site.qth -r rx_site.qth -metric - - Si la antena se debe levantar una cantidad significativa, esta determi- - nacin puede tomar una cierta cantidad de tiempo. Observe que los resul- - tados proporcionados son el mnimo necesario para que exista una trayec- - toria de la lnea-de-vista, y en el caso de este simple ejemplo, no con- - sidera los requisitos de la zona de Fresnel. - - Las extensiones qth son asumidas por SPLAT! para los archivos QTH, y - son opcionales cuando se especifican los argumentos -t y -r en la lnea - de comandos. SPLAT! lee automticamente todos los ficheros de datos de - SPLAT necesarios para el anlisis del terreno entre los sitios especifi- - cados. SPLAT! busca primero los archivos SDF necesarios en el direc- - torio de trabajo actual. Si estos archivos no se encuentran, SPLAT! - entonces busca en la ruta especificada por la opcin -d: - - splat -t tx_site -r rx_site -d /cdrom/sdf/ - - Una ruta a un directorio externo se puede especificar creando el - archivo ".splat_path" en el directorio de trabajo del usuario. Este - archivo $HOME/.splat_path debe contener una sola lnea de texto ASCII en - la que indique la ruta completa del directorio que contiene todos los - archivos SDF. - - /opt/splat/sdf/ - - Y puede ser generado usando cualquier editor de texto. - - Adicionando la opcin -p se puede generar un grfico que muestre el per- - fil del terreno en funcin de la distancia, partiendo desde el receptor, - entre las localizaciones del transmisor y receptor: - - splat -t tx_site -r rx_site -p terrain_profile.png - - Cuando genera los grficos SPLAT! invoca al programa gnuplot. La - extensin del nombre del archivo especificado a SPLAT! determina el for- - mato del grfico a ser producido .png generar un archivo de grfico PNG a - color con una resolucin de 640x480, mientras que .ps o .postscript - generarn archivos de salida postscritp. La salida en formatos como GIF, - Adobe Illustrator, AutoCAD dxf, LaTex, y muchos otros estn disponibles. - Por favor consulte gnuplot, y la documentacin de gnuplot para detalles - de todos los formatos de salida soportados. - - En el lado del receptor usando la opcin -e se puede generar un grfico - de elevaciones en funcin de la distancia determinado por el ngulo de - inclinacin debido al terreno entre el receptor y el transmisor: - - splat -t tx_site -r rx_site -e elevation_profile.png - - El grfico producido usando esta opcin ilustra los ngulos de elevacin y - depresin resultado del terreno entre la localizacin del receptor y el - sitio del transmisor desde la perspectiva del receptor. Un segundo - trazo es dibujado entre el lado izquierdo del grfico (localizacin del - receptor) y la localizacin de la antena que transmite a la derecha. - Este trazo ilustra el ngulo de elevacin requerido para que exista una - trayectoria de lnea-de-vista entre el receptor y transmisor. Si la - traza interseca el perfil de elevacin en cualquier punto del grfico, - entonces esto es una indicacin que bajo las condiciones dadas no existe - una trayectoria de lnea-de-vista, y las obstrucciones se pueden identi- - ficar claramente en el grfico en los puntos de interseccin. - - Usando la opcin -h se puede generar un grfico que ilustre la altura - del terreno referenciado a la trayectoria de lnea-de-vista entre el - transmisor y el receptor: - - splat -t tx_site -r rx_site -h height_profile.png - - Con la opcin -H se puede obtener La altura del terreno normalizada a - las alturas de las antenas del transmisor y receptor: - - splat -t tx_site -r rx_site -H normalized_height_profile.png - - El contorno de curvatura de la Tierra tambin se grafica en este modo. - - La primera Zona de Fresnel, y el 60% de la primera Zona de Fresnel - pueden ser adicionadas al grfico de perfiles de altura con la opcin -f, - especificando la frecuencia (MHz) a la cual la Zona de Fresnel ser mod- - elada: - - splat -t tx_site -r rx_site -f 439.250 -H normalized_height_profile.png - - Zonas de despeje de la zona de Fresnel distintas al 60% se pueden - especificar usando la opcin -fz como sigue: - - splat -t tx_site -r rx_site -f 439.250 -fz 75 -H height_profile2.png - - Un grfico que muestre las prdidas de trayectoria ITM se puede dibujar - usando la opcin -l: - - splat -t tx_site -r rx_site -l path_loss_profile.png - - Como antes, al adicionar la opcin -metric se forza al grfico a usar - unidades de medida mtrica. La opcin -gpsav instruye a SPLAT! para - preservar (en lugar de borrar) los archivos temporales de trabajo gnu- - plot generados durante la ejecucin de SPLAT!, permitindole al usuario - editar esos archivos y re-ejecutar gnuplot si lo desea. - - Al realizar un anlisis punto-a-punto, se genera un reporte SPLAT! de - anlisis de trayectoria en la forma de un archivo de texto con una - extensin .txt. El reporte contiene el azimut y la distancia entre el - transmisor y receptor, lo mismo para cuando se analizan las perdidas - por espacio-libre y trayectoria ITM. El modo de propagacin para la - trayectoria est dado como Lnea-de-Vista, Horizonte Simple, Horizonte - Doble, Difraccin dominante, o Troposcatter dominante. Adicionalmente, - si el receptor est localizado en el pico de una obstruccin simple o en - el pico de una segunda obstruccin, SPLAT! reportar al RX en el Pico del - Terreno a lo Largo de la Trayectoria cuando opera bajo el modelo de - propagacin ITWOM. - - Tambin se proveen datos de distancia y localizaciones para identificar - las obstrucciones a lo largo de la trayectoria entre el transmisor y el - receptor. Si se especifica la potencia efectiva radiada del transmisor - en el archivo .lrp del transmisor correspondiente, entonces en el - reporte de anlisis de trayectoria tambin se provee la prediccin de - intensidad de seal y voltaje de antena en la localizacin de recepcin. - - Para determinar la relacin seal-a-ruido (SNR) en el sitio remoto donde - el ruido (trmico) aleatorio de Johnson es el el factor limitante pri- - mario en la recepcin: - - SNR=T-NJ-L+G-NF - - donde T es la potencia ERP del transmisor en dBW en la direccin del - receptor, NJ es el ruido de Johnson en dBW (-136 dBW para un canal de - TV de 6 MHz), L son las prdidas por trayectoria provistas por SPLAT! en - dB (como un nmero positivo), G es la ganancia de la antena receptora en - dB referenciada a un radiador isotrpico, y NF es la figura de ruido en - el receptor en dB. - - T puede ser computado como sigue: - - T=TI+GT - - donde TI es la cantidad actual de potencia RF entregada a la antena - transmisora en dBW, GT es la ganancia de la antena transmisora (refer- - enciada a una isotrpica) en la direccin del receptor (o al horizonte si - el receptor est sobre el horizonte). - - Para calcular cuanta mas seal est disponible sobre el mnimo necesario - para conseguir una relacin seal-a-ruido especfica: - - Signal_Margin=SNR-S - - donde S es la mnima relacin SNR deseada (15.5 dB para ATSC (8-level - VSB) DTV, 42 dB para televisin analgica NTSC). - - SPLAT! puede generar Un mapa topogrfico para visualizar la trayectoria - entre el transmisor y el receptor desde otra perspectiva. Los mapas - topogrficos generados por SPLAT! presentan las elevaciones usando - escala de grises logartmica, con las elevaciones ms altas representadas - a travs de capas ms brillantes de gris. El rango dinmico de la imagen - es escalada entre las elevaciones ms altas y ms bajas presentes en el - mapa. La nica excepcin de esto es al nivel del mar, el cual se repre- - senta usando el color azul. - - La salida topogrfica se puede especificar usando la opcin -o: - - splat -t tx_site -r rx_site -o topo_map.ppm - - La extensin .ppm del archivo de salida es asumida por SPLAT!, y es - opcional. - - En este ejemplo, topo_map.ppm ilustrar las localizaciones de los sitios - especificados del transmisor y del receptor. Adems, la trayectoria - entre los dos sitios ser dibujada sobre las localizaciones para las - cuales existe una trayectoria sin obstculo hacia el transmisor con una - altura de la antena de recepcin igual a la del sitio del receptor - (especificado en rx_site.qth). - - Puede ser deseable poblar el mapa topogrfico con nombres y localiza- - ciones de ciudades, sitios de torres, o de otras localizaciones impor- - tantes. Para ello se puede pasar a SPLAT! un archivo de ciudades - usando la opcin -s: - - splat -t tx_site -r rx_site -s cities.dat -o topo_map - - Hasta cinco archivos separados se pueden pasar a la vez a SPLAT! luego - de la opcin -s. - - Los lmites de estados y ciudades se pueden adicionar al mapa especifi- - cando hasta cinco archivos de lmites cartogrficos de Censo Bureu de los - U.S. usando la opcin -b: - - splat -t tx_site -r rx_site -b co34_d00.dat -o topo_map - - En situaciones donde mltiples sitios de transmisores estn en uso, se - puede pasar a SPLAT! hasta cuatro localizaciones simultneas para su - anlisis: - - splat -t tx_site1 tx_site2 tx_site3 tx_site4 -r rx_site -p profile.png - - En este ejemplo, SPLAT! genera cuatro reportes separados de obstruccin - y de perfiles de terreno. Un mapa topogrfico simple se puede especi- - ficar al usar la opcin -o, las trayectorias de lnea de vista entre cada - transmisor y el sitio indicado del receptor se graficar en el mapa, - cada uno con su propio color. La trayectoria entre el primer transmisor - especificado al receptor ser verde, la trayectoria entre el segundo - transmisor y el receptor ser cyan, la trayectoria entre el tercer - transmisor y el receptor ser violeta, y la trayectoria entre el cuarto - transmisor y el receptor ser siena. - - Los mapas topogrficos generados por SPLAT! son imgenes TrueColor PixMap - Portables de 24-bit (PPM) y pueden ser vistos, corregidos, o conver- - tidos a otros formatos grficos usando programas populares de imgenes - tales como xv, The GIMP, ImageMagick, and XPaint. El formato PNG es - altamente recomendado para el almacenamiento comprimido sin prdidas de - los archivos topogrficos de salida generados por SPLAT!. La utilidad - de lnea de comandos ImageMagick's convierte fcilmente los archivos - grficos SPLAT! PPM al formato PNG: - - convert splat_map.ppm splat_map.png - - Otra utilidad de de lnea de comandos excelente para convertir archivos - PPM a PNG es wpng, y est disponible en: - http://www.libpng.org/pub/png/book/sources.html. Como recurso adi- - cional, los archivos PPM pueden ser comprimidos usando la utilidad - bzip2, y ser ledos directamente en este formato por The GIMP. - - La opcin -ngs asigna a todo el terreno el color blanco, y se puede usar - cuando se quiera generar mapas desprovistos de terreno - - splat -t tx_site -r rx_site -b co34_d00.dat -ngs -o white_map - - El archivo de imagen .ppm resultante puede ser convertido al formato - .png con un fondo transparente usando la utilidad convert de ImageMag- - ick's. - - convert -transparent "#FFFFFF" white_map.ppm transparent_map.png - -DETERMINANDO LA COBERTURA REGIONAL - SPLAT! puede analizar un sitio de transmisor repetidora, redes de - sitios, y predecir la cobertura regional para cada sitio especificado. - En este modo SPLAT! puede generar un mapa topogrfico presentando la - lnea-de-vista geomtrica del rea de cobertura de los sitios, basados en - la localizacin de cada sitio y la altura de la antena receptora que se - desea comunicar con el sitio en cuestin. SPLAT! puede realizar un - anlisis regional usando la opcin -c como sigue: - - splat -t tx_site -c 30.0 -s cities.dat -b co34_d00.dat -o tx_coverage - - En este ejemplo, SPLAT! genera un mapa topogrfico llamado tx_cover- - age.ppm que ilustra la prediccin de cobertura regional de lnea-de-vista - del tx_site a las estaciones receptoras que tienen una antena de 30 - pies de altura sobre el nivel del terreno (AGL). Si se usa la opcin - -metric, el argumento que sigue a la opcin -c se interpreta en metros, - en lugar de pies. El contenido de cities.dat se dibuja sobre el mapa, - como tambin los lmites cartogrficos contenidos en el archivo - co34_d00.dat. - - Cuando se grafica las trayectorias de lnea-de-vista y las reas de - cobertura regional, SPLAT! por defecto no considera los efectos de la - flexin atmosfrica. Sin embargo esta caracterstica se puede modificar - usando el multiplicador de radio de la tierra con la opcin (-m): - - splat -t wnjt-dt -c 30.0 -m 1.333 -s cities.dat -b counties.dat -o - map.ppm - - Un radio multiplicador de 1.333 instruye a SPLAT! a usar el modelo de - "cuatro-tercios" para el anlisis de propagacin de lnea de vista. El - usuario puede seleccionar cualquier multiplicador apropiado del radio - de la tierra. - - Cuando realiza un anlisis regional, SPLAT! genera un reporte para cada - estacin analizada. Los reportes de sitio SPLAT! contienen detalles de - la localizacin geogrfica del sitio, su altura sobre el nivel del mar, - la altura de la antena sobre el promedio del terreno, y la altura del - promedio del terreno calculada en las direcciones de los azimut de 0, - 45, 90, 135, 180, 225, 270, y 315 grados. - -DETERMINANDO MLTIPLES REGIONES DE COBERTURA DE LDV - SPLAT! tambin puede presentar reas de cobertura de lnea-de-vista hasta - para cuatro sitios de transmisores separados sobre un mapa topogrfico - comn. Por ejemplo: - - splat -t site1 site2 site3 site4 -c 10.0 -metric -o network.ppm - - Graficar las coberturas regionales de lnea de vista del site1 site2 - site3 y site4 basado en una antena receptora localizada a 10.0 metros - sobre el nivel del terreno. Entonces se escribe al archivo network.ppm - el mapa topogrfico. El rea de cobertura de lnea-de-vista del trans- - misor es graficada en los colores indicados (junto con sus valores RGB - correspondientes en decimal): - - site1: Green (0,255,0) - site2: Cyan (0,255,255) - site3: Medium Violet (147,112,219) - site4: Sienna 1 (255,130,71) - site1 + site2: Yellow (255,255,0) - site1 + site3: Pink (255,192,203) - site1 + site4: Green Yellow (173,255,47) - site2 + site3: Orange (255,165,0) - site2 + site4: Dark Sea Green 1 (193,255,193) - site3 + site4: Dark Turquoise (0,206,209) - site1 + site2 + site3: Dark Green (0,100,0) - site1 + site2 + site4: Blanched Almond (255,235,205) - site1 + site3 + site4: Medium Spring Green (0,250,154) - site2 + site3 + site4: Tan (210,180,140) - site1 + site2 + site3 + site4: Gold2 (238,201,0) - - Si se generan archivos .qth separados, cada uno representando una - localizacin de un sitio comn, pero con diferentes alturas de antena, - SPLAT! puede generar un mapa topogrfico sencillo que ilustra la cober- - tura regional desde las estaciones (hasta cuatro) separadas por la - altura en un nica torre. - -ANLISIS DE PRDIDAS POR TRAYECTORIA - Si la opcin -c se reemplaza por la opcin -L, se puede generar un mapa - de prdidas de trayectorias ITM: - - splat -t wnjt -L 30.0 -s cities.dat -b co34_d00.dat -o path_loss_map - - En este modo, SPLAT! genera un mapa multicolor que ilustra los niveles - de seal esperados (prdidas por trayectoria) en las reas alrededor del - transmisor. Una leyenda en la parte inferior del mapa relaciona cada - color con sus respectivas prdidas por trayectoria especficas en deci- - beles. - - La opcin -db permite un umbral a ser configurado como lmite bajo el - cual los contornos no se graficarn en el mapa. Por ejemplo, si las - prdidas por trayectoria por debajo de -140 dB son irrelevantes para el - estudio que se est realizando, el grfico de prdidas por trayectoria - puede ser limitado a la regin delimitada por el contorno de atenuacin - de 140 dB como sigue: - - splat -t wnjt-dt -L 30.0 -s cities.dat -b co34_d00.dat -db 140 -o - plot.ppm - - El umbral del contorno de prdidas por trayectoria puede ser expresado - como una cantidad positiva o negativa. - - El rango de anlisis de prdidas por trayectoria se puede modificar a una - distancia especificada-por-el-usuario con la opcin -R. El argumento - debe ser dado en millas ( kilmetros si se usa la opcin -metric). Si se - especifica un rango mayor que el mapa topogrfico generado, SPLAT! - realizar los clculos de perdidas de trayectoria ITM entre todas las - cuatro esquinas del rea del mapa de prediccin. - - Los colores usados para ilustrar las regiones de contorno en los mapas - SPLAT! de cobertura generados se pueden modificar al crear o modificar - los archivos de definicin de color SPLAT!'s. Los archivos de definicin - de color tienen el mismo nombre base que los archivos de los trans- - misores .qth, pero llevan extensiones .lcf, .scf, y .dcf. Si en el - directorio de trabajo actual no existen los archivos necesarios, cuando - SPLAT! se est ejecutando, se crea en este directorio un archivo que - contiene los parmetros por defecto de definicin de color que luego - puede ser editado manualmente por el usuario. - - Cuando se realiza un anlisis regional ITM y el ERP del transmisor no - se ha especificado es cero, un archivo de definicin de color de prdi- - das por trayectoria .lcf correspondiente al sitio del transmisor (.qth) - es ledo por SPLAT! desde el directorio de trabajo actual. Si el archivo - .lcf correspondiente al sitio del transmisor no se encuentra, entonces - SPLAT! generar automticamente un archivo por defecto para edicin manual - del usuario. - - Un archivo de definicin de color de prdidas por trayectoria posee la - siguiente estructura: (wnjt-dt.lcf): - ; SPLAT! Auto-generated Path-Loss Color Definition ("wnjt-dt.lcf") - File - ; - ; Format for the parameters held in this file is as follows: - ; - ; dB: red, green, blue - ; - ; ...where "dB" is the path loss (in dB) and - ; "red", "green", and "blue" are the corresponding RGB color - ; definitions ranging from 0 to 255 for the region specified. - ; - ; The following parameters may be edited and/or expanded - ; for future runs of SPLAT! A total of 32 contour regions - ; may be defined in this file. - ; - ; - 80: 255, 0, 0 - 90: 255, 128, 0 - 100: 255, 165, 0 - 110: 255, 206, 0 - 120: 255, 255, 0 - 130: 184, 255, 0 - 140: 0, 255, 0 - 150: 0, 208, 0 - 160: 0, 196, 196 - 170: 0, 148, 255 - 180: 80, 80, 255 - 190: 0, 38, 255 - 200: 142, 63, 255 - 210: 196, 54, 255 - 220: 255, 0, 255 - 230: 255, 194, 204 - - Si la prdida por trayectoria es menor que 80 dB, el color Rojo (RGB= - 255, 0, 0) se asigna a la regin. Si la prdida por trayectoria es mayor - o igual a 80 dB, pero menor que 90 dB, entonces el color Naranja Oscuro - (255, 128, 0) se asigna a la regin. El color Naranja (255, 165, 0) se - asigna a regiones que tienen una prdida por trayectoria mayor o igual a - 90 dB, pero menor que 100 dB, y as en adelante. El terreno en escala de - grises se presenta por debajo del contorno de prdidas por trayectoria - de 230 dB. Si se usa la opcin -sc se suavizar las transiciones entre - los niveles de contornos cuantizados. - -ANLISIS DE INTENSIDAD DE CAMPO - Si se especifica la potencia efectiva radiada (ERP) del transmisor en - el archivo del transmisor .lrp, o se expresa en la lnea de comandos - usando la opcin -erp, en lugar de las prdidas por trayectoria, se - graficarn los contornos de intensidad de campo referenciados a deci- - beles sobre un microvoltio por metro (dBuV/m): - - splat -t wnjt-dt -L 30.0 -erp 46000 -db 30 -o plot.ppm - - La opcin -db puede ser usada como antes en este modo para limitar la - medicin a la cual el contorno de intensidad de campo se dibujar. - cuando se dibuja el contorno de intensidad de campo, sin embargo, el - argumento dado es interpretado a ser expresado en dBuV/m. - - El archivo SPLAT! de definicin de color de intensidad de campo comparte - una estructura muy similar a los archivos .lcf usados para graficar la - prdidas por trayectoria. - - ; SPLAT! Auto-generated Signal Color Definition ("wnjt-dt.scf") File - ; - ; Format for the parameters held in this file is as follows: - ; - ; dBuV/m: red, green, blue - ; - ; ...where "dBuV/m" is the signal strength (in dBuV/m) and - ; "red", "green", and "blue" are the corresponding RGB color - ; definitions ranging from 0 to 255 for the region specified. - ; - ; The following parameters may be edited and/or expanded - ; for future runs of SPLAT! A total of 32 contour regions - ; may be defined in this file. - ; - ; - 128: 255, 0, 0 - 118: 255, 165, 0 - 108: 255, 206, 0 - 98: 255, 255, 0 - 88: 184, 255, 0 - 78: 0, 255, 0 - 68: 0, 208, 0 - 58: 0, 196, 196 - 48: 0, 148, 255 - 38: 80, 80, 255 - 28: 0, 38, 255 - 18: 142, 63, 255 - 8: 140, 0, 128 - - Si la intensidad de seal es mayor o igual a 128 dB sobre 1 microvoltio - por metro (dBuV/m), se presenta el color Rojo (255, 0, 0) para la - regin. Si la intensidad de seal es mayor o igual a 118 dBuV/m, pero - menor que 128 dBuV/m, entonces se presenta el color naranja (255, 165, - 0) y as en adelante. El terreno en escala de grises es presentado para - regiones con intensidad de seal menores que 8 dBuV/m. - - Los contornos de intensidad de seal para algunos servicios de radiodi- - fusin comunes en VHF y UHF en los Estados Unidos son los siguientes: - - - Analog Television Broadcasting - ------------------------------ - Channels 2-6: City Grade: >= 74 dBuV/m - Grade A: >= 68 dBuV/m - Grade B: >= 47 dBuV/m - -------------------------------------------- - Channels 7-13: City Grade: >= 77 dBuV/m - Grade A: >= 71 dBuV/m - Grade B: >= 56 dBuV/m - -------------------------------------------- - Channels 14-69: Indoor Grade: >= 94 dBuV/m - City Grade: >= 80 dBuV/m - Grade A: >= 74 dBuV/m - Grade B: >= 64 dBuV/m - Digital Television Broadcasting - ------------------------------- - Channels 2-6: City Grade: >= 35 dBuV/m - Service Threshold: >= 28 dBuV/m - -------------------------------------------- - Channels 7-13: City Grade: >= 43 dBuV/m - Service Threshold: >= 36 dBuV/m - -------------------------------------------- - Channels 14-69: City Grade: >= 48 dBuV/m - Service Threshold: >= 41 dBuV/m - NOAA Weather Radio (162.400 - 162.550 MHz) - ------------------------------------------ - Reliable: >= 18 dBuV/m - Not reliable: < 18 dBuV/m - Unlikely to receive: < 0 dBuV/m - FM Radio Broadcasting (88.1 - 107.9 MHz) - ---------------------------------------- - Analog Service Contour: 60 dBuV/m - Digital Service Contour: 65 dBuV/m - - -ANALISIS DEL NIVEL DE POTENCIA RECIBIDO - Si en el archivo .lrp se especifica la potencia efectiva radiada (ERP), - o se la expresa con la opcin -erp a travs de la lnea de comandos, junto - con la opcin -dbm, los contornos de nivel de potencia recibida se ref- - erencia a decibeles sobre un milivatio (dBm): - - splat -t wnjt-dt -L 30.0 -erp 46000 -dbm -db -100 -o plot.ppm - - Para limitar la medicin a la cual se grafican los contornos del nivel - de potencia recibida, se puede usar la opcin -db. Cuando se grafican - contornos de nivel de potencia, el argumento dado es interpretado a ser - expresado en dbm. - - Los archivos SPLAT! de definicin de color del nivel de potencia - recibidos comparten una estructura muy similar a la estructura de los - archivos de definicin de color descritos previamente, excepto que los - niveles de potencia en dbm pueden ser positivos o negativos, y estn - limitados a un rango entre +40 dBm y -200 dBm: - - ; SPLAT! Auto-generated DBM Signal Level Color Definition ("wnjt- - dt.dcf") File - ; - ; Format for the parameters held in this file is as follows: - ; - ; dBm: red, green, blue - ; - ; ...where "dBm" is the received signal power level between +40 dBm - ; and -200 dBm, and "red", "green", and "blue" are the corresponding - ; RGB color definitions ranging from 0 to 255 for the region speci- - fied. - ; - ; The following parameters may be edited and/or expanded - ; for future runs of SPLAT! A total of 32 contour regions - ; may be defined in this file. - ; - ; - +0: 255, 0, 0 - -10: 255, 128, 0 - -20: 255, 165, 0 - -30: 255, 206, 0 - -40: 255, 255, 0 - -50: 184, 255, 0 - -60: 0, 255, 0 - -70: 0, 208, 0 - -80: 0, 196, 196 - -90: 0, 148, 255 - -100: 80, 80, 255 - -110: 0, 38, 255 - -120: 142, 63, 255 - -130: 196, 54, 255 - -140: 255, 0, 255 - -150: 255, 194, 204 - -PARMETROS PARA PATRONES DE RADIACIN DE ANTENAS - Los patrones de voltaje de campo normalizado para planos verticales y - horizontales de antenas transmisoras se pueden importar automticamente - dentro de SPLAT! cuando se realizan los anlisis de prdidas por trayec- - toria, intensidad de campo, intensidad de campo o nivel de potencia - recibida. - - Los datos de los patrones de antena se leen de un par de archivos que - tienen el mismo nombre base que el transmisor y los archivos LRP, pero - con extensiones .az y .el, para los patrones de azimut y elevacin - respectivamente. Las especificaciones acerca de la rotacin del patrn - (si existe) e inclinacin mecnica y direccin de la inclinacin (si - existe) tambin se definen dentro de los archivos de patrones de - radiacin de las antenas. - - Por ejemplo las primeras pocas lneas de un archivo de patrn de azimut - SPLAT! podran aparecer como sigue (kvea.az): - - 183.0 - 0 0.8950590 - 1 0.8966406 - 2 0.8981447 - 3 0.8995795 - 4 0.9009535 - 5 0.9022749 - 6 0.9035517 - 7 0.9047923 - 8 0.9060051 - - La primera lnea de el archivo .az especifica la cantidad de rotacin del - patrn de azimut (medido en grados desde el norte verdadero en sentido - horario) a ser aplicado por SPLAT! a los datos contenidos en el archivo - .az. Esto es seguido por el correspondiente azimut (0 a 360 grados) y - su asociado patrn de campo normalizado (0.000 a 1.000) separado por un - espacio en blanco. - - La estructura del archivo del patrn de elevacin SPLAT! es ligeramente - diferente. La primera lnea del archivo .el especifica la cantidad de - elevacin mecnica aplicada a la antena. Note que una elevacin hacia - abajo (bajo el horizonte) es expresada como un ngulo positivo, mientras - que hacia arriba (sobre el horizonte) es expresada como un ngulo nega- - tivo. Estos datos son seguidos por la direccin del azimut de la ele- - vacin, separado por un espacio en blanco. - - El remanente del archivo consiste en los valores de los ngulos de ele- - vacin y su correspondiente patrn de radiacin de voltaje normalizado - (0.000 a 1.000) separados por un espacio en blanco. Los ngulos de ele- - vacin deben ser especificados sobre un rango de -10 a +90 grados. Igual - que la notacin en la elevacin mecnica, ngulos de elevacin negativa son - usados para representar elevaciones sobre el horizonte, mientras que - los ngulos positivos representan elevaciones bajo el horizonte. - - Por ejemplo las primeras pocas lneas de un archivo patrn de elevacin - SPLAT! podra aparecer como sigue (kvea.el): - - 1.1 130.0 - -10.0 0.172 - -9.5 0.109 - -9.0 0.115 - -8.5 0.155 - -8.0 0.157 - -7.5 0.104 - -7.0 0.029 - -6.5 0.109 - -6.0 0.185 - - En este ejemplo, la antena es mecnicamente inclinada hacia abajo 1.1 - grados hacia un azimut de 130 grados. - - Para mejores resultados, la resolucin de los datos de patrones de - radiacin debera ser especificados lo mas cerca posibles a los grados - azimut, y la resolucin de datos del patrn de elevacin deberan ser - especificados lo mas cerca posible a 0.01 grados. Si los datos del - patrn especificado no alcanzan este nivel de resolucin, SPLAT! interpo- - lar los valores provistos para determinar los datos en la resolucin - requerida, aunque esto puede resultar en una prdida en exactitud. - -EXPORTANDO E IMPORTANDO DATOS DE CONTORNO REGIONAL - Realizar un anlisis de cobertura regional basado en un anlisis de - trayectoria ITM puede ser un proceso que consuma mucho tiempo, espe- - cialmente si los anlisis son repetidos varias veces para descubrir - cuales son los efectos que los cambios a los patrones de radiacin de - las antenas hacen a la prediccin del rea de cobertura. - - Este proceso puede ser apresurado al exportar los datos del contorno - producidos por SPLAT! a un archivo de salida alfanumrico (.ano). Los - datos contenidos en este archivo se pueden modificar externamente para - incorporar efectos de patrones de antena, y entonces se los puede - importar nuevamente dentro de SPLAT! para rpidamente producir un mapa - de contorno revisado. Dependiendo de la forma en la cual SPLAT! es lla- - mado, los archivos de salida alfanumrica pueden describir prdidas de - trayectoria regional, intensidad de campo, o niveles de potencia de - seal recibida. - - Por ejemplo un archivo de salida alfanumrico que contenga informacin de - prdidas por trayectoria se puede generar por SPLAT! para un sitio de - recepcin a 30 pies sobre el nivel del terreno, con un radio de 50 mil- - las alrededor del sitio de transmisin para prdidas por trayectoria - mximas de 140 dB (asumiendo que en el archivo del transmisor .lrp no se - ha especificado la ERP) usando la siguiente sintaxis: - - splat -t kvea -L 30.0 -R 50.0 -db 140 -ano pathloss.dat - - Si la ERP se especifica en el archivo .lrp o a travs de la opcin -erp - de la lnea de comandos, el archivo de salida alfanumrica en su lugar - contendr los valores de prediccin de campo en dBuV/m. Si se usa la - opcin de lnea de comando -dBm, entonces el archivo de salida alfanum- - rica contendr niveles de potencia de seal recibida en dBm. - - Los archivos de salida alfanumrico SPLAT! pueden exceder muchos cientos - de megabytes de tamao. Contienen la informacin referentes a los lmites - de la regin que describen seguido por latitudes (grados norte), longi- - tudes (grados oeste), azimut (referenciados al norte verdadero), eleva- - ciones(a la primera obstruccin), seguidos ya sea por prdidas por - trayectoria(en dB), intensidad de campo recibida (en dBuV/m), o nivel - de potencia de seal recibida (en dBm) sin considerar el patrn de - radiacin de la antena. - - Las primeras pocas lneas de un archivo de salida alfanumrica SPLAT! - podra tener la siguiente apariencia (pathloss.dat): - - 119, 117 ; max_west, min_west - 35, 34 ; max_north, min_north - 34.2265424, 118.0631096, 48.199, -32.747, 67.70 - 34.2270358, 118.0624421, 48.199, -19.161, 73.72 - 34.2275292, 118.0617747, 48.199, -13.714, 77.24 - 34.2280226, 118.0611072, 48.199, -10.508, 79.74 - 34.2290094, 118.0597723, 48.199, -11.806, 83.26 * - 34.2295028, 118.0591048, 48.199, -11.806, 135.47 * - 34.2299962, 118.0584373, 48.199, -15.358, 137.06 * - 34.2304896, 118.0577698, 48.199, -15.358, 149.87 * - 34.2314763, 118.0564348, 48.199, -15.358, 154.16 * - 34.2319697, 118.0557673, 48.199, -11.806, 153.42 * - 34.2324631, 118.0550997, 48.199, -11.806, 137.63 * - 34.2329564, 118.0544322, 48.199, -11.806, 139.23 * - 34.2339432, 118.0530971, 48.199, -11.806, 139.75 * - 34.2344365, 118.0524295, 48.199, -11.806, 151.01 * - 34.2349299, 118.0517620, 48.199, -11.806, 147.71 * - 34.2354232, 118.0510944, 48.199, -15.358, 159.49 * - 34.2364099, 118.0497592, 48.199, -15.358, 151.67 * - - En este archivo se pueden poner comentarios precedidos por punto y - coma, el editor de texto vim ha probado ser capaz de editar archivos de - este tamao. - - Note que al igual que el caso de los archivos de patrones de antena, - ngulos de elevacin negativos se refieren a inclinaciones hacia arriba - (sobre el horizonte), mientras que ngulos positivos se refieren a - inclinaciones hacia abajo (bajo el horizonte). Esos ngulos se refieren - a la elevacin para la antena receptora en la altura sobre el nivel del - terreno especificada usando la opcin -L si la trayectoria entre el - transmisor y el receptor no tiene obstrucciones. Si la trayectoria - entre el transmisor y el receptor est obstruida, se coloca un asterisco - (*) al final de la lnea, y el ngulo de elevacin retornado por SPLAT! - se refiere al ngulo de elevacin a la primera obstruccin en lugar de la - localizacin geogrfica especificada en la lnea. Esto se hace con- - siderando que el modelo ITM considera la energa que alcanza un punto - distante sobre una trayectoria obstruida como un derivado de la energa - dispersada de la punta de la primera obstruccin a lo largo de la - trayectoria. Puesto que la energa no puede alcanzar directamente la - localizacin obstruida, el actual ngulo de elevacin a ese punto es - irrelevante. - - Cuando se modifican los archivos SPLAT! de prdidas por trayectoria para - reflejar datos de patrones de antena, solo la ltima columna numrica - debera ser enmendada para reflejar la ganancia de antena normalizada en - los ngulos de elevacin y azimut especificados en el archivo. Programas - y scripts capaces de realizar esta operacin quedan como tarea al - usuario. - - Los archivos de salida alfanumricos modificados pueden ser importados - nuevamente a SPLAT! para generar mapas de cobertura revisados con- - siderando la ERP y -dBm de la misma manera que cuando el archivo de - salida alfanumrico fue generado originalmente. - - splat -t kvea -ani pathloss.dat -s city.dat -b county.dat -o map.ppm - - Observe que los archivos de salida alfanumricos generados a travs de - splat no pueden ser usados con splat-hd, o vice-versa debido a la - incompatibilidad de resoluciones entre las dos versiones del programa. - Tambin cada uno de los tres formatos de salida de los archivos alfanum- - ricos son incompatibles entre ellos, tal que un archivo que contenga - datos de prdidas por trayectoria, no puede ser importado dentro de - SPLAT! para producir contornos de nivel de intensidad de seal o de - niveles de potencia recibida, etc. - -ARCHIVOS DE ENTRADA DE TERRENO DEFINIDOS POR EL USUARIO - Un archivo de terreno definido por el usuario es un archivo de texto - generado-por-el-usuario que contiene latitudes, longitudes, y alturas - sobre el nivel de la tierra de caractersticas de terreno especfica que - se cree son de importancia para el anlisis que SPLAT! est desarrol- - lando, pero perceptiblemente ausentes de los archivos SDF que estn - siendo usados. Un archivo de terreno definido-por-el-usuario es impor- - tado dentro de un anlisis de SPLAT! usando la opcin -udt: - - splat -t tx_site -r rx_site -udt udt_file.txt -o map.ppm - - Un archivo de terreno definido-por-el-usuario tiene la siguiente apari- - encia y estructura: - - 40.32180556, 74.1325, 100.0 meters - 40.321805, 74.1315, 300.0 - 40.3218055, 74.1305, 100.0 meters - - La altura del terreno es interpretada en pies sobre el nivel del suelo - a menos que sea seguido por la palabra meters, y es adicionado en la - parte superior de el terreno especificado en los datos SDF para la - localizacin especificada. Debe saber que las caractersticas especifi- - cadas en los archivos de terreno especificados-por-el-usuario sern - interpretados en SPLAT!, como 3-arco segundos en latitud y longitud y - como como 1-arco segundos en latitud y longitud en splat-hd. Las carac- - tersticas descritas en el archivo de terreno definido-por-el-usuario - que traslapen las caractersticas previamente definidas en el archivo - son ignoradas por SPLAT! para evitar ambigedades. - -CLUTTER DEL TERRENO - **Wikipedia:Ruido provocado por los ecos o reflexiones, en elementos - ajenos al sistema (montaas, superficie del mar, etc.) - - La altura del clutter de la tierra puede ser especificado usando la - opcin -gc: - - splat -t wnjt-dt -r kd2bd -gc 30.0 -H wnjt-dt_path.png - - La opcin -gc tiene el efecto de aumentar el nivel general del terreno - en la cantidad de pies especificada (o metros si se usa la opcin -met- - ric), excepto sobre reas al nivel del mar y en las localizaciones de - las antenas transmisora y receptora. - -GENERACIN DE MAPAS TOPOGRFICOS SIMPLES - En ciertas ocasiones puede ser deseable generar un mapa topogrfico de - una regin sin graficar reas de cobertura, trayectorias de lnea-de- - vista, o generar reportes de obstrucciones. Existen varias maneras de - hacer esto. Si se desea generar un mapa topogrfico ilustrando la - localizacin de un sitio del transmisor y receptor con un breve reporte - de texto describiendo las localizaciones y distancias entre los sitios, - entonces, entonces se debe invocar la opcin -n como sigue: - - splat -t tx_site -r rx_site -n -o topo_map.ppm - - Si no se desea un reporte de texto, entonces debe usar la opcin -N: - - splat -t tx_site -r rx_site -N -o topo_map.ppm - - Si se desea un mapa topogrfico centrado cerca de un sitio para un radio - mnimo especificado, se puede utilizar un comando similar al siguiente: - - splat -t tx_site -R 50.0 -s NJ_Cities -b NJ_Counties -o topo_map.ppm - - donde -R especifica el mnimo radio de el mapa en millas ( kilmetros si - se usa la opcin -metric). Note que el nombre del sitio_tx y la local- - izacin no son presentadas en este ejemplo. Si se desea presentar esta - informacin, simplemente cree un archivo de ciudades SPLAT! con la - opcin (-s) y adicinele a las opciones de la lnea-de-comandos ilustradas - arriba. - - Si la opcin -o y el archivo de salida son omitidos en esa operacin, la - salida topogrfica es escrita a un archivo por defecto llamado - tx_site.ppm en el directorio de trabajo actual. - -GENERACIN DE ARCHIVOS DE GEOREFERENCIA - Los mapas topogrficos, de cobertura (-c), y contornos de prdidas por - trayectoria (-L) generados por SPLAT! se pueden importar dentro del - programa Xastir (X Amateur Station Tracking and Information Report- - ing), al generar un archivo de georeferencia usando la opcin SPLAT! - -geo: - - splat -t kd2bd -R 50.0 -s NJ_Cities -b NJ_Counties -geo -o map.ppm - - El archivo de georeferencia creado tendr el mismo nombre base que el - archivo -o especificado, pero con extensin .geo, y permite la apropi- - ada interpretacin y presentacin de los grficos .ppm SPLAT! en el pro- - grama Xastir. - -GENERACION DE ARCHIVOS KML GOOGLE MAP - Cuando se realizan anlisis punto-a-punto, al invocar la opcin -kml - SPLAT! puede generar archivos Keyhole Markup Language compatibles con - Google Earth: - - splat -t wnjt-dt -r kd2bd -kml - - El archivo KML generado tendr la misma estructura que el nombre del - Reporte de Obstrucciones para los sitios del transmisor y receptor - dados, excepto que tendr una extensin .kml. - - Una vez cargado dentro del Google Earth (Archivo --> Abrir), el archivo - KLM exhibir las localizaciones de los sitios de transmisin y recepcin - en el mapa. Los puntos de vista de la imagen sern desde la posicin del - sitio de transmisin mirando hacia la localizacin del receptor. La - trayectoria punto-a-punto entre los sitios ser presentada como una lnea - blanca, mientras que la trayectoria de lnea-de-vista RF ser presentada - en verde. Las herramientas de navegacin de Google Earth le permiten al - usuario "volar" alrededor de la trayectoria, identificando seales, - caminos, y otras caractersticas contenidas. - - Cuando se realiza el anlisis de cobertura regional, el archivo intensi- - dad de seal o de prdidas por trayectoria sobre mapas Google Earth como - capas con su color correspondiente relacionado en la esquina superior - izquierda. - - El archivo .kml generado tendr el mismo nombre base como el del archivo - .ppm normalmente generado. - -DETERMINACIN DE LA ALTURA DE LA ANTENA SOBRE EL PROMEDIO DEL TERRENO - SPLAT! determina la altura de la antena sobre el promedio del terreno - (HAAT) de acuerdo al procedimiento definido por la Comisin Federal de - Comunicaciones. Parte 73.313(d). De acuerdo a esta definicin, la ele- - vacin del terreno a lo largo de ocho radiales entre 2 y 16 millas (3 y - 16 Kilmetros) desde el sitio que est siendo analizado es muestreado y - promediado para los azimut cada 45 grados comenzando con el norte ver- - dadero. Si uno o mas radiales caen enteramente sobre el mar o sobre el - continente fuera de los Estados Unidos (reas para las cuales no existen - disponibles datos topogrficos USGS), entonces esos radiales son omiti- - dos de los clculos del promedio del terreno. Si parte de los radiales - se extienden sobre el mar o fuera de los Estados Unidos, entonces solo - la parte de esos radiales que caen sobre la tierra de los Estados - Unidos son usados en la determinacin del promedio del terreno. - - Note que los datos de elevaciones SRTM-3, a diferencia de los antiguos - datos USGS, se extienden ms all de las fronteras de los Estados Unidos. - Por esta razn, los resultados HAAT, no estarn en fiel cumplimiento con - la FCC parte 73.313(d) en reas a lo largo de la frontera de los Estados - Unidos si los archivos SDF usados por SPLAT! son derivados-SRTM. - - Cuando se realiza anlisis punto-a-punto del terreno, SPLAT! determina - la altura de la antena sobre el promedio del terreno solo si han sido - cargados por el programa suficientes datos topogrficos para realizar el - anlisis punto-a-punto. En la mayora de los casos, esto ser verdadero, a - menos que el sitio en cuestin no est dentro de 10 millas de la frontera - de los datos topogrficos cargados en memoria. - - Cuando se realiza el anlisis de prediccin de rea, normalmente son car- - gados por SPLAT! suficientes datos topogrficos para realizar los clcu- - los del promedio del terreno. Bajo esas condiciones, SPLAT! proveer la - altura de la antena sobre el promedio del terreno, como tambin el - promedio del terreno sobre el nivel del mar para los azimut de 0, 45, - 90, 135, 180, 225, 270, y 315 grados, e incluir dicha informacin en el - reporte de sitio generado. Si uno o ms de los ocho radiales caen sobre - el mar o sobre regiones para las cuales no existen datos SDF - disponibles, SPLAT! reportar sin terreno la trayectoria de los radiales - afectados. - -INFORMACIN ADICIONAL - Las ltimas noticias e informacin respecto al programa SPLAT! est - disponible a travs de la pgina web oficial localizada en: - http://www.qsl.net/kd2bd/splat.html. - -AUTORES - John A. Magliacane, KD2BD - Creator, Lead Developer - - Doug McDonald - Original Longley-Rice ITM Model integration - - Ron Bentley - Fresnel Zone plotting and clearance determination - - - - -KD2BD Software 25 de julio de 2014 SPLAT!(1) diff --git a/install b/install deleted file mode 100755 index 72ea13e..0000000 --- a/install +++ /dev/null @@ -1,80 +0,0 @@ -#!/bin/sh -# -# Simple shell script for installing SPLAT! and associated utilities. -# Written by John A. Magliacane, KD2BD April 2002. -# Last update: March 1, 2008. -# - -install_splat() -{ - if [ -x splat ]; then - cp splat /usr/local/bin - `cd /usr/local/bin && ln -s splat splat-hd` - echo "SPLAT! installed!" - fi -} - -install_utils() -{ - cd utils - ./install all - cd .. - echo "utils installed!" -} - -install_man() -{ - if [ -d /usr/local/man/man1 ]; then - cp docs/english/man/splat.1 /usr/local/man/man1/splat.1 - echo "man page installed!" - else - if [ -d /usr/man/man1 ]; then - cp docs/english/man/splat.1 /usr/man/man1/splat.1 - echo "man page installed!" - fi - fi - - if [ -d /usr/local/man/es/man1 ]; then - cp docs/spanish/man/splat.1 /usr/local/man/es/man1/splat.1 - echo "spanish man page installed!" - else - if [ -d /usr/man/es/man1 ]; then - cp docs/spanish/man/splat.1 /usr/man/es/man1/splat.1 - echo "spanish man page installed!" - fi - fi -} - -whoami=`whoami` - -if [ "$#" = "0" ]; then - echo "Usage: ./install { splat, utils, man, all }" -else - if [ "$whoami" = "root" ]; then - - if [ "$1" = "splat" ] && [ -x splat ]; then - install_splat - fi - - if [ "$1" = "utils" ]; then - install_utils - fi - - if [ "$1" = "man" ]; then - install_man - fi - - if [ "$1" = "all" ] && [ -x splat ]; then - install_splat - install_utils - install_man - fi - else - echo "Sorry, $whoami. You need to be 'root' to install this software. :-(" - fi - - if [ "$1" != "splat" ] && [ "$1" != "utils" ] && [ "$1" != "man" ] && [ "$1" != "all" ]; then - echo "Usage: ./install { splat, utils, man, all }" - fi -fi - diff --git a/utils/Makefile b/utils/Makefile deleted file mode 100644 index cc456f4..0000000 --- a/utils/Makefile +++ /dev/null @@ -1,55 +0,0 @@ -ARCH := $(shell getconf LONG_BIT) -CLANG := $(shell command -v clang 2> /dev/null) -GXX := $(shell command -v g++ 2> /dev/null) -OS:=$(shell uname) - -# prefer gcc/g++, if available -# there's really no good reason for using this over clang and this test should probably -# be reversed. -ifdef GXX - CC=gcc - CXX=g++ - CPPFLAGS_32:= - GCC_CFLAGS:=$(CPPFLAGS_$(ARCH)) -else - CC=clang - CXX=clang++ - CLANG_CFLAGS:= -endif - -#CPPFLAGS= -g -Wall -ffast-math $(CLANG_CFLAGS) $(GCC_CFLAGS) -CPPFLAGS= -O3 -Wall -ffast-math $(CLANG_CFLAGS) $(GCC_CFLAGS) - -LDFLAGS = -lm -lbz2 -lz - -all: citydecoder usgs2sdf srtm2sdf srtm2sdf-hd fontdata bearing - -citydecoder: citydecoder.o - $(CXX) $(CPPFLAGS) -o $@ $< $(LDFLAGS) - -usgs2sdf: usgs2sdf.o - $(CXX) $(CPPFLAGS) -o $@ $< $(LDFLAGS) - -srtm2sdf: srtm2sdf.o - $(CXX) $(CPPFLAGS) -o $@ $< $(LDFLAGS) - -srtm2sdf-hd: srtm2sdf - ln -sf srtm2sdf srtm2sdf-hd - -fontdata: fontdata.o - $(CXX) $(CPPFLAGS) -o $@ $< $(LDFLAGS) - -bearing: bearing.o - $(CXX) $(CPPFLAGS) -o $@ $< $(LDFLAGS) - -.PHONY: clean -clean: - @rm -f *.o citydecoder usgs2sdf srtm2sdf fontdata bearing - -.SUFFIXES: .c .cpp .o -.c.o: - $(CC) $(CPPFLAGS) -std=c99 -pedantic $(INCLUDES) -c $< - -.cpp.o: - $(CXX) $(CPPFLAGS) -std=c++11 $(INCLUDES) -c $< - diff --git a/utils/README b/utils/README.md similarity index 68% rename from utils/README rename to utils/README.md index b96bebe..7eb877f 100644 --- a/utils/README +++ b/utils/README.md @@ -1,28 +1,25 @@ - ================ - SPLAT! Utilities - ================ +# SPLAT! Utilities Utilities for use with SPLAT! software are found under the -splat-1.4.1/utils directory. They include the following: +`utils` directory. They include the following: -srtm2sdf -======== -The srtm2sdf utility generates SPLAT Data Files (SDFs) from STS-99 +## srtm2sdf +The `srtm2sdf` utility generates SPLAT Data Files (SDFs) from STS-99 Space Shuttle Topography Mission (SRTM) elevation data files. This data is of a much higher quality than that contained in older USGS Digital Elevation Models of the same resolution. However, many SRTM Version 2 elevation models contain data "spikes", "voids", and "wells" that are the consequence of the radar mapping process. -The srtm2sdf utility has the ability to detect and replace SRTM data -outliers with equivalent usgs2sdf derived SDF data (see usgs2sdf below). +The `srtm2sdf` utility has the ability to detect and replace SRTM data +outliers with equivalent usgs2sdf derived SDF data (see `usgs2sdf` below). If such data is not available, SRTM outliers are handled either through adjacent pixel averaging, or by threshold limiting using user-specified limits. Of all three methods, the USGS-derived SDF replacement method yields the best results. -The srtm2sdf utility processes SRTM-3 3-arc second resolution data +The `srtm2sdf` utility processes SRTM-3 3-arc second resolution data or use with SPLAT! operating in standard definition mode. SRTM-3 Version 2 Elevation Data files may be downloaded from: @@ -30,22 +27,22 @@ SRTM-3 Version 2 Elevation Data files may be downloaded from: http://dds.cr.usgs.gov/srtm/version2_1/SRTM3/ Files available at this site are ZIP compressed, and must be -uncompressed (using "unzip", or "gunzip -S .zip") prior to being -processed by srtm2sdf. +uncompressed (using `unzip`, or `gunzip -S .zip`) prior to being +processed by `srtm2sdf`. -The srtm2sdf utility accepts command-line options as follows: +The `srtm2sdf` utility accepts command-line options as follows: --d: used to specify the directory path to the location of usgs2sdf +-d: used to specify the directory path to the location of `usgs2sdf` derived SDF files that are to be used to replace outliers found - in the SRTM data file. The -d option overrides the default path - specified in your $HOME/.splat_path file. + in the SRTM data file. The `-d` option overrides the default path + specified in your `$HOME/.splat_path file`. -n: used to specify the elevation (in meters) below which SRTM data - is either replaced with usgs2sdf-derived SDF data, or averaged + is either replaced with `usgs2sdf`-derived SDF data, or averaged among adjacent elevation data points. The default threshold for the replacement limit is sea-level (0 meters). Unless elevations below sea-level are known to exist for the region being - processed by the srtm2sdf utility, the -n option need not be + processed by the `srtm2sdf` utility, the `-n` option need not be specified. Some examples of srtm2sdf use: @@ -90,9 +87,8 @@ extension given as its argument. Finally, move or copy the generated .sdf file to your SPLAT! working directory. -srtm2sdf-hd -=========== -The srtm2sdf-hd utility operates in an identical manner as srtm2sdf, +## srtm2sdf-hd +The `srtm2sdf-hd` utility operates in an identical manner as `srtm2sdf`, but is used to generate HD SDF files from SRTM-1 one-arc second resolution data files for use with SPLAT! HD. SRTM-1 data files are available for the United States and its territories and @@ -101,33 +97,30 @@ possessions, and may be downloaded from: http://dds.cr.usgs.gov/srtm/version2_1/SRTM1/ -usgs2sdf -======== -The usgs2sdf utility takes as an argument the name of an uncompressed +## usgs2sdf +The `usgs2sdf` utility takes as an argument the name of an uncompressed and record delimited Digital Elevation Model Data (DEM) downloaded from the US Geological Survey, and generates a SPLAT Data File (SDF) compatible -with SPLAT! Software. usgs2sdf may be invoked manually, or via the +with SPLAT! Software. `usgs2sdf` may be invoked manually, or via the postdownload script. -postdownload -============ -postdownload is a front-end to the usgs2sdf utility. postdownload +## postdownload +`postdownload` is a front-end to the usgs2sdf utility. `postdownload` takes as an argument the name of the gzipped Digital Elevation Model (DEM) downloaded from the US Geological Survey (ie: wilmington-w.gz). -postdownload uncompresses the DEM file, adds necessary record delimiters, -and invokes usgs2sdf to produce a SPLAT! Data File (SDF). +`postdownload` uncompresses the DEM file, adds necessary record delimiters, +and invokes `usgs2sdf` to produce a SPLAT! Data File (SDF). USGS Digital Elevation Models may be downloaded from: http://edcftp.cr.usgs.gov/pub/data/DEM/250/ -Invoke postdownload with the name of each DEM file downloaded to +Invoke `postdownload` with the name of each DEM file downloaded to produce a database of SPLAT Data Files. -citydecoder -=========== +## citydecoder This utility reads certain U.S. Census Bureau files to produce city/site data files that can be imported into SPLAT! software to annotate SPLAT!-generated maps. Incorporated Places/Census Designated Places @@ -145,11 +138,11 @@ http://web.archive.org/web/20130331172800/http://www.census.gov/geo/www/cob/cs20 (Formerly: http://www.census.gov/geo/www/cob/cs2000.html) -and processed with the citydecoder utility. +and processed with the `citydecoder` utility. Please select the ARC/INFO Ungenerate (ASCII) Metadata Cartographic Boundary Files from these sites and unzip them prior to processing them with -citydecoder: +`citydecoder`: unzip -a pl34_d00_ascii.zip unzip -a cs34_d00_ascii.zip @@ -158,7 +151,7 @@ U.S. Census files are cataloged by the two digit FIPS code for the region (state) they represent. A list of FIPS codes is included in fips.txt under splat-1.4.1/utils for your convenience. -citydecoder takes as an argument the two-letter file prefix plus the FIPS +`citydecoder` takes as an argument the two-letter file prefix plus the FIPS code of the region or state being processed. For example: citydecoder pl34 @@ -171,12 +164,12 @@ sorted and written to a file (cities.nj.dat) in the following manner: citydecoder pl34 | sort > cities.nj.dat In a similar manner, unzipped County Subdivision files may be processed -with the citydecoder utility to produce a file containing locations and +with the `citydecoder` utility to produce a file containing locations and names of towns, townships, and boroughs: citydecoder cs34 | sort > townships.nj.dat -citydecoder can also process more than one file or file type per invocation, +`citydecoder` can also process more than one file or file type per invocation, and produce a merged output file as follows: citydecoder pl34 cs34 | sort > everything.in.nj.dat @@ -186,15 +179,14 @@ will be reflected in the merged output file, so some manual editing of the output file may be necessary. -fontdata -======== -The fontdata utility reads Slackware gzipped console font data -to create the fontdata.h file required for compilation of SPLAT!. + ## fontdata +The `fontdata` utility reads Slackware gzipped console font data +to create the `fontdata.h` file required for compilation of SPLAT!. Font data of the type needed by this utility may be found under -/usr/lib/kbd/consolefonts (Slackware < 8), or under -/usr/share/kbd/consolefonts (Slackware >= 8.0). +`/usr/lib/kbd/consolefonts` (Slackware < 8), or under +`/usr/share/kbd/consolefonts` (Slackware >= 8.0). -A default fontdata.h file is already included in with SPLAT!, and is +A default `fontdata.h` file is already included in with SPLAT!, and is a derivative of the s.fnt console font type available under Slackware. fontdata takes as an argument the name of the file containing the gzipped compressed console fonts: @@ -202,50 +194,11 @@ gzipped compressed console fonts: fontdata s.fnt.gz -bearing -======= +## bearing The bearing utility reads a pair of .qth files specified on the command line, and returns the azimuth bearing and great circle path distance between -the two points specified. A -metric switch is available so that distances +the two points specified. A `-metric` switch is available so that distances can be provided in kilometers rather than statute miles. SPLAT! provides similar distance and bearing information between two specific site locations. The bearing utility, however, provides the information quickly and easily over great distances without having to run SPLAT! - - -Building The Utilities -====================== -Normally, these utilities are built and installed along with SPLAT! -when SPLAT!'s ./configure script is invoked. However, if you modify -them and/or wish to build and install them separately, here is how it's -done. First, invoke the "build" script to compile each or all utilities -in this directory by name. For example: - - ./build citydecoder - -compiles citydecoder only, while - - ./build all - -compiles all utilities. - - -Installing The Utilities -======================== -Invoke the "install" script to install each or all utilities in this -directory by name. For example: - - ./install citydecoder - -installs citydecoder only, while - - ./install all - -installs all utilities. - -You need to be 'root' to install any or all of these utilities. - ---- -John A. Magliacane, KD2BD -January 2014 - diff --git a/utils/install b/utils/install deleted file mode 100755 index bdceaf1..0000000 --- a/utils/install +++ /dev/null @@ -1,81 +0,0 @@ -#!/bin/bash -# -# Simple shell script for installing SPLAT! and associated utilities. -# Written by John A. Magliacane, KD2BD April 2002. Updated March 2009. -# - -install_citydecoder() -{ - cp citydecoder /usr/local/bin - echo "citydecoder installed!" -} - -install_usgs2sdf() -{ - cp usgs2sdf /usr/local/bin - echo "usgs2sdf installed!" -} - -install_srtm2sdf() -{ - cp srtm2sdf /usr/local/bin - rm -f /usr/local/bin/srtm2sdf-hd - ln -s /usr/local/bin/srtm2sdf /usr/local/bin/srtm2sdf-hd - echo "srtm2sdf and srtm2sdf-hd installed!" -} - -install_fontdata() -{ - cp fontdata /usr/local/bin - echo "fontdata installed!" -} - -whoami=`whoami` - -if [ "$whoami" != "root" ]; then - echo "Sorry, $whoami. You need to be 'root' to install this software. :-(" -fi - -if [ "$#" = "0" ]; then - echo "Usage: ./install { citydecoder, srtm2sdf, usgs2sdf, fontdata, all }" -else - - if [ "$1" = "citydecoder" ] && [ "$whoami" = "root" ] && [ -x citydecoder ]; then - install_citydecoder - fi - - if [ "$1" = "srtm2sdf" ] && [ "$whoami" = "root" ] && [ -x srtm2sdf ]; then - install_srtm2sdf - fi - - if [ "$1" = "usgs2sdf" ] && [ "$whoami" = "root" ] && [ -x usgs2sdf ]; then - install_usgs2sdf - fi - - if [ "$1" = "fontdata" ] && [ "$whoami" = "root" ] && [ -x fontdata ]; then - install_fontdata - fi - - if [ "$1" = "all" ] && [ "$whoami" = "root" ]; then - if [ -x citydecoder ]; then - install_citydecoder - fi - - if [ -x srtm2sdf ]; then - install_srtm2sdf - fi - - if [ -x usgs2sdf ]; then - install_usgs2sdf - fi - - if [ -x fontdata ]; then - install_fontdata - fi - fi - - if [ "$1" != "citydecoder" ] && [ "$1" != "srtm2sdf" ] && [ "$1" != "usgs2sdf" ] && [ "$1" != "fontdata" ] && [ "$1" != "all" ]; then - echo "Usage: install { citydecoder, srtm2sdf, usgs2sdf, fontdata, all }" - fi -fi - diff --git a/vstudio/Splat.sln b/vstudio/Splat.sln deleted file mode 100644 index 0284258..0000000 --- a/vstudio/Splat.sln +++ /dev/null @@ -1,46 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 14 -VisualStudioVersion = 14.0.25420.1 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Splat", "Splat.vcxproj", "{D3FD8932-81B7-41A1-9B7F-A63E3F700343}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "srtm2sdf", "srtm2sdf.vcxproj", "{AA335F17-94D1-4AF7-B2C3-B5418AE70388}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "citydecoder", "citydecoder.vcxproj", "{F5529C15-EB9F-4B0F-B2E6-299F0B1271CA}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "bearing", "bearing.vcxproj", "{58177246-D648-4B9C-A238-BA1BE692DDA3}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "usgs2sdf", "usgs2sdf.vcxproj", "{FE6E7D04-F5A0-49A5-8522-CD90A51B90C2}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|x64 = Debug|x64 - Release|x64 = Release|x64 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {D3FD8932-81B7-41A1-9B7F-A63E3F700343}.Debug|x64.ActiveCfg = Debug|x64 - {D3FD8932-81B7-41A1-9B7F-A63E3F700343}.Debug|x64.Build.0 = Debug|x64 - {D3FD8932-81B7-41A1-9B7F-A63E3F700343}.Release|x64.ActiveCfg = Release|x64 - {D3FD8932-81B7-41A1-9B7F-A63E3F700343}.Release|x64.Build.0 = Release|x64 - {AA335F17-94D1-4AF7-B2C3-B5418AE70388}.Debug|x64.ActiveCfg = Debug|x64 - {AA335F17-94D1-4AF7-B2C3-B5418AE70388}.Debug|x64.Build.0 = Debug|x64 - {AA335F17-94D1-4AF7-B2C3-B5418AE70388}.Release|x64.ActiveCfg = Release|x64 - {AA335F17-94D1-4AF7-B2C3-B5418AE70388}.Release|x64.Build.0 = Release|x64 - {F5529C15-EB9F-4B0F-B2E6-299F0B1271CA}.Debug|x64.ActiveCfg = Debug|x64 - {F5529C15-EB9F-4B0F-B2E6-299F0B1271CA}.Debug|x64.Build.0 = Debug|x64 - {F5529C15-EB9F-4B0F-B2E6-299F0B1271CA}.Release|x64.ActiveCfg = Release|x64 - {F5529C15-EB9F-4B0F-B2E6-299F0B1271CA}.Release|x64.Build.0 = Release|x64 - {58177246-D648-4B9C-A238-BA1BE692DDA3}.Debug|x64.ActiveCfg = Debug|x64 - {58177246-D648-4B9C-A238-BA1BE692DDA3}.Debug|x64.Build.0 = Debug|x64 - {58177246-D648-4B9C-A238-BA1BE692DDA3}.Release|x64.ActiveCfg = Release|x64 - {58177246-D648-4B9C-A238-BA1BE692DDA3}.Release|x64.Build.0 = Release|x64 - {FE6E7D04-F5A0-49A5-8522-CD90A51B90C2}.Debug|x64.ActiveCfg = Debug|x64 - {FE6E7D04-F5A0-49A5-8522-CD90A51B90C2}.Debug|x64.Build.0 = Debug|x64 - {FE6E7D04-F5A0-49A5-8522-CD90A51B90C2}.Release|x64.ActiveCfg = Release|x64 - {FE6E7D04-F5A0-49A5-8522-CD90A51B90C2}.Release|x64.Build.0 = Release|x64 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/vstudio/Splat.vcxproj b/vstudio/Splat.vcxproj deleted file mode 100644 index db3e625..0000000 --- a/vstudio/Splat.vcxproj +++ /dev/null @@ -1,134 +0,0 @@ - - - - - Debug - x64 - - - Release - x64 - - - - {D3FD8932-81B7-41A1-9B7F-A63E3F700343} - Win32Proj - Splat - 8.1 - - - - Application - true - v140 - NotSet - - - Application - false - v140 - true - NotSet - - - - - - - - - - - - - - - false - $(SolutionDir)\..\ - Intermediate\$(Platform)\$(Configuration)\$(TargetName)\ - - - false - $(SolutionDir)\..\ - Intermediate\$(Platform)\$(Configuration)\$(TargetName)\ - - - - NotUsing - Level3 - Disabled - _DEBUG;_CONSOLE;%(PreprocessorDefinitions);_CRT_SECURE_NO_WARNINGS - Sync - MultiThreadedDebug - $(SolutionDir)include - ProgramDatabase - true - true - false - true - false - true - false - false - $(IntDir)$(TargetName).pdb - - - Console - true - bzip2.lib;libpng16.lib;zlib.lib - $(SolutionDir)x64_lib - $(OutDir)$(TargetName)$(TargetExt) - libcmt - - $(IntDir)$(TargetName).pdb - $(IntDir)$(TargetName).pgd - - - - - Level3 - NotUsing - Full - true - true - NDEBUG;_CONSOLE;%(PreprocessorDefinitions);_CRT_SECURE_NO_WARNINGS - Sync - MultiThreaded - $(SolutionDir)include - false - true - true - false - $(IntDir)$(TargetName).pdb - - - Console - true - true - false - bzip2.lib;libpng16.lib;zlib.lib - $(SolutionDir)x64_lib - false - NotSet - $(OutDir)$(TargetName)$(TargetExt) - $(IntDir)$(TargetName).pdb - $(IntDir)$(TargetName).pgd - UseLinkTimeCodeGeneration - - - - - true - - - true - - - - - - - - - - \ No newline at end of file diff --git a/vstudio/bearing.vcxproj b/vstudio/bearing.vcxproj deleted file mode 100644 index 4952290..0000000 --- a/vstudio/bearing.vcxproj +++ /dev/null @@ -1,125 +0,0 @@ - - - - - Debug - x64 - - - Release - x64 - - - - {58177246-D648-4B9C-A238-BA1BE692DDA3} - Win32Proj - bearing - 8.1 - - - - Application - true - v140 - NotSet - - - Application - false - v140 - true - NotSet - - - - - - - - - - - - - - - false - $(SolutionDir)\..\ - Intermediate\$(Platform)\$(Configuration)\$(TargetName)\ - - - false - $(SolutionDir)\..\ - Intermediate\$(Platform)\$(Configuration)\$(TargetName)\ - - - - NotUsing - Level3 - Disabled - _DEBUG;_CONSOLE;%(PreprocessorDefinitions);_CRT_SECURE_NO_WARNINGS - Sync - MultiThreadedDebug - $(SolutionDir)include - ProgramDatabase - true - true - false - true - false - true - false - false - $(IntDir)$(TargetName).pdb - - - Console - true - bzip2.lib;libpng16.lib;zlib.lib - $(SolutionDir)x64_lib - $(OutDir)$(TargetName)$(TargetExt) - libcmt - - $(IntDir)$(TargetName).pdb - $(IntDir)$(TargetName).pgd - - - - - Level3 - NotUsing - MaxSpeed - true - true - NDEBUG;_CONSOLE;%(PreprocessorDefinitions);_CRT_SECURE_NO_WARNINGS - Sync - MultiThreaded - $(SolutionDir)include - false - true - true - false - $(IntDir)$(TargetName).pdb - - - Console - true - true - false - bzip2.lib;libpng16.lib;zlib.lib - $(SolutionDir)x64_lib - false - NotSet - $(OutDir)$(TargetName)$(TargetExt) - $(IntDir)$(TargetName).pdb - $(IntDir)$(TargetName).pgd - UseLinkTimeCodeGeneration - - - - - - - - - \ No newline at end of file diff --git a/vstudio/buildVS2015.bat b/vstudio/buildVS2015.bat deleted file mode 100644 index a4af7b1..0000000 --- a/vstudio/buildVS2015.bat +++ /dev/null @@ -1,6 +0,0 @@ -call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64\vcvars64.bat" - -"C:\Program Files (x86)\MSBuild\14.0\Bin\MSBuild.exe" Splat.sln /p:configuration=Debug /p:platform=x64 /t:clean -"C:\Program Files (x86)\MSBuild\14.0\Bin\MSBuild.exe" Splat.sln /p:configuration=Release /p:platform=x64 /t:clean -"C:\Program Files (x86)\MSBuild\14.0\Bin\MSBuild.exe" Splat.sln /p:configuration=Release /p:platform=x64 - diff --git a/vstudio/citydecoder.vcxproj b/vstudio/citydecoder.vcxproj deleted file mode 100644 index 3aadcfe..0000000 --- a/vstudio/citydecoder.vcxproj +++ /dev/null @@ -1,125 +0,0 @@ - - - - - Debug - x64 - - - Release - x64 - - - - {F5529C15-EB9F-4B0F-B2E6-299F0B1271CA} - Win32Proj - citydecoder - 8.1 - - - - Application - true - v140 - NotSet - - - Application - false - v140 - true - NotSet - - - - - - - - - - - - - - - false - $(SolutionDir)\..\ - Intermediate\$(Platform)\$(Configuration)\$(TargetName)\ - - - false - $(SolutionDir)\..\ - Intermediate\$(Platform)\$(Configuration)\$(TargetName)\ - - - - NotUsing - Level3 - Disabled - _DEBUG;_CONSOLE;%(PreprocessorDefinitions);_CRT_SECURE_NO_WARNINGS - Sync - MultiThreadedDebug - $(SolutionDir)include - ProgramDatabase - true - true - false - true - false - true - false - false - $(IntDir)$(TargetName).pdb - - - Console - true - bzip2.lib;libpng16.lib;zlib.lib - $(SolutionDir)x64_lib - $(OutDir)$(TargetName)$(TargetExt) - libcmt - - $(IntDir)$(TargetName).pdb - $(IntDir)$(TargetName).pgd - - - - - Level3 - NotUsing - MaxSpeed - true - true - NDEBUG;_CONSOLE;%(PreprocessorDefinitions);_CRT_SECURE_NO_WARNINGS - Sync - MultiThreaded - $(SolutionDir)include - false - true - true - false - $(IntDir)$(TargetName).pdb - - - Console - true - true - false - bzip2.lib;libpng16.lib;zlib.lib - $(SolutionDir)x64_lib - false - NotSet - $(OutDir)$(TargetName)$(TargetExt) - $(IntDir)$(TargetName).pdb - $(IntDir)$(TargetName).pgd - UseLinkTimeCodeGeneration - - - - - - - - - \ No newline at end of file diff --git a/vstudio/include/bzlib.h b/vstudio/include/bzlib.h deleted file mode 100644 index 8277123..0000000 --- a/vstudio/include/bzlib.h +++ /dev/null @@ -1,282 +0,0 @@ - -/*-------------------------------------------------------------*/ -/*--- Public header file for the library. ---*/ -/*--- bzlib.h ---*/ -/*-------------------------------------------------------------*/ - -/* ------------------------------------------------------------------ - This file is part of bzip2/libbzip2, a program and library for - lossless, block-sorting data compression. - - bzip2/libbzip2 version 1.0.6 of 6 September 2010 - Copyright (C) 1996-2010 Julian Seward - - Please read the WARNING, DISCLAIMER and PATENTS sections in the - README file. - - This program is released under the terms of the license contained - in the file LICENSE. - ------------------------------------------------------------------ */ - - -#ifndef _BZLIB_H -#define _BZLIB_H - -#ifdef __cplusplus -extern "C" { -#endif - -#define BZ_RUN 0 -#define BZ_FLUSH 1 -#define BZ_FINISH 2 - -#define BZ_OK 0 -#define BZ_RUN_OK 1 -#define BZ_FLUSH_OK 2 -#define BZ_FINISH_OK 3 -#define BZ_STREAM_END 4 -#define BZ_SEQUENCE_ERROR (-1) -#define BZ_PARAM_ERROR (-2) -#define BZ_MEM_ERROR (-3) -#define BZ_DATA_ERROR (-4) -#define BZ_DATA_ERROR_MAGIC (-5) -#define BZ_IO_ERROR (-6) -#define BZ_UNEXPECTED_EOF (-7) -#define BZ_OUTBUFF_FULL (-8) -#define BZ_CONFIG_ERROR (-9) - -typedef - struct { - char *next_in; - unsigned int avail_in; - unsigned int total_in_lo32; - unsigned int total_in_hi32; - - char *next_out; - unsigned int avail_out; - unsigned int total_out_lo32; - unsigned int total_out_hi32; - - void *state; - - void *(*bzalloc)(void *,int,int); - void (*bzfree)(void *,void *); - void *opaque; - } - bz_stream; - - -#ifndef BZ_IMPORT -#define BZ_EXPORT -#endif - -#ifndef BZ_NO_STDIO -/* Need a definitition for FILE */ -#include -#endif - -#ifdef _WIN32 -# include -# ifdef small - /* windows.h define small to char */ -# undef small -# endif -# ifdef BZ_EXPORT -# define BZ_API(func) WINAPI func -# define BZ_EXTERN extern -# else - /* import windows dll dynamically */ -# define BZ_API(func) (WINAPI * func) -# define BZ_EXTERN -# endif -#else -# define BZ_API(func) func -# define BZ_EXTERN extern -#endif - - -/*-- Core (low-level) library functions --*/ - -BZ_EXTERN int BZ_API(BZ2_bzCompressInit) ( - bz_stream* strm, - int blockSize100k, - int verbosity, - int workFactor - ); - -BZ_EXTERN int BZ_API(BZ2_bzCompress) ( - bz_stream* strm, - int action - ); - -BZ_EXTERN int BZ_API(BZ2_bzCompressEnd) ( - bz_stream* strm - ); - -BZ_EXTERN int BZ_API(BZ2_bzDecompressInit) ( - bz_stream *strm, - int verbosity, - int small - ); - -BZ_EXTERN int BZ_API(BZ2_bzDecompress) ( - bz_stream* strm - ); - -BZ_EXTERN int BZ_API(BZ2_bzDecompressEnd) ( - bz_stream *strm - ); - - - -/*-- High(er) level library functions --*/ - -#ifndef BZ_NO_STDIO -#define BZ_MAX_UNUSED 5000 - -typedef void BZFILE; - -BZ_EXTERN BZFILE* BZ_API(BZ2_bzReadOpen) ( - int* bzerror, - FILE* f, - int verbosity, - int small, - void* unused, - int nUnused - ); - -BZ_EXTERN void BZ_API(BZ2_bzReadClose) ( - int* bzerror, - BZFILE* b - ); - -BZ_EXTERN void BZ_API(BZ2_bzReadGetUnused) ( - int* bzerror, - BZFILE* b, - void** unused, - int* nUnused - ); - -BZ_EXTERN int BZ_API(BZ2_bzRead) ( - int* bzerror, - BZFILE* b, - void* buf, - int len - ); - -BZ_EXTERN BZFILE* BZ_API(BZ2_bzWriteOpen) ( - int* bzerror, - FILE* f, - int blockSize100k, - int verbosity, - int workFactor - ); - -BZ_EXTERN void BZ_API(BZ2_bzWrite) ( - int* bzerror, - BZFILE* b, - void* buf, - int len - ); - -BZ_EXTERN void BZ_API(BZ2_bzWriteClose) ( - int* bzerror, - BZFILE* b, - int abandon, - unsigned int* nbytes_in, - unsigned int* nbytes_out - ); - -BZ_EXTERN void BZ_API(BZ2_bzWriteClose64) ( - int* bzerror, - BZFILE* b, - int abandon, - unsigned int* nbytes_in_lo32, - unsigned int* nbytes_in_hi32, - unsigned int* nbytes_out_lo32, - unsigned int* nbytes_out_hi32 - ); -#endif - - -/*-- Utility functions --*/ - -BZ_EXTERN int BZ_API(BZ2_bzBuffToBuffCompress) ( - char* dest, - unsigned int* destLen, - char* source, - unsigned int sourceLen, - int blockSize100k, - int verbosity, - int workFactor - ); - -BZ_EXTERN int BZ_API(BZ2_bzBuffToBuffDecompress) ( - char* dest, - unsigned int* destLen, - char* source, - unsigned int sourceLen, - int small, - int verbosity - ); - - -/*-- - Code contributed by Yoshioka Tsuneo (tsuneo@rr.iij4u.or.jp) - to support better zlib compatibility. - This code is not _officially_ part of libbzip2 (yet); - I haven't tested it, documented it, or considered the - threading-safeness of it. - If this code breaks, please contact both Yoshioka and me. ---*/ - -BZ_EXTERN const char * BZ_API(BZ2_bzlibVersion) ( - void - ); - -#ifndef BZ_NO_STDIO -BZ_EXTERN BZFILE * BZ_API(BZ2_bzopen) ( - const char *path, - const char *mode - ); - -BZ_EXTERN BZFILE * BZ_API(BZ2_bzdopen) ( - int fd, - const char *mode - ); - -BZ_EXTERN int BZ_API(BZ2_bzread) ( - BZFILE* b, - void* buf, - int len - ); - -BZ_EXTERN int BZ_API(BZ2_bzwrite) ( - BZFILE* b, - void* buf, - int len - ); - -BZ_EXTERN int BZ_API(BZ2_bzflush) ( - BZFILE* b - ); - -BZ_EXTERN void BZ_API(BZ2_bzclose) ( - BZFILE* b - ); - -BZ_EXTERN const char * BZ_API(BZ2_bzerror) ( - BZFILE *b, - int *errnum - ); -#endif - -#ifdef __cplusplus -} -#endif - -#endif - -/*-------------------------------------------------------------*/ -/*--- end bzlib.h ---*/ -/*-------------------------------------------------------------*/ diff --git a/vstudio/include/png.h b/vstudio/include/png.h deleted file mode 100644 index 8e272a0..0000000 --- a/vstudio/include/png.h +++ /dev/null @@ -1,3247 +0,0 @@ - -/* png.h - header file for PNG reference library - * - * libpng version 1.6.36 - December 1, 2018 - * - * Copyright (c) 2018 Cosmin Truta - * Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson - * Copyright (c) 1996-1997 Andreas Dilger - * Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc. - * - * This code is released under the libpng license. (See LICENSE, below.) - * - * Authors and maintainers: - * libpng versions 0.71, May 1995, through 0.88, January 1996: Guy Schalnat - * libpng versions 0.89, June 1996, through 0.96, May 1997: Andreas Dilger - * libpng versions 0.97, January 1998, through 1.6.35, July 2018: - * Glenn Randers-Pehrson. - * libpng version 1.6.36, December 1, 2018: Cosmin Truta - * See also "Contributing Authors", below. - */ - -/* - * COPYRIGHT NOTICE, DISCLAIMER, and LICENSE - * ========================================= - * - * PNG Reference Library License version 2 - * --------------------------------------- - * - * * Copyright (c) 1995-2018 The PNG Reference Library Authors. - * * Copyright (c) 2018 Cosmin Truta. - * * Copyright (c) 2000-2002, 2004, 2006-2018 Glenn Randers-Pehrson. - * * Copyright (c) 1996-1997 Andreas Dilger. - * * Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc. - * - * The software is supplied "as is", without warranty of any kind, - * express or implied, including, without limitation, the warranties - * of merchantability, fitness for a particular purpose, title, and - * non-infringement. In no even shall the Copyright owners, or - * anyone distributing the software, be liable for any damages or - * other liability, whether in contract, tort or otherwise, arising - * from, out of, or in connection with the software, or the use or - * other dealings in the software, even if advised of the possibility - * of such damage. - * - * Permission is hereby granted to use, copy, modify, and distribute - * this software, or portions hereof, for any purpose, without fee, - * subject to the following restrictions: - * - * 1. The origin of this software must not be misrepresented; you - * must not claim that you wrote the original software. If you - * use this software in a product, an acknowledgment in the product - * documentation would be appreciated, but is not required. - * - * 2. Altered source versions must be plainly marked as such, and must - * not be misrepresented as being the original software. - * - * 3. This Copyright notice may not be removed or altered from any - * source or altered source distribution. - * - * - * PNG Reference Library License version 1 (for libpng 0.5 through 1.6.35) - * ----------------------------------------------------------------------- - * - * libpng versions 1.0.7, July 1, 2000 through 1.6.35, July 15, 2018 are - * Copyright (c) 2000-2002, 2004, 2006-2018 Glenn Randers-Pehrson, are - * derived from libpng-1.0.6, and are distributed according to the same - * disclaimer and license as libpng-1.0.6 with the following individuals - * added to the list of Contributing Authors: - * - * Simon-Pierre Cadieux - * Eric S. Raymond - * Mans Rullgard - * Cosmin Truta - * Gilles Vollant - * James Yu - * Mandar Sahastrabuddhe - * Google Inc. - * Vadim Barkov - * - * and with the following additions to the disclaimer: - * - * There is no warranty against interference with your enjoyment of - * the library or against infringement. There is no warranty that our - * efforts or the library will fulfill any of your particular purposes - * or needs. This library is provided with all faults, and the entire - * risk of satisfactory quality, performance, accuracy, and effort is - * with the user. - * - * Some files in the "contrib" directory and some configure-generated - * files that are distributed with libpng have other copyright owners, and - * are released under other open source licenses. - * - * libpng versions 0.97, January 1998, through 1.0.6, March 20, 2000, are - * Copyright (c) 1998-2000 Glenn Randers-Pehrson, are derived from - * libpng-0.96, and are distributed according to the same disclaimer and - * license as libpng-0.96, with the following individuals added to the - * list of Contributing Authors: - * - * Tom Lane - * Glenn Randers-Pehrson - * Willem van Schaik - * - * libpng versions 0.89, June 1996, through 0.96, May 1997, are - * Copyright (c) 1996-1997 Andreas Dilger, are derived from libpng-0.88, - * and are distributed according to the same disclaimer and license as - * libpng-0.88, with the following individuals added to the list of - * Contributing Authors: - * - * John Bowler - * Kevin Bracey - * Sam Bushell - * Magnus Holmgren - * Greg Roelofs - * Tom Tanner - * - * Some files in the "scripts" directory have other copyright owners, - * but are released under this license. - * - * libpng versions 0.5, May 1995, through 0.88, January 1996, are - * Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc. - * - * For the purposes of this copyright and license, "Contributing Authors" - * is defined as the following set of individuals: - * - * Andreas Dilger - * Dave Martindale - * Guy Eric Schalnat - * Paul Schmidt - * Tim Wegner - * - * The PNG Reference Library is supplied "AS IS". The Contributing - * Authors and Group 42, Inc. disclaim all warranties, expressed or - * implied, including, without limitation, the warranties of - * merchantability and of fitness for any purpose. The Contributing - * Authors and Group 42, Inc. assume no liability for direct, indirect, - * incidental, special, exemplary, or consequential damages, which may - * result from the use of the PNG Reference Library, even if advised of - * the possibility of such damage. - * - * Permission is hereby granted to use, copy, modify, and distribute this - * source code, or portions hereof, for any purpose, without fee, subject - * to the following restrictions: - * - * 1. The origin of this source code must not be misrepresented. - * - * 2. Altered versions must be plainly marked as such and must not - * be misrepresented as being the original source. - * - * 3. This Copyright notice may not be removed or altered from any - * source or altered source distribution. - * - * The Contributing Authors and Group 42, Inc. specifically permit, - * without fee, and encourage the use of this source code as a component - * to supporting the PNG file format in commercial products. If you use - * this source code in a product, acknowledgment is not required but would - * be appreciated. - * - * END OF COPYRIGHT NOTICE, DISCLAIMER, and LICENSE. - * - * TRADEMARK - * ========= - * - * The name "libpng" has not been registered by the Copyright owners - * as a trademark in any jurisdiction. However, because libpng has - * been distributed and maintained world-wide, continually since 1995, - * the Copyright owners claim "common-law trademark protection" in any - * jurisdiction where common-law trademark is recognized. - */ - -/* - * A "png_get_copyright" function is available, for convenient use in "about" - * boxes and the like: - * - * printf("%s", png_get_copyright(NULL)); - * - * Also, the PNG logo (in PNG format, of course) is supplied in the - * files "pngbar.png" and "pngbar.jpg (88x31) and "pngnow.png" (98x31). - */ - -/* - * The contributing authors would like to thank all those who helped - * with testing, bug fixes, and patience. This wouldn't have been - * possible without all of you. - * - * Thanks to Frank J. T. Wojcik for helping with the documentation. - */ - -/* Note about libpng version numbers: - * - * Due to various miscommunications, unforeseen code incompatibilities - * and occasional factors outside the authors' control, version numbering - * on the library has not always been consistent and straightforward. - * The following table summarizes matters since version 0.89c, which was - * the first widely used release: - * - * source png.h png.h shared-lib - * version string int version - * ------- ------ ----- ---------- - * 0.89c "1.0 beta 3" 0.89 89 1.0.89 - * 0.90 "1.0 beta 4" 0.90 90 0.90 [should have been 2.0.90] - * 0.95 "1.0 beta 5" 0.95 95 0.95 [should have been 2.0.95] - * 0.96 "1.0 beta 6" 0.96 96 0.96 [should have been 2.0.96] - * 0.97b "1.00.97 beta 7" 1.00.97 97 1.0.1 [should have been 2.0.97] - * 0.97c 0.97 97 2.0.97 - * 0.98 0.98 98 2.0.98 - * 0.99 0.99 98 2.0.99 - * 0.99a-m 0.99 99 2.0.99 - * 1.00 1.00 100 2.1.0 [100 should be 10000] - * 1.0.0 (from here on, the 100 2.1.0 [100 should be 10000] - * 1.0.1 png.h string is 10001 2.1.0 - * 1.0.1a-e identical to the 10002 from here on, the shared library - * 1.0.2 source version) 10002 is 2.V where V is the source code - * 1.0.2a-b 10003 version, except as noted. - * 1.0.3 10003 - * 1.0.3a-d 10004 - * 1.0.4 10004 - * 1.0.4a-f 10005 - * 1.0.5 (+ 2 patches) 10005 - * 1.0.5a-d 10006 - * 1.0.5e-r 10100 (not source compatible) - * 1.0.5s-v 10006 (not binary compatible) - * 1.0.6 (+ 3 patches) 10006 (still binary incompatible) - * 1.0.6d-f 10007 (still binary incompatible) - * 1.0.6g 10007 - * 1.0.6h 10007 10.6h (testing xy.z so-numbering) - * 1.0.6i 10007 10.6i - * 1.0.6j 10007 2.1.0.6j (incompatible with 1.0.0) - * 1.0.7beta11-14 DLLNUM 10007 2.1.0.7beta11-14 (binary compatible) - * 1.0.7beta15-18 1 10007 2.1.0.7beta15-18 (binary compatible) - * 1.0.7rc1-2 1 10007 2.1.0.7rc1-2 (binary compatible) - * 1.0.7 1 10007 (still compatible) - * ... - * 1.0.69 10 10069 10.so.0.69[.0] - * ... - * 1.2.59 13 10259 12.so.0.59[.0] - * ... - * 1.4.20 14 10420 14.so.0.20[.0] - * ... - * 1.5.30 15 10530 15.so.15.30[.0] - * ... - * 1.6.36 16 10636 16.so.16.36[.0] - * - * Henceforth the source version will match the shared-library major and - * minor numbers; the shared-library major version number will be used for - * changes in backward compatibility, as it is intended. - * The PNG_LIBPNG_VER macro, which is not used within libpng but is - * available for applications, is an unsigned integer of the form XYYZZ - * corresponding to the source version X.Y.Z (leading zeros in Y and Z). - * Beta versions were given the previous public release number plus a - * letter, until version 1.0.6j; from then on they were given the upcoming - * public release number plus "betaNN" or "rcNN". - * - * Binary incompatibility exists only when applications make direct access - * to the info_ptr or png_ptr members through png.h, and the compiled - * application is loaded with a different version of the library. - * - * DLLNUM will change each time there are forward or backward changes - * in binary compatibility (e.g., when a new feature is added). - * - * See libpng.txt or libpng.3 for more information. The PNG specification - * is available as a W3C Recommendation and as an ISO/IEC Standard; see - * - */ - -#ifndef PNG_H -#define PNG_H - -/* This is not the place to learn how to use libpng. The file libpng-manual.txt - * describes how to use libpng, and the file example.c summarizes it - * with some code on which to build. This file is useful for looking - * at the actual function definitions and structure components. If that - * file has been stripped from your copy of libpng, you can find it at - * - * - * If you just need to read a PNG file and don't want to read the documentation - * skip to the end of this file and read the section entitled 'simplified API'. - */ - -/* Version information for png.h - this should match the version in png.c */ -#define PNG_LIBPNG_VER_STRING "1.6.36" -#define PNG_HEADER_VERSION_STRING " libpng version 1.6.36 - December 1, 2018\n" - -#define PNG_LIBPNG_VER_SONUM 16 -#define PNG_LIBPNG_VER_DLLNUM 16 - -/* These should match the first 3 components of PNG_LIBPNG_VER_STRING: */ -#define PNG_LIBPNG_VER_MAJOR 1 -#define PNG_LIBPNG_VER_MINOR 6 -#define PNG_LIBPNG_VER_RELEASE 36 - -/* This should match the numeric part of the final component of - * PNG_LIBPNG_VER_STRING, omitting any leading zero: - */ - -#define PNG_LIBPNG_VER_BUILD 0 - -/* Release Status */ -#define PNG_LIBPNG_BUILD_ALPHA 1 -#define PNG_LIBPNG_BUILD_BETA 2 -#define PNG_LIBPNG_BUILD_RC 3 -#define PNG_LIBPNG_BUILD_STABLE 4 -#define PNG_LIBPNG_BUILD_RELEASE_STATUS_MASK 7 - -/* Release-Specific Flags */ -#define PNG_LIBPNG_BUILD_PATCH 8 /* Can be OR'ed with - PNG_LIBPNG_BUILD_STABLE only */ -#define PNG_LIBPNG_BUILD_PRIVATE 16 /* Cannot be OR'ed with - PNG_LIBPNG_BUILD_SPECIAL */ -#define PNG_LIBPNG_BUILD_SPECIAL 32 /* Cannot be OR'ed with - PNG_LIBPNG_BUILD_PRIVATE */ - -#define PNG_LIBPNG_BUILD_BASE_TYPE PNG_LIBPNG_BUILD_STABLE - -/* Careful here. At one time, Guy wanted to use 082, but that - * would be octal. We must not include leading zeros. - * Versions 0.7 through 1.0.0 were in the range 0 to 100 here - * (only version 1.0.0 was mis-numbered 100 instead of 10000). - * From version 1.0.1 it is: - * XXYYZZ, where XX=major, YY=minor, ZZ=release - */ -#define PNG_LIBPNG_VER 10636 /* 1.6.36 */ - -/* Library configuration: these options cannot be changed after - * the library has been built. - */ -#ifndef PNGLCONF_H -/* If pnglibconf.h is missing, you can - * copy scripts/pnglibconf.h.prebuilt to pnglibconf.h - */ -# include "pnglibconf.h" -#endif - -#ifndef PNG_VERSION_INFO_ONLY -/* Machine specific configuration. */ -# include "pngconf.h" -#endif - -/* - * Added at libpng-1.2.8 - * - * Ref MSDN: Private as priority over Special - * VS_FF_PRIVATEBUILD File *was not* built using standard release - * procedures. If this value is given, the StringFileInfo block must - * contain a PrivateBuild string. - * - * VS_FF_SPECIALBUILD File *was* built by the original company using - * standard release procedures but is a variation of the standard - * file of the same version number. If this value is given, the - * StringFileInfo block must contain a SpecialBuild string. - */ - -#ifdef PNG_USER_PRIVATEBUILD /* From pnglibconf.h */ -# define PNG_LIBPNG_BUILD_TYPE \ - (PNG_LIBPNG_BUILD_BASE_TYPE | PNG_LIBPNG_BUILD_PRIVATE) -#else -# ifdef PNG_LIBPNG_SPECIALBUILD -# define PNG_LIBPNG_BUILD_TYPE \ - (PNG_LIBPNG_BUILD_BASE_TYPE | PNG_LIBPNG_BUILD_SPECIAL) -# else -# define PNG_LIBPNG_BUILD_TYPE (PNG_LIBPNG_BUILD_BASE_TYPE) -# endif -#endif - -#ifndef PNG_VERSION_INFO_ONLY - -/* Inhibit C++ name-mangling for libpng functions but not for system calls. */ -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -/* Version information for C files, stored in png.c. This had better match - * the version above. - */ -#define png_libpng_ver png_get_header_ver(NULL) - -/* This file is arranged in several sections: - * - * 1. [omitted] - * 2. Any configuration options that can be specified by for the application - * code when it is built. (Build time configuration is in pnglibconf.h) - * 3. Type definitions (base types are defined in pngconf.h), structure - * definitions. - * 4. Exported library functions. - * 5. Simplified API. - * 6. Implementation options. - * - * The library source code has additional files (principally pngpriv.h) that - * allow configuration of the library. - */ - -/* Section 1: [omitted] */ - -/* Section 2: run time configuration - * See pnglibconf.h for build time configuration - * - * Run time configuration allows the application to choose between - * implementations of certain arithmetic APIs. The default is set - * at build time and recorded in pnglibconf.h, but it is safe to - * override these (and only these) settings. Note that this won't - * change what the library does, only application code, and the - * settings can (and probably should) be made on a per-file basis - * by setting the #defines before including png.h - * - * Use macros to read integers from PNG data or use the exported - * functions? - * PNG_USE_READ_MACROS: use the macros (see below) Note that - * the macros evaluate their argument multiple times. - * PNG_NO_USE_READ_MACROS: call the relevant library function. - * - * Use the alternative algorithm for compositing alpha samples that - * does not use division? - * PNG_READ_COMPOSITE_NODIV_SUPPORTED: use the 'no division' - * algorithm. - * PNG_NO_READ_COMPOSITE_NODIV: use the 'division' algorithm. - * - * How to handle benign errors if PNG_ALLOW_BENIGN_ERRORS is - * false? - * PNG_ALLOW_BENIGN_ERRORS: map calls to the benign error - * APIs to png_warning. - * Otherwise the calls are mapped to png_error. - */ - -/* Section 3: type definitions, including structures and compile time - * constants. - * See pngconf.h for base types that vary by machine/system - */ - -/* This triggers a compiler error in png.c, if png.c and png.h - * do not agree upon the version number. - */ -typedef char* png_libpng_version_1_6_36; - -/* Basic control structions. Read libpng-manual.txt or libpng.3 for more info. - * - * png_struct is the cache of information used while reading or writing a single - * PNG file. One of these is always required, although the simplified API - * (below) hides the creation and destruction of it. - */ -typedef struct png_struct_def png_struct; -typedef const png_struct * png_const_structp; -typedef png_struct * png_structp; -typedef png_struct * * png_structpp; - -/* png_info contains information read from or to be written to a PNG file. One - * or more of these must exist while reading or creating a PNG file. The - * information is not used by libpng during read but is used to control what - * gets written when a PNG file is created. "png_get_" function calls read - * information during read and "png_set_" functions calls write information - * when creating a PNG. - * been moved into a separate header file that is not accessible to - * applications. Read libpng-manual.txt or libpng.3 for more info. - */ -typedef struct png_info_def png_info; -typedef png_info * png_infop; -typedef const png_info * png_const_infop; -typedef png_info * * png_infopp; - -/* Types with names ending 'p' are pointer types. The corresponding types with - * names ending 'rp' are identical pointer types except that the pointer is - * marked 'restrict', which means that it is the only pointer to the object - * passed to the function. Applications should not use the 'restrict' types; - * it is always valid to pass 'p' to a pointer with a function argument of the - * corresponding 'rp' type. Different compilers have different rules with - * regard to type matching in the presence of 'restrict'. For backward - * compatibility libpng callbacks never have 'restrict' in their parameters and, - * consequentially, writing portable application code is extremely difficult if - * an attempt is made to use 'restrict'. - */ -typedef png_struct * PNG_RESTRICT png_structrp; -typedef const png_struct * PNG_RESTRICT png_const_structrp; -typedef png_info * PNG_RESTRICT png_inforp; -typedef const png_info * PNG_RESTRICT png_const_inforp; - -/* Three color definitions. The order of the red, green, and blue, (and the - * exact size) is not important, although the size of the fields need to - * be png_byte or png_uint_16 (as defined below). - */ -typedef struct png_color_struct -{ - png_byte red; - png_byte green; - png_byte blue; -} png_color; -typedef png_color * png_colorp; -typedef const png_color * png_const_colorp; -typedef png_color * * png_colorpp; - -typedef struct png_color_16_struct -{ - png_byte index; /* used for palette files */ - png_uint_16 red; /* for use in red green blue files */ - png_uint_16 green; - png_uint_16 blue; - png_uint_16 gray; /* for use in grayscale files */ -} png_color_16; -typedef png_color_16 * png_color_16p; -typedef const png_color_16 * png_const_color_16p; -typedef png_color_16 * * png_color_16pp; - -typedef struct png_color_8_struct -{ - png_byte red; /* for use in red green blue files */ - png_byte green; - png_byte blue; - png_byte gray; /* for use in grayscale files */ - png_byte alpha; /* for alpha channel files */ -} png_color_8; -typedef png_color_8 * png_color_8p; -typedef const png_color_8 * png_const_color_8p; -typedef png_color_8 * * png_color_8pp; - -/* - * The following two structures are used for the in-core representation - * of sPLT chunks. - */ -typedef struct png_sPLT_entry_struct -{ - png_uint_16 red; - png_uint_16 green; - png_uint_16 blue; - png_uint_16 alpha; - png_uint_16 frequency; -} png_sPLT_entry; -typedef png_sPLT_entry * png_sPLT_entryp; -typedef const png_sPLT_entry * png_const_sPLT_entryp; -typedef png_sPLT_entry * * png_sPLT_entrypp; - -/* When the depth of the sPLT palette is 8 bits, the color and alpha samples - * occupy the LSB of their respective members, and the MSB of each member - * is zero-filled. The frequency member always occupies the full 16 bits. - */ - -typedef struct png_sPLT_struct -{ - png_charp name; /* palette name */ - png_byte depth; /* depth of palette samples */ - png_sPLT_entryp entries; /* palette entries */ - png_int_32 nentries; /* number of palette entries */ -} png_sPLT_t; -typedef png_sPLT_t * png_sPLT_tp; -typedef const png_sPLT_t * png_const_sPLT_tp; -typedef png_sPLT_t * * png_sPLT_tpp; - -#ifdef PNG_TEXT_SUPPORTED -/* png_text holds the contents of a text/ztxt/itxt chunk in a PNG file, - * and whether that contents is compressed or not. The "key" field - * points to a regular zero-terminated C string. The "text" fields can be a - * regular C string, an empty string, or a NULL pointer. - * However, the structure returned by png_get_text() will always contain - * the "text" field as a regular zero-terminated C string (possibly - * empty), never a NULL pointer, so it can be safely used in printf() and - * other string-handling functions. Note that the "itxt_length", "lang", and - * "lang_key" members of the structure only exist when the library is built - * with iTXt chunk support. Prior to libpng-1.4.0 the library was built by - * default without iTXt support. Also note that when iTXt *is* supported, - * the "lang" and "lang_key" fields contain NULL pointers when the - * "compression" field contains * PNG_TEXT_COMPRESSION_NONE or - * PNG_TEXT_COMPRESSION_zTXt. Note that the "compression value" is not the - * same as what appears in the PNG tEXt/zTXt/iTXt chunk's "compression flag" - * which is always 0 or 1, or its "compression method" which is always 0. - */ -typedef struct png_text_struct -{ - int compression; /* compression value: - -1: tEXt, none - 0: zTXt, deflate - 1: iTXt, none - 2: iTXt, deflate */ - png_charp key; /* keyword, 1-79 character description of "text" */ - png_charp text; /* comment, may be an empty string (ie "") - or a NULL pointer */ - size_t text_length; /* length of the text string */ - size_t itxt_length; /* length of the itxt string */ - png_charp lang; /* language code, 0-79 characters - or a NULL pointer */ - png_charp lang_key; /* keyword translated UTF-8 string, 0 or more - chars or a NULL pointer */ -} png_text; -typedef png_text * png_textp; -typedef const png_text * png_const_textp; -typedef png_text * * png_textpp; -#endif - -/* Supported compression types for text in PNG files (tEXt, and zTXt). - * The values of the PNG_TEXT_COMPRESSION_ defines should NOT be changed. */ -#define PNG_TEXT_COMPRESSION_NONE_WR -3 -#define PNG_TEXT_COMPRESSION_zTXt_WR -2 -#define PNG_TEXT_COMPRESSION_NONE -1 -#define PNG_TEXT_COMPRESSION_zTXt 0 -#define PNG_ITXT_COMPRESSION_NONE 1 -#define PNG_ITXT_COMPRESSION_zTXt 2 -#define PNG_TEXT_COMPRESSION_LAST 3 /* Not a valid value */ - -/* png_time is a way to hold the time in an machine independent way. - * Two conversions are provided, both from time_t and struct tm. There - * is no portable way to convert to either of these structures, as far - * as I know. If you know of a portable way, send it to me. As a side - * note - PNG has always been Year 2000 compliant! - */ -typedef struct png_time_struct -{ - png_uint_16 year; /* full year, as in, 1995 */ - png_byte month; /* month of year, 1 - 12 */ - png_byte day; /* day of month, 1 - 31 */ - png_byte hour; /* hour of day, 0 - 23 */ - png_byte minute; /* minute of hour, 0 - 59 */ - png_byte second; /* second of minute, 0 - 60 (for leap seconds) */ -} png_time; -typedef png_time * png_timep; -typedef const png_time * png_const_timep; -typedef png_time * * png_timepp; - -#if defined(PNG_STORE_UNKNOWN_CHUNKS_SUPPORTED) ||\ - defined(PNG_USER_CHUNKS_SUPPORTED) -/* png_unknown_chunk is a structure to hold queued chunks for which there is - * no specific support. The idea is that we can use this to queue - * up private chunks for output even though the library doesn't actually - * know about their semantics. - * - * The data in the structure is set by libpng on read and used on write. - */ -typedef struct png_unknown_chunk_t -{ - png_byte name[5]; /* Textual chunk name with '\0' terminator */ - png_byte *data; /* Data, should not be modified on read! */ - size_t size; - - /* On write 'location' must be set using the flag values listed below. - * Notice that on read it is set by libpng however the values stored have - * more bits set than are listed below. Always treat the value as a - * bitmask. On write set only one bit - setting multiple bits may cause the - * chunk to be written in multiple places. - */ - png_byte location; /* mode of operation at read time */ -} -png_unknown_chunk; - -typedef png_unknown_chunk * png_unknown_chunkp; -typedef const png_unknown_chunk * png_const_unknown_chunkp; -typedef png_unknown_chunk * * png_unknown_chunkpp; -#endif - -/* Flag values for the unknown chunk location byte. */ -#define PNG_HAVE_IHDR 0x01 -#define PNG_HAVE_PLTE 0x02 -#define PNG_AFTER_IDAT 0x08 - -/* Maximum positive integer used in PNG is (2^31)-1 */ -#define PNG_UINT_31_MAX ((png_uint_32)0x7fffffffL) -#define PNG_UINT_32_MAX ((png_uint_32)(-1)) -#define PNG_SIZE_MAX ((size_t)(-1)) - -/* These are constants for fixed point values encoded in the - * PNG specification manner (x100000) - */ -#define PNG_FP_1 100000 -#define PNG_FP_HALF 50000 -#define PNG_FP_MAX ((png_fixed_point)0x7fffffffL) -#define PNG_FP_MIN (-PNG_FP_MAX) - -/* These describe the color_type field in png_info. */ -/* color type masks */ -#define PNG_COLOR_MASK_PALETTE 1 -#define PNG_COLOR_MASK_COLOR 2 -#define PNG_COLOR_MASK_ALPHA 4 - -/* color types. Note that not all combinations are legal */ -#define PNG_COLOR_TYPE_GRAY 0 -#define PNG_COLOR_TYPE_PALETTE (PNG_COLOR_MASK_COLOR | PNG_COLOR_MASK_PALETTE) -#define PNG_COLOR_TYPE_RGB (PNG_COLOR_MASK_COLOR) -#define PNG_COLOR_TYPE_RGB_ALPHA (PNG_COLOR_MASK_COLOR | PNG_COLOR_MASK_ALPHA) -#define PNG_COLOR_TYPE_GRAY_ALPHA (PNG_COLOR_MASK_ALPHA) -/* aliases */ -#define PNG_COLOR_TYPE_RGBA PNG_COLOR_TYPE_RGB_ALPHA -#define PNG_COLOR_TYPE_GA PNG_COLOR_TYPE_GRAY_ALPHA - -/* This is for compression type. PNG 1.0-1.2 only define the single type. */ -#define PNG_COMPRESSION_TYPE_BASE 0 /* Deflate method 8, 32K window */ -#define PNG_COMPRESSION_TYPE_DEFAULT PNG_COMPRESSION_TYPE_BASE - -/* This is for filter type. PNG 1.0-1.2 only define the single type. */ -#define PNG_FILTER_TYPE_BASE 0 /* Single row per-byte filtering */ -#define PNG_INTRAPIXEL_DIFFERENCING 64 /* Used only in MNG datastreams */ -#define PNG_FILTER_TYPE_DEFAULT PNG_FILTER_TYPE_BASE - -/* These are for the interlacing type. These values should NOT be changed. */ -#define PNG_INTERLACE_NONE 0 /* Non-interlaced image */ -#define PNG_INTERLACE_ADAM7 1 /* Adam7 interlacing */ -#define PNG_INTERLACE_LAST 2 /* Not a valid value */ - -/* These are for the oFFs chunk. These values should NOT be changed. */ -#define PNG_OFFSET_PIXEL 0 /* Offset in pixels */ -#define PNG_OFFSET_MICROMETER 1 /* Offset in micrometers (1/10^6 meter) */ -#define PNG_OFFSET_LAST 2 /* Not a valid value */ - -/* These are for the pCAL chunk. These values should NOT be changed. */ -#define PNG_EQUATION_LINEAR 0 /* Linear transformation */ -#define PNG_EQUATION_BASE_E 1 /* Exponential base e transform */ -#define PNG_EQUATION_ARBITRARY 2 /* Arbitrary base exponential transform */ -#define PNG_EQUATION_HYPERBOLIC 3 /* Hyperbolic sine transformation */ -#define PNG_EQUATION_LAST 4 /* Not a valid value */ - -/* These are for the sCAL chunk. These values should NOT be changed. */ -#define PNG_SCALE_UNKNOWN 0 /* unknown unit (image scale) */ -#define PNG_SCALE_METER 1 /* meters per pixel */ -#define PNG_SCALE_RADIAN 2 /* radians per pixel */ -#define PNG_SCALE_LAST 3 /* Not a valid value */ - -/* These are for the pHYs chunk. These values should NOT be changed. */ -#define PNG_RESOLUTION_UNKNOWN 0 /* pixels/unknown unit (aspect ratio) */ -#define PNG_RESOLUTION_METER 1 /* pixels/meter */ -#define PNG_RESOLUTION_LAST 2 /* Not a valid value */ - -/* These are for the sRGB chunk. These values should NOT be changed. */ -#define PNG_sRGB_INTENT_PERCEPTUAL 0 -#define PNG_sRGB_INTENT_RELATIVE 1 -#define PNG_sRGB_INTENT_SATURATION 2 -#define PNG_sRGB_INTENT_ABSOLUTE 3 -#define PNG_sRGB_INTENT_LAST 4 /* Not a valid value */ - -/* This is for text chunks */ -#define PNG_KEYWORD_MAX_LENGTH 79 - -/* Maximum number of entries in PLTE/sPLT/tRNS arrays */ -#define PNG_MAX_PALETTE_LENGTH 256 - -/* These determine if an ancillary chunk's data has been successfully read - * from the PNG header, or if the application has filled in the corresponding - * data in the info_struct to be written into the output file. The values - * of the PNG_INFO_ defines should NOT be changed. - */ -#define PNG_INFO_gAMA 0x0001U -#define PNG_INFO_sBIT 0x0002U -#define PNG_INFO_cHRM 0x0004U -#define PNG_INFO_PLTE 0x0008U -#define PNG_INFO_tRNS 0x0010U -#define PNG_INFO_bKGD 0x0020U -#define PNG_INFO_hIST 0x0040U -#define PNG_INFO_pHYs 0x0080U -#define PNG_INFO_oFFs 0x0100U -#define PNG_INFO_tIME 0x0200U -#define PNG_INFO_pCAL 0x0400U -#define PNG_INFO_sRGB 0x0800U /* GR-P, 0.96a */ -#define PNG_INFO_iCCP 0x1000U /* ESR, 1.0.6 */ -#define PNG_INFO_sPLT 0x2000U /* ESR, 1.0.6 */ -#define PNG_INFO_sCAL 0x4000U /* ESR, 1.0.6 */ -#define PNG_INFO_IDAT 0x8000U /* ESR, 1.0.6 */ -#define PNG_INFO_eXIf 0x10000U /* GR-P, 1.6.31 */ - -/* This is used for the transformation routines, as some of them - * change these values for the row. It also should enable using - * the routines for other purposes. - */ -typedef struct png_row_info_struct -{ - png_uint_32 width; /* width of row */ - size_t rowbytes; /* number of bytes in row */ - png_byte color_type; /* color type of row */ - png_byte bit_depth; /* bit depth of row */ - png_byte channels; /* number of channels (1, 2, 3, or 4) */ - png_byte pixel_depth; /* bits per pixel (depth * channels) */ -} png_row_info; - -typedef png_row_info * png_row_infop; -typedef png_row_info * * png_row_infopp; - -/* These are the function types for the I/O functions and for the functions - * that allow the user to override the default I/O functions with his or her - * own. The png_error_ptr type should match that of user-supplied warning - * and error functions, while the png_rw_ptr type should match that of the - * user read/write data functions. Note that the 'write' function must not - * modify the buffer it is passed. The 'read' function, on the other hand, is - * expected to return the read data in the buffer. - */ -typedef PNG_CALLBACK(void, *png_error_ptr, (png_structp, png_const_charp)); -typedef PNG_CALLBACK(void, *png_rw_ptr, (png_structp, png_bytep, size_t)); -typedef PNG_CALLBACK(void, *png_flush_ptr, (png_structp)); -typedef PNG_CALLBACK(void, *png_read_status_ptr, (png_structp, png_uint_32, - int)); -typedef PNG_CALLBACK(void, *png_write_status_ptr, (png_structp, png_uint_32, - int)); - -#ifdef PNG_PROGRESSIVE_READ_SUPPORTED -typedef PNG_CALLBACK(void, *png_progressive_info_ptr, (png_structp, png_infop)); -typedef PNG_CALLBACK(void, *png_progressive_end_ptr, (png_structp, png_infop)); - -/* The following callback receives png_uint_32 row_number, int pass for the - * png_bytep data of the row. When transforming an interlaced image the - * row number is the row number within the sub-image of the interlace pass, so - * the value will increase to the height of the sub-image (not the full image) - * then reset to 0 for the next pass. - * - * Use PNG_ROW_FROM_PASS_ROW(row, pass) and PNG_COL_FROM_PASS_COL(col, pass) to - * find the output pixel (x,y) given an interlaced sub-image pixel - * (row,col,pass). (See below for these macros.) - */ -typedef PNG_CALLBACK(void, *png_progressive_row_ptr, (png_structp, png_bytep, - png_uint_32, int)); -#endif - -#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) || \ - defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED) -typedef PNG_CALLBACK(void, *png_user_transform_ptr, (png_structp, png_row_infop, - png_bytep)); -#endif - -#ifdef PNG_USER_CHUNKS_SUPPORTED -typedef PNG_CALLBACK(int, *png_user_chunk_ptr, (png_structp, - png_unknown_chunkp)); -#endif -#ifdef PNG_UNKNOWN_CHUNKS_SUPPORTED -/* not used anywhere */ -/* typedef PNG_CALLBACK(void, *png_unknown_chunk_ptr, (png_structp)); */ -#endif - -#ifdef PNG_SETJMP_SUPPORTED -/* This must match the function definition in , and the application - * must include this before png.h to obtain the definition of jmp_buf. The - * function is required to be PNG_NORETURN, but this is not checked. If the - * function does return the application will crash via an abort() or similar - * system level call. - * - * If you get a warning here while building the library you may need to make - * changes to ensure that pnglibconf.h records the calling convention used by - * your compiler. This may be very difficult - try using a different compiler - * to build the library! - */ -PNG_FUNCTION(void, (PNGCAPI *png_longjmp_ptr), PNGARG((jmp_buf, int)), typedef); -#endif - -/* Transform masks for the high-level interface */ -#define PNG_TRANSFORM_IDENTITY 0x0000 /* read and write */ -#define PNG_TRANSFORM_STRIP_16 0x0001 /* read only */ -#define PNG_TRANSFORM_STRIP_ALPHA 0x0002 /* read only */ -#define PNG_TRANSFORM_PACKING 0x0004 /* read and write */ -#define PNG_TRANSFORM_PACKSWAP 0x0008 /* read and write */ -#define PNG_TRANSFORM_EXPAND 0x0010 /* read only */ -#define PNG_TRANSFORM_INVERT_MONO 0x0020 /* read and write */ -#define PNG_TRANSFORM_SHIFT 0x0040 /* read and write */ -#define PNG_TRANSFORM_BGR 0x0080 /* read and write */ -#define PNG_TRANSFORM_SWAP_ALPHA 0x0100 /* read and write */ -#define PNG_TRANSFORM_SWAP_ENDIAN 0x0200 /* read and write */ -#define PNG_TRANSFORM_INVERT_ALPHA 0x0400 /* read and write */ -#define PNG_TRANSFORM_STRIP_FILLER 0x0800 /* write only */ -/* Added to libpng-1.2.34 */ -#define PNG_TRANSFORM_STRIP_FILLER_BEFORE PNG_TRANSFORM_STRIP_FILLER -#define PNG_TRANSFORM_STRIP_FILLER_AFTER 0x1000 /* write only */ -/* Added to libpng-1.4.0 */ -#define PNG_TRANSFORM_GRAY_TO_RGB 0x2000 /* read only */ -/* Added to libpng-1.5.4 */ -#define PNG_TRANSFORM_EXPAND_16 0x4000 /* read only */ -#if INT_MAX >= 0x8000 /* else this might break */ -#define PNG_TRANSFORM_SCALE_16 0x8000 /* read only */ -#endif - -/* Flags for MNG supported features */ -#define PNG_FLAG_MNG_EMPTY_PLTE 0x01 -#define PNG_FLAG_MNG_FILTER_64 0x04 -#define PNG_ALL_MNG_FEATURES 0x05 - -/* NOTE: prior to 1.5 these functions had no 'API' style declaration, - * this allowed the zlib default functions to be used on Windows - * platforms. In 1.5 the zlib default malloc (which just calls malloc and - * ignores the first argument) should be completely compatible with the - * following. - */ -typedef PNG_CALLBACK(png_voidp, *png_malloc_ptr, (png_structp, - png_alloc_size_t)); -typedef PNG_CALLBACK(void, *png_free_ptr, (png_structp, png_voidp)); - -/* Section 4: exported functions - * Here are the function definitions most commonly used. This is not - * the place to find out how to use libpng. See libpng-manual.txt for the - * full explanation, see example.c for the summary. This just provides - * a simple one line description of the use of each function. - * - * The PNG_EXPORT() and PNG_EXPORTA() macros used below are defined in - * pngconf.h and in the *.dfn files in the scripts directory. - * - * PNG_EXPORT(ordinal, type, name, (args)); - * - * ordinal: ordinal that is used while building - * *.def files. The ordinal value is only - * relevant when preprocessing png.h with - * the *.dfn files for building symbol table - * entries, and are removed by pngconf.h. - * type: return type of the function - * name: function name - * args: function arguments, with types - * - * When we wish to append attributes to a function prototype we use - * the PNG_EXPORTA() macro instead. - * - * PNG_EXPORTA(ordinal, type, name, (args), attributes); - * - * ordinal, type, name, and args: same as in PNG_EXPORT(). - * attributes: function attributes - */ - -/* Returns the version number of the library */ -PNG_EXPORT(1, png_uint_32, png_access_version_number, (void)); - -/* Tell lib we have already handled the first magic bytes. - * Handling more than 8 bytes from the beginning of the file is an error. - */ -PNG_EXPORT(2, void, png_set_sig_bytes, (png_structrp png_ptr, int num_bytes)); - -/* Check sig[start] through sig[start + num_to_check - 1] to see if it's a - * PNG file. Returns zero if the supplied bytes match the 8-byte PNG - * signature, and non-zero otherwise. Having num_to_check == 0 or - * start > 7 will always fail (ie return non-zero). - */ -PNG_EXPORT(3, int, png_sig_cmp, (png_const_bytep sig, size_t start, - size_t num_to_check)); - -/* Simple signature checking function. This is the same as calling - * png_check_sig(sig, n) := !png_sig_cmp(sig, 0, n). - */ -#define png_check_sig(sig, n) !png_sig_cmp((sig), 0, (n)) - -/* Allocate and initialize png_ptr struct for reading, and any other memory. */ -PNG_EXPORTA(4, png_structp, png_create_read_struct, - (png_const_charp user_png_ver, png_voidp error_ptr, - png_error_ptr error_fn, png_error_ptr warn_fn), - PNG_ALLOCATED); - -/* Allocate and initialize png_ptr struct for writing, and any other memory */ -PNG_EXPORTA(5, png_structp, png_create_write_struct, - (png_const_charp user_png_ver, png_voidp error_ptr, png_error_ptr error_fn, - png_error_ptr warn_fn), - PNG_ALLOCATED); - -PNG_EXPORT(6, size_t, png_get_compression_buffer_size, - (png_const_structrp png_ptr)); - -PNG_EXPORT(7, void, png_set_compression_buffer_size, (png_structrp png_ptr, - size_t size)); - -/* Moved from pngconf.h in 1.4.0 and modified to ensure setjmp/longjmp - * match up. - */ -#ifdef PNG_SETJMP_SUPPORTED -/* This function returns the jmp_buf built in to *png_ptr. It must be - * supplied with an appropriate 'longjmp' function to use on that jmp_buf - * unless the default error function is overridden in which case NULL is - * acceptable. The size of the jmp_buf is checked against the actual size - * allocated by the library - the call will return NULL on a mismatch - * indicating an ABI mismatch. - */ -PNG_EXPORT(8, jmp_buf*, png_set_longjmp_fn, (png_structrp png_ptr, - png_longjmp_ptr longjmp_fn, size_t jmp_buf_size)); -# define png_jmpbuf(png_ptr) \ - (*png_set_longjmp_fn((png_ptr), longjmp, (sizeof (jmp_buf)))) -#else -# define png_jmpbuf(png_ptr) \ - (LIBPNG_WAS_COMPILED_WITH__PNG_NO_SETJMP) -#endif -/* This function should be used by libpng applications in place of - * longjmp(png_ptr->jmpbuf, val). If longjmp_fn() has been set, it - * will use it; otherwise it will call PNG_ABORT(). This function was - * added in libpng-1.5.0. - */ -PNG_EXPORTA(9, void, png_longjmp, (png_const_structrp png_ptr, int val), - PNG_NORETURN); - -#ifdef PNG_READ_SUPPORTED -/* Reset the compression stream */ -PNG_EXPORTA(10, int, png_reset_zstream, (png_structrp png_ptr), PNG_DEPRECATED); -#endif - -/* New functions added in libpng-1.0.2 (not enabled by default until 1.2.0) */ -#ifdef PNG_USER_MEM_SUPPORTED -PNG_EXPORTA(11, png_structp, png_create_read_struct_2, - (png_const_charp user_png_ver, png_voidp error_ptr, png_error_ptr error_fn, - png_error_ptr warn_fn, - png_voidp mem_ptr, png_malloc_ptr malloc_fn, png_free_ptr free_fn), - PNG_ALLOCATED); -PNG_EXPORTA(12, png_structp, png_create_write_struct_2, - (png_const_charp user_png_ver, png_voidp error_ptr, png_error_ptr error_fn, - png_error_ptr warn_fn, - png_voidp mem_ptr, png_malloc_ptr malloc_fn, png_free_ptr free_fn), - PNG_ALLOCATED); -#endif - -/* Write the PNG file signature. */ -PNG_EXPORT(13, void, png_write_sig, (png_structrp png_ptr)); - -/* Write a PNG chunk - size, type, (optional) data, CRC. */ -PNG_EXPORT(14, void, png_write_chunk, (png_structrp png_ptr, png_const_bytep - chunk_name, png_const_bytep data, size_t length)); - -/* Write the start of a PNG chunk - length and chunk name. */ -PNG_EXPORT(15, void, png_write_chunk_start, (png_structrp png_ptr, - png_const_bytep chunk_name, png_uint_32 length)); - -/* Write the data of a PNG chunk started with png_write_chunk_start(). */ -PNG_EXPORT(16, void, png_write_chunk_data, (png_structrp png_ptr, - png_const_bytep data, size_t length)); - -/* Finish a chunk started with png_write_chunk_start() (includes CRC). */ -PNG_EXPORT(17, void, png_write_chunk_end, (png_structrp png_ptr)); - -/* Allocate and initialize the info structure */ -PNG_EXPORTA(18, png_infop, png_create_info_struct, (png_const_structrp png_ptr), - PNG_ALLOCATED); - -/* DEPRECATED: this function allowed init structures to be created using the - * default allocation method (typically malloc). Use is deprecated in 1.6.0 and - * the API will be removed in the future. - */ -PNG_EXPORTA(19, void, png_info_init_3, (png_infopp info_ptr, - size_t png_info_struct_size), PNG_DEPRECATED); - -/* Writes all the PNG information before the image. */ -PNG_EXPORT(20, void, png_write_info_before_PLTE, - (png_structrp png_ptr, png_const_inforp info_ptr)); -PNG_EXPORT(21, void, png_write_info, - (png_structrp png_ptr, png_const_inforp info_ptr)); - -#ifdef PNG_SEQUENTIAL_READ_SUPPORTED -/* Read the information before the actual image data. */ -PNG_EXPORT(22, void, png_read_info, - (png_structrp png_ptr, png_inforp info_ptr)); -#endif - -#ifdef PNG_TIME_RFC1123_SUPPORTED - /* Convert to a US string format: there is no localization support in this - * routine. The original implementation used a 29 character buffer in - * png_struct, this will be removed in future versions. - */ -#if PNG_LIBPNG_VER < 10700 -/* To do: remove this from libpng17 (and from libpng17/png.c and pngstruct.h) */ -PNG_EXPORTA(23, png_const_charp, png_convert_to_rfc1123, (png_structrp png_ptr, - png_const_timep ptime),PNG_DEPRECATED); -#endif -PNG_EXPORT(241, int, png_convert_to_rfc1123_buffer, (char out[29], - png_const_timep ptime)); -#endif - -#ifdef PNG_CONVERT_tIME_SUPPORTED -/* Convert from a struct tm to png_time */ -PNG_EXPORT(24, void, png_convert_from_struct_tm, (png_timep ptime, - const struct tm * ttime)); - -/* Convert from time_t to png_time. Uses gmtime() */ -PNG_EXPORT(25, void, png_convert_from_time_t, (png_timep ptime, time_t ttime)); -#endif /* CONVERT_tIME */ - -#ifdef PNG_READ_EXPAND_SUPPORTED -/* Expand data to 24-bit RGB, or 8-bit grayscale, with alpha if available. */ -PNG_EXPORT(26, void, png_set_expand, (png_structrp png_ptr)); -PNG_EXPORT(27, void, png_set_expand_gray_1_2_4_to_8, (png_structrp png_ptr)); -PNG_EXPORT(28, void, png_set_palette_to_rgb, (png_structrp png_ptr)); -PNG_EXPORT(29, void, png_set_tRNS_to_alpha, (png_structrp png_ptr)); -#endif - -#ifdef PNG_READ_EXPAND_16_SUPPORTED -/* Expand to 16-bit channels, forces conversion of palette to RGB and expansion - * of a tRNS chunk if present. - */ -PNG_EXPORT(221, void, png_set_expand_16, (png_structrp png_ptr)); -#endif - -#if defined(PNG_READ_BGR_SUPPORTED) || defined(PNG_WRITE_BGR_SUPPORTED) -/* Use blue, green, red order for pixels. */ -PNG_EXPORT(30, void, png_set_bgr, (png_structrp png_ptr)); -#endif - -#ifdef PNG_READ_GRAY_TO_RGB_SUPPORTED -/* Expand the grayscale to 24-bit RGB if necessary. */ -PNG_EXPORT(31, void, png_set_gray_to_rgb, (png_structrp png_ptr)); -#endif - -#ifdef PNG_READ_RGB_TO_GRAY_SUPPORTED -/* Reduce RGB to grayscale. */ -#define PNG_ERROR_ACTION_NONE 1 -#define PNG_ERROR_ACTION_WARN 2 -#define PNG_ERROR_ACTION_ERROR 3 -#define PNG_RGB_TO_GRAY_DEFAULT (-1)/*for red/green coefficients*/ - -PNG_FP_EXPORT(32, void, png_set_rgb_to_gray, (png_structrp png_ptr, - int error_action, double red, double green)) -PNG_FIXED_EXPORT(33, void, png_set_rgb_to_gray_fixed, (png_structrp png_ptr, - int error_action, png_fixed_point red, png_fixed_point green)) - -PNG_EXPORT(34, png_byte, png_get_rgb_to_gray_status, (png_const_structrp - png_ptr)); -#endif - -#ifdef PNG_BUILD_GRAYSCALE_PALETTE_SUPPORTED -PNG_EXPORT(35, void, png_build_grayscale_palette, (int bit_depth, - png_colorp palette)); -#endif - -#ifdef PNG_READ_ALPHA_MODE_SUPPORTED -/* How the alpha channel is interpreted - this affects how the color channels - * of a PNG file are returned to the calling application when an alpha channel, - * or a tRNS chunk in a palette file, is present. - * - * This has no effect on the way pixels are written into a PNG output - * datastream. The color samples in a PNG datastream are never premultiplied - * with the alpha samples. - * - * The default is to return data according to the PNG specification: the alpha - * channel is a linear measure of the contribution of the pixel to the - * corresponding composited pixel, and the color channels are unassociated - * (not premultiplied). The gamma encoded color channels must be scaled - * according to the contribution and to do this it is necessary to undo - * the encoding, scale the color values, perform the composition and re-encode - * the values. This is the 'PNG' mode. - * - * The alternative is to 'associate' the alpha with the color information by - * storing color channel values that have been scaled by the alpha. - * image. These are the 'STANDARD', 'ASSOCIATED' or 'PREMULTIPLIED' modes - * (the latter being the two common names for associated alpha color channels). - * - * For the 'OPTIMIZED' mode, a pixel is treated as opaque only if the alpha - * value is equal to the maximum value. - * - * The final choice is to gamma encode the alpha channel as well. This is - * broken because, in practice, no implementation that uses this choice - * correctly undoes the encoding before handling alpha composition. Use this - * choice only if other serious errors in the software or hardware you use - * mandate it; the typical serious error is for dark halos to appear around - * opaque areas of the composited PNG image because of arithmetic overflow. - * - * The API function png_set_alpha_mode specifies which of these choices to use - * with an enumerated 'mode' value and the gamma of the required output: - */ -#define PNG_ALPHA_PNG 0 /* according to the PNG standard */ -#define PNG_ALPHA_STANDARD 1 /* according to Porter/Duff */ -#define PNG_ALPHA_ASSOCIATED 1 /* as above; this is the normal practice */ -#define PNG_ALPHA_PREMULTIPLIED 1 /* as above */ -#define PNG_ALPHA_OPTIMIZED 2 /* 'PNG' for opaque pixels, else 'STANDARD' */ -#define PNG_ALPHA_BROKEN 3 /* the alpha channel is gamma encoded */ - -PNG_FP_EXPORT(227, void, png_set_alpha_mode, (png_structrp png_ptr, int mode, - double output_gamma)) -PNG_FIXED_EXPORT(228, void, png_set_alpha_mode_fixed, (png_structrp png_ptr, - int mode, png_fixed_point output_gamma)) -#endif - -#if defined(PNG_GAMMA_SUPPORTED) || defined(PNG_READ_ALPHA_MODE_SUPPORTED) -/* The output_gamma value is a screen gamma in libpng terminology: it expresses - * how to decode the output values, not how they are encoded. - */ -#define PNG_DEFAULT_sRGB -1 /* sRGB gamma and color space */ -#define PNG_GAMMA_MAC_18 -2 /* Old Mac '1.8' gamma and color space */ -#define PNG_GAMMA_sRGB 220000 /* Television standards--matches sRGB gamma */ -#define PNG_GAMMA_LINEAR PNG_FP_1 /* Linear */ -#endif - -/* The following are examples of calls to png_set_alpha_mode to achieve the - * required overall gamma correction and, where necessary, alpha - * premultiplication. - * - * png_set_alpha_mode(pp, PNG_ALPHA_PNG, PNG_DEFAULT_sRGB); - * This is the default libpng handling of the alpha channel - it is not - * pre-multiplied into the color components. In addition the call states - * that the output is for a sRGB system and causes all PNG files without gAMA - * chunks to be assumed to be encoded using sRGB. - * - * png_set_alpha_mode(pp, PNG_ALPHA_PNG, PNG_GAMMA_MAC); - * In this case the output is assumed to be something like an sRGB conformant - * display preceded by a power-law lookup table of power 1.45. This is how - * early Mac systems behaved. - * - * png_set_alpha_mode(pp, PNG_ALPHA_STANDARD, PNG_GAMMA_LINEAR); - * This is the classic Jim Blinn approach and will work in academic - * environments where everything is done by the book. It has the shortcoming - * of assuming that input PNG data with no gamma information is linear - this - * is unlikely to be correct unless the PNG files where generated locally. - * Most of the time the output precision will be so low as to show - * significant banding in dark areas of the image. - * - * png_set_expand_16(pp); - * png_set_alpha_mode(pp, PNG_ALPHA_STANDARD, PNG_DEFAULT_sRGB); - * This is a somewhat more realistic Jim Blinn inspired approach. PNG files - * are assumed to have the sRGB encoding if not marked with a gamma value and - * the output is always 16 bits per component. This permits accurate scaling - * and processing of the data. If you know that your input PNG files were - * generated locally you might need to replace PNG_DEFAULT_sRGB with the - * correct value for your system. - * - * png_set_alpha_mode(pp, PNG_ALPHA_OPTIMIZED, PNG_DEFAULT_sRGB); - * If you just need to composite the PNG image onto an existing background - * and if you control the code that does this you can use the optimization - * setting. In this case you just copy completely opaque pixels to the - * output. For pixels that are not completely transparent (you just skip - * those) you do the composition math using png_composite or png_composite_16 - * below then encode the resultant 8-bit or 16-bit values to match the output - * encoding. - * - * Other cases - * If neither the PNG nor the standard linear encoding work for you because - * of the software or hardware you use then you have a big problem. The PNG - * case will probably result in halos around the image. The linear encoding - * will probably result in a washed out, too bright, image (it's actually too - * contrasty.) Try the ALPHA_OPTIMIZED mode above - this will probably - * substantially reduce the halos. Alternatively try: - * - * png_set_alpha_mode(pp, PNG_ALPHA_BROKEN, PNG_DEFAULT_sRGB); - * This option will also reduce the halos, but there will be slight dark - * halos round the opaque parts of the image where the background is light. - * In the OPTIMIZED mode the halos will be light halos where the background - * is dark. Take your pick - the halos are unavoidable unless you can get - * your hardware/software fixed! (The OPTIMIZED approach is slightly - * faster.) - * - * When the default gamma of PNG files doesn't match the output gamma. - * If you have PNG files with no gamma information png_set_alpha_mode allows - * you to provide a default gamma, but it also sets the output gamma to the - * matching value. If you know your PNG files have a gamma that doesn't - * match the output you can take advantage of the fact that - * png_set_alpha_mode always sets the output gamma but only sets the PNG - * default if it is not already set: - * - * png_set_alpha_mode(pp, PNG_ALPHA_PNG, PNG_DEFAULT_sRGB); - * png_set_alpha_mode(pp, PNG_ALPHA_PNG, PNG_GAMMA_MAC); - * The first call sets both the default and the output gamma values, the - * second call overrides the output gamma without changing the default. This - * is easier than achieving the same effect with png_set_gamma. You must use - * PNG_ALPHA_PNG for the first call - internal checking in png_set_alpha will - * fire if more than one call to png_set_alpha_mode and png_set_background is - * made in the same read operation, however multiple calls with PNG_ALPHA_PNG - * are ignored. - */ - -#ifdef PNG_READ_STRIP_ALPHA_SUPPORTED -PNG_EXPORT(36, void, png_set_strip_alpha, (png_structrp png_ptr)); -#endif - -#if defined(PNG_READ_SWAP_ALPHA_SUPPORTED) || \ - defined(PNG_WRITE_SWAP_ALPHA_SUPPORTED) -PNG_EXPORT(37, void, png_set_swap_alpha, (png_structrp png_ptr)); -#endif - -#if defined(PNG_READ_INVERT_ALPHA_SUPPORTED) || \ - defined(PNG_WRITE_INVERT_ALPHA_SUPPORTED) -PNG_EXPORT(38, void, png_set_invert_alpha, (png_structrp png_ptr)); -#endif - -#if defined(PNG_READ_FILLER_SUPPORTED) || defined(PNG_WRITE_FILLER_SUPPORTED) -/* Add a filler byte to 8-bit or 16-bit Gray or 24-bit or 48-bit RGB images. */ -PNG_EXPORT(39, void, png_set_filler, (png_structrp png_ptr, png_uint_32 filler, - int flags)); -/* The values of the PNG_FILLER_ defines should NOT be changed */ -# define PNG_FILLER_BEFORE 0 -# define PNG_FILLER_AFTER 1 -/* Add an alpha byte to 8-bit or 16-bit Gray or 24-bit or 48-bit RGB images. */ -PNG_EXPORT(40, void, png_set_add_alpha, (png_structrp png_ptr, - png_uint_32 filler, int flags)); -#endif /* READ_FILLER || WRITE_FILLER */ - -#if defined(PNG_READ_SWAP_SUPPORTED) || defined(PNG_WRITE_SWAP_SUPPORTED) -/* Swap bytes in 16-bit depth files. */ -PNG_EXPORT(41, void, png_set_swap, (png_structrp png_ptr)); -#endif - -#if defined(PNG_READ_PACK_SUPPORTED) || defined(PNG_WRITE_PACK_SUPPORTED) -/* Use 1 byte per pixel in 1, 2, or 4-bit depth files. */ -PNG_EXPORT(42, void, png_set_packing, (png_structrp png_ptr)); -#endif - -#if defined(PNG_READ_PACKSWAP_SUPPORTED) || \ - defined(PNG_WRITE_PACKSWAP_SUPPORTED) -/* Swap packing order of pixels in bytes. */ -PNG_EXPORT(43, void, png_set_packswap, (png_structrp png_ptr)); -#endif - -#if defined(PNG_READ_SHIFT_SUPPORTED) || defined(PNG_WRITE_SHIFT_SUPPORTED) -/* Converts files to legal bit depths. */ -PNG_EXPORT(44, void, png_set_shift, (png_structrp png_ptr, png_const_color_8p - true_bits)); -#endif - -#if defined(PNG_READ_INTERLACING_SUPPORTED) || \ - defined(PNG_WRITE_INTERLACING_SUPPORTED) -/* Have the code handle the interlacing. Returns the number of passes. - * MUST be called before png_read_update_info or png_start_read_image, - * otherwise it will not have the desired effect. Note that it is still - * necessary to call png_read_row or png_read_rows png_get_image_height - * times for each pass. -*/ -PNG_EXPORT(45, int, png_set_interlace_handling, (png_structrp png_ptr)); -#endif - -#if defined(PNG_READ_INVERT_SUPPORTED) || defined(PNG_WRITE_INVERT_SUPPORTED) -/* Invert monochrome files */ -PNG_EXPORT(46, void, png_set_invert_mono, (png_structrp png_ptr)); -#endif - -#ifdef PNG_READ_BACKGROUND_SUPPORTED -/* Handle alpha and tRNS by replacing with a background color. Prior to - * libpng-1.5.4 this API must not be called before the PNG file header has been - * read. Doing so will result in unexpected behavior and possible warnings or - * errors if the PNG file contains a bKGD chunk. - */ -PNG_FP_EXPORT(47, void, png_set_background, (png_structrp png_ptr, - png_const_color_16p background_color, int background_gamma_code, - int need_expand, double background_gamma)) -PNG_FIXED_EXPORT(215, void, png_set_background_fixed, (png_structrp png_ptr, - png_const_color_16p background_color, int background_gamma_code, - int need_expand, png_fixed_point background_gamma)) -#endif -#ifdef PNG_READ_BACKGROUND_SUPPORTED -# define PNG_BACKGROUND_GAMMA_UNKNOWN 0 -# define PNG_BACKGROUND_GAMMA_SCREEN 1 -# define PNG_BACKGROUND_GAMMA_FILE 2 -# define PNG_BACKGROUND_GAMMA_UNIQUE 3 -#endif - -#ifdef PNG_READ_SCALE_16_TO_8_SUPPORTED -/* Scale a 16-bit depth file down to 8-bit, accurately. */ -PNG_EXPORT(229, void, png_set_scale_16, (png_structrp png_ptr)); -#endif - -#ifdef PNG_READ_STRIP_16_TO_8_SUPPORTED -#define PNG_READ_16_TO_8_SUPPORTED /* Name prior to 1.5.4 */ -/* Strip the second byte of information from a 16-bit depth file. */ -PNG_EXPORT(48, void, png_set_strip_16, (png_structrp png_ptr)); -#endif - -#ifdef PNG_READ_QUANTIZE_SUPPORTED -/* Turn on quantizing, and reduce the palette to the number of colors - * available. - */ -PNG_EXPORT(49, void, png_set_quantize, (png_structrp png_ptr, - png_colorp palette, int num_palette, int maximum_colors, - png_const_uint_16p histogram, int full_quantize)); -#endif - -#ifdef PNG_READ_GAMMA_SUPPORTED -/* The threshold on gamma processing is configurable but hard-wired into the - * library. The following is the floating point variant. - */ -#define PNG_GAMMA_THRESHOLD (PNG_GAMMA_THRESHOLD_FIXED*.00001) - -/* Handle gamma correction. Screen_gamma=(display_exponent). - * NOTE: this API simply sets the screen and file gamma values. It will - * therefore override the value for gamma in a PNG file if it is called after - * the file header has been read - use with care - call before reading the PNG - * file for best results! - * - * These routines accept the same gamma values as png_set_alpha_mode (described - * above). The PNG_GAMMA_ defines and PNG_DEFAULT_sRGB can be passed to either - * API (floating point or fixed.) Notice, however, that the 'file_gamma' value - * is the inverse of a 'screen gamma' value. - */ -PNG_FP_EXPORT(50, void, png_set_gamma, (png_structrp png_ptr, - double screen_gamma, double override_file_gamma)) -PNG_FIXED_EXPORT(208, void, png_set_gamma_fixed, (png_structrp png_ptr, - png_fixed_point screen_gamma, png_fixed_point override_file_gamma)) -#endif - -#ifdef PNG_WRITE_FLUSH_SUPPORTED -/* Set how many lines between output flushes - 0 for no flushing */ -PNG_EXPORT(51, void, png_set_flush, (png_structrp png_ptr, int nrows)); -/* Flush the current PNG output buffer */ -PNG_EXPORT(52, void, png_write_flush, (png_structrp png_ptr)); -#endif - -/* Optional update palette with requested transformations */ -PNG_EXPORT(53, void, png_start_read_image, (png_structrp png_ptr)); - -/* Optional call to update the users info structure */ -PNG_EXPORT(54, void, png_read_update_info, (png_structrp png_ptr, - png_inforp info_ptr)); - -#ifdef PNG_SEQUENTIAL_READ_SUPPORTED -/* Read one or more rows of image data. */ -PNG_EXPORT(55, void, png_read_rows, (png_structrp png_ptr, png_bytepp row, - png_bytepp display_row, png_uint_32 num_rows)); -#endif - -#ifdef PNG_SEQUENTIAL_READ_SUPPORTED -/* Read a row of data. */ -PNG_EXPORT(56, void, png_read_row, (png_structrp png_ptr, png_bytep row, - png_bytep display_row)); -#endif - -#ifdef PNG_SEQUENTIAL_READ_SUPPORTED -/* Read the whole image into memory at once. */ -PNG_EXPORT(57, void, png_read_image, (png_structrp png_ptr, png_bytepp image)); -#endif - -/* Write a row of image data */ -PNG_EXPORT(58, void, png_write_row, (png_structrp png_ptr, - png_const_bytep row)); - -/* Write a few rows of image data: (*row) is not written; however, the type - * is declared as writeable to maintain compatibility with previous versions - * of libpng and to allow the 'display_row' array from read_rows to be passed - * unchanged to write_rows. - */ -PNG_EXPORT(59, void, png_write_rows, (png_structrp png_ptr, png_bytepp row, - png_uint_32 num_rows)); - -/* Write the image data */ -PNG_EXPORT(60, void, png_write_image, (png_structrp png_ptr, png_bytepp image)); - -/* Write the end of the PNG file. */ -PNG_EXPORT(61, void, png_write_end, (png_structrp png_ptr, - png_inforp info_ptr)); - -#ifdef PNG_SEQUENTIAL_READ_SUPPORTED -/* Read the end of the PNG file. */ -PNG_EXPORT(62, void, png_read_end, (png_structrp png_ptr, png_inforp info_ptr)); -#endif - -/* Free any memory associated with the png_info_struct */ -PNG_EXPORT(63, void, png_destroy_info_struct, (png_const_structrp png_ptr, - png_infopp info_ptr_ptr)); - -/* Free any memory associated with the png_struct and the png_info_structs */ -PNG_EXPORT(64, void, png_destroy_read_struct, (png_structpp png_ptr_ptr, - png_infopp info_ptr_ptr, png_infopp end_info_ptr_ptr)); - -/* Free any memory associated with the png_struct and the png_info_structs */ -PNG_EXPORT(65, void, png_destroy_write_struct, (png_structpp png_ptr_ptr, - png_infopp info_ptr_ptr)); - -/* Set the libpng method of handling chunk CRC errors */ -PNG_EXPORT(66, void, png_set_crc_action, (png_structrp png_ptr, int crit_action, - int ancil_action)); - -/* Values for png_set_crc_action() say how to handle CRC errors in - * ancillary and critical chunks, and whether to use the data contained - * therein. Note that it is impossible to "discard" data in a critical - * chunk. For versions prior to 0.90, the action was always error/quit, - * whereas in version 0.90 and later, the action for CRC errors in ancillary - * chunks is warn/discard. These values should NOT be changed. - * - * value action:critical action:ancillary - */ -#define PNG_CRC_DEFAULT 0 /* error/quit warn/discard data */ -#define PNG_CRC_ERROR_QUIT 1 /* error/quit error/quit */ -#define PNG_CRC_WARN_DISCARD 2 /* (INVALID) warn/discard data */ -#define PNG_CRC_WARN_USE 3 /* warn/use data warn/use data */ -#define PNG_CRC_QUIET_USE 4 /* quiet/use data quiet/use data */ -#define PNG_CRC_NO_CHANGE 5 /* use current value use current value */ - -#ifdef PNG_WRITE_SUPPORTED -/* These functions give the user control over the scan-line filtering in - * libpng and the compression methods used by zlib. These functions are - * mainly useful for testing, as the defaults should work with most users. - * Those users who are tight on memory or want faster performance at the - * expense of compression can modify them. See the compression library - * header file (zlib.h) for an explination of the compression functions. - */ - -/* Set the filtering method(s) used by libpng. Currently, the only valid - * value for "method" is 0. - */ -PNG_EXPORT(67, void, png_set_filter, (png_structrp png_ptr, int method, - int filters)); -#endif /* WRITE */ - -/* Flags for png_set_filter() to say which filters to use. The flags - * are chosen so that they don't conflict with real filter types - * below, in case they are supplied instead of the #defined constants. - * These values should NOT be changed. - */ -#define PNG_NO_FILTERS 0x00 -#define PNG_FILTER_NONE 0x08 -#define PNG_FILTER_SUB 0x10 -#define PNG_FILTER_UP 0x20 -#define PNG_FILTER_AVG 0x40 -#define PNG_FILTER_PAETH 0x80 -#define PNG_FAST_FILTERS (PNG_FILTER_NONE | PNG_FILTER_SUB | PNG_FILTER_UP) -#define PNG_ALL_FILTERS (PNG_FAST_FILTERS | PNG_FILTER_AVG | PNG_FILTER_PAETH) - -/* Filter values (not flags) - used in pngwrite.c, pngwutil.c for now. - * These defines should NOT be changed. - */ -#define PNG_FILTER_VALUE_NONE 0 -#define PNG_FILTER_VALUE_SUB 1 -#define PNG_FILTER_VALUE_UP 2 -#define PNG_FILTER_VALUE_AVG 3 -#define PNG_FILTER_VALUE_PAETH 4 -#define PNG_FILTER_VALUE_LAST 5 - -#ifdef PNG_WRITE_SUPPORTED -#ifdef PNG_WRITE_WEIGHTED_FILTER_SUPPORTED /* DEPRECATED */ -PNG_FP_EXPORT(68, void, png_set_filter_heuristics, (png_structrp png_ptr, - int heuristic_method, int num_weights, png_const_doublep filter_weights, - png_const_doublep filter_costs)) -PNG_FIXED_EXPORT(209, void, png_set_filter_heuristics_fixed, - (png_structrp png_ptr, int heuristic_method, int num_weights, - png_const_fixed_point_p filter_weights, - png_const_fixed_point_p filter_costs)) -#endif /* WRITE_WEIGHTED_FILTER */ - -/* The following are no longer used and will be removed from libpng-1.7: */ -#define PNG_FILTER_HEURISTIC_DEFAULT 0 /* Currently "UNWEIGHTED" */ -#define PNG_FILTER_HEURISTIC_UNWEIGHTED 1 /* Used by libpng < 0.95 */ -#define PNG_FILTER_HEURISTIC_WEIGHTED 2 /* Experimental feature */ -#define PNG_FILTER_HEURISTIC_LAST 3 /* Not a valid value */ - -/* Set the library compression level. Currently, valid values range from - * 0 - 9, corresponding directly to the zlib compression levels 0 - 9 - * (0 - no compression, 9 - "maximal" compression). Note that tests have - * shown that zlib compression levels 3-6 usually perform as well as level 9 - * for PNG images, and do considerably fewer caclulations. In the future, - * these values may not correspond directly to the zlib compression levels. - */ -#ifdef PNG_WRITE_CUSTOMIZE_COMPRESSION_SUPPORTED -PNG_EXPORT(69, void, png_set_compression_level, (png_structrp png_ptr, - int level)); - -PNG_EXPORT(70, void, png_set_compression_mem_level, (png_structrp png_ptr, - int mem_level)); - -PNG_EXPORT(71, void, png_set_compression_strategy, (png_structrp png_ptr, - int strategy)); - -/* If PNG_WRITE_OPTIMIZE_CMF_SUPPORTED is defined, libpng will use a - * smaller value of window_bits if it can do so safely. - */ -PNG_EXPORT(72, void, png_set_compression_window_bits, (png_structrp png_ptr, - int window_bits)); - -PNG_EXPORT(73, void, png_set_compression_method, (png_structrp png_ptr, - int method)); -#endif /* WRITE_CUSTOMIZE_COMPRESSION */ - -#ifdef PNG_WRITE_CUSTOMIZE_ZTXT_COMPRESSION_SUPPORTED -/* Also set zlib parameters for compressing non-IDAT chunks */ -PNG_EXPORT(222, void, png_set_text_compression_level, (png_structrp png_ptr, - int level)); - -PNG_EXPORT(223, void, png_set_text_compression_mem_level, (png_structrp png_ptr, - int mem_level)); - -PNG_EXPORT(224, void, png_set_text_compression_strategy, (png_structrp png_ptr, - int strategy)); - -/* If PNG_WRITE_OPTIMIZE_CMF_SUPPORTED is defined, libpng will use a - * smaller value of window_bits if it can do so safely. - */ -PNG_EXPORT(225, void, png_set_text_compression_window_bits, - (png_structrp png_ptr, int window_bits)); - -PNG_EXPORT(226, void, png_set_text_compression_method, (png_structrp png_ptr, - int method)); -#endif /* WRITE_CUSTOMIZE_ZTXT_COMPRESSION */ -#endif /* WRITE */ - -/* These next functions are called for input/output, memory, and error - * handling. They are in the file pngrio.c, pngwio.c, and pngerror.c, - * and call standard C I/O routines such as fread(), fwrite(), and - * fprintf(). These functions can be made to use other I/O routines - * at run time for those applications that need to handle I/O in a - * different manner by calling png_set_???_fn(). See libpng-manual.txt for - * more information. - */ - -#ifdef PNG_STDIO_SUPPORTED -/* Initialize the input/output for the PNG file to the default functions. */ -PNG_EXPORT(74, void, png_init_io, (png_structrp png_ptr, png_FILE_p fp)); -#endif - -/* Replace the (error and abort), and warning functions with user - * supplied functions. If no messages are to be printed you must still - * write and use replacement functions. The replacement error_fn should - * still do a longjmp to the last setjmp location if you are using this - * method of error handling. If error_fn or warning_fn is NULL, the - * default function will be used. - */ - -PNG_EXPORT(75, void, png_set_error_fn, (png_structrp png_ptr, - png_voidp error_ptr, png_error_ptr error_fn, png_error_ptr warning_fn)); - -/* Return the user pointer associated with the error functions */ -PNG_EXPORT(76, png_voidp, png_get_error_ptr, (png_const_structrp png_ptr)); - -/* Replace the default data output functions with a user supplied one(s). - * If buffered output is not used, then output_flush_fn can be set to NULL. - * If PNG_WRITE_FLUSH_SUPPORTED is not defined at libpng compile time - * output_flush_fn will be ignored (and thus can be NULL). - * It is probably a mistake to use NULL for output_flush_fn if - * write_data_fn is not also NULL unless you have built libpng with - * PNG_WRITE_FLUSH_SUPPORTED undefined, because in this case libpng's - * default flush function, which uses the standard *FILE structure, will - * be used. - */ -PNG_EXPORT(77, void, png_set_write_fn, (png_structrp png_ptr, png_voidp io_ptr, - png_rw_ptr write_data_fn, png_flush_ptr output_flush_fn)); - -/* Replace the default data input function with a user supplied one. */ -PNG_EXPORT(78, void, png_set_read_fn, (png_structrp png_ptr, png_voidp io_ptr, - png_rw_ptr read_data_fn)); - -/* Return the user pointer associated with the I/O functions */ -PNG_EXPORT(79, png_voidp, png_get_io_ptr, (png_const_structrp png_ptr)); - -PNG_EXPORT(80, void, png_set_read_status_fn, (png_structrp png_ptr, - png_read_status_ptr read_row_fn)); - -PNG_EXPORT(81, void, png_set_write_status_fn, (png_structrp png_ptr, - png_write_status_ptr write_row_fn)); - -#ifdef PNG_USER_MEM_SUPPORTED -/* Replace the default memory allocation functions with user supplied one(s). */ -PNG_EXPORT(82, void, png_set_mem_fn, (png_structrp png_ptr, png_voidp mem_ptr, - png_malloc_ptr malloc_fn, png_free_ptr free_fn)); -/* Return the user pointer associated with the memory functions */ -PNG_EXPORT(83, png_voidp, png_get_mem_ptr, (png_const_structrp png_ptr)); -#endif - -#ifdef PNG_READ_USER_TRANSFORM_SUPPORTED -PNG_EXPORT(84, void, png_set_read_user_transform_fn, (png_structrp png_ptr, - png_user_transform_ptr read_user_transform_fn)); -#endif - -#ifdef PNG_WRITE_USER_TRANSFORM_SUPPORTED -PNG_EXPORT(85, void, png_set_write_user_transform_fn, (png_structrp png_ptr, - png_user_transform_ptr write_user_transform_fn)); -#endif - -#ifdef PNG_USER_TRANSFORM_PTR_SUPPORTED -PNG_EXPORT(86, void, png_set_user_transform_info, (png_structrp png_ptr, - png_voidp user_transform_ptr, int user_transform_depth, - int user_transform_channels)); -/* Return the user pointer associated with the user transform functions */ -PNG_EXPORT(87, png_voidp, png_get_user_transform_ptr, - (png_const_structrp png_ptr)); -#endif - -#ifdef PNG_USER_TRANSFORM_INFO_SUPPORTED -/* Return information about the row currently being processed. Note that these - * APIs do not fail but will return unexpected results if called outside a user - * transform callback. Also note that when transforming an interlaced image the - * row number is the row number within the sub-image of the interlace pass, so - * the value will increase to the height of the sub-image (not the full image) - * then reset to 0 for the next pass. - * - * Use PNG_ROW_FROM_PASS_ROW(row, pass) and PNG_COL_FROM_PASS_COL(col, pass) to - * find the output pixel (x,y) given an interlaced sub-image pixel - * (row,col,pass). (See below for these macros.) - */ -PNG_EXPORT(217, png_uint_32, png_get_current_row_number, (png_const_structrp)); -PNG_EXPORT(218, png_byte, png_get_current_pass_number, (png_const_structrp)); -#endif - -#ifdef PNG_READ_USER_CHUNKS_SUPPORTED -/* This callback is called only for *unknown* chunks. If - * PNG_HANDLE_AS_UNKNOWN_SUPPORTED is set then it is possible to set known - * chunks to be treated as unknown, however in this case the callback must do - * any processing required by the chunk (e.g. by calling the appropriate - * png_set_ APIs.) - * - * There is no write support - on write, by default, all the chunks in the - * 'unknown' list are written in the specified position. - * - * The integer return from the callback function is interpreted thus: - * - * negative: An error occurred; png_chunk_error will be called. - * zero: The chunk was not handled, the chunk will be saved. A critical - * chunk will cause an error at this point unless it is to be saved. - * positive: The chunk was handled, libpng will ignore/discard it. - * - * See "INTERACTION WITH USER CHUNK CALLBACKS" below for important notes about - * how this behavior will change in libpng 1.7 - */ -PNG_EXPORT(88, void, png_set_read_user_chunk_fn, (png_structrp png_ptr, - png_voidp user_chunk_ptr, png_user_chunk_ptr read_user_chunk_fn)); -#endif - -#ifdef PNG_USER_CHUNKS_SUPPORTED -PNG_EXPORT(89, png_voidp, png_get_user_chunk_ptr, (png_const_structrp png_ptr)); -#endif - -#ifdef PNG_PROGRESSIVE_READ_SUPPORTED -/* Sets the function callbacks for the push reader, and a pointer to a - * user-defined structure available to the callback functions. - */ -PNG_EXPORT(90, void, png_set_progressive_read_fn, (png_structrp png_ptr, - png_voidp progressive_ptr, png_progressive_info_ptr info_fn, - png_progressive_row_ptr row_fn, png_progressive_end_ptr end_fn)); - -/* Returns the user pointer associated with the push read functions */ -PNG_EXPORT(91, png_voidp, png_get_progressive_ptr, - (png_const_structrp png_ptr)); - -/* Function to be called when data becomes available */ -PNG_EXPORT(92, void, png_process_data, (png_structrp png_ptr, - png_inforp info_ptr, png_bytep buffer, size_t buffer_size)); - -/* A function which may be called *only* within png_process_data to stop the - * processing of any more data. The function returns the number of bytes - * remaining, excluding any that libpng has cached internally. A subsequent - * call to png_process_data must supply these bytes again. If the argument - * 'save' is set to true the routine will first save all the pending data and - * will always return 0. - */ -PNG_EXPORT(219, size_t, png_process_data_pause, (png_structrp, int save)); - -/* A function which may be called *only* outside (after) a call to - * png_process_data. It returns the number of bytes of data to skip in the - * input. Normally it will return 0, but if it returns a non-zero value the - * application must skip than number of bytes of input data and pass the - * following data to the next call to png_process_data. - */ -PNG_EXPORT(220, png_uint_32, png_process_data_skip, (png_structrp)); - -/* Function that combines rows. 'new_row' is a flag that should come from - * the callback and be non-NULL if anything needs to be done; the library - * stores its own version of the new data internally and ignores the passed - * in value. - */ -PNG_EXPORT(93, void, png_progressive_combine_row, (png_const_structrp png_ptr, - png_bytep old_row, png_const_bytep new_row)); -#endif /* PROGRESSIVE_READ */ - -PNG_EXPORTA(94, png_voidp, png_malloc, (png_const_structrp png_ptr, - png_alloc_size_t size), PNG_ALLOCATED); -/* Added at libpng version 1.4.0 */ -PNG_EXPORTA(95, png_voidp, png_calloc, (png_const_structrp png_ptr, - png_alloc_size_t size), PNG_ALLOCATED); - -/* Added at libpng version 1.2.4 */ -PNG_EXPORTA(96, png_voidp, png_malloc_warn, (png_const_structrp png_ptr, - png_alloc_size_t size), PNG_ALLOCATED); - -/* Frees a pointer allocated by png_malloc() */ -PNG_EXPORT(97, void, png_free, (png_const_structrp png_ptr, png_voidp ptr)); - -/* Free data that was allocated internally */ -PNG_EXPORT(98, void, png_free_data, (png_const_structrp png_ptr, - png_inforp info_ptr, png_uint_32 free_me, int num)); - -/* Reassign responsibility for freeing existing data, whether allocated - * by libpng or by the application; this works on the png_info structure passed - * in, it does not change the state for other png_info structures. - * - * It is unlikely that this function works correctly as of 1.6.0 and using it - * may result either in memory leaks or double free of allocated data. - */ -PNG_EXPORT(99, void, png_data_freer, (png_const_structrp png_ptr, - png_inforp info_ptr, int freer, png_uint_32 mask)); - -/* Assignments for png_data_freer */ -#define PNG_DESTROY_WILL_FREE_DATA 1 -#define PNG_SET_WILL_FREE_DATA 1 -#define PNG_USER_WILL_FREE_DATA 2 -/* Flags for png_ptr->free_me and info_ptr->free_me */ -#define PNG_FREE_HIST 0x0008U -#define PNG_FREE_ICCP 0x0010U -#define PNG_FREE_SPLT 0x0020U -#define PNG_FREE_ROWS 0x0040U -#define PNG_FREE_PCAL 0x0080U -#define PNG_FREE_SCAL 0x0100U -#ifdef PNG_STORE_UNKNOWN_CHUNKS_SUPPORTED -# define PNG_FREE_UNKN 0x0200U -#endif -/* PNG_FREE_LIST 0x0400U removed in 1.6.0 because it is ignored */ -#define PNG_FREE_PLTE 0x1000U -#define PNG_FREE_TRNS 0x2000U -#define PNG_FREE_TEXT 0x4000U -#define PNG_FREE_EXIF 0x8000U /* Added at libpng-1.6.31 */ -#define PNG_FREE_ALL 0xffffU -#define PNG_FREE_MUL 0x4220U /* PNG_FREE_SPLT|PNG_FREE_TEXT|PNG_FREE_UNKN */ - -#ifdef PNG_USER_MEM_SUPPORTED -PNG_EXPORTA(100, png_voidp, png_malloc_default, (png_const_structrp png_ptr, - png_alloc_size_t size), PNG_ALLOCATED PNG_DEPRECATED); -PNG_EXPORTA(101, void, png_free_default, (png_const_structrp png_ptr, - png_voidp ptr), PNG_DEPRECATED); -#endif - -#ifdef PNG_ERROR_TEXT_SUPPORTED -/* Fatal error in PNG image of libpng - can't continue */ -PNG_EXPORTA(102, void, png_error, (png_const_structrp png_ptr, - png_const_charp error_message), PNG_NORETURN); - -/* The same, but the chunk name is prepended to the error string. */ -PNG_EXPORTA(103, void, png_chunk_error, (png_const_structrp png_ptr, - png_const_charp error_message), PNG_NORETURN); - -#else -/* Fatal error in PNG image of libpng - can't continue */ -PNG_EXPORTA(104, void, png_err, (png_const_structrp png_ptr), PNG_NORETURN); -# define png_error(s1,s2) png_err(s1) -# define png_chunk_error(s1,s2) png_err(s1) -#endif - -#ifdef PNG_WARNINGS_SUPPORTED -/* Non-fatal error in libpng. Can continue, but may have a problem. */ -PNG_EXPORT(105, void, png_warning, (png_const_structrp png_ptr, - png_const_charp warning_message)); - -/* Non-fatal error in libpng, chunk name is prepended to message. */ -PNG_EXPORT(106, void, png_chunk_warning, (png_const_structrp png_ptr, - png_const_charp warning_message)); -#else -# define png_warning(s1,s2) ((void)(s1)) -# define png_chunk_warning(s1,s2) ((void)(s1)) -#endif - -#ifdef PNG_BENIGN_ERRORS_SUPPORTED -/* Benign error in libpng. Can continue, but may have a problem. - * User can choose whether to handle as a fatal error or as a warning. */ -PNG_EXPORT(107, void, png_benign_error, (png_const_structrp png_ptr, - png_const_charp warning_message)); - -#ifdef PNG_READ_SUPPORTED -/* Same, chunk name is prepended to message (only during read) */ -PNG_EXPORT(108, void, png_chunk_benign_error, (png_const_structrp png_ptr, - png_const_charp warning_message)); -#endif - -PNG_EXPORT(109, void, png_set_benign_errors, - (png_structrp png_ptr, int allowed)); -#else -# ifdef PNG_ALLOW_BENIGN_ERRORS -# define png_benign_error png_warning -# define png_chunk_benign_error png_chunk_warning -# else -# define png_benign_error png_error -# define png_chunk_benign_error png_chunk_error -# endif -#endif - -/* The png_set_ functions are for storing values in the png_info_struct. - * Similarly, the png_get_ calls are used to read values from the - * png_info_struct, either storing the parameters in the passed variables, or - * setting pointers into the png_info_struct where the data is stored. The - * png_get_ functions return a non-zero value if the data was available - * in info_ptr, or return zero and do not change any of the parameters if the - * data was not available. - * - * These functions should be used instead of directly accessing png_info - * to avoid problems with future changes in the size and internal layout of - * png_info_struct. - */ -/* Returns "flag" if chunk data is valid in info_ptr. */ -PNG_EXPORT(110, png_uint_32, png_get_valid, (png_const_structrp png_ptr, - png_const_inforp info_ptr, png_uint_32 flag)); - -/* Returns number of bytes needed to hold a transformed row. */ -PNG_EXPORT(111, size_t, png_get_rowbytes, (png_const_structrp png_ptr, - png_const_inforp info_ptr)); - -#ifdef PNG_INFO_IMAGE_SUPPORTED -/* Returns row_pointers, which is an array of pointers to scanlines that was - * returned from png_read_png(). - */ -PNG_EXPORT(112, png_bytepp, png_get_rows, (png_const_structrp png_ptr, - png_const_inforp info_ptr)); - -/* Set row_pointers, which is an array of pointers to scanlines for use - * by png_write_png(). - */ -PNG_EXPORT(113, void, png_set_rows, (png_const_structrp png_ptr, - png_inforp info_ptr, png_bytepp row_pointers)); -#endif - -/* Returns number of color channels in image. */ -PNG_EXPORT(114, png_byte, png_get_channels, (png_const_structrp png_ptr, - png_const_inforp info_ptr)); - -#ifdef PNG_EASY_ACCESS_SUPPORTED -/* Returns image width in pixels. */ -PNG_EXPORT(115, png_uint_32, png_get_image_width, (png_const_structrp png_ptr, - png_const_inforp info_ptr)); - -/* Returns image height in pixels. */ -PNG_EXPORT(116, png_uint_32, png_get_image_height, (png_const_structrp png_ptr, - png_const_inforp info_ptr)); - -/* Returns image bit_depth. */ -PNG_EXPORT(117, png_byte, png_get_bit_depth, (png_const_structrp png_ptr, - png_const_inforp info_ptr)); - -/* Returns image color_type. */ -PNG_EXPORT(118, png_byte, png_get_color_type, (png_const_structrp png_ptr, - png_const_inforp info_ptr)); - -/* Returns image filter_type. */ -PNG_EXPORT(119, png_byte, png_get_filter_type, (png_const_structrp png_ptr, - png_const_inforp info_ptr)); - -/* Returns image interlace_type. */ -PNG_EXPORT(120, png_byte, png_get_interlace_type, (png_const_structrp png_ptr, - png_const_inforp info_ptr)); - -/* Returns image compression_type. */ -PNG_EXPORT(121, png_byte, png_get_compression_type, (png_const_structrp png_ptr, - png_const_inforp info_ptr)); - -/* Returns image resolution in pixels per meter, from pHYs chunk data. */ -PNG_EXPORT(122, png_uint_32, png_get_pixels_per_meter, - (png_const_structrp png_ptr, png_const_inforp info_ptr)); -PNG_EXPORT(123, png_uint_32, png_get_x_pixels_per_meter, - (png_const_structrp png_ptr, png_const_inforp info_ptr)); -PNG_EXPORT(124, png_uint_32, png_get_y_pixels_per_meter, - (png_const_structrp png_ptr, png_const_inforp info_ptr)); - -/* Returns pixel aspect ratio, computed from pHYs chunk data. */ -PNG_FP_EXPORT(125, float, png_get_pixel_aspect_ratio, - (png_const_structrp png_ptr, png_const_inforp info_ptr)) -PNG_FIXED_EXPORT(210, png_fixed_point, png_get_pixel_aspect_ratio_fixed, - (png_const_structrp png_ptr, png_const_inforp info_ptr)) - -/* Returns image x, y offset in pixels or microns, from oFFs chunk data. */ -PNG_EXPORT(126, png_int_32, png_get_x_offset_pixels, - (png_const_structrp png_ptr, png_const_inforp info_ptr)); -PNG_EXPORT(127, png_int_32, png_get_y_offset_pixels, - (png_const_structrp png_ptr, png_const_inforp info_ptr)); -PNG_EXPORT(128, png_int_32, png_get_x_offset_microns, - (png_const_structrp png_ptr, png_const_inforp info_ptr)); -PNG_EXPORT(129, png_int_32, png_get_y_offset_microns, - (png_const_structrp png_ptr, png_const_inforp info_ptr)); - -#endif /* EASY_ACCESS */ - -#ifdef PNG_READ_SUPPORTED -/* Returns pointer to signature string read from PNG header */ -PNG_EXPORT(130, png_const_bytep, png_get_signature, (png_const_structrp png_ptr, - png_const_inforp info_ptr)); -#endif - -#ifdef PNG_bKGD_SUPPORTED -PNG_EXPORT(131, png_uint_32, png_get_bKGD, (png_const_structrp png_ptr, - png_inforp info_ptr, png_color_16p *background)); -#endif - -#ifdef PNG_bKGD_SUPPORTED -PNG_EXPORT(132, void, png_set_bKGD, (png_const_structrp png_ptr, - png_inforp info_ptr, png_const_color_16p background)); -#endif - -#ifdef PNG_cHRM_SUPPORTED -PNG_FP_EXPORT(133, png_uint_32, png_get_cHRM, (png_const_structrp png_ptr, - png_const_inforp info_ptr, double *white_x, double *white_y, double *red_x, - double *red_y, double *green_x, double *green_y, double *blue_x, - double *blue_y)) -PNG_FP_EXPORT(230, png_uint_32, png_get_cHRM_XYZ, (png_const_structrp png_ptr, - png_const_inforp info_ptr, double *red_X, double *red_Y, double *red_Z, - double *green_X, double *green_Y, double *green_Z, double *blue_X, - double *blue_Y, double *blue_Z)) -PNG_FIXED_EXPORT(134, png_uint_32, png_get_cHRM_fixed, - (png_const_structrp png_ptr, png_const_inforp info_ptr, - png_fixed_point *int_white_x, png_fixed_point *int_white_y, - png_fixed_point *int_red_x, png_fixed_point *int_red_y, - png_fixed_point *int_green_x, png_fixed_point *int_green_y, - png_fixed_point *int_blue_x, png_fixed_point *int_blue_y)) -PNG_FIXED_EXPORT(231, png_uint_32, png_get_cHRM_XYZ_fixed, - (png_const_structrp png_ptr, png_const_inforp info_ptr, - png_fixed_point *int_red_X, png_fixed_point *int_red_Y, - png_fixed_point *int_red_Z, png_fixed_point *int_green_X, - png_fixed_point *int_green_Y, png_fixed_point *int_green_Z, - png_fixed_point *int_blue_X, png_fixed_point *int_blue_Y, - png_fixed_point *int_blue_Z)) -#endif - -#ifdef PNG_cHRM_SUPPORTED -PNG_FP_EXPORT(135, void, png_set_cHRM, (png_const_structrp png_ptr, - png_inforp info_ptr, - double white_x, double white_y, double red_x, double red_y, double green_x, - double green_y, double blue_x, double blue_y)) -PNG_FP_EXPORT(232, void, png_set_cHRM_XYZ, (png_const_structrp png_ptr, - png_inforp info_ptr, double red_X, double red_Y, double red_Z, - double green_X, double green_Y, double green_Z, double blue_X, - double blue_Y, double blue_Z)) -PNG_FIXED_EXPORT(136, void, png_set_cHRM_fixed, (png_const_structrp png_ptr, - png_inforp info_ptr, png_fixed_point int_white_x, - png_fixed_point int_white_y, png_fixed_point int_red_x, - png_fixed_point int_red_y, png_fixed_point int_green_x, - png_fixed_point int_green_y, png_fixed_point int_blue_x, - png_fixed_point int_blue_y)) -PNG_FIXED_EXPORT(233, void, png_set_cHRM_XYZ_fixed, (png_const_structrp png_ptr, - png_inforp info_ptr, png_fixed_point int_red_X, png_fixed_point int_red_Y, - png_fixed_point int_red_Z, png_fixed_point int_green_X, - png_fixed_point int_green_Y, png_fixed_point int_green_Z, - png_fixed_point int_blue_X, png_fixed_point int_blue_Y, - png_fixed_point int_blue_Z)) -#endif - -#ifdef PNG_eXIf_SUPPORTED -PNG_EXPORT(246, png_uint_32, png_get_eXIf, (png_const_structrp png_ptr, - png_inforp info_ptr, png_bytep *exif)); -PNG_EXPORT(247, void, png_set_eXIf, (png_const_structrp png_ptr, - png_inforp info_ptr, png_bytep exif)); - -PNG_EXPORT(248, png_uint_32, png_get_eXIf_1, (png_const_structrp png_ptr, - png_const_inforp info_ptr, png_uint_32 *num_exif, png_bytep *exif)); -PNG_EXPORT(249, void, png_set_eXIf_1, (png_const_structrp png_ptr, - png_inforp info_ptr, png_uint_32 num_exif, png_bytep exif)); -#endif - -#ifdef PNG_gAMA_SUPPORTED -PNG_FP_EXPORT(137, png_uint_32, png_get_gAMA, (png_const_structrp png_ptr, - png_const_inforp info_ptr, double *file_gamma)) -PNG_FIXED_EXPORT(138, png_uint_32, png_get_gAMA_fixed, - (png_const_structrp png_ptr, png_const_inforp info_ptr, - png_fixed_point *int_file_gamma)) -#endif - -#ifdef PNG_gAMA_SUPPORTED -PNG_FP_EXPORT(139, void, png_set_gAMA, (png_const_structrp png_ptr, - png_inforp info_ptr, double file_gamma)) -PNG_FIXED_EXPORT(140, void, png_set_gAMA_fixed, (png_const_structrp png_ptr, - png_inforp info_ptr, png_fixed_point int_file_gamma)) -#endif - -#ifdef PNG_hIST_SUPPORTED -PNG_EXPORT(141, png_uint_32, png_get_hIST, (png_const_structrp png_ptr, - png_inforp info_ptr, png_uint_16p *hist)); -PNG_EXPORT(142, void, png_set_hIST, (png_const_structrp png_ptr, - png_inforp info_ptr, png_const_uint_16p hist)); -#endif - -PNG_EXPORT(143, png_uint_32, png_get_IHDR, (png_const_structrp png_ptr, - png_const_inforp info_ptr, png_uint_32 *width, png_uint_32 *height, - int *bit_depth, int *color_type, int *interlace_method, - int *compression_method, int *filter_method)); - -PNG_EXPORT(144, void, png_set_IHDR, (png_const_structrp png_ptr, - png_inforp info_ptr, png_uint_32 width, png_uint_32 height, int bit_depth, - int color_type, int interlace_method, int compression_method, - int filter_method)); - -#ifdef PNG_oFFs_SUPPORTED -PNG_EXPORT(145, png_uint_32, png_get_oFFs, (png_const_structrp png_ptr, - png_const_inforp info_ptr, png_int_32 *offset_x, png_int_32 *offset_y, - int *unit_type)); -#endif - -#ifdef PNG_oFFs_SUPPORTED -PNG_EXPORT(146, void, png_set_oFFs, (png_const_structrp png_ptr, - png_inforp info_ptr, png_int_32 offset_x, png_int_32 offset_y, - int unit_type)); -#endif - -#ifdef PNG_pCAL_SUPPORTED -PNG_EXPORT(147, png_uint_32, png_get_pCAL, (png_const_structrp png_ptr, - png_inforp info_ptr, png_charp *purpose, png_int_32 *X0, - png_int_32 *X1, int *type, int *nparams, png_charp *units, - png_charpp *params)); -#endif - -#ifdef PNG_pCAL_SUPPORTED -PNG_EXPORT(148, void, png_set_pCAL, (png_const_structrp png_ptr, - png_inforp info_ptr, png_const_charp purpose, png_int_32 X0, png_int_32 X1, - int type, int nparams, png_const_charp units, png_charpp params)); -#endif - -#ifdef PNG_pHYs_SUPPORTED -PNG_EXPORT(149, png_uint_32, png_get_pHYs, (png_const_structrp png_ptr, - png_const_inforp info_ptr, png_uint_32 *res_x, png_uint_32 *res_y, - int *unit_type)); -#endif - -#ifdef PNG_pHYs_SUPPORTED -PNG_EXPORT(150, void, png_set_pHYs, (png_const_structrp png_ptr, - png_inforp info_ptr, png_uint_32 res_x, png_uint_32 res_y, int unit_type)); -#endif - -PNG_EXPORT(151, png_uint_32, png_get_PLTE, (png_const_structrp png_ptr, - png_inforp info_ptr, png_colorp *palette, int *num_palette)); - -PNG_EXPORT(152, void, png_set_PLTE, (png_structrp png_ptr, - png_inforp info_ptr, png_const_colorp palette, int num_palette)); - -#ifdef PNG_sBIT_SUPPORTED -PNG_EXPORT(153, png_uint_32, png_get_sBIT, (png_const_structrp png_ptr, - png_inforp info_ptr, png_color_8p *sig_bit)); -#endif - -#ifdef PNG_sBIT_SUPPORTED -PNG_EXPORT(154, void, png_set_sBIT, (png_const_structrp png_ptr, - png_inforp info_ptr, png_const_color_8p sig_bit)); -#endif - -#ifdef PNG_sRGB_SUPPORTED -PNG_EXPORT(155, png_uint_32, png_get_sRGB, (png_const_structrp png_ptr, - png_const_inforp info_ptr, int *file_srgb_intent)); -#endif - -#ifdef PNG_sRGB_SUPPORTED -PNG_EXPORT(156, void, png_set_sRGB, (png_const_structrp png_ptr, - png_inforp info_ptr, int srgb_intent)); -PNG_EXPORT(157, void, png_set_sRGB_gAMA_and_cHRM, (png_const_structrp png_ptr, - png_inforp info_ptr, int srgb_intent)); -#endif - -#ifdef PNG_iCCP_SUPPORTED -PNG_EXPORT(158, png_uint_32, png_get_iCCP, (png_const_structrp png_ptr, - png_inforp info_ptr, png_charpp name, int *compression_type, - png_bytepp profile, png_uint_32 *proflen)); -#endif - -#ifdef PNG_iCCP_SUPPORTED -PNG_EXPORT(159, void, png_set_iCCP, (png_const_structrp png_ptr, - png_inforp info_ptr, png_const_charp name, int compression_type, - png_const_bytep profile, png_uint_32 proflen)); -#endif - -#ifdef PNG_sPLT_SUPPORTED -PNG_EXPORT(160, int, png_get_sPLT, (png_const_structrp png_ptr, - png_inforp info_ptr, png_sPLT_tpp entries)); -#endif - -#ifdef PNG_sPLT_SUPPORTED -PNG_EXPORT(161, void, png_set_sPLT, (png_const_structrp png_ptr, - png_inforp info_ptr, png_const_sPLT_tp entries, int nentries)); -#endif - -#ifdef PNG_TEXT_SUPPORTED -/* png_get_text also returns the number of text chunks in *num_text */ -PNG_EXPORT(162, int, png_get_text, (png_const_structrp png_ptr, - png_inforp info_ptr, png_textp *text_ptr, int *num_text)); -#endif - -/* Note while png_set_text() will accept a structure whose text, - * language, and translated keywords are NULL pointers, the structure - * returned by png_get_text will always contain regular - * zero-terminated C strings. They might be empty strings but - * they will never be NULL pointers. - */ - -#ifdef PNG_TEXT_SUPPORTED -PNG_EXPORT(163, void, png_set_text, (png_const_structrp png_ptr, - png_inforp info_ptr, png_const_textp text_ptr, int num_text)); -#endif - -#ifdef PNG_tIME_SUPPORTED -PNG_EXPORT(164, png_uint_32, png_get_tIME, (png_const_structrp png_ptr, - png_inforp info_ptr, png_timep *mod_time)); -#endif - -#ifdef PNG_tIME_SUPPORTED -PNG_EXPORT(165, void, png_set_tIME, (png_const_structrp png_ptr, - png_inforp info_ptr, png_const_timep mod_time)); -#endif - -#ifdef PNG_tRNS_SUPPORTED -PNG_EXPORT(166, png_uint_32, png_get_tRNS, (png_const_structrp png_ptr, - png_inforp info_ptr, png_bytep *trans_alpha, int *num_trans, - png_color_16p *trans_color)); -#endif - -#ifdef PNG_tRNS_SUPPORTED -PNG_EXPORT(167, void, png_set_tRNS, (png_structrp png_ptr, - png_inforp info_ptr, png_const_bytep trans_alpha, int num_trans, - png_const_color_16p trans_color)); -#endif - -#ifdef PNG_sCAL_SUPPORTED -PNG_FP_EXPORT(168, png_uint_32, png_get_sCAL, (png_const_structrp png_ptr, - png_const_inforp info_ptr, int *unit, double *width, double *height)) -#if defined(PNG_FLOATING_ARITHMETIC_SUPPORTED) || \ - defined(PNG_FLOATING_POINT_SUPPORTED) -/* NOTE: this API is currently implemented using floating point arithmetic, - * consequently it can only be used on systems with floating point support. - * In any case the range of values supported by png_fixed_point is small and it - * is highly recommended that png_get_sCAL_s be used instead. - */ -PNG_FIXED_EXPORT(214, png_uint_32, png_get_sCAL_fixed, - (png_const_structrp png_ptr, png_const_inforp info_ptr, int *unit, - png_fixed_point *width, png_fixed_point *height)) -#endif -PNG_EXPORT(169, png_uint_32, png_get_sCAL_s, - (png_const_structrp png_ptr, png_const_inforp info_ptr, int *unit, - png_charpp swidth, png_charpp sheight)); - -PNG_FP_EXPORT(170, void, png_set_sCAL, (png_const_structrp png_ptr, - png_inforp info_ptr, int unit, double width, double height)) -PNG_FIXED_EXPORT(213, void, png_set_sCAL_fixed, (png_const_structrp png_ptr, - png_inforp info_ptr, int unit, png_fixed_point width, - png_fixed_point height)) -PNG_EXPORT(171, void, png_set_sCAL_s, (png_const_structrp png_ptr, - png_inforp info_ptr, int unit, - png_const_charp swidth, png_const_charp sheight)); -#endif /* sCAL */ - -#ifdef PNG_SET_UNKNOWN_CHUNKS_SUPPORTED -/* Provide the default handling for all unknown chunks or, optionally, for - * specific unknown chunks. - * - * NOTE: prior to 1.6.0 the handling specified for particular chunks on read was - * ignored and the default was used, the per-chunk setting only had an effect on - * write. If you wish to have chunk-specific handling on read in code that must - * work on earlier versions you must use a user chunk callback to specify the - * desired handling (keep or discard.) - * - * The 'keep' parameter is a PNG_HANDLE_CHUNK_ value as listed below. The - * parameter is interpreted as follows: - * - * READ: - * PNG_HANDLE_CHUNK_AS_DEFAULT: - * Known chunks: do normal libpng processing, do not keep the chunk (but - * see the comments below about PNG_HANDLE_AS_UNKNOWN_SUPPORTED) - * Unknown chunks: for a specific chunk use the global default, when used - * as the default discard the chunk data. - * PNG_HANDLE_CHUNK_NEVER: - * Discard the chunk data. - * PNG_HANDLE_CHUNK_IF_SAFE: - * Keep the chunk data if the chunk is not critical else raise a chunk - * error. - * PNG_HANDLE_CHUNK_ALWAYS: - * Keep the chunk data. - * - * If the chunk data is saved it can be retrieved using png_get_unknown_chunks, - * below. Notice that specifying "AS_DEFAULT" as a global default is equivalent - * to specifying "NEVER", however when "AS_DEFAULT" is used for specific chunks - * it simply resets the behavior to the libpng default. - * - * INTERACTION WITH USER CHUNK CALLBACKS: - * The per-chunk handling is always used when there is a png_user_chunk_ptr - * callback and the callback returns 0; the chunk is then always stored *unless* - * it is critical and the per-chunk setting is other than ALWAYS. Notice that - * the global default is *not* used in this case. (In effect the per-chunk - * value is incremented to at least IF_SAFE.) - * - * IMPORTANT NOTE: this behavior will change in libpng 1.7 - the global and - * per-chunk defaults will be honored. If you want to preserve the current - * behavior when your callback returns 0 you must set PNG_HANDLE_CHUNK_IF_SAFE - * as the default - if you don't do this libpng 1.6 will issue a warning. - * - * If you want unhandled unknown chunks to be discarded in libpng 1.6 and - * earlier simply return '1' (handled). - * - * PNG_HANDLE_AS_UNKNOWN_SUPPORTED: - * If this is *not* set known chunks will always be handled by libpng and - * will never be stored in the unknown chunk list. Known chunks listed to - * png_set_keep_unknown_chunks will have no effect. If it is set then known - * chunks listed with a keep other than AS_DEFAULT will *never* be processed - * by libpng, in addition critical chunks must either be processed by the - * callback or saved. - * - * The IHDR and IEND chunks must not be listed. Because this turns off the - * default handling for chunks that would otherwise be recognized the - * behavior of libpng transformations may well become incorrect! - * - * WRITE: - * When writing chunks the options only apply to the chunks specified by - * png_set_unknown_chunks (below), libpng will *always* write known chunks - * required by png_set_ calls and will always write the core critical chunks - * (as required for PLTE). - * - * Each chunk in the png_set_unknown_chunks list is looked up in the - * png_set_keep_unknown_chunks list to find the keep setting, this is then - * interpreted as follows: - * - * PNG_HANDLE_CHUNK_AS_DEFAULT: - * Write safe-to-copy chunks and write other chunks if the global - * default is set to _ALWAYS, otherwise don't write this chunk. - * PNG_HANDLE_CHUNK_NEVER: - * Do not write the chunk. - * PNG_HANDLE_CHUNK_IF_SAFE: - * Write the chunk if it is safe-to-copy, otherwise do not write it. - * PNG_HANDLE_CHUNK_ALWAYS: - * Write the chunk. - * - * Note that the default behavior is effectively the opposite of the read case - - * in read unknown chunks are not stored by default, in write they are written - * by default. Also the behavior of PNG_HANDLE_CHUNK_IF_SAFE is very different - * - on write the safe-to-copy bit is checked, on read the critical bit is - * checked and on read if the chunk is critical an error will be raised. - * - * num_chunks: - * =========== - * If num_chunks is positive, then the "keep" parameter specifies the manner - * for handling only those chunks appearing in the chunk_list array, - * otherwise the chunk list array is ignored. - * - * If num_chunks is 0 the "keep" parameter specifies the default behavior for - * unknown chunks, as described above. - * - * If num_chunks is negative, then the "keep" parameter specifies the manner - * for handling all unknown chunks plus all chunks recognized by libpng - * except for the IHDR, PLTE, tRNS, IDAT, and IEND chunks (which continue to - * be processed by libpng. - */ -#ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED -PNG_EXPORT(172, void, png_set_keep_unknown_chunks, (png_structrp png_ptr, - int keep, png_const_bytep chunk_list, int num_chunks)); -#endif /* HANDLE_AS_UNKNOWN */ - -/* The "keep" PNG_HANDLE_CHUNK_ parameter for the specified chunk is returned; - * the result is therefore true (non-zero) if special handling is required, - * false for the default handling. - */ -PNG_EXPORT(173, int, png_handle_as_unknown, (png_const_structrp png_ptr, - png_const_bytep chunk_name)); -#endif /* SET_UNKNOWN_CHUNKS */ - -#ifdef PNG_STORE_UNKNOWN_CHUNKS_SUPPORTED -PNG_EXPORT(174, void, png_set_unknown_chunks, (png_const_structrp png_ptr, - png_inforp info_ptr, png_const_unknown_chunkp unknowns, - int num_unknowns)); - /* NOTE: prior to 1.6.0 this routine set the 'location' field of the added - * unknowns to the location currently stored in the png_struct. This is - * invariably the wrong value on write. To fix this call the following API - * for each chunk in the list with the correct location. If you know your - * code won't be compiled on earlier versions you can rely on - * png_set_unknown_chunks(write-ptr, png_get_unknown_chunks(read-ptr)) doing - * the correct thing. - */ - -PNG_EXPORT(175, void, png_set_unknown_chunk_location, - (png_const_structrp png_ptr, png_inforp info_ptr, int chunk, int location)); - -PNG_EXPORT(176, int, png_get_unknown_chunks, (png_const_structrp png_ptr, - png_inforp info_ptr, png_unknown_chunkpp entries)); -#endif - -/* Png_free_data() will turn off the "valid" flag for anything it frees. - * If you need to turn it off for a chunk that your application has freed, - * you can use png_set_invalid(png_ptr, info_ptr, PNG_INFO_CHNK); - */ -PNG_EXPORT(177, void, png_set_invalid, (png_const_structrp png_ptr, - png_inforp info_ptr, int mask)); - -#ifdef PNG_INFO_IMAGE_SUPPORTED -/* The "params" pointer is currently not used and is for future expansion. */ -#ifdef PNG_SEQUENTIAL_READ_SUPPORTED -PNG_EXPORT(178, void, png_read_png, (png_structrp png_ptr, png_inforp info_ptr, - int transforms, png_voidp params)); -#endif -#ifdef PNG_WRITE_SUPPORTED -PNG_EXPORT(179, void, png_write_png, (png_structrp png_ptr, png_inforp info_ptr, - int transforms, png_voidp params)); -#endif -#endif - -PNG_EXPORT(180, png_const_charp, png_get_copyright, - (png_const_structrp png_ptr)); -PNG_EXPORT(181, png_const_charp, png_get_header_ver, - (png_const_structrp png_ptr)); -PNG_EXPORT(182, png_const_charp, png_get_header_version, - (png_const_structrp png_ptr)); -PNG_EXPORT(183, png_const_charp, png_get_libpng_ver, - (png_const_structrp png_ptr)); - -#ifdef PNG_MNG_FEATURES_SUPPORTED -PNG_EXPORT(184, png_uint_32, png_permit_mng_features, (png_structrp png_ptr, - png_uint_32 mng_features_permitted)); -#endif - -/* For use in png_set_keep_unknown, added to version 1.2.6 */ -#define PNG_HANDLE_CHUNK_AS_DEFAULT 0 -#define PNG_HANDLE_CHUNK_NEVER 1 -#define PNG_HANDLE_CHUNK_IF_SAFE 2 -#define PNG_HANDLE_CHUNK_ALWAYS 3 -#define PNG_HANDLE_CHUNK_LAST 4 - -/* Strip the prepended error numbers ("#nnn ") from error and warning - * messages before passing them to the error or warning handler. - */ -#ifdef PNG_ERROR_NUMBERS_SUPPORTED -PNG_EXPORT(185, void, png_set_strip_error_numbers, (png_structrp png_ptr, - png_uint_32 strip_mode)); -#endif - -/* Added in libpng-1.2.6 */ -#ifdef PNG_SET_USER_LIMITS_SUPPORTED -PNG_EXPORT(186, void, png_set_user_limits, (png_structrp png_ptr, - png_uint_32 user_width_max, png_uint_32 user_height_max)); -PNG_EXPORT(187, png_uint_32, png_get_user_width_max, - (png_const_structrp png_ptr)); -PNG_EXPORT(188, png_uint_32, png_get_user_height_max, - (png_const_structrp png_ptr)); -/* Added in libpng-1.4.0 */ -PNG_EXPORT(189, void, png_set_chunk_cache_max, (png_structrp png_ptr, - png_uint_32 user_chunk_cache_max)); -PNG_EXPORT(190, png_uint_32, png_get_chunk_cache_max, - (png_const_structrp png_ptr)); -/* Added in libpng-1.4.1 */ -PNG_EXPORT(191, void, png_set_chunk_malloc_max, (png_structrp png_ptr, - png_alloc_size_t user_chunk_cache_max)); -PNG_EXPORT(192, png_alloc_size_t, png_get_chunk_malloc_max, - (png_const_structrp png_ptr)); -#endif - -#if defined(PNG_INCH_CONVERSIONS_SUPPORTED) -PNG_EXPORT(193, png_uint_32, png_get_pixels_per_inch, - (png_const_structrp png_ptr, png_const_inforp info_ptr)); - -PNG_EXPORT(194, png_uint_32, png_get_x_pixels_per_inch, - (png_const_structrp png_ptr, png_const_inforp info_ptr)); - -PNG_EXPORT(195, png_uint_32, png_get_y_pixels_per_inch, - (png_const_structrp png_ptr, png_const_inforp info_ptr)); - -PNG_FP_EXPORT(196, float, png_get_x_offset_inches, - (png_const_structrp png_ptr, png_const_inforp info_ptr)) -#ifdef PNG_FIXED_POINT_SUPPORTED /* otherwise not implemented. */ -PNG_FIXED_EXPORT(211, png_fixed_point, png_get_x_offset_inches_fixed, - (png_const_structrp png_ptr, png_const_inforp info_ptr)) -#endif - -PNG_FP_EXPORT(197, float, png_get_y_offset_inches, (png_const_structrp png_ptr, - png_const_inforp info_ptr)) -#ifdef PNG_FIXED_POINT_SUPPORTED /* otherwise not implemented. */ -PNG_FIXED_EXPORT(212, png_fixed_point, png_get_y_offset_inches_fixed, - (png_const_structrp png_ptr, png_const_inforp info_ptr)) -#endif - -# ifdef PNG_pHYs_SUPPORTED -PNG_EXPORT(198, png_uint_32, png_get_pHYs_dpi, (png_const_structrp png_ptr, - png_const_inforp info_ptr, png_uint_32 *res_x, png_uint_32 *res_y, - int *unit_type)); -# endif /* pHYs */ -#endif /* INCH_CONVERSIONS */ - -/* Added in libpng-1.4.0 */ -#ifdef PNG_IO_STATE_SUPPORTED -PNG_EXPORT(199, png_uint_32, png_get_io_state, (png_const_structrp png_ptr)); - -/* Removed from libpng 1.6; use png_get_io_chunk_type. */ -PNG_REMOVED(200, png_const_bytep, png_get_io_chunk_name, (png_structrp png_ptr), - PNG_DEPRECATED) - -PNG_EXPORT(216, png_uint_32, png_get_io_chunk_type, - (png_const_structrp png_ptr)); - -/* The flags returned by png_get_io_state() are the following: */ -# define PNG_IO_NONE 0x0000 /* no I/O at this moment */ -# define PNG_IO_READING 0x0001 /* currently reading */ -# define PNG_IO_WRITING 0x0002 /* currently writing */ -# define PNG_IO_SIGNATURE 0x0010 /* currently at the file signature */ -# define PNG_IO_CHUNK_HDR 0x0020 /* currently at the chunk header */ -# define PNG_IO_CHUNK_DATA 0x0040 /* currently at the chunk data */ -# define PNG_IO_CHUNK_CRC 0x0080 /* currently at the chunk crc */ -# define PNG_IO_MASK_OP 0x000f /* current operation: reading/writing */ -# define PNG_IO_MASK_LOC 0x00f0 /* current location: sig/hdr/data/crc */ -#endif /* IO_STATE */ - -/* Interlace support. The following macros are always defined so that if - * libpng interlace handling is turned off the macros may be used to handle - * interlaced images within the application. - */ -#define PNG_INTERLACE_ADAM7_PASSES 7 - -/* Two macros to return the first row and first column of the original, - * full, image which appears in a given pass. 'pass' is in the range 0 - * to 6 and the result is in the range 0 to 7. - */ -#define PNG_PASS_START_ROW(pass) (((1&~(pass))<<(3-((pass)>>1)))&7) -#define PNG_PASS_START_COL(pass) (((1& (pass))<<(3-(((pass)+1)>>1)))&7) - -/* A macro to return the offset between pixels in the output row for a pair of - * pixels in the input - effectively the inverse of the 'COL_SHIFT' macro that - * follows. Note that ROW_OFFSET is the offset from one row to the next whereas - * COL_OFFSET is from one column to the next, within a row. - */ -#define PNG_PASS_ROW_OFFSET(pass) ((pass)>2?(8>>(((pass)-1)>>1)):8) -#define PNG_PASS_COL_OFFSET(pass) (1<<((7-(pass))>>1)) - -/* Two macros to help evaluate the number of rows or columns in each - * pass. This is expressed as a shift - effectively log2 of the number or - * rows or columns in each 8x8 tile of the original image. - */ -#define PNG_PASS_ROW_SHIFT(pass) ((pass)>2?(8-(pass))>>1:3) -#define PNG_PASS_COL_SHIFT(pass) ((pass)>1?(7-(pass))>>1:3) - -/* Hence two macros to determine the number of rows or columns in a given - * pass of an image given its height or width. In fact these macros may - * return non-zero even though the sub-image is empty, because the other - * dimension may be empty for a small image. - */ -#define PNG_PASS_ROWS(height, pass) (((height)+(((1<>PNG_PASS_ROW_SHIFT(pass)) -#define PNG_PASS_COLS(width, pass) (((width)+(((1<>PNG_PASS_COL_SHIFT(pass)) - -/* For the reader row callbacks (both progressive and sequential) it is - * necessary to find the row in the output image given a row in an interlaced - * image, so two more macros: - */ -#define PNG_ROW_FROM_PASS_ROW(y_in, pass) \ - (((y_in)<>(((7-(off))-(pass))<<2)) & 0xF) | \ - ((0x01145AF0>>(((7-(off))-(pass))<<2)) & 0xF0)) - -#define PNG_ROW_IN_INTERLACE_PASS(y, pass) \ - ((PNG_PASS_MASK(pass,0) >> ((y)&7)) & 1) -#define PNG_COL_IN_INTERLACE_PASS(x, pass) \ - ((PNG_PASS_MASK(pass,1) >> ((x)&7)) & 1) - -#ifdef PNG_READ_COMPOSITE_NODIV_SUPPORTED -/* With these routines we avoid an integer divide, which will be slower on - * most machines. However, it does take more operations than the corresponding - * divide method, so it may be slower on a few RISC systems. There are two - * shifts (by 8 or 16 bits) and an addition, versus a single integer divide. - * - * Note that the rounding factors are NOT supposed to be the same! 128 and - * 32768 are correct for the NODIV code; 127 and 32767 are correct for the - * standard method. - * - * [Optimized code by Greg Roelofs and Mark Adler...blame us for bugs. :-) ] - */ - - /* fg and bg should be in `gamma 1.0' space; alpha is the opacity */ - -# define png_composite(composite, fg, alpha, bg) \ - { \ - png_uint_16 temp = (png_uint_16)((png_uint_16)(fg) \ - * (png_uint_16)(alpha) \ - + (png_uint_16)(bg)*(png_uint_16)(255 \ - - (png_uint_16)(alpha)) + 128); \ - (composite) = (png_byte)(((temp + (temp >> 8)) >> 8) & 0xff); \ - } - -# define png_composite_16(composite, fg, alpha, bg) \ - { \ - png_uint_32 temp = (png_uint_32)((png_uint_32)(fg) \ - * (png_uint_32)(alpha) \ - + (png_uint_32)(bg)*(65535 \ - - (png_uint_32)(alpha)) + 32768); \ - (composite) = (png_uint_16)(0xffff & ((temp + (temp >> 16)) >> 16)); \ - } - -#else /* Standard method using integer division */ - -# define png_composite(composite, fg, alpha, bg) \ - (composite) = \ - (png_byte)(0xff & (((png_uint_16)(fg) * (png_uint_16)(alpha) + \ - (png_uint_16)(bg) * (png_uint_16)(255 - (png_uint_16)(alpha)) + \ - 127) / 255)) - -# define png_composite_16(composite, fg, alpha, bg) \ - (composite) = \ - (png_uint_16)(0xffff & (((png_uint_32)(fg) * (png_uint_32)(alpha) + \ - (png_uint_32)(bg)*(png_uint_32)(65535 - (png_uint_32)(alpha)) + \ - 32767) / 65535)) -#endif /* READ_COMPOSITE_NODIV */ - -#ifdef PNG_READ_INT_FUNCTIONS_SUPPORTED -PNG_EXPORT(201, png_uint_32, png_get_uint_32, (png_const_bytep buf)); -PNG_EXPORT(202, png_uint_16, png_get_uint_16, (png_const_bytep buf)); -PNG_EXPORT(203, png_int_32, png_get_int_32, (png_const_bytep buf)); -#endif - -PNG_EXPORT(204, png_uint_32, png_get_uint_31, (png_const_structrp png_ptr, - png_const_bytep buf)); -/* No png_get_int_16 -- may be added if there's a real need for it. */ - -/* Place a 32-bit number into a buffer in PNG byte order (big-endian). */ -#ifdef PNG_WRITE_INT_FUNCTIONS_SUPPORTED -PNG_EXPORT(205, void, png_save_uint_32, (png_bytep buf, png_uint_32 i)); -#endif -#ifdef PNG_SAVE_INT_32_SUPPORTED -PNG_EXPORT(206, void, png_save_int_32, (png_bytep buf, png_int_32 i)); -#endif - -/* Place a 16-bit number into a buffer in PNG byte order. - * The parameter is declared unsigned int, not png_uint_16, - * just to avoid potential problems on pre-ANSI C compilers. - */ -#ifdef PNG_WRITE_INT_FUNCTIONS_SUPPORTED -PNG_EXPORT(207, void, png_save_uint_16, (png_bytep buf, unsigned int i)); -/* No png_save_int_16 -- may be added if there's a real need for it. */ -#endif - -#ifdef PNG_USE_READ_MACROS -/* Inline macros to do direct reads of bytes from the input buffer. - * The png_get_int_32() routine assumes we are using two's complement - * format for negative values, which is almost certainly true. - */ -# define PNG_get_uint_32(buf) \ - (((png_uint_32)(*(buf)) << 24) + \ - ((png_uint_32)(*((buf) + 1)) << 16) + \ - ((png_uint_32)(*((buf) + 2)) << 8) + \ - ((png_uint_32)(*((buf) + 3)))) - - /* From libpng-1.4.0 until 1.4.4, the png_get_uint_16 macro (but not the - * function) incorrectly returned a value of type png_uint_32. - */ -# define PNG_get_uint_16(buf) \ - ((png_uint_16) \ - (((unsigned int)(*(buf)) << 8) + \ - ((unsigned int)(*((buf) + 1))))) - -# define PNG_get_int_32(buf) \ - ((png_int_32)((*(buf) & 0x80) \ - ? -((png_int_32)(((png_get_uint_32(buf)^0xffffffffU)+1U)&0x7fffffffU)) \ - : (png_int_32)png_get_uint_32(buf))) - -/* If PNG_PREFIX is defined the same thing as below happens in pnglibconf.h, - * but defining a macro name prefixed with PNG_PREFIX. - */ -# ifndef PNG_PREFIX -# define png_get_uint_32(buf) PNG_get_uint_32(buf) -# define png_get_uint_16(buf) PNG_get_uint_16(buf) -# define png_get_int_32(buf) PNG_get_int_32(buf) -# endif -#else -# ifdef PNG_PREFIX - /* No macros; revert to the (redefined) function */ -# define PNG_get_uint_32 (png_get_uint_32) -# define PNG_get_uint_16 (png_get_uint_16) -# define PNG_get_int_32 (png_get_int_32) -# endif -#endif - -#ifdef PNG_CHECK_FOR_INVALID_INDEX_SUPPORTED -PNG_EXPORT(242, void, png_set_check_for_invalid_index, - (png_structrp png_ptr, int allowed)); -# ifdef PNG_GET_PALETTE_MAX_SUPPORTED -PNG_EXPORT(243, int, png_get_palette_max, (png_const_structp png_ptr, - png_const_infop info_ptr)); -# endif -#endif /* CHECK_FOR_INVALID_INDEX */ - -/******************************************************************************* - * Section 5: SIMPLIFIED API - ******************************************************************************* - * - * Please read the documentation in libpng-manual.txt (TODO: write said - * documentation) if you don't understand what follows. - * - * The simplified API hides the details of both libpng and the PNG file format - * itself. It allows PNG files to be read into a very limited number of - * in-memory bitmap formats or to be written from the same formats. If these - * formats do not accommodate your needs then you can, and should, use the more - * sophisticated APIs above - these support a wide variety of in-memory formats - * and a wide variety of sophisticated transformations to those formats as well - * as a wide variety of APIs to manipulate ancillary information. - * - * To read a PNG file using the simplified API: - * - * 1) Declare a 'png_image' structure (see below) on the stack, set the - * version field to PNG_IMAGE_VERSION and the 'opaque' pointer to NULL - * (this is REQUIRED, your program may crash if you don't do it.) - * 2) Call the appropriate png_image_begin_read... function. - * 3) Set the png_image 'format' member to the required sample format. - * 4) Allocate a buffer for the image and, if required, the color-map. - * 5) Call png_image_finish_read to read the image and, if required, the - * color-map into your buffers. - * - * There are no restrictions on the format of the PNG input itself; all valid - * color types, bit depths, and interlace methods are acceptable, and the - * input image is transformed as necessary to the requested in-memory format - * during the png_image_finish_read() step. The only caveat is that if you - * request a color-mapped image from a PNG that is full-color or makes - * complex use of an alpha channel the transformation is extremely lossy and the - * result may look terrible. - * - * To write a PNG file using the simplified API: - * - * 1) Declare a 'png_image' structure on the stack and memset() it to all zero. - * 2) Initialize the members of the structure that describe the image, setting - * the 'format' member to the format of the image samples. - * 3) Call the appropriate png_image_write... function with a pointer to the - * image and, if necessary, the color-map to write the PNG data. - * - * png_image is a structure that describes the in-memory format of an image - * when it is being read or defines the in-memory format of an image that you - * need to write: - */ -#if defined(PNG_SIMPLIFIED_READ_SUPPORTED) || \ - defined(PNG_SIMPLIFIED_WRITE_SUPPORTED) - -#define PNG_IMAGE_VERSION 1 - -typedef struct png_control *png_controlp; -typedef struct -{ - png_controlp opaque; /* Initialize to NULL, free with png_image_free */ - png_uint_32 version; /* Set to PNG_IMAGE_VERSION */ - png_uint_32 width; /* Image width in pixels (columns) */ - png_uint_32 height; /* Image height in pixels (rows) */ - png_uint_32 format; /* Image format as defined below */ - png_uint_32 flags; /* A bit mask containing informational flags */ - png_uint_32 colormap_entries; - /* Number of entries in the color-map */ - - /* In the event of an error or warning the following field will be set to a - * non-zero value and the 'message' field will contain a '\0' terminated - * string with the libpng error or warning message. If both warnings and - * an error were encountered, only the error is recorded. If there - * are multiple warnings, only the first one is recorded. - * - * The upper 30 bits of this value are reserved, the low two bits contain - * a value as follows: - */ -# define PNG_IMAGE_WARNING 1 -# define PNG_IMAGE_ERROR 2 - /* - * The result is a two-bit code such that a value more than 1 indicates - * a failure in the API just called: - * - * 0 - no warning or error - * 1 - warning - * 2 - error - * 3 - error preceded by warning - */ -# define PNG_IMAGE_FAILED(png_cntrl) ((((png_cntrl).warning_or_error)&0x03)>1) - - png_uint_32 warning_or_error; - - char message[64]; -} png_image, *png_imagep; - -/* The samples of the image have one to four channels whose components have - * original values in the range 0 to 1.0: - * - * 1: A single gray or luminance channel (G). - * 2: A gray/luminance channel and an alpha channel (GA). - * 3: Three red, green, blue color channels (RGB). - * 4: Three color channels and an alpha channel (RGBA). - * - * The components are encoded in one of two ways: - * - * a) As a small integer, value 0..255, contained in a single byte. For the - * alpha channel the original value is simply value/255. For the color or - * luminance channels the value is encoded according to the sRGB specification - * and matches the 8-bit format expected by typical display devices. - * - * The color/gray channels are not scaled (pre-multiplied) by the alpha - * channel and are suitable for passing to color management software. - * - * b) As a value in the range 0..65535, contained in a 2-byte integer. All - * channels can be converted to the original value by dividing by 65535; all - * channels are linear. Color channels use the RGB encoding (RGB end-points) of - * the sRGB specification. This encoding is identified by the - * PNG_FORMAT_FLAG_LINEAR flag below. - * - * When the simplified API needs to convert between sRGB and linear colorspaces, - * the actual sRGB transfer curve defined in the sRGB specification (see the - * article at ) is used, not the gamma=1/2.2 - * approximation used elsewhere in libpng. - * - * When an alpha channel is present it is expected to denote pixel coverage - * of the color or luminance channels and is returned as an associated alpha - * channel: the color/gray channels are scaled (pre-multiplied) by the alpha - * value. - * - * The samples are either contained directly in the image data, between 1 and 8 - * bytes per pixel according to the encoding, or are held in a color-map indexed - * by bytes in the image data. In the case of a color-map the color-map entries - * are individual samples, encoded as above, and the image data has one byte per - * pixel to select the relevant sample from the color-map. - */ - -/* PNG_FORMAT_* - * - * #defines to be used in png_image::format. Each #define identifies a - * particular layout of sample data and, if present, alpha values. There are - * separate defines for each of the two component encodings. - * - * A format is built up using single bit flag values. All combinations are - * valid. Formats can be built up from the flag values or you can use one of - * the predefined values below. When testing formats always use the FORMAT_FLAG - * macros to test for individual features - future versions of the library may - * add new flags. - * - * When reading or writing color-mapped images the format should be set to the - * format of the entries in the color-map then png_image_{read,write}_colormap - * called to read or write the color-map and set the format correctly for the - * image data. Do not set the PNG_FORMAT_FLAG_COLORMAP bit directly! - * - * NOTE: libpng can be built with particular features disabled. If you see - * compiler errors because the definition of one of the following flags has been - * compiled out it is because libpng does not have the required support. It is - * possible, however, for the libpng configuration to enable the format on just - * read or just write; in that case you may see an error at run time. You can - * guard against this by checking for the definition of the appropriate - * "_SUPPORTED" macro, one of: - * - * PNG_SIMPLIFIED_{READ,WRITE}_{BGR,AFIRST}_SUPPORTED - */ -#define PNG_FORMAT_FLAG_ALPHA 0x01U /* format with an alpha channel */ -#define PNG_FORMAT_FLAG_COLOR 0x02U /* color format: otherwise grayscale */ -#define PNG_FORMAT_FLAG_LINEAR 0x04U /* 2-byte channels else 1-byte */ -#define PNG_FORMAT_FLAG_COLORMAP 0x08U /* image data is color-mapped */ - -#ifdef PNG_FORMAT_BGR_SUPPORTED -# define PNG_FORMAT_FLAG_BGR 0x10U /* BGR colors, else order is RGB */ -#endif - -#ifdef PNG_FORMAT_AFIRST_SUPPORTED -# define PNG_FORMAT_FLAG_AFIRST 0x20U /* alpha channel comes first */ -#endif - -#define PNG_FORMAT_FLAG_ASSOCIATED_ALPHA 0x40U /* alpha channel is associated */ - -/* Commonly used formats have predefined macros. - * - * First the single byte (sRGB) formats: - */ -#define PNG_FORMAT_GRAY 0 -#define PNG_FORMAT_GA PNG_FORMAT_FLAG_ALPHA -#define PNG_FORMAT_AG (PNG_FORMAT_GA|PNG_FORMAT_FLAG_AFIRST) -#define PNG_FORMAT_RGB PNG_FORMAT_FLAG_COLOR -#define PNG_FORMAT_BGR (PNG_FORMAT_FLAG_COLOR|PNG_FORMAT_FLAG_BGR) -#define PNG_FORMAT_RGBA (PNG_FORMAT_RGB|PNG_FORMAT_FLAG_ALPHA) -#define PNG_FORMAT_ARGB (PNG_FORMAT_RGBA|PNG_FORMAT_FLAG_AFIRST) -#define PNG_FORMAT_BGRA (PNG_FORMAT_BGR|PNG_FORMAT_FLAG_ALPHA) -#define PNG_FORMAT_ABGR (PNG_FORMAT_BGRA|PNG_FORMAT_FLAG_AFIRST) - -/* Then the linear 2-byte formats. When naming these "Y" is used to - * indicate a luminance (gray) channel. - */ -#define PNG_FORMAT_LINEAR_Y PNG_FORMAT_FLAG_LINEAR -#define PNG_FORMAT_LINEAR_Y_ALPHA (PNG_FORMAT_FLAG_LINEAR|PNG_FORMAT_FLAG_ALPHA) -#define PNG_FORMAT_LINEAR_RGB (PNG_FORMAT_FLAG_LINEAR|PNG_FORMAT_FLAG_COLOR) -#define PNG_FORMAT_LINEAR_RGB_ALPHA \ - (PNG_FORMAT_FLAG_LINEAR|PNG_FORMAT_FLAG_COLOR|PNG_FORMAT_FLAG_ALPHA) - -/* With color-mapped formats the image data is one byte for each pixel, the byte - * is an index into the color-map which is formatted as above. To obtain a - * color-mapped format it is sufficient just to add the PNG_FOMAT_FLAG_COLORMAP - * to one of the above definitions, or you can use one of the definitions below. - */ -#define PNG_FORMAT_RGB_COLORMAP (PNG_FORMAT_RGB|PNG_FORMAT_FLAG_COLORMAP) -#define PNG_FORMAT_BGR_COLORMAP (PNG_FORMAT_BGR|PNG_FORMAT_FLAG_COLORMAP) -#define PNG_FORMAT_RGBA_COLORMAP (PNG_FORMAT_RGBA|PNG_FORMAT_FLAG_COLORMAP) -#define PNG_FORMAT_ARGB_COLORMAP (PNG_FORMAT_ARGB|PNG_FORMAT_FLAG_COLORMAP) -#define PNG_FORMAT_BGRA_COLORMAP (PNG_FORMAT_BGRA|PNG_FORMAT_FLAG_COLORMAP) -#define PNG_FORMAT_ABGR_COLORMAP (PNG_FORMAT_ABGR|PNG_FORMAT_FLAG_COLORMAP) - -/* PNG_IMAGE macros - * - * These are convenience macros to derive information from a png_image - * structure. The PNG_IMAGE_SAMPLE_ macros return values appropriate to the - * actual image sample values - either the entries in the color-map or the - * pixels in the image. The PNG_IMAGE_PIXEL_ macros return corresponding values - * for the pixels and will always return 1 for color-mapped formats. The - * remaining macros return information about the rows in the image and the - * complete image. - * - * NOTE: All the macros that take a png_image::format parameter are compile time - * constants if the format parameter is, itself, a constant. Therefore these - * macros can be used in array declarations and case labels where required. - * Similarly the macros are also pre-processor constants (sizeof is not used) so - * they can be used in #if tests. - * - * First the information about the samples. - */ -#define PNG_IMAGE_SAMPLE_CHANNELS(fmt)\ - (((fmt)&(PNG_FORMAT_FLAG_COLOR|PNG_FORMAT_FLAG_ALPHA))+1) - /* Return the total number of channels in a given format: 1..4 */ - -#define PNG_IMAGE_SAMPLE_COMPONENT_SIZE(fmt)\ - ((((fmt) & PNG_FORMAT_FLAG_LINEAR) >> 2)+1) - /* Return the size in bytes of a single component of a pixel or color-map - * entry (as appropriate) in the image: 1 or 2. - */ - -#define PNG_IMAGE_SAMPLE_SIZE(fmt)\ - (PNG_IMAGE_SAMPLE_CHANNELS(fmt) * PNG_IMAGE_SAMPLE_COMPONENT_SIZE(fmt)) - /* This is the size of the sample data for one sample. If the image is - * color-mapped it is the size of one color-map entry (and image pixels are - * one byte in size), otherwise it is the size of one image pixel. - */ - -#define PNG_IMAGE_MAXIMUM_COLORMAP_COMPONENTS(fmt)\ - (PNG_IMAGE_SAMPLE_CHANNELS(fmt) * 256) - /* The maximum size of the color-map required by the format expressed in a - * count of components. This can be used to compile-time allocate a - * color-map: - * - * png_uint_16 colormap[PNG_IMAGE_MAXIMUM_COLORMAP_COMPONENTS(linear_fmt)]; - * - * png_byte colormap[PNG_IMAGE_MAXIMUM_COLORMAP_COMPONENTS(sRGB_fmt)]; - * - * Alternatively use the PNG_IMAGE_COLORMAP_SIZE macro below to use the - * information from one of the png_image_begin_read_ APIs and dynamically - * allocate the required memory. - */ - -/* Corresponding information about the pixels */ -#define PNG_IMAGE_PIXEL_(test,fmt)\ - (((fmt)&PNG_FORMAT_FLAG_COLORMAP)?1:test(fmt)) - -#define PNG_IMAGE_PIXEL_CHANNELS(fmt)\ - PNG_IMAGE_PIXEL_(PNG_IMAGE_SAMPLE_CHANNELS,fmt) - /* The number of separate channels (components) in a pixel; 1 for a - * color-mapped image. - */ - -#define PNG_IMAGE_PIXEL_COMPONENT_SIZE(fmt)\ - PNG_IMAGE_PIXEL_(PNG_IMAGE_SAMPLE_COMPONENT_SIZE,fmt) - /* The size, in bytes, of each component in a pixel; 1 for a color-mapped - * image. - */ - -#define PNG_IMAGE_PIXEL_SIZE(fmt) PNG_IMAGE_PIXEL_(PNG_IMAGE_SAMPLE_SIZE,fmt) - /* The size, in bytes, of a complete pixel; 1 for a color-mapped image. */ - -/* Information about the whole row, or whole image */ -#define PNG_IMAGE_ROW_STRIDE(image)\ - (PNG_IMAGE_PIXEL_CHANNELS((image).format) * (image).width) - /* Return the total number of components in a single row of the image; this - * is the minimum 'row stride', the minimum count of components between each - * row. For a color-mapped image this is the minimum number of bytes in a - * row. - * - * WARNING: this macro overflows for some images with more than one component - * and very large image widths. libpng will refuse to process an image where - * this macro would overflow. - */ - -#define PNG_IMAGE_BUFFER_SIZE(image, row_stride)\ - (PNG_IMAGE_PIXEL_COMPONENT_SIZE((image).format)*(image).height*(row_stride)) - /* Return the size, in bytes, of an image buffer given a png_image and a row - * stride - the number of components to leave space for in each row. - * - * WARNING: this macro overflows a 32-bit integer for some large PNG images, - * libpng will refuse to process an image where such an overflow would occur. - */ - -#define PNG_IMAGE_SIZE(image)\ - PNG_IMAGE_BUFFER_SIZE(image, PNG_IMAGE_ROW_STRIDE(image)) - /* Return the size, in bytes, of the image in memory given just a png_image; - * the row stride is the minimum stride required for the image. - */ - -#define PNG_IMAGE_COLORMAP_SIZE(image)\ - (PNG_IMAGE_SAMPLE_SIZE((image).format) * (image).colormap_entries) - /* Return the size, in bytes, of the color-map of this image. If the image - * format is not a color-map format this will return a size sufficient for - * 256 entries in the given format; check PNG_FORMAT_FLAG_COLORMAP if - * you don't want to allocate a color-map in this case. - */ - -/* PNG_IMAGE_FLAG_* - * - * Flags containing additional information about the image are held in the - * 'flags' field of png_image. - */ -#define PNG_IMAGE_FLAG_COLORSPACE_NOT_sRGB 0x01 - /* This indicates that the RGB values of the in-memory bitmap do not - * correspond to the red, green and blue end-points defined by sRGB. - */ - -#define PNG_IMAGE_FLAG_FAST 0x02 - /* On write emphasise speed over compression; the resultant PNG file will be - * larger but will be produced significantly faster, particular for large - * images. Do not use this option for images which will be distributed, only - * used it when producing intermediate files that will be read back in - * repeatedly. For a typical 24-bit image the option will double the read - * speed at the cost of increasing the image size by 25%, however for many - * more compressible images the PNG file can be 10 times larger with only a - * slight speed gain. - */ - -#define PNG_IMAGE_FLAG_16BIT_sRGB 0x04 - /* On read if the image is a 16-bit per component image and there is no gAMA - * or sRGB chunk assume that the components are sRGB encoded. Notice that - * images output by the simplified API always have gamma information; setting - * this flag only affects the interpretation of 16-bit images from an - * external source. It is recommended that the application expose this flag - * to the user; the user can normally easily recognize the difference between - * linear and sRGB encoding. This flag has no effect on write - the data - * passed to the write APIs must have the correct encoding (as defined - * above.) - * - * If the flag is not set (the default) input 16-bit per component data is - * assumed to be linear. - * - * NOTE: the flag can only be set after the png_image_begin_read_ call, - * because that call initializes the 'flags' field. - */ - -#ifdef PNG_SIMPLIFIED_READ_SUPPORTED -/* READ APIs - * --------- - * - * The png_image passed to the read APIs must have been initialized by setting - * the png_controlp field 'opaque' to NULL (or, safer, memset the whole thing.) - */ -#ifdef PNG_STDIO_SUPPORTED -PNG_EXPORT(234, int, png_image_begin_read_from_file, (png_imagep image, - const char *file_name)); - /* The named file is opened for read and the image header is filled in - * from the PNG header in the file. - */ - -PNG_EXPORT(235, int, png_image_begin_read_from_stdio, (png_imagep image, - FILE* file)); - /* The PNG header is read from the stdio FILE object. */ -#endif /* STDIO */ - -PNG_EXPORT(236, int, png_image_begin_read_from_memory, (png_imagep image, - png_const_voidp memory, size_t size)); - /* The PNG header is read from the given memory buffer. */ - -PNG_EXPORT(237, int, png_image_finish_read, (png_imagep image, - png_const_colorp background, void *buffer, png_int_32 row_stride, - void *colormap)); - /* Finish reading the image into the supplied buffer and clean up the - * png_image structure. - * - * row_stride is the step, in byte or 2-byte units as appropriate, - * between adjacent rows. A positive stride indicates that the top-most row - * is first in the buffer - the normal top-down arrangement. A negative - * stride indicates that the bottom-most row is first in the buffer. - * - * background need only be supplied if an alpha channel must be removed from - * a png_byte format and the removal is to be done by compositing on a solid - * color; otherwise it may be NULL and any composition will be done directly - * onto the buffer. The value is an sRGB color to use for the background, - * for grayscale output the green channel is used. - * - * background must be supplied when an alpha channel must be removed from a - * single byte color-mapped output format, in other words if: - * - * 1) The original format from png_image_begin_read_from_* had - * PNG_FORMAT_FLAG_ALPHA set. - * 2) The format set by the application does not. - * 3) The format set by the application has PNG_FORMAT_FLAG_COLORMAP set and - * PNG_FORMAT_FLAG_LINEAR *not* set. - * - * For linear output removing the alpha channel is always done by compositing - * on black and background is ignored. - * - * colormap must be supplied when PNG_FORMAT_FLAG_COLORMAP is set. It must - * be at least the size (in bytes) returned by PNG_IMAGE_COLORMAP_SIZE. - * image->colormap_entries will be updated to the actual number of entries - * written to the colormap; this may be less than the original value. - */ - -PNG_EXPORT(238, void, png_image_free, (png_imagep image)); - /* Free any data allocated by libpng in image->opaque, setting the pointer to - * NULL. May be called at any time after the structure is initialized. - */ -#endif /* SIMPLIFIED_READ */ - -#ifdef PNG_SIMPLIFIED_WRITE_SUPPORTED -/* WRITE APIS - * ---------- - * For write you must initialize a png_image structure to describe the image to - * be written. To do this use memset to set the whole structure to 0 then - * initialize fields describing your image. - * - * version: must be set to PNG_IMAGE_VERSION - * opaque: must be initialized to NULL - * width: image width in pixels - * height: image height in rows - * format: the format of the data (image and color-map) you wish to write - * flags: set to 0 unless one of the defined flags applies; set - * PNG_IMAGE_FLAG_COLORSPACE_NOT_sRGB for color format images where the RGB - * values do not correspond to the colors in sRGB. - * colormap_entries: set to the number of entries in the color-map (0 to 256) - */ -#ifdef PNG_SIMPLIFIED_WRITE_STDIO_SUPPORTED -PNG_EXPORT(239, int, png_image_write_to_file, (png_imagep image, - const char *file, int convert_to_8bit, const void *buffer, - png_int_32 row_stride, const void *colormap)); - /* Write the image to the named file. */ - -PNG_EXPORT(240, int, png_image_write_to_stdio, (png_imagep image, FILE *file, - int convert_to_8_bit, const void *buffer, png_int_32 row_stride, - const void *colormap)); - /* Write the image to the given (FILE*). */ -#endif /* SIMPLIFIED_WRITE_STDIO */ - -/* With all write APIs if image is in one of the linear formats with 16-bit - * data then setting convert_to_8_bit will cause the output to be an 8-bit PNG - * gamma encoded according to the sRGB specification, otherwise a 16-bit linear - * encoded PNG file is written. - * - * With color-mapped data formats the colormap parameter point to a color-map - * with at least image->colormap_entries encoded in the specified format. If - * the format is linear the written PNG color-map will be converted to sRGB - * regardless of the convert_to_8_bit flag. - * - * With all APIs row_stride is handled as in the read APIs - it is the spacing - * from one row to the next in component sized units (1 or 2 bytes) and if - * negative indicates a bottom-up row layout in the buffer. If row_stride is - * zero, libpng will calculate it for you from the image width and number of - * channels. - * - * Note that the write API does not support interlacing, sub-8-bit pixels or - * most ancillary chunks. If you need to write text chunks (e.g. for copyright - * notices) you need to use one of the other APIs. - */ - -PNG_EXPORT(245, int, png_image_write_to_memory, (png_imagep image, void *memory, - png_alloc_size_t * PNG_RESTRICT memory_bytes, int convert_to_8_bit, - const void *buffer, png_int_32 row_stride, const void *colormap)); - /* Write the image to the given memory buffer. The function both writes the - * whole PNG data stream to *memory and updates *memory_bytes with the count - * of bytes written. - * - * 'memory' may be NULL. In this case *memory_bytes is not read however on - * success the number of bytes which would have been written will still be - * stored in *memory_bytes. On failure *memory_bytes will contain 0. - * - * If 'memory' is not NULL it must point to memory[*memory_bytes] of - * writeable memory. - * - * If the function returns success memory[*memory_bytes] (if 'memory' is not - * NULL) contains the written PNG data. *memory_bytes will always be less - * than or equal to the original value. - * - * If the function returns false and *memory_bytes was not changed an error - * occurred during write. If *memory_bytes was changed, or is not 0 if - * 'memory' was NULL, the write would have succeeded but for the memory - * buffer being too small. *memory_bytes contains the required number of - * bytes and will be bigger that the original value. - */ - -#define png_image_write_get_memory_size(image, size, convert_to_8_bit, buffer,\ - row_stride, colormap)\ - png_image_write_to_memory(&(image), 0, &(size), convert_to_8_bit, buffer,\ - row_stride, colormap) - /* Return the amount of memory in 'size' required to compress this image. - * The png_image structure 'image' must be filled in as in the above - * function and must not be changed before the actual write call, the buffer - * and all other parameters must also be identical to that in the final - * write call. The 'size' variable need not be initialized. - * - * NOTE: the macro returns true/false, if false is returned 'size' will be - * set to zero and the write failed and probably will fail if tried again. - */ - -/* You can pre-allocate the buffer by making sure it is of sufficient size - * regardless of the amount of compression achieved. The buffer size will - * always be bigger than the original image and it will never be filled. The - * following macros are provided to assist in allocating the buffer. - */ -#define PNG_IMAGE_DATA_SIZE(image) (PNG_IMAGE_SIZE(image)+(image).height) - /* The number of uncompressed bytes in the PNG byte encoding of the image; - * uncompressing the PNG IDAT data will give this number of bytes. - * - * NOTE: while PNG_IMAGE_SIZE cannot overflow for an image in memory this - * macro can because of the extra bytes used in the PNG byte encoding. You - * need to avoid this macro if your image size approaches 2^30 in width or - * height. The same goes for the remainder of these macros; they all produce - * bigger numbers than the actual in-memory image size. - */ -#ifndef PNG_ZLIB_MAX_SIZE -# define PNG_ZLIB_MAX_SIZE(b) ((b)+(((b)+7U)>>3)+(((b)+63U)>>6)+11U) - /* An upper bound on the number of compressed bytes given 'b' uncompressed - * bytes. This is based on deflateBounds() in zlib; different - * implementations of zlib compression may conceivably produce more data so - * if your zlib implementation is not zlib itself redefine this macro - * appropriately. - */ -#endif - -#define PNG_IMAGE_COMPRESSED_SIZE_MAX(image)\ - PNG_ZLIB_MAX_SIZE((png_alloc_size_t)PNG_IMAGE_DATA_SIZE(image)) - /* An upper bound on the size of the data in the PNG IDAT chunks. */ - -#define PNG_IMAGE_PNG_SIZE_MAX_(image, image_size)\ - ((8U/*sig*/+25U/*IHDR*/+16U/*gAMA*/+44U/*cHRM*/+12U/*IEND*/+\ - (((image).format&PNG_FORMAT_FLAG_COLORMAP)?/*colormap: PLTE, tRNS*/\ - 12U+3U*(image).colormap_entries/*PLTE data*/+\ - (((image).format&PNG_FORMAT_FLAG_ALPHA)?\ - 12U/*tRNS*/+(image).colormap_entries:0U):0U)+\ - 12U)+(12U*((image_size)/PNG_ZBUF_SIZE))/*IDAT*/+(image_size)) - /* A helper for the following macro; if your compiler cannot handle the - * following macro use this one with the result of - * PNG_IMAGE_COMPRESSED_SIZE_MAX(image) as the second argument (most - * compilers should handle this just fine.) - */ - -#define PNG_IMAGE_PNG_SIZE_MAX(image)\ - PNG_IMAGE_PNG_SIZE_MAX_(image, PNG_IMAGE_COMPRESSED_SIZE_MAX(image)) - /* An upper bound on the total length of the PNG data stream for 'image'. - * The result is of type png_alloc_size_t, on 32-bit systems this may - * overflow even though PNG_IMAGE_DATA_SIZE does not overflow; the write will - * run out of buffer space but return a corrected size which should work. - */ -#endif /* SIMPLIFIED_WRITE */ -/******************************************************************************* - * END OF SIMPLIFIED API - ******************************************************************************/ -#endif /* SIMPLIFIED_{READ|WRITE} */ - -/******************************************************************************* - * Section 6: IMPLEMENTATION OPTIONS - ******************************************************************************* - * - * Support for arbitrary implementation-specific optimizations. The API allows - * particular options to be turned on or off. 'Option' is the number of the - * option and 'onoff' is 0 (off) or non-0 (on). The value returned is given - * by the PNG_OPTION_ defines below. - * - * HARDWARE: normally hardware capabilities, such as the Intel SSE instructions, - * are detected at run time, however sometimes it may be impossible - * to do this in user mode, in which case it is necessary to discover - * the capabilities in an OS specific way. Such capabilities are - * listed here when libpng has support for them and must be turned - * ON by the application if present. - * - * SOFTWARE: sometimes software optimizations actually result in performance - * decrease on some architectures or systems, or with some sets of - * PNG images. 'Software' options allow such optimizations to be - * selected at run time. - */ -#ifdef PNG_SET_OPTION_SUPPORTED -#ifdef PNG_ARM_NEON_API_SUPPORTED -# define PNG_ARM_NEON 0 /* HARDWARE: ARM Neon SIMD instructions supported */ -#endif -#define PNG_MAXIMUM_INFLATE_WINDOW 2 /* SOFTWARE: force maximum window */ -#define PNG_SKIP_sRGB_CHECK_PROFILE 4 /* SOFTWARE: Check ICC profile for sRGB */ -#ifdef PNG_MIPS_MSA_API_SUPPORTED -# define PNG_MIPS_MSA 6 /* HARDWARE: MIPS Msa SIMD instructions supported */ -#endif -#define PNG_IGNORE_ADLER32 8 -#ifdef PNG_POWERPC_VSX_API_SUPPORTED -# define PNG_POWERPC_VSX 10 /* HARDWARE: PowerPC VSX SIMD instructions supported */ -#endif -#define PNG_OPTION_NEXT 12 /* Next option - numbers must be even */ - -/* Return values: NOTE: there are four values and 'off' is *not* zero */ -#define PNG_OPTION_UNSET 0 /* Unset - defaults to off */ -#define PNG_OPTION_INVALID 1 /* Option number out of range */ -#define PNG_OPTION_OFF 2 -#define PNG_OPTION_ON 3 - -PNG_EXPORT(244, int, png_set_option, (png_structrp png_ptr, int option, - int onoff)); -#endif /* SET_OPTION */ - -/******************************************************************************* - * END OF HARDWARE AND SOFTWARE OPTIONS - ******************************************************************************/ - -/* Maintainer: Put new public prototypes here ^, in libpng.3, in project - * defs, and in scripts/symbols.def. - */ - -/* The last ordinal number (this is the *last* one already used; the next - * one to use is one more than this.) - */ -#ifdef PNG_EXPORT_LAST_ORDINAL - PNG_EXPORT_LAST_ORDINAL(249); -#endif - -#ifdef __cplusplus -} -#endif - -#endif /* PNG_VERSION_INFO_ONLY */ -/* Do not put anything past this line */ -#endif /* PNG_H */ diff --git a/vstudio/include/pngconf.h b/vstudio/include/pngconf.h deleted file mode 100644 index 5e641b2..0000000 --- a/vstudio/include/pngconf.h +++ /dev/null @@ -1,623 +0,0 @@ - -/* pngconf.h - machine configurable file for libpng - * - * libpng version 1.6.36 - * - * Copyright (c) 2018 Cosmin Truta - * Copyright (c) 1998-2002,2004,2006-2016,2018 Glenn Randers-Pehrson - * Copyright (c) 1996-1997 Andreas Dilger - * Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc. - * - * This code is released under the libpng license. - * For conditions of distribution and use, see the disclaimer - * and license in png.h - * - * Any machine specific code is near the front of this file, so if you - * are configuring libpng for a machine, you may want to read the section - * starting here down to where it starts to typedef png_color, png_text, - * and png_info. - */ - -#ifndef PNGCONF_H -#define PNGCONF_H - -#ifndef PNG_BUILDING_SYMBOL_TABLE /* else includes may cause problems */ - -/* From libpng 1.6.0 libpng requires an ANSI X3.159-1989 ("ISOC90") compliant C - * compiler for correct compilation. The following header files are required by - * the standard. If your compiler doesn't provide these header files, or they - * do not match the standard, you will need to provide/improve them. - */ -#include -#include - -/* Library header files. These header files are all defined by ISOC90; libpng - * expects conformant implementations, however, an ISOC90 conformant system need - * not provide these header files if the functionality cannot be implemented. - * In this case it will be necessary to disable the relevant parts of libpng in - * the build of pnglibconf.h. - * - * Prior to 1.6.0 string.h was included here; the API changes in 1.6.0 to not - * include this unnecessary header file. - */ - -#ifdef PNG_STDIO_SUPPORTED - /* Required for the definition of FILE: */ -# include -#endif - -#ifdef PNG_SETJMP_SUPPORTED - /* Required for the definition of jmp_buf and the declaration of longjmp: */ -# include -#endif - -#ifdef PNG_CONVERT_tIME_SUPPORTED - /* Required for struct tm: */ -# include -#endif - -#endif /* PNG_BUILDING_SYMBOL_TABLE */ - -/* Prior to 1.6.0, it was possible to turn off 'const' in declarations, - * using PNG_NO_CONST. This is no longer supported. - */ -#define PNG_CONST const /* backward compatibility only */ - -/* This controls optimization of the reading of 16-bit and 32-bit - * values from PNG files. It can be set on a per-app-file basis: it - * just changes whether a macro is used when the function is called. - * The library builder sets the default; if read functions are not - * built into the library the macro implementation is forced on. - */ -#ifndef PNG_READ_INT_FUNCTIONS_SUPPORTED -# define PNG_USE_READ_MACROS -#endif -#if !defined(PNG_NO_USE_READ_MACROS) && !defined(PNG_USE_READ_MACROS) -# if PNG_DEFAULT_READ_MACROS -# define PNG_USE_READ_MACROS -# endif -#endif - -/* COMPILER SPECIFIC OPTIONS. - * - * These options are provided so that a variety of difficult compilers - * can be used. Some are fixed at build time (e.g. PNG_API_RULE - * below) but still have compiler specific implementations, others - * may be changed on a per-file basis when compiling against libpng. - */ - -/* The PNGARG macro was used in versions of libpng prior to 1.6.0 to protect - * against legacy (pre ISOC90) compilers that did not understand function - * prototypes. It is not required for modern C compilers. - */ -#ifndef PNGARG -# define PNGARG(arglist) arglist -#endif - -/* Function calling conventions. - * ============================= - * Normally it is not necessary to specify to the compiler how to call - * a function - it just does it - however on x86 systems derived from - * Microsoft and Borland C compilers ('IBM PC', 'DOS', 'Windows' systems - * and some others) there are multiple ways to call a function and the - * default can be changed on the compiler command line. For this reason - * libpng specifies the calling convention of every exported function and - * every function called via a user supplied function pointer. This is - * done in this file by defining the following macros: - * - * PNGAPI Calling convention for exported functions. - * PNGCBAPI Calling convention for user provided (callback) functions. - * PNGCAPI Calling convention used by the ANSI-C library (required - * for longjmp callbacks and sometimes used internally to - * specify the calling convention for zlib). - * - * These macros should never be overridden. If it is necessary to - * change calling convention in a private build this can be done - * by setting PNG_API_RULE (which defaults to 0) to one of the values - * below to select the correct 'API' variants. - * - * PNG_API_RULE=0 Use PNGCAPI - the 'C' calling convention - throughout. - * This is correct in every known environment. - * PNG_API_RULE=1 Use the operating system convention for PNGAPI and - * the 'C' calling convention (from PNGCAPI) for - * callbacks (PNGCBAPI). This is no longer required - * in any known environment - if it has to be used - * please post an explanation of the problem to the - * libpng mailing list. - * - * These cases only differ if the operating system does not use the C - * calling convention, at present this just means the above cases - * (x86 DOS/Windows systems) and, even then, this does not apply to - * Cygwin running on those systems. - * - * Note that the value must be defined in pnglibconf.h so that what - * the application uses to call the library matches the conventions - * set when building the library. - */ - -/* Symbol export - * ============= - * When building a shared library it is almost always necessary to tell - * the compiler which symbols to export. The png.h macro 'PNG_EXPORT' - * is used to mark the symbols. On some systems these symbols can be - * extracted at link time and need no special processing by the compiler, - * on other systems the symbols are flagged by the compiler and just - * the declaration requires a special tag applied (unfortunately) in a - * compiler dependent way. Some systems can do either. - * - * A small number of older systems also require a symbol from a DLL to - * be flagged to the program that calls it. This is a problem because - * we do not know in the header file included by application code that - * the symbol will come from a shared library, as opposed to a statically - * linked one. For this reason the application must tell us by setting - * the magic flag PNG_USE_DLL to turn on the special processing before - * it includes png.h. - * - * Four additional macros are used to make this happen: - * - * PNG_IMPEXP The magic (if any) to cause a symbol to be exported from - * the build or imported if PNG_USE_DLL is set - compiler - * and system specific. - * - * PNG_EXPORT_TYPE(type) A macro that pre or appends PNG_IMPEXP to - * 'type', compiler specific. - * - * PNG_DLL_EXPORT Set to the magic to use during a libpng build to - * make a symbol exported from the DLL. Not used in the - * public header files; see pngpriv.h for how it is used - * in the libpng build. - * - * PNG_DLL_IMPORT Set to the magic to force the libpng symbols to come - * from a DLL - used to define PNG_IMPEXP when - * PNG_USE_DLL is set. - */ - -/* System specific discovery. - * ========================== - * This code is used at build time to find PNG_IMPEXP, the API settings - * and PNG_EXPORT_TYPE(), it may also set a macro to indicate the DLL - * import processing is possible. On Windows systems it also sets - * compiler-specific macros to the values required to change the calling - * conventions of the various functions. - */ -#if defined(_Windows) || defined(_WINDOWS) || defined(WIN32) ||\ - defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) - /* Windows system (DOS doesn't support DLLs). Includes builds under Cygwin or - * MinGW on any architecture currently supported by Windows. Also includes - * Watcom builds but these need special treatment because they are not - * compatible with GCC or Visual C because of different calling conventions. - */ -# if PNG_API_RULE == 2 - /* If this line results in an error, either because __watcall is not - * understood or because of a redefine just below you cannot use *this* - * build of the library with the compiler you are using. *This* build was - * build using Watcom and applications must also be built using Watcom! - */ -# define PNGCAPI __watcall -# endif - -# if defined(__GNUC__) || (defined(_MSC_VER) && (_MSC_VER >= 800)) -# define PNGCAPI __cdecl -# if PNG_API_RULE == 1 - /* If this line results in an error __stdcall is not understood and - * PNG_API_RULE should not have been set to '1'. - */ -# define PNGAPI __stdcall -# endif -# else - /* An older compiler, or one not detected (erroneously) above, - * if necessary override on the command line to get the correct - * variants for the compiler. - */ -# ifndef PNGCAPI -# define PNGCAPI _cdecl -# endif -# if PNG_API_RULE == 1 && !defined(PNGAPI) -# define PNGAPI _stdcall -# endif -# endif /* compiler/api */ - - /* NOTE: PNGCBAPI always defaults to PNGCAPI. */ - -# if defined(PNGAPI) && !defined(PNG_USER_PRIVATEBUILD) -# error "PNG_USER_PRIVATEBUILD must be defined if PNGAPI is changed" -# endif - -# if (defined(_MSC_VER) && _MSC_VER < 800) ||\ - (defined(__BORLANDC__) && __BORLANDC__ < 0x500) - /* older Borland and MSC - * compilers used '__export' and required this to be after - * the type. - */ -# ifndef PNG_EXPORT_TYPE -# define PNG_EXPORT_TYPE(type) type PNG_IMPEXP -# endif -# define PNG_DLL_EXPORT __export -# else /* newer compiler */ -# define PNG_DLL_EXPORT __declspec(dllexport) -# ifndef PNG_DLL_IMPORT -# define PNG_DLL_IMPORT __declspec(dllimport) -# endif -# endif /* compiler */ - -#else /* !Windows */ -# if (defined(__IBMC__) || defined(__IBMCPP__)) && defined(__OS2__) -# define PNGAPI _System -# else /* !Windows/x86 && !OS/2 */ - /* Use the defaults, or define PNG*API on the command line (but - * this will have to be done for every compile!) - */ -# endif /* other system, !OS/2 */ -#endif /* !Windows/x86 */ - -/* Now do all the defaulting . */ -#ifndef PNGCAPI -# define PNGCAPI -#endif -#ifndef PNGCBAPI -# define PNGCBAPI PNGCAPI -#endif -#ifndef PNGAPI -# define PNGAPI PNGCAPI -#endif - -/* PNG_IMPEXP may be set on the compilation system command line or (if not set) - * then in an internal header file when building the library, otherwise (when - * using the library) it is set here. - */ -#ifndef PNG_IMPEXP -# if defined(PNG_USE_DLL) && defined(PNG_DLL_IMPORT) - /* This forces use of a DLL, disallowing static linking */ -# define PNG_IMPEXP PNG_DLL_IMPORT -# endif - -# ifndef PNG_IMPEXP -# define PNG_IMPEXP -# endif -#endif - -/* In 1.5.2 the definition of PNG_FUNCTION has been changed to always treat - * 'attributes' as a storage class - the attributes go at the start of the - * function definition, and attributes are always appended regardless of the - * compiler. This considerably simplifies these macros but may cause problems - * if any compilers both need function attributes and fail to handle them as - * a storage class (this is unlikely.) - */ -#ifndef PNG_FUNCTION -# define PNG_FUNCTION(type, name, args, attributes) attributes type name args -#endif - -#ifndef PNG_EXPORT_TYPE -# define PNG_EXPORT_TYPE(type) PNG_IMPEXP type -#endif - - /* The ordinal value is only relevant when preprocessing png.h for symbol - * table entries, so we discard it here. See the .dfn files in the - * scripts directory. - */ - -#ifndef PNG_EXPORTA -# define PNG_EXPORTA(ordinal, type, name, args, attributes) \ - PNG_FUNCTION(PNG_EXPORT_TYPE(type), (PNGAPI name), PNGARG(args), \ - PNG_LINKAGE_API attributes) -#endif - -/* ANSI-C (C90) does not permit a macro to be invoked with an empty argument, - * so make something non-empty to satisfy the requirement: - */ -#define PNG_EMPTY /*empty list*/ - -#define PNG_EXPORT(ordinal, type, name, args) \ - PNG_EXPORTA(ordinal, type, name, args, PNG_EMPTY) - -/* Use PNG_REMOVED to comment out a removed interface. */ -#ifndef PNG_REMOVED -# define PNG_REMOVED(ordinal, type, name, args, attributes) -#endif - -#ifndef PNG_CALLBACK -# define PNG_CALLBACK(type, name, args) type (PNGCBAPI name) PNGARG(args) -#endif - -/* Support for compiler specific function attributes. These are used - * so that where compiler support is available incorrect use of API - * functions in png.h will generate compiler warnings. - * - * Added at libpng-1.2.41. - */ - -#ifndef PNG_NO_PEDANTIC_WARNINGS -# ifndef PNG_PEDANTIC_WARNINGS_SUPPORTED -# define PNG_PEDANTIC_WARNINGS_SUPPORTED -# endif -#endif - -#ifdef PNG_PEDANTIC_WARNINGS_SUPPORTED - /* Support for compiler specific function attributes. These are used - * so that where compiler support is available, incorrect use of API - * functions in png.h will generate compiler warnings. Added at libpng - * version 1.2.41. Disabling these removes the warnings but may also produce - * less efficient code. - */ -# if defined(__clang__) && defined(__has_attribute) - /* Clang defines both __clang__ and __GNUC__. Check __clang__ first. */ -# if !defined(PNG_USE_RESULT) && __has_attribute(__warn_unused_result__) -# define PNG_USE_RESULT __attribute__((__warn_unused_result__)) -# endif -# if !defined(PNG_NORETURN) && __has_attribute(__noreturn__) -# define PNG_NORETURN __attribute__((__noreturn__)) -# endif -# if !defined(PNG_ALLOCATED) && __has_attribute(__malloc__) -# define PNG_ALLOCATED __attribute__((__malloc__)) -# endif -# if !defined(PNG_DEPRECATED) && __has_attribute(__deprecated__) -# define PNG_DEPRECATED __attribute__((__deprecated__)) -# endif -# if !defined(PNG_PRIVATE) -# ifdef __has_extension -# if __has_extension(attribute_unavailable_with_message) -# define PNG_PRIVATE __attribute__((__unavailable__(\ - "This function is not exported by libpng."))) -# endif -# endif -# endif -# ifndef PNG_RESTRICT -# define PNG_RESTRICT __restrict -# endif - -# elif defined(__GNUC__) -# ifndef PNG_USE_RESULT -# define PNG_USE_RESULT __attribute__((__warn_unused_result__)) -# endif -# ifndef PNG_NORETURN -# define PNG_NORETURN __attribute__((__noreturn__)) -# endif -# if __GNUC__ >= 3 -# ifndef PNG_ALLOCATED -# define PNG_ALLOCATED __attribute__((__malloc__)) -# endif -# ifndef PNG_DEPRECATED -# define PNG_DEPRECATED __attribute__((__deprecated__)) -# endif -# ifndef PNG_PRIVATE -# if 0 /* Doesn't work so we use deprecated instead*/ -# define PNG_PRIVATE \ - __attribute__((warning("This function is not exported by libpng."))) -# else -# define PNG_PRIVATE \ - __attribute__((__deprecated__)) -# endif -# endif -# if ((__GNUC__ > 3) || !defined(__GNUC_MINOR__) || (__GNUC_MINOR__ >= 1)) -# ifndef PNG_RESTRICT -# define PNG_RESTRICT __restrict -# endif -# endif /* __GNUC__.__GNUC_MINOR__ > 3.0 */ -# endif /* __GNUC__ >= 3 */ - -# elif defined(_MSC_VER) && (_MSC_VER >= 1300) -# ifndef PNG_USE_RESULT -# define PNG_USE_RESULT /* not supported */ -# endif -# ifndef PNG_NORETURN -# define PNG_NORETURN __declspec(noreturn) -# endif -# ifndef PNG_ALLOCATED -# if (_MSC_VER >= 1400) -# define PNG_ALLOCATED __declspec(restrict) -# endif -# endif -# ifndef PNG_DEPRECATED -# define PNG_DEPRECATED __declspec(deprecated) -# endif -# ifndef PNG_PRIVATE -# define PNG_PRIVATE __declspec(deprecated) -# endif -# ifndef PNG_RESTRICT -# if (_MSC_VER >= 1400) -# define PNG_RESTRICT __restrict -# endif -# endif - -# elif defined(__WATCOMC__) -# ifndef PNG_RESTRICT -# define PNG_RESTRICT __restrict -# endif -# endif -#endif /* PNG_PEDANTIC_WARNINGS */ - -#ifndef PNG_DEPRECATED -# define PNG_DEPRECATED /* Use of this function is deprecated */ -#endif -#ifndef PNG_USE_RESULT -# define PNG_USE_RESULT /* The result of this function must be checked */ -#endif -#ifndef PNG_NORETURN -# define PNG_NORETURN /* This function does not return */ -#endif -#ifndef PNG_ALLOCATED -# define PNG_ALLOCATED /* The result of the function is new memory */ -#endif -#ifndef PNG_PRIVATE -# define PNG_PRIVATE /* This is a private libpng function */ -#endif -#ifndef PNG_RESTRICT -# define PNG_RESTRICT /* The C99 "restrict" feature */ -#endif - -#ifndef PNG_FP_EXPORT /* A floating point API. */ -# ifdef PNG_FLOATING_POINT_SUPPORTED -# define PNG_FP_EXPORT(ordinal, type, name, args)\ - PNG_EXPORT(ordinal, type, name, args); -# else /* No floating point APIs */ -# define PNG_FP_EXPORT(ordinal, type, name, args) -# endif -#endif -#ifndef PNG_FIXED_EXPORT /* A fixed point API. */ -# ifdef PNG_FIXED_POINT_SUPPORTED -# define PNG_FIXED_EXPORT(ordinal, type, name, args)\ - PNG_EXPORT(ordinal, type, name, args); -# else /* No fixed point APIs */ -# define PNG_FIXED_EXPORT(ordinal, type, name, args) -# endif -#endif - -#ifndef PNG_BUILDING_SYMBOL_TABLE -/* Some typedefs to get us started. These should be safe on most of the common - * platforms. - * - * png_uint_32 and png_int_32 may, currently, be larger than required to hold a - * 32-bit value however this is not normally advisable. - * - * png_uint_16 and png_int_16 should always be two bytes in size - this is - * verified at library build time. - * - * png_byte must always be one byte in size. - * - * The checks below use constants from limits.h, as defined by the ISOC90 - * standard. - */ -#if CHAR_BIT == 8 && UCHAR_MAX == 255 - typedef unsigned char png_byte; -#else -# error "libpng requires 8-bit bytes" -#endif - -#if INT_MIN == -32768 && INT_MAX == 32767 - typedef int png_int_16; -#elif SHRT_MIN == -32768 && SHRT_MAX == 32767 - typedef short png_int_16; -#else -# error "libpng requires a signed 16-bit type" -#endif - -#if UINT_MAX == 65535 - typedef unsigned int png_uint_16; -#elif USHRT_MAX == 65535 - typedef unsigned short png_uint_16; -#else -# error "libpng requires an unsigned 16-bit type" -#endif - -#if INT_MIN < -2147483646 && INT_MAX > 2147483646 - typedef int png_int_32; -#elif LONG_MIN < -2147483646 && LONG_MAX > 2147483646 - typedef long int png_int_32; -#else -# error "libpng requires a signed 32-bit (or more) type" -#endif - -#if UINT_MAX > 4294967294U - typedef unsigned int png_uint_32; -#elif ULONG_MAX > 4294967294U - typedef unsigned long int png_uint_32; -#else -# error "libpng requires an unsigned 32-bit (or more) type" -#endif - -/* Prior to 1.6.0, it was possible to disable the use of size_t and ptrdiff_t. - * From 1.6.0 onwards, an ISO C90 compiler, as well as a standard-compliant - * behavior of sizeof and ptrdiff_t are required. - * The legacy typedefs are provided here for backwards compatibility. - */ -typedef size_t png_size_t; -typedef ptrdiff_t png_ptrdiff_t; - -/* libpng needs to know the maximum value of 'size_t' and this controls the - * definition of png_alloc_size_t, below. This maximum value of size_t limits - * but does not control the maximum allocations the library makes - there is - * direct application control of this through png_set_user_limits(). - */ -#ifndef PNG_SMALL_SIZE_T - /* Compiler specific tests for systems where size_t is known to be less than - * 32 bits (some of these systems may no longer work because of the lack of - * 'far' support; see above.) - */ -# if (defined(__TURBOC__) && !defined(__FLAT__)) ||\ - (defined(_MSC_VER) && defined(MAXSEG_64K)) -# define PNG_SMALL_SIZE_T -# endif -#endif - -/* png_alloc_size_t is guaranteed to be no smaller than size_t, and no smaller - * than png_uint_32. Casts from size_t or png_uint_32 to png_alloc_size_t are - * not necessary; in fact, it is recommended not to use them at all, so that - * the compiler can complain when something turns out to be problematic. - * - * Casts in the other direction (from png_alloc_size_t to size_t or - * png_uint_32) should be explicitly applied; however, we do not expect to - * encounter practical situations that require such conversions. - * - * PNG_SMALL_SIZE_T must be defined if the maximum value of size_t is less than - * 4294967295 - i.e. less than the maximum value of png_uint_32. - */ -#ifdef PNG_SMALL_SIZE_T - typedef png_uint_32 png_alloc_size_t; -#else - typedef size_t png_alloc_size_t; -#endif - -/* Prior to 1.6.0 libpng offered limited support for Microsoft C compiler - * implementations of Intel CPU specific support of user-mode segmented address - * spaces, where 16-bit pointers address more than 65536 bytes of memory using - * separate 'segment' registers. The implementation requires two different - * types of pointer (only one of which includes the segment value.) - * - * If required this support is available in version 1.2 of libpng and may be - * available in versions through 1.5, although the correctness of the code has - * not been verified recently. - */ - -/* Typedef for floating-point numbers that are converted to fixed-point with a - * multiple of 100,000, e.g., gamma - */ -typedef png_int_32 png_fixed_point; - -/* Add typedefs for pointers */ -typedef void * png_voidp; -typedef const void * png_const_voidp; -typedef png_byte * png_bytep; -typedef const png_byte * png_const_bytep; -typedef png_uint_32 * png_uint_32p; -typedef const png_uint_32 * png_const_uint_32p; -typedef png_int_32 * png_int_32p; -typedef const png_int_32 * png_const_int_32p; -typedef png_uint_16 * png_uint_16p; -typedef const png_uint_16 * png_const_uint_16p; -typedef png_int_16 * png_int_16p; -typedef const png_int_16 * png_const_int_16p; -typedef char * png_charp; -typedef const char * png_const_charp; -typedef png_fixed_point * png_fixed_point_p; -typedef const png_fixed_point * png_const_fixed_point_p; -typedef size_t * png_size_tp; -typedef const size_t * png_const_size_tp; - -#ifdef PNG_STDIO_SUPPORTED -typedef FILE * png_FILE_p; -#endif - -#ifdef PNG_FLOATING_POINT_SUPPORTED -typedef double * png_doublep; -typedef const double * png_const_doublep; -#endif - -/* Pointers to pointers; i.e. arrays */ -typedef png_byte * * png_bytepp; -typedef png_uint_32 * * png_uint_32pp; -typedef png_int_32 * * png_int_32pp; -typedef png_uint_16 * * png_uint_16pp; -typedef png_int_16 * * png_int_16pp; -typedef const char * * png_const_charpp; -typedef char * * png_charpp; -typedef png_fixed_point * * png_fixed_point_pp; -#ifdef PNG_FLOATING_POINT_SUPPORTED -typedef double * * png_doublepp; -#endif - -/* Pointers to pointers to pointers; i.e., pointer to array */ -typedef char * * * png_charppp; - -#endif /* PNG_BUILDING_SYMBOL_TABLE */ - -#endif /* PNGCONF_H */ diff --git a/vstudio/include/pnglibconf.h b/vstudio/include/pnglibconf.h deleted file mode 100644 index 00340c6..0000000 --- a/vstudio/include/pnglibconf.h +++ /dev/null @@ -1,219 +0,0 @@ -/* pnglibconf.h - library build configuration */ - -/* libpng version 1.6.36 */ - -/* Copyright (c) 2018 Cosmin Truta */ -/* Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson */ - -/* This code is released under the libpng license. */ -/* For conditions of distribution and use, see the disclaimer */ -/* and license in png.h */ - -/* pnglibconf.h */ -/* Machine generated file: DO NOT EDIT */ -/* Derived from: scripts/pnglibconf.dfa */ -#ifndef PNGLCONF_H -#define PNGLCONF_H -/* options */ -#define PNG_16BIT_SUPPORTED -#define PNG_ALIGNED_MEMORY_SUPPORTED -/*#undef PNG_ARM_NEON_API_SUPPORTED*/ -/*#undef PNG_ARM_NEON_CHECK_SUPPORTED*/ -#define PNG_BENIGN_ERRORS_SUPPORTED -#define PNG_BENIGN_READ_ERRORS_SUPPORTED -/*#undef PNG_BENIGN_WRITE_ERRORS_SUPPORTED*/ -#define PNG_BUILD_GRAYSCALE_PALETTE_SUPPORTED -#define PNG_CHECK_FOR_INVALID_INDEX_SUPPORTED -#define PNG_COLORSPACE_SUPPORTED -#define PNG_CONSOLE_IO_SUPPORTED -#define PNG_CONVERT_tIME_SUPPORTED -#define PNG_EASY_ACCESS_SUPPORTED -/*#undef PNG_ERROR_NUMBERS_SUPPORTED*/ -#define PNG_ERROR_TEXT_SUPPORTED -#define PNG_FIXED_POINT_SUPPORTED -#define PNG_FLOATING_ARITHMETIC_SUPPORTED -#define PNG_FLOATING_POINT_SUPPORTED -#define PNG_FORMAT_AFIRST_SUPPORTED -#define PNG_FORMAT_BGR_SUPPORTED -#define PNG_GAMMA_SUPPORTED -#define PNG_GET_PALETTE_MAX_SUPPORTED -#define PNG_HANDLE_AS_UNKNOWN_SUPPORTED -#define PNG_INCH_CONVERSIONS_SUPPORTED -#define PNG_INFO_IMAGE_SUPPORTED -#define PNG_IO_STATE_SUPPORTED -#define PNG_MNG_FEATURES_SUPPORTED -#define PNG_POINTER_INDEXING_SUPPORTED -/*#undef PNG_POWERPC_VSX_API_SUPPORTED*/ -/*#undef PNG_POWERPC_VSX_CHECK_SUPPORTED*/ -#define PNG_PROGRESSIVE_READ_SUPPORTED -#define PNG_READ_16BIT_SUPPORTED -#define PNG_READ_ALPHA_MODE_SUPPORTED -#define PNG_READ_ANCILLARY_CHUNKS_SUPPORTED -#define PNG_READ_BACKGROUND_SUPPORTED -#define PNG_READ_BGR_SUPPORTED -#define PNG_READ_CHECK_FOR_INVALID_INDEX_SUPPORTED -#define PNG_READ_COMPOSITE_NODIV_SUPPORTED -#define PNG_READ_COMPRESSED_TEXT_SUPPORTED -#define PNG_READ_EXPAND_16_SUPPORTED -#define PNG_READ_EXPAND_SUPPORTED -#define PNG_READ_FILLER_SUPPORTED -#define PNG_READ_GAMMA_SUPPORTED -#define PNG_READ_GET_PALETTE_MAX_SUPPORTED -#define PNG_READ_GRAY_TO_RGB_SUPPORTED -#define PNG_READ_INTERLACING_SUPPORTED -#define PNG_READ_INT_FUNCTIONS_SUPPORTED -#define PNG_READ_INVERT_ALPHA_SUPPORTED -#define PNG_READ_INVERT_SUPPORTED -#define PNG_READ_OPT_PLTE_SUPPORTED -#define PNG_READ_PACKSWAP_SUPPORTED -#define PNG_READ_PACK_SUPPORTED -#define PNG_READ_QUANTIZE_SUPPORTED -#define PNG_READ_RGB_TO_GRAY_SUPPORTED -#define PNG_READ_SCALE_16_TO_8_SUPPORTED -#define PNG_READ_SHIFT_SUPPORTED -#define PNG_READ_STRIP_16_TO_8_SUPPORTED -#define PNG_READ_STRIP_ALPHA_SUPPORTED -#define PNG_READ_SUPPORTED -#define PNG_READ_SWAP_ALPHA_SUPPORTED -#define PNG_READ_SWAP_SUPPORTED -#define PNG_READ_TEXT_SUPPORTED -#define PNG_READ_TRANSFORMS_SUPPORTED -#define PNG_READ_UNKNOWN_CHUNKS_SUPPORTED -#define PNG_READ_USER_CHUNKS_SUPPORTED -#define PNG_READ_USER_TRANSFORM_SUPPORTED -#define PNG_READ_bKGD_SUPPORTED -#define PNG_READ_cHRM_SUPPORTED -#define PNG_READ_eXIf_SUPPORTED -#define PNG_READ_gAMA_SUPPORTED -#define PNG_READ_hIST_SUPPORTED -#define PNG_READ_iCCP_SUPPORTED -#define PNG_READ_iTXt_SUPPORTED -#define PNG_READ_oFFs_SUPPORTED -#define PNG_READ_pCAL_SUPPORTED -#define PNG_READ_pHYs_SUPPORTED -#define PNG_READ_sBIT_SUPPORTED -#define PNG_READ_sCAL_SUPPORTED -#define PNG_READ_sPLT_SUPPORTED -#define PNG_READ_sRGB_SUPPORTED -#define PNG_READ_tEXt_SUPPORTED -#define PNG_READ_tIME_SUPPORTED -#define PNG_READ_tRNS_SUPPORTED -#define PNG_READ_zTXt_SUPPORTED -#define PNG_SAVE_INT_32_SUPPORTED -#define PNG_SAVE_UNKNOWN_CHUNKS_SUPPORTED -#define PNG_SEQUENTIAL_READ_SUPPORTED -#define PNG_SETJMP_SUPPORTED -#define PNG_SET_OPTION_SUPPORTED -#define PNG_SET_UNKNOWN_CHUNKS_SUPPORTED -#define PNG_SET_USER_LIMITS_SUPPORTED -#define PNG_SIMPLIFIED_READ_AFIRST_SUPPORTED -#define PNG_SIMPLIFIED_READ_BGR_SUPPORTED -#define PNG_SIMPLIFIED_READ_SUPPORTED -#define PNG_SIMPLIFIED_WRITE_AFIRST_SUPPORTED -#define PNG_SIMPLIFIED_WRITE_BGR_SUPPORTED -#define PNG_SIMPLIFIED_WRITE_STDIO_SUPPORTED -#define PNG_SIMPLIFIED_WRITE_SUPPORTED -#define PNG_STDIO_SUPPORTED -#define PNG_STORE_UNKNOWN_CHUNKS_SUPPORTED -#define PNG_TEXT_SUPPORTED -#define PNG_TIME_RFC1123_SUPPORTED -#define PNG_UNKNOWN_CHUNKS_SUPPORTED -#define PNG_USER_CHUNKS_SUPPORTED -#define PNG_USER_LIMITS_SUPPORTED -#define PNG_USER_MEM_SUPPORTED -#define PNG_USER_TRANSFORM_INFO_SUPPORTED -#define PNG_USER_TRANSFORM_PTR_SUPPORTED -#define PNG_WARNINGS_SUPPORTED -#define PNG_WRITE_16BIT_SUPPORTED -#define PNG_WRITE_ANCILLARY_CHUNKS_SUPPORTED -#define PNG_WRITE_BGR_SUPPORTED -#define PNG_WRITE_CHECK_FOR_INVALID_INDEX_SUPPORTED -#define PNG_WRITE_COMPRESSED_TEXT_SUPPORTED -#define PNG_WRITE_CUSTOMIZE_COMPRESSION_SUPPORTED -#define PNG_WRITE_CUSTOMIZE_ZTXT_COMPRESSION_SUPPORTED -#define PNG_WRITE_FILLER_SUPPORTED -#define PNG_WRITE_FILTER_SUPPORTED -#define PNG_WRITE_FLUSH_SUPPORTED -#define PNG_WRITE_GET_PALETTE_MAX_SUPPORTED -#define PNG_WRITE_INTERLACING_SUPPORTED -#define PNG_WRITE_INT_FUNCTIONS_SUPPORTED -#define PNG_WRITE_INVERT_ALPHA_SUPPORTED -#define PNG_WRITE_INVERT_SUPPORTED -#define PNG_WRITE_OPTIMIZE_CMF_SUPPORTED -#define PNG_WRITE_PACKSWAP_SUPPORTED -#define PNG_WRITE_PACK_SUPPORTED -#define PNG_WRITE_SHIFT_SUPPORTED -#define PNG_WRITE_SUPPORTED -#define PNG_WRITE_SWAP_ALPHA_SUPPORTED -#define PNG_WRITE_SWAP_SUPPORTED -#define PNG_WRITE_TEXT_SUPPORTED -#define PNG_WRITE_TRANSFORMS_SUPPORTED -#define PNG_WRITE_UNKNOWN_CHUNKS_SUPPORTED -#define PNG_WRITE_USER_TRANSFORM_SUPPORTED -#define PNG_WRITE_WEIGHTED_FILTER_SUPPORTED -#define PNG_WRITE_bKGD_SUPPORTED -#define PNG_WRITE_cHRM_SUPPORTED -#define PNG_WRITE_eXIf_SUPPORTED -#define PNG_WRITE_gAMA_SUPPORTED -#define PNG_WRITE_hIST_SUPPORTED -#define PNG_WRITE_iCCP_SUPPORTED -#define PNG_WRITE_iTXt_SUPPORTED -#define PNG_WRITE_oFFs_SUPPORTED -#define PNG_WRITE_pCAL_SUPPORTED -#define PNG_WRITE_pHYs_SUPPORTED -#define PNG_WRITE_sBIT_SUPPORTED -#define PNG_WRITE_sCAL_SUPPORTED -#define PNG_WRITE_sPLT_SUPPORTED -#define PNG_WRITE_sRGB_SUPPORTED -#define PNG_WRITE_tEXt_SUPPORTED -#define PNG_WRITE_tIME_SUPPORTED -#define PNG_WRITE_tRNS_SUPPORTED -#define PNG_WRITE_zTXt_SUPPORTED -#define PNG_bKGD_SUPPORTED -#define PNG_cHRM_SUPPORTED -#define PNG_eXIf_SUPPORTED -#define PNG_gAMA_SUPPORTED -#define PNG_hIST_SUPPORTED -#define PNG_iCCP_SUPPORTED -#define PNG_iTXt_SUPPORTED -#define PNG_oFFs_SUPPORTED -#define PNG_pCAL_SUPPORTED -#define PNG_pHYs_SUPPORTED -#define PNG_sBIT_SUPPORTED -#define PNG_sCAL_SUPPORTED -#define PNG_sPLT_SUPPORTED -#define PNG_sRGB_SUPPORTED -#define PNG_tEXt_SUPPORTED -#define PNG_tIME_SUPPORTED -#define PNG_tRNS_SUPPORTED -#define PNG_zTXt_SUPPORTED -/* end of options */ -/* settings */ -#define PNG_API_RULE 0 -#define PNG_DEFAULT_READ_MACROS 1 -#define PNG_GAMMA_THRESHOLD_FIXED 5000 -#define PNG_IDAT_READ_SIZE PNG_ZBUF_SIZE -#define PNG_INFLATE_BUF_SIZE 1024 -#define PNG_LINKAGE_API extern -#define PNG_LINKAGE_CALLBACK extern -#define PNG_LINKAGE_DATA extern -#define PNG_LINKAGE_FUNCTION extern -#define PNG_MAX_GAMMA_8 11 -#define PNG_QUANTIZE_BLUE_BITS 5 -#define PNG_QUANTIZE_GREEN_BITS 5 -#define PNG_QUANTIZE_RED_BITS 5 -#define PNG_TEXT_Z_DEFAULT_COMPRESSION (-1) -#define PNG_TEXT_Z_DEFAULT_STRATEGY 0 -#define PNG_USER_CHUNK_CACHE_MAX 1000 -#define PNG_USER_CHUNK_MALLOC_MAX 8000000 -#define PNG_USER_HEIGHT_MAX 1000000 -#define PNG_USER_WIDTH_MAX 1000000 -#define PNG_ZBUF_SIZE 8192 -#define PNG_ZLIB_VERNUM 0 /* unknown */ -#define PNG_Z_DEFAULT_COMPRESSION (-1) -#define PNG_Z_DEFAULT_NOFILTER_STRATEGY 0 -#define PNG_Z_DEFAULT_STRATEGY 1 -#define PNG_sCAL_PRECISION 5 -#define PNG_sRGB_PROFILE_CHECKS 2 -/* end of settings */ -#endif /* PNGLCONF_H */ diff --git a/vstudio/include/zconf.h b/vstudio/include/zconf.h deleted file mode 100644 index 5e1d68a..0000000 --- a/vstudio/include/zconf.h +++ /dev/null @@ -1,534 +0,0 @@ -/* zconf.h -- configuration of the zlib compression library - * Copyright (C) 1995-2016 Jean-loup Gailly, Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -/* @(#) $Id$ */ - -#ifndef ZCONF_H -#define ZCONF_H - -/* - * If you *really* need a unique prefix for all types and library functions, - * compile with -DZ_PREFIX. The "standard" zlib should be compiled without it. - * Even better than compiling with -DZ_PREFIX would be to use configure to set - * this permanently in zconf.h using "./configure --zprefix". - */ -#ifdef Z_PREFIX /* may be set to #if 1 by ./configure */ -# define Z_PREFIX_SET - -/* all linked symbols and init macros */ -# define _dist_code z__dist_code -# define _length_code z__length_code -# define _tr_align z__tr_align -# define _tr_flush_bits z__tr_flush_bits -# define _tr_flush_block z__tr_flush_block -# define _tr_init z__tr_init -# define _tr_stored_block z__tr_stored_block -# define _tr_tally z__tr_tally -# define adler32 z_adler32 -# define adler32_combine z_adler32_combine -# define adler32_combine64 z_adler32_combine64 -# define adler32_z z_adler32_z -# ifndef Z_SOLO -# define compress z_compress -# define compress2 z_compress2 -# define compressBound z_compressBound -# endif -# define crc32 z_crc32 -# define crc32_combine z_crc32_combine -# define crc32_combine64 z_crc32_combine64 -# define crc32_z z_crc32_z -# define deflate z_deflate -# define deflateBound z_deflateBound -# define deflateCopy z_deflateCopy -# define deflateEnd z_deflateEnd -# define deflateGetDictionary z_deflateGetDictionary -# define deflateInit z_deflateInit -# define deflateInit2 z_deflateInit2 -# define deflateInit2_ z_deflateInit2_ -# define deflateInit_ z_deflateInit_ -# define deflateParams z_deflateParams -# define deflatePending z_deflatePending -# define deflatePrime z_deflatePrime -# define deflateReset z_deflateReset -# define deflateResetKeep z_deflateResetKeep -# define deflateSetDictionary z_deflateSetDictionary -# define deflateSetHeader z_deflateSetHeader -# define deflateTune z_deflateTune -# define deflate_copyright z_deflate_copyright -# define get_crc_table z_get_crc_table -# ifndef Z_SOLO -# define gz_error z_gz_error -# define gz_intmax z_gz_intmax -# define gz_strwinerror z_gz_strwinerror -# define gzbuffer z_gzbuffer -# define gzclearerr z_gzclearerr -# define gzclose z_gzclose -# define gzclose_r z_gzclose_r -# define gzclose_w z_gzclose_w -# define gzdirect z_gzdirect -# define gzdopen z_gzdopen -# define gzeof z_gzeof -# define gzerror z_gzerror -# define gzflush z_gzflush -# define gzfread z_gzfread -# define gzfwrite z_gzfwrite -# define gzgetc z_gzgetc -# define gzgetc_ z_gzgetc_ -# define gzgets z_gzgets -# define gzoffset z_gzoffset -# define gzoffset64 z_gzoffset64 -# define gzopen z_gzopen -# define gzopen64 z_gzopen64 -# ifdef _WIN32 -# define gzopen_w z_gzopen_w -# endif -# define gzprintf z_gzprintf -# define gzputc z_gzputc -# define gzputs z_gzputs -# define gzread z_gzread -# define gzrewind z_gzrewind -# define gzseek z_gzseek -# define gzseek64 z_gzseek64 -# define gzsetparams z_gzsetparams -# define gztell z_gztell -# define gztell64 z_gztell64 -# define gzungetc z_gzungetc -# define gzvprintf z_gzvprintf -# define gzwrite z_gzwrite -# endif -# define inflate z_inflate -# define inflateBack z_inflateBack -# define inflateBackEnd z_inflateBackEnd -# define inflateBackInit z_inflateBackInit -# define inflateBackInit_ z_inflateBackInit_ -# define inflateCodesUsed z_inflateCodesUsed -# define inflateCopy z_inflateCopy -# define inflateEnd z_inflateEnd -# define inflateGetDictionary z_inflateGetDictionary -# define inflateGetHeader z_inflateGetHeader -# define inflateInit z_inflateInit -# define inflateInit2 z_inflateInit2 -# define inflateInit2_ z_inflateInit2_ -# define inflateInit_ z_inflateInit_ -# define inflateMark z_inflateMark -# define inflatePrime z_inflatePrime -# define inflateReset z_inflateReset -# define inflateReset2 z_inflateReset2 -# define inflateResetKeep z_inflateResetKeep -# define inflateSetDictionary z_inflateSetDictionary -# define inflateSync z_inflateSync -# define inflateSyncPoint z_inflateSyncPoint -# define inflateUndermine z_inflateUndermine -# define inflateValidate z_inflateValidate -# define inflate_copyright z_inflate_copyright -# define inflate_fast z_inflate_fast -# define inflate_table z_inflate_table -# ifndef Z_SOLO -# define uncompress z_uncompress -# define uncompress2 z_uncompress2 -# endif -# define zError z_zError -# ifndef Z_SOLO -# define zcalloc z_zcalloc -# define zcfree z_zcfree -# endif -# define zlibCompileFlags z_zlibCompileFlags -# define zlibVersion z_zlibVersion - -/* all zlib typedefs in zlib.h and zconf.h */ -# define Byte z_Byte -# define Bytef z_Bytef -# define alloc_func z_alloc_func -# define charf z_charf -# define free_func z_free_func -# ifndef Z_SOLO -# define gzFile z_gzFile -# endif -# define gz_header z_gz_header -# define gz_headerp z_gz_headerp -# define in_func z_in_func -# define intf z_intf -# define out_func z_out_func -# define uInt z_uInt -# define uIntf z_uIntf -# define uLong z_uLong -# define uLongf z_uLongf -# define voidp z_voidp -# define voidpc z_voidpc -# define voidpf z_voidpf - -/* all zlib structs in zlib.h and zconf.h */ -# define gz_header_s z_gz_header_s -# define internal_state z_internal_state - -#endif - -#if defined(__MSDOS__) && !defined(MSDOS) -# define MSDOS -#endif -#if (defined(OS_2) || defined(__OS2__)) && !defined(OS2) -# define OS2 -#endif -#if defined(_WINDOWS) && !defined(WINDOWS) -# define WINDOWS -#endif -#if defined(_WIN32) || defined(_WIN32_WCE) || defined(__WIN32__) -# ifndef WIN32 -# define WIN32 -# endif -#endif -#if (defined(MSDOS) || defined(OS2) || defined(WINDOWS)) && !defined(WIN32) -# if !defined(__GNUC__) && !defined(__FLAT__) && !defined(__386__) -# ifndef SYS16BIT -# define SYS16BIT -# endif -# endif -#endif - -/* - * Compile with -DMAXSEG_64K if the alloc function cannot allocate more - * than 64k bytes at a time (needed on systems with 16-bit int). - */ -#ifdef SYS16BIT -# define MAXSEG_64K -#endif -#ifdef MSDOS -# define UNALIGNED_OK -#endif - -#ifdef __STDC_VERSION__ -# ifndef STDC -# define STDC -# endif -# if __STDC_VERSION__ >= 199901L -# ifndef STDC99 -# define STDC99 -# endif -# endif -#endif -#if !defined(STDC) && (defined(__STDC__) || defined(__cplusplus)) -# define STDC -#endif -#if !defined(STDC) && (defined(__GNUC__) || defined(__BORLANDC__)) -# define STDC -#endif -#if !defined(STDC) && (defined(MSDOS) || defined(WINDOWS) || defined(WIN32)) -# define STDC -#endif -#if !defined(STDC) && (defined(OS2) || defined(__HOS_AIX__)) -# define STDC -#endif - -#if defined(__OS400__) && !defined(STDC) /* iSeries (formerly AS/400). */ -# define STDC -#endif - -#ifndef STDC -# ifndef const /* cannot use !defined(STDC) && !defined(const) on Mac */ -# define const /* note: need a more gentle solution here */ -# endif -#endif - -#if defined(ZLIB_CONST) && !defined(z_const) -# define z_const const -#else -# define z_const -#endif - -#ifdef Z_SOLO - typedef unsigned long z_size_t; -#else -# define z_longlong long long -# if defined(NO_SIZE_T) - typedef unsigned NO_SIZE_T z_size_t; -# elif defined(STDC) -# include - typedef size_t z_size_t; -# else - typedef unsigned long z_size_t; -# endif -# undef z_longlong -#endif - -/* Maximum value for memLevel in deflateInit2 */ -#ifndef MAX_MEM_LEVEL -# ifdef MAXSEG_64K -# define MAX_MEM_LEVEL 8 -# else -# define MAX_MEM_LEVEL 9 -# endif -#endif - -/* Maximum value for windowBits in deflateInit2 and inflateInit2. - * WARNING: reducing MAX_WBITS makes minigzip unable to extract .gz files - * created by gzip. (Files created by minigzip can still be extracted by - * gzip.) - */ -#ifndef MAX_WBITS -# define MAX_WBITS 15 /* 32K LZ77 window */ -#endif - -/* The memory requirements for deflate are (in bytes): - (1 << (windowBits+2)) + (1 << (memLevel+9)) - that is: 128K for windowBits=15 + 128K for memLevel = 8 (default values) - plus a few kilobytes for small objects. For example, if you want to reduce - the default memory requirements from 256K to 128K, compile with - make CFLAGS="-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7" - Of course this will generally degrade compression (there's no free lunch). - - The memory requirements for inflate are (in bytes) 1 << windowBits - that is, 32K for windowBits=15 (default value) plus about 7 kilobytes - for small objects. -*/ - - /* Type declarations */ - -#ifndef OF /* function prototypes */ -# ifdef STDC -# define OF(args) args -# else -# define OF(args) () -# endif -#endif - -#ifndef Z_ARG /* function prototypes for stdarg */ -# if defined(STDC) || defined(Z_HAVE_STDARG_H) -# define Z_ARG(args) args -# else -# define Z_ARG(args) () -# endif -#endif - -/* The following definitions for FAR are needed only for MSDOS mixed - * model programming (small or medium model with some far allocations). - * This was tested only with MSC; for other MSDOS compilers you may have - * to define NO_MEMCPY in zutil.h. If you don't need the mixed model, - * just define FAR to be empty. - */ -#ifdef SYS16BIT -# if defined(M_I86SM) || defined(M_I86MM) - /* MSC small or medium model */ -# define SMALL_MEDIUM -# ifdef _MSC_VER -# define FAR _far -# else -# define FAR far -# endif -# endif -# if (defined(__SMALL__) || defined(__MEDIUM__)) - /* Turbo C small or medium model */ -# define SMALL_MEDIUM -# ifdef __BORLANDC__ -# define FAR _far -# else -# define FAR far -# endif -# endif -#endif - -#if defined(WINDOWS) || defined(WIN32) - /* If building or using zlib as a DLL, define ZLIB_DLL. - * This is not mandatory, but it offers a little performance increase. - */ -# ifdef ZLIB_DLL -# if defined(WIN32) && (!defined(__BORLANDC__) || (__BORLANDC__ >= 0x500)) -# ifdef ZLIB_INTERNAL -# define ZEXTERN extern __declspec(dllexport) -# else -# define ZEXTERN extern __declspec(dllimport) -# endif -# endif -# endif /* ZLIB_DLL */ - /* If building or using zlib with the WINAPI/WINAPIV calling convention, - * define ZLIB_WINAPI. - * Caution: the standard ZLIB1.DLL is NOT compiled using ZLIB_WINAPI. - */ -# ifdef ZLIB_WINAPI -# ifdef FAR -# undef FAR -# endif -# include - /* No need for _export, use ZLIB.DEF instead. */ - /* For complete Windows compatibility, use WINAPI, not __stdcall. */ -# define ZEXPORT WINAPI -# ifdef WIN32 -# define ZEXPORTVA WINAPIV -# else -# define ZEXPORTVA FAR CDECL -# endif -# endif -#endif - -#if defined (__BEOS__) -# ifdef ZLIB_DLL -# ifdef ZLIB_INTERNAL -# define ZEXPORT __declspec(dllexport) -# define ZEXPORTVA __declspec(dllexport) -# else -# define ZEXPORT __declspec(dllimport) -# define ZEXPORTVA __declspec(dllimport) -# endif -# endif -#endif - -#ifndef ZEXTERN -# define ZEXTERN extern -#endif -#ifndef ZEXPORT -# define ZEXPORT -#endif -#ifndef ZEXPORTVA -# define ZEXPORTVA -#endif - -#ifndef FAR -# define FAR -#endif - -#if !defined(__MACTYPES__) -typedef unsigned char Byte; /* 8 bits */ -#endif -typedef unsigned int uInt; /* 16 bits or more */ -typedef unsigned long uLong; /* 32 bits or more */ - -#ifdef SMALL_MEDIUM - /* Borland C/C++ and some old MSC versions ignore FAR inside typedef */ -# define Bytef Byte FAR -#else - typedef Byte FAR Bytef; -#endif -typedef char FAR charf; -typedef int FAR intf; -typedef uInt FAR uIntf; -typedef uLong FAR uLongf; - -#ifdef STDC - typedef void const *voidpc; - typedef void FAR *voidpf; - typedef void *voidp; -#else - typedef Byte const *voidpc; - typedef Byte FAR *voidpf; - typedef Byte *voidp; -#endif - -#if !defined(Z_U4) && !defined(Z_SOLO) && defined(STDC) -# include -# if (UINT_MAX == 0xffffffffUL) -# define Z_U4 unsigned -# elif (ULONG_MAX == 0xffffffffUL) -# define Z_U4 unsigned long -# elif (USHRT_MAX == 0xffffffffUL) -# define Z_U4 unsigned short -# endif -#endif - -#ifdef Z_U4 - typedef Z_U4 z_crc_t; -#else - typedef unsigned long z_crc_t; -#endif - -#ifdef HAVE_UNISTD_H /* may be set to #if 1 by ./configure */ -# define Z_HAVE_UNISTD_H -#endif - -#ifdef HAVE_STDARG_H /* may be set to #if 1 by ./configure */ -# define Z_HAVE_STDARG_H -#endif - -#ifdef STDC -# ifndef Z_SOLO -# include /* for off_t */ -# endif -#endif - -#if defined(STDC) || defined(Z_HAVE_STDARG_H) -# ifndef Z_SOLO -# include /* for va_list */ -# endif -#endif - -#ifdef _WIN32 -# ifndef Z_SOLO -# include /* for wchar_t */ -# endif -#endif - -/* a little trick to accommodate both "#define _LARGEFILE64_SOURCE" and - * "#define _LARGEFILE64_SOURCE 1" as requesting 64-bit operations, (even - * though the former does not conform to the LFS document), but considering - * both "#undef _LARGEFILE64_SOURCE" and "#define _LARGEFILE64_SOURCE 0" as - * equivalently requesting no 64-bit operations - */ -#if defined(_LARGEFILE64_SOURCE) && -_LARGEFILE64_SOURCE - -1 == 1 -# undef _LARGEFILE64_SOURCE -#endif - -#if defined(__WATCOMC__) && !defined(Z_HAVE_UNISTD_H) -# define Z_HAVE_UNISTD_H -#endif -#ifndef Z_SOLO -# if defined(Z_HAVE_UNISTD_H) || defined(_LARGEFILE64_SOURCE) -# include /* for SEEK_*, off_t, and _LFS64_LARGEFILE */ -# ifdef VMS -# include /* for off_t */ -# endif -# ifndef z_off_t -# define z_off_t off_t -# endif -# endif -#endif - -#if defined(_LFS64_LARGEFILE) && _LFS64_LARGEFILE-0 -# define Z_LFS64 -#endif - -#if defined(_LARGEFILE64_SOURCE) && defined(Z_LFS64) -# define Z_LARGE64 -#endif - -#if defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS-0 == 64 && defined(Z_LFS64) -# define Z_WANT64 -#endif - -#if !defined(SEEK_SET) && !defined(Z_SOLO) -# define SEEK_SET 0 /* Seek from beginning of file. */ -# define SEEK_CUR 1 /* Seek from current position. */ -# define SEEK_END 2 /* Set file pointer to EOF plus "offset" */ -#endif - -#ifndef z_off_t -# define z_off_t long -#endif - -#if !defined(_WIN32) && defined(Z_LARGE64) -# define z_off64_t off64_t -#else -# if defined(_WIN32) && !defined(__GNUC__) && !defined(Z_SOLO) -# define z_off64_t __int64 -# else -# define z_off64_t z_off_t -# endif -#endif - -/* MVS linker does not support external names larger than 8 bytes */ -#if defined(__MVS__) - #pragma map(deflateInit_,"DEIN") - #pragma map(deflateInit2_,"DEIN2") - #pragma map(deflateEnd,"DEEND") - #pragma map(deflateBound,"DEBND") - #pragma map(inflateInit_,"ININ") - #pragma map(inflateInit2_,"ININ2") - #pragma map(inflateEnd,"INEND") - #pragma map(inflateSync,"INSY") - #pragma map(inflateSetDictionary,"INSEDI") - #pragma map(compressBound,"CMBND") - #pragma map(inflate_table,"INTABL") - #pragma map(inflate_fast,"INFA") - #pragma map(inflate_copyright,"INCOPY") -#endif - -#endif /* ZCONF_H */ diff --git a/vstudio/include/zlib.h b/vstudio/include/zlib.h deleted file mode 100644 index f09cdaf..0000000 --- a/vstudio/include/zlib.h +++ /dev/null @@ -1,1912 +0,0 @@ -/* zlib.h -- interface of the 'zlib' general purpose compression library - version 1.2.11, January 15th, 2017 - - Copyright (C) 1995-2017 Jean-loup Gailly and Mark Adler - - This software is provided 'as-is', without any express or implied - warranty. In no event will the authors be held liable for any damages - arising from the use of this software. - - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute it - freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. - 2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. - 3. This notice may not be removed or altered from any source distribution. - - Jean-loup Gailly Mark Adler - jloup@gzip.org madler@alumni.caltech.edu - - - The data format used by the zlib library is described by RFCs (Request for - Comments) 1950 to 1952 in the files http://tools.ietf.org/html/rfc1950 - (zlib format), rfc1951 (deflate format) and rfc1952 (gzip format). -*/ - -#ifndef ZLIB_H -#define ZLIB_H - -#include "zconf.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#define ZLIB_VERSION "1.2.11" -#define ZLIB_VERNUM 0x12b0 -#define ZLIB_VER_MAJOR 1 -#define ZLIB_VER_MINOR 2 -#define ZLIB_VER_REVISION 11 -#define ZLIB_VER_SUBREVISION 0 - -/* - The 'zlib' compression library provides in-memory compression and - decompression functions, including integrity checks of the uncompressed data. - This version of the library supports only one compression method (deflation) - but other algorithms will be added later and will have the same stream - interface. - - Compression can be done in a single step if the buffers are large enough, - or can be done by repeated calls of the compression function. In the latter - case, the application must provide more input and/or consume the output - (providing more output space) before each call. - - The compressed data format used by default by the in-memory functions is - the zlib format, which is a zlib wrapper documented in RFC 1950, wrapped - around a deflate stream, which is itself documented in RFC 1951. - - The library also supports reading and writing files in gzip (.gz) format - with an interface similar to that of stdio using the functions that start - with "gz". The gzip format is different from the zlib format. gzip is a - gzip wrapper, documented in RFC 1952, wrapped around a deflate stream. - - This library can optionally read and write gzip and raw deflate streams in - memory as well. - - The zlib format was designed to be compact and fast for use in memory - and on communications channels. The gzip format was designed for single- - file compression on file systems, has a larger header than zlib to maintain - directory information, and uses a different, slower check method than zlib. - - The library does not install any signal handler. The decoder checks - the consistency of the compressed data, so the library should never crash - even in the case of corrupted input. -*/ - -typedef voidpf (*alloc_func) OF((voidpf opaque, uInt items, uInt size)); -typedef void (*free_func) OF((voidpf opaque, voidpf address)); - -struct internal_state; - -typedef struct z_stream_s { - z_const Bytef *next_in; /* next input byte */ - uInt avail_in; /* number of bytes available at next_in */ - uLong total_in; /* total number of input bytes read so far */ - - Bytef *next_out; /* next output byte will go here */ - uInt avail_out; /* remaining free space at next_out */ - uLong total_out; /* total number of bytes output so far */ - - z_const char *msg; /* last error message, NULL if no error */ - struct internal_state FAR *state; /* not visible by applications */ - - alloc_func zalloc; /* used to allocate the internal state */ - free_func zfree; /* used to free the internal state */ - voidpf opaque; /* private data object passed to zalloc and zfree */ - - int data_type; /* best guess about the data type: binary or text - for deflate, or the decoding state for inflate */ - uLong adler; /* Adler-32 or CRC-32 value of the uncompressed data */ - uLong reserved; /* reserved for future use */ -} z_stream; - -typedef z_stream FAR *z_streamp; - -/* - gzip header information passed to and from zlib routines. See RFC 1952 - for more details on the meanings of these fields. -*/ -typedef struct gz_header_s { - int text; /* true if compressed data believed to be text */ - uLong time; /* modification time */ - int xflags; /* extra flags (not used when writing a gzip file) */ - int os; /* operating system */ - Bytef *extra; /* pointer to extra field or Z_NULL if none */ - uInt extra_len; /* extra field length (valid if extra != Z_NULL) */ - uInt extra_max; /* space at extra (only when reading header) */ - Bytef *name; /* pointer to zero-terminated file name or Z_NULL */ - uInt name_max; /* space at name (only when reading header) */ - Bytef *comment; /* pointer to zero-terminated comment or Z_NULL */ - uInt comm_max; /* space at comment (only when reading header) */ - int hcrc; /* true if there was or will be a header crc */ - int done; /* true when done reading gzip header (not used - when writing a gzip file) */ -} gz_header; - -typedef gz_header FAR *gz_headerp; - -/* - The application must update next_in and avail_in when avail_in has dropped - to zero. It must update next_out and avail_out when avail_out has dropped - to zero. The application must initialize zalloc, zfree and opaque before - calling the init function. All other fields are set by the compression - library and must not be updated by the application. - - The opaque value provided by the application will be passed as the first - parameter for calls of zalloc and zfree. This can be useful for custom - memory management. The compression library attaches no meaning to the - opaque value. - - zalloc must return Z_NULL if there is not enough memory for the object. - If zlib is used in a multi-threaded application, zalloc and zfree must be - thread safe. In that case, zlib is thread-safe. When zalloc and zfree are - Z_NULL on entry to the initialization function, they are set to internal - routines that use the standard library functions malloc() and free(). - - On 16-bit systems, the functions zalloc and zfree must be able to allocate - exactly 65536 bytes, but will not be required to allocate more than this if - the symbol MAXSEG_64K is defined (see zconf.h). WARNING: On MSDOS, pointers - returned by zalloc for objects of exactly 65536 bytes *must* have their - offset normalized to zero. The default allocation function provided by this - library ensures this (see zutil.c). To reduce memory requirements and avoid - any allocation of 64K objects, at the expense of compression ratio, compile - the library with -DMAX_WBITS=14 (see zconf.h). - - The fields total_in and total_out can be used for statistics or progress - reports. After compression, total_in holds the total size of the - uncompressed data and may be saved for use by the decompressor (particularly - if the decompressor wants to decompress everything in a single step). -*/ - - /* constants */ - -#define Z_NO_FLUSH 0 -#define Z_PARTIAL_FLUSH 1 -#define Z_SYNC_FLUSH 2 -#define Z_FULL_FLUSH 3 -#define Z_FINISH 4 -#define Z_BLOCK 5 -#define Z_TREES 6 -/* Allowed flush values; see deflate() and inflate() below for details */ - -#define Z_OK 0 -#define Z_STREAM_END 1 -#define Z_NEED_DICT 2 -#define Z_ERRNO (-1) -#define Z_STREAM_ERROR (-2) -#define Z_DATA_ERROR (-3) -#define Z_MEM_ERROR (-4) -#define Z_BUF_ERROR (-5) -#define Z_VERSION_ERROR (-6) -/* Return codes for the compression/decompression functions. Negative values - * are errors, positive values are used for special but normal events. - */ - -#define Z_NO_COMPRESSION 0 -#define Z_BEST_SPEED 1 -#define Z_BEST_COMPRESSION 9 -#define Z_DEFAULT_COMPRESSION (-1) -/* compression levels */ - -#define Z_FILTERED 1 -#define Z_HUFFMAN_ONLY 2 -#define Z_RLE 3 -#define Z_FIXED 4 -#define Z_DEFAULT_STRATEGY 0 -/* compression strategy; see deflateInit2() below for details */ - -#define Z_BINARY 0 -#define Z_TEXT 1 -#define Z_ASCII Z_TEXT /* for compatibility with 1.2.2 and earlier */ -#define Z_UNKNOWN 2 -/* Possible values of the data_type field for deflate() */ - -#define Z_DEFLATED 8 -/* The deflate compression method (the only one supported in this version) */ - -#define Z_NULL 0 /* for initializing zalloc, zfree, opaque */ - -#define zlib_version zlibVersion() -/* for compatibility with versions < 1.0.2 */ - - - /* basic functions */ - -ZEXTERN const char * ZEXPORT zlibVersion OF((void)); -/* The application can compare zlibVersion and ZLIB_VERSION for consistency. - If the first character differs, the library code actually used is not - compatible with the zlib.h header file used by the application. This check - is automatically made by deflateInit and inflateInit. - */ - -/* -ZEXTERN int ZEXPORT deflateInit OF((z_streamp strm, int level)); - - Initializes the internal stream state for compression. The fields - zalloc, zfree and opaque must be initialized before by the caller. If - zalloc and zfree are set to Z_NULL, deflateInit updates them to use default - allocation functions. - - The compression level must be Z_DEFAULT_COMPRESSION, or between 0 and 9: - 1 gives best speed, 9 gives best compression, 0 gives no compression at all - (the input data is simply copied a block at a time). Z_DEFAULT_COMPRESSION - requests a default compromise between speed and compression (currently - equivalent to level 6). - - deflateInit returns Z_OK if success, Z_MEM_ERROR if there was not enough - memory, Z_STREAM_ERROR if level is not a valid compression level, or - Z_VERSION_ERROR if the zlib library version (zlib_version) is incompatible - with the version assumed by the caller (ZLIB_VERSION). msg is set to null - if there is no error message. deflateInit does not perform any compression: - this will be done by deflate(). -*/ - - -ZEXTERN int ZEXPORT deflate OF((z_streamp strm, int flush)); -/* - deflate compresses as much data as possible, and stops when the input - buffer becomes empty or the output buffer becomes full. It may introduce - some output latency (reading input without producing any output) except when - forced to flush. - - The detailed semantics are as follows. deflate performs one or both of the - following actions: - - - Compress more input starting at next_in and update next_in and avail_in - accordingly. If not all input can be processed (because there is not - enough room in the output buffer), next_in and avail_in are updated and - processing will resume at this point for the next call of deflate(). - - - Generate more output starting at next_out and update next_out and avail_out - accordingly. This action is forced if the parameter flush is non zero. - Forcing flush frequently degrades the compression ratio, so this parameter - should be set only when necessary. Some output may be provided even if - flush is zero. - - Before the call of deflate(), the application should ensure that at least - one of the actions is possible, by providing more input and/or consuming more - output, and updating avail_in or avail_out accordingly; avail_out should - never be zero before the call. The application can consume the compressed - output when it wants, for example when the output buffer is full (avail_out - == 0), or after each call of deflate(). If deflate returns Z_OK and with - zero avail_out, it must be called again after making room in the output - buffer because there might be more output pending. See deflatePending(), - which can be used if desired to determine whether or not there is more ouput - in that case. - - Normally the parameter flush is set to Z_NO_FLUSH, which allows deflate to - decide how much data to accumulate before producing output, in order to - maximize compression. - - If the parameter flush is set to Z_SYNC_FLUSH, all pending output is - flushed to the output buffer and the output is aligned on a byte boundary, so - that the decompressor can get all input data available so far. (In - particular avail_in is zero after the call if enough output space has been - provided before the call.) Flushing may degrade compression for some - compression algorithms and so it should be used only when necessary. This - completes the current deflate block and follows it with an empty stored block - that is three bits plus filler bits to the next byte, followed by four bytes - (00 00 ff ff). - - If flush is set to Z_PARTIAL_FLUSH, all pending output is flushed to the - output buffer, but the output is not aligned to a byte boundary. All of the - input data so far will be available to the decompressor, as for Z_SYNC_FLUSH. - This completes the current deflate block and follows it with an empty fixed - codes block that is 10 bits long. This assures that enough bytes are output - in order for the decompressor to finish the block before the empty fixed - codes block. - - If flush is set to Z_BLOCK, a deflate block is completed and emitted, as - for Z_SYNC_FLUSH, but the output is not aligned on a byte boundary, and up to - seven bits of the current block are held to be written as the next byte after - the next deflate block is completed. In this case, the decompressor may not - be provided enough bits at this point in order to complete decompression of - the data provided so far to the compressor. It may need to wait for the next - block to be emitted. This is for advanced applications that need to control - the emission of deflate blocks. - - If flush is set to Z_FULL_FLUSH, all output is flushed as with - Z_SYNC_FLUSH, and the compression state is reset so that decompression can - restart from this point if previous compressed data has been damaged or if - random access is desired. Using Z_FULL_FLUSH too often can seriously degrade - compression. - - If deflate returns with avail_out == 0, this function must be called again - with the same value of the flush parameter and more output space (updated - avail_out), until the flush is complete (deflate returns with non-zero - avail_out). In the case of a Z_FULL_FLUSH or Z_SYNC_FLUSH, make sure that - avail_out is greater than six to avoid repeated flush markers due to - avail_out == 0 on return. - - If the parameter flush is set to Z_FINISH, pending input is processed, - pending output is flushed and deflate returns with Z_STREAM_END if there was - enough output space. If deflate returns with Z_OK or Z_BUF_ERROR, this - function must be called again with Z_FINISH and more output space (updated - avail_out) but no more input data, until it returns with Z_STREAM_END or an - error. After deflate has returned Z_STREAM_END, the only possible operations - on the stream are deflateReset or deflateEnd. - - Z_FINISH can be used in the first deflate call after deflateInit if all the - compression is to be done in a single step. In order to complete in one - call, avail_out must be at least the value returned by deflateBound (see - below). Then deflate is guaranteed to return Z_STREAM_END. If not enough - output space is provided, deflate will not return Z_STREAM_END, and it must - be called again as described above. - - deflate() sets strm->adler to the Adler-32 checksum of all input read - so far (that is, total_in bytes). If a gzip stream is being generated, then - strm->adler will be the CRC-32 checksum of the input read so far. (See - deflateInit2 below.) - - deflate() may update strm->data_type if it can make a good guess about - the input data type (Z_BINARY or Z_TEXT). If in doubt, the data is - considered binary. This field is only for information purposes and does not - affect the compression algorithm in any manner. - - deflate() returns Z_OK if some progress has been made (more input - processed or more output produced), Z_STREAM_END if all input has been - consumed and all output has been produced (only when flush is set to - Z_FINISH), Z_STREAM_ERROR if the stream state was inconsistent (for example - if next_in or next_out was Z_NULL or the state was inadvertently written over - by the application), or Z_BUF_ERROR if no progress is possible (for example - avail_in or avail_out was zero). Note that Z_BUF_ERROR is not fatal, and - deflate() can be called again with more input and more output space to - continue compressing. -*/ - - -ZEXTERN int ZEXPORT deflateEnd OF((z_streamp strm)); -/* - All dynamically allocated data structures for this stream are freed. - This function discards any unprocessed input and does not flush any pending - output. - - deflateEnd returns Z_OK if success, Z_STREAM_ERROR if the - stream state was inconsistent, Z_DATA_ERROR if the stream was freed - prematurely (some input or output was discarded). In the error case, msg - may be set but then points to a static string (which must not be - deallocated). -*/ - - -/* -ZEXTERN int ZEXPORT inflateInit OF((z_streamp strm)); - - Initializes the internal stream state for decompression. The fields - next_in, avail_in, zalloc, zfree and opaque must be initialized before by - the caller. In the current version of inflate, the provided input is not - read or consumed. The allocation of a sliding window will be deferred to - the first call of inflate (if the decompression does not complete on the - first call). If zalloc and zfree are set to Z_NULL, inflateInit updates - them to use default allocation functions. - - inflateInit returns Z_OK if success, Z_MEM_ERROR if there was not enough - memory, Z_VERSION_ERROR if the zlib library version is incompatible with the - version assumed by the caller, or Z_STREAM_ERROR if the parameters are - invalid, such as a null pointer to the structure. msg is set to null if - there is no error message. inflateInit does not perform any decompression. - Actual decompression will be done by inflate(). So next_in, and avail_in, - next_out, and avail_out are unused and unchanged. The current - implementation of inflateInit() does not process any header information -- - that is deferred until inflate() is called. -*/ - - -ZEXTERN int ZEXPORT inflate OF((z_streamp strm, int flush)); -/* - inflate decompresses as much data as possible, and stops when the input - buffer becomes empty or the output buffer becomes full. It may introduce - some output latency (reading input without producing any output) except when - forced to flush. - - The detailed semantics are as follows. inflate performs one or both of the - following actions: - - - Decompress more input starting at next_in and update next_in and avail_in - accordingly. If not all input can be processed (because there is not - enough room in the output buffer), then next_in and avail_in are updated - accordingly, and processing will resume at this point for the next call of - inflate(). - - - Generate more output starting at next_out and update next_out and avail_out - accordingly. inflate() provides as much output as possible, until there is - no more input data or no more space in the output buffer (see below about - the flush parameter). - - Before the call of inflate(), the application should ensure that at least - one of the actions is possible, by providing more input and/or consuming more - output, and updating the next_* and avail_* values accordingly. If the - caller of inflate() does not provide both available input and available - output space, it is possible that there will be no progress made. The - application can consume the uncompressed output when it wants, for example - when the output buffer is full (avail_out == 0), or after each call of - inflate(). If inflate returns Z_OK and with zero avail_out, it must be - called again after making room in the output buffer because there might be - more output pending. - - The flush parameter of inflate() can be Z_NO_FLUSH, Z_SYNC_FLUSH, Z_FINISH, - Z_BLOCK, or Z_TREES. Z_SYNC_FLUSH requests that inflate() flush as much - output as possible to the output buffer. Z_BLOCK requests that inflate() - stop if and when it gets to the next deflate block boundary. When decoding - the zlib or gzip format, this will cause inflate() to return immediately - after the header and before the first block. When doing a raw inflate, - inflate() will go ahead and process the first block, and will return when it - gets to the end of that block, or when it runs out of data. - - The Z_BLOCK option assists in appending to or combining deflate streams. - To assist in this, on return inflate() always sets strm->data_type to the - number of unused bits in the last byte taken from strm->next_in, plus 64 if - inflate() is currently decoding the last block in the deflate stream, plus - 128 if inflate() returned immediately after decoding an end-of-block code or - decoding the complete header up to just before the first byte of the deflate - stream. The end-of-block will not be indicated until all of the uncompressed - data from that block has been written to strm->next_out. The number of - unused bits may in general be greater than seven, except when bit 7 of - data_type is set, in which case the number of unused bits will be less than - eight. data_type is set as noted here every time inflate() returns for all - flush options, and so can be used to determine the amount of currently - consumed input in bits. - - The Z_TREES option behaves as Z_BLOCK does, but it also returns when the - end of each deflate block header is reached, before any actual data in that - block is decoded. This allows the caller to determine the length of the - deflate block header for later use in random access within a deflate block. - 256 is added to the value of strm->data_type when inflate() returns - immediately after reaching the end of the deflate block header. - - inflate() should normally be called until it returns Z_STREAM_END or an - error. However if all decompression is to be performed in a single step (a - single call of inflate), the parameter flush should be set to Z_FINISH. In - this case all pending input is processed and all pending output is flushed; - avail_out must be large enough to hold all of the uncompressed data for the - operation to complete. (The size of the uncompressed data may have been - saved by the compressor for this purpose.) The use of Z_FINISH is not - required to perform an inflation in one step. However it may be used to - inform inflate that a faster approach can be used for the single inflate() - call. Z_FINISH also informs inflate to not maintain a sliding window if the - stream completes, which reduces inflate's memory footprint. If the stream - does not complete, either because not all of the stream is provided or not - enough output space is provided, then a sliding window will be allocated and - inflate() can be called again to continue the operation as if Z_NO_FLUSH had - been used. - - In this implementation, inflate() always flushes as much output as - possible to the output buffer, and always uses the faster approach on the - first call. So the effects of the flush parameter in this implementation are - on the return value of inflate() as noted below, when inflate() returns early - when Z_BLOCK or Z_TREES is used, and when inflate() avoids the allocation of - memory for a sliding window when Z_FINISH is used. - - If a preset dictionary is needed after this call (see inflateSetDictionary - below), inflate sets strm->adler to the Adler-32 checksum of the dictionary - chosen by the compressor and returns Z_NEED_DICT; otherwise it sets - strm->adler to the Adler-32 checksum of all output produced so far (that is, - total_out bytes) and returns Z_OK, Z_STREAM_END or an error code as described - below. At the end of the stream, inflate() checks that its computed Adler-32 - checksum is equal to that saved by the compressor and returns Z_STREAM_END - only if the checksum is correct. - - inflate() can decompress and check either zlib-wrapped or gzip-wrapped - deflate data. The header type is detected automatically, if requested when - initializing with inflateInit2(). Any information contained in the gzip - header is not retained unless inflateGetHeader() is used. When processing - gzip-wrapped deflate data, strm->adler32 is set to the CRC-32 of the output - produced so far. The CRC-32 is checked against the gzip trailer, as is the - uncompressed length, modulo 2^32. - - inflate() returns Z_OK if some progress has been made (more input processed - or more output produced), Z_STREAM_END if the end of the compressed data has - been reached and all uncompressed output has been produced, Z_NEED_DICT if a - preset dictionary is needed at this point, Z_DATA_ERROR if the input data was - corrupted (input stream not conforming to the zlib format or incorrect check - value, in which case strm->msg points to a string with a more specific - error), Z_STREAM_ERROR if the stream structure was inconsistent (for example - next_in or next_out was Z_NULL, or the state was inadvertently written over - by the application), Z_MEM_ERROR if there was not enough memory, Z_BUF_ERROR - if no progress was possible or if there was not enough room in the output - buffer when Z_FINISH is used. Note that Z_BUF_ERROR is not fatal, and - inflate() can be called again with more input and more output space to - continue decompressing. If Z_DATA_ERROR is returned, the application may - then call inflateSync() to look for a good compression block if a partial - recovery of the data is to be attempted. -*/ - - -ZEXTERN int ZEXPORT inflateEnd OF((z_streamp strm)); -/* - All dynamically allocated data structures for this stream are freed. - This function discards any unprocessed input and does not flush any pending - output. - - inflateEnd returns Z_OK if success, or Z_STREAM_ERROR if the stream state - was inconsistent. -*/ - - - /* Advanced functions */ - -/* - The following functions are needed only in some special applications. -*/ - -/* -ZEXTERN int ZEXPORT deflateInit2 OF((z_streamp strm, - int level, - int method, - int windowBits, - int memLevel, - int strategy)); - - This is another version of deflateInit with more compression options. The - fields next_in, zalloc, zfree and opaque must be initialized before by the - caller. - - The method parameter is the compression method. It must be Z_DEFLATED in - this version of the library. - - The windowBits parameter is the base two logarithm of the window size - (the size of the history buffer). It should be in the range 8..15 for this - version of the library. Larger values of this parameter result in better - compression at the expense of memory usage. The default value is 15 if - deflateInit is used instead. - - For the current implementation of deflate(), a windowBits value of 8 (a - window size of 256 bytes) is not supported. As a result, a request for 8 - will result in 9 (a 512-byte window). In that case, providing 8 to - inflateInit2() will result in an error when the zlib header with 9 is - checked against the initialization of inflate(). The remedy is to not use 8 - with deflateInit2() with this initialization, or at least in that case use 9 - with inflateInit2(). - - windowBits can also be -8..-15 for raw deflate. In this case, -windowBits - determines the window size. deflate() will then generate raw deflate data - with no zlib header or trailer, and will not compute a check value. - - windowBits can also be greater than 15 for optional gzip encoding. Add - 16 to windowBits to write a simple gzip header and trailer around the - compressed data instead of a zlib wrapper. The gzip header will have no - file name, no extra data, no comment, no modification time (set to zero), no - header crc, and the operating system will be set to the appropriate value, - if the operating system was determined at compile time. If a gzip stream is - being written, strm->adler is a CRC-32 instead of an Adler-32. - - For raw deflate or gzip encoding, a request for a 256-byte window is - rejected as invalid, since only the zlib header provides a means of - transmitting the window size to the decompressor. - - The memLevel parameter specifies how much memory should be allocated - for the internal compression state. memLevel=1 uses minimum memory but is - slow and reduces compression ratio; memLevel=9 uses maximum memory for - optimal speed. The default value is 8. See zconf.h for total memory usage - as a function of windowBits and memLevel. - - The strategy parameter is used to tune the compression algorithm. Use the - value Z_DEFAULT_STRATEGY for normal data, Z_FILTERED for data produced by a - filter (or predictor), Z_HUFFMAN_ONLY to force Huffman encoding only (no - string match), or Z_RLE to limit match distances to one (run-length - encoding). Filtered data consists mostly of small values with a somewhat - random distribution. In this case, the compression algorithm is tuned to - compress them better. The effect of Z_FILTERED is to force more Huffman - coding and less string matching; it is somewhat intermediate between - Z_DEFAULT_STRATEGY and Z_HUFFMAN_ONLY. Z_RLE is designed to be almost as - fast as Z_HUFFMAN_ONLY, but give better compression for PNG image data. The - strategy parameter only affects the compression ratio but not the - correctness of the compressed output even if it is not set appropriately. - Z_FIXED prevents the use of dynamic Huffman codes, allowing for a simpler - decoder for special applications. - - deflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough - memory, Z_STREAM_ERROR if any parameter is invalid (such as an invalid - method), or Z_VERSION_ERROR if the zlib library version (zlib_version) is - incompatible with the version assumed by the caller (ZLIB_VERSION). msg is - set to null if there is no error message. deflateInit2 does not perform any - compression: this will be done by deflate(). -*/ - -ZEXTERN int ZEXPORT deflateSetDictionary OF((z_streamp strm, - const Bytef *dictionary, - uInt dictLength)); -/* - Initializes the compression dictionary from the given byte sequence - without producing any compressed output. When using the zlib format, this - function must be called immediately after deflateInit, deflateInit2 or - deflateReset, and before any call of deflate. When doing raw deflate, this - function must be called either before any call of deflate, or immediately - after the completion of a deflate block, i.e. after all input has been - consumed and all output has been delivered when using any of the flush - options Z_BLOCK, Z_PARTIAL_FLUSH, Z_SYNC_FLUSH, or Z_FULL_FLUSH. The - compressor and decompressor must use exactly the same dictionary (see - inflateSetDictionary). - - The dictionary should consist of strings (byte sequences) that are likely - to be encountered later in the data to be compressed, with the most commonly - used strings preferably put towards the end of the dictionary. Using a - dictionary is most useful when the data to be compressed is short and can be - predicted with good accuracy; the data can then be compressed better than - with the default empty dictionary. - - Depending on the size of the compression data structures selected by - deflateInit or deflateInit2, a part of the dictionary may in effect be - discarded, for example if the dictionary is larger than the window size - provided in deflateInit or deflateInit2. Thus the strings most likely to be - useful should be put at the end of the dictionary, not at the front. In - addition, the current implementation of deflate will use at most the window - size minus 262 bytes of the provided dictionary. - - Upon return of this function, strm->adler is set to the Adler-32 value - of the dictionary; the decompressor may later use this value to determine - which dictionary has been used by the compressor. (The Adler-32 value - applies to the whole dictionary even if only a subset of the dictionary is - actually used by the compressor.) If a raw deflate was requested, then the - Adler-32 value is not computed and strm->adler is not set. - - deflateSetDictionary returns Z_OK if success, or Z_STREAM_ERROR if a - parameter is invalid (e.g. dictionary being Z_NULL) or the stream state is - inconsistent (for example if deflate has already been called for this stream - or if not at a block boundary for raw deflate). deflateSetDictionary does - not perform any compression: this will be done by deflate(). -*/ - -ZEXTERN int ZEXPORT deflateGetDictionary OF((z_streamp strm, - Bytef *dictionary, - uInt *dictLength)); -/* - Returns the sliding dictionary being maintained by deflate. dictLength is - set to the number of bytes in the dictionary, and that many bytes are copied - to dictionary. dictionary must have enough space, where 32768 bytes is - always enough. If deflateGetDictionary() is called with dictionary equal to - Z_NULL, then only the dictionary length is returned, and nothing is copied. - Similary, if dictLength is Z_NULL, then it is not set. - - deflateGetDictionary() may return a length less than the window size, even - when more than the window size in input has been provided. It may return up - to 258 bytes less in that case, due to how zlib's implementation of deflate - manages the sliding window and lookahead for matches, where matches can be - up to 258 bytes long. If the application needs the last window-size bytes of - input, then that would need to be saved by the application outside of zlib. - - deflateGetDictionary returns Z_OK on success, or Z_STREAM_ERROR if the - stream state is inconsistent. -*/ - -ZEXTERN int ZEXPORT deflateCopy OF((z_streamp dest, - z_streamp source)); -/* - Sets the destination stream as a complete copy of the source stream. - - This function can be useful when several compression strategies will be - tried, for example when there are several ways of pre-processing the input - data with a filter. The streams that will be discarded should then be freed - by calling deflateEnd. Note that deflateCopy duplicates the internal - compression state which can be quite large, so this strategy is slow and can - consume lots of memory. - - deflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not - enough memory, Z_STREAM_ERROR if the source stream state was inconsistent - (such as zalloc being Z_NULL). msg is left unchanged in both source and - destination. -*/ - -ZEXTERN int ZEXPORT deflateReset OF((z_streamp strm)); -/* - This function is equivalent to deflateEnd followed by deflateInit, but - does not free and reallocate the internal compression state. The stream - will leave the compression level and any other attributes that may have been - set unchanged. - - deflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source - stream state was inconsistent (such as zalloc or state being Z_NULL). -*/ - -ZEXTERN int ZEXPORT deflateParams OF((z_streamp strm, - int level, - int strategy)); -/* - Dynamically update the compression level and compression strategy. The - interpretation of level and strategy is as in deflateInit2(). This can be - used to switch between compression and straight copy of the input data, or - to switch to a different kind of input data requiring a different strategy. - If the compression approach (which is a function of the level) or the - strategy is changed, and if any input has been consumed in a previous - deflate() call, then the input available so far is compressed with the old - level and strategy using deflate(strm, Z_BLOCK). There are three approaches - for the compression levels 0, 1..3, and 4..9 respectively. The new level - and strategy will take effect at the next call of deflate(). - - If a deflate(strm, Z_BLOCK) is performed by deflateParams(), and it does - not have enough output space to complete, then the parameter change will not - take effect. In this case, deflateParams() can be called again with the - same parameters and more output space to try again. - - In order to assure a change in the parameters on the first try, the - deflate stream should be flushed using deflate() with Z_BLOCK or other flush - request until strm.avail_out is not zero, before calling deflateParams(). - Then no more input data should be provided before the deflateParams() call. - If this is done, the old level and strategy will be applied to the data - compressed before deflateParams(), and the new level and strategy will be - applied to the the data compressed after deflateParams(). - - deflateParams returns Z_OK on success, Z_STREAM_ERROR if the source stream - state was inconsistent or if a parameter was invalid, or Z_BUF_ERROR if - there was not enough output space to complete the compression of the - available input data before a change in the strategy or approach. Note that - in the case of a Z_BUF_ERROR, the parameters are not changed. A return - value of Z_BUF_ERROR is not fatal, in which case deflateParams() can be - retried with more output space. -*/ - -ZEXTERN int ZEXPORT deflateTune OF((z_streamp strm, - int good_length, - int max_lazy, - int nice_length, - int max_chain)); -/* - Fine tune deflate's internal compression parameters. This should only be - used by someone who understands the algorithm used by zlib's deflate for - searching for the best matching string, and even then only by the most - fanatic optimizer trying to squeeze out the last compressed bit for their - specific input data. Read the deflate.c source code for the meaning of the - max_lazy, good_length, nice_length, and max_chain parameters. - - deflateTune() can be called after deflateInit() or deflateInit2(), and - returns Z_OK on success, or Z_STREAM_ERROR for an invalid deflate stream. - */ - -ZEXTERN uLong ZEXPORT deflateBound OF((z_streamp strm, - uLong sourceLen)); -/* - deflateBound() returns an upper bound on the compressed size after - deflation of sourceLen bytes. It must be called after deflateInit() or - deflateInit2(), and after deflateSetHeader(), if used. This would be used - to allocate an output buffer for deflation in a single pass, and so would be - called before deflate(). If that first deflate() call is provided the - sourceLen input bytes, an output buffer allocated to the size returned by - deflateBound(), and the flush value Z_FINISH, then deflate() is guaranteed - to return Z_STREAM_END. Note that it is possible for the compressed size to - be larger than the value returned by deflateBound() if flush options other - than Z_FINISH or Z_NO_FLUSH are used. -*/ - -ZEXTERN int ZEXPORT deflatePending OF((z_streamp strm, - unsigned *pending, - int *bits)); -/* - deflatePending() returns the number of bytes and bits of output that have - been generated, but not yet provided in the available output. The bytes not - provided would be due to the available output space having being consumed. - The number of bits of output not provided are between 0 and 7, where they - await more bits to join them in order to fill out a full byte. If pending - or bits are Z_NULL, then those values are not set. - - deflatePending returns Z_OK if success, or Z_STREAM_ERROR if the source - stream state was inconsistent. - */ - -ZEXTERN int ZEXPORT deflatePrime OF((z_streamp strm, - int bits, - int value)); -/* - deflatePrime() inserts bits in the deflate output stream. The intent - is that this function is used to start off the deflate output with the bits - leftover from a previous deflate stream when appending to it. As such, this - function can only be used for raw deflate, and must be used before the first - deflate() call after a deflateInit2() or deflateReset(). bits must be less - than or equal to 16, and that many of the least significant bits of value - will be inserted in the output. - - deflatePrime returns Z_OK if success, Z_BUF_ERROR if there was not enough - room in the internal buffer to insert the bits, or Z_STREAM_ERROR if the - source stream state was inconsistent. -*/ - -ZEXTERN int ZEXPORT deflateSetHeader OF((z_streamp strm, - gz_headerp head)); -/* - deflateSetHeader() provides gzip header information for when a gzip - stream is requested by deflateInit2(). deflateSetHeader() may be called - after deflateInit2() or deflateReset() and before the first call of - deflate(). The text, time, os, extra field, name, and comment information - in the provided gz_header structure are written to the gzip header (xflag is - ignored -- the extra flags are set according to the compression level). The - caller must assure that, if not Z_NULL, name and comment are terminated with - a zero byte, and that if extra is not Z_NULL, that extra_len bytes are - available there. If hcrc is true, a gzip header crc is included. Note that - the current versions of the command-line version of gzip (up through version - 1.3.x) do not support header crc's, and will report that it is a "multi-part - gzip file" and give up. - - If deflateSetHeader is not used, the default gzip header has text false, - the time set to zero, and os set to 255, with no extra, name, or comment - fields. The gzip header is returned to the default state by deflateReset(). - - deflateSetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source - stream state was inconsistent. -*/ - -/* -ZEXTERN int ZEXPORT inflateInit2 OF((z_streamp strm, - int windowBits)); - - This is another version of inflateInit with an extra parameter. The - fields next_in, avail_in, zalloc, zfree and opaque must be initialized - before by the caller. - - The windowBits parameter is the base two logarithm of the maximum window - size (the size of the history buffer). It should be in the range 8..15 for - this version of the library. The default value is 15 if inflateInit is used - instead. windowBits must be greater than or equal to the windowBits value - provided to deflateInit2() while compressing, or it must be equal to 15 if - deflateInit2() was not used. If a compressed stream with a larger window - size is given as input, inflate() will return with the error code - Z_DATA_ERROR instead of trying to allocate a larger window. - - windowBits can also be zero to request that inflate use the window size in - the zlib header of the compressed stream. - - windowBits can also be -8..-15 for raw inflate. In this case, -windowBits - determines the window size. inflate() will then process raw deflate data, - not looking for a zlib or gzip header, not generating a check value, and not - looking for any check values for comparison at the end of the stream. This - is for use with other formats that use the deflate compressed data format - such as zip. Those formats provide their own check values. If a custom - format is developed using the raw deflate format for compressed data, it is - recommended that a check value such as an Adler-32 or a CRC-32 be applied to - the uncompressed data as is done in the zlib, gzip, and zip formats. For - most applications, the zlib format should be used as is. Note that comments - above on the use in deflateInit2() applies to the magnitude of windowBits. - - windowBits can also be greater than 15 for optional gzip decoding. Add - 32 to windowBits to enable zlib and gzip decoding with automatic header - detection, or add 16 to decode only the gzip format (the zlib format will - return a Z_DATA_ERROR). If a gzip stream is being decoded, strm->adler is a - CRC-32 instead of an Adler-32. Unlike the gunzip utility and gzread() (see - below), inflate() will not automatically decode concatenated gzip streams. - inflate() will return Z_STREAM_END at the end of the gzip stream. The state - would need to be reset to continue decoding a subsequent gzip stream. - - inflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough - memory, Z_VERSION_ERROR if the zlib library version is incompatible with the - version assumed by the caller, or Z_STREAM_ERROR if the parameters are - invalid, such as a null pointer to the structure. msg is set to null if - there is no error message. inflateInit2 does not perform any decompression - apart from possibly reading the zlib header if present: actual decompression - will be done by inflate(). (So next_in and avail_in may be modified, but - next_out and avail_out are unused and unchanged.) The current implementation - of inflateInit2() does not process any header information -- that is - deferred until inflate() is called. -*/ - -ZEXTERN int ZEXPORT inflateSetDictionary OF((z_streamp strm, - const Bytef *dictionary, - uInt dictLength)); -/* - Initializes the decompression dictionary from the given uncompressed byte - sequence. This function must be called immediately after a call of inflate, - if that call returned Z_NEED_DICT. The dictionary chosen by the compressor - can be determined from the Adler-32 value returned by that call of inflate. - The compressor and decompressor must use exactly the same dictionary (see - deflateSetDictionary). For raw inflate, this function can be called at any - time to set the dictionary. If the provided dictionary is smaller than the - window and there is already data in the window, then the provided dictionary - will amend what's there. The application must insure that the dictionary - that was used for compression is provided. - - inflateSetDictionary returns Z_OK if success, Z_STREAM_ERROR if a - parameter is invalid (e.g. dictionary being Z_NULL) or the stream state is - inconsistent, Z_DATA_ERROR if the given dictionary doesn't match the - expected one (incorrect Adler-32 value). inflateSetDictionary does not - perform any decompression: this will be done by subsequent calls of - inflate(). -*/ - -ZEXTERN int ZEXPORT inflateGetDictionary OF((z_streamp strm, - Bytef *dictionary, - uInt *dictLength)); -/* - Returns the sliding dictionary being maintained by inflate. dictLength is - set to the number of bytes in the dictionary, and that many bytes are copied - to dictionary. dictionary must have enough space, where 32768 bytes is - always enough. If inflateGetDictionary() is called with dictionary equal to - Z_NULL, then only the dictionary length is returned, and nothing is copied. - Similary, if dictLength is Z_NULL, then it is not set. - - inflateGetDictionary returns Z_OK on success, or Z_STREAM_ERROR if the - stream state is inconsistent. -*/ - -ZEXTERN int ZEXPORT inflateSync OF((z_streamp strm)); -/* - Skips invalid compressed data until a possible full flush point (see above - for the description of deflate with Z_FULL_FLUSH) can be found, or until all - available input is skipped. No output is provided. - - inflateSync searches for a 00 00 FF FF pattern in the compressed data. - All full flush points have this pattern, but not all occurrences of this - pattern are full flush points. - - inflateSync returns Z_OK if a possible full flush point has been found, - Z_BUF_ERROR if no more input was provided, Z_DATA_ERROR if no flush point - has been found, or Z_STREAM_ERROR if the stream structure was inconsistent. - In the success case, the application may save the current current value of - total_in which indicates where valid compressed data was found. In the - error case, the application may repeatedly call inflateSync, providing more - input each time, until success or end of the input data. -*/ - -ZEXTERN int ZEXPORT inflateCopy OF((z_streamp dest, - z_streamp source)); -/* - Sets the destination stream as a complete copy of the source stream. - - This function can be useful when randomly accessing a large stream. The - first pass through the stream can periodically record the inflate state, - allowing restarting inflate at those points when randomly accessing the - stream. - - inflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not - enough memory, Z_STREAM_ERROR if the source stream state was inconsistent - (such as zalloc being Z_NULL). msg is left unchanged in both source and - destination. -*/ - -ZEXTERN int ZEXPORT inflateReset OF((z_streamp strm)); -/* - This function is equivalent to inflateEnd followed by inflateInit, - but does not free and reallocate the internal decompression state. The - stream will keep attributes that may have been set by inflateInit2. - - inflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source - stream state was inconsistent (such as zalloc or state being Z_NULL). -*/ - -ZEXTERN int ZEXPORT inflateReset2 OF((z_streamp strm, - int windowBits)); -/* - This function is the same as inflateReset, but it also permits changing - the wrap and window size requests. The windowBits parameter is interpreted - the same as it is for inflateInit2. If the window size is changed, then the - memory allocated for the window is freed, and the window will be reallocated - by inflate() if needed. - - inflateReset2 returns Z_OK if success, or Z_STREAM_ERROR if the source - stream state was inconsistent (such as zalloc or state being Z_NULL), or if - the windowBits parameter is invalid. -*/ - -ZEXTERN int ZEXPORT inflatePrime OF((z_streamp strm, - int bits, - int value)); -/* - This function inserts bits in the inflate input stream. The intent is - that this function is used to start inflating at a bit position in the - middle of a byte. The provided bits will be used before any bytes are used - from next_in. This function should only be used with raw inflate, and - should be used before the first inflate() call after inflateInit2() or - inflateReset(). bits must be less than or equal to 16, and that many of the - least significant bits of value will be inserted in the input. - - If bits is negative, then the input stream bit buffer is emptied. Then - inflatePrime() can be called again to put bits in the buffer. This is used - to clear out bits leftover after feeding inflate a block description prior - to feeding inflate codes. - - inflatePrime returns Z_OK if success, or Z_STREAM_ERROR if the source - stream state was inconsistent. -*/ - -ZEXTERN long ZEXPORT inflateMark OF((z_streamp strm)); -/* - This function returns two values, one in the lower 16 bits of the return - value, and the other in the remaining upper bits, obtained by shifting the - return value down 16 bits. If the upper value is -1 and the lower value is - zero, then inflate() is currently decoding information outside of a block. - If the upper value is -1 and the lower value is non-zero, then inflate is in - the middle of a stored block, with the lower value equaling the number of - bytes from the input remaining to copy. If the upper value is not -1, then - it is the number of bits back from the current bit position in the input of - the code (literal or length/distance pair) currently being processed. In - that case the lower value is the number of bytes already emitted for that - code. - - A code is being processed if inflate is waiting for more input to complete - decoding of the code, or if it has completed decoding but is waiting for - more output space to write the literal or match data. - - inflateMark() is used to mark locations in the input data for random - access, which may be at bit positions, and to note those cases where the - output of a code may span boundaries of random access blocks. The current - location in the input stream can be determined from avail_in and data_type - as noted in the description for the Z_BLOCK flush parameter for inflate. - - inflateMark returns the value noted above, or -65536 if the provided - source stream state was inconsistent. -*/ - -ZEXTERN int ZEXPORT inflateGetHeader OF((z_streamp strm, - gz_headerp head)); -/* - inflateGetHeader() requests that gzip header information be stored in the - provided gz_header structure. inflateGetHeader() may be called after - inflateInit2() or inflateReset(), and before the first call of inflate(). - As inflate() processes the gzip stream, head->done is zero until the header - is completed, at which time head->done is set to one. If a zlib stream is - being decoded, then head->done is set to -1 to indicate that there will be - no gzip header information forthcoming. Note that Z_BLOCK or Z_TREES can be - used to force inflate() to return immediately after header processing is - complete and before any actual data is decompressed. - - The text, time, xflags, and os fields are filled in with the gzip header - contents. hcrc is set to true if there is a header CRC. (The header CRC - was valid if done is set to one.) If extra is not Z_NULL, then extra_max - contains the maximum number of bytes to write to extra. Once done is true, - extra_len contains the actual extra field length, and extra contains the - extra field, or that field truncated if extra_max is less than extra_len. - If name is not Z_NULL, then up to name_max characters are written there, - terminated with a zero unless the length is greater than name_max. If - comment is not Z_NULL, then up to comm_max characters are written there, - terminated with a zero unless the length is greater than comm_max. When any - of extra, name, or comment are not Z_NULL and the respective field is not - present in the header, then that field is set to Z_NULL to signal its - absence. This allows the use of deflateSetHeader() with the returned - structure to duplicate the header. However if those fields are set to - allocated memory, then the application will need to save those pointers - elsewhere so that they can be eventually freed. - - If inflateGetHeader is not used, then the header information is simply - discarded. The header is always checked for validity, including the header - CRC if present. inflateReset() will reset the process to discard the header - information. The application would need to call inflateGetHeader() again to - retrieve the header from the next gzip stream. - - inflateGetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source - stream state was inconsistent. -*/ - -/* -ZEXTERN int ZEXPORT inflateBackInit OF((z_streamp strm, int windowBits, - unsigned char FAR *window)); - - Initialize the internal stream state for decompression using inflateBack() - calls. The fields zalloc, zfree and opaque in strm must be initialized - before the call. If zalloc and zfree are Z_NULL, then the default library- - derived memory allocation routines are used. windowBits is the base two - logarithm of the window size, in the range 8..15. window is a caller - supplied buffer of that size. Except for special applications where it is - assured that deflate was used with small window sizes, windowBits must be 15 - and a 32K byte window must be supplied to be able to decompress general - deflate streams. - - See inflateBack() for the usage of these routines. - - inflateBackInit will return Z_OK on success, Z_STREAM_ERROR if any of - the parameters are invalid, Z_MEM_ERROR if the internal state could not be - allocated, or Z_VERSION_ERROR if the version of the library does not match - the version of the header file. -*/ - -typedef unsigned (*in_func) OF((void FAR *, - z_const unsigned char FAR * FAR *)); -typedef int (*out_func) OF((void FAR *, unsigned char FAR *, unsigned)); - -ZEXTERN int ZEXPORT inflateBack OF((z_streamp strm, - in_func in, void FAR *in_desc, - out_func out, void FAR *out_desc)); -/* - inflateBack() does a raw inflate with a single call using a call-back - interface for input and output. This is potentially more efficient than - inflate() for file i/o applications, in that it avoids copying between the - output and the sliding window by simply making the window itself the output - buffer. inflate() can be faster on modern CPUs when used with large - buffers. inflateBack() trusts the application to not change the output - buffer passed by the output function, at least until inflateBack() returns. - - inflateBackInit() must be called first to allocate the internal state - and to initialize the state with the user-provided window buffer. - inflateBack() may then be used multiple times to inflate a complete, raw - deflate stream with each call. inflateBackEnd() is then called to free the - allocated state. - - A raw deflate stream is one with no zlib or gzip header or trailer. - This routine would normally be used in a utility that reads zip or gzip - files and writes out uncompressed files. The utility would decode the - header and process the trailer on its own, hence this routine expects only - the raw deflate stream to decompress. This is different from the default - behavior of inflate(), which expects a zlib header and trailer around the - deflate stream. - - inflateBack() uses two subroutines supplied by the caller that are then - called by inflateBack() for input and output. inflateBack() calls those - routines until it reads a complete deflate stream and writes out all of the - uncompressed data, or until it encounters an error. The function's - parameters and return types are defined above in the in_func and out_func - typedefs. inflateBack() will call in(in_desc, &buf) which should return the - number of bytes of provided input, and a pointer to that input in buf. If - there is no input available, in() must return zero -- buf is ignored in that - case -- and inflateBack() will return a buffer error. inflateBack() will - call out(out_desc, buf, len) to write the uncompressed data buf[0..len-1]. - out() should return zero on success, or non-zero on failure. If out() - returns non-zero, inflateBack() will return with an error. Neither in() nor - out() are permitted to change the contents of the window provided to - inflateBackInit(), which is also the buffer that out() uses to write from. - The length written by out() will be at most the window size. Any non-zero - amount of input may be provided by in(). - - For convenience, inflateBack() can be provided input on the first call by - setting strm->next_in and strm->avail_in. If that input is exhausted, then - in() will be called. Therefore strm->next_in must be initialized before - calling inflateBack(). If strm->next_in is Z_NULL, then in() will be called - immediately for input. If strm->next_in is not Z_NULL, then strm->avail_in - must also be initialized, and then if strm->avail_in is not zero, input will - initially be taken from strm->next_in[0 .. strm->avail_in - 1]. - - The in_desc and out_desc parameters of inflateBack() is passed as the - first parameter of in() and out() respectively when they are called. These - descriptors can be optionally used to pass any information that the caller- - supplied in() and out() functions need to do their job. - - On return, inflateBack() will set strm->next_in and strm->avail_in to - pass back any unused input that was provided by the last in() call. The - return values of inflateBack() can be Z_STREAM_END on success, Z_BUF_ERROR - if in() or out() returned an error, Z_DATA_ERROR if there was a format error - in the deflate stream (in which case strm->msg is set to indicate the nature - of the error), or Z_STREAM_ERROR if the stream was not properly initialized. - In the case of Z_BUF_ERROR, an input or output error can be distinguished - using strm->next_in which will be Z_NULL only if in() returned an error. If - strm->next_in is not Z_NULL, then the Z_BUF_ERROR was due to out() returning - non-zero. (in() will always be called before out(), so strm->next_in is - assured to be defined if out() returns non-zero.) Note that inflateBack() - cannot return Z_OK. -*/ - -ZEXTERN int ZEXPORT inflateBackEnd OF((z_streamp strm)); -/* - All memory allocated by inflateBackInit() is freed. - - inflateBackEnd() returns Z_OK on success, or Z_STREAM_ERROR if the stream - state was inconsistent. -*/ - -ZEXTERN uLong ZEXPORT zlibCompileFlags OF((void)); -/* Return flags indicating compile-time options. - - Type sizes, two bits each, 00 = 16 bits, 01 = 32, 10 = 64, 11 = other: - 1.0: size of uInt - 3.2: size of uLong - 5.4: size of voidpf (pointer) - 7.6: size of z_off_t - - Compiler, assembler, and debug options: - 8: ZLIB_DEBUG - 9: ASMV or ASMINF -- use ASM code - 10: ZLIB_WINAPI -- exported functions use the WINAPI calling convention - 11: 0 (reserved) - - One-time table building (smaller code, but not thread-safe if true): - 12: BUILDFIXED -- build static block decoding tables when needed - 13: DYNAMIC_CRC_TABLE -- build CRC calculation tables when needed - 14,15: 0 (reserved) - - Library content (indicates missing functionality): - 16: NO_GZCOMPRESS -- gz* functions cannot compress (to avoid linking - deflate code when not needed) - 17: NO_GZIP -- deflate can't write gzip streams, and inflate can't detect - and decode gzip streams (to avoid linking crc code) - 18-19: 0 (reserved) - - Operation variations (changes in library functionality): - 20: PKZIP_BUG_WORKAROUND -- slightly more permissive inflate - 21: FASTEST -- deflate algorithm with only one, lowest compression level - 22,23: 0 (reserved) - - The sprintf variant used by gzprintf (zero is best): - 24: 0 = vs*, 1 = s* -- 1 means limited to 20 arguments after the format - 25: 0 = *nprintf, 1 = *printf -- 1 means gzprintf() not secure! - 26: 0 = returns value, 1 = void -- 1 means inferred string length returned - - Remainder: - 27-31: 0 (reserved) - */ - -#ifndef Z_SOLO - - /* utility functions */ - -/* - The following utility functions are implemented on top of the basic - stream-oriented functions. To simplify the interface, some default options - are assumed (compression level and memory usage, standard memory allocation - functions). The source code of these utility functions can be modified if - you need special options. -*/ - -ZEXTERN int ZEXPORT compress OF((Bytef *dest, uLongf *destLen, - const Bytef *source, uLong sourceLen)); -/* - Compresses the source buffer into the destination buffer. sourceLen is - the byte length of the source buffer. Upon entry, destLen is the total size - of the destination buffer, which must be at least the value returned by - compressBound(sourceLen). Upon exit, destLen is the actual size of the - compressed data. compress() is equivalent to compress2() with a level - parameter of Z_DEFAULT_COMPRESSION. - - compress returns Z_OK if success, Z_MEM_ERROR if there was not - enough memory, Z_BUF_ERROR if there was not enough room in the output - buffer. -*/ - -ZEXTERN int ZEXPORT compress2 OF((Bytef *dest, uLongf *destLen, - const Bytef *source, uLong sourceLen, - int level)); -/* - Compresses the source buffer into the destination buffer. The level - parameter has the same meaning as in deflateInit. sourceLen is the byte - length of the source buffer. Upon entry, destLen is the total size of the - destination buffer, which must be at least the value returned by - compressBound(sourceLen). Upon exit, destLen is the actual size of the - compressed data. - - compress2 returns Z_OK if success, Z_MEM_ERROR if there was not enough - memory, Z_BUF_ERROR if there was not enough room in the output buffer, - Z_STREAM_ERROR if the level parameter is invalid. -*/ - -ZEXTERN uLong ZEXPORT compressBound OF((uLong sourceLen)); -/* - compressBound() returns an upper bound on the compressed size after - compress() or compress2() on sourceLen bytes. It would be used before a - compress() or compress2() call to allocate the destination buffer. -*/ - -ZEXTERN int ZEXPORT uncompress OF((Bytef *dest, uLongf *destLen, - const Bytef *source, uLong sourceLen)); -/* - Decompresses the source buffer into the destination buffer. sourceLen is - the byte length of the source buffer. Upon entry, destLen is the total size - of the destination buffer, which must be large enough to hold the entire - uncompressed data. (The size of the uncompressed data must have been saved - previously by the compressor and transmitted to the decompressor by some - mechanism outside the scope of this compression library.) Upon exit, destLen - is the actual size of the uncompressed data. - - uncompress returns Z_OK if success, Z_MEM_ERROR if there was not - enough memory, Z_BUF_ERROR if there was not enough room in the output - buffer, or Z_DATA_ERROR if the input data was corrupted or incomplete. In - the case where there is not enough room, uncompress() will fill the output - buffer with the uncompressed data up to that point. -*/ - -ZEXTERN int ZEXPORT uncompress2 OF((Bytef *dest, uLongf *destLen, - const Bytef *source, uLong *sourceLen)); -/* - Same as uncompress, except that sourceLen is a pointer, where the - length of the source is *sourceLen. On return, *sourceLen is the number of - source bytes consumed. -*/ - - /* gzip file access functions */ - -/* - This library supports reading and writing files in gzip (.gz) format with - an interface similar to that of stdio, using the functions that start with - "gz". The gzip format is different from the zlib format. gzip is a gzip - wrapper, documented in RFC 1952, wrapped around a deflate stream. -*/ - -typedef struct gzFile_s *gzFile; /* semi-opaque gzip file descriptor */ - -/* -ZEXTERN gzFile ZEXPORT gzopen OF((const char *path, const char *mode)); - - Opens a gzip (.gz) file for reading or writing. The mode parameter is as - in fopen ("rb" or "wb") but can also include a compression level ("wb9") or - a strategy: 'f' for filtered data as in "wb6f", 'h' for Huffman-only - compression as in "wb1h", 'R' for run-length encoding as in "wb1R", or 'F' - for fixed code compression as in "wb9F". (See the description of - deflateInit2 for more information about the strategy parameter.) 'T' will - request transparent writing or appending with no compression and not using - the gzip format. - - "a" can be used instead of "w" to request that the gzip stream that will - be written be appended to the file. "+" will result in an error, since - reading and writing to the same gzip file is not supported. The addition of - "x" when writing will create the file exclusively, which fails if the file - already exists. On systems that support it, the addition of "e" when - reading or writing will set the flag to close the file on an execve() call. - - These functions, as well as gzip, will read and decode a sequence of gzip - streams in a file. The append function of gzopen() can be used to create - such a file. (Also see gzflush() for another way to do this.) When - appending, gzopen does not test whether the file begins with a gzip stream, - nor does it look for the end of the gzip streams to begin appending. gzopen - will simply append a gzip stream to the existing file. - - gzopen can be used to read a file which is not in gzip format; in this - case gzread will directly read from the file without decompression. When - reading, this will be detected automatically by looking for the magic two- - byte gzip header. - - gzopen returns NULL if the file could not be opened, if there was - insufficient memory to allocate the gzFile state, or if an invalid mode was - specified (an 'r', 'w', or 'a' was not provided, or '+' was provided). - errno can be checked to determine if the reason gzopen failed was that the - file could not be opened. -*/ - -ZEXTERN gzFile ZEXPORT gzdopen OF((int fd, const char *mode)); -/* - gzdopen associates a gzFile with the file descriptor fd. File descriptors - are obtained from calls like open, dup, creat, pipe or fileno (if the file - has been previously opened with fopen). The mode parameter is as in gzopen. - - The next call of gzclose on the returned gzFile will also close the file - descriptor fd, just like fclose(fdopen(fd, mode)) closes the file descriptor - fd. If you want to keep fd open, use fd = dup(fd_keep); gz = gzdopen(fd, - mode);. The duplicated descriptor should be saved to avoid a leak, since - gzdopen does not close fd if it fails. If you are using fileno() to get the - file descriptor from a FILE *, then you will have to use dup() to avoid - double-close()ing the file descriptor. Both gzclose() and fclose() will - close the associated file descriptor, so they need to have different file - descriptors. - - gzdopen returns NULL if there was insufficient memory to allocate the - gzFile state, if an invalid mode was specified (an 'r', 'w', or 'a' was not - provided, or '+' was provided), or if fd is -1. The file descriptor is not - used until the next gz* read, write, seek, or close operation, so gzdopen - will not detect if fd is invalid (unless fd is -1). -*/ - -ZEXTERN int ZEXPORT gzbuffer OF((gzFile file, unsigned size)); -/* - Set the internal buffer size used by this library's functions. The - default buffer size is 8192 bytes. This function must be called after - gzopen() or gzdopen(), and before any other calls that read or write the - file. The buffer memory allocation is always deferred to the first read or - write. Three times that size in buffer space is allocated. A larger buffer - size of, for example, 64K or 128K bytes will noticeably increase the speed - of decompression (reading). - - The new buffer size also affects the maximum length for gzprintf(). - - gzbuffer() returns 0 on success, or -1 on failure, such as being called - too late. -*/ - -ZEXTERN int ZEXPORT gzsetparams OF((gzFile file, int level, int strategy)); -/* - Dynamically update the compression level or strategy. See the description - of deflateInit2 for the meaning of these parameters. Previously provided - data is flushed before the parameter change. - - gzsetparams returns Z_OK if success, Z_STREAM_ERROR if the file was not - opened for writing, Z_ERRNO if there is an error writing the flushed data, - or Z_MEM_ERROR if there is a memory allocation error. -*/ - -ZEXTERN int ZEXPORT gzread OF((gzFile file, voidp buf, unsigned len)); -/* - Reads the given number of uncompressed bytes from the compressed file. If - the input file is not in gzip format, gzread copies the given number of - bytes into the buffer directly from the file. - - After reaching the end of a gzip stream in the input, gzread will continue - to read, looking for another gzip stream. Any number of gzip streams may be - concatenated in the input file, and will all be decompressed by gzread(). - If something other than a gzip stream is encountered after a gzip stream, - that remaining trailing garbage is ignored (and no error is returned). - - gzread can be used to read a gzip file that is being concurrently written. - Upon reaching the end of the input, gzread will return with the available - data. If the error code returned by gzerror is Z_OK or Z_BUF_ERROR, then - gzclearerr can be used to clear the end of file indicator in order to permit - gzread to be tried again. Z_OK indicates that a gzip stream was completed - on the last gzread. Z_BUF_ERROR indicates that the input file ended in the - middle of a gzip stream. Note that gzread does not return -1 in the event - of an incomplete gzip stream. This error is deferred until gzclose(), which - will return Z_BUF_ERROR if the last gzread ended in the middle of a gzip - stream. Alternatively, gzerror can be used before gzclose to detect this - case. - - gzread returns the number of uncompressed bytes actually read, less than - len for end of file, or -1 for error. If len is too large to fit in an int, - then nothing is read, -1 is returned, and the error state is set to - Z_STREAM_ERROR. -*/ - -ZEXTERN z_size_t ZEXPORT gzfread OF((voidp buf, z_size_t size, z_size_t nitems, - gzFile file)); -/* - Read up to nitems items of size size from file to buf, otherwise operating - as gzread() does. This duplicates the interface of stdio's fread(), with - size_t request and return types. If the library defines size_t, then - z_size_t is identical to size_t. If not, then z_size_t is an unsigned - integer type that can contain a pointer. - - gzfread() returns the number of full items read of size size, or zero if - the end of the file was reached and a full item could not be read, or if - there was an error. gzerror() must be consulted if zero is returned in - order to determine if there was an error. If the multiplication of size and - nitems overflows, i.e. the product does not fit in a z_size_t, then nothing - is read, zero is returned, and the error state is set to Z_STREAM_ERROR. - - In the event that the end of file is reached and only a partial item is - available at the end, i.e. the remaining uncompressed data length is not a - multiple of size, then the final partial item is nevetheless read into buf - and the end-of-file flag is set. The length of the partial item read is not - provided, but could be inferred from the result of gztell(). This behavior - is the same as the behavior of fread() implementations in common libraries, - but it prevents the direct use of gzfread() to read a concurrently written - file, reseting and retrying on end-of-file, when size is not 1. -*/ - -ZEXTERN int ZEXPORT gzwrite OF((gzFile file, - voidpc buf, unsigned len)); -/* - Writes the given number of uncompressed bytes into the compressed file. - gzwrite returns the number of uncompressed bytes written or 0 in case of - error. -*/ - -ZEXTERN z_size_t ZEXPORT gzfwrite OF((voidpc buf, z_size_t size, - z_size_t nitems, gzFile file)); -/* - gzfwrite() writes nitems items of size size from buf to file, duplicating - the interface of stdio's fwrite(), with size_t request and return types. If - the library defines size_t, then z_size_t is identical to size_t. If not, - then z_size_t is an unsigned integer type that can contain a pointer. - - gzfwrite() returns the number of full items written of size size, or zero - if there was an error. If the multiplication of size and nitems overflows, - i.e. the product does not fit in a z_size_t, then nothing is written, zero - is returned, and the error state is set to Z_STREAM_ERROR. -*/ - -ZEXTERN int ZEXPORTVA gzprintf Z_ARG((gzFile file, const char *format, ...)); -/* - Converts, formats, and writes the arguments to the compressed file under - control of the format string, as in fprintf. gzprintf returns the number of - uncompressed bytes actually written, or a negative zlib error code in case - of error. The number of uncompressed bytes written is limited to 8191, or - one less than the buffer size given to gzbuffer(). The caller should assure - that this limit is not exceeded. If it is exceeded, then gzprintf() will - return an error (0) with nothing written. In this case, there may also be a - buffer overflow with unpredictable consequences, which is possible only if - zlib was compiled with the insecure functions sprintf() or vsprintf() - because the secure snprintf() or vsnprintf() functions were not available. - This can be determined using zlibCompileFlags(). -*/ - -ZEXTERN int ZEXPORT gzputs OF((gzFile file, const char *s)); -/* - Writes the given null-terminated string to the compressed file, excluding - the terminating null character. - - gzputs returns the number of characters written, or -1 in case of error. -*/ - -ZEXTERN char * ZEXPORT gzgets OF((gzFile file, char *buf, int len)); -/* - Reads bytes from the compressed file until len-1 characters are read, or a - newline character is read and transferred to buf, or an end-of-file - condition is encountered. If any characters are read or if len == 1, the - string is terminated with a null character. If no characters are read due - to an end-of-file or len < 1, then the buffer is left untouched. - - gzgets returns buf which is a null-terminated string, or it returns NULL - for end-of-file or in case of error. If there was an error, the contents at - buf are indeterminate. -*/ - -ZEXTERN int ZEXPORT gzputc OF((gzFile file, int c)); -/* - Writes c, converted to an unsigned char, into the compressed file. gzputc - returns the value that was written, or -1 in case of error. -*/ - -ZEXTERN int ZEXPORT gzgetc OF((gzFile file)); -/* - Reads one byte from the compressed file. gzgetc returns this byte or -1 - in case of end of file or error. This is implemented as a macro for speed. - As such, it does not do all of the checking the other functions do. I.e. - it does not check to see if file is NULL, nor whether the structure file - points to has been clobbered or not. -*/ - -ZEXTERN int ZEXPORT gzungetc OF((int c, gzFile file)); -/* - Push one character back onto the stream to be read as the first character - on the next read. At least one character of push-back is allowed. - gzungetc() returns the character pushed, or -1 on failure. gzungetc() will - fail if c is -1, and may fail if a character has been pushed but not read - yet. If gzungetc is used immediately after gzopen or gzdopen, at least the - output buffer size of pushed characters is allowed. (See gzbuffer above.) - The pushed character will be discarded if the stream is repositioned with - gzseek() or gzrewind(). -*/ - -ZEXTERN int ZEXPORT gzflush OF((gzFile file, int flush)); -/* - Flushes all pending output into the compressed file. The parameter flush - is as in the deflate() function. The return value is the zlib error number - (see function gzerror below). gzflush is only permitted when writing. - - If the flush parameter is Z_FINISH, the remaining data is written and the - gzip stream is completed in the output. If gzwrite() is called again, a new - gzip stream will be started in the output. gzread() is able to read such - concatenated gzip streams. - - gzflush should be called only when strictly necessary because it will - degrade compression if called too often. -*/ - -/* -ZEXTERN z_off_t ZEXPORT gzseek OF((gzFile file, - z_off_t offset, int whence)); - - Sets the starting position for the next gzread or gzwrite on the given - compressed file. The offset represents a number of bytes in the - uncompressed data stream. The whence parameter is defined as in lseek(2); - the value SEEK_END is not supported. - - If the file is opened for reading, this function is emulated but can be - extremely slow. If the file is opened for writing, only forward seeks are - supported; gzseek then compresses a sequence of zeroes up to the new - starting position. - - gzseek returns the resulting offset location as measured in bytes from - the beginning of the uncompressed stream, or -1 in case of error, in - particular if the file is opened for writing and the new starting position - would be before the current position. -*/ - -ZEXTERN int ZEXPORT gzrewind OF((gzFile file)); -/* - Rewinds the given file. This function is supported only for reading. - - gzrewind(file) is equivalent to (int)gzseek(file, 0L, SEEK_SET) -*/ - -/* -ZEXTERN z_off_t ZEXPORT gztell OF((gzFile file)); - - Returns the starting position for the next gzread or gzwrite on the given - compressed file. This position represents a number of bytes in the - uncompressed data stream, and is zero when starting, even if appending or - reading a gzip stream from the middle of a file using gzdopen(). - - gztell(file) is equivalent to gzseek(file, 0L, SEEK_CUR) -*/ - -/* -ZEXTERN z_off_t ZEXPORT gzoffset OF((gzFile file)); - - Returns the current offset in the file being read or written. This offset - includes the count of bytes that precede the gzip stream, for example when - appending or when using gzdopen() for reading. When reading, the offset - does not include as yet unused buffered input. This information can be used - for a progress indicator. On error, gzoffset() returns -1. -*/ - -ZEXTERN int ZEXPORT gzeof OF((gzFile file)); -/* - Returns true (1) if the end-of-file indicator has been set while reading, - false (0) otherwise. Note that the end-of-file indicator is set only if the - read tried to go past the end of the input, but came up short. Therefore, - just like feof(), gzeof() may return false even if there is no more data to - read, in the event that the last read request was for the exact number of - bytes remaining in the input file. This will happen if the input file size - is an exact multiple of the buffer size. - - If gzeof() returns true, then the read functions will return no more data, - unless the end-of-file indicator is reset by gzclearerr() and the input file - has grown since the previous end of file was detected. -*/ - -ZEXTERN int ZEXPORT gzdirect OF((gzFile file)); -/* - Returns true (1) if file is being copied directly while reading, or false - (0) if file is a gzip stream being decompressed. - - If the input file is empty, gzdirect() will return true, since the input - does not contain a gzip stream. - - If gzdirect() is used immediately after gzopen() or gzdopen() it will - cause buffers to be allocated to allow reading the file to determine if it - is a gzip file. Therefore if gzbuffer() is used, it should be called before - gzdirect(). - - When writing, gzdirect() returns true (1) if transparent writing was - requested ("wT" for the gzopen() mode), or false (0) otherwise. (Note: - gzdirect() is not needed when writing. Transparent writing must be - explicitly requested, so the application already knows the answer. When - linking statically, using gzdirect() will include all of the zlib code for - gzip file reading and decompression, which may not be desired.) -*/ - -ZEXTERN int ZEXPORT gzclose OF((gzFile file)); -/* - Flushes all pending output if necessary, closes the compressed file and - deallocates the (de)compression state. Note that once file is closed, you - cannot call gzerror with file, since its structures have been deallocated. - gzclose must not be called more than once on the same file, just as free - must not be called more than once on the same allocation. - - gzclose will return Z_STREAM_ERROR if file is not valid, Z_ERRNO on a - file operation error, Z_MEM_ERROR if out of memory, Z_BUF_ERROR if the - last read ended in the middle of a gzip stream, or Z_OK on success. -*/ - -ZEXTERN int ZEXPORT gzclose_r OF((gzFile file)); -ZEXTERN int ZEXPORT gzclose_w OF((gzFile file)); -/* - Same as gzclose(), but gzclose_r() is only for use when reading, and - gzclose_w() is only for use when writing or appending. The advantage to - using these instead of gzclose() is that they avoid linking in zlib - compression or decompression code that is not used when only reading or only - writing respectively. If gzclose() is used, then both compression and - decompression code will be included the application when linking to a static - zlib library. -*/ - -ZEXTERN const char * ZEXPORT gzerror OF((gzFile file, int *errnum)); -/* - Returns the error message for the last error which occurred on the given - compressed file. errnum is set to zlib error number. If an error occurred - in the file system and not in the compression library, errnum is set to - Z_ERRNO and the application may consult errno to get the exact error code. - - The application must not modify the returned string. Future calls to - this function may invalidate the previously returned string. If file is - closed, then the string previously returned by gzerror will no longer be - available. - - gzerror() should be used to distinguish errors from end-of-file for those - functions above that do not distinguish those cases in their return values. -*/ - -ZEXTERN void ZEXPORT gzclearerr OF((gzFile file)); -/* - Clears the error and end-of-file flags for file. This is analogous to the - clearerr() function in stdio. This is useful for continuing to read a gzip - file that is being written concurrently. -*/ - -#endif /* !Z_SOLO */ - - /* checksum functions */ - -/* - These functions are not related to compression but are exported - anyway because they might be useful in applications using the compression - library. -*/ - -ZEXTERN uLong ZEXPORT adler32 OF((uLong adler, const Bytef *buf, uInt len)); -/* - Update a running Adler-32 checksum with the bytes buf[0..len-1] and - return the updated checksum. If buf is Z_NULL, this function returns the - required initial value for the checksum. - - An Adler-32 checksum is almost as reliable as a CRC-32 but can be computed - much faster. - - Usage example: - - uLong adler = adler32(0L, Z_NULL, 0); - - while (read_buffer(buffer, length) != EOF) { - adler = adler32(adler, buffer, length); - } - if (adler != original_adler) error(); -*/ - -ZEXTERN uLong ZEXPORT adler32_z OF((uLong adler, const Bytef *buf, - z_size_t len)); -/* - Same as adler32(), but with a size_t length. -*/ - -/* -ZEXTERN uLong ZEXPORT adler32_combine OF((uLong adler1, uLong adler2, - z_off_t len2)); - - Combine two Adler-32 checksums into one. For two sequences of bytes, seq1 - and seq2 with lengths len1 and len2, Adler-32 checksums were calculated for - each, adler1 and adler2. adler32_combine() returns the Adler-32 checksum of - seq1 and seq2 concatenated, requiring only adler1, adler2, and len2. Note - that the z_off_t type (like off_t) is a signed integer. If len2 is - negative, the result has no meaning or utility. -*/ - -ZEXTERN uLong ZEXPORT crc32 OF((uLong crc, const Bytef *buf, uInt len)); -/* - Update a running CRC-32 with the bytes buf[0..len-1] and return the - updated CRC-32. If buf is Z_NULL, this function returns the required - initial value for the crc. Pre- and post-conditioning (one's complement) is - performed within this function so it shouldn't be done by the application. - - Usage example: - - uLong crc = crc32(0L, Z_NULL, 0); - - while (read_buffer(buffer, length) != EOF) { - crc = crc32(crc, buffer, length); - } - if (crc != original_crc) error(); -*/ - -ZEXTERN uLong ZEXPORT crc32_z OF((uLong adler, const Bytef *buf, - z_size_t len)); -/* - Same as crc32(), but with a size_t length. -*/ - -/* -ZEXTERN uLong ZEXPORT crc32_combine OF((uLong crc1, uLong crc2, z_off_t len2)); - - Combine two CRC-32 check values into one. For two sequences of bytes, - seq1 and seq2 with lengths len1 and len2, CRC-32 check values were - calculated for each, crc1 and crc2. crc32_combine() returns the CRC-32 - check value of seq1 and seq2 concatenated, requiring only crc1, crc2, and - len2. -*/ - - - /* various hacks, don't look :) */ - -/* deflateInit and inflateInit are macros to allow checking the zlib version - * and the compiler's view of z_stream: - */ -ZEXTERN int ZEXPORT deflateInit_ OF((z_streamp strm, int level, - const char *version, int stream_size)); -ZEXTERN int ZEXPORT inflateInit_ OF((z_streamp strm, - const char *version, int stream_size)); -ZEXTERN int ZEXPORT deflateInit2_ OF((z_streamp strm, int level, int method, - int windowBits, int memLevel, - int strategy, const char *version, - int stream_size)); -ZEXTERN int ZEXPORT inflateInit2_ OF((z_streamp strm, int windowBits, - const char *version, int stream_size)); -ZEXTERN int ZEXPORT inflateBackInit_ OF((z_streamp strm, int windowBits, - unsigned char FAR *window, - const char *version, - int stream_size)); -#ifdef Z_PREFIX_SET -# define z_deflateInit(strm, level) \ - deflateInit_((strm), (level), ZLIB_VERSION, (int)sizeof(z_stream)) -# define z_inflateInit(strm) \ - inflateInit_((strm), ZLIB_VERSION, (int)sizeof(z_stream)) -# define z_deflateInit2(strm, level, method, windowBits, memLevel, strategy) \ - deflateInit2_((strm),(level),(method),(windowBits),(memLevel),\ - (strategy), ZLIB_VERSION, (int)sizeof(z_stream)) -# define z_inflateInit2(strm, windowBits) \ - inflateInit2_((strm), (windowBits), ZLIB_VERSION, \ - (int)sizeof(z_stream)) -# define z_inflateBackInit(strm, windowBits, window) \ - inflateBackInit_((strm), (windowBits), (window), \ - ZLIB_VERSION, (int)sizeof(z_stream)) -#else -# define deflateInit(strm, level) \ - deflateInit_((strm), (level), ZLIB_VERSION, (int)sizeof(z_stream)) -# define inflateInit(strm) \ - inflateInit_((strm), ZLIB_VERSION, (int)sizeof(z_stream)) -# define deflateInit2(strm, level, method, windowBits, memLevel, strategy) \ - deflateInit2_((strm),(level),(method),(windowBits),(memLevel),\ - (strategy), ZLIB_VERSION, (int)sizeof(z_stream)) -# define inflateInit2(strm, windowBits) \ - inflateInit2_((strm), (windowBits), ZLIB_VERSION, \ - (int)sizeof(z_stream)) -# define inflateBackInit(strm, windowBits, window) \ - inflateBackInit_((strm), (windowBits), (window), \ - ZLIB_VERSION, (int)sizeof(z_stream)) -#endif - -#ifndef Z_SOLO - -/* gzgetc() macro and its supporting function and exposed data structure. Note - * that the real internal state is much larger than the exposed structure. - * This abbreviated structure exposes just enough for the gzgetc() macro. The - * user should not mess with these exposed elements, since their names or - * behavior could change in the future, perhaps even capriciously. They can - * only be used by the gzgetc() macro. You have been warned. - */ -struct gzFile_s { - unsigned have; - unsigned char *next; - z_off64_t pos; -}; -ZEXTERN int ZEXPORT gzgetc_ OF((gzFile file)); /* backward compatibility */ -#ifdef Z_PREFIX_SET -# undef z_gzgetc -# define z_gzgetc(g) \ - ((g)->have ? ((g)->have--, (g)->pos++, *((g)->next)++) : (gzgetc)(g)) -#else -# define gzgetc(g) \ - ((g)->have ? ((g)->have--, (g)->pos++, *((g)->next)++) : (gzgetc)(g)) -#endif - -/* provide 64-bit offset functions if _LARGEFILE64_SOURCE defined, and/or - * change the regular functions to 64 bits if _FILE_OFFSET_BITS is 64 (if - * both are true, the application gets the *64 functions, and the regular - * functions are changed to 64 bits) -- in case these are set on systems - * without large file support, _LFS64_LARGEFILE must also be true - */ -#ifdef Z_LARGE64 - ZEXTERN gzFile ZEXPORT gzopen64 OF((const char *, const char *)); - ZEXTERN z_off64_t ZEXPORT gzseek64 OF((gzFile, z_off64_t, int)); - ZEXTERN z_off64_t ZEXPORT gztell64 OF((gzFile)); - ZEXTERN z_off64_t ZEXPORT gzoffset64 OF((gzFile)); - ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off64_t)); - ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off64_t)); -#endif - -#if !defined(ZLIB_INTERNAL) && defined(Z_WANT64) -# ifdef Z_PREFIX_SET -# define z_gzopen z_gzopen64 -# define z_gzseek z_gzseek64 -# define z_gztell z_gztell64 -# define z_gzoffset z_gzoffset64 -# define z_adler32_combine z_adler32_combine64 -# define z_crc32_combine z_crc32_combine64 -# else -# define gzopen gzopen64 -# define gzseek gzseek64 -# define gztell gztell64 -# define gzoffset gzoffset64 -# define adler32_combine adler32_combine64 -# define crc32_combine crc32_combine64 -# endif -# ifndef Z_LARGE64 - ZEXTERN gzFile ZEXPORT gzopen64 OF((const char *, const char *)); - ZEXTERN z_off_t ZEXPORT gzseek64 OF((gzFile, z_off_t, int)); - ZEXTERN z_off_t ZEXPORT gztell64 OF((gzFile)); - ZEXTERN z_off_t ZEXPORT gzoffset64 OF((gzFile)); - ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off_t)); - ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off_t)); -# endif -#else - ZEXTERN gzFile ZEXPORT gzopen OF((const char *, const char *)); - ZEXTERN z_off_t ZEXPORT gzseek OF((gzFile, z_off_t, int)); - ZEXTERN z_off_t ZEXPORT gztell OF((gzFile)); - ZEXTERN z_off_t ZEXPORT gzoffset OF((gzFile)); - ZEXTERN uLong ZEXPORT adler32_combine OF((uLong, uLong, z_off_t)); - ZEXTERN uLong ZEXPORT crc32_combine OF((uLong, uLong, z_off_t)); -#endif - -#else /* Z_SOLO */ - - ZEXTERN uLong ZEXPORT adler32_combine OF((uLong, uLong, z_off_t)); - ZEXTERN uLong ZEXPORT crc32_combine OF((uLong, uLong, z_off_t)); - -#endif /* !Z_SOLO */ - -/* undocumented functions */ -ZEXTERN const char * ZEXPORT zError OF((int)); -ZEXTERN int ZEXPORT inflateSyncPoint OF((z_streamp)); -ZEXTERN const z_crc_t FAR * ZEXPORT get_crc_table OF((void)); -ZEXTERN int ZEXPORT inflateUndermine OF((z_streamp, int)); -ZEXTERN int ZEXPORT inflateValidate OF((z_streamp, int)); -ZEXTERN unsigned long ZEXPORT inflateCodesUsed OF ((z_streamp)); -ZEXTERN int ZEXPORT inflateResetKeep OF((z_streamp)); -ZEXTERN int ZEXPORT deflateResetKeep OF((z_streamp)); -#if (defined(_WIN32) || defined(__CYGWIN__)) && !defined(Z_SOLO) -ZEXTERN gzFile ZEXPORT gzopen_w OF((const wchar_t *path, - const char *mode)); -#endif -#if defined(STDC) || defined(Z_HAVE_STDARG_H) -# ifndef Z_SOLO -ZEXTERN int ZEXPORTVA gzvprintf Z_ARG((gzFile file, - const char *format, - va_list va)); -# endif -#endif - -#ifdef __cplusplus -} -#endif - -#endif /* ZLIB_H */ diff --git a/vstudio/srtm2sdf.vcxproj b/vstudio/srtm2sdf.vcxproj deleted file mode 100644 index ba006b3..0000000 --- a/vstudio/srtm2sdf.vcxproj +++ /dev/null @@ -1,125 +0,0 @@ - - - - - Debug - x64 - - - Release - x64 - - - - {AA335F17-94D1-4AF7-B2C3-B5418AE70388} - Win32Proj - srtm2sdf - 8.1 - - - - Application - true - v140 - NotSet - - - Application - false - v140 - true - NotSet - - - - - - - - - - - - - - - false - $(SolutionDir)\..\ - Intermediate\$(Platform)\$(Configuration)\$(TargetName)\ - - - false - $(SolutionDir)\..\ - Intermediate\$(Platform)\$(Configuration)\$(TargetName)\ - - - - NotUsing - Level3 - Disabled - _DEBUG;_CONSOLE;%(PreprocessorDefinitions);_CRT_SECURE_NO_WARNINGS - Sync - MultiThreadedDebug - $(SolutionDir)include - ProgramDatabase - true - true - false - true - false - true - false - false - $(IntDir)$(TargetName).pdb - - - Console - true - bzip2.lib;libpng16.lib;zlib.lib - $(SolutionDir)x64_lib - $(OutDir)$(TargetName)$(TargetExt) - libcmt - - $(IntDir)$(TargetName).pdb - $(IntDir)$(TargetName).pgd - - - - - Level3 - NotUsing - MaxSpeed - true - true - NDEBUG;_CONSOLE;%(PreprocessorDefinitions);_CRT_SECURE_NO_WARNINGS - Sync - MultiThreaded - $(SolutionDir)include - false - true - true - false - $(IntDir)$(TargetName).pdb - - - Console - true - true - false - bzip2.lib;libpng16.lib;zlib.lib - $(SolutionDir)x64_lib - false - NotSet - $(OutDir)$(TargetName)$(TargetExt) - $(IntDir)$(TargetName).pdb - $(IntDir)$(TargetName).pgd - UseLinkTimeCodeGeneration - - - - - - - - - \ No newline at end of file diff --git a/vstudio/usgs2sdf.vcxproj b/vstudio/usgs2sdf.vcxproj deleted file mode 100644 index ed756b4..0000000 --- a/vstudio/usgs2sdf.vcxproj +++ /dev/null @@ -1,125 +0,0 @@ - - - - - Debug - x64 - - - Release - x64 - - - - {FE6E7D04-F5A0-49A5-8522-CD90A51B90C2} - Win32Proj - usgs2sdf - 8.1 - - - - Application - true - v140 - NotSet - - - Application - false - v140 - true - NotSet - - - - - - - - - - - - - - - false - $(SolutionDir)\..\ - Intermediate\$(Platform)\$(Configuration)\$(TargetName)\ - - - false - $(SolutionDir)\..\ - Intermediate\$(Platform)\$(Configuration)\$(TargetName)\ - - - - NotUsing - Level3 - Disabled - _DEBUG;_CONSOLE;%(PreprocessorDefinitions);_CRT_SECURE_NO_WARNINGS - Sync - MultiThreadedDebug - $(SolutionDir)include - ProgramDatabase - true - true - false - true - false - true - false - false - $(IntDir)$(TargetName).pdb - - - Console - true - bzip2.lib;libpng16.lib;zlib.lib - $(SolutionDir)x64_lib - $(OutDir)$(TargetName)$(TargetExt) - libcmt - - $(IntDir)$(TargetName).pdb - $(IntDir)$(TargetName).pgd - - - - - Level3 - NotUsing - MaxSpeed - true - true - NDEBUG;_CONSOLE;%(PreprocessorDefinitions);_CRT_SECURE_NO_WARNINGS - Sync - MultiThreaded - $(SolutionDir)include - false - true - true - false - $(IntDir)$(TargetName).pdb - - - Console - true - true - false - bzip2.lib;libpng16.lib;zlib.lib - $(SolutionDir)x64_lib - false - NotSet - $(OutDir)$(TargetName)$(TargetExt) - $(IntDir)$(TargetName).pdb - $(IntDir)$(TargetName).pgd - UseLinkTimeCodeGeneration - - - - - - - - - \ No newline at end of file diff --git a/vstudio/x64_lib/bzip2.lib b/vstudio/x64_lib/bzip2.lib deleted file mode 100644 index ecb20ca..0000000 Binary files a/vstudio/x64_lib/bzip2.lib and /dev/null differ diff --git a/vstudio/x64_lib/libpng16.lib b/vstudio/x64_lib/libpng16.lib deleted file mode 100644 index 12b43bd..0000000 Binary files a/vstudio/x64_lib/libpng16.lib and /dev/null differ diff --git a/vstudio/x64_lib/zlib.lib b/vstudio/x64_lib/zlib.lib deleted file mode 100644 index 13860a6..0000000 Binary files a/vstudio/x64_lib/zlib.lib and /dev/null differ